From 27e00e4c0d354727728ac4b8770b1575b5077399 Mon Sep 17 00:00:00 2001 From: 海波 张 <2956280567@qq.com> Date: 星期一, 14 七月 2025 17:30:59 +0800 Subject: [PATCH] 出库修改 --- process/TaskProcess.cs | 1461 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 1,145 insertions(+), 316 deletions(-) diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs index a9a515f..c39b185 100644 --- a/process/TaskProcess.cs +++ b/process/TaskProcess.cs @@ -33,6 +33,7 @@ using Container = HH.WCS.ZhongCeJinTan.wms.Container; using static HH.WCS.ZhongCeJinTan.wms.WcsModel; using Top.Api; +using HH.WCS.ZhongCeJinTan; namespace HH.WCS.ZhongCeJinTan.process { @@ -59,7 +60,7 @@ else { Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}"); - LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岃捣鐐硅В缁戝鍣▄mst.S_CNTR_CODE}"); + LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}"); LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList()); } @@ -114,29 +115,67 @@ LogHelper.Info($"娌℃壘鍒颁换鍔no}锛屼氦浜掕姹傚け璐�, "瀹夊叏浜や簰"); } } - else if (state == 1105) + else if (state == 1003) { - //鍒ゆ柇鎺ラ┏浣嶅拰宸烽亾鏄惁鍙敤 涓嶅彲鐢ㄩ渶瑕佹敼閬�- changeBit(mst); + var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE); + + if (workFlow == null) + { + LogHelper.Info($"鍒ゆ柇鎺ラ┏浣嶄互鍙婂贩閬撴槸鍚﹀彲鐢紝BUSI_TYpe:{mst.N_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�, "鏀归亾瀹夊叏浜や簰"); + return; + } + + var wcsTask = TaskHelper.GetTaskByWorkNo(mst.S_OP_CODE,"wcs"); + if (wcsTask == null) + { + LogHelper.Info($"鍒ゆ柇宸烽亾鍙敤澶辫触锛屾病鎵惧埌瀵瑰簲{mst.S_OP_CODE}鐨剋cs浠诲姟", "鏀归亾瀹夊叏浜や簰"); + return; + } + //鍒ゆ柇绌烘墭缂撳瓨銆佹帴椹充綅鍜屽贩閬撴槸鍚﹀彲鐢�涓嶅彲鐢ㄩ渶瑕佹敼閬�+ changeBit(mst,wcsTask,workFlow); } else if (state == 1023 || state == 1025) { //寮�叧鍏抽棬鐢宠 DeviceProcess.Door(mst, forkliftNo, state); } - else if (state == 1013) { - LogHelper.Info($"绛夊緟浜や簰锛屼换鍔″彿={mst.S_CODE}锛屽嵏璐т氦绠℃垚鍔燂紝淇敼鍙傛暟", "瀹夊叏浜や簰"); + else if (state == 1004) { + LogHelper.Info($"绛夊緟浜や簰锛屼换鍔″彿={mst.S_CODE}", "瀹夊叏浜や簰"); + var wcsCode = ""; + + if (mst.S_TYPE.Contains("鍏ュ簱")|| mst.S_TYPE.Contains("鍥炲簱")) + { + wcsCode = mst.S_CODE.Replace(@"_1", "_2"); + } + + if (mst.S_TYPE.Contains("鍑哄簱")) + { + wcsCode = mst.S_CODE.Replace(@"_2", "_1"); + } + + LogHelper.Info($"绛夊緟浜や簰锛屾煡璇㈡牎楠屼换鍔″彿={wcsCode}", "瀹夊叏浜や簰"); //绛夊緟rfid鏍¢獙 - var rfidFlag = TaskHelper.GetRfid(mst.S_CODE); + var rfidFlag = TaskHelper.GetRfid(wcsCode); LogHelper.Info($"绛夊緟浜や簰锛屼换鍔″彿={mst.S_CODE}锛孯FID鏍¢獙淇℃伅"+JsonConvert.SerializeObject(rfidFlag), "瀹夊叏浜や簰"); if (rfidFlag!=null) { if (rfidFlag.S_RESULT.Contains("鎴愬姛")) { - LogHelper.Info($"浠诲姟鍙�{mst.S_CODE}锛岀瓑寰呬氦绠℃垚鍔燂紝淇敼鍙傛暟", "瀹夊叏浜や簰"); + LogHelper.Info($"浠诲姟鍙�{mst.S_CODE}锛岀瓑寰呬氦绠℃垚鍔燂紝淇敼鍙傛暟6涓�,4涓�", "瀹夊叏浜や簰"); + NDCApi.ChangeOrderParam(mst.S_CODE, 4, "0"); NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1"); + } + else { + var startSite = LocationHelper.GetAgvSiteZc(mst.S_START_LOC); + var endSite = LocationHelper.GetAgvSiteZc(mst.S_END_LOC); + LogHelper.Info($"浠诲姟{mst.S_CODE}RFID鏍¢獙澶辫触锛屾敼鍙傛暟1涓簕startSite},鏀瑰弬鏁�涓簕endSite}锛屽弬鏁�涓�锛�涓�", "瀹夊叏浜や簰"); + NDCApi.ChangeOrderParam(mst.S_CODE, 1, startSite); + NDCApi.ChangeOrderParam(mst.S_CODE, 2, endSite); + NDCApi.ChangeOrderParam(mst.S_CODE, 4, "0"); + Thread.Sleep(1000); + NDCApi.ChangeOrderParam(mst.S_CODE, 6, "2"); } } } @@ -165,13 +204,16 @@ /// <param name="state"></param> internal static void OperateStatus(WMSTask mst, int state) { - if (state == 4) + if (state == 4)//鍙栬揣瀹屾垚 { CacheBitUpdate(mst, true); } if (state == 6)//鍗歌揣瀹屾垚 { - CacheBitUpdate(mst, false); + //閫�簱浠诲姟涓嶇粦瀹�+ if (!LocationHelper.GetErroArea(mst.S_END_AREA)) { + CacheBitUpdate(mst, false); + } } if (state == 7) { @@ -187,38 +229,21 @@ private static object locLocker = new object(); - internal static void changeBit(WMSTask task) { + internal static void changeBit(WMSTask task, WMSTask wcsTask, WorkFlow workFlow) { var db = new SqlHelper<object>().GetInstance(); try { - var workFlow = TaskHelper.selectWorkFlowByType(task.N_TYPE.ToString(), task.TOOLSTYPE); - - if (workFlow == null) - { - LogHelper.Info($"鍒ゆ柇鎺ラ┏浣嶄互鍙婂贩閬撴槸鍚﹀彲鐢紝BUSI_TYpe:{task.N_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�, "鏀归亾瀹夊叏浜や簰"); - throw new Exception($"鍒ゆ柇鎺ラ┏浣嶄互鍙婂贩閬撴槸鍚﹀彲鐢紝BUSI_TYpe:{task.N_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�); - } - - var wcsTask = db.Queryable<WMSTask>().Where(e => e.S_CODE == task.S_OP_CODE + "_2")?.First(); - if (wcsTask == null) - { - LogHelper.Info($"鍒ゆ柇宸烽亾鍙敤澶辫触锛屾病鎵惧埌瀵瑰簲{task.S_OP_CODE + "_2"}浠诲姟", "鏀归亾瀹夊叏浜や簰"); - throw new Exception($"鍒ゆ柇宸烽亾鍙敤澶辫触,娌℃壘鍒板搴攞task.S_OP_CODE + "_2"}浠诲姟"); - } - - //鍒ゆ柇鎺ラ┏浣嶅彲鐢�- var flag = true; + + //绌烘墭鍏ュ簱鍒ゆ柇绌烘墭鍑虹紦瀛樿〃锛屾湁瀵瑰簲璁板綍鐩存帴鏀归亾鍒扮紦瀛樿〃缁堢偣 if (workFlow.FLOWCODE=="3") { - var kt = db.Queryable<MesKtTask>().Where(e => e.TOOLS_TPYE==task.TOOLSTYPE && e.Status=="N").First(); + var kt = db.Queryable<MesKtTask>().Where(e => e.TOOLS_TPYE==task.TOOLSTYPE && e.Status=="N").OrderBy(a=>a.CreateDate).First(); if (kt == null) { - LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}娌℃壘鍒扮┖鎵樺嚭缂撳瓨璁板綍锛屼笉闇�鏀归亾锛岀洿鎺ヤ慨鏀瑰弬鏁�涓�", "鏀归亾瀹夊叏浜や簰"); - NDCApi.ChangeOrderParam(task.S_CODE, 6, "1"); - return; + LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}娌℃壘鍒扮┖鎵樺嚭缂撳瓨璁板綍", "鏀归亾瀹夊叏浜や簰"); } else { @@ -226,49 +251,74 @@ //鏌ユ壘缁欏畾缁堢偣 var end = LocationHelper.GetLoc(kt.Location_To); - //LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鏀归亾缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "鏀归亾瀹夊叏浜や簰"); - //if (end == null || end.S_LOCK_STATE != "鏃�) - //{ - // LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鏀归亾缁堢偣澶辫触锛岀粓鐐�{kt.Location_To},娌℃壘鍒版垨鏈夐攣", "鏀归亾瀹夊叏浜や簰"); - //} - - LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1); - var endLoc = LocationHelper.GetLocOne(task.S_END_LOC); - endLoc.N_LOCK_STATE = 0; - endLoc.S_LOCK_STATE = "鏃�; - db.BeginTran(); - db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand(); - //鏀逛竴娈典换鍔$粓鐐�- task.S_END_LOC = end.S_CODE; - db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand(); - kt.Status = "Y"; - db.Updateable(kt).UpdateColumns(it => new { it.Status }).ExecuteCommand(); - db.CommitTran(); + if (end.S_LOCK_STATE=="鏃� && end.N_CURRENT_NUM==0) + { + //LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鏀归亾缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "鏀归亾瀹夊叏浜や簰"); + //if (end == null || end.S_LOCK_STATE != "鏃�) + //{ + // LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鏀归亾缁堢偣澶辫触锛岀粓鐐�{kt.Location_To},娌℃壘鍒版垨鏈夐攣", "鏀归亾瀹夊叏浜や簰"); + //} + TaskHelper.Fail(wcsTask); + TaskProcess.OperateStatus(wcsTask, 7); + LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1); + db.BeginTran(); + //鏀逛竴娈典换鍔$粓鐐�+ task.S_END_LOC = end.S_CODE; + task.S_END_AREA = end.S_AREA_CODE; + task.S_END_AREA_NAME = end.S_AREA_Name; - WcsTask.WcsCancellTask(wcsTask); - var site = LocationHelper.GetAgvSiteZc(end.S_CODE); - LogHelper.Info($"浠诲姟{task.S_CODE}鏀归亾鎴愬姛锛屾敼鍙傛暟2涓簕site},鍙傛暟6涓�", "鏀归亾瀹夊叏浜や簰"); - NDCApi.ChangeOrderParam(task.S_CODE, 2, site); - NDCApi.ChangeOrderParam(task.S_CODE, 6, "1"); - + db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA ,it.S_END_AREA_NAME}).ExecuteCommand(); + kt.Status = "Y"; + db.Updateable(kt).UpdateColumns(it => new { it.Status }).ExecuteCommand(); + db.CommitTran(); + var site = LocationHelper.GetAgvSiteZc(end.S_CODE); + LogHelper.Info($"浠诲姟{task.S_CODE}鏀归亾鎴愬姛锛屾敼鍙傛暟2涓簕site},鍙傛暟6涓�锛�涓�", "鏀归亾瀹夊叏浜や簰"); + NDCApi.ChangeOrderParam(task.S_CODE, 2, site); + NDCApi.ChangeOrderParam(task.S_CODE, 4, "0"); + Thread.Sleep(1000); + NDCApi.ChangeOrderParam(task.S_CODE, 6, "2"); + return; + } + } - } + + //鍒ゆ柇宸烽亾鍙敤 + var flag = true; + + //鍒ゆ柇鎺ラ┏浣嶅彲鐢�+ var flag1 = true; if (workFlow.FLOWNAME.Contains("鍏ュ簱")) { + + List<Location> balanceConnectionList = new List<Location>(); + + var loc1 = LocationHelper.GetLocOne(wcsTask.S_END_LOC); + //鍒ゆ柇鍙敤宸烽亾 + var rowdwa = db.Queryable<RoadWayEnable>().Where(x => x.areaCode == wcsTask.S_END_AREA && x.status == "0" && x.roadWay == loc1.N_ROADWAY.ToString()).First(); + if (rowdwa == null) + { + LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鍒ゆ柇宸烽亾鍙敤,褰撳墠搴撳尯{wcsTask.S_END_AREA}褰撳墠宸烽亾{loc1.N_ROADWAY}鍙敤", "鏀归亾瀹夊叏浜や簰"); + flag = false; + } + + //鍒ゆ柇鍙敤鎺ラ┏浣� var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION); var usableConnectionList = WcsTask.WcsPositionAvailable(task.S_CODE, connectionList); + + if (usableConnectionList != null && usableConnectionList.code == "0") { - foreach (var item in usableConnectionList.available) + balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available); + + foreach (var item in balanceConnectionList) { - var con = LocationHelper.GetLoc(item); - if (con.S_CODE.Contains(task.S_END_LOC)) + if (item.S_CODE.Contains(task.S_END_LOC)) { - flag = false; - LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣峽con.S_CODE}鍙敤锛屼笉闇�鏀归亾锛岀洿鎺ヤ慨鏀瑰弬鏁�涓�", "鏀归亾瀹夊叏浜や簰"); - NDCApi.ChangeOrderParam(task.S_CODE, 6, "1"); + + flag1 = false; + LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣峽item.S_CODE}鍙敤", "鏀归亾瀹夊叏浜や簰"); break; } } @@ -278,51 +328,111 @@ LogHelper.Info($"鍒ゆ柇鎺ラ┏浣嶆槸鍚﹀彲鐢ㄦ帴鍙e洖澶嶅紓甯�, "鏀归亾瀹夊叏浜や簰"); throw new Exception($"鍒ゆ柇鎺ラ┏浣嶆槸鍚﹀彲鐢ㄦ帴鍙e洖澶嶅紓甯�); } - if (flag) + + + + if (flag || flag1) { - LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣嶄笉鍙敤锛岄渶瑕佹敼閬�, "鏀归亾瀹夊叏浜や簰"); - var connection = ""; - foreach (var item in usableConnectionList.available) + LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣峽task.S_END_LOC}鎴栬�褰撳墠搴撳尯{wcsTask.S_END_AREA}褰撳墠宸烽亾{loc1.N_ROADWAY}涓嶅彲鐢紝闇�鏀归亾", "鏀归亾瀹夊叏浜や簰"); + Location connection = null; + + + Location end = null; + + //绔嬪簱鍧囪 鍚庤揣浣嶉泦鍚�+ List<Location> balanceLocList = new List<Location>(); + + var endLoc = LocationHelper.GetLocOne(wcsTask.S_END_LOC); + List<Location> endList; + if (!string.IsNullOrEmpty(workFlow.ZONECODE)) { - var con = LocationHelper.GetLoc(item); - if (con.S_LOCK_STATE == "鏃� && con.N_CURRENT_NUM < 2) + endList = LocationHelper.GetZoneLoc(workFlow.ZONECODE); + } + else + { + endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA); + } + + + balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); + + balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available); + + foreach (var item in balanceLocList) + { + if (item.S_LOCK_STATE == "鏃� && item.N_CURRENT_NUM == 0) { - connection = con.S_CODE; - LogHelper.Info($"鏀归亾瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "鏀归亾瀹夊叏浜や簰"); - break; + //LogHelper.Info($"鏀归亾瀹夊叏浜や簰item淇℃伅" + JsonConvert.SerializeObject(item), "鏀归亾瀹夊叏浜や簰"); + foreach (var item1 in balanceConnectionList) + { + if (item1.CONNEC_ROADWAY == item.N_ROADWAY) + { + connection = item1; + + end = item; + LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "鏀归亾瀹夊叏浜や簰"); + break; + } + } + if (end != null) + { + LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}瀵绘壘鍒扮粓鐐箋end.S_CODE}", "鏀归亾瀹夊叏浜や簰"); + break; + } } } - if (connection == "") + + + if (connection == null) { throw new Exception($"鏀归亾瀵绘壘涓嶅埌鍙敤鎺ラ┏浣�); } - var loc = LocationHelper.GetLocOne(connection); - - if (workFlow.FLOWNAME.Contains("鍏ュ簱")) + LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}锛屽綋鍓嶅贩閬撲笉鍙敤锛岄渶瑕佹敼閬擄紝鏂扮粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "鏀归亾瀹夊叏浜や簰"); + if (end == null) { - LocationHelper.LockLoc(loc.S_CODE, "鍏ュ簱閿�, 1); - var endLoc = LocationHelper.GetLocOne(task.S_END_LOC); - endLoc.N_LOCK_STATE = 0; - endLoc.S_LOCK_STATE = "鏃�; - db.BeginTran(); - db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand(); - //鏀逛竴娈典换鍔$粓鐐�- task.S_END_LOC = loc.S_CODE; - db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand(); - - //鏀逛簩娈典换鍔¤捣鐐�- wcsTask.S_START_LOC = loc.S_CODE; - db.Updateable(wcsTask).UpdateColumns(it => new { it.S_START_LOC }).ExecuteCommand(); - db.CommitTran(); - - var site = LocationHelper.GetAgvSiteZc(loc.S_CODE); - LogHelper.Info($"浠诲姟{task.S_CODE}鏀归亾鎴愬姛锛屾敼鍙傛暟2涓簕site},鍙傛暟6涓�", "鏀归亾瀹夊叏浜や簰"); - NDCApi.ChangeOrderParam(task.S_CODE, 2, site); - NDCApi.ChangeOrderParam(task.S_CODE, 6, "1"); - + LogHelper.Info($"褰撳墠宸烽亾涓嶅彲鐢紝缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "鏀归亾瀹夊叏浜や簰"); + throw new Exception($"缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�); } + LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1); + db.BeginTran(); + endLoc.N_LOCK_STATE = 0; + endLoc.S_LOCK_STATE = "鏃�; + db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand(); + wcsTask.S_END_LOC = end.S_CODE; + db.Updateable(wcsTask).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand(); + db.CommitTran(); + + LocationHelper.LockLoc(connection.S_CODE, "鍏ュ簱閿�, 1); + var endLoc1 = LocationHelper.GetLocOne(task.S_END_LOC); + endLoc1.N_LOCK_STATE = 0; + endLoc1.S_LOCK_STATE = "鏃�; + db.BeginTran(); + db.Updateable(endLoc1).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand(); + //鏀逛竴娈典换鍔$粓鐐�+ task.S_END_LOC = connection.S_CODE; + task.S_END_AREA = connection.S_AREA_CODE; + + task.S_END_AREA_NAME = connection.S_AREA_Name; + db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA,it.S_END_AREA_NAME }).ExecuteCommand(); + + + //鏀逛簩娈典换鍔¤捣鐐�+ wcsTask.S_START_LOC = connection.S_CODE; + wcsTask.S_START_AREA = connection.S_AREA_CODE; + + wcsTask.S_START_AREA_NAME = connection.S_AREA_Name; + db.Updateable(wcsTask).UpdateColumns(it => new { it.S_START_LOC, it.S_START_AREA,it.S_START_AREA_NAME}).ExecuteCommand(); + db.CommitTran(); + + var site = LocationHelper.GetAgvSiteZc(connection.S_CODE); + LogHelper.Info($"浠诲姟{task.S_CODE}鏀归亾鎴愬姛锛屾敼鍙傛暟2涓簕site},鍙傛暟6涓�,4涓�024", "鏀归亾瀹夊叏浜や簰"); + NDCApi.ChangeOrderParam(task.S_CODE, 2, site); + NDCApi.ChangeOrderParam(task.S_CODE, 4, "1024"); + Thread.Sleep(1000); + NDCApi.ChangeOrderParam(task.S_CODE, 6, "2"); + //} else if (workFlow.FLOWNAME.Contains("鍑哄簱")) { // var endLoc = LocationHelper.GetLocOne(task.S_START_LOC); // endLoc.N_LOCK_STATE = 3; @@ -334,6 +444,12 @@ // db.CommitTran(); // LocationHelper.LockLoc(loc.S_CODE, "鍑哄簱閿�, 2); //} + } + else { + LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣峽task.S_END_LOC}鍙敤,褰撳墠搴撳尯{wcsTask.S_END_AREA}褰撳墠宸烽亾{loc1.N_ROADWAY}鍙敤锛屼笉闇�鏀归亾锛岀洿鎺ヤ慨鏀瑰弬鏁�涓�锛�涓�024", "鏀归亾瀹夊叏浜や簰"); + NDCApi.ChangeOrderParam(task.S_CODE, 4, "1024"); + Thread.Sleep(1000); + NDCApi.ChangeOrderParam(task.S_CODE, 6, "2"); } } @@ -404,6 +520,56 @@ LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}", "NDC"); + + if (mst.S_TYPE.Contains("鍑哄簱")) + { + //鏌ユ壘瀵瑰簲浣滀笟锛屾槸鎺ラ┏浣嶅氨鏌ヨ瀵瑰簲绔嬪簱浠诲姟 + + + var wmsWork = TaskHelper.GetWmsWork(mst.S_OP_CODE); + + if (wmsWork==null) + { + LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屾病鎵惧埌浣滀笟:{mst.S_OP_CODE}", "NDC"); + return false; + } + + if (!string.IsNullOrEmpty(wmsWork.CONNECTION)) + { + var wcsTask = TaskHelper.GetTaskByWork("wcs", mst.S_OP_CODE); + if (wcsTask == null) + { + LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屾病鎵惧埌浣滀笟:{mst.S_OP_CODE}瀵瑰簲鐨勫嚭搴撲换鍔�, "NDC"); + return false; + } + + if (wcsTask.S_B_STATE == "鏈墽琛�) + { + LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽搴旂殑Wcs鍑哄簱浠诲姟鏈墽琛岋紝鏆備笉鎺ㄩ�", "NDC"); + return false; + } + + //鎺ラ┏浣嶄袱涓猘gv浠诲姟锛宎浠诲姟鍙栬揣瀹屾垚 鎺ㄩ�b浠诲姟 + var agvTask = LocationHelper.GetConnectionTask(wmsWork.CONNECTION,"agv"); + + LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽綋鍓嶆帴椹充綅{wmsWork.CONNECTION}锛岀涓�釜agv浠诲姟淇℃伅"+JsonConvert.SerializeObject(agvTask), "NDC"); + if (agvTask==null) + { + LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽綋鍓嶆帴椹充綅{wmsWork.CONNECTION}锛宎gv浠诲姟娌℃壘鍒帮紝鏆備笉鎺ㄩ�", "NDC"); + return false; + } + + if (agvTask.S_B_STATE!="鍙栬揣瀹屾垚") + { + LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽綋鍓嶆帴椹充綅{wmsWork.CONNECTION}锛宎gv浠诲姟{agvTask.S_CODE},鐘舵�{agvTask.S_B_STATE}锛屾殏涓嶆帹閫�, "NDC"); + return false; + } + } + + + } + + start = LocationHelper.GetAgvSiteZc(mst.S_START_LOC); end = LocationHelper.GetAgvSiteZc(mst.S_END_LOC); @@ -412,6 +578,35 @@ var ndcParme = new List<param>(); ndcParme.Add(new param() { name = "From", value = start.ToString() }); ndcParme.Add(new param() { name = "To", value = end.ToString() }); + ndcParme.Add(new param() { name = "FUNC", value = "0" }); + + + var work = TaskHelper.GetWmsWork(mst.S_OP_CODE); + if (work==null) + { + LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屾病鎵惧埌浣滀笟:{mst.S_OP_CODE}", "NDC"); + return false; + } + + if (string.IsNullOrEmpty(work.CONNECTION)) + { + ndcParme.Add(new param() { name = "DATA", value = "0" }); + } + else { + if (work.S_TYPE.Contains("鍏ュ簱") || work.S_TYPE.Contains("鍥炲簱")) + { + ndcParme.Add(new param() { name = "DATA", value = "768" }); + } + else { + ndcParme.Add(new param() { name = "DATA", value = "0" }); + } + } + + + + + ndcParme.Add(new param() { name = "Ctype", value = "0" }); + var res = NDCApi.AddOrderNew(1, mst.N_PRIORITY, mst.S_CODE, ndcParme); @@ -458,6 +653,15 @@ } return result; } + + internal static LocationRecordsResult LocationRecords(LocationRecordsParme model) { + var result = new LocationRecordsResult(); + var db = new SqlHelper<object>().GetInstance(); + + return result; + } + + internal static Result MesUdeItem(MesUdeItemParme model) { @@ -584,15 +788,22 @@ var TrayLocation = db.Queryable<LocCntrRel>().Where(e => e.S_CNTR_CODE == model.TOOLS_NO).ToList(); if (TrayLocation.Count() > 0) { - LogHelper.Info("鏌ヨ鍒拌宸ヨ宸茬粡缁戝畾浜嗚揣浣嶄俊鎭�, "鐗╂枡缁戝畾瑙g粦"); - throw new Exception("鏌ヨ鍒拌宸ヨ宸茬粡缁戝畾浜嗚揣浣嶄俊鎭�); + LogHelper.Info("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡璐т綅淇℃伅", "鐗╂枡缁戝畾瑙g粦"); + throw new Exception("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡璐т綅淇℃伅"); } var TrayItems = db.Queryable<CntrItemRel>().Where(e => e.S_CNTR_CODE == model.TOOLS_NO).ToList(); if (TrayItems.Count() > 0) { - LogHelper.Info("鏌ヨ鍒拌宸ヨ宸茬粡缁戝畾浜嗙墿鏂欎俊鎭�, "鐗╂枡缁戝畾瑙g粦"); - throw new Exception("鏌ヨ鍒拌宸ヨ宸茬粡缁戝畾浜嗙墿鏂欎俊鎭�); + LogHelper.Info("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡鐗╂枡淇℃伅", "鐗╂枡缁戝畾瑙g粦"); + throw new Exception("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡鐗╂枡淇℃伅"); } + var Tray = db.Queryable<Container>().Where(e => e.S_CODE == model.TOOLS_NO).ToList(); + if (Tray.Count() > 0) + { + LogHelper.Info("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡瀹瑰櫒淇℃伅", "鐗╂枡缁戝畾瑙g粦"); + throw new Exception("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡瀹瑰櫒淇℃伅"); + } + var Locations = db.Queryable<Location>().Where(e => e.S_CODE == model.LOCATION_CODE)?.First(); if (Locations == null) { @@ -733,14 +944,19 @@ } db.CommitTran(); LogHelper.Info("缁戝畾瑙g粦", "缁撴潫"); + result.errMsg = "瑙g粦瀹屾垚"; + result.errCode = 0; + result.success = true; + return result; } } catch (Exception e) { db.RollbackTran(); LogHelper.Info("鐗╂枡缁戝畾瑙g粦寮傚父:" + e.Message, "鐗╂枡缁戝畾瑙g粦"); - result.errMsg = "鐗╂枡缁戝畾瑙g粦寮傚父"; + result.errMsg = "鐗╂枡缁戝畾瑙g粦寮傚父" + e.Message; result.errCode = 1; + result.success = false; return result; } return result; @@ -763,31 +979,24 @@ try { - var task = TaskHelper.GetTask(model.task_no + "_1"); - var wcsTask = TaskHelper.GetTask(model.task_no + "_2"); - if (task != null && wcsTask != null) + var task = TaskHelper.GetTaskByWorkNo(model.task_no, "agv"); + + var wcsTask = TaskHelper.GetTaskByWorkNo(model.task_no, "wcs"); + + if (task != null) { + LogHelper.Info($"cancelTask1鍙栨秷agv浠诲姟{task.S_CODE}锛�, "鍙栨秷"); if (task.S_B_STATE.Trim() == "鏈墽琛�) { //鏈墽琛岀洿鎺ヤ慨鏀圭姸鎬佷负鍙栨秷 - LogHelper.Info("cancelTask1鍙栨秷agv浠诲姟锛�, "鍙栨秷"); + TaskHelper.opMesTask(task, 3); TaskHelper.Fail(task); TaskProcess.CacheBitCancelUpdate(task); - if (task.S_TYPE.Contains("鍏ュ簱") || task.S_TYPE.Contains("鍥炲簱")) - { - ContainerHelper.delCntr(task.S_CNTR_CODE); - ContainerHelper.delCntrItem(task.S_CNTR_CODE); - } - - - TaskHelper.Fail(wcsTask); - TaskProcess.OperateStatus(wcsTask, 7); result.errCode = 0; result.errMsg = "鍙栨秷鎴愬姛"; result.success = true; - return result; } - else if (task.S_B_STATE.Trim() != "鍙栨秷" && task.S_B_STATE.Trim() != "澶辫触") + else if (task.S_B_STATE.Trim() != "鍙栨秷" && task.S_B_STATE.Trim() != "澶辫触" && task.S_B_STATE.Trim() != "瀹屾垚") { var db = new SqlHelper<object>().GetInstance(); var qhflag = db.Queryable<WmsTaskAction>().Where(a => a.S_TASK_CODE == task.S_CODE && a.S_ACTION == "4").First(); @@ -801,19 +1010,13 @@ result.success = false; return result; } - + TaskHelper.opMesTask(task, 3); //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv TaskHelper.Fail(task); - + NDCApi.CancelOrder(task.S_CODE.Trim()); TaskProcess.CacheBitCancelUpdate(task); - if (task.S_TYPE.Contains("鍏ュ簱") || task.S_TYPE.Contains("鍥炲簱")) - { - ContainerHelper.delCntr(task.S_CNTR_CODE); - ContainerHelper.delCntrItem(task.S_CNTR_CODE); - } - TaskHelper.Fail(wcsTask); - TaskProcess.OperateStatus(wcsTask, 7); + result.errCode = 0; result.errMsg = "鍙栨秷鎴愬姛"; result.success = true; @@ -828,14 +1031,55 @@ else { result.errCode = 1; - result.errMsg = "浠诲姟涓嶅瓨鍦�; + result.errMsg = $"{model.task_no}浠诲姟涓嶅瓨鍦�; result.success = false; + } + + if (wcsTask != null) + { + LogHelper.Info($"cancelTask1鍙栨秷Wcs浠诲姟{wcsTask.S_CODE}", "鍙栨秷"); + if (wcsTask.S_B_STATE.Trim() == "鏈墽琛�) + { + //鏈墽琛岀洿鎺ヤ慨鏀圭姸鎬佷负鍙栨秷 + if (task.S_TYPE.Contains("鍏ュ簱") || task.S_TYPE.Contains("鍥炲簱")) + { + ContainerHelper.delCntr(task.S_CNTR_CODE); + ContainerHelper.delCntrItem(task.S_CNTR_CODE); + } + TaskHelper.Fail(wcsTask); + TaskProcess.OperateStatus(wcsTask, 7); + result.errCode = 0; + result.errMsg = "鍙栨秷鎴愬姛"; + result.success = true; + return result; + } + else if (wcsTask.S_B_STATE.Trim() != "鍙栨秷" && wcsTask.S_B_STATE.Trim() != "澶辫触" && wcsTask.S_B_STATE.Trim() != "瀹屾垚") + { + var db = new SqlHelper<object>().GetInstance(); + var qhflag = db.Queryable<WmsTaskAction>().Where(a => a.S_TASK_CODE == task.S_CODE && a.S_ACTION == "5").First(); + + + if (qhflag != null) + { + LogHelper.Info($"璇ヤ换鍔task.S_CODE}宸茬粡鍙栬揣瀹屾垚", "鍙栨秷"); + result.errCode = 1; + result.errMsg = "浠诲姟宸茬粡鍙栬揣瀹屾垚锛屼笉鍏佽鍙栨秷"; + result.success = false; + return result; + } + WcsTask.WcsCancellTask(wcsTask); + TaskHelper.Fail(wcsTask); + TaskProcess.OperateStatus(wcsTask, 7); + result.errCode = 0; + result.errMsg = "鍙栨秷鎴愬姛"; + result.success = true; + } } } catch (Exception ex) { - LogHelper.Info("cancelTask1鍙栨秷浠诲姟寮傚父锛�+ex.Message, "鍙栨秷"); + LogHelper.Info("cancelTask1鍙栨秷浠诲姟寮傚父锛� + ex.Message, "鍙栨秷"); result.errCode = 1; result.errMsg = "鍙栨秷浠诲姟寮傚父"; return result; @@ -1057,7 +1301,7 @@ result.success = false; return result; } - var endTask = TaskHelper.GetTaskByStartLoc(zd); + var endTask = TaskHelper.GetTaskByEndLoc(zd); if (endTask != null) { result.errMsg = "缁堢偣鏈夋墽琛屼腑浠诲姟"; @@ -1143,7 +1387,262 @@ } - + + /// <summary> + /// 娣诲姞mes浠诲姟 + /// </summary> + internal static Result addMesTaskInWorkArea(InWorkAreaParme model) + { + var result = new Result(); + var TOOLSTYPE = ""; + try + { + if (string.IsNullOrEmpty(model.BUSI_TYPE.ToString())) + { + LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁癇USI_TYPE銆�, "Mes浠诲姟涓嬪彂"); + throw new Exception("缂哄皯鍙傛暟BUSI_TYPE"); + } + if (string.IsNullOrEmpty(model.PROD_NO)) + { + LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁癙ROD_NO銆�, "Mes浠诲姟涓嬪彂"); + throw new Exception("缂哄皯鍙傛暟PROD_NO"); + } + if (string.IsNullOrEmpty(model.Location_To)) + { + LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀粓鐐逛负绌恒�", "Mes浠诲姟涓嬪彂"); + throw new Exception("缂哄皯缁堢偣Location_To"); + } + if (string.IsNullOrEmpty(model.CHECK_INFO)) + { + LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁癈HECK_INFO銆�, "Mes浠诲姟涓嬪彂"); + throw new Exception("缂哄皯鍙傛暟CHECK_INFO"); + } + if (string.IsNullOrEmpty(model.task_no)) + { + LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁皌ask_no銆�, "Mes浠诲姟涓嬪彂"); + throw new Exception("缂哄皯鍙傛暟task_no"); + } + + if (model.Task_type==2) + { + //鍛煎彨鑳舵枡鍑哄簱 + + + + var workFlow = TaskHelper.selectWorkFlowByType(model.BUSI_TYPE); + + + + + if (workFlow == null) + { + LogHelper.Info($"InWorkArea浠诲姟涓嬪彂澶辫触锛孊USI_TYpe:{model.BUSI_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"BUSI_TYpe:{model.BUSI_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�); + } + else + { + LogHelper.Info($"浣滀笟娴佺▼淇℃伅" + JsonConvert.SerializeObject(workFlow), "Mes浠诲姟涓嬪彂"); + } + + //鍑哄簱浠诲姟 + + //鎺ラ┏浣�+ var connection = ""; + + //鎺ラ┏浣嶅簱鍖�+ var connectionArea = ""; + + + //鏌ユ壘缁欏畾缁堢偣 + var end = LocationHelper.GetLoc(model.Location_To); + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂"); + + + if (end == null) + { + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To},娌℃壘鍒�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"缁堢偣:{model.Location_To},娌℃壘鍒�); + } + + + var unlimitedLocation = TaskHelper.GetMesKtLoc(); + + //鏍囪缁堢偣璐т綅鏄惁鍙互鏃犻檺鍒朵笅浠诲姟 + var endLocFlag = true; + + foreach (var item in unlimitedLocation) + { + //鍑哄簱缁堢偣璐т綅鍦ㄩ厤缃噷 鍙互鏃犻檺鍒朵笅浠诲姟 + if (item.Loc.Contains(model.Location_To)) + { + endLocFlag = false; + break; + } + } + + if (endLocFlag) + { + var endTask = TaskHelper.GetTaskByEndLoc(model.Location_To); + if (endTask != null) + { + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To}鏈変换鍔℃墽琛屼腑锛屼换鍔″彿:{endTask.S_CODE}", "Mes浠诲姟涓嬪彂"); + throw new Exception($"缁堢偣:{model.Location_To}鏈変换鍔℃墽琛屼腑锛屼换鍔″彿:{endTask.S_CODE}"); + } + } + + + + //鏌ユ壘璧风偣 + List<Location> strrtList; + + Location start = null; + + + if (!string.IsNullOrEmpty(workFlow.ZONECODE)) + { + strrtList = LocationHelper.GetZoneLoc(workFlow.ZONECODE); + } + else + { + strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA); + } + + + + if (workFlow.FLOWCODE == "9") + { + //鏍规嵁鍒跺搧缂栧彿瀵绘壘绔嬪簱鍖哄搴旂墿鏂欐墭鐩�+ start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY, workFlow.CONNECTION); + if (start == null) + { + strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA); + var itemFlag = LocationHelper.FindStartcolByLoclistAndItemFlag(strrtList, model.PROD_NO, workFlow.STARTAREA); + LogHelper.Info($"InWorkArea婊℃墭鍑哄簱浠诲姟娌℃壘鍒拌捣鐐癸紝鏍¢獙鏄惁鏈夊簱瀛樹絾鏄澶囨姤璀itemFlag}", "Mes浠诲姟涓嬪彂"); + if (itemFlag) + { + result.errMsg = "婊℃墭鍑哄簱浣滀笟鏈夊簱瀛樹絾璁惧鎶ヨ"; + result.errCode = 2001; + result.success = true; + return result; + } + } + + + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂"); + + if (start == null) + { + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂澶辫触锛岃捣鐐瑰簱鍖簕workFlow.STARTAREA},娌℃壘鍒拌捣鐐�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"璧风偣搴撳尯{workFlow.STARTAREA},娌℃壘鍒拌捣鐐�); + } + + + + + //鑾峰彇鎵樼洏鐮�+ var cntrCode = LocationHelper.GetLocCntrCode(start.S_CODE); + + if (workFlow.SENDWCS == "Y") + { + + //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅 + var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION); + + //鏍规嵁鎺ラ┏浣嶄换鍔℃暟閲忚幏鍙栧潎琛℃帴椹充綅闆嗗悎浼樺厛浠诲姟鏁板皯鐨勬帴椹充綅 + var balanceConnectionList = LocationHelper.GetBalanceConnectionList(connectionList); + foreach (var item in balanceConnectionList) + { + if (item.loc.CONNEC_ROADWAY == start.N_ROADWAY) + { + connection = item.loc.S_CODE; + connectionArea = item.loc.S_AREA_Name; + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂"); + break; + } + } + + if (connection == "") + { + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"InWorkArea鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�); + } + } + + + //璧风偣缁堢偣鏌ユ壘鎴愬姛锛屽垱寤轰綔涓�+ + var taskType = int.Parse(workFlow.FLOWCODE); + + var operation = new WmsWork + { + // 浣滀笟鍙�+ S_CODE = model.task_no, + // 浣滀笟绫诲瀷 + N_TYPE = taskType, + // 浣滀笟绫诲瀷 + S_TYPE = workFlow.FLOWNAME, + // 璧风偣璐т綅 + S_START_LOC = start.S_CODE, + // 璧风偣搴撳尯缂栫爜 + S_START_AREA = start.S_AREA_CODE, + //鎺ラ┏浣�+ CONNECTION = connection, + // 缁堢偣璐т綅 + S_END_LOC = end.S_CODE, + // 缁堢偣搴撳尯缂栫爜 + S_END_AREA = end.S_AREA_CODE, + // 瀹瑰櫒缂栫爜 + S_CNTR_CODE = cntrCode, + // 浣滀笟瀹氫箟鍚嶇О + S_OP_DEF_NAME = workFlow.FLOWNAME, + //浼樺厛绾�+ N_PRIORITY = model.Priority, + //宸ヨ绫诲瀷 + TOOLSTYPE = TOOLSTYPE, + //璧风偣搴撳尯鍚嶇О + S_START_AREA_NAME = start.S_AREA_Name, + //璧风偣搴撳尯鍚嶇О + S_END_AREA_NAME = end.S_AREA_Name, + //璧风偣搴撳尯鍚嶇О + CONNECTION_AREA = connectionArea + }; + + //鍒涘缓浣滀笟 + if (WMSHelper.CreateWmsWork(operation)) + { + if (connection != "") + { + LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2); + LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1); + LocationHelper.LockLoc(operation.CONNECTION, "鍏ュ簱閿�, 1); + } + + + LogHelper.Info($"InWorkArea鍑哄簱浣滀笟鍒涘缓鎴愬姛{operation.S_CODE}", "Mes浠诲姟涓嬪彂"); + result.errMsg = "鍑哄簱浣滀笟鍒涘缓鎴愬姛"; + result.errCode = 0; + result.success = true; + return result; + } + else + { + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触", "Mes浠诲姟涓嬪彂"); + throw new Exception($"InWorkArea鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触"); + } + } + } + } + catch (Exception ex) + { + LogHelper.Info("InWorkArea浠诲姟涓嬪彂寮傚父" + ex.Message, "Mes浠诲姟涓嬪彂"); + result.errMsg = "InWorkArea浠诲姟涓嬪彂寮傚父" + ex.Message; + result.errCode = 1; + result.success = false; + throw; + } + + return result; + } /// <summary> @@ -1151,7 +1650,36 @@ /// </summary> internal static Result addMesTask(ZcInWorkAreaParme model) { var result = new Result(); - + //淇濆瓨鍒癿es浠诲姟璁板綍 + MesTask mesRes = new MesTask() + { + task_no = model.task_no, + Task_type = model.Task_type, + TurnCardNum = model.TurnCardNum, + PROD_NO = model.PROD_NO, + PROD_TECH = model.PROD_TECH, + PROD_SPEC = model.PROD_SPEC, + PROD_BOM = model.PROD_BOM, + PROD_Feature = model.PROD_Feature, + TOOLS_NO = model.TOOLS_NO, + ST_AMOUNT = model.ST_AMOUNT, + CURRENT_AMOUNT = model.CURRENT_AMOUNT, + Location_From = model.Location_From, + Location_To = model.Location_To, + PRODUCE_TIME = model.PRODUCE_TIME, + SHELF_LIFE_TIME = model.SHELF_LIFE_TIME, + EXPIRED_TIME = model.EXPIRED_TIME, + SHELF_REP = model.SHELF_REP, + EXPIRED_REP = model.EXPIRED_REP, + CHECK_CODE = model.CHECK_CODE, + CHECK_INFO = model.CHECK_INFO, + Priority = model.Priority, + Data_status = model.Data_status, + CreateDate = DateTime.Now, + standardWeight = model.standardWeight, + BUSI_TYPE = model.BUSI_TYPE, + TOOLS_TPYE = model.TOOLS_TPYE, + }; try { @@ -1249,116 +1777,180 @@ throw new Exception($"璧风偣:{model.Location_From},娌℃壘鍒版垨鏈夐攣"); } - //鎺ラ┏浣�- var connection = ""; - //濡傛灉闇�涓嬪彂wcs绔嬪簱锛屽垯闇�瀵绘壘鍙敤鎺ラ┏浣�- if (workFlow.SENDWCS == "Y") { - - //娴嬭瘯榛樿鍙栦竴涓帴椹充綅 - //var connectionList = LocationHelper.GetAllLocList1(workFlow.CONNECTION); - //foreach (var item in connectionList) - //{ - // if (item.S_LOCK_STATE == "鏃� && item.N_CURRENT_NUM < 2) - // { - // connection = item.S_CODE; - // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂"); - // } - //} - - //if (connection=="") - //{ - // LogHelper.Info($"ZCSendTask浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂"); - // throw new Exception($"ZCSendTask浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�); - //} - - //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅 - var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION); - var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList); - if (usableConnectionList != null && usableConnectionList.code == "0") - { - foreach (var item in usableConnectionList.available) - { - var con = LocationHelper.GetLoc(item); - if (con.S_LOCK_STATE == "鏃� && con.N_CURRENT_NUM < 2) - { - connection = con.S_CODE; - LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂"); - } - } - } - else - { - LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂"); - throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�); - } - - if (connection == "") - { - LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂"); - throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�); - } - } //鏌ユ壘缁堢偣 - var endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA); + List<Location> endList; Location end = null; - - if (workFlow.FLOWCODE == "1") + if (!string.IsNullOrEmpty(workFlow.ZONECODE)) { - //婊℃墭鍏�- end = LocationHelper.FindEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); + endList = LocationHelper.GetZoneLoc(workFlow.ZONECODE); } - else if (workFlow.FLOWCODE == "3") + else { - //绌烘墭鍏�浼樺厛鍏ョ紦瀛樺尯锛屾病鏈夊叆绔嬪簱鍖�- //var ktHcq = Settings.EmptyPalletBufferArea; - cntrCount = 0; - //var endList1 = LocationHelper.GetAllLocList1(ktHcq); - //end = LocationHelper.FindEndcolByLoc(endList1, ktHcq); - //LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟瀵绘壘绌烘墭缂撳瓨鍖虹粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂"); - //if (end == null) + endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA); + } + + //绔嬪簱鍧囪 鍚庤揣浣嶉泦鍚�+ List<Location> balanceLocList = new List<Location>(); + + + //鎺ラ┏浣�+ var connection = ""; + + //鎺ラ┏浣嶅簱鍖哄悕绉�+ var connectionArea = ""; + + //濡傛灉闇�涓嬪彂wcs绔嬪簱锛屽垯闇�瀵绘壘鍙敤鎺ラ┏浣�+ if (workFlow.SENDWCS == "Y") + { + + //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅 + //var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION); + //var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList); + //if (usableConnectionList != null && usableConnectionList.code == "0") //{ - LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟娌℃壘鍒扮┖鎵樼紦瀛樺尯缁堢偣,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂"); - end = LocationHelper.FindEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); + // var balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available); + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍙敤鎺ラ┏浣� + JsonConvert.SerializeObject(balanceConnectionList), "Mes浠诲姟涓嬪彂"); + + // if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2") + // { + // //婊℃墭鍏�+ // balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); + + // if (TOOLSTYPE == "25" || TOOLSTYPE == "35") { + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟宸ヨ鏄簩鍚堜竴搴�闇�鐗╂枡鍧囪 ", "Mes浠诲姟涓嬪彂"); + // balanceLocList = LocationHelper.RoadWayBalance1ByItem(balanceLocList, model.PROD_NO); + // } + + + + // } + // else if (workFlow.FLOWCODE == "3") + // { + // //绌烘墭鍏ョ珛搴撳尯 + // cntrCount = 0; + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂"); + // balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); + // } + + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘缁堢偣鏁伴噺{balanceLocList.Count}", "Mes浠诲姟涓嬪彂"); + + // foreach (var item in balanceLocList) + // { + // if (item.S_LOCK_STATE == "鏃� && item.N_CURRENT_NUM == 0) + // { + // // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂item淇℃伅" + JsonConvert.SerializeObject(item), "Mes浠诲姟涓嬪彂"); + // foreach (var item1 in balanceConnectionList) + // { + // if (item1.CONNEC_ROADWAY == item.N_ROADWAY) + // { + // connection = item1.S_CODE; + // connectionArea = item1.S_AREA_Name; + // end = item; + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂"); + // break; + // } + // } + // if (end!=null) + // { + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒扮粓鐐箋end.S_CODE}", "Mes浠诲姟涓嬪彂"); + // break; + // } + // } + // } + // if (connection == "") + // { + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂娌℃壘鍒版帴椹充綅", "Mes浠诲姟涓嬪彂"); + // throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂娌℃壘鍒版帴椹充綅"); + // } //} //else //{ - // connection = ""; + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�, "Mes浠诲姟涓嬪彂"); + // throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�); //} - } - else if (workFlow.FLOWCODE == "2") - { - //85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋�- if (TOOLSTYPE == "85" || TOOLSTYPE == "95") + + if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2" || workFlow.FLOWCODE == "5" || workFlow.FLOWCODE == "8" || workFlow.FLOWCODE == "11") + { + //婊℃墭鍏�+ + if (TOOLSTYPE == "25" || TOOLSTYPE == "35") + { + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟宸ヨ鏄簩鍚堜竴搴�闇�鐗╂枡鍧囪 ", "Mes浠诲姟涓嬪彂"); + end = LocationHelper.FindBalanceEndcolByLocListItem(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no, model.PROD_NO); + + } + else { + end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no); + } + + } + else if (workFlow.FLOWCODE == "3" || workFlow.FLOWCODE == "10") + { + //绌烘墭鍏ョ珛搴撳尯 + cntrCount = 0; + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂"); + end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no); + } + + if (end == null) + { + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟{model.task_no}涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐瑰贩閬撴垨鎺ラ┏浣嶄笉鍙敤", "Mes浠诲姟涓嬪彂"); + throw new Exception($"{model.task_no}涓嬪彂澶辫触缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�宸烽亾鎴栨帴椹充綅涓嶅彲鐢�); + } + + var jb = LocationHelper.GetConnectionByEnd(workFlow.CONNECTION, end.N_ROADWAY); + + if (jb==null) + { + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂搴撳尯{workFlow.CONNECTION}锛屽贩閬搟end.N_ROADWAY},娌℃壘鍒版帴椹充綅", "Mes浠诲姟涓嬪彂"); + throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂搴撳尯{workFlow.CONNECTION}锛屽贩閬搟end.N_ROADWAY},娌℃壘鍒版帴椹充綅"); + } + + + connection = jb.S_CODE; + connectionArea = jb.S_AREA_Name; + + + } + else { + if (workFlow.FLOWCODE == "3") { end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA); - LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋剁粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂"); } - else + else if (workFlow.FLOWCODE == "2") { - end = LocationHelper.FindEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); + //85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋�+ end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA); + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋剁粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂"); } - } - else if (workFlow.FLOWCODE == "12") - { - //绌烘灦瀛愬叆 - end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA); - cntrCount = 0; - //鐢熸垚绌烘灦瀛愯櫄鎷熷彿 - cntrCode = ContainerHelper.GenerateCntrNo(); - } + else if (workFlow.FLOWCODE == "12") + { + //绌烘灦瀛愬叆 + end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA); + cntrCount = 0; + //鐢熸垚绌烘灦瀛愯櫄鎷熷彿 + cntrCode = ContainerHelper.GenerateCntrNo(); + } + else if (workFlow.FLOWCODE == "0") + { + //閽笣鍏ュ簱 + end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA); + } + } - - LogHelper.Info($"ZCSendTask浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂"); + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂"); if (end == null) { - LogHelper.Info($"ZCSendTask浠诲姟涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "Mes浠诲姟涓嬪彂"); - throw new Exception($"缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�); + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟{model.task_no}涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"{model.task_no}涓嬪彂澶辫触缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�); } + + //娣诲姞鎵樼洏鐗╂枡鍏宠仈琛� if (cntrCount != 0) @@ -1375,7 +1967,7 @@ var EXPIRED_TIME = model.EXPIRED_TIME.ToString(); if (EXPIRED_TIME == "0001/1/1 0:00:00") { - rel.expireTime = model.SHELF_LIFE_TIME.AddHours(model.EXPIRED_REP); + rel.expireTime = model.PRODUCE_TIME.AddHours(model.EXPIRED_REP); LogHelper.Info($"澶辨晥鏃堕棿涓�001/1/1 0:00:00锛屼慨鏀逛负锛歿rel.expireTime}", "Mes浠诲姟涓嬪彂"); } else @@ -1386,7 +1978,7 @@ var SHELF_LIFE_TIME = model.SHELF_LIFE_TIME.ToString(); if (SHELF_LIFE_TIME == "0001/1/1 0:00:00") { - rel.takeEffectTime = model.SHELF_LIFE_TIME.AddHours(-model.SHELF_REP); + rel.takeEffectTime = model.PRODUCE_TIME.AddHours(-model.SHELF_REP); LogHelper.Info($"鐢熸晥鏃堕棿涓�001/1/1 0:00:00锛屼慨鏀逛负锛歿rel.takeEffectTime}", "Mes浠诲姟涓嬪彂"); } else @@ -1454,17 +2046,34 @@ //浼樺厛绾� N_PRIORITY = model.Priority, //宸ヨ绫诲瀷 - TOOLSTYPE = TOOLSTYPE - + TOOLSTYPE = TOOLSTYPE, + //璧风偣搴撳尯鍚嶇О + S_START_AREA_NAME = start.S_AREA_Name, + //璧风偣搴撳尯鍚嶇О + S_END_AREA_NAME = end.S_AREA_Name, + //璧风偣搴撳尯鍚嶇О + CONNECTION_AREA = connectionArea, }; //鍒涘缓浣滀笟 if (WMSHelper.CreateWmsWork(operation)) { + if (connection != "") + { + LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2); + LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1); + LocationHelper.LockLoc(operation.CONNECTION, "鍏朵粬閿�, 3); + } + + LogHelper.Info($"ZCSendTask鍏ュ簱浣滀笟鍒涘缓鎴愬姛{operation.S_CODE}", "Mes浠诲姟涓嬪彂"); result.errMsg = "鍏ュ簱浣滀笟鍒涘缓鎴愬姛"; result.errCode = 0; result.success = true; + mesRes.errCode = result.errCode; + mesRes.errMsg = result.errMsg; + //淇濆瓨mes璁板綍 + CreatMesRes(mesRes); return result; } else { @@ -1481,46 +2090,132 @@ //鎺ラ┏浣� var connection = ""; + //鎺ラ┏浣嶅簱鍖�+ var connectionArea = ""; + + //鏌ユ壘缁欏畾缁堢偣 var end = LocationHelper.GetLoc(model.Location_To); LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂"); - if (end == null || end.S_LOCK_STATE != "鏃�) + if (end == null) { - LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To},娌℃壘鍒版垨鏈夐攣", "Mes浠诲姟涓嬪彂"); - throw new Exception($"缁堢偣:{model.Location_To},娌℃壘鍒版垨鏈夐攣"); + LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To},娌℃壘鍒�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"缁堢偣:{model.Location_To},娌℃壘鍒�); } + var unlimitedLocation = TaskHelper.GetMesKtLoc(); + + //鏍囪缁堢偣璐т綅鏄惁鍙互鏃犻檺鍒朵笅浠诲姟 + var endLocFlag = true; + + foreach (var item in unlimitedLocation) + { + //鍑哄簱缁堢偣璐т綅鍦ㄩ厤缃噷 鍙互鏃犻檺鍒朵笅浠诲姟 + if (item.Loc.Contains(model.Location_To)) + { + endLocFlag = false; + break; + } + } + + if (endLocFlag) + { + var endTask = TaskHelper.GetTaskByEndLoc(model.Location_To); + if (endTask != null) + { + LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To}鏈変换鍔℃墽琛屼腑锛屼换鍔″彿:{endTask.S_CODE}", "Mes浠诲姟涓嬪彂"); + throw new Exception($"缁堢偣:{model.Location_To}鏈変换鍔℃墽琛屼腑锛屼换鍔″彿:{endTask.S_CODE}"); + } + } + + + //鏌ユ壘璧风偣 - var strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA); + List<Location> strrtList; + Location start = null; - if (workFlow.FLOWCODE == "9") + + + if (!string.IsNullOrEmpty(workFlow.ZONECODE)) + { + strrtList = LocationHelper.GetZoneLoc(workFlow.ZONECODE); + } + else + { + strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA); + } + + + + if (workFlow.FLOWCODE == "9" || workFlow.FLOWCODE == "4" || workFlow.FLOWCODE == "6") { if (TOOLSTYPE == "85" || TOOLSTYPE == "95") { start = LocationHelper.FindStartcolByHjLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA); LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟85绾ょ淮 95閽笣涓�浠诲姟涓夊眰璐ф灦璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂"); } - else { + else + { //鏍规嵁鍒跺搧缂栧彿瀵绘壘绔嬪簱鍖哄搴旂墿鏂欐墭鐩�- start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY); + start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY,workFlow.CONNECTION); + if (start == null) + { + strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA); + var itemFlag = LocationHelper.FindStartcolByLoclistAndItemFlag(strrtList, model.PROD_NO, workFlow.STARTAREA); + LogHelper.Info($"ZCSendTask婊℃墭鍑哄簱浠诲姟娌℃壘鍒拌捣鐐癸紝鏍¢獙鏄惁鏈夊簱瀛樹絾鏄澶囨姤璀itemFlag}", "Mes浠诲姟涓嬪彂"); + if (itemFlag) + { + result.errMsg = "婊℃墭鍑哄簱浣滀笟鏈夊簱瀛樹絾璁惧鎶ヨ"; + result.errCode = 2001; + result.success = true; + mesRes.errCode = result.errCode; + mesRes.errMsg = result.errMsg; + //淇濆瓨mes璁板綍 + CreatMesRes(mesRes); + return result; + } + } } } - else if (workFlow.FLOWCODE == "7") { - //瀵绘壘绔嬪簱鍖虹┖鎵�- start = LocationHelper.FindStartcolByLoclistAndcntr(strrtList, workFlow.STARTAREA); - } - - - LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂"); - - if (workFlow.FLOWCODE == "7" && start == null) + else if (workFlow.FLOWCODE == "7") { - //绌烘墭鍑烘病鎵惧埌璧风偣锛屽厛缂撳瓨鍒扮┖鎵樿〃 + //瀵绘壘绔嬪簱鍖虹┖鎵�+ //start = LocationHelper.FindStartcolByLoclistAndcntr(strrtList, workFlow.STARTAREA); + //if (start == null) + //{ + // strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA); + // var itemFlag = LocationHelper.FindStartcolByLoclistAndcntrFlag(strrtList, workFlow.STARTAREA); + // LogHelper.Info($"ZCSendTask绌烘墭鍑哄簱浠诲姟娌℃壘鍒拌捣鐐癸紝鏍¢獙鏄惁鏈夊簱瀛樹絾鏄澶囨姤璀itemFlag}", "Mes浠诲姟涓嬪彂"); + + // if (itemFlag) + // { + // result.errMsg = "绌烘墭鍑哄簱浣滀笟鏈夊簱瀛樹絾璁惧鎶ヨ"; + // result.errCode = 2001; + // result.success = true; + // return result; + // } + //} + + //绌烘墭鍑哄厛缂撳瓨鍒扮┖鎵樿〃 + + //鍏堟煡璇㈡湁娌℃湁鍚岀粓鐐圭紦瀛樼殑璁板綍 + + if (endLocFlag) + { + var ktTask = TaskHelper.GetMesKtTask(end.S_CODE); + if (ktTask != null) + { + LogHelper.Info($"ZCSendTask绌烘墭鍑虹紦瀛樺け璐�缁堢偣{end.S_CODE}宸叉湁缂撳瓨", "Mes浠诲姟涓嬪彂"); + throw new Exception($"ZCSendTask绌烘墭鍑虹紦瀛樺け璐�缁堢偣{end.S_CODE}宸叉湁缂撳瓨"); + } + } + + MesKtTask req = new MesKtTask() { @@ -1529,7 +2224,8 @@ Priority = model.Priority, CreateDate = DateTime.Now, BUSI_TYPE = model.BUSI_TYPE, - TOOLS_TPYE = model.TOOLS_TPYE, + TOOLS_TPYE = TOOLSTYPE, + task_no = model.task_no, Status = "N" }; @@ -1539,6 +2235,10 @@ result.errMsg = "绌烘墭鍑哄簱缂撳瓨鎴愬姛"; result.errCode = 0; result.success = true; + mesRes.errCode = result.errCode; + mesRes.errMsg = result.errMsg; + //淇濆瓨mes璁板綍 + CreatMesRes(mesRes); return result; } else @@ -1546,17 +2246,23 @@ LogHelper.Info($"ZCSendTask绌烘墭鍑虹紦瀛樺け璐�, "Mes浠诲姟涓嬪彂"); throw new Exception($"ZCSendTask绌烘墭鍑虹紦瀛樺け璐�); } - - - } - else { + else if (workFlow.FLOWCODE == "5") + { + //瀵绘壘璐ф灦鍖虹┖鎵�+ start = LocationHelper.FindStartcolByHjArea(strrtList, workFlow.STARTAREA); + LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟閽笣绌烘墭涓�浠诲姟璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂"); + } + + + LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂"); + if (start == null) { LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岃捣鐐瑰簱鍖簕workFlow.STARTAREA},娌℃壘鍒拌捣鐐�, "Mes浠诲姟涓嬪彂"); throw new Exception($"璧风偣搴撳尯{workFlow.STARTAREA},娌℃壘鍒拌捣鐐�); } - } + @@ -1565,49 +2271,46 @@ if (workFlow.SENDWCS == "Y") { - //娴嬭瘯榛樿鍙栦竴涓帴椹充綅 - //var connectionList = LocationHelper.GetAllLocList1(workFlow.CONNECTION); - //foreach (var item in connectionList) - //{ - // if (item.S_LOCK_STATE == "鏃� && item.N_CURRENT_NUM < 2) - // { - // connection = item.S_CODE; - // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂"); - // } - //} - - //if (connection == "") - //{ - // LogHelper.Info($"ZCSendTask浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂"); - // throw new Exception($"ZCSendTask浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�); - //} - //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅 var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION); - var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList); - if (usableConnectionList != null && usableConnectionList.code == "0") + //var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList); + //if (usableConnectionList != null && usableConnectionList.code == "0") + //{ + // foreach (var item in usableConnectionList.available) + // { + // var con = LocationHelper.GetLoc(item); + // if (con.C_ENABLE == "Y" && con.N_CURRENT_NUM < 2) + // { + // connection = con.S_CODE; + // connectionArea = con.S_AREA_Name; + // LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂"); + // } + // } + //} + //else + //{ + // LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂"); + // throw new Exception($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�); + //} + + //鏍规嵁鎺ラ┏浣嶄换鍔℃暟閲忚幏鍙栧潎琛℃帴椹充綅闆嗗悎浼樺厛浠诲姟鏁板皯鐨勬帴椹充綅 + var balanceConnectionList = LocationHelper.GetBalanceConnectionList(connectionList); + foreach (var item in balanceConnectionList) { - foreach (var item in usableConnectionList.available) + if (item.loc.CONNEC_ROADWAY==start.N_ROADWAY) { - var con = LocationHelper.GetLoc(item); - if (con.S_LOCK_STATE == "鏃� && con.N_CURRENT_NUM < 2) - { - connection = con.S_CODE; - LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂"); - } + connection = item.loc.S_CODE; + connectionArea = item.loc.S_AREA_Name; + LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂"); + break; } - } - else - { - LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂"); - throw new Exception($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�); } if (connection == "") { - LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂"); - throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�); + LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�); } } @@ -1641,16 +2344,34 @@ //浼樺厛绾� N_PRIORITY = model.Priority, //宸ヨ绫诲瀷 - TOOLSTYPE = TOOLSTYPE + TOOLSTYPE = TOOLSTYPE, + //璧风偣搴撳尯鍚嶇О + S_START_AREA_NAME = start.S_AREA_Name, + //璧风偣搴撳尯鍚嶇О + S_END_AREA_NAME = end.S_AREA_Name, + //璧风偣搴撳尯鍚嶇О + CONNECTION_AREA = connectionArea }; //鍒涘缓浣滀笟 if (WMSHelper.CreateWmsWork(operation)) { + if (connection!="") + { + LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2); + LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1); + LocationHelper.LockLoc(operation.CONNECTION, "鍏ュ簱閿�, 1); + } + + LogHelper.Info($"ZCSendTask鍑哄簱浣滀笟鍒涘缓鎴愬姛{operation.S_CODE}", "Mes浠诲姟涓嬪彂"); result.errMsg = "鍑哄簱浣滀笟鍒涘缓鎴愬姛"; result.errCode = 0; result.success = true; + mesRes.errCode = result.errCode; + mesRes.errMsg = result.errMsg; + //淇濆瓨mes璁板綍 + CreatMesRes(mesRes); return result; } else { @@ -1664,39 +2385,6 @@ throw new Exception("Task_type涓嶇瓑浜�鎴�"); } - - //鍙傛暟鏍¢獙瀹屾垚淇濆瓨鍒癿es浠诲姟璁板綍 - //MesTask req = new MesTask() - //{ - // task_no = model.task_no, - // Task_type = model.Task_type, - // TurnCardNum = model.TurnCardNum, - // PROD_NO = model.PROD_NO, - // PROD_TECH = model.PROD_TECH, - // PROD_SPEC = model.PROD_SPEC, - // PROD_BOM = model.PROD_BOM, - // PROD_Feature = model.PROD_Feature, - // TOOLS_NO = model.TOOLS_NO, - // ST_AMOUNT = model.ST_AMOUNT, - // CURRENT_AMOUNT = model.CURRENT_AMOUNT, - // Location_From = model.Location_From, - // Location_To = model.Location_To, - // PRODUCE_TIME = model.PRODUCE_TIME, - // SHELF_LIFE_TIME = model.SHELF_LIFE_TIME, - // EXPIRED_TIME = model.EXPIRED_TIME, - // SHELF_REP = model.SHELF_REP, - // EXPIRED_REP = model.EXPIRED_REP, - // CHECK_CODE = model.CHECK_CODE, - // CHECK_INFO = model.CHECK_INFO, - // Priority = model.Priority, - // Data_status = model.Data_status, - // CreateDate = DateTime.Now, - // standardWeight = model.standardWeight, - // BUSI_TYPE = model.BUSI_TYPE, - // TOOLS_TPYE = model.TOOLS_TPYE, - //}; - - } catch (Exception ex) { @@ -1704,11 +2392,12 @@ result.errMsg = "ZCSendTask浠诲姟涓嬪彂寮傚父"+ex.Message; result.errCode = 1; result.success = false; + mesRes.errCode = result.errCode; + mesRes.errMsg = result.errMsg; + //淇濆瓨mes璁板綍 + CreatMesRes(mesRes); return result; } - - return result; - } @@ -1733,7 +2422,12 @@ + internal static bool CreatMesRes(MesTask model) + { + var newDb = new SqlHelper<object>().GetInstance(); + return newDb.Insertable(model).ExecuteCommand()>0; + } @@ -1980,13 +2674,148 @@ } - - + + internal static void inPri(WMSTask mst) + { + LogHelper.Info($"浠诲姟{mst.S_CODE}杩涘叆inpri", "鍏ュ簱浼樺厛绾�); + var inprilist = TaskHelper.GetInPri(); + var db = new SqlHelper<object>().GetInstance(); + + foreach (var item in inprilist) + { + + LogHelper.Info("鍏ュ簱浼樺厛绾ц褰曚俊鎭�+JsonConvert.SerializeObject(item), "鍏ュ簱浼樺厛绾�); + + if (item.Type=="0" && mst.S_TYPE.Contains("绌烘墭鍑�)) + { + if (mst.S_END_LOC.Contains(item.OutEndLoc)) + { + + var task = db.Queryable<WMSTask>().Where(a => a.S_B_STATE.Trim() == "宸叉帹閫� && a.S_SCHEDULE_TYPE.Contains("agv") && !a.S_TYPE.Contains("绌烘墭") && (a.S_TYPE.Contains("鍏ュ簱")|| a.S_TYPE.Contains("鍥炲簱")) && a.S_START_LOC.Contains(item.InStartLoc)).First(); + + LogHelper.Info($"鏌ユ壘璧风偣{item.InStartLoc}婊℃墭鍏ュ簱浠诲姟淇℃伅锛� + JsonConvert.SerializeObject(task), "鍏ュ簱浼樺厛绾�); + if (task != null) + { + NDCApi.ChangeOrderPri(task.S_CODE, item.Pri); + } + + } + } + + + if (item.Type == "1" && !mst.S_TYPE.Contains("绌烘墭") && mst.S_TYPE.Contains("鍑哄簱")) + { + if (mst.S_END_LOC.Contains(item.OutEndLoc)) + { + var task = db.Queryable<WMSTask>().Where(a => a.S_B_STATE.Trim() == "宸叉帹閫� && a.S_SCHEDULE_TYPE.Contains("agv") && a.S_TYPE.Contains("绌烘墭鍏ュ簱") && a.S_START_LOC.Contains(item.InStartLoc)).First(); + LogHelper.Info($"鏌ユ壘璧风偣{item.InStartLoc}绌烘墭鍏ュ簱浠诲姟淇℃伅锛� + JsonConvert.SerializeObject(task), "鍏ュ簱浼樺厛绾�); + if (task != null) + { + NDCApi.ChangeOrderPri(task.S_CODE, item.Pri); + } + } + } + + } + LogHelper.Info($"浠诲姟{mst.S_CODE}锛岀粨鏉焛npri", "鍏ュ簱浼樺厛绾�); + } - + ////濡傛灉闇�涓嬪彂wcs绔嬪簱锛屽垯闇�瀵绘壘鍙敤鎺ラ┏浣�+ //if (workFlow.SENDWCS == "Y") + //{ + + // //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅 + // var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION); + // var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList); + // if (usableConnectionList != null && usableConnectionList.code == "0") + // { + // //鏍规嵁鎺ラ┏浣嶄换鍔℃暟閲忚幏鍙栧潎琛℃帴椹充綅闆嗗悎浼樺厛浠诲姟鏁板皯鐨勬帴椹充綅 + // var balanceConnectionList = LocationHelper.GetBalanceConnectionList(usableConnectionList.available); + + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍧囪 鎺ラ┏浣� + JsonConvert.SerializeObject(balanceConnectionList), "Mes浠诲姟涓嬪彂"); + // foreach (var item in balanceConnectionList) + // { + // if (item.loc.N_CURRENT_NUM < 2) + // { + // connection = item.loc.S_CODE; + // connectionArea = item.loc.S_AREA_Name; + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂"); + // break; + // } + // } + // } + // else + // { + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂"); + // throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�); + // } + + // if (connection == "") + // { + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂"); + // throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�); + // } + //} + //if (workFlow.FLOWCODE == "1") + //{ + // //婊℃墭鍏�+ // end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); + //} + //else if (workFlow.FLOWCODE == "3") + //{ + // if (TOOLSTYPE == "35" || TOOLSTYPE == "75") + // { + // //绌烘墭鍏�浼樺厛鍏ョ紦瀛樺尯锛屾病鏈夊叆绔嬪簱鍖�+ // //var ktHcq = Settings.EmptyPalletBufferArea; + // cntrCount = 0; + // //var endList1 = LocationHelper.GetAllLocList1(ktHcq); + // //end = LocationHelper.FindEndcolByLoc(endList1, ktHcq); + // //LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟瀵绘壘绌烘墭缂撳瓨鍖虹粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂"); + // //if (end == null) + // //{ + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟娌℃壘鍒扮┖鎵樼紦瀛樺尯缁堢偣,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂"); + // end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); + // //} + // //else + // //{ + // // connection = ""; + // //} + // } + // else + // { + // end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA); + // } + //} + //else if (workFlow.FLOWCODE == "2") + //{ + + // //85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋�+ // if (TOOLSTYPE == "85" || TOOLSTYPE == "95") + // { + // end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA); + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋剁粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂"); + // } + // else + // { + // end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); + // } + //} + //else if (workFlow.FLOWCODE == "12") + //{ + // //绌烘灦瀛愬叆 + // end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA); + // cntrCount = 0; + // //鐢熸垚绌烘灦瀛愯櫄鎷熷彿 + // cntrCode = ContainerHelper.GenerateCntrNo(); + //} + //else if (workFlow.FLOWCODE == "0") + //{ + // //閽笣鍏ュ簱 + // end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA); + //} public class signalInfo -- Gitblit v1.9.1