HandleData.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package com.jyxt.getdatabyview;
  2. import com.jyxt.getdatabyview.view.repository.IBPSRepository;
  3. import com.jyxt.getdatabyview.view.repository.LISViewRepository;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Component;
  8. import java.sql.Timestamp;
  9. import java.time.LocalDateTime;
  10. import java.time.format.DateTimeFormatter;
  11. import java.util.*;
  12. @Component
  13. public class HandleData {
  14. private static final Logger log = LoggerFactory.getLogger(GetDataByViewApplication.class);
  15. @Autowired
  16. private LISViewRepository lisViewRepository;
  17. @Autowired
  18. private IBPSRepository ibpsRepository;
  19. public static final Map<String, String> RerunSampleField = new HashMap<>();
  20. static {
  21. // 静态初始化块中填充数据
  22. RerunSampleField.put("CREATEBY", "bian_zhi_ren_");
  23. RerunSampleField.put("CREATETIME", "bian_zhi_shi_jian");
  24. RerunSampleField.put("SAMPLECODE", "biao_ben_bian_hao");
  25. // RerunSampleField.put("TESTCODE", "xiang_mu_id_");
  26. RerunSampleField.put("TESTCODENAME", "fu_jian_xiang_mu_");
  27. RerunSampleField.put("INITIALRESULT", "ce_ding_zhi_chu_j");
  28. RerunSampleField.put("RERUNRESULT", "ce_ding_zhi_fu_ji");
  29. RerunSampleField.put("REPORTRESULT", "bao_gao_zhi_");
  30. RerunSampleField.put("AUDITUSER", "jian_yan_zhe_");
  31. RerunSampleField.put("REPORTTIME", "bao_gao_shi_jian_");
  32. RerunSampleField.put("RERUNMETHODNOTE", "bei_zhu_fu_jian_f");
  33. RerunSampleField.put("PATNAME", "xing_ming_");
  34. RerunSampleField.put("RERUNMETHOD", "fu_jian_fang_shi_");
  35. RerunSampleField.put("UNIT", "dan_wei_");
  36. }
  37. public void startHandleData(List<Map<String, Object>> retList, String lisTable) {
  38. List<Map<String, Object>> existList = ibpsRepository.qryExistData();
  39. retList = cleanExistData(retList,existList);
  40. log.info("get data:"+retList.size());
  41. if (retList.size() > 0) {
  42. String fieldName = null;
  43. String fieldValue = null;
  44. List<Map<String, Object>> insertList = new ArrayList<Map<String, Object>>();
  45. for (Map entityMap : retList) {
  46. Map<String, Object> insertMap = new HashMap<>();
  47. for (Object entry : entityMap.keySet()) {
  48. fieldName = null;
  49. fieldValue = null;
  50. fieldName = RerunSampleField.get(entry.toString());
  51. Object value = entityMap.get(entry.toString());
  52. fieldValue = value != null ? value.toString() : "";
  53. if (fieldName != null) {
  54. insertMap.put(fieldName, fieldValue);
  55. }
  56. }
  57. //补充其他字段信息
  58. insertMap.put("id_", UUID.randomUUID().toString());
  59. insertMap.put("shi_fou_guo_shen_", "已完成");
  60. String createUserInfo = ibpsRepository.getUserInfoByName(String.valueOf(entityMap.get("CREATEBY")));
  61. String auditUserInfo = ibpsRepository.getUserInfoByName(String.valueOf(entityMap.get("AUDITUSER")));
  62. if (createUserInfo.split("\\^")[0].equals("-1")) {
  63. log.info("error userInfo,skip to insert:"+createUserInfo);
  64. continue;
  65. }
  66. if (auditUserInfo.split("\\^")[0].equals("-1")) {
  67. log.info("error auditUserInfo,skip to insert:"+auditUserInfo);
  68. continue;
  69. }
  70. LocalDateTime currentDateTime = LocalDateTime.now();
  71. DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  72. String formattedDateTime = currentDateTime.format(formatter2);
  73. insertMap.put("create_by_", createUserInfo.trim().split("@")[0]);
  74. insertMap.put("create_time_", Timestamp.valueOf(String.valueOf(formattedDateTime)));
  75. insertMap.put("bian_zhi_ren_", createUserInfo.trim().split("@")[0]);
  76. insertMap.put("jian_yan_zhe_", auditUserInfo.trim().split("@")[0]);
  77. insertMap.put("jian_yan_yuan_", auditUserInfo.trim().split("@")[0]);
  78. insertMap.put("ri_qi_", String.valueOf(entityMap.get("CREATETIME")).split(" ")[0]);
  79. insertMap.put("bian_zhi_bu_men_", createUserInfo.split("@")[1]);
  80. insertList.add(insertMap);
  81. }
  82. // insertList = lisViewRepository.query2("ss");
  83. String res = ibpsRepository.saveToTable(insertList, "t_fjbbjlb");
  84. if(res.equals("success")){
  85. log.info("success insert:"+insertList.size()+" datas");
  86. } else {
  87. log.info("fail insert");
  88. }
  89. }
  90. }
  91. public List<Map<String, Object>> cleanExistData(List<Map<String, Object>> rerunTestList, List<Map<String, Object>> existList) {
  92. // 1. 创建Set存储existList中所有id_的值(转换为字符串形式)
  93. Set<String> existIdSet = new HashSet<>();
  94. for (Map<String, Object> existMap : existList) {
  95. Object idObj = existMap.get("biao_ben_bian_hao");
  96. existIdSet.add(idObj == null ? null : idObj.toString());
  97. }
  98. // 2. 过滤rerunTestList:只保留id不在existIdSet中的元素
  99. List<Map<String, Object>> resultList = new ArrayList<>();
  100. for (Map<String, Object> testMap : rerunTestList) {
  101. Object idObj = testMap.get("SAMPLECODE");
  102. String idStr = idObj == null ? null : idObj.toString();
  103. // 如果当前条码不在existIdSet中,则保留
  104. if (!existIdSet.contains(idStr)) {
  105. resultList.add(testMap);
  106. }
  107. }
  108. return resultList;
  109. }
  110. }