| | |
| | | /// </summary> |
| | | public static void AutoEmptyTrayOutStock() |
| | | { |
| | | foreach (var item in Settings.baseTrayBufferLocList) |
| | | var jbLocStatusList = WMSHelper.getAgvJBLocListByBusTypeAndWorkPattern(1, 1); |
| | | foreach (var item in jbLocStatusList) |
| | | { |
| | | Location endLoc = LocationHelper.GetLoc(item.bufferOutLoc); // 母拖出库接驳位 |
| | | Location endLoc = LocationHelper.GetLoc(item.S_LOC_CODE); // 母拖出库接驳位 |
| | | if (endLoc != null && endLoc.N_CURRENT_NUM == 0 && endLoc.N_LOCK_STATE == 0) |
| | | { |
| | | var cst = WCSHelper.GetTaskByStartAndEnd(endLoc.S_CODE); |
| | | if (cst == null) |
| | | { |
| | | ApiHelper.baseTrayOutStock(endLoc.S_CODE, null, 0); |
| | | ApiHelper.baseTrayOutStock(endLoc.S_CODE, null); |
| | | } |
| | | } |
| | | } |
| | |
| | | var emptyTrayBuffers = WMSHelper.getEmptyTrayBufferList(); |
| | | foreach (var buffer in emptyTrayBuffers) |
| | | { |
| | | if (buffer.T_CREATE.AddMinutes(1) > DateTime.Now) |
| | | var dateTime = DateTime.Now.AddMinutes(-1); |
| | | if (buffer.T_CREATE < dateTime) |
| | | { |
| | | Location startLoc = WMSHelper.GetEmptyTrayStartLoc(buffer.TRAY_TYPE); |
| | | Location middleLoc = null; |
| | |
| | | cntrCode = cntrCode.Substring(1, cntrCode.Length - 1); |
| | | } |
| | | |
| | | var locCodes = Settings.getAgvJBLocList( startLoc.N_ROADWAY, 2); |
| | | if (locCodes.Count > 0) |
| | | var descContainer = ContainerHelper.GetCntr(descCntrCode); |
| | | if (descContainer != null) |
| | | { |
| | | middleLoc = LocationHelper.GetLoc(locCodes[0]); |
| | | } |
| | | } |
| | | |
| | | Location endLoc = LocationHelper.GetLoc(buffer.END_LOC); |
| | | |
| | | if (startLoc != null && endLoc != null) |
| | | { |
| | | var wmsTask = new WMSTask() |
| | | { |
| | | S_CNTR_CODE = descCntrCode, |
| | | 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 = buffer.TASK_NO, |
| | | S_OP_DEF_NAME = "空托出库任务", |
| | | N_PRIORITY = buffer.PRIORITY, |
| | | T_START_TIME = DateTime.Now, |
| | | }; |
| | | |
| | | if (WMSHelper.CreateWmsTask(wmsTask)) |
| | | { |
| | | // 创建一段出库任务 |
| | | WCSTask wcsTask = new WCSTask() |
| | | int isExistBaseTray = 2; |
| | | if (descContainer.N_TYPE == 4) |
| | | { |
| | | S_OP_NAME = wmsTask.S_OP_DEF_NAME, |
| | | S_OP_CODE = wmsTask.S_CODE, |
| | | S_CODE = WCSHelper.GenerateTaskNo(), |
| | | S_CNTR_CODE = cntrCode, |
| | | S_TYPE = wmsTask.S_TYPE + "-1", |
| | | S_START_LOC = startLoc.S_CODE, |
| | | S_START_AREA = startLoc.S_AREA_CODE, |
| | | S_END_LOC = middleLoc.S_CODE, |
| | | S_END_AREA = middleLoc.S_AREA_CODE, |
| | | S_SCHEDULE_TYPE = "WCS", |
| | | N_PRIORITY = 1, |
| | | T_START_TIME = DateTime.Now, |
| | | }; |
| | | |
| | | if (WCSHelper.CreateTask(wcsTask)) |
| | | isExistBaseTray = 1; |
| | | } |
| | | middleLoc = WMSHelper.getAgvJBLoc(startLoc.N_ROADWAY, 2, isExistBaseTray, 1); |
| | | Location endLoc = LocationHelper.GetLoc(buffer.END_LOC); |
| | | if (middleLoc != null) |
| | | { |
| | | // 起点、接驳点、终点加锁 |
| | | LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); |
| | | LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); |
| | | if (endLoc != null) |
| | | { |
| | | var wmsTask = new WMSTask() |
| | | { |
| | | S_CNTR_CODE = descCntrCode, |
| | | 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 = buffer.TASK_NO, |
| | | S_OP_DEF_NAME = "空托出库任务", |
| | | N_PRIORITY = buffer.PRIORITY, |
| | | T_START_TIME = DateTime.Now, |
| | | }; |
| | | |
| | | // 更新作业任务状态 |
| | | wmsTask.N_B_STATE = 1; |
| | | WMSHelper.UpdateTaskState(wmsTask); |
| | | 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 = cntrCode, |
| | | S_TYPE = wmsTask.S_TYPE + "-1", |
| | | S_START_LOC = startLoc.S_CODE, |
| | | S_START_AREA = startLoc.S_AREA_CODE, |
| | | S_END_LOC = middleLoc.S_CODE, |
| | | S_END_AREA = middleLoc.S_AREA_CODE, |
| | | S_SCHEDULE_TYPE = "WCS", |
| | | N_PRIORITY = 1, |
| | | 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); |
| | | |
| | | buffer.IS_CREATED = "Y"; |
| | | WMSHelper.updateEmptyTrayBuffer(buffer); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"【缓存空托自动出库】上游任务号:{buffer.TASK_NO},终点货位不存在", "WMS"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"【缓存空托自动出库】上游任务号:{buffer.TASK_NO},未查询到接驳位", "WMS"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |