diff --git a/src/main/java/com/docus/demo/entity/sqlserver2/BasicInfo.java b/src/main/java/com/docus/demo/entity/sqlserver2/BasicInfo.java index 238b46d..b0da73f 100644 --- a/src/main/java/com/docus/demo/entity/sqlserver2/BasicInfo.java +++ b/src/main/java/com/docus/demo/entity/sqlserver2/BasicInfo.java @@ -11,6 +11,10 @@ public class BasicInfo { private String patientId; + private String patPath; + + private String hostReason; + private String inpatientNo; private Date disDate; diff --git a/src/main/java/com/docus/demo/entity/sqlserver2/Tscan.java b/src/main/java/com/docus/demo/entity/sqlserver2/Tscan.java index a772549..672fc12 100644 --- a/src/main/java/com/docus/demo/entity/sqlserver2/Tscan.java +++ b/src/main/java/com/docus/demo/entity/sqlserver2/Tscan.java @@ -2,6 +2,8 @@ package com.docus.demo.entity.sqlserver2; import lombok.Data; +import java.util.Date; + @Data public class Tscan { @@ -12,4 +14,6 @@ public class Tscan { private String scanPage; private int upState; + + private Date upDate; } diff --git a/src/main/java/com/docus/demo/mapper/sqlserver/PictureMapper.java b/src/main/java/com/docus/demo/mapper/sqlserver/PictureMapper.java index f3ff32f..69157d9 100644 --- a/src/main/java/com/docus/demo/mapper/sqlserver/PictureMapper.java +++ b/src/main/java/com/docus/demo/mapper/sqlserver/PictureMapper.java @@ -9,7 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; - +@DS("mapper/sqlserver") public interface PictureMapper { diff --git a/src/main/java/com/docus/demo/mapper/sqlserver1/PaintVisitMapper.java b/src/main/java/com/docus/demo/mapper/sqlserver1/PaintVisitMapper.java index 5c90c02..65110a4 100644 --- a/src/main/java/com/docus/demo/mapper/sqlserver1/PaintVisitMapper.java +++ b/src/main/java/com/docus/demo/mapper/sqlserver1/PaintVisitMapper.java @@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; - +@DS("mapper/sqlserver1") public interface PaintVisitMapper { List getTpatientVisitList(@Param("dto") SyncBasicDataDto syncBasicDataDto); diff --git a/src/main/java/com/docus/demo/mapper/sqlserver2/TscanMapper.java b/src/main/java/com/docus/demo/mapper/sqlserver2/TscanMapper.java index 596d7d0..7a9c284 100644 --- a/src/main/java/com/docus/demo/mapper/sqlserver2/TscanMapper.java +++ b/src/main/java/com/docus/demo/mapper/sqlserver2/TscanMapper.java @@ -1,16 +1,18 @@ package com.docus.demo.mapper.sqlserver2; +import com.baomidou.dynamic.datasource.annotation.DS; import com.docus.demo.entity.sqlserver2.BasicInfo; import com.docus.demo.entity.sqlserver2.Tscan; import org.apache.ibatis.annotations.Param; import java.util.List; +@DS("mapper/sqlserver2") public interface TscanMapper { - List getOldScanListByPid(@Param("id")String patientId); + List getOldScanListByPid(@Param("id") String patientId); - void insertScanList(List insertList); + void insertScanList(@Param("list") List insertList); } diff --git a/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java b/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java index 86c9523..3a0e8a3 100644 --- a/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java +++ b/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java @@ -19,6 +19,7 @@ import org.springframework.stereotype.Service; import java.io.File; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -43,14 +44,23 @@ public class SyncBasicFileImpl implements ISyncBasicFileService { List basicInfos = pictureMapper.getBasicInfoList(); //2.代入到联众数据库 查询图片信息 //3.根据id查询出文件信息 + for (BasicInfo basicInfo: basicInfos) { + List oldScanList = tscanMapper.getOldScanListByPid(basicInfo.getPatientId()); //4.文件数据同步-> 路径 病案号 +病案id主键 List syncScanList = this.doSyncFile(basicInfo); List insertList = this.getInsertList(oldScanList,syncScanList); if (ObjectUtil.isNotEmpty(insertList)){ - //5.数据入库tsacn - tscanMapper.insertScanList(insertList); + //判断数据量 如果文件数据大于五百条 需要做拆分分批次插入 + int batchSize = 100; + // 拆分列表 + for (int i = 0; i < insertList.size(); i += batchSize) { + int endIndex = Math.min(i + batchSize, insertList.size()); + List sublist = insertList.subList(i, endIndex); + //5.数据入库tsacn + tscanMapper.insertScanList(sublist); + } } } return CommonResult.success("同步成功"); @@ -69,22 +79,30 @@ public class SyncBasicFileImpl implements ISyncBasicFileService { private List doSyncFile(BasicInfo basicInfo) { List tscanList = new ArrayList<>(1000); - //010 00 09590 19990405 + String[] disDate = dateFormat.format(basicInfo.getDisDate()).split("-"); String cyYear = disDate[0]; String cyMonth = disDate[1]; String cyDay = disDate[2]; - String inpatientNo = basicInfo.getInpatientNo(); + String patPath = basicInfo.getPatPath(); + String inpatientNo = basicInfo.getInpatientNo().trim(); + String patientId = basicInfo.getPatientId(); String pid = basicInfo.getId(); - // + + String rootDir = "E:\\ServerE01"+File.separator +cyYear+File.separator +cyYear+cyMonth+ File.separator +cyYear+cyMonth+cyDay+ File.separator - +"010"+inpatientNo+cyYear+cyMonth+cyDay+File.separator; + +patPath+File.separator; - String outDir = "E:\\docus"+File.separator+inpatientNo+File.separator+pid ; + String outDir = "E:\\docus"+File.separator+inpatientNo+File.separator+patientId ; + + File file = new File(rootDir); + if (!file.exists()){ + rootDir= basicInfo.getHostReason(); + } // 2.根据cid查询联众表t_picture 走索引大概零点几秒 @@ -114,9 +132,10 @@ public class SyncBasicFileImpl implements ISyncBasicFileService { // 2.4组合文件信息 Tscan tscan = new Tscan(); - tscan.setPatientId(pid); + tscan.setPatientId(patientId); tscan.setAssortId(tpicture.getPicKind()); tscan.setScanPage(picName+".jpg"); + tscan.setUpDate(new Date()); if (savePicFlag&&rotateFlag){ tscan.setUpState(200); @@ -129,6 +148,10 @@ public class SyncBasicFileImpl implements ISyncBasicFileService { tscanList.add(tscan); + if (!savePicFlag){ + break; + } + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 5b93286..3d36b14 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -22,7 +22,7 @@ spring: name: @artifactId@ datasource: dynamic: - primary: mysql #设置默认的数据源,默认值为mysql + primary: sqlserver2 #设置默认的数据源,默认值为mysql strict: false #是否弃用严格模式,如果启用在味匹配到指定数据源时抛出异常 datasource: #公司病案的文件服务数据库 @@ -51,9 +51,9 @@ spring: #联众数据库 sqlserver: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - username: sa - password: 17931 - url: jdbc:sqlserver://192.168.8.74:1433;DatabaseName=u_medrecord + username: JSuser + password: 123456 + url: jdbc:sqlserver://172.18.0.227:1433;DatabaseName=u_medrecord # 初始化配置 initial-size: 3 # 最小连接数 @@ -71,33 +71,11 @@ spring: 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 - #联众数据库 - sqlserver: + sqlserver1: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - username: sa - password: 17931 - url: jdbc:sqlserver://192.168.8.74:1433;DatabaseName=u_medrecord + username: JSuser + password: 123456 + url: jdbc:sqlserver://172.18.0.227:1433;DatabaseName=u_medrecord # 初始化配置 initial-size: 3 # 最小连接数 @@ -114,25 +92,25 @@ spring: test-on-borrow: false test-on-return: false validation-query: select 1 - #2.0数据库 - sqlserver1: - driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - username: JSuser - password: 123456 - url: jdbc:sqlserver://172.18.0.227:1433;DatabaseName=etyyrecord - # 初始化配置 - 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 \ No newline at end of file + #联众数据库 + sqlserver2: + driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver + username: JSuser + password: 123456 + url: jdbc:sqlserver://172.18.0.227:1433;DatabaseName=etyyrecord + # 初始化配置 + 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 \ No newline at end of file diff --git a/src/main/resources/mapper/sqlserver/PictureMapper.xml b/src/main/resources/mapper/sqlserver/PictureMapper.xml index da74e0f..afda364 100644 --- a/src/main/resources/mapper/sqlserver/PictureMapper.xml +++ b/src/main/resources/mapper/sqlserver/PictureMapper.xml @@ -11,24 +11,24 @@ RotateDegree FROM T_picture - where cuid = #{cuid} + where FileId = #{cuid} diff --git a/src/main/resources/mapper/sqlserver2/TsacnMapper.xml b/src/main/resources/mapper/sqlserver2/TsacnMapper.xml index 0071f8c..e60a3ef 100644 --- a/src/main/resources/mapper/sqlserver2/TsacnMapper.xml +++ b/src/main/resources/mapper/sqlserver2/TsacnMapper.xml @@ -5,10 +5,10 @@ insert into t_scan_assort - (patient_id,assort_id,scan_page,file_source,file_pages,creater,create_time) + (patient_id,assort_id,scan_page,source,is_del,up_date,up_state) values - (#{item.patientId},#{item.assortId},#{item.scanPage},#{item.fileSource},#{item.filePages},#{item.creater},#{item.createTime}) + (#{item.patientId},#{item.assortId},#{item.scanPage},1,0,#{item.upDate},#{item.upState}) @@ -16,9 +16,15 @@ \ No newline at end of file