From 50cdef950cce005f8eda95dd8fd23c3092d1b433 Mon Sep 17 00:00:00 2001 From: lss <2538410689@qq.com> Date: 星期二, 22 七月 2025 15:14:08 +0800 Subject: [PATCH] 大车间 --- HH.WCS.Mobox3 - 大车间/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs | 335 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 331 insertions(+), 4 deletions(-) diff --git "a/HH.WCS.Mobox3 - \345\244\247\350\275\246\351\227\264/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs" "b/HH.WCS.Mobox3 - \345\244\247\350\275\246\351\227\264/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs" index a36c9f6..5acf75e 100644 --- "a/HH.WCS.Mobox3 - \345\244\247\350\275\246\351\227\264/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs" +++ "b/HH.WCS.Mobox3 - \345\244\247\350\275\246\351\227\264/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs" @@ -39,13 +39,324 @@ public static object _lockCreateTask = new object(); - - - - + /// <summary> + /// 绔嬪簱浠诲姟涓嬪彂=銆嬪垱寤轰换鍔�+ /// </summary> + /// <param name="model"></param> + /// <returns></returns> + internal static Result Createtask(CreateTask model) + { + + Result result = new Result() { code = "0", msg = "鍒涘缓鎴愬姛" }; + if (model == null) + { + LogHelper.Info($"Createtask==> 鍙傛暟涓簄ull"); + result.code = "1"; + result.msg = "鍙傛暟涓簄ull鍊硷紝璇锋鏌ュ弬鏁版牸寮�; + AddErrorInfo("涓嬪彂鍙傛暟涓簄ull", result.msg); + return result; + } + partData partData = model.partData; + taskData taskData = model.taskData; + + try + { + var db = new SqlHelper<object>().GetInstance(); + string CntrCode = "";//鎵樼洏缂栫爜 + string ItemCode = "";//鐗╂枡缂栫爜 + if (partData != null) + { + CntrCode = partData.rfid;//鎵樼洏缂栫爜 + ItemCode = partData.partNumber;//鐗╂枡缂栫爜 + } + string Start = ""; //鍙栬揣鐐�+ string End = ""; + string note = ""; //绔嬪簱涓嬪彂浠诲姟闇�閫氱煡mes鎺ュ彛鐗╂枡鍒颁綅锛岀敤澶囨敞鑷姩杩涜鍖哄垎 + //鏍规嵁鐗╂枡鑾峰彇瀵瑰簲搴撳尯 + #region 鏍规嵁浠诲姟鏉ユ簮瀛楁鍒ゆ柇搴撳尯鏉ユ簮鏉ユ簮 + //var iteminfo = db.Queryable<TN_Material>().Where(a => a.S_ITEM_CODE.Trim() == ItemCode).First(); + //if (iteminfo != null) + //{ + // //LogHelper.Info($"Createtask==>鐗╂枡鏁版嵁:{JsonConvert.SerializeObject(iteminfo)}"); + // areacode = iteminfo.S_WH_CODE; + //} + + //if (string.IsNullOrEmpty(areacode)) + //{ + // LogHelper.Info($"Createtask==>鏍规嵁鐗╂枡缂栫爜:{ItemCode}鏈兘鎵惧埌鐗╂枡鏉ユ簮锛岄渶鍚屾鐗╂枡鏁版嵁"); + // result.code = "1"; + // result.msg = $"鏍规嵁鐗╂枡缂栫爜:{ItemCode}鏈兘鎵惧埌鐗╂枡鏉ユ簮锛岄渶鍚屾鐗╂枡鏁版嵁"; + // AddErrorInfo("瀵绘壘鍑哄簱鍖哄け璐�, result.msg); + // return result; + //} + + int n_type = 0; //浠诲姟鏉ユ簮 1.瀵嗙偧绔嬪簱 3.棰勫搴�,4.鍘熸潗鏂欏簱 + string Source = ""; + switch (taskData.source) + { + case "ML": + n_type = 1; + Source = "瀵嗙偧"; + break; + case "YBK": + n_type = 2; + Source = "棰勫搴�; + break; + + } + Console.WriteLine($"Createtask==>浠诲姟鏉ユ簮:{n_type}"); + if (n_type == 0) + { + result.code = "1"; + result.msg = $"浠诲姟鏉ユ簮:{taskData.source}灞炰簬鏈畾涔夊簱鍖猴紝璇锋鏌ョ墿鏂欐潵婧愭槸鍚﹀睘浜庣害瀹氬瓧娈�; + AddErrorInfo("浠诲姟鏉ユ簮鏈畾涔�, result.msg); + return result; + } + + + #endregion + + Location endloc = null; + Location startloc = null; + lock (_lockCreateTask) + { + if (taskData.taskType == 1) //鍑哄簱娴佺▼锛岄�杩囩墿鏂欐満鍙拌绠楃嚎杈硅揣浣�+ { + note = "鍑哄簱"; + startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First(); + if (startloc != null) + { + //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅 + Start = taskData.pickStation; + if (CreateCntrIteminfo(partData, taskData)) + { + endloc = Computeloc(CntrCode, taskData.dropStation, taskData.carrierType); + if (endloc != null) + { + End = endloc.S_CODE; + } + else + { + result.code = "1"; + result.msg = $"鏈哄彴缂栫爜:{taskData.dropStation}锛屾湭鎵惧埌鍙敤璐т綅"; + AddErrorInfo("瀵绘壘鍑哄簱璐т綅澶辫触", result.msg, Source); + return result; + } + + //endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First(); + //if (endloc != null) + //{ + // End = taskData.dropStation; + //} + //else + //{ + // result.code = "1"; + // result.msg = $"鏍规嵁缁堢偣{End},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃"; + // AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source); + // return result; + //} + } + else + { + result.code = "1"; + result.msg = "鍒涘缓鎵樼洏鐗╂枡淇℃伅澶辫触"; + AddErrorInfo("鍒涘缓鎵樼洏澶辫触", result.msg, Source); + return result; + } + + + } + else + { + + result.code = "1"; + result.msg = $"Putin==> 浠诲姟璧风偣:{taskData.pickStation}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃"; + LogHelper.Info($"Putin==> {result.msg}"); + AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source); + return result; + } + } + else if (taskData.taskType == 2)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛岃捣鐐归渶瑕佹湁鎵樼洏 + { + note = "鍏ュ簱"; + startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First(); + if (startloc != null) + { + Start = startloc.S_CODE; + var CntrRel = LocationHelper.GetLocCntrRel(startloc.S_CODE).OrderBy(a => a.T_CREATE).FirstOrDefault(); + if (CntrRel != null) + { + if (CntrRel.S_CNTR_CODE != partData.rfid) + { + result.code = "1"; + result.msg = $"鏍规嵁璧风偣锛歿Start}鑾峰彇鎵樼洏:{CntrRel.S_CNTR_CODE}涓庝笅鍙戞墭鐩橈細{partData.rfid}涓嶄竴鑷达紝璇锋鏌ユ墭鐩樼爜鏄惁姝g‘"; + AddErrorInfo("鎵樼洏鐮佹牎妫�け璐�, result.msg, Source); + return result; + } + else + { + CntrCode = CntrRel.S_CNTR_CODE; + } + + } + + } + else + { + result.code = "1"; + result.msg = $"鏍规嵁璧风偣{taskData.pickStation},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃"; + AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source); + return result; + } + + endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First(); + if (endloc != null) + { + End = taskData.dropStation; + } + else + { + result.code = "1"; + result.msg = $"鏍规嵁缁堢偣{End},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃"; + AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source); + return result; + } + } + else if (taskData.taskType == 3)//绉诲簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛�+ { + note = "鍑哄簱"; + //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅 + startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First(); + if (startloc != null) + { + Start = taskData.pickStation; + } + else + { + result.code = "1"; + result.msg = $"鏍规嵁璧风偣{taskData.pickStation},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃"; + AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source); + return result; + } + endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First(); + if (endloc != null) + { + End = taskData.dropStation; + } + else + { + result.code = "1"; + result.msg = $"鏍规嵁缁堢偣{taskData.dropStation},鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃"; + AddErrorInfo("璐т綅鏌ユ壘澶辫触", result.msg, Source); + return result; + } + } + + else + { + LogHelper.Info($"Createtask==> 浠诲姟绫诲瀷鏈夎"); + result.code = "1"; + result.msg = "浠诲姟绫诲瀷锛歿taskData.taskType}涓嶅湪瑙勫畾鑼冨洿鍐�; + AddErrorInfo("浠诲姟绫诲瀷閿欒", result.msg, Source); + } + + if (!string.IsNullOrEmpty(Start) && !string.IsNullOrEmpty(End)) + { + if (startloc.N_LOCK_STATE != 0) + { + result.code = "1"; + result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣"; + AddErrorInfo("璐т綅鏈夐攣", result.msg); + return result; + } + var startArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == startloc.S_AREA_CODE.Trim()).First(); + var endArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == endloc.S_AREA_CODE.Trim()).First(); + if (startArea == null || endArea == null) + { + LogHelper.Info($"璧风偣锛歿JsonConvert.SerializeObject(startArea)}"); + LogHelper.Info($"缁堢偣锛歿JsonConvert.SerializeObject(endArea)}"); + result.code = "1"; + result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐�{startloc.S_AREA_CODE},缁堢偣{endloc.S_AREA_CODE}鏈壘鍒板搴斿簱鍖�; + AddErrorInfo("搴撳尯鏌ユ壘澶辫触", result.msg); + return result; + } + int pri = 1; + var area = Settings.wareLoc.Where(a => a.AreaCode == endloc.S_WH_CODE).First(); + if (area != null) + { + if (area.XbAreaCodes.Contains(endloc.S_AREA_CODE)) + { + pri = 2; + } + } + //鍒涘缓wcs浠诲姟 + var wcsTask = new WCSTask + { + S_CODE = WCSHelper.GenerateTaskNo(), + S_TYPE = startArea.S_NAME + "->" + endArea.S_NAME, + S_EQ_NO = taskData.taskNum, + S_START_LOC = Start, + S_END_LOC = End, + N_CNTR_COUNT = 1, + S_START_WH = startloc.S_WH_CODE, + S_END_WH = endloc.S_WH_CODE, + S_END_AREA = endloc.S_AREA_CODE, + N_SCHEDULE_TYPE = 1, + S_CNTR_CODE = CntrCode, + N_PRIORITY = pri, + Z_TYPE = n_type, + N_START_LAYER = 1, + N_END_LAYER = 1, + S_WMS_NO = taskData.wmsTaskNo, + S_NOTE = note, + S_MES_NO = taskData.mesTaskNo + + }; + LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask"); + if (WCSHelper.CreateTask(wcsTask)) + { + // LocationHelper.LockLoc(Start, 2); + //LocationHelper.LockLoc(End, 1); + LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + } + else + { + result.code = "1"; + result.msg = $"浠诲姟鍒涘缓澶辫触"; + AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); + return result; + } + } + else + { + result.code = "1"; + result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣"; + return result; + } + + } + + + return result; + } + catch (Exception ex) + { + + result.code = "1"; + result.msg = ex.ToString(); + LogHelper.Error("Createtask Error锛� + ex.ToString() + "琛屽彿:" + ex.StackTrace, ex); + return result; + } + + + } + + + + public static object _Point = new object(); /// <summary> @@ -394,7 +705,23 @@ #endregion #region 鍚堣偉浣抽�涓氬姟鏂规硶 + /// <summary> + /// 绔嬪簱浠诲姟涓嬪彂鍒涘缓鎵樼洏鐗╂枡缁戝畾鍏崇郴 + /// </summary> + internal static bool CreateCntrIteminfo(partData partData, taskData taskData) + { + if (partData == null && taskData == null) + { + LogHelper.Info($"CreateCntrIteminfo==> 绔嬪簱浠诲姟涓嬪彂鍙傛暟鏈夌┖锛屽垱寤虹墿鏂欐墭鐩樼粦瀹氬叧绯诲け璐�); + return false; + } + else + { + return ContainerHelper.CreateCntrItem(taskData.pickStation, partData.rfid, partData.partNumber, partData.partDesc, partData.partType, taskData.carrierType, partData.lotNumber, taskData.wmsLot, partData.weight, partData.unit, + taskData.tyreType, taskData.supplier, taskData.receiveLot, taskData.subpool, partData.productionTime, partData.maturityTime, taskData.level, partData.qty, partData.qtyCfg); + } + } /// <summary> /// 鎵樼洏鍏ュ簱绠楁硶 -- Gitblit v1.9.1