数字孪生优化

This commit is contained in:
psh
2024-07-12 14:19:13 +08:00
parent d00bec3f25
commit 69f986fdc9
3 changed files with 138 additions and 147 deletions

View File

@@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.ColaBeanUtils; import org.nl.common.utils.ColaBeanUtils;
import org.nl.common.utils.RedisUtils;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.wms.cockpit.service.CockpitService; import org.nl.wms.cockpit.service.CockpitService;
import org.nl.wms.cockpit.service.dao.CommonData; import org.nl.wms.cockpit.service.dao.CommonData;
@@ -88,6 +89,9 @@ public class CockpitServiceImpl implements CockpitService {
@Autowired @Autowired
PdmBdSolidifyPlanServiceImpl pdmBdSolidifyPlanServiceImpl; PdmBdSolidifyPlanServiceImpl pdmBdSolidifyPlanServiceImpl;
@Autowired
private RedisUtils redisUtils;
/** /**
* 总览 * 总览
@@ -313,48 +317,69 @@ public class CockpitServiceImpl implements CockpitService {
switch (point.getRegion_code()) { switch (point.getRegion_code()) {
case RegionCodeConstant.COATED_PLATE_LINE_AREA: case RegionCodeConstant.COATED_PLATE_LINE_AREA:
// hint: 涂板线是作为一整台设备显示。point设备点 // hint: 涂板线是作为一整台设备显示。point设备点
JSONArray baoshijian= (JSONArray) redisUtils.get("baoshijian");
points = pointService.getSubSites(deviceCode); points = pointService.getSubSites(deviceCode);
res.put("device_code", deviceCode); res.put("device_code", deviceCode);
res.put("device_name", point.getPoint_name()); res.put("device_name", point.getPoint_name());
res.put("mode", "2"); // res.put("mode", "2");
res.put("status", "1"); // res.put("status", "1");
res.put("error", "0"); // res.put("error", "0");
res.put("open_time", DateUtil.now()); // res.put("open_time", DateUtil.now());
res.put("standby_time", 20); // res.put("standby_time", 20);
res.put("production_time", 20); // res.put("production_time", 20);
res.put("error_time", 0); // res.put("error_time", 0);
res.put("material", "01200000"); // res.put("material", "01200000");
JSONArray array = new JSONArray(); JSONArray array = new JSONArray();
// 获取最近3条工单数据
List<TargetAchievement> targetAchievementList = cockpitMapper.getDeviceLimitOrders(deviceCode, 3);
JSONArray productionTask = JSONArray.parseArray(JSON.toJSONString(targetAchievementList));
res.put("production_tasks", productionTask);
for (int i = 0; i < points.size(); i++) { for (int i = 0; i < points.size(); i++) {
SchBasePoint pointObj = points.get(i); SchBasePoint pointObj = points.get(i);
JSONObject one = new JSONObject(); JSONObject one = new JSONObject();
one.put("device_code", pointObj.getPoint_code()); one.put("device_code", pointObj.getPoint_code());
one.put("device_name", pointObj.getPoint_name()); one.put("device_name", pointObj.getPoint_name());
one.put("mode", "2"); // one.put("mode", "2");
one.put("move", "0"); for(Object object:baoshijian){
one.put("material_type", pointObj.getCan_vehicle_type()); JSONObject jsonObject= (JSONObject) object;
one.put("error", "0"); if(pointObj.getPoint_code().equals(jsonObject.getString("device_code"))){
one.put("move",jsonObject.getString("move")==null?"0":jsonObject.getString("move"));
}
}
// one.put("move", "0");
one.put("material_name", targetAchievementList.size()!=0?targetAchievementList.get(0).getMaterial_name():null);
// one.put("error", "0");
array.add(one); array.add(one);
} }
res.put("details", array); res.put("details", array);
// 获取最近3条工单数据
List<TargetAchievement> targetAchievementList = cockpitMapper.getDeviceLimitOrders(deviceCode, 3);
JSONArray productionTask = JSONArray.parseArray(JSON.toJSONString(targetAchievementList));
res.put("production_tasks", productionTask);
break; break;
case RegionCodeConstant.CURING_ZONE: case RegionCodeConstant.CURING_ZONE:
// hint: 固化室,需要显示整个设备+内部位置明细 // hint: 固化室,需要显示整个设备+内部位置明细
points = pointService.getSubSites(deviceCode); // 小固化位置以及进出口(入口是不管的) points = pointService.getSubSites(deviceCode); // 小固化位置以及进出口(入口是不管的)
JSONArray guhuashi= (JSONArray) redisUtils.get("guhuashi");
for(Object object:guhuashi){
JSONObject jsonObject= (JSONObject) object;
if(deviceCode.equals(jsonObject.getString("device_code"))){
res.put("temperature_setting", jsonObject.getString("temperature_setting"));
res.put("temperature", jsonObject.getString("temperature"));
res.put("humidity_setting", jsonObject.getString("humidity_setting"));
res.put("humidity", jsonObject.getString("humidity"));
res.put("total_running_time", jsonObject.getString("total_running_time"));
res.put("current_stage", jsonObject.getString("current_stage"));
res.put("executing_stage_num", jsonObject.getString("executing_stage_num"));
res.put("device_statue", jsonObject.getString("device_statue"));
}
}
res.put("device_code", deviceCode); res.put("device_code", deviceCode);
res.put("device_name", point.getPoint_name()); res.put("device_name", point.getPoint_name());
res.put("temperature_setting", 50); // res.put("temperature_setting", 50);
res.put("temperature", 20); // res.put("temperature", 20);
res.put("humidity_setting", 20); // res.put("humidity_setting", 20);
res.put("humidity", 10); // res.put("humidity", 10);
res.put("total_running_time", 8); // res.put("total_running_time", 8);
res.put("current_stage", 0); // res.put("current_stage", 0);
res.put("executing_stage_num", 1); // res.put("executing_stage_num", 1);
res.put("device_statue", 1); // res.put("device_statue", 1);
JSONArray ghsArray = new JSONArray(); JSONArray ghsArray = new JSONArray();
for (int i = 0; i < points.size(); i++) { for (int i = 0; i < points.size(); i++) {
SchBasePoint pointObj = points.get(i); SchBasePoint pointObj = points.get(i);
@@ -375,11 +400,11 @@ public class CockpitServiceImpl implements CockpitService {
points = pointService.getSubSites(deviceCode); points = pointService.getSubSites(deviceCode);
res.put("device_code", deviceCode); res.put("device_code", deviceCode);
res.put("device_name", point.getPoint_name()); res.put("device_name", point.getPoint_name());
res.put("mode", 0); // res.put("mode", 0);
res.put("open_time", DateUtil.now()); // res.put("open_time", DateUtil.now());
res.put("standby_time", 20); // res.put("standby_time", 20);
res.put("production_time", 10); // res.put("production_time", 10);
res.put("error_time", 8); // res.put("error_time", 8);
res.put("material_type", ObjectUtil.isNotEmpty(point.getVehicle_type()) ? point.getVehicle_type() : "-"); res.put("material_type", ObjectUtil.isNotEmpty(point.getVehicle_type()) ? point.getVehicle_type() : "-");
res.put("end_time", "-"); res.put("end_time", "-");
JSONArray ssxArray = new JSONArray(); JSONArray ssxArray = new JSONArray();
@@ -404,7 +429,7 @@ public class CockpitServiceImpl implements CockpitService {
// 货位直接显示,获取组盘信息,组装数据反馈 // 货位直接显示,获取组盘信息,组装数据反馈
res.put("device_code", deviceCode); res.put("device_code", deviceCode);
res.put("device_name", point.getPoint_name()); res.put("device_name", point.getPoint_name());
res.put("vehicle_code", ObjectUtil.isNotEmpty(point.getVehicle_code()) ? point.getPoint_code() : "-"); res.put("vehicle_code", ObjectUtil.isNotEmpty(point.getVehicle_code()) ? point.getVehicle_code() : "-");
res.put("vehicle_type", ObjectUtil.isNotEmpty(point.getVehicle_type()) ? point.getVehicle_type() : "-"); res.put("vehicle_type", ObjectUtil.isNotEmpty(point.getVehicle_type()) ? point.getVehicle_type() : "-");
if (ObjectUtil.isNotEmpty(point.getVehicle_type()) && ObjectUtil.isNotEmpty(point.getVehicle_code())) { if (ObjectUtil.isNotEmpty(point.getVehicle_type()) && ObjectUtil.isNotEmpty(point.getVehicle_code())) {
JSONObject groupInfo = cockpitMapper.getVehicleGroupInfo(point.getVehicle_code(), point.getVehicle_type()); JSONObject groupInfo = cockpitMapper.getVehicleGroupInfo(point.getVehicle_code(), point.getVehicle_type());
@@ -456,119 +481,85 @@ public class CockpitServiceImpl implements CockpitService {
Random random = new Random(); Random random = new Random();
int lowerBound = 10000; int lowerBound = 10000;
int upperBound = 18000; int upperBound = 18000;
for (int i = 1; i <= 4; i++) { JSONArray baoshijian= (JSONArray) redisUtils.get("baoshijian");
JSONObject agv = new JSONObject(); JSONArray guhuashi= (JSONArray) redisUtils.get("guhuashi");
agv.put("device_name", "AGV" + i); JSONArray AGV= (JSONArray) redisUtils.get("AGV");
agv.put("device_code", i); JSONArray RGV= (JSONArray) redisUtils.get("RGV");
agv.put("device_status", "IDLE"); JSONArray site= (JSONArray) redisUtils.get("site");
agv.put("energyLevel", 80); array.add(baoshijian);
agv.put("transportOrder", null); array.add(guhuashi);
agv.put("positionX", random.nextInt(upperBound - lowerBound + 1) + lowerBound); array.add(AGV);
agv.put("positionY", random.nextInt(upperBound - lowerBound + 1) + lowerBound); array.add(RGV);
agv.put("positionAngle", 90); // List<SchBasePoint> tbx = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "1").eq(SchBasePoint::getRegion_code, "TBX"));
array.add(agv); // List<String> tbxList = tbx.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
} // tbxList.forEach(s -> {
for (int i = 1; i <= 7; i++) { // JSONObject object = new JSONObject();
JSONObject rgv_z = new JSONObject(); // object.put("device_code", s);
rgv_z.put("vehicle", "RGV-Z-" + i); // object.put("device_name", s);
rgv_z.put("energyLevel", 80); // object.put("mode", "2");
rgv_z.put("status", "IDLE"); // object.put("status", "1");
rgv_z.put("task_code", null); // object.put("error", "0");
rgv_z.put("angle", 90); // object.put("open_time", DateUtil.now());
rgv_z.put("rfid", "1-" + i + "-2"); // object.put("standby_time", 20);
rgv_z.put("Relation_vehicle", null); // object.put("production_time", 20);
rgv_z.put("end_time", null); // object.put("error_time", 0);
rgv_z.put("open_time", DateUtil.now()); // object.put("material", "01200000");
rgv_z.put("standby_time", 0); // array.add(object);
rgv_z.put("production_time", 0); // });
rgv_z.put("error_time", 0); // List<SchBasePoint> tbxDjw = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "2").eq(SchBasePoint::getRegion_code, "TBX"));
array.add(rgv_z); // List<String> tbxDjwList = tbxDjw.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
} // tbxDjwList.forEach(s -> {
for (int i = 1; i <= 13; i++) { // JSONObject object = new JSONObject();
JSONObject rgv_m = new JSONObject(); // object.put("device_code", s);
rgv_m.put("vehicle", "RGV-M-" + i); // object.put("device_name", s);
rgv_m.put("energyLevel", 80); // object.put("mode", "2");
rgv_m.put("status", "IDLE"); // object.put("move", "0");
rgv_m.put("angle", 90); // object.put("error", 0);
rgv_m.put("rfid", "2-" + i + "-2"); // array.add(object);
rgv_m.put("Relation_vehicle", null); // });
rgv_m.put("end_time", null);
rgv_m.put("open_time", DateUtil.now());
rgv_m.put("standby_time", 0);
rgv_m.put("production_time", 0);
rgv_m.put("error_time", 0);
array.add(rgv_m);
}
List<SchBasePoint> tbx = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "1").eq(SchBasePoint::getRegion_code, "TBX"));
List<String> tbxList = tbx.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
tbxList.forEach(s -> {
JSONObject object = new JSONObject();
object.put("device_code", s);
object.put("device_name", s);
object.put("mode", "2");
object.put("status", "1");
object.put("error", "0");
object.put("open_time", DateUtil.now());
object.put("standby_time", 20);
object.put("production_time", 20);
object.put("error_time", 0);
object.put("material", "01200000");
array.add(object);
});
List<SchBasePoint> tbxDjw = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "2").eq(SchBasePoint::getRegion_code, "TBX"));
List<String> tbxDjwList = tbxDjw.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
tbxDjwList.forEach(s -> {
JSONObject object = new JSONObject();
object.put("device_code", s);
object.put("device_name", s);
object.put("mode", "2");
object.put("move", "0");
object.put("error", 0);
array.add(object);
});
// 缓存位 // 缓存位
List<SchBasePoint> hcx = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "3").eq(SchBasePoint::getRegion_code, "TBX")); // List<SchBasePoint> hcx = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "3").eq(SchBasePoint::getRegion_code, "TBX"));
List<String> hcxList = hcx.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList()); // List<String> hcxList = hcx.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
hcxList.forEach(s -> { // hcxList.forEach(s -> {
JSONObject object = new JSONObject(); // JSONObject object = new JSONObject();
object.put("device_code", s); // object.put("device_code", s);
object.put("device_name", s); // object.put("device_name", s);
object.put("move", "0"); // object.put("move", "0");
array.add(object); // array.add(object);
}); // });
List<SchBasePoint> gh = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "1").eq(SchBasePoint::getRegion_code, "GH")); // List<SchBasePoint> gh = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "1").eq(SchBasePoint::getRegion_code, "GH"));
List<String> ghList = gh.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList()); // List<String> ghList = gh.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
ghList.forEach(s -> { // ghList.forEach(s -> {
JSONObject object = new JSONObject(); // JSONObject object = new JSONObject();
object.put("device_code", s); // object.put("device_code", s);
object.put("device_name", s); // object.put("device_name", s);
object.put("temperature_setting", 50); // object.put("temperature_setting", 50);
object.put("temperature", 20); // object.put("temperature", 20);
object.put("humidity_setting", 20); // object.put("humidity_setting", 20);
object.put("humidity", 10); // object.put("humidity", 10);
object.put("total_running_time", 8); // object.put("total_running_time", 8);
object.put("current_stage", 0); // object.put("current_stage", 0);
object.put("executing_stage_num", 1); // object.put("executing_stage_num", 1);
object.put("device_statue", 1); // object.put("device_statue", 1);
object.put("front_door", 1); // object.put("front_door", 1);
object.put("back_door", 0); // object.put("back_door", 0);
array.add(object); // array.add(object);
}); // });
// 整体 // 整体
List<SchBasePoint> kjzc = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "5").eq(SchBasePoint::getRegion_code, "KJZC")); // List<SchBasePoint> kjzc = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "5").eq(SchBasePoint::getRegion_code, "KJZC"));
List<String> kjzcList = kjzc.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList()); // List<String> kjzcList = kjzc.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
kjzcList.forEach(s -> { // kjzcList.forEach(s -> {
JSONObject object = new JSONObject(); // JSONObject object = new JSONObject();
object.put("device_code", s); // object.put("device_code", s);
object.put("device_name", s); // object.put("device_name", s);
object.put("mode", 0); // object.put("mode", 0);
object.put("open_time", DateUtil.now()); // object.put("open_time", DateUtil.now());
object.put("standby_time", 20); // object.put("standby_time", 20);
object.put("production_time", 10); // object.put("production_time", 10);
object.put("error_time", 8); // object.put("error_time", 8);
object.put("material_type", "1"); // object.put("material_type", "1");
array.add(object); // array.add(object);
}); // });
// 固化室详情 // 固化室详情
JSONArray ghsInteriorList = cockpitMapper.getGHSInteriorList(); JSONArray ghsInteriorList = cockpitMapper.getGHSInteriorList();
JSONObject ghsDetail = new JSONObject(); JSONObject ghsDetail = new JSONObject();

View File

@@ -14,6 +14,7 @@
<if test="deviceCode != null and deviceCode != ''"> <if test="deviceCode != null and deviceCode != ''">
AND w.point_code = #{deviceCode} AND w.point_code = #{deviceCode}
</if> </if>
order by w.create_time desc
<if test="number != 0 "> <if test="number != 0 ">
LIMIT #{number} LIMIT #{number}
</if> </if>
@@ -166,11 +167,11 @@
FROM sch_base_vehiclematerialgroup vg FROM sch_base_vehiclematerialgroup vg
LEFT JOIN md_base_material ma ON vg.material_id = ma.material_id LEFT JOIN md_base_material ma ON vg.material_id = ma.material_id
WHERE 1 = 1 WHERE 1 = 1
<if test="vehicle_code != null"> <if test="vehicleCode != null">
AND vg.vehicle_code = #{vehicle_code} AND vg.vehicle_code = #{vehicleCode}
</if> </if>
<if test="vehicle_type != null"> <if test="vehicleType != null">
AND vg.vehicle_type = #{vehicle_type} AND vg.vehicle_type = #{vehicleType}
</if> </if>
AND vg.is_delete = '0' AND vg.is_delete = '0'
</select> </select>

View File

@@ -61,8 +61,7 @@
AND p4.point_type = '2' AND p4.is_used = TRUE) AND p4.point_type = '2' AND p4.is_used = TRUE)
AND #{materialId} IN ( AND #{materialId} IN (
SELECT vg.material_id FROM sch_base_point p2 SELECT vg.material_id FROM sch_base_point p2
LEFT JOIN sch_base_vehiclematerialgroup vg ON vg.vehicle_code = p2.vehicle_code AND vg.vehicle_type = LEFT JOIN sch_base_vehiclematerialgroup vg ON vg.vehicle_code = p2.vehicle_code AND vg.is_delete = '0' AND vg.group_bind_material_status = '2'
p2.vehicle_type AND vg.is_delete = '0' AND vg.group_bind_material_status = '2'
WHERE p2.parent_point_code = p.point_code AND p2.point_type = '2' AND p2.point_status = '2' WHERE p2.parent_point_code = p.point_code AND p2.point_type = '2' AND p2.point_status = '2'
) )
AND p.region_code IN AND p.region_code IN