123
许鹏程
2024-07-29 a3ba5db359871eb7846882ae58a96ffa08816a44
product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java
@@ -56,7 +56,7 @@
   @Value("${data.system.name}")
   private String dataSystemName;
   @Transactional
   public void deleteCenterLogV2() {
      try {
@@ -166,7 +166,10 @@
               String[] uuids = uuidSet.toArray(new String[0]);
               insertSql.append(" select * from product_sys_data_center_log").append(" where (").append(BaseUtil.buildQuestionMarkFilter("uuid", uuids.length, true)).append(")");
               //已经在表中的数据进行排除
               insertSql.append(" and uuid not in (select uuid from ").append(tableName).append("_").append(currentMonth).append(" )");
               getBaseDao().executeUpdate(insertSql.toString(), uuids);
               //删除采集、提取日志数据
@@ -181,7 +184,7 @@
            //分页删除type>2的数据
            querySql.setLength(0);
            querySql.append(" select uuid from product_sys_data_center_log a");
            querySql.append(" select uuid,id from product_sys_data_center_log a");
            querySql.append(" where id >= ? and id <= ? and type>2 and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) )  limit ").append(pageSize * 2);
            while (true) {
               DataTableEntity queryDt = getBaseDao().listTable(querySql.toString(), new Object[]{minId, maxId});
@@ -192,10 +195,19 @@
               List<String> uuidList = queryDt.getData().stream().map(e -> e.getString("uuid")).collect(Collectors.toList());
               //排除rangeUuids中的数据
               uuidList.removeAll(Arrays.asList(retainUuids));
               if (uuidList.isEmpty()) {
                  if (queryDt.getRows() < pageSize * 2) {
                     break;
                  } else {
                     minId = queryDt.getData().stream().min(Comparator.comparingInt(e -> e.getInteger("id"))).get().getInteger("id");
                  }
               }
               //根据查询出的uuid将数据插入到对应的表中,使用insert into select的方式 条件是 uuid in uuidList 的数据
               StringBuilder insertSql = new StringBuilder(64);
               insertSql.append(" insert into ").append(tableName).append("_").append(currentMonth);
               insertSql.append(" select * from product_sys_data_center_log").append(" where (").append(BaseUtil.buildQuestionMarkFilter("uuid", uuidList.size(), true)).append(")");
               //已经在表中的数据进行排除
               insertSql.append(" and uuid not in (select uuid from ").append(tableName).append("_").append(currentMonth).append(" )");
               getBaseDao().executeUpdate(insertSql.toString(), uuidList.toArray());
               //删除其他日志数据
               StringBuilder deleteSql = new StringBuilder(64);