diff --git a/dataConfig/homeQualitySet.json b/dataConfig/homeQualitySet.json index 17688ef..5ce65b4 100644 --- a/dataConfig/homeQualitySet.json +++ b/dataConfig/homeQualitySet.json @@ -48,6 +48,13 @@ //oracle时间配置 "collectTimeName":"ARCHIVE_DATE_TIME", -// ----以下是梅州完整性检验同步配置------ - "pageSize":"1000" + //----以下是梅州完整性检验同步配置------ + //开关0:关闭 1:开启 + "syncFlag":"0", + "pageSize":"1000", + //同步开始时间 + "newSyncTime":"", + //数据表名 + "syncTableName":"CIS_EMR_DOCUMENT", + "syncTableNamespaces":"CDR" } \ No newline at end of file diff --git a/dataConfig/梅州人民医院完整性同步程序-homeQualitySet.json b/dataConfig/梅州人民医院完整性同步程序-homeQualitySet.json new file mode 100644 index 0000000..5ce65b4 --- /dev/null +++ b/dataConfig/梅州人民医院完整性同步程序-homeQualitySet.json @@ -0,0 +1,60 @@ +{ + //唯一键目录结构数组,最高层为前面,最后一层为数据采集层,根节点不填 + "directory":["Msg","ReportInfo"], + //患者主索引号 + "indexFlag":"就诊号", + //采集流水号 + "serialnum":"手术申请单号", + //文件标题 + "filetitle":"文书名", + //下载地址 + "downurl":"WEB_ADDRESS", + //分类id + "assortid":"15E7FE7803F545CB81390BC88E725240", + //系统id + "collectorid":"14", + //采集类型(文件来源 1:采集器;2:扫描生产软件) + "filesource":1, + //下载类型(1:服务器本地;2:ftp服务器;3:共享文件夹) + "filestoragetype":1, + //上传接口 + "uploadConnector":"http://192.168.1.107:9291/api/downplatform/report", + //基本数据存放处,根节点不填,最后一层为基本信息存放标签与doubleBasic配合 + "basicDirectory":["Msg","ReportInfo"], + //可能存在存储基本数据不同情况的标签 + "doubleBasic":["TestItemInfo","BioTestInfo"], + //检查报告列表入参路径 + "bgtsParam":["Request","Msg","EMPI_ID"], + //检查报告列表响应信息根路径 + "bgtsRespon":["MsgInfo","Msg"], + //检查报告key + "examNo":"EXAM_NO", + //文件标题key + "examItemName":"EXAM_ITEM_NAME", + //文件路径 + "pdfUrl":"PDF_URL", + //检查报告明細列表响应信息根路径 + "bgtsDetailParam":["Request","Msg","EXAM_NO"], + //检查报告明細列表响应信息根路径 + "bgtsDetailRespon":["MsgInfo","Msg","ReportInfo"], + //采集日期 + "startCollectTime":"2016-04-11", + //是否开启全量采集 1:是 0 :否 + "isStartCollect":"0", + //oracle命名空间 + "namespace":"DOCUS", + //oracle表名 + "tableName":"V_DOCUMENT_PDF", + //oracle时间配置 + "collectTimeName":"ARCHIVE_DATE_TIME", + + //----以下是梅州完整性检验同步配置------ + //开关0:关闭 1:开启 + "syncFlag":"0", + "pageSize":"1000", + //同步开始时间 + "newSyncTime":"", + //数据表名 + "syncTableName":"CIS_EMR_DOCUMENT", + "syncTableNamespaces":"CDR" +} \ No newline at end of file diff --git a/src/main/java/com/docus/bgts/config/MyScheduling.java b/src/main/java/com/docus/bgts/config/MyScheduling.java index 37ae1a0..89b6b70 100644 --- a/src/main/java/com/docus/bgts/config/MyScheduling.java +++ b/src/main/java/com/docus/bgts/config/MyScheduling.java @@ -2,6 +2,8 @@ package com.docus.bgts.config; import com.docus.bgts.enums.Codes; import com.docus.bgts.facade.IBgtsService; +import com.docus.bgts.facade.IMzSyncService; +import com.docus.bgts.service.MzSyncService; import com.docus.bgts.utils.FileUtils; import com.docus.bgts.utils.HttpUtils; import org.apache.logging.log4j.LogManager; @@ -10,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; + import java.util.HashMap; import java.util.Map; @@ -18,9 +21,18 @@ public class MyScheduling { @Value("${beat.url}") private String beatUrl; + public static String syncFlag; + + static { + syncFlag=FileUtils.getJsonByName("syncFlag").toString(); + } + @Autowired IBgtsService bgtsService; + @Autowired + IMzSyncService mzSyncService; + private Logger logger = LogManager.getLogger(MyScheduling.class); //5分钟执行一次 @@ -41,19 +53,28 @@ public class MyScheduling { * 10分钟执行一次 */ @Scheduled(fixedRate = 1000 * 60 * 10) - public void collect(){ + public void collect() { String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid")); String isStartCollect = String.valueOf(FileUtils.getJsonByName("isStartCollect")); - if(isStartCollect.equals("0")){ + if (isStartCollect.equals("0")) { return; } - if((!collectorid.equals(Codes.SMCODE.getCode()))&&(!collectorid.equals(Codes.ZZCODE.getCode()))){ + if ((!collectorid.equals(Codes.SMCODE.getCode())) && (!collectorid.equals(Codes.ZZCODE.getCode()))) { return; } - bgtsService.timerCollect(); } + /** + * 增量同步程序 + */ + @Scheduled(fixedRate = 1000 * 60 * 1) + public void syncIntegrality() { + if (null == syncFlag || "0".equals(syncFlag)) { + } else { + mzSyncService.addSyncIntegrality(); + } + } } diff --git a/src/main/java/com/docus/bgts/controller/BgtsController.java b/src/main/java/com/docus/bgts/controller/BgtsController.java index 75a8c9e..0ac61a2 100644 --- a/src/main/java/com/docus/bgts/controller/BgtsController.java +++ b/src/main/java/com/docus/bgts/controller/BgtsController.java @@ -1,6 +1,7 @@ package com.docus.bgts.controller; +import com.docus.bgts.config.MyScheduling; import com.docus.bgts.entity.CommonResult; import com.docus.bgts.facade.IAfCollectTaskService; import com.docus.bgts.facade.IBgtsService; @@ -16,9 +17,6 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; - @Api(value = "采集接口", tags = "采集接口") @RestController @@ -35,6 +33,12 @@ public class BgtsController { @Autowired IAfCollectTaskService afCollectTaskService; + @ApiOperation("完整性同步程序开关0:关闭 1:开启") + @GetMapping("/onOffSync") + public void onOffSync(@RequestParam(value = "flag",defaultValue = "0") String flag){ + MyScheduling.syncFlag=flag; + } + @GetMapping("/test") public String test(@RequestParam("empId") String empId, @RequestParam("collectSubId") String collectSubId){ diff --git a/src/main/java/com/docus/bgts/facade/IMzSyncService.java b/src/main/java/com/docus/bgts/facade/IMzSyncService.java index 5583a3e..705dad3 100644 --- a/src/main/java/com/docus/bgts/facade/IMzSyncService.java +++ b/src/main/java/com/docus/bgts/facade/IMzSyncService.java @@ -1,5 +1,13 @@ package com.docus.bgts.facade; public interface IMzSyncService { + /** + * 全量采集 + */ void syncIntegrality(); + + /** + * 增量采集 + */ + void addSyncIntegrality(); } diff --git a/src/main/java/com/docus/bgts/mapper/dbmysql/AfCollectAddMapper.java b/src/main/java/com/docus/bgts/mapper/dbmysql/AfCollectAddMapper.java index 180b1be..cbdb664 100644 --- a/src/main/java/com/docus/bgts/mapper/dbmysql/AfCollectAddMapper.java +++ b/src/main/java/com/docus/bgts/mapper/dbmysql/AfCollectAddMapper.java @@ -44,4 +44,13 @@ public interface AfCollectAddMapper extends BaseMapper { * @param jzh */ void updateTBasic(@Param("result") String result,@Param("jzh") String jzh); + + /** + * 增量获取jzh + * @param front + * @param later + * @param newSyncTime + * @return + */ + List listJzhAndAdd(@Param("front") int front,@Param("later") int later,@Param("newSyncTime") String newSyncTime); } diff --git a/src/main/java/com/docus/bgts/mapper/dboracle/MzSyncMapper.java b/src/main/java/com/docus/bgts/mapper/dboracle/MzSyncMapper.java index b2127d9..ca87a36 100644 --- a/src/main/java/com/docus/bgts/mapper/dboracle/MzSyncMapper.java +++ b/src/main/java/com/docus/bgts/mapper/dboracle/MzSyncMapper.java @@ -9,6 +9,8 @@ public interface MzSyncMapper { List listMzSync(@Param("jzhs") List jzhs, @Param("front") int front , - @Param("later") int later); + @Param("later") int later, + @Param("tableName") String tableName, + @Param("tableNamespace") String tableNamespace); } diff --git a/src/main/java/com/docus/bgts/service/MzSyncService.java b/src/main/java/com/docus/bgts/service/MzSyncService.java index cc2a347..74724f3 100644 --- a/src/main/java/com/docus/bgts/service/MzSyncService.java +++ b/src/main/java/com/docus/bgts/service/MzSyncService.java @@ -10,8 +10,11 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Arrays; -import java.util.Iterator; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; import java.util.List; import java.util.Map; @@ -20,6 +23,25 @@ import java.util.Map; */ @Service public class MzSyncService implements IMzSyncService { + /** + * oracle表名 + */ + private String tableName; + /** + * oracle表命名空间 + */ + private String tableNamespaces; + /** + * 增量同步开始时间 + */ + private String newSyncTime; + + { + tableName = String.valueOf(FileUtils.getJsonByName("syncTableName")); + tableNamespaces = String.valueOf(FileUtils.getJsonByName("syncTableNamespaces")); + DateTimeFormatter isoDate = DateTimeFormatter.ISO_DATE; + newSyncTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).minusDays(1).format(isoDate); + } @Autowired AfCollectAddMapper afCollectAddMapper; @@ -29,6 +51,35 @@ public class MzSyncService implements IMzSyncService { private final Logger log = LoggerFactory.getLogger(getClass()); + @Override + public void addSyncIntegrality() { + log.info("增量完整性同步开始"); + long startTime = System.currentTimeMillis(); + //获取分页数 + Integer pageSize = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("pageSize"))); + List jzhs; + int front; + int later; + List mzSyncs; + for (int i = 0; ; i++) { + front = i * pageSize; + later = front + pageSize; + jzhs=afCollectAddMapper.listJzhAndAdd(front, later,newSyncTime); + if (null == jzhs || jzhs.size() == 0) { + break; + } else { + mzSyncs = mzSyncMapper.listMzSync(jzhs, front, later, tableName, tableNamespaces); + //完整性检验写入 + integralityBySyncs(mzSyncs); + } + if (mzSyncs.size() != 0) { + log.info("本次成功同步数:" + mzSyncs.size()); + } + } + long endTime = System.currentTimeMillis(); + log.info("增量完整性同步结束,程序执行时间为:" + (endTime - startTime) + "毫秒"); + } + /** * 完整性同步方法 */ @@ -42,7 +93,6 @@ public class MzSyncService implements IMzSyncService { int front; int later; List mzSyncs; - StringBuilder sql; for (int i = 0; ; i++) { front = i * pageSize; later = front + pageSize; @@ -50,40 +100,44 @@ public class MzSyncService implements IMzSyncService { if (null == jzhs || jzhs.size() == 0) { break; } else { - mzSyncs = mzSyncMapper.listMzSync(jzhs, front, later); - System.out.println(Arrays.asList(mzSyncs)); - if (null != mzSyncs && mzSyncs.size() != 0) { - List maps = afCollectAddMapper.integrality(mzSyncs); - System.out.println(maps); - sql=new StringBuilder(); - for (Map map : maps) { - sql.append("update docus_medicalrecord.t_basic set integrity_desc="); - sql.append("'"); - sql.append(map.get("file_title")); - sql.append("'"); - sql.append(" where jzh="); - sql.append("'"); - sql.append(map.get("jzh")); - sql.append("'"); - sql.append(";"); - } - System.out.println(sql); - afCollectAddMapper.dynamicSql(sql.toString()); - } - //创建并行流 -// mzSyncs.parallelStream().forEach(mzSync -> { -// String result = afCollectAddMapper.integrality(mzSync); -// System.out.println(result); -// -// afCollectAddMapper.updateTBasic(result, mzSync.getJzh()); -// }); + mzSyncs = mzSyncMapper.listMzSync(jzhs, front, later, tableName, tableNamespaces); + //完整性检验写入 + integralityBySyncs(mzSyncs); } if (mzSyncs.size() != 0) { log.info("本次成功同步数:" + mzSyncs.size()); } } long endTime = System.currentTimeMillis(); - System.out.println(endTime - startTime); - log.info("完整性同步结束"); + log.info("完整性同步结束,程序执行时间为:" + (endTime - startTime) + "毫秒"); + } + + + + /** + * 完整性检验写入 + * + * @param mzSyncs + */ + private void integralityBySyncs(List mzSyncs) { + StringBuilder sql; + if (null != mzSyncs && mzSyncs.size() != 0) { + List maps = afCollectAddMapper.integrality(mzSyncs); + System.out.println(maps); + sql = new StringBuilder(); + for (Map map : maps) { + sql.append("update docus_medicalrecord.t_basic set integrity_desc="); + sql.append("'"); + sql.append(map.get("file_title")); + sql.append("'"); + sql.append(" where jzh="); + sql.append("'"); + sql.append(map.get("jzh")); + sql.append("'"); + sql.append(";"); + } + System.out.println(sql); + afCollectAddMapper.dynamicSql(sql.toString()); + } } } diff --git a/src/main/java/com/docus/bgts/utils/FileUtils.java b/src/main/java/com/docus/bgts/utils/FileUtils.java index a345b50..dfb513d 100644 --- a/src/main/java/com/docus/bgts/utils/FileUtils.java +++ b/src/main/java/com/docus/bgts/utils/FileUtils.java @@ -34,6 +34,7 @@ public class FileUtils { String path = FileUtils.currentPath(); return path + Codes.REQUEST_XML.getMessage(); } + /** * 获取xml文件的地址 * diff --git a/src/main/resources/config/梅州人民医院完整性同步程序-application.yml b/src/main/resources/config/梅州人民医院完整性同步程序-application.yml new file mode 100644 index 0000000..61ece28 --- /dev/null +++ b/src/main/resources/config/梅州人民医院完整性同步程序-application.yml @@ -0,0 +1,32 @@ +server: + port: 9308 +# http + +mybatis-plus: + configuration: + map-underscore-to-camel-case: true + call-setters-on-nulls: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + global-config: + db-config: + field-strategy: NOT_EMPTY + db-type: MYSQL +beat: + url: http://localhost:9399/beat + +ws: + url: http://192.168.1.115:8010/ws_server/weather?wsdl + localMethod: OperationA + +spring: + datasource: + mysql-docus: + driver-class-name: com.mysql.cj.jdbc.Driver + username: docus + password: docus702 + url: jdbc:mysql://db.docus.cn:3306/docus_archivefile?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&allowMultiQueries=true + oracle-docus: + driver-class-name: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@192.168.117.100:1521:helowin + username: docus + password: docus702 diff --git a/src/main/resources/mapper/dbmysql/AfCollectAddMapper.xml b/src/main/resources/mapper/dbmysql/AfCollectAddMapper.xml index 878abc0..5da28fc 100644 --- a/src/main/resources/mapper/dbmysql/AfCollectAddMapper.xml +++ b/src/main/resources/mapper/dbmysql/AfCollectAddMapper.xml @@ -46,4 +46,18 @@ set integrity_desc=#{result} where jzh=#{jzh} + + \ No newline at end of file diff --git a/src/main/resources/mapper/dboracle/MzSyncMapper.xml b/src/main/resources/mapper/dboracle/MzSyncMapper.xml index 3243310..a70a335 100644 --- a/src/main/resources/mapper/dboracle/MzSyncMapper.xml +++ b/src/main/resources/mapper/dboracle/MzSyncMapper.xml @@ -13,7 +13,7 @@ a.UNIQUE_ID as serialnum, a.VISITING_SERIAL_NUMBER as jzh, ROWID "NAVICAT_ROWID" - FROM "CDR"."CIS_EMR_DOCUMENT" a + FROM "${tableNamespace}"."${tableName}" a where VISITING_SERIAL_NUMBER in #{jzh}