api/ApiHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
core/Monitor.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
core/WCSCore.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
device/ScanCodeHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
device/TcpServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
wms/SpecHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
wms/WCSHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
api/ApiHelper.cs
@@ -1092,11 +1092,6 @@ }; SpecHelper.InsertComponentDetail(target); }); Task task27 = Task.Run(() => { SpecHelper.DeleteInventoryM(cgInfo.S_ID); }); } else { @@ -1938,13 +1933,6 @@ SHIFT = model.shift, }; SpecHelper.InsertInventoryM(target); } }); Task task26 = Task.Run(() => { if (startLoc.S_AREA_CODE == Settings.Areas[1] && cginfo != null) { SpecHelper.DeleteInventoryM(cginfo.S_ID); } }); core/Monitor.cs
@@ -462,11 +462,6 @@ LocationHelper.LockLoc(startLoc_1.S_CODE, 2);//起点出库锁, LocationHelper.LockLoc(endLoc_1.S_CODE, 1);//终点入库锁 LogHelper.Info($"生成满托过期出库任务成功,容器号{outTimeCg.S_CNTR_CODE},起点{startLoc_1.S_CODE},终点{endLoc_1.S_CODE}"); Task task27 = Task.Run(() => { SpecHelper.DeleteInventoryM(outTimeCg.S_ID); }); } } } @@ -943,11 +938,6 @@ LocationHelper.LockLoc(endLoc.S_CODE, 1);//终点入库锁 LogHelper.Info($"生成满托出库复检任务成功,容器:{cntId.S_CNTR_CODE},起点:{startLoc.S_CODE},终点:{endLoc.S_CODE}"); Task task27 = Task.Run(() => { SpecHelper.DeleteInventoryM(cgInfo.S_ID); }); } else { core/WCSCore.cs
@@ -35,8 +35,9 @@ } else if (model.state == 1012) { Task task5 = Task.Run(() => Task task5 = Task.Run(async () => { await Task.Delay(3000);//延时3秒 PostScanCode(model.task_no, model.forklift_no);//反馈扫码结果 }); } @@ -86,6 +87,11 @@ Task task1 = Task.Run(() => { returnS7Ok(tN_Task); }); Task task27 = Task.Run(() => { SpecHelper.DeleteInventoryM(tN_Task); }); break; @@ -157,6 +163,11 @@ break; case 2: WCSHelper.End(tN_Task);//任务状态改成结束 Task task16 = Task.Run(() => { SpecHelper.RestEndLoc(tN_Task); }); break; case 7: @@ -473,7 +484,6 @@ { //推送成功 LogHelper.Info($"NDC反馈扫码结果成功,扫码结果:{TcpServer.saoMa[agv.ScanAddress].ToString()}"); } else { device/ScanCodeHelper.cs
@@ -53,15 +53,20 @@ { var db = new SqlHelper<TN_Task>().GetInstance(); var task = new TN_Task(); task = db.Queryable<TN_Task>().Where(a => a.S_EQ_NO == agvCode && a.N_B_STATE == 2).OrderByDescending(b => b.T_CREATE).First(); if (task != null && RFID.Contains(task.S_CNTR_CODE)) task = db.Queryable<TN_Task>().Where(a => a.S_EQ_NO == agvCode).OrderByDescending(b => b.T_START_TIME).First(); if (task != null && ( RFID == task.S_CNTR_CODE || RFID.Contains(task.S_CNTR_CODE) || task.S_CNTR_CODE.Contains(RFID) )) { LogHelper.Info($"校验成功Agv:{agvCode}容器号:{RFID}"); LogHelper.Info($"校验成功Agv:{agvCode},读卡器的容器号:{RFID},任务的容器号:{ task.S_CNTR_CODE}"); return true; } else { LogHelper.Info($"校验失败Agv:{agvCode}容器号:{RFID}"); LogHelper.Info($"校验失败Agv:{agvCode},读卡器的容器号:{RFID},任务的容器号:{ task?.S_CNTR_CODE ?? "任务未找到"}"); //校验失败就取消任务 //var task1 = Task.Run(() => device/TcpServer.cs
@@ -100,8 +100,6 @@ clients.Remove(remote_ip); buffers.Remove(remote_ip); isSend.Remove(remote_ip); isCheck.Remove(remote_ip); saoMa.Remove(remote_ip); return; } else @@ -183,7 +181,7 @@ { //卷帘门开关 var plc = Settings.SafeDoorDevices.FirstOrDefault(a => a.IPAddress == remote_ip); var log = string.Join(",", messageBytes.Select(x => x.ToString())); var log = BitConverter.ToString(messageBytes); if (plc != null && messageBytes[0] == 0x3F && messageBytes[1] == 0x00 && @@ -229,7 +227,7 @@ } catch (Exception ex) { LogHelper.Error(ex.Message, ex); } } wms/SpecHelper.cs
@@ -280,6 +280,90 @@ } /// <summary> /// 重置终点货位,只针对去线边的货品 /// </summary> /// <param name="tN_Task"></param> internal static void RestEndLoc(TN_Task tN_Task) { try { if (tN_Task.S_END_AREA == Settings.Areas[2] || tN_Task.S_TYPE.Contains("满托出库上线")) { var db = new SqlHelper<object>().GetInstance(); using (var tran = db.Ado.UseTran()) { var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == tN_Task.S_END_LOC); if (endLoc != null) { endLoc.N_CURRENT_NUM = 0; endLoc.N_LOCK_STATE = 0; endLoc.S_LOCK_STATE = "无"; if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { it.N_CURRENT_NUM, it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() > 0) { LogHelper.Info($"更新终点货位成功,{JsonConvert.SerializeObject(endLoc)}"); } else { LogHelper.Info($"更新终点货位失败,{JsonConvert.SerializeObject(endLoc)}"); tran.RollbackTran(); return; } var locCnt = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == endLoc.S_CODE); if (locCnt != null) { var cgInfo = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == locCnt.S_CNTR_CODE); if (db.Deleteable<TN_Loc_Container>(locCnt).ExecuteCommand() > 0) { LogHelper.Info($"删除货位容器绑定关系成功,{JsonConvert.SerializeObject(locCnt)}"); } else { LogHelper.Info($"删除货位容器绑定关系失败,{JsonConvert.SerializeObject(locCnt)}"); tran.RollbackTran(); return; } if (cgInfo != null) { if (db.Deleteable<TN_CG_Detail>(cgInfo).ExecuteCommand() > 0) { LogHelper.Info($"删除容器货品明细成功,{JsonConvert.SerializeObject(cgInfo)}"); } else { LogHelper.Info($"删除容器货品明细失败,{JsonConvert.SerializeObject(cgInfo)}"); tran.RollbackTran(); return; } } } } tran.CommitTran(); LogHelper.Info($"重置终点货位,成功,{JsonConvert.SerializeObject(tN_Task)}"); return; } } else { LogHelper.Info($"当前任务终点货位不是去线边,不需要重置终点货位,{JsonConvert.SerializeObject(tN_Task)}"); return; } } catch (Exception ex) { LogHelper.Error("重置终点货位,只针对去线边的货品 失败", ex); } } /// <summary> /// 更新余料回库明细 /// </summary> public static void UpdateSurplusDetail(string taskNo,float weight) @@ -387,18 +471,27 @@ /// <summary> /// 删除WMS库存明细 /// </summary> public static void DeleteInventoryM(string cg_SID) public static void DeleteInventoryM(TN_Task taskTn) { try { var db = new SqlHelper<object>().GetInstance(); if(db.Deleteable<TN_InventoryM>().Where(it => it.S_ID == cg_SID).ExecuteCommand() > 0) if (taskTn.S_START_AREA == Settings.Areas[1] || taskTn.S_TYPE.Contains("满托出库上线")) //不是从满托缓存库区移出就不删除 { LogHelper.Info($"删除WMS库存明细,成功,物料主键:{cg_SID}"); var db = new SqlHelper<object>().GetInstance(); if (db.Deleteable<TN_InventoryM>().Where(it => it.S_ID == taskTn.S_ID || it.RFID == taskTn.S_CNTR_CODE).ExecuteCommand() > 0) { LogHelper.Info($"删除WMS库存明细,成功,物料主键:{taskTn.S_ID},容器号:{taskTn.S_CNTR_CODE}"); } else { LogHelper.Info($"删除WMS库存明细,失败,物料主键:{taskTn.S_ID},容器号:{taskTn.S_CNTR_CODE}"); } } else { LogHelper.Info($"删除WMS库存明细,失败,物料主键:{cg_SID}"); LogHelper.Info($"不是从满托缓存库区搬出的货位,不需要删除库存明细,物料主键:{taskTn.S_ID},容器号:{taskTn.S_CNTR_CODE}"); return; } } catch (Exception ex) wms/WCSHelper.cs
@@ -187,15 +187,11 @@ var db = new SqlHelper<TN_Task>().GetInstance(); if (task != null) { if (task.N_B_STATE == 1) { task.N_B_STATE = 2; task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE); task.T_START_TIME = System.DateTime.Now; task.S_EQ_NO = forklift_no; db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME, it.S_EQ_NO }).ExecuteCommand(); } task.N_B_STATE = 2; task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE); task.T_START_TIME = System.DateTime.Now; task.S_EQ_NO = forklift_no; db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME, it.S_EQ_NO }).ExecuteCommand(); } } internal static void End(TN_Task task) { @@ -244,7 +240,7 @@ { LogHelper.Info($"取消任务: {tN_Task.S_CODE} 终点是满托缓存库区: {tN_Task.S_END_AREA}"); TaskProcess.OperateStatus(tN_Task, 7);//异常处理 TaskProcess.CacheBitCancelUpdate(tN_Task);//异常处理 } else if (tN_Task.S_START_AREA == HJ || tN_Task.S_TYPE.Contains("满托出库上线"))//起点是满托缓存库区 {