| | |
| | | /// </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); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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() |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |