You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

274 lines
12 KiB
Java

5 years ago
package com.ann.demo.service;
import com.ann.demo.entity.filing.ArchiveDetail;
import com.ann.demo.entity.filing.dto.MessageDto;
import com.ann.demo.entity.interfaceEntity.ArchiveMaster;
import com.ann.demo.entity.interfaceEntity.CommonTable;
import com.ann.demo.entity.interfaceEntity.CommonTable1;
import com.ann.demo.entity.normalEntity.OutPara;
import com.ann.demo.primaryRepository.ScanningFileRepository;
import com.ann.demo.primaryEntity.ScanningFile;
import com.ann.demo.repository.CommonTable1Repository;
import com.ann.demo.repository.CommonTableRepository;
import com.ann.demo.utils.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.File;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
4 years ago
import java.time.Duration;
5 years ago
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
*
*
* @Author: LeiJiaXin
* @Date: 2019/8/20 16:29
*/
@Component
public class AnalysisService {
final Logger logger = LoggerFactory.getLogger(AnalysisService.class);
@Autowired
private ScanningFileRepository scanningFileRepository;
@Autowired
private ArchiveDetailService archiveDetailService;
@Autowired
private CommonTableRepository commonTableRepository;
@Autowired
private CommonTable1Repository commonTable1Repository;
@Autowired
private ArchiveMasterService archiveMasterService;
public void handleScanningFile(List<ScanningFile> scanningFileList) {
4 years ago
LocalDateTime beginTime = LocalDateTime.now();
logger.error("开始时间:"+beginTime);
5 years ago
//处理ScanningFile\
for (ScanningFile scanningFile: scanningFileList) {
String remark = null;
String status = "1";
try{
remark = handlePdfFile(scanningFile);
}catch (Exception e){
remark = e.getMessage();
logger.error("处理扫描文件出错:{}" ,e.getMessage());
}
if(remark != null){
status = "2";
}else{
remark = LocalDateTime.now().toString();
}
scanningFile.setRemark(remark);
scanningFile.setStatus(status);
scanningFileRepository.save(scanningFile);
4 years ago
LocalDateTime handleTime = LocalDateTime.now();
logger.error("每一条处理时间:"+handleTime);
5 years ago
}
4 years ago
LocalDateTime endTime = LocalDateTime.now();
logger.error("结束时间:"+endTime);
5 years ago
}
public String handlePdfFile(ScanningFile scanningFile) throws Exception{
//处理ScanningFile
// 判断病案首页数据是否存在
4 years ago
LocalDateTime now1 = LocalDateTime.now();//删掉
5 years ago
CommonTable commonTable = commonTableRepository.findByInpNoAndVisitId(scanningFile.getInpNo(), scanningFile.getVisitId());
4 years ago
LocalDateTime end1 = LocalDateTime.now();//删掉
logger.error("判断病案首页数据是否存在耗时:"+Duration.between(now1,end1).toMillis());//删掉
5 years ago
if(commonTable == null){
String masterId = scanningFile.getApplyId() != null ? scanningFile.getApplyId() : UUID.randomUUID().toString();
commonTable = new CommonTable(masterId,scanningFile.getPatientId(),scanningFile.getAge(),scanningFile.getSex(),scanningFile.getVisitId(),scanningFile.getName(),
scanningFile.getAdmissDate(),scanningFile.getDisDate(),scanningFile.getDisDept(),scanningFile.getAttending(),scanningFile.getInpNo(),"扫描系统");
// //保存公共表
4 years ago
LocalDateTime now2 = LocalDateTime.now();//删掉
5 years ago
commonTableRepository.save(commonTable);
4 years ago
LocalDateTime end2 = LocalDateTime.now();//删掉
logger.error("保存公共表耗时:"+Duration.between(now2,end2).toMillis());//删掉
5 years ago
//保存公共表1
4 years ago
LocalDateTime now3 = LocalDateTime.now();//删掉
5 years ago
commonTable1Repository.save( new CommonTable1(commonTable.getMasterId(),scanningFile.getBirthday(),scanningFile.getIdCard(),scanningFile.getAdmissDept(),scanningFile.getAdmissDoctor()));
4 years ago
LocalDateTime end3 = LocalDateTime.now();//删掉
logger.error("保存公共表1耗时:"+Duration.between(now3,end3).toMillis());//删掉
}
LocalDateTime now4 = LocalDateTime.now();//删掉
Object[] objects = WebServiceUtils.connect(scanningFile.getPath() + "\\" + scanningFile.getFileName());
LocalDateTime end4 = LocalDateTime.now();//删掉
logger.error("WebServiceUtils.connect耗时:"+Duration.between(now4,end4).toMillis());//删掉
4 years ago
//Object[] objects = WebServiceUtil.urlConnectionUtil("http://10.6.0.224/cdms/cdmsservice.asmx?wsdl",scanningFile.getPath() + "\\" + scanningFile.getFileName());
//使用HttpURLConnection方式连接
// String s = WebServiceUtil.urlConnectionUtil("http://10.6.0.224/cdms/cdmsservice.asmx?wsdl", scanningFile.getPath() + "\\" + scanningFile.getFileName());
4 years ago
/*if(!"".equals(s)){
int w=9;
}
4 years ago
//s转Object[]
String[] strArr = s.split(",");//注意分隔符是需要转译
Object[] objects = new Object[strArr.length];
for(int i=0;i<strArr.length;i++) {
objects[i] = strArr[i];
}*/
5 years ago
if (objects == null) {
return "下载图片出错了。。。";
}
String number = scanningFile.getNumber();
// Integer number = 1;
//37006704-10-47-1.CDP 截成 10-47-1.CDP
number = number.substring(number.indexOf("-")+1,number.length());
//10-47-1.CDP 截成 47-1.CDP
number = number.substring(number.indexOf("-")+1,number.length());
//47-1.CDP 截成47
number = number.substring(0,number.indexOf("-"));
// byte[] bytes = (byte[]) objects[0];
String applyId = commonTable.getMasterId() + "~" + (number != null ? number : "");
// 给临时图片填充内容
4 years ago
LocalDateTime now5 = LocalDateTime.now();//删掉
5 years ago
File imageTempFile = FileUtils.createFile("images", scanningFile.getInpNo(), scanningFile.getVisitId(), applyId);
4 years ago
LocalDateTime end5 = LocalDateTime.now();//删掉
logger.error("FileUtils.createFile生成images耗时:"+Duration.between(now5,end5).toMillis());//删掉
LocalDateTime now6 = LocalDateTime.now();//删掉
5 years ago
File imageFile = FileUtils.getImageFileByByteArray(objects, imageTempFile);
4 years ago
LocalDateTime end6 = LocalDateTime.now();//删掉
logger.error("FileUtils.getImageFileByByteArray耗时:"+Duration.between(now6,end6).toMillis());//删掉
5 years ago
if (imageFile == null) {
return "填充临时图片出错了。。。";
}
4 years ago
LocalDateTime now7 = LocalDateTime.now();//删掉
5 years ago
File pdfFile = FileUtils.createFile("pdfs", scanningFile.getInpNo(), scanningFile.getVisitId(), applyId);
4 years ago
LocalDateTime end7 = LocalDateTime.now();//删掉
logger.error("FileUtils.createFile生成pdfs耗时:"+Duration.between(now7,end7).toMillis());//删掉
LocalDateTime now8 = LocalDateTime.now();//删掉
5 years ago
String pdfPath = PdfUtils.imagesToPdf(imageFile, pdfFile);
4 years ago
LocalDateTime end8 = LocalDateTime.now();//删掉
logger.error("图片转pdf耗时:"+Duration.between(now8,end8).toMillis());//删掉
5 years ago
//存入pdf地址
if (pdfPath == null) {
return "image转成pdf出错了。。。";
}
// // 如果存在 那就更新
// ArchiveDetail archiveDetail = archiveDetailService.isExit(commonTable.getMasterId(), "1", "扫描系统", applyId);
// if (archiveDetail == null) {
// archiveDetail = new ArchiveDetail(commonTable.getMasterId(), new Date(), "1", "扫描系统", applyId, pdfPath,Integer.valueOf(number));
// archiveDetailService.save(archiveDetail);
// }
String assortId = "1";
switch (scanningFile.getAssortId()){
case "1": // 病案首页
assortId = "3";
break;
case "2": //出院(或死亡)记录(小结)
assortId = "113";
break;
case "3": //入院记录
assortId = "9";
break;
case "4": //病程记录
assortId = "11";
break;
case "5": //死亡病例讨论
assortId = "14";
break;
case "6": //特殊病情及治疗记录
assortId = "20";
break;
case "7": //会诊记录单
assortId = "15";
break;
case "8": //病重(病危)护理记录
assortId = "121";
break;
case "9": //知情同意书
assortId = "20";
break;
case "10": //辅助检查报告单
assortId = "110";
break;
case "11": //医嘱单
assortId = "25";
break;
case "12": //体温单
assortId = "5";
break;
case "13": //护理记录
assortId = "2";
break;
case "14": //死亡患者门诊病历
assortId = "18";
break;
case "15": //其他资料
assortId = "18";
break;
}
4 years ago
LocalDateTime now9 = LocalDateTime.now();//删掉
5 years ago
archiveDetailService.save(new ArchiveDetail(commonTable.getMasterId(), new Date(), assortId, "扫描系统", applyId, pdfPath,Integer.valueOf(number)));
4 years ago
LocalDateTime end9 = LocalDateTime.now();//删掉
logger.error("保存耗时:"+Duration.between(now9,end9).toMillis());//删掉
5 years ago
return null;
}
public String handlePdfFile1(MessageDto messageDto) throws Exception{
String pdfPath = "";
ArchiveMaster archiveMaster = archiveMasterService.findByInpNoAndVisitIdAndIsValid(messageDto.getInpNo(),messageDto.getVisitId());
if(archiveMaster == null){
return "没有患者信息";
}
File imageFile = FileUtils.createFile("images", messageDto.getInpNo(), messageDto.getVisitId(),"");
if(DownloadUtils.downloadImageFile("","", imageFile) == null){
return "下载图像出错";
}
File pdfFile = FileUtils.createFile("pdfs", messageDto.getInpNo(), messageDto.getVisitId(), messageDto.getApplyId());
//存入pdf地址
pdfPath = PdfUtils.imagesToPdf(imageFile, pdfFile);
if (pdfPath == null) {
return "image转成pdf出错了。。。";
}
ArchiveDetail archiveDetail = new ArchiveDetail(archiveMaster.getId(), new Date(), messageDto.getType(), "扫描系统", messageDto.getApplyId(), pdfPath,Integer.valueOf(messageDto.getPageNum()));
archiveDetail.setTitle(messageDto.getApplyId());
archiveDetailService.save(archiveDetail);
if(archiveDetail.getId() != null){
return null;
}
return "出错了";
}
public static String getReturnResult(boolean resultCode,String remark) throws Exception{
OutPara outPara = new OutPara();
if (resultCode) {
outPara.setRESULT_CODE(true);
outPara.setRESULT_CONTENT("成功");
} else {
outPara.setRESULT_CODE(false);
outPara.setRESULT_CONTENT(remark);
}
return XMLUtils.generateXmlStr(outPara);
}
}