杨前锦
2025-06-13 b7308bba3d7ffad271ce7fc7a93c8c45d76be87d
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs
@@ -23,55 +23,67 @@
    /// </summary>
    internal class Monitor
    {
        /// <summary>
        /// 监听MES任务中间表
        /// 1.钢包满料下线
        /// 2.成型机叫料
        /// 监听钢包满料下线MES任务
        /// </summary>
        public static void MonitorMesTask() {
            LogHelper.Info("监听MES任务中间表", "WMS");
        public static void MonitorGBOffLineMesTask()
        {
            var mesTaskList = WMSHelper.GetLjMesTaskList("PENDING");
            foreach (var mesTask in mesTaskList)
            if (mesTaskList.Count > 0)
            {
                // 1.钢包满料下线
                List<string> lineLoclist = new List<string>() { };
                lineLoclist.Add("GBJTW-01");
                lineLoclist.Add("GBJTW-02");
                if (mesTask.MSG_TYPE == "1" && mesTask.PALLET_TYPE == "7" && lineLoclist.Contains(mesTask.PALLET_ID))
                mesTaskList = mesTaskList.Where(a => a.MSG_TYPE == "1" && a.PALLET_TYPE == "7").ToList();
                if (mesTaskList.Count > 0)
                {
                    LogHelper.Info("MES钢包满料下线任务", "WMS");
                    OffLineRequest request = new OffLineRequest(){ loc = mesTask.POSITION_ID, cntrNo = mesTask.PALLET_ID};
                    ApiHelper.offLineProcess(request);
                }
                // 2.成新机叫料
                if (mesTask.MSG_TYPE == "0") {
                    var lineSideLoc = WMSHelper.GetLineSideLoc(mesTask.POSITION_ID);
                    if (lineSideLoc != null )
                    foreach (var mesTask in mesTaskList)
                    {
                        LogHelper.Info("MES成新机叫料任务", "WMS");
                        LogHelper.Info("MES钢包满料下线任务", "WMS");
                        OffLineRequest request = new OffLineRequest() { loc = mesTask.POSITION_ID, cntrNo = mesTask.PALLET_ID };
                        ApiHelper.offLineProcess(request);
                    }
                }
            }
        }
                        // 2.1成新机叫料(斜裁)
                        if (mesTask.PALLET_TYPE == "5" || mesTask.PALLET_TYPE == "6")
        /// <summary>
        /// 监听成型机叫料MES任务
        /// </summary>
        public static void MonitorCXJCallMaterialMesTask()
        {
            var mesTaskList = WMSHelper.GetLjMesTaskList("PENDING");
            if (mesTaskList.Count > 0)
            {
                mesTaskList = mesTaskList.Where(a => a.MSG_TYPE == "0").ToList();
                if (mesTaskList.Count > 0)
                {
                    foreach (var mesTask in mesTaskList)
                    {
                        var lineSideLoc = WMSHelper.GetLineSideLoc(mesTask.EQP);
                        if (lineSideLoc != null)
                        {
                            var xcTask = WMSHelper.GetLjXcTaskById(mesTask.ID);
                            if (xcTask == null)
                            LogHelper.Info($"成型机叫料任务,MES任务ID:{mesTask.ID}", "WMS");
                            // 2.1成新机叫料(斜裁)
                            if (mesTask.PALLET_TYPE == "5" || mesTask.PALLET_TYPE == "6")
                            {
                                ApiHelper.callMaterialHDK(mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID);
                                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
                            {
                                mesTask.RETURN_CODE = xcTask.RETURN_CODE;
                                mesTask.RECEIVE_FLAG = xcTask.RECEIVE_FLAG;
                                mesTask.RECEIVE_DATE = xcTask.RECEIVE_DATE;
                                WMSHelper.updateLjMesTask(mesTask);
                                // 2.2 成新机叫料
                                ApiHelper.callMaterial(mesTask.MATERIAL_CODE, mesTask.EQP, mesTask.ID);
                            }
                        }
                        else
                        {
                            // 2.2 成新机叫料
                            ApiHelper.callMaterial(mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID);
                        }
                    }
                }
@@ -91,12 +103,15 @@
                if (mesTask != null && mesTask.RETURN_CODE == "2")
                {
                    Location startLoc = LocationHelper.GetLoc(outTask.POSITION_ID);
                    Location endLoc = LocationHelper.GetLoc(mesTask.POSITION_ID);
                    var wmsTask = WMSHelper.GetWmsTaskByCntr(outTask.PALLET_ID);
                    if (wmsTask == null)
                    if (startLoc == null)
                    {
                        if (startLoc.N_LOCK_STATE == 0 && endLoc.N_LOCK_STATE == 0)
                        WMSHelper.addAlarmRecord("流程异常", "高", $"成型机叫料出库(斜裁),起点:{outTask.POSITION_ID}在WMS系统中不存在");
                    }
                    Location endLoc = WMSHelper.getCallMaterialLocCode(mesTask.EQP);
                    if (endLoc != null)
                    {
                        var wmsTask = WMSHelper.GetWmsTaskByCntr(outTask.PALLET_ID);
                        if (wmsTask == null)
                        {
                            // 1.创建斜裁-成新机叫料作业
                            wmsTask = new WMSTask()
@@ -141,39 +156,6 @@
                                    WMSHelper.UpdateTaskState(wmsTask);
                                }
                            }
                        }
                        else
                        {
                            LogHelper.Info($"XC出库任务ID:{mesTask.ID},无法生成叫料任务,起点或终点上锁", "斜裁");
                        }
                    }
                    else
                    {
                        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,
                        };
                        if (WCSHelper.CreateTask(wcsTask))
                        {
                            // 起点、终点加锁
                            LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
                            LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
                            // 更新作业任务状态
                            wmsTask.N_B_STATE = 1;
                            WMSHelper.UpdateTaskState(wmsTask);
                        }
                    }
                }