T100738
2024-05-12 a0c549301bd941c6899dfe63f21db86fb2046b5f
commit
已修改2个文件
33 ■■■■ 文件已修改
product-server-data-center/src/main/java/com/product/data/center/service/CommonService.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
product-server-data-center/src/main/java/com/product/data/center/service/DataArchivingService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 {
            //在mysql的information_schema 表中查询指定表是否存在
@@ -171,7 +174,7 @@
                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(" 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") + " ) ");
@@ -180,11 +183,15 @@
                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 a FROM product_sys_data_center_log a LEFT JOIN ");
                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") + " ) ");
@@ -193,18 +200,26 @@
                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(" 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());
                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;
product-server-data-center/src/main/java/com/product/data/center/service/DataArchivingService.java
@@ -536,7 +536,7 @@
                targetDao.closeConnection();
                sourceDao.closeConnection();
                // 关闭线程
                dataArchivingQueue.shutdownQueryThread(sourceTable);
                dataArchivingQueue.clear(sourceTable);
            }
            // 删除mes主库的内容