| | |
| | | /// <summary> |
| | | /// AGV申请终点 |
| | | /// 顺序 RFID验证 -> RFID与任务号验证 -> 物料合格状态验证 -> 虚拟终点 |
| | | /// 申请类型: 1.虚拟终点 2.RFID与任务不匹配 3.物料状态不合格 |
| | | /// 申请类型: 1.正常 2.异常 |
| | | /// 入库策略:先计算库区的容积率,再计算库区对应的入库站台的任务数,都取最小的 |
| | | /// |
| | | /// 1.确定任务是否在执行中 |
| | |
| | | { |
| | | WMSHelper.addAlarmRecord("系统错误","高", $"AGV申请终点,WMS内部错误,错误原因:{ex.Message}", "AGV"); |
| | | } |
| | | return null; |
| | | LogHelper.Info($"变更AGV终点:{applyDest}", "AGV"); |
| | | return applyDest; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <returns></returns> |
| | | public static string applyAgvDestXC(string applyType, WMSTask mst, WCSTask cst) |
| | | { |
| | | string destLoc = null; |
| | | Location agvEndLoc = null; |
| | | Location wmsEndLoc = null; |
| | | Location endLoc = null; |
| | | if (applyType == "1") |
| | | { |
| | | if (mst.S_TYPE == "余料/空工装入库") |
| | |
| | | // 取消任务 |
| | | ApiHelper.cancelTask(awaitTask.S_CODE); |
| | | // 修改终点 |
| | | agvEndLoc = LocationHelper.GetLoc(awaitTask.S_END_LOC); |
| | | wmsEndLoc = agvEndLoc; |
| | | endLoc = LocationHelper.GetLoc(awaitTask.S_END_LOC); |
| | | mst.S_TYPE = "叫料出库任务"; |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | if (agvEndLoc == null) |
| | | if (endLoc == null) |
| | | { |
| | | string msg = ""; |
| | | if (applyType == "2" || applyType == "3" || applyType == "4") |
| | | if (applyType == "2") |
| | | { |
| | | cst.S_TYPE = cst.S_TYPE + "【异常】"; |
| | | msg = "工装异常"; |
| | | } |
| | | |
| | | // TODO 反馈斜裁立库异常,请求斜裁入库终点 |
| | | agvEndLoc = null; |
| | | |
| | | string locCode = "XCCRKZTKQ-1-1"; |
| | | endLoc = LocationHelper.GetLoc(locCode); |
| | | } |
| | | |
| | | if (agvEndLoc != null) |
| | | if (endLoc != null) |
| | | { |
| | | destLoc = agvEndLoc.S_CODE; |
| | | |
| | | cst.S_END_LOC = agvEndLoc.S_CODE; |
| | | cst.S_END_AREA = agvEndLoc.S_AREA_CODE; |
| | | cst.S_END_LOC = endLoc.S_CODE; |
| | | cst.S_END_AREA = endLoc.S_AREA_CODE; |
| | | WCSHelper.UpdateEndLoc(cst); |
| | | } |
| | | |
| | | if (wmsEndLoc != null) |
| | | { |
| | | mst.S_END_LOC = wmsEndLoc.S_CODE; |
| | | mst.S_END_AREA = wmsEndLoc.S_AREA_CODE; |
| | | mst.S_END_LOC = endLoc.S_CODE; |
| | | mst.S_END_AREA = endLoc.S_AREA_CODE; |
| | | WMSHelper.UpdateTaskEnd(mst); |
| | | |
| | | return endLoc.S_CODE; |
| | | } |
| | | return destLoc; |
| | | return null; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (agvEndLoc != null && wmsEndLoc != null) |
| | | { |
| | | destLoc = agvEndLoc.S_CODE; |
| | | cst.S_END_LOC = agvEndLoc.S_CODE; |
| | | cst.S_END_AREA = agvEndLoc.S_AREA_CODE; |
| | | WCSHelper.UpdateEndLoc(cst); |
| | | |
| | | mst.S_END_LOC = wmsEndLoc.S_CODE; |
| | | mst.S_END_AREA = wmsEndLoc.S_AREA_CODE; |
| | | WMSHelper.UpdateTaskEnd(mst); |
| | | } |
| | | |
| | | // 重新发起新任务 |
| | | if (applyType != "1") |
| | | { |
| | | var mesTask = WMSHelper.GetLjMesTaskByAgvorderId(mst.S_CODE); |
| | | if (mesTask != null) |
| | | if (mesTask != null) |
| | | { |
| | | if (mst.S_TYPE.Contains("叫料出库任务")) |
| | | { |
| | |
| | | var logicConfig = WMSHelper.getLogicConfigByJtCode(mesTask.EQP); |
| | | if (logicConfig != null) |
| | | { |
| | | triggerItemOffLineFlow4(mesTask.POSITION_ID, mst.S_CNTR_CODE, logicConfig ,mesTask); |
| | | triggerItemOffLineFlow4(mesTask.POSITION_ID, mst.S_CNTR_CODE, logicConfig, mesTask); |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (agvEndLoc != null && wmsEndLoc != null) |
| | | { |
| | | destLoc = agvEndLoc.S_CODE; |
| | | cst.S_END_LOC = agvEndLoc.S_CODE; |
| | | cst.S_END_AREA = agvEndLoc.S_AREA_CODE; |
| | | WCSHelper.UpdateEndLoc(cst); |
| | | |
| | | mst.S_END_LOC = wmsEndLoc.S_CODE; |
| | | mst.S_END_AREA = wmsEndLoc.S_AREA_CODE; |
| | | WMSHelper.UpdateTaskEnd(mst); |
| | | } |
| | | return destLoc; |
| | | } |
| | |
| | | if (locCntrRels.Count > 0) |
| | | { |
| | | cntrCode = locCntrRels[0].S_CNTR_CODE; |
| | | middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, 1, 2); |
| | | middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, 2, 2); |
| | | if (middleLoc != null) |
| | | { |
| | | // 1.创建成新机叫料作业 |
| | |
| | | /// <param name="mesTaskId"></param> |
| | | public static void callMaterialXC(string materialCode, string endLocCode, int mesTaskId) |
| | | { |
| | | // 1.查询环带库物料库存 |
| | | DateTime inStockTimeXc = DateTime.MinValue; |
| | | List<CntrItemRel> cntrItemRelsXc = new List<CntrItemRel>(); |
| | | if (cntrItemRelsXc.Count > 0) |
| | | { |
| | | inStockTimeXc = cntrItemRelsXc[0].T_INBOUND_TIME; |
| | | } |
| | | |
| | | // 2.查询中转库库存 |
| | | DateTime inStockTime = DateTime.MinValue; |
| | | var cntrItemRels = WMSHelper.getZZKInventoryInfo(materialCode); |
| | | if (cntrItemRels.Count > 0) |
| | | { |
| | | inStockTime = cntrItemRels[0].T_INBOUND_TIME; |
| | | } |
| | | |
| | | // 3.根据先进先出计算出库的物料是环带库 还是中转库 |
| | | var mesTask = WMSHelper.GetLjMesTaskById(mesTaskId); |
| | | if (inStockTime >= inStockTimeXc) |
| | | if (mesTask != null) |
| | | { |
| | | //斜裁物料出库 |
| | | if (cntrItemRelsXc.Count > 0) |
| | | // 1.查询环带库物料库存最早入库时间 |
| | | DateTime inStockTimeXc = DateTime.MinValue; |
| | | |
| | | // 2.查询中转库库存 |
| | | DateTime inStockTime = WMSHelper.getZZKInventoryInfo(materialCode); |
| | | |
| | | // 3.根据先进先出计算出库的物料是环带库 还是中转库 |
| | | if (inStockTime >= inStockTimeXc) |
| | | { |
| | | // 4.将MES任务写入环带库任务中间表 |
| | | WMSHelper.addLjXcTask(mesTask); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //中转库物料出库 |
| | | if (cntrItemRels.Count > 0) |
| | | { |
| | | var cntrItemRel = cntrItemRels[0]; |
| | | var locCntrRel = LocationHelper.GetLocCntrByCntr(cntrItemRel.S_CNTR_CODE); |
| | | if (locCntrRel != null) |
| | | Location endLoc = WMSHelper.getCallMaterialLocCode(mesTask.EQP); |
| | | if (endLoc != null) |
| | | { |
| | | var endLoc = LocationHelper.GetLoc(locCntrRel.S_LOC_CODE); |
| | | if (endLoc != null) |
| | | // 4.创建斜裁-成新机叫料作业 |
| | | var wmsTask = new WMSTask() |
| | | { |
| | | S_CODE = WMSHelper.GenerateTaskNo(), |
| | | S_CNTR_CODE = "", |
| | | S_START_LOC = "虚拟起点", |
| | | S_START_AREA = "虚拟库区", |
| | | 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, |
| | | N_B_STATE = 0 |
| | | }; |
| | | 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 = wmsTask.S_START_LOC, |
| | | S_START_AREA = wmsTask.S_START_AREA, |
| | | 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, |
| | | N_B_STATE = -1, |
| | | S_B_STATE = "预创建", |
| | | }; |
| | | |
| | | if (WCSHelper.CreateTask(wcsTask)) |
| | | { |
| | | // 起点、终点加锁 |
| | | LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); |
| | | LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); |
| | | |
| | | // 5.将MES任务写入斜裁任务中间表 |
| | | mesTask.AGVORDER_ID = wcsTask.S_CODE; |
| | | WMSHelper.addLjXcTask(mesTask); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //中转库物料出库 |
| | | Location startLoc = WMSHelper.getOutStockStartLoc(null, materialCode); |
| | | if (startLoc != null) |
| | | { |
| | | var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE); |
| | | if (locCntrRels != null && locCntrRels.Count > 0) |
| | | { |
| | | Location middleLoc = null; |
| | | Location startLoc = WMSHelper.getOutStockStartLoc(null, materialCode); |
| | | if (startLoc != null) |
| | | Location endLoc = WMSHelper.getCallMaterialLocCode(mesTask.EQP); |
| | | if (endLoc != null) |
| | | { |
| | | var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE); |
| | | if (locCntrRels.Count > 0) |
| | | middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, 2, 2); |
| | | if (middleLoc != null) |
| | | { |
| | | var cntrCode = cntrItemRel.S_CNTR_CODE; |
| | | middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, 1, 2); |
| | | if (middleLoc != null) |
| | | // 1.创建成新机叫料作业 |
| | | var wmsTask = new WMSTask() |
| | | { |
| | | // 1.创建成新机叫料作业 |
| | | var wmsTask = new WMSTask() |
| | | S_CNTR_CODE = locCntrRels[0].S_CNTR_CODE, |
| | | 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 = mesTaskId.ToString(), |
| | | S_OP_DEF_NAME = "成型机叫料出库任务", |
| | | T_START_TIME = DateTime.Now, |
| | | }; |
| | | if (WMSHelper.CreateWmsTask(wmsTask)) |
| | | { |
| | | WCSTask wcsTask = new WCSTask() |
| | | { |
| | | S_CNTR_CODE = cntrCode, |
| | | S_CODE = WMSHelper.GenerateTaskNo(), |
| | | 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_TYPE = "叫料出库任务", |
| | | S_OP_DEF_CODE = mesTaskId.ToString(), |
| | | S_OP_DEF_NAME = "成型机叫料出库任务", |
| | | S_END_LOC = middleLoc.S_CODE, |
| | | S_END_AREA = middleLoc.S_AREA_CODE, |
| | | S_SCHEDULE_TYPE = "WCS", |
| | | N_PRIORITY = 10, |
| | | T_START_TIME = DateTime.Now, |
| | | }; |
| | | if (WMSHelper.CreateWmsTask(wmsTask)) |
| | | |
| | | if (WCSHelper.CreateTask(wcsTask)) |
| | | { |
| | | 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 = middleLoc.S_CODE, |
| | | S_END_AREA = middleLoc.S_AREA_CODE, |
| | | S_SCHEDULE_TYPE = "WCS", |
| | | N_PRIORITY = 10, |
| | | T_START_TIME = DateTime.Now, |
| | | }; |
| | | // 起点、终点加锁 |
| | | LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); |
| | | LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); |
| | | |
| | | 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); |
| | | } |
| | | |
| | | // 预创建二段任务 |
| | | WCSTask twoWcsTask = 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 = middleLoc.S_CODE, |
| | | S_START_AREA = middleLoc.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, |
| | | N_B_STATE = -1 |
| | | }; |
| | | WCSHelper.CreateTask(twoWcsTask); |
| | | WMSHelper.readLjMesCallItemTask(wmsTask.S_CODE, mesTaskId); |
| | | // 更新作业任务状态 |
| | | wmsTask.N_B_STATE = 1; |
| | | WMSHelper.UpdateTaskState(wmsTask); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WMSHelper.addAlarmRecord("流程异常", "高", $"成型机叫料失败,库区{startLoc.S_AREA_CODE}未查询到可用的接驳位"); |
| | | |
| | | // 预创建二段任务 |
| | | WCSTask twoWcsTask = 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 = middleLoc.S_CODE, |
| | | S_START_AREA = middleLoc.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, |
| | | N_B_STATE = -1 |
| | | }; |
| | | WCSHelper.CreateTask(twoWcsTask); |
| | | WMSHelper.readLjMesCallItemTask(wmsTask.S_CODE, mesTaskId); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WMSHelper.addAlarmRecord("流程异常", "高", $"成型机叫料失败,开始货位:{startLoc.S_CODE}异常,缺少容器信息"); |
| | | WMSHelper.addAlarmRecord("流程异常", "高", $"成型机叫料失败,库区{startLoc.S_AREA_CODE}未查询到可用的接驳位"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | mesTask.AWAIT_MSG = "库存不足"; |
| | | WMSHelper.updateLjMesTask(mesTask); |
| | | WMSHelper.addAlarmRecord("流程异常", "高", $"成型机叫料失败,物料:{materialCode}库存不足"); |
| | | WMSHelper.addAlarmRecord("流程异常", "高", $"成型机叫料失败,开始货位:{startLoc.S_CODE}异常,缺少容器信息"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | mesTask.AWAIT_MSG = "库存不足"; |
| | | WMSHelper.updateLjMesTask(mesTask); |
| | | WMSHelper.addAlarmRecord("流程异常", "高", $"成型机叫料失败,物料:{materialCode}库存不足"); |
| | | } |
| | | } |
| | | } |
| | |
| | | S_START_AREA = startLoc.S_AREA_CODE, |
| | | S_END_LOC = endLoc.S_CODE, |
| | | S_END_AREA = endLoc.S_AREA_CODE, |
| | | S_TYPE = "余料/空工装入库任务" + suffix, |
| | | S_TYPE = "余料/空工装入库任务", |
| | | S_OP_DEF_CODE = mesTask.ID.ToString(), |
| | | S_OP_DEF_NAME = "余料/空工装入库" + suffix, |
| | | T_START_TIME = DateTime.Now |
| | |
| | | S_OP_CODE = mst.S_CODE, |
| | | S_CODE = WCSHelper.GenerateTaskNo(), |
| | | S_CNTR_CODE = cst.S_CNTR_CODE, |
| | | S_TYPE = "不合格品回库", |
| | | S_TYPE = "不合格品入库任务", |
| | | S_START_LOC = startLoc.S_CODE, |
| | | S_START_AREA = startLoc.S_AREA_CODE, |
| | | S_END_LOC = agvEndLoc.S_CODE, |
| | |
| | | S_OP_CODE = mst.S_CODE, |
| | | S_CODE = WCSHelper.GenerateTaskNo(), |
| | | S_CNTR_CODE = cst.S_CNTR_CODE, |
| | | S_TYPE = "不合格品回库", |
| | | S_TYPE = "不合格品入库任务", |
| | | S_START_LOC = startLoc.S_CODE, |
| | | S_START_AREA = startLoc.S_AREA_CODE, |
| | | S_END_LOC = agvEndLoc.S_CODE, |
| | |
| | | S_OP_CODE = mst.S_CODE, |
| | | S_CODE = WCSHelper.GenerateTaskNo(), |
| | | S_CNTR_CODE = cst.S_CNTR_CODE, |
| | | S_TYPE = "不合格品回库", |
| | | S_TYPE = "不合格品入库任务", |
| | | S_START_LOC = agvEndLoc.S_CODE, |
| | | S_START_AREA = agvEndLoc.S_AREA_CODE, |
| | | S_END_LOC = wmsEndLoc.S_CODE, |
| | |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 斜裁物料出库任务 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | public static ResponseResult createXcItemOutStockTask(XcItemOutStockModel model) |
| | | { |
| | | ResponseResult responseResult = new ResponseResult(); |
| | | Location startLoc = LocationHelper.GetLoc(model.startLoc); |
| | | if (startLoc == null) |
| | | { |
| | | WMSHelper.addAlarmRecord("流程异常", "高", $"成型机叫料出库(斜裁),起点:{model.startLoc}在WMS系统中不存在"); |
| | | responseResult.code = 201; |
| | | responseResult.msg = $"起点:{model.startLoc}在WMS系统中不存在"; |
| | | return responseResult; |
| | | } |
| | | Location endLoc = WMSHelper.getCallMaterialLocCode(model.eqNo); |
| | | if (endLoc != null) |
| | | { |
| | | var wmsTask = WMSHelper.GetWmsTaskByCntr(model.palletId); |
| | | if (wmsTask == null) |
| | | { |
| | | ContainerHelper.AddCntr(model.palletId); |
| | | |
| | | // 1.创建斜裁-成新机叫料作业 |
| | | wmsTask = new WMSTask() |
| | | { |
| | | S_CNTR_CODE = model.palletId, |
| | | 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.reqId, |
| | | 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, |
| | | }; |
| | | |
| | | 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 |
| | | { |
| | | responseResult.code = 201; |
| | | responseResult.msg = $"成型机机台:{model.eqNo}没有空余的叫料货位"; |
| | | } |
| | | return responseResult; |
| | | } |
| | | |
| | | //---------------------------------------------------------------------------------------------------------------------------- |
| | | public class LocModel |
| | | { |