From 05ac45f06ed239bb980949affde252c7896302bf Mon Sep 17 00:00:00 2001 From: tan <11033394+tanzr@user.noreply.gitee.com> Date: Tue, 24 Sep 2024 11:01:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=84=E8=8C=83updateDisDate=E5=8F=82?= =?UTF-8?q?=E6=95=B0=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=97=A5=E5=BF=97=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=97=B6=E9=97=B4=E4=B8=BA180=E5=A4=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docus/webservice/config/MyScheduling.java | 43 + .../webservice/handler/ITBasicWebService.java | 62 +- .../webservice/handler/TBasicWebService.java | 807 +++++++++--------- .../docus/webservice/mapper/TBasicMapper.java | 4 +- .../webservice/service/ITBasicService.java | 2 +- .../webservice/service/TBasicServiceImpl.java | 32 +- .../src/main/resources/logback-spring.xml | 6 +- .../main/resources/mapper/TBasicMapper.xml | 2 +- 8 files changed, 502 insertions(+), 456 deletions(-) diff --git a/docus-webservice/src/main/java/com/docus/webservice/config/MyScheduling.java b/docus-webservice/src/main/java/com/docus/webservice/config/MyScheduling.java index 4af925a..8c578b6 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/config/MyScheduling.java +++ b/docus-webservice/src/main/java/com/docus/webservice/config/MyScheduling.java @@ -1,6 +1,8 @@ package com.docus.webservice.config; +import com.docus.webservice.handler.TBasicWebService; import com.docus.webservice.service.IPcmachineService; +import com.docus.webservice.service.ITBasicService; import io.swagger.models.auth.In; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -8,11 +10,19 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + @Component public class MyScheduling { @Autowired IPcmachineService pcmachineService; + @Autowired + private ITBasicService tbasicWebService; private Logger logger = LogManager.getLogger(MyScheduling.class); @@ -27,4 +37,37 @@ public class MyScheduling { // // } + //每天00:01执行一次 + @Scheduled(cron = "0 1 0 * * ?") + public void mergePreRecords() { + logger.info("----开始合并预处理数据----"); + Map dateMap = getDateCollectionTime(new Date(), 3); + tbasicWebService.mergePreRecords(dateMap.get("startDate"), dateMap.get("endDate")); + logger.info("----合并预处理数据结束----"); + } + /** + * 获取前x天开始与结束时间 + * + * @param date + * @return + */ + + public static Map getDateCollectionTime(Date date, int day) { + Date dBefore; + Calendar calendar = Calendar.getInstance(); //得到日历 + calendar.setTime(date);//把当前时间赋给日历 + calendar.add(Calendar.DAY_OF_MONTH, -day); //设置为前day天 + dBefore = calendar.getTime(); //得到前一天的时间 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式 + String defaultStartDate = sdf.format(dBefore); //格式化前一天 + defaultStartDate = defaultStartDate + " 00:00:00"; + String defaultEndDate = defaultStartDate.substring(0, 10) + " 23:59:59"; + Map map = new HashMap<>(); + map.put("startDate", defaultStartDate); + map.put("endDate", defaultEndDate); + return map; + } + + + } 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 72bf448..14e1601 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,37 +6,37 @@ 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 DISCHARGE_CAN(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); /** * 病案封存 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 0eeb1fb..4b105f6 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 @@ -88,162 +88,246 @@ 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); + /** + * 住院成员信息新增 + * + * @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); // } -// if (selectColumn.getTableName().equals("t_basic_sub")) { -// tBasicSubMap.put(selectColumn.getColumnName(), value); + //特殊处理出院时间 没有就取当前时间 + Date currentDate = new Date(); +// if(tBasic.getDisDate()==null){ +// tBasic.setDisDate(currentDate); // } -// } -// } -// 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") + " 预住院或正式住院患者不存在!"); + //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); // } -// } -// 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"))); + 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); @@ -253,201 +337,117 @@ public class TBasicWebService implements ITBasicWebService { // 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"); +// }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); // } -// // } -// } 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字段不能为空值"); + //特殊处理出院时间 没有就取当前时间 + +// if(tBasic.getDisDate()==null){ +// tBasic.setDisDate(currentDate); // } -// 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()); + //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); // } -// } 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(); -// } -// + 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(); + } + /** * 病案封存 * @@ -593,63 +593,62 @@ public class TBasicWebService implements ITBasicWebService { } } -// /** -// * 出院解析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); -// } -// } -// } -// 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); + } + } + } + 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()); + } + } + } diff --git a/docus-webservice/src/main/java/com/docus/webservice/mapper/TBasicMapper.java b/docus-webservice/src/main/java/com/docus/webservice/mapper/TBasicMapper.java index 7ce9612..ac3279d 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/mapper/TBasicMapper.java +++ b/docus-webservice/src/main/java/com/docus/webservice/mapper/TBasicMapper.java @@ -3,6 +3,7 @@ package com.docus.webservice.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.docus.webservice.entity.TBasic; +import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Param; import org.springframework.web.bind.annotation.RequestParam; @@ -19,5 +20,6 @@ import java.util.Map; */ public interface TBasicMapper extends BaseMapper { - List selectByDisDateList(@Param("startDate") String startDate, @Param("endDate") String endDate, @RequestParam("size") int size, @RequestParam("current") int current); + + List selectByDisDateList(@Param("startDate") String startDate, @Param("endDate") String endDate, @RequestParam("current") int current, @RequestParam("size") int size); } diff --git a/docus-webservice/src/main/java/com/docus/webservice/service/ITBasicService.java b/docus-webservice/src/main/java/com/docus/webservice/service/ITBasicService.java index 843422d..58efd1a 100644 --- a/docus-webservice/src/main/java/com/docus/webservice/service/ITBasicService.java +++ b/docus-webservice/src/main/java/com/docus/webservice/service/ITBasicService.java @@ -28,5 +28,5 @@ public interface ITBasicService extends IService { //合并预住院病历 void mergePreRecords(String startDate,String endDate); - void merge(Map patientId); + void merge(Map patientId); } 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 f2dcefc..9de4ffa 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 @@ -168,15 +168,16 @@ public class TBasicServiceImpl extends ServiceImpl impleme //页码 int startrow; //每页10条数据 - int endrow = 10; + final int size = 500; List patientIds; endDate = endDate + " 23:59:59"; - for (startrow = 0; ; startrow += 10) { - patientIds = tBasicMapper.selectByDisDateList(startDate, endDate, startrow, endrow); + for (startrow = 0; ; startrow += size) { + patientIds = tBasicMapper.selectByDisDateList(startDate, endDate,startrow,size); if (null == patientIds || patientIds.size() <= 0) { log.info("本次预住院病历合并结束!"); break; } + log.info("预住院病历合并补偿查询,startDate:{},endDate:{},startrow:{} size:{},总共:{}条数据",startDate, endDate, startrow, size, patientIds.size()); for (Map patientId : patientIds) { try { merge(patientId); @@ -190,30 +191,31 @@ public class TBasicServiceImpl extends ServiceImpl impleme } @Override - public void merge(Map patientId) { + public void merge(Map patientId) { TBasicExtend tBasicExtend; TBasic tBasic; log.info(patientId.get("inpatient_no") + ":合并预住院病历开始"); try { - tBasicExtend = tBasicExtendMapper.selectOne(new QueryWrapper().eq("patient_id", patientId.get("patient_id"))); - if (null != tBasicExtend.getPreJzh()) { + if (tBasicExtend != null && tBasicExtend.getPreJzh() != null) { tBasic = tBasicMapper.selectOne(new QueryWrapper().eq("jzh", tBasicExtend.getPreJzh())); - //将预住院患者病历文件patient_id改为正式住院的patient_id,合并病历 - int i = tScanAssortMapper.updateByPatientId(String.valueOf(patientId.get("patient_id")), tBasic.getPatientId()); - if (i <= 0) { - log.info("当前预住院没有文件!"); + if (tBasic != null) { + int i = tScanAssortMapper.updateByPatientId(String.valueOf(patientId.get("patient_id")), tBasic.getPatientId()); + if (i <= 0) { + log.info("当前预住院没有文件!"); + } else { + log.info(patientId.get("inpatient_no") + ":本次预住院合并" + i + "份报告"); + } } else { - log.info(patientId.get("inpatient_no") + ":本次预住院合并" + i + "份报告"); + log.info(patientId.get("inpatient_no") + ":未查询到预住院信息!"); } - }else { - log.info(patientId.get("inpatient_no")+":未查询到预住院信息!"); + } else { + log.info(patientId.get("inpatient_no") + ":未查询到预住院信息!"); } } catch (Exception e) { - log.info("预住院文件合并出错!--" + e.getMessage()); + log.error("预住院文件合并出错!-- 患者号: " + patientId.get("inpatient_no") + " 错误信息: " + e.getMessage(), e); } } - /** * 住院调用 * diff --git a/docus-webservice/src/main/resources/logback-spring.xml b/docus-webservice/src/main/resources/logback-spring.xml index d41897d..a47f65d 100644 --- a/docus-webservice/src/main/resources/logback-spring.xml +++ b/docus-webservice/src/main/resources/logback-spring.xml @@ -21,11 +21,11 @@ log/demo.%d.%i.log - - 30 + + 180 - 10MB + 300MB diff --git a/docus-webservice/src/main/resources/mapper/TBasicMapper.xml b/docus-webservice/src/main/resources/mapper/TBasicMapper.xml index 3970bd8..f956801 100644 --- a/docus-webservice/src/main/resources/mapper/TBasicMapper.xml +++ b/docus-webservice/src/main/resources/mapper/TBasicMapper.xml @@ -59,6 +59,6 @@ from docus_medicalrecord.t_basic where dis_date between #{startDate} and #{endDate} order by dis_date - limit #{size},#{current} + limit #{current}, #{size} \ No newline at end of file