lss
2025-06-20 b2c070eaf8cc59b40d27bda904312d0c394a51f4
HH.WCS.Mobox3/HH.WCS.Mobox3.DaYang/core/WMSCore.cs
@@ -1,4 +1,6 @@
using HH.WCS.DaYang.wms;
using HH.WCS.DaYang.util;
using HH.WCS.DaYang.wms;
using Opc.Ua;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -45,6 +47,7 @@
            List<WMSTask> list = WMSHelper.GetWaitingOperationList();
            if (list.Count > 0)
            {
                var db = new SqlHelper<WCSTask>().GetInstance();
                //空托回库任务创建
                list.ForEach(a =>
                {
@@ -96,6 +99,56 @@
                    }
                    else if (a.N_TYPE == 2)
                    {
                        #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)
                        {
                            //根据起点获取托盘和托盘物料绑定关系
                           string itemCode = "";
                            var cntrLoc = LocationHelper.GetLocCntr(OutLoc.S_CODE).FirstOrDefault();
                            if (cntrLoc != null)
                            {
                                //获取托盘物料绑定关系
                                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;
                            }
                            ;
                        }
                        #endregion
                        string JbwLoc = "";
@@ -138,7 +191,6 @@
                            WMSHelper.UpdateTaskState(a);
                        }
                    }
                });