diff --git a/pom.xml b/pom.xml
index 4fea87c..d7e2d58 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,6 +29,14 @@
+
+ org.apache.pdfbox
+ pdfbox
+ 2.0.27
+
+
+
+
com.twelvemonkeys.imageio
imageio-tiff
@@ -36,9 +44,9 @@
- com.microsoft.sqlserver
- sqljdbc6
- 6.4.0
+ net.sourceforge.jtds
+ jtds
+ 1.3.1
diff --git a/src/main/java/com/docus/demo/controller/SyncBasicDataController.java b/src/main/java/com/docus/demo/controller/SyncBasicDataController.java
index a52056b..11e075d 100644
--- a/src/main/java/com/docus/demo/controller/SyncBasicDataController.java
+++ b/src/main/java/com/docus/demo/controller/SyncBasicDataController.java
@@ -6,7 +6,9 @@ import com.docus.demo.dto.SyncFileDto;
import com.docus.demo.entity.CommonResult;
import com.docus.demo.facade.ISyncBasicDataService;
import com.docus.demo.facade.ISyncBasicFileService;
+import com.docus.demo.facade.IWebService;
import com.docus.demo.utils.ImageUtils;
+import com.docus.demo.utils.PDFFileUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +25,8 @@ public class SyncBasicDataController {
private ISyncBasicDataService syncBasicDataService;
@Autowired
private ISyncBasicFileService syncBasicFileService;
+ @Autowired
+ private IWebService webService;
@ApiOperation("省厅-同步基础数据")
@PostMapping("/syncBasicData")
@@ -30,6 +34,12 @@ public class SyncBasicDataController {
return syncBasicDataService.syncBasicData(syncBasicDataDto);
}
+ @ApiOperation("同步检验图片数据")
+ @PostMapping("/syncInspection")
+ public CommonResult> syncInspection(@RequestBody SyncBasicDataDto syncBasicDataDto){
+ return webService.syncInspection(syncBasicDataDto);
+ }
+
@ApiOperation("联众-同步基础数据")
@PostMapping("/syncLzBasicData")
public CommonResult> syncLzBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto){
diff --git a/src/main/java/com/docus/demo/dto/SyncBasicDataDto.java b/src/main/java/com/docus/demo/dto/SyncBasicDataDto.java
index 83ff964..3f66165 100644
--- a/src/main/java/com/docus/demo/dto/SyncBasicDataDto.java
+++ b/src/main/java/com/docus/demo/dto/SyncBasicDataDto.java
@@ -2,6 +2,8 @@ package com.docus.demo.dto;
import lombok.Data;
+import java.util.List;
+
@Data
public class SyncBasicDataDto {
@@ -9,5 +11,7 @@ public class SyncBasicDataDto {
private String endDate;
+ private List inpatientNoList;
+
private int limit;
}
diff --git a/src/main/java/com/docus/demo/entity/PatientListResult.java b/src/main/java/com/docus/demo/entity/PatientListResult.java
new file mode 100644
index 0000000..1393dc1
--- /dev/null
+++ b/src/main/java/com/docus/demo/entity/PatientListResult.java
@@ -0,0 +1,33 @@
+package com.docus.demo.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatientListResult {
+
+ private String ResultCode;
+
+ private String ResultContent;
+
+ private Result Result;
+
+
+
+ @Data
+ public class Result{
+ private List PidReportMain;
+
+ @Data
+ public class ReportInfo{
+ private String RepId;
+ private String PidComName;
+ private String PidInNo ;
+ private String PidAddmissTimes;
+ }
+ }
+}
+
+
+
diff --git a/src/main/java/com/docus/demo/entity/PatientReportResult.java b/src/main/java/com/docus/demo/entity/PatientReportResult.java
new file mode 100644
index 0000000..152b875
--- /dev/null
+++ b/src/main/java/com/docus/demo/entity/PatientReportResult.java
@@ -0,0 +1,29 @@
+package com.docus.demo.entity;
+
+import lombok.Data;
+
+@Data
+public class PatientReportResult {
+
+ private String ResultCode;
+
+ private String ResultContent;
+
+ private Result Result;
+
+
+
+ @Data
+ public class Result{
+ private Patient Patient;
+
+ @Data
+ public class Patient{
+ private String RepId;
+ private String PatientReport;
+ }
+ }
+}
+
+
+
diff --git a/src/main/java/com/docus/demo/entity/Tbasic.java b/src/main/java/com/docus/demo/entity/Tbasic.java
index 0b85e6a..f9884bd 100644
--- a/src/main/java/com/docus/demo/entity/Tbasic.java
+++ b/src/main/java/com/docus/demo/entity/Tbasic.java
@@ -141,4 +141,9 @@ public class Tbasic {
@ApiModelProperty(value = "档案文件存储类型,1:pdf(默认)2:图片")
private Integer archiveFileStorageType;
+ @ApiModelProperty(value = "扫描上传状态,0:未扫描、1:待质检、2:已退回、3:系统通过、4:人工通过,5:已返工")
+ private Integer scanUploadState;
+
+
+ private Date birthday;
}
diff --git a/src/main/java/com/docus/demo/entity/TbasicSub.java b/src/main/java/com/docus/demo/entity/TbasicSub.java
new file mode 100644
index 0000000..2819aa3
--- /dev/null
+++ b/src/main/java/com/docus/demo/entity/TbasicSub.java
@@ -0,0 +1,13 @@
+package com.docus.demo.entity;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class TbasicSub {
+
+ private String patientId;
+
+ private Date birthday;
+}
diff --git a/src/main/java/com/docus/demo/entity/sqlserver1/Tpatientvisit.java b/src/main/java/com/docus/demo/entity/sqlserver1/Tpatientvisit.java
index 5752241..1ac8235 100644
--- a/src/main/java/com/docus/demo/entity/sqlserver1/Tpatientvisit.java
+++ b/src/main/java/com/docus/demo/entity/sqlserver1/Tpatientvisit.java
@@ -33,9 +33,11 @@ public class Tpatientvisit implements Serializable {
private String fname;
@ApiModelProperty(value = "性别")
- @TableField("FSEX")
private String fsex;
+ @ApiModelProperty(value = "性别")
+ private String fsexbh;
+
@ApiModelProperty(value = "身份证号")
@TableField("FIDCARD")
private String fidcard;
@@ -94,5 +96,8 @@ public class Tpatientvisit implements Serializable {
@ApiModelProperty(value = "是否死亡")
@TableField("fbody")
- private Integer fbody;
+ private String fbody;
+
+ @ApiModelProperty(value = "出生日期")
+ private Date Fbirthday;
}
diff --git a/src/main/java/com/docus/demo/facade/IWebService.java b/src/main/java/com/docus/demo/facade/IWebService.java
new file mode 100644
index 0000000..4d2a432
--- /dev/null
+++ b/src/main/java/com/docus/demo/facade/IWebService.java
@@ -0,0 +1,10 @@
+package com.docus.demo.facade;
+
+import com.docus.demo.dto.SyncBasicDataDto;
+import com.docus.demo.entity.CommonResult;
+
+public interface IWebService {
+
+
+ CommonResult> syncInspection(SyncBasicDataDto syncBasicDataDto);
+}
diff --git a/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java b/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java
index d773eab..449b16a 100644
--- a/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java
+++ b/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java
@@ -4,6 +4,7 @@ package com.docus.demo.mapper.mysql;
import com.docus.demo.dto.BasicSelectDto;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.entity.Tbasic;
+import com.docus.demo.entity.TbasicSub;
import com.docus.demo.vo.BasicVo;
import org.apache.ibatis.annotations.Param;
@@ -21,4 +22,10 @@ public interface BasicMapper {
void insertOrUpdateByid(List tbasicList);
List getOldBasicList(@Param("list") List fprnList, @Param("dto") SyncBasicDataDto syncBasicDataDto);
+
+ void updateScanStatus(@Param("pid")String pid);
+
+
+
+ void insertOrUpdateTbasicSub(@Param("list") List tbasicSubList);
}
diff --git a/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java b/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java
index c1552a4..68cdcb1 100644
--- a/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java
+++ b/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java
@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.entity.CommonResult;
import com.docus.demo.entity.Tbasic;
+import com.docus.demo.entity.TbasicSub;
import com.docus.demo.entity.sqlserver.CardInfo;
import com.docus.demo.entity.sqlserver1.Tdiagnose;
import com.docus.demo.entity.sqlserver1.Toperation;
@@ -19,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
+import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutorService;
@@ -37,21 +39,28 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
private TcardMapper tcardMapper;
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- private final ExecutorService executor = Executors.newFixedThreadPool(7);
+// private final ExecutorService executor = Executors.newFixedThreadPool(7);
@Override
public CommonResult> syncBasicData(SyncBasicDataDto syncBasicDataDto) {
- //页码
- int current;
+
+ LocalDate startDate = LocalDate.parse(syncBasicDataDto.getStartDate());
+ LocalDate endDate = LocalDate.parse(syncBasicDataDto.getEndDate());
+
+
//每页1000条数据
- int limit = syncBasicDataDto.getLimit();
+
List tpatientvisitList;
- for (current = 1; ; current++) {
+ for (int current = 1; ; current++) {
+ syncBasicDataDto.setStartDate(startDate+" 00:00:00");
+ syncBasicDataDto.setEndDate(startDate.plusDays(1)+" 23:59:59");
+
+ log.info(syncBasicDataDto.getStartDate()+" --- " +syncBasicDataDto.getEndDate());
//根据出院时间查询省厅数据
- tpatientvisitList = paintVisitMapper.getTpatientVisitList((current - 1) * limit, current*limit, syncBasicDataDto);
- if (null == tpatientvisitList || tpatientvisitList.size() == 0) {
- break;
- }
+ tpatientvisitList = paintVisitMapper.getTpatientVisitList(0, 0, syncBasicDataDto);
+ log.info("开始同步"+tpatientvisitList.size());
+// tpatientvisitList = paintVisitMapper.getTpatientVisitList((current - 1) * limit, current*limit, syncBasicDataDto);
+
List fprnList = tpatientvisitList.stream().map(Tpatientvisit::getFprn).collect(Collectors.toList());
//诊断数据
List tdiagnoses = paintVisitMapper.getTdiagnose(fprnList);
@@ -59,12 +68,31 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
//数据map转换
List oldBasicList = basicMapper.getOldBasicList(fprnList, syncBasicDataDto);
List tbasicList = this.getTbasicList(oldBasicList, tpatientvisitList, tdiagnoses, toperations);
+
+ List tbasicSubList = this.getTbasicSubList(tbasicList);
+
//数据入库
basicMapper.insertOrUpdateByid(tbasicList);
+ basicMapper.insertOrUpdateTbasicSub(tbasicSubList);
+ log.info("数据库入库"+tbasicList.size() +"子表"+tbasicSubList.size());
+
+ if (startDate.compareTo(endDate)>0) {
+ break;
+ }
+ startDate = startDate.plusDays(10);
}
return CommonResult.success("同步成功");
}
+ private List getTbasicSubList(List tbasicList) {
+ return tbasicList.stream().map(m->{
+ TbasicSub tbasicSub = new TbasicSub();
+ tbasicSub.setBirthday(m.getBirthday());
+ tbasicSub.setPatientId(m.getPatientId());
+ return tbasicSub;
+ }).collect(Collectors.toList());
+ }
+
private List getTbasicList(List oldBasicList, List tpatientvisitList, List tdiagnoses, List toperations) {
@@ -79,6 +107,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
.findFirst()
.orElse(null);
+
String fprn = m.getFprn();
Integer ftimes = m.getFtimes();
@@ -107,8 +136,16 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
tbasic.setAdmissTimes(m.getFtimes());
tbasic.setInpatientNo(m.getFprn());
tbasic.setName(m.getFname());
- tbasic.setSex(m.getFsex());
- tbasic.setAge(0);
+ tbasic.setSex(m.getFsexbh());
+ tbasic.setSexName(m.getFsex());
+ if (m.getFage().contains("Y")){
+ tbasic.setAge(Integer.valueOf(m.getFage().split("Y")[1]));
+ }else if (m.getFage().contains("M")){
+ tbasic.setAgeMonth(Integer.valueOf(m.getFage().split("M")[1]));
+ }else if (m.getFage().contains("D")){
+ tbasic.setAgeDay(Integer.valueOf(m.getFage().split("D")[1]));
+ }
+
tbasic.setIdCard(m.getFidcard());
tbasic.setTelphone("");
tbasic.setAdmissDate(m.getFrydate());
@@ -120,6 +157,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
tbasic.setAdmissDays(m.getFdays());
tbasic.setAttending(m.getFzzdoctbh());
tbasic.setAttendingName(m.getFzzdoct());
+ tbasic.setBirthday(m.getFbirthday());
if (tdiagnose != null) {
tbasic.setMainDiagCode(tdiagnose.getFicdm());
tbasic.setMainDiagName(tdiagnose.getFjbname());
@@ -128,10 +166,12 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
tbasic.setMainOperateCode(toperation.getFopcode());
tbasic.setMainOperateName(toperation.getFop());
}
- tbasic.setIsDead(m.getFbody());
+// tbasic.setIsDead(m.getFbody());
tbasic.setCreateTime(new Date());
tbasic.setSexName(m.getFsex());
tbasic.setArchiveFileStorageType(2);
+ tbasic.setScanUploadState(0);
+ tbasic.setIsArchive(1);
return tbasic;
}).collect(Collectors.toList());
@@ -141,7 +181,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
@Override
public CommonResult> syncLzBasicData(SyncBasicDataDto syncBasicDataDto) {
- executor.execute(()->{
+// executor.execute(()->{
//页码
int current;
//每页1000条数据
@@ -172,7 +212,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
}
}
log.info(syncBasicDataDto.getStartDate() + " " + syncBasicDataDto.getEndDate() + "结束同步" );
- });
+// });
return CommonResult.success("同步成功");
diff --git a/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java b/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java
index 5880778..85eafd8 100644
--- a/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java
+++ b/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java
@@ -43,7 +43,7 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
- private final ExecutorService executor = Executors.newFixedThreadPool(7);
+ private final ExecutorService executor = Executors.newFixedThreadPool(5);
@Override
@@ -63,8 +63,8 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
if (null == basicVoList || basicVoList.size() == 0) {
break;
}
- List updateOrInsertList = new ArrayList<>(5000);
for (BasicVo basicVo : basicVoList) {
+ List updateOrInsertList = new ArrayList<>(1000);
log.info("开始同步"+basicVo.getInpatientNo());
List scanAssortList = this.doSyncFile(basicVo);
//2.5数据入库
@@ -74,15 +74,19 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
List addScanAssortList = this.handleUpdateOrInsert(oldScanAssort,scanAssortList);
updateOrInsertList.addAll(addScanAssortList);
} else {
- log.info(basicVo.getPatientId() + " canFindImage ");
+ log.info(basicVo.getInpatientNo() + " canFindImage ");
}
- log.info("结束同步"+basicVo.getInpatientNo());
+ if (ObjectUtil.isNotEmpty(updateOrInsertList)){
+ scanAssortMapper.insertOrUpdateBatch(updateOrInsertList);
+ basicMapper.updateScanStatus(basicVo.getPatientId());
+ }
+ log.info("结束同步"+basicVo.getInpatientNo() +" size " +updateOrInsertList.size());
}
- scanAssortMapper.insertOrUpdateBatch(updateOrInsertList);
}
}catch (Exception e){
log.info(e.getMessage());
}
+
},executor);
return CommonResult.success("同步成功");
@@ -120,11 +124,8 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
inpatientNo.insert(0, "0");
}
- String rootDir = "Z:\\"
- + cyYear + File.separator
- + cyYear + cyMonth + File.separator
- + cyYear + cyMonth + cyDay + File.separator
- + inpatientNo + cyYear + cyMonth + cyDay + File.separator;
+ String rootDir = getRootDir(basicVo,cyYear,cyMonth,cyDay);
+
String outDir = "F:\\lianzhong" + File.separator
+ cyYear + File.separator
+ cyMonth + File.separator
@@ -149,7 +150,6 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
log.info(basicVo.getInpatientNo()+"文件未找到"+inPutFile);
}
boolean savePicFlag ;
- boolean rotateFlag ;
// 2.2jp2转化jpg 图片通过文件流写到挂在的盘符
savePicFlag = ImageUtils.getInstance().savePic(inPutFile, outFile, tpicture.getRotateDegree());
if (!savePicFlag){
@@ -172,7 +172,7 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
scanAssort.setFilePages(1);
if (savePicFlag){
- scanAssort.setCreater("auto2");
+ scanAssort.setCreater("auto1");
}else {
scanAssort.setCreater("auto4");
}
diff --git a/src/main/java/com/docus/demo/service/WebServiceImpl.java b/src/main/java/com/docus/demo/service/WebServiceImpl.java
new file mode 100644
index 0000000..1e25290
--- /dev/null
+++ b/src/main/java/com/docus/demo/service/WebServiceImpl.java
@@ -0,0 +1,135 @@
+package com.docus.demo.service;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.XmlUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.http.webservice.SoapClient;
+import com.docus.demo.dto.SyncBasicDataDto;
+import com.docus.demo.entity.*;
+import com.docus.demo.facade.IWebService;
+import com.docus.demo.mapper.mysql.BasicMapper;
+import com.docus.demo.mapper.mysql.ScanAssortMapper;
+import com.docus.demo.utils.PDFFileUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Slf4j
+@Service
+public class WebServiceImpl implements IWebService {
+
+ @Autowired
+ private BasicMapper basicMapper;
+ @Autowired
+ private ScanAssortMapper scanAssortMapper;
+
+ @Override
+ public CommonResult> syncInspection(SyncBasicDataDto syncBasicDataDto) {
+ //查询基础数据
+ List tbasicList =basicMapper.getOldBasicList(null,syncBasicDataDto);
+
+ for (Tbasic tbasic : tbasicList){
+ String pNo = tbasic.getInpatientNo();
+ String times = tbasic.getAdmissTimes().toString();
+ String StartDate = tbasic.getAdmissDate().toString();
+ String EndDate = tbasic.getDisDate().toString();
+ String patientId = tbasic.getPatientId();
+
+ //获取所有的报告列表
+ PatientListResult patientListResult= getCommonResult(pNo, times, StartDate, EndDate);
+
+ if (!patientListResult.getResultCode().equals("0")){
+ log.info(pNo+" "+times+"调用失败");
+ }
+ String root = "D:\\Users\\admin\\Desktop";
+
+ List scanAssortList = new ArrayList<>();
+ patientListResult.getResult().getPidReportMain().forEach(item->{
+ //时间段内如果查询到住院次数相同的数据 则数据入库
+ if (item.getPidAddmissTimes().equals(times)&&item.getPidInNo().equals(pNo)){
+ PatientReportResult patientReportResult = this.getReportResult(item.getRepId());
+ String base64Result = patientReportResult.getResult().getPatient().getPatientReport();
+ List addScanList = PDFFileUtils.base64StringToPDF(base64Result,root,item.getPidComName());
+ addScanList.forEach(scanAssort->{
+ scanAssort.setPatientId(patientId);
+ scanAssort.setAssortId("");
+ });
+ }
+ });
+ //数据写入到3.0
+ scanAssortMapper.insertOrUpdateBatch(scanAssortList);
+ }
+
+ return CommonResult.success("同步检验数据成功");
+ }
+
+ private PatientReportResult getReportResult(String repID) {
+ Map paramMap = new HashMap<>();
+ paramMap.put("RepID", repID);
+ paramMap.put("CustomReportSuffix", "");
+
+ String paramStr = "";
+ //拼接外层入参
+ Map params = new HashMap<>();
+
+ params.put("MethodName", "GetPatientReport");
+ params.put("XMLData",paramStr);
+ Map result = this.request(params);
+
+ //转对象List stream获取报告id
+ return BeanUtil.fillBeanWithMap(result, new PatientReportResult(), false);
+ }
+
+
+ private PatientListResult getCommonResult(String pNo, String times, String StartDate, String EndDate) {
+ Map paramMap = new HashMap<>();
+ paramMap.put("PidInNo", pNo);
+ paramMap.put("PidAddmissTimes", times);
+ paramMap.put("StartDate", StartDate);
+ paramMap.put("EndDate", EndDate);
+ String paramStr = "";
+ //拼接外层入参
+ Map params = new HashMap<>();
+
+ params.put("MethodName", "GetPatientList");
+ params.put("XMLData",paramStr);
+ Map result = this.request(params);
+
+ //转对象List stream获取报告id
+ return BeanUtil.fillBeanWithMap(result, new PatientListResult(), false);
+ }
+
+
+
+ private Map request(Map params){
+ String result = "";
+ try{
+ String url = "http://192.168.8.157:8095/DCLService.asmx";
+ SoapClient client = SoapClient.create(url);
+ client.header("SOAPAction","http://dcl.org/DCLInterface");
+ // 设置要请求的方法,此接口方法前缀为web,传入对应的命名空间
+ client.setMethod("dcl:DCLInterface", "http://dcl.org/");
+ client.setParams(params,true);
+
+// log.info("[请求ID:{}]测试方法字符串接口:{},入参:{}",requestId,url,client.getMsgStr(true));
+ // 发送请求,参数true表示返回一个格式化后的XML内容
+ // 返回内容为XML字符串,可以配合XmlUtil解析这个响应
+ result = client.send(false);
+ log.info(result);
+// log.info("[请求ID:{}]测试方法字符串出参:{}",requestId,result);
+ if(result.contains("")){
+ result = result.substring(result.indexOf("")+20,result.indexOf(""));
+ }else{
+ result = result.substring(result.indexOf("Result>")+7,result.indexOf("}")+1);
+ }
+
+ return XmlUtil.xmlToMap(result);
+ }catch (Exception ex){
+ log.error("测试方法字符串出现异常,入参:{},出参:{},{}",params,result,ex);
+ throw ex;
+ }
+ }
+
+}
diff --git a/src/main/java/com/docus/demo/utils/ImageUtils.java b/src/main/java/com/docus/demo/utils/ImageUtils.java
index 2e7b9c7..3467065 100644
--- a/src/main/java/com/docus/demo/utils/ImageUtils.java
+++ b/src/main/java/com/docus/demo/utils/ImageUtils.java
@@ -37,11 +37,6 @@ public class ImageUtils {
return true;
}
-// public static void main(String[] args) {
-// ImageUtils imageUtils = new ImageUtils();
-// imageUtils.savePic("C:\\Users\\Administrator\\Desktop\\QSL0015.jp2","C:\\Users\\Administrator\\Desktop\\QSL0015.jpg");
-// }
-
private boolean parseCommandLine(String[] args, DemoData demoData) {
try {
@@ -234,11 +229,8 @@ public class ImageUtils {
}
-// public static void main(String[] args) {
-//// ImageUtils imageUtils = new ImageUtils();
-//// imageUtils.savePic("C:\\Users\\Administrator\\Desktop\\HNSET0001.tif","C:\\Users\\Administrator\\Desktop\\HNSET0001.jpg",90);
-//
-//
-//
-// }
+ public static void main(String[] args) {
+ ImageUtils imageUtils = new ImageUtils();
+ imageUtils.savePic("C:\\Users\\Administrator\\Desktop\\QSL0001.tif","C:\\Users\\Administrator\\Desktop\\QSL0001.jpg",90);
+ }
}
diff --git a/src/main/java/com/docus/demo/utils/PDFFileUtils.java b/src/main/java/com/docus/demo/utils/PDFFileUtils.java
new file mode 100644
index 0000000..adc5dfc
--- /dev/null
+++ b/src/main/java/com/docus/demo/utils/PDFFileUtils.java
@@ -0,0 +1,67 @@
+package com.docus.demo.utils;
+
+import com.docus.demo.entity.ScanAssort;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.rendering.PDFRenderer;
+import sun.misc.BASE64Decoder;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class PDFFileUtils {
+
+
+ /**
+ * pdf拆分图片方法
+ * @param base64Content
+ * @param rootPath
+ * @param fileTitle
+ */
+ public static List base64StringToPDF(String base64Content, String rootPath, String fileTitle) {
+ BASE64Decoder decoder = new BASE64Decoder();
+ List addScanList = new ArrayList<>();
+ try {
+ //1.base64编码内容转换为字节数组
+ byte[] bytes = decoder.decodeBuffer(base64Content);
+ //2.生成jpg图片
+ PDDocument document = PDDocument.load(new ByteArrayInputStream(bytes));
+ PDFRenderer renderer = new PDFRenderer(document);
+ // Iterate over each page and save it as an image
+ for (int pageIndex = 0; pageIndex < document.getNumberOfPages(); pageIndex++) {
+ // Render the page as an image
+ BufferedImage image = renderer.renderImageWithDPI(pageIndex, 300); // Set DPI value as needed
+ // Save the image to a file
+ String outputFilePath = rootPath +File.separator+ fileTitle +pageIndex+ ".jpg"; // Output file path
+ ImageIO.write(image, "jpg", new File(outputFilePath));
+ //todo 拼装数据
+ ScanAssort scanAssort = new ScanAssort();
+ scanAssort.setFileTitle(fileTitle +pageIndex);
+ scanAssort.setImagePath(rootPath);
+ scanAssort.setFileSource(1);
+ scanAssort.setFileStorageType(1);
+ scanAssort.setFilePages(1);
+ scanAssort.setCreater("检验");
+ scanAssort.setCreateTime(new Date());
+ scanAssort.setSort(pageIndex);
+
+ addScanList.add(scanAssort);
+ }
+ // Close the PDF document
+ document.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return addScanList;
+ }
+
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 8e9faba..490ccfe 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -70,25 +70,25 @@ spring:
test-on-borrow: false
test-on-return: false
validation-query: select 1
- #省厅数据库
- sqlserver1:
- driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
- username: sa
- password: 17931
- url: jdbc:sqlserver://192.168.8.74:1433;DatabaseName=u_medrecord
- # 初始化配置
- initial-size: 3
- # 最小连接数
- min-idle: 3
- # 最大连接数
- max-active: 15
- # 获取连接超时时间
- max-wait: 5000
- # 连接有效性检测时间
- time-between-eviction-runs-millis: 90000
- # 最大空闲时间
- min-evictable-idle-time-millis: 1800000
- test-while-idle: true
- test-on-borrow: false
- test-on-return: false
- validation-query: select 1
+ #省厅数据库
+ sqlserver1:
+ driver-class-name: net.sourceforge.jtds.jdbc.Driver
+ username: rhin
+ password: rhin
+ url: jdbc:jtds:sqlserver://192.168.8.250:1433;DatabaseName=bagl_java
+ # 初始化配置
+ initial-size: 3
+ # 最小连接数
+ min-idle: 3
+ # 最大连接数
+ max-active: 15
+ # 获取连接超时时间
+ max-wait: 5000
+ # 连接有效性检测时间
+ time-between-eviction-runs-millis: 90000
+ # 最大空闲时间
+ min-evictable-idle-time-millis: 1800000
+ test-while-idle: true
+ test-on-borrow: false
+ test-on-return: false
+ validation-query: select 1
diff --git a/src/main/resources/mapper/mysql/BasicMapper.xml b/src/main/resources/mapper/mysql/BasicMapper.xml
index 2c1d614..30e9dc9 100644
--- a/src/main/resources/mapper/mysql/BasicMapper.xml
+++ b/src/main/resources/mapper/mysql/BasicMapper.xml
@@ -4,14 +4,14 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
insert into docus_medicalrecord.t_basic
(patient_id,admiss_times,inpatient_no,admiss_id,
name,sex,age,id_card,
admiss_date,admiss_dept,admiss_dept_name,dis_date,
dis_dept,dis_dept_name,main_diag_code,main_diag_name,
main_operate_code,main_operate_name,create_time,is_archive,
- file_source,b_column5,b_column8,archive_file_storage_type
+ file_source,b_column5,b_column8,archive_file_storage_type,
+ scan_upload_state
)
values
@@ -20,10 +20,33 @@
#{item.admissDate},#{item.admissDept},#{item.admissDeptName},#{item.disDate},
#{item.disDept},#{item.disDeptName},#{item.mainDiagCode},#{item.mainDiagName},
#{item.mainOperateCode},#{item.mainOperateName},#{item.createTime},#{item.isArchive},
- #{item.fileSource},#{item.bColumn5},#{item.bColumn8},#{item.archiveFileStorageType}
+ #{item.fileSource},#{item.bColumn5},#{item.bColumn8},#{item.archiveFileStorageType},
+ #{item.scanUploadState}
)
+ ON DUPLICATE KEY UPDATE id_card = VALUES(id_card)
+ ,admiss_dept = VALUES(admiss_dept)
+ ,admiss_dept_name = VALUES(admiss_dept_name)
+ ,dis_dept = VALUES(dis_dept)
+ ,dis_dept_name = VALUES(dis_dept_name)
+ ,is_archive = VALUES(is_archive);
+
+
+ insert into docus_medicalrecord.t_basic_sub
+ (patient_id,birthday)
+ values
+
+ (#{item.patientId},#{item.birthday})
+
+ ON DUPLICATE KEY UPDATE birthday = VALUES(birthday);
+
+
+
+ update docus_medicalrecord.t_basic set scan_source = 1
+ WHERE patient_id = #{pid}
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/mysql/ScanAssortMapper.xml b/src/main/resources/mapper/mysql/ScanAssortMapper.xml
index ad50340..c058c70 100644
--- a/src/main/resources/mapper/mysql/ScanAssortMapper.xml
+++ b/src/main/resources/mapper/mysql/ScanAssortMapper.xml
@@ -23,7 +23,7 @@
separator=",">
(#{item.id},#{item.patientId},#{item.assortId},#{item.fileTitle},#{item.imagePath},#{item.scanPage},#{item.fileSource},#{item.fileStorageType},#{item.filePages},#{item.creater},#{item.createTime},#{item.sort})
- ON DUPLICATE KEY UPDATE file_pages = VALUES(file_pages), update_time = NOW(),sort = VALUES(sort);
+ ON DUPLICATE KEY UPDATE file_pages = VALUES(file_pages), update_time = NOW() ,sort = VALUES(sort) ,creater = VALUES(creater) ;