From 59872e3a7b1f06028ba39cd74571db7ed2e3473f Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Mon, 10 Jul 2023 11:31:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A4=E7=90=86=E6=8F=90=E4=BA=A4=EF=BC=8C?= =?UTF-8?q?=E7=89=B9=E6=AE=8A=E5=AD=97=E7=AC=A6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data-config/collect-task-config.json | 4 + data-config/message-forward-config.json | 9 +- .../message/busservice/SdBusinessService.java | 9 ++ .../impl/SdBusinessServiceImpl.java | 147 +++++------------- .../controller/MessageReceiveController.java | 17 +- .../WsNurseSubmitMessageConvert.java | 76 +++++++++ .../WsRecordSubmitMessageConvert.java | 68 ++++++++ .../server/message/dto/RecordSubmitDTO.java | 21 +++ .../server/message/dto/WsNurseSubmitDTO.java | 21 +++ .../server/message/mapper/TBasicMapper.java | 24 ++- .../docus/server/message/util/XmlUtil.java | 10 ++ .../server/message/validate/BaseValidate.java | 4 + .../validate/RecordSubmitValidate.java | 19 +++ .../validate/WsNurseSubmitValidate.java | 25 +++ src/main/resources/mapper/TBasicMapper.xml | 10 +- 15 files changed, 351 insertions(+), 113 deletions(-) create mode 100644 src/main/java/com/docus/server/message/converters/WsNurseSubmitMessageConvert.java create mode 100644 src/main/java/com/docus/server/message/converters/WsRecordSubmitMessageConvert.java create mode 100644 src/main/java/com/docus/server/message/dto/RecordSubmitDTO.java create mode 100644 src/main/java/com/docus/server/message/dto/WsNurseSubmitDTO.java create mode 100644 src/main/java/com/docus/server/message/validate/BaseValidate.java create mode 100644 src/main/java/com/docus/server/message/validate/RecordSubmitValidate.java create mode 100644 src/main/java/com/docus/server/message/validate/WsNurseSubmitValidate.java diff --git a/data-config/collect-task-config.json b/data-config/collect-task-config.json index 31610c9..5bcc7f8 100644 --- a/data-config/collect-task-config.json +++ b/data-config/collect-task-config.json @@ -2,5 +2,9 @@ { "method": "WS_RECORD_SUBMIT", "collectorIds": ["1","2"] + }, + { + "method": "WS_NURS_SUBMIT", + "collectorIds": ["3"] } ] \ No newline at end of file diff --git a/data-config/message-forward-config.json b/data-config/message-forward-config.json index c7e492b..f15cc6a 100644 --- a/data-config/message-forward-config.json +++ b/data-config/message-forward-config.json @@ -1,8 +1,13 @@ [ { "method": "WS_RECORD_SUBMIT", - "urls": ["http://127.0.0.1:9313/message/receive/wsRecordSubmit/do"], - "errorResult": "1${{xpath:/Request/Msg/INHOSP_NO}}系统错误!", + "urls": ["http://127.0.0.1:9314/message/receive/wsRecordSubmit/do"], + "errorResult": "0成功", + "messageDataType": 1 + } , { + "method": "WS_NURS_SUBMIT", + "urls": ["http://127.0.0.1:9314/message/receive/wsNurseSubmit/do"], + "errorResult": "1系统内部错误!", "messageDataType": 1 } ] \ No newline at end of file diff --git a/src/main/java/com/docus/server/message/busservice/SdBusinessService.java b/src/main/java/com/docus/server/message/busservice/SdBusinessService.java index 319bb5b..af1d017 100644 --- a/src/main/java/com/docus/server/message/busservice/SdBusinessService.java +++ b/src/main/java/com/docus/server/message/busservice/SdBusinessService.java @@ -6,8 +6,17 @@ import com.docus.server.message.dto.MessageResponse; public interface SdBusinessService { /** * 顺德人医电子病历提交信息 + * * @param message 信息 * @return 消息处理结果 */ MessageResponse recordSubmitHandle(Message message); + + /** + * 顺德人医护理提交信息 + * + * @param message 信息 + * @return 消息处理结果 + */ + MessageResponse wsNurseSubmitHandle(Message message); } diff --git a/src/main/java/com/docus/server/message/busservice/impl/SdBusinessServiceImpl.java b/src/main/java/com/docus/server/message/busservice/impl/SdBusinessServiceImpl.java index 6d7dda9..41715ac 100644 --- a/src/main/java/com/docus/server/message/busservice/impl/SdBusinessServiceImpl.java +++ b/src/main/java/com/docus/server/message/busservice/impl/SdBusinessServiceImpl.java @@ -1,25 +1,26 @@ package com.docus.server.message.busservice.impl; -import com.docus.core.util.DateUtil; import com.docus.core.util.Func; import com.docus.infrastructure.core.exception.BaseException; import com.docus.infrastructure.web.api.CommonResult; import com.docus.infrastructure.web.api.ResultCode; -import com.docus.server.message.feign.service.CollectTaskService; -import com.docus.server.message.feign.dto.CompensateTasRequest; import com.docus.server.message.busservice.SdBusinessService; import com.docus.server.message.config.CollectTaskConfig; +import com.docus.server.message.converters.WsNurseSubmitMessageConvert; +import com.docus.server.message.converters.WsRecordSubmitMessageConvert; import com.docus.server.message.dto.Message; import com.docus.server.message.dto.MessageResponse; +import com.docus.server.message.dto.RecordSubmitDTO; +import com.docus.server.message.dto.WsNurseSubmitDTO; +import com.docus.server.message.feign.dto.CompensateTasRequest; +import com.docus.server.message.feign.service.CollectTaskService; import com.docus.server.message.mapper.TBasicMapper; -import com.docus.server.message.util.XmlUtil; -import lombok.Data; +import com.docus.server.message.validate.RecordSubmitValidate; +import com.docus.server.message.validate.WsNurseSubmitValidate; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.w3c.dom.Node; -import java.util.Date; import java.util.List; @Slf4j @@ -46,11 +47,12 @@ public class SdBusinessServiceImpl implements SdBusinessService { if (taskConfig == null || Func.isEmpty(taskConfig.getCollectorIds())) { throw new RuntimeException("任务配置未配置采集器id,WS_RECORD_SUBMIT"); } - RecordSubmitDTO recordSubmitDto = convert(message.getMessage()); - verifyRecordSubmitDTO(recordSubmitDto); + RecordSubmitDTO recordSubmitDto = WsRecordSubmitMessageConvert.convert(message.getMessage()); + RecordSubmitValidate.verifyRecordSubmitDTO(recordSubmitDto); List patientIds = tBasicMapper.getPatientIdsByInpatientNoAndTimes(recordSubmitDto.getInHospIndexNo(), recordSubmitDto.getVisitNo()); verifyPatientIds(patientIds); - tBasicMapper.insertOrUpdateSubmitTime(patientIds.get(0),recordSubmitDto.getSubmitTime()); + tBasicMapper.insertOrUpdateDoctorSubmitTime(patientIds.get(0), recordSubmitDto.getSubmitTime()); + log.info("补偿电子病历任务 patientIds:{} collectId:{}", patientIds, taskConfig.getCollectorIds()); compensateTask(patientIds, taskConfig.getCollectorIds()); return new MessageResponse(ResultCode.SUCCESS.getCode(), success()); } catch (BaseException baseException) { @@ -69,37 +71,50 @@ public class SdBusinessServiceImpl implements SdBusinessService { } - private void verifyRecordSubmitDTO(RecordSubmitDTO recordSubmitDto) { - if (Func.isBlank(recordSubmitDto.getInHospIndexNo())) { - throw new BaseException("住院号不能为空!"); - } - if (Func.isEmpty(recordSubmitDto.getVisitNo())) { - throw new BaseException("住院次数不能为空!"); - } - if (Func.isEmpty(recordSubmitDto.getSubmitTime())) { - throw new BaseException("提交时间不能为空!"); - } - if (Func.isEmpty(recordSubmitDto.getInHospState())) { - throw new BaseException("住院状态不能为空!"); - } - if (recordSubmitDto.getInHospState() != 1) { - throw new BaseException("住院状态需要为已出院!"); + @Override + public MessageResponse wsNurseSubmitHandle(Message message) { + try { + CollectTaskConfig.TaskConfig taskConfig = CollectTaskConfig.getTaskConfig("WS_NURS_SUBMIT"); + if (taskConfig == null || Func.isEmpty(taskConfig.getCollectorIds())) { + throw new RuntimeException("任务配置未配置采集器id,WS_NURS_SUBMIT"); + } + WsNurseSubmitDTO nurseSubmitDTO = WsNurseSubmitMessageConvert.convert(message.getMessage()); + WsNurseSubmitValidate.verifyNurseSubmitDTO(nurseSubmitDTO); + List patientIds = tBasicMapper.getPatientIdsByInpatientNoAndTimes(nurseSubmitDTO.getInHospIndexNo(), nurseSubmitDTO.getVisitNo()); + verifyPatientIds(patientIds); + tBasicMapper.insertOrUpdateNurseSubmitTime(patientIds.get(0), nurseSubmitDTO.getSubmitTime()); + tBasicMapper.insertOrUpdateNurseFileCount(patientIds.get(0), nurseSubmitDTO.getFilesCount()); + log.info("补偿护理任务 patientIds:{} collectId:{}", patientIds, taskConfig.getCollectorIds()); + compensateTask(patientIds, taskConfig.getCollectorIds()); + return new MessageResponse(ResultCode.SUCCESS.getCode(), success()); + } catch (BaseException baseException) { + log.error(baseException.getMessage(), baseException); + // 业务异常,不希望重试,直接消息返回错误 + MessageResponse response = new MessageResponse(ResultCode.FAILED.getCode(), fail(baseException.getMessage())); + response.setRetry(0); + return response; + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + // 不可知的错误,希望重试 + MessageResponse response = new MessageResponse(ResultCode.FAILED.getCode(), fail("系统错误")); + response.setRetry(1); + return response; } } + private void compensateTask(List patientIds, List collectorIds) { CompensateTasRequest dto = new CompensateTasRequest(); dto.setPatientIds(patientIds); dto.setCollectorIds(collectorIds); dto.setPriority(4); - log.info("补偿电子病历任务 数据:{}", dto); CommonResult task = collectTaskService.compensateTask(dto); if (ResultCode.FAILED.getCode().equals(task.getCode())) { throw new RuntimeException("补偿失败!"); } } - private void verifyPatientIds(List patientIds) { + private void verifyPatientIds(List patientIds) throws BaseException { if (Func.isEmpty(patientIds)) { throw new BaseException("住院号+住院次数 ,系统无此患者!"); } @@ -108,68 +123,6 @@ public class SdBusinessServiceImpl implements SdBusinessService { } } - private RecordSubmitDTO convert(String str) { - String inHospNo=null; - String inHospIndexNo=null; - Integer visitNo=null; - String name=null; - Date submitTime=null; - Integer inHospState=null; - - XmlUtil xmlUtil = XmlUtil.of(str); - try { - // 住院状态 住院状态 0:在院 1:出院 - Node inHospStateNode = xmlUtil.getNode("/Request/Msg/INHOSP_STATE"); - inHospState=Integer.parseInt(inHospStateNode.getTextContent()); - }catch (Exception ex){ - throw new BaseException("解析住院状态出错!"); - } - try { - // 住院流水号 - Node inHospNoNode = xmlUtil.getNode("/Request/Msg/INHOSP_NO"); - inHospNo=inHospNoNode.getTextContent(); - } catch (Exception ex) { - throw new BaseException("解析 住院流水号 出错!"); - } - - try { - // 住院号 - Node inHospIndexNoNode = xmlUtil.getNode("/Request/Msg/INHOSP_INDEX_NO"); - inHospIndexNo=inHospIndexNoNode.getTextContent(); - } catch (Exception ex) { - throw new BaseException("解析 住院号 出错!"); - } - try { - // 住院次数 - Node visitNoNode = xmlUtil.getNode("/Request/Msg/VISIT_NO"); - visitNo=Integer.parseInt(visitNoNode.getTextContent()); - } catch (Exception ex) { - throw new BaseException("解析 住院次数 出错!"); - } - try { - // 患者姓名 - Node nameNode = xmlUtil.getNode("/Request/Msg/NAME"); - name=nameNode.getTextContent(); - } catch (Exception ex) { - throw new BaseException("解析 出错!"); - } - try { - // 提交时间 - Node submitTimeNode = xmlUtil.getNode("/Request/Msg/SUBMIT_TIME"); - submitTime= DateUtil.parse(submitTimeNode.getTextContent(), DateUtil.PATTERN_DATETIME); - } catch (Exception ex) { - throw new BaseException("解析 提交时间 出错!"); - } - - RecordSubmitDTO recordSubmitDTO = new RecordSubmitDTO(); - recordSubmitDTO.setInHospNo(inHospNo); - recordSubmitDTO.setVisitNo(visitNo); - recordSubmitDTO.setInHospState(inHospState); - recordSubmitDTO.setName(name); - recordSubmitDTO.setInHospIndexNo(inHospIndexNo); - recordSubmitDTO.setSubmitTime(submitTime); - return recordSubmitDTO; - } private String success() { return "" + @@ -188,20 +141,4 @@ public class SdBusinessServiceImpl implements SdBusinessService { "" + ""; } - - @Data - private static class RecordSubmitDTO { - // 住院流水号 - private String inHospNo; - // 住院号 - private String inHospIndexNo; - // 住院次数 - private Integer visitNo; - // 患者姓名 - private String name; - // 提交时间 - private Date submitTime; - // 住院状态0:在院 1:出院 - private Integer inHospState; - } } diff --git a/src/main/java/com/docus/server/message/controller/MessageReceiveController.java b/src/main/java/com/docus/server/message/controller/MessageReceiveController.java index 7514d3e..86aa3ac 100644 --- a/src/main/java/com/docus/server/message/controller/MessageReceiveController.java +++ b/src/main/java/com/docus/server/message/controller/MessageReceiveController.java @@ -24,14 +24,23 @@ import org.springframework.web.bind.annotation.RestController; public class MessageReceiveController { private SdBusinessService sdBusinessService; + @Autowired - public void setSdBusinessService(SdBusinessService sdBusinessService){ - this.sdBusinessService=sdBusinessService; + public void setSdBusinessService(SdBusinessService sdBusinessService) { + this.sdBusinessService = sdBusinessService; } @PostMapping("/wsRecordSubmit/do") - @ApiOperation("消息接收测试") - public MessageResponse receiveMessage(@RequestBody Message message) { + @ApiOperation("顺德人医电子病历提交消息接收") + public MessageResponse receiveWsRecordSubmitMessage(@RequestBody Message message) { + log.info("顺德人医电子病历提交消息接收:{}", message); return sdBusinessService.recordSubmitHandle(message); } + + @PostMapping("/wsNurseSubmit/do") + @ApiOperation("顺德人医护理提交消息接收") + public MessageResponse receiveWsNurseSubmitMessage(@RequestBody Message message) { + log.info("顺德人医护理提交消息接收:{}", message); + return sdBusinessService.wsNurseSubmitHandle(message); + } } diff --git a/src/main/java/com/docus/server/message/converters/WsNurseSubmitMessageConvert.java b/src/main/java/com/docus/server/message/converters/WsNurseSubmitMessageConvert.java new file mode 100644 index 0000000..056e831 --- /dev/null +++ b/src/main/java/com/docus/server/message/converters/WsNurseSubmitMessageConvert.java @@ -0,0 +1,76 @@ +package com.docus.server.message.converters; + +import com.docus.core.util.DateUtil; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.server.message.dto.WsNurseSubmitDTO; +import com.docus.server.message.util.XmlUtil; +import org.w3c.dom.Node; + +import java.util.Date; + +public class WsNurseSubmitMessageConvert { + public static WsNurseSubmitDTO convert(String str) { + String inHospNo=null; + String inHospIndexNo=null; + Integer visitNo=null; + String name=null; + Date submitTime=null; + Integer fileCount=null; + + XmlUtil xmlUtil = XmlUtil.of(str); + + try { + // 文件数量 + Node fileCountNode = xmlUtil.getNode("/Request/Msg/FILES_NUMBER"); + fileCount=Integer.parseInt(fileCountNode.getTextContent()); + } catch (Exception ex) { + throw new BaseException("解析 文件数量 出错!"); + } + try { + // 住院流水号 + Node inHospNoNode = xmlUtil.getNode("/Request/Msg/INHOSP_NO"); + inHospNo=inHospNoNode.getTextContent(); + } catch (Exception ex) { + throw new BaseException("解析 住院流水号 出错!"); + } + + try { + // 住院号 + Node inHospIndexNoNode = xmlUtil.getNode("/Request/Msg/INHOSP_INDEX_NO"); + inHospIndexNo=inHospIndexNoNode.getTextContent(); + } catch (Exception ex) { + throw new BaseException("解析 住院号 出错!"); + } + try { + // 住院次数 + Node visitNoNode = xmlUtil.getNode("/Request/Msg/VISIT_NO"); + visitNo=Integer.parseInt(visitNoNode.getTextContent()); + } catch (Exception ex) { + throw new BaseException("解析 住院次数 出错!"); + } + try { + // 患者姓名 + Node nameNode = xmlUtil.getNode("/Request/Msg/NAME"); + name=nameNode.getTextContent(); + } catch (Exception ex) { + throw new BaseException("解析 姓名 出错!"); + } + try { + // 提交时间 + Node submitTimeNode = xmlUtil.getNode("/Request/Msg/SUBMIT_TIME"); + submitTime= DateUtil.parse(submitTimeNode.getTextContent(), DateUtil.PATTERN_DATETIME); + } catch (Exception ex) { + throw new BaseException("解析 提交时间 出错!"); + } + + WsNurseSubmitDTO nurseSubmitDTO = new WsNurseSubmitDTO(); + nurseSubmitDTO.setInHospNo(inHospNo); + nurseSubmitDTO.setVisitNo(visitNo); + nurseSubmitDTO.setFilesCount(fileCount); + nurseSubmitDTO.setName(name); + nurseSubmitDTO.setInHospIndexNo(inHospIndexNo); + nurseSubmitDTO.setSubmitTime(submitTime); + return nurseSubmitDTO; + } + +} diff --git a/src/main/java/com/docus/server/message/converters/WsRecordSubmitMessageConvert.java b/src/main/java/com/docus/server/message/converters/WsRecordSubmitMessageConvert.java new file mode 100644 index 0000000..1344cd9 --- /dev/null +++ b/src/main/java/com/docus/server/message/converters/WsRecordSubmitMessageConvert.java @@ -0,0 +1,68 @@ +package com.docus.server.message.converters; + +import com.docus.core.util.DateUtil; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.server.message.dto.RecordSubmitDTO; +import com.docus.server.message.util.XmlUtil; +import org.w3c.dom.Node; + +import java.util.Date; + +public class WsRecordSubmitMessageConvert { + public static RecordSubmitDTO convert(String str) { + String inHospNo = null; + String inHospIndexNo = null; + Integer visitNo = null; + String name = null; + Date submitTime = null; + Integer inHospState = null; + + XmlUtil xmlUtil = XmlUtil.of(str); + + try { + // 住院流水号 + Node inHospNoNode = xmlUtil.getNode("/Request/Msg/INHOSP_NO"); + inHospNo = inHospNoNode.getTextContent(); + } catch (Exception ex) { + throw new BaseException("解析 住院流水号 出错!"); + } + + try { + // 住院号 + Node inHospIndexNoNode = xmlUtil.getNode("/Request/Msg/INHOSP_INDEX_NO"); + inHospIndexNo = inHospIndexNoNode.getTextContent(); + } catch (Exception ex) { + throw new BaseException("解析 住院号 出错!"); + } + try { + // 住院次数 + Node visitNoNode = xmlUtil.getNode("/Request/Msg/VISIT_NO"); + visitNo = Integer.parseInt(visitNoNode.getTextContent()); + } catch (Exception ex) { + throw new BaseException("解析 住院次数 出错!"); + } + try { + // 患者姓名 + Node nameNode = xmlUtil.getNode("/Request/Msg/NAME"); + name = nameNode.getTextContent(); + } catch (Exception ex) { + throw new BaseException("解析 姓名 出错!"); + } + try { + // 提交时间 + Node submitTimeNode = xmlUtil.getNode("/Request/Msg/SUBMIT_TIME"); + submitTime = DateUtil.parse(submitTimeNode.getTextContent(), DateUtil.PATTERN_DATETIME); + } catch (Exception ex) { + throw new BaseException("解析 提交时间 出错!"); + } + + RecordSubmitDTO recordSubmitDTO = new RecordSubmitDTO(); + recordSubmitDTO.setInHospNo(inHospNo); + recordSubmitDTO.setVisitNo(visitNo); + recordSubmitDTO.setInHospState(inHospState); + recordSubmitDTO.setName(name); + recordSubmitDTO.setInHospIndexNo(inHospIndexNo); + recordSubmitDTO.setSubmitTime(submitTime); + return recordSubmitDTO; + } +} diff --git a/src/main/java/com/docus/server/message/dto/RecordSubmitDTO.java b/src/main/java/com/docus/server/message/dto/RecordSubmitDTO.java new file mode 100644 index 0000000..b87a334 --- /dev/null +++ b/src/main/java/com/docus/server/message/dto/RecordSubmitDTO.java @@ -0,0 +1,21 @@ +package com.docus.server.message.dto; + +import lombok.Data; + +import java.util.Date; + +@Data +public class RecordSubmitDTO { + // 住院流水号 + private String inHospNo; + // 住院号 + private String inHospIndexNo; + // 住院次数 + private Integer visitNo; + // 患者姓名 + private String name; + // 提交时间 + private Date submitTime; + // 住院状态0:在院 1:出院 + private Integer inHospState; +} \ No newline at end of file diff --git a/src/main/java/com/docus/server/message/dto/WsNurseSubmitDTO.java b/src/main/java/com/docus/server/message/dto/WsNurseSubmitDTO.java new file mode 100644 index 0000000..67363fc --- /dev/null +++ b/src/main/java/com/docus/server/message/dto/WsNurseSubmitDTO.java @@ -0,0 +1,21 @@ +package com.docus.server.message.dto; + +import lombok.Data; + +import java.util.Date; + +@Data +public class WsNurseSubmitDTO { + // 住院流水号 + private String inHospNo; + // 住院号 + private String inHospIndexNo; + // 住院次数 + private Integer visitNo; + // 患者姓名 + private String name; + // 提交时间 + private Date submitTime; + // 文件数量 + private Integer filesCount; +} \ No newline at end of file diff --git a/src/main/java/com/docus/server/message/mapper/TBasicMapper.java b/src/main/java/com/docus/server/message/mapper/TBasicMapper.java index 1a6ff49..4806847 100644 --- a/src/main/java/com/docus/server/message/mapper/TBasicMapper.java +++ b/src/main/java/com/docus/server/message/mapper/TBasicMapper.java @@ -9,5 +9,27 @@ import java.util.List; public interface TBasicMapper{ List getPatientIdsByInpatientNoAndTimes(@Param("inpatientNo")String inHospIndexNo, @Param("admissTimes") Integer visitNo); - int insertOrUpdateSubmitTime(@Param("patientId") String patientId, @Param("submitTime") Date submitTime); + /** + * 更新医生提交时间 + * @param patientId 病案主键 + * @param submitTime 提交时间 + * @return database操作行 + */ + int insertOrUpdateDoctorSubmitTime(@Param("patientId") String patientId, @Param("submitTime") Date submitTime); + + /** + * 更新护士提交时间 + * @param patientId 病案主键 + * @param submitTime 提交时间 + * @return database操作行 + */ + int insertOrUpdateNurseSubmitTime(@Param("patientId") String patientId, @Param("submitTime") Date submitTime); + + /** + * 更新护理文件数量 + * @param patientId 病案主键 + * @param fileCount 文件数量 + * @return database操作行 + */ + int insertOrUpdateNurseFileCount(@Param("patientId")String patientId,@Param("fileCount") Integer fileCount); } diff --git a/src/main/java/com/docus/server/message/util/XmlUtil.java b/src/main/java/com/docus/server/message/util/XmlUtil.java index 24765c7..11342fc 100644 --- a/src/main/java/com/docus/server/message/util/XmlUtil.java +++ b/src/main/java/com/docus/server/message/util/XmlUtil.java @@ -18,6 +18,7 @@ package com.docus.server.message.util; import com.docus.core.util.Exceptions; import com.docus.core.util.IoUtil; +import com.docus.core.util.StringUtil; import org.springframework.lang.Nullable; import org.w3c.dom.*; import org.xml.sax.InputSource; @@ -83,6 +84,14 @@ public class XmlUtil { return create(inputSource); } + /** + * xml遇到的特殊字符替换 + */ + public static String specialCharacterSubstitution(String str){ + str = StringUtil.replace(str, "\u00A0", " "); + return str; + } + /** * 转换工具类 * @@ -90,6 +99,7 @@ public class XmlUtil { * @return XmlUtil */ public static XmlUtil of(String xmlStr) { + xmlStr=specialCharacterSubstitution(xmlStr); StringReader sr = new StringReader(xmlStr.trim()); InputSource inputSource = new InputSource(sr); XmlUtil xmlUtil = create(inputSource); diff --git a/src/main/java/com/docus/server/message/validate/BaseValidate.java b/src/main/java/com/docus/server/message/validate/BaseValidate.java new file mode 100644 index 0000000..646805f --- /dev/null +++ b/src/main/java/com/docus/server/message/validate/BaseValidate.java @@ -0,0 +1,4 @@ +package com.docus.server.message.validate; + +public abstract class BaseValidate { +} diff --git a/src/main/java/com/docus/server/message/validate/RecordSubmitValidate.java b/src/main/java/com/docus/server/message/validate/RecordSubmitValidate.java new file mode 100644 index 0000000..d3d4092 --- /dev/null +++ b/src/main/java/com/docus/server/message/validate/RecordSubmitValidate.java @@ -0,0 +1,19 @@ +package com.docus.server.message.validate; + +import com.docus.core.util.Func; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.server.message.dto.RecordSubmitDTO; + +public class RecordSubmitValidate{ + public static void verifyRecordSubmitDTO(RecordSubmitDTO recordSubmitDto) throws BaseException{ + if (Func.isBlank(recordSubmitDto.getInHospIndexNo())) { + throw new BaseException("住院号不能为空!"); + } + if (Func.isEmpty(recordSubmitDto.getVisitNo())) { + throw new BaseException("住院次数不能为空!"); + } + if (Func.isEmpty(recordSubmitDto.getSubmitTime())) { + throw new BaseException("提交时间不能为空!"); + } + } +} diff --git a/src/main/java/com/docus/server/message/validate/WsNurseSubmitValidate.java b/src/main/java/com/docus/server/message/validate/WsNurseSubmitValidate.java new file mode 100644 index 0000000..4c8de6f --- /dev/null +++ b/src/main/java/com/docus/server/message/validate/WsNurseSubmitValidate.java @@ -0,0 +1,25 @@ +package com.docus.server.message.validate; + +import com.docus.core.util.Func; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.server.message.dto.WsNurseSubmitDTO; + +public class WsNurseSubmitValidate { + public static void verifyNurseSubmitDTO(WsNurseSubmitDTO dto) throws BaseException { + if (Func.isBlank(dto.getInHospIndexNo())) { + throw new BaseException("住院号不能为空!"); + } + if (Func.isEmpty(dto.getVisitNo())) { + throw new BaseException("住院次数不能为空!"); + } + if (Func.isEmpty(dto.getSubmitTime())) { + throw new BaseException("提交时间不能为空!"); + } + if (Func.isEmpty(dto.getFilesCount())) { + throw new BaseException("文件数量不能为空!"); + } + if (dto.getFilesCount() < 1) { + throw new BaseException("文件数量不能小于1!"); + } + } +} diff --git a/src/main/resources/mapper/TBasicMapper.xml b/src/main/resources/mapper/TBasicMapper.xml index 0f15a5a..584ea29 100644 --- a/src/main/resources/mapper/TBasicMapper.xml +++ b/src/main/resources/mapper/TBasicMapper.xml @@ -3,10 +3,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + insert into `docus_medicalrecord`.`t_basic_extend` (patient_id,doctor_submit_time) values (#{patientId},#{submitTime}) ON DUPLICATE KEY UPDATE doctor_submit_time=#{submitTime} + + insert into `docus_medicalrecord`.`t_basic_extend` (patient_id,nurse_submit_time) values (#{patientId},#{submitTime}) + ON DUPLICATE KEY UPDATE nurse_submit_time=#{submitTime} + + + insert into `docus_medicalrecord`.`t_basic_extend` (patient_id,nurse_file_count) values (#{patientId},#{fileCount}) + ON DUPLICATE KEY UPDATE nurse_file_count=#{fileCount} +