lss
2025-07-07 ba528c7a15058967ee3af7364035209aa0048025
HH.WCS.Mobox3/HH.WCS.Mobox3.DaYang/core/WMSCore.cs
@@ -1,5 +1,6 @@
using HH.WCS.DaYang.util;
using HH.WCS.DaYang.wms;
using Opc.Ua;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -55,7 +56,11 @@
                    {
                        if (!string.IsNullOrEmpty(a.S_END_LOC))
                        {
                            string JbwLoc = "";
                            var jbwloc = db.Queryable<Location>().Where(b => b.S_CODE == "XTGKW-1-1").First();
                            if (jbwloc == null)
                            {
                                LogHelper.Info("创建出库任务未找到接驳位货位编码,请假查接驳位置货位");
                            }
                            //创建agv搬运任务
                            var wcsTask1 = new WCSTask
                            {
@@ -64,7 +69,9 @@
                                S_CODE = WCSHelper.GenerateTaskNo(),
                                S_TYPE = "空托回库",
                                S_START_LOC = a.S_START_LOC,
                                S_END_LOC = JbwLoc,
                                S_START_AREA = a.S_START_AREA,
                                S_END_LOC = jbwloc.S_CODE,
                                S_END_AREA = jbwloc.S_AREA_CODE,
                                N_SCHEDULE_TYPE = 1,
                                N_CNTR_COUNT = 1,
                                S_CNTR_CODE = a.S_CNTR_CODE,
@@ -77,8 +84,10 @@
                                S_OP_NAME = "入库",
                                S_CODE = WCSHelper.GenerateTaskNo(),
                                S_TYPE = "空托回库",
                                S_START_LOC = JbwLoc,
                                S_START_LOC = jbwloc.S_CODE,
                                S_START_AREA = jbwloc.S_AREA_CODE,
                                S_END_LOC = a.S_END_LOC,
                                S_END_AREA = a.S_END_AREA,
                                N_SCHEDULE_TYPE = 2,
                                N_CNTR_COUNT = 1,
                                S_CNTR_CODE = a.S_CNTR_CODE,
@@ -100,44 +109,64 @@
                    {
                        #region MyRegion
                        //判断外侧有没有托盘,需不需要移库
                        var StartLoc = db.Queryable<Location>().Where(b => b.S_AREA_CODE == a.S_START_AREA && b.S_CODE == a.S_START_LOC).First();
                        var OutLoc = db.Queryable<Location>().Where(b => b.S_AREA_CODE == StartLoc.S_AREA_CODE && b.N_LAYER == StartLoc.N_LAYER && b.N_POS == 1 && b.N_CURRENT_NUM == 1 && b.N_LOCK_STATE == 0).First();
                        if (OutLoc != null)
                        var StartLoc = db.Queryable<Location>().Where(b => b.S_CODE == a.S_START_LOC).First();
                        if (StartLoc.N_POS == 1)
                        {
                            var YiKuLoc = LocationHelper.InStorage(OutLoc);
                            if (YiKuLoc != null)
                            var OutLoc = db.Queryable<Location>().Where(b => b.S_AREA_CODE == StartLoc.S_AREA_CODE && b.N_LAYER == StartLoc.N_LAYER && b.N_POS == 2 && b.N_CURRENT_NUM == 1 && b.N_LOCK_STATE == 0).First();
                            if (OutLoc != null)
                            {
                                var wcsTask = new WCSTask
                                //根据起点获取托盘和托盘物料绑定关系
                                string itemCode = "";
                                var cntrLoc = LocationHelper.GetLocCntr(OutLoc.S_CODE).FirstOrDefault();
                                if (cntrLoc != null)
                                {
                                    S_OP_CODE = a.S_CODE,
                                    S_OP_NAME = "出库",
                                    S_CODE = WCSHelper.GenerateTaskNo(),
                                    S_TYPE = "移库",
                                    S_START_LOC = OutLoc.S_CODE,
                                    S_END_LOC = YiKuLoc.S_CODE,
                                    N_SCHEDULE_TYPE = 2,
                                    N_CNTR_COUNT = 1,
                                    S_CNTR_CODE = a.S_CNTR_CODE,
                                };
                                if (WCSHelper.CreateTask(wcsTask) )
                                {
                                    //更新作业状态为执行
                                    LocationHelper.LockLoc(OutLoc.S_CODE, 2);
                                    LocationHelper.LockLoc(YiKuLoc.S_CODE, 1);
                                    //获取托盘物料绑定关系
                                    var cntrItem = db.Queryable<CntrItemDetail>().Where(b => b.S_CNTR_CODE == cntrLoc.S_CNTR_CODE).First();
                                    if (cntrItem != null)
                                    {
                                        itemCode = cntrItem.S_ITEM_CODE;
                                    }
                                }
                                var YiKuLoc = LocationHelper.InStorage(itemCode);
                                if (YiKuLoc != null)
                                {
                                    var wcsTask = new WCSTask
                                    {
                                        S_OP_CODE = a.S_CODE,
                                        S_OP_NAME = "出库",
                                        S_CODE = WCSHelper.GenerateTaskNo(),
                                        S_TYPE = "移库",
                                        S_START_LOC = OutLoc.S_CODE,
                                        S_END_LOC = YiKuLoc.S_CODE,
                                        N_SCHEDULE_TYPE = 2,
                                        N_CNTR_COUNT = 1,
                                        S_CNTR_CODE = a.S_CNTR_CODE,
                                    };
                                    if (WCSHelper.CreateTask(wcsTask))
                                    {
                                        //更新作业状态为执行
                                        LocationHelper.LockLoc(OutLoc.S_CODE, 2);
                                        LocationHelper.LockLoc(YiKuLoc.S_CODE, 1);
                                    }
                                }
                                else
                                {
                                    LogHelper.Info($"作业:{a.S_CODE}外侧货位{OutLoc.S_CODE},未计算到移库货位,作业不启动");
                                    return;
                                }
                            }
                            else
                            {
                                LogHelper.Info($"作业:{a.S_CODE}外侧货位{OutLoc.S_CODE},未计算到移库货位,作业不启动");
                                return;
                            }
                            ;
                        }
                        #endregion
                        string JbwLoc = "";
                       // string JbwLoc = "XTGKW-1-1";
                        var jbwloc= db.Queryable<Location>().Where(b => b.S_CODE == "XTGKW-1-1").First();
                        if (jbwloc == null)
                        {
                            LogHelper.Info("创建出库任务未找到接驳位货位编码,请假查接驳位置货位");
                        }
                        //创建wcs任务
                        var wcsTask1 = new WCSTask
                        {
@@ -146,21 +175,25 @@
                            S_CODE = WCSHelper.GenerateTaskNo(),
                            S_TYPE = "出库",
                            S_START_LOC = a.S_START_LOC,
                            S_END_LOC = JbwLoc,
                            S_START_AREA = a.S_START_AREA,
                            S_END_LOC = jbwloc.S_CODE,
                            S_END_AREA = jbwloc.S_AREA_CODE,
                            N_SCHEDULE_TYPE = 2,
                            N_CNTR_COUNT = 1,
                            S_CNTR_CODE = a.S_CNTR_CODE,
                        };
                        //创建wcs回库任务
                        //创建agv出库任务
                        var wcsTask2 = new WCSTask
                        {
                            S_OP_CODE = a.S_CODE,
                            S_OP_NAME = "出库",
                            S_CODE = WCSHelper.GenerateTaskNo(),
                            S_TYPE = "出库",
                            S_START_LOC = JbwLoc,
                            S_START_LOC = jbwloc.S_CODE,
                            S_START_AREA = jbwloc.S_AREA_CODE,
                            S_END_LOC = a.S_END_LOC,
                            S_END_AREA = a.S_END_AREA,
                            N_SCHEDULE_TYPE = 1,
                            N_CNTR_COUNT = 1,
                            S_CNTR_CODE = a.S_CNTR_CODE,