From 73a5779f0d27535a46ae5bc00a5e006be6c24d25 Mon Sep 17 00:00:00 2001 From: hudong <Administrator@PC-20250329JZUF> Date: 星期四, 03 七月 2025 08:37:36 +0800 Subject: [PATCH] 1.河南平高变更单需求修改 审核自动触发出库任务2.增加优先级字段3.分拣接口提出来单独使用4.增加入库单明细临时表 5增加过账日期表和审核回调逻辑 --- wms/WCSHelper.cs | 2 Program.cs | 1 api/WmsSpaHelper.cs | 303 ++++++++++++++++++++++---- models/TN_GZ_SZ.cs | 21 + models/TN_Center_Inbound_Detail.cs | 111 ++++++++++ api/ApiModel.cs | 3 models/TN_Outbound_Order.cs | 1 core/WMSCore.cs | 189 +++++++++++------ api/WmsSapController.cs | 2 HH.WCS.Mobox3.pinggao.csproj | 3 10 files changed, 514 insertions(+), 122 deletions(-) diff --git a/HH.WCS.Mobox3.pinggao.csproj b/HH.WCS.Mobox3.pinggao.csproj index 81227e2..c569811 100644 --- a/HH.WCS.Mobox3.pinggao.csproj +++ b/HH.WCS.Mobox3.pinggao.csproj @@ -112,6 +112,7 @@ <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath> </Reference> + <Reference Include="System.Runtime.Caching" /> <Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>bin\Debug\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath> @@ -197,9 +198,11 @@ <Compile Include="models\SapReturn.cs" /> <Compile Include="models\SapRoot.cs" /> <Compile Include="models\TN_CD.cs" /> + <Compile Include="models\TN_Center_Inbound_Detail.cs" /> <Compile Include="models\TN_Container_Code.cs" /> <Compile Include="models\TN_DPRECORD.cs" /> <Compile Include="models\TN_GENERATE_ORDER.cs" /> + <Compile Include="models\TN_GZ_SZ.cs" /> <Compile Include="models\TN_InBounder_Sh.cs" /> <Compile Include="models\TN_Location_Ext.cs" /> <Compile Include="models\TN_Ll_detail.cs" /> diff --git a/Program.cs b/Program.cs index 05d8b85..728809b 100644 --- a/Program.cs +++ b/Program.cs @@ -114,6 +114,7 @@ //tasks.Add(GetTask(() => RunAtSpecificTime(WMSCore.Start, "14:00"))); tasks.Add(GetTask(WMSCore.Start)); tasks.Add(GetTask(WMSCore.CheckDistributionCNTROrder)); + tasks.Add(GetTask(WMSCore.podetailSend)); //tasks.Add(GetTask(WMSCore.TransportTask)); tasks.Add(GetTask(WCSCore.Dispatch)); //瀹氭椂閲嶇疆 diff --git a/api/ApiModel.cs b/api/ApiModel.cs index d148acf..32d6750 100644 --- a/api/ApiModel.cs +++ b/api/ApiModel.cs @@ -382,7 +382,7 @@ public class HuiK { public string cntr_code { get; set; }//瀹瑰櫒 - public string start { get; set; }//瀹瑰櫒 + } @@ -406,6 +406,7 @@ public class LLDDto { public string S_NO { get; set; } + public int N_PRIORITY { get; set; } } /// <summary> /// lua璋冪敤鎺ュ彛锛岀爜鐩樹俊鎭�diff --git a/api/WmsSapController.cs b/api/WmsSapController.cs index 165d24b..d453412 100644 --- a/api/WmsSapController.cs +++ b/api/WmsSapController.cs @@ -601,7 +601,7 @@ { - var json = WmsSpaHelper.Out_Order_Inss(dto.S_NO); + var json = WmsSpaHelper.Out_Order_Inss(dto.S_NO,dto.N_PRIORITY); return json; diff --git a/api/WmsSpaHelper.cs b/api/WmsSpaHelper.cs index bb2979d..98edcb4 100644 --- a/api/WmsSpaHelper.cs +++ b/api/WmsSpaHelper.cs @@ -43,6 +43,7 @@ using HH.WCS.Mobox3.pinggao.core; using static HH.WCS.Mobox3.pinggao.api.OtherModel.Putaway_Order_In; using System.Web.Http.Results; +using System.Runtime.Caching; namespace HH.WCS.Mobox3.pinggao.api { @@ -2004,7 +2005,7 @@ S_END_LOC = endinfo.S_CODE, S_END_AREA = endinfo.S_AREA_CODE, S_END_WH = endinfo.S_WH_CODE, - + N_PRIORITY=1, N_TYPE = 2, // S_TYPE = WMSTask.GetTypeStr(1), S_TYPE = "鍑哄簱绌烘墭鐩�, @@ -2118,6 +2119,28 @@ } } + private static readonly ObjectCache Cache = MemoryCache.Default; + private const string CachePrefix = "ClickProtection_"; + private const int CacheDurationInSeconds = 2; + + public static bool IsClickAllowed(string parameter) + { + string cacheKey = CachePrefix + parameter; + + // 妫�煡缂撳瓨涓槸鍚﹀凡瀛樺湪璇ュ弬鏁�+ if (Cache.Contains(cacheKey)) + { + // 缂撳瓨涓瓨鍦紝璇存槑5绉掑唴宸茬偣鍑昏繃 + return false; + } + else + { + // 缂撳瓨涓笉瀛樺湪锛屾坊鍔犲埌缂撳瓨骞惰缃�绉掑悗杩囨湡 + CacheItemPolicy policy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(CacheDurationInSeconds) }; + Cache.Set(cacheKey, parameter, policy); + return true; + } + } /// <summary> /// 鍒嗘嫞 /// </summary> @@ -2127,6 +2150,17 @@ { var result = new SimpleResult(); + if (!IsClickAllowed(model.cntr_code)) + { + // 鎻愮ず鐢ㄦ埛5绉掑唴宸茬偣鍑昏繃 + result.resultMsg = "鎮ㄥ凡鐐瑰嚮杩囷紝璇�绉掑悗鍐嶈瘯銆�; + result.resultCode = 1; + return result; + } + else + { + + } // var db = new SqlHelper<object>().GetInstance(); using (var db = new SqlHelper<object>().GetInstance()) @@ -2165,26 +2199,35 @@ } LogHelper.Info($"S_OUT_TYPE{po.S_OUT_TYPE}"); + var gzra = db.Queryable<TN_GZ_SZ>().Where(a => a.N_ENABLE == 1).First(); + var GZRQ = DateTime.Now.ToString("yyyyMMdd"); + if (gzra != null) + { + GZRQ = gzra.S_GZRQ.ToString("yyyyMMdd"); + } //鏍规嵁涓嶅悓鍑哄簱绫诲瀷 鍥炶皟sap if (po.S_OUT_TYPE == "鍐查攢鍑哄簱") { - result = await CXAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start); + result = await CXAddOutboundOrder(GZRQ,db, model.MaterList, model.arrival_no, model.cntr_code, start); } else if (po.S_OUT_TYPE == "鍑哄簱")//鏅�鍑哄簱 { LogHelper.Info($"S_OUT_TYPE{po.S_OUT_TYPE}"); - result = await AddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start); + result = await AddOutboundOrder(GZRQ, db, model.MaterList, model.arrival_no, model.cntr_code, start); } else if (po.S_OUT_TYPE == "璁″垝澶栧彂鏂欏嚭搴�) { - result = await jhwtlAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start); + result = await jhwtlAddOutboundOrder(GZRQ,db, model.MaterList, model.arrival_no, model.cntr_code, start); } else if (po.S_OUT_TYPE == "鎴愭湰涓績鍑哄簱") { - result = await CBAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start); + result = await CBAddOutboundOrder(GZRQ,db, model.MaterList, model.arrival_no, model.cntr_code, start); } - + if (result.resultCode == 1) + { + return result; + } //閫氱敤鎺ュ彛 瀵瑰鍣ㄨ揣鍝佺殑鍒犲噺 鍜岀敓鎴愬洖搴撳崟 閮借鐢ㄧ殑鎺ュ彛 result = await TYAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.IsHK, start, po.S_OUT_TYPE, model.cntr_type); if (result.resultCode == 1) @@ -2443,7 +2486,7 @@ }; if (WMSHelper.CreateWmsTask(wmsTask)) { - LocationHelper.LockLoc(start, 1); + LocationHelper.LockLoc(start, 2); result.resultMsg = $"鍒涘缓浣滀笟鎴愬姛锛屼綔涓氬彿{wmsTask.S_CODE}"; } } @@ -2514,13 +2557,25 @@ result.resultMsg = $"{model.cntr_code}鎵樼洏鎵句笉鍒拌揣浣�; return result; } - var startloc = db.Queryable<Location>().Where(a => a.S_CODE == model.start).First(); + var start = ""; + var startloc1 = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE == model.cntr_code).First(); + if (startloc1 != null) + { + start = startloc1.S_LOC_CODE; + } + else + { + result.resultMsg = $"{model.cntr_code}瀹瑰櫒鏈壘鍒拌揣浣嶄俊鎭�; + result.resultCode = 1; + return result; + } + var startloc = db.Queryable<Location>().Where(a => a.S_CODE ==start).First(); //var location = db.Queryable<Location>().Where(a => a.S_CODE == locs.S_LOC_CODE).First(); var wmsTask = new WMSTask { S_CNTR_CODE = model.cntr_code, S_CODE = WMSHelper.GenerateTaskNo(), - S_START_LOC = model.start, + S_START_LOC = startloc.S_CODE, S_START_AREA = startloc.S_AREA_CODE, S_START_WH = startloc.S_WH_CODE, @@ -2539,7 +2594,7 @@ }; if (WMSHelper.CreateWmsTask(wmsTask)) { - LocationHelper.LockLoc(model.start, 1); + LocationHelper.LockLoc(startloc.S_CODE, 1); result.resultMsg = $"鍒涘缓浣滀笟鎴愬姛锛屼綔涓氬彿{wmsTask.S_CODE}"; } } @@ -2562,7 +2617,7 @@ /// <param name="cntr_code"></param> /// <param name="start"></param> /// <returns></returns> - public static async Task<SimpleResult> CBAddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) + public static async Task<SimpleResult> CBAddOutboundOrder(string GZRQ,SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) { //using (var db = new SqlHelper<object>().GetInstance()) //{ @@ -2590,12 +2645,12 @@ //鍥炲弬鐗╂枡淇℃伅 List<CBcenterBackDto.HEADItem> iTEMs = new List<CBcenterBackDto.HEADItem>(); List<OutboundRecord> records = new List<OutboundRecord>(); - string GZRQ = ""; + //string GZRQ = ""; string PZZDRQ = ""; - if (po.BUDAT != null) - { - GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); - } + //if (po.BUDAT != null) + //{ + // GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); + //} if (po.BLDAT != null) { PZZDRQ = DateTime.Parse(po.BLDAT.ToString()).ToString("yyyyMMdd"); @@ -2725,7 +2780,7 @@ /// <param name="cntr_code"></param> /// <param name="start"></param> /// <returns></returns> - public static async Task<SimpleResult> jhwtlAddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) + public static async Task<SimpleResult> jhwtlAddOutboundOrder(string GZRQ,SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) { //using (var db = new SqlHelper<object>().GetInstance()) //{ @@ -2743,12 +2798,12 @@ DateTime dateTime; DateTime dateTime1; - string GZRQ = ""; + //string GZRQ = ""; string PZZDRQ = ""; - if (po.BUDAT != null) - { - GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); - } + //if (po.BUDAT != null) + //{ + // GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); + //} if (po.BLDAT != null) { PZZDRQ = DateTime.Parse(po.BLDAT.ToString()).ToString("yyyyMMdd"); @@ -2917,7 +2972,7 @@ /// <param name="cntr_code"></param> /// <param name="start"></param> /// <returns></returns> - public static async Task<SimpleResult> CXAddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) + public static async Task<SimpleResult> CXAddOutboundOrder(string GZRQ,SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) { // var db = new SqlHelper<object>().GetInstance(); @@ -2927,15 +2982,15 @@ try { //搴撲綅淇℃伅 - var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == start).First(); + //var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == start).First(); //鍑哄簱鍗曡鎯� var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == arrival_no).First(); - string GZRQ = ""; - if (po.BUDAT != null) - { - GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); - } + //string GZRQ = ""; + //if (po.BUDAT != null) + //{ + // GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); + //} //鏉ユ簮鍐查攢鍑瘉瀵瑰簲鐨勭墿鏂欏嚟璇佷俊鎭� //var poIn = db.Queryable<TN_Inbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == po.S_BS_NO).First(); @@ -2968,11 +3023,6 @@ hEAD.GZRQ = GZRQ; hEAD.SRSJ = DateTime.Now.ToString("yyyyMMdd"); - //hEAD.WLPZ = porecord.Where(s => s.S_WLBM == item.item_code && s.S_WLH == item.N_ROW_NO).First()?.S_WLPZBH; - //hEAD.WLPZNF = porecord.Where(s=>s.S_WLBM==item.item_code&&s.S_WLH==item.N_ROW_NO).First()?.S_WLPZND; - - //hEAD.WLPZ = porecord.First()?.S_WLPZBH; - //hEAD.WLPZNF = porecord.First()?.S_WLPZND; hEAD.WLPZ = porecord.FirstOrDefault()?.S_WLPZBH; hEAD.WLPZNF = porecord.FirstOrDefault()?.S_WLPZND; @@ -3093,7 +3143,7 @@ /// <param name="cntr_code"></param> /// <param name="start"></param> /// <returns></returns> - public static async Task<SimpleResult> AddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) + public static async Task<SimpleResult> AddOutboundOrder(string GZRQ,SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, string start) { //using (var db = new SqlHelper<object>().GetInstance()) //{ @@ -3106,7 +3156,7 @@ var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == start).First(); //鍑哄簱鍗曡鎯� var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == arrival_no).First(); - string GZRQ = ""; + //string GZRQ = ""; string PZZDRQ = ""; //if (po.Details[0].S_CJRQ != null) //{ @@ -3126,7 +3176,7 @@ KEY = po.S_NO, ZYWLX = "2", PZRQ = DateTime.Now.ToString("yyyyMMdd"), - GZRQ = DateTime.Now.ToString("yyyyMMdd"), // 鍋囪鏃ユ湡鏍煎紡涓�骞�鏈�鏃� + GZRQ = GZRQ, // 鍋囪鏃ユ湡鏍煎紡涓�骞�鏈�鏃� GZRY = po.S_CREATOR_NAME, ITEM = new List<CkBcakDto.ITEM> { @@ -3871,7 +3921,7 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - internal static WeiLiResult Out_Order_Inss(string S_NO) + internal static WeiLiResult Out_Order_Inss(string S_NO,int N_PRIORITY) { var result = new WeiLiResult(); // var db = new SqlHelper<object>().GetInstance(); @@ -3897,7 +3947,7 @@ else { //var az = db.Queryable<AZInventory>().ToList(); - var po1 = new TN_Outbound_Order { S_NO = WMSHelper.GenerateShippNo(), UNAME = po.UNAME, S_FACTORY = po.S_FACTORY, S_CBZX = po.S_CBZX, S_ZZKM = po.S_ZZKM, S_LRZX = po.S_LRZX, BLDAT = po.BLDAT, BUDAT = po.BUDAT, S_OUT_TYPE = po.S_OUT_TYPE, S_BS_TYPE = po.S_BS_TYPE, S_AREA_CODE = po.S_AREA_CODE, S_BS_NO = po.S_NO }; + var po1 = new TN_Outbound_Order { S_NO = WMSHelper.GenerateShippNo(), N_PRIORITY=N_PRIORITY, UNAME = po.UNAME, S_FACTORY = po.S_FACTORY, S_CBZX = po.S_CBZX, S_ZZKM = po.S_ZZKM, S_LRZX = po.S_LRZX, BLDAT = po.BLDAT, BUDAT = po.BUDAT, S_OUT_TYPE = po.S_OUT_TYPE, S_BS_TYPE = po.S_BS_TYPE, S_AREA_CODE = po.S_AREA_CODE, S_BS_NO = po.S_NO }; List<TN_Ll_detail> tN_Ll_Details = new List<TN_Ll_detail>(); po1.Details = new List<TN_Outbound_Detail>(); var list = po.Details.Where(s => s.F_QTY > s.F_ACC_D_QTY&&s.S_ERP_WH_CODE=="4004").Select(s => s.S_ITEM_CODE).Distinct().ToArray(); @@ -4373,6 +4423,11 @@ db.BeginTran(); var po = db.Queryable<TN_Inbound_Order>().Includes(p => p.Details).Where(a => a.S_NO == model.S_NO).First(); + + + + + LogHelper.Info($"杩涙潵浜�"); #region MyRegion if (po.Details.Count > 0) @@ -4462,6 +4517,152 @@ w.S_ITEM_CODE == d.S_ITEM_CODE && w.N_ROW_NO == d.N_ROW_NO)).OrderBy(s => s.N_ROW_NO) .ToList(); + + #region MyRegion + + + List<TN_Center_Inbound_Detail> tN_Center_Inbound_Details=new List<TN_Center_Inbound_Detail>(); + foreach (var item in po.Details) + { + bool idadd = true; + // var cir2 = db.Queryable<CGRels>().Where(a => a.S_ITEM_CODE == item.S_ITEM_CODE && a.S_CNTR_TYPE == "鍗婃墭").Select(s => s.S_CNTR_CODE).Distinct().ToArray(); + var S_CNTR_CODE = ""; + + + + var lcr = db.Queryable<LocCntrRel>() + .InnerJoin<CGRels>((l, c) => l.S_CNTR_CODE == c.S_CNTR_CODE) + .Where((l, c) => c.S_ITEM_CODE == item.S_ITEM_CODE && c.S_CNTR_TYPE == "鍗婃墭") + .OrderByDescending((l, c) => l.T_CREATE) + .Select((l, c) => l).ToList() + .FirstOrDefault(); + + //if (cir2.Count()>0) + //{ + + + // var lcr = db.Queryable<LocCntrRel>().Where(c => cir2.Contains(c.S_CNTR_CODE)).OrderByDescending(s=>s.T_CREATE).First(); + + S_CNTR_CODE = lcr.S_CNTR_CODE; + if (lcr != null) + { + //璧峰搴撲綅 + var startloc = db.Queryable<Location>().Where(it => it.S_CODE == lcr.S_LOC_CODE).First(); + var wsc = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == S_CNTR_CODE&&it.S_TYPE.Contains("鍑哄簱") && it.N_B_STATE < 3).First(); + if (wsc != null) + { + item.N_B_STATE = 2; + db.Updateable(item).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + } + else + { + if (startloc != null)//&& + { + //缁堢偣璐т綅 + var endloc = db.Queryable<Location>().Where(it => it.S_AREA_CODE == "QYQXHQ" && it.N_LOCK_STATE == 0 && it.N_CURRENT_NUM == 0).First(); + + // var endloc = db.Queryable<Location>().Where(it => it.S_CODE == item.S_END_LOC).First(); + if (endloc != null) + { + var optask = new WMSTask + { + S_CODE = WMSHelper.GenerateTaskNo(), + S_START_LOC = startloc.S_CODE, + S_START_AREA = startloc.S_AREA_CODE, + S_START_WH = startloc.S_WH_CODE, + S_END_LOC = endloc.S_CODE, + S_END_AREA = endloc.S_AREA_CODE, + S_END_WH = endloc.S_WH_CODE, + N_PRIORITY = 1, + S_TYPE = "鍗婃墭鍑哄簱", + N_TYPE = 2, + N_B_STATE = 0, + S_BS_NO = "", + S_CNTR_CODE = S_CNTR_CODE, + S_OP_DEF_NAME = item.S_BS_TYPE + }; + var res = db.Insertable(optask).ExecuteCommand() > 0; + if (res) + { + startloc.N_LOCK_STATE = 2; + startloc.S_LOCK_STATE = "鍑哄簱閿�; + db.Updateable(startloc).UpdateColumns(it => new { it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand(); + var models = db.Queryable<Location>().Where(a => a.S_CODE == endloc.S_CODE).First(); + // if (model != null && model.S_LOCK_STATE.Trim() == "鏃�) + if (models != null && models.N_LOCK_STATE == 0) + { + models.N_LOCK_STATE = 1; + models.S_LOCK_STATE = Location.GetLockStateStr(1); + res = db.Updateable(models).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() > 0; + } + //LocationHelper.LockLoc(endloc.S_CODE, 1); + item.N_B_STATE = 2; + db.Updateable(item).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + + + } + } + else + { + idadd = false; + LogHelper.Info($" 搴撳尯AGVXHQ鏃犵┖璐т綅"); + + } + } + else + { + idadd = false; + LogHelper.Info($" 搴撳尯鏃犺揣浣�); + } + } + + } + else + { + idadd = false; + LogHelper.Info($"鐗╂枡{item.S_ITEM_CODE}鏈壘鍒板鍣ㄥ搴旂殑璐т綅淇℃伅锛岃鑱旂郴浜哄伐缁戝畾鍏崇郴"); + } + if (!idadd) + { + TN_Center_Inbound_Detail tN_Center_Inbound_Detail = new TN_Center_Inbound_Detail(); + tN_Center_Inbound_Detail.S_IO_NO = item.S_IO_NO; + tN_Center_Inbound_Detail.N_ROW_NO = item.N_ROW_NO; + tN_Center_Inbound_Detail.S_ITEM_CODE = item.S_ITEM_CODE; + tN_Center_Inbound_Detail.F_QTY = item.F_QTY; + tN_Center_Inbound_Detail.S_ITEM_STATE = item.S_ITEM_STATE; + tN_Center_Inbound_Detail.S_ITEM_NAME = item.S_ITEM_NAME; + tN_Center_Inbound_Detail.F_ACC_B_QTY = item.F_ACC_B_QTY; + tN_Center_Inbound_Detail.S_KCDD = item.S_KCDD; + tN_Center_Inbound_Detail.S_UOM = item.S_UOM;//璁¢噺鍗曚綅 + tN_Center_Inbound_Detail.S_BATCH_NO = item.S_BATCH_NO; + tN_Center_Inbound_Detail.S_CGPZH = item.S_CGPZH; + tN_Center_Inbound_Detail.S_CGPZXMBH = item.S_CGPZXMBH; + tN_Center_Inbound_Detail.S_CKPZKJND = item.S_CKPZKJND; + tN_Center_Inbound_Detail.S_CKPZXM = item.S_CKPZXM; + tN_Center_Inbound_Detail.S_CXWLPZBH = item.S_CXWLPZBH; + tN_Center_Inbound_Detail.S_HWSJJYZT = item.S_HWSJJYZT; + tN_Center_Inbound_Detail.S_JYPBH = item.S_JYPBH; + tN_Center_Inbound_Detail.S_KJPZSSRQ = item.S_KJPZSSRQ; + tN_Center_Inbound_Detail.S_KJPZSRSJ = item.S_KJPZSRSJ; + tN_Center_Inbound_Details.Add(tN_Center_Inbound_Detail); + + } + //} + //else + //{ + // LogHelper.Info($"鏈壘鍒扮墿鏂檣item.S_ITEM_CODE}瀵瑰簲鐨勫鍣�); + //} + + } + db.Insertable(tN_Center_Inbound_Details).ExecuteCommand(); + #endregion + + var gzra = db.Queryable<TN_GZ_SZ>().Where(a => a.N_ENABLE == 1).First(); + var GZRQ = DateTime.Now.ToString("yyyyMMdd"); + if (gzra!=null) + { + GZRQ= gzra.S_GZRQ.ToString("yyyyMMdd"); + } if (po.S_IN_TYPE == "鍐呴噰鍏ュ簱") { List<NcRkDto.ITEM> listitem = new List<NcRkDto.ITEM>(); @@ -4517,7 +4718,7 @@ { KEY = KEY, - GZRQ = DateTime.Now.ToString("yyyyMMdd"), + GZRQ = GZRQ, GZRY = model.GZRY,//GenerateTaskNo WLPZBH = po.S_NO, WLPZND = po.S_WLPZND @@ -4631,12 +4832,12 @@ { DateTime dateTime; DateTime dateTime1; - string GZRQ = ""; + //string GZRQ = ""; string PZZDRQ = ""; - if (po.BUDAT != null) - { - GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); - } + //if (po.BUDAT != null) + //{ + // GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); + //} if (po.BLDAT != null) { PZZDRQ = DateTime.Parse(po.BLDAT.ToString()).ToString("yyyyMMdd"); @@ -4849,7 +5050,7 @@ HEAD = new WcRkBc.HEAD { KEY = KEY, - GZRQ = DateTime.Now.ToString("yyyyMMdd"), + GZRQ = GZRQ, GZRY = model.GZRY, GC = po.S_FACTORY }, @@ -4962,12 +5163,12 @@ { var materpz = db.Queryable<TN_Inbound_Order>().Where(s => s.S_NO == po.S_NO).First(); - string GZRQ = ""; + //string GZRQ = ""; LogHelper.Info($"鍐查攢鍏ュ簱鍏ュ簱{po.BUDAT}"); - if (po.BUDAT != null) - { - GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); - } + //if (po.BUDAT != null) + //{ + // GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd"); + //} //鍑哄簱鍥炶皟鍏ュ弬 CXCkBackDto.Root roots = new CXCkBackDto.Root diff --git a/core/WMSCore.cs b/core/WMSCore.cs index 62c41c5..4be4b8f 100644 --- a/core/WMSCore.cs +++ b/core/WMSCore.cs @@ -1,4 +1,5 @@ -锘縰sing HH.WCS.Mobox3.pinggao.models; +锘縰sing HH.WCS.Mobox3.pinggao.api; +using HH.WCS.Mobox3.pinggao.models; using HH.WCS.Mobox3.pinggao.util; using HH.WCS.Mobox3.pinggao.wms; using System; @@ -7,6 +8,7 @@ using System.Reflection; using System.Text; using System.Threading.Tasks; +using static HH.WCS.Mobox3.pinggao.api.ApiModel; namespace HH.WCS.Mobox3.pinggao.core { @@ -34,6 +36,50 @@ //WMSHelper.GetWaitingSortingOrderList(); } + + //internal static async Task<SimpleResult> SendSap() + //{ + // var result = new SimpleResult(); + // LogHelper.Info($"涓嬪彂sap "); + // var db = new SqlHelper<object>().GetInstance(); + // //鑾峰彇閰嶇洏鍗�+ // var list = db.Queryable<TN_Outbound_Order>().Where(a => a.S_CNTR_CODE == model.cntr_code).First(); ; + // try + // { + // foreach (var po in list) { + + // if (po.S_OUT_TYPE == "鍐查攢鍑哄簱") + // { + // result = await WmsSpaHelper.CXAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start); + // } + // else + // if (po.S_OUT_TYPE == "鍑哄簱")//鏅�鍑哄簱 + // { + // LogHelper.Info($"S_OUT_TYPE{po.S_OUT_TYPE}"); + // result = await AddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start); + // } + // else if (po.S_OUT_TYPE == "璁″垝澶栧彂鏂欏嚭搴�) + // { + // result = await jhwtlAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start); + // } + // else if (po.S_OUT_TYPE == "鎴愭湰涓績鍑哄簱") + // { + // result = await CBAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, start); + // } + + // } + + + // } + // catch (Exception ex) + // { + // LogHelper.Info($"閰嶇洏鐢熸垚浣滀笟閿欒 {ex.Message}"); + // throw; + // } + // LogHelper.Info($"鑾峰彇閰嶇洏鏁伴噺 {list.Count}"); + //} + + internal static void CheckDistributionCNTROrder() { LogHelper.Info($"閰嶇洏鐢熸垚浣滀笟 "); @@ -47,6 +93,8 @@ var lcr = db.Queryable<LocCntrRel>().Where(c => c.S_CNTR_CODE == item.S_CNTR_CODE).First(); if (lcr != null) { + var yxj = db.Queryable<TN_Outbound_Order>().Where(it => it.S_NO == item.S_BS_NO).First(); + //璧峰搴撲綅 var startloc = db.Queryable<Location>().Where(it => it.S_CODE == lcr.S_LOC_CODE).First(); if (startloc != null)//&& @@ -62,6 +110,7 @@ S_CODE = WMSHelper.GenerateTaskNo(), S_START_LOC = item.S_LOC_CODE, S_START_AREA = startloc.S_AREA_CODE, + N_PRIORITY = yxj.N_PRIORITY, S_START_WH = startloc.S_WH_CODE, S_END_LOC = endloc.S_CODE, S_END_AREA = endloc.S_AREA_CODE, @@ -120,110 +169,113 @@ } - + internal static void podetailSend() { LogHelper.Info($"鑷姩鐢熸垚鍑哄簱浠诲姟 "); var db = new SqlHelper<object>().GetInstance(); //鑾峰彇鍏ュ簱鏄庣粏鍗� - var list = db.Queryable<TN_Inbound_Detail>().Where(a => a.N_B_STATE == 1).ToList(); - - - + var list = db.Queryable<TN_Center_Inbound_Detail>().ToList(); try { foreach (var item in list) { - var cir2 = db.Queryable<CGRels>().Where(a => a.S_ITEM_CODE == item.S_ITEM_CODE&&a.S_CNTR_TYPE=="鍗婃墭").First(); + bool idadd = true; var S_CNTR_CODE = ""; - if (cir2 != null) + var lcr = db.Queryable<LocCntrRel>() + .InnerJoin<CGRels>((l, c) => l.S_CNTR_CODE == c.S_CNTR_CODE) + .Where((l, c) => c.S_ITEM_CODE == item.S_ITEM_CODE && c.S_CNTR_TYPE == "鍗婃墭") + .OrderByDescending((l, c) => l.T_CREATE) + .Select((l, c) => l).ToList() + .FirstOrDefault(); + S_CNTR_CODE = lcr.S_CNTR_CODE; + if (lcr != null) { - S_CNTR_CODE=cir2.S_CNTR_CODE; - - var lcr = db.Queryable<LocCntrRel>().Where(c => c.S_CNTR_CODE == S_CNTR_CODE).First(); - if (lcr != null) + //璧峰搴撲綅 + var startloc = db.Queryable<Location>().Where(it => it.S_CODE == lcr.S_LOC_CODE).First(); + var wsc = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == S_CNTR_CODE && it.S_TYPE.Contains("鍑哄簱") && it.N_B_STATE < 3).First(); + if (wsc != null) { - //璧峰搴撲綅 - var startloc = db.Queryable<Location>().Where(it => it.S_CODE == lcr.S_LOC_CODE).First(); - var wsc = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == S_CNTR_CODE && it.N_B_STATE < 3).First(); - if (wsc != null) + item.N_B_STATE = 2; + db.Updateable(item).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + } + else + { + if (startloc != null)//&& { - item.N_B_STATE = 2; - db.Updateable(item).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); - } - else - { - if (startloc != null)//&& + //缁堢偣璐т綅 + var endloc = db.Queryable<Location>().Where(it => it.S_AREA_CODE == "QYQXHQ" && it.N_LOCK_STATE == 0 && it.N_CURRENT_NUM == 0).First(); + if (endloc != null) { - //缁堢偣璐т綅 - var endloc = db.Queryable<Location>().Where(it => it.S_AREA_CODE == "QYQXHQ" && it.N_LOCK_STATE == 0 && it.N_CURRENT_NUM == 0).First(); - - // var endloc = db.Queryable<Location>().Where(it => it.S_CODE == item.S_END_LOC).First(); - if (endloc != null) + var optask = new WMSTask { - var optask = new WMSTask + S_CODE = WMSHelper.GenerateTaskNo(), + S_START_LOC = startloc.S_CODE, + S_START_AREA = startloc.S_AREA_CODE, + S_START_WH = startloc.S_WH_CODE, + S_END_LOC = endloc.S_CODE, + S_END_AREA = endloc.S_AREA_CODE, + S_END_WH = endloc.S_WH_CODE, + N_PRIORITY = 1, + S_TYPE = "鍗婃墭鍑哄簱", + N_TYPE = 2, + N_B_STATE = 0, + S_BS_NO = "", + S_CNTR_CODE = S_CNTR_CODE, + S_OP_DEF_NAME = item.S_BS_TYPE + }; + var res = db.Insertable(optask).ExecuteCommand() > 0; + if (res) + { + startloc.N_LOCK_STATE = 2; + startloc.S_LOCK_STATE = "鍑哄簱閿�; + db.Updateable(startloc).UpdateColumns(it => new { it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand(); + var models = db.Queryable<Location>().Where(a => a.S_CODE == endloc.S_CODE).First(); + if (models != null && models.N_LOCK_STATE == 0) { - S_CODE = WMSHelper.GenerateTaskNo(), - S_START_LOC = startloc.S_CODE, - S_START_AREA = startloc.S_AREA_CODE, - S_START_WH = startloc.S_WH_CODE, - S_END_LOC = endloc.S_CODE, - S_END_AREA = endloc.S_AREA_CODE, - S_END_WH = endloc.S_WH_CODE, - S_TYPE = "鍑哄簱鍖�, - N_TYPE = 2, - N_B_STATE = 0, - S_BS_NO = "", - S_CNTR_CODE = S_CNTR_CODE, - S_OP_DEF_NAME = item.S_BS_TYPE - }; - var res = db.Insertable(optask).ExecuteCommand() > 0; - if (res) - { - startloc.N_LOCK_STATE = 2; - startloc.S_LOCK_STATE = "鍑哄簱閿�; - db.Updateable(startloc).UpdateColumns(it => new { it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand(); - LocationHelper.LockLoc(endloc.S_CODE, 1); - item.N_B_STATE = 2; - db.Updateable(item).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); - - + models.N_LOCK_STATE = 1; + models.S_LOCK_STATE = Location.GetLockStateStr(1); + res = db.Updateable(models).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() > 0; } - } - else - { - LogHelper.Info($"{item.S_BS_NO}閰嶇洏 搴撳尯AGVXHQ鏃犵┖璐т綅"); + item.N_B_STATE = 2; + db.Updateable(item).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + } } else { - LogHelper.Info($"{item.S_BS_NO}閰嶇洏 搴撳尯鏃犺揣浣�); + idadd = false; + LogHelper.Info($" 搴撳尯AGVXHQ鏃犵┖璐т綅"); } } + else + { + idadd = false; + LogHelper.Info($" 搴撳尯鏃犺揣浣�); + } + } - } - else - { - LogHelper.Info($"閰嶇洏鐢熸垚浣滀笟瀹瑰櫒鏈粦瀹氳揣浣�); - } } else { - LogHelper.Info($"鏈壘鍒扮墿鏂檣item.S_ITEM_CODE}瀵瑰簲鐨勫鍣�); + idadd = false; + LogHelper.Info($"鐗╂枡{item.S_ITEM_CODE}鏈壘鍒板鍣ㄥ搴旂殑璐т綅淇℃伅锛岃鑱旂郴浜哄伐缁戝畾鍏崇郴"); } + if (idadd) + { + db.Deleteable(item).ExecuteCommand(); + } } - - } catch (Exception ex) { - LogHelper.Info($"閰嶇洏鐢熸垚浣滀笟閿欒 {ex.Message}"); + LogHelper.Info($"鑷姩鐢熸垚鍑哄簱浠诲姟 {ex.Message}"); throw; } - LogHelper.Info($"鑾峰彇閰嶇洏鏁伴噺 {list.Count}"); + LogHelper.Info($"鑷姩鐢熸垚浜虹墿 {list.Count}"); } /// <summary> /// 閬嶅巻鍒嗘嫞鍗曟槑缁嗗垱寤哄嚭搴撲綔涓�@@ -560,6 +612,7 @@ S_END_AREA = endinfo.S_AREA_CODE, S_END_WH = endinfo.S_WH_CODE, S_SCHEDULE_TYPE = "NDC", + N_PRIORITY = a.N_PRIORITY, //N_CNTR_COUNT = 1, S_CNTR_CODE = a.S_CNTR_CODE, }; diff --git a/models/TN_Center_Inbound_Detail.cs b/models/TN_Center_Inbound_Detail.cs new file mode 100644 index 0000000..8c67955 --- /dev/null +++ b/models/TN_Center_Inbound_Detail.cs @@ -0,0 +1,111 @@ +锘縰sing SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HH.WCS.Mobox3.pinggao.models +{ + + + [SugarTable("TN_Inbound_Details")] + + public class TN_Center_Inbound_Detail : BaseModel + { + public string S_IO_NO { get; set; } + public string N_ROW_NO { get; set; } + public string S_ITEM_CODE { get; set; } + public int N_ITEM_STATE { get; set; } + public string S_ITEM_NAME { get; set; } + public string S_ITEM_STATE { get; set; } + public string S_BATCH_NO { get; set; } = ""; + public string S_ITEM_SPEC { get; set; } + public string S_SERIAL_NO { get; set; } = ""; + public string D_PRD_DATE { get; set; } + public string D_EXP_DATE { get; set; } + public string S_NOTE { get; set; } + public double F_QTY { get; set; } + public string S_UOM { get; set; } = "kg"; + public double F_ACC_C_QTY { get; set; } + public double F_ACC_B_QTY { get; set; } + public int N_B_STATE { get; set; } + public string S_BS_NO { get; set; } + public string S_BS_TYPE { get; set; } + //public double F_NET_WEIGHT { get; set; } + //public double F_GROSS_WEIGHT { get; set; } + public string S_SUPPLIER_NO { get; set; } + //public string S_WU { get; set; } + ///// <summary> + ///// 鏉ユ簮鍗曡鍙�+ ///// </summary> + //public string N_BS_ROW_NO { get; set; } + /// <summary> + /// 璐т富 + /// </summary> + public string S_OWNER { get; set; } + /// <summary> + /// ERP浠撳簱 + /// </summary> + public string S_ERP_WH_CODE { get; set; } + + + // 搴撳瓨鍦扮偣 + + public string S_KCDD { get; set; } + + // 妫�獙鎵圭紪鍙�+ + public string S_JYPBH { get; set; } + public string S_KJPZSSRQ { get; set; } + + // 杈撳叆鏃堕棿 + + public DateTime T_SRSJ { get; set; } + + // 浼氳鍑瘉鏃ユ湡 + + public string S_KJPZSRRQ { get; set; } + + // 閲囪喘鍑瘉鍙�+ + public string S_CGPZH { get; set; } + + // 閲囪喘鍑瘉鐨勯」鐩紪鍙�+ + public string S_CGPZXMBH { get; set; } + + // 鍊熸柟/璐锋柟鏍囪瘑 + + public string S_JDBS { get; set; } + + // 鍙傝�鍑瘉鐨勫嚟璇佸彿 + + public string S_CKPZH { get; set; } + + // 鍙傝�鍑瘉浼氳骞村害 + + public string S_CKPZKJND { get; set; } + public string S_KJPZSRSJ { get; set; } + + // 鍙傝�鍑瘉椤圭洰 + + public string S_CKPZXM { get; set; } + + // 鍐查攢鐗╂枡鍑瘉缂栧彿 + + public string S_CXWLPZBH { get; set; } + public string S_CXPZNF { get; set; } + public string S_CXWLPZHXM { get; set; } + public string S_HWSJJYZT { get; set; } + public string S_GYSZHH { get; set; } + + public string S_PH { get; set; } + public string S_TSKCBS { get; set; } + public string S_XSDDXMBH { get; set; } + public string S_DDH { get; set; } + public string S_WBS { get; set; } + public string S_XSDD { get; set; } + + } +} diff --git a/models/TN_GZ_SZ.cs b/models/TN_GZ_SZ.cs new file mode 100644 index 0000000..edb4d48 --- /dev/null +++ b/models/TN_GZ_SZ.cs @@ -0,0 +1,21 @@ +锘縰sing SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HH.WCS.Mobox3.pinggao.models +{ + [SugarTable("TN_GZ_SZ")] + public class TN_GZ_SZ : BaseModel + { + //public string S_CG_ID { get; set; } + /// <summary> + /// 浜у搧搴忓垪鍙�+ /// </summary> + public int N_ENABLE { get; set; } = 0; + public DateTime S_GZRQ { get; set; } + + } +} diff --git a/models/TN_Outbound_Order.cs b/models/TN_Outbound_Order.cs index 84336b0..937571c 100644 --- a/models/TN_Outbound_Order.cs +++ b/models/TN_Outbound_Order.cs @@ -12,6 +12,7 @@ /// 出库单号 /// </summary> public string S_NO { get; set; } + public int N_PRIORITY { get; set; }=0; public string BUDAT { get; set; } public string BLDAT { get; set; } public string UNAME { get; set; } diff --git a/wms/WCSHelper.cs b/wms/WCSHelper.cs index 3a7a53c..10e8b05 100644 --- a/wms/WCSHelper.cs +++ b/wms/WCSHelper.cs @@ -207,7 +207,7 @@ } internal static List<WCSTask> GetWaitingTaskList() { var db = new SqlHelper<object>().GetInstance(); - return db.Queryable<WCSTask>().Where(a => a.N_B_STATE == 0).ToList(); + return db.Queryable<WCSTask>().Where(a => a.N_B_STATE == 0).OrderByDescending(s=>s.N_PRIORITY).ToList(); } //鍓嶇Щ杞︽墽琛屼腑浠诲姟 internal static List<WCSTask> GetWaitingTaskGoList() -- Gitblit v1.9.1