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 getCompleteIntegrity(List jzhs){ //根据记帐号查询任务视图 List mzSyncs = mzSyncMapper.listMzSync(jzhs,tableName, tableNamespaces); //校验完整性 List maps = verifyIntegrity(mzSyncs,jzhs); return maps; } /** * 梅州校验完整性 * @param mzSyncs * @param jzhs * @return */ private List verifyIntegrity(List mzSyncs, List jzhs) { List maps = new ArrayList<>(); //根据记账号集合查询文件表有效的文件集合 List fileList = tScanAssortMapper.selectFilesByJzhs(jzhs); //遍历按记账号分组的任务视图 for(MzSync mzSync : mzSyncs){ //定义返回map Map map = new HashMap(); //获取jzh String jzh = mzSync.getJzh(); //遍历任务试图文件集合 List 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 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; } }