| | |
| | | using System.Web.Services.Description; |
| | | using Top.Api; |
| | | using static HH.WCS.ZhongCeJinTan.api.ApiModel; |
| | | using static HH.WCS.ZhongCeJinTan.util.Settings; |
| | | using static HH.WCS.ZhongCeJinTan.wms.WcsModel; |
| | | |
| | | namespace HH.WCS.ZhongCeJinTan.dispatch |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 取货无货 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | public static WcsWarningReurn ZcOutChangeBit(changeBitParme model) |
| | | { |
| | | var result = new WcsWarningReurn(); |
| | | var newDb = new SqlHelper<object>().GetInstance(); |
| | | |
| | | try |
| | | { |
| | | if (string.IsNullOrEmpty(model.taskNo)) |
| | | { |
| | | throw new Exception("任务号为空"); |
| | | } |
| | | |
| | | var task = TaskHelper.GetTask(model.taskNo); |
| | | if (task == null) |
| | | { |
| | | throw new Exception($"未查询到任务号{model.taskNo}的任务"); |
| | | } |
| | | |
| | | if (task.S_TYPE.Contains("出库")) |
| | | { |
| | | //取货无货 |
| | | LogHelper.Info($"任务号{task.S_CODE},取货无货,取消任务", "取货无货"); |
| | | if (WcsCancellTask(task)) |
| | | { |
| | | LogHelper.Info($"任务号{task.S_CODE},取消任务成功,起点{task.S_START_LOC}设为异常", "取货无货"); |
| | | TaskHelper.Fail(task); |
| | | TaskProcess.OperateStatus(task, 7); |
| | | LocationHelper.updateLocLock(task.S_START_LOC, 3, "其他锁"); |
| | | var agvTask = TaskHelper.GetTaskByWorkNo(task.S_OP_CODE, "agv"); |
| | | if (agvTask != null) |
| | | { |
| | | if (agvTask.S_B_STATE != "未执行") |
| | | { |
| | | NDCApi.CancelOrder(agvTask.S_CODE.Trim()); |
| | | } |
| | | TaskHelper.Fail(agvTask); |
| | | TaskProcess.CacheBitCancelUpdate(agvTask); |
| | | } |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | throw new Exception($"任务号{model.taskNo},任务类型{task.S_TYPE}"); |
| | | } |
| | | result.msg = "Wcs取货无货处理成功"; |
| | | result.code = "0"; |
| | | result.requestPk = model.requestPk; |
| | | return result; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | newDb.RollbackTran(); |
| | | result.msg = "Wcs取货无货异常"; |
| | | result.code = "1"; |
| | | result.requestPk = model.requestPk; |
| | | LogHelper.Info("Wcs取货无货异常" + ex.Message, "取货无货"); |
| | | return result; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 放货有货 |
| | |
| | | throw new Exception($"未查询到任务号{model.taskNo}的任务"); |
| | | } |
| | | |
| | | if (task.S_TYPE.Contains("出库")) |
| | | { |
| | | //取货无货 |
| | | LogHelper.Info($"任务号{task.S_CODE},取货无货,取消任务", "放货有货"); |
| | | if (WcsCancellTask(task)) |
| | | { |
| | | LogHelper.Info($"任务号{task.S_CODE},取消任务成功,起点{task.S_START_LOC}设为异常", "放货有货"); |
| | | TaskHelper.Fail(task); |
| | | TaskProcess.OperateStatus(task, 7); |
| | | LocationHelper.updateLocLock(task.S_START_LOC, 3, "其他锁"); |
| | | var agvTask = TaskHelper.GetTaskByWorkNo(task.S_OP_CODE, "agv"); |
| | | if (agvTask != null) |
| | | { |
| | | if (agvTask.S_B_STATE!="未执行") |
| | | { |
| | | NDCApi.CancelOrder(agvTask.S_CODE.Trim()); |
| | | } |
| | | TaskHelper.Fail(agvTask); |
| | | TaskProcess.CacheBitCancelUpdate(agvTask); |
| | | } |
| | | } |
| | | |
| | | } |
| | | else { |
| | | if (!task.S_TYPE.Contains("出库")) { |
| | | //卸货有货 |
| | | if (task.S_B_STATE.Contains("完成") || task.S_B_STATE.Contains("取消") || task.S_B_STATE.Contains("失败")) |
| | | if (task.S_B_STATE == "完成" || task.S_B_STATE.Contains("取消") || task.S_B_STATE.Contains("失败")) |
| | | { |
| | | throw new Exception($"任务号{model.taskNo},任务状态:{task.S_B_STATE},不能改道"); |
| | | } |
| | | |
| | | var endLoc = LocationHelper.GetLocOne(task.S_END_LOC); |
| | | |
| | | var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROW == endLoc.N_ROW && a.N_COL > endLoc.N_COL && a.S_LOCK_STATE == "无" && a.N_CURRENT_NUM == 0 && a.C_ENABLE == "Y").OrderBy(b => b.N_COL).First(); |
| | | var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROADWAY == endLoc.N_ROADWAY && a.N_COL != endLoc.N_COL && a.S_LOCK_STATE == "无" && a.N_CURRENT_NUM == 0 && a.C_ENABLE == "Y").OrderBy(b => b.N_ROW).OrderBy(b => b.N_COL).OrderBy(b => b.N_LAYER).First(); |
| | | |
| | | LogHelper.Info($"Wcs放货有货寻找新终点信息" + JsonConvert.SerializeObject(end), "放货有货"); |
| | | |
| | |
| | | result.msg = end.S_CODE; |
| | | result.code = "0"; |
| | | result.requestPk = model.requestPk; |
| | | return result; |
| | | } |
| | | else |
| | | { |
| | | throw new Exception($"未查询到库区{endLoc.S_AREA_CODE}有符合的货位"); |
| | | } |
| | | }else |
| | | { |
| | | throw new Exception($"任务号{model.taskNo},任务类型{task.S_TYPE}"); |
| | | |
| | | } |
| | | |
| | | result.msg = "Wcs放货有货/取货无货处理成功"; |
| | | result.code = "0"; |
| | | result.requestPk = model.requestPk; |
| | | return result; |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | LogHelper.Info("Wcs放货有货异常" + ex.Message, "放货有货"); |
| | | return result; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | |