Merge remote-tracking branch 'origin/master'

广东省中医_gdszy
宇宙皮皮娃 2 years ago
commit 48eeb5be29

@ -1,4 +1,15 @@
{
"blocking": ["xdxt","yx","jc"],
"notHandled":["lis","bl","nh"]
"blocking": [
"xdxt",
"yx",
"jc"
],
"notHandled": [
"lis",
"bl",
"nh"
],
"fetchBase64": [
"cta"
]
}

@ -7,6 +7,8 @@ import com.docus.infrastructure.web.api.CommonResult;
import com.docus.server.api.HospitalSubmitNodeServiceApi;
import com.docus.server.api.dto.HospitalSubmitNodeLogAddDTO;
import com.docus.server.api.enums.HospitalSubmitNodeEnum;
import com.docus.server.common.entity.SdryPacsPrintExcept;
import com.docus.server.common.service.SdryPacsPrintExceptService;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
@ -29,7 +31,9 @@ public class AppRunBootstrap {
System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
SpringApplication.run(AppRunBootstrap.class, args);
}
private static void test1(){
SpringUtils.getBean(SdryPacsPrintExceptService.class).insert(new SdryPacsPrintExcept());
}
private static void test(){
HospitalSubmitNodeServiceApi hospitalSubmitNodeServiceApi = SpringUtils.getBean(HospitalSubmitNodeServiceApi.class);
HospitalSubmitNodeLogAddDTO dto = new HospitalSubmitNodeLogAddDTO();

@ -0,0 +1,84 @@
package com.docus.server.common.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* @author wyb
* @date 2023-10-13
*/
@Data
public class RemoteCallResult implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
/**
*
*/
private String keyword;
/**
*
*/
private String url;
/**
*
*/
private String header;
/**
*
*/
private String request;
/**
*
*/
private String response;
/**
*
*/
private String remark;
/**
*
*/
private String description;
/**
* 01
*/
private Integer requestStorageType;
/**
* 01
*/
private Integer responseStorageType;
/**
* 123
*/
private Integer callStatus;
/**
*
*/
private Date callStartTime;
/**
*
*/
private Date callEndTime;
public RemoteCallResult() {
}
}

@ -0,0 +1,63 @@
package com.docus.server.common.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* pacsbase64
* @author wyb
* @date 2023-10-17
*/
@Data
public class SdryPacsPrintExcept implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
/**
*
*/
private String inpatientNo;
/**
*
*/
private Integer admissTimes;
/**
* /
*/
private String jzh;
/**
*
*/
private String reportMessagePath;
/**
* 1
*/
private Integer state;
/**
*
*/
private Date createTime;
/**
*
*/
private String examReportSn;
/**
* 10081009
*/
private String serviceFlag;
public SdryPacsPrintExcept() {}
}

@ -0,0 +1,18 @@
package com.docus.server.common.mapper;
import com.docus.server.common.entity.RemoteCallResult;
import org.apache.ibatis.annotations.Param;
/**
*
* @author wyb
*
*/
public interface RemoteCallResultMapper {
/**
*
* @param remoteCallResult
* @return
*/
int save(@Param("result") RemoteCallResult remoteCallResult);
}

@ -0,0 +1,20 @@
package com.docus.server.common.mapper;
import com.docus.server.common.entity.SdryPacsPrintExcept;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* pacsbase64 mapper
* @author wyb
*/
public interface SdryPacsPrintExceptMapper {
int saveExcept(@Param("except") SdryPacsPrintExcept pacsPrintExcept);
SdryPacsPrintExcept getById(@Param("id") Long id);
int compensateSuccuss(@Param("id") Long id);
List<Long> getCompensateIds(@Param("beginDateTime") String beginDateTime);
}

@ -0,0 +1,16 @@
package com.docus.server.common.service;
import com.docus.server.common.entity.RemoteCallResult;
/**
*
* @author WYBDEV
*/
public interface RemoteCallResultService {
/**
*
* @param remoteCallResult
*/
void save(RemoteCallResult remoteCallResult);
}

@ -0,0 +1,21 @@
package com.docus.server.common.service;
import com.docus.server.common.entity.SdryPacsPrintExcept;
import java.util.List;
/**
* pacs
* @author WYBDEV
*/
public interface SdryPacsPrintExceptService {
int insert(SdryPacsPrintExcept pacsPrintExcept);
SdryPacsPrintExcept getById(Long id);
int compensateSuccuss(Long id);
List<Long> getCompensateIds(String beginDateTime);
}

@ -0,0 +1,53 @@
package com.docus.server.common.service.impl;
import com.docus.core.util.Func;
import com.docus.infrastructure.redis.service.IdService;
import com.docus.server.common.entity.RemoteCallResult;
import com.docus.server.common.mapper.RemoteCallResultMapper;
import com.docus.server.common.service.RemoteCallResultService;
import com.docus.server.common.util.FileUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.File;
/**
*
*
* @author wyb
*/
@Service
public class RemoteCallResultServiceImpl implements RemoteCallResultService {
@Resource
private IdService idService;
@Resource
private RemoteCallResultMapper remoteCallResultMapper;
private final static int SAVE_DISK_DATA_LENGTH = 1024;
private final static String REMOTE_CALL_SAVE_PATH = FileUtil.currentPath() + File.separator + "remote-call";
@Override
public void save(RemoteCallResult remoteCallResult) {
remoteCallResult.setRequestStorageType(0);
remoteCallResult.setResponseStorageType(0);
Long id = remoteCallResult.getId() == null ? idService.getDateSeq() : remoteCallResult.getId();
remoteCallResult.setId(id);
String request = remoteCallResult.getRequest();
String response = remoteCallResult.getResponse();
if (Func.isNotBlank(request) && request.length() > SAVE_DISK_DATA_LENGTH) {
String saveReqPath = REMOTE_CALL_SAVE_PATH + File.separator + id + "_request";
FileUtil.saveStrData(response, new File(saveReqPath));
remoteCallResult.setRequestStorageType(1);
remoteCallResult.setRequest(saveReqPath);
}
if (Func.isNotBlank(response) && response.length() > SAVE_DISK_DATA_LENGTH) {
String saveRespPath = REMOTE_CALL_SAVE_PATH + File.separator + id + "_response";
FileUtil.saveStrData(response, new File(saveRespPath));
remoteCallResult.setResponseStorageType(1);
remoteCallResult.setResponse(saveRespPath);
}
remoteCallResultMapper.save(remoteCallResult);
}
}

@ -0,0 +1,52 @@
package com.docus.server.common.service.impl;
import com.docus.infrastructure.redis.service.IdService;
import com.docus.server.common.entity.SdryPacsPrintExcept;
import com.docus.server.common.mapper.SdryPacsPrintExceptMapper;
import com.docus.server.common.service.SdryPacsPrintExceptService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
*
*
* @author wyb
*/
@Service
public class SdryPacsPrintExceptServiceImpl implements SdryPacsPrintExceptService {
@Resource
private IdService idService;
@Resource
private SdryPacsPrintExceptMapper sdryPacsPrintExceptMapper;
@Override
public int insert(SdryPacsPrintExcept pacsPrintExcept) {
Long id = pacsPrintExcept.getId();
id = id == null ? idService.getDateSeq() : id;
pacsPrintExcept.setId(id);
return sdryPacsPrintExceptMapper.saveExcept(pacsPrintExcept);
}
@Override
public SdryPacsPrintExcept getById(Long id) {
return sdryPacsPrintExceptMapper.getById(id);
}
@Override
public int compensateSuccuss(Long id) {
return sdryPacsPrintExceptMapper.compensateSuccuss(id);
}
@Override
public List<Long> getCompensateIds(String beginDateTime) {
List<Long> ids= sdryPacsPrintExceptMapper.getCompensateIds(beginDateTime);
if(Objects.isNull(ids)){
return new ArrayList<>();
}
return ids;
}
}

@ -0,0 +1,95 @@
package com.docus.server.common.util;
import com.docus.core.util.Func;
import java.io.*;
/**
*
*
* @author WYBDEV
*/
public class FileUtil {
/**
* @return jar
*/
public static String currentPath() {
try {
File dir = new File(".");
return dir.getCanonicalPath();
} catch (Exception e) {
return "";
}
}
/**
*
*
* @param file
* @return
*/
public static boolean mkFileDirs(File file) {
if (!file.getParentFile().exists()) {
return file.getParentFile().mkdirs();
}
return true;
}
/**
*
*
* @param data
* @param file
*/
public static void saveStrData(String data, File file) {
mkFileDirs(file);
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter(file);
fileWriter.write(data);
fileWriter.flush();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (fileWriter != null) {
try {
fileWriter.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
public static void main(String[] args) throws Exception {
String path = currentPath() + File.separator + "remotecall" + File.separator + Func.randomUUID() + ".txt";
File file = new File(path);
saveStrData("随便写一点东西", file);
String where = readStr(file);
System.out.println(where);
}
public static String readStr(File file) {
BufferedReader bufferedReader = null;
try {
StringBuilder sb = new StringBuilder();
bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
return sb.toString();
} catch (Exception ex){
ex.printStackTrace();
return null;
}finally {
if(bufferedReader!=null){
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

@ -84,6 +84,8 @@ public class ReportDto {
*/
private String reportSn;
public ReportDto() {
}

@ -6,13 +6,17 @@ import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.docus.core.util.DateUtil;
import com.docus.core.util.ExceptionUtils;
import com.docus.core.util.Func;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.server.common.entity.RemoteCallResult;
import com.docus.server.common.service.RemoteCallResultService;
import com.docus.server.report.api.ShunDePeopleService;
import com.docus.server.report.api.dto.*;
import com.docus.server.report.api.vo.SdRyBloodReportVO;
import com.docus.server.report.client.JaxWsDynamicClient;
import com.docus.server.report.config.SdRyReportQueryConfig;
import com.docus.server.report.job.ReportJob;
import com.docus.server.report.util.IdUtil;
import com.docus.server.report.util.TableJsonRead;
import com.docus.server.report.util.XmlUtil;
@ -22,10 +26,7 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@ -47,6 +48,10 @@ public class ShunDePeopleServiceImpl implements ShunDePeopleService {
@Resource
private SdRyReportQueryConfig sdRyReportQueryConfig;
@Resource
private ReportJob reportJob;
@Resource
private RemoteCallResultService remoteCallResultService;
@Override
@ -141,18 +146,51 @@ public class ShunDePeopleServiceImpl implements ShunDePeopleService {
// 参数3FunctionType传空暂未启用
// 参数4Caller服务调用者名称由PACS提供验证令牌时
String[] param = {functionName, inputString, functionType, caller};
RemoteCallResult remoteCallResult = new RemoteCallResult();
remoteCallResult.setUrl(url+" | "+namespaceUri+" | "+operationName);
remoteCallResult.setRequest(Arrays.toString(param));
remoteCallResult.setDescription("根据检查流水和报告序列号指定要获取的报告PACS将生成PDF格式的报告并将PDF文件的BASE64编码串返回。");
remoteCallResult.setKeyword(examNo + "_" + reportNo);
remoteCallResult.setCallStartTime(new Date());
PACS_PDF_LOCK.lock();
try {
String result = JaxWsDynamicClient.send(url, namespaceUri, operationName, param);
if (interval > 0) {
TimeUnit.MILLISECONDS.sleep(interval);
}
remoteCallResult.setCallStatus(1);
String base64 = reportJob.parsePacsGetBase64(result);
if(Func.isBlank(base64)){
remoteCallResult.setRemark("查询base64结果为空!");
remoteCallResult.setCallStatus(3);
}
remoteCallResult.setResponse(result);
remoteCallResult.setCallEndTime(new Date());
try {
remoteCallResultService.save(remoteCallResult);
}catch (Exception e){
e.printStackTrace();
}
return result;
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
String exceptionMessage = ExceptionUtils.getExceptionMessage(ex);
remoteCallResult.setRemark(ex.getMessage());
remoteCallResult.setCallStatus(2);
remoteCallResult.setResponse(exceptionMessage);
remoteCallResult.setCallEndTime(new Date());
try {
remoteCallResultService.save(remoteCallResult);
}catch (Exception e){
e.printStackTrace();
}
return null;
} finally {
PACS_PDF_LOCK.unlock();
}
}

@ -8,49 +8,73 @@ import java.util.List;
/**
*
*
* @author wyb
*/
public class SdRyReportHandledConfig {
private final SdRyReportSystem sdRyReportSystem;
private final static TableJsonRead JSON_READ = new TableJsonRead();
@Data
private static class SdRyReportSystem{
private static class SdRyReportSystem {
/**
*
* ,
*/
private List<String> blocking = new ArrayList<>();
private List<String> blocking = new ArrayList<>();
/**
*
* job
*/
private List<String> notHandled = new ArrayList<>();
/**
* base64job
*/
private List<String> fetchBase64 = new ArrayList<>();
}
public SdRyReportHandledConfig(){
TableJsonRead jsonRead = new TableJsonRead();
this.sdRyReportSystem= jsonRead.Read("data-config", "sdry-report-system.json", SdRyReportSystem.class);
public SdRyReportHandledConfig() {
}
public boolean isBlocking(String systemName){
if(this.sdRyReportSystem!=null){
List<String> blocking = this.sdRyReportSystem.getBlocking();
public SdRyReportSystem getSdRyReportSystem() {
return JSON_READ.Read("data-config", "sdry-report-system.json", SdRyReportSystem.class);
}
public boolean isBlocking(String systemName) {
SdRyReportSystem sdRyReportSystem = getSdRyReportSystem();
if (sdRyReportSystem != null) {
List<String> blocking = sdRyReportSystem.getBlocking();
return blocking.contains(systemName);
}
return false;
}
public boolean isNotHandled(String systemName){
if(this.sdRyReportSystem!=null){
List<String> notHandled = this.sdRyReportSystem.getNotHandled();
public boolean isNotHandled(String systemName) {
SdRyReportSystem sdRyReportSystem = getSdRyReportSystem();
if (sdRyReportSystem != null) {
List<String> notHandled = sdRyReportSystem.getNotHandled();
return notHandled.contains(systemName);
}
return false;
}
public boolean isFetchBase64(String systemName) {
SdRyReportSystem sdRyReportSystem = getSdRyReportSystem();
if (sdRyReportSystem != null) {
List<String> getBase64System = sdRyReportSystem.getFetchBase64();
return getBase64System.contains(systemName);
}
return false;
}
public static void main(String[] args) {
SdRyReportHandledConfig sdRyReportHandledConfig = new SdRyReportHandledConfig();
System.out.println(sdRyReportHandledConfig.sdRyReportSystem);
System.out.println(sdRyReportHandledConfig.getSdRyReportSystem());
System.out.println(sdRyReportHandledConfig.isNotHandled("lis"));
System.out.println(sdRyReportHandledConfig.isNotHandled("yx"));
System.out.println(sdRyReportHandledConfig.isBlocking("yx"));
System.out.println(sdRyReportHandledConfig.isBlocking("lis"));
System.out.println(sdRyReportHandledConfig.isFetchBase64("cta"));
}
}

@ -0,0 +1,35 @@
package com.docus.server.report.controller;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.server.report.job.FetchPacsBase64Job;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@Slf4j
@Api(tags = "pacs获取base64异常相关接口")
@RestController
@RequestMapping("/api/fetchPacsBase64Except")
public class FetchPacsBase64ExceptController {
@Resource
private FetchPacsBase64Job fetchPacsBase64Job;
@ApiOperation(value = "根据异常数据表的id补偿")
@GetMapping("/compenstateById")
public CommonResult<Object> compenstateById(@Param("id") Long exceptId) {
fetchPacsBase64Job.compensateFetchBase64Report(exceptId);
return CommonResult.success("完成");
}
}

@ -0,0 +1,166 @@
package com.docus.server.report.job;
import com.docus.core.util.Func;
import com.docus.infrastructure.redis.service.IdService;
import com.docus.infrastructure.redis.service.RedisOps;
import com.docus.server.common.entity.SdryPacsPrintExcept;
import com.docus.server.common.service.SdryPacsPrintExceptService;
import com.docus.server.common.util.FileUtil;
import com.docus.server.report.api.dto.ReportDto;
import com.docus.server.report.service.ReportService;
import com.docus.server.report.util.XmlUtil;
import com.docus.server.report.webservice.WebserviceMessageType;
import com.docus.server.report.webservice.impl.HIP1008InspectionReportAdditionHandler;
import com.docus.server.report.webservice.impl.HIP1009InspectionReportUpdatesHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.File;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* pacsbase64xxl-Job
*
* @author jiashi
*/
@Component
@Slf4j
public class FetchPacsBase64Job {
/**
* pacspdfbase64使job
*/
public final static String FETCH_PACS_BASE64_QUEUE_HIP1008 = "docus:sdry:pacsbase64:" + WebserviceMessageType.HIP1008;
public final static String FETCH_PACS_BASE64_QUEUE_HIP1009 = "docus:sdry:pacsbase64:" + WebserviceMessageType.HIP1009;
@Resource
private ReportService reportService;
@Resource
private RedisOps redisOps;
@Resource
private HIP1008InspectionReportAdditionHandler hip1008;
@Resource
private HIP1009InspectionReportUpdatesHandler hip1009;
@Resource
private SdryPacsPrintExceptService sdryPacsPrintExceptService;
@Resource
private IdService idService;
public static void main(String[] args) {
LocalDate localDate = LocalDate.now().plusMonths(-3);
String beginDateTime = localDate.toString() + " 00:00:00";
System.out.println(beginDateTime);
}
@XxlJob("compensateFetchBase64ReportJob")
public void compensateFetchBase64ReportJob() {
LocalDate localDate = LocalDate.now().plusMonths(-3);
String beginDateTime = localDate.toString() + " 00:00:00";
List<Long> compensateIds = sdryPacsPrintExceptService.getCompensateIds(beginDateTime);
log.info("补偿失败的pacs获取base64文件数据JOB开始本次补偿 {} 条数据!", compensateIds.size());
if (Func.isNotEmpty(compensateIds)) {
for (Long id : compensateIds) {
try {
compensateFetchBase64Report(id);
} catch (Exception ex) {
log.error("补偿失败的pacs补偿id" + id + " 补偿失败了。", ex);
}
}
}
log.info("补偿失败的pacs获取base64文件数据JOB结束");
}
/**
* 1008base64job
*/
@XxlJob("fetchBase64ReportHip1008Job")
public void fetchBase64ReportHip1008Job() {
String xml = redisOps.rPop(FETCH_PACS_BASE64_QUEUE_HIP1008);
ReportDto reportDto = parse(WebserviceMessageType.HIP1008, xml);
if (reportDto != null) {
reportService.report(reportDto);
return;
}
String filePath = FileUtil.currentPath() + File.separator + "fetch-base64-xml"
+ File.separator + WebserviceMessageType.HIP1008
+ File.separator + Func.formatDate(LocalDate.now())
+ File.separator + idService.getDateSeq();
FileUtil.saveStrData(xml, new File(filePath));
ReportDto reportDto2 = hip1008.getReportDtoByInspectionInsert(XmlUtil.of(xml));
SdryPacsPrintExcept pacsPrintExcept = new SdryPacsPrintExcept();
pacsPrintExcept.setInpatientNo(reportDto2.getInpatientNo());
pacsPrintExcept.setAdmissTimes(reportDto2.getAdmisstimes());
pacsPrintExcept.setJzh(reportDto2.getJzh());
pacsPrintExcept.setReportMessagePath(filePath);
pacsPrintExcept.setServiceFlag(WebserviceMessageType.HIP1008);
pacsPrintExcept.setState(0);
pacsPrintExcept.setCreateTime(new Date());
pacsPrintExcept.setExamReportSn(reportDto2.getReportSn());
sdryPacsPrintExceptService.insert(pacsPrintExcept);
}
/**
* 1009base64job
*/
@XxlJob("fetchBase64ReportHip1009Job")
public void fetchBase64ReportHip1009Job() {
String xml = redisOps.rPop(FETCH_PACS_BASE64_QUEUE_HIP1009);
ReportDto reportDto = parse(WebserviceMessageType.HIP1009, xml);
if (reportDto != null) {
reportService.report(reportDto);
return;
}
String filePath = FileUtil.currentPath() + File.separator + "fetch-base64-xml"
+ File.separator + WebserviceMessageType.HIP1009
+ File.separator + Func.formatDate(LocalDate.now())
+ File.separator + idService.getDateSeq();
ReportDto reportDto2 = hip1009.getReportDtoByInspectionUpdate(XmlUtil.of(xml));
SdryPacsPrintExcept pacsPrintExcept = new SdryPacsPrintExcept();
pacsPrintExcept.setInpatientNo(reportDto2.getInpatientNo());
pacsPrintExcept.setAdmissTimes(reportDto2.getAdmisstimes());
pacsPrintExcept.setJzh(reportDto2.getJzh());
pacsPrintExcept.setReportMessagePath(filePath);
pacsPrintExcept.setServiceFlag(WebserviceMessageType.HIP1009);
pacsPrintExcept.setState(0);
pacsPrintExcept.setExamReportSn(reportDto2.getReportSn());
pacsPrintExcept.setCreateTime(new Date());
sdryPacsPrintExceptService.insert(pacsPrintExcept);
}
public void compensateFetchBase64Report(Long id) {
// base64的和job的检查报告统一处理逻辑不然会出现重复
SdryPacsPrintExcept except = sdryPacsPrintExceptService.getById(id);
if(Objects.isNull(except)){
log.error("未找到id为{} 的获取pacs异常的数据",id);
return;
}
String messagePath = except.getReportMessagePath();
String xml = FileUtil.readStr(new File(messagePath));
if (Objects.isNull(xml)) {
log.error("文件:{},获取xml内容为空", messagePath);
return;
}
ReportDto reportDto = parse(except.getServiceFlag(), xml);
if (reportDto != null) {
reportService.report(reportDto);
sdryPacsPrintExceptService.compensateSuccuss(id);
}
}
private ReportDto parse(String serviceFlag, String xml) {
XmlUtil xmlUtil = XmlUtil.of(xml);
if (serviceFlag.equals(WebserviceMessageType.HIP1008)) {
return hip1008.fetchBase64Parse(xmlUtil);
}
if (serviceFlag.equals(WebserviceMessageType.HIP1009)) {
return hip1009.fetchBase64Parse(xmlUtil);
}
return null;
}
}

@ -657,7 +657,7 @@ public class ReportJob {
}
private String saveBase64(String base64) {
public String saveBase64(String base64) {
String dir = createBase64SaveDir();
String base64File = dir + File.separator + idService.getDateSeq() + ".txt";
try (FileWriter fileWriter = new FileWriter(base64File);
@ -691,7 +691,7 @@ public class ReportJob {
}
}
private static String parsePacsGetBase64(String xml) {
public String parsePacsGetBase64(String xml) {
try {
XmlUtil xmlUtil = XmlUtil.of(xml);
Node codeNode = xmlUtil.getNode("/Result/Code");

@ -3,9 +3,13 @@ package com.docus.server.report.webservice.impl;
import com.docus.core.util.DateUtil;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.exception.BaseException;
import com.docus.infrastructure.redis.service.RedisOps;
import com.docus.server.report.api.ShunDePeopleService;
import com.docus.server.report.api.dto.ReportDto;
import com.docus.server.report.config.SdRyReportHandledConfig;
import com.docus.server.report.config.ZdAssortConfig;
import com.docus.server.report.job.FetchPacsBase64Job;
import com.docus.server.report.job.ReportJob;
import com.docus.server.report.service.ReportService;
import com.docus.server.report.util.IdUtil;
import com.docus.server.report.util.XmlUtil;
@ -20,6 +24,7 @@ import java.util.Date;
/**
* HIP1008-
*
* @author jiahsi
*/
@Service(WebserviceMessageType.HIP1008)
@ -27,6 +32,13 @@ import java.util.Date;
public class HIP1008InspectionReportAdditionHandler implements WebserviceReceiveServerHandler {
@Resource
private ReportService reportService;
@Resource
private ShunDePeopleService shunDePeopleService;
@Resource
private ReportJob reportJob;
@Resource
private RedisOps redisOps;
@Override
public String handle(String receiveMessage) {
@ -40,17 +52,23 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive
sender = xmlUtil.getNode("/POOR_HIP1008/sender/device/id/item/@extension").getNodeValue();
receiver = xmlUtil.getNode("/POOR_HIP1008/receiver/device/id/item/@extension").getNodeValue();
SdRyReportHandledConfig sdRyReportHandledConfig = new SdRyReportHandledConfig();
// 如果是获取base64的为什么这里要解析因为这里可以提前解析知道问题base64另外抽出来的方法会响应超时为了做异步
ReportDto reportDto = getReportDtoByInspectionInsert(xmlUtil);
verifyFileInfo(reportDto);
String sysFlag = reportDto.getSysFlag();
if (sdRyReportHandledConfig.isNotHandled(sysFlag)) {
return insertSuccess(msgId, sender, receiver);
}
if(sdRyReportHandledConfig.isBlocking(sysFlag)){
if (sdRyReportHandledConfig.isBlocking(sysFlag)) {
reportDto.setDownUrl(null);
reportService.reportBuffer(reportDto);
return insertSuccess(msgId, sender, receiver);
}
if (sdRyReportHandledConfig.isFetchBase64(sender)) {
// 过程很长保存队列job慢慢消费
redisOps.lPush(FetchPacsBase64Job.FETCH_PACS_BASE64_QUEUE_HIP1008,receiveMessage);
return insertSuccess(msgId, sender, receiver);
}
reportService.report(reportDto);
return insertSuccess(msgId, sender, receiver);
} catch (BaseException baseException) {
@ -61,12 +79,72 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive
return insertFailed(msgId, sender, receiver, "系统错误!");
}
}
public ReportDto fetchBase64Parse(XmlUtil inspectionInsertXmlUtil) {
Node senderNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/sender/device/id/item/@extension");
String updateBy = senderNode.getNodeValue();
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());
// 患者本次就诊唯一键患者id【12位】+就诊次数
Node visitSnNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.11']/@extension");
String visitSn = visitSnNode.getNodeValue();
// 患者id
Node patientSnNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/item[@root='2.16.156.10011.0.2.2']/@extension");
String patientSn = patientSnNode.getNodeValue();
// 检查报告单号标识
Node reportFlagNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.32']/@extension");
String examReportSn = reportFlagNode.getNodeValue();
//电子申请单编号
Node eafNoNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.24']/@extension");
String requestSn = eafNoNode.getNodeValue();
Node fileTitleNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查结果明细']/section/entry[@displayName='检查项目']/organizer/component[@displayName='检查项目']/observation/value");
String reportName = fileTitleNode.getTextContent();
ReportDto reportDto = new ReportDto();
reportDto.setAdmisstimes(admissTimes);
reportDto.setInpatientNo(inpatientNo);
// 确定报告唯一 报告单号+申请单号
reportDto.setSerialnum(examReportSn + requestSn);
reportDto.setFileTitle(reportName);
reportDto.setVisitSn(visitSn);
reportDto.setPatientSn(patientSn);
// 检查报告需要从Pacs接口获取base64
String[] split = examReportSn.split("_");
String fromPacs = shunDePeopleService.getBase64PdfFromPacs(split[0], split[1]);
// 从pacs打印出来
String base64 = reportJob.parsePacsGetBase64(fromPacs);
if (Func.isBlank(base64)) {
return null;
}
String url = reportJob.saveBase64(base64);
reportDto.setDownUrl(url);
reportDto.setDowntype(5);
// 根据系统来分类
reportDto.setAssortId(ZdAssortConfig.getZdAssortId(updateBy));
reportDto.setSysFlag(updateBy);
reportDto.setFileSource("1");
reportDto.setFilestoragetype("1");
return reportDto;
}
public ReportDto getReportDtoByInspectionInsert(XmlUtil inspectionInsertXmlUtil) {
Node senderNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/sender/device/id/item/@extension");
String sender = senderNode.getNodeValue();
String zdAssortId = ZdAssortConfig.getZdAssortId(sender);
if(Func.isBlank(zdAssortId)){
zdAssortId=ZdAssortConfig.getOtherAssortId();
if (Func.isBlank(zdAssortId)) {
zdAssortId = ZdAssortConfig.getOtherAssortId();
}
Node inpatientNoNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.12']/@extension");
@ -89,8 +167,8 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive
// 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 fileTitleNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查结果明细']/section/entry[@displayName='检查项目']/organizer/component[@displayName='检查项目']/observation/value");
String fileTitle = fileTitleNode.getTextContent();
Node downUrlNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告图像']/report/entry[@displayName='检查报告图像URL地址']/observation/value");
String downUrl = downUrlNode.getTextContent();
@ -120,8 +198,8 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive
public String insertSuccess(String msgId, String sender, String receiver) {
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<MCCI_IN000002UV01 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI _IN000002UV01.xsd\">" +
"<id extension=\""+ IdUtil.standardUUID()+"\"/>" +
"<creationTime value=\""+createTime+"\"/>" +
"<id extension=\"" + IdUtil.standardUUID() + "\"/>" +
"<creationTime value=\"" + createTime + "\"/>" +
"<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>" +
"<processingCode code=\"P\"/>" +
"<processingModeCode/>" +
@ -142,7 +220,7 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive
"</sender>" +
"<acknowledgement typeCode=\"AA\">" +
"<targetMessage>" +
"<id extension=\""+msgId+"\"/>" +
"<id extension=\"" + msgId + "\"/>" +
"</targetMessage>" +
"<acknowledgementDetail>" +
"<text value=\"成功\"/>" +
@ -193,8 +271,8 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<MCCI_IN000002UV01 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI _IN000002UV01.xsd\">" +
"<id extension=\""+IdUtil.standardUUID()+"\"/>" +
"<creationTime value=\""+createTime+"\"/>" +
"<id extension=\"" + IdUtil.standardUUID() + "\"/>" +
"<creationTime value=\"" + createTime + "\"/>" +
"<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>" +
"<processingCode code=\"P\"/>" +
"<processingModeCode/>" +
@ -215,10 +293,10 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive
"</sender>" +
"<acknowledgement typeCode=\"AE\">" +
"<targetMessage>" +
"<id extension=\""+msgId+"\"/>" +
"<id extension=\"" + msgId + "\"/>" +
"</targetMessage>" +
"<acknowledgementDetail>" +
"<text value=\""+failedMessage+"\"/>" +
"<text value=\"" + failedMessage + "\"/>" +
"</acknowledgementDetail>" +
"</acknowledgement>" +
"</MCCI_IN000002UV01>";

@ -3,9 +3,13 @@ package com.docus.server.report.webservice.impl;
import com.docus.core.util.DateUtil;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.exception.BaseException;
import com.docus.infrastructure.redis.service.RedisOps;
import com.docus.server.report.api.ShunDePeopleService;
import com.docus.server.report.api.dto.ReportDto;
import com.docus.server.report.config.SdRyReportHandledConfig;
import com.docus.server.report.config.ZdAssortConfig;
import com.docus.server.report.job.FetchPacsBase64Job;
import com.docus.server.report.job.ReportJob;
import com.docus.server.report.service.ReportService;
import com.docus.server.report.util.IdUtil;
import com.docus.server.report.util.XmlUtil;
@ -20,6 +24,7 @@ import java.util.Date;
/**
* HIP1009-
*
* @author jiahsi
*/
@Service(WebserviceMessageType.HIP1009)
@ -27,6 +32,13 @@ import java.util.Date;
public class HIP1009InspectionReportUpdatesHandler implements WebserviceReceiveServerHandler {
@Resource
private ReportService reportService;
@Resource
private ShunDePeopleService shunDePeopleService;
@Resource
private ReportJob reportJob;
@Resource
private RedisOps redisOps;
@Override
public String handle(String receiveMessage) {
@ -40,17 +52,23 @@ public class HIP1009InspectionReportUpdatesHandler implements WebserviceReceiveS
sender = xmlUtil.getNode("/POOR_HIP1009/sender/device/id/item/@extension").getNodeValue();
receiver = xmlUtil.getNode("/POOR_HIP1009/receiver/device/id/item/@extension").getNodeValue();
SdRyReportHandledConfig sdRyReportHandledConfig = new SdRyReportHandledConfig();
// 如果是获取base64的为什么这里要解析因为这里可以提前解析知道问题base64另外抽出来的方法会响应超时为了做异步
ReportDto reportDto = getReportDtoByInspectionUpdate(xmlUtil);
verifyFileInfo(reportDto);
String sysFlag = reportDto.getSysFlag();
if (sdRyReportHandledConfig.isNotHandled(sysFlag)) {
return updateSuccess(msgId, sender, receiver);
}
if(sdRyReportHandledConfig.isBlocking(sysFlag)){
if (sdRyReportHandledConfig.isBlocking(sysFlag)) {
reportDto.setDownUrl(null);
reportService.reportBuffer(reportDto);
return updateSuccess(msgId, sender, receiver);
}
if (sdRyReportHandledConfig.isFetchBase64(sender)) {
// 过程很长保存队列job慢慢消费
redisOps.lPush(FetchPacsBase64Job.FETCH_PACS_BASE64_QUEUE_HIP1009,receiveMessage);
return updateSuccess(msgId, sender, receiver);
}
reportService.report(reportDto);
return updateSuccess(msgId, sender, receiver);
} catch (BaseException baseException) {
@ -64,12 +82,70 @@ public class HIP1009InspectionReportUpdatesHandler implements WebserviceReceiveS
public ReportDto fetchBase64Parse(XmlUtil inspectionInsertXmlUtil) {
Node senderNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1009/sender/device/id/item/@extension");
String updateBy = senderNode.getNodeValue();
Node inpatientNoNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.12']/@extension");
String inpatientNo = inpatientNoNode.getNodeValue();
Node admissTimesNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/item[@root='1.2.156.112635.1.2.1.7']/@extension");
Integer admissTimes = Integer.valueOf(admissTimesNode.getNodeValue());
// 患者本次就诊唯一键患者id【12位】+就诊次数
Node visitSnNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.11']/@extension");
String visitSn = visitSnNode.getNodeValue();
// 患者id
Node patientSnNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/item[@root='2.16.156.10011.0.2.2']/@extension");
String patientSn = patientSnNode.getNodeValue();
// 检查报告单号标识
Node reportFlagNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.32']/@extension");
String examReportSn = reportFlagNode.getNodeValue();
//电子申请单编号
Node eafNoNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.24']/@extension");
String requestSn = eafNoNode.getNodeValue();
Node fileTitleNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查结果明细']/section/entry[@displayName='检查项目']/organizer/component[@displayName='检查项目']/observation/value");
String reportName = fileTitleNode.getTextContent();
ReportDto reportDto = new ReportDto();
reportDto.setAdmisstimes(admissTimes);
reportDto.setInpatientNo(inpatientNo);
// 确定报告唯一 报告单号+申请单号
reportDto.setSerialnum(examReportSn + requestSn);
reportDto.setFileTitle(reportName);
reportDto.setVisitSn(visitSn);
reportDto.setPatientSn(patientSn);
// 检查报告需要从Pacs接口获取base64
String[] split = examReportSn.split("_");
String fromPacs = shunDePeopleService.getBase64PdfFromPacs(split[0], split[1]);
// 从pacs打印出来
String base64 = reportJob.parsePacsGetBase64(fromPacs);
if (Func.isBlank(base64)) {
return null;
}
String url = reportJob.saveBase64(base64);
reportDto.setDownUrl(url);
reportDto.setDowntype(5);
// 根据系统来分类
reportDto.setAssortId(ZdAssortConfig.getZdAssortId(updateBy));
reportDto.setSysFlag(updateBy);
reportDto.setFileSource("1");
reportDto.setFilestoragetype("1");
return reportDto;
}
public ReportDto getReportDtoByInspectionUpdate(XmlUtil inspectionUpdateXmlUtil) {
Node senderNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/sender/device/id/item/@extension");
String sender = senderNode.getNodeValue();
String zdAssortId = ZdAssortConfig.getZdAssortId(sender);
if(Func.isBlank(zdAssortId)){
zdAssortId=ZdAssortConfig.getOtherAssortId();
if (Func.isBlank(zdAssortId)) {
zdAssortId = ZdAssortConfig.getOtherAssortId();
}
Node inpatientNoNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.12']/@extension");
@ -92,8 +168,9 @@ public class HIP1009InspectionReportUpdatesHandler implements WebserviceReceiveS
// 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 fileTitleNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查结果明细']/section/entry[@displayName='检查项目']/organizer/component[@displayName='检查项目']/observation/value");
String fileTitle = fileTitleNode.getTextContent();
Node downUrlNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告图像']/report/entry[@displayName='检查报告图像URL地址']/observation/value");
String downUrl = downUrlNode.getTextContent();
@ -126,8 +203,8 @@ public class HIP1009InspectionReportUpdatesHandler implements WebserviceReceiveS
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<MCCI_IN000002UV01 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI _IN000002UV01.xsd\">" +
"<id extension=\""+ IdUtil.standardUUID()+"\"/>" +
"<creationTime value=\""+createTime+"\"/>" +
"<id extension=\"" + IdUtil.standardUUID() + "\"/>" +
"<creationTime value=\"" + createTime + "\"/>" +
"<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>" +
"<processingCode code=\"P\"/>" +
"<processingModeCode/>" +
@ -148,7 +225,7 @@ public class HIP1009InspectionReportUpdatesHandler implements WebserviceReceiveS
"</sender>" +
"<acknowledgement typeCode=\"AA\">" +
"<targetMessage>" +
"<id extension=\""+msgId+"\"/>" +
"<id extension=\"" + msgId + "\"/>" +
"</targetMessage>" +
"<acknowledgementDetail>" +
"<text value=\"成功\"/>" +
@ -200,8 +277,8 @@ public class HIP1009InspectionReportUpdatesHandler implements WebserviceReceiveS
public String updateFailed(String msgId, String sender, String receiver, String failedMessage) {
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<MCCI_IN000002UV01 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI _IN000002UV01.xsd\">" +
"<id extension=\""+IdUtil.standardUUID()+"\"/>" +
"<creationTime value=\""+createTime+"\"/>" +
"<id extension=\"" + IdUtil.standardUUID() + "\"/>" +
"<creationTime value=\"" + createTime + "\"/>" +
"<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>" +
"<processingCode code=\"P\"/>" +
"<processingModeCode/>" +
@ -222,10 +299,10 @@ public class HIP1009InspectionReportUpdatesHandler implements WebserviceReceiveS
"</sender>" +
"<acknowledgement typeCode=\"AE\">" +
"<targetMessage>" +
"<id extension=\""+msgId+"\"/>" +
"<id extension=\"" + msgId + "\"/>" +
"</targetMessage>" +
"<acknowledgementDetail>" +
"<text value=\""+failedMessage+"\"/>" +
"<text value=\"" + failedMessage + "\"/>" +
"</acknowledgementDetail>" +
"</acknowledgement>" +
"</MCCI_IN000002UV01>";

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.server.common.mapper.RemoteCallResultMapper">
<insert id="save">
INSERT INTO `docus_archivefile`.`remote_call_result`(`id`, `keyword`, `url`, `header`, `request`, `response`, `remark`, `description`, `request_storage_type`, `response_storage_type`, `call_status`, `call_start_time`, `call_end_time`)
VALUES (#{result.id}, #{result.keyword}, #{result.url}, #{result.header}, #{result.request}, #{result.response}, #{result.remark}, #{result.description}, #{result.requestStorageType}, #{result.responseStorageType}, #{result.callStatus}, #{result.callStartTime}, #{result.callEndTime})
</insert>
</mapper>

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.server.common.mapper.SdryPacsPrintExceptMapper">
<insert id="saveExcept">
INSERT INTO `docus_archivefile`.`sdry_pacs_print_except`(`id`, `inpatient_no`, `admiss_times`, `jzh`, `report_message_path`, `state`, `create_time`, `service_flag`,`exam_report_sn`)
VALUES (#{except.id}, #{except.inpatientNo}, #{except.admissTimes}, #{except.jzh}, #{except.reportMessagePath}, 0, #{except.createTime}, #{except.serviceFlag},#{except.examReportSn})
</insert>
<update id="compensateSuccuss">
update
`docus_archivefile`.`sdry_pacs_print_except`
set `state`=1
where id=#{id}
</update>
<select id="getById" resultType="com.docus.server.common.entity.SdryPacsPrintExcept">
select
`id`,
`inpatient_no`,
`admiss_times`,
`jzh`,
`report_message_path`,
`state`,
`create_time`,
`service_flag`
from `docus_archivefile`.`sdry_pacs_print_except`
where id=#{id}
</select>
<select id="getCompensateIds" resultType="java.lang.Long">
select
`id`
from
`docus_archivefile`.`sdry_pacs_print_except`
where `state`=0 and `create_time` > #{beginDateTime}
</select>
</mapper>
Loading…
Cancel
Save