From 59dc2aa6e3fe7f699c4f2d03b774763142c5698d Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期六, 05 七月 2025 17:31:54 +0800
Subject: [PATCH] 添加货位容器关系表锁、调整货架行号和记录表同步逻辑

---
 api/ApiHelper.cs |  165 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 107 insertions(+), 58 deletions(-)

diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs
index 9b0fc26..3fe27af 100644
--- a/api/ApiHelper.cs
+++ b/api/ApiHelper.cs
@@ -9,6 +9,8 @@
 using HH.WCS.Mobox3.AnGang.util;
 using HH.WCS.Mobox3.AnGang.wms;
 
+using Newtonsoft.Json;
+
 using static HH.WCS.Mobox3.AnGang.api.ApiModel;
 using static HH.WCS.Mobox3.AnGang.api.OtherModel;
 
@@ -30,7 +32,7 @@
                 var startLoc = db.Queryable<TN_Location>()
                     .Where(a => a.S_CODE == model.StartLoc)
                     .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y")
-                    //.Where(a => a.N_CURRENT_NUM == 0)
+                    .Where(a => a.N_CURRENT_NUM == 0)
                     .Where(a => startAreas.Contains(a.S_AREA_CODE))
                     .First();
 
@@ -76,9 +78,9 @@
                     if (!int.TryParse(model.Row.Trim(), out int row)) {
                         return BuildSimpleResult(2, $"{model.Row} 涓嶅悎娉曪細鏃犳硶杞垚鏁存暟绫诲瀷");
                     }
-                    // 璐ф灦鎺掑彿鍙兘鏄�0 - 8
-                    if (row <= 0 || row > 8) {
-                        return BuildSimpleResult(2, $"璐ф灦鍙�{model.Row} 蹇呴』鏄�-8涔嬮棿鐨勬暣鏁�);
+                    // 璐ф灦鎺掑彿鍙兘鏄�0 - 8锛�11-118锛�+                    if (row <= 110 || row > 118) {
+                        return BuildSimpleResult(2, $"璐ф灦鍙�{model.Row} 蹇呴』鏄�11-118涔嬮棿鐨勬暣鏁�);
                     }
                 }
 
@@ -202,9 +204,9 @@
                     if (!int.TryParse(model.Row.Trim(), out int row)) {
                         return BuildSimpleResult(2, $"{model.Row} 涓嶅悎娉曪細鏃犳硶杞垚鏁存暟绫诲瀷");
                     }
-                    // 璐ф灦鎺掑彿鍙兘鏄�0 - 8
-                    if (row <= 0 || row > 8) {
-                        return BuildSimpleResult(2, $"璐ф灦鍙�{model.Row} 蹇呴』鏄�-8涔嬮棿鐨勬暣鏁�);
+                    // 璐ф灦鎺掑彿鍙兘鏄�0 - 8锛�11-118锛�+                    if (row <= 110 || row > 118) {
+                        return BuildSimpleResult(2, $"璐ф灦鍙�{model.Row} 蹇呴』鏄�11-118涔嬮棿鐨勬暣鏁�);
                     }
                 }
 
@@ -617,11 +619,25 @@
 
             var db = new SqlHelper<object>().GetInstance();
             try {
-                var err = "";
-                var cgDetailList = new List<TN_CG_Detail>();
-                var recordList = new List<TN_Inbound_DataRecord>();
+                if (model.stockTransactions.Count == 0) {
+                    return BuildErpResult(400, "涓嶈兘浼犲叆绌虹殑鏁版嵁鍒楄〃");
+                }
+
+                //var info = "";
+                //var cgDetailList = new List<TN_CG_Detail>();
+                var insetRecordList = new List<TN_Inbound_DataRecord>();
+                var deleteRecordOldList = new List<TN_Inbound_DataRecord> ();
+                //var errList = new List<TN_Inbound_DataRecord>();
 
                 foreach (var transaction in model.stockTransactions) {
+                    var recordOld = db.Queryable<TN_Inbound_DataRecord>()
+                        .Where(r => r.S_LOCATION_CODE == transaction.locationCode).First();
+                    if (recordOld != null) {
+                        deleteRecordOldList.Add(recordOld);
+                        //errList.Add(recordOld);
+                        //continue;
+                    }
+
                     // 鍐欏叆璁板綍琛�                     var record = new TN_Inbound_DataRecord {
                         S_LOCATION_CODE = transaction.locationCode,
@@ -639,44 +655,58 @@
                         S_SUPPLIER_NAME = transaction.supplierName,
                         S_INVENTORY_MAN = transaction.inventoryManager
                     };
-                    recordList.Add(record);
+                    insetRecordList.Add(record);
 
-                    // 鏌ヨ瀵瑰簲鐗╂枡
-                    var cgDetail = db.Queryable<TN_Location, TN_Loc_Container, TN_CG_Detail>
-                        ((l, c, d) => l.S_CODE == c.S_LOC_CODE && c.S_CNTR_CODE == d.S_CNTR_CODE)
-                        .Where(l => l.S_CODE == transaction.locationCode)
-                        .Select((l, c, d) => d)
-                        .First();
+                    //// 鏌ヨ瀵瑰簲鐗╂枡
+                    //var cgDetail = db.Queryable<TN_Location, TN_Loc_Container, TN_CG_Detail>
+                    //    ((l, c, d) => l.S_CODE == c.S_LOC_CODE && c.S_CNTR_CODE == d.S_CNTR_CODE)
+                    //    .Where(l => l.S_CODE == transaction.locationCode)
+                    //    .Select((l, c, d) => d)
+                    //    .First();
 
-                    if (cgDetail == null) {
-                        err += $"鍌ㄤ綅鐮亄transaction.locationCode}瀵瑰簲鐨勮揣浣嶇墿鏂欎笉瀛樺湪锛�;
-                        continue;
-                    }
-                    cgDetail.S_ITEM_CODE = transaction.itemCode;
-                    cgDetail.S_ITEM_NAME = transaction.itemName;
+                    //if (cgDetail == null) {
+                    //    err += $"鍌ㄤ綅鐮亄transaction.locationCode}瀵瑰簲鐨勮揣浣嶇墿鏂欎笉瀛樺湪锛�;
+                    //    continue;
+                    //}
+                    //cgDetail.S_ITEM_CODE = transaction.itemCode;
+                    //cgDetail.S_ITEM_NAME = transaction.itemName;
 
-                    cgDetailList.Add(cgDetail);
+                    //cgDetailList.Add(cgDetail);
                 }
                  
                 using (var tran = db.Ado.UseTran()) {
-                    if (db.Insertable<TN_Inbound_DataRecord>(recordList).ExecuteCommand() <= 0) {
+                    if (deleteRecordOldList.Count != 0 && db.Deleteable<TN_Inbound_DataRecord>(deleteRecordOldList).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        return BuildErpResult(500, $"鍐欏叆鍏ュ簱璁板綍琛ㄥけ璐�);
+                        return BuildErpResult(500, $"鍒犻櫎鏃у叆搴撹褰曟暟鎹け璐ワ細{JsonConvert.SerializeObject(deleteRecordOldList)}");
                     }
 
-                    if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) {
+                    if (db.Insertable<TN_Inbound_DataRecord>(insetRecordList).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触");
+                        return BuildErpResult(500, $"鍐欏叆鍏ュ簱璁板綍琛ㄥけ璐�");
                     }
+
+                    //if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) {
+                    //    tran.RollbackTran();
+                    //    return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触锛佸緟鏇存柊鐗╂枡淇℃伅鏁伴噺={cgDetailList.Count}");
+                    //}
 
                     tran.CommitTran();
+                    return BuildErpResult(0, $"鍐欏叆鍏ュ簱璁板綍琛ㄦ垚鍔�");
                 }
 
-                if (err != "") {
-                    return BuildErpResult(2, err + "鍏朵粬淇℃伅姝e父宸插啓鍏�);
-                }
-                return BuildErpResult(0, $"鏇存敼鐗╂枡淇℃伅鎴愬姛");
+                //if (err != "") {
+                //    return BuildErpResult(2, err + "鍏朵粬淇℃伅姝e父宸插啓鍏�);
+                //}
+                //return BuildErpResult(0, $"鏇存敼鐗╂枡淇℃伅鎴愬姛");
 
+                // NOTE锛氭殏鏃朵笉妫�煡锛屼竾涓�RP鍙戦敊浜嗭紝鍙互閫夋嫨閲嶅彂
+
+                //if (errList.Count > 0) {
+                //    info = "鏇存敼鐗╂枡淇℃伅閮ㄥ垎鎴愬姛锛岄儴鍒嗗け璐ワ紝鍘熷洜锛氬綋鍓嶈揣浣嶅凡缁忕粰杩囩墿鏂欎俊鎭�;
+                //}
+                //else {
+                //    info = "鏇存敼鐗╂枡淇℃伅鎴愬姛!";
+                //}
             }
             catch (Exception ex) {
                 return BuildErpResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}");
@@ -688,11 +718,24 @@
 
             var db = new SqlHelper<object>().GetInstance();
             try {
-                var err = "";
-                var cgDetailList = new List<TN_CG_Detail>();
-                var recordList = new List<TN_Outbound_DataRecord>();
+                if (model.materialIssues.Count == 0) {
+                    return BuildErpResult(400, "涓嶈兘浼犲叆绌虹殑鏁版嵁鍒楄〃");
+                }
 
+                //var err = "";
+                //var cgDetailList = new List<TN_CG_Detail>();
+                //var recordList = new List<TN_Outbound_DataRecord>();
+                var insetRecordList = new List<TN_Outbound_DataRecord>();
+                var deleteRecordOldList = new List<TN_Outbound_DataRecord>();
                 foreach (var issue in model.materialIssues) {
+                    var recordOld = db.Queryable<TN_Outbound_DataRecord>()
+                        .Where(r => r.S_LOCATION_CODE == issue.locationCode).First();
+                    if (recordOld != null) {
+                        deleteRecordOldList.Add(recordOld);
+                        //errList.Add(recordOld);
+                        //continue;
+                    }
+
                     // 鍐欏叆璁板綍琛�                     var record = new TN_Outbound_DataRecord {
                         S_LOCATION_CODE = issue.locationCode,
@@ -709,44 +752,50 @@
                         S_LINE_CODE = issue.lineCode,
                         S_BATCH_NO = issue.batchNo
                     };
-                    recordList.Add(record);
+                    insetRecordList.Add(record);
 
-                    // 鏌ヨ瀵瑰簲鐗╂枡
-                    var cgDetail = db.Queryable<TN_Location, TN_Loc_Container, TN_CG_Detail>
-                        ((l, c, d) => l.S_CODE == c.S_LOC_CODE && c.S_CNTR_CODE == d.S_CNTR_CODE)
-                        .Where(l => l.S_CODE == issue.locationCode)
-                        .Select((l, c, d) => d)
-                        .First();
+                    //// 鏌ヨ瀵瑰簲鐗╂枡
+                    //var cgDetail = db.Queryable<TN_Location, TN_Loc_Container, TN_CG_Detail>
+                    //    ((l, c, d) => l.S_CODE == c.S_LOC_CODE && c.S_CNTR_CODE == d.S_CNTR_CODE)
+                    //    .Where(l => l.S_CODE == issue.locationCode)
+                    //    .Select((l, c, d) => d)
+                    //    .First();
 
-                    if (cgDetail == null) {
-                        err += $"鍌ㄤ綅鐮亄issue.locationCode}瀵瑰簲鐨勮揣浣嶇墿鏂欎笉瀛樺湪锛�;
-                        continue;
-                    }
+                    //if (cgDetail == null) {
+                    //    err += $"鍌ㄤ綅鐮亄issue.locationCode}瀵瑰簲鐨勮揣浣嶇墿鏂欎笉瀛樺湪锛�;
+                    //    continue;
+                    //}
 
-                    cgDetail.S_ITEM_CODE = issue.itemCode;
-                    cgDetail.S_ITEM_NAME = issue.itemName;
+                    //cgDetail.S_ITEM_CODE = issue.itemCode;
+                    //cgDetail.S_ITEM_NAME = issue.itemName;
 
-                    cgDetailList.Add(cgDetail);
+                    //cgDetailList.Add(cgDetail);
                 }
 
                 using (var tran = db.Ado.UseTran()) {
-                    if (db.Insertable<TN_Outbound_DataRecord>(recordList).ExecuteCommand() <= 0) {
+                    if (deleteRecordOldList.Count != 0 && db.Deleteable<TN_Outbound_DataRecord>(deleteRecordOldList).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return BuildErpResult(500, $"鍒犻櫎鏃у嚭搴撹褰曟暟鎹け璐ワ細{JsonConvert.SerializeObject(deleteRecordOldList)}");
+                    }
+
+                    if (db.Insertable<TN_Outbound_DataRecord>(insetRecordList).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
                         return BuildErpResult(500, $"鍐欏叆鍑哄簱璁板綍琛ㄥけ璐�);
                     }
 
-                    if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触");
-                    } 
+                    //if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) {
+                    //    tran.RollbackTran();
+                    //    return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触");
+                    //} 
 
                     tran.CommitTran();
+                    return BuildErpResult(0, $"鍐欏叆鍑哄簱璁板綍琛ㄦ垚鍔�");
                 }
 
-                if (err != "") {
-                    return BuildErpResult(2, err + "鍏朵粬淇℃伅姝e父宸插啓鍏�);
-                }
-                return BuildErpResult(0, $"鏇存敼鐗╂枡淇℃伅鎴愬姛");
+                //if (err != "") {
+                //    return BuildErpResult(2, err + "鍏朵粬淇℃伅姝e父宸插啓鍏�);
+                //}
+                //return BuildErpResult(0, $"鏇存敼鐗╂枡淇℃伅鎴愬姛");
 
             }
             catch (Exception ex) {

--
Gitblit v1.9.1