| | |
| | | namespace HH.WCS.Mobox3.DSZSH.ServiceCore { |
| | | public class CheckCore { |
| | | public static void CheckOrderState() { |
| | | |
| | | var db = DbHelper.GetDbClient(); |
| | | try { |
| | | var order = db.Queryable<TN_Check_Order>() |
| | | var order = db.Queryable<TN_Check_Detail>() |
| | | .Where(c => c.N_B_STATE == SpotStateCode.已执行待生成任务) |
| | | .OrderBy(c => c.T_CREATE, SqlSugar.OrderByType.Asc).First(); |
| | | |
| | | if (order == null) { |
| | | LogHelper.Info("暂无待执行的抽检单"); |
| | | LogHelper.Info("轮询--抽检--暂无待执行的Order"); |
| | | return; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | foreach (var detail in detailList) { |
| | | var startLocCntrRel = db.Queryable<TN_Location, TN_Loc_Container, TN_CG_Detail> |
| | | ((l, c, d) => l.S_CODE == c.S_LOC_CODE && c.S_CNTR_CODE == d.S_CNTR_CODE) |
| | | .Where((l, c, d) => d.S_ITEM_CODE == detail.S_ITEM_CODE && d.S_BATCH_NO == detail.S_BATCH_NO) |
| | | .Select((l, c) => c) // 选择 LocCntrRel |
| | | .First(); // 随机抽检,不排序 |
| | | |
| | | if (startLocCntrRel == null) { |
| | | LogHelper.Info("没有找到合适的起点货位"); |
| | | continue; |
| | | } |
| | | |
| | | var endLoc = db.Queryable<TN_Location>() |
| | | .Where(l => l.S_AREA_CODE == detail.S_END_AREA) |
| | |
| | | .Where(ExprHelper.LocIsEmpty).First(); |
| | | |
| | | if (endLoc == null) { |
| | | LogHelper.Info("查询:没有找到合适的终点货位"); |
| | | LogHelper.Info("轮询--抽检:没有找到合适的终点货位!"); |
| | | continue; |
| | | } |
| | | |
| | |
| | | detail.N_B_STATE = SpotStateCode.任务执行中; |
| | | if (db.Updateable<TN_Check_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info($"更新失败:修改抽检单明细表状态为完成"); |
| | | LogHelper.Info($"轮询--抽检:修改抽检单明细表状态为完成--失败!"); |
| | | } |
| | | |
| | | if (TaskHelper.LogCreateTask(startLocCntrRel.S_LOC_CODE, startLocCntrRel.S_CNTR_CODE, |
| | | if (TaskHelper.LogCreateTask(detail.S_LOC_CODE, detail.S_CNTR_CODE, |
| | | endLoc.S_CODE, TaskName.抽检_出库)) { |
| | | tran.CommitTran(); |
| | | } |
| | |
| | | } |
| | | |
| | | public static void UpdateTaskState(int spotStateCode) { |
| | | |
| | | var db = DbHelper.GetDbClient(); |
| | | |
| | | var detail = db.Queryable<TN_Check_Detail>() |
| | | .First(d => d.N_B_STATE == SpotStateCode.任务执行中); |
| | | |
| | | if (detail == null) { |
| | | LogHelper.Info("当前没有执行中的抽检单明细项目"); |
| | | LogHelper.Info("抽检--AGV任务完成--查询Detail:当前没有 执行中 的Detail表!"); |
| | | return; |
| | | } |
| | | |
| | | using (var tran = db.Ado.UseTran()) { |
| | | detail.N_B_STATE = spotStateCode; |
| | | db.Updateable<TN_Check_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand(); |
| | | if (db.Updateable<TN_Check_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { |
| | | tran.RollbackTran(); |
| | | LogHelper.Info("抽检--AGV任务完成:修改Detail状态 N_B_STATE 为 3任务执行完成 失败!"); |
| | | return; |
| | | } |
| | | |
| | | if (db.Queryable<TN_Check_Detail>().Count(d => d.S_NO == detail.S_NO && d.N_B_STATE == 2) == |
| | | db.Queryable<TN_Check_Detail>().Count(d => d.S_NO == detail.S_NO)) { |
| | | var finishedCount = db.Queryable<TN_Check_Detail>().Count(d => d.S_NO == detail.S_NO && d.N_B_STATE == 3); |
| | | var allCount = db.Queryable<TN_Check_Detail>().Count(d => d.S_NO == detail.S_NO); |
| | | |
| | | LogHelper.Info($"抽检--AGV任务完成:统计任务已完成:{finishedCount} / {allCount}"); |
| | | |
| | | if (finishedCount == allCount) { // 当前order下的detail,任务都已经完成 |
| | | |
| | | if (db.Updateable<TN_Check_Order>().SetColumns(it => it.N_B_STATE == SpotStateCode.任务执行完成) |
| | | .Where(it => it.S_NO == detail.S_NO) |
| | | .ExecuteCommand() <= 0) { |
| | | |
| | | tran.RollbackTran(); |
| | | LogHelper.Info("修改Order状态错误"); |
| | | LogHelper.Info("抽检--AGV任务完成--所有任务完成时:修改Order状态 N_B_STATE 为 3任务执行完成 失败!"); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | tran.CommitTran(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |