Browse Source

rev: 修改设备监控大屏

master
李永德 2 years ago
parent
commit
0ae1452882
  1. 4
      lms/nladmin-system/src/main/java/org/nl/wms/cockpit/rest/CockpitController.java
  2. 3
      lms/nladmin-system/src/main/java/org/nl/wms/cockpit/service/CockpitService.java
  3. 665
      lms/nladmin-system/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java
  4. 36
      lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/DeviceEnum.java

4
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.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap;
/** /**
* 大屏数据1 * 大屏数据1
@ -82,7 +84,7 @@ public class CockpitController{
@PostMapping("/deviceMonitor") @PostMapping("/deviceMonitor")
@Log("设备监控") @Log("设备监控")
@ApiOperation("设备监控") @ApiOperation("设备监控")
public CommonResult<List<DeviceInfoDto>> deviceMonitor() { public CommonResult<ConcurrentHashMap<String,List<DeviceInfoDto>>> deviceMonitor() {
return RestBusinessTemplate.execute(cockpitService::deviceMonitor); return RestBusinessTemplate.execute(cockpitService::deviceMonitor);
} }

3
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.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap;
/** /**
* 大屏服务接口1 * 大屏服务接口1
@ -43,7 +44,7 @@ public interface CockpitService{
* *
* @return 返回结果集 * @return 返回结果集
*/ */
List<DeviceInfoDto> deviceMonitor(); ConcurrentHashMap<String,List<DeviceInfoDto>> deviceMonitor();
/** /**
* 根据point_id获取设备信息 * 根据point_id获取设备信息

665
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.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ThreadPoolExecutor;
/** /**
* 大屏服务实现1 * 大屏服务实现1
@ -36,24 +33,24 @@ import java.util.concurrent.ThreadPoolExecutor;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j @Slf4j
public class CockpitServiceImpl implements CockpitService{ public class CockpitServiceImpl implements CockpitService {
/** /**
* 生产统计大屏 * 生产统计大屏
* *
* @author gbx * @author gbx
* @since 2023/2/27 * @since 2023/2/27
*/ */
@Override @Override
public ConcurrentHashMap<String,Object> productionStatistics() { public ConcurrentHashMap<String, Object> productionStatistics() {
ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll(); ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll();
ConcurrentHashMap<String,Object> map = new ConcurrentHashMap<>(3); ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>(3);
// 1、获取生产任务列表 // 1、获取生产任务列表
CompletableFuture<List<WorkorderDto>> productionTask = CompletableFuture.supplyAsync(() -> { CompletableFuture<List<WorkorderDto>> productionTask = CompletableFuture.supplyAsync(() -> {
List<WorkorderDto> res = new CopyOnWriteArrayList<>(); List<WorkorderDto> res = new CopyOnWriteArrayList<>();
JSONArray result = WQL.getWO("COCKPIT_PRODUCTION").addParam("flag", "1").process().getResultJSONArray(0); JSONArray result = WQL.getWO("COCKPIT_PRODUCTION").addParam("flag", "1").process().getResultJSONArray(0);
if(ObjectUtil.isNotEmpty(result)) { if (ObjectUtil.isNotEmpty(result)) {
res = result.toJavaList(WorkorderDto.class); res = result.toJavaList(WorkorderDto.class);
// res.forEach(r -> { // res.forEach(r -> {
// r.setCust_name("新余钢铁"); // r.setCust_name("新余钢铁");
// if(StringUtils.isNotEmpty(r.getLabel())) { // if(StringUtils.isNotEmpty(r.getLabel())) {
@ -61,298 +58,315 @@ public class CockpitServiceImpl implements CockpitService{
// r.setShift_type(r.getLabel().substring(0, 2) + "白班"); // r.setShift_type(r.getLabel().substring(0, 2) + "白班");
// } // }
// }); // });
} }
return res; return res;
}, pool); }, pool);
productionTask.thenAccept((result) -> map.put("productionTask", result)).exceptionally((e) -> { productionTask.thenAccept((result) -> map.put("productionTask", result)).exceptionally((e) -> {
log.error("获取生产任务列表: {}", e.getMessage(), e); log.error("获取生产任务列表: {}", e.getMessage(), e);
map.put("productionTask", ""); map.put("productionTask", "");
return null; return null;
}); });
/** /**
* 为了不破坏原来的输出形式会有冗余数据的输出 * 为了不破坏原来的输出形式会有冗余数据的输出
*/ */
// 2、获取原料计划完成情况 // 2、获取原料计划完成情况
CompletableFuture<JSONArray> materialTask = CompletableFuture.supplyAsync(() -> WQL.getWO("COCKPIT_PRODUCTION").addParam("flag", "5").process().getResultJSONArray(0), pool); CompletableFuture<JSONArray> materialTask = CompletableFuture.supplyAsync(() -> WQL.getWO("COCKPIT_PRODUCTION").addParam("flag", "5").process().getResultJSONArray(0), pool);
materialTask.thenAccept((result) -> { materialTask.thenAccept((result) -> {
if (ObjectUtil.isEmpty(result)) { if (ObjectUtil.isEmpty(result)) {
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
object.put("workorder_procedure", "原料"); object.put("workorder_procedure", "原料");
object.put("label", "1"); object.put("label", "1");
object.put("plan_qty", "0"); object.put("plan_qty", "0");
object.put("real_qty", "0"); object.put("real_qty", "0");
result.add(object); result.add(object);
} }
map.put("materialTask", result); map.put("materialTask", result);
}).exceptionally((e) -> { }).exceptionally((e) -> {
log.error("获取原料计划完成情况: {}", e.getMessage(), e); log.error("获取原料计划完成情况: {}", e.getMessage(), e);
map.put("materialTask", ""); map.put("materialTask", "");
return null; return null;
}); });
// 3、获取成品计划完成情况,今日压制量,干燥量,成品量 // 3、获取成品计划完成情况,今日压制量,干燥量,成品量
CompletableFuture<JSONArray> finishedTask = CompletableFuture.supplyAsync(() -> WQL.getWO("COCKPIT_PRODUCTION").addParam("flag", "4").process().getResultJSONArray(0), pool); CompletableFuture<JSONArray> finishedTask = CompletableFuture.supplyAsync(() -> WQL.getWO("COCKPIT_PRODUCTION").addParam("flag", "4").process().getResultJSONArray(0), pool);
finishedTask.thenAccept((result) -> { finishedTask.thenAccept((result) -> {
List<ProductionStatisticsDto> planRes = new CopyOnWriteArrayList<>(); List<ProductionStatisticsDto> planRes = new CopyOnWriteArrayList<>();
List<ProductionStatisticsDto> finishedRes = new CopyOnWriteArrayList<>(); List<ProductionStatisticsDto> finishedRes = new CopyOnWriteArrayList<>();
if(ObjectUtil.isNotEmpty(result)) { if (ObjectUtil.isNotEmpty(result)) {
//成品计划完成情况,应前端要求分开两个一样的数据结果,简化调用数据采集 //成品计划完成情况,应前端要求分开两个一样的数据结果,简化调用数据采集
planRes = result.toJavaList(ProductionStatisticsDto.class); planRes = result.toJavaList(ProductionStatisticsDto.class);
setResultComplete(planRes); setResultComplete(planRes);
//今日压制量,干燥量,成品量 //今日压制量,干燥量,成品量
finishedRes = result.toJavaList(ProductionStatisticsDto.class); finishedRes = result.toJavaList(ProductionStatisticsDto.class);
setResultComplete(finishedRes); setResultComplete(finishedRes);
} }
map.put("planRes", planRes); map.put("planRes", planRes);
map.put("finishedRes", finishedRes); map.put("finishedRes", finishedRes);
}).exceptionally((e) -> { }).exceptionally((e) -> {
log.error("获取成品计划完成情况: {}", e.getMessage(), e); log.error("获取成品计划完成情况: {}", e.getMessage(), e);
map.put("planRes", ""); map.put("planRes", "");
map.put("finishedRes", ""); map.put("finishedRes", "");
return null; return null;
}); });
CompletableFuture<Void> allQuery = CompletableFuture.allOf(productionTask, materialTask, finishedTask); CompletableFuture<Void> allQuery = CompletableFuture.allOf(productionTask, materialTask, finishedTask);
CompletableFuture<ConcurrentHashMap<String,Object>> future = allQuery.thenApply((result) -> map).exceptionally((e) -> { CompletableFuture<ConcurrentHashMap<String, Object>> future = allQuery.thenApply((result) -> map).exceptionally((e) -> {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
return null; return null;
}); });
future.join(); future.join();
return map; return map;
} }
/** /**
* 仓储监控大屏信息 * 仓储监控大屏信息
* *
* @author gbx * @author gbx
* @since 2023/2/27 * @since 2023/2/27
*/ */
@Override @Override
public ConcurrentHashMap<String,Object> storageMonitor() { public ConcurrentHashMap<String, Object> storageMonitor() {
ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll(); ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll();
ConcurrentHashMap<String,Object> map = new ConcurrentHashMap<>(2); ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>(2);
// 1、获取原料仓储信息 // 1、获取原料仓储信息
CompletableFuture<List<SchBasePointDto>> materialStorage = CompletableFuture.supplyAsync(() -> { CompletableFuture<List<SchBasePointDto>> materialStorage = CompletableFuture.supplyAsync(() -> {
List<SchBasePointDto> res = new CopyOnWriteArrayList<>(); List<SchBasePointDto> res = new CopyOnWriteArrayList<>();
// 查找所有困料货架 // 查找所有困料货架
JSONArray result = WQL.getWO("COCKPIT_STORAGE").addParam("flag", "1").process().getResultJSONArray(0); JSONArray result = WQL.getWO("COCKPIT_STORAGE").addParam("flag", "1").process().getResultJSONArray(0);
if(ObjectUtil.isNotEmpty(result)) { if (ObjectUtil.isNotEmpty(result)) {
res = result.toJavaList(SchBasePointDto.class); res = result.toJavaList(SchBasePointDto.class);
res.forEach(schBasePointDto -> { res.forEach(schBasePointDto -> {
//Todo 空盅和强制完成状态相关逻辑待完善 //Todo 空盅和强制完成状态相关逻辑待完善
//根据入库时间和静置时间判断静置状态 //根据入库时间和静置时间判断静置状态
getStandingStatus(schBasePointDto); getStandingStatus(schBasePointDto);
//是否满托 //是否满托
if(StringUtils.isNotEmpty(schBasePointDto.getIs_full())) { if (StringUtils.isNotEmpty(schBasePointDto.getIs_full())) {
schBasePointDto.setIs_full(IsOrNotEnum.getName(schBasePointDto.getIs_full())); schBasePointDto.setIs_full(IsOrNotEnum.getName(schBasePointDto.getIs_full()));
} }
}); });
} }
return res; return res;
}, pool); }, pool);
materialStorage.thenAccept((result) -> { materialStorage.thenAccept((result) -> {
//原料仓储监控信息,应前端要求分开两个一样的数据结果,简化调用 //原料仓储监控信息,应前端要求分开两个一样的数据结果,简化调用
map.put("materialTask", result); map.put("materialTask", result);
//原料库存 //原料库存
map.put("materialList", result); map.put("materialList", result);
}).exceptionally((e) -> { }).exceptionally((e) -> {
log.error("获取原料仓储信息: {}", e.getMessage(), e); log.error("获取原料仓储信息: {}", e.getMessage(), e);
map.put("materialTask", ""); map.put("materialTask", "");
map.put("materialList", ""); map.put("materialList", "");
return null; return null;
}); });
// 2、获取成品仓储信息 // 2、获取成品仓储信息
CompletableFuture<List<SchBasePointDto>> finishedStorage = CompletableFuture.supplyAsync(() -> { CompletableFuture<List<SchBasePointDto>> finishedStorage = CompletableFuture.supplyAsync(() -> {
List<SchBasePointDto> res = new CopyOnWriteArrayList<>(); List<SchBasePointDto> res = new CopyOnWriteArrayList<>();
JSONArray result = WQL.getWO("COCKPIT_STORAGE").addParam("flag", "2").process().getResultJSONArray(0); JSONArray result = WQL.getWO("COCKPIT_STORAGE").addParam("flag", "2").process().getResultJSONArray(0);
if(ObjectUtil.isNotEmpty(result)) { if (ObjectUtil.isNotEmpty(result)) {
res = result.toJavaList(SchBasePointDto.class); res = result.toJavaList(SchBasePointDto.class);
} }
return res; return res;
}, pool); }, pool);
finishedStorage.thenAccept((result) -> { finishedStorage.thenAccept((result) -> {
//成品仓储监控信息,应前端要求分开两个一样的数据结果,简化调用 //成品仓储监控信息,应前端要求分开两个一样的数据结果,简化调用
map.put("productionTask", result); map.put("productionTask", result);
//成品库存 //成品库存
map.put("productionList", result); map.put("productionList", result);
}).exceptionally((e) -> { }).exceptionally((e) -> {
log.error("获取成品仓储信息: {}", e.getMessage(), e); log.error("获取成品仓储信息: {}", e.getMessage(), e);
map.put("productionTask", ""); map.put("productionTask", "");
map.put("productionList", ""); map.put("productionList", "");
return null; return null;
}); });
CompletableFuture<Void> allQuery = CompletableFuture.allOf(materialStorage, finishedStorage); CompletableFuture<Void> allQuery = CompletableFuture.allOf(materialStorage, finishedStorage);
CompletableFuture<ConcurrentHashMap<String,Object>> future = allQuery.thenApply((result) -> map).exceptionally((e) -> { CompletableFuture<ConcurrentHashMap<String, Object>> future = allQuery.thenApply((result) -> map).exceptionally((e) -> {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
return null; return null;
}); });
future.join(); future.join();
return map; return map;
} }
/** /**
* 根据点位id获取仓储信息 * 根据点位id获取仓储信息
* *
* @author gbx * @author gbx
* @since 2023/3/1 * @since 2023/3/1
*/ */
@Override @Override
public SchBasePointDto findStorageById(Map<String,String> id) { public SchBasePointDto findStorageById(Map<String, String> id) {
JSONObject rows = WQL.getWO("COCKPIT_STORAGE").addParam("flag", "3").addParam("point_id", id.get("id")).process().uniqueResult(0); JSONObject rows = WQL.getWO("COCKPIT_STORAGE").addParam("flag", "3").addParam("point_id", id.get("id")).process().uniqueResult(0);
if(ObjectUtil.isNotEmpty(rows)) { if (ObjectUtil.isNotEmpty(rows)) {
SchBasePointDto res = rows.toJavaObject(SchBasePointDto.class); SchBasePointDto res = rows.toJavaObject(SchBasePointDto.class);
getStandingStatus(res); getStandingStatus(res);
return res; return res;
} }
return null; return null;
} }
/** /**
* 设备监控大屏信息 * 设备监控大屏信息
* *
* @author gbx * @author gbx
* @since 2023/2/28 * @since 2023/2/28
*/ */
@Override @Override
public List<DeviceInfoDto> deviceMonitor() { public ConcurrentHashMap<String, List<DeviceInfoDto>> deviceMonitor() {
List<DeviceInfoDto> res; List<DeviceInfoDto> res;
ConcurrentHashMap<String,List<DeviceInfoDto>> map = new ConcurrentHashMap<>(); ConcurrentHashMap<String, List<DeviceInfoDto>> map = new ConcurrentHashMap<>();
JSONArray result = WQL.getWO("COCKPIT_DEVICE") JSONArray result = WQL.getWO("COCKPIT_DEVICE")
.addParam("flag", "3") .addParam("flag", "3")
.process() .process()
.getResultJSONArray(0); .getResultJSONArray(0);
JSONObject devicesStatus = PointUpdateUtil.getDevicesStatus(result); JSONObject devicesStatus = PointUpdateUtil.getDevicesStatus(result);
if (ObjectUtil.isEmpty(devicesStatus)) { if (ObjectUtil.isEmpty(devicesStatus)) {
return null; return null;
} }
JSONArray data = ObjectUtil.isNotEmpty( JSONArray data = ObjectUtil.isNotEmpty(
devicesStatus.getJSONArray("data"))?devicesStatus.getJSONArray("data"):result; devicesStatus.getJSONArray("data")) ? devicesStatus.getJSONArray("data") : result;
if(ObjectUtil.isNotEmpty(data)) { // 初始画数据
res = data.toJavaList(DeviceInfoDto.class); for (int i = 1; i <= 13; i++) {
res.forEach(d -> { DeviceEnum deviceEnum = DeviceEnum.getByModel(String.valueOf(i));
DeviceEnum deviceEnum = DeviceEnum.get(d.getDevice_model(), d.getDevice_code()); if (ObjectUtil.isEmpty(map.get(deviceEnum.getKeyName()))) {
// 添加图片名字 List<DeviceInfoDto> de = new ArrayList<>();
d.setDevice_url(deviceEnum.getPictureName()); map.put(deviceEnum.getKeyName(), de);
}); }
return res; }
} if (ObjectUtil.isNotEmpty(data)) {
return null; 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<DeviceInfoDto> 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获取设备信息 * 根据point_id获取设备信息
* *
* @author gbx * @author gbx
* @since 2023/3/1 * @since 2023/3/1
*/ */
@Override @Override
public DeviceDetailDto findDeviceById(Map<String,String> id) { public DeviceDetailDto findDeviceById(Map<String, String> id) {
JSONObject rows = WQL.getWO("COCKPIT_DEVICE").addParam("flag", "2").addParam("point_id", id.get("id")).process().uniqueResult(0); JSONObject rows = WQL.getWO("COCKPIT_DEVICE").addParam("flag", "2").addParam("point_id", id.get("id")).process().uniqueResult(0);
if(ObjectUtil.isNotEmpty(rows)) { if (ObjectUtil.isNotEmpty(rows)) {
DeviceDetailDto deviceDetailDto = rows.toJavaObject(DeviceDetailDto.class); DeviceDetailDto deviceDetailDto = rows.toJavaObject(DeviceDetailDto.class);
//Todo 点击设备弹窗临时演示数据,后面需要根据业务逻辑查询 //Todo 点击设备弹窗临时演示数据,后面需要根据业务逻辑查询
deviceDetailDto.setReal_qty("1500"); deviceDetailDto.setReal_qty("1500");
deviceDetailDto.setVehicle_code("L007"); deviceDetailDto.setVehicle_code("L007");
deviceDetailDto.setPoint_status("运行中"); deviceDetailDto.setPoint_status("运行中");
deviceDetailDto.setPallet_qty("120"); deviceDetailDto.setPallet_qty("120");
deviceDetailDto.setMove_first_kiln("30"); deviceDetailDto.setMove_first_kiln("30");
deviceDetailDto.setWork_time("3.5"); deviceDetailDto.setWork_time("3.5");
deviceDetailDto.setMove_second_kiln("30"); deviceDetailDto.setMove_second_kiln("30");
deviceDetailDto.setDevice_url("ylj"); deviceDetailDto.setDevice_url("ylj");
deviceDetailDto.setSecond_kiln_qty("0"); deviceDetailDto.setSecond_kiln_qty("0");
deviceDetailDto.setPresent_kiln_qty("15"); deviceDetailDto.setPresent_kiln_qty("15");
deviceDetailDto.setVolume("20"); deviceDetailDto.setVolume("20");
deviceDetailDto.setReady_lane("60"); deviceDetailDto.setReady_lane("60");
deviceDetailDto.setFirst_kiln_qty("20"); deviceDetailDto.setFirst_kiln_qty("20");
deviceDetailDto.setMove_second_kiln("20"); deviceDetailDto.setMove_second_kiln("20");
deviceDetailDto.setMechanical_arm_qty("12000"); deviceDetailDto.setMechanical_arm_qty("12000");
deviceDetailDto.setPack_qty("1200"); deviceDetailDto.setPack_qty("1200");
deviceDetailDto.setFinish_pallet_qty("120"); deviceDetailDto.setFinish_pallet_qty("120");
deviceDetailDto.setMechanical_pallet_qty("120"); deviceDetailDto.setMechanical_pallet_qty("120");
deviceDetailDto.setFinish_pile_qty("12"); deviceDetailDto.setFinish_pile_qty("12");
List<ProductionInfoDto> setMixingList = new ArrayList<>(); List<ProductionInfoDto> setMixingList = new ArrayList<>();
List<ProductionInfoDto> setCrushingList = new ArrayList<>(); List<ProductionInfoDto> setCrushingList = new ArrayList<>();
setMixingList.add(ProductionInfoDto.builder().productionDetails("混料23.60*0.68").productionQty("1500").weightUnitName("KG").build()); 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()); setMixingList.add(ProductionInfoDto.builder().productionDetails("混料24.00*0.89").productionQty("800").weightUnitName("KG").build());
//混碾机,破碎机本日生产信息 //混碾机,破碎机本日生产信息
deviceDetailDto.setMixingList(setMixingList); deviceDetailDto.setMixingList(setMixingList);
setCrushingList.add(ProductionInfoDto.builder().productionDetails("压制M29*0.90*5.5-6.5M").productionQty("10000").manufacturer("新余").build()); 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()); setCrushingList.add(ProductionInfoDto.builder().productionDetails("压制Y22.00*0.80*2.5-3M").productionQty("15000").manufacturer("重钢").build());
//压力机,机械手本日生产信息 //压力机,机械手本日生产信息
deviceDetailDto.setCrushingList(setCrushingList); deviceDetailDto.setCrushingList(setCrushingList);
//窑本日生产信息 //窑本日生产信息
deviceDetailDto.setMKilnList(setCrushingList); deviceDetailDto.setMKilnList(setCrushingList);
return deviceDetailDto; return deviceDetailDto;
} }
return null; return null;
} }
/** /**
* 車间情况大屏信息 * 車间情况大屏信息
* *
* @author gbx * @author gbx
* @since 2023/3/1 * @since 2023/3/1
*/ */
@Override @Override
public Map<String,Object> workshopCondition() { public Map<String, Object> workshopCondition() {
//Todo 车间设备情况临时演示数据,后面需要根据业务逻辑查询 //Todo 车间设备情况临时演示数据,后面需要根据业务逻辑查询
Map<String,Object> hashMap = new HashMap<>(3); Map<String, Object> hashMap = new HashMap<>(3);
//运行情况 //运行情况
List<DeviceStatisticsDto> runningStatusList = new ArrayList<>(); List<DeviceStatisticsDto> runningStatusList = new ArrayList<>();
runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("混料").deviceQty(16).faultyDevice(2).build()); 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(14).faultyDevice(1).build());
runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("干燥").deviceQty(6).faultyDevice(0).build()); runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("干燥").deviceQty(6).faultyDevice(0).build());
runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("包装").deviceQty(9).faultyDevice(3).build()); runningStatusList.add(DeviceStatisticsDto.builder().workorder_procedure("包装").deviceQty(9).faultyDevice(3).build());
//近一个月故障次数 //近一个月故障次数
List<DeviceStatisticsDto> faultyStatusList = new ArrayList<>(); List<DeviceStatisticsDto> faultyStatusList = new ArrayList<>();
faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("压制机4").faultyFrequency(91).build()); faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("压制机4").faultyFrequency(91).build());
faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("压制机9").faultyFrequency(82).build()); faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("压制机9").faultyFrequency(82).build());
faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("混料机5").faultyFrequency(71).build()); faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("混料机5").faultyFrequency(71).build());
faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("压制机3").faultyFrequency(33).build()); faultyStatusList.add(DeviceStatisticsDto.builder().deviceName("压制机3").faultyFrequency(33).build());
//最近5个故障设备 //最近5个故障设备
List<DeviceStatisticsDto> faultyInfoList = new ArrayList<>(); List<DeviceStatisticsDto> 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 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: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-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 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()); faultyInfoList.add(DeviceStatisticsDto.builder().faultyTime("2023-02-14 11:27:24").deviceCode("YZJ0903").deviceName("压制机9").pointStatus("3").build());
hashMap.put("runningStatus", runningStatusList); hashMap.put("runningStatus", runningStatusList);
hashMap.put("faultyStatus", faultyStatusList); hashMap.put("faultyStatus", faultyStatusList);
hashMap.put("faultyInfo", faultyInfoList); hashMap.put("faultyInfo", faultyInfoList);
return hashMap; return hashMap;
} }
/** /**
* 处理空白数据设置默认值 * 处理空白数据设置默认值
*/ */
private void setResultComplete(List<ProductionStatisticsDto> result) { private void setResultComplete(List<ProductionStatisticsDto> result) {
HashSet<String> existingLabels = new HashSet<>(); // 创建一个 HashSet 对象 HashSet<String> existingLabels = new HashSet<>(); // 创建一个 HashSet 对象
// 遍历 result 列表中的每个 ProductionStatisticsDto 对象 // 遍历 result 列表中的每个 ProductionStatisticsDto 对象
for (ProductionStatisticsDto dto : result) { for (ProductionStatisticsDto dto : result) {
// 检查 label 字段是否存在于 existingLabels 集合中 // 检查 label 字段是否存在于 existingLabels 集合中
if (!existingLabels.contains(dto.getLabel())) { if (!existingLabels.contains(dto.getLabel())) {
// 将缺少的标签值添加到 existingLabels 集合中 // 将缺少的标签值添加到 existingLabels 集合中
existingLabels.add(dto.getLabel()); existingLabels.add(dto.getLabel());
} }
} }
// 检查 2、3、4 标签值是否全部存在,如果有缺失则创建新的 ProductionStatisticsDto 对象并添加到 result 列表中 // 检查 2、3、4 标签值是否全部存在,如果有缺失则创建新的 ProductionStatisticsDto 对象并添加到 result 列表中
for (int i = 2; i <= 4; i++) { for (int i = 2; i <= 4; i++) {
if (!existingLabels.contains(i+"")) { if (!existingLabels.contains(i + "")) {
result.add(ProductionStatisticsDto result.add(ProductionStatisticsDto
.builder() .builder()
.workorder_procedure(ProductionStatisticsEnum.getName(String.valueOf(i))) .workorder_procedure(ProductionStatisticsEnum.getName(String.valueOf(i)))
.label(String.valueOf(i)) .label(String.valueOf(i))
.real_qty(BigDecimal.valueOf(0)) .real_qty(BigDecimal.valueOf(0))
.plan_qty(BigDecimal.valueOf(0)) .plan_qty(BigDecimal.valueOf(0))
.build()); .build());
} }
} }
// 排序 // 排序
Collections.sort(result, Comparator.comparing(dto -> Integer.parseInt(dto.getLabel()))); Collections.sort(result, Comparator.comparing(dto -> Integer.parseInt(dto.getLabel())));
} }
/** /**
* 处理工序字段 * 处理工序字段
*/ */
private void getProcedureName(List<ProductionStatisticsDto> result, int type) { private void getProcedureName(List<ProductionStatisticsDto> result, int type) {
// if(type == 1) { // if(type == 1) {
// result.forEach(r -> { // result.forEach(r -> {
// if(StringUtils.isNotEmpty(r.getWorkorder_procedure())) { // if(StringUtils.isNotEmpty(r.getWorkorder_procedure())) {
@ -367,25 +381,24 @@ public class CockpitServiceImpl implements CockpitService{
// } // }
// }); // });
// } // }
} }
/** /**
* 判断静置状态 * 判断静置状态
*/ */
private void getStandingStatus(SchBasePointDto schBasePointDto) { private void getStandingStatus(SchBasePointDto schBasePointDto) {
if(StringUtils.isNotBlank(schBasePointDto.getInstorage_time()) && null != schBasePointDto.getStanding_time()) { if (StringUtils.isNotBlank(schBasePointDto.getInstorage_time()) && null != schBasePointDto.getStanding_time()) {
DateTime nowTime = DateUtil.parse(DateUtil.now(), DatePattern.NORM_DATETIME_FORMAT); DateTime nowTime = DateUtil.parse(DateUtil.now(), DatePattern.NORM_DATETIME_FORMAT);
DateTime inStorageTime = DateUtil.parse(schBasePointDto.getInstorage_time(), DatePattern.NORM_DATETIME_FORMAT); DateTime inStorageTime = DateUtil.parse(schBasePointDto.getInstorage_time(), DatePattern.NORM_DATETIME_FORMAT);
long minute = DateUtil.between(nowTime, inStorageTime, DateUnit.MINUTE); long minute = DateUtil.between(nowTime, inStorageTime, DateUnit.MINUTE);
if(minute < schBasePointDto.getStanding_time().longValue()) { if (minute < schBasePointDto.getStanding_time().longValue()) {
schBasePointDto.setStanding_status("静置中"); schBasePointDto.setStanding_status("静置中");
} } else {
else{ schBasePointDto.setStanding_status("静置完成");
schBasePointDto.setStanding_status("静置完成"); }
} if (schBasePointDto.getPoint_status().equals(PointEnum.POINT_STATUS_EMPTY_POSITION.getCode())) {
if (schBasePointDto.getPoint_status().equals(PointEnum.POINT_STATUS_EMPTY_POSITION.getCode())) { schBasePointDto.setPoint_status("空盅");
schBasePointDto.setPoint_status("空盅"); }
} }
} }
}
} }

36
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 * @Date: 2023/3/9
*/ */
public enum DeviceEnum { public enum DeviceEnum {
HLJ("1", "混料机", "HLJ", "HLJ"), HLJ_S("1", "高速混料机", "HLJ", "HLJ_S"),
HLJ_S("2", "高速混料机", "HLJ_S", "HLJ_S"), HLJ("2", "混料机", "HLJ", "HLJ"),
YZJ("3", "压机", "YZJ", "YZJ"), YZJ_S("3", "液压机", "YZJ", "YZJ_S"), //
YZJ_S("4", "液压机", "YZJ_S", "YZJ_S"), // YZJ("4", "压机", "YZJ", "YZJ"),
FJJXS("5", "分拣机械手", "FJJXS", "FJJXS"), MDJXS("5", "码垛机械手", "MDJXS", "MDJXS"),
CPX("6", "拆盘线", "CPX", "CPX"), RYHJ("6", "入窑桁架", "YAO", "RYHJ"),
BZX("6", "包装线", "BZX", "BZX"), YAO("7", "窑", "YAO", "YAO"),
YAO("7", "窑设备", "YAO", "YAO"), CYHJ("8", "出窑桁架", "YAO", "CYHJ"),
DPJ("8", "叠盘架", "DPJ", "DPJ"), FJCDJXS("9", "分拣拆垛机械手", "FJJXS", "FJCDJXS"),
CPJ("9", "拆盘架", "CPJ", "CPJ"), FJMDJXS("10", "分拣码垛机械手", "FJJXS", "FJMDJXS"),
MDJXS("10", "码垛机械手", "MDJXS", "MDJXS"), RGV("11", "RGV", "BZX", "RGV"),
RGV("11", "RGV", "RGV", "RGV"); BZJ("12", "包装机", "BZX", "BZJ"),
DTJ("13", "叠托机", "BZX", "DTJ");
private final String model; private final String model;
private final String name; private final String name;
@ -35,7 +36,16 @@ public enum DeviceEnum {
public static DeviceEnum get(String model, String code) { public static DeviceEnum get(String model, String code) {
for (DeviceEnum deviceEnum : DeviceEnum.values()) { 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)) { if (StrUtil.equals(deviceEnum.model, model)) {
return deviceEnum; return deviceEnum;
} }

Loading…
Cancel
Save