From fbb7c2253c86d58583d7e3b0a8a44d0342c43c73 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期五, 25 七月 2025 17:20:52 +0800 Subject: [PATCH] 完善单容器多物料场景的优化重构, 优化ERP回报信息的处理 --- api/DebugController.cs | 70 ++++++++++++++++++++++++++++++++++- 1 files changed, 68 insertions(+), 2 deletions(-) diff --git a/api/DebugController.cs b/api/DebugController.cs index d948cb3..f83777f 100644 --- a/api/DebugController.cs +++ b/api/DebugController.cs @@ -4,13 +4,15 @@ using System.Web.Http; using HH.WCS.Mobox3.AnGang.dispatch; -using HH.WCS.Mobox3.AnGang.wms; using HH.WCS.Mobox3.AnGang.models; +using HH.WCS.Mobox3.AnGang.util; +using HH.WCS.Mobox3.AnGang.wms; using Newtonsoft.Json; +using SqlSugar; + using static HH.WCS.Mobox3.AnGang.api.ApiModel; -using HH.WCS.Mobox3.AnGang.util; namespace HH.WCS.Mobox3.AnGang.api { /// <summary> @@ -170,6 +172,70 @@ return ex.Message; } } + + [HttpPost] + public string AddCntrData() { + var db = new SqlHelper<object>().GetInstance(); + try { + //var locCntrRelList = db.Queryable<TN_Loc_Container>(); + //var result = db.Queryable<TN_CG_Detail>() + // .GroupBy(d => d.S_CNTR_CODE) // 鎸�S_CNTR_CODE 鍒嗙粍 + // .Select(d => new CntrCodeCountResult { + // S_CNTR_CODE = d.S_CNTR_CODE, + // Count = SqlFunc.AggregateCount(d.S_ITEM_CODE) // 璁$畻姣忕粍鐨勬潯鐩暟 + // }) + // .ToList(); + + //var cntrList = locCntrRelList.Select(c => c.S_CNTR_CODE); + + var result = db.Queryable<TN_CG_Detail>() + .LeftJoin<TN_Loc_Container>((detail, container) => detail.S_CNTR_CODE == container.S_CNTR_CODE) + .GroupBy(detail => detail.S_CNTR_CODE) + .Select((detail, container) => new CntrCodeCountResult { + S_CNTR_CODE = detail.S_CNTR_CODE, + Count = SqlFunc.AggregateCount(detail.S_ITEM_CODE) + }) + .ToList(); + + var cntrList = db.Queryable<TN_Container>().ToList(); + + var cntrListToUpdate = new List<TN_Container>(); + var cntrListToInsert = new List<TN_Container>(); + foreach (var cntr in result) { + var oldCntr = cntrList.Where(c => c.S_CODE == cntr.S_CNTR_CODE).First(); + if (oldCntr == null) { + cntrListToUpdate.Add(new TN_Container { S_CODE = cntr.S_CNTR_CODE, N_DETAIL_COUNT = cntr.Count }); + } + + if (oldCntr.N_DETAIL_COUNT != cntr.Count) { + cntrListToUpdate.Add(new TN_Container { S_CODE = cntr.S_CNTR_CODE, N_DETAIL_COUNT = cntr.Count }); + } + } + + using (var tran = db.Ado.UseTran()) { + if (cntrListToUpdate.Count > 0 && db.Updateable(cntrListToUpdate).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return "鏇存柊澶辫触"; + } + if (cntrListToInsert.Count > 0 && db.Insertable(cntrListToInsert).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return "鎻掑叆澶辫触"; + } + tran.CommitTran(); + } + } + catch (Exception ex) { + + return ex.Message; + } + + return "success"; + } + } + + public class CntrCodeCountResult { + public string S_CNTR_CODE { get; set; } // 瀹瑰櫒浠g爜 + public int Count { get; set; } // 璇ュ鍣ㄤ唬鐮佸搴旂殑鏉$洰鏁� } public class ReturnResults { -- Gitblit v1.9.1