重构完整性校验,增加根据af_collect_task采集情况校验

docus-active-query-service_1.3
zengwh 3 years ago
parent 69f2603413
commit f62d172d71

@ -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校验完整性

@ -53,6 +53,8 @@
"collectEndDate": "2022-04-01",
// 1: 0:
"collectOpen": "1",
// 1:af_collect_task 2:
"checkIntegrityType": "1",
//----------
//0 1

@ -1 +1 @@
{"lastTime":"2022-03-25 00:00:00"}
{"lastTime":"2022-05-02 12:46:49"}

@ -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<String, String> 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<String, String> 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);
}

@ -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("完成");
}

@ -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<TaskDetail> taskDetails;
}

@ -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;
}

@ -7,6 +7,7 @@ import com.docus.bgts.entity.ReportDownDto;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* <p>
@ -54,4 +55,11 @@ public interface IAfCollectTaskService extends IService<AfCollectTask> {
* @return
*/
List<String> getJzhByPatientId(List<String> patientIds);
/**
* jzh
* @param jzhs
* @return
*/
List<Map> getCompleteIntegrity(List<String> jzhs);
}

@ -29,6 +29,4 @@ public interface IBgtsService {
*
*/
void timerCollect();
String test(String collectSubId);
}

@ -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<Map> getCompleteIntegrity(List<String> jzhs);
}

@ -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<AfCollectTask> {
* @return
*/
List<String> getJzhByPatientId(@Param("patientIds") List<String> patientIds);
/**
*
* @param jzhs
* @return
*/
List<JzhListSync> selectListByJzhs(@Param("jzhs") List<String> jzhs);
}

@ -8,8 +8,6 @@ import java.util.List;
public interface MzSyncMapper {
List<MzSync> listMzSync(@Param("jzhs") List<String> jzhs,
@Param("front") int front ,
@Param("later") int later,
@Param("tableName") String tableName,
@Param("tableNamespace") String tableNamespace);

@ -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.*;
/**
* <p>
@ -176,6 +174,50 @@ public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, A
return jzhs;
}
/**
* jzh
* @param jzhs
* @return
*/
@Override
public List<Map> getCompleteIntegrity(List<String> jzhs) {
//根据记帐号查询任务完成情况
List<JzhListSync> taskList = afCollectTaskMapper.selectListByJzhs(jzhs);
List<Map> 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<TaskDetail> 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<String,String> 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;
}
}

@ -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();
}
/**
*
*/

@ -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<String> 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<String> jzhs) {
//处理完整性描述
List<Map> maps = getCompleteInegruty(jzhs);
//完整性检验写入
integralityBySyncs(maps);
log.info("本次成功同步数:" + maps.size());
}
/**
*
* @return
*/
private List<Map> getCompleteInegruty(List<String> jzhs){
//获取配置的校验完整性方式1:根据af_collect_task完成情况 2:梅州根据信息科提供任务视图
Integer checkIntegrityType = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("checkIntegrityType")));
if(null == checkIntegrityType){
throw new RuntimeException("homeQualitySet文件中校验方式checkIntegrityType需要配置");
}
List<Map> 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<Map> 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<String> jzhList = Arrays.asList(jzhs.split(","));
addSyncIntegralityByJzhsMethod(jzhList);
}
}

@ -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<String> replaceUrls = (List<String>) 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<String> 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<String> jzhList = Arrays.asList(jzhs.split(","));
addSyncIntegralityByJzhsMethod(jzhList,front,later);
}
public void addSyncIntegralityByJzhsMethod(List<String> jzhs,int front,int later) {
List<MzSync> 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<String> jzhs;
int front;
int later;
List<MzSync> 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<MzSync> mzSyncs,List<String> jzhs) {
StringBuilder sql;
if (mzSyncs.size() != 0) {
//List<Map> maps = afCollectAddMapper.integrality(mzSyncs);
List<Map> 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<Map> getCompleteIntegrity(List<String> jzhs){
//根据记帐号查询任务视图
List<MzSync> mzSyncs = mzSyncMapper.listMzSync(jzhs,tableName, tableNamespaces);
//校验完整性
List<Map> 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<ReportDownScanFileDto> 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<String, Object> 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<ZdAssort> 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;
}
}

@ -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<ReportDownScanFileDto> 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<String, Object> 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<ZdAssort> 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<String> replaceUrls = (List<String>) FileUtils.getJsonByName("replaceUrl");
if(null != replaceUrls){
for(String replaceUrl : replaceUrls){
str = str.replaceAll(replaceUrl,"");
}
}
return str;
}
}

@ -1,3 +1,4 @@
#version:1.3
server:
port: 9308
# http

@ -42,4 +42,29 @@
#{c1}
</foreach>
</select>
<!--根据jzh分组查询任务完成情况-->
<select id="selectListByJzhs" resultMap="groupByJzh">
SELECT
id,
c3 jzh,
c2 fileTitle,
state
FROM
af_collect_task
WHERE
c3 IN
(<foreach collection="jzhs" item="jzh" separator=",">
#{jzh}
</foreach>)
</select>
<resultMap id="groupByJzh" type="com.docus.bgts.entity.JzhListSync">
<result property="jzh" column="jzh"></result>
<collection property="taskDetails" ofType="com.docus.bgts.entity.TaskDetail">
<result property="id" column="id"></result>
<result property="state" column="state"></result>
<result property="fileTitle" column="fileTitle"></result>
</collection>
</resultMap>
</mapper>
Loading…
Cancel
Save