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/service/TjSysAsyncServiceImpl.java |  258 ++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 172 insertions(+), 86 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 1d9ee4d..c4ba3ff 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,159 @@
     @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());
+                        ycxmService.remove(wq);
+                        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("/");
+//
+//                            }
+//
+//                        }
+                }
+
+                // 浣跨敤 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 +937,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());
@@ -2205,12 +2278,25 @@
                     dto1.setSqysbm(ysbm);
                     dto1.setMzksbm(dept);
                     dto1.setSjrq(date);
-                    dto1.setCzybm(ysbm);
-                    dto1.setCzyksbm(dept);
-                    dto1.setCflxbm("A");
-                    dto1.setYfbm("1");
+                    String yfbm = configService.selectConfigByKey("chufang_yfbm");
+                    String mzzd = configService.selectConfigByKey("chufang_mzzd");
+                    String czybm = configService.selectConfigByKey("chufang_czybm");
+                    String czyksbm = configService.selectConfigByKey("chufang_czyksbm");
+                    String cflxbm = configService.selectConfigByKey("chufang_cflxbm");
+                    if (czybm.equalsIgnoreCase("N"))
+                        dto1.setCzybm(ysbm);
+                    else dto1.setCzybm(czybm);
+                    if (czyksbm.equalsIgnoreCase("N"))
+                        dto1.setCzyksbm(dept);
+                    else dto1.setCzyksbm(dept);
+                    dto1.setCflxbm(cflxbm);
+                    if (yfbm.equalsIgnoreCase("N"))
+                        dto1.setYfbm("1");
+                    else dto1.setYfbm(yfbm);
                     dto1.setFyts("1");
-                    dto1.setMzzd("");
+                    if (mzzd.equalsIgnoreCase("N"))
+                        dto1.setMzzd("");
+                    else dto1.setMzzd(mzzd);
                     dto1.setDetails(outpinmedicapplyDetilsDtos);
                     AjaxResult result = controller.Outpinmedicapply(dto1);
                     String result1 = getAjaxResult(result);

--
Gitblit v1.8.0