From 7c2f69ddcc1a35a314768bae203b7bd5df875429 Mon Sep 17 00:00:00 2001
From: 6c <420680616@qq.com>
Date: 星期四, 18 九月 2025 10:29:31 +0800
Subject: [PATCH] 请求历史特殊处理-若是多次维修导致报表库数据重复,那么按照主键取最新数据
---
product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java | 392 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 389 insertions(+), 3 deletions(-)
diff --git a/product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java b/product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java
index 46071e5..90e2ad1 100644
--- a/product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java
+++ b/product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java
@@ -1,5 +1,10 @@
package com.product.data.center.service;
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.IdUtil;
import com.product.admin.service.PublicService;
import com.product.common.lang.StringUtils;
@@ -14,6 +19,7 @@
import com.product.data.center.config.ErrorCode;
import com.product.data.center.service.ide.ICommonService;
import com.product.data.center.utils.CallBackReturnValue;
+import com.product.datasource.entity.DataBaseEntity;
import com.product.quartz.service.impl.SysJobService;
import com.product.util.BaseUtil;
import org.springframework.beans.factory.annotation.Value;
@@ -21,9 +27,11 @@
import javax.annotation.Resource;
import java.text.DecimalFormat;
-import java.util.Date;
+import java.time.LocalDate;
+import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
/**
* @Author cheng
@@ -48,10 +56,388 @@
@Value("${data.system.name}")
private String dataSystemName;
- public void deleteCenterLog() {
- this.getBaseDao().executeUpdate("DELETE FROM product_sys_data_center_log WHERE uuid in (select * from product_sys_data_center_log_del_v) limit 10000");
+ @Transactional
+ public void deleteCenterLogV2() {
+ try {
+
+ StringBuilder querySql = new StringBuilder(64);
+
+ //select min(created_utc_datetime) as minTime,max(created_utc_datetime) as maxTime,min(id) min_id,max(id) max_id, date_format(created_utc_datetime,'%Y-%m') current_month from product_sys_data_center_log where created_utc_datetime <now() + interval -7 day and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) ) group by date_format(created_utc_datetime,'%Y-%m')
+ querySql.append(" select min(id) min_id,max(id) max_id, date_format(created_utc_datetime,'%Y%m') current_month ");
+ querySql.append(" from product_sys_data_center_log ");
+ querySql.append(" where created_utc_datetime <now() + interval -7 day and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) ) ");
+ querySql.append(" group by date_format(created_utc_datetime,'%Y%m') ");
+
+ DataTableEntity dt = getBaseDao().listTable(querySql.toString(), new Object[]{});
+
+ if (DataTableEntity.isEmpty(dt)) {
+ return;
+ }
+ //鍦╩ysql鐨刬nformation_schema 琛ㄤ腑鏌ヨ鎸囧畾琛ㄦ槸鍚﹀瓨鍦�
+ String tableName = "da_product_sys_data_center_log";
+
+ //灏佽鎵�鏈夎〃鍚�
+ Set<String> allTableName = dt.getData().stream().map(e -> tableName + "_" + e.getString("current_month")).collect(Collectors.toSet());
+
+ //鍦╩ysql鐨刬nformation_schema 琛ㄤ腑鏌ヨ鎵�鏈夌殑琛�
+ querySql.setLength(0);
+ querySql.append(" select TABLE_NAME table_name from information_schema.tables where table_schema = ? and " + BaseUtil.buildQuestionMarkFilter("TABLE_NAME", allTableName.size(), true));
+ String dataBaseName = getBaseDao().getDataBaseName();
+ Object[] params = new Object[allTableName.size() + 1];
+ params[0] = dataBaseName;
+ int index = 1;
+ for (String tableNameStr : allTableName) {
+ params[index] = tableNameStr;
+ index++;
+ }
+ DataTableEntity dataTableEntity = getBaseDao().listTable(querySql.toString(), params);
+
+ Set<String> existsTable = dataTableEntity.getData().stream().map(e -> e.getString("table_name")).collect(Collectors.toSet());
+
+ //瀵规瘮琛ㄥ悕锛屽垱寤轰笉瀛樺湪鐨勮〃
+ allTableName.removeAll(existsTable);
+ for (String tableNameStr : allTableName) {
+ String createTableSql = "create table " + tableNameStr + " like product_sys_data_center_log";
+ getBaseDao().executeUpdate(createTableSql, new Object[]{});
+ }
+
+ querySql.setLength(0);
+ //鏌ヨdata_center_log琛ㄧ殑uuid瀛楁 created_utc_datetime鏈�鏂扮殑鏁版嵁鏍规嵁 config_uuid 鍜� type杩涜鍒嗙粍 涓� result = 1 or ( deal_flag = 1 AND deal_result = 1 ) 姣忕粍鍙彇鏈�鏂扮殑涓�鏉℃暟鎹�
+ querySql.append(" SELECT uuid,row_num,(select uuid from product_sys_data_center_log where pre_step_uuid = uuid and type=2) as pre_step_uuid ");
+ querySql.append(" FROM ( ");
+ querySql.append(" SELECT ");
+ querySql.append(" uuid, ");
+ querySql.append(" ROW_NUMBER() OVER (PARTITION BY config_uuid, type ORDER BY created_utc_datetime DESC) AS row_num ");
+ querySql.append(" FROM product_sys_data_center_log ");
+ querySql.append(" WHERE result = 1 OR (deal_flag = 1 AND deal_result = 1) ");
+ querySql.append(" ) AS subquery ");
+ querySql.append(" WHERE row_num = 1 ");
+
+
+ //鏌ヨ闇�瑕佷繚鐣欑殑鏁版嵁uuid
+ DataTableEntity retainData = getBaseDao().listTable(querySql.toString(), new Object[]{});
+ String[] retainUuids = DataTableEntity.isEmpty(retainData) ? null : new String[retainData.getRows() * 2];
+ if (!DataTableEntity.isEmpty(retainData)) {
+ for (int i = 0; i < retainData.getRows(); i++) {
+ retainUuids[i] = retainData.getString(i, "uuid");
+ retainUuids[i + retainData.getRows()] = retainData.getString(i, "pre_step_uuid");
+ }
+ }
+
+
+ for (int i = 0; i < dt.getRows(); i++) {
+ Integer minId = dt.getInt(i, "min_id");
+ Integer maxId = dt.getInt(i, "max_id");
+
+ String currentMonth = dt.getString(i, "current_month");
+
+ //鏌ヨmysql涓槸鍚﹀瓨鍦ㄨ〃
+
+ querySql.setLength(0);
+ int pageSize = 500;
+ //鍒嗛〉鏌ヨ閲囬泦鏃ュ織鏁版嵁7澶╁墠鐨勬渶澶у拰鏈�灏廼d
+ querySql.append(" select a.uuid as log_collect_uuid,b.uuid as log_extract_uuid from product_sys_data_center_log a");
+ querySql.append(" join product_sys_data_center_log b ");
+ querySql.append(" on a.uuid=b.pre_step_uuid ");
+ querySql.append(" where a.id >= ? and a.id <= ? and a.type=1 and (a.result = 1 or ( a.deal_flag = 1 AND a.deal_result = 1 ) ) and a.type=1 and b.type=2 limit ").append(pageSize);
+
+ while (true) {
+ DataTableEntity queryDt = getBaseDao().listTable(querySql.toString(), new Object[]{minId, maxId});
+ if (DataTableEntity.isEmpty(queryDt)) {
+ break;
+ }
+
+ //灏嗘煡璇㈠嚭鐨刲og_collect_uuid鍜宭og_extract_uuid鍒嗗埆瀛樺叆涓や釜list涓�
+ List<String> logCollectUuidList = new ArrayList<>();
+ List<String> logExtractUuidList = new ArrayList<>();
+ for (int j = 0; j < queryDt.getRows(); j++) {
+ logCollectUuidList.add(queryDt.getString(j, "log_collect_uuid"));
+ logExtractUuidList.add(queryDt.getString(j, "log_extract_uuid"));
+ }
+ //鏍规嵁鏌ヨ鍑虹殑uuid灏嗘暟鎹彃鍏ュ埌瀵瑰簲鐨勮〃涓紝浣跨敤insert into select鐨勬柟寮� 鏉′欢鏄� uuid in logCollectUuidList 鍜� logExtractUuidList 鐨勬暟鎹�
+ StringBuilder insertSql = new StringBuilder(64);
+ insertSql.append(" insert into ").append(tableName).append("_").append(currentMonth);
+
+ //灏唋ogCollectUuidList鍜宭ogExtractUuidList鍚堝苟涓轰竴涓暟缁勪笖鏁扮粍涓鏋滄湁rangeUuids涓殑鏁版嵁鍒欐帓闄�
+ Set<String> uuidSet = new HashSet<>();
+ uuidSet.addAll(logCollectUuidList);
+ uuidSet.addAll(logExtractUuidList);
+ uuidSet.removeAll(Arrays.asList(retainUuids));
+
+ 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);
+
+ //鍒犻櫎閲囬泦銆佹彁鍙栨棩蹇楁暟鎹�
+ StringBuilder deleteSql = new StringBuilder(64);
+ deleteSql.append(" delete a from product_sys_data_center_log a ");
+ deleteSql.append(" where (").append(BaseUtil.buildQuestionMarkFilter("a.uuid", uuids.length, true)).append(")");
+ getBaseDao().executeUpdate(deleteSql.toString(), uuids);
+ if (pageSize != queryDt.getRows()) {
+ break;
+ }
+ }
+
+ //鍒嗛〉鍒犻櫎type>2鐨勬暟鎹�
+ querySql.setLength(0);
+ 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});
+ if (DataTableEntity.isEmpty(queryDt)) {
+ break;
+ }
+ //灏嗘煡璇㈠嚭鐨剈uid瀛樺叆list涓�
+ 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);
+ deleteSql.append(" delete a from product_sys_data_center_log a ");
+ deleteSql.append(" where (").append(BaseUtil.buildQuestionMarkFilter("a.uuid", uuidList.size(), true)).append(")");
+ getBaseDao().executeUpdate(deleteSql.toString(), uuidList.toArray());
+ if (pageSize * 2 != queryDt.getRows()) {
+ break;
+ }
+ }
+ }
+
+
+ } catch (Exception e) {
+ SpringMVCContextHolder.getSystemLogger().error("deleteCenterLogV2 error");
+ SpringMVCContextHolder.getSystemLogger().error(e);
+ e.printStackTrace();
+ throw e;
+ }
}
+ public void deleteCenterLog() {
+ this.deleteCenterLogV2();
+ }
+
+ public void deleteCenterLogBak() {
+ try {
+ //鍦╩ysql鐨刬nformation_schema 琛ㄤ腑鏌ヨ鎸囧畾琛ㄦ槸鍚﹀瓨鍦�
+ String tableName = "da_product_sys_data_center_log";
+
+ //褰掓。7澶╁墠鐨勬暟鎹�
+ //鎴鏃ユ湡
+ Date endTime = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -7);
+
+ //鏍煎紡鍖栨棩鏈�
+ String endTimeStr = DateUtil.format(endTime, "yyyy-MM-dd");
+
+ //鏍规嵁鎴鏃ユ湡鏌ヨ琛ㄤ腑鏈�澶с�佹渶灏忕殑鍒涘缓鏃堕棿鏍规嵁鍒涘缓鏃堕棿杩涜鍒嗚〃鎸夋湀鍒嗚〃
+ String sql = "select min(created_utc_datetime) as minTime,max(created_utc_datetime) as maxTime from product_sys_data_center_log where created_utc_datetime <now() + interval -7 day and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) ) group by date_format(created_utc_datetime,'%Y-%m') ";
+
+ FieldSetEntity fs = getBaseDao().getFieldSetEntityBySQL(sql, new Object[]{}, false);
+
+ if (fs == null) {
+ return;
+ }
+ //鏈�灏忔椂闂�
+ Date minTime = fs.getDate("minTime");
+
+ //鏈�澶ф椂闂�
+ Date maxTime = fs.getDate("maxTime");
+
+ //鏍规嵁鏈�灏忔椂闂村拰鏈�澶ф椂闂磋幏鍙栧尯闂村唴锛堝寘鍚渶灏忔椂闂村拰鏈�澶ф椂闂达級鐨勫勾鏈堟棩鏈熸牸寮忎负yyyy-MM
+
+ List<DateTime> tableSuffixList = DateUtil.rangeToList(minTime, maxTime, DateField.MONTH);
+
+ //鏌ヨ鏁版嵁搴撲腑鏄惁瀛樺湪琛�
+
+ Set<String> tableNameSet = tableSuffixList.stream().map(e -> tableName + "_" + DateUtil.format(e, "yyyyMM")).collect(Collectors.toSet());
+
+ //鏌ヨ鏁版嵁搴撲腑瀛樺湪鐨勮〃
+ String dataBaseName = getBaseDao().getDataBaseName();
+ sql = "select TABLE_NAME table_name from information_schema.tables where table_schema = ? and " + BaseUtil.buildQuestionMarkFilter("TABLE_NAME", tableNameSet.size(), true);
+
+ Object[] params = new Object[tableNameSet.size() + 1];
+ params[0] = dataBaseName;
+ int index = 1;
+ for (String tableNameStr : tableNameSet) {
+ params[index] = tableNameStr;
+ index++;
+ }
+ DataTableEntity dataTableEntity = getBaseDao().listTable(sql, params);
+
+ if (!DataTableEntity.isEmpty(dataTableEntity)) {
+ for (int i = 0; i < dataTableEntity.getRows(); i++) {
+ String tableNameStr = dataTableEntity.getString(i, "table_name");
+ tableNameSet.remove(tableNameStr);
+ }
+ }
+ //鍒涘缓涓嶅瓨鍦ㄧ殑琛紝琛ㄧ粨鏋勪笌鍘熻〃涓�鑷�
+ for (String tableNameStr : tableNameSet) {
+ String createTableSql = "create table " + tableNameStr + " like product_sys_data_center_log";
+ getBaseDao().executeUpdate(createTableSql, new Object[]{});
+ }
+ //鏌ヨ鍚勭被鍨嬮厤缃渶鍚庝竴娆℃垚鍔熺殑鏁版嵁
+ String sqlFilter = "SELECT * FROM (SELECT uuid\n" +
+ "FROM product_sys_data_center_log\n" +
+ "WHERE uuid IN (\n" +
+ "\tSELECT uuid\n" +
+ "\tFROM product_sys_data_center_log\n" +
+ "\tWHERE id IN (\n" +
+ "\t\tSELECT max(a.id)\n" +
+ "\t\tFROM product_sys_data_center_log a\n" +
+ "\t\t\tJOIN product_sys_data_center_log b ON a.uuid = b.pre_step_uuid\n" +
+ "\t\tWHERE a.type = 1\n" +
+ "\t\t\tAND b.type = 2\n" +
+ "\t\t\tAND (a.result = 1\n" +
+ "\t\t\t\tOR (a.deal_flag = 1\n" +
+ "\t\t\t\t\tAND a.deal_result = 1))\n" +
+ "\t\t\tAND (b.result = 1\n" +
+ "\t\t\t\tOR (b.deal_flag = 1\n" +
+ "\t\t\t\t\tAND b.deal_result = 1))\n" +
+ "\t\tGROUP BY a.config_uuid\n" +
+ "\t)\n" +
+ "\tUNION ALL\n" +
+ "\tSELECT aa.uuid\n" +
+ "\tFROM product_sys_data_center_log aa\n" +
+ "\t\tJOIN product_sys_data_center_log bb ON aa.pre_step_uuid = bb.uuid\n" +
+ "\tWHERE aa.type = 2\n" +
+ "\t\tAND bb.type = 1\n" +
+ "\t\tAND bb.id IN (\n" +
+ "\t\t\tSELECT max(a.id)\n" +
+ "\t\t\tFROM product_sys_data_center_log a\n" +
+ "\t\t\t\tJOIN product_sys_data_center_log b ON a.uuid = b.pre_step_uuid\n" +
+ "\t\t\tWHERE a.type = 1\n" +
+ "\t\t\t\tAND b.type = 2\n" +
+ "\t\t\t\tAND (a.result = 1\n" +
+ "\t\t\t\t\tOR (a.deal_flag = 1\n" +
+ "\t\t\t\t\t\tAND a.deal_result = 1))\n" +
+ "\t\t\t\tAND (b.result = 1\n" +
+ "\t\t\t\t\tOR (b.deal_flag = 1\n" +
+ "\t\t\t\t\t\tAND b.deal_result = 1))\n" +
+ "\t\t\tGROUP BY a.config_uuid\n" +
+ "\t\t)\n" +
+ "\tUNION ALL\n" +
+ "\tSELECT uuid\n" +
+ "\tFROM product_sys_data_center_log a\n" +
+ "\tWHERE a.type = 5\n" +
+ "\t\tAND detail != 3\n" +
+ "\t\tAND (a.result = 1\n" +
+ "\t\t\tOR (a.deal_flag = 1\n" +
+ "\t\t\t\tAND a.deal_result = 1))\n" +
+ ")) ddd";
+ //鎻掑叆鏁版嵁鏍规嵁鍒涘缓鏃堕棿鐨勫勾鏈堝垎鍒彃鍏ュ埌瀵瑰簲鐨勮〃涓�
+ for (DateTime dateTime : tableSuffixList) {
+
+ String selectSql = "select * from product_sys_data_center_log where created_utc_datetime >= str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s') and created_utc_datetime < str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s') + interval 1 month" +
+ " and id >(select ifnull(max(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) ) and created_utc_datetime <now() + interval -7 day";
+
+
+ //鑾峰彇datetime鎵�鍦ㄦ湀浠界殑绗竴澶�0鐐�0鍒�0绉� 鍜屾渶鍚庝竴澶�23鐐�59鍒�59绉�
+ DateTime beginOfMonth = DateUtil.beginOfMonth(dateTime);
+ DateTime endOfMonth = DateUtil.endOfMonth(dateTime);
+
+
+ int currentPage = 1;
+
+ int totalPage;
+ do {
+ //鍒嗛〉鏌ヨ鏁版嵁
+ DataTableEntity dt = getBaseDao().listTable(selectSql, new Object[]{DateUtil.format(dateTime, "yyyy-MM"), DateUtil.format(dateTime, "yyyy-MM")}, currentPage, 2000);
+ if (DataTableEntity.isEmpty(dt)) {
+ break;
+ }
+ totalPage = dt.getSqle().getTotalpage();
+ //鏇存敼dt鐨勮〃鍚嶈繘琛屾彃鍏�
+ dt.getMeta().setTableName(new Object[]{tableName + "_" + DateUtil.format(dateTime, "yyyyMM")});
+ getBaseDao().add(dt);
+ } while (totalPage > currentPage);
+// String insertSql = "insert into " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " select * from product_sys_data_center_log where created_utc_datetime >= str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s') and created_utc_datetime < str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s') + interval 1 month" +
+// " and id >(select ifnull(max(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) and (result = 1 or ( deal_flag = 1 AND deal_result = 1 ) ) and created_utc_datetime <now() + interval -7 day";
+// getBaseDao().executeUpdate(insertSql, new Object[]{DateUtil.format(dateTime, "yyyy-MM"), DateUtil.format(dateTime, "yyyy-MM")});
+// //鍒犻櫎鏁版嵁宸叉彃鍏ョ殑鏁版嵁
+ StringBuilder deleteSql = new StringBuilder();
+// deleteSql.append(" DELETE a FROM product_sys_data_center_log a INNER JOIN ");
+// deleteSql.append(" product_sys_data_center_log b on a.uuid=b.pre_step_uuid and a.type=1 and b.type=2 ");
+// deleteSql.append(" where ");
+// deleteSql.append(" a.id>= (select ifnull(min(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) ");
+// deleteSql.append(" and a.id <= (select ifnull(max(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) ");
+// deleteSql.append(" and (a.result = 1 or ( a.deal_flag = 1 AND a.deal_result = 1 ) ) ");
+// deleteSql.append(" and a.type=1 ");
+// deleteSql.append(" and a.uuid not in (").append(sqlFilter).append(") ");
+// //鍏堝垹闄ら噰闆嗘棩蹇楁暟鎹�
+// getBaseDao().executeUpdate(deleteSql.toString(), new Object[]{});
+
+
+ //鍒犻櫎鏁版嵁宸叉彃鍏ョ殑鏁版嵁
+
+ //鏌ヨdata_center_log琛ㄤ腑鐨勫垱寤烘椂闂存槸7澶╁墠鐨勬暟鎹� 涓斿紑濮嬫椂闂存槸dateTime鐨勬暟鎹�
+
+
+ StringBuilder querySql = new StringBuilder(64);
+
+
+ querySql.append("select max(id) max_id,min(id) min_id from product_sys_data_center_log ");
+ querySql.append(" where created_utc_datetime >= str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s') and created_utc_datetime < str_to_date(concat(?, '-01 00:00:00'), '%Y-%m-%d %H:%i:%s')");
+
+
+ querySql.append("select id from ");
+ querySql.append(tableName).append("_").append(DateUtil.format(dateTime, "yyyyMM"));
+ querySql.append(" where type=1 and (result=1 or (deal_flag=1 and deal_result=1))");
+
+
+ deleteSql.setLength(0);
+ //鍐嶅垹闄ゆ彁鍙栨棩蹇楁暟鎹�
+ deleteSql.append(" DELETE a FROM product_sys_data_center_log a LEFT JOIN ");
+ deleteSql.append(" product_sys_data_center_log b on b.uuid=a.pre_step_uuid and b.type=1 and a.type=2 ");
+ deleteSql.append(" where ");
+ deleteSql.append(" a.id>= (select ifnull(min(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) ");
+ deleteSql.append(" and a.id <= (select ifnull(max(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) ");
+ deleteSql.append(" and (a.result = 1 or ( a.deal_flag = 1 AND a.deal_result = 1 ) ) ");
+ deleteSql.append(" and a.type=2 and b.id is null ");
+ deleteSql.append(" and a.uuid not in (").append(sqlFilter).append(") ");
+
+ getBaseDao().executeUpdate(deleteSql.toString(), new Object[]{});
+
+ deleteSql.setLength(0);
+ //鍐嶅垹闄ゅ叾浠栨棩蹇楁暟鎹�
+ deleteSql.append(" DELETE FROM product_sys_data_center_log a ");
+ deleteSql.append(" where ");
+ deleteSql.append(" a.id>= (select ifnull(min(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) ");
+ deleteSql.append(" and a.id <= (select ifnull(max(id),0) from " + tableName + "_" + DateUtil.format(dateTime, "yyyyMM") + " ) ");
+ deleteSql.append(" and (a.result = 1 or ( a.deal_flag = 1 AND a.deal_result = 1 ) ) ");
+ deleteSql.append(" and a.type>2 ");
+ deleteSql.append(" and a.uuid not in (").append(sqlFilter).append(") ");
+ getBaseDao().executeUpdate(deleteSql.toString());
+ }
+
+// fs = null;
+// do {
+// this.getBaseDao().executeUpdate("DELETE FROM product_sys_data_center_log WHERE uuid in (select * from (select * from product_sys_data_center_log_del_v limit 10000) a ) ");
+// //妫�鏌ユ槸鍚﹁繕鏈夋暟鎹�
+// sql = "select 1 as del_count from product_sys_data_center_log_del_v limit 1";
+// //妫�鏌ユ槸鍚﹁繕鏈夋暟鎹�
+// fs = getBaseDao().getFieldSetEntityBySQL(sql, new Object[]{}, false);
+// } while (fs != null && fs.getInteger("del_count") != null && fs.getInteger("del_count") > 0);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
/**
* 鍒涘缓瀹氭椂浠诲姟
--
Gitblit v1.9.2