自动化立体仓库 - WMS系统
cl
16 小时以前 83ba8a26cfc33a700d0de16ba9ad6e9229db0932
优化,部分历史明细被额外删除的bug
2个文件已修改
39 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/WrkArchiveToLogServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OverYearLogHandler.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkArchiveToLogServiceImpl.java
@@ -17,6 +17,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.text.MessageFormat;
import java.util.List;
@@ -69,6 +70,10 @@
        int detlCount = wrkDetlLogMapper.selectCount(detlLogW);
        boolean wrkMastDeleted =false;
        boolean wrkDetlDeleted =false;
//        JSONObject detlJson = new JSONObject(true);
//        detlJson.put("mastCount", mastCount);
//        detlJson.put("detlCount", detlCount);
//        detlJson.put("num", num);
        if (mastCount > 0 && detlCount > 0) {
             wrkMastDeleted = wrkMastMapper.deleteById(wrkNo) > 0;
            if (!wrkMastDeleted) {
@@ -78,16 +83,19 @@
            if (!wrkDetlDeleted) {
                log.error(MessageFormat.format("删除工作明细档[workNo={0}]失败", wrkNo));
            }
        }else {
//            detlJson.put("rollback","触发回滚");
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
        if (printLog) {
            JSONObject detlJson = new JSONObject(true);
            detlJson.put("service", "WrkArchiveToLogService");
            detlJson.put("wrkNo", wrkNo);
            detlJson.put("wrkDetls", JSON.toJSON(detls));
            detlJson.put("wrkMast", (JSONObject) JSON.toJSON(wrkMast));
            detlJson.put("wrkMastDeleted", wrkMastDeleted);
            detlJson.put("wrkDetlDeleted", wrkDetlDeleted);
            log.info(detlJson.toJSONString());
//            detlJson.put("service", "WrkArchiveToLogService");
//            detlJson.put("wrkNo", wrkNo);
//            detlJson.put("wrkDetls", JSON.toJSON(detls));
//            detlJson.put("wrkMast", (JSONObject) JSON.toJSON(wrkMast));
//            detlJson.put("wrkMastDeleted", wrkMastDeleted);
//            detlJson.put("wrkDetlDeleted", wrkDetlDeleted);
//            log.info(detlJson.toJSONString());
        }
    }
src/main/java/com/zy/asrs/task/handler/OverYearLogHandler.java
@@ -20,10 +20,10 @@
    @Transactional
    public ReturnT<String> start() {
        try {
            batchDelete("asr_stk_hplc", 180);
            batchDelete("asr_wrk_detl_log", 360);
            batchDelete("asr_wrk_mast_log", 360);
            batchDelete("cust_wait_pakin_log", 360);
            batchDelete("asr_stk_hplc", "appe_time", 180);
            batchDelete("asr_wrk_detl_log", "io_time", 360);
            batchDelete("asr_wrk_mast_log", "io_time", 360);
            batchDelete("cust_wait_pakin_log", "appe_time", 360);
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -32,13 +32,14 @@
        return SUCCESS;
    }
    private void batchDelete(String tableName, int days) {
    @SuppressWarnings("SameParameterValue")
    private void batchDelete(String tableName, String time, int days) {
        int batchSize = 1000;
        int affected;
        do {
            String sql = String.format(
                    "WITH cte AS (SELECT TOP (%d) * FROM %s WHERE dateadd(day, %d, appe_time) <= getdate()) DELETE FROM cte",
                    batchSize, tableName, days
                    "WITH cte AS (SELECT TOP (%d) * FROM %s WHERE dateadd(day, %d, %s) <= getdate()) DELETE FROM cte",
                    batchSize, tableName, days, time
            );
            affected = jdbcTemplate.update(sql);
        } while (affected > 0);