| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// PDA满托抽检判断 |
| | | /// PDA满托复检判断 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | internal static SimpleResult PDAFullCheckIn(PDAFullCheckInfo model) |
| | | { |
| | | LogHelper.Info("触发API:PDA满托抽检判断" + JsonConvert.SerializeObject(model), "API"); |
| | | LogHelper.Info("触发API:PDA满托复检判断" + JsonConvert.SerializeObject(model), "API"); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var result = new SimpleResult();//返回结果 |
| | | try |
| | |
| | | if (startLoc == null) |
| | | { |
| | | result.resultCode = 3; |
| | | result.resultMsg = $"起点货位{locCnt.S_LOC_CODE}未解锁,或者不属于抽检区"; |
| | | result.resultMsg = $"起点货位{locCnt.S_LOC_CODE}未解锁,或者不属于复检区"; |
| | | LogHelper.Info(result.resultMsg); |
| | | return result; |
| | | } |
| | |
| | | Where(o => o.S_AREA_CODE == Settings.Areas[1] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无" && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0). |
| | | OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//查询合适的终点货位 |
| | | } |
| | | else if (model.cgState == 4)//技术合格回库 |
| | | { |
| | | cG_Detail.N_ITEM_STATE = 4; |
| | | cG_Detail.S_ITEM_STATE = "技术合格"; |
| | | endLoc = db.Queryable<TN_Location>(). |
| | | Where(o => o.S_AREA_CODE == Settings.Areas[8] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无" && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0). |
| | | OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//查询合适的终点货位 |
| | | } |
| | | else if (model.cgState == 2)//不合格回炉 |
| | | { |
| | | cG_Detail.N_ITEM_STATE = 2; |
| | |
| | | Where(o => o.S_AREA_CODE == Settings.Areas[8] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无" && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0). |
| | | OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//查询合适的终点货位 |
| | | } |
| | | else if (model.cgState == 5)//混合也回库,通过点对点再发线边 |
| | | { |
| | | cG_Detail.N_ITEM_STATE = 5; |
| | | cG_Detail.S_ITEM_STATE = "混合"; |
| | | endLoc = db.Queryable<TN_Location>(). |
| | | Where(o => o.S_AREA_CODE == Settings.Areas[2] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无" && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0). |
| | | OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//查询合适的终点货位 |
| | | } |
| | | else |
| | | { |
| | | result.resultCode = 6; |
| | | result.resultMsg = $"物料状态只能为0或2,即参数cgState = 2 或 = 0,如果为其他值,则不处理,0合格,2不合格"; |
| | | result.resultMsg = $"物料状态只能为0、2、4、5,如果为其他值,则不处理,0合格,2不合格,4技术合格,5混合"; |
| | | LogHelper.Info(result.resultMsg); |
| | | return result; |
| | | } |
| | |
| | | LogHelper.Info(result.resultMsg); |
| | | return result; |
| | | } |
| | | var typeName = (model.cgState == 0) ? "人工抽检回库" : "人工抽检回炉"; |
| | | |
| | | var typeName = (model.cgState == 0) ? "人工复检回库" : "人工复检回炉"; |
| | | |
| | | //创建人工拆盘出库任务 |
| | | if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, typeName, 3, locCnt.S_CNTR_CODE,out string taskNo,cG_Detail.S_SPE))//创建搬送任务,起点终点容器 |
| | | { |
| | |
| | | { |
| | | var target = new TN_RemeltDetail() |
| | | { |
| | | CntCode = locCnt.S_CNTR_CODE, |
| | | StartLoc = startLoc.S_CODE, |
| | | LoginName = model.staff, |
| | | ItemCode = cG_Detail.S_ITEM_CODE, |
| | | Spec = cG_Detail.S_SPE, |
| | | CarCode = cG_Detail.S_CAR_CODE, |
| | | Weight = cG_Detail.F_QTY, |
| | | RemeltTime = DateTime.Now, |
| | | TaskNo = taskNo |
| | | CNTCODE = locCnt.S_CNTR_CODE, |
| | | STARTLOC = startLoc.S_CODE, |
| | | LOGINNAME = model.staff, |
| | | ITEMCODE = cG_Detail.S_ITEM_CODE, |
| | | SPEC = cG_Detail.S_SPE, |
| | | CARCODE = cG_Detail.S_CAR_CODE, |
| | | WEIGHT = cG_Detail.F_QTY, |
| | | REMELTTIME = DateTime.Now, |
| | | TASKNO = taskNo |
| | | }; |
| | | SpecHelper.InsertRemeltDetail(target); |
| | | } |
| | | }); |
| | | |
| | | Task task27 = Task.Run(() => |
| | | { |
| | | if (model.cgState != 2) |
| | | { |
| | | var target = new TN_InventoryM() |
| | | { |
| | | S_ID = cG_Detail.S_ID, |
| | | RFID = cG_Detail.S_CNTR_CODE, |
| | | SPEC = cG_Detail.S_SPE, |
| | | WEIGHT = cG_Detail.F_QTY, |
| | | ITEMSTATE = cG_Detail.S_ITEM_STATE, |
| | | ITEMCODE = cG_Detail.S_ITEM_CODE, |
| | | LOGINNAME = model.staff, |
| | | SHIFT = "None", |
| | | }; |
| | | SpecHelper.InsertInventoryM(target); |
| | | } |
| | | }); |
| | | |
| | |
| | | LogHelper.Info(result.resultMsg); |
| | | return result; |
| | | } |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | WMSHelper.InsertOpInfo(model.staff, "人工次品回炉", locCnt.S_CNTR_CODE); |
| | | }); |
| | | |
| | | Task task2 = Task.Run(() => |
| | | { |
| | | var target = new TN_RemeltDetail() |
| | | { |
| | | TASKNO = task1.S_CODE, |
| | | CNTCODE = model.rfId, |
| | | STARTLOC = model.startLoc, |
| | | LOGINNAME = model.staff, |
| | | ITEMCODE = cgInfo.S_ITEM_CODE, |
| | | SPEC = cgInfo.S_SPE, |
| | | CARCODE = cgInfo.S_CAR_CODE, |
| | | WEIGHT = cgInfo.F_QTY, |
| | | REMELTTIME = DateTime.Now |
| | | }; |
| | | SpecHelper.InsertRemeltDetail(target); |
| | | }); |
| | | |
| | | tran.CommitTran(); |
| | | result.resultCode = 0; |
| | | result.resultMsg = "成功"; |
| | | LogHelper.Info($"生成满托下线入库任务成功,容器:{model.rfId},起点:{model.startLoc},终点:{endLoc.S_CODE}"); |
| | | LogHelper.Info($"生成人工次品回炉任务成功,容器:{model.rfId},起点:{model.startLoc},终点:{endLoc.S_CODE}"); |
| | | return result; |
| | | } |
| | | else |
| | | { |
| | | tran.RollbackTran(); |
| | | result.resultCode = 7; |
| | | result.resultMsg = $"生成满托下线入库任务失败,容器:{model.rfId},起点:{model.startLoc},终点:{endLoc.S_CODE}"; |
| | | result.resultMsg = $"生成人工次品回炉任务失败,容器:{model.rfId},起点:{model.startLoc},终点:{endLoc.S_CODE}"; |
| | | LogHelper.Info(result.resultMsg); |
| | | return result; |
| | | } |
| | |
| | | catch(Exception ex) |
| | | { |
| | | result.resultCode = -1; |
| | | result.resultMsg = $"发生了异常:{ex.Message}"; |
| | | result.resultMsg = $"生成人工次品回炉任务失败,发生了异常:{ex.Message}"; |
| | | LogHelper.Info(result.resultMsg); |
| | | return result; |
| | | } |
| | |
| | | var target = new TN_EquipProDetail() |
| | | { |
| | | S_ID = tN_CG_Detail.S_ID, |
| | | TaskType = "PDA满托下线入库", |
| | | TASKTYPE = "PDA满托下线入库", |
| | | RFID = model.RfId, |
| | | Spec = woInfo.S_ITEM_SPEC, |
| | | CarCode = model.CarCode, |
| | | Weight = modelWeight, |
| | | ItemState = "待检", |
| | | ItemCode = woInfo.S_ITEM_CODE, |
| | | LoginName = model.staff, |
| | | Shift = "None", |
| | | StartLoc = startLoc.S_CODE, |
| | | SPEC = woInfo.S_ITEM_SPEC, |
| | | CARCODE = model.CarCode, |
| | | WEIGHT = modelWeight, |
| | | ITEMSTATE = "待检", |
| | | ITEMCODE = woInfo.S_ITEM_CODE, |
| | | LOGINNAME = model.staff, |
| | | SHIFT = "None", |
| | | STARTLOC = startLoc.S_CODE, |
| | | }; |
| | | SpecHelper.InsertEquipProDetail(target); |
| | | }); |
| | |
| | | { |
| | | S_ID = tN_CG_Detail.S_ID, |
| | | RFID = model.RfId, |
| | | Spec = woInfo.S_ITEM_SPEC, |
| | | Weight = modelWeight, |
| | | ItemState = "待检", |
| | | ItemCode = woInfo.S_ITEM_CODE, |
| | | LoginName = model.staff, |
| | | Shift = "None", |
| | | SPEC = woInfo.S_ITEM_SPEC, |
| | | WEIGHT = modelWeight, |
| | | ITEMSTATE = "待检", |
| | | ITEMCODE = woInfo.S_ITEM_CODE, |
| | | LOGINNAME = model.staff, |
| | | SHIFT = "None", |
| | | }; |
| | | SpecHelper.InsertInventoryM(target); |
| | | }); |
| | |
| | | |
| | | var waitTime = SpecHelper.GetWaitTime(model.Spe); |
| | | |
| | | //查询符合规格的物料所在的未锁定已启用指定货区的货位,起点 |
| | | //优先技术合格 |
| | | var startLoc = db.Queryable<TN_Location>(). |
| | | LeftJoin<TN_Loc_Container>((o, i) => o.S_CODE == i.S_LOC_CODE). |
| | | LeftJoin<TN_CG_Detail>((o, i, s) => i.S_CNTR_CODE == s.S_CNTR_CODE). |
| | | Where((o, i, s) => o.N_CURRENT_NUM > 0 && o.S_AREA_CODE == Settings.Areas[1] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无" && o.C_ENABLE == "Y" |
| | | && (s.S_ITEM_SPEC == model.Spe || s.S_SPE == model.Spe)//指定规格 |
| | | && s.N_ITEM_STATE == 0 && s.S_ITEM_STATE == "合格" //合格的 |
| | | && s.T_MODIFY.AddMinutes(waitTime) <= System.DateTime.Now).//根据规格的不同静置不同分钟才能出库 |
| | | OrderBy((o, i, s) => s.T_CREATE, OrderByType.Asc).//先进先出 |
| | | && s.N_ITEM_STATE == 4 && s.S_ITEM_STATE == "技术合格"). //技术合格 |
| | | First();//筛选有容器货位关系表信息,筛选有容器货品明细表信息 |
| | | |
| | | if (startLoc == null)//其次合格 |
| | | { |
| | | //查询符合规格的物料所在的未锁定已启用指定货区的货位,起点 |
| | | startLoc = db.Queryable<TN_Location>(). |
| | | LeftJoin<TN_Loc_Container>((o, i) => o.S_CODE == i.S_LOC_CODE). |
| | | LeftJoin<TN_CG_Detail>((o, i, s) => i.S_CNTR_CODE == s.S_CNTR_CODE). |
| | | Where((o, i, s) => o.N_CURRENT_NUM > 0 && o.S_AREA_CODE == Settings.Areas[1] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无" && o.C_ENABLE == "Y" |
| | | && (s.S_ITEM_SPEC == model.Spe || s.S_SPE == model.Spe)//指定规格 |
| | | && s.N_ITEM_STATE == 0 && s.S_ITEM_STATE == "合格" //合格的 |
| | | && s.T_MODIFY.AddMinutes(waitTime) <= System.DateTime.Now).//根据规格的不同静置不同分钟才能出库 |
| | | OrderBy((o, i, s) => s.T_CREATE, OrderByType.Asc).//先进先出 |
| | | First();//筛选有容器货位关系表信息,筛选有容器货品明细表信息 |
| | | } |
| | | |
| | | if (startLoc == null) |
| | | { |
| | |
| | | { |
| | | var target = new TN_Component_Detail() |
| | | { |
| | | ItemCode = cgInfo.S_ITEM_CODE, |
| | | CntrCode = container, |
| | | EndLoc = endLoc.S_CODE, |
| | | Staff = model.staff, |
| | | Weight = cgInfo.F_QTY, |
| | | Spec = model.Spe, |
| | | TaskNo = taskNo, |
| | | ITEMCODE = cgInfo.S_ITEM_CODE, |
| | | CNTRCODE = container, |
| | | CARCODE = cgInfo.S_CAR_CODE, |
| | | ENDLOC = endLoc.S_CODE, |
| | | STAFF = model.staff, |
| | | WEIGHT = cgInfo.F_QTY, |
| | | SPEC = model.Spe, |
| | | TASKNO = taskNo, |
| | | }; |
| | | SpecHelper.InsertComponentDetail(target); |
| | | }); |
| | | |
| | | Task task27 = Task.Run(() => |
| | | { |
| | | SpecHelper.DeleteInventoryM(cgInfo.S_ID); |
| | | }); |
| | | } |
| | | else |
| | |
| | | { |
| | | var target = new TN_SurplusDetail() |
| | | { |
| | | CntCode = model.cntID, |
| | | StartLoc = startLoc_New.S_CODE, |
| | | LoginName = model.staff, |
| | | ItemCode = cG_Detail.S_ITEM_CODE, |
| | | Spec = cG_Detail.S_SPE, |
| | | CarCode = cG_Detail.S_CAR_CODE, |
| | | Weight = cG_Detail.F_QTY, |
| | | RemeltTime = DateTime.Now, |
| | | TaskNo = taksNo |
| | | CNTCODE = model.cntID, |
| | | STARTLOC = startLoc_New.S_CODE, |
| | | LOGINNAME = model.staff, |
| | | ITEMCODE = cG_Detail.S_ITEM_CODE, |
| | | SPEC = cG_Detail.S_SPE, |
| | | CARCODE = cG_Detail.S_CAR_CODE, |
| | | WEIGHT = cG_Detail.F_QTY, |
| | | REMELTTIME = DateTime.Now, |
| | | TASKNO = taksNo |
| | | }; |
| | | SpecHelper.InsertSurplusDetail(target); |
| | | }); |
| | | |
| | | Task task27 = Task.Run(() => |
| | | { |
| | | var target = new TN_InventoryM() |
| | | { |
| | | S_ID = cG_Detail.S_ID, |
| | | RFID = cG_Detail.S_CNTR_CODE, |
| | | SPEC = cG_Detail.S_SPE, |
| | | WEIGHT = cG_Detail.F_QTY, |
| | | ITEMSTATE = cG_Detail.S_ITEM_STATE, |
| | | ITEMCODE = cG_Detail.S_ITEM_CODE, |
| | | LOGINNAME = model.staff, |
| | | SHIFT = "None", |
| | | }; |
| | | SpecHelper.InsertInventoryM(target); |
| | | }); |
| | | } |
| | | else |
| | |
| | | var locCntrRel_New1 = db.Queryable<TN_Loc_Container>().First(a => a.S_CNTR_CODE == model.new_CntIds); |
| | | if (locCntrRel_New1 != null) |
| | | { |
| | | LocationHelper.ErrorLocCntReset(new ErrorLocCntResetInfo() { cntID = model.new_CntIds ,reqCode=2}); |
| | | LocationHelper.PdaUnBind(new PdaUnBindInfo() { cntID = model.new_CntIds ,reqCode=1}); |
| | | result.resultCode = 6; |
| | | result.resultMsg = $"拆分后的新托盘存在残留的货位容器关系表,已解绑重置,容器号{model.new_CntIds},货位{locCntrRel_New1.S_LOC_CODE}"; |
| | | LogHelper.Info(result.resultMsg); |
| | |
| | | var locCntrRel_Old1 = db.Queryable<TN_Loc_Container>().First(a => a.S_CNTR_CODE == model.old_CntId); |
| | | if (locCntrRel_Old1 != null) |
| | | { |
| | | LocationHelper.ErrorLocCntReset(new ErrorLocCntResetInfo() { cntID = model.old_CntId, reqCode = 2 }); |
| | | LocationHelper.PdaUnBind(new PdaUnBindInfo() { cntID = model.old_CntId, reqCode = 1 }); |
| | | result.resultCode = 6; |
| | | result.resultMsg = $"被拆的旧托盘存在残留的货位容器关系表,已解绑重置,容器号{model.old_CntId},货位{locCntrRel_Old1.S_LOC_CODE}"; |
| | | LogHelper.Info(result.resultMsg); |
| | |
| | | { |
| | | var target = new TN_RemeltDetail() |
| | | { |
| | | TaskNo = oldTaskCreate.taskNo, |
| | | CntCode = cG_old_Detail.S_CNTR_CODE, |
| | | StartLoc = startLoc_Old.S_CODE, |
| | | LoginName = model.staff, |
| | | ItemCode = cG_old_Detail.S_ITEM_CODE, |
| | | Spec = cG_old_Detail.S_SPE, |
| | | CarCode = cG_old_Detail.S_CAR_CODE, |
| | | Weight = cG_old_Detail.F_QTY, |
| | | RemeltTime = DateTime.Now |
| | | TASKNO = oldTaskCreate.taskNo, |
| | | CNTCODE = cG_old_Detail.S_CNTR_CODE, |
| | | STARTLOC = startLoc_Old.S_CODE, |
| | | LOGINNAME = model.staff, |
| | | ITEMCODE = cG_old_Detail.S_ITEM_CODE, |
| | | SPEC = cG_old_Detail.S_SPE, |
| | | CARCODE = cG_old_Detail.S_CAR_CODE, |
| | | WEIGHT = cG_old_Detail.F_QTY, |
| | | REMELTTIME = DateTime.Now |
| | | }; |
| | | SpecHelper.InsertRemeltDetail(target); |
| | | } |
| | |
| | | { |
| | | var target = new TN_RemeltDetail() |
| | | { |
| | | TaskNo = newTaskCreate.taskNo, |
| | | CntCode = cG_new_Detail_Ins.S_CNTR_CODE, |
| | | StartLoc = startLoc_New.S_CODE, |
| | | LoginName = model.staff, |
| | | ItemCode = cG_new_Detail_Ins.S_ITEM_CODE, |
| | | Spec = cG_new_Detail_Ins.S_SPE, |
| | | CarCode = cG_new_Detail_Ins.S_CAR_CODE, |
| | | Weight = cG_new_Detail_Ins.F_QTY, |
| | | RemeltTime = DateTime.Now |
| | | TASKNO = newTaskCreate.taskNo, |
| | | CNTCODE = cG_new_Detail_Ins.S_CNTR_CODE, |
| | | STARTLOC = startLoc_New.S_CODE, |
| | | LOGINNAME = model.staff, |
| | | ITEMCODE = cG_new_Detail_Ins.S_ITEM_CODE, |
| | | SPEC = cG_new_Detail_Ins.S_SPE, |
| | | CARCODE = cG_new_Detail_Ins.S_CAR_CODE, |
| | | WEIGHT = cG_new_Detail_Ins.F_QTY, |
| | | REMELTTIME = DateTime.Now |
| | | }; |
| | | SpecHelper.InsertRemeltDetail(target); |
| | | } |
| | | }); |
| | | |
| | | Task task27 = Task.Run(() => |
| | | { |
| | | if (model.old_IsOK == 1) |
| | | { |
| | | var target = new TN_InventoryM() |
| | | { |
| | | S_ID = cG_old_Detail.S_ID, |
| | | RFID = cG_old_Detail.S_CNTR_CODE, |
| | | SPEC = cG_old_Detail.S_SPE, |
| | | WEIGHT = cG_old_Detail.F_QTY, |
| | | ITEMSTATE = cG_old_Detail.S_ITEM_STATE, |
| | | ITEMCODE = cG_old_Detail.S_ITEM_CODE, |
| | | LOGINNAME = model.staff, |
| | | SHIFT = "None", |
| | | }; |
| | | SpecHelper.InsertInventoryM(target); |
| | | } |
| | | if (model.new_IsOK == 1) |
| | | { |
| | | var target = new TN_InventoryM() |
| | | { |
| | | S_ID = cG_new_Detail_Ins.S_ID, |
| | | RFID = cG_new_Detail_Ins.S_CNTR_CODE, |
| | | SPEC = cG_new_Detail_Ins.S_SPE, |
| | | WEIGHT = cG_new_Detail_Ins.F_QTY, |
| | | ITEMSTATE = cG_new_Detail_Ins.S_ITEM_STATE, |
| | | ITEMCODE = cG_new_Detail_Ins.S_ITEM_CODE, |
| | | LOGINNAME = model.staff, |
| | | SHIFT = "None", |
| | | }; |
| | | SpecHelper.InsertInventoryM(target); |
| | | } |
| | | }); |
| | | } |
| | |
| | | |
| | | return result; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 人工创建点到点任务 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | internal static SimpleResult CreateP2PTask(CreateP2PTaskInfo model) |
| | | { |
| | | LogHelper.Info("触发API:人工创建点到点任务" + JsonConvert.SerializeObject(model), "API"); |
| | | |
| | | var result = new SimpleResult(); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | try |
| | | { |
| | | var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc); |
| | | |
| | | if(!(startLoc != null && startLoc.N_CURRENT_NUM > 0 && startLoc.N_LOCK_STATE == 0 && startLoc.S_LOCK_STATE == "无")) |
| | | { |
| | | result.resultCode = 1; |
| | | result.resultMsg = $"起始位置{model.startLoc}不满足条件:startLoc != null && startLoc.N_CURRENT_NUM > 0 && startLoc.N_LOCK_STATE == 0 && startLoc.S_LOCK_STATE == 无"; |
| | | LogHelper.Info(result.resultMsg); |
| | | return result; |
| | | } |
| | | |
| | | var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc); |
| | | |
| | | if (!(endLoc != null && endLoc.N_CURRENT_NUM == 0 && endLoc.N_LOCK_STATE == 0 && endLoc.S_LOCK_STATE == "无")) |
| | | { |
| | | result.resultCode = 2; |
| | | result.resultMsg = $"终点位置{model.endLoc}不满足条件:endLoc != null && endLoc.N_CURRENT_NUM == 0 && endLoc.N_LOCK_STATE == 0 && endLoc.S_LOCK_STATE == 无"; |
| | | LogHelper.Info(result.resultMsg); |
| | | return result; |
| | | } |
| | | |
| | | var startLocCnt = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc); |
| | | |
| | | if (startLocCnt == null) |
| | | { |
| | | result.resultCode = 3; |
| | | result.resultMsg = $"起始位置{model.startLoc}未绑定容器"; |
| | | LogHelper.Info(result.resultMsg); |
| | | return result; |
| | | } |
| | | |
| | | //创建点对点任务 |
| | | if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, "点对点", 3, startLocCnt.S_CNTR_CODE))//创建搬送任务,起点终点容器 |
| | | { |
| | | LocationHelper.LockLoc(startLoc.S_CODE, 2);//起点出库锁, |
| | | LocationHelper.LockLoc(endLoc.S_CODE, 1);//终点入库锁 |
| | | LogHelper.Info($"生成点对点任务成功,容器号{startLocCnt.S_CNTR_CODE},起点{startLoc.S_CODE},终点{endLoc.S_CODE}"); |
| | | |
| | | Task task1 = Task.Run(() => |
| | | { |
| | | WMSHelper.InsertOpInfo(model.staff, "点对点", startLocCnt.S_CNTR_CODE); |
| | | }); |
| | | |
| | | var cginfo = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == startLocCnt.S_CNTR_CODE); |
| | | Task task27 = Task.Run(() => |
| | | { |
| | | if (endLoc.S_AREA_CODE == Settings.Areas[2] && cginfo != null) |
| | | { |
| | | var target = new TN_InventoryM() |
| | | { |
| | | S_ID = cginfo.S_ID, |
| | | RFID = cginfo.S_CNTR_CODE, |
| | | SPEC = cginfo.S_SPE, |
| | | WEIGHT = cginfo.F_QTY, |
| | | ITEMSTATE = cginfo.S_ITEM_STATE, |
| | | ITEMCODE = cginfo.S_ITEM_CODE, |
| | | LOGINNAME = model.staff, |
| | | SHIFT = "None", |
| | | }; |
| | | SpecHelper.InsertInventoryM(target); |
| | | } |
| | | }); |
| | | Task task26 = Task.Run(() => |
| | | { |
| | | if (startLoc.S_AREA_CODE == Settings.Areas[2] && cginfo != null) |
| | | { |
| | | SpecHelper.DeleteInventoryM(cginfo.S_ID); |
| | | } |
| | | }); |
| | | |
| | | result.resultCode = 0; |
| | | result.resultMsg = "成功"; |
| | | LogHelper.Info($"生成点对点失败,容器号{ startLocCnt.S_CNTR_CODE},起点{startLoc.S_CODE},终点{endLoc.S_CODE}"); |
| | | return result; |
| | | } |
| | | else |
| | | { |
| | | result.resultCode = 9; |
| | | result.resultMsg = $"生成点对点失败,容器号{ startLocCnt.S_CNTR_CODE},起点{startLoc.S_CODE},终点{endLoc.S_CODE}"; |
| | | LogHelper.Info(result.resultMsg); |
| | | return result; |
| | | } |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | result.resultCode = -1; |
| | | result.resultMsg = $"人工创建点到点任务,发生了异常,{ex.Message}"; |
| | | LogHelper.Error(result.resultMsg, ex); |
| | | return result; |
| | | } |
| | | } |
| | | } |
| | | } |