海波 张
1 天以前 61ece19b5b178d1b23bed16c733b01af1185f838
dispatch/WcsTask.cs
@@ -16,6 +16,7 @@
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
@@ -1207,8 +1208,72 @@
            }
        }
        /// <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>
        /// 放货有货
@@ -1233,39 +1298,16 @@
                            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), "放货有货");
@@ -1282,17 +1324,19 @@
                            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)
                    {
@@ -1303,7 +1347,6 @@
                        LogHelper.Info("Wcs放货有货异常" + ex.Message, "放货有货");
                    return result;
                    }
                    return result;
             }