package com.docus.bgts.service; import com.docus.bgts.entity.MzSync; import com.docus.bgts.facade.IMzSyncService; import com.docus.bgts.mapper.dbmysql.AfCollectAddMapper; import com.docus.bgts.mapper.dboracle.MzSyncMapper; 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 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; /** * 梅州完整性检验 */ @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; 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) + "毫秒"); } /** * 完整性同步方法 */ @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 = front + pageSize; jzhs = afCollectAddMapper.listJzh(front, later); 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) + "毫秒"); } /** * 完整性检验写入 * * @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()); } } }