diff --git a/README.md b/README.md new file mode 100644 index 0000000..333a69f --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +源码版本控制 +1. master: 采集器 +2. docus-active-query-service_1.1: 增加梅州完整性校验 +3. docus-active-query-service_1.2: 完善梅州完整性校验与增加按需采集 +4. docus-active-query-service_1.3: 增加根据af_collect_task校验完整性 + diff --git a/dataConfig/homeQualitySet.json b/dataConfig/homeQualitySet.json index 8a18a44..16785f9 100644 --- a/dataConfig/homeQualitySet.json +++ b/dataConfig/homeQualitySet.json @@ -53,6 +53,8 @@ "collectEndDate": "2022-04-01", //批量按需采集开关 1:开启 0:关闭 "collectOpen": "1", + //校验完整性方式 1:根据af_collect_task完成情况 2:梅州根据信息科提供任务视图 + "checkIntegrityType": "1", //----以下是梅州完整性检验同步配置------ //开关0:关闭 1:开启 diff --git a/dataConfig/temp/collectTimeTemp b/dataConfig/temp/collectTimeTemp index 318fda9..9675128 100644 --- a/dataConfig/temp/collectTimeTemp +++ b/dataConfig/temp/collectTimeTemp @@ -1 +1 @@ -{"lastTime":"2022-03-25 00:00:00"} \ No newline at end of file +{"lastTime":"2022-05-02 12:46:49"} \ 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 6ee63e9..2477958 100644 --- a/src/main/java/com/docus/bgts/config/MyScheduling.java +++ b/src/main/java/com/docus/bgts/config/MyScheduling.java @@ -1,12 +1,10 @@ package com.docus.bgts.config; -import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.docus.bgts.entity.TableJsonRead; -import com.docus.bgts.enums.Codes; import com.docus.bgts.facade.IBgtsService; -import com.docus.bgts.facade.IMzSyncService; +import com.docus.bgts.service.CheckIntegrityService; import com.docus.bgts.utils.FileUtils; import com.docus.bgts.utils.HttpUtils; import org.apache.commons.lang3.StringUtils; @@ -17,7 +15,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -40,22 +37,22 @@ public class MyScheduling { IBgtsService bgtsService; @Autowired - IMzSyncService mzSyncService; + CheckIntegrityService checkIntegrityService; private Logger logger = LogManager.getLogger(MyScheduling.class); //5分钟执行一次心跳 -// @Scheduled(fixedRate = 1000 * 60 * 5) -// public void beat() { -// Map params = new HashMap<>(); -// params.put("code", String.valueOf(FileUtils.getJsonByName("collectorid"))); -// try { -// HttpUtils.get(beatUrl, params); -// } catch (Exception e) { -// e.printStackTrace(); -// logger.info("心跳推送出错,可能是住院服务没有开启"); -// } -// } + /*@Scheduled(fixedRate = 1000 * 60 * 5) + public void beat() { + Map params = new HashMap<>(); + params.put("code", String.valueOf(FileUtils.getJsonByName("collectorid"))); + try { + HttpUtils.get(beatUrl, params); + } catch (Exception e) { + e.printStackTrace(); + logger.info("心跳推送出错,可能是住院服务没有开启"); + } + }*/ /** @@ -92,7 +89,7 @@ public class MyScheduling { } /** - * 增量同步程序 + * 完整性校验 */ @Scheduled(fixedRate = 1000 * 5 * 60) public void syncIntegrality() { @@ -103,7 +100,7 @@ public class MyScheduling { String lastDate = getLastDate(); if(StringUtils.isNotBlank(lastDate)) { Date date = new Date(); - boolean flag = mzSyncService.addSyncIntegrality(lastDate, null); + boolean flag = checkIntegrityService.addSyncIntegrality(lastDate, null); if(flag) { refreshLastDate(date); } diff --git a/src/main/java/com/docus/bgts/controller/BgtsController.java b/src/main/java/com/docus/bgts/controller/BgtsController.java index 5e870ef..0c6dae7 100644 --- a/src/main/java/com/docus/bgts/controller/BgtsController.java +++ b/src/main/java/com/docus/bgts/controller/BgtsController.java @@ -5,7 +5,7 @@ import com.docus.bgts.config.MyScheduling; import com.docus.bgts.entity.CommonResult; import com.docus.bgts.facade.IAfCollectTaskService; import com.docus.bgts.facade.IBgtsService; -import com.docus.bgts.facade.IMzSyncService; +import com.docus.bgts.service.CheckIntegrityService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -25,7 +25,7 @@ public class BgtsController { private final Logger logger = LoggerFactory.getLogger(getClass()); @Autowired - IMzSyncService mzSyncService; + CheckIntegrityService checkIntegrityService; @Autowired IBgtsService bgtsService; @@ -39,20 +39,9 @@ public class BgtsController { MyScheduling.syncFlag=flag; } - @GetMapping("/test") - public String test(@RequestParam("empId") String empId, - @RequestParam("collectSubId") String collectSubId){ - - return bgtsService.test(collectSubId)+"---"+empId; - } - - @GetMapping("/syncIntegrality") - public void syncIntegrality(){ - mzSyncService.syncIntegrality(); - } @GetMapping("/addSyncIntegrality") public void addSyncIntegrality(@RequestParam("startDate")String startDate,String endDate){ - mzSyncService.addSyncIntegrality(startDate,endDate); + checkIntegrityService.addSyncIntegrality(startDate,endDate); } @GetMapping("/addSyncIntegralityByJzhs") @@ -60,7 +49,7 @@ public class BgtsController { if(jzhs.split(",").length > 100){ return CommonResult.failed("jzh个数不能超过100个"); } - mzSyncService.addSyncIntegralityByJzhs(jzhs,0,100); + checkIntegrityService.addSyncIntegralityByJzhs(jzhs); return CommonResult.success("完成"); } diff --git a/src/main/java/com/docus/bgts/entity/JzhListSync.java b/src/main/java/com/docus/bgts/entity/JzhListSync.java new file mode 100644 index 0000000..193bc2c --- /dev/null +++ b/src/main/java/com/docus/bgts/entity/JzhListSync.java @@ -0,0 +1,20 @@ +package com.docus.bgts.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author 曾文和 + * @description: 按jzh分组文件名称和采集状态对象 + * @createTime 2022/5/2 11:37 + */ +@Data +public class JzhListSync { + private String jzh; + /** + * 任务完成情况 + */ + private List taskDetails; +} \ No newline at end of file diff --git a/src/main/java/com/docus/bgts/entity/TaskDetail.java b/src/main/java/com/docus/bgts/entity/TaskDetail.java new file mode 100644 index 0000000..ae85d55 --- /dev/null +++ b/src/main/java/com/docus/bgts/entity/TaskDetail.java @@ -0,0 +1,17 @@ +package com.docus.bgts.entity; + +import lombok.Data; + +/** + * @author 曾文和 + * @description: 根据jzh分组后的任务完成情况明细 + * @createTime 2022/5/2 11:49 + */ +@Data +public class TaskDetail { + private Long id; + + private String fileTitle; + + private String state; +} diff --git a/src/main/java/com/docus/bgts/facade/IAfCollectTaskService.java b/src/main/java/com/docus/bgts/facade/IAfCollectTaskService.java index cfdc822..258e369 100644 --- a/src/main/java/com/docus/bgts/facade/IAfCollectTaskService.java +++ b/src/main/java/com/docus/bgts/facade/IAfCollectTaskService.java @@ -7,6 +7,7 @@ import com.docus.bgts.entity.ReportDownDto; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -54,4 +55,11 @@ public interface IAfCollectTaskService extends IService { * @return */ List getJzhByPatientId(List patientIds); + + /** + * 根据jzh集合查询文件采集任务情况 + * @param jzhs + * @return + */ + List getCompleteIntegrity(List jzhs); } diff --git a/src/main/java/com/docus/bgts/facade/IBgtsService.java b/src/main/java/com/docus/bgts/facade/IBgtsService.java index f2e4d60..e8343b7 100644 --- a/src/main/java/com/docus/bgts/facade/IBgtsService.java +++ b/src/main/java/com/docus/bgts/facade/IBgtsService.java @@ -29,6 +29,4 @@ public interface IBgtsService { * 定时采集 */ void timerCollect(); - - String test(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 539cb18..de8c3b7 100644 --- a/src/main/java/com/docus/bgts/facade/IMzSyncService.java +++ b/src/main/java/com/docus/bgts/facade/IMzSyncService.java @@ -1,17 +1,10 @@ package com.docus.bgts.facade; import java.util.Date; +import java.util.List; +import java.util.Map; public interface IMzSyncService { - /** - * 全量采集 - */ - void syncIntegrality(); - /** - * 增量采集 - */ - boolean addSyncIntegrality(String startDate, String endDate); - - void addSyncIntegralityByJzhs(String jzhs,int front,int later); + List getCompleteIntegrity(List jzhs); } diff --git a/src/main/java/com/docus/bgts/mapper/dbmysql/AfCollectTaskMapper.java b/src/main/java/com/docus/bgts/mapper/dbmysql/AfCollectTaskMapper.java index 8550bae..ab0c11e 100644 --- a/src/main/java/com/docus/bgts/mapper/dbmysql/AfCollectTaskMapper.java +++ b/src/main/java/com/docus/bgts/mapper/dbmysql/AfCollectTaskMapper.java @@ -3,6 +3,7 @@ package com.docus.bgts.mapper.dbmysql; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.docus.bgts.entity.AfCollectTask; +import com.docus.bgts.entity.JzhListSync; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -52,4 +53,11 @@ public interface AfCollectTaskMapper extends BaseMapper { * @return */ List getJzhByPatientId(@Param("patientIds") List patientIds); + + /** + * 根据记帐号分组查询完成情况 + * @param jzhs + * @return + */ + List selectListByJzhs(@Param("jzhs") List jzhs); } 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 ca87a36..95e072f 100644 --- a/src/main/java/com/docus/bgts/mapper/dboracle/MzSyncMapper.java +++ b/src/main/java/com/docus/bgts/mapper/dboracle/MzSyncMapper.java @@ -8,8 +8,6 @@ import java.util.List; public interface MzSyncMapper { List listMzSync(@Param("jzhs") List jzhs, - @Param("front") int front , - @Param("later") int later, @Param("tableName") String tableName, @Param("tableNamespace") String tableNamespace); diff --git a/src/main/java/com/docus/bgts/service/AfCollectTaskServiceImpl.java b/src/main/java/com/docus/bgts/service/AfCollectTaskServiceImpl.java index 6144d35..3f5c85d 100644 --- a/src/main/java/com/docus/bgts/service/AfCollectTaskServiceImpl.java +++ b/src/main/java/com/docus/bgts/service/AfCollectTaskServiceImpl.java @@ -14,11 +14,9 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; /** *

@@ -176,6 +174,50 @@ public class AfCollectTaskServiceImpl extends ServiceImpl getCompleteIntegrity(List jzhs) { + //根据记帐号查询任务完成情况 + List taskList = afCollectTaskMapper.selectListByJzhs(jzhs); + List maps = new ArrayList<>(); + if(!CollectionUtils.isEmpty(taskList)){ + //遍历判断完整性 + for(String jzh : jzhs){ + //定义不完整描述 + StringBuilder integrity = new StringBuilder(); + for(JzhListSync jzhListSync : taskList){ + if(jzhListSync.getJzh().equals(jzh)){ + //获取jzh对应任务明细集合 + List taskDetails = jzhListSync.getTaskDetails(); + for(TaskDetail taskDetail : taskDetails) { + //获取完成状态 + String state = taskDetail.getState(); + if (StringUtils.isBlank(state) || !"3".equals(state)){ + //未完成状态 + if(StringUtils.isNotBlank(integrity)){ + integrity.append(","); + } + integrity.append(taskDetail.getFileTitle()).append("缺失"); + + } + } + break; + } + } + //定义完整性map + Map map = new HashMap<>(); + if(StringUtils.isBlank(integrity)){ + integrity = new StringBuilder("完整"); + } + map.put("jzh",jzh); + map.put("file_title",integrity.toString()); + maps.add(map); + } + } + return maps; + } } diff --git a/src/main/java/com/docus/bgts/service/BgtsServiceImpl.java b/src/main/java/com/docus/bgts/service/BgtsServiceImpl.java index 6e3ba4d..2a4d9d7 100644 --- a/src/main/java/com/docus/bgts/service/BgtsServiceImpl.java +++ b/src/main/java/com/docus/bgts/service/BgtsServiceImpl.java @@ -204,13 +204,6 @@ public class BgtsServiceImpl implements IBgtsService { logger.info("--------采集器结束采集------"); } - @Override - public String test(String collectSubId) { - AfInterfaceCollectSub x = afInterfaceCollectSubMapper.selectById(collectSubId); - System.out.println(x); - return x.toString(); - } - /** * 更新采集时间 */ diff --git a/src/main/java/com/docus/bgts/service/CheckIntegrityService.java b/src/main/java/com/docus/bgts/service/CheckIntegrityService.java new file mode 100644 index 0000000..22c998f --- /dev/null +++ b/src/main/java/com/docus/bgts/service/CheckIntegrityService.java @@ -0,0 +1,133 @@ +package com.docus.bgts.service; + +import com.docus.bgts.facade.IAfCollectTaskService; +import com.docus.bgts.facade.IMzSyncService; +import com.docus.bgts.mapper.dbmysql.AfCollectAddMapper; +import com.docus.bgts.utils.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * @author 曾文和 + * @description: 校验完整性业务 + * @createTime 2022/5/2 10:34 + */ +@Service +public class CheckIntegrityService { + private final Logger log = LoggerFactory.getLogger(getClass()); + @Autowired + AfCollectAddMapper afCollectAddMapper; + + @Autowired + IMzSyncService iMzSyncService; + + @Autowired + IAfCollectTaskService afCollectTaskService; + /** + * 根据时间段检验完整性 + * @param startDate + * @param endDate + * @return + */ + public boolean addSyncIntegrality(String startDate,String endDate) { + //1 + //定义是否更新采集时间 + boolean flag = true; + log.info("增量完整性同步开始"); + long startTime = System.currentTimeMillis(); + //获取分页数 + Integer pageSize = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("pageSize"))); + List jzhs; + int front; + for (int i = 0; ; i++) { + front = i * pageSize; + jzhs = afCollectAddMapper.listJzhAndAdd(front, pageSize, startDate,endDate); + if (jzhs.size() == 0) { + if(i == 0){ + flag = false; + } + break; + } else { + //校验完整性 + addSyncIntegralityByJzhsMethod(jzhs); + } + } + long endTime = System.currentTimeMillis(); + log.info("增量完整性同步结束,程序执行时间为:" + (endTime - startTime) + "毫秒"); + return flag; + } + + /** + * 校验完整性 + * @param jzhs + */ + public void addSyncIntegralityByJzhsMethod(List jzhs) { + //处理完整性描述 + List maps = getCompleteInegruty(jzhs); + //完整性检验写入 + integralityBySyncs(maps); + log.info("本次成功同步数:" + maps.size()); + } + + /** + * 处理完整性描述 + * @return + */ + private List getCompleteInegruty(List jzhs){ + //获取配置的校验完整性方式,1:根据af_collect_task完成情况 2:梅州根据信息科提供任务视图 + Integer checkIntegrityType = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("checkIntegrityType"))); + if(null == checkIntegrityType){ + throw new RuntimeException("homeQualitySet文件中校验方式checkIntegrityType需要配置"); + } + List maps = new ArrayList<>(); + if(checkIntegrityType == 1){ + //根据af_collect_task校验完整性 + maps = afCollectTaskService.getCompleteIntegrity(jzhs); + }else if(checkIntegrityType == 2){ + //校验梅州完整性 + maps = iMzSyncService.getCompleteIntegrity(jzhs); + } + return maps; + } + + /** + * 完整性检验写入 + * @param maps {"jzh":记帐号,"file_title":完整性描述} + */ + private void integralityBySyncs(List maps) { + StringBuilder sql; + if (!CollectionUtils.isEmpty(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("',update_time=now()"); + sql.append(" where jzh="); + sql.append("'"); + sql.append(map.get("jzh")); + sql.append("'"); + sql.append(";"); + } + System.out.println(sql); + afCollectAddMapper.dynamicSql(sql.toString()); + } + } + + /** + * 根据多个jzh逗号隔开的字符串校验完整性 + * @param jzhs + */ + public void addSyncIntegralityByJzhs(String jzhs) { + List jzhList = Arrays.asList(jzhs.split(",")); + addSyncIntegralityByJzhsMethod(jzhList); + } +} diff --git a/src/main/java/com/docus/bgts/service/MzSyncService.java b/src/main/java/com/docus/bgts/service/MzSyncService.java index 80e55a4..cdea007 100644 --- a/src/main/java/com/docus/bgts/service/MzSyncService.java +++ b/src/main/java/com/docus/bgts/service/MzSyncService.java @@ -1,24 +1,16 @@ package com.docus.bgts.service; -import com.alibaba.fastjson.JSON; import com.docus.bgts.entity.*; -import com.docus.bgts.enums.Codes; -import com.docus.bgts.facade.IAfCollectTaskService; import com.docus.bgts.facade.IMzSyncService; -import com.docus.bgts.mapper.dbmysql.ZdAssortMapper; import com.docus.bgts.mapper.dbmysql.AfCollectAddMapper; import com.docus.bgts.mapper.dbmysql.TScanAssortMapper; import com.docus.bgts.mapper.dboracle.MzSyncMapper; import com.docus.bgts.utils.FileUtils; -import com.docus.bgts.utils.HttpUtils; import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.io.UnsupportedEncodingException; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -59,138 +51,24 @@ public class MzSyncService implements IMzSyncService { TScanAssortMapper tScanAssortMapper; @Autowired - IAfCollectTaskService afCollectTaskService; - - @Autowired - ZdAssortMapper zdAssortMapper; - - private final Logger log = LoggerFactory.getLogger(getClass()); + UpdateFileService updateFileService; /** - * 截取url - * @param str + * 梅州完整性校验规则 + * @param jzhs * @return */ - private String subStrUrl(String str) { - List replaceUrls = (List) FileUtils.getJsonByName("replaceUrl"); - if(null != replaceUrls){ - for(String replaceUrl : replaceUrls){ - str = str.replaceAll(replaceUrl,""); - } - } - return str; - } - @Override - public boolean addSyncIntegrality(String startDate,String endDate) { - //定义是否更新采集时间 - boolean flag = true; - log.info("增量完整性同步开始"); - long startTime = System.currentTimeMillis(); - //获取分页数 - Integer pageSize = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("pageSize"))); - int count = 0; - List jzhs; - int front; - int later; - for (int i = 0; ; i++) { - front = i * pageSize; - later = pageSize; - jzhs = afCollectAddMapper.listJzhAndAdd(front, later, startDate,endDate); - count += jzhs.size(); - if (jzhs.size() == 0) { - if(i == 0){ - flag = false; - } - break; - } else { - addSyncIntegralityByJzhsMethod(jzhs,front,later); - } - } - long endTime = System.currentTimeMillis(); - log.info("增量完整性同步结束,程序执行时间为:" + (endTime - startTime) + "毫秒"); - return flag; - } - - @Override - public void addSyncIntegralityByJzhs(String jzhs,int front,int later) { - List jzhList = Arrays.asList(jzhs.split(",")); - addSyncIntegralityByJzhsMethod(jzhList,front,later); - } - - public void addSyncIntegralityByJzhsMethod(List jzhs,int front,int later) { - List mzSyncs; - mzSyncs = mzSyncMapper.listMzSync(jzhs, front, later, tableName, tableNamespaces); - //完整性检验写入 - integralityBySyncs(mzSyncs,jzhs); - if (mzSyncs.size() != 0) { - log.info("本次成功同步数:" + mzSyncs.size()); - } - } - - /** - * 完整性同步方法 - */ -// @Transactional - @Override - public void syncIntegrality() { - 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 = pageSize; - jzhs = afCollectAddMapper.listJzh(front, later); - if (jzhs.size() == 0) { - break; - } else { - mzSyncs = mzSyncMapper.listMzSync(jzhs, front, later, tableName, tableNamespaces); - //完整性检验写入 - integralityBySyncs(mzSyncs,jzhs); - } - if (mzSyncs.size() != 0) { - log.info("本次成功同步数:" + mzSyncs.size()); - } - } - long endTime = System.currentTimeMillis(); - log.info("完整性同步结束,程序执行时间为:" + (endTime - startTime) + "毫秒"); - } - - - /** - * 完整性检验写入 - * - * @param mzSyncs - */ - private void integralityBySyncs(List mzSyncs,List jzhs) { - StringBuilder sql; - if (mzSyncs.size() != 0) { - //List maps = afCollectAddMapper.integrality(mzSyncs); - List maps = verifyIntegrity(mzSyncs,jzhs); - 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("',update_time=now()"); - sql.append(" where jzh="); - sql.append("'"); - sql.append(map.get("jzh")); - sql.append("'"); - sql.append(";"); - } - System.out.println(sql); - afCollectAddMapper.dynamicSql(sql.toString()); - } + public List getCompleteIntegrity(List jzhs){ + //根据记帐号查询任务视图 + List mzSyncs = mzSyncMapper.listMzSync(jzhs,tableName, tableNamespaces); + //校验完整性 + List maps = verifyIntegrity(mzSyncs,jzhs); + return maps; } /** - * 校验完整性 + * 梅州校验完整性 * @param mzSyncs * @param jzhs * @return @@ -250,7 +128,7 @@ public class MzSyncService implements IMzSyncService { } faultFileTitles.append(fileTitle + "缺失"); //调下载服务 - updateFile(jzh,mzSyncDetail); + updateFileService.updateFile(jzh,mzSyncDetail); } } //添加急诊病历缺失 @@ -269,114 +147,4 @@ public class MzSyncService implements IMzSyncService { } return maps; } - - /** - *{ - * "assortid": "string", - * "collectorid": "string", - * "ip": "string", - * "patient": { - * "jzh": "string" - * }, - * "scanfiles": [ - * { - * "downurl": "string", - * "filesource": 0, - * "filestoragetype": 0, - * "filetitle": "string", - * "filetype": 0, - * "serialnum": "string", - * "taskid": 0 - * } - * ], - * "scanusercode": "string", - * "scanusername": "string" - * } - */ - private void updateFile(String jzh,MzSyncDetails mzSyncDetail) { - ReportDownDto reportDownDto; - ReportDownScanFileDto reportDownScanFileDto; - ReportDownPatientDto reportDownPatientDto; - //临时资料存储 - String serialnum; - String filetitle; - String downurl; - String collectorid = ""; - String assortid = getAssortid(mzSyncDetail.getAssortName()); - reportDownDto = new ReportDownDto(); - reportDownDto.setAssortid(assortid); - //获取基本数据信息 - List reportDownDtoArr = new ArrayList<>(); - reportDownPatientDto = new ReportDownPatientDto(); - reportDownPatientDto.setJzh(jzh); - log.info("患者主索引号:" + jzh); - reportDownDto.setPatient(reportDownPatientDto); - filetitle = mzSyncDetail.getFileTitle(); - downurl = mzSyncDetail.getFileUrl(); - if(StringUtils.isBlank(downurl)){ - return; - } - //特殊处理url - downurl = subStrUrl(downurl); - if(StringUtils.isBlank(downurl)){ - return; - } - //获取采集流水号 - serialnum = mzSyncDetail.getSerialnum(); - collectorid = mzSyncDetail.getCollectid(); - reportDownScanFileDto = new ReportDownScanFileDto(); - reportDownScanFileDto.setDownurl(downurl); - reportDownScanFileDto.setFiletitle(filetitle); - reportDownScanFileDto.setSerialnum(serialnum); - reportDownScanFileDto.setFilesource(1); - reportDownScanFileDto.setFilestoragetype(1); - reportDownDtoArr.add(reportDownScanFileDto); - reportDownDto.setCollectorid(collectorid); - reportDownDto.setScanfiles(reportDownDtoArr); - afCollectTaskService.insert(reportDownDto); - String post = ""; - log.info("--------执行上传功能----------"); - Map params = JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class); - Map headMap = new HashMap<>(); - headMap.put("Content-Type", "application/json"); - try { - post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, params); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } -// String post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), map, headMap); - if (StringUtils.isBlank(post)) { - log.info("--------上传时出现错误,可能是文件服务没有启动----------"); - throw new RuntimeException("上传时出现错误,可能是文件服务没有启动"); - } - Map resMap = JSON.parseObject(post, Map.class); - if (String.valueOf(resMap.get("code")).equals("500")) { - throw new RuntimeException(String.valueOf(resMap.get("msg"))); - } else { - log.info("----------执行成功-----------"); - } - } - /** - * 获取分类id - * - * @return - */ - private String getAssortid(String assortName) { - String assortId = String.valueOf(FileUtils.getJsonByName("assortid")); - if (StringUtils.isBlank(assortId)) { - List zdAssorts = zdAssortMapper.selectAll(assortName); - if (CollectionUtils.isEmpty(zdAssorts)) { - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - ZdAssort zdAssort = new ZdAssort(); - zdAssort.setAssortName(assortName); - zdAssort.setAssortId(uuid); - zdAssort.setEffective(1); - zdAssortMapper.insertZdAssort(zdAssort); - assortId = uuid; - } else { - assortId = zdAssorts.get(0).getAssortId(); - } - } - return assortId; - } } diff --git a/src/main/java/com/docus/bgts/service/UpdateFileService.java b/src/main/java/com/docus/bgts/service/UpdateFileService.java new file mode 100644 index 0000000..7e6b019 --- /dev/null +++ b/src/main/java/com/docus/bgts/service/UpdateFileService.java @@ -0,0 +1,159 @@ +package com.docus.bgts.service; + +import com.alibaba.fastjson.JSON; +import com.docus.bgts.entity.*; +import com.docus.bgts.enums.Codes; +import com.docus.bgts.facade.IAfCollectTaskService; +import com.docus.bgts.mapper.dbmysql.ZdAssortMapper; +import com.docus.bgts.utils.FileUtils; +import com.docus.bgts.utils.HttpUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.io.UnsupportedEncodingException; +import java.util.*; + +/** + * @author 曾文和 + * @description: 上传文件调下载服务业务 + * @createTime 2022/5/2 10:48 + */ +@Service +public class UpdateFileService { + private final Logger log = LoggerFactory.getLogger(getClass()); + @Autowired + IAfCollectTaskService afCollectTaskService; + + @Autowired + ZdAssortMapper zdAssortMapper; + /** + *{ + * "assortid": "string", + * "collectorid": "string", + * "ip": "string", + * "patient": { + * "jzh": "string" + * }, + * "scanfiles": [ + * { + * "downurl": "string", + * "filesource": 0, + * "filestoragetype": 0, + * "filetitle": "string", + * "filetype": 0, + * "serialnum": "string", + * "taskid": 0 + * } + * ], + * "scanusercode": "string", + * "scanusername": "string" + * } + */ + public void updateFile(String jzh, MzSyncDetails mzSyncDetail) { + ReportDownDto reportDownDto; + ReportDownScanFileDto reportDownScanFileDto; + ReportDownPatientDto reportDownPatientDto; + //临时资料存储 + String serialnum; + String filetitle; + String downurl; + String collectorid = ""; + String assortid = getAssortid(mzSyncDetail.getAssortName()); + reportDownDto = new ReportDownDto(); + reportDownDto.setAssortid(assortid); + //获取基本数据信息 + List reportDownDtoArr = new ArrayList<>(); + reportDownPatientDto = new ReportDownPatientDto(); + reportDownPatientDto.setJzh(jzh); + log.info("患者主索引号:" + jzh); + reportDownDto.setPatient(reportDownPatientDto); + filetitle = mzSyncDetail.getFileTitle(); + downurl = mzSyncDetail.getFileUrl(); + if(StringUtils.isBlank(downurl)){ + return; + } + //特殊处理url + downurl = subStrUrl(downurl); + if(StringUtils.isBlank(downurl)){ + return; + } + //获取采集流水号 + serialnum = mzSyncDetail.getSerialnum(); + collectorid = mzSyncDetail.getCollectid(); + reportDownScanFileDto = new ReportDownScanFileDto(); + reportDownScanFileDto.setDownurl(downurl); + reportDownScanFileDto.setFiletitle(filetitle); + reportDownScanFileDto.setSerialnum(serialnum); + reportDownScanFileDto.setFilesource(1); + reportDownScanFileDto.setFilestoragetype(1); + reportDownDtoArr.add(reportDownScanFileDto); + reportDownDto.setCollectorid(collectorid); + reportDownDto.setScanfiles(reportDownDtoArr); + afCollectTaskService.insert(reportDownDto); + String post = ""; + log.info("--------执行上传功能----------"); + Map params = JSON.parseObject(JSON.toJSONString(reportDownDto), Map.class); + Map headMap = new HashMap<>(); + headMap.put("Content-Type", "application/json"); + try { + post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), headMap, params); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } +// String post = HttpUtils.post(String.valueOf(FileUtils.getJsonByName(Codes.UPLOAD.getMessage())), map, headMap); + if (StringUtils.isBlank(post)) { + log.info("--------上传时出现错误,可能是文件服务没有启动----------"); + throw new RuntimeException("上传时出现错误,可能是文件服务没有启动"); + } + Map resMap = JSON.parseObject(post, Map.class); + if (String.valueOf(resMap.get("code")).equals("500")) { + throw new RuntimeException(String.valueOf(resMap.get("msg"))); + } else { + log.info("----------执行成功-----------"); + } + } + + + /** + * 获取分类id + * + * @return + */ + private String getAssortid(String assortName) { + String assortId = String.valueOf(FileUtils.getJsonByName("assortid")); + if (StringUtils.isBlank(assortId)) { + List zdAssorts = zdAssortMapper.selectAll(assortName); + if (CollectionUtils.isEmpty(zdAssorts)) { + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + ZdAssort zdAssort = new ZdAssort(); + zdAssort.setAssortName(assortName); + zdAssort.setAssortId(uuid); + zdAssort.setEffective(1); + zdAssortMapper.insertZdAssort(zdAssort); + assortId = uuid; + } else { + assortId = zdAssorts.get(0).getAssortId(); + } + } + return assortId; + } + + /** + * 截取url + * @param str + * @return + */ + private String subStrUrl(String str) { + List replaceUrls = (List) FileUtils.getJsonByName("replaceUrl"); + if(null != replaceUrls){ + for(String replaceUrl : replaceUrls){ + str = str.replaceAll(replaceUrl,""); + } + } + return str; + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index d51518e..f4b45a1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,4 @@ +#version:1.3 server: port: 9308 # http diff --git a/src/main/resources/mapper/dbmysql/AfCollectTaskMapper.xml b/src/main/resources/mapper/dbmysql/AfCollectTaskMapper.xml index 48202fb..b1b219e 100644 --- a/src/main/resources/mapper/dbmysql/AfCollectTaskMapper.xml +++ b/src/main/resources/mapper/dbmysql/AfCollectTaskMapper.xml @@ -42,4 +42,29 @@ #{c1} + + + + + + + + + + + + \ No newline at end of file