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 | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 168 insertions(+), 4 deletions(-) diff --git a/api/ErpController.cs b/api/ErpController.cs index 1e46eb3..05cacb7 100644 --- a/api/ErpController.cs +++ b/api/ErpController.cs @@ -2,7 +2,12 @@ using Newtonsoft.Json; 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> @@ -10,8 +15,167 @@ /// </summary> [RoutePrefix("api")] public class ErpController : ApiController { - - - + /// <summary> + /// ERP涓嬪彂鍑哄簱璁″垝鍗�+ /// </summary> + /// <param name="model"></param> + /// <returns></returns> + [HttpPost] + [Route("ErpSendOutboundPlan")] + public ErpResult ErpSendOutboundPlan(ErpModel.ErpSendOutboundPlanInfo model) { + LogHelper.InfoApi("ERP涓嬪彂鍑哄簱璁″垝鍗�, 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