| | |
| | | ReturnResult result = new ReturnResult(); |
| | | try |
| | | { |
| | | Location startLoc = WMSHelper.GetEmptyTrayStartLoc(model.trayType); |
| | | Location middleLoc = null; |
| | | string cntrCode = ""; |
| | | string descCntrCode = ""; |
| | | if (startLoc != null) |
| | | EmptyTrayBuffer buffer = new EmptyTrayBuffer() |
| | | { |
| | | // 查询货位容器编码 、目标容器编码 |
| | | var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE); |
| | | if (locCntrRels.Count > 0) |
| | | { |
| | | foreach (var item in locCntrRels) |
| | | { |
| | | var container = ContainerHelper.GetCntr(item.S_CNTR_CODE); |
| | | if (model.trayType == container.N_TYPE) |
| | | { |
| | | descCntrCode = item.S_CNTR_CODE; |
| | | } |
| | | cntrCode = cntrCode + "," + item.S_CNTR_CODE; |
| | | } |
| | | cntrCode = cntrCode.Substring(1, cntrCode.Length - 1); |
| | | } |
| | | |
| | | var locCodes = Settings.getAgvJBLocList(1, startLoc.N_ROADWAY, 2); |
| | | if (locCodes.Count > 0) |
| | | { |
| | | middleLoc = LocationHelper.GetLoc(locCodes[0]); |
| | | } |
| | | } |
| | | |
| | | Location endLoc = LocationHelper.GetLoc(model.endLoc); |
| | | if (endLoc == null) |
| | | { |
| | | result.ResultCode = 1; |
| | | result.ResultMsg = "WMS系统没有该货位,请检查终点货位编码是否正确"; |
| | | return result; |
| | | } |
| | | |
| | | if (startLoc != 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 = model.taskNo, |
| | | S_OP_DEF_NAME = "空托出库任务", |
| | | N_PRIORITY = model.priority, |
| | | 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 = 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); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | result.ResultCode = 1; |
| | | result.ResultMsg = "库内没有查到空托盘"; |
| | | } |
| | | TASK_NO = model.taskNo, |
| | | TRAY_TYPE = model.trayType, |
| | | END_LOC = model.endLoc, |
| | | PRIORITY = model.priority, |
| | | }; |
| | | WMSHelper.addEmptyTrayBuffer(buffer); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | ReturnResult result = new ReturnResult(); |
| | | try |
| | | { |
| | | Location startLoc = WMSHelper.GetoutStockStartLoc(model.itemCode); |
| | | Location middleLoc = null; |
| | | string descCntrCode = ""; |
| | | string cntrCode = ""; |
| | | if (startLoc != null) |
| | | Location endLoc = LocationHelper.GetLoc(model.endLoc); |
| | | if (endLoc.N_CURRENT_NUM == 0) |
| | | { |
| | | // 查询接驳位 |
| | | var locCodes = Settings.getAgvJBLocList(1, startLoc.N_ROADWAY, 2); |
| | | if (locCodes.Count > 0) |
| | | int taskNum = 0; |
| | | for (int i = 0; i < endLoc.N_CAPACITY; i++) |
| | | { |
| | | middleLoc = LocationHelper.GetLoc(locCodes[0]); |
| | | Location startLoc = WMSHelper.GetoutStockStartLoc(model.itemCode); |
| | | Location middleLoc = null; |
| | | string descCntrCode = ""; |
| | | string cntrCode = ""; |
| | | if (startLoc != null) |
| | | { |
| | | // 查询接驳位 |
| | | var locCodes = Settings.getAgvJBLocList(startLoc.N_ROADWAY, 2); |
| | | if (locCodes.Count > 0) |
| | | { |
| | | middleLoc = LocationHelper.GetLoc(locCodes[0]); |
| | | } |
| | | |
| | | // 查询货位容器编码 、目标容器编码 |
| | | var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE); |
| | | if (locCntrRels.Count > 0) |
| | | { |
| | | foreach (var item in locCntrRels) |
| | | { |
| | | var cntrItemRels = ContainerHelper.GetCntrItemRel(item.S_CNTR_CODE); |
| | | if (cntrItemRels.Count > 0) |
| | | { |
| | | descCntrCode = cntrItemRels[0].S_CNTR_CODE; |
| | | } |
| | | cntrCode = cntrCode + "," + item.S_CNTR_CODE; |
| | | } |
| | | cntrCode = cntrCode.Substring(1, cntrCode.Length - 1); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"库内没有物料:{model.itemCode}", "WMS"); |
| | | break; |
| | | } |
| | | |
| | | |
| | | 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 = model.taskNo, |
| | | S_OP_DEF_NAME = "成型机叫料出库任务", |
| | | N_PRIORITY = model.priority, |
| | | 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 = 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); |
| | | taskNum++; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 查询货位容器编码 、目标容器编码 |
| | | var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE); |
| | | if (locCntrRels.Count > 0) |
| | | if (taskNum < endLoc.N_CAPACITY) |
| | | { |
| | | foreach (var item in locCntrRels) |
| | | { |
| | | var cntrItemRels = ContainerHelper.GetCntrItemRel(item.S_CNTR_CODE); |
| | | if (cntrItemRels.Count > 0) |
| | | { |
| | | descCntrCode = cntrItemRels[0].S_CNTR_CODE; |
| | | } |
| | | cntrCode = cntrCode + "," + item.S_CNTR_CODE; |
| | | } |
| | | cntrCode = cntrCode.Substring(1, cntrCode.Length - 1); |
| | | result.ResultCode = 1; |
| | | result.ResultMsg = $"库内物料不足,已生成出库任务数:{taskNum}"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | result.ResultCode = 1; |
| | | result.ResultMsg = "库内没有满足条件的物料"; |
| | | return result; |
| | | } |
| | | |
| | | Location endLoc = LocationHelper.GetLoc(model.endLoc); |
| | | 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 = model.taskNo, |
| | | S_OP_DEF_NAME = "成型机叫料出库任务", |
| | | N_PRIORITY = model.priority, |
| | | 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 = 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); |
| | | } |
| | | } |
| | | result.ResultMsg = "终点货位当前容量不为0,无法叫料"; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | |
| | | /// <param name="loc"></param> |
| | | /// <param name="wmsTaskNo"></param> |
| | | /// <returns></returns> |
| | | public static ReturnResult baseTrayInStockAgv(string loc, string wmsTaskNo) |
| | | public static ReturnResult autoBaseTrayInStock(string loc, string wmsTaskNo) |
| | | { |
| | | ReturnResult result = new ReturnResult(); |
| | | try |
| | |
| | | if (cst == null) |
| | | { |
| | | Location startLoc = LocationHelper.GetLoc(loc); |
| | | Location endLoc = LocationHelper.GetLoc(Settings.baseTrayInBufferLoc); |
| | | if (!(endLoc != null && endLoc.N_CURRENT_NUM == 0)) |
| | | Location endLoc = null; |
| | | var baseTrayBufferLoc = Settings.baseTrayBufferLocList.Where(a => a.bufferOutLoc == loc).FirstOrDefault(); |
| | | if (baseTrayBufferLoc != null) |
| | | { |
| | | endLoc = LocationHelper.GetLoc(baseTrayBufferLoc.bufferInLoc); |
| | | } |
| | | if (endLoc == null || endLoc.N_CURRENT_NUM > 0) |
| | | { |
| | | endLoc = WMSHelper.GetInstockEndLoc(0, loc, 2); |
| | | } |
| | |
| | | /// <param name="loc"></param> |
| | | /// <param name="wmsTaskNo"></param> |
| | | /// <returns></returns> |
| | | public static ReturnResult baseTrayOutStockAgv(string loc, string wmsTaskNo) |
| | | public static ReturnResult autoBaseTrayOutStock(string loc, string wmsTaskNo) |
| | | { |
| | | ReturnResult result = new ReturnResult(); |
| | | try |