From 0ae145288282616f648c1de79860a0258f875bc8 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Tue, 9 May 2023 14:08:33 +0800 Subject: [PATCH] =?UTF-8?q?rev:=20=E4=BF=AE=E6=94=B9=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E7=9B=91=E6=8E=A7=E5=A4=A7=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/cockpit/rest/CockpitController.java | 4 +- .../wms/cockpit/service/CockpitService.java | 3 +- .../service/impl/CockpitServiceImpl.java | 665 +++++++++--------- .../org/nl/wms/sch/manage/DeviceEnum.java | 36 +- 4 files changed, 367 insertions(+), 341 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/cockpit/rest/CockpitController.java b/lms/nladmin-system/src/main/java/org/nl/wms/cockpit/rest/CockpitController.java index 313d0ae..1833cd8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/cockpit/rest/CockpitController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/cockpit/rest/CockpitController.java @@ -22,6 +22,8 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentSkipListMap; /** * 大屏数据1 @@ -82,7 +84,7 @@ public class CockpitController{ @PostMapping("/deviceMonitor") @Log("设备监控") @ApiOperation("设备监控") - public CommonResult> deviceMonitor() { + public CommonResult>> deviceMonitor() { return RestBusinessTemplate.execute(cockpitService::deviceMonitor); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/cockpit/service/CockpitService.java b/lms/nladmin-system/src/main/java/org/nl/wms/cockpit/service/CockpitService.java index 54e544f..6971610 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/cockpit/service/CockpitService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/cockpit/service/CockpitService.java @@ -8,6 +8,7 @@ import org.nl.wms.cockpit.service.dto.SchBasePointDto; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentSkipListMap; /** * 大屏服务接口1 @@ -43,7 +44,7 @@ public interface CockpitService{ * * @return 返回结果集 */ - List deviceMonitor(); + ConcurrentHashMap> deviceMonitor(); /** * 根据point_id获取设备信息 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java index 37f527c..ebcb2fe 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java @@ -22,10 +22,7 @@ import java.math.BigDecimal; import java.time.Duration; import java.time.LocalDateTime; import java.util.*; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.*; /** * 大屏服务实现1 @@ -36,24 +33,24 @@ import java.util.concurrent.ThreadPoolExecutor; @Service @RequiredArgsConstructor @Slf4j -public class CockpitServiceImpl implements CockpitService{ +public class CockpitServiceImpl implements CockpitService { - /** - * 生产统计大屏 - * - * @author gbx - * @since 2023/2/27 - */ - @Override - public ConcurrentHashMap productionStatistics() { - ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll(); - ConcurrentHashMap map = new ConcurrentHashMap<>(3); - // 1、获取生产任务列表 - CompletableFuture> productionTask = CompletableFuture.supplyAsync(() -> { - List res = new CopyOnWriteArrayList<>(); - JSONArray result = WQL.getWO("COCKPIT_PRODUCTION").addParam("flag", "1").process().getResultJSONArray(0); - if(ObjectUtil.isNotEmpty(result)) { - res = result.toJavaList(WorkorderDto.class); + /** + * 生产统计大屏 + * + * @author gbx + * @since 2023/2/27 + */ + @Override + public ConcurrentHashMap productionStatistics() { + ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll(); + ConcurrentHashMap map = new ConcurrentHashMap<>(3); + // 1、获取生产任务列表 + CompletableFuture> productionTask = CompletableFuture.supplyAsync(() -> { + List res = new CopyOnWriteArrayList<>(); + JSONArray result = WQL.getWO("COCKPIT_PRODUCTION").addParam("flag", "1").process().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(result)) { + res = result.toJavaList(WorkorderDto.class); // res.forEach(r -> { // r.setCust_name("新余钢铁"); // if(StringUtils.isNotEmpty(r.getLabel())) { @@ -61,298 +58,315 @@ public class CockpitServiceImpl implements CockpitService{ // r.setShift_type(r.getLabel().substring(0, 2) + "白班"); // } // }); - } - return res; - }, pool); - productionTask.thenAccept((result) -> map.put("productionTask", result)).exceptionally((e) -> { - log.error("获取生产任务列表: {}", e.getMessage(), e); - map.put("productionTask", ""); - return null; - }); - /** - * 为了不破坏原来的输出形式,会有冗余数据的输出 - */ - // 2、获取原料计划完成情况 - CompletableFuture materialTask = CompletableFuture.supplyAsync(() -> WQL.getWO("COCKPIT_PRODUCTION").addParam("flag", "5").process().getResultJSONArray(0), pool); - materialTask.thenAccept((result) -> { - if (ObjectUtil.isEmpty(result)) { - JSONObject object = new JSONObject(); - object.put("workorder_procedure", "原料"); - object.put("label", "1"); - object.put("plan_qty", "0"); - object.put("real_qty", "0"); - result.add(object); - } - map.put("materialTask", result); - }).exceptionally((e) -> { - log.error("获取原料计划完成情况: {}", e.getMessage(), e); - map.put("materialTask", ""); - return null; - }); - // 3、获取成品计划完成情况,今日压制量,干燥量,成品量 - CompletableFuture finishedTask = CompletableFuture.supplyAsync(() -> WQL.getWO("COCKPIT_PRODUCTION").addParam("flag", "4").process().getResultJSONArray(0), pool); - finishedTask.thenAccept((result) -> { - List planRes = new CopyOnWriteArrayList<>(); - List finishedRes = new CopyOnWriteArrayList<>(); - if(ObjectUtil.isNotEmpty(result)) { - //成品计划完成情况,应前端要求分开两个一样的数据结果,简化调用数据采集 - planRes = result.toJavaList(ProductionStatisticsDto.class); - setResultComplete(planRes); - //今日压制量,干燥量,成品量 - finishedRes = result.toJavaList(ProductionStatisticsDto.class); - setResultComplete(finishedRes); - } - map.put("planRes", planRes); - map.put("finishedRes", finishedRes); - }).exceptionally((e) -> { - log.error("获取成品计划完成情况: {}", e.getMessage(), e); - map.put("planRes", ""); - map.put("finishedRes", ""); - return null; - }); - CompletableFuture allQuery = CompletableFuture.allOf(productionTask, materialTask, finishedTask); - CompletableFuture> future = allQuery.thenApply((result) -> map).exceptionally((e) -> { - log.error(e.getMessage(), e); - return null; - }); - future.join(); - return map; - } + } + return res; + }, pool); + productionTask.thenAccept((result) -> map.put("productionTask", result)).exceptionally((e) -> { + log.error("获取生产任务列表: {}", e.getMessage(), e); + map.put("productionTask", ""); + return null; + }); + /** + * 为了不破坏原来的输出形式,会有冗余数据的输出 + */ + // 2、获取原料计划完成情况 + CompletableFuture materialTask = CompletableFuture.supplyAsync(() -> WQL.getWO("COCKPIT_PRODUCTION").addParam("flag", "5").process().getResultJSONArray(0), pool); + materialTask.thenAccept((result) -> { + if (ObjectUtil.isEmpty(result)) { + JSONObject object = new JSONObject(); + object.put("workorder_procedure", "原料"); + object.put("label", "1"); + object.put("plan_qty", "0"); + object.put("real_qty", "0"); + result.add(object); + } + map.put("materialTask", result); + }).exceptionally((e) -> { + log.error("获取原料计划完成情况: {}", e.getMessage(), e); + map.put("materialTask", ""); + return null; + }); + // 3、获取成品计划完成情况,今日压制量,干燥量,成品量 + CompletableFuture finishedTask = CompletableFuture.supplyAsync(() -> WQL.getWO("COCKPIT_PRODUCTION").addParam("flag", "4").process().getResultJSONArray(0), pool); + finishedTask.thenAccept((result) -> { + List planRes = new CopyOnWriteArrayList<>(); + List finishedRes = new CopyOnWriteArrayList<>(); + if (ObjectUtil.isNotEmpty(result)) { + //成品计划完成情况,应前端要求分开两个一样的数据结果,简化调用数据采集 + planRes = result.toJavaList(ProductionStatisticsDto.class); + setResultComplete(planRes); + //今日压制量,干燥量,成品量 + finishedRes = result.toJavaList(ProductionStatisticsDto.class); + setResultComplete(finishedRes); + } + map.put("planRes", planRes); + map.put("finishedRes", finishedRes); + }).exceptionally((e) -> { + log.error("获取成品计划完成情况: {}", e.getMessage(), e); + map.put("planRes", ""); + map.put("finishedRes", ""); + return null; + }); + CompletableFuture allQuery = CompletableFuture.allOf(productionTask, materialTask, finishedTask); + CompletableFuture> future = allQuery.thenApply((result) -> map).exceptionally((e) -> { + log.error(e.getMessage(), e); + return null; + }); + future.join(); + return map; + } - /** - * 仓储监控大屏信息 - * - * @author gbx - * @since 2023/2/27 - */ - @Override - public ConcurrentHashMap storageMonitor() { - ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll(); - ConcurrentHashMap map = new ConcurrentHashMap<>(2); - // 1、获取原料仓储信息 - CompletableFuture> materialStorage = CompletableFuture.supplyAsync(() -> { - List res = new CopyOnWriteArrayList<>(); - // 查找所有困料货架 - JSONArray result = WQL.getWO("COCKPIT_STORAGE").addParam("flag", "1").process().getResultJSONArray(0); - if(ObjectUtil.isNotEmpty(result)) { - res = result.toJavaList(SchBasePointDto.class); - res.forEach(schBasePointDto -> { - //Todo 空盅和强制完成状态相关逻辑待完善 - //根据入库时间和静置时间判断静置状态 - getStandingStatus(schBasePointDto); - //是否满托 - if(StringUtils.isNotEmpty(schBasePointDto.getIs_full())) { - schBasePointDto.setIs_full(IsOrNotEnum.getName(schBasePointDto.getIs_full())); - } - }); - } - return res; - }, pool); - materialStorage.thenAccept((result) -> { - //原料仓储监控信息,应前端要求分开两个一样的数据结果,简化调用 - map.put("materialTask", result); - //原料库存 - map.put("materialList", result); - }).exceptionally((e) -> { - log.error("获取原料仓储信息: {}", e.getMessage(), e); - map.put("materialTask", ""); - map.put("materialList", ""); - return null; - }); - // 2、获取成品仓储信息 - CompletableFuture> finishedStorage = CompletableFuture.supplyAsync(() -> { - List res = new CopyOnWriteArrayList<>(); - JSONArray result = WQL.getWO("COCKPIT_STORAGE").addParam("flag", "2").process().getResultJSONArray(0); - if(ObjectUtil.isNotEmpty(result)) { - res = result.toJavaList(SchBasePointDto.class); - } - return res; - }, pool); - finishedStorage.thenAccept((result) -> { - //成品仓储监控信息,应前端要求分开两个一样的数据结果,简化调用 - map.put("productionTask", result); - //成品库存 - map.put("productionList", result); - }).exceptionally((e) -> { - log.error("获取成品仓储信息: {}", e.getMessage(), e); - map.put("productionTask", ""); - map.put("productionList", ""); - return null; - }); - CompletableFuture allQuery = CompletableFuture.allOf(materialStorage, finishedStorage); - CompletableFuture> future = allQuery.thenApply((result) -> map).exceptionally((e) -> { - log.error(e.getMessage(), e); - return null; - }); - future.join(); - return map; - } + /** + * 仓储监控大屏信息 + * + * @author gbx + * @since 2023/2/27 + */ + @Override + public ConcurrentHashMap storageMonitor() { + ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll(); + ConcurrentHashMap map = new ConcurrentHashMap<>(2); + // 1、获取原料仓储信息 + CompletableFuture> materialStorage = CompletableFuture.supplyAsync(() -> { + List res = new CopyOnWriteArrayList<>(); + // 查找所有困料货架 + JSONArray result = WQL.getWO("COCKPIT_STORAGE").addParam("flag", "1").process().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(result)) { + res = result.toJavaList(SchBasePointDto.class); + res.forEach(schBasePointDto -> { + //Todo 空盅和强制完成状态相关逻辑待完善 + //根据入库时间和静置时间判断静置状态 + getStandingStatus(schBasePointDto); + //是否满托 + if (StringUtils.isNotEmpty(schBasePointDto.getIs_full())) { + schBasePointDto.setIs_full(IsOrNotEnum.getName(schBasePointDto.getIs_full())); + } + }); + } + return res; + }, pool); + materialStorage.thenAccept((result) -> { + //原料仓储监控信息,应前端要求分开两个一样的数据结果,简化调用 + map.put("materialTask", result); + //原料库存 + map.put("materialList", result); + }).exceptionally((e) -> { + log.error("获取原料仓储信息: {}", e.getMessage(), e); + map.put("materialTask", ""); + map.put("materialList", ""); + return null; + }); + // 2、获取成品仓储信息 + CompletableFuture> finishedStorage = CompletableFuture.supplyAsync(() -> { + List res = new CopyOnWriteArrayList<>(); + JSONArray result = WQL.getWO("COCKPIT_STORAGE").addParam("flag", "2").process().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(result)) { + res = result.toJavaList(SchBasePointDto.class); + } + return res; + }, pool); + finishedStorage.thenAccept((result) -> { + //成品仓储监控信息,应前端要求分开两个一样的数据结果,简化调用 + map.put("productionTask", result); + //成品库存 + map.put("productionList", result); + }).exceptionally((e) -> { + log.error("获取成品仓储信息: {}", e.getMessage(), e); + map.put("productionTask", ""); + map.put("productionList", ""); + return null; + }); + CompletableFuture allQuery = CompletableFuture.allOf(materialStorage, finishedStorage); + CompletableFuture> future = allQuery.thenApply((result) -> map).exceptionally((e) -> { + log.error(e.getMessage(), e); + return null; + }); + future.join(); + return map; + } - /** - * 根据点位id获取仓储信息 - * - * @author gbx - * @since 2023/3/1 - */ - @Override - public SchBasePointDto findStorageById(Map id) { - JSONObject rows = WQL.getWO("COCKPIT_STORAGE").addParam("flag", "3").addParam("point_id", id.get("id")).process().uniqueResult(0); - if(ObjectUtil.isNotEmpty(rows)) { - SchBasePointDto res = rows.toJavaObject(SchBasePointDto.class); - getStandingStatus(res); - return res; - } - return null; - } + /** + * 根据点位id获取仓储信息 + * + * @author gbx + * @since 2023/3/1 + */ + @Override + public SchBasePointDto findStorageById(Map id) { + JSONObject rows = WQL.getWO("COCKPIT_STORAGE").addParam("flag", "3").addParam("point_id", id.get("id")).process().uniqueResult(0); + if (ObjectUtil.isNotEmpty(rows)) { + SchBasePointDto res = rows.toJavaObject(SchBasePointDto.class); + getStandingStatus(res); + return res; + } + return null; + } - /** - * 设备监控大屏信息 - * - * @author gbx - * @since 2023/2/28 - */ - @Override - public List deviceMonitor() { - List res; - ConcurrentHashMap> map = new ConcurrentHashMap<>(); - JSONArray result = WQL.getWO("COCKPIT_DEVICE") - .addParam("flag", "3") - .process() - .getResultJSONArray(0); - JSONObject devicesStatus = PointUpdateUtil.getDevicesStatus(result); - if (ObjectUtil.isEmpty(devicesStatus)) { - return null; - } - JSONArray data = ObjectUtil.isNotEmpty( - devicesStatus.getJSONArray("data"))?devicesStatus.getJSONArray("data"):result; - if(ObjectUtil.isNotEmpty(data)) { - res = data.toJavaList(DeviceInfoDto.class); - res.forEach(d -> { - DeviceEnum deviceEnum = DeviceEnum.get(d.getDevice_model(), d.getDevice_code()); - // 添加图片名字 - d.setDevice_url(deviceEnum.getPictureName()); - }); - return res; - } - return null; - } + /** + * 设备监控大屏信息 + * + * @author gbx + * @since 2023/2/28 + */ + @Override + public ConcurrentHashMap> deviceMonitor() { + List res; + ConcurrentHashMap> map = new ConcurrentHashMap<>(); + JSONArray result = WQL.getWO("COCKPIT_DEVICE") + .addParam("flag", "3") + .process() + .getResultJSONArray(0); + JSONObject devicesStatus = PointUpdateUtil.getDevicesStatus(result); + if (ObjectUtil.isEmpty(devicesStatus)) { + return null; + } + JSONArray data = ObjectUtil.isNotEmpty( + devicesStatus.getJSONArray("data")) ? devicesStatus.getJSONArray("data") : result; + // 初始画数据 + for (int i = 1; i <= 13; i++) { + DeviceEnum deviceEnum = DeviceEnum.getByModel(String.valueOf(i)); + if (ObjectUtil.isEmpty(map.get(deviceEnum.getKeyName()))) { + List de = new ArrayList<>(); + map.put(deviceEnum.getKeyName(), de); + } + } + if (ObjectUtil.isNotEmpty(data)) { + res = data.toJavaList(DeviceInfoDto.class); + res.forEach(d -> { + DeviceEnum deviceEnum = DeviceEnum.getByModel(d.getDevice_model()); + // 添加图片名字 + d.setDevice_url(deviceEnum.getPictureName()); + // 分类链表 + if (ObjectUtil.isEmpty(map.get(deviceEnum.getKeyName()))) { + List de = new ArrayList<>(); + de.add(d); + map.put(deviceEnum.getKeyName(), de); + } else { + map.get(deviceEnum.getKeyName()).add(d); + map.put(deviceEnum.getKeyName(), map.get(deviceEnum.getKeyName())); + } + }); + return map; + } + return null; + } - /** - * 根据point_id获取设备信息 - * - * @author gbx - * @since 2023/3/1 - */ - @Override - public DeviceDetailDto findDeviceById(Map id) { - JSONObject rows = WQL.getWO("COCKPIT_DEVICE").addParam("flag", "2").addParam("point_id", id.get("id")).process().uniqueResult(0); - if(ObjectUtil.isNotEmpty(rows)) { - DeviceDetailDto deviceDetailDto = rows.toJavaObject(DeviceDetailDto.class); - //Todo 点击设备弹窗临时演示数据,后面需要根据业务逻辑查询 - deviceDetailDto.setReal_qty("1500"); - deviceDetailDto.setVehicle_code("L007"); - deviceDetailDto.setPoint_status("运行中"); - deviceDetailDto.setPallet_qty("120"); - deviceDetailDto.setMove_first_kiln("30"); - deviceDetailDto.setWork_time("3.5"); - deviceDetailDto.setMove_second_kiln("30"); - deviceDetailDto.setDevice_url("ylj"); - deviceDetailDto.setSecond_kiln_qty("0"); - deviceDetailDto.setPresent_kiln_qty("15"); - deviceDetailDto.setVolume("20"); - deviceDetailDto.setReady_lane("60"); - deviceDetailDto.setFirst_kiln_qty("20"); - deviceDetailDto.setMove_second_kiln("20"); - deviceDetailDto.setMechanical_arm_qty("12000"); - deviceDetailDto.setPack_qty("1200"); - deviceDetailDto.setFinish_pallet_qty("120"); - deviceDetailDto.setMechanical_pallet_qty("120"); - deviceDetailDto.setFinish_pile_qty("12"); - List setMixingList = new ArrayList<>(); - List setCrushingList = new ArrayList<>(); - setMixingList.add(ProductionInfoDto.builder().productionDetails("混料23.60*0.68").productionQty("1500").weightUnitName("KG").build()); - setMixingList.add(ProductionInfoDto.builder().productionDetails("混料24.00*0.89").productionQty("800").weightUnitName("KG").build()); - //混碾机,破碎机本日生产信息 - deviceDetailDto.setMixingList(setMixingList); - setCrushingList.add(ProductionInfoDto.builder().productionDetails("压制M29*0.90*5.5-6.5M").productionQty("10000").manufacturer("新余").build()); - setCrushingList.add(ProductionInfoDto.builder().productionDetails("压制Y22.00*0.80*2.5-3M").productionQty("15000").manufacturer("重钢").build()); - //压力机,机械手本日生产信息 - deviceDetailDto.setCrushingList(setCrushingList); - //窑本日生产信息 - deviceDetailDto.setMKilnList(setCrushingList); - return deviceDetailDto; - } - return null; - } + /** + * 根据point_id获取设备信息 + * + * @author gbx + * @since 2023/3/1 + */ + @Override + public DeviceDetailDto findDeviceById(Map id) { + JSONObject rows = WQL.getWO("COCKPIT_DEVICE").addParam("flag", "2").addParam("point_id", id.get("id")).process().uniqueResult(0); + if (ObjectUtil.isNotEmpty(rows)) { + DeviceDetailDto deviceDetailDto = rows.toJavaObject(DeviceDetailDto.class); + //Todo 点击设备弹窗临时演示数据,后面需要根据业务逻辑查询 + deviceDetailDto.setReal_qty("1500"); + deviceDetailDto.setVehicle_code("L007"); + deviceDetailDto.setPoint_status("运行中"); + deviceDetailDto.setPallet_qty("120"); + deviceDetailDto.setMove_first_kiln("30"); + deviceDetailDto.setWork_time("3.5"); + deviceDetailDto.setMove_second_kiln("30"); + deviceDetailDto.setDevice_url("ylj"); + deviceDetailDto.setSecond_kiln_qty("0"); + deviceDetailDto.setPresent_kiln_qty("15"); + deviceDetailDto.setVolume("20"); + deviceDetailDto.setReady_lane("60"); + deviceDetailDto.setFirst_kiln_qty("20"); + deviceDetailDto.setMove_second_kiln("20"); + deviceDetailDto.setMechanical_arm_qty("12000"); + deviceDetailDto.setPack_qty("1200"); + deviceDetailDto.setFinish_pallet_qty("120"); + deviceDetailDto.setMechanical_pallet_qty("120"); + deviceDetailDto.setFinish_pile_qty("12"); + List setMixingList = new ArrayList<>(); + List setCrushingList = new ArrayList<>(); + setMixingList.add(ProductionInfoDto.builder().productionDetails("混料23.60*0.68").productionQty("1500").weightUnitName("KG").build()); + setMixingList.add(ProductionInfoDto.builder().productionDetails("混料24.00*0.89").productionQty("800").weightUnitName("KG").build()); + //混碾机,破碎机本日生产信息 + deviceDetailDto.setMixingList(setMixingList); + setCrushingList.add(ProductionInfoDto.builder().productionDetails("压制M29*0.90*5.5-6.5M").productionQty("10000").manufacturer("新余").build()); + setCrushingList.add(ProductionInfoDto.builder().productionDetails("压制Y22.00*0.80*2.5-3M").productionQty("15000").manufacturer("重钢").build()); + //压力机,机械手本日生产信息 + deviceDetailDto.setCrushingList(setCrushingList); + //窑本日生产信息 + deviceDetailDto.setMKilnList(setCrushingList); + return deviceDetailDto; + } + return null; + } - /** - * 車间情况大屏信息 - * - * @author gbx - * @since 2023/3/1 - */ - @Override - public Map workshopCondition() { - //Todo 车间设备情况临时演示数据,后面需要根据业务逻辑查询 - Map hashMap = new HashMap<>(3); - //运行情况 - List runningStatusList = new ArrayList<>(); - runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("混料").deviceQty(16).faultyDevice(2).build()); - runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("压制").deviceQty(14).faultyDevice(1).build()); - runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("干燥").deviceQty(6).faultyDevice(0).build()); - runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("包装").deviceQty(9).faultyDevice(3).build()); - //近一个月故障次数 - List faultyStatusList = new ArrayList<>(); - faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("压制机4").faultyFrequency(91).build()); - faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("压制机9").faultyFrequency(82).build()); - faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("混料机5").faultyFrequency(71).build()); - faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("压制机3").faultyFrequency(33).build()); - //最近5个故障设备 - List faultyInfoList = new ArrayList<>(); - faultyInfoList.add(DeviceStatisticsDto.builder().faultyTime("2023-02-15 11:09:08").deviceCode("YZJ07SL01").deviceName("压制机7").pointStatus("3").build()); - faultyInfoList.add(DeviceStatisticsDto.builder().faultyTime("2023-02-15 10:24:12").deviceCode("HLJ45W15").deviceName("混料机15").pointStatus("3").build()); - faultyInfoList.add(DeviceStatisticsDto.builder().faultyTime("2023-02-15 10:01:33").deviceCode("YZJ02XL01").deviceName("压制机2").pointStatus("3").build()); - faultyInfoList.add(DeviceStatisticsDto.builder().faultyTime("2023-02-14 15:21:31").deviceCode("HLJ02W03").deviceName("混料机3").pointStatus("3").build()); - faultyInfoList.add(DeviceStatisticsDto.builder().faultyTime("2023-02-14 11:27:24").deviceCode("YZJ0903").deviceName("压制机9").pointStatus("3").build()); - hashMap.put("runningStatus", runningStatusList); - hashMap.put("faultyStatus", faultyStatusList); - hashMap.put("faultyInfo", faultyInfoList); - return hashMap; - } + /** + * 車间情况大屏信息 + * + * @author gbx + * @since 2023/3/1 + */ + @Override + public Map workshopCondition() { + //Todo 车间设备情况临时演示数据,后面需要根据业务逻辑查询 + Map hashMap = new HashMap<>(3); + //运行情况 + List runningStatusList = new ArrayList<>(); + runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("混料").deviceQty(16).faultyDevice(2).build()); + runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("压制").deviceQty(14).faultyDevice(1).build()); + runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("干燥").deviceQty(6).faultyDevice(0).build()); + runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("包装").deviceQty(9).faultyDevice(3).build()); + //近一个月故障次数 + List faultyStatusList = new ArrayList<>(); + faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("压制机4").faultyFrequency(91).build()); + faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("压制机9").faultyFrequency(82).build()); + faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("混料机5").faultyFrequency(71).build()); + faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("压制机3").faultyFrequency(33).build()); + //最近5个故障设备 + List faultyInfoList = new ArrayList<>(); + faultyInfoList.add(DeviceStatisticsDto.builder().faultyTime("2023-02-15 11:09:08").deviceCode("YZJ07SL01").deviceName("压制机7").pointStatus("3").build()); + faultyInfoList.add(DeviceStatisticsDto.builder().faultyTime("2023-02-15 10:24:12").deviceCode("HLJ45W15").deviceName("混料机15").pointStatus("3").build()); + faultyInfoList.add(DeviceStatisticsDto.builder().faultyTime("2023-02-15 10:01:33").deviceCode("YZJ02XL01").deviceName("压制机2").pointStatus("3").build()); + faultyInfoList.add(DeviceStatisticsDto.builder().faultyTime("2023-02-14 15:21:31").deviceCode("HLJ02W03").deviceName("混料机3").pointStatus("3").build()); + faultyInfoList.add(DeviceStatisticsDto.builder().faultyTime("2023-02-14 11:27:24").deviceCode("YZJ0903").deviceName("压制机9").pointStatus("3").build()); + hashMap.put("runningStatus", runningStatusList); + hashMap.put("faultyStatus", faultyStatusList); + hashMap.put("faultyInfo", faultyInfoList); + return hashMap; + } - /** - * 处理空白数据设置默认值 - */ - private void setResultComplete(List result) { - HashSet existingLabels = new HashSet<>(); // 创建一个 HashSet 对象 - // 遍历 result 列表中的每个 ProductionStatisticsDto 对象 - for (ProductionStatisticsDto dto : result) { - // 检查 label 字段是否存在于 existingLabels 集合中 - if (!existingLabels.contains(dto.getLabel())) { - // 将缺少的标签值添加到 existingLabels 集合中 - existingLabels.add(dto.getLabel()); - } - } - // 检查 2、3、4 标签值是否全部存在,如果有缺失则创建新的 ProductionStatisticsDto 对象并添加到 result 列表中 - for (int i = 2; i <= 4; i++) { - if (!existingLabels.contains(i+"")) { - result.add(ProductionStatisticsDto - .builder() - .workorder_procedure(ProductionStatisticsEnum.getName(String.valueOf(i))) - .label(String.valueOf(i)) - .real_qty(BigDecimal.valueOf(0)) - .plan_qty(BigDecimal.valueOf(0)) - .build()); - } - } - // 排序 - Collections.sort(result, Comparator.comparing(dto -> Integer.parseInt(dto.getLabel()))); - } + /** + * 处理空白数据设置默认值 + */ + private void setResultComplete(List result) { + HashSet existingLabels = new HashSet<>(); // 创建一个 HashSet 对象 + // 遍历 result 列表中的每个 ProductionStatisticsDto 对象 + for (ProductionStatisticsDto dto : result) { + // 检查 label 字段是否存在于 existingLabels 集合中 + if (!existingLabels.contains(dto.getLabel())) { + // 将缺少的标签值添加到 existingLabels 集合中 + existingLabels.add(dto.getLabel()); + } + } + // 检查 2、3、4 标签值是否全部存在,如果有缺失则创建新的 ProductionStatisticsDto 对象并添加到 result 列表中 + for (int i = 2; i <= 4; i++) { + if (!existingLabels.contains(i + "")) { + result.add(ProductionStatisticsDto + .builder() + .workorder_procedure(ProductionStatisticsEnum.getName(String.valueOf(i))) + .label(String.valueOf(i)) + .real_qty(BigDecimal.valueOf(0)) + .plan_qty(BigDecimal.valueOf(0)) + .build()); + } + } + // 排序 + Collections.sort(result, Comparator.comparing(dto -> Integer.parseInt(dto.getLabel()))); + } - /** - * 处理工序字段 - */ - private void getProcedureName(List result, int type) { + /** + * 处理工序字段 + */ + private void getProcedureName(List result, int type) { // if(type == 1) { // result.forEach(r -> { // if(StringUtils.isNotEmpty(r.getWorkorder_procedure())) { @@ -367,25 +381,24 @@ public class CockpitServiceImpl implements CockpitService{ // } // }); // } - } + } - /** - * 判断静置状态 - */ - private void getStandingStatus(SchBasePointDto schBasePointDto) { - if(StringUtils.isNotBlank(schBasePointDto.getInstorage_time()) && null != schBasePointDto.getStanding_time()) { - DateTime nowTime = DateUtil.parse(DateUtil.now(), DatePattern.NORM_DATETIME_FORMAT); - DateTime inStorageTime = DateUtil.parse(schBasePointDto.getInstorage_time(), DatePattern.NORM_DATETIME_FORMAT); - long minute = DateUtil.between(nowTime, inStorageTime, DateUnit.MINUTE); - if(minute < schBasePointDto.getStanding_time().longValue()) { - schBasePointDto.setStanding_status("静置中"); - } - else{ - schBasePointDto.setStanding_status("静置完成"); - } - if (schBasePointDto.getPoint_status().equals(PointEnum.POINT_STATUS_EMPTY_POSITION.getCode())) { - schBasePointDto.setPoint_status("空盅"); - } - } - } + /** + * 判断静置状态 + */ + private void getStandingStatus(SchBasePointDto schBasePointDto) { + if (StringUtils.isNotBlank(schBasePointDto.getInstorage_time()) && null != schBasePointDto.getStanding_time()) { + DateTime nowTime = DateUtil.parse(DateUtil.now(), DatePattern.NORM_DATETIME_FORMAT); + DateTime inStorageTime = DateUtil.parse(schBasePointDto.getInstorage_time(), DatePattern.NORM_DATETIME_FORMAT); + long minute = DateUtil.between(nowTime, inStorageTime, DateUnit.MINUTE); + if (minute < schBasePointDto.getStanding_time().longValue()) { + schBasePointDto.setStanding_status("静置中"); + } else { + schBasePointDto.setStanding_status("静置完成"); + } + if (schBasePointDto.getPoint_status().equals(PointEnum.POINT_STATUS_EMPTY_POSITION.getCode())) { + schBasePointDto.setPoint_status("空盅"); + } + } + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/DeviceEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/DeviceEnum.java index 93e0217..dfde547 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/DeviceEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/DeviceEnum.java @@ -8,18 +8,19 @@ import cn.hutool.core.util.StrUtil; * @Date: 2023/3/9 */ public enum DeviceEnum { - HLJ("1", "混料机", "HLJ", "HLJ"), - HLJ_S("2", "高速混料机", "HLJ_S", "HLJ_S"), - YZJ("3", "压机", "YZJ", "YZJ"), - YZJ_S("4", "液压机", "YZJ_S", "YZJ_S"), // - FJJXS("5", "分拣机械手", "FJJXS", "FJJXS"), - CPX("6", "拆盘线", "CPX", "CPX"), - BZX("6", "包装线", "BZX", "BZX"), - YAO("7", "窑设备", "YAO", "YAO"), - DPJ("8", "叠盘架", "DPJ", "DPJ"), - CPJ("9", "拆盘架", "CPJ", "CPJ"), - MDJXS("10", "码垛机械手", "MDJXS", "MDJXS"), - RGV("11", "RGV", "RGV", "RGV"); + HLJ_S("1", "高速混料机", "HLJ", "HLJ_S"), + HLJ("2", "混料机", "HLJ", "HLJ"), + YZJ_S("3", "液压机", "YZJ", "YZJ_S"), // + YZJ("4", "压机", "YZJ", "YZJ"), + MDJXS("5", "码垛机械手", "MDJXS", "MDJXS"), + RYHJ("6", "入窑桁架", "YAO", "RYHJ"), + YAO("7", "窑", "YAO", "YAO"), + CYHJ("8", "出窑桁架", "YAO", "CYHJ"), + FJCDJXS("9", "分拣拆垛机械手", "FJJXS", "FJCDJXS"), + FJMDJXS("10", "分拣码垛机械手", "FJJXS", "FJMDJXS"), + RGV("11", "RGV", "BZX", "RGV"), + BZJ("12", "包装机", "BZX", "BZJ"), + DTJ("13", "叠托机", "BZX", "DTJ"); private final String model; private final String name; @@ -35,7 +36,16 @@ public enum DeviceEnum { public static DeviceEnum get(String model, String code) { for (DeviceEnum deviceEnum : DeviceEnum.values()) { - if (code.equals(BZX.pictureName)) return BZX; + if (code.equals(BZJ.pictureName)) return BZJ; + if (StrUtil.equals(deviceEnum.model, model)) { + return deviceEnum; + } + } + return null; + } + + public static DeviceEnum getByModel(String model) { + for (DeviceEnum deviceEnum : DeviceEnum.values()) { if (StrUtil.equals(deviceEnum.model, model)) { return deviceEnum; }