海波 张
2025-07-07 00b6105b34870f6f5a33551534d0088f3f741906
process/TaskProcess.cs
@@ -174,6 +174,7 @@
                        NDCApi.ChangeOrderParam(mst.S_CODE, 1, startSite);
                        NDCApi.ChangeOrderParam(mst.S_CODE, 2, endSite);
                        NDCApi.ChangeOrderParam(mst.S_CODE, 4, "0");
                        Thread.Sleep(1000);
                        NDCApi.ChangeOrderParam(mst.S_CODE, 6, "2");
                    }
                }
@@ -203,13 +204,16 @@
        /// <param name="state"></param>
        internal static void OperateStatus(WMSTask mst, int state)
        {
            if (state == 4)
            if (state == 4)//取货完成
            {
                CacheBitUpdate(mst, true);
            }
            if (state == 6)//卸货完成
            {
                //退库任务不绑定
                if (!LocationHelper.GetErroArea(mst.S_END_AREA)) {
                CacheBitUpdate(mst, false);
                }
            }
            if (state == 7)
            {
@@ -261,7 +265,9 @@
                            //改一段任务终点
                            task.S_END_LOC = end.S_CODE;
                            task.S_END_AREA = end.S_AREA_CODE;
                            db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA }).ExecuteCommand();
                            task.S_END_AREA_NAME = end.S_AREA_Name;
                            db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA ,it.S_END_AREA_NAME}).ExecuteCommand();
                            kt.Status = "Y";
                            db.Updateable(kt).UpdateColumns(it => new { it.Status }).ExecuteCommand();
                            db.CommitTran();
@@ -269,6 +275,7 @@
                            LogHelper.Info($"任务{task.S_CODE}改道成功,改参数2为{site},参数6为2,4为0", "改道安全交互");
                            NDCApi.ChangeOrderParam(task.S_CODE, 2, site);
                            NDCApi.ChangeOrderParam(task.S_CODE, 4, "0");
                            Thread.Sleep(1000);
                            NDCApi.ChangeOrderParam(task.S_CODE, 6, "2");
                            return;
                        }
@@ -397,11 +404,6 @@
                        db.Updateable(wcsTask).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
                        db.CommitTran();
                        LocationHelper.LockLoc(connection.S_CODE, "入库锁", 1);
                        var endLoc1 = LocationHelper.GetLocOne(task.S_END_LOC);
                        endLoc1.N_LOCK_STATE = 0;
@@ -411,19 +413,24 @@
                        //改一段任务终点
                        task.S_END_LOC = connection.S_CODE;
                        task.S_END_AREA = connection.S_AREA_CODE;
                        db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA }).ExecuteCommand();
                        task.S_END_AREA_NAME = connection.S_AREA_Name;
                        db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA,it.S_END_AREA_NAME }).ExecuteCommand();
                        //改二段任务起点
                        wcsTask.S_START_LOC = connection.S_CODE;
                        wcsTask.S_START_AREA = connection.S_AREA_CODE;
                        db.Updateable(wcsTask).UpdateColumns(it => new { it.S_START_LOC, it.S_START_AREA }).ExecuteCommand();
                        wcsTask.S_START_AREA_NAME = connection.S_AREA_Name;
                        db.Updateable(wcsTask).UpdateColumns(it => new { it.S_START_LOC, it.S_START_AREA,it.S_START_AREA_NAME}).ExecuteCommand();
                        db.CommitTran();
                        var site = LocationHelper.GetAgvSiteZc(connection.S_CODE);
                        LogHelper.Info($"任务{task.S_CODE}改道成功,改参数2为{site},参数6为2,4为1024", "改道安全交互");
                        NDCApi.ChangeOrderParam(task.S_CODE, 2, site);
                        NDCApi.ChangeOrderParam(task.S_CODE, 4, "1024");
                        Thread.Sleep(1000);
                        NDCApi.ChangeOrderParam(task.S_CODE, 6, "2");
                        //} else if (workFlow.FLOWNAME.Contains("出库")) {
@@ -441,6 +448,7 @@
                    else {
                        LogHelper.Info($"当前任务{task.S_CODE}接驳位{task.S_END_LOC}可用,当前库区{wcsTask.S_END_AREA}当前巷道{loc1.N_ROADWAY}可用,不需要改道,直接修改参数6为2,4为1024", "改道安全交互");
                        NDCApi.ChangeOrderParam(task.S_CODE, 4, "1024");
                        Thread.Sleep(1000);
                        NDCApi.ChangeOrderParam(task.S_CODE, 6, "2");
                    }
                }
@@ -738,14 +746,14 @@
                    var TrayLocation = db.Queryable<LocCntrRel>().Where(e => e.S_CNTR_CODE == model.TOOLS_NO).ToList();
                    if (TrayLocation.Count() > 0)
                    {
                        LogHelper.Info("查询到该工装已经绑定了货位信息", "物料绑定解绑");
                        throw new Exception("查询到该工装已经绑定了货位信息");
                        LogHelper.Info("查询到该工装托盘码已经绑定了货位信息", "物料绑定解绑");
                        throw new Exception("查询到该工装托盘码已经绑定了货位信息");
                    }
                    var TrayItems = db.Queryable<CntrItemRel>().Where(e => e.S_CNTR_CODE == model.TOOLS_NO).ToList();
                    if (TrayItems.Count() > 0)
                    {
                        LogHelper.Info("查询到该工装已经绑定了物料信息", "物料绑定解绑");
                        throw new Exception("查询到该工装已经绑定了物料信息");
                        LogHelper.Info("查询到该工装托盘码已经绑定了物料信息", "物料绑定解绑");
                        throw new Exception("查询到该工装托盘码已经绑定了物料信息");
                    }
                    var Locations = db.Queryable<Location>().Where(e => e.S_CODE == model.LOCATION_CODE)?.First();
                    if (Locations == null)
@@ -937,6 +945,9 @@
                            ContainerHelper.delCntr(task.S_CNTR_CODE);
                            ContainerHelper.delCntrItem(task.S_CNTR_CODE);
                        }
                        else {
                           WcsTask.WcsCancellTask(wcsTask);
                        }
                        
                       
                        TaskHelper.Fail(wcsTask);
@@ -970,6 +981,9 @@
                        {
                            ContainerHelper.delCntr(task.S_CNTR_CODE);
                            ContainerHelper.delCntrItem(task.S_CNTR_CODE);
                        }
                        else {
                            WcsTask.WcsCancellTask(wcsTask);
                        }
                        TaskHelper.Fail(wcsTask);
                        TaskProcess.OperateStatus(wcsTask, 7);
@@ -1479,6 +1493,14 @@
                            {
                                //满托入
                                balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                                if (TOOLSTYPE == "25" || TOOLSTYPE == "35") {
                                    LogHelper.Info($"ZCSendTask入库任务工装是二合一库,需要物料均衡", "Mes任务下发");
                                    balanceLocList = LocationHelper.RoadWayBalance1ByItem(balanceLocList, model.PROD_NO);
                                }
                            }
                            else if (workFlow.FLOWCODE == "3")
                            {
@@ -1506,12 +1528,6 @@
                                            break;
                                        }
                                    }
                                    if (connection == "")
                                    {
                                        LogHelper.Info($"ZCSendTask入库任务下发没找到接驳位", "Mes任务下发");
                                        throw new Exception($"ZCSendTask入库任务下发没找到接驳位");
                                    }
                                    if (end!=null)
                                    {
                                        LogHelper.Info($"ZCSendTask入库任务下发寻找到终点{end.S_CODE}", "Mes任务下发");
@@ -1519,11 +1535,16 @@
                                    }
                                }
                            }
                            if (connection == "")
                            {
                                LogHelper.Info($"ZCSendTask入库任务下发没找到接驳位", "Mes任务下发");
                                throw new Exception($"ZCSendTask入库任务下发没找到接驳位");
                            }
                        }
                        else
                        {
                            LogHelper.Info($"ZCSendTask入库任务下发寻找接驳位失败", "Mes任务下发");
                            throw new Exception($"ZCSendTask入库任务下发寻找接驳位失败");
                            LogHelper.Info($"ZCSendTask入库任务下发寻找接驳位接口失败", "Mes任务下发");
                            throw new Exception($"ZCSendTask入库任务下发寻找接驳位接口失败");
                        }
                       
@@ -1580,7 +1601,7 @@
                        var EXPIRED_TIME = model.EXPIRED_TIME.ToString();
                        if (EXPIRED_TIME == "0001/1/1 0:00:00")
                        {
                            rel.expireTime = model.SHELF_LIFE_TIME.AddHours(model.EXPIRED_REP);
                            rel.expireTime = model.PRODUCE_TIME.AddHours(model.EXPIRED_REP);
                            LogHelper.Info($"失效时间为0001/1/1 0:00:00,修改为:{rel.expireTime}", "Mes任务下发");
                        }
                        else
@@ -1591,7 +1612,7 @@
                        var SHELF_LIFE_TIME = model.SHELF_LIFE_TIME.ToString();
                        if (SHELF_LIFE_TIME == "0001/1/1 0:00:00")
                        {
                            rel.takeEffectTime = model.SHELF_LIFE_TIME.AddHours(-model.SHELF_REP);
                            rel.takeEffectTime = model.PRODUCE_TIME.AddHours(-model.SHELF_REP);
                            LogHelper.Info($"生效时间为0001/1/1 0:00:00,修改为:{rel.takeEffectTime}", "Mes任务下发");
                        }
                        else
@@ -1763,7 +1784,7 @@
                    if (workFlow.FLOWCODE == "9")
                    if (workFlow.FLOWCODE == "9" || workFlow.FLOWCODE == "4")
                    {
                        if (TOOLSTYPE == "85" || TOOLSTYPE == "95")
                        {
@@ -1773,7 +1794,7 @@
                        else
                        {
                            //根据制品编号寻找立库区对应物料托盘
                            start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY);
                            start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY,workFlow.CONNECTION);
                            if (start == null)
                            {
                                strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA);