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);
+
+ }
+
+}