diff --git a/docus-webservice/configLog/log.log b/docus-webservice/configLog/log.log index 02da088..1a72e98 100644 --- a/docus-webservice/configLog/log.log +++ b/docus-webservice/configLog/log.log @@ -1,191 +1,336 @@ -2023-10-09 16:57:06,321 INFO (StartupInfoLogger.java:55)- Starting DocusWebserviceApplication using Java 1.8.0_101 on T with PID 508 (D:\WokeCode\WebService\docus-webservice\docus-webservice\target\classes started by Tzr in D:\WokeCode\WebService\docus-webservice\docus-webservice) -2023-10-09 16:57:06,328 INFO (SpringApplication.java:659)- No active profile set, falling back to default profiles: default -2023-10-09 16:57:09,042 INFO (StartupInfoLogger.java:61)- Started DocusWebserviceApplication in 3.189 seconds (JVM running for 4.55) -2023-10-09 16:59:35,604 INFO (TBasicWebService.java:314)- 出院成员信息新增xml +2023-12-26 00:44:17,020 INFO (StartupInfoLogger.java:55)- Starting DocusWebserviceApplication using Java 1.8.0_101 on T with PID 27760 (D:\WokeCode\WebService\docus-webservice\docus-webservice\target\classes started by Tzr in D:\WokeCode\WebService\docus-webservice\docus-webservice) +2023-12-26 00:44:17,025 INFO (SpringApplication.java:659)- No active profile set, falling back to default profiles: default +2023-12-26 00:44:19,876 INFO (StartupInfoLogger.java:61)- Started DocusWebserviceApplication in 3.246 seconds (JVM running for 4.21) +2023-12-26 00:47:07,747 INFO (TBasicWebService.java:92)- 住院成员信息新增xml - - 1 - - 331651 - - 1 - 1 + 444 + + 8877 - 65432111 + 8777 - 123 + 11 - 何德达 + ppp 1 - 123 + 11 - 123 - - 2022-01-01 10: 00: 00 - - 1 + + + 2020-01-04 10:00:00 + + 啊如果 + + 463 + + 634 + + 1 - 1 - - 1 - - 1 + 361658413216845165 + + 1234 + + 哦哦 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 - 1 + 123 - 1 + 123 - 1 + 123 - 1 + 123 - 1 + 123 - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 2022-01-01 10: 00: 00 - - 1 - 1 - 1 - 1234 - 12345 - 1234 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 + 123 + 123456 + -2023-10-09 16:59:35,605 INFO (TBasicWebService.java:542)- 开始解析xml -2023-10-09 16:59:35,844 ERROR (TBasicWebService.java:361)- DISCHARGE_REG方法中错误信息:For input string: "2022-01-01 10: 00: 00" -2023-10-09 17:01:06,154 INFO (TBasicWebService.java:314)- 出院成员信息新增xml - +2023-12-26 00:47:07,748 INFO (TBasicWebService.java:155)- 开始解析xml +2023-12-26 00:47:10,101 ERROR (TBasicWebService.java:217)- 预住院错误信息nested exception is org.apache.ibatis.exceptions.PersistenceException: +### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure + +The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. +### The error may exist in com/docus/webservice/mapper/TBasicMapper.java (best guess) +### The error may involve com.docus.webservice.mapper.TBasicMapper.selectOne +### The error occurred while executing a query +### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure + +The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. +2023-12-26 00:47:42,619 INFO (TBasicWebService.java:92)- 住院成员信息新增xml + + - - 1 + + 444 - 331651 - - 1 + 8877 + + 8777 + + 11 + + ppp + + 1 + + 11 + + + + 2020-01-04 10:00:00 + + 啊如果 + + 463 + + 634 + + 1 + + 361658413216845165 + + 1234 + + 哦哦 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + 123456 + + + + + + +2023-12-26 00:47:42,620 INFO (TBasicWebService.java:155)- 开始解析xml +2023-12-26 00:47:42,709 ERROR (TBasicWebService.java:217)- 预住院错误信息null +2023-12-26 00:47:42,739 INFO (PcmachineServiceImpl.java:90)- --------------异步调用此方法--------------- +2023-12-26 00:47:42,740 INFO (PcmachineServiceImpl.java:91)- 病案对象TBasic(patientId=1739327067581374466, admissTimes=1, inpatientNo=8877, admissId=null, name=ppp, ph=null, sex=null, age=null, ageMonth=null, ageDay=null, idCard=361658413216845165, telphone=null, admissDate=Sat Jan 04 10:00:00 CST 2020, admissDept=null, admissDeptName=null, disDate=null, disDept=123, disDeptName=123, admissDays=null, attending=1234, attendingName=哦哦, mainDiagCode=null, mainDiagName=null, mainOperateCode=null, mainOperateName=null, isDead=null, createTime=Tue Dec 26 00:47:42 CST 2023, updateTime=null, isArchive=null, archiveTime=null, fileSource=1, integrityDesc=null, bColumn1=null, bColumn2=null, bColumn3=null, bColumn4=null, bColumn5=null, bColumn6=null, bColumn7=null, bColumn8=null, bColumn9=null, bColumn10=null, nameSpell=null, sexName=null, jzh=8777, empId=11, visitTypeCode=11, visitTypeName=怕, tcmDiagCode=null, tcmDiagName=null, wardPalce=null, isCancel=null) +2023-12-26 00:47:42,742 INFO (TBasicWebService.java:141)- OUT_HOS_REG返回结果: +0成功 +2023-12-26 00:49:37,280 INFO (StartupInfoLogger.java:55)- Starting DocusWebserviceApplication using Java 1.8.0_101 on T with PID 13080 (D:\WokeCode\WebService\docus-webservice\docus-webservice\target\classes started by Tzr in D:\WokeCode\WebService\docus-webservice\docus-webservice) +2023-12-26 00:49:37,284 INFO (SpringApplication.java:659)- No active profile set, falling back to default profiles: default +2023-12-26 00:49:40,158 INFO (StartupInfoLogger.java:61)- Started DocusWebserviceApplication in 3.42 seconds (JVM running for 5.092) +2023-12-26 00:50:06,211 INFO (TBasicWebService.java:92)- 住院成员信息新增xml + + + - 1 + 444 + + 9966 - 65432111 + 996 - 123 + 11 - 何德达 + aaa 1 - 123 + 11 - 123 - - 2022-01-01 10:00:00 - - 1 + + + 2020-01-04 10:00:00 + + 啊如果 + + 463 + + 634 + + 1 - 1 - - 1 - - 1 + 361658413216845165 + + 1234 + + 哦哦 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 - 1 + 123 - 1 + 123 - 1 + 123 - 1 + 123 - 1 + 123 - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 2022-01-01 10:00:00 - - 1 - 1 - 1 - 1234 - 12345 - 1234 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 + 123 + 112233 + -2023-10-09 17:01:06,154 INFO (TBasicWebService.java:542)- 开始解析xml -2023-10-09 17:01:06,192 INFO (TBasicWebService.java:330)- 65432111取消入院成功! -2023-10-09 17:01:06,193 INFO (TBasicWebService.java:368)- DISCHARGE_REG返回结果: + +2023-12-26 00:50:06,212 INFO (TBasicWebService.java:155)- 开始解析xml +2023-12-26 00:52:18,344 ERROR (TBasicWebService.java:217)- 预住院错误信息null +2023-12-26 00:52:18,419 INFO (PcmachineServiceImpl.java:90)- --------------异步调用此方法--------------- +2023-12-26 00:52:18,420 INFO (PcmachineServiceImpl.java:91)- 病案对象TBasic(patientId=1739328223883853825, admissTimes=1, inpatientNo=9966, admissId=null, name=aaa, ph=null, sex=null, age=null, ageMonth=null, ageDay=null, idCard=361658413216845165, telphone=null, admissDate=Sat Jan 04 10:00:00 CST 2020, admissDept=null, admissDeptName=null, disDate=null, disDept=123, disDeptName=123, admissDays=null, attending=1234, attendingName=哦哦, mainDiagCode=null, mainDiagName=null, mainOperateCode=null, mainOperateName=null, isDead=null, createTime=Tue Dec 26 00:52:18 CST 2023, updateTime=null, isArchive=null, archiveTime=null, fileSource=1, integrityDesc=null, bColumn1=null, bColumn2=null, bColumn3=null, bColumn4=null, bColumn5=null, bColumn6=null, bColumn7=null, bColumn8=null, bColumn9=null, bColumn10=null, nameSpell=null, sexName=null, jzh=996, empId=11, visitTypeCode=11, visitTypeName=怕, tcmDiagCode=null, tcmDiagName=null, wardPalce=null, isCancel=null) +2023-12-26 00:52:18,425 INFO (TBasicWebService.java:141)- OUT_HOS_REG返回结果: 0成功 +2023-12-26 00:52:33,436 INFO (StartupInfoLogger.java:55)- Starting DocusWebserviceApplication using Java 1.8.0_101 on T with PID 37252 (D:\WokeCode\WebService\docus-webservice\docus-webservice\target\classes started by Tzr in D:\WokeCode\WebService\docus-webservice\docus-webservice) +2023-12-26 00:52:33,438 INFO (SpringApplication.java:659)- No active profile set, falling back to default profiles: default +2023-12-26 00:52:36,305 INFO (StartupInfoLogger.java:61)- Started DocusWebserviceApplication in 3.294 seconds (JVM running for 4.555) +2023-12-26 00:52:41,299 INFO (TBasicWebService.java:92)- 住院成员信息新增xml + + + + + 444 + + 9966 + + 996 + + 11 + + aaa + + 1 + + 11 + + + + 2020-01-04 10:00:00 + + 啊如果 + + 463 + + 634 + + 1 + + 361658413216845165 + + 1234 + + 哦哦 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + + 123 + 112233 + + + + + + +2023-12-26 00:52:41,300 INFO (TBasicWebService.java:155)- 开始解析xml +2023-12-26 00:52:57,845 ERROR (TBasicWebService.java:212)- 正式住院: 996 预住院或正式住院患者不存在! +2023-12-26 00:53:12,590 INFO (TBasicServiceImpl.java:280)- selectTBasic耗时---------44 +2023-12-26 00:53:13,143 INFO (TBasicServiceImpl.java:286)- tBasicMapper.update耗时----------552 diff --git a/docus-webservice/dataConfig/SystemCollectConfig b/docus-webservice/dataConfig/SystemCollectConfig new file mode 100644 index 0000000..8de2311 --- /dev/null +++ b/docus-webservice/dataConfig/SystemCollectConfig @@ -0,0 +1,27 @@ +{ + "sealCollectClassify": "SEAL_COLLECT", + "sealCollectConfigs":[ + { + "desc":"封存病案-扫描视图报告采集", + "url":"http://127.0.0.1:9316/gdszy/patscan/collect/seal/collectBySealId" + },{ + "desc":"封存病案-Lis检验报告采集", + "url":"http://127.0.0.1:9315/collect/gdszy/lisBySealId" + },{ + "desc":"封存病案-pacs检查报告采集", + "url":"http://127.0.0.1:9303/seal/collect/pacs" + },{ + "desc":"封存病案-内镜报告采集", + "url":"http://127.0.0.1:9304/seal/collect/endoscopy" + },{ + "desc":"封存病案-心电报告采集", + "url":"http://127.0.0.1:9305/seal/collect/ecg" + },{ + "desc":"封存病案-重症报告采集", + "url":"http://127.0.0.1:9409/seal/collect/icu" + },{ + "desc":"封存病案-手麻报告采集", + "url":"http://127.0.0.1:9306/seal/collect/surgicalAnesthesia" + } + ] +} \ No newline at end of file diff --git a/docus-webservice/src/main/java/com/docus/webservice/config/ThreadPoolConfig.java b/docus-webservice/src/main/java/com/docus/webservice/config/ThreadPoolConfig.java new file mode 100644 index 0000000..988a6ae --- /dev/null +++ b/docus-webservice/src/main/java/com/docus/webservice/config/ThreadPoolConfig.java @@ -0,0 +1,31 @@ +package com.docus.webservice.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * @author YongBin Wen + * @date 2024/1/15 13:36 + */ + +@Configuration +public class ThreadPoolConfig { + + public ThreadPoolConfig() { + } + + @Bean + public ThreadPoolExecutor threadPoolExecutor() { + return new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(), + (int)((double)Runtime.getRuntime().availableProcessors() / 0.1), + 60L, TimeUnit.SECONDS, + new LinkedBlockingQueue(Runtime.getRuntime().availableProcessors()), + Executors.defaultThreadFactory(), + new ThreadPoolExecutor.CallerRunsPolicy()); + } +} diff --git a/docus-webservice/src/main/java/com/docus/webservice/dto/SystemCollectConfig.java b/docus-webservice/src/main/java/com/docus/webservice/dto/SystemCollectConfig.java new file mode 100644 index 0000000..dbd0a8d --- /dev/null +++ b/docus-webservice/src/main/java/com/docus/webservice/dto/SystemCollectConfig.java @@ -0,0 +1,65 @@ +package com.docus.webservice.dto; + +import lombok.Data; + +import java.util.List; + +/** + * 系统采集配置 + * @author YongBin Wen + * @date 2024/1/15 11:33 + */ +@Data +public class SystemCollectConfig { + /** + * 分类用途-封存病案 + */ + private String sealCollectClassify; + + + /** + * 配置内容 + */ + private List sealCollectConfigs; + + @Data + public static class CollectConfig { + private String desc; + private String url; + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + } + + public enum Classify { + /** + * 系统采集配置分类-封存病案采集 + */ + SEAL_COLLECT("SEAL_COLLECT"); + /** + * 系统采集分类 + */ + final String classify; + + Classify(String classify) { + this.classify = classify; + } + public String getClassify() { + return classify; + } + + } +} diff --git a/docus-webservice/src/main/java/com/docus/webservice/handler/ITBasicWebService.java b/docus-webservice/src/main/java/com/docus/webservice/handler/ITBasicWebService.java index 653a0a1..72bf448 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/handler/ITBasicWebService.java +++ b/docus-webservice/src/main/java/com/docus/webservice/handler/ITBasicWebService.java @@ -6,43 +6,43 @@ import javax.jws.WebService; @WebService public interface ITBasicWebService { - /** - * 住院患者信息新增 - * @param tbasic - * @return - */ - @WebMethod - String OUT_HOS_REG(String tbasic); - - /** - * 住院患者修改 - * @param tbasic - * @return - */ - @WebMethod - String OUT_HOS_CAN(String tbasic); - - /** - * 出院患者信息新增 - * @param tbasic - * @return - */ - @WebMethod - String DISCHARGE_REG(String tbasic); +// /** +// * 住院患者信息新增 +// * @param tbasic +// * @return +// */ +// @WebMethod +// String OUT_HOS_REG(String tbasic); +// +// /** +// * 住院患者修改 +// * @param tbasic +// * @return +// */ +// @WebMethod +// String OUT_HOS_CAN(String tbasic); +// +// /** +// * 出院患者信息新增 +// * @param tbasic +// * @return +// */ +// @WebMethod +// String DISCHARGE_REG(String tbasic); +// +// /** +// * 出院患者修改 +// * @param tbasic +// * @return +// */ +// @WebMethod +// String DISCHARGE_CAN(String tbasic); /** - * 出院患者修改 - * @param tbasic + * 病案封存 + * @param tseal * @return */ @WebMethod - String DISCHARGE_CAN(String tbasic); - -// /** -// * 病案封存 -// * @param tseal -// * @return -// */ -// @WebMethod -// String MEDICAL_RECORD_SEAL(String tseal); + String MEDICAL_RECORD_SEAL(String tseal); } diff --git a/docus-webservice/src/main/java/com/docus/webservice/handler/TBasicWebService.java b/docus-webservice/src/main/java/com/docus/webservice/handler/TBasicWebService.java index 7597591..0eeb1fb 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/handler/TBasicWebService.java +++ b/docus-webservice/src/main/java/com/docus/webservice/handler/TBasicWebService.java @@ -4,6 +4,7 @@ package com.docus.webservice.handler; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.docus.webservice.dto.SelectColumn; +import com.docus.webservice.dto.SystemCollectConfig; import com.docus.webservice.entity.*; import com.docus.webservice.enums.Codes; @@ -17,6 +18,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import javax.annotation.Resource; import javax.jws.WebService; import java.io.ByteArrayInputStream; import java.io.File; @@ -24,6 +26,9 @@ import java.io.IOException; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ThreadPoolExecutor; @WebService public class TBasicWebService implements ITBasicWebService { @@ -53,6 +58,8 @@ public class TBasicWebService implements ITBasicWebService { private TSealMapper tSealMapper; private Logger log = LogManager.getLogger(TBasicWebService.class); + @Resource + private ThreadPoolExecutor threadPoolExecutor; /** * 获取jar包所在位置 @@ -81,85 +88,428 @@ public class TBasicWebService implements ITBasicWebService { mrReportErrorService.save(mrReportError); } +// /** +// * 住院成员信息新增 +// * +// * @param tbasic +// * @return +// */ +// @Override +// public String OUT_HOS_REG(String tbasic) { +// log.info("住院成员信息新增xml" + tbasic); +// try { +// //解析xml +// HashMap tBasicMap = new HashMap<>(); +// HashMap tBasicSubMap = new HashMap<>(); +// HashMap dateMap = new HashMap<>(); +// // Date disDate=null; +// parseXml(tbasic, tBasicMap, tBasicSubMap, dateMap); +// //处理业务 +// TBasic tBasic; +// if (tBasicMap != null && tBasicMap.size() > 0) { +// tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); +//// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){ +//// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead")); +//// tBasic.setIsDead(isDead); +//// } +// //特殊处理出院时间 没有就取当前时间 +// Date currentDate = new Date(); +//// if(tBasic.getDisDate()==null){ +//// tBasic.setDisDate(currentDate); +//// } +// //tBasic.setCreateTime(currentDate); +// tBasic.setCreateTime(currentDate); +// itBasicService.savaAndSub(tBasic, tBasicSubMap,String.valueOf(dateMap.get("preJzh"))); +// // this.saveAndCall(tBasic); +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// SimpleDateFormat sdf1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.US); +// if (dateMap.size() > 1) { +// Date admissDate = sdf1.parse(String.valueOf(dateMap.get("admissDate"))); +// Date disDate = sdf1.parse(String.valueOf(dateMap.get("disDate"))); +// tBasic.setAdmissDate(sdf.parse(sdf.format(admissDate))); +// tBasic.setDisDate(sdf.parse(sdf.format(disDate))); +// tBasic.setInpatientNo(dateMap.get("inpatientNo").toString()); +// } +// pcmachineService.saveAndCall(tBasic); +// } else { +// insertLog(tbasic); +// log.info("请提供完整的xml"); +// return ResultUtils.fail("请提供完整的xml"); +// } +// } catch (RuntimeException e) { +// insertLog(tbasic); +// log.error("OUT_HOS_REG方法中错误信息:" + e.getMessage()); +// return ResultUtils.fail(e.getMessage()); +// } catch (Exception e) { +// e.printStackTrace(); +// log.error("OUT_HOS_REG方法中错误信息:" + e.getMessage()); +// return ResultUtils.fail(e.getMessage()); +// } +// log.info("OUT_HOS_REG返回结果:" + ResultUtils.success().asXML()); +// return ResultUtils.success().asXML(); +// } +// +// +// /** +// * 住院解析xml +// * +// * @param tbasic +// * @param tBasicMap +// * @param tBasicSubMap +// */ +// private void parseXml(String tbasic, HashMap tBasicMap, HashMap tBasicSubMap, HashMap dateMap) { +// XmlUtils xmlUtils = null; +// log.info("开始解析xml"); +// try { +// xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8"))); +// } catch (UnsupportedEncodingException e) { +// e.printStackTrace(); +// } +// //解析json映射文件 +// String json = JsonUtils.readJsonFile(CurrentPath() + Codes.JSON_ADDRESS.getMessage()); +// Map jsonMap = JSON.parseObject(json, Map.class); +// +// List selectColumns = JSON.parseArray(String.valueOf(jsonMap.get(Codes.SELECT_COLUMNS.getMessage())), SelectColumn.class); +// String value; +// for (SelectColumn selectColumn : selectColumns) { +// try { +// value = xmlUtils.getElementText(selectColumn.getQualityColumn()) == null ? null : String.valueOf(xmlUtils.getElementText(selectColumn.getQualityColumn())); +// } catch (RuntimeException e) { +// String message = e.getMessage(); +// log.error("解析xml出现:" + message); +// throw new RuntimeException(message); +// } +// if (StringUtils.isBlank(value)) { +// if (selectColumn.getByNull() == 0) { +// insertLog(tbasic); +// log.error(selectColumn.getQualityColumn() + " 字段不能为空值"); +// throw new RuntimeException(selectColumn.getQualityColumn() + " 字段不能为空值"); +// } else { +// continue; +// } +// } else { +// if (selectColumn.getTableName().equals("t_basic")) { +// tBasicMap.put(selectColumn.getColumnName(), value); +// } +// if (selectColumn.getTableName().equals("t_basic_sub")) { +// tBasicSubMap.put(selectColumn.getColumnName(), value); +// } +// } +// } +// try { +// String preJzh = xmlUtils.getElementText("PRE_INHOSP_NO"); +// System.err.println(preJzh); +// if (null != preJzh && !"".equals(preJzh)) { +// //预住院患者记录 +// TBasic tBasic = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", preJzh)); +// //正式住院患者记录 +// TBasic tBasic1 = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasicMap.get("jzh"))); +// if (null != tBasic && null != tBasic1) { +// dateMap.put("admissDate", tBasic.getAdmissDate().toString()); +// dateMap.put("disDate", tBasic1.getAdmissDate().toString()); +// dateMap.put("inpatientNo", tBasic.getInpatientNo()); +// //将预住院患者病历文件patient_id改为正式住院的patient_id,合并病历 +// int i = tScanAssortMapper.updateByPatientId(tBasic1.getPatientId(), tBasic.getPatientId()); +// if (i <= 0) { +// log.info("当前预住院没有文件!"); +// }else { +// log.info( tBasic1.getJzh()+"本次预住院合并"+i+"份报告"); +// } +// } else { +// log.error("正式住院: "+tBasicMap.get("jzh") + " 预住院或正式住院患者不存在!"); +// } +// } +// dateMap.put("preJzh",preJzh); +// } catch (Exception e) { +// log.error("预住院错误信息{}", e.getMessage()); +// } +// +// } +// +// /** +// * 住院成员信息修改 +// * +// * @param tbasic +// * @return +// */ +// @Override +// public String OUT_HOS_CAN(String tbasic) { +// log.info("住院成员信息修改xml" + tbasic); +// try { +// long l = System.currentTimeMillis(); +// HashMap tBasicMap = new HashMap<>(); +// HashMap tBasicSubMap = new HashMap<>(); +// HashMap dateMap = new HashMap<>(); +// //parseXml(tbasic, tBasicMap, tBasicSubMap); +// parseXml(tbasic, tBasicMap, tBasicSubMap, dateMap); +// TBasic tBasic; +// XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8"))); +// String elementText = xmlUtils.getElementText("IS_ADM_CANCEL"); +// if (elementText.equals("1")) { +// tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); +// tBasic.setIsCancel("1"); +// int update = tBasicMapper.update(tBasic, new QueryWrapper().eq("jzh", tBasic.getJzh())); +// if (update > 0) { +// log.info(tBasic.getJzh() + "取消入院成功!"); +// } +// +// } else { +// long l1 = System.currentTimeMillis(); +// log.info("解析xml时间------" + (l1 - l)); +// //处理业务 +// long l2 = System.currentTimeMillis(); +// +// if (tBasicMap != null && tBasicMap.size() > 0) { +// long l3 = System.currentTimeMillis(); +// tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); +//// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){ +//// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead")); +//// tBasic.setIsDead(isDead); +//// } +// long l4 = System.currentTimeMillis(); +// log.info("获取tBasic对象时间----------" + (l4 - l3)); +// if (StringUtils.isBlank(tBasic.getEmpId())) { +// insertLog(tbasic); +// log.info("emp_id字段不能为空值"); +// return ResultUtils.fail("emp_id字段不能为空值"); +// } +// long l5 = System.currentTimeMillis(); +// tBasic.setUpdateTime(new Date()); +// try { +// itBasicService.updateAndSub(tBasic, tBasicSubMap,String.valueOf(dateMap.get("preJzh"))); +//// this.saveAndCall(tBasic); +// long l6 = System.currentTimeMillis(); +// log.info("update耗时----------" + (l6 - l5)); +// long l7 = System.currentTimeMillis(); +// tBasic.setAdmissDate(dateMap.get("admissDate")); +// tBasic.setDisDate(dateMap.get("disDate")); +// pcmachineService.saveAndCall(tBasic); +// long l8 = System.currentTimeMillis(); +// log.info("saveAndCall耗时-------" + (l8 - l7)); +// } catch (RuntimeException e) { +// insertLog(tbasic); +// e.printStackTrace(); +// log.error("OUT_HOS_CAN方法中错误信息:" + e.getMessage()); +// return ResultUtils.fail(e.getMessage()); +// } +// } else { +// insertLog(tbasic); +// return ResultUtils.fail("请提供完整的xml"); +// } +// long l3 = System.currentTimeMillis(); +// log.info("业务处理时间------------" + (l3 - l2)); +// } +// +// } catch (Exception e) { +// e.printStackTrace(); +// log.error("OUT_HOS_CAN方法中错误信息:" + e.getMessage()); +// return ResultUtils.fail(e.getMessage()); +// } +// log.info("OUT_HOS_CAN方法运行结果:" + ResultUtils.success().asXML()); +// return ResultUtils.success().asXML(); +// } +// +// +// /** +// * 出院成员信息新增 +// * +// * @param tbasic +// * @return +// */ +// @Override +// public String DISCHARGE_REG(String tbasic) { +// log.info("出院成员信息新增xml" + tbasic); +// try { +// //解析xml +// HashMap tBasicMap = new HashMap<>(); +// HashMap tBasicSubMap = new HashMap<>(); +// HashMap tBasicExtendMap = new HashMap<>(); +// OutParseXml(tbasic, tBasicMap, tBasicSubMap, tBasicExtendMap); +// //处理业务 +// TBasic tBasic; +// XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8"))); +//// String elementText = xmlUtils.getElementText("IS_ADM_CANCEL"); +//// if (elementText.equals("1")) { +//// tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); +//// tBasic.setIsCancel("1"); +//// int update = tBasicMapper.update(tBasic, new QueryWrapper().eq("jzh", tBasic.getJzh())); +//// if (update > 0) { +//// log.info(tBasic.getJzh() + "取消入院成功!"); +//// } +//// +//// }else { +// TBasicExtend tBasicExtend; +// if (tBasicMap != null && tBasicMap.size() > 0) { +// tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); +// tBasicExtend = JSON.parseObject(JSON.toJSONString(tBasicExtendMap), TBasicExtend.class); +// tBasicExtend.setPatientId(tBasic.getPatientId()); +//// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){ +//// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead")); +//// tBasic.setIsDead(isDead); +//// } +// //特殊处理出院时间 没有就取当前时间 +// +//// if(tBasic.getDisDate()==null){ +//// tBasic.setDisDate(currentDate); +//// } +// //tBasic.setCreateTime(currentDate); +// +// itBasicService.OutSavaAndSub(tBasic, tBasicSubMap, tBasicExtend); +// // this.saveAndCall(tBasic); +// pcmachineService.saveAndCallOut(tBasic); +// } else { +// insertLog(tbasic); +// log.info("请提供完整的xml"); +// return ResultUtils.fail("请提供完整的xml"); +// } +// // } +// } catch (RuntimeException e) { +// insertLog(tbasic); +// log.error("DISCHARGE_REG方法中错误信息:" + e.getMessage()); +// return ResultUtils.fail(e.getMessage()); +// } catch (Exception e) { +// e.printStackTrace(); +// log.error("DISCHARGE_REG方法中错误信息:" + e.getMessage()); +// return ResultUtils.fail(e.getMessage()); +// } +// log.info("DISCHARGE_REG返回结果:" + ResultUtils.success().asXML()); +// return ResultUtils.success().asXML(); +// } +// +// /** +// * 出院成员信息修改 +// * +// * @param tbasic +// * @return +// */ +// @Override +// public String DISCHARGE_CAN(String tbasic) { +// log.info("出院成员信息修改xml" + tbasic); +// +// try { +// +// long l = System.currentTimeMillis(); +// HashMap tBasicMap = new HashMap<>(); +// HashMap tBasicSubMap = new HashMap<>(); +// HashMap tBasicExtendMap = new HashMap<>(); +// TBasic tBasic; +// TBasicExtend tBasicExtend; +// OutParseXml(tbasic, tBasicMap, tBasicSubMap, tBasicExtendMap); +// long l1 = System.currentTimeMillis(); +// log.info("解析xml时间------" + (l1 - l)); +// //处理业务 +// long l2 = System.currentTimeMillis(); +// +// if (tBasicMap != null && tBasicMap.size() > 0) { +// long l3 = System.currentTimeMillis(); +// tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); +// tBasicExtend = JSON.parseObject(JSON.toJSONString(tBasicExtendMap), TBasicExtend.class); +// tBasicExtend.setPatientId(tBasic.getPatientId()); +//// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){ +//// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead")); +//// tBasic.setIsDead(isDead); +//// } +// long l4 = System.currentTimeMillis(); +// log.info("获取tBasic对象时间----------" + (l4 - l3)); +// if (StringUtils.isBlank(tBasic.getJzh())) { +// insertLog(tbasic); +// log.info("INHOSP_NO字段不能为空值"); +// return ResultUtils.fail("INHOSP_NO字段不能为空值"); +// } +// long l5 = System.currentTimeMillis(); +// tBasic.setUpdateTime(new Date()); +// try { +// itBasicService.OutUpdateAndSub(tBasic, tBasicSubMap, tBasicExtend); +//// this.saveAndCall(tBasic); +// long l6 = System.currentTimeMillis(); +// log.info("update耗时----------" + (l6 - l5)); +// long l7 = System.currentTimeMillis(); +// pcmachineService.saveAndCallOut(tBasic); +// long l8 = System.currentTimeMillis(); +// log.info("saveAndCall耗时-------" + (l8 - l7)); +// } catch (RuntimeException e) { +// insertLog(tbasic); +// e.printStackTrace(); +// log.error("DISCHARGE_CAN方法中错误信息:" + e.getMessage()); +// return ResultUtils.fail(e.getMessage()); +// } +// } else { +// insertLog(tbasic); +// return ResultUtils.fail("请提供完整的xml"); +// } +// long l3 = System.currentTimeMillis(); +// log.info("业务处理时间------------" + (l3 - l2)); +// } catch (Exception e) { +// e.printStackTrace(); +// log.error("DISCHARGE_CAN方法中错误信息:" + e.getMessage()); +// return ResultUtils.fail(e.getMessage()); +// } +// log.info("DISCHARGE_CAN方法运行结果:" + ResultUtils.success().asXML()); +// return ResultUtils.success().asXML(); +// } +// /** - * 住院成员信息新增 + * 病案封存 * - * @param tbasic + * @param tseal * @return */ @Override - public String OUT_HOS_REG(String tbasic) { - log.info("住院成员信息新增xml" + tbasic); + public String MEDICAL_RECORD_SEAL(String tseal) { + log.info("病案封存" + tseal); try { //解析xml - HashMap tBasicMap = new HashMap<>(); - HashMap tBasicSubMap = new HashMap<>(); - HashMap dateMap = new HashMap<>(); - // Date disDate=null; - parseXml(tbasic, tBasicMap, tBasicSubMap, dateMap); + HashMap tSealMap = new HashMap<>(); + SealParseXml(tseal, tSealMap); //处理业务 - TBasic tBasic; - if (tBasicMap != null && tBasicMap.size() > 0) { - tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); -// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){ -// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead")); -// tBasic.setIsDead(isDead); -// } - //特殊处理出院时间 没有就取当前时间 - Date currentDate = new Date(); -// if(tBasic.getDisDate()==null){ -// tBasic.setDisDate(currentDate); -// } - //tBasic.setCreateTime(currentDate); - tBasic.setCreateTime(currentDate); - itBasicService.savaAndSub(tBasic, tBasicSubMap,String.valueOf(dateMap.get("preJzh"))); - // this.saveAndCall(tBasic); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - SimpleDateFormat sdf1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.US); - if (dateMap.size() > 1) { - Date admissDate = sdf1.parse(String.valueOf(dateMap.get("admissDate"))); - Date disDate = sdf1.parse(String.valueOf(dateMap.get("disDate"))); - tBasic.setAdmissDate(sdf.parse(sdf.format(admissDate))); - tBasic.setDisDate(sdf.parse(sdf.format(disDate))); - tBasic.setInpatientNo(dateMap.get("inpatientNo").toString()); + TSeal tSeal; + if (tSealMap != null && tSealMap.size() > 0) { + tSeal = JSON.parseObject(JSON.toJSONString(tSealMap), TSeal.class); + int insert = tSealMapper.insert(tSeal); + if (insert > 0){ + log.info(tSeal.getJzh()+"----封存信息插入成功!"); + }else { + log.info(tSeal.getJzh()+"----封存信息插入失败!"); } - pcmachineService.saveAndCall(tBasic); + sealCollect(tSeal.getSealId()); } else { - insertLog(tbasic); + insertLog(tseal); log.info("请提供完整的xml"); return ResultUtils.fail("请提供完整的xml"); } } catch (RuntimeException e) { - insertLog(tbasic); - log.error("OUT_HOS_REG方法中错误信息:" + e.getMessage()); + insertLog(tseal); + log.error("MEDICAL_RECORD_SEAL方法中错误信息:" + e.getMessage()); return ResultUtils.fail(e.getMessage()); } catch (Exception e) { e.printStackTrace(); - log.error("OUT_HOS_REG方法中错误信息:" + e.getMessage()); + log.error("MEDICAL_RECORD_SEAL中错误信息:" + e.getMessage()); return ResultUtils.fail(e.getMessage()); } - log.info("OUT_HOS_REG返回结果:" + ResultUtils.success().asXML()); + log.info("MEDICAL_RECORD_SEAL返回结果:" + ResultUtils.success().asXML()); return ResultUtils.success().asXML(); } - - /** - * 住院解析xml - * - * @param tbasic - * @param tBasicMap - * @param tBasicSubMap +// * 封存解析xml +// * +// * @param tSeal +// * @param tSealMap */ - private void parseXml(String tbasic, HashMap tBasicMap, HashMap tBasicSubMap, HashMap dateMap) { + private void SealParseXml(String tSeal, HashMap tSealMap) { XmlUtils xmlUtils = null; log.info("开始解析xml"); try { - xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8"))); + xmlUtils = new XmlUtils(new ByteArrayInputStream(tSeal.getBytes("UTF-8"))); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } + + if (StringUtils.isBlank(xmlUtils.getElementText("SEAL_ID"))){ + log.error("SEAL_ID 字段不能为空值"); + throw new RuntimeException("SEAL_ID 字段不能为空值"); + } //解析json映射文件 - String json = JsonUtils.readJsonFile(CurrentPath() + Codes.JSON_ADDRESS.getMessage()); + String json = JsonUtils.readJsonFile(CurrentPath() + Codes.JSON_SEAL_ADDRESS.getMessage()); Map jsonMap = JSON.parseObject(json, Map.class); List selectColumns = JSON.parseArray(String.valueOf(jsonMap.get(Codes.SELECT_COLUMNS.getMessage())), SelectColumn.class); @@ -174,334 +524,92 @@ public class TBasicWebService implements ITBasicWebService { } if (StringUtils.isBlank(value)) { if (selectColumn.getByNull() == 0) { - insertLog(tbasic); + insertLog(tSeal); log.error(selectColumn.getQualityColumn() + " 字段不能为空值"); throw new RuntimeException(selectColumn.getQualityColumn() + " 字段不能为空值"); } else { continue; } } else { - if (selectColumn.getTableName().equals("t_basic")) { - tBasicMap.put(selectColumn.getColumnName(), value); - } - if (selectColumn.getTableName().equals("t_basic_sub")) { - tBasicSubMap.put(selectColumn.getColumnName(), value); + if (selectColumn.getTableName().equals("t_seal")) { + tSealMap.put(selectColumn.getColumnName(), value); } } } - try { - String preJzh = xmlUtils.getElementText("PRE_INHOSP_NO"); - System.err.println(preJzh); - if (null != preJzh && !"".equals(preJzh)) { - //预住院患者记录 - TBasic tBasic = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", preJzh)); - //正式住院患者记录 - TBasic tBasic1 = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasicMap.get("jzh"))); - if (null != tBasic && null != tBasic1) { - dateMap.put("admissDate", tBasic.getAdmissDate().toString()); - dateMap.put("disDate", tBasic1.getAdmissDate().toString()); - dateMap.put("inpatientNo", tBasic.getInpatientNo()); - //将预住院患者病历文件patient_id改为正式住院的patient_id,合并病历 - int i = tScanAssortMapper.updateByPatientId(tBasic1.getPatientId(), tBasic.getPatientId()); - if (i <= 0) { - log.info("当前预住院没有文件!"); - }else { - log.info( tBasic1.getJzh()+"本次预住院合并"+i+"份报告"); - } - } else { - log.error("正式住院: "+tBasic1.getJzh() + " 预住院或正式住院患者不存在!"); - } - } - dateMap.put("preJzh",preJzh); - } catch (Exception e) { - log.error("预住院错误信息{}", e.getMessage()); - } - } - /** - * 住院成员信息修改 - * - * @param tbasic - * @return - */ - @Override - public String OUT_HOS_CAN(String tbasic) { - log.info("住院成员信息修改xml" + tbasic); + private void sealCollect(String sealId) { + final String systemCollectConfigFileName = "dataConfig" + File.separator + "SystemCollectConfig"; + List sealCollectConfigs; try { - long l = System.currentTimeMillis(); - HashMap tBasicMap = new HashMap<>(); - HashMap tBasicSubMap = new HashMap<>(); - HashMap dateMap = new HashMap<>(); - //parseXml(tbasic, tBasicMap, tBasicSubMap); - parseXml(tbasic, tBasicMap, tBasicSubMap, dateMap); - TBasic tBasic; - XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8"))); - String elementText = xmlUtils.getElementText("IS_ADM_CANCEL"); - if (elementText.equals("1")) { - tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); - tBasic.setIsCancel("1"); - int update = tBasicMapper.update(tBasic, new QueryWrapper().eq("jzh", tBasic.getJzh())); - if (update > 0) { - log.info(tBasic.getJzh() + "取消入院成功!"); - } + String configJson = FileUtils.readJsonFromCurrentProject(systemCollectConfigFileName); - } else { - long l1 = System.currentTimeMillis(); - log.info("解析xml时间------" + (l1 - l)); - //处理业务 - long l2 = System.currentTimeMillis(); - - if (tBasicMap != null && tBasicMap.size() > 0) { - long l3 = System.currentTimeMillis(); - tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); -// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){ -// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead")); -// tBasic.setIsDead(isDead); -// } - long l4 = System.currentTimeMillis(); - log.info("获取tBasic对象时间----------" + (l4 - l3)); - if (StringUtils.isBlank(tBasic.getEmpId())) { - insertLog(tbasic); - log.info("emp_id字段不能为空值"); - return ResultUtils.fail("emp_id字段不能为空值"); - } - long l5 = System.currentTimeMillis(); - tBasic.setUpdateTime(new Date()); - try { - itBasicService.updateAndSub(tBasic, tBasicSubMap,String.valueOf(dateMap.get("preJzh"))); -// this.saveAndCall(tBasic); - long l6 = System.currentTimeMillis(); - log.info("update耗时----------" + (l6 - l5)); - long l7 = System.currentTimeMillis(); - tBasic.setAdmissDate(dateMap.get("admissDate")); - tBasic.setDisDate(dateMap.get("disDate")); - pcmachineService.saveAndCall(tBasic); - long l8 = System.currentTimeMillis(); - log.info("saveAndCall耗时-------" + (l8 - l7)); - } catch (RuntimeException e) { - insertLog(tbasic); - e.printStackTrace(); - log.error("OUT_HOS_CAN方法中错误信息:" + e.getMessage()); - return ResultUtils.fail(e.getMessage()); - } - } else { - insertLog(tbasic); - return ResultUtils.fail("请提供完整的xml"); + SystemCollectConfig systemCollectConfig = JSON.parseObject(configJson, SystemCollectConfig.class); + String sealCollectClassify = systemCollectConfig.getSealCollectClassify(); + if (!SystemCollectConfig.Classify.SEAL_COLLECT.getClassify().equals(sealCollectClassify)) { + throw new RuntimeException("封存病案采集配置未配置!"); + } + sealCollectConfigs = systemCollectConfig.getSealCollectConfigs(); + for (SystemCollectConfig.CollectConfig config : sealCollectConfigs) { + if (StringUtils.isBlank(config.getDesc()) || StringUtils.isBlank(config.getUrl())) { + throw new RuntimeException("封存病案采集配置中描述和地址不能为空!"); } - long l3 = System.currentTimeMillis(); - log.info("业务处理时间------------" + (l3 - l2)); } - - } catch (Exception e) { - e.printStackTrace(); - log.error("OUT_HOS_CAN方法中错误信息:" + e.getMessage()); - return ResultUtils.fail(e.getMessage()); + } catch (RuntimeException runtimeException) { + log.error(runtimeException.getMessage(), runtimeException); + return; + } catch (Exception ex) { + log.error("封存病案获取采集配置出现未知错误!", ex); + return; } - log.info("OUT_HOS_CAN方法运行结果:" + ResultUtils.success().asXML()); - return ResultUtils.success().asXML(); - } - - - /** - * 出院成员信息新增 - * - * @param tbasic - * @return - */ - @Override - public String DISCHARGE_REG(String tbasic) { - log.info("出院成员信息新增xml" + tbasic); - try { - //解析xml - HashMap tBasicMap = new HashMap<>(); - HashMap tBasicSubMap = new HashMap<>(); - HashMap tBasicExtendMap = new HashMap<>(); - OutParseXml(tbasic, tBasicMap, tBasicSubMap, tBasicExtendMap); - //处理业务 - TBasic tBasic; - XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8"))); - String elementText = xmlUtils.getElementText("IS_ADM_CANCEL"); - if (elementText.equals("1")) { - tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); - tBasic.setIsCancel("1"); - int update = tBasicMapper.update(tBasic, new QueryWrapper().eq("jzh", tBasic.getJzh())); - if (update > 0) { - log.info(tBasic.getJzh() + "取消入院成功!"); - } - - }else { - TBasicExtend tBasicExtend; - if (tBasicMap != null && tBasicMap.size() > 0) { - tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); - tBasicExtend = JSON.parseObject(JSON.toJSONString(tBasicExtendMap), TBasicExtend.class); - tBasicExtend.setPatientId(tBasic.getPatientId()); -// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){ -// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead")); -// tBasic.setIsDead(isDead); -// } - //特殊处理出院时间 没有就取当前时间 - -// if(tBasic.getDisDate()==null){ -// tBasic.setDisDate(currentDate); -// } - //tBasic.setCreateTime(currentDate); - - itBasicService.OutSavaAndSub(tBasic, tBasicSubMap, tBasicExtend); - // this.saveAndCall(tBasic); - pcmachineService.saveAndCallOut(tBasic); - } else { - insertLog(tbasic); - log.info("请提供完整的xml"); - return ResultUtils.fail("请提供完整的xml"); - } + // 添加封存采集任务的容器 + List> completableFutureList = new CopyOnWriteArrayList<>(); + for (SystemCollectConfig.CollectConfig config : sealCollectConfigs) { + CompletableFuture completableFuture = CompletableFuture.runAsync(() -> { + sealCollect(sealId, config); + }, threadPoolExecutor); + completableFutureList.add(completableFuture); + } + // 封存采集任务的容器不为空,阻塞到所有任务完成 + if (!completableFutureList.isEmpty()) { + CompletableFuture allFutures = CompletableFuture.allOf(completableFutureList.toArray(new CompletableFuture[0])); + try { + allFutures.get(); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); } - } catch (RuntimeException e) { - insertLog(tbasic); - log.error("DISCHARGE_REG方法中错误信息:" + e.getMessage()); - return ResultUtils.fail(e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - log.error("DISCHARGE_REG方法中错误信息:" + e.getMessage()); - return ResultUtils.fail(e.getMessage()); } - log.info("DISCHARGE_REG返回结果:" + ResultUtils.success().asXML()); - return ResultUtils.success().asXML(); } - /** - * 出院成员信息修改 - * - * @param tbasic - * @return - */ - @Override - public String DISCHARGE_CAN(String tbasic) { - log.info("出院成员信息修改xml" + tbasic); - + private void sealCollect(String sealId, SystemCollectConfig.CollectConfig config) { + String url = config.getUrl() + "?sealId=" + sealId; + String desc = config.getDesc(); try { - - long l = System.currentTimeMillis(); - HashMap tBasicMap = new HashMap<>(); - HashMap tBasicSubMap = new HashMap<>(); - HashMap tBasicExtendMap = new HashMap<>(); - TBasic tBasic; - TBasicExtend tBasicExtend; - OutParseXml(tbasic, tBasicMap, tBasicSubMap, tBasicExtendMap); - long l1 = System.currentTimeMillis(); - log.info("解析xml时间------" + (l1 - l)); - //处理业务 - long l2 = System.currentTimeMillis(); - - if (tBasicMap != null && tBasicMap.size() > 0) { - long l3 = System.currentTimeMillis(); - tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class); - tBasicExtend = JSON.parseObject(JSON.toJSONString(tBasicExtendMap), TBasicExtend.class); - tBasicExtend.setPatientId(tBasic.getPatientId()); -// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){ -// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead")); -// tBasic.setIsDead(isDead); -// } - long l4 = System.currentTimeMillis(); - log.info("获取tBasic对象时间----------" + (l4 - l3)); - if (StringUtils.isBlank(tBasic.getJzh())) { - insertLog(tbasic); - log.info("INHOSP_NO字段不能为空值"); - return ResultUtils.fail("INHOSP_NO字段不能为空值"); - } - long l5 = System.currentTimeMillis(); - tBasic.setUpdateTime(new Date()); - try { - itBasicService.OutUpdateAndSub(tBasic, tBasicSubMap, tBasicExtend); -// this.saveAndCall(tBasic); - long l6 = System.currentTimeMillis(); - log.info("update耗时----------" + (l6 - l5)); - long l7 = System.currentTimeMillis(); - pcmachineService.saveAndCallOut(tBasic); - long l8 = System.currentTimeMillis(); - log.info("saveAndCall耗时-------" + (l8 - l7)); - } catch (RuntimeException e) { - insertLog(tbasic); - e.printStackTrace(); - log.error("DISCHARGE_CAN方法中错误信息:" + e.getMessage()); - return ResultUtils.fail(e.getMessage()); - } - } else { - insertLog(tbasic); - return ResultUtils.fail("请提供完整的xml"); - } - long l3 = System.currentTimeMillis(); - log.info("业务处理时间------------" + (l3 - l2)); - } catch (Exception e) { - e.printStackTrace(); - log.error("DISCHARGE_CAN方法中错误信息:" + e.getMessage()); - return ResultUtils.fail(e.getMessage()); + log.info("{},采集地址:{}", desc, url); + String result = HttpUtils.get(url); + log.info("{},采集地址:{},采集结果:{}", desc, url, result); + } catch (Exception ex) { + log.error(desc + ",采集地址:" + url + ",采集失败!", ex); } - log.info("DISCHARGE_CAN方法运行结果:" + ResultUtils.success().asXML()); - return ResultUtils.success().asXML(); } - /** - * 病案封存 - * - * @param tseal - * @return - */ -// @Override -// public String MEDICAL_RECORD_SEAL(String tseal) { -// log.info("病案封存" + tseal); -// try { -// //解析xml -// HashMap tSealMap = new HashMap<>(); -// SealParseXml(tseal, tSealMap); -// //处理业务 -// TSeal tSeal; -// if (tSealMap != null && tSealMap.size() > 0) { -// tSeal = JSON.parseObject(JSON.toJSONString(tSealMap), TSeal.class); -// int insert = tSealMapper.insert(tSeal); -// if (insert > 0){ -// log.info(tSeal.getJzh()+"----封存信息插入成功!"); -// }else { -// log.info(tSeal.getJzh()+"----封存信息插入失败!"); -// } -// } else { -// insertLog(tseal); -// log.info("请提供完整的xml"); -// return ResultUtils.fail("请提供完整的xml"); -// } -// } catch (RuntimeException e) { -// insertLog(tseal); -// log.error("MEDICAL_RECORD_SEAL方法中错误信息:" + e.getMessage()); -// return ResultUtils.fail(e.getMessage()); -// } catch (Exception e) { -// e.printStackTrace(); -// log.error("MEDICAL_RECORD_SEAL中错误信息:" + e.getMessage()); -// return ResultUtils.fail(e.getMessage()); -// } -// log.info("MEDICAL_RECORD_SEAL返回结果:" + ResultUtils.success().asXML()); -// return ResultUtils.success().asXML(); -// } // /** -// * 封存解析xml +// * 出院解析xml // * -// * @param tSeal -// * @param tSealMap +// * @param tbasic +// * @param tBasicMap +// * @param tBasicSubMap // */ -// private void SealParseXml(String tSeal, HashMap tSealMap) { +// private void OutParseXml(String tbasic, HashMap tBasicMap, HashMap tBasicSubMap, HashMap tBasicExtendMap) { // XmlUtils xmlUtils = null; // log.info("开始解析xml"); // try { -// xmlUtils = new XmlUtils(new ByteArrayInputStream(tSeal.getBytes("UTF-8"))); +// xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8"))); // } catch (UnsupportedEncodingException e) { // e.printStackTrace(); // } -// -// if (StringUtils.isBlank(xmlUtils.getElementText("SEAL_ID"))){ -// log.error("SEAL_ID 字段不能为空值"); -// throw new RuntimeException("SEAL_ID 字段不能为空值"); -// } // //解析json映射文件 -// String json = JsonUtils.readJsonFile(CurrentPath() + Codes.JSON_SEAL_ADDRESS.getMessage()); +// String json = JsonUtils.readJsonFile(CurrentPath() + Codes.JSON_OUT_ADDRESS.getMessage()); // Map jsonMap = JSON.parseObject(json, Map.class); // // List selectColumns = JSON.parseArray(String.valueOf(jsonMap.get(Codes.SELECT_COLUMNS.getMessage())), SelectColumn.class); @@ -516,76 +624,32 @@ public class TBasicWebService implements ITBasicWebService { // } // if (StringUtils.isBlank(value)) { // if (selectColumn.getByNull() == 0) { -// insertLog(tSeal); +// insertLog(tbasic); // log.error(selectColumn.getQualityColumn() + " 字段不能为空值"); // throw new RuntimeException(selectColumn.getQualityColumn() + " 字段不能为空值"); // } else { // continue; // } // } else { -// if (selectColumn.getTableName().equals("t_seal")) { -// tSealMap.put(selectColumn.getColumnName(), value); +// if (selectColumn.getTableName().equals("t_basic")) { +// tBasicMap.put(selectColumn.getColumnName(), value); +// } +// if (selectColumn.getTableName().equals("t_basic_extend")) { +// tBasicExtendMap.put(selectColumn.getColumnName(), value); +// } +// if (selectColumn.getTableName().equals("t_basic_sub")) { +// tBasicSubMap.put(selectColumn.getColumnName(), value); // } // } // } +// try { +// TBasic tBasic = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasicMap.get("jzh"))); +// tBasicMap.put("patient_id",tBasic.getPatientId()); +// +// itBasicService.merge(tBasicMap); +// }catch (Exception e) { +// log.info(e.getMessage()); +// } // } // - /** - * 出院解析xml - * - * @param tbasic - * @param tBasicMap - * @param tBasicSubMap - */ - private void OutParseXml(String tbasic, HashMap tBasicMap, HashMap tBasicSubMap, HashMap tBasicExtendMap) { - XmlUtils xmlUtils = null; - log.info("开始解析xml"); - try { - xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8"))); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - //解析json映射文件 - String json = JsonUtils.readJsonFile(CurrentPath() + Codes.JSON_OUT_ADDRESS.getMessage()); - Map jsonMap = JSON.parseObject(json, Map.class); - - List selectColumns = JSON.parseArray(String.valueOf(jsonMap.get(Codes.SELECT_COLUMNS.getMessage())), SelectColumn.class); - String value; - for (SelectColumn selectColumn : selectColumns) { - try { - value = xmlUtils.getElementText(selectColumn.getQualityColumn()) == null ? null : String.valueOf(xmlUtils.getElementText(selectColumn.getQualityColumn())); - } catch (RuntimeException e) { - String message = e.getMessage(); - log.error("解析xml出现:" + message); - throw new RuntimeException(message); - } - if (StringUtils.isBlank(value)) { - if (selectColumn.getByNull() == 0) { - insertLog(tbasic); - log.error(selectColumn.getQualityColumn() + " 字段不能为空值"); - throw new RuntimeException(selectColumn.getQualityColumn() + " 字段不能为空值"); - } else { - continue; - } - } else { - if (selectColumn.getTableName().equals("t_basic")) { - tBasicMap.put(selectColumn.getColumnName(), value); - } - if (selectColumn.getTableName().equals("t_basic_extend")) { - tBasicExtendMap.put(selectColumn.getColumnName(), value); - } - if (selectColumn.getTableName().equals("t_basic_sub")) { - tBasicSubMap.put(selectColumn.getColumnName(), value); - } - } - } - TBasic tBasic = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasicMap.get("jzh"))); - tBasicMap.put("patient_id",tBasic.getPatientId()); - try { - itBasicService.merge(tBasicMap); - }catch (Exception e) { - log.error(e.getMessage()); - } - } - } diff --git a/docus-webservice/src/main/java/com/docus/webservice/service/TBasicServiceImpl.java b/docus-webservice/src/main/java/com/docus/webservice/service/TBasicServiceImpl.java index 1011c7a..f2dcefc 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/service/TBasicServiceImpl.java +++ b/docus-webservice/src/main/java/com/docus/webservice/service/TBasicServiceImpl.java @@ -182,7 +182,6 @@ public class TBasicServiceImpl extends ServiceImpl impleme merge(patientId); } catch (Exception e) { log.error(e.getMessage()); - continue; } } @@ -191,7 +190,7 @@ public class TBasicServiceImpl extends ServiceImpl impleme } @Override - public void merge(Map patientId) throws RuntimeException { + public void merge(Map patientId) { TBasicExtend tBasicExtend; TBasic tBasic; log.info(patientId.get("inpatient_no") + ":合并预住院病历开始"); @@ -211,7 +210,7 @@ public class TBasicServiceImpl extends ServiceImpl impleme log.info(patientId.get("inpatient_no")+":未查询到预住院信息!"); } } catch (Exception e) { - throw new RuntimeException("预住院文件合并出错!--" + e.getMessage()); + log.info("预住院文件合并出错!--" + e.getMessage()); } } @@ -241,14 +240,26 @@ public class TBasicServiceImpl extends ServiceImpl impleme } if (null != preJzh && !preJzh.equals("")) { TBasic tbasic1 = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasic.getJzh())); - if (tbasic1 != null) { + TBasicExtend tBasicExtend1 = tBasicExtendMapper.selectOne(new QueryWrapper().eq("patient_id", tbasic1.getPatientId())); + + if (null!=tbasic1) { TBasicExtend tBasicExtend = new TBasicExtend(); - tBasicExtend.setPatientId(tbasic1.getPatientId()); - tBasicExtend.setPreJzh(preJzh); - int insert = tBasicExtendMapper.insert(tBasicExtend); - if (insert <= 0) { - throw new RuntimeException("数据库执行出错,请重试"); + if(null!=tBasicExtend1){ + tBasicExtend1.setPreJzh(preJzh); + int update = tBasicExtendMapper.update(tBasicExtend1, new QueryWrapper().eq("patient_id", tBasicExtend1.getPatientId())); + if (update <= 0) { + throw new RuntimeException("tBasicExtend修改出错,请重试"); + } + }else { + tBasicExtend.setPatientId(tbasic1.getPatientId()); + tBasicExtend.setPreJzh(preJzh); + int insert = tBasicExtendMapper.insert(tBasicExtend); + if (insert <= 0) { + throw new RuntimeException("tBasicExtend新增出错,请重试"); + } } + + } } diff --git a/docus-webservice/src/main/java/com/docus/webservice/utils/FileUtils.java b/docus-webservice/src/main/java/com/docus/webservice/utils/FileUtils.java new file mode 100644 index 0000000..0ac59f0 --- /dev/null +++ b/docus-webservice/src/main/java/com/docus/webservice/utils/FileUtils.java @@ -0,0 +1,44 @@ +package com.docus.webservice.utils; + +import com.alibaba.fastjson.JSON; + + +import java.io.File; +import java.io.IOException; +import java.util.Map; + +public class FileUtils { + /** + * 获取jar包所在位置 + * + * @return + */ + public static String currentPath() { + File dir = new File("."); + String currentpath = ""; + try { + currentpath = dir.getCanonicalPath(); + } catch (IOException e) { + e.printStackTrace(); + } + return currentpath; + } + + + + /** + * 根据文件路径,从当前项目下获取静态文件中的内容 + * + * @param fileName 从当前项目下获取json配置文件内容 + * @return json内容 + */ + public static String readJsonFromCurrentProject(String fileName) { + //获取目录结构 + String path = FileUtils.currentPath(); + String filePath = path + File.separator + fileName; + //解析json映射文件 + return JsonUtils.readJsonFile(filePath); + + } + +}