From b35cb9c705dae9b8fd256c93f9c57dac678f3a6e Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期四, 20 二月 2025 15:10:01 +0800
Subject: [PATCH] zjh20250220

---
 ltkj-admin/src/main/java/com/ltkj/web/config/timer/AsyncConfig.java                 |   22 +++
 ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java |  214 +++++++++++++++++++++++------------
 ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java                |   24 ----
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java      |   16 +-
 ltkj-framework/src/main/java/com/ltkj/framework/aspectj/AsynAspect.java             |    4 
 ltkj-admin/src/main/java/com/ltkj/web/config/timer/ThreadPoolConfiguration.java     |   40 +++---
 6 files changed, 194 insertions(+), 126 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/config/timer/AsyncConfig.java b/ltkj-admin/src/main/java/com/ltkj/web/config/timer/AsyncConfig.java
new file mode 100644
index 0000000..590761c
--- /dev/null
+++ b/ltkj-admin/src/main/java/com/ltkj/web/config/timer/AsyncConfig.java
@@ -0,0 +1,22 @@
+package com.ltkj.web.config.timer;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+//@Configuration
+//@EnableAsync
+public class AsyncConfig {
+
+    @Bean(name = "asyncExecutor")
+    public ThreadPoolTaskExecutor asyncExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        executor.setCorePoolSize(3);
+        executor.setMaxPoolSize(10);
+        executor.setQueueCapacity(10000);
+        executor.setThreadNamePrefix("async-executor-");
+        executor.initialize();
+        return executor;
+    }
+}
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/config/timer/ThreadPoolConfiguration.java b/ltkj-admin/src/main/java/com/ltkj/web/config/timer/ThreadPoolConfiguration.java
index 396b908..fd5561b 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/config/timer/ThreadPoolConfiguration.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/config/timer/ThreadPoolConfiguration.java
@@ -2,6 +2,7 @@
 
 
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
+import com.ltkj.db.DataSourceContextHolder;
 import com.ltkj.framework.aspectj.AsynAspect;
 import com.ltkj.framework.datasource.DynamicDataSourceContextHolder;
 import lombok.extern.slf4j.Slf4j;
@@ -22,38 +23,37 @@
 @Configuration
 @Slf4j
 public class ThreadPoolConfiguration {
-    private static final Logger logger = LoggerFactory.getLogger(AsynAspect.class);
+
+    private static final Logger logger = LoggerFactory.getLogger(ThreadPoolConfiguration.class);
 
     @Bean(name = "async", destroyMethod = "shutdown")
     public ThreadPoolExecutor systemCheckPoolExecutorService() {
-        // 鑾峰彇褰撳墠绾跨▼鐨勬暟鎹簮
-        String dataSource = DynamicDataSourceContextHolder.getDataSourceType();
-        logger.info("寮傛浼犻�掔嚎绋嬪綋鍓嶇嚎绋嬫暟鎹簮: {}", dataSource);
+        // 鑾峰彇褰撳墠绾跨▼鐨� DataSource
+        String currentDataSource = DataSourceContextHolder.getDataSourceKey();
+        logger.info("褰撳墠绾跨▼鏁版嵁婧�: {}", currentDataSource);
 
         return new ThreadPoolExecutor(3, 10, 60, TimeUnit.SECONDS,
                 new LinkedBlockingQueue<>(10000),
                 new ThreadFactoryBuilder().setNameFormat("default-executor-%d").build(),
-                (r, executor) -> logger.error("system pool is full! ")) {
+                (r, executor) -> log.error("system pool is full! ")) {
 
             @Override
-            public void execute(Runnable task) {
-                // 鍖呰浠诲姟锛屽皢鏁版嵁婧愪紶閫掑埌寮傛绾跨▼
-                super.execute(new Runnable() {
-                    @Override
-                    public void run() {
-                        // 鍦ㄥ紓姝ョ嚎绋嬩腑璁剧疆鏁版嵁婧�
-                        String dataSource = DynamicDataSourceContextHolder.getDataSourceType();
-                        try {
-                            DynamicDataSourceContextHolder.setDataSourceType(dataSource);
-                            task.run();
-                        } finally {
-                            // 纭繚鍦ㄤ换鍔℃墽琛屽畬鎴愬悗娓呯悊鏁版嵁婧�
-                            DynamicDataSourceContextHolder.clearDataSourceType();
-                        }
+            public void execute(Runnable command) {
+                // 鍖呰浠诲姟锛岀‘淇濇暟鎹簮琚紶閫掑埌鏂扮嚎绋�
+                super.execute(() -> {
+                    String dataSourceKey = DataSourceContextHolder.getDataSourceKey();
+                    try {
+                        // 浼犻�掓暟鎹簮鍒板瓙绾跨▼
+                        DynamicDataSourceContextHolder.setDataSourceType(dataSourceKey);
+                        command.run(); // 鎵ц浠诲姟
+                    } finally {
+                        // 浠诲姟瀹屾垚鍚庢竻鐞嗘暟鎹簮涓婁笅鏂�
+                        DynamicDataSourceContextHolder.clearDataSourceType();
                     }
                 });
             }
         };
     }
-
 }
+
+
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
index 7e548cf..ec47912 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -1015,17 +1015,9 @@
             for (Map.Entry<String, List<TjOrderYcxm>> entry : stringListMap.entrySet()) {
                 List<TjOrderYcxm> details = entry.getValue();
                 String xmmc = entry.getKey();
-//                    String xmmc = details.get(0).getProName();
                 boolean isXmWrite = false;
                 int index = 1;
-                String szyssy="";
-                StringBuilder builders = new StringBuilder();
                 for (TjOrderYcxm detail : details) {
-//                    if(detail.getJcxm().contains("鑸掑紶鍘�")||detail.getJcxm().contains("鏀剁缉鍘�")){
-//                        builders.append(detail.getJcxm()).append(detail.getJcjg()).append(" ");
-//                        szyssy+=builders.toString();
-//                        continue;
-//                    }
                     if (!isXmWrite) {
                         paragraph = new Paragraph(xmXh + ".  " + xmmc, defaultFont);
                         paragraph.setAlignment(Element.ALIGN_LEFT);
@@ -1047,22 +1039,6 @@
                     paragraph.setAlignment(Element.ALIGN_LEFT);
                     document2.add(paragraph);
                 }
-
-//                if(StringUtil.isNotBlank(szyssy)){
-//                    if (!isXmWrite) {
-//                        paragraph = new Paragraph(xmXh + ".  " + xmmc, defaultFont);
-//                        paragraph.setAlignment(Element.ALIGN_LEFT);
-//                        document2.add(paragraph);
-//                        isXmWrite = true;
-//                    }
-//                    StringBuilder builder = new StringBuilder();
-//                    builder.append("    (").append(index).append(")").append(szyssy).append("\n");
-//                    szyssy = builder.toString();
-//                    paragraph = new Paragraph(szyssy, defaultFont);
-//                    paragraph.setAlignment(Element.ALIGN_LEFT);
-//                    document2.add(paragraph);
-//                }
-
                 if (isXmWrite) {
                     paragraph = PdfUtils.setParagraph(defaultFont, "");
                     paragraph.setLeading(0f);
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..35765bb 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
@@ -38,6 +38,7 @@
 import com.ltkj.web.controller.lis.LisApiMethod;
 import com.ltkj.web.controller.pacs.PacsApiMethodService;
 import com.ltkj.web.controller.system.SamplingServiceApi;
+import jodd.util.StringUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
@@ -587,84 +588,149 @@
     @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();
-            }
-
-            String ssyszy="";
-            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);
-                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());
-
-
-                            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) {
-
-                                    }
-                                    mapList.add(mapss);
-                                }
-                            }
-
-                            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());
+        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();
                 }
 
+                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);
+
+                        LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
+                        wq.eq(TjOrderYcxm::getTjh, order.getTjNumber());
+                        wq.eq(TjOrderYcxm::getJcxm, detail.getProName());
+                        if (detail.getExceptionDesc() == 1) {
+
+                                if(!detail.getProName().contains("鑸掑紶鍘�") && !detail.getProName().contains("鏀剁缉鍘�")){
+                                    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());
+
+
+                                    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) {
+
+                                            }
+                                            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()
+                                            , detail.getProName().replaceAll("[锛�(][^锛�)]*[锛�)]", "")
+                                                    .replaceAll("[ 娴嬪畾妫�娴媇", "").replaceAll("\\[.*?\\]", ""), "", order.getTjNumber()
+                                            , detail.getProName().replaceAll("[锛�(][^锛�)]*[\u4e00-\u9fa5]+[^锛�)]*[锛�)]", "")
+                                                    .replaceAll("[ 娴嬪畾妫�娴媇", "").replaceAll("\\[.*?\\]", "")
+                                            , 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) {
+
+                                            }
+                                            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("/");
+
+                            }
+                           ycxmService.remove(wq);
+                        }
+                }
+
+                if(StrUtil.isNotBlank(ssyszys.toString())){
+                    LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
+                    wq.eq(TjOrderYcxm::getTjh, order.getTjNumber());
+                    wq.like(TjOrderYcxm::getJcxm,"鑸掑紶鍘�");
+                    ycxmService.remove(wq);
+                    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));
         }
 
     }
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
index 297284d..4b00216 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
@@ -1700,6 +1700,9 @@
                     .filter(b -> maps.stream()
                             .noneMatch(a -> a.get("proName").equals(b.get("proName"))))  // 杩囨护鎺夊湪 maps 涓瓨鍦ㄧ殑鐩稿悓鍏冪礌
                     .collect(Collectors.toList());
+
+
+
             if(!collect.isEmpty()){
                 maps.addAll(collect);
             }
@@ -1815,14 +1818,15 @@
             String tjh = ycxms.get(0).getTjh();
             if(StringUtils.isNotBlank(tjh)){
                 ycxmService.delOrderYcXmJyByTjh(tjh);
-                String szyssy="";
-                StringBuilder builders = new StringBuilder();
+//                String szyssy="";
+//                StringBuilder builders = new StringBuilder();
+//                List<TjOrderYcxm> ycxmList=new ArrayList<>();
                 for (TjOrderYcxm ycxm : ycxms) {
                     ycxm.setJynr(JSONUtil.toJsonStr(ycxm.getMap()));
-                     if(ycxm.getJcxm().contains("鑸掑紶鍘�")||ycxm.getJcxm().contains("鏀剁缉鍘�")){
-                        builders.append(ycxm.getJcxm()).append(ycxm.getJcjg()).append(" ");
-                        szyssy+=builders.toString();
-                    }
+//                     if(ycxm.getJcxm().contains("鑸掑紶鍘�")||ycxm.getJcxm().contains("鏀剁缉鍘�")){
+//                        builders.append(ycxm.getJcxm()).append(ycxm.getJcjg()).append(" ");
+//                        szyssy+=builders.toString();
+//                    }
                 }
                 ycxmService.saveBatch(ycxms);
                 return AjaxResult.success();
diff --git a/ltkj-framework/src/main/java/com/ltkj/framework/aspectj/AsynAspect.java b/ltkj-framework/src/main/java/com/ltkj/framework/aspectj/AsynAspect.java
index 0e11b1f..805a023 100644
--- a/ltkj-framework/src/main/java/com/ltkj/framework/aspectj/AsynAspect.java
+++ b/ltkj-framework/src/main/java/com/ltkj/framework/aspectj/AsynAspect.java
@@ -17,8 +17,8 @@
  *
  * @author zjh<br />
  */
-@Aspect
-@Component
+//@Aspect
+//@Component
 public class AsynAspect {
 
     private static final Logger logger = LoggerFactory.getLogger(AsynAspect.class);

--
Gitblit v1.8.0