From fe3167683576e5dd943fd5acc52e713652365def Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期一, 09 六月 2025 17:13:06 +0800
Subject: [PATCH] 优化ERP下发库存/取货信息流程,添加记录表和header判断逻辑备用

---
 api/ApiHelper.cs |  104 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 85 insertions(+), 19 deletions(-)

diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs
index 19d79e6..5bf38d4 100644
--- a/api/ApiHelper.cs
+++ b/api/ApiHelper.cs
@@ -556,7 +556,7 @@
             var id = SYSHelper.GetSerialNumber(snType, prefix);
             
             var date = DateTime.Now.ToString("yyMMdd");
-            return $"{prefix}{date}{id.ToString().PadLeft(4, '0')}";
+            return $"{prefix}{date}-{id.ToString().PadLeft(5, '0')}"; // 褰㈠锛欳N250525-00011
         }
 
         /// <summary>
@@ -686,34 +686,67 @@
         }
 
         public static ErpResult InboundDataSync(InboundDataSyncInfo model) {
+            //return BuildErpResult(1, "娴嬭瘯");
+
             var db = new SqlHelper<object>().GetInstance();
             try {
                 var err = "";
                 var cgDetailList = new List<TN_CG_Detail>();
-                foreach (var inboundData in model.stockTransactions) {
+                var recordList = new List<TN_Inbound_DataRecord>();
+
+                foreach (var transaction in model.stockTransactions) {
+                    // 鍐欏叆璁板綍琛�+                    var record = new TN_Inbound_DataRecord {
+                        S_LOCATION_CODE = transaction.locationCode,
+                        S_STOCK_TRANS = transaction.stockTransactionId,
+                        S_ITEM_CODE = transaction.itemCode,
+                        S_ITEM_NAME = transaction.itemName,
+                        S_ITEM_SHORT_DESC = transaction.itemShortDesc,
+                        S_STOCK_QUANTITY = transaction.stockQuantity,
+                        S_IN_QUANTITY = transaction.inQuantity,
+                        S_TOTAL_PRICE = transaction.totalPrice,
+                        S_STOCK_IN_TIME = transaction.stockInTime,
+                        S_STORE_KEEPER = transaction.storeKeeper,
+                        S_LINE_CODE = transaction.lineCode,
+                        S_DELIVERY_ITEM_NO = transaction.deliveryItemNo,
+                        S_SUPPLIER_NAME = transaction.supplierName,
+                        S_INVENTORY_MAN = transaction.inventoryManager
+                    };
+                    recordList.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 == inboundData.locationCode)
+                        .Where(l => l.S_CODE == transaction.locationCode)
                         .Select((l, c, d) => d)
                         .First();
-                    
+
                     if (cgDetail == null) {
-                        err += $"鍌ㄤ綅鐮亄inboundData.locationCode}瀵瑰簲鐨勮揣浣嶇墿鏂欎笉瀛樺湪锛�;
+                        err += $"鍌ㄤ綅鐮亄transaction.locationCode}瀵瑰簲鐨勮揣浣嶇墿鏂欎笉瀛樺湪锛�;
                         continue;
                     }
+                    cgDetail.S_ITEM_CODE = transaction.itemCode;
+                    cgDetail.S_ITEM_NAME = transaction.itemName;
 
-                    cgDetail.S_ITEM_CODE = inboundData.itemCode;
-                    cgDetail.S_ITEM_NAME = inboundData.itemName;
-                    
                     cgDetailList.Add(cgDetail);
                 }
                 
-                if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) {
-                    return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触");
+                using (var tran = db.Ado.UseTran()) {
+                    if (db.Insertable<TN_Inbound_DataRecord>(recordList).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return BuildErpResult(500, $"鍐欏叆鍏ュ簱璁板綍琛ㄥけ璐�);
+                    }
+
+                    if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触");
+                    }
+
+                    tran.CommitTran();
                 }
 
                 if (err != "") {
-                    return BuildErpResult(2, err);
+                    return BuildErpResult(2, err + "鍏朵粬淇℃伅姝e父宸插啓鍏�);
                 }
                 return BuildErpResult(0, $"鏇存敼鐗╂枡淇℃伅鎴愬姛");
 
@@ -724,34 +757,67 @@
         }
 
         public static ErpResult OutboundDataSync(OutboundDataSyncInfo model) {
+            //return BuildErpResult(1, "娴嬭瘯");
+
             var db = new SqlHelper<object>().GetInstance();
             try {
                 var err = "";
                 var cgDetailList = new List<TN_CG_Detail>();
-                foreach (var inboundData in model.materialIssues) {
+                var recordList = new List<TN_Outbound_DataRecord>();
+
+                foreach (var issue in model.materialIssues) {
+                    // 鍐欏叆璁板綍琛�+                    var record = new TN_Outbound_DataRecord {
+                        S_LOCATION_CODE = issue.locationCode,
+                        S_ORDER_NO = issue.withdrawalOrderNo,
+                        S_ITEM_CODE = issue.itemCode,
+                        S_ITEM_NAME = issue.itemName,
+                        S_SHORT_DESC = issue.itemShortDesc,
+                        S_ACTUAL_QTY = issue.actualIssuedQty,
+                        S_ISSUED_AMOUNT = issue.issuedAmount,
+                        S_SUPPLIER_NAME = issue.supplierName,
+                        S_ISSUER = issue.issuer,
+                        S_ISSUE_DATE = issue.issueDate,
+                        S_STORE_KEEPER = issue.storeKeeper,
+                        S_LINE_CODE = issue.lineCode,
+                        S_BATCH_NO = issue.batchNo
+                    };
+                    recordList.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 == inboundData.locationCode)
+                        .Where(l => l.S_CODE == issue.locationCode)
                         .Select((l, c, d) => d)
                         .First();
 
                     if (cgDetail == null) {
-                        err += $"鍌ㄤ綅鐮亄inboundData.locationCode}瀵瑰簲鐨勮揣浣嶇墿鏂欎笉瀛樺湪锛�;
+                        err += $"鍌ㄤ綅鐮亄issue.locationCode}瀵瑰簲鐨勮揣浣嶇墿鏂欎笉瀛樺湪锛�;
                         continue;
                     }
 
-                    cgDetail.S_ITEM_CODE = inboundData.itemCode;
-                    cgDetail.S_ITEM_NAME = inboundData.itemName;
+                    cgDetail.S_ITEM_CODE = issue.itemCode;
+                    cgDetail.S_ITEM_NAME = issue.itemName;
 
                     cgDetailList.Add(cgDetail);
                 }
 
-                if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) {
-                    return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触");
+                using (var tran = db.Ado.UseTran()) {
+                    if (db.Insertable<TN_Outbound_DataRecord>(recordList).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return BuildErpResult(500, $"鍐欏叆鍑哄簱璁板綍琛ㄥけ璐�);
+                    }
+
+                    if (db.Updateable<TN_CG_Detail>(cgDetailList).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return BuildErpResult(500, $"鏇存敼鐗╂枡淇℃伅澶辫触");
+                    } 
+
+                    tran.CommitTran();
                 }
 
                 if (err != "") {
-                    return BuildErpResult(2, err);
+                    return BuildErpResult(2, err + "鍏朵粬淇℃伅姝e父宸插啓鍏�);
                 }
                 return BuildErpResult(0, $"鏇存敼鐗╂枡淇℃伅鎴愬姛");
 

--
Gitblit v1.9.1