From 96d09d6776cd3d9995bc7f4a40dcf3567abaae5a Mon Sep 17 00:00:00 2001
From: 赵文轩 <1652863494@qq.com>
Date: 星期四, 31 十月 2024 10:03:45 +0800
Subject: [PATCH] 签到登记分割两个事务

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java |  290 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 149 insertions(+), 141 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
index 286511f..0eb3160 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -984,147 +984,10 @@
         try {
             boolean b = lock.tryLock(3, TimeUnit.MINUTES);
             if (b) {
-                //鐢熸垚浣撴鍙�
-                String tjNumber = (SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmss").format(new Date()));
-                tjOrder.setTjNumber(tjNumber);
-
-                if (tjOrderService.save(tjOrder)) {
-                    //淇濆瓨鏀惰揣鍦板潃
-                    if ("2".equals(tjOrder.getGetType())) {
-                        final TjReportGetAddress address = tjOrder.getAddAddress();
-                        if (address != null) {
-                            address.setTjNumber(tjNumber);
-                            tjReportGetAddressService.save(address);
-                        }
-                    }
-                    Long cusNumber = tjCustomer.getCusNumber();
-                    cusNumber += 1;
-                    tjCustomer.setCusNumber(cusNumber);
-                    BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount()));
-
-                    if ("1".equals(tjOrder.getTjType())) {
-                        if (null != tjReservation && tjReservation.getPayType() == 1) {
-                            tjFlowingWater.setPayStasus(3L);
-                        }
-                    }
-
-                    //璋冪敤SQL server鎷垮彇鏀惰垂鎯呭喌
-                    //鏍规嵁閰嶇疆璋冨彇瀛樺偍杩囩▼ 灏嗕复鏃惰〃鏁版嵁瀛樺叆棰勭害琛�2023.12.12
-                    final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
-                    final String isPay = configService.selectConfigByKey("isPay");
-                    if ("Y".equals(getInfoFromSqlData)) {
-                        LtkjMiddleHead middleHead = headService.getMiddleHeadByPartId(tjCustomer.getCardId());
-                        if (null != middleHead) {
-                            tjFlowingWater.setPayStasus(1L);
-                        }
-                    }
-                    tjFlowingWater.setOrderId(tjOrder.getOrderId());
-                    Date date1 = new Date(System.currentTimeMillis());
-                    String s1 = SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date1);
-                    tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(tjCustomer.getCusName(), "").toUpperCase() + s1);
-
-
-                    tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
-                    tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
-                    tjFlowingWater.setDiscount(tjOrder.getTjFlowingWater().getDiscount());
-
-                    if (isPay.equals("true")) {
-                        if (null != mallOrder) {
-                            if (mallOrder.getOrderStatus().equals(201L)) {
-                                tjFlowingWater.setCopeWith(mallOrder.getActualPrice());
-                                tjFlowingWater.setPaidIn(mallOrder.getActualPrice());
-                                tjFlowingWater.setDiscount(String.valueOf(1));
-                                tjFlowingWater.setPayStasus(1L);
-                                tjFlowingWater.setPayType(3L);
-                                MallCheckLog checkLog = new MallCheckLog();
-                                checkLog.setCheckBy(sysUser.getNickName());
-                                checkLog.setUserId(mallOrder.getUserId());
-                                checkLog.setConsignee(mallOrder.getConsignee());
-                                checkLog.setIdCard(mallOrder.getIdCard());
-                                checkLog.setOrderId(String.valueOf(mallOrder.getId()));
-                                checkLog.setOrderSn(mallOrder.getOrderSn());
-                                checkLog.setCheckTime(new Date());
-                                checkLog.setShipSn("HX" + s1);
-                                mallCheckLogService.save(checkLog);
-                                mallOrder.setOrderStatus(301L);
-                                mallOrderService.updateById(mallOrder);
-                            }
-                        } else {
-                            tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
-                            tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
-                            tjFlowingWater.setDiscount(tjOrder.getTjFlowingWater().getDiscount());
-                            //                    tjFlowingWater.setPayStasus(0L);
-                        }
-                    }
-                    if (tjFlowingWaterService.save(tjFlowingWater)) {
-                        tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber()));
-                        tjOrderService.updateById(tjOrder);
-                    }
-
-                    //淇敼姣忛」鐨勫師浠风幇浠� //淇敼涓存椂琛ㄤ綋妫�鍙�
-                    transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), discount, tjOrder.getTjNumber());
-
-                    /*璋冪敤his鎺ュ彛*/
-                    String config = configService.selectConfigByKey("sfkqdyhis");
-                    if (null != config && config.equals("Y")) {
-                        AjaxResult result = hisApiMethod.HisApiMethods(tjCustomer, tjOrder);
-                        if (!result.get("code").toString().equals("200")) {
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            Object jzh = result.get("jzh");
-                            if (null != jzh && null != jzh.toString()) {
-                                hisApiMethod.ZfHisApiMethod(jzh.toString());
-                            }
-                            log.info("璇ョ櫥璁颁汉鎸傚彿澶辫触, 灏辫瘖鍙蜂负: " + tjOrder.getCardId());
-                            return AjaxResult.error("鎸傚彿澶辫触!" + result.get("msg").toString());
-                        }
-
-                        log.info("璇ョ櫥璁颁汉鐨刪is灏辫瘖鍙锋槸: " + tjOrder.getCardId());
-                        //鍥綋
-                        if ("1".equals(tjOrder.getTjType())) {
-//                            asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
-                            ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
-                        }
-                        //涓汉
-                        if ("2".equals(tjOrder.getTjType())) {
-                            //asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
-                            newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
-                        }
-                        // 鏌ヨ 瀵规帴Lis銆丳acs鐢宠濡傛灉绫诲瀷鍖呭惈鍦ㄩ厤缃唴鍒欎娇鐢ㄥ鎺is銆乸acs
-                        if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
-                            // 杩欐槸涓婇潰涓汉鏂规硶寮曞叆鏁版嵁
-                            tjFlowingWater.setPayStasus(1L);
-                            newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
-                            AjaxResult ajaxResult = hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder, sysUser, result);
-                            if (!ajaxResult.get("code").toString().equals("200")) return ajaxResult;
-                            tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
-                                    sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
-                        }else {
-                            hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
-                        }
-//                        hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
-                        return AjaxResult.success(tjNumber);
-                    } else {
-                        tjCustomer.setCardId(tjOrder.getTjNumber());
-                        tjCustomerService.updateById(tjCustomer);
-                        transitionService.updateCardIdByTjNumAndIdCard(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), tjOrder.getTjNumber());
-                        tjOrder.setCardId(tjOrder.getTjNumber());
-                        tjOrderService.updateById(tjOrder);
-                    }
-
-                    //鍥綋
-                    if ("1".equals(tjOrder.getTjType())) {
-//                        asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
-                        asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
-                    }
-                    //涓汉
-                    if ("2".equals(tjOrder.getTjType())) {
-                        //asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
-                        newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
-                    }
-                    return AjaxResult.success(tjNumber);
-                }
-
-                return AjaxResult.error();
+                AjaxResult result = processOrderWithTransaction(tjOrder, tjCustomer, tjReservation, tjFlowingWater, mallOrder, sysUser);
+                if (!result.get("code").toString().equals("200"))
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return result;
             }
         } finally {
             lock.unlock();
@@ -1132,6 +995,151 @@
         return AjaxResult.error();
     }
 
+    @Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.READ_COMMITTED)
+    public AjaxResult processOrderWithTransaction(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, MallOrder mallOrder, SysUser sysUser) {
+        //鐢熸垚浣撴鍙�
+        String tjNumber = (SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmss").format(new Date()));
+        tjOrder.setTjNumber(tjNumber);
+
+        if (tjOrderService.save(tjOrder)) {
+            //淇濆瓨鏀惰揣鍦板潃
+            if ("2".equals(tjOrder.getGetType())) {
+                final TjReportGetAddress address = tjOrder.getAddAddress();
+                if (address != null) {
+                    address.setTjNumber(tjNumber);
+                    tjReportGetAddressService.save(address);
+                }
+            }
+            Long cusNumber = tjCustomer.getCusNumber();
+            cusNumber += 1;
+            tjCustomer.setCusNumber(cusNumber);
+            BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount()));
+
+            if ("1".equals(tjOrder.getTjType())) {
+                if (null != tjReservation && tjReservation.getPayType() == 1) {
+                    tjFlowingWater.setPayStasus(3L);
+                }
+            }
+
+            //璋冪敤SQL server鎷垮彇鏀惰垂鎯呭喌
+            //鏍规嵁閰嶇疆璋冨彇瀛樺偍杩囩▼ 灏嗕复鏃惰〃鏁版嵁瀛樺叆棰勭害琛�2023.12.12
+            final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
+            final String isPay = configService.selectConfigByKey("isPay");
+            if ("Y".equals(getInfoFromSqlData)) {
+                LtkjMiddleHead middleHead = headService.getMiddleHeadByPartId(tjCustomer.getCardId());
+                if (null != middleHead) {
+                    tjFlowingWater.setPayStasus(1L);
+                }
+            }
+            tjFlowingWater.setOrderId(tjOrder.getOrderId());
+            Date date1 = new Date(System.currentTimeMillis());
+            String s1 = SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date1);
+            tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(tjCustomer.getCusName(), "").toUpperCase() + s1);
+
+
+            tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
+            tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
+            tjFlowingWater.setDiscount(tjOrder.getTjFlowingWater().getDiscount());
+
+            if (isPay.equals("true")) {
+                if (null != mallOrder) {
+                    if (mallOrder.getOrderStatus().equals(201L)) {
+                        tjFlowingWater.setCopeWith(mallOrder.getActualPrice());
+                        tjFlowingWater.setPaidIn(mallOrder.getActualPrice());
+                        tjFlowingWater.setDiscount(String.valueOf(1));
+                        tjFlowingWater.setPayStasus(1L);
+                        tjFlowingWater.setPayType(3L);
+                        MallCheckLog checkLog = new MallCheckLog();
+                        checkLog.setCheckBy(sysUser.getNickName());
+                        checkLog.setUserId(mallOrder.getUserId());
+                        checkLog.setConsignee(mallOrder.getConsignee());
+                        checkLog.setIdCard(mallOrder.getIdCard());
+                        checkLog.setOrderId(String.valueOf(mallOrder.getId()));
+                        checkLog.setOrderSn(mallOrder.getOrderSn());
+                        checkLog.setCheckTime(new Date());
+                        checkLog.setShipSn("HX" + s1);
+                        mallCheckLogService.save(checkLog);
+                        mallOrder.setOrderStatus(301L);
+                        mallOrderService.updateById(mallOrder);
+                    }
+                } else {
+                    tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
+                    tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
+                    tjFlowingWater.setDiscount(tjOrder.getTjFlowingWater().getDiscount());
+                    //                    tjFlowingWater.setPayStasus(0L);
+                }
+            }
+            if (tjFlowingWaterService.save(tjFlowingWater)) {
+                tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber()));
+                tjOrderService.updateById(tjOrder);
+            }
+
+            //淇敼姣忛」鐨勫師浠风幇浠� //淇敼涓存椂琛ㄤ綋妫�鍙�
+            transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), discount, tjOrder.getTjNumber());
+
+            /*璋冪敤his鎺ュ彛*/
+            String config = configService.selectConfigByKey("sfkqdyhis");
+            if (null != config && config.equals("Y")) {
+                AjaxResult result = hisApiMethod.HisApiMethods(tjCustomer, tjOrder);
+                if (!result.get("code").toString().equals("200")) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    Object jzh = result.get("jzh");
+                    if (null != jzh && null != jzh.toString()) {
+                        hisApiMethod.ZfHisApiMethod(jzh.toString());
+                    }
+                    log.info("璇ョ櫥璁颁汉鎸傚彿澶辫触, 灏辫瘖鍙蜂负: " + tjOrder.getCardId());
+                    return AjaxResult.error("鎸傚彿澶辫触!" + result.get("msg").toString());
+                }
+
+                log.info("璇ョ櫥璁颁汉鐨刪is灏辫瘖鍙锋槸: " + tjOrder.getCardId());
+                //鍥綋
+                if ("1".equals(tjOrder.getTjType())) {
+//                            asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
+                    ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
+                }
+                //涓汉
+                if ("2".equals(tjOrder.getTjType())) {
+                    //asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
+                    newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
+                }
+                // 鏌ヨ 瀵规帴Lis銆丳acs鐢宠濡傛灉绫诲瀷鍖呭惈鍦ㄩ厤缃唴鍒欎娇鐢ㄥ鎺is銆乸acs
+                if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
+                    // 杩欐槸涓婇潰涓汉鏂规硶寮曞叆鏁版嵁
+                    tjFlowingWater.setPayStasus(1L);
+                    newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
+                    AjaxResult ajaxResult = hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder, sysUser, result);
+                    if (!ajaxResult.get("code").toString().equals("200")) return ajaxResult;
+                    tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
+                            sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
+                }else {
+                    hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
+                }
+//                        hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
+                return AjaxResult.success(tjNumber);
+            } else {
+                tjCustomer.setCardId(tjOrder.getTjNumber());
+                tjCustomerService.updateById(tjCustomer);
+                transitionService.updateCardIdByTjNumAndIdCard(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), tjOrder.getTjNumber());
+                tjOrder.setCardId(tjOrder.getTjNumber());
+                tjOrderService.updateById(tjOrder);
+            }
+
+            //鍥綋
+            if ("1".equals(tjOrder.getTjType())) {
+//                        asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
+                asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
+            }
+            //涓汉
+            if ("2".equals(tjOrder.getTjType())) {
+                //asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
+                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
+            }
+            return AjaxResult.success(tjNumber);
+        }
+        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        return AjaxResult.error();
+    }
+
 
     @PostMapping("/addPlOrderAndDetail")
     @ApiOperation(value = "浣撴鎵归噺绛惧埌鐧昏鎺ュ彛")

--
Gitblit v1.8.0