杨前锦
2025-07-01 a93b0e99036c24b9bd58c79bf5e7364b1ba28bae
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs
@@ -62,21 +62,13 @@
                        if (lineSideLoc != null)
                        {
                            LogHelper.Info($"成型机叫料任务,MES任务ID:{mesTask.ID}", "WMS");
                            // 2.1成新机叫料(斜裁)
                            if (mesTask.PALLET_TYPE == "5" || mesTask.PALLET_TYPE == "6")
                            {
                                // 2.1成新机叫料(斜裁)
                                var xcTask = WMSHelper.GetLjXcTaskById(mesTask.ID);
                                if (xcTask == null)
                                {
                                    ApiHelper.callMaterialXC(mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID);
                                }
                                else
                                {
                                    mesTask.RETURN_CODE = xcTask.RETURN_CODE;
                                    mesTask.RECEIVE_FLAG = xcTask.RECEIVE_FLAG;
                                    mesTask.RECEIVE_DATE = xcTask.RECEIVE_DATE;
                                    WMSHelper.updateLjMesTask(mesTask);
                                }
                            }
                            else
@@ -91,73 +83,53 @@
        }
        /// <summary>
        /// 监听XC出库任务中间表
        /// 读取斜裁立库出库任务表,查询任务是否执行完成,完成则,触发AGV任务
        /// 监听任务中间表
        /// </summary>
        public static void MonitorXcOutTask()
        public static void MonitorXcTask()
        {
           var xcOutTasks = WMSHelper.getLjXcOutTask("PENDING", "2");
            foreach (var outTask in xcOutTasks)
           var ljMesTasks = WMSHelper.GetLjMesTaskListHD();
            foreach (var mesTask in ljMesTasks)
            {
               var mesTask = WMSHelper.GetLjMesTaskById(outTask.ID);
                if (mesTask != null && mesTask.RETURN_CODE == "2")
               var xcTask = WMSHelper.GetLjXcTaskById(mesTask.ID);
                if (xcTask != null && xcTask.RETURN_CODE != mesTask.RETURN_CODE)
                {
                    Location startLoc = LocationHelper.GetLoc(outTask.POSITION_ID);
                    if (startLoc == null)
                    if (xcTask.RETURN_CODE == "3")
                    {
                        WMSHelper.addAlarmRecord("流程异常", "高", $"成型机叫料出库(斜裁),起点:{outTask.POSITION_ID}在WMS系统中不存在");
                    }
                    Location endLoc = WMSHelper.getCallMaterialLocCode(mesTask.EQP);
                    if (endLoc != null)
                        var wcsTask = WCSHelper.GetTask(xcTask.AGVORDER_ID);
                        if (wcsTask != null)
                    {
                        var wmsTask = WMSHelper.GetWmsTaskByCntr(outTask.PALLET_ID);
                        if (wmsTask == null)
                            var wmsTask = WMSHelper.GetWmsTask(wcsTask.S_OP_CODE);
                            if (wmsTask != null)
                        {
                            // 1.创建斜裁-成新机叫料作业
                            wmsTask = new WMSTask()
                                Location startLoc = LocationHelper.GetLoc(xcTask.POSITION_ID);
                                if (startLoc != null)
                            {
                                S_CNTR_CODE = outTask.PALLET_ID,
                                S_CODE = WMSHelper.GenerateTaskNo(),
                                S_START_LOC = startLoc.S_CODE,
                                S_START_AREA = startLoc.S_AREA_CODE,
                                S_END_LOC = endLoc.S_CODE,
                                S_END_AREA = endLoc.S_AREA_CODE,
                                S_TYPE = "叫料出库任务",
                                S_OP_DEF_CODE = mesTask.ID.ToString(),
                                S_OP_DEF_NAME = "成型机叫料出库任务(斜裁)",
                                T_START_TIME = DateTime.Now,
                            };
                            if (WMSHelper.CreateWmsTask(wmsTask))
                            {
                                WCSTask wcsTask = new WCSTask()
                                {
                                    S_OP_NAME = wmsTask.S_OP_DEF_NAME,
                                    S_OP_CODE = wmsTask.S_CODE,
                                    S_CODE = WCSHelper.GenerateTaskNo(),
                                    S_CNTR_CODE = wmsTask.S_CNTR_CODE,
                                    S_TYPE = wmsTask.S_TYPE,
                                    S_START_LOC = startLoc.S_CODE,
                                    S_START_AREA = startLoc.S_AREA_CODE,
                                    S_END_LOC = endLoc.S_CODE,
                                    S_END_AREA = endLoc.S_AREA_CODE,
                                    S_SCHEDULE_TYPE = "AGV",
                                    N_PRIORITY = 10,
                                    T_START_TIME = DateTime.Now,
                                };
                                    wcsTask.S_CNTR_CODE = xcTask.PALLET_ID;
                                    wcsTask.S_START_LOC = startLoc.S_CODE;
                                    wcsTask.S_START_AREA = startLoc.S_AREA_CODE;
                                    wcsTask.N_B_STATE = 0;
                                    wcsTask.S_B_STATE = "等待";
                                    WCSHelper.UpdateWcsTask(wcsTask);
                                if (WCSHelper.CreateTask(wcsTask))
                                {
                                    // 起点、终点加锁
                                    LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
                                    LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
                                    // 更新作业任务状态
                                    wmsTask.S_CNTR_CODE = xcTask.PALLET_ID;
                                    wmsTask.S_START_LOC = startLoc.S_CODE;
                                    wmsTask.S_START_AREA = startLoc.S_AREA_CODE;
                                    wmsTask.N_B_STATE = 1;
                                    WMSHelper.UpdateTaskState(wmsTask);
                                    wmsTask.S_B_STATE = "执行";
                                    WMSHelper.UpdateWmsTask(wmsTask);
                                    // 查询托盘物料信息表
                                    WMSHelper.updateCarrier(mesTask.PALLET_ID);
                                }
                            }
                        }
                    }
                    mesTask.POSITION_ID = xcTask.POSITION_ID;
                    mesTask.RETURN_CODE = xcTask.RETURN_CODE;
                    mesTask.YCL_BATCH = xcTask.YCL_BATCH;
                    mesTask.PALLET_ID = xcTask.PALLET_ID;
                    WMSHelper.updateLjMesTask(mesTask);
                }
            }
        }
@@ -260,6 +232,7 @@
            WMSHelper.updateMateral();
        }
        /// <summary>
        /// 定时更新库存信息  更新频率: 1分钟
        /// </summary>
@@ -272,13 +245,11 @@
                .Where((a,b) => a.N_CURRENT_NUM > 0 && b.S_CNTR_CODE != null && areaCodeList.Contains(a.S_AREA_CODE) )
                .ToList();
            // 删除所有库存信息,进行重置
            db.Deleteable<LjLotOnhand>().ExecuteCommand();
            foreach (var loc in locations)
            {
                var lotOnhand = db.Queryable<LjLotOnhand>().Where(a => a.STORAGE_LOCATION == loc.S_CODE).First();
                if (lotOnhand != null) {
                    db.Deleteable<LjLotOnhand>().Where(a => a.ID == lotOnhand.ID).ExecuteCommand();
                }
                var locCntrRels = LocationHelper.GetLocCntr(loc.S_CODE);
                if (locCntrRels != null && locCntrRels.Count > 0) 
                {