From a0c549301bd941c6899dfe63f21db86fb2046b5f Mon Sep 17 00:00:00 2001
From: T100738 <1821349743@qq.com>
Date: 星期日, 12 五月 2024 21:30:41 +0800
Subject: [PATCH] commit

---
 product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java |  105 +++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 86 insertions(+), 19 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 79bb529..97a6007 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
@@ -21,12 +21,14 @@
 import com.product.datasource.entity.DataBaseEntity;
 import com.product.quartz.service.impl.SysJobService;
 import com.product.util.BaseUtil;
+import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.text.DecimalFormat;
 import java.time.LocalDate;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.Set;
@@ -57,6 +59,7 @@
 	@Value("${data.system.name}")
 	private String dataSystemName;
 
+	@Transactional
 	public void deleteCenterLog() {
 		try {
 			//鍦╩ysql鐨刬nformation_schema 琛ㄤ腑鏌ヨ鎸囧畾琛ㄦ槸鍚﹀瓨鍦�
@@ -115,43 +118,108 @@
 				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 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 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 FROM product_sys_data_center_log a INNER JOIN ");
-				deleteSql.append(" product_sys_data_center_log b on a.id=b.pre_step_uuid and a.type=1 and b.type=2 ");
+				deleteSql.append(" select a.id 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(" (a.result = 1 or ( a.deal_flag = 1 AND a.deal_result = 1 ) ) ");
-				deleteSql.append(" a.type=1 ");
+				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[]{});
-
+//				getBaseDao().executeUpdate(deleteSql.toString(), new Object[]{});
+				DataTableEntity dt = getBaseDao().listTable(deleteSql.toString(), new Object[]{});
+				if (!DataTableEntity.isEmpty(dt)) {
+					List<Integer> ids = dt.getData().stream().map(row -> row.getInteger("id")).collect(Collectors.toList());
+					getBaseDao().delete("product_sys_data_center_log", BaseUtil.buildQuestionMarkFilter("id", ids.size(), true), ids.toArray());
+				}
 				deleteSql.setLength(0);
 				//鍐嶅垹闄ゆ彁鍙栨棩蹇楁暟鎹�
-				deleteSql.append(" DELETE FROM product_sys_data_center_log a LEFT JOIN ");
-				deleteSql.append(" product_sys_data_center_log b on b.id=a.pre_step_uuid and b.type=1 and a.type=2 ");
+				deleteSql.append(" select a.id 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(" (a.result = 1 or ( a.deal_flag = 1 AND a.deal_result = 1 ) ) ");
-				deleteSql.append(" a.type=2 and b.id is null  ");
+				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[]{});
-
+//				getBaseDao().executeUpdate(deleteSql.toString(), new Object[]{});
+				dt = getBaseDao().listTable(deleteSql.toString(), new Object[]{});
+				if (!DataTableEntity.isEmpty(dt)) {
+					List<Integer> ids = dt.getData().stream().map(row -> row.getInteger("id")).collect(Collectors.toList());
+					getBaseDao().delete("product_sys_data_center_log", BaseUtil.buildQuestionMarkFilter("id", ids.size(), true), ids.toArray());
+				}
+				deleteSql.setLength(0);
 				//鍐嶅垹闄ゅ叾浠栨棩蹇楁暟鎹�
-				deleteSql.append(" DELETE FROM product_sys_data_center_log a  ");
+				deleteSql.append(" select a.id 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(" (a.result = 1 or ( a.deal_flag = 1 AND a.deal_result = 1 ) ) ");
-				deleteSql.append(" a.type>2 ");
-				getBaseDao().executeUpdate(deleteSql.toString());
+				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(") ");
+				dt = getBaseDao().listTable(deleteSql.toString(), new Object[]{});
+				if (!DataTableEntity.isEmpty(dt)) {
+					List<Integer> ids = dt.getData().stream().map(row -> row.getInteger("id")).collect(Collectors.toList());
+					getBaseDao().delete("product_sys_data_center_log", BaseUtil.buildQuestionMarkFilter("id", ids.size(), true), ids.toArray());
+				}
 			}
 
 //			fs = null;
@@ -167,7 +235,6 @@
 			throw e;
 		}
 	}
-
 
 	/**
 	 * 鍒涘缓瀹氭椂浠诲姟

--
Gitblit v1.9.2