cjs
cjs
2025-05-20 067c69928ce6d3d3ed5710fd9652af7b3380dcd5
HH.WCS.Mobox3.NongFuLinZhi/core/WMSCore.cs
@@ -35,74 +35,6 @@
        }
        /// <summary>
        /// 遍历分拣单明细创建出库作业
        /// </summary>
        internal static void CheckSortingTask()
        {
            var db = new SqlHelper<object>().GetInstance();
            //new SortingOrder().N_B_STATE
            //遍历N_B_STATE = 3的分拣单创建作业
            //或 遍历分拣单明细创建分拣作业,因为一个分拣单里面的明细都是批量生成的
            var list = WMSHelper.GetWaitingSortingOperationList();
            LogHelper.Info($"获取配盘数量 {list.Count}");
            if (list.Count > 0)
            {
                list.ForEach(a =>
                {
                    var startloc = db.Queryable<Location>().Where(it => it.S_CODE == a.S_LOC_CODE).First();
                    if (startloc != null && startloc.S_LOCK_STATE == "其它锁")
                    {
                        Location endbit = null;
                        //计算托盘进行出库
                        if (endbit != null)
                        {
                            var optask = new WMSTask
                            {
                                S_CODE = WMSHelper.GenerateTaskNo(),
                                S_START_LOC = a.S_LOC_CODE,
                                S_START_AREA = startloc.S_AREA_CODE,
                                S_START_WH = startloc.S_WH_CODE,
                                S_END_LOC = endbit.S_CODE,
                                S_END_AREA = endbit.S_AREA_CODE,
                                S_END_WH = endbit.S_WH_CODE,
                                S_STATION_LOC = a.S_OUT_TO,
                                S_TYPE = "出库",
                                N_TYPE = 2,
                                N_B_STATE = 0,
                                S_CNTR_CODE = a.S_CNTR_CODE,
                                S_OP_DEF_NAME = a.S_BS_TYPE
                            };
                            var note = Settings.Tasktypes.Where(it => it.StartArea == optask.S_START_AREA && it.EndArea == optask.S_END_AREA).FirstOrDefault();
                            if (note != null)
                            {
                                optask.S_NOTE = note.TaskType;
                            }
                            var res = db.Insertable(optask).ExecuteCommand() > 0;
                            if (res)
                            {
                                startloc.N_LOCK_STATE = 2;
                                startloc.S_LOCK_STATE = "出库锁";
                                db.Updateable(startloc).UpdateColumns(it => new { it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand();
                                LocationHelper.LockLoc(endbit.S_CODE, 1);
                                a.N_B_STATE = 2;
                                a.S_B_STATE = "作业启动";
                                db.Updateable(a).UpdateColumns(it => new { it.S_B_STATE, it.N_B_STATE }).ExecuteCommand();
                            }
                        }
                        else LogHelper.Info($"配盘 未找到可用分拣货位");
                    }
                    else LogHelper.Info($"配盘 未找到出库口库区编码{a.S_EXIT_AREA_CODE} 对应的配置文件");
                });
            }
        }
        /// <summary>
        /// 作业启动,创建子任务
        /// </summary>
        internal static void Start()
@@ -144,6 +76,7 @@
                                    S_END_AREA = endinfo.S_AREA_CODE,
                                    S_END_WH = endinfo.S_WH_CODE,
                                    S_SCHEDULE_TYPE = "NDC",
                                    S_WORK_MODE = "agv",
                                    N_CNTR_COUNT = 1,
                                    S_CNTR_CODE = a.S_CNTR_CODE,
                                    N_START_LAYER = startinfo.N_CURRENT_NUM,
@@ -188,6 +121,7 @@
                                    S_END_AREA = endinfo.S_AREA_CODE,
                                    S_END_WH = endinfo.S_WH_CODE,
                                    S_SCHEDULE_TYPE = "NDC",
                                    S_WORK_MODE = "agv",
                                    N_CNTR_COUNT = 1,
                                    S_CNTR_CODE = a.S_CNTR_CODE,
                                    N_START_LAYER = startinfo.N_CURRENT_NUM,