ws的user,dept,basic拆分实现

segment2.0
linrf 2 years ago
parent c895a92a5d
commit fdec1b9eda

@ -5,13 +5,15 @@ import com.docus.core.util.XmlUtil;
import com.docus.server.collect.infrastructure.dao.FlagEnum; import com.docus.server.collect.infrastructure.dao.FlagEnum;
import com.docus.server.record.pojo.dto.TBasicDTO; import com.docus.server.record.pojo.dto.TBasicDTO;
import com.docus.server.tool.ParamsUtils; import com.docus.server.tool.ParamsUtils;
import com.docus.server.ws.convert.ITBasicConverter; import com.docus.server.ws.convert.IConverter;
import org.springframework.stereotype.Component;
import org.w3c.dom.Node; import org.w3c.dom.Node;
public class TBasicConverter implements ITBasicConverter { @Component("tBasicConverter")
public class TBasicConverter implements IConverter<TBasicDTO> {
@Override @Override
public TBasicDTO xmlToConvertBasicDTO(String message, FlagEnum flagEnum) { public TBasicDTO convert(String message, FlagEnum flagEnum) {
XmlUtil xml = XmlUtil.of(message); XmlUtil xml = XmlUtil.of(message);
//id-消息流水号 //id-消息流水号
String serialId = null; String serialId = null;

@ -1,15 +1,18 @@
package com.docus.server.collect.dept.ws; package com.docus.server.collect.dept.ws;
import com.docus.core.util.XmlUtil; import com.docus.core.util.XmlUtil;
import com.docus.server.collect.infrastructure.dao.FlagEnum;
import com.docus.server.sys.common.pojo.dto.DeptDTO; import com.docus.server.sys.common.pojo.dto.DeptDTO;
import com.docus.server.tool.ParamsUtils; import com.docus.server.tool.ParamsUtils;
import com.docus.server.ws.convert.IPowerDeptConverter; import com.docus.server.ws.convert.IConverter;
import org.springframework.stereotype.Component;
import org.w3c.dom.Node; import org.w3c.dom.Node;
public class powerDeptConverter implements IPowerDeptConverter { @Component("powerDeptConverter")
public class PowerDeptConverter implements IConverter {
@Override @Override
public DeptDTO xmlToConvertDeptDTO(String message) { public DeptDTO convert(String message, FlagEnum flagEnum) {
//TODO 根据协议进行解析。 //TODO 根据协议进行解析。
XmlUtil xmlParseUtil = XmlUtil.of(message); XmlUtil xmlParseUtil = XmlUtil.of(message);
Node msgIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/id/@extension"); Node msgIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/id/@extension");
@ -37,5 +40,4 @@ public class powerDeptConverter implements IPowerDeptConverter {
return deptDto; return deptDto;
} }
} }

@ -0,0 +1,158 @@
package com.docus.server.collect.report;
import com.alibaba.fastjson.JSONObject;
import com.docus.core.util.Func;
import com.docus.core.util.XmlUtil;
import com.docus.infrastructure.core.exception.BaseException;
import com.docus.server.collect.infrastructure.dao.FlagEnum;
import com.docus.server.collect.infrastructure.pojo.dto.ReportDTO;
import com.docus.server.tool.ParamsUtils;
import com.docus.server.tool.TableJsonRead;
import com.docus.server.ws.convert.IConverter;
import org.springframework.stereotype.Component;
import org.w3c.dom.Node;
@Component("reportConverter")
public class ReportConverter implements IConverter<ReportDTO> {
@Override
public ReportDTO convert(String message, FlagEnum flagEnum) {
//TODO 根据协议进行解析。
XmlUtil xmlUtil = XmlUtil.of(message);
Node msgNode = xmlUtil.getNode("/Request/Msg/ID");
String msgId = msgNode.getTextContent();
TableJsonRead jsonRead = new TableJsonRead();
JSONObject tableTypeJson = jsonRead.Read("data-config", "js-table-type.json", JSONObject.class);
String jsReportConfigXml = jsonRead.ReadContent("data-config", "js-report-config.xml");
XmlUtil configXmlUtil = XmlUtil.of(jsReportConfigXml);
Node inpatientNoXpathNode = configXmlUtil.getNode("/REPORT/INPATIENT_NO");
String inpatientNoXpath = inpatientNoXpathNode.getTextContent();
Node inpatientNoNode = xmlUtil.getNode(inpatientNoXpath);
String inpatientNo = inpatientNoNode.getTextContent();
Node jzhXpathNode = configXmlUtil.getNode("/REPORT/JZH");
String jzhXpath = jzhXpathNode.getTextContent();
Node jzhNode = xmlUtil.getNode(jzhXpath);
String jzh = jzhNode.getTextContent();
Node admissTimesXpathNode = configXmlUtil.getNode("/REPORT/ADMISS_TIMES");
String admissTimesXpath = admissTimesXpathNode.getTextContent();
Node admissTimesNode = xmlUtil.getNode(admissTimesXpath);
Integer admissTimes = Integer.valueOf(admissTimesNode.getTextContent());
Node serialnumXpathNode = configXmlUtil.getNode("/REPORT/SERIALNUM");
String serialnumXpath = serialnumXpathNode.getTextContent();
Node serialnumNode = xmlUtil.getNode(serialnumXpath);
String serialnum = serialnumNode.getTextContent();
Node fileTitleXpathNode = configXmlUtil.getNode("/REPORT/FILE_TITLE");
String fileTitleXpath = fileTitleXpathNode.getTextContent();
Node fileTitleNode = xmlUtil.getNode(fileTitleXpath);
String fileTitle = fileTitleNode.getTextContent();
Node downUrlXpathNode = configXmlUtil.getNode("/REPORT/DOWNURL");
String downUrlXpath = downUrlXpathNode.getTextContent();
Node downUrlNode = xmlUtil.getNode(downUrlXpath);
String downUrl = downUrlNode.getTextContent();
Node tableTypeXpathNode = configXmlUtil.getNode("/REPORT/TABLE_TYPE");
String tableTypeXpath = tableTypeXpathNode.getTextContent();
Node tableTypeNode = xmlUtil.getNode(tableTypeXpath);
String tableType = tableTypeNode.getTextContent();
Node assortIdXpathNode = configXmlUtil.getNode("/REPORT/ASSORT_ID");
String assortIdXpath = assortIdXpathNode.getTextContent();
String assortId;
if (Func.isBlank(assortIdXpath)) {
// 如果没有配置 取value 属性如果value也未配置 取 tableType 对应的json配置最终方案默认 other 分段
Node assortIdValueNode = assortIdXpathNode.getAttributes().getNamedItem("value");
if (Func.isEmpty(assortIdValueNode)) {
assortId = assortIdValueNode.getNodeValue();
} else {
assortId = tableTypeJson.getString(tableType);
}
if (Func.isBlank(assortId)) {
assortId = tableTypeJson.getString("other");
}
} else {
Node assortIdNode = xmlUtil.getNode(assortIdXpath);
assortId = assortIdNode.getTextContent();
}
Node sysFlagXpathNode = configXmlUtil.getNode("/REPORT/SYSTEM_FLAG");
String sysFlagXpath = sysFlagXpathNode.getTextContent();
Node sysFlagNode = xmlUtil.getNode(sysFlagXpath);
String sysFlag = sysFlagNode.getTextContent();
Node fileSourceXpathNode = configXmlUtil.getNode("/REPORT/FILESOURCE");
String fileSourceXpath = fileSourceXpathNode.getTextContent();
String fileSource;
if (Func.isBlank(fileSourceXpath)) {
Node fileSourceValueNode = fileSourceXpathNode.getAttributes().getNamedItem("value");
if (Func.isEmpty(fileSourceValueNode)) {
fileSource = null;
} else {
fileSource = fileSourceValueNode.getNodeValue();
}
} else {
Node fileSourceNode = xmlUtil.getNode(fileSourceXpath);
fileSource = fileSourceNode.getTextContent();
}
Node fileStorageTypeXpathNode = configXmlUtil.getNode("/REPORT/FILE_STORAGE_TYPE");
String fileStorageTypeXpath = fileStorageTypeXpathNode.getTextContent();
String fileStorageType;
if (Func.isBlank(fileStorageTypeXpath)) {
Node filestoragetypeValueNode = fileStorageTypeXpathNode.getAttributes().getNamedItem("value");
if (Func.isEmpty(filestoragetypeValueNode)) {
fileStorageType = "1";
} else {
fileStorageType = filestoragetypeValueNode.getNodeValue();
}
} else {
Node filestoragetypeNode = xmlUtil.getNode(fileStorageTypeXpath);
fileStorageType = filestoragetypeNode.getTextContent();
}
ReportDTO reportDTO = new ReportDTO();
reportDTO.setAdmisstimes(admissTimes);
reportDTO.setInpatientNo(inpatientNo);
reportDTO.setJzh(jzh);
reportDTO.setSerialnum(serialnum);
reportDTO.setFileTitle(fileTitle);
reportDTO.setDownUrl(downUrl);
reportDTO.setAssortId(assortId);
reportDTO.setSysFlag(sysFlag);
reportDTO.setFileSource(fileSource);
reportDTO.setFilestoragetype(fileStorageType);
reportDTO.setParams(ParamsUtils.addParam("msgId", msgId).param());
valid(reportDTO);
return reportDTO;
}
private void valid(ReportDTO reportDTO) {
if (Func.isBlank(reportDTO.getInpatientNo())) {
throw new BaseException("住院号不能为空!");
}
if (Func.isEmpty(reportDTO.getAdmisstimes()) && Func.isBlank(reportDTO.getJzh())) {
throw new BaseException("当住院号与住院次数都为空时,住院流水号/记账号不能为空!");
}
if (Func.isBlank(reportDTO.getFileTitle())) {
throw new BaseException("文件名不能为空!");
}
if (Func.isBlank(reportDTO.getDownUrl())) {
throw new BaseException("文件下载路径不能为空!");
}
}
}

@ -0,0 +1,20 @@
package com.docus.server.collect.report;
import com.docus.server.ws.IWsResult;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component("wsReportResultImpl")
public class WsReportResultImpl implements IWsResult {
@Override
public String ok(Map<String, Object> params) {
return null;
}
@Override
public String fail(Map<String, Object> params) {
}
}

@ -1,15 +1,18 @@
package com.docus.server.collect.user.ws; package com.docus.server.collect.user.ws;
import com.docus.core.util.XmlUtil; import com.docus.core.util.XmlUtil;
import com.docus.server.collect.infrastructure.dao.FlagEnum;
import com.docus.server.sys.common.pojo.dto.UserDTO; import com.docus.server.sys.common.pojo.dto.UserDTO;
import com.docus.server.tool.ParamsUtils; import com.docus.server.tool.ParamsUtils;
import com.docus.server.ws.convert.IPowerUserConverter; import com.docus.server.ws.convert.IConverter;
import org.springframework.stereotype.Component;
import org.w3c.dom.Node; import org.w3c.dom.Node;
public class powerUserConverter implements IPowerUserConverter { @Component("powerUserConverter")
public class PowerUserConverter implements IConverter<UserDTO> {
@Override @Override
public UserDTO xmlToConvertUserDTO(String message) { public UserDTO convert(String message, FlagEnum flagEnum) {
XmlUtil xmlParseUtil = XmlUtil.of(message); XmlUtil xmlParseUtil = XmlUtil.of(message);
Node msgIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/id/@extension"); Node msgIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/id/@extension");
Node receiverNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/receiver/device/id/item/@extension"); Node receiverNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/receiver/device/id/item/@extension");
@ -39,4 +42,5 @@ public class powerUserConverter implements IPowerUserConverter {
return userDTO; return userDTO;
} }
} }

@ -6,7 +6,11 @@ public enum CollectTypeEnum implements IIntegerEnum {
WS_XML_DEPT(0, "ws同步的科室数据"), WS_XML_DEPT(0, "ws同步的科室数据"),
WS_XML_USER(1, "ws同步的用户数据"), WS_XML_USER(1, "ws同步的用户数据"),
WS_XML_BASIC(2, "ws同步的病患数据"); WS_XML_BASIC(2, "ws同步的病患数据"),
WS_XML_SA_REPORT(2, "ws同步的手麻报告数据"),
WS_XML_ICU_REPORT(2, "ws同步的重症报告数据"),
WS_XML_INSERT_INSPECTION_REPORT(2, "ws同步的新增检查报告数据"),
WS_XML_UPDATE_INSPECTION_REPORT(2, "ws同步的更新检查报告数据");
private Integer value; private Integer value;
private String display; private String display;

@ -1,7 +1,7 @@
package com.docus.server.collect.infrastructure.mapper; package com.docus.server.collect.infrastructure.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.docus.server.collect.domain.TaskConfig; import com.docus.server.collect.infrastructure.pojo.domain.TaskConfig;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper

@ -1,9 +1,8 @@
package com.docus.server.collect.domain; package com.docus.server.collect.infrastructure.pojo.domain;
import com.docus.server.tool.DateSpiltUtil; import com.docus.server.tool.DateSpiltUtil;
import com.docus.server.tool.PeriodTime; import com.docus.server.tool.PeriodTime;
import lombok.Data; import lombok.Data;
import lombok.Getter;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;

@ -0,0 +1,75 @@
package com.docus.server.collect.infrastructure.pojo.dto;
import lombok.Data;
import java.util.Map;
/**
*
*/
@Data
public class ReportDTO {
/**
*
*/
private String inpatientNo;
/**
* /
*/
private String jzh;
/**
*
*/
private Integer admisstimes;
/**
*
*/
private String sysFlag;
/**
*
*/
private String downUrl;
/**
*
*/
private String fileTitle;
/**
* /id
*/
private String serialnum;
/**
* id
*/
private String assortId;
/**
* ( 1:2)
*/
private String fileSource;
/**
* 1:2ftp3
*/
private String filestoragetype;
/**
* id ,
*/
private Long taskId;
/**
*
*/
private String patientId;
/**
* 1:url2:base643:url base644:5base64
*/
private Integer downtype = 1;
/**
*
*/
private Map<String, Object> params;
}

@ -1,7 +1,7 @@
package com.docus.server.collect.job.basic; package com.docus.server.collect.job.basic;
import com.docus.core.util.Func; import com.docus.core.util.Func;
import com.docus.server.collect.domain.TaskConfig; import com.docus.server.collect.infrastructure.pojo.domain.TaskConfig;
import com.docus.server.collect.service.ITaskConfigService; import com.docus.server.collect.service.ITaskConfigService;
import com.docus.server.record.pojo.dto.TBasicDTO; import com.docus.server.record.pojo.dto.TBasicDTO;
import com.docus.server.record.service.ITBasicService; import com.docus.server.record.service.ITBasicService;

@ -1,7 +1,7 @@
package com.docus.server.collect.job.dept; package com.docus.server.collect.job.dept;
import com.docus.core.util.Func; import com.docus.core.util.Func;
import com.docus.server.collect.domain.TaskConfig; import com.docus.server.collect.infrastructure.pojo.domain.TaskConfig;
import com.docus.server.collect.service.ITaskConfigService; import com.docus.server.collect.service.ITaskConfigService;
import com.docus.server.sys.common.pojo.dto.DeptDTO; import com.docus.server.sys.common.pojo.dto.DeptDTO;
import com.docus.server.sys.service.IPowerDeptService; import com.docus.server.sys.service.IPowerDeptService;

@ -1,7 +1,7 @@
package com.docus.server.collect.job.user; package com.docus.server.collect.job.user;
import com.docus.core.util.Func; import com.docus.core.util.Func;
import com.docus.server.collect.domain.TaskConfig; import com.docus.server.collect.infrastructure.pojo.domain.TaskConfig;
import com.docus.server.collect.service.ITaskConfigService; import com.docus.server.collect.service.ITaskConfigService;
import com.docus.server.sys.common.pojo.dto.UserDTO; import com.docus.server.sys.common.pojo.dto.UserDTO;
import com.docus.server.sys.service.IPowerUserService; import com.docus.server.sys.service.IPowerUserService;

@ -1,6 +1,6 @@
package com.docus.server.collect.service; package com.docus.server.collect.service;
import com.docus.server.collect.domain.TaskConfig; import com.docus.server.collect.infrastructure.pojo.domain.TaskConfig;
import java.util.Date; import java.util.Date;

@ -1,7 +1,7 @@
package com.docus.server.collect.service.impl; package com.docus.server.collect.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.docus.server.collect.domain.TaskConfig; import com.docus.server.collect.infrastructure.pojo.domain.TaskConfig;
import com.docus.server.collect.infrastructure.mapper.TaskConfigMapper; import com.docus.server.collect.infrastructure.mapper.TaskConfigMapper;
import com.docus.server.collect.service.ITaskConfigService; import com.docus.server.collect.service.ITaskConfigService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

@ -0,0 +1,185 @@
package com.docus.server.tool;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.util.StringUtils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
public class TableJsonRead {
/**
*
* @param path
* @param fileName
* @return
*/
public <T> T Read(String path,String fileName,Class<T> clazz){
String currentPath=CurrentPath();
path = currentPath+"\\"+path;
StringBuilder sb = new StringBuilder();
T dto =null;
File file = new File(path+"\\"+fileName);
try {
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
BufferedReader bufferedReader = null;
bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line;
while (!StringUtils.isEmpty(line = bufferedReader.readLine())) {
sb.append(line);
}
if (sb.length() > 0) {
ObjectMapper objectMapper = new ObjectMapper();
//dto = (T)JSONObject.parse(sb.toString());
dto= objectMapper.readValue(sb.toString(), clazz);
//dto = objectMapper.convertValue(o, new TypeReference<T>() { });
}
bufferedReader.close();
}
return dto;
}
catch (Exception ex){
ex.printStackTrace();
return null;
}
}
public <T> T Read(File file,Class<T> clazz) {
StringBuilder sb = new StringBuilder();
T dto =null;
try {
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
BufferedReader bufferedReader = null;
bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line;
while (!StringUtils.isEmpty(line = bufferedReader.readLine())) {
sb.append(line);
}
if (sb.length() > 0) {
ObjectMapper objectMapper = new ObjectMapper();
//dto = (T)JSONObject.parse(sb.toString());
dto= objectMapper.readValue(sb.toString(), clazz);
//dto = objectMapper.convertValue(o, new TypeReference<T>() { });
}
bufferedReader.close();
}
return dto;
}
catch (Exception ex){
ex.printStackTrace();
return null;
}
}
/**
* jar
* @return
*/
private String CurrentPath(){
File dir = new File(".");
String currentpath ="";
try {
currentpath = dir.getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
}
return currentpath;
}
/**
*
* @param path
* @param fileName
* @return
*/
public String ReadContent(String path,String fileName){
String currentPath=CurrentPath();
path = currentPath+"\\"+path;
StringBuilder sb = new StringBuilder();
File file = new File(path+"\\"+fileName);
try {
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
BufferedReader bufferedReader = null;
bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line;
while (!StringUtils.isEmpty(line = bufferedReader.readLine())) {
sb.append(line);
}
bufferedReader.close();
}
return sb.toString();
}
catch (Exception ex){
ex.printStackTrace();
return null;
}
}
/**
* json
* @param path
* @param fileName
* @param data json
* @return
*/
public void Save(String path,String fileName,String data){
String currentPath=CurrentPath();
path = currentPath+"\\"+path;
FileWriter fwriter = null;
try {
File file = new File(path);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
fwriter = new FileWriter(path+"\\"+fileName);
fwriter.write(data);
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
fwriter.flush();
fwriter.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}

@ -4,7 +4,7 @@ import com.docus.server.collect.infrastructure.dao.CollectTypeEnum;
public interface ITaskOriginalMessageService { public interface ITaskOriginalMessageService {
long insertTaskOriginalMessage(String deptXml, CollectTypeEnum collectType); long insertTaskOriginalMessage(String xml, CollectTypeEnum collectType);
void updateTaskOriginalMessage(long id); void updateTaskOriginalMessage(long id);

@ -0,0 +1,9 @@
package com.docus.server.ws.convert;
import com.docus.server.collect.infrastructure.dao.FlagEnum;
public interface IConverter<T> {
T convert(String message, FlagEnum flagEnum);
}

@ -1,14 +0,0 @@
package com.docus.server.ws.convert;
import com.docus.server.sys.common.pojo.dto.DeptDTO;
public interface IPowerDeptConverter {
/**
* ws dept xml
*
* @param message
* @return
*/
DeptDTO xmlToConvertDeptDTO(String message);
}

@ -1,14 +0,0 @@
package com.docus.server.ws.convert;
import com.docus.server.sys.common.pojo.dto.UserDTO;
public interface IPowerUserConverter {
/**
* ws user xml
*
* @param message
* @return
*/
UserDTO xmlToConvertUserDTO(String message);
}

@ -1,16 +0,0 @@
package com.docus.server.ws.convert;
import com.docus.server.collect.infrastructure.dao.FlagEnum;
import com.docus.server.record.pojo.dto.TBasicDTO;
public interface ITBasicConverter {
/**
* ws basic xml
*
* @param message
* @param update
* @return
*/
TBasicDTO xmlToConvertBasicDTO(String message, FlagEnum update);
}

@ -9,7 +9,7 @@ import com.docus.server.tool.ParamsUtils;
import com.docus.server.ws.IBasicService; import com.docus.server.ws.IBasicService;
import com.docus.server.ws.ITaskOriginalMessageService; import com.docus.server.ws.ITaskOriginalMessageService;
import com.docus.server.ws.IWsResult; import com.docus.server.ws.IWsResult;
import com.docus.server.ws.convert.ITBasicConverter; import com.docus.server.ws.convert.IConverter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -28,11 +28,11 @@ import javax.annotation.Resource;
public class BasicServiceImpl implements IBasicService { public class BasicServiceImpl implements IBasicService {
@Resource(name = "wsDeptResultImpl") @Resource(name = "wsDeptResultImpl")
private IWsResult wsResult; private IWsResult wsResult;
@Resource(name = "tBasicConverter")
private IConverter converter;
@Resource @Resource
private ITBasicService tBasicService; private ITBasicService tBasicService;
@Resource @Resource
private ITBasicConverter converter;
@Resource
private ITaskOriginalMessageService taskOriginalMessageService; private ITaskOriginalMessageService taskOriginalMessageService;
@Override @Override
@ -48,7 +48,7 @@ public class BasicServiceImpl implements IBasicService {
long id = 0; long id = 0;
try { try {
id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_BASIC); id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_BASIC);
tBasicDTO = converter.xmlToConvertBasicDTO(message, FlagEnum.INSERT); tBasicDTO = (TBasicDTO) converter.convert(message, FlagEnum.INSERT);
tBasicService.insertTBasic(tBasicDTO); tBasicService.insertTBasic(tBasicDTO);
return wsResult.ok(tBasicDTO.getParams()); return wsResult.ok(tBasicDTO.getParams());
} catch (Exception e) { } catch (Exception e) {
@ -71,7 +71,7 @@ public class BasicServiceImpl implements IBasicService {
long id = 0; long id = 0;
try { try {
id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_BASIC); id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_BASIC);
tBasicDTO = converter.xmlToConvertBasicDTO(message, FlagEnum.UPDATE); tBasicDTO = (TBasicDTO) converter.convert(message, FlagEnum.UPDATE);
tBasicService.updateTBasic(tBasicDTO); tBasicService.updateTBasic(tBasicDTO);
return wsResult.ok(tBasicDTO.getParams()); return wsResult.ok(tBasicDTO.getParams());
} catch (Exception e) { } catch (Exception e) {

@ -1,12 +1,13 @@
package com.docus.server.ws.impl; package com.docus.server.ws.impl;
import com.docus.server.collect.infrastructure.dao.CollectTypeEnum; import com.docus.server.collect.infrastructure.dao.CollectTypeEnum;
import com.docus.server.collect.infrastructure.dao.FlagEnum;
import com.docus.server.collect.service.CollectService; import com.docus.server.collect.service.CollectService;
import com.docus.server.sys.common.pojo.dto.DeptDTO; import com.docus.server.sys.common.pojo.dto.DeptDTO;
import com.docus.server.ws.IDeptServer; import com.docus.server.ws.IDeptServer;
import com.docus.server.ws.ITaskOriginalMessageService; import com.docus.server.ws.ITaskOriginalMessageService;
import com.docus.server.ws.IWsResult; import com.docus.server.ws.IWsResult;
import com.docus.server.ws.convert.IPowerDeptConverter; import com.docus.server.ws.convert.IConverter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -21,11 +22,11 @@ import javax.annotation.Resource;
public class DeptServerImpl implements IDeptServer { public class DeptServerImpl implements IDeptServer {
@Resource(name = "wsBasicResultImpl") @Resource(name = "wsBasicResultImpl")
private IWsResult wsResult; private IWsResult wsResult;
@Resource(name = "powerDeptConverter")
private IConverter converter;
@Resource @Resource
private CollectService collectService; private CollectService collectService;
@Resource @Resource
private IPowerDeptConverter converter;
@Resource
private ITaskOriginalMessageService taskOriginalMessageService; private ITaskOriginalMessageService taskOriginalMessageService;
@Override @Override
@ -38,7 +39,7 @@ public class DeptServerImpl implements IDeptServer {
try { try {
//此处需要存储原xml内容。 //此处需要存储原xml内容。
id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_DEPT); id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_DEPT);
deptDTO = converter.xmlToConvertDeptDTO(message); deptDTO = (DeptDTO) converter.convert(message, FlagEnum.INSERT);
collectService.toInsertOrUpdateDept(deptDTO); collectService.toInsertOrUpdateDept(deptDTO);
return wsResult.ok(deptDTO.getParams()); return wsResult.ok(deptDTO.getParams());
} catch (Exception e) { } catch (Exception e) {

@ -0,0 +1,548 @@
package com.docus.server.ws.impl;
import com.alibaba.fastjson.JSONObject;
import com.docus.core.util.DateUtil;
import com.docus.core.util.Func;
import com.docus.core.util.XmlUtil;
import com.docus.infrastructure.core.exception.BaseException;
import com.docus.infrastructure.core.utils.TableJsonRead;
import com.docus.server.collect.infrastructure.dao.CollectTypeEnum;
import com.docus.server.collect.infrastructure.dao.FlagEnum;
import com.docus.server.collect.infrastructure.pojo.dto.ReportDTO;
import com.docus.server.collect.service.CollectService;
import com.docus.server.tool.IdUtil;
import com.docus.server.ws.IReportServer;
import com.docus.server.ws.ITaskOriginalMessageService;
import com.docus.server.ws.IWsResult;
import com.docus.server.ws.convert.IConverter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.w3c.dom.Node;
import javax.annotation.Resource;
import java.util.Date;
/**
* @author wyb
* @date 20233313:42:36
*/
@Service
@Slf4j
public class ReportServerImpl implements IReportServer {
@Resource(name = "wsReportResultImpl")
private IWsResult wsResult;
@Resource(name = "reportConverter")
private IConverter converter;
@Resource
private CollectService collectService;
@Resource
private ITaskOriginalMessageService taskOriginalMessageService;
@Resource
private ReportService reportService;
@Override
public String pushSAReport(String message) {
log.info("收到手麻消息:{}", message);
ReportDTO reportDTO = new ReportDTO();
long id = 0;
try {
id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_SA_REPORT);
reportDTO = (ReportDTO) converter.convert(message, FlagEnum.INSERT);
medicalRecordService.receive(medicalRecord);
return wsResult.ok(reportDTO.getParams());
} catch (Exception e) {
log.error(e.getMessage(), e);
taskOriginalMessageService.updateTaskOriginalMessage(id);
reportDTO.getParams().put("msg", e.getMessage());
return wsResult.fail(reportDTO.getParams());
}
// 待做
log.info("收到手麻消息:{}", saReportMessage);
String msgId = "";
try {
XmlUtil xmlUtil = XmlUtil.of(saReportMessage);
Node msgNode = xmlUtil.getNode("/Request/Msg/ID");
msgId = msgNode.getTextContent();
ReportDto reportDto = getReportDtoByJSXML(xmlUtil);
verifyReportDto(reportDto);
reportService.report(reportDto);
return JSXMLResult.success(msgId);
} catch (BaseException baseException) {
log.error(baseException.getMessage(), baseException);
return JSXMLResult.failed(msgId, baseException.getMessage());
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
return JSXMLResult.failed(msgId, "系统故障!");
}
}
/**
* 使xml
*
* @param xmlUtil xml
* @return
*/
public ReportDto getReportDtoByJSXML(XmlUtil xmlUtil) {
TableJsonRead jsonRead = new TableJsonRead();
JSONObject tableTypeJson = jsonRead.Read("data-config", "js-table-type.json", JSONObject.class);
String jsReportConfigXml = jsonRead.ReadContent("data-config", "js-report-config.xml");
XmlUtil configXmlUtil = XmlUtil.of(jsReportConfigXml);
Node inpatientNoXpathNode = configXmlUtil.getNode("/REPORT/INPATIENT_NO");
String inpatientNoXpath = inpatientNoXpathNode.getTextContent();
Node inpatientNoNode = xmlUtil.getNode(inpatientNoXpath);
String inpatientNo = inpatientNoNode.getTextContent();
Node jzhXpathNode = configXmlUtil.getNode("/REPORT/JZH");
String jzhXpath = jzhXpathNode.getTextContent();
Node jzhNode = xmlUtil.getNode(jzhXpath);
String jzh = jzhNode.getTextContent();
Node admissTimesXpathNode = configXmlUtil.getNode("/REPORT/ADMISS_TIMES");
String admissTimesXpath = admissTimesXpathNode.getTextContent();
Node admissTimesNode = xmlUtil.getNode(admissTimesXpath);
Integer admissTimes = Integer.valueOf(admissTimesNode.getTextContent());
Node serialnumXpathNode = configXmlUtil.getNode("/REPORT/SERIALNUM");
String serialnumXpath = serialnumXpathNode.getTextContent();
Node serialnumNode = xmlUtil.getNode(serialnumXpath);
String serialnum = serialnumNode.getTextContent();
Node fileTitleXpathNode = configXmlUtil.getNode("/REPORT/FILE_TITLE");
String fileTitleXpath = fileTitleXpathNode.getTextContent();
Node fileTitleNode = xmlUtil.getNode(fileTitleXpath);
String fileTitle = fileTitleNode.getTextContent();
Node downUrlXpathNode = configXmlUtil.getNode("/REPORT/DOWNURL");
String downUrlXpath = downUrlXpathNode.getTextContent();
Node downUrlNode = xmlUtil.getNode(downUrlXpath);
String downUrl = downUrlNode.getTextContent();
Node tableTypeXpathNode = configXmlUtil.getNode("/REPORT/TABLE_TYPE");
String tableTypeXpath = tableTypeXpathNode.getTextContent();
Node tableTypeNode = xmlUtil.getNode(tableTypeXpath);
String tableType = tableTypeNode.getTextContent();
Node assortIdXpathNode = configXmlUtil.getNode("/REPORT/ASSORT_ID");
String assortIdXpath = assortIdXpathNode.getTextContent();
String assortId;
if (Func.isBlank(assortIdXpath)) {
// 如果没有配置 取value 属性如果value也未配置 取 tableType 对应的json配置最终方案默认 other 分段
Node assortIdValueNode = assortIdXpathNode.getAttributes().getNamedItem("value");
if (Func.isEmpty(assortIdValueNode)) {
assortId = assortIdValueNode.getNodeValue();
} else {
assortId = tableTypeJson.getString(tableType);
}
if (Func.isBlank(assortId)) {
assortId = tableTypeJson.getString("other");
}
} else {
Node assortIdNode = xmlUtil.getNode(assortIdXpath);
assortId = assortIdNode.getTextContent();
}
Node sysFlagXpathNode = configXmlUtil.getNode("/REPORT/SYSTEM_FLAG");
String sysFlagXpath = sysFlagXpathNode.getTextContent();
Node sysFlagNode = xmlUtil.getNode(sysFlagXpath);
String sysFlag = sysFlagNode.getTextContent();
Node fileSourceXpathNode = configXmlUtil.getNode("/REPORT/FILESOURCE");
String fileSourceXpath = fileSourceXpathNode.getTextContent();
String fileSource;
if (Func.isBlank(fileSourceXpath)) {
Node fileSourceValueNode = fileSourceXpathNode.getAttributes().getNamedItem("value");
if (Func.isEmpty(fileSourceValueNode)) {
fileSource = null;
} else {
fileSource = fileSourceValueNode.getNodeValue();
}
} else {
Node fileSourceNode = xmlUtil.getNode(fileSourceXpath);
fileSource = fileSourceNode.getTextContent();
}
Node fileStorageTypeXpathNode = configXmlUtil.getNode("/REPORT/FILE_STORAGE_TYPE");
String fileStorageTypeXpath = fileStorageTypeXpathNode.getTextContent();
String fileStorageType;
if (Func.isBlank(fileStorageTypeXpath)) {
Node filestoragetypeValueNode = fileStorageTypeXpathNode.getAttributes().getNamedItem("value");
if (Func.isEmpty(filestoragetypeValueNode)) {
fileStorageType = "1";
} else {
fileStorageType = filestoragetypeValueNode.getNodeValue();
}
} else {
Node filestoragetypeNode = xmlUtil.getNode(fileStorageTypeXpath);
fileStorageType = filestoragetypeNode.getTextContent();
}
ReportDto reportDto = new ReportDto();
reportDto.setAdmisstimes(admissTimes);
reportDto.setInpatientNo(inpatientNo);
reportDto.setJzh(jzh);
reportDto.setSerialnum(serialnum);
reportDto.setFileTitle(fileTitle);
reportDto.setDownUrl(downUrl);
reportDto.setAssortId(assortId);
reportDto.setSysFlag(sysFlag);
reportDto.setFileSource(fileSource);
reportDto.setFilestoragetype(fileStorageType);
return reportDto;
}
@Override
public String pushICUReport(String icuReportMessage) {
log.info("收到重症消息:{}", icuReportMessage);
String msgId = "";
try {
XmlUtil xmlUtil = XmlUtil.of(icuReportMessage);
Node msgNode = xmlUtil.getNode("/Request/Msg/ID");
msgId = msgNode.getTextContent();
ReportDto reportDto = getReportDtoByJSXML(xmlUtil);
verifyReportDto(reportDto);
reportService.report(reportDto);
return JSXMLResult.success(msgId);
} catch (BaseException baseException) {
log.error(baseException.getMessage(), baseException);
return JSXMLResult.failed(msgId, baseException.getMessage());
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
return JSXMLResult.failed(msgId, "系统故障!");
}
}
@Override
public String pushAddInspectionReport(String inspectionReportMessage) {
log.info("收到检查报告新增消息:{}", inspectionReportMessage);
String msgId = "";
String sender = "";
String receiver = "";
try {
XmlUtil xmlUtil = XmlUtil.of(inspectionReportMessage);
msgId = xmlUtil.getNode("/POOR_HIP1008/id/@extension").getNodeValue();
sender = xmlUtil.getNode("/POOR_HIP1008/sender/device/id/item/@extension").getNodeValue();
receiver = xmlUtil.getNode("/POOR_HIP1008/receiver/device/id/item/@extension").getNodeValue();
ReportDto reportDto = getReportDtoByInspectionInsert(xmlUtil);
verifyReportDto(reportDto);
reportService.report(reportDto);
return insertSuccess(msgId, sender, receiver);
} catch (BaseException baseException) {
log.error(baseException.getMessage(), baseException);
return insertFailed(msgId, sender, receiver, baseException.getMessage());
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
return insertFailed(msgId, sender, receiver, "系统错误!");
}
}
@Override
public String pushUpdateInspectionReport(String inspectionReportMessage) {
log.info("收到检查报告更新消息{}", inspectionReportMessage);
String msgId = "";
String sender = "";
String receiver = "";
try {
XmlUtil xmlUtil = XmlUtil.of(inspectionReportMessage);
msgId = xmlUtil.getNode("/POOR_HIP1009/id/@extension").getNodeValue();
sender = xmlUtil.getNode("/POOR_HIP1009/sender/device/id/item/@extension").getNodeValue();
receiver = xmlUtil.getNode("/POOR_HIP1009/receiver/device/id/item/@extension").getNodeValue();
ReportDto reportDto = getReportDtoByInspectionUpdate(xmlUtil);
verifyReportDto(reportDto);
reportService.report(reportDto);
return updateSuccess(msgId, sender, receiver);
} catch (BaseException baseException) {
log.error(baseException.getMessage(), baseException);
return updateFailed(msgId, sender, receiver, baseException.getMessage());
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
return updateFailed(msgId, sender, receiver, "系统错误");
}
}
/**
*
*
* @param reportDto
* @throws BaseException
*/
private void verifyReportDto(ReportDto reportDto) throws BaseException {
if (Func.isBlank(reportDto.getInpatientNo())) {
throw new BaseException("住院号不能为空!");
}
if (Func.isEmpty(reportDto.getAdmisstimes()) && Func.isBlank(reportDto.getJzh())) {
throw new BaseException("当住院号与住院次数都为空时,住院流水号/记账号不能为空!");
}
if (Func.isBlank(reportDto.getFileTitle())) {
throw new BaseException("文件名不能为空!");
}
if (Func.isBlank(reportDto.getDownUrl())) {
throw new BaseException("文件下载路径不能为空!");
}
}
public ReportDto getReportDtoByInspectionInsert(XmlUtil inspectionInsertXmlUtil) {
Node inpatientNoNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.12']/@extension");
String inpatientNo = inpatientNoNode.getNodeValue();
Node admissTimesNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/item[@root='1.2.156.112635.1.2.1.7']/@extension");
Integer admissTimes = Integer.valueOf(admissTimesNode.getNodeValue());
// 检查报告单号标识
Node reportFlagNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.32']/@extension");
String reportFlag = reportFlagNode.getNodeValue();
//电子申请单编号
Node eafNoNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.24']/@extension");
String eafNo = eafNoNode.getNodeValue();
String serialnum = reportFlag + "@" + eafNo;
Node assortIdNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName");
String assortId = assortIdNode.getNodeValue();
Node sysFlagNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName");
String sysFlag = sysFlagNode.getNodeValue();
Node fileTitleNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查报告类型']/observation/code/@displayName");
String fileTitle = fileTitleNode.getNodeValue();
Node downUrlNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告图像']/report/entry[@displayName='检查报告图像URL地址']/observation/value");
String downUrl = downUrlNode.getTextContent();
ReportDto reportDto = new ReportDto();
reportDto.setAdmisstimes(admissTimes);
reportDto.setInpatientNo(inpatientNo);
reportDto.setSerialnum(serialnum);
reportDto.setFileTitle(fileTitle);
reportDto.setDownUrl(downUrl);
reportDto.setAssortId(assortId);
reportDto.setSysFlag(sysFlag);
reportDto.setFileSource("1");
reportDto.setFilestoragetype("1");
return reportDto;
}
public ReportDto getReportDtoByInspectionUpdate(XmlUtil inspectionUpdateXmlUtil) {
Node inpatientNoNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.12']/@extension");
String inpatientNo = inpatientNoNode.getNodeValue();
Node admissTimesNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/item[@root='1.2.156.112635.1.2.1.7']/@extension");
Integer admissTimes = Integer.valueOf(admissTimesNode.getNodeValue());
// 检查报告单号标识
Node reportFlagNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.32']/@extension");
String reportFlag = reportFlagNode.getNodeValue();
//电子申请单编号
Node eafNoNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.24']/@extension");
String eafNo = eafNoNode.getNodeValue();
String serialnum = reportFlag + "@" + eafNo;
Node assortIdNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName");
String assortId = assortIdNode.getNodeValue();
Node sysFlagNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName");
String sysFlag = sysFlagNode.getNodeValue();
Node fileTitleNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查报告类型']/observation/code/@displayName");
String fileTitle = fileTitleNode.getNodeValue();
Node downUrlNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告图像']/report/entry[@displayName='检查报告图像URL地址']/observation/value");
String downUrl = downUrlNode.getTextContent();
ReportDto reportDto = new ReportDto();
reportDto.setAdmisstimes(admissTimes);
reportDto.setInpatientNo(inpatientNo);
reportDto.setSerialnum(serialnum);
reportDto.setFileTitle(fileTitle);
reportDto.setDownUrl(downUrl);
reportDto.setAssortId(assortId);
reportDto.setSysFlag(sysFlag);
reportDto.setFileSource("1");
reportDto.setFilestoragetype("1");
return reportDto;
}
/**
*
*
* @param msgId id
* @param sender
* @param receiver
* @return
*/
public String insertSuccess(String msgId, String sender, String receiver) {
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<MCCI_IN000002UV01 ITSVersion=\"XML_1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:hl7-org:v3 ../multicacheschemas/MCCI_IN000002UV01.xsd\" xmlns=\"urn:hl7-org:v3\">\n" +
"\t<id root=\"2.16.156.10011.0\" extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
"\t<creationTime value=\"" + createTime + "\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\" displayable=\"true\"/>\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<processingModeCode/>\n" +
"\t<acceptAckCode code=\"AL\"/>\n" +
"\t<receiver typeCode=\"RCV\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.1\" extension=\"" + receiver + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</receiver>\n" +
"\t<sender typeCode=\"SND\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.2\" extension=\"" + sender + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<acknowledgement typeCode=\"AA\">\n" +
"\t\t<targetMessage>\n" +
"\t\t\t<id root=\"2.16.156.10011.0\" extension=\"" + msgId + "\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail typeCode=\"I\">\n" +
" <text value=\"成功!\"/> \n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</MCCI_IN000002UV01>\n";
}
/**
*
*
* @param msgId id
* @param sender
* @param receiver
* @return
*/
public String insertFailed(String msgId, String sender, String receiver, String failedMessage) {
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<MCCI_IN000002UV01 ITSVersion=\"XML_1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:hl7-org:v3 ../multicacheschemas/MCCI_IN000002UV01.xsd\" xmlns=\"urn:hl7-org:v3\">\n" +
"\t<id root=\"2.16.156.10011.0\" extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
"\t<creationTime value=\"" + createTime + "\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\" displayable=\"true\"/>\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<processingModeCode/>\n" +
"\t<acceptAckCode code=\"AL\"/>\n" +
"\t<receiver typeCode=\"RCV\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.1\" extension=\"" + receiver + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</receiver>\n" +
"\t<sender typeCode=\"SND\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.2\" extension=\"" + sender + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<acknowledgement typeCode=\"AE\">\n" +
"\t\t<targetMessage>\n" +
"\t\t\t<id root=\"2.16.156.10011.0\" extension=\"" + msgId + "\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail typeCode=\"I\">\n" +
" <text value=\"" + failedMessage + "\"/> \n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</MCCI_IN000002UV01>\n";
}
/**
*
*
* @param msgId id
* @param sender
* @param receiver
* @return
*/
public String updateSuccess(String msgId, String sender, String receiver) {
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<MCCI_IN000002UV01 ITSVersion=\"XML_1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:hl7-org:v3 ../multicacheschemas/MCCI_IN000002UV01.xsd\" xmlns=\"urn:hl7-org:v3\">\n" +
"\t<id root=\"2.16.156.10011.0\" extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
"\t<creationTime value=\"" + createTime + "\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\" displayable=\"true\"/>\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<processingModeCode/>\n" +
"\t<acceptAckCode code=\"AL\"/>\n" +
"\t<receiver typeCode=\"RCV\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.1\" extension=\"" + receiver + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</receiver>\n" +
"\t<sender typeCode=\"SND\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.2\" extension=\"" + sender + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<acknowledgement typeCode=\"AA\">\n" +
"\t\t<targetMessage>\n" +
"\t\t\t<id root=\"2.16.156.10011.0\" extension=\"" + msgId + "\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail typeCode=\"I\">\n" +
" <text value=\"成功!\"/> \n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</MCCI_IN000002UV01>\n";
}
/**
*
*
* @param msgId id
* @param sender
* @param receiver
* @param failedMessage
* @return
*/
public String updateFailed(String msgId, String sender, String receiver, String failedMessage) {
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<MCCI_IN000002UV01 ITSVersion=\"XML_1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:hl7-org:v3 ../multicacheschemas/MCCI_IN000002UV01.xsd\" xmlns=\"urn:hl7-org:v3\">\n" +
"\t<id root=\"2.16.156.10011.0\" extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
"\t<creationTime value=\"" + createTime + "\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\" displayable=\"true\"/>\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<processingModeCode/>\n" +
"\t<acceptAckCode code=\"AL\"/>\n" +
"\t<receiver typeCode=\"RCV\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.1\" extension=\"" + receiver + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</receiver>\n" +
"\t<sender typeCode=\"SND\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.2\" extension=\"" + sender + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<acknowledgement typeCode=\"AE\">\n" +
"\t\t<targetMessage>\n" +
"\t\t\t<id root=\"2.16.156.10011.0\" extension=\"" + msgId + "\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail typeCode=\"I\">\n" +
" <text value=\"" + failedMessage + "\"/> \n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</MCCI_IN000002UV01>\n";
}
}

@ -25,8 +25,8 @@ public class TaskOriginalMessageServiceImpl extends ServiceImpl<TaskOriginalMess
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public long insertTaskOriginalMessage(String deptXml, CollectTypeEnum collectType) { public long insertTaskOriginalMessage(String xml, CollectTypeEnum collectType) {
TaskOriginalMessage taskOriginalMessage = converter.toConvertTaskOriginalMessageDO(deptXml, collectType); TaskOriginalMessage taskOriginalMessage = converter.toConvertTaskOriginalMessageDO(xml, collectType);
super.save(taskOriginalMessage); super.save(taskOriginalMessage);
return taskOriginalMessage.getId(); return taskOriginalMessage.getId();
} }

@ -1,12 +1,13 @@
package com.docus.server.ws.impl; package com.docus.server.ws.impl;
import com.docus.server.collect.infrastructure.dao.CollectTypeEnum; import com.docus.server.collect.infrastructure.dao.CollectTypeEnum;
import com.docus.server.collect.infrastructure.dao.FlagEnum;
import com.docus.server.collect.service.CollectService; import com.docus.server.collect.service.CollectService;
import com.docus.server.sys.common.pojo.dto.UserDTO; import com.docus.server.sys.common.pojo.dto.UserDTO;
import com.docus.server.ws.ITaskOriginalMessageService; import com.docus.server.ws.ITaskOriginalMessageService;
import com.docus.server.ws.IUserServer; import com.docus.server.ws.IUserServer;
import com.docus.server.ws.IWsResult; import com.docus.server.ws.IWsResult;
import com.docus.server.ws.convert.IPowerUserConverter; import com.docus.server.ws.convert.IConverter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -21,11 +22,11 @@ import javax.annotation.Resource;
public class UserServerImpl implements IUserServer { public class UserServerImpl implements IUserServer {
@Resource(name = "wsUserResultImpl") @Resource(name = "wsUserResultImpl")
private IWsResult wsResult; private IWsResult wsResult;
@Resource(name = "powerUserConverter")
private IConverter converter;
@Resource @Resource
private CollectService collectService; private CollectService collectService;
@Resource @Resource
private IPowerUserConverter converter;
@Resource
private ITaskOriginalMessageService taskOriginalMessageService; private ITaskOriginalMessageService taskOriginalMessageService;
@Override @Override
@ -37,7 +38,7 @@ public class UserServerImpl implements IUserServer {
try { try {
id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_USER); id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_USER);
userDTO = converter.xmlToConvertUserDTO(message); userDTO = (UserDTO) converter.convert(message, FlagEnum.INSERT);
collectService.toInsertOrUpdateUser(userDTO); collectService.toInsertOrUpdateUser(userDTO);
return wsResult.ok(userDTO.getParams()); return wsResult.ok(userDTO.getParams());
} catch (Exception e) { } catch (Exception e) {

Loading…
Cancel
Save