| | |
| | | using HH.WCS.Hexafluo; |
| | | using HH.WCS.Hexafluo.device; |
| | | using HH.WCS.Hexafluo.dispatch; |
| | | using HH.WCS.Hexafluo.process; |
| | | using HH.WCS.Hexafluo.util; |
| | | using HH.WCS.Hexafluo.wms; |
| | | using HH.WCS.SJML.Comm; |
| | |
| | | } |
| | | var chi = new SqlHelper<object>().GetInstance(); |
| | | var newDb = chi.CopyNew(); |
| | | List<string> AreaLo = new List<string>() { "TCXB", "TTXB", "NCXB", "DSXB", "TMXB", "TQXB", "TQJT" }; |
| | | WMSTask PritTask = null; |
| | | //查询是否是相关库区 |
| | | if (executeStatePara.transportTask.S_TYPE == "出库" && AreaLo.Contains(executeStatePara.transportTask.S_END_LAREA)) |
| | | { |
| | | LogHelper.TaskDetail(logPara, "更新任务优先级-任务号:" + executeStatePara.transportTask.S_TASK_NO + " 终点库区是否等于DSXB 本任务:" + executeStatePara.transportTask.S_END_LAREA); |
| | | //查询配制表 |
| | | var transportTask = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == executeStatePara.transportTask.S_END_LAREA + "-送满取空")?.First(); |
| | | if (transportTask != null) |
| | | { |
| | | var ListString = JsonConvert.DeserializeObject<List<ConfigValueList>>(transportTask.TypeJson); |
| | | if (ListString != null && ListString.Count > 0) |
| | | { |
| | | var Strin = ListString.Find(e => e.LocationCode1 == executeStatePara.transportTask.S_END_LOC); |
| | | LogHelper.TaskDetail(logPara, "更新任务优先级-任务号:" + executeStatePara.transportTask.S_TASK_NO + "是否匹配到了队友的货位信息" + JsonConvert.SerializeObject(Strin)); |
| | | if (Strin != null) |
| | | { |
| | | //查询旁边的货位是否有已推送但是没执行的任务 |
| | | var SfgLo = newDb.Queryable<WMSTask>().Where(e => e.S_START_LOC == Strin.LocationCode2 && e.S_NOTE.Equals("agv任务") && (e.S_B_STATE == "已推送" || e.S_B_STATE == "执行中"))?.First(); |
| | | LogHelper.TaskDetail(logPara, "更新任务优先级-任务号:" + executeStatePara.transportTask.S_TASK_NO + "匹配到的货位 是否存在 是agv任务 并且任务上已推送" + JsonConvert.SerializeObject(SfgLo)); |
| | | if (SfgLo != null)//有这个任务 |
| | | { |
| | | var Agvstr = NDCHelper.ChangeParamPri(SfgLo.S_TASK_NO, 60); |
| | | LogHelper.TaskDetail(logPara, "更新任务优先级-任务号:" + SfgLo.S_TASK_NO + "优先级为:" + 60 + " 是否成功 :" + Agvstr); |
| | | PritTask = SfgLo; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | try |
| | | { |
| | | LogHelper.TaskDetail(logPara, "更新任务状态 事务开始:" + executeStatePara.transportTask.S_TASK_NO); |
| | |
| | | { |
| | | throw new Exception("更新任务状态失败"); |
| | | } |
| | | if (PritTask != null) |
| | | { |
| | | // var ddd = executeStatePara.transportTaskSrc.Select(e => e.S_ID).ToList(); |
| | | var ggj = newDb.Updateable<WMSTask>().SetColumns(it => new WMSTask() { N_PRIORITY = 40 }).Where(e => e.S_ID == PritTask.S_ID).ExecuteCommand(); |
| | | LogHelper.TaskDetail(logPara, "更新任务优先级-任务号:" + PritTask.S_TASK_NO + "优先级为:" + 40 + " 是否成功 改wms任务 影响行数:" + ggj); |
| | | } |
| | | |
| | | newDb.CommitTran(); |
| | | LogHelper.TaskDetail(logPara, "更新任务状态 事务结束:" + executeStatePara.transportTask.S_TASK_NO); |
| | | return OperateResult.Succeed(); |
| | |
| | | var newDb = chi.CopyNew(); |
| | | Location location2 = null; |
| | | List<ConfigValueList> ListValues = new List<ConfigValueList>(); |
| | | if (executeStatePara.startIsCurrentTask.S_NOTE == "智能空桶满托") |
| | | { |
| | | //查询配置表信息 |
| | | var transport = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "智能空桶缓存")?.First(); |
| | | if (transport != null) |
| | | { |
| | | ListValues = JsonConvert.DeserializeObject<List<ConfigValueList>>(transport.TypeJson); |
| | | if (ListValues.Count() > 0) |
| | | { |
| | | //查询出对应的空托缓存位 |
| | | var ggf = ListValues.Find(e => e.LocationCode1 == executeStatePara.transportTask.S_START_LOC); |
| | | if (ggf != null) |
| | | { |
| | | location2 = newDb.Queryable<Location>().Where(e => e.S_LOC_CODE == ggf.LocationCode2)?.First(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //if (executeStatePara.startIsCurrentTask.S_NOTE == "智能空桶满托") |
| | | //{ |
| | | // //查询配置表信息 |
| | | // var transport = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "智能空桶缓存")?.First(); |
| | | // if (transport != null) |
| | | // { |
| | | // ListValues = JsonConvert.DeserializeObject<List<ConfigValueList>>(transport.TypeJson); |
| | | // if (ListValues.Count() > 0) |
| | | // { |
| | | // //查询出对应的空托缓存位 |
| | | // var ggf = ListValues.Find(e => e.LocationCode1 == executeStatePara.transportTask.S_START_LOC); |
| | | // if (ggf != null) |
| | | // { |
| | | // location2 = newDb.Queryable<Location>().Where(e => e.S_LOC_CODE == ggf.LocationCode2)?.First(); |
| | | // } |
| | | // } |
| | | // } |
| | | //} |
| | | try |
| | | { |
| | | LogHelper.TaskDetail(logPara, "更新任务状态 事务开始:" + executeStatePara.transportTask.S_TASK_NO); |
| | |
| | | //} |
| | | //LogHelper.TaskDetail(logPara, "更新任务终点货位" + executeStatePara.transportTask.S_START_LOC + "的状态锁为无!"); |
| | | } |
| | | if (executeStatePara.transportTask.S_TYPE.Equals("入库") && executeStatePara.startIsCurrentTask.S_NOTE == "智能空桶满托") |
| | | { |
| | | if (location2 != null && (location2.N_CURRENT_NUM - 1 >= 0)) |
| | | { |
| | | I = newDb.Updateable<Location>().SetColumns(it => new Location() |
| | | { |
| | | T_MODIFY = DateTime.Now, |
| | | N_CURRENT_NUM = it.N_CURRENT_NUM - 1, |
| | | T_EMPTY_TIME = DateTime.Now |
| | | }).Where(x => x.S_LOC_CODE == location2.S_LOC_CODE).ExecuteCommand(); |
| | | if (I == 0) |
| | | { |
| | | throw new Exception("更新终点当前容量-1失败"); |
| | | } |
| | | } |
| | | } |
| | | //if (executeStatePara.transportTask.S_TYPE.Equals("入库") && executeStatePara.startIsCurrentTask.S_NOTE == "智能空桶满托") |
| | | //{ |
| | | // if (location2 != null && (location2.N_CURRENT_NUM - 1 >= 0)) |
| | | // { |
| | | // I = newDb.Updateable<Location>().SetColumns(it => new Location() |
| | | // { |
| | | // T_MODIFY = DateTime.Now, |
| | | // N_CURRENT_NUM = it.N_CURRENT_NUM - 1, |
| | | // T_EMPTY_TIME = DateTime.Now |
| | | // }).Where(x => x.S_LOC_CODE == location2.S_LOC_CODE).ExecuteCommand(); |
| | | // if (I == 0) |
| | | // { |
| | | // throw new Exception("更新终点当前容量-1失败"); |
| | | // } |
| | | // } |
| | | //} |
| | | if (executeStatePara.transportTask.S_TYPE.Equals("出库")) |
| | | { |
| | | //删除托盘产品关联 |
| | |
| | | } |
| | | var chi = new SqlHelper<object>().GetInstance(); |
| | | var newDb = chi.CopyNew(); |
| | | |
| | | List<string> AreaLo = new List<string>() { "TCXB", "TTXB", "NCXB", "DSXB", "TMXB", "TQXB", "TQJT" }; |
| | | WMSTask PritTask = null; |
| | | //查询是否是相关库区 |
| | | if (executeStatePara.transportTask.S_TYPE == "出库" && AreaLo.Contains(executeStatePara.transportTask.S_END_LAREA)) |
| | | { |
| | | LogHelper.TaskDetail(logPara, $"更新任务优先级-任务号:{executeStatePara.transportTask.S_TASK_NO} 终点库区是否包含{JsonConvert.SerializeObject(AreaLo)} 本任务:" + executeStatePara.transportTask.S_END_LAREA); |
| | | //查询配置文件 |
| | | var transportTask = STAttribute.GetValueTwo(executeStatePara.transportTask.S_END_LAREA + "-送满取空"); |
| | | if (transportTask != null) |
| | | { |
| | | var ListString = JsonConvert.DeserializeObject<List<ConfigValueListTwo>>(transportTask); |
| | | if (ListString != null && ListString.Count > 0) |
| | | { |
| | | var Strin = ListString.Find(e => e.LocationCode1 == executeStatePara.transportTask.S_END_LOC); |
| | | LogHelper.TaskDetail(logPara, "更新任务优先级-任务号:" + executeStatePara.transportTask.S_TASK_NO + "是否匹配到了队友的货位信息" + JsonConvert.SerializeObject(Strin)); |
| | | if (Strin != null) |
| | | { |
| | | //查询旁边的货位是否有已推送但是没执行的任务 |
| | | // List<string> TaskState2 = new List<string> { "未执行", "已推送", "执行中" }; |
| | | var SfgLo = newDb.Queryable<WMSTask>().Where(e => Strin.LocationCode2.Contains(e.S_START_LOC) && e.S_NOTE.Equals("agv任务") && (e.S_B_STATE == "未执行" || e.S_B_STATE == "已推送" || e.S_B_STATE == "执行中")).ToList(); |
| | | LogHelper.TaskDetail(logPara, "更新任务优先级-任务号:" + executeStatePara.transportTask.S_TASK_NO + "匹配到的货位 是否存在 是agv任务 并且任务状态为 未执行/已推送/执行中 的任务有:" + JsonConvert.SerializeObject(SfgLo)); |
| | | if (SfgLo.Count() > 0)//有这个任务 |
| | | { |
| | | //看这个任务是否是有处于配置空托第一位的货位 |
| | | var OneLoc = Strin.LocationCode2.FirstOrDefault(); |
| | | LogHelper.TaskDetail(logPara, "更新任务优先级 配置中第一个货位为:" + OneLoc); |
| | | var OneTask = SfgLo.Find(e => e.S_START_LOC == OneLoc); |
| | | if (OneTask != null) |
| | | { |
| | | if (OneTask.S_B_STATE == "未执行")//推送任务 |
| | | { |
| | | OneTask.N_PRIORITY = 60; |
| | | TaskProcess.SendTask(OneTask); |
| | | } |
| | | else |
| | | { |
| | | var Agvstr = NDCHelper.ChangeParamPri(OneTask.S_TASK_NO, 60); |
| | | LogHelper.TaskDetail(logPara, "更新任务优先级-任务号:" + OneTask.S_TASK_NO + "优先级为:" + 60 + " 是否成功 :" + Agvstr); |
| | | } |
| | | PritTask = OneTask; |
| | | } |
| | | else |
| | | { |
| | | SfgLo = SfgLo.OrderBy(e => e.T_CREATE).ToList(); |
| | | var OneTaskR = SfgLo.FirstOrDefault(); |
| | | if (OneTaskR.S_B_STATE == "未执行")//推送任务 |
| | | { |
| | | OneTaskR.N_PRIORITY = 60; |
| | | TaskProcess.SendTask(OneTaskR); |
| | | } |
| | | else |
| | | { |
| | | var Agvstr = NDCHelper.ChangeParamPri(OneTaskR.S_TASK_NO, 60); |
| | | LogHelper.TaskDetail(logPara, "更新任务优先级-任务号:" + OneTaskR.S_TASK_NO + "优先级为:" + 60 + " 是否成功 :" + Agvstr); |
| | | } |
| | | PritTask = OneTaskR; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | try |
| | | { |
| | | LogHelper.TaskDetail(logPara, "更新任务状态 事务开始:" + executeStatePara.transportTask.S_TASK_NO); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (PritTask != null) |
| | | { |
| | | // var ddd = executeStatePara.transportTaskSrc.Select(e => e.S_ID).ToList(); |
| | | var ggj = newDb.Updateable<WMSTask>().SetColumns(it => new WMSTask() { N_PRIORITY = 60 }).Where(e => e.S_ID == PritTask.S_ID).ExecuteCommand(); |
| | | LogHelper.TaskDetail(logPara, "更新任务优先级-任务号:" + PritTask.S_TASK_NO + "优先级为:" + 60 + " 是否成功 改wms任务 影响行数:" + ggj); |
| | | } |
| | | newDb.CommitTran(); |
| | | LogHelper.TaskDetail(logPara, "更新任务状态 事务结束:" + executeStatePara.transportTask.S_TASK_NO); |
| | | return OperateResult.Succeed(); |