You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
5.3 KiB
Java

package com.docus.bgts.service;
import com.docus.bgts.entity.*;
import com.docus.bgts.facade.IMzSyncService;
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 org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* 梅州完整性检验
*/
@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;
@Autowired
MzSyncMapper mzSyncMapper;
@Autowired
TScanAssortMapper tScanAssortMapper;
@Autowired
UpdateFileService updateFileService;
/**
* 梅州完整性校验规则
* @param jzhs
* @return
*/
@Override
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
*/
private List<Map> verifyIntegrity(List<MzSync> mzSyncs, List<String> jzhs) {
List<Map> maps = new ArrayList<>();
//根据记账号集合查询文件表有效的文件集合
List<MzSync> fileList = tScanAssortMapper.selectFilesByJzhs(jzhs);
//遍历按记账号分组的任务视图
for(MzSync mzSync : mzSyncs){
//定义返回map
Map map = new HashMap();
//获取jzh
String jzh = mzSync.getJzh();
//遍历任务试图文件集合
List<MzSyncDetails> mzSyncDetails = mzSync.getMzSyncDetails();
//定义是否存在
boolean recordFlag = false;
//定义缺失文件集合
StringBuilder faultFileTitles = new StringBuilder();
for(MzSyncDetails mzSyncDetail : mzSyncDetails){
//获取文件名称
String fileTitle = mzSyncDetail.getFileTitle();
if(StringUtils.isNotBlank(fileTitle) && fileTitle.contains("急诊病历")){
recordFlag = true;
}
//获取文件序列号
String serialnum = mzSyncDetail.getSerialnum();
//获取采集器标识
String collectid = mzSyncDetail.getCollectid();
//定义是否存在
boolean flag = false;
if(!CollectionUtils.isEmpty(fileList)){
for(MzSync obj : fileList){
//获取jzh
String jzh1 = obj.getJzh();
if(jzh1.equals(jzh)){
List<MzSyncDetails> mzSyncDetails1 = obj.getMzSyncDetails();
for(MzSyncDetails vo : mzSyncDetails1){
//获取文件序列号
String serialnum1 = vo.getSerialnum();
//获取采集器标识
String collectid1 = vo.getCollectid();
if(serialnum.equals(serialnum1) && collectid.equals(collectid1)){
flag = true;
mzSyncDetail.setCollectid(vo.getCollectid());
break;
}
}
}
}
}
//遍历文件
if(!flag){
if(StringUtils.isNotBlank(faultFileTitles)){
faultFileTitles.append(",");
}
faultFileTitles.append(fileTitle + "缺失");
//调下载服务
updateFileService.updateFile(jzh,mzSyncDetail);
}
}
//添加急诊病历缺失
if(!recordFlag){
if(StringUtils.isNotBlank(faultFileTitles)){
faultFileTitles.append(",");
}
faultFileTitles.append("急诊病历缺失");
}
if(StringUtils.isBlank(faultFileTitles)){
faultFileTitles = new StringBuilder("完整");
}
map.put("jzh",jzh);
map.put("file_title",faultFileTitles.toString());
maps.add(map);
}
return maps;
}
}