| | |
| | | |
| | | public static void CheckOutboundOrder() { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var taskInfo = Settings.GetTaskInfo(ETask.C成品胶出库); |
| | | var (ok, msg) = (false, string.Empty); |
| | | |
| | | var taskInfo = ETask.C成品胶出库.Info(); |
| | | var taskName = "出库"; |
| | | const string preLog = "轮询:出库:"; |
| | | |
| | |
| | | } |
| | | |
| | | detail.N_B_STATE = 2; |
| | | detail.T_MODIFY = DateTime.Now; |
| | | |
| | | var cntId = detail.S_CNTR_CODE; |
| | | |
| | | var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskName); |
| | | var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, detail.S_CNTR_CODE, taskName); |
| | | task.S_OP_CODE = detail.S_OO_NO; |
| | | if (string.IsNullOrEmpty(detail.S_BS_NO)) { |
| | | task.S_BS_NO = detail.S_BS_NO; |
| | | task.S_BS_TYPE = "ERP"; |
| | | } |
| | | |
| | | using (var tran = db.Ado.UseTran()) { |
| | | if (db.Updateable(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info($"轮询:{taskName}:修改明细表状态为完成--失败!"); |
| | | continue; |
| | | } |
| | | |
| | | // 更新[起点/终点]锁状态,创建任务 |
| | | if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info(preLog + $"更新[起点货位锁状态]失败!起点='{startLoc.S_CODE}',锁状态=>'出库锁'"); |
| | | } |
| | | if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info(preLog + $"更新[终点货位锁状态]失败!终点='{endLoc.S_CODE}',锁状态=>'入库锁'"); |
| | | } |
| | | if (db.Insertable(task).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info(preLog + $"生成任务'{task.S_TYPE}'失败!任务号={task.S_CODE},容器号={task.S_CNTR_CODE},起点={task.S_START_LOC},终点={task.S_END_LOC}"); |
| | | } |
| | | |
| | | // 提交数据库更改 |
| | | tran.CommitTran(); |
| | | LogHelper.Info(preLog + $"生成任务'{task.S_TYPE}'成功!任务号={task.S_CODE},容器号={task.S_CNTR_CODE},起点={task.S_START_LOC},终点={task.S_END_LOC}"); |
| | | } |
| | | (ok, msg) = DbTran.CreateTaskOrderObj(new CreateTaskOrderObj { |
| | | OutboundDetailToUpdate = detail, |
| | | StartLocToUpdate = startLoc, |
| | | EndLocToUpdate = endLoc, |
| | | TaskToInsert = task, |
| | | }); |
| | | LogHelper.Info(preLog + msg); |
| | | |
| | | // 如果当前出库单明细是ERP下发的,任务创建完成反馈货位信息 |
| | | if (detail.S_BS_TYPE == "ERP") { |
| | |
| | | |
| | | public static void CheckCheckOrder() { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var taskInfo = Settings.GetTaskInfo(ETask.C抽检出库); |
| | | var (ok, msg) = (false, string.Empty); |
| | | |
| | | var taskInfo = ETask.C抽检出库.Info(); |
| | | var taskName = taskInfo.TaskName; |
| | | const string preLog = "轮询:抽检:"; |
| | | |
| | |
| | | } |
| | | |
| | | detail.N_B_STATE = 2; |
| | | detail.T_MODIFY = DateTime.Now; |
| | | |
| | | var cntId = detail.S_CNTR_CODE; |
| | | var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskName); |
| | | var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, cntId, taskName); |
| | | task.S_OP_CODE = detail.S_OO_NO; |
| | | |
| | | using (var tran = db.Ado.UseTran()) { |
| | | if (db.Updateable(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info(preLog + $"修改{taskName}单明细表状态为完成--失败!"); |
| | | continue; |
| | | } |
| | | |
| | | if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info(preLog + $"更新[起点货位锁状态]失败!起点='{startLoc.S_CODE}',锁状态=>'出库锁'"); |
| | | continue; |
| | | } |
| | | |
| | | if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info(preLog + $"更新[终点货位锁状态]失败!终点='{endLoc.S_CODE}',锁状态=>'入库锁'"); |
| | | continue; |
| | | } |
| | | |
| | | if (db.Insertable(task).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info(preLog + $"生成任务'{taskName}'失败,任务号={task.S_CODE},容器号={cntId},起点={startLoc.S_CODE},终点={endLoc.S_CODE}"); |
| | | continue; |
| | | } |
| | | |
| | | tran.CommitTran(); |
| | | LogHelper.Info(preLog + $"生成任务'{taskName}'成功,任务号={task.S_CODE},容器号={cntId},起点={startLoc.S_CODE},终点={endLoc.S_CODE}"); |
| | | continue; |
| | | } |
| | | (ok, msg) = DbTran.CreateTaskOrderObj(new CreateTaskOrderObj { |
| | | SpotCheckDetailToUpdate = detail, |
| | | StartLocToUpdate = startLoc, |
| | | EndLocToUpdate = endLoc, |
| | | TaskToInsert = task, |
| | | }); |
| | | LogHelper.Info(preLog + msg); |
| | | } |
| | | } |
| | | catch (Exception ex) { |
| | |
| | | |
| | | public static void CheckShiftOrder() { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var taskInfo = Settings.GetTaskInfo(ETask.Y移库); |
| | | var (ok, msg) = (false, string.Empty); |
| | | |
| | | var taskInfo = ETask.Y移库.Info(); |
| | | var taskName = taskInfo.TaskName; |
| | | const string preLog = "轮询:移库:"; |
| | | |
| | |
| | | } |
| | | |
| | | foreach (var detail in detailList) { |
| | | var startLoc = db.Queryable<TN_Location>() |
| | | .LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) |
| | | .Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE) |
| | | .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "无" && l.C_ENABLE == "Y") // 筛选:未上锁 |
| | | .Where(l => l.N_CURRENT_NUM == 1) |
| | | .First(); |
| | | var startLoc = db.Queryable<TN_Location>().LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) |
| | | .Where(DbExpr.StartLoc()).Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE).First(); |
| | | |
| | | if (startLoc == null) { |
| | | LogHelper.Info(preLog + $"没有找到终点货位={detail.S_END_AREA}的终点货位!需要满足:未上锁,当前容器数量=0"); |
| | | LogHelper.Info(preLog + LogMsg.StartLocNotFound() + $"绑定容器='{detail.S_CNTR_CODE}'"); |
| | | continue; |
| | | } |
| | | |
| | | var endLoc = db.Queryable<TN_Location>() |
| | | .Where(l => l.S_AREA_CODE == detail.S_END_AREA) |
| | | .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y") // 筛选:未上锁 |
| | | .Where(a => a.N_CURRENT_NUM == 0).First(); |
| | | |
| | | .Where(DbExpr.EndLoc(areas: new List<string> { detail.S_END_AREA })).First(); |
| | | if (endLoc == null) { |
| | | LogHelper.Info(preLog + $"没有找到终点货位={detail.S_END_AREA}的终点货位!需要满足:未上锁,当前容器数量=0"); |
| | | LogHelper.Info(preLog + LogMsg.EndLocNotFound(areas: new List<string> { detail.S_END_AREA })); |
| | | continue; |
| | | } |
| | | |
| | | detail.N_B_STATE = 2; |
| | | detail.T_MODIFY = DateTime.Now; |
| | | |
| | | var cntId = detail.S_CNTR_CODE; |
| | | var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskName); |
| | | var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, cntId, taskName); |
| | | task.S_OP_CODE = detail.S_OO_NO; |
| | | |
| | | using (var tran = db.Ado.UseTran()) { |
| | | if (db.Updateable(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info($"轮询:{taskName}:修改{taskName}单明细表状态为完成--失败!"); |
| | | continue; |
| | | } |
| | | |
| | | if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info(preLog + $"更新[起点货位锁状态]失败!起点='{startLoc.S_CODE}',锁状态=>'出库锁'"); |
| | | continue; |
| | | } |
| | | |
| | | if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info(preLog + $"更新[终点货位锁状态]失败!终点='{endLoc.S_CODE}',锁状态=>'入库锁'"); |
| | | continue; |
| | | } |
| | | |
| | | if (db.Insertable(task).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info(preLog + $"生成任务'{taskName}'失败,任务号={task.S_CODE},容器号={cntId},起点={startLoc.S_CODE},终点={endLoc.S_CODE}"); |
| | | continue; |
| | | } |
| | | |
| | | tran.CommitTran(); |
| | | LogHelper.Info(preLog + $"生成任务'{taskName}'成功,任务号={task.S_CODE},容器号={cntId},起点={startLoc.S_CODE},终点={endLoc.S_CODE}"); |
| | | continue; |
| | | } |
| | | (ok, msg) = DbTran.CreateTaskOrderObj(new CreateTaskOrderObj { |
| | | RelocationDetailToUpdate = detail, |
| | | StartLocToUpdate = startLoc, |
| | | EndLocToUpdate = endLoc, |
| | | TaskToInsert = task, |
| | | }); |
| | | LogHelper.Info(preLog + msg); |
| | | } |
| | | } |
| | | catch (Exception ex) { |
| | |
| | | LogHelper.Info($"计划单号{task.S_BS_NO}不存在!"); |
| | | } |
| | | |
| | | var model = new OtherModel.CreateTaskReturnErpInfo { |
| | | var model = new ErpModel.CreateTaskReturnErpInfo { |
| | | jhdh = plan.JHDH , // 计划单号 (唯一标识) |
| | | ckzt = plan.CKZT , // 出库状态 (需要返回) |
| | | jhlb = plan.JHLB , // 计划类别 |