Program.cs
@@ -143,7 +143,7 @@ tasks.Add(GetTask(Monitor.SynchronizationEquipPro));//同步 TN_EquipProDetail TN_InventoryM tasks.Add(GetTask(Monitor.FullOutTime));//满托过期出库 满托过期回库,满托过期回炉 tasks.Add(GetTask(Monitor.FullOutTime));//满托过期出库 过期合格回库,过期次品回炉 Task.WaitAll(tasks.ToArray()); } api/ApiHelper.cs
@@ -116,13 +116,13 @@ } /// <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 @@ -150,7 +150,7 @@ if (startLoc == null) { result.resultCode = 3; result.resultMsg = $"起点货位{locCnt.S_LOC_CODE}未解锁,或者不属于抽检区"; result.resultMsg = $"起点货位{locCnt.S_LOC_CODE}未解锁,或者不属于复检区"; LogHelper.Info(result.resultMsg); return result; } @@ -164,6 +164,14 @@ 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; @@ -172,10 +180,18 @@ 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; } @@ -188,7 +204,9 @@ 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))//创建搬送任务,起点终点容器 { @@ -209,17 +227,36 @@ { 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); } }); @@ -234,7 +271,6 @@ LogHelper.Info(result.resultMsg); return result; } } catch (Exception ex) { @@ -365,18 +401,34 @@ 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; } @@ -386,7 +438,7 @@ catch(Exception ex) { result.resultCode = -1; result.resultMsg = $"发生了异常:{ex.Message}"; result.resultMsg = $"生成人工次品回炉任务失败,发生了异常:{ex.Message}"; LogHelper.Info(result.resultMsg); return result; } @@ -722,16 +774,16 @@ 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); }); @@ -742,12 +794,12 @@ { 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); }); @@ -923,16 +975,28 @@ 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) { @@ -970,15 +1034,21 @@ { 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 @@ -1215,17 +1285,33 @@ { 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 @@ -1432,7 +1518,7 @@ 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); @@ -1441,7 +1527,7 @@ 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); @@ -1599,15 +1685,15 @@ { 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); } @@ -1615,17 +1701,51 @@ { 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); } }); } @@ -1658,5 +1778,111 @@ 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; } } } } api/ApiModel.cs
@@ -435,7 +435,7 @@ public int new_IsOK { get; set; }//新容器ID的货品的0合格1不合格? public string staff { get; set; } = "None";//操作人 } public class UpCgDetailModel { public string cntID { get; set; }//容器ID @@ -444,5 +444,12 @@ public string staff { get; set; } = "None";//操作人 } public class CreateP2PTaskInfo { public string startLoc { get; set; }//起点 public string endLoc { get; set; }//终点 public string staff { get; set; } = "None";//操作人 } } } api/MoboxController.cs
@@ -48,12 +48,12 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> [HttpPost] [Route("UpCgDetailModel")] public SimpleResult UpCgDetailModel(UpCgDetailModel model) { return ApiHelper.UpCgDetailModel(model); } //[HttpPost] //[Route("UpCgDetailModel")] //public SimpleResult UpCgDetailModel(UpCgDetailModel model) //{ // return ApiHelper.UpCgDetailModel(model); //} /// <summary> /// 满托出库上线 @@ -120,24 +120,26 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> [HttpPost] [Route("EmptyUnBind")] public SimpleResult EmptyUnBind(EmptyUnBindInfo model) { return LocationHelper.EmptyUnBind(model); } //[HttpPost] //[Route("EmptyUnBind")] //public SimpleResult EmptyUnBind(EmptyUnBindInfo model) //{ // return LocationHelper.EmptyUnBind(model); //} /// <summary> /// 人工手动PDA解绑:删除货位/容器/货品三方信息,1=解绑货位与容器,2=解绑容器与货品 /// </summary> /// <param name="model"></param> /// <returns></returns> [HttpPost] [Route("PdaUnBind")] public SimpleResult PdaUnBind(PdaUnBindInfo model) { return LocationHelper.PdaUnBind(model); } //[HttpPost] //[Route("PdaUnBind")] //public SimpleResult PdaUnBind(PdaUnBindInfo model) //{ // return LocationHelper.PdaUnBind(model); //} /// <summary> /// 人工手动PDA取消任务:1=发给AGV取消任务 @@ -176,7 +178,7 @@ //} /// <summary> /// PDA满托抽检判断 /// PDA满托复检判断 /// </summary> /// <param name="model"></param> /// <returns></returns> @@ -210,5 +212,17 @@ { return ApiHelper.PDAReturnReset(model); } /// <summary> /// 人工创建点到点任务 /// </summary> /// <param name="model"></param> /// <returns></returns> [HttpPost] [Route("CreateP2PTask")] public SimpleResult CreateP2PTask(CreateP2PTaskInfo model) { return ApiHelper.CreateP2PTask(model); } } } core/Monitor.cs
@@ -197,16 +197,16 @@ var target = new TN_EquipProDetail() { S_ID = tN_CG_Detail.S_ID, TaskType = "PLC满托下线入库", TASKTYPE = "PLC满托下线入库", RFID = result.RfidData, Spec = woInfo.S_ITEM_SPEC, CarCode = modelCI.S_CAR_CODE, Weight = result.Weight, ItemState = "待检", ItemCode = woInfo.S_ITEM_CODE, LoginName = woInfo.S_LINE_NO, Shift = "None", StartLoc = startLoc.S_CODE, SPEC = woInfo.S_ITEM_SPEC, CARCODE = modelCI.S_CAR_CODE, WEIGHT = result.Weight, ITEMSTATE = "待检", ITEMCODE = woInfo.S_ITEM_CODE, LOGINNAME = woInfo.S_LINE_NO, SHIFT = "None", STARTLOC = startLoc.S_CODE, }; SpecHelper.InsertEquipProDetail(target); }); @@ -217,12 +217,12 @@ { S_ID = tN_CG_Detail.S_ID, RFID = result.RfidData, Spec = woInfo.S_ITEM_SPEC, Weight = result.Weight, ItemState = "待检", ItemCode = woInfo.S_ITEM_CODE, LoginName = woInfo.S_LINE_NO, Shift = "None", SPEC = woInfo.S_ITEM_SPEC, WEIGHT = result.Weight, ITEMSTATE = "待检", ITEMCODE = woInfo.S_ITEM_CODE, LOGINNAME = woInfo.S_LINE_NO, SHIFT = "None", }; SpecHelper.InsertInventoryM(target); }); @@ -347,7 +347,7 @@ } /// <summary> /// 满托过期出库 满托过期回库,满托过期回炉 /// 满托过期出库 过期合格回库,过期次品回炉 /// </summary> internal static void FullOutTime() { @@ -378,12 +378,17 @@ 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); }); } } } //满托过期回库 //过期合格回库 var startLoc_2 = 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) @@ -391,10 +396,91 @@ && o.S_AREA_CODE == Settings.Areas[12] && o.N_CURRENT_NUM > 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无").First(); if (startLoc_2 != null) { var endLoc_2 = db.Queryable<TN_Location>() .First(o => o.S_AREA_CODE == Settings.Areas[2] && o.N_CURRENT_NUM == 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无"); if (endLoc_2 != null) { var cntCode = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == startLoc_2.S_CODE); var outTimeCg = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == cntCode.S_CNTR_CODE); if (WCSHelper.CreateTask(startLoc_2.S_CODE, endLoc_2.S_CODE, "过期合格回库", 3, outTimeCg.S_CNTR_CODE, outTimeCg.S_SPE)) { LocationHelper.LockLoc(startLoc_2.S_CODE, 2);//起点出库锁, LocationHelper.LockLoc(endLoc_2.S_CODE, 1);//终点入库锁 Task task27 = Task.Run(() => { var target = new TN_InventoryM() { S_ID = outTimeCg.S_ID, RFID = outTimeCg.S_CNTR_CODE, SPEC = outTimeCg.S_SPE, WEIGHT = outTimeCg.F_QTY, ITEMSTATE = outTimeCg.S_ITEM_STATE, ITEMCODE = outTimeCg.S_ITEM_CODE, LOGINNAME = "过期合格回库轮询", SHIFT = "None", }; SpecHelper.InsertInventoryM(target); }); LogHelper.Info($"生成过期合格回库任务成功,容器号{outTimeCg.S_CNTR_CODE},起点{startLoc_2.S_CODE},终点{endLoc_2.S_CODE}"); } } } //过期次品回炉 var startLoc_3 = 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) => s.N_ITEM_STATE == 2 && s.S_ITEM_STATE == "不合格" && o.S_AREA_CODE == Settings.Areas[12] && o.N_CURRENT_NUM > 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无").First(); if (startLoc_3 != null) { var endLoc_3 = db.Queryable<TN_Location>() .First(o => o.S_AREA_CODE == Settings.Areas[11] && o.N_CURRENT_NUM == 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无"); if (endLoc_3 != null) { var cntCode = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == startLoc_3.S_CODE); var outTimeCg = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == cntCode.S_CNTR_CODE); if (WCSHelper.CreateTask(startLoc_3.S_CODE, endLoc_3.S_CODE, "过期次品回炉", 3, outTimeCg.S_CNTR_CODE,out string taskno, outTimeCg.S_SPE)) { LocationHelper.LockLoc(startLoc_3.S_CODE, 2);//起点出库锁, LocationHelper.LockLoc(endLoc_3.S_CODE, 1);//终点入库锁 Task task2 = Task.Run(() => { var target = new TN_RemeltDetail() { TASKNO = taskno, CNTCODE = outTimeCg.S_CNTR_CODE, STARTLOC = startLoc_3.S_CODE, LOGINNAME = "过期次品回炉轮询", ITEMCODE = outTimeCg.S_ITEM_CODE, SPEC = outTimeCg.S_SPE, CARCODE = outTimeCg.S_CAR_CODE, WEIGHT = outTimeCg.F_QTY, REMELTTIME = DateTime.Now }; SpecHelper.InsertRemeltDetail(target); }); LogHelper.Info($"生成过期次品回炉任务成功,容器号{outTimeCg.S_CNTR_CODE},起点{startLoc_3.S_CODE},终点{endLoc_3.S_CODE}"); } } } } catch (Exception ex) { LogHelper.Error($"发生了异常,满托过期出库 满托过期回库,满托过期回炉 异常,{ex.Message}", ex); LogHelper.Error($"发生了异常,满托过期出库 过期合格回库,过期次品回炉 异常,{ex.Message}", ex); } } @@ -409,48 +495,75 @@ // 同步 TN_EquipProDetail 与 TN_CG_Detail var targetEPD = db.Queryable<TN_EquipProDetail>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID). Where((o, i) => o.ItemState != i.S_ITEM_STATE && i.S_ITEM_STATE != "待检").First(); Where((o, i) => o.ITEMSTATE != i.S_ITEM_STATE && i.S_ITEM_STATE != "待检" && i.N_ITEM_STATE != 1).First(); if (targetEPD != null) { targetEPD.ItemState = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetEPD.S_ID).S_ITEM_STATE; db.Updateable<TN_EquipProDetail>(targetEPD).ExecuteCommand(); targetEPD.ITEMSTATE = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetEPD.S_ID).S_ITEM_STATE; db.Updateable<TN_EquipProDetail>(targetEPD).UpdateColumns(it => new { it.ITEMSTATE }).ExecuteCommand(); } targetEPD = db.Queryable<TN_EquipProDetail>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID). Where((o, i) => System.DateTime.Now >= o.Expiration).First(); Where((o, i) => System.DateTime.Now >= o.EXPIRATION && i.S_ITEM_STATE == "待检" && i.N_ITEM_STATE == 1).First(); if (targetEPD != null) { targetEPD.ItemState = "过期"; db.Updateable<TN_EquipProDetail>(targetEPD).ExecuteCommand(); targetEPD.ITEMSTATE = "过期"; db.Updateable<TN_EquipProDetail>(targetEPD).UpdateColumns(it => new { it.ITEMSTATE }).ExecuteCommand(); var cginfo = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetEPD.S_ID); cginfo.S_ITEM_STATE = "过期"; cginfo.N_ITEM_STATE = 3; db.Updateable<TN_CG_Detail>(cginfo).ExecuteCommand(); db.Updateable<TN_CG_Detail>(cginfo).UpdateColumns(it => new { it.S_ITEM_STATE, it.N_ITEM_STATE }).ExecuteCommand(); } // 同步 TN_InventoryM 与 TN_CG_Detail var targetInM = db.Queryable<TN_InventoryM>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID). Where((o, i) => o.ITEMSTATE != i.S_ITEM_STATE && i.S_ITEM_STATE != "待检" && i.N_ITEM_STATE != 1).First(); if (targetInM != null) { targetInM.ITEMSTATE = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetInM.S_ID).S_ITEM_STATE; db.Updateable<TN_InventoryM>(targetInM).UpdateColumns(it => new { it.ITEMSTATE }).ExecuteCommand(); } targetInM = db.Queryable<TN_InventoryM>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID). Where((o, i) => System.DateTime.Now >= o.EXPIRATION && i.S_ITEM_STATE == "待检" && i.N_ITEM_STATE == 1).First(); if (targetInM != null) { targetInM.ITEMSTATE = "过期"; db.Updateable<TN_InventoryM>(targetInM).UpdateColumns(it => new { it.ITEMSTATE }).ExecuteCommand(); var cginfo = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetInM.S_ID); cginfo.S_ITEM_STATE = "过期"; cginfo.N_ITEM_STATE = 3; db.Updateable<TN_CG_Detail>(cginfo).UpdateColumns(it => new { it.S_ITEM_STATE, it.N_ITEM_STATE }).ExecuteCommand(); } // 同步 TN_DayProDetail var curDay = System.DateTime.Now.Date; var targetDay = db.Queryable<TN_DayProDetail>().First(a => a.DayTime == curDay); var targetDay = db.Queryable<TN_DayProDetail>().First(a => a.DAYTIME == curDay); if (targetDay == null) { targetDay = new TN_DayProDetail() { DayTime = curDay, DAYTIME = curDay, }; db.Insertable(targetDay).ExecuteCommand(); } var targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DownLineTime >= curDay && a.DownLineTime <= curDay.AddDays(1)).ToList(); var targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DOWNLINETIME >= curDay && a.DOWNLINETIME <= curDay.AddDays(1)).ToList(); var sumWeight = targetEPDs.Sum(a => a.Weight); var sumWeight = targetEPDs.Sum(a => a.WEIGHT); if (targetEPDs.Count > 0) { if (targetDay.Weight != sumWeight) if (targetDay.WEIGHT != sumWeight) { targetDay.Weight = sumWeight; targetDay.WEIGHT = sumWeight; db.Updateable(targetDay).ExecuteCommand(); } @@ -458,88 +571,66 @@ // 同步 TN_WeekProSpcDetail var curWeek = System.DateTime.Now.Date.AddDays(-(int)System.DateTime.Now.DayOfWeek + 1); var targetWeek = db.Queryable<TN_WeekProDetail>().First(a => a.DayTime == curWeek); var targetWeek = db.Queryable<TN_WeekProDetail>().First(a => a.DAYTIME == curWeek); if (targetWeek == null) { targetWeek = new TN_WeekProDetail() { DayTime = curWeek, DAYTIME = curWeek, }; db.Insertable(targetWeek).ExecuteCommand(); } targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DownLineTime >= curWeek && a.DownLineTime <= curWeek.AddDays(7)).ToList(); targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DOWNLINETIME >= curWeek && a.DOWNLINETIME <= curWeek.AddDays(7)).ToList(); if (targetEPDs.Count > 0) { if (targetWeek.Weight != sumWeight) if (targetWeek.WEIGHT != sumWeight) { targetWeek.Weight = sumWeight; targetWeek.WEIGHT = sumWeight; db.Updateable(targetWeek).ExecuteCommand(); } } // 同步 TN_MonthProSpcDetail var curMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).Date; var targetMonth = db.Queryable<TN_MonthProDetail>().First(a => a.DayTime == curMonth); var targetMonth = db.Queryable<TN_MonthProDetail>().First(a => a.DAYTIME == curMonth); if (targetMonth == null) { targetMonth = new TN_MonthProDetail() { DayTime = curMonth, DAYTIME = curMonth, }; db.Insertable(targetMonth).ExecuteCommand(); } targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DownLineTime >= curMonth && a.DownLineTime <= curMonth.AddMonths(1)).ToList(); targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DOWNLINETIME >= curMonth && a.DOWNLINETIME <= curMonth.AddMonths(1)).ToList(); if (targetEPDs.Count > 0) { if (targetMonth.Weight != sumWeight) if (targetMonth.WEIGHT != sumWeight) { targetMonth.Weight = sumWeight; targetMonth.WEIGHT = sumWeight; db.Updateable(targetMonth).ExecuteCommand(); } } // 同步 TN_YearProSpcDetail var curYear = new DateTime(DateTime.Now.Year, 1, 1).Date; var targetYear = db.Queryable<TN_YearProDetail>().First(a => a.DayTime == curYear); var targetYear = db.Queryable<TN_YearProDetail>().First(a => a.DAYTIME == curYear); if (targetYear == null) { targetYear = new TN_YearProDetail() { DayTime = curYear, DAYTIME = curYear, }; db.Insertable(targetYear).ExecuteCommand(); } targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DownLineTime >= curYear && a.DownLineTime <= curYear.AddYears(1)).ToList(); targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DOWNLINETIME >= curYear && a.DOWNLINETIME <= curYear.AddYears(1)).ToList(); if (targetEPDs.Count > 0) { if (targetYear.Weight != sumWeight) if (targetYear.WEIGHT != sumWeight) { targetYear.Weight = sumWeight; targetYear.WEIGHT = sumWeight; db.Updateable(targetYear).ExecuteCommand(); } } // 同步 TN_InventoryM 与 TN_CG_Detail var targetInM = db.Queryable<TN_InventoryM>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID). Where((o, i) => o.ItemState != i.S_ITEM_STATE && i.S_ITEM_STATE != "待检").First(); if (targetInM != null) { targetInM.ItemState = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetInM.S_ID).S_ITEM_STATE; db.Updateable<TN_InventoryM>(targetInM).ExecuteCommand(); } targetInM = db.Queryable<TN_InventoryM>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID). Where((o, i) => System.DateTime.Now >= o.Expiration).First(); if (targetInM != null) { targetInM.ItemState = "过期"; db.Updateable<TN_InventoryM>(targetInM).ExecuteCommand(); var cginfo = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetInM.S_ID); cginfo.S_ITEM_STATE = "过期"; cginfo.N_ITEM_STATE = 3; db.Updateable<TN_CG_Detail>(cginfo).ExecuteCommand(); } } catch (Exception ex) @@ -643,6 +734,11 @@ LocationHelper.LockLoc(endLoc.S_CODE, 1);//终点入库锁 LogHelper.Info($"生成满托出库复检任务成功,容器:{cntId.S_CNTR_CODE},起点:{startLoc.S_CODE}"); Task task27 = Task.Run(() => { SpecHelper.DeleteInventoryM(cgInfo.S_ID); }); } else { core/WCSCore.cs
@@ -86,7 +86,7 @@ { returnS7Ok(TN_Task); }); break; case 5: WCSHelper.UpdateStatus(TN_Task, "开始卸货");//任务状态改成开始卸货 @@ -141,6 +141,14 @@ } }); Task task19 = Task.Run(() => { if (TN_Task.S_END_AREA == Settings.Areas[2]) { SpecHelper.UpdateInventoryM_RuKu(TN_Task.S_CNTR_CODE); } }); break; case 2: WCSHelper.End(TN_Task);//任务状态改成结束 models/TN_CG_Detail.cs
@@ -27,12 +27,12 @@ public string S_SPE { get; set; }//货品规格 /// <summary> /// 0合格1待检2不合格,下线即待检,3过期 /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合 /// </summary> public string S_ITEM_STATE { get; set; }//货品状态 /// <summary> /// 0合格1待检2不合格,下线即待检,3过期 /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合 /// </summary> public int N_ITEM_STATE { get; set; }//货品状态_字典 public string S_BATCH_NO { get; set; }//批次号 models/TN_Component_Detail.cs
@@ -16,62 +16,62 @@ /// <summary> /// 出库时间 /// </summary> public DateTime OutAreaTime { get; set; } public DateTime OUTAREATIME { get; set; } /// <summary> /// 班次 /// </summary> public string Shift { get; set; } public string SHIFT { get; set; } /// <summary> /// 物料编码 /// </summary> public string ItemCode { get; set; } public string ITEMCODE { get; set; } /// <summary> /// 物料规格 /// </summary> public string Spec { get; set; } public string SPEC { get; set; } /// <summary> /// 车次 /// 车号 /// </summary> public string CarCode { get; set; } public string CARCODE { get; set; } /// <summary> /// 终点 /// </summary> public string EndLoc { get; set; } public string ENDLOC { get; set; } /// <summary> /// 操作人员姓名 /// </summary> public string Staff { get; set; } public string STAFF { get; set; } /// <summary> /// 容器编码 /// </summary> public string CntrCode { get; set; } public string CNTRCODE { get; set; } /// <summary> /// 重量 /// </summary> public float Weight { get; set; } public float WEIGHT { get; set; } /// <summary> /// 任务类型 /// </summary> public string Type { get; set; } public string TYPE { get; set; } /// <summary> /// 任务号 /// </summary> public string TaskNo { get; set; } public string TASKNO { get; set; } /// <summary> /// 送达时间 /// </summary> public DateTime EndTime { get; set; } public DateTime ENDTIME { get; set; } } models/TN_DayProDetail.cs
@@ -16,12 +16,12 @@ /// <summary> /// 当天零点 /// </summary> public DateTime DayTime { get; set; } public DateTime DAYTIME { get; set; } /// <summary> /// 总重量 /// </summary> public float Weight { get; set; } public float WEIGHT { get; set; } } } models/TN_EquipProDetail.cs
@@ -16,12 +16,12 @@ /// <summary> /// 任务类型 /// </summary> public string TaskType { get; set; } public string TASKTYPE { get; set; } /// <summary> /// 下线时间 /// </summary> public DateTime DownLineTime { get; set; } = DateTime.Now; public DateTime DOWNLINETIME { get; set; } = DateTime.Now; /// <summary> /// 容器号 @@ -31,46 +31,46 @@ /// <summary> /// 登录姓名 /// </summary> public string LoginName { get; set; } public string LOGINNAME { get; set; } /// <summary> /// 班次 /// </summary> public string Shift { get; set; } public string SHIFT { get; set; } /// <summary> /// 物料编码 /// </summary> public string ItemCode { get; set; } public string ITEMCODE { get; set; } /// <summary> /// 规格 /// </summary> public string Spec { get; set; } public string SPEC { get; set; } /// <summary> /// 车号 /// </summary> public string CarCode { get; set; } public string CARCODE { get; set; } /// <summary> /// 重量 /// </summary> public float Weight { get; set; } public float WEIGHT { get; set; } /// <summary> /// 物料状态 /// </summary> public string ItemState { get; set; } /// <summary> /// 起点货位 /// </summary> public string StartLoc { get; set; } public string ITEMSTATE { get; set; } /// <summary> /// 过期时间 /// </summary> public DateTime Expiration { get; set; } public DateTime EXPIRATION { get; set; } /// <summary> /// 起点货位 /// </summary> public string STARTLOC { get; set; } } } models/TN_InventoryM.cs
@@ -1,9 +1,5 @@ using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HH.WCS.Mobox3.DoubleCoin.models { @@ -16,7 +12,7 @@ /// <summary> /// 入库时间 /// </summary> public DateTime InAreaTime { get; set; } public DateTime INAREATIME { get; set; } /// <summary> /// 容器号 @@ -26,36 +22,36 @@ /// <summary> /// 登录姓名 /// </summary> public string LoginName { get; set; } public string LOGINNAME { get; set; } /// <summary> /// 班次 /// </summary> public string Shift { get; set; } public string SHIFT { get; set; } /// <summary> /// 物料编码 /// </summary> public string ItemCode { get; set; } public string ITEMCODE { get; set; } /// <summary> /// 规格 /// </summary> public string Spec { get; set; } public string SPEC { get; set; } /// <summary> /// 重量 /// </summary> public float Weight { get; set; } public float WEIGHT { get; set; } /// <summary> /// 物料状态 /// </summary> public string ItemState { get; set; } public string ITEMSTATE { get; set; } /// <summary> /// 过期时间 /// </summary> public DateTime Expiration { get; set; } public DateTime EXPIRATION { get; set; } } } models/TN_MonthProDetail.cs
@@ -16,12 +16,12 @@ /// <summary> /// 每月1号零点 /// </summary> public DateTime DayTime { get; set; } public DateTime DAYTIME { get; set; } /// <summary> /// 总重量 /// </summary> public float Weight { get; set; } public float WEIGHT { get; set; } } } models/TN_RemeltDetail.cs
@@ -16,56 +16,56 @@ /// <summary> /// 回炉时间 /// </summary> public DateTime RemeltTime { set; get;} public DateTime REMELTTIME { set; get;} /// <summary> /// 托盘号 /// </summary> public string CntCode { set; get;} public string CNTCODE { set; get;} /// <summary> /// 操作人姓名 /// </summary> public string LoginName { set; get;} public string LOGINNAME { set; get;} /// <summary> /// 班次 /// </summary> public string Shift { set; get;} public string SHIFT { set; get;} /// <summary> /// 物料编码 /// </summary> public string ItemCode { set; get;} public string ITEMCODE { set; get;} /// <summary> /// 物料规格 /// </summary> public string Spec { set; get;} public string SPEC { set; get;} /// <summary> /// 车次 /// </summary> public string CarCode { set; get;} public string CARCODE { set; get;} /// <summary> /// 重量 /// </summary> public float Weight { set; get;} public float WEIGHT { set; get;} /// <summary> /// 回炉机台 /// </summary> public string StartLoc { set; get;} public string STARTLOC { set; get;} /// <summary> /// 送达时间 /// </summary> public DateTime EndTime { set; get;} public DateTime ENDTIME { set; get;} /// <summary> /// 任务号 /// </summary> public string TaskNo { set; get; } public string TASKNO { set; get; } } } models/TN_SurplusDetail.cs
@@ -8,7 +8,7 @@ namespace HH.WCS.Mobox3.DoubleCoin.models { /// <summary> /// 余料回库明细 /// 余料回库(返回胶)明细 /// </summary> [SugarTable("TN_SurplusDetail")] public class TN_SurplusDetail : BaseModel @@ -16,56 +16,56 @@ /// <summary> /// 回库时间 /// </summary> public DateTime RemeltTime { set; get; } public DateTime REMELTTIME { set; get; } /// <summary> /// 托盘号 /// </summary> public string CntCode { set; get; } public string CNTCODE { set; get; } /// <summary> /// 操作人姓名 /// </summary> public string LoginName { set; get; } public string LOGINNAME { set; get; } /// <summary> /// 班次 /// </summary> public string Shift { set; get; } public string SHIFT { set; get; } /// <summary> /// 物料编码 /// </summary> public string ItemCode { set; get; } public string ITEMCODE { set; get; } /// <summary> /// 物料规格 /// </summary> public string Spec { set; get; } public string SPEC { set; get; } /// <summary> /// 车次 /// </summary> public string CarCode { set; get; } public string CARCODE { set; get; } /// <summary> /// 二次称重重量 /// </summary> public float Weight { set; get; } public float WEIGHT { set; get; } /// <summary> /// 返回机台 /// </summary> public string StartLoc { set; get; } public string STARTLOC { set; get; } /// <summary> /// 二次入库时间 /// </summary> public DateTime EndTime { set; get; } public DateTime ENDTIME { set; get; } /// <summary> /// 任务号 /// </summary> public string TaskNo { set; get; } public string TASKNO { set; get; } } } models/TN_WeekProDetail.cs
@@ -16,12 +16,12 @@ /// <summary> /// 周一零点 /// </summary> public DateTime DayTime { get; set; } public DateTime DAYTIME { get; set; } /// <summary> /// 总重量 /// </summary> public float Weight { get; set; } public float WEIGHT { get; set; } } } models/TN_YearProDetail.cs
@@ -16,12 +16,12 @@ /// <summary> /// 每年1月1号零点 /// </summary> public DateTime DayTime { get; set; } public DateTime DAYTIME { get; set; } /// <summary> /// 总重量 /// </summary> public float Weight { get; set; } public float WEIGHT { get; set; } } } wms/LocationHelper.cs
@@ -365,7 +365,6 @@ /// <summary> /// 人工手动PDA解绑:删除货位/容器/货品三方信息,1=解绑货位与容器,2=解绑容器与货品 /// </summary> /// <param name="model"></EmptyUnBind> /// <returns></returns> internal static SimpleResult PdaUnBind(PdaUnBindInfo model) { @@ -580,7 +579,7 @@ public string rfId { get; set; }//容器号 /// <summary> /// 0合格1待检2不合格,下线即待检 /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合 /// </summary> public int cgState { get; set; }//物料状态 wms/SpecHelper.cs
@@ -77,7 +77,7 @@ var log = JsonConvert.SerializeObject(model); if (model != null) { model.Expiration = System.DateTime.Now.AddMinutes(GetExportTime(model.Spec)); model.EXPIRATION = System.DateTime.Now.AddMinutes(GetExportTime(model.SPEC)); if (db.Insertable<TN_EquipProDetail>(model).ExecuteCommand() > 0) { @@ -87,27 +87,6 @@ { LogHelper.Info($"插入设备生产明细失败,{log}"); } } } catch (Exception ex) { LogHelper.Error("插入设备生产明细失败", ex); } } /// <summary> /// 更新设备生产明细的过期时间 /// </summary> public static void UpdateEquipProDetail(string cg_SID) { try { var db = new SqlHelper<object>().GetInstance(); var target = db.Queryable<TN_EquipProDetail>().First(a => a.S_ID == cg_SID); if (target != null) { target.Expiration = System.DateTime.Now.AddMinutes(GetExportTime(target.Spec)); db.Updateable<TN_EquipProDetail>().UpdateColumns(it => new { it.Expiration }).ExecuteCommand(); } } catch (Exception ex) @@ -129,8 +108,8 @@ var log = JsonConvert.SerializeObject(model); if (model != null) { model.OutAreaTime = System.DateTime.Now; model.Type = "满托出库上线"; model.OUTAREATIME = System.DateTime.Now; model.TYPE = "满托出库上线"; if (db.Insertable<TN_Component_Detail>(model).ExecuteCommand() > 0) { @@ -156,11 +135,11 @@ try { var db = new SqlHelper<object>().GetInstance(); var target = db.Queryable<TN_Component_Detail>().First(o => o.TaskNo == taskNo); var target = db.Queryable<TN_Component_Detail>().First(o => o.TASKNO == taskNo); if (target != null) { target.EndTime = System.DateTime.Now; target.ENDTIME = System.DateTime.Now; if (db.Updateable<TN_Component_Detail>(target).ExecuteCommand() > 0) { @@ -191,7 +170,7 @@ var log = JsonConvert.SerializeObject(model); if (model != null) { model.RemeltTime = System.DateTime.Now; model.REMELTTIME = System.DateTime.Now; if (db.Insertable<TN_RemeltDetail>(model).ExecuteCommand() > 0) { @@ -217,11 +196,11 @@ try { var db = new SqlHelper<object>().GetInstance(); var target = db.Queryable<TN_RemeltDetail>().First(o => o.TaskNo == taskNo); var target = db.Queryable<TN_RemeltDetail>().First(o => o.TASKNO == taskNo); if (target != null) { target.EndTime = System.DateTime.Now; target.ENDTIME = System.DateTime.Now; if (db.Updateable<TN_RemeltDetail>(target).ExecuteCommand() > 0) { @@ -252,7 +231,7 @@ var log = JsonConvert.SerializeObject(model); if (model != null) { model.RemeltTime = System.DateTime.Now; model.REMELTTIME = System.DateTime.Now; if (db.Insertable<TN_SurplusDetail>(model).ExecuteCommand() > 0) { @@ -278,11 +257,11 @@ try { var db = new SqlHelper<object>().GetInstance(); var target = db.Queryable<TN_SurplusDetail>().First(o => o.TaskNo == taskNo); var target = db.Queryable<TN_SurplusDetail>().First(o => o.TASKNO == taskNo); if (target != null) { target.EndTime = System.DateTime.Now; target.ENDTIME = System.DateTime.Now; if (db.Updateable<TN_SurplusDetail>(target).ExecuteCommand() > 0) { @@ -308,11 +287,11 @@ try { var db = new SqlHelper<object>().GetInstance(); var target = db.Queryable<TN_SurplusDetail>().First(o => o.TaskNo == taskNo); var target = db.Queryable<TN_SurplusDetail>().First(o => o.TASKNO == taskNo); if (target != null) { target.Weight = weight; target.WEIGHT = weight; if (db.Updateable<TN_SurplusDetail>(target).ExecuteCommand() > 0) { LogHelper.Info($"更新余料回库明细成功,{taskNo}"); @@ -347,7 +326,7 @@ { db.Deleteable<TN_InventoryM>(target).ExecuteCommand(); } model.Expiration = System.DateTime.Now.AddMinutes(GetExportTime(model.Spec)); model.EXPIRATION = System.DateTime.Now.AddMinutes(GetExportTime(model.SPEC)); if (db.Insertable<TN_InventoryM>(model).ExecuteCommand() > 0) { LogHelper.Info($"插入WMS库存明细成功,{log}"); @@ -364,25 +343,60 @@ } } /// <summary> /// 更新WMS库存明细的过期时间 /// 更新WMS库存明细的入库时间 /// </summary> public static void UpdateInventoryM(string cg_SID) public static void UpdateInventoryM_RuKu(string cntId) { try { var db = new SqlHelper<object>().GetInstance(); var target = db.Queryable<TN_InventoryM>().First(a => a.S_ID == cg_SID); var target = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == cntId); if (target != null) { target.Expiration = System.DateTime.Now.AddMinutes(GetExportTime(target.Spec)); db.Updateable<TN_InventoryM>().UpdateColumns(it => new { it.Expiration }).ExecuteCommand(); var targetM = db.Queryable<TN_InventoryM>().First(a => a.S_ID == target.S_ID); if (targetM != null) { targetM.INAREATIME = System.DateTime.Now; if(db.Updateable<TN_InventoryM>(targetM).UpdateColumns(it => new { it.INAREATIME }).ExecuteCommand() > 0) { LogHelper.Info($"更新WMS库存明细的入库时间,成功,容器号:{cntId}"); } else { LogHelper.Info($"更新WMS库存明细的入库时间,失败,容器号:{cntId}"); } } } } catch (Exception ex) { LogHelper.Error("插入设备生产明细失败", ex); LogHelper.Error("更新WMS库存明细的入库时间失败", ex); } } /// <summary> /// 删除WMS库存明细 /// </summary> public static void DeleteInventoryM(string cg_SID) { try { var db = new SqlHelper<object>().GetInstance(); if(db.Deleteable<TN_InventoryM>().Where(it => it.S_ID == cg_SID).ExecuteCommand() > 0) { LogHelper.Info($"删除WMS库存明细,成功,物料主键:{cg_SID}"); } else { LogHelper.Info($"删除WMS库存明细,失败,物料主键:{cg_SID}"); } } catch (Exception ex) { LogHelper.Error("更新WMS库存明细的过期时间失败", ex); } } } wms/WMSHelper.cs
@@ -1,15 +1,7 @@ using HH.WCS.Mobox3.DoubleCoin.api; using HH.WCS.Mobox3.DoubleCoin.dispatch; using HH.WCS.Mobox3.DoubleCoin.dispatch; using HH.WCS.Mobox3.DoubleCoin.models; using HH.WCS.Mobox3.DoubleCoin.util; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Runtime.Remoting.Messaging; using System.Text; using System.Threading.Tasks; using static HH.WCS.Mobox3.DoubleCoin.api.ApiModel; namespace HH.WCS.Mobox3.DoubleCoin.wms @@ -89,7 +81,13 @@ } } /// <summary> /// 插入操作员信息 /// </summary> /// <param name="staff"></param> /// <param name="type"></param> /// <param name="cntrCode"></param> /// <param name="qty"></param> public static void InsertOpInfo(string staff, string type , string cntrCode ="",int qty = 0) { try @@ -123,5 +121,7 @@ LogHelper.Error($"插入操作员信息,发生了异常,{ex.Message}",ex); } } } }