From e7d1c76a9fdaf8a45e1fb577a76b7e55bcc70a21 Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Fri, 29 Nov 2024 15:33:01 +0800 Subject: [PATCH] =?UTF-8?q?opt:=E4=BC=98=E5=8C=96=E8=BE=93=E9=80=81?= =?UTF-8?q?=E7=BA=BF=E7=8A=B6=E6=80=81=E9=87=87=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/quartz/task/SyncDeviceStatus.java | 119 +++++++++++------- 1 file changed, 73 insertions(+), 46 deletions(-) diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java index f5e8287..3b73e16 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java @@ -13,7 +13,6 @@ import org.nl.acs.device_driver.basedriver.agv.ndcone.AgvNdcOneDeviceDriver; import org.nl.acs.device_driver.tianneng.baoshijian.BaoshijianSiteDeviceDriver; import org.nl.acs.device_driver.tianneng.guhuashi.GuhuashiSiteDeviceDriver; import org.nl.acs.device_driver.tianneng.site.SiteDeviceDriver; -import org.nl.acs.device_driver.tianneng.site_status.SiteStatusDeviceDriver; import org.nl.acs.enums.AcsDefineEnum; import org.nl.acs.instruction.domain.InstructionMybatis; import org.nl.acs.instruction.service.InstructionService; @@ -145,30 +144,20 @@ public class SyncDeviceStatus { json.put("back_door", guhuashiSiteDeviceDriver.getVW70006() == 0 ? 0 : 1); json.put("error", guhuashiSiteDeviceDriver.getVD7046()); guhuashi.add(json); - } else if (device.getDeviceDriver() instanceof SiteStatusDeviceDriver) { - SiteStatusDeviceDriver siteStatusDeviceDriver=(SiteStatusDeviceDriver)device.getDeviceDriver(); - JSONObject json = new JSONObject(); - json.put("device_code", siteStatusDeviceDriver.getDevice_code()); - json.put("mode",siteStatusDeviceDriver.getMode()); - json.put("open_time",siteStatusDeviceDriver.getOpen_time()); - json.put("standby_time",siteStatusDeviceDriver.getStandby_time()); - json.put("production_time",siteStatusDeviceDriver.getProduction_time()); - json.put("error_time",siteStatusDeviceDriver.getError_time()); - json.put("end_time",siteStatusDeviceDriver.getEnd_time()); - json.put("device_status", siteStatusDeviceDriver.getError()==0?1:0); - site.add(json); } else if (device.getDeviceDriver() instanceof SiteDeviceDriver) { - SiteDeviceDriver siteDeviceDriver=(SiteDeviceDriver)device.getDeviceDriver(); + SiteDeviceDriver siteDeviceDriver = (SiteDeviceDriver) device.getDeviceDriver(); JSONObject json = new JSONObject(); json.put("device_code", siteDeviceDriver.getDevice_code()); json.put("move", siteDeviceDriver.getMove()); json.put("action", siteDeviceDriver.getAction()); json.put("vehicle_type", siteDeviceDriver.getPallet_type()); json.put("error", siteDeviceDriver.getError()); - json.put("device_status", siteDeviceDriver.getError()==0?1:0); + //todo 检查mode值是否正常 + json.put("device_status", siteDeviceDriver.getMode() == 0 ? 1 : 0); + // json.put("device_status", siteDeviceDriver.getError() == 0 ? 1 : 0); site.add(json); } else if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) { - AgvNdcOneDeviceDriver agvNdcOneDeviceDriver=(AgvNdcOneDeviceDriver)device.getDeviceDriver(); + AgvNdcOneDeviceDriver agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver(); JSONObject json = new JSONObject(); json.put("device_code", agvNdcOneDeviceDriver.getDevice_code()); json.put("device_name", agvNdcOneDeviceDriver.getDevice_code()); @@ -183,44 +172,82 @@ public class SyncDeviceStatus { } redisUtils.set("baoshijian", baoshijian); redisUtils.set("guhuashi", guhuashi); - redisUtils.set("site", site); - if (ObjectUtil.isNotEmpty(agv)) { - List deviceCodes = agv.stream() - .map(r -> { - String deviceCode = ((JSONObject) r).getString("device_code"); - if (StringUtils.isNotBlank(deviceCode)) { - return deviceCode.substring(deviceCode.length() - 1); - } else { - return null; - } + //获取输送线设备主体信息 + if (ObjectUtil.isNotEmpty(site)) { + //输送线前缀ZCSSX01 + List siteList = site.stream() + .map(obj -> { + JSONObject jsonObj = (JSONObject) obj; + String deviceCode = jsonObj.getString("device_code"); + return StringUtils.isNotBlank(deviceCode) && deviceCode.contains("ZCSSX") ? deviceCode.substring(0, 7) : null; }) .filter(Objects::nonNull) + .distinct() .collect(Collectors.toList()); - if (ObjectUtil.isNotEmpty(deviceCodes)) { - List instructionList = instructionService.list(new LambdaQueryWrapper().in(InstructionMybatis::getCarno, deviceCodes).lt(InstructionMybatis::getInstruction_status, 2).eq(InstructionMybatis::getIs_delete, 0)); - if (ObjectUtil.isNotEmpty(instructionList)) { - Map taskCodeToTaskIdMap = instructionList.stream() - .filter(instruction -> StringUtils.isNotBlank(instruction.getExt_task_id())) - .collect(Collectors.toMap( - InstructionMybatis::getInstruction_code, - InstructionMybatis::getExt_task_id - )); - agv.forEach(r -> { - JSONObject Item = (JSONObject) r; - String taskId = taskCodeToTaskIdMap.get(Item.getString("task_code")); - Item.put("task_id", ""); - if (StringUtils.isNotBlank(taskId)) { - Item.put("task_id", taskId); - } - }); + JSONArray siteJsonArray = new JSONArray(); + for (String deviceCode : siteList) { + JSONArray siteJSONArray = site.stream() + .filter(obj -> ((JSONObject) obj).getString("device_code").startsWith(deviceCode)) + .collect(Collectors.toCollection(JSONArray::new)); + long siteCount = site.stream() + .filter(obj -> "0".equals(((JSONObject) obj).getString("device_status"))) + .count(); + JSONObject json = new JSONObject(); + json.put("device_code", deviceCode); + json.put("device_status", siteCount > 0 ? 0 : 1); + if (!siteList.isEmpty()) { + JSONObject item = siteJSONArray.getJSONObject(0); + json.put("vehicle_type", item.getString("vehicle_type")); + json.put("action", item.getString("action")); + } + siteJsonArray.add(json); + } + JSONArray ptJsonArray = site.stream() + .filter(obj -> ((JSONObject) obj).getString("device_code").startsWith("PTHCW")) + .collect(Collectors.toCollection(JSONArray::new)); + JSONArray ssxJsonArray = site.stream() + .filter(obj -> ((JSONObject) obj).getString("device_code").startsWith("ZCSSX")) + .collect(Collectors.toCollection(JSONArray::new)); + redisUtils.set("siteMain", siteJsonArray); + redisUtils.set("site", ssxJsonArray); + redisUtils.set("ptx", ptJsonArray); + if (ObjectUtil.isNotEmpty(agv)) { + List deviceCodes = agv.stream() + .map(r -> { + String deviceCode = ((JSONObject) r).getString("device_code"); + if (StringUtils.isNotBlank(deviceCode)) { + return deviceCode.substring(deviceCode.length() - 1); + } else { + return null; + } + }) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(deviceCodes)) { + List instructionList = instructionService.list(new LambdaQueryWrapper().in(InstructionMybatis::getCarno, deviceCodes).lt(InstructionMybatis::getInstruction_status, 2).eq(InstructionMybatis::getIs_delete, 0)); + if (ObjectUtil.isNotEmpty(instructionList)) { + Map taskCodeToTaskIdMap = instructionList.stream() + .filter(instruction -> StringUtils.isNotBlank(instruction.getExt_task_id())) + .collect(Collectors.toMap( + InstructionMybatis::getInstruction_code, + InstructionMybatis::getExt_task_id + )); + agv.forEach(r -> { + JSONObject Item = (JSONObject) r; + String taskId = taskCodeToTaskIdMap.get(Item.getString("task_code")); + Item.put("task_id", ""); + if (StringUtils.isNotBlank(taskId)) { + Item.put("task_id", taskId); + } + }); + } } } - } redisUtils.set("agv", agv); - // log.trace("自动上报驱动状态,完毕耗时{}", System.currentTimeMillis() - startTime); + // log.trace("自动上报驱动状态,完毕耗时{}", System.currentTimeMillis() - startTime); } catch (Exception e) { - //log.error("自动线程开始查询AGV设备,自动上报驱动状态失败{}{}", e, e.getMessage()); + log.error("自动线程开始查询AGV设备,自动上报驱动状态失败{}{}", e, e.getMessage()); } } }