package com.jyxt.getdatabyview; import com.jyxt.getdatabyview.view.repository.IBPSRepository; import com.jyxt.getdatabyview.view.repository.LISViewRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.sql.Timestamp; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; @Component public class HandleData { private static final Logger log = LoggerFactory.getLogger(GetDataByViewApplication.class); @Autowired private LISViewRepository lisViewRepository; @Autowired private IBPSRepository ibpsRepository; public static final Map RerunSampleField = new HashMap<>(); static { // 静态初始化块中填充数据 RerunSampleField.put("CREATEBY", "bian_zhi_ren_"); RerunSampleField.put("CREATETIME", "bian_zhi_shi_jian"); RerunSampleField.put("SAMPLECODE", "biao_ben_bian_hao"); // RerunSampleField.put("TESTCODE", "xiang_mu_id_"); RerunSampleField.put("TESTCODENAME", "fu_jian_xiang_mu_"); RerunSampleField.put("INITIALRESULT", "ce_ding_zhi_chu_j"); RerunSampleField.put("RERUNRESULT", "ce_ding_zhi_fu_ji"); RerunSampleField.put("REPORTRESULT", "bao_gao_zhi_"); RerunSampleField.put("AUDITUSER", "jian_yan_zhe_"); RerunSampleField.put("REPORTTIME", "bao_gao_shi_jian_"); RerunSampleField.put("RERUNMETHODNOTE", "bei_zhu_fu_jian_f"); RerunSampleField.put("PATNAME", "xing_ming_"); RerunSampleField.put("RERUNMETHOD", "fu_jian_fang_shi_"); RerunSampleField.put("UNIT", "dan_wei_"); } public void startHandleData(List> retList, String lisTable) { List> existList = ibpsRepository.qryExistData(); retList = cleanExistData(retList,existList); log.info("get data:"+retList.size()); if (retList.size() > 0) { String fieldName = null; String fieldValue = null; List> insertList = new ArrayList>(); for (Map entityMap : retList) { Map insertMap = new HashMap<>(); for (Object entry : entityMap.keySet()) { fieldName = null; fieldValue = null; fieldName = RerunSampleField.get(entry.toString()); Object value = entityMap.get(entry.toString()); fieldValue = value != null ? value.toString() : ""; if (fieldName != null) { insertMap.put(fieldName, fieldValue); } } //补充其他字段信息 insertMap.put("id_", UUID.randomUUID().toString()); insertMap.put("shi_fou_guo_shen_", "已完成"); String createUserInfo = ibpsRepository.getUserInfoByName(String.valueOf(entityMap.get("CREATEBY"))); String auditUserInfo = ibpsRepository.getUserInfoByName(String.valueOf(entityMap.get("AUDITUSER"))); if (createUserInfo.split("\\^")[0].equals("-1")) { log.info("error userInfo,skip to insert:"+createUserInfo); continue; } if (auditUserInfo.split("\\^")[0].equals("-1")) { log.info("error auditUserInfo,skip to insert:"+auditUserInfo); continue; } LocalDateTime currentDateTime = LocalDateTime.now(); DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formattedDateTime = currentDateTime.format(formatter2); insertMap.put("create_by_", createUserInfo.trim().split("@")[0]); insertMap.put("create_time_", Timestamp.valueOf(String.valueOf(formattedDateTime))); insertMap.put("bian_zhi_ren_", createUserInfo.trim().split("@")[0]); insertMap.put("jian_yan_zhe_", auditUserInfo.trim().split("@")[0]); insertMap.put("jian_yan_yuan_", auditUserInfo.trim().split("@")[0]); insertMap.put("ri_qi_", String.valueOf(entityMap.get("CREATETIME")).split(" ")[0]); insertMap.put("bian_zhi_bu_men_", createUserInfo.split("@")[1]); insertList.add(insertMap); } // insertList = lisViewRepository.query2("ss"); String res = ibpsRepository.saveToTable(insertList, "t_fjbbjlb"); if(res.equals("success")){ log.info("success insert:"+insertList.size()+" datas"); } else { log.info("fail insert"); } } } public List> cleanExistData(List> rerunTestList, List> existList) { // 1. 创建Set存储existList中所有id_的值(转换为字符串形式) Set existIdSet = new HashSet<>(); for (Map existMap : existList) { Object idObj = existMap.get("biao_ben_bian_hao"); existIdSet.add(idObj == null ? null : idObj.toString()); } // 2. 过滤rerunTestList:只保留id不在existIdSet中的元素 List> resultList = new ArrayList<>(); for (Map testMap : rerunTestList) { Object idObj = testMap.get("SAMPLECODE"); String idStr = idObj == null ? null : idObj.toString(); // 如果当前条码不在existIdSet中,则保留 if (!existIdSet.contains(idStr)) { resultList.add(testMap); } } return resultList; } }