From 2ca90a404fa1ab94eb6374f50c6ddd47a2b7f0e6 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期四, 31 七月 2025 17:23:57 +0800
Subject: [PATCH] 删除有问题的TCP旧代码, 优化事务处理和ERP数据模型

---
 api/ErpController.cs |  160 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 158 insertions(+), 2 deletions(-)

diff --git a/api/ErpController.cs b/api/ErpController.cs
index 78b7ae5..05cacb7 100644
--- a/api/ErpController.cs
+++ b/api/ErpController.cs
@@ -3,6 +3,11 @@
 using System.Collections.Generic;
 using System.Web.Http;
 using static HH.WCS.Mobox3.DSZSH.api.OtherModel;
+using HH.WCS.Mobox3.DSZSH.util;
+using HH.WCS.Mobox3.DSZSH.models;
+using HH.WCS.Mobox3.DSZSH.wms;
+using static HH.WCS.Mobox3.DSZSH.api.ApiModel;
+using static HH.WCS.Mobox3.DSZSH.api.ErpModel;
 
 namespace HH.WCS.Mobox3.DSZSH.api {
     /// <summary>
@@ -17,9 +22,160 @@
         /// <returns></returns>
         [HttpPost]
         [Route("ErpSendOutboundPlan")]
-        public ErpResult ErpSendOutboundPlan(ErpSendOutboundPlanInfo model) {
+        public ErpResult ErpSendOutboundPlan(ErpModel.ErpSendOutboundPlanInfo model) {
             LogHelper.InfoApi("ERP涓嬪彂鍑哄簱璁″垝鍗�, model);
-            return ApiHelper.ErpSendOutboundPlan(model);
+            return ErpService.ErpSendOutboundPlan(model);
         }
     }
+
+    public class ErpService {
+        public static ErpResult ErpSendOutboundPlan(ErpModel.ErpSendOutboundPlanInfo model) {
+            var db = new SqlHelper<object>().GetInstance();
+            var orderNo = SYSHelper.GenerateSN("鍑哄簱鍗曞彿", "CKD", "yyMMdd");
+            const string preLog = "API:ERP涓嬪彂鍑哄簱璁″垝鍗�";
+            try {
+                if (model.pzjs <= 0) {
+                    return NewErpResult(400, preLog + $"鐗╂枡鏁伴噺(pzjs)'{model.pzjs}'涓嶅悎娉�!瑕佹眰:鐗╂枡鏁伴噺锛�");
+                }
+
+                var outboundPlan = db.Queryable<TN_Outbound_Plan>()
+                    .Where(p => p.JHDH == model.jhdh).First();
+                if (outboundPlan != null) {
+                    return NewErpResult(1, preLog + $"璁″垝鍗曞彿'{model.jhdh}'宸插湪[鍑哄簱璁″垝鍗昡涓瓨鍦�!");
+                }
+
+                outboundPlan = new TN_Outbound_Plan {
+                    JHDH = model.jhdh, // 璁″垝鍗曞彿 (鍞竴鏍囪瘑) 
+                    CKZT = model.ckzt, // 鍑哄簱鐘舵� (闇�杩斿洖) 
+                    JHLB = model.jhlb, // 璁″垝绫诲埆
+                    CKDH = model.ckdh, // 鍙傝�鍗曞彿
+                    CPH = model.cph, // 杞︾墝鍙�+                    YSFS = model.ysfs, // 杩愯緭鏂瑰紡
+                    CPZT = model.cpzt, // 浜у搧鐘舵�
+                    MDDW = model.mddw, // 涔版柇鍗曚綅
+                    CPDM = model.cpdm, // 浜у搧浠g爜
+                    CPLB = model.cplb, // 浜у搧绫诲埆
+                    CPLBMX = model.cplbmx, // 浜у搧绫诲埆鏄庣粏
+                    PP = model.pp, // 鍝佺墝
+                    DJ = model.dj, // 绛夌骇 (闇�杩斿洖) 
+                    GH = model.gh, // 缃愬彿
+                    PH = model.ph, // 鎵瑰彿 (闇�杩斿洖) 
+                    BZLX = model.bzlx, // 鍖呰绫诲瀷
+                    PZDH = model.pzdh, // 娲捐鍗曞彿
+                    PZD_DW = model.pzd_dw, // 娲捐鍗曞崟浣�+                    PZD_DYBH = model.pzd_dybh, // 娲捐鍗曡皟杩愮紪鍙�+                    PZJS = model.pzjs, // 娲捐浠舵暟
+                    PZSL = model.pzsl, // 娲捐鏁伴噺
+                    PZ_RQ = model.pz_rq, // 娲捐鏃ユ湡(yyyy-mm-dd)
+                    PZ_CZRQ = model.pz_czrq, // 娲捐鎿嶄綔鏃ユ湡
+                    PZ_ZFBJ = model.pz_zfbj, // 娲捐浣滃簾鏍囪
+                    PZ_ZFRQ = model.pz_zfrq, // 娲捐浣滃簾鏃ユ湡
+                    PZ_BZ = model.pz_bz, // 娲捐澶囨敞
+                    CKDBH = model.ckdbh, // 鍑哄簱鍗曠紪鍙�+                    SFJS = model.sfjs, // 瀹炲彂浠舵暟 (闇�杩斿洖) 
+                    SFSL = model.sfsl, // 瀹炲彂鏁伴噺 (闇�杩斿洖) 
+                    SFCS = model.sfcs, // 瀹炲彂杞︽暟 (闇�杩斿洖) 
+                    ZCSJ = model.zcsj, // 瑁呰溅鏃堕棿 (闇�杩斿洖) 
+                    JLDW = model.jldw, // 璁¢噺鍗曚綅 (闇�杩斿洖) 
+                    FHRQ = model.fhrq, // 鍙戣揣鏃ユ湡 (闇�杩斿洖) 
+                    CKDM = model.ckdm, // 浠撳簱浠g爜 (闇�杩斿洖) 
+                    FHR = model.fhr, // 鍙戣揣浜�(闇�杩斿洖) 
+                    CZYDM = model.czydm, // 鎿嶄綔鍛�(闇�杩斿洖) 
+                    SHR_USERNAME = model.shr_username, // 瀹℃牳浜�+                    SHRQ = model.shrq, // 瀹℃牳鏃ユ湡
+                    ZFBJ = model.zfbj, // 浣滃簾鏍囪
+                    ZFRQ = model.zfrq, // 浣滃簾鏃ユ湡
+                    JSDW = model.jsdw, // 缁撶畻鍗曚綅
+                    SHDW = model.shdw, // 鏀惰揣鍗曚綅
+                    YSDW = model.ysdw, // 杩愯緭鍗曚綅
+                    LXR = model.lxr, // 鑱旂郴浜�+                    RY_ZXG = model.ry_zxg, // 瑁呭嵏宸�(闇�杩斿洖) 
+                    RY_CCSJ = model.ry_ccsj, // 鍙夎溅鍙告満 (闇�杩斿洖) 
+                    ERPHX_JHDH = model.erphx_jhdh, // erp浜よ揣鍗曞彿
+                    ERPHX_WLBM = model.erphx_wlbm, // erp鐗╂枡缂栫爜
+                    ERPHX_WLMC = model.erphx_wlmc, // erp鐗╂枡鍚嶇О
+                    ERPHX_CJRQ = model.erphx_cjrq, // erp鍒涘缓鏃ユ湡
+                    HW = model.hw, // 璐т綅 (闇�杩斿洖) 
+                    HWZT = model.hwzt // 璐т綅鐘舵� (闇�杩斿洖) 
+                };
+
+                var cgDetail = db.Queryable<TN_CG_Detail>().Where(d => d.S_ITEM_CODE == model.cpdm && d.N_ITEM_NUM >= model.pzjs).First();
+                if (cgDetail == null) {
+                    return NewErpResult(2, preLog + $"鍦╗璐у搧鏄庣粏琛╙涓病鏈夋壘鍒板悎閫傜殑鐗╂枡!瑕佹眰:鐗╂枡缂栫爜='{model.cpdm}',鐗╂枡鏁伴噺>={model.pzjs}");
+                }
+
+                var order = new TN_Outbound_Order {
+                    S_NO = orderNo,
+                    //S_ITEM_CODE = model.cpdm,
+                    //S_BATCH = model.ph,
+                    //N_END_NUM = (int)model.pzsl,
+                    S_ITEM_CODE = model.cpdm,
+                    S_BATCH = cgDetail.S_BATCH_NO,
+                    N_END_NUM = (int)model.pzjs,
+                    S_END_AREA = "QCCKQ", // ERP涓嬪彂鍑哄簱浠诲姟涓烘苯杞﹀嚭搴撳尯
+                    S_BS_NO = model.jhdh,
+                    S_BS_TYPE = "ERP",
+                };
+
+                var detailList = new List<TN_Outbound_Detail>();
+                var detail = new TN_Outbound_Detail {
+                    S_OO_NO = orderNo,
+                    S_ITEM_CODE = cgDetail.S_ITEM_CODE,
+                    S_BATCH_NO = cgDetail.S_BATCH_NO,
+                    S_CNTR_CODE = cgDetail.S_CNTR_CODE,
+                    N_COUNT = cgDetail.N_ITEM_NUM,
+                    S_END_AREA = order.S_END_AREA, // order涓篸etail鐨勬瘡涓�釜璐т綅璁剧疆缁堢偣鍊�+                    S_BS_NO = order.S_BS_NO,
+                    S_BS_TYPE = order.S_BS_TYPE,
+                };
+                detailList.Add(detail);
+
+                using (var tran = db.Ado.UseTran()) {
+                    if (db.Insertable(order).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return NewErpResult(500, preLog + $"鐢熸垚[鍑哄簱鍗昡澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(order)}\n");
+                    }
+
+                    if (db.Insertable(detailList).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return NewErpResult(500, preLog + $"鐢熸垚[鍑哄簱鍗曟槑缁哴澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(detailList)}\n");
+                    }
+
+                    if (db.Insertable(outboundPlan).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return NewErpResult(500, preLog + $"鎻掑叆[鍑哄簱璁″垝璁板綍琛╙澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(outboundPlan)}\n");
+                    }
+
+                    tran.CommitTran();
+                    return NewErpResult(0, preLog + $"鐢熸垚[鍑哄簱鍗昡鎴愬姛!!\n\n鍑哄簱鍗�{JsonConvert.SerializeObject(order)}\n鍑哄簱鍗曟槑缁�{JsonConvert.SerializeObject(detailList)}\n");
+                }
+            }
+            catch (Exception ex) {
+                return NewErpResult(1, preLog + $"鍙戠敓浜嗗紓甯�{ex.Message}\n\n{ex.StackTrace}\n");
+            }
+        }
+    }
+
+    public partial class ErpModel {
+        /// <summary>
+        /// 鍙嶉 ERP 鐨勬暟鎹被鍨�+        /// </summary>
+        public class ErpResult {
+            [JsonProperty("code")]
+            public int Code { get; set; }
+            [JsonProperty("message")]
+            public string Message { get; set; }
+        }
+
+        public static ErpResult NewErpResult(int code, string message, string name = "") {
+            LogHelper.Info(message, name);
+            return new ErpResult { Code = code, Message = message };
+        }
+
+        public static ErpResult NewErpResult(Exception ex, string preLog = "", int errCode = -1) {
+            LogHelper.InfoEx(ex, preLog);
+            return new ErpResult { Code = errCode, Message = $"鍙戠敓浜哰寮傚父]:{ex.Message}" };
+        }
+    } 
+
 }
\ No newline at end of file

--
Gitblit v1.9.1