From d44606236559adf331ee38846ef6acb1b25e5eef Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 29 十二月 2025 12:18:50 +0800
Subject: [PATCH] #新增erp中间表

---
 src/main/java/com/zy/third/erp/task/ERPLocDetlScheduler.java |   59 +++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 39 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/zy/third/erp/task/ERPLocDetlScheduler.java b/src/main/java/com/zy/third/erp/task/ERPLocDetlScheduler.java
index 2b42588..66a744f 100644
--- a/src/main/java/com/zy/third/erp/task/ERPLocDetlScheduler.java
+++ b/src/main/java/com/zy/third/erp/task/ERPLocDetlScheduler.java
@@ -1,5 +1,6 @@
 package com.zy.third.erp.task;
 
+import com.core.exception.CoolException;
 import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.LocDetlChangelog;
 import com.zy.asrs.mapper.LocDetlChangelogMapper;
@@ -35,7 +36,7 @@
     @Scheduled(cron = "${erp.refreshtime}")
     public void LocDetlScheduler() {
         if (!erpEnabled) return;
-
+        boolean result = false;
         List<LocDetlChangelog> logs = locDetlChangelogMapper.selectUnprocessedLogs();
 
         for (LocDetlChangelog changelog : logs) {
@@ -45,10 +46,14 @@
                 Map<String, Object> content = locDetlToMap(item);
 
                 switch (action) {
-                    case "INSERT":
+                   case "INSERT":
                         String insertSql = buildInsertSql("asr_loc_detl", content);
-                        erpSqlServer.update(insertSql);
-                        log.info("鍚屾ERP鏂板鎴愬姛: locNo={}", item.getLocNo());
+                        if(erpSqlServer.update(insertSql) > 0){
+                            log.info("鍚屾ERP鏂板鎴愬姛: locNo={}", item.getLocNo());
+                            result = true;
+                        }else{
+                            log.info("鍚屾ERP鏂板澶辫触: locNo={}", item.getLocNo());
+                        }
                         break;
 
                     case "UPDATE":
@@ -56,7 +61,6 @@
                             // 瑙f瀽 JSON
                             Map<String, Object> dataMap = JSON.parseObject(changelog.getData(), Map.class);
                             Map<String, Object> afterMap = (Map<String, Object>) dataMap.get("after");
-
                             // 鎷兼帴 UPDATE SQL
                             StringBuilder setSql = new StringBuilder();
                             afterMap.forEach((k, v) -> {
@@ -69,27 +73,42 @@
                                 }
                             });
                             setSql.deleteCharAt(setSql.length() - 1); // 鍘绘帀鏈�鍚庨�楀彿
-
-                            String updateSql = "UPDATE asr_loc_detl SET " + setSql + " WHERE loc_no='" + escapeSql((String)afterMap.get("loc_no")) + "' AND zpallet='" + escapeSql((String)afterMap.get("zpallet")) + "'";
-                            erpSqlServer.update(updateSql);
-
-                            log.info("鍚屾ERP鏇存柊鎴愬姛: locNo={}, zpallet={}", afterMap.get("loc_no"), afterMap.get("zpallet"));
+                            String updateSql =
+                                    "UPDATE asr_loc_detl SET " + setSql +
+                                            " WHERE loc_no='" + escapeSql((String)afterMap.get("loc_no")) +
+                                            "' AND zpallet='" + escapeSql((String)afterMap.get("zpallet")) +
+                                            "' AND matnr='" + escapeSql((String)afterMap.get("matnr")) + "'";
+                            if(erpSqlServer.update(updateSql) > 0){
+                                log.info("鍚屾ERP鏇存柊鎴愬姛: locNo={}, zpallet={}", afterMap.get("loc_no"), afterMap.get("zpallet"));
+                                result = true;
+                            }else{
+                                log.info("鍚屾ERP鏇存柊澶辫触: locNo={}, zpallet={}", afterMap.get("loc_no"), afterMap.get("zpallet"));
+                            }
                         } catch (Exception e) {
                             log.error("鏇存柊ERP澶辫触: locNo=" + changelog.getLocNo(), e);
                         }
-
-                    case "DELETE":
-                        String deleteSql = "DELETE FROM asr_loc_detl WHERE loc_no='" + escapeSql(item.getLocNo()) + "'";
-                        erpSqlServer.update(deleteSql);
-                        log.info("鍚屾ERP鍒犻櫎鎴愬姛: locNo={}", item.getLocNo());
                         break;
-
+                    case "DELETE":
+                        String deleteSql = "DELETE FROM asr_loc_detl WHERE " +
+                                "loc_no='" + escapeSql(item.getLocNo()) + "' AND " +
+                                "zpallet='" + escapeSql(item.getZpallet()) + "' AND " +
+                                "matnr='" + escapeSql(item.getMatnr()) + "' AND " +
+                                "anfme=" + item.getAnfme();
+                        if(erpSqlServer.update(deleteSql) > 0){
+                            log.info("鍚屾ERP鍒犻櫎鎴愬姛: locNo={}", item.getLocNo());
+                            result = true;
+                        }else{
+                            log.info("鍚屾ERP鍒犻櫎澶辫触: locNo={}", item.getLocNo());
+                        }
+                        break;
                     default:
                         log.error("鏈煡鎿嶄綔绫诲瀷锛�" + action);
                 }
-
-                locDetlChangelogMapper.markProcessed(changelog.getId());
-
+                if(result){
+                    locDetlChangelogMapper.markProcessed(changelog.getId());
+                }else {
+                    throw new CoolException("鍚屾澶辫触");
+                }
             } catch (Exception e) {
                 log.error("鍚屾ERP澶辫触锛屾棩蹇桰D锛�" + changelog.getId(), e);
             }
@@ -192,4 +211,4 @@
         if (str == null) return "";
         return str.replace("'", "''");
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.9.1