From 2a9583fd376451ca77a0400af7f3a02d1b80e7f5 Mon Sep 17 00:00:00 2001
From: zhaowenxuan <chacca165@163.com>
Date: 星期二, 24 六月 2025 18:04:34 +0800
Subject: [PATCH] 2025-06-24

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java |  229 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 149 insertions(+), 80 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
index 74ec827..b5915c4 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
@@ -1,6 +1,5 @@
 package com.ltkj.web.controller.service;
 
-import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
@@ -8,19 +7,17 @@
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
-import com.alibaba.druid.sql.visitor.functions.If;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ltkj.common.core.domain.AjaxResult;
 import com.ltkj.common.core.domain.entity.SysDept;
 import com.ltkj.common.core.domain.entity.SysUser;
 import com.ltkj.common.core.redis.RedisCache;
-import com.ltkj.common.utils.IdUtils;
 import com.ltkj.common.utils.StringUtils;
 import com.ltkj.framework.config.MatchUtils;
-import com.ltkj.framework.datasource.DynamicDataSourceContextHolder;
 import com.ltkj.hosp.domain.*;
 import com.ltkj.hosp.hisDto.*;
+import com.ltkj.hosp.idutil.IdUtils;
 import com.ltkj.hosp.mapper.TjSamplingMapper;
 import com.ltkj.hosp.pacsDto.SavePacsApply;
 import com.ltkj.hosp.service.*;
@@ -40,7 +37,6 @@
 import com.ltkj.web.controller.system.SamplingServiceApi;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -48,8 +44,6 @@
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -451,6 +445,8 @@
         if (null != detailList && detailList1) {
             String format = DateUtil.format(new 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());
@@ -587,84 +583,155 @@
     @Override
     //@Async("async")
     public void updateOrdeltile(List<TjOrderDetail> tjOrderDetailList, SysUser sysUser, TjOrder order, TjOrderRemark orderRemark) {
-        String currentDataSource = DynamicDataSourceContextHolder.getDataSourceType();
-        log.info("寮傛绾跨▼涓殑鏁版嵁婧�: {}", currentDataSource);
 
-        String deptname = "";
-        TjProject tjProject = projectService.getById(orderRemark.getProId());
-        if (null != tjProject) {
-            SysDept dept = deptService.getById(tjProject.getDeptId());
-            if (dept.getParentId() != 100L) {
-                deptname = deptService.getprentks(dept.getParentId().toString());
-            } else {
-                deptname = dept.getDeptName();
-            }
+        try {
+            String deptname = "";
+            TjProject tjProject = projectService.getById(orderRemark.getProId());
+            if (null != tjProject) {
+                SysDept dept = deptService.getById(tjProject.getDeptId());
+                if (dept.getParentId() != 100L) {
+                    deptname = deptService.getprentks(dept.getParentId().toString());
+                } else {
+                    deptname = dept.getDeptName();
+                }
+                String xb= tjCustomerService.getSexByTjh(order.getTjNumber());
 
-            String ssyszy="";
-            for (TjOrderDetail detail : tjOrderDetailList) {
+                StringBuilder ssyszys = new StringBuilder();
+                StringBuilder ssyszyjgs = new StringBuilder();
+                List<Map<String, Object>> jianyilis=new ArrayList<>();
+                for (TjOrderDetail detail : tjOrderDetailList) {
+                    detail.setTjStatus(1L);
+                    LambdaQueryWrapper<TjStandard> wq0 = new LambdaQueryWrapper<>();
+                    wq0.eq(TjStandard::getProId, detail.getProId());
+                    detail.setUpdateBy(sysUser.getNickName());
+                    detail.setUpdateTime(new Date());
+                    detail.setCreateId(String.valueOf(sysUser.getUserId()));
+                    detail.setUpdateId(String.valueOf(sysUser.getUserId()));
+                    tjOrderDetailService.updateById(detail);
 
-                detail.setTjStatus(1L);
-                LambdaQueryWrapper<TjStandard> wq0 = new LambdaQueryWrapper<>();
-                wq0.eq(TjStandard::getProId, detail.getProId());
-                detail.setUpdateBy(sysUser.getNickName());
-                detail.setUpdateTime(new Date());
-                detail.setCreateId(String.valueOf(sysUser.getUserId()));
-                detail.setUpdateId(String.valueOf(sysUser.getUserId()));
-                tjOrderDetailService.updateById(detail);
-                try {
-                    LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
-                    wq.eq(TjOrderYcxm::getTjh, order.getTjNumber());
-                    wq.eq(TjOrderYcxm::getJcxm, detail.getProName());
-                    if (detail.getExceptionDesc() == 1) {
-                        TjOrderYcxm ycxm = ycxmService.getOne(wq);
-                        if (null != ycxm) {
-                            ycxm.setJcjg(detail.getProResult());
-                            List<Map<String, Object>> maps = rulesService.getyichangxiangmujianyiguize(detail.getProId().toString()
-                                    , detail.getProName().replaceAll("[锛�(][^锛�)]*[锛�)]", "")
-                                            .replaceAll("[ 娴嬪畾妫�娴媇", "").replaceAll("\\[.*?\\]", ""), "", order.getTjNumber()
-                                    , detail.getProName().replaceAll("[锛�(][^锛�)]*[\u4e00-\u9fa5]+[^锛�)]*[锛�)]", "")
-                                            .replaceAll("[ 娴嬪畾妫�娴媇", "").replaceAll("\\[.*?\\]", "")
-                                    , detail.getProResult());
+                        LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
+                        wq.eq(TjOrderYcxm::getTjh, order.getTjNumber());
+                        wq.eq(TjOrderYcxm::getJcxm, detail.getProName());
+                        ycxmService.remove(wq);
+                        if (detail.getExceptionDesc() == 1) {
+                          if(tjProject.getSfcyyc()==0){
+                              String replacedAll = detail.getProName().replaceAll("[锛�(][^锛�)]*[\u4e00-\u9fa5]+[^锛�)]*[锛�)]", "").replaceAll("[锛�(][^锛�)]*[锛�)]", "")
+                                      .replaceAll("[ 娴嬪畾妫�娴媇", "").replaceAll("\\[.*?\\]", "").replaceAll("鈼�", "");
+
+                              if(!detail.getProName().contains("鑸掑紶鍘�") && !detail.getProName().contains("鏀剁缉鍘�")){
+
+                                  List<Map<String, Object>> maps = rulesService.getyichangxiangmujianyiguize(detail.getProId().toString(), replacedAll, "", order.getTjNumber()
+                                          , replacedAll, detail.getProResult());
 
 
-                            String[] split = detail.getProResult().split("銆倈,|锛�");
-                            List<Map<String, Object>> mapList = new ArrayList<>();
-                            for (String s : split) {
-                                s = s.replaceAll("\n", "");
-//                                        Map<String,Object> maps= rulesService.getyichangxiangmujianyiguizeJianCha(s);
-                                Map<String, Object> mapss = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(deptname, s, "0");
-                                if (null != mapss && !mapss.isEmpty()) {
-                                    Object bt = mapss.get("bt");
-                                    Object nr = mapss.get("nr");
-                                    if (null != bt || null != nr) {
+                                  String[] split = detail.getProResult().split("[銆�,锛�:锛�.\\s]+");
+                                  List<Map<String, Object>> mapList = new ArrayList<>();
+                                  for (String s : split) {
+                                      s = s.replaceAll("\n", "").replaceAll("[锛�(][^锛�)]*[锛�)]", "").replaceAll(" ","")
+                                              .replaceAll("鐥�","").replaceAll("[0-9]", "");
+                                      Map<String, Object> mapss = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(deptname, s, "0",xb);
+                                      if (null != mapss && !mapss.isEmpty()) {
+                                          Object bt = mapss.get("bt");
+                                          Object nr = mapss.get("nr");
+                                          if (null != bt || null != nr) {
 
-                                    }
-                                    mapList.add(mapss);
-                                }
+                                          }
+                                          mapList.add(mapss);
+                                      }
+                                  }
+                                  TjOrderYcxm ycxm = ycxmService.getOne(wq);
+                                  if (null != ycxm) {
+                                      ycxm.setJcjg(detail.getProResult());
+                                      if (null != maps && !maps.isEmpty()) {
+                                          ycxm.setJynr(JSONUtil.toJsonStr(maps));
+                                      }
+                                      if (!mapList.isEmpty()) {
+                                          ycxm.setJynr(JSONUtil.toJsonStr(mapList));
+                                      }
+                                      ycxmService.updateById(ycxm);
+                                  }else {
+                                      TjOrderYcxm orderYcxm =new TjOrderYcxm();
+                                      orderYcxm.setTjh(order.getTjNumber());
+                                      orderYcxm.setParentName(tjProject.getProName());
+                                      orderYcxm.setJcxm(detail.getProName());
+                                      orderYcxm.setJcjg(detail.getProResult());
+                                      if (null != maps && !maps.isEmpty()) {
+                                          orderYcxm.setJynr(JSONUtil.toJsonStr(maps));
+                                      }
+                                      if (!mapList.isEmpty()) {
+                                          orderYcxm.setJynr(JSONUtil.toJsonStr(mapList));
+                                      }
+                                      orderYcxm.setJyjc("0");
+                                      ycxmService.save(orderYcxm);
+                                  }
+                              }else {
+
+                                  List<Map<String, Object>> maps = rulesService.getyichangxiangmujianyiguize(detail.getProId().toString()
+                                          , replacedAll, "", order.getTjNumber(), replacedAll, detail.getProResult());
+
+
+                                  String[] split = detail.getProResult().split("[銆�,锛�:锛�.\\s]+");
+                                  List<Map<String, Object>> mapList = new ArrayList<>();
+                                  for (String s : split) {
+                                      s = s.replaceAll("\n", "").replaceAll("[锛�(][^锛�)]*[锛�)]", "");;
+                                      //                                        Map<String,Object> maps= rulesService.getyichangxiangmujianyiguizeJianCha(s);
+                                      Map<String, Object> mapss = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(deptname, s, "0",xb);
+                                      if (null != mapss && !mapss.isEmpty()) {
+                                          Object bt = mapss.get("bt");
+                                          Object nr = mapss.get("nr");
+                                          if (null != bt || null != nr) {
+
+                                          }
+                                          mapList.add(mapss);
+                                      }
+                                  }
+
+                                  if (null != maps && !maps.isEmpty()) {
+                                      jianyilis.addAll(maps);
+                                  }
+                                  if (!mapList.isEmpty()) {
+                                      jianyilis.addAll(mapList);
+                                  }
+                                  ssyszys.append(detail.getProName()).append("/");
+                                  ssyszyjgs.append(detail.getProResult()).append("/");
+                              }
+                          }
+                        } else {
+                            if(detail.getProName().contains("鑸掑紶鍘�") || detail.getProName().contains("鏀剁缉鍘�")){
+                                ssyszys.append(detail.getProName()).append("/");
+                                ssyszyjgs.append(detail.getProResult()).append("/");
+
                             }
 
-                            if (null != maps && !maps.isEmpty()) {
-                                ycxm.setJynr(JSONUtil.toJsonStr(maps));
-                            }
-                            if (!mapList.isEmpty()) {
-                                ycxm.setJynr(JSONUtil.toJsonStr(mapList));
-                            }
-                            if(detail.getProName().contains("鑸掑紶鍘�")||detail.getProName().contains("鏀剁缉鍘�")){
-                                ssyszy+=ycxm.getJcxm();
-                            }
-                            ycxmService.updateById(ycxm);
                         }
-                    }else {
-                       ycxmService.remove(wq);
-                    }
-
-
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    log.error(e.getMessage());
                 }
 
+                // 浣跨敤 stream 杩囨护鍑� proName 涓� "鑸掑紶鍘�" 鎴� "鏀剁缉鍘�" 鐨勫厓绱�
+                List<TjOrderDetail> filteredList = tjOrderDetailList.stream()
+                        .filter(a -> ("鑸掑紶鍘�".equals(a.getProName()) || "鏀剁缉鍘�".equals(a.getProName())) && a.getExceptionDesc()==1)
+                        .collect(Collectors.toList());
+                if(StrUtil.isNotBlank(ssyszys.toString())){
+
+                    LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
+                    wq.eq(TjOrderYcxm::getTjh, order.getTjNumber());
+                    wq.like(TjOrderYcxm::getJcxm,"鑸掑紶鍘�");
+                    ycxmService.remove(wq);
+
+                    if(!filteredList.isEmpty()){
+                        TjOrderYcxm orderYcxm =new TjOrderYcxm();
+                        orderYcxm.setTjh(order.getTjNumber());
+                        orderYcxm.setParentName(tjProject.getProName());
+                        orderYcxm.setJcxm(ssyszys.toString().replaceFirst("/$", ""));
+                        orderYcxm.setJcjg(ssyszyjgs.toString().replaceFirst("/$", ""));
+                        orderYcxm.setJynr(JSONUtil.toJsonStr(jianyilis));
+                        orderYcxm.setJyjc("0");
+                        ycxmService.save(orderYcxm);
+                    }
+                }
             }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error(String.valueOf(e));
         }
 
     }
@@ -866,6 +933,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());
@@ -2407,7 +2476,7 @@
             wq2.eq(TjSampling::getTjNum, tjNum);
             wq2.eq(TjSampling::getProId, refundPro.getProId());
             samplingService.remove(wq2);
-            redisCache.deleteCacheMapValue("getOrderDetailByProParentId" + tjNum, String.valueOf(refundPro.getProId()));
+            redisCache.deleteCacheMapValue("getOrderDetailByProParentId:" + tjNum, String.valueOf(refundPro.getProId()));
         }
     }
 
@@ -2442,7 +2511,7 @@
                 td.setCreateId(String.valueOf(sysUser.getUserId()));
                 td.setUpdateId(String.valueOf(sysUser.getUserId()));
                 discardInspectionService.save(td);
-                redisCache.deleteCacheMapValue("getOrderDetailByProParentId" + domainVo.getTjNumber(), String.valueOf(remark.getProId()));
+                redisCache.deleteCacheMapValue("getOrderDetailByProParentId:" + domainVo.getTjNumber(), String.valueOf(remark.getProId()));
             }
 
             LambdaQueryWrapper<TjProject> wq1 = new LambdaQueryWrapper<>();
@@ -2658,8 +2727,8 @@
     @Override
     //@Async("async")
     public void updateCheckType(String tjNum) {
-        redisCache.setCacheMapValue("updateCheckType" + tjNum, tjNum, getAjaxResult(tjNum));
-        redisCache.setHashKeyExpireTime("updateCheckType" + tjNum, 7L, TimeUnit.DAYS);
+        redisCache.setCacheMapValue("updateCheckType:" + tjNum, tjNum, getAjaxResult(tjNum));
+        redisCache.setHashKeyExpireTime("updateCheckType:" + tjNum, 7L, TimeUnit.DAYS);
     }
 
     @Override
@@ -2682,11 +2751,11 @@
     //@Async("async")
     public void getOrderDetailByProParentId(String tjNumber, Map<String, Object> map, String proParentId) {
         if (null != map && !map.isEmpty()) {
-            redisCache.setCacheMapValue("getOrderDetailByProParentId" + tjNumber, proParentId, map);
+            redisCache.setCacheMapValue("getOrderDetailByProParentId:" + tjNumber, proParentId, map);
         } else {
-            redisCache.setCacheMapValue("getOrderDetailByProParentId" + tjNumber, proParentId, getOrderDetailByProParentId(proParentId, tjNumber));
+            redisCache.setCacheMapValue("getOrderDetailByProParentId:" + tjNumber, proParentId, getOrderDetailByProParentId(proParentId, tjNumber));
         }
-        redisCache.setHashKeyExpireTime("getOrderDetailByProParentId" + tjNumber, 7L, TimeUnit.DAYS);
+        redisCache.setHashKeyExpireTime("getOrderDetailByProParentId:" + tjNumber, 7L, TimeUnit.DAYS);
 
     }
 

--
Gitblit v1.8.0