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