From 983d95bdcbb273b4a78efd0058a2a35141be1b51 Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期二, 08 四月 2025 18:00:12 +0800
Subject: [PATCH] zjh20250408

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java |  700 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 473 insertions(+), 227 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 cfe7bce..efc09dc 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
@@ -56,6 +56,8 @@
 import com.ltkj.hosp.dto.UpdateTransitionnewPriceDto;
 import com.ltkj.hosp.hisDto.OutpinimpapplyDto;
 import com.ltkj.hosp.hisDto.OutpinmedicapplyDto;
+import com.ltkj.hosp.idutil.IdUtils;
+import com.ltkj.hosp.mapper.TbTransitionMapper;
 import com.ltkj.hosp.mapper.TestMapper;
 import com.ltkj.hosp.mapper.TjSamplingMapper;
 import com.ltkj.hosp.pacsDto.SavePacsApply;
@@ -89,9 +91,11 @@
 import org.aspectj.weaver.ast.Var;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.http.HttpRequest;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.NoTransactionException;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -236,6 +240,10 @@
     private ITjXdPictureService xdPictureService;
     @Autowired
     private TjOrderYcxmService ycxmService;
+    @Autowired
+    private TbTransitionMapper tbTransitionMapper;
+
+    private static final String TJH = "tjhs:tjh";
 
     //灏嗘柟娉曡繑鍥炲�艰В鏋愭垚json鏍煎紡
     public JSONObject getJSONObject(String builder) {
@@ -302,7 +310,7 @@
             wqq.like(TjCustomer::getCusName, name);
             List<TjCustomer> customerList = tjCustomerService.list(wqq);
             List<TjOrder> list2 = new ArrayList<>();
-            if (null != customerList && customerList.size() > 0) {
+            if (null != customerList && !customerList.isEmpty()) {
                 List<TjOrder> list = new ArrayList<>();
                 for (TjCustomer customer : customerList) {
                     LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>();
@@ -313,13 +321,13 @@
                     list.addAll(tjOrderService.list(wq));
                 }
                 List<TjOrder> collect = null;
-                if (list.size() > 0) {
+                if (!list.isEmpty()) {
                     for (TjOrder order : list) {
                         //绛涢�夋湁璋冩煡闂嵎鐨�
                         LambdaQueryWrapper<TjSurveyRecord> wqq1 = new LambdaQueryWrapper<>();
                         wqq1.eq(TjSurveyRecord::getTjnumber, order.getTjNumber());
                         List<TjSurveyRecord> one = surveyRecordService.list(wqq1);
-                        if (one.size() == 0) {
+                        if (one.isEmpty()) {
                             TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId());
                             if (null != tjCustomer) {
                                 order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName()));
@@ -380,7 +388,7 @@
                 LambdaQueryWrapper<TjSurveyRecord> wqq = new LambdaQueryWrapper<>();
                 wqq.eq(TjSurveyRecord::getTjnumber, order.getTjNumber());
                 List<TjSurveyRecord> one = surveyRecordService.list(wqq);
-                if (one.size() == 0) {
+                if (one.isEmpty()) {
                     TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId());
                     if (null != tjCustomer) {
                         order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName()));
@@ -1037,7 +1045,7 @@
                 tjOrder.setTjType("2");
             }
         }
-        if(StringUtil.isBlank(tjOrder.getFirmId())){
+        if (StringUtil.isBlank(tjOrder.getFirmId())) {
             tjOrder.setFirmId("0");
         }
 
@@ -1079,13 +1087,19 @@
                 tjOrderService.tjQiandaodengji(tjOrder.getTjNumber());
                 return result;
             }
-        } finally {
+        }catch (Exception e){
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            log.error(String.valueOf(e),e.getMessage());
+            e.printStackTrace();
+        }
+        finally {
             lock.unlock();
         }
         return AjaxResult.error();
     }
 
-    @Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.READ_COMMITTED)
+
+    @Transactional(propagation = Propagation.REQUIRED)
     public AjaxResult processOrderWithTransaction(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, MallOrder mallOrder, SysUser sysUser) {
 
         //鑾峰彇鎷兼帴鍓嶇紑
@@ -1096,10 +1110,38 @@
 //        if(StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber=makeLisTmhPrefix+tjNumber;
 
 
-        String tjNumber = (SecurityUtils.getUsername()+IdUtils.getTjNumber());
-        if(StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber=makeLisTmhPrefix+tjNumber;
-        tjOrder.setTjNumber(tjNumber);
+//        String tjNumber = (SecurityUtils.getUsername() + idUtils.getTjNumber());
+//        String tjNumber = idUtils.getTjNumber();
 
+        String tjNumber = null;
+        int a =0;
+        while (tjNumber ==null){
+            if(a>3){
+                throw new RuntimeException("鍓嶆柟鎷ユ尋,璇风◢绛�!!!");
+            }
+            try {
+                String newTjNumberRedisLockAndMysql = idUtils.getNewTjNumberRedisLockAndMysql();
+                if (StringUtil.isNotBlank(makeLisTmhPrefix)){
+                    String tjh=  makeLisTmhPrefix + newTjNumberRedisLockAndMysql;
+                    int countByTjNum = tjOrderService.getOrderCountByTjNum(tjh);
+                    if(countByTjNum==0){
+                        tjNumber=tjh;
+                    }
+                }else {
+                    int countByTjNum = tjOrderService.getOrderCountByTjNum(newTjNumberRedisLockAndMysql);
+                    if(countByTjNum==0){
+                        tjNumber=newTjNumberRedisLockAndMysql;
+                    }
+                }
+            } catch (Exception e) {
+                log.error(e.getMessage());
+                throw new IllegalStateException();
+            }finally {
+                a++;
+            }
+        }
+
+        tjOrder.setTjNumber(tjNumber);
 
         BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount()));
         tjOrder.setDiscount(discount.toString());
@@ -1144,10 +1186,10 @@
             tjFlowingWater.setDiscount(discount.toString());
 
             BigDecimal subtract = paidIn.subtract(copeWith.multiply(discount.divide(BigDecimal.valueOf(10))));
-            log.info("绛惧埌鐧昏浣撴浜�: "+tjOrder.getTjNumber()+" 搴斾粯: "+copeWith);
-            log.info("绛惧埌鐧昏浣撴浜�: "+tjOrder.getTjNumber()+" 鎶樻墸: "+discount);
-            log.info("绛惧埌鐧昏浣撴浜�: "+tjOrder.getTjNumber()+" 瀹炰粯: "+paidIn);
-            log.info("绛惧埌鐧昏浣撴浜�: "+tjOrder.getTjNumber()+" 鐩稿樊: "+subtract);
+            log.info("绛惧埌鐧昏浣撴浜�: " + tjOrder.getTjNumber() + " 搴斾粯: " + copeWith);
+            log.info("绛惧埌鐧昏浣撴浜�: " + tjOrder.getTjNumber() + " 鎶樻墸: " + discount);
+            log.info("绛惧埌鐧昏浣撴浜�: " + tjOrder.getTjNumber() + " 瀹炰粯: " + paidIn);
+            log.info("绛惧埌鐧昏浣撴浜�: " + tjOrder.getTjNumber() + " 鐩稿樊: " + subtract);
 
             if (isPay.equals("true")) {
                 if (null != mallOrder) {
@@ -1178,21 +1220,8 @@
                 }
             }
 
-            //淇敼姣忛」鐨勫師浠风幇浠�
-//            transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), discount, tjOrder.getTjNumber());
             //淇敼涓存椂琛ㄤ綋妫�鍙�
-            transitionService.updateTbTransitionTjNumByCusId(tjCustomer.getCusIdcard(),tjOrder.getTjNumber());
-            //琛ュ樊浠�
-    /*        if(subtract.compareTo(BigDecimal.ZERO)>0){
-                tjFlowingWater.setPaidIn(paidIn.add(subtract));
-                TbTransition onwTbTransition = transitionService.getOnwTbTransition(tjCustomer.getCusIdcard(),tjOrder.getTjNumber());
-                if(null !=onwTbTransition){
-                    log.info("绛惧埌鐧昏浣撴浜�: "+tjOrder.getTjNumber()+"缁�: "+onwTbTransition.getParentProName()+" "+onwTbTransition.getNowPrice()
-                            +" 琛ュ樊浠� "+subtract+" 鏈�缁堝緱 "+onwTbTransition.getNowPrice().add(subtract));
-                    onwTbTransition.setNowPrice(onwTbTransition.getNowPrice().add(subtract));
-                    transitionService.updateById(onwTbTransition);
-                }
-            }*/
+            transitionService.updateTbTransitionTjNumByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber());
 
             if (tjFlowingWaterService.save(tjFlowingWater)) {
                 tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber()));
@@ -1202,15 +1231,21 @@
             /*璋冪敤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());
+                AjaxResult result = null;
+                try {
+                    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("璇ョ櫥璁颁汉鎸傚彿澶辫触, 灏辫瘖鍙蜂负: " + tjOrder.getCardId());
-                    return AjaxResult.error("鎸傚彿澶辫触!" + result.get("msg").toString());
+                } catch (NoTransactionException e) {
+                    log.error(e.getMessage());
+                    throw new RuntimeException(e);
                 }
 
                 log.info("璇ョ櫥璁颁汉鐨刪is灏辫瘖鍙锋槸: " + tjOrder.getCardId());
@@ -1225,27 +1260,29 @@
                     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()));
-                    remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
-                    List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
-                    xdPictureService.saveBatch(xdPictureList);
-//                    List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
-//                    addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
-                } else {
-                    newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
-                    List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
-                    addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
-
-                    hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
+                try {
+                    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()));
+                        remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
+                        List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
+                        xdPictureService.saveBatch(xdPictureList);
+                    } else {
+                        newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
+                        List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
+                        addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
+                        hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
+                    }
+                    return AjaxResult.success(tjNumber);
+                } catch (Exception e) {
+                    log.error(e.getMessage());
+                    throw new RuntimeException(e);
                 }
-                return AjaxResult.success(tjNumber);
             } else {
                 tjCustomer.setCardId(tjOrder.getTjNumber());
                 tjCustomerService.updateById(tjCustomer);
@@ -1340,33 +1377,110 @@
 
             // 鏌ヨ 瀵规帴Lis銆丳acs鐢宠濡傛灉绫诲瀷鍖呭惈鍦ㄩ厤缃唴鍒欎娇鐢ㄥ鎺is銆乸acs
 
-            if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
-                // 杩欐槸涓婇潰涓汉鏂规硶寮曞叆鏁版嵁
-                tjFlowingWater.setPayStasus(1L);
-                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
-                tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
-                        sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
-                remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
-                List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
-                xdPictureService.saveBatch(xdPictureList);
-                List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
-                addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
-                return AjaxResult.success(tjNumber);
-            }else {
-                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
-                AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater);
-                if (error != null) return error;
-//                List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
-//                addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
+            //瀵煎叆浜哄憳鏄惁鏀惰垂
+            String drrysfsf = configService.selectConfigByKey("drrysfsf");
+
+
+            try {
+                if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
+                    if(StringUtil.isNotBlank(drrysfsf) && drrysfsf.equalsIgnoreCase("Y")){
+                        if(null != tjReservation){
+                            return isUseLisAndPacsRegister(tjOrder, tjCustomer, tjReservation, tjFlowingWater, sysUser, discount, tjNumber);
+                        }else {
+                            newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
+                            AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater);
+                            if (error != null) return error;
+
+                            return AjaxResult.success(tjNumber);
+                        }
+                    }
+                    return isUseLisAndPacsRegister(tjOrder, tjCustomer, tjReservation, tjFlowingWater, sysUser, discount, tjNumber);
+
+                } else {
+                    newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
+                    AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater);
+                    if (error != null) return error;
+                }
+            } catch (Exception e) {
+                log.error(e.getMessage());
+                throw new RuntimeException(e);
             }
 
             return AjaxResult.success(tjNumber);
-//            pacsApiMethodService.OrderAdd(tjCustomer,tjOrder);
-//            return AjaxResult.success(tjNumber);
         }
         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         return AjaxResult.error();
     }
+
+    private AjaxResult isUseLisAndPacsRegister(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, SysUser sysUser, BigDecimal discount, String tjNumber) {
+        try {
+            log.info("绛惧埌鐧昏杩涘叆鏈敹璐规柟娉�");
+            // 杩欐槸涓婇潰涓汉鏂规硶寮曞叆鏁版嵁
+            tjFlowingWater.setPayStasus(1L);
+            newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
+            tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
+                    sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
+            remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
+            List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
+            xdPictureService.saveBatch(xdPictureList);
+            List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
+            log.info("绛惧埌鐧昏:閲囨牱鏁版嵁鏌ヨ涓暟"+detailList.size());
+            addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
+            return AjaxResult.success(tjNumber);
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            throw new RuntimeException(e);
+        }
+    }
+
+    public void newSaveextracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
+        try {
+            tjAskMedicalHistoryService.updateTjAskMedicalHistoryByCusId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjCustomer.getCusId()));
+            if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
+                tjOrderDetailService.saveJSYTjOrderDetailsByCusId(tjCustomer.getCusIdcard(),
+                        String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId(), String.valueOf(tjFlowingWater.getTjSerialNumber()));
+            } else {
+                tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
+            }
+
+            tjOrderDetailService.saveTjPureToneTesByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
+
+            //娣诲姞remark琛ㄦ暟鎹�
+            if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
+                remarkService.saveJSYTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
+
+            } else {
+                remarkService.saveTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
+
+            }
+            //鍒ゆ柇鏄惁浜ら挶
+            if ("1".equals(tjOrder.getTjType())) {
+                if (null != tjReservation && tjReservation.getPayType() == 1) {
+                    tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
+                            sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
+                    remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
+                    List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
+                    xdPictureService.saveBatch(xdPictureList);
+                }
+            }
+            if (tjFlowingWater.getPayStasus() == 1L) {
+                tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
+                        sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
+                tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
+                tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
+                tjFlowingWater.setPayType(4L);
+                tjFlowingWaterService.updateById(tjFlowingWater);
+                remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
+    //            asyncService.addTjChargingStandard(tjOrder, transitionService.getTbTransitionListByCusId(tjCustomer.getCusIdcard(), tjOrder.getCardId()), sysUser);
+                List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
+                xdPictureService.saveBatch(xdPictureList);
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            throw new RuntimeException(e);
+        }
+    }
+
 
     private AjaxResult isRequestCommonHisApi(TjOrder tjOrder, TjCustomer tjCustomer, TjFlowingWater tjFlowingWater) {
         String s = configService.selectConfigByKey("is_request_common_his_api");
@@ -1390,6 +1504,7 @@
             wrapper.gt(TbTransition::getNowPrice, 0);
 
             List<TbTransition> list = tbTransitionService.list(wrapper);
+            BigDecimal zongjia = new BigDecimal("0.0");
             for (TbTransition transition : list) {
                 LambdaQueryWrapper<TjProject> wrapper1 = new LambdaQueryWrapper<>();
                 wrapper1.eq(TjProject::getProId, transition.getProId());
@@ -1400,7 +1515,8 @@
                 SysDept dept = sysDeptService.getOne(wrapper2);
 
                 JSONObject obj = JSONUtil.createObj();
-                Integer sl = project.getSl();
+//                Integer sl = project.getSl();
+                int sl = 1;
                 BigDecimal danjia = transition.getNowPrice();
                 BigDecimal allPrice = danjia.multiply(new BigDecimal(sl));
                 obj.putOpt("danJia", danjia);
@@ -1411,8 +1527,10 @@
                 obj.putOpt("shouFeiXmId", project.getHisXmbm());
                 obj.putOpt("shouFeiXmMc", project.getHisXmmc());
                 array.add(obj);
+                zongjia = zongjia.add(allPrice);
             }
             map.put("feiYongInfoList", array);
+            log.info("璋冪敤His鎺ュ彛鍓� 鏀惰垂鎬讳环:{}", zongjia.toString());
 
             String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/creatCostInfo", map);
             JSONObject object = JSONUtil.parseObj(post);
@@ -1441,6 +1559,8 @@
             Date date = new Date();
             String format = DateUtil.format(date, "yyMMddHHmmssSSS");
             for (TjOrderDetail detail : detailList) {
+                int i = samplingService.isExistProId(order.getTjNumber(), String.valueOf(detail.getProId()));
+                if(i>0) continue;
                 TjSampling sampling = new TjSampling();
                 if (null == projectService.getById(detail.getProId())) continue;
                 TjProject project = projectService.getById(detail.getProId());
@@ -1511,21 +1631,44 @@
             }
 
         }
-        if (StrUtil.isNotBlank(jxbz)){
-            tjSamplingMapper.updateUserIdByTjNumAndJxbz(order.getTjNumber(),sysUser.getNickName(), String.valueOf(sysUser.getUserId()),jxbz);
-        }else {
-            tjSamplingMapper.updateUserIdByTjNum(order.getTjNumber(),sysUser.getNickName(), String.valueOf(sysUser.getUserId()));
+        if (StrUtil.isNotBlank(jxbz)) {
+            tjSamplingMapper.updateUserIdByTjNumAndJxbz(order.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), jxbz);
+        } else {
+            tjSamplingMapper.updateUserIdByTjNum(order.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()));
         }
+    }
+
+
+
+    @GetMapping("/addCaiYangDengJi")
+    @ApiOperation(value = "鎵嬪姩娣诲姞閲囨牱璁板綍鎺ュ彛")
+    public AjaxResult addCaiYangDengJi(@RequestParam("tjNum") String tjNum){
+
+        try {
+            TjOrder order = tjOrderService.getOrderByTjNum(tjNum);
+            if(null !=order){
+                Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId());
+                SysUser sysUser = userService.getById(userId);
+                List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(order.getOrderId());
+                log.info("绛惧埌鐧昏:閲囨牱鏁版嵁鏌ヨ涓暟"+detailList.size());
+                addCaiYangDengJi(detailList, !detailList.isEmpty(), order, sysUser, null);
+            }
+        } catch (NumberFormatException e) {
+            log.error(String.valueOf(e));
+        }
+
+        return AjaxResult.success();
     }
 
 
     @PostMapping("/addPlOrderAndDetail")
     @ApiOperation(value = "浣撴鎵归噺绛惧埌鐧昏鎺ュ彛")
-    @Transactional  //(鍒囨崲鏁版嵁搴撳嚭閿欙紝鎵�浠ユ敞閲�)
+//    @Transactional  //(鍒囨崲鏁版嵁搴撳嚭閿欙紝鎵�浠ユ敞閲�)
     public AjaxResult addPlOrderAndDetail(@RequestBody QianDaoDto daoDto, HttpServletResponse response) {
         SysUser sysUser = UserHoder.getLoginUser().getUser();
         List<String> cusIds = daoDto.getCusIds();
         ArrayList<String> tjNumbers = new ArrayList<>();
+        ArrayList<String> errTjh = new ArrayList<>();
         if (null != cusIds && !cusIds.isEmpty()) {
             ExecutorService threadPools = Executors.newFixedThreadPool(cusIds.size());
             for (String cusId : cusIds) {
@@ -1554,6 +1697,7 @@
 //                            }
 //                        }
 //                    });
+
                     Future<AjaxResult> future = executor.submit(new Callable<AjaxResult>() {
                         @Override
                         public AjaxResult call() throws Exception {
@@ -1562,61 +1706,106 @@
                     });
                     try {
                         AjaxResult result = future.get();
-                        String tjNumber = result.get("tjNumber").toString();
-                        tjNumbers.add(tjNumber);
+                        String code = result.get("code").toString();
+                        if (code.equals("200")) {
+                            String tjNumber = result.get("tjNumber").toString();
+                            tjNumbers.add(tjNumber);
+                        }else {
+                            String userId = result.get("userId").toString();
+                            errTjh.add(userId);
+                        }
                     } catch (InterruptedException | ExecutionException e) {
+//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                         e.printStackTrace();
                     }
                 }
                 threadPools.shutdown();
             }
-        }
-        // TODO 鍥犱负鏈変綋妫�鍙蜂細鏌ュ嚭绌烘暟鎹� 鍏堜娇鐢ㄦ鏁版嵁
-        tjNumbers = new ArrayList<>();
-        tjNumbers.add("02095240229171627");
-        tjNumbers.add("02095240229173104");
-        tjNumbers.add("10001240524172002");
-        tjNumbers.add("10001240304124410");
-        tjNumbers.add("00325240304160123");
-        tjNumbers.add("02095240304162044");
-        tjNumbers.add("02095240304162152");
-        tjNumbers.add("10001240304163505");
-        Map<String, Object> map = null;
-        try {
-            map = PDFDocumentUtil.getDocument();
-            Document document = (Document) map.get("document");
-            for (int i = 0; i < tjNumbers.size(); i++) {
+            // TODO 鍥犱负鏈変綋妫�鍙蜂細鏌ュ嚭绌烘暟鎹� 鍏堜娇鐢ㄦ鏁版嵁  鎵撳嵃瀵艰瘖鍗�
+            if (!tjNumbers.isEmpty()) {
+            /*    Map<String, Object> map = null;
                 try {
-                    List<Map<String, String>> djdInfos = tjOrderService.selectDjdInfo(tjNumbers.get(i));
-                    Map<String, Object> userInfo = tjOrderService.selectDjdUserInfo(tjNumbers.get(i));
-                    LocalDateTime tjsj = (LocalDateTime) userInfo.get("tjsj");
-                    DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
-                    String time = null;
-                    if (tjsj != null) {
-                        time = dateFormat.format(tjsj);
+                    map = PDFDocumentUtil.getDocument();
+                    Document document = (Document) map.get("document");
+//                    for (int i = 0; i < tjNumbers.size(); i++) {
+                    int i = 0;
+                    for (String tjNumber : tjNumbers) {
+                        try {
+                            List<Map<String, Object>> djdInfos = tjOrderService.selectDjdInfo(tjNumber);
+                            Map<String, Object> userInfo = tjOrderService.selectDjdUserInfo(tjNumber);
+                            if(null !=userInfo && null !=djdInfos && !djdInfos.isEmpty()){
+                                LocalDateTime tjsj = (LocalDateTime) userInfo.get("tjsj");
+                                DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+                                String time = null;
+                                if (tjsj != null) {
+                                    time = dateFormat.format(tjsj);
+                                }
+                                PDFDocumentUtil.makeUserInfoTable(document, (String) userInfo.get("tjname"), (String) userInfo.get("sex")
+                                        , (String) userInfo.get("tjh"), (String) userInfo.get("lxdh"), (String) userInfo.get("tjname"), time);
+                                PDFDocumentUtil.makeTjInfo(document, djdInfos);
+                                // 澶氭潯鍒欐崲椤�
+                                if (i + 1 < tjNumbers.size()) {
+                                    document.newPage();
+                                }
+                            }
+
+                        } catch (DocumentException | IOException e) {
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            //杩欓噷鍒犻櫎鐨勬槸杩欎釜浜烘墍鏈夐」鐩寘鎷ˉ褰曢」鐩�
+                            TjOrder order = tjOrderService.getOrderByTjNum(tjNumber);
+                            tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
+                            tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId()));
+                            remarkService.deletedOrderRemarkByTjNum(tjNumber);
+                            tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId()));
+//                transitionService.deletedTbTransitionByTjNum(tjNum);
+                            tjSamplingMapper.deleteByTjNumAndCusId(order.getTjNumber(), order.getUserId());
+
+                            TjReservation reservation = tjReservationService.getById(order.getReservationId());
+                            if(null !=reservation){
+                                reservation.setIsExpire(2);
+                                tjReservationService.updateById(reservation);
+                                transitionService.updateTbTransitionByTjNum(tjNumber);
+                            }
+                            e.printStackTrace();
+                        }
                     }
-                    PDFDocumentUtil.makeUserInfoTable(document, (String) userInfo.get("tjname"), (String) userInfo.get("sex")
-                            , (String) userInfo.get("tjh"), (String) userInfo.get("lxdh"), (String) userInfo.get("tjname"), time);
-                    PDFDocumentUtil.makeTjInfo(document, djdInfos);
-                    // 澶氭潯鍒欐崲椤�
-                    if (i + 1 < tjNumbers.size()) {
-                        document.newPage();
-                    }
-                } catch (DocumentException | IOException e) {
+
+//                    }
+                    document.close();
+                    ByteArrayOutputStream outputStream = (ByteArrayOutputStream) map.get("stream");
+                    String encodeToString = java.util.Base64.getEncoder().encodeToString(outputStream.toByteArray());
+                    return AjaxResult.success().put("file", encodeToString);
+                } catch (IOException | DocumentException e) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     e.printStackTrace();
-                }
+                }*/
+                Map<String,Object> map=new HashMap<>();
+                map.put("tjh",tjNumbers);
+                return AjaxResult.success("鎿嶄綔鎴愬姛",map);
             }
-            document.close();
-            ByteArrayOutputStream outputStream = (ByteArrayOutputStream) map.get("stream");
-            String encodeToString = java.util.Base64.getEncoder().encodeToString(outputStream.toByteArray());
-            return AjaxResult.success().put("file", encodeToString);
-        } catch (IOException | DocumentException e) {
-            e.printStackTrace();
+            if (!errTjh.isEmpty()){
+                Map<String,Object> map=new HashMap<>();
+                map.put("errtjh",errTjh);
+                return AjaxResult.success("浠ヤ笂浜哄憳绛惧埌澶辫触",map);
+            }
+            return AjaxResult.success();
         }
-        return AjaxResult.success("鎿嶄綔鎴愬姛");
+//        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        return AjaxResult.error();
     }
 
-    private void getAjaxResults(String cusIdcard) {
+    @GetMapping("/signOrderInfo")
+    public AjaxResult signOrderInfo(@RequestParam("tjNum") String tjNum){
+        List<Map<String, Object>> djdInfos = tjOrderService.selectDjdInfo(tjNum);
+        Map<String, Object> userInfo = tjOrderService.selectDjdUserInfo(tjNum);
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("djd",djdInfos);
+        hashMap.put("user",userInfo);
+        return AjaxResult.success(hashMap);
+    }
+
+    @Transactional
+    public void getAjaxResults(String cusIdcard) {
         if (!"".equals(cusIdcard) && cusIdcard != null) {
             //鏍规嵁閰嶇疆璋冨彇瀛樺偍杩囩▼ 灏嗕复鏃惰〃鏁版嵁瀛樺叆棰勭害琛�2023.12.12
             final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
@@ -1750,25 +1939,13 @@
         DynamicDataSourceContextHolder.clearDataSourceType();
     }
 
-    private AjaxResult getAjaxResult(Long userId, SysUser sysUser, String tjCategory) throws IOException {
+    @Transactional
+    public AjaxResult getAjaxResult(Long userId, SysUser sysUser, String tjCategory) throws IOException {
 
         LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
         wq.eq(TjCustomer::getCusId, userId);
         TjCustomer tjCustomer = tjCustomerService.getOne(wq);
         if (tjCustomer == null) return AjaxResult.error("璇ュ鎴锋湭鐧昏鎴栦笉瀛樺湪");
-
-//        LambdaQueryWrapper<TjOrder> wqq = new LambdaQueryWrapper<>();
-//        wqq.eq(TjOrder::getUserId, userId);
-//        wqq.eq(TjOrder::getCheckStatus, 0);
-//        wqq.isNull(TjOrder::getFinishTime);
-//        if (!tjCustomer.getCardId().equals("0")) {
-//            wqq.eq(TjOrder::getCardId, tjCustomer.getCardId());
-//        }
-//        TjOrder order = tjOrderService.getOne(wqq);
-//        if (null != order) {
-//            transitionService.deletedTbTransitionListByCusIdAndTjNum(tjCustomer.getCusIdcard(), tjCustomer.getCardId());
-//            return AjaxResult.error("涓嶅彲閲嶅鐧昏");
-//        }
         TjOrder tjOrder = new TjOrder();
         Date date = new Date();
         tjOrder.setCreateTime(date);
@@ -1785,16 +1962,17 @@
         if (tjReservation != null) {
             tjOrder.setReservationId(tjReservation.getId());
             mallOrder = mallOrderService.getOne(new LambdaQueryWrapper<MallOrder>().eq(MallOrder::getReservationId, tjReservation.getId()));
-            if (DateUtil.endOfDay(new Date()).before(tjReservation.getReservationTime())) {
-                return AjaxResult.error("鏈埌棰勭害鏃堕棿");
-            }
-            if (DateUtil.endOfDay(tjReservation.getReservationTime()).before(new Date())) {
-                tjReservation.setIsExpire(1);
-                tjReservationService.updateById(tjReservation);
-                return AjaxResult.error("瀵逛笉璧锋偍鐨勯绾﹀凡瓒呮椂璇烽噸鏂伴绾�");
-            }
+//            if (DateUtil.endOfDay(new Date()).before(tjReservation.getReservationTime())) {
+//                return AjaxResult.error("鏈埌棰勭害鏃堕棿");
+//            }
+//            if (DateUtil.endOfDay(tjReservation.getReservationTime()).before(new Date())) {
+//                tjReservation.setIsExpire(1);
+//                tjReservationService.updateById(tjReservation);
+//                return AjaxResult.error("瀵逛笉璧锋偍鐨勯绾﹀凡瓒呮椂璇烽噸鏂伴绾�");
+//            }
             if (null != tjReservation.getTeamNo()) tjOrder.setTeamNo(tjReservation.getTeamNo());
             if (null != tjReservation.getCompanyId()) tjOrder.setFirmId(tjReservation.getCompanyId());
+            if (null != tjReservation.getCompany()) tjOrder.setFirmName(tjReservation.getCompany());
             if (null != tjReservation.getDepartment()) tjOrder.setFirmDeptName(tjReservation.getDepartment());
             if (null != tjReservation.getJobNo()) tjOrder.setFirmWorkId(tjReservation.getJobNo());
             if (null != tjReservation.getPacId()) tjOrder.setPacId(tjReservation.getPacId());
@@ -1805,12 +1983,47 @@
             }
             tjReservation.setIsExpire(1);
             tjReservationService.updateById(tjReservation);
+            if (null != tjReservation.getTeamNo()) {
+                tjOrder.setTjType("1");
+            } else{
+                tjOrder.setTjType("2");
+            }
+
+            if (StringUtil.isBlank(tjOrder.getFirmId())) {
+                tjOrder.setFirmId("0");
+            }
+//
+//            tjReservation.setIsExpire(1);
+//            tjReservationService.updateById(tjReservation);
 
             //鐢熸垚浣撴鍙�
-            String tjNumber = (sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmss").format(new Date()));
+//            String tjNumber = (sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmss").format(new Date()));
+//            tjNumber = tjNumber.replaceAll(".{6}$", userId.toString().substring(userId.toString().length() - 6));
 
-            tjNumber = tjNumber.replaceAll(".{4}$", userId.toString().substring(userId.toString().length() - 4));
 
+            //鑾峰彇鎷兼帴鍓嶇紑
+            String makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix");
+//            String tjNumber = (sysUser.getUserName() + idUtils.getTjNumber());
+            String tjNumber = idUtils.getTjNumber();
+            if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber;
+
+
+//            if (redisCache.hasKey(TJH)) {
+//                while (true){
+//                    List<String> tjh = redisCache.getCacheList(TJH);
+//                    if(tjh.contains(tjNumber)){
+//                        tjNumber =(sysUser.getUserName() + IdUtils.getTjNumber());
+//                        if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber;
+//                    }else {
+//                        tjh.add(tjNumber);
+//                    }
+//                }
+//            }else {
+//                List<String> stringList = tjOrderService.
+//                        list(new LambdaQueryWrapper<TjOrder>().select(TjOrder::getTjNumber)).stream().map(TjOrder::getTjNumber).collect(Collectors.toList());
+//                stringList.add(tjNumber);
+//                redisCache.setCacheList(TJH,stringList);
+//            }
             tjOrder.setTjNumber(tjNumber);
             if (null != tjOrder.getPhoto()) {
                 File file = new File(tjOrder.getPhoto());
@@ -1851,6 +2064,21 @@
                 tjCustomer.setCusNumber(cusNumber);
 //            BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount())).divide(BigDecimal.valueOf(10));
                 TjFlowingWater tjFlowingWater = new TjFlowingWater();
+                tjFlowingWater.setCreateTime(date);
+                tjFlowingWater.setCreateTime(date);
+                tjFlowingWater.setUpdateTime(date);
+                tjFlowingWater.setCreateBy(sysUser.getNickName());
+                tjFlowingWater.setUpdateBy(sysUser.getNickName());
+//                BigDecimal bigDecimal = tbTransitionMapper.sumTbTransitionOrdPriceByTjNum(tjOrder.getTjNumber());
+                BigDecimal bigDecimal = tbTransitionMapper.sumTbTransitionOrdPriceByTjNumIsNull(tjCustomer.getCusIdcard());
+                tjFlowingWater.setCopeWith(bigDecimal);
+//                BigDecimal bigDecimal1 = tbTransitionMapper.sumTbTransitionNowPriceByTjNum(tjOrder.getTjNumber());
+                BigDecimal bigDecimal1 = tbTransitionMapper.sumTbTransitionNowPriceByTjNumIsNull(tjCustomer.getCusIdcard());
+                tjFlowingWater.setPaidIn(bigDecimal1);
+                tjFlowingWater.setDiscount(String.valueOf(10));
+                tjFlowingWater.setPayStasus(1L);
+                tjFlowingWater.setPayType(3L);
+
                 tjFlowingWater.setPayStasus(0L);
                 if ("1".equals(tjOrder.getTjType())) {
                     if (tjReservation.getPayType() == 1) {
@@ -1899,18 +2127,38 @@
                 if (tjFlowingWaterService.save(tjFlowingWater)) {
                     tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber()));
                     tjOrderService.updateById(tjOrder);
-
-
                 }
-                asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
+                transitionService.updateTbTransitionTjNumByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber());
+                tjCustomer.setCardId(tjOrder.getTjNumber());
+                tjCustomerService.updateById(tjCustomer);
+                transitionService.updateCardIdByTjNumAndIdCard(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), tjOrder.getTjNumber());
+                tjOrder.setCardId(tjOrder.getTjNumber());
+                tjOrderService.updateById(tjOrder);
 
+//                asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
+
+                if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
+                    // 杩欐槸涓婇潰涓汉鏂规硶寮曞叆鏁版嵁
+                    tjFlowingWater.setPayStasus(1L);
+                    tjOrder.setTjFlowingWater(tjFlowingWater);
+                    newSaveextracted(tjOrder, tjCustomer, BigDecimal.valueOf(10), sysUser, tjReservation, tjFlowingWater);
+                    tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
+                            sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
+                    remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
+                    List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
+                    xdPictureService.saveBatch(xdPictureList);
+                    List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
+                    addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
+//                    return AjaxResult.success(tjNumber);
+                }
 
                 tjCustomer.setCardId("0");
                 tjCustomerService.updateById(tjCustomer);
                 return AjaxResult.success().put("tjNumber", tjNumber);
             }
         }
-        return AjaxResult.error();
+        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        return AjaxResult.error().put("userId",userId);
     }
 
 
@@ -2000,10 +2248,10 @@
                     transitionService.saveRedisTransitionByPacId(cusId, cardId, pacId);
 
                     //琛ュ樊浠�
-                    List<Map<String,Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
-                    if(null !=cjMaps && !cjMaps.isEmpty()){
+                    List<Map<String, Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
+                    if (null != cjMaps && !cjMaps.isEmpty()) {
                         for (Map<String, Object> cjMap : cjMaps) {
-                            transitionService.buxiangmuchajia(cusId,pacId.toString(),cjMap.get("xmid").toString(),new BigDecimal(cjMap.get("cj").toString()));
+                            transitionService.buxiangmuchajia(cusId, pacId.toString(), cjMap.get("xmid").toString(), new BigDecimal(cjMap.get("cj").toString()));
                         }
                     }
 
@@ -2692,50 +2940,6 @@
     }
 
 
-    public void newSaveextracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
-        tjAskMedicalHistoryService.updateTjAskMedicalHistoryByCusId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjCustomer.getCusId()));
-        if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
-            tjOrderDetailService.saveJSYTjOrderDetailsByCusId(tjCustomer.getCusIdcard(),
-                    String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId(), String.valueOf(tjFlowingWater.getTjSerialNumber()));
-        } else {
-            tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
-        }
-
-        tjOrderDetailService.saveTjPureToneTesByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
-
-        //娣诲姞remark琛ㄦ暟鎹�
-        if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
-            remarkService.saveJSYTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
-
-        } else {
-            remarkService.saveTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
-
-        }
-        //鍒ゆ柇鏄惁浜ら挶
-        if ("1".equals(tjOrder.getTjType())) {
-            if (null != tjReservation && tjReservation.getPayType() == 1) {
-                tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
-                        sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
-                remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
-                List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
-                xdPictureService.saveBatch(xdPictureList);
-            }
-        }
-        if (tjFlowingWater.getPayStasus() == 1L) {
-            tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
-                    sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
-            tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
-            tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
-            tjFlowingWater.setPayType(4L);
-            tjFlowingWaterService.updateById(tjFlowingWater);
-            remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
-//            asyncService.addTjChargingStandard(tjOrder, transitionService.getTbTransitionListByCusId(tjCustomer.getCusIdcard(), tjOrder.getCardId()), sysUser);
-            List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
-            xdPictureService.saveBatch(xdPictureList);
-        }
-    }
-
-
     public void ttextracted(TjOrder tjOrder, TjCustomer tjCustomer, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
 
         tjAskMedicalHistoryService.updateTjAskMedicalHistoryByCusId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjCustomer.getCusId()));
@@ -3217,7 +3421,7 @@
             for (int i = 0; i < tjNumbers.size(); i++) {
                 String tjNumber = tjNumbers.get(i).getTjNumber();
                 try {
-                    List<Map<String, String>> djdInfos = tjOrderService.selectDjdInfo(tjNumber);
+                    List<Map<String, Object>> djdInfos = tjOrderService.selectDjdInfo(tjNumber);
                     Map<String, Object> userInfo = tjOrderService.selectDjdUserInfo(tjNumber);
                     LocalDateTime tjsj = (LocalDateTime) userInfo.get("tjsj");
                     DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
@@ -3511,7 +3715,7 @@
                 log.info("閫�璐圭敵璇� 鍏ュ弬 -> {}", JSONUtil.toJsonStr(map));
                 String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/creatCostInfo", map);
                 log.info("閫�璐圭敵璇� 杩斿洖 -> {}", JSONUtil.toJsonStr(post));
-                if(null !=post){
+                if (null != post) {
                     JSONObject jsonObject = JSONUtil.parseObj(post);
                     if (jsonObject.getStr("code").equals("200")) {
                         // hisTfWaterId
@@ -3701,7 +3905,7 @@
                     }
                 }
             }
-            if(!list.isEmpty()) {
+            if (!list.isEmpty()) {
                 int i = tjReportService.deleteTjReportByReIds(list.toArray(new Long[]{}));
                 if (i == 0) {
                     return AjaxResult.error("鎾ゅ洖澶辫触锛�");
@@ -3757,14 +3961,14 @@
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return AjaxResult.error("鎿嶄綔澶辫触! 浠ヤ笅椤圭洰宸插瓨鍦�: " + string);
                 }
-                transitionService.ttsaveTemoTransitionByGroupingId(cusId, cardId, pacId.toString()) ;
-                    //琛ュ樊浠�
-                    List<Map<String,Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
-                    if(null !=cjMaps && !cjMaps.isEmpty()){
-                        for (Map<String, Object> cjMap : cjMaps) {
-                            transitionService.buxiangmuchajia(cusId,pacId.toString(),cjMap.get("xmid").toString(),new BigDecimal(cjMap.get("cj").toString()));
-                        }
+                transitionService.ttsaveTemoTransitionByGroupingId(cusId, cardId, pacId.toString());
+                //琛ュ樊浠�
+                List<Map<String, Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
+                if (null != cjMaps && !cjMaps.isEmpty()) {
+                    for (Map<String, Object> cjMap : cjMaps) {
+                        transitionService.buxiangmuchajia(cusId, pacId.toString(), cjMap.get("xmid").toString(), new BigDecimal(cjMap.get("cj").toString()));
                     }
+                }
 
             }
         }
@@ -3799,7 +4003,7 @@
 //                }
 //            }
 //        }
-        List<TbTransition> list= transitionService.newgetTransitionList(cusId);
+        List<TbTransition> list = transitionService.newgetTransitionList(cusId);
         return AjaxResult.success(list);
     }
 
@@ -3808,33 +4012,43 @@
     @Transactional
     public AjaxResult updateTransitionnewPrice(@RequestBody List<UpdateTransitionnewPriceDto> dtos) {
 
-        if(null !=dtos && !dtos.isEmpty()){
+        if (null != dtos && !dtos.isEmpty()) {
+            boolean flag = false;
             for (UpdateTransitionnewPriceDto dto : dtos) {
-                LambdaQueryWrapper<TbTransition> wq=new LambdaQueryWrapper<>();
-                wq.eq(TbTransition::getCusId,dto.getCusIdCard());
-                wq.eq(TbTransition::getParentProId,dto.getParentProId());
+                LambdaQueryWrapper<TbTransition> wq = new LambdaQueryWrapper<>();
+                wq.eq(TbTransition::getCusId, dto.getCusIdCard());
+                wq.eq(TbTransition::getParentProId, dto.getParentProId());
                 wq.isNull(TbTransition::getTjNum);
                 List<TbTransition> list = transitionService.list(wq);
-                log.info("淇敼鐨勫鎴疯韩浠借瘉鍙蜂负: "+dto.getCusIdCard());
-                log.info("鐖堕」鐩甶d涓�: "+dto.getParentProId());
-                log.info("鎶樻墸涓�: "+new BigDecimal(dto.getDiscount()));
-                if(null !=list && !list.isEmpty()){
-                    BigDecimal dxzj = transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(),dto.getParentProId());
+                log.info("淇敼鐨勫鎴疯韩浠借瘉鍙蜂负: " + dto.getCusIdCard());
+                log.info("鐖堕」鐩甶d涓�: " + dto.getParentProId());
+                log.info("鎶樻墸涓�: " + new BigDecimal(dto.getDiscount()));
+                if (null != list && !list.isEmpty()) {
+
                     for (TbTransition transition : list) {
                         BigDecimal ordPrice = transition.getOrdPrice();
                         BigDecimal multiply = ordPrice.multiply((new BigDecimal(dto.getDiscount()).divide(BigDecimal.valueOf(10))));
-                        log.info("鍚庣璁$畻鐨勯噾棰�: "+multiply);
+                        log.info("鍚庣璁$畻鐨勯噾棰�: " + multiply.toString());
                         transition.setNowPrice(multiply);
                         transition.setDiscount(new BigDecimal(dto.getDiscount()));
                         transitionService.updateById(transition);
                     }
-                    if(null !=dto.getYhj() && dto.getYhj().compareTo(BigDecimal.ZERO)>=0){
-                        List<TbTransition> transitionList = list.stream().filter(a ->
-                                transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(),dto.getParentProId()).subtract(dto.getYhj()).compareTo(BigDecimal.ZERO) >= 0).collect(Collectors.toList());
-                        if(!transitionList.isEmpty()){
-                            TbTransition tbTransition = transitionList.get(0);
-                            tbTransition.setNowPrice(dxzj);
-                            transitionService.updateById(tbTransition);
+
+                    BigDecimal dxzj = transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(), dto.getParentProId());
+
+                    BigDecimal yhj = dto.getYhj();
+                    log.info("鍓嶇浼犻�掔殑浠锋牸锛歿}",yhj.toString());
+                    BigDecimal cj = yhj.subtract(dxzj);
+                    log.info("璁$畻鐨勫樊浠凤細{}",cj.toString());
+                    for (TbTransition transition : list) {
+                        BigDecimal result = transition.getNowPrice().add(cj);
+                        log.info("琛ヤ笂宸环鍓嶇殑浠锋牸涓猴細{}",transition.getNowPrice().toString());
+                        if (result.compareTo(BigDecimal.ZERO)>0 && !flag && cj.compareTo(BigDecimal.ZERO) != 0){
+                            transition.setNowPrice(result);
+                            transitionService.updateById(transition);
+                            log.info("淇敼 琛ヤ笂宸环鍚庣殑浠锋牸涓猴細{}",result.toString());
+                            flag = true;
+                            break;
                         }
                     }
                 }
@@ -3844,5 +4058,37 @@
     }
 
 
+
+    @PostMapping("/huifuyuyuejilu")
+    @ApiOperation(value = "浣撴璁板綍椤甸潰鎭㈠棰勭害璁板綍鎺ュ彛")
+    @Transactional
+    public AjaxResult huifuyuyuejilu(@RequestBody List<String> tjNUms) {
+
+        if (null != tjNUms && !tjNUms.isEmpty()) {
+            for (String tjNUm : tjNUms) {
+                TjOrder order = tjOrderService.getOrderByTjNum(tjNUm);
+                if(null !=order && StringUtil.isNotBlank(order.getReservationId())){
+                    //杩欓噷鍒犻櫎鐨勬槸杩欎釜浜烘墍鏈夐」鐩寘鎷ˉ褰曢」鐩�
+                    tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
+                    tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId()));
+                    remarkService.deletedOrderRemarkByTjNum(tjNUm);
+                    tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId()));
+//                transitionService.deletedTbTransitionByTjNum(tjNum);
+                    tjSamplingMapper.deleteByTjNumAndCusId(order.getTjNumber(), order.getUserId());
+
+                    TjReservation reservation = tjReservationService.getById(order.getReservationId());
+                    if(null !=reservation){
+                        reservation.setIsExpire(2);
+                        tjReservationService.updateById(reservation);
+                        transitionService.updateTbTransitionByTjNum(tjNUm);
+                    }
+
+                }
+            }
+
+            return AjaxResult.success();
+        }
+        return AjaxResult.error();
+    }
 }
 

--
Gitblit v1.8.0