diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java index f40a7b044..1fca2c5ec 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java @@ -231,10 +231,13 @@ public class AutoCallAirShaftTask { // todo: 需要校验区域0/1 List qzzPoint = bcutpointivtService.getPointByTypeAndShaftSize("1", qzzSize, specification); if (qzzPoint.size() == 0) { + // 调用ACS滚条气涨轴下来 + if (!toAcsOutShaft(qzzSize, location, empty)) { + log.error("穿拔轴{}不进行套轴,跳过!", empty.getPoint_code()); + return; + } // 保存所需要的分切计划数据到点位上(套轴对接位)更新分切计划 saveCutPlanMessage(empty, needPlans, qzzSize); - // 调用ACS滚条气涨轴下来 - toAcsOutShaft(qzzSize, location, empty); toCallAgvMovePaperTube(needPlans, location, empty); return; } @@ -245,7 +248,10 @@ public class AutoCallAirShaftTask { saveCutPlanMessage(empty, needPlans, qzzSize); // 如果不存在,则发起信号滚气涨轴 // 调用ACS滚条气涨轴下来 - toAcsOutShaft(qzzSize, location, empty); + if (!toAcsOutShaft(qzzSize, location, empty)) { + log.error("穿拔轴{}不进行套轴,跳过!", empty.getPoint_code()); + return; + } toCallAgvMovePaperTube(needPlans, location, empty); return; } @@ -429,13 +435,46 @@ public class AutoCallAirShaftTask { * @param location 位置:上半部分还是下半部分 * @param empty 套拔轴点位 */ - private void toAcsOutShaft(String qzzSize, String location, BstIvtShafttubeivt empty) { + private Boolean toAcsOutShaft(String qzzSize, String location, BstIvtShafttubeivt empty) { // 需要区分上下 List shafttubeivts = bstIvtShafttubeivtService.getByQzzSize(qzzSize, empty.getPoint_code(), location); if (shafttubeivts.size() == 0) { - throw new BadRequestException("气胀轴库找不到[" + qzzSize + "]规格的气涨轴位"); + log.error("气胀轴库找不到[" + qzzSize + "]规格的气涨轴位"); + return false; } + // 气涨轴库 BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); + // 判断气胀轴是否有轴 + JSONArray device_rows = new JSONArray(); + JSONObject device_obj = new JSONObject(); + device_rows.add(device_obj); + device_obj.put("device_code", shafttubeivt.getPoint_code()); + // todo: 暂时都是B1 + device_obj.put("product_area", "B1"); + JSONObject pointStatus = wmsToAcsService.getPointStatus(device_rows); + if (ObjectUtil.isEmpty(pointStatus) || ObjectUtil.isEmpty(pointStatus.getJSONArray("data"))) { + log.error("获取气胀轴库信息失败"); + return false; + } + boolean judgment1 = true; + boolean judgment2 = true; + JSONObject data2 = pointStatus.getJSONArray("data").getJSONObject(0); + if (data2.getInteger("qty") == 0) { + log.warn("气胀轴库【" + shafttubeivt.getPoint_code() + "】没有气胀轴。"); + judgment1 = false; + } + // 获取气涨轴缓存没有任务的点位 + List qzzCache = bstIvtShafttubeivtService.getNotTaskShaftCache(qzzSize, + shafttubeivt.getQzz_generation(), location); + if (qzzCache.size() == 0) { + log.warn("未找到气胀轴密集库气涨轴规格「" + qzzSize + "」的暂存位"); + judgment2 = false; + } + if (!judgment1 && !judgment2) { + log.warn("没有气胀轴,不给ACS写出轴信息"); + return false; + } + // 判断气胀轴密集库是否有数据 JSONArray acsParam = new JSONArray(); // 出轴的信号 JSONObject acsQzz = new JSONObject(); @@ -447,6 +486,7 @@ public class AutoCallAirShaftTask { log.info("开始给ACS写信号出气胀轴 - {}", acsQzz); JSONObject action = wmsToAcsService.action(acsParam); log.info("下发给ACS写信号出气涨轴返回参数:{}", action); + return true; } /** diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml index fa9ef8df1..b3cb9a778 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml @@ -148,6 +148,7 @@ p.qzz_size, p.qzz_generation, MIN(p.start_time) AS start_time, + IF(p.paper_tube_or_FRP='1',p.paper_tube_description,p.FRP_description) AS tube, MIN( p.`status` ) AS `status` FROM `pdm_bi_slittingproductionplan` p @@ -156,7 +157,7 @@ AND p.is_delete = '0' AND IFNULL(p.up_or_down, '') ]]> '' AND IFNULL(p.left_or_right, '') ]]> '' - AND DATE(p.start_time) >= DATE_SUB(CURDATE(), INTERVAL 0 DAY) + AND DATE(p.start_time) >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND '1' = (SELECT c.is_used FROM st_ivt_cutpointivt c WHERE c.ext_code = p.resource_name) AND p.parent_container_name LIKE '%虚拟%' GROUP BY @@ -168,6 +169,6 @@ p.qzz_size, p.qzz_generation ORDER BY - `status`, start_time DESC + `status`, start_time diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/CallPlanViewVO.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/CallPlanViewVO.java index eef2b0525..4786c365a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/CallPlanViewVO.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/CallPlanViewVO.java @@ -34,6 +34,7 @@ public class CallPlanViewVO implements Serializable { * 气胀轴尺寸 */ private String qzz_size; + private String tube; /** * 气胀轴代数 */ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index c0dbb2e64..3f4ec08e3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -2749,47 +2749,60 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { throw new BadRequestException("任务号【" + taskCode + "】对应的任务找不到!"); } String targetPoint = ""; + boolean updateFlag = false; if ("1".equals(type)) { - // 请求取货 - String deviceCode = task.getPoint_code2(); - BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false); - JSONObject requestParam = JSONObject.parseObject(task.getRequest_param()); - String qzzSize = requestParam.getString("qzz_size"); - // 获取气涨轴缓存没有任务的点位 - List shafttubeivts = shafttubeivtService.getNotTaskShaftCache(qzzSize, - startPoint.getQzz_generation(), startPoint.getPoint_location()); - if (shafttubeivts.size() == 0) { - throw new BadRequestException("未找到气涨轴规格「" + qzzSize + "」的暂存位"); + if (task.getPoint_code1().contains("QHD")) { + // 请求取货 + String deviceCode = task.getPoint_code2(); + BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false); + JSONObject requestParam = JSONObject.parseObject(task.getRequest_param()); + String qzzSize = requestParam.getString("qzz_size"); + // 获取气涨轴缓存没有任务的点位 + List shafttubeivts = shafttubeivtService.getNotTaskShaftCache(qzzSize, + startPoint.getQzz_generation(), startPoint.getPoint_location()); + if (shafttubeivts.size() == 0) { + throw new BadRequestException("未找到气涨轴规格「" + qzzSize + "」的暂存位"); + } + BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); + targetPoint = shafttubeivt.getPoint_code(); + // 修改任务 + task.setPoint_code1(targetPoint); + task.setRemark("取货请求成功"); + task.setUpdate_time(DateUtil.now()); + updateFlag = true; + } else { + targetPoint = task.getPoint_code1(); } - BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); - targetPoint = shafttubeivt.getPoint_code(); - // 修改任务 - task.setPoint_code1(targetPoint); - task.setRemark("取货请求成功"); - task.setUpdate_time(DateUtil.now()); } if ("2".equals(type)) { - // 请求放货 - // 穿拔轴点位 - String deviceCode = task.getPoint_code1(); - BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false); - JSONObject requestParam = JSONObject.parseObject(task.getRequest_param()); - String qzzSize = requestParam.getString("qzz_size"); - // 临时存放气涨轴尺寸 - startPoint.setQzz_size(qzzSize); - // 获取空位 - List shafttubeivts = shafttubeivtService.getNotTaskShaftCacheEmpty(startPoint); - if (shafttubeivts.size() == 0) { - throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的空暂存位"); + if (task.getPoint_code1().contains("FHD")) { + // 请求放货 + // 穿拔轴点位 + String deviceCode = task.getPoint_code1(); + BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false); + JSONObject requestParam = JSONObject.parseObject(task.getRequest_param()); + String qzzSize = requestParam.getString("qzz_size"); + // 临时存放气涨轴尺寸 + startPoint.setQzz_size(qzzSize); + // 获取空位 + List shafttubeivts = shafttubeivtService.getNotTaskShaftCacheEmpty(startPoint); + if (shafttubeivts.size() == 0) { + throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的空暂存位"); + } + BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); + targetPoint = shafttubeivt.getPoint_code(); + // 修改任务 + task.setPoint_code2(targetPoint); + task.setRemark("放货请求成功"); + task.setUpdate_time(DateUtil.now()); + updateFlag = true; + } else { + targetPoint = task.getPoint_code2(); } - BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); - targetPoint = shafttubeivt.getPoint_code(); - // 修改任务 - task.setPoint_code2(targetPoint); - task.setRemark("放货请求成功"); - task.setUpdate_time(DateUtil.now()); } - taskService.updateById(task); + if (updateFlag) { + taskService.updateById(task); + } result.put("status", HttpStatus.OK.value()); result.put("device_code", targetPoint); result.put("message", "反馈成功!");