|
|
|
@ -0,0 +1,440 @@
|
|
|
|
|
package com.docus.server.collect.collector;
|
|
|
|
|
|
|
|
|
|
import com.docus.core.util.Func;
|
|
|
|
|
import com.docus.server.collect.entity.Jzh;
|
|
|
|
|
import com.docus.server.collect.entity.TBasic;
|
|
|
|
|
import com.docus.server.collect.entity.TSeal;
|
|
|
|
|
import com.docus.server.collect.enums.DownWayEnum;
|
|
|
|
|
import com.docus.server.collect.service.FileReportService;
|
|
|
|
|
import com.docus.server.collect.service.dto.ReportFileInfoDTO;
|
|
|
|
|
import com.docus.server.collect.util.JaxWsDynamicClientUtil;
|
|
|
|
|
import com.docus.server.collect.util.XmlUtil;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
import org.w3c.dom.Node;
|
|
|
|
|
import org.w3c.dom.NodeList;
|
|
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检验报告采集
|
|
|
|
|
*
|
|
|
|
|
* @author wyb
|
|
|
|
|
*/
|
|
|
|
|
@Component("LisSystemCollector")
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class LisSystemCollector {
|
|
|
|
|
@Value("${docus.report.lis.url}")
|
|
|
|
|
private String url;
|
|
|
|
|
@Value("${docus.report.lis.assortId}")
|
|
|
|
|
private String assortId;
|
|
|
|
|
@Value("${docus.report.lis.sysFlag}")
|
|
|
|
|
private String sysFlag;
|
|
|
|
|
@Value("${docus.report.lis.method}")
|
|
|
|
|
private String method;
|
|
|
|
|
@Value("${docus.report.lis.namespaceUri:}")
|
|
|
|
|
private String namespaceUri;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private FileReportService fileReportService;
|
|
|
|
|
|
|
|
|
|
@Value("${docus.report.lis.incrDays:}")
|
|
|
|
|
private String incrDays;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 采集检验报告的参数
|
|
|
|
|
*
|
|
|
|
|
* @param basic 患者信息
|
|
|
|
|
*/
|
|
|
|
|
public void collect(TBasic basic) {
|
|
|
|
|
String jzh = basic.getJzh();
|
|
|
|
|
String admissDate = basic.getAdmissDate();
|
|
|
|
|
String disDate = basic.getDisDate();
|
|
|
|
|
if (Func.isBlank(admissDate) || Func.isBlank(disDate)) {
|
|
|
|
|
log.error("采集失败,jzh:{} 患者住院或者出院时间为空!", jzh);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 报告的开始和结束时间就是入院时间 和 出院时间+15天
|
|
|
|
|
String beginDateTime = admissDate;
|
|
|
|
|
LocalDateTime endLocalDateTime = Func.parseDateTime(disDate).plusDays(15L);
|
|
|
|
|
String endDateTime = Func.formatDateTime(endLocalDateTime);
|
|
|
|
|
// 普通的检验报告和 微生物检验报告
|
|
|
|
|
|
|
|
|
|
List<ReportFileInfoDTO> reportFileInfoDTOList = new ArrayList<>();
|
|
|
|
|
if (Func.isNotBlank(incrDays)) {
|
|
|
|
|
LocalDateTime qrBeginLocalDateTime = Func.parseDateTime(beginDateTime);
|
|
|
|
|
int limitDays = Integer.parseInt(incrDays);
|
|
|
|
|
while (true) {
|
|
|
|
|
LocalDateTime qrEndLocalDateTime = qrBeginLocalDateTime.plusDays(limitDays);
|
|
|
|
|
if (qrBeginLocalDateTime.isAfter(endLocalDateTime)) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
boolean endFlag = false;
|
|
|
|
|
if (qrEndLocalDateTime.isAfter(endLocalDateTime)) {
|
|
|
|
|
qrEndLocalDateTime = endLocalDateTime;
|
|
|
|
|
endFlag = true;
|
|
|
|
|
}
|
|
|
|
|
String qrBeginDateTime = Func.formatDateTime(qrBeginLocalDateTime);
|
|
|
|
|
String qrEndDateTime = Func.formatDateTime(qrEndLocalDateTime);
|
|
|
|
|
String collectDataNormal = collectData(new Jzh(jzh), qrBeginDateTime, qrEndDateTime, 0);
|
|
|
|
|
String collectDataMtf = collectData(new Jzh(jzh), qrBeginDateTime, qrEndDateTime, 1);
|
|
|
|
|
List<ReportFileInfoDTO> reportFileInfoDtoList1 = LisSystemCollectConverter.convert(collectDataNormal);
|
|
|
|
|
List<ReportFileInfoDTO> reportFileInfoDtoList2 = LisSystemCollectConverter.convert(collectDataMtf);
|
|
|
|
|
reportFileInfoDTOList.addAll(reportFileInfoDtoList1);
|
|
|
|
|
reportFileInfoDTOList.addAll(reportFileInfoDtoList2);
|
|
|
|
|
if (endFlag) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
qrBeginLocalDateTime = qrEndLocalDateTime;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
String collectDataNormal = collectData(new Jzh(jzh), beginDateTime, endDateTime, 0);
|
|
|
|
|
String collectDataMtf = collectData(new Jzh(jzh), beginDateTime, endDateTime, 1);
|
|
|
|
|
List<ReportFileInfoDTO> reportFileInfoDtoList1 = LisSystemCollectConverter.convert(collectDataNormal);
|
|
|
|
|
List<ReportFileInfoDTO> reportFileInfoDtoList2 = LisSystemCollectConverter.convert(collectDataMtf);
|
|
|
|
|
reportFileInfoDTOList.addAll(reportFileInfoDtoList1);
|
|
|
|
|
reportFileInfoDTOList.addAll(reportFileInfoDtoList2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (ReportFileInfoDTO reportFileInfoDTO : reportFileInfoDTOList) {
|
|
|
|
|
if (!isBelongToPatient(reportFileInfoDTO, basic)) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
reportFileInfoDTO.setPatientId(basic.getPatientId());
|
|
|
|
|
reportFileInfoDTO.setAssortId(assortId);
|
|
|
|
|
reportFileInfoDTO.setSysFlag(sysFlag);
|
|
|
|
|
fileReportService.saveDownloadTaskAndReport(reportFileInfoDTO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据封存病案信息和与之对应的归档基础信息,进行Lis报告的 封存病案采集
|
|
|
|
|
*
|
|
|
|
|
* @param tSeal 封存病案信息
|
|
|
|
|
* @param tBasic 归档基础信息
|
|
|
|
|
* @date 2024/1/10 17:04
|
|
|
|
|
* @author YongBin Wen
|
|
|
|
|
*/
|
|
|
|
|
public void sealCollect(TSeal tSeal, TBasic tBasic) {
|
|
|
|
|
Date admissDate = tSeal.getAdmissDate();
|
|
|
|
|
String disDateStr = (Objects.isNull(tBasic) || Func.isBlank(tBasic.getDisDate())) ? null : tBasic.getDisDate();
|
|
|
|
|
String jzh = tSeal.getJzh();
|
|
|
|
|
if (Objects.isNull(admissDate)) {
|
|
|
|
|
log.error("封存病案采集失败,patientId:{} 患者住院时间为空!", tSeal.getPatientId());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 报告的开始和结束时间就是入院时间 和 出院时间+15天(没有就取现在时间)
|
|
|
|
|
String beginDateTime = Func.formatDateTime(admissDate);
|
|
|
|
|
String endDateTime = Func.formatDateTime(new Date());
|
|
|
|
|
if (Func.isNotBlank(disDateStr)) {
|
|
|
|
|
LocalDateTime endLocalDateTime = Func.parseDateTime(disDateStr).plusDays(15L);
|
|
|
|
|
endDateTime = Func.formatDateTime(endLocalDateTime);
|
|
|
|
|
}
|
|
|
|
|
LocalDateTime endLocalDateTime = Func.parseDateTime(endDateTime);
|
|
|
|
|
// 普通的检验报告和 微生物检验报告
|
|
|
|
|
List<ReportFileInfoDTO> reportFileInfoDTOList = new ArrayList<>();
|
|
|
|
|
if (Func.isNotBlank(incrDays)) {
|
|
|
|
|
LocalDateTime qrBeginLocalDateTime = Func.parseDateTime(beginDateTime);
|
|
|
|
|
int limitDays = Integer.parseInt(incrDays);
|
|
|
|
|
while (true) {
|
|
|
|
|
LocalDateTime qrEndLocalDateTime = qrBeginLocalDateTime.plusDays(limitDays);
|
|
|
|
|
if (qrBeginLocalDateTime.isAfter(endLocalDateTime)) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
boolean endFlag = false;
|
|
|
|
|
if (qrEndLocalDateTime.isAfter(endLocalDateTime)) {
|
|
|
|
|
qrEndLocalDateTime = endLocalDateTime;
|
|
|
|
|
endFlag = true;
|
|
|
|
|
}
|
|
|
|
|
String qrBeginDateTime = Func.formatDateTime(qrBeginLocalDateTime);
|
|
|
|
|
String qrEndDateTime = Func.formatDateTime(qrEndLocalDateTime);
|
|
|
|
|
String collectDataNormal = collectData(new Jzh(jzh), qrBeginDateTime, qrEndDateTime, 0);
|
|
|
|
|
String collectDataMtf = collectData(new Jzh(jzh), qrBeginDateTime, qrEndDateTime, 1);
|
|
|
|
|
List<ReportFileInfoDTO> reportFileInfoDtoList1 = LisSystemCollectConverter.convert(collectDataNormal);
|
|
|
|
|
List<ReportFileInfoDTO> reportFileInfoDtoList2 = LisSystemCollectConverter.convert(collectDataMtf);
|
|
|
|
|
reportFileInfoDTOList.addAll(reportFileInfoDtoList1);
|
|
|
|
|
reportFileInfoDTOList.addAll(reportFileInfoDtoList2);
|
|
|
|
|
if (endFlag) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
qrBeginLocalDateTime = qrEndLocalDateTime;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
String collectDataNormal = collectData(new Jzh(jzh), beginDateTime, endDateTime, 0);
|
|
|
|
|
String collectDataMtf = collectData(new Jzh(jzh), beginDateTime, endDateTime, 1);
|
|
|
|
|
List<ReportFileInfoDTO> reportFileInfoDtoList1 = LisSystemCollectConverter.convert(collectDataNormal);
|
|
|
|
|
List<ReportFileInfoDTO> reportFileInfoDtoList2 = LisSystemCollectConverter.convert(collectDataMtf);
|
|
|
|
|
reportFileInfoDTOList.addAll(reportFileInfoDtoList1);
|
|
|
|
|
reportFileInfoDTOList.addAll(reportFileInfoDtoList2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (ReportFileInfoDTO reportFileInfoDTO : reportFileInfoDTOList) {
|
|
|
|
|
reportFileInfoDTO.setPatientId(tSeal.getPatientId());
|
|
|
|
|
reportFileInfoDTO.setAssortId(assortId);
|
|
|
|
|
reportFileInfoDTO.setSysFlag(sysFlag);
|
|
|
|
|
fileReportService.saveDownloadTaskAndSealReport(reportFileInfoDTO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private boolean isBelongToPatient(ReportFileInfoDTO reportFileInfoDTO, TBasic basic) {
|
|
|
|
|
// todo 验证报告是否属于患者,暂时描述说查询条件是患者唯一,不需要实现
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询检验报告
|
|
|
|
|
*
|
|
|
|
|
* @param basic 患者信息
|
|
|
|
|
* @param beginDateTime 报告开始时间 入院时间
|
|
|
|
|
* @param endDateTime 报告结束时间 出院时间
|
|
|
|
|
* @param microbeTestFlag 查细菌等微生物检验报告 1,空和0 是普通
|
|
|
|
|
* @return 检验报告结果
|
|
|
|
|
*/
|
|
|
|
|
private String collectData(TBasic basic, String beginDateTime, String endDateTime, int microbeTestFlag) {
|
|
|
|
|
String contextWorkId = Func.randomUUID();
|
|
|
|
|
Object[] params = createQrParams(basic, beginDateTime, endDateTime, microbeTestFlag);
|
|
|
|
|
log.info("[{}]:LIS检验报告采集地址:{},方法:{},命名空间:{},参数:{}", contextWorkId, url, method, namespaceUri, Func.toJson(params));
|
|
|
|
|
String result = JaxWsDynamicClientUtil.send(url, namespaceUri, method, params);
|
|
|
|
|
log.info("[{}]:LIS检验报告采集结果为:{}", contextWorkId, result);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询检验报告的ws参数
|
|
|
|
|
*
|
|
|
|
|
* @param basic 患者信息
|
|
|
|
|
* @param beginDateTime 报告开始时间
|
|
|
|
|
* @param endDateTime 报告结束时间
|
|
|
|
|
* @param microbeTestFlag 查细菌等微生物检验报告 1,空和0 是普通
|
|
|
|
|
* @return 检验报告
|
|
|
|
|
*/
|
|
|
|
|
private Object[] createQrParams(TBasic basic, String beginDateTime, String endDateTime, int microbeTestFlag) {
|
|
|
|
|
String param1 = "<ESBEntry>" +
|
|
|
|
|
" <AccessControl>" +
|
|
|
|
|
" <SysFlag>1</SysFlag>" +
|
|
|
|
|
" <UserName>WZHBAGL</UserName>" +
|
|
|
|
|
" <Password>WZHBAGL_1127</Password>" +
|
|
|
|
|
" <Fid>BS03102</Fid>" +
|
|
|
|
|
" <OrderNo>BS03102S51001</OrderNo>" +
|
|
|
|
|
" <SUBOR_HOSPITAL_DISTRICT>GZ</SUBOR_HOSPITAL_DISTRICT>" +
|
|
|
|
|
" </AccessControl>" +
|
|
|
|
|
" <MessageHeader>" +
|
|
|
|
|
" <Fid>BS03102</Fid>" +
|
|
|
|
|
" <OrderNo>BS03102S51001</OrderNo>" +
|
|
|
|
|
" <SourceSysCode>S51</SourceSysCode>" +
|
|
|
|
|
" <TargetSysCode>S00</TargetSysCode>" +
|
|
|
|
|
" <MsgDate>" + Func.formatDateTime(LocalDateTime.now()) + "</MsgDate>" +
|
|
|
|
|
" </MessageHeader>" +
|
|
|
|
|
" <RequestOption>" +
|
|
|
|
|
" <triggerData>0</triggerData>" +
|
|
|
|
|
" <dataAmount>500</dataAmount>" +
|
|
|
|
|
" </RequestOption>" +
|
|
|
|
|
" <MsgInfo flag=\"1\">" +
|
|
|
|
|
" <Msg/>" +
|
|
|
|
|
" <distinct value=\"0\"/>" +
|
|
|
|
|
" <query item=\"WS_INPUT\" compy=\" = \" value=\" 1 \" splice=\"AND\"/>" +
|
|
|
|
|
" <query_ws action=\"Q_WS_JYBGLBCX\">" +
|
|
|
|
|
" <content>" +
|
|
|
|
|
" <Request>" +
|
|
|
|
|
" <Msg>" +
|
|
|
|
|
" <VUID/>" +
|
|
|
|
|
" <OUTHOSP_INDEX_NO/>" +
|
|
|
|
|
" <OUTHOSP_NO/>" +
|
|
|
|
|
" <INHOSP_INDEX_NO/>" +
|
|
|
|
|
" <INHOSP_NO/>" +
|
|
|
|
|
" <EMPI_ID>" + basic.getEmpId() + "</EMPI_ID/>" +
|
|
|
|
|
" <TEST_PAT_SOURCE_CODE/>" +
|
|
|
|
|
" <MICROBE_TEST_FLAG>" + microbeTestFlag + "</MICROBE_TEST_FLAG>" +
|
|
|
|
|
" <BEGIN_DATETIME>" + beginDateTime + "</BEGIN_DATETIME>" +
|
|
|
|
|
" <END_DATETIME>" + endDateTime + "</END_DATETIME>" +
|
|
|
|
|
" </Msg>" +
|
|
|
|
|
" </Request>" +
|
|
|
|
|
" </content>" +
|
|
|
|
|
" </query_ws>" +
|
|
|
|
|
" </MsgInfo>" +
|
|
|
|
|
" <GroupInfo flag=\"0\">" +
|
|
|
|
|
" <AS ID=\"\" linkField=\"\"/>" +
|
|
|
|
|
" </GroupInfo>" +
|
|
|
|
|
"</ESBEntry>";
|
|
|
|
|
|
|
|
|
|
return new Object[]{param1};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询检验报告
|
|
|
|
|
*
|
|
|
|
|
* @param jzh 患者信息jzh
|
|
|
|
|
* @param beginDateTime 报告开始时间 入院时间
|
|
|
|
|
* @param endDateTime 报告结束时间 出院时间
|
|
|
|
|
* @param microbeTestFlag 查细菌等微生物检验报告 1,空和0 是普通
|
|
|
|
|
* @return 检验报告结果
|
|
|
|
|
*/
|
|
|
|
|
public String collectData(Jzh jzh, String beginDateTime, String endDateTime, int microbeTestFlag) {
|
|
|
|
|
String contextWorkId = Func.randomUUID();
|
|
|
|
|
Object[] params = createQrParams(jzh, beginDateTime, endDateTime, microbeTestFlag);
|
|
|
|
|
log.info("[{}]:LIS检验报告采集地址:{},方法:{},命名空间:{},参数:{}", contextWorkId, url, method, namespaceUri, Func.toJson(params));
|
|
|
|
|
String result = JaxWsDynamicClientUtil.send(url, namespaceUri, method, params);
|
|
|
|
|
log.info("[{}]:LIS检验报告采集结果为:{}", contextWorkId, result);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询检验报告的ws参数
|
|
|
|
|
*
|
|
|
|
|
* @param jzh 患者信息jzh
|
|
|
|
|
* @param beginDateTime 报告开始时间
|
|
|
|
|
* @param endDateTime 报告结束时间
|
|
|
|
|
* @param microbeTestFlag 查细菌等微生物检验报告 1,空和0 是普通
|
|
|
|
|
* @return 检验报告
|
|
|
|
|
*/
|
|
|
|
|
private Object[] createQrParams(Jzh jzh, String beginDateTime, String endDateTime, int microbeTestFlag) {
|
|
|
|
|
String param1 = "<ESBEntry>" +
|
|
|
|
|
" <AccessControl>" +
|
|
|
|
|
" <SysFlag>1</SysFlag>" +
|
|
|
|
|
" <UserName>WZHBAGL</UserName>" +
|
|
|
|
|
" <Password>WZHBAGL_1127</Password>" +
|
|
|
|
|
" <Fid>BS03102</Fid>" +
|
|
|
|
|
" <OrderNo>BS03102S51001</OrderNo>" +
|
|
|
|
|
" <SUBOR_HOSPITAL_DISTRICT>GZ</SUBOR_HOSPITAL_DISTRICT>" +
|
|
|
|
|
" </AccessControl>" +
|
|
|
|
|
" <MessageHeader>" +
|
|
|
|
|
" <Fid>BS03102</Fid>" +
|
|
|
|
|
" <OrderNo>BS03102S51001</OrderNo>" +
|
|
|
|
|
" <SourceSysCode>S51</SourceSysCode>" +
|
|
|
|
|
" <TargetSysCode>S00</TargetSysCode>" +
|
|
|
|
|
" <MsgDate>" + Func.formatDateTime(LocalDateTime.now()) + "</MsgDate>" +
|
|
|
|
|
" </MessageHeader>" +
|
|
|
|
|
" <RequestOption>" +
|
|
|
|
|
" <triggerData>0</triggerData>" +
|
|
|
|
|
" <dataAmount>500</dataAmount>" +
|
|
|
|
|
" </RequestOption>" +
|
|
|
|
|
" <MsgInfo flag=\"1\">" +
|
|
|
|
|
" <Msg/>" +
|
|
|
|
|
" <distinct value=\"0\"/>" +
|
|
|
|
|
" <query item=\"WS_INPUT\" compy=\" = \" value=\" 1 \" splice=\"AND\"/>" +
|
|
|
|
|
" <query_ws action=\"Q_WS_JYBGLBCX\">" +
|
|
|
|
|
" <content>" +
|
|
|
|
|
" <Request>" +
|
|
|
|
|
" <Msg>" +
|
|
|
|
|
" <VUID/>" +
|
|
|
|
|
" <OUTHOSP_INDEX_NO/>" +
|
|
|
|
|
" <OUTHOSP_NO/>" +
|
|
|
|
|
" <INHOSP_INDEX_NO/>" +
|
|
|
|
|
" <INHOSP_NO>" + jzh.getJzh() + "</INHOSP_NO>" +
|
|
|
|
|
" <EMPI_ID/>" +
|
|
|
|
|
" <TEST_PAT_SOURCE_CODE/>" +
|
|
|
|
|
" <MICROBE_TEST_FLAG>" + microbeTestFlag + "</MICROBE_TEST_FLAG>" +
|
|
|
|
|
" <BEGIN_DATETIME>" + beginDateTime + "</BEGIN_DATETIME>" +
|
|
|
|
|
" <END_DATETIME>" + endDateTime + "</END_DATETIME>" +
|
|
|
|
|
" </Msg>" +
|
|
|
|
|
" </Request>" +
|
|
|
|
|
" </content>" +
|
|
|
|
|
" </query_ws>" +
|
|
|
|
|
" </MsgInfo>" +
|
|
|
|
|
" <GroupInfo flag=\"0\">" +
|
|
|
|
|
" <AS ID=\"\" linkField=\"\"/>" +
|
|
|
|
|
" </GroupInfo>" +
|
|
|
|
|
"</ESBEntry>";
|
|
|
|
|
|
|
|
|
|
return new Object[]{param1};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String beginDateTime = "2025-02-06 19:48:52";
|
|
|
|
|
LocalDateTime endLocalDateTime = Func.parseDateTime("2025-04-04 12:00:00").plusDays(15L);
|
|
|
|
|
String endDateTime = Func.formatDateTime(endLocalDateTime);
|
|
|
|
|
// 普通的检验报告和 微生物检验报告
|
|
|
|
|
LocalDateTime qrBeginLocalDateTime = Func.parseDateTime(beginDateTime);
|
|
|
|
|
int limitDays = 10;
|
|
|
|
|
List<ReportFileInfoDTO> reportFileInfoDTOList = new ArrayList<>();
|
|
|
|
|
while (true) {
|
|
|
|
|
LocalDateTime qrEndLocalDateTime = qrBeginLocalDateTime.plusDays(limitDays);
|
|
|
|
|
if (qrBeginLocalDateTime.isAfter(endLocalDateTime)) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
boolean endFlag = false;
|
|
|
|
|
if (qrEndLocalDateTime.isAfter(endLocalDateTime)) {
|
|
|
|
|
qrEndLocalDateTime = endLocalDateTime;
|
|
|
|
|
endFlag = true;
|
|
|
|
|
}
|
|
|
|
|
System.out.println(Func.formatDateTime(qrBeginLocalDateTime) + ">>>>>>>" + Func.formatDateTime(qrEndLocalDateTime));
|
|
|
|
|
if (endFlag) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
qrBeginLocalDateTime = qrEndLocalDateTime;
|
|
|
|
|
try {
|
|
|
|
|
TimeUnit.MILLISECONDS.sleep(500);
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static class LisSystemCollectConverter {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检验系统报告采集数据转换文件上报信息
|
|
|
|
|
*
|
|
|
|
|
* @param lisSystemCollectData 验系统报告采集数据
|
|
|
|
|
* @return 文件上报信息
|
|
|
|
|
*/
|
|
|
|
|
public static List<ReportFileInfoDTO> convert(String lisSystemCollectData) {
|
|
|
|
|
XmlUtil xmlUtil = XmlUtil.of(lisSystemCollectData);
|
|
|
|
|
List<ReportFileInfoDTO> list = new ArrayList<>();
|
|
|
|
|
NodeList reportInfoNodeList = xmlUtil.getNodeList("/Response/MsgInfo/Msg/ReportInfo");
|
|
|
|
|
if (reportInfoNodeList != null && reportInfoNodeList.getLength() > 0) {
|
|
|
|
|
int length = reportInfoNodeList.getLength();
|
|
|
|
|
for (int i = 0; i < length; i++) {
|
|
|
|
|
Node item = reportInfoNodeList.item(i);
|
|
|
|
|
NodeList childNodes = item.getChildNodes();
|
|
|
|
|
int childNodesLength = childNodes.getLength();
|
|
|
|
|
String fileTitle = null;
|
|
|
|
|
String serialNum = null;
|
|
|
|
|
String downUrl = null;
|
|
|
|
|
for (int j = 0; j < childNodesLength; j++) {
|
|
|
|
|
Node childNodeItem = childNodes.item(j);
|
|
|
|
|
if ("TEST_CATEG_NAME".equals(childNodeItem.getNodeName())) {
|
|
|
|
|
fileTitle = childNodeItem.getTextContent();
|
|
|
|
|
}
|
|
|
|
|
// if ("TEST_CATEG_NAME".equals(childNodeItem.getNodeName())) {
|
|
|
|
|
// fileTitle=childNodeItem.getTextContent();
|
|
|
|
|
// }
|
|
|
|
|
if ("SAMPLE_NO".equals(childNodeItem.getNodeName())) {
|
|
|
|
|
serialNum = childNodeItem.getTextContent();
|
|
|
|
|
}
|
|
|
|
|
if ("REPORT_URL".equals(childNodeItem.getNodeName())) {
|
|
|
|
|
downUrl = childNodeItem.getTextContent();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ReportFileInfoDTO fileInfoDTO = new ReportFileInfoDTO();
|
|
|
|
|
fileInfoDTO.setFileTitle(fileTitle);
|
|
|
|
|
fileInfoDTO.setSerialNum(serialNum);
|
|
|
|
|
fileInfoDTO.setDownUrl(downUrl);
|
|
|
|
|
fileInfoDTO.setDownWayEnum(DownWayEnum.HTTP);
|
|
|
|
|
fileInfoDTO.setIp("docus-collect-gdszy");
|
|
|
|
|
fileInfoDTO.setUserName("LIS采集服务");
|
|
|
|
|
fileInfoDTO.setReportUserFullName("LIS采集服务");
|
|
|
|
|
fileInfoDTO.setTaskId(-1L);
|
|
|
|
|
list.add(fileInfoDTO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|