数字孪生优化

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.nl.common.exception.BadRequestException;
import org.nl.common.utils.ColaBeanUtils;
import org.nl.common.utils.RedisUtils;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.cockpit.service.CockpitService;
import org.nl.wms.cockpit.service.dao.CommonData;
@@ -88,6 +89,9 @@ public class CockpitServiceImpl implements CockpitService {
@Autowired
PdmBdSolidifyPlanServiceImpl pdmBdSolidifyPlanServiceImpl;
@Autowired
private RedisUtils redisUtils;
/**
* 总览
@@ -313,48 +317,69 @@ public class CockpitServiceImpl implements CockpitService {
switch (point.getRegion_code()) {
case RegionCodeConstant.COATED_PLATE_LINE_AREA:
// hint: 涂板线是作为一整台设备显示。point设备点
JSONArray baoshijian= (JSONArray) redisUtils.get("baoshijian");
points = pointService.getSubSites(deviceCode);
res.put("device_code", deviceCode);
res.put("device_name", point.getPoint_name());
res.put("mode", "2");
res.put("status", "1");
res.put("error", "0");
res.put("open_time", DateUtil.now());
res.put("standby_time", 20);
res.put("production_time", 20);
res.put("error_time", 0);
res.put("material", "01200000");
// res.put("mode", "2");
// res.put("status", "1");
// res.put("error", "0");
// res.put("open_time", DateUtil.now());
// res.put("standby_time", 20);
// res.put("production_time", 20);
// res.put("error_time", 0);
// res.put("material", "01200000");
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++) {
SchBasePoint pointObj = points.get(i);
JSONObject one = new JSONObject();
one.put("device_code", pointObj.getPoint_code());
one.put("device_name", pointObj.getPoint_name());
one.put("mode", "2");
one.put("move", "0");
one.put("material_type", pointObj.getCan_vehicle_type());
one.put("error", "0");
// one.put("mode", "2");
for(Object object:baoshijian){
JSONObject jsonObject= (JSONObject) object;
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);
}
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;
case RegionCodeConstant.CURING_ZONE:
// hint: 固化室,需要显示整个设备+内部位置明细
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_name", point.getPoint_name());
res.put("temperature_setting", 50);
res.put("temperature", 20);
res.put("humidity_setting", 20);
res.put("humidity", 10);
res.put("total_running_time", 8);
res.put("current_stage", 0);
res.put("executing_stage_num", 1);
res.put("device_statue", 1);
// res.put("temperature_setting", 50);
// res.put("temperature", 20);
// res.put("humidity_setting", 20);
// res.put("humidity", 10);
// res.put("total_running_time", 8);
// res.put("current_stage", 0);
// res.put("executing_stage_num", 1);
// res.put("device_statue", 1);
JSONArray ghsArray = new JSONArray();
for (int i = 0; i < points.size(); i++) {
SchBasePoint pointObj = points.get(i);
@@ -375,11 +400,11 @@ public class CockpitServiceImpl implements CockpitService {
points = pointService.getSubSites(deviceCode);
res.put("device_code", deviceCode);
res.put("device_name", point.getPoint_name());
res.put("mode", 0);
res.put("open_time", DateUtil.now());
res.put("standby_time", 20);
res.put("production_time", 10);
res.put("error_time", 8);
// res.put("mode", 0);
// res.put("open_time", DateUtil.now());
// res.put("standby_time", 20);
// res.put("production_time", 10);
// res.put("error_time", 8);
res.put("material_type", ObjectUtil.isNotEmpty(point.getVehicle_type()) ? point.getVehicle_type() : "-");
res.put("end_time", "-");
JSONArray ssxArray = new JSONArray();
@@ -404,7 +429,7 @@ public class CockpitServiceImpl implements CockpitService {
// 货位直接显示,获取组盘信息,组装数据反馈
res.put("device_code", deviceCode);
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() : "-");
if (ObjectUtil.isNotEmpty(point.getVehicle_type()) && ObjectUtil.isNotEmpty(point.getVehicle_code())) {
JSONObject groupInfo = cockpitMapper.getVehicleGroupInfo(point.getVehicle_code(), point.getVehicle_type());
@@ -456,119 +481,85 @@ public class CockpitServiceImpl implements CockpitService {
Random random = new Random();
int lowerBound = 10000;
int upperBound = 18000;
for (int i = 1; i <= 4; i++) {
JSONObject agv = new JSONObject();
agv.put("device_name", "AGV" + i);
agv.put("device_code", i);
agv.put("device_status", "IDLE");
agv.put("energyLevel", 80);
agv.put("transportOrder", null);
agv.put("positionX", random.nextInt(upperBound - lowerBound + 1) + lowerBound);
agv.put("positionY", random.nextInt(upperBound - lowerBound + 1) + lowerBound);
agv.put("positionAngle", 90);
array.add(agv);
}
for (int i = 1; i <= 7; i++) {
JSONObject rgv_z = new JSONObject();
rgv_z.put("vehicle", "RGV-Z-" + i);
rgv_z.put("energyLevel", 80);
rgv_z.put("status", "IDLE");
rgv_z.put("task_code", null);
rgv_z.put("angle", 90);
rgv_z.put("rfid", "1-" + i + "-2");
rgv_z.put("Relation_vehicle", null);
rgv_z.put("end_time", null);
rgv_z.put("open_time", DateUtil.now());
rgv_z.put("standby_time", 0);
rgv_z.put("production_time", 0);
rgv_z.put("error_time", 0);
array.add(rgv_z);
}
for (int i = 1; i <= 13; i++) {
JSONObject rgv_m = new JSONObject();
rgv_m.put("vehicle", "RGV-M-" + i);
rgv_m.put("energyLevel", 80);
rgv_m.put("status", "IDLE");
rgv_m.put("angle", 90);
rgv_m.put("rfid", "2-" + i + "-2");
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);
});
JSONArray baoshijian= (JSONArray) redisUtils.get("baoshijian");
JSONArray guhuashi= (JSONArray) redisUtils.get("guhuashi");
JSONArray AGV= (JSONArray) redisUtils.get("AGV");
JSONArray RGV= (JSONArray) redisUtils.get("RGV");
JSONArray site= (JSONArray) redisUtils.get("site");
array.add(baoshijian);
array.add(guhuashi);
array.add(AGV);
array.add(RGV);
// 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<String> hcxList = hcx.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
hcxList.forEach(s -> {
JSONObject object = new JSONObject();
object.put("device_code", s);
object.put("device_name", s);
object.put("move", "0");
array.add(object);
});
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());
ghList.forEach(s -> {
JSONObject object = new JSONObject();
object.put("device_code", s);
object.put("device_name", s);
object.put("temperature_setting", 50);
object.put("temperature", 20);
object.put("humidity_setting", 20);
object.put("humidity", 10);
object.put("total_running_time", 8);
object.put("current_stage", 0);
object.put("executing_stage_num", 1);
object.put("device_statue", 1);
object.put("front_door", 1);
object.put("back_door", 0);
array.add(object);
});
// 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());
// hcxList.forEach(s -> {
// JSONObject object = new JSONObject();
// object.put("device_code", s);
// object.put("device_name", s);
// object.put("move", "0");
// array.add(object);
// });
// 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());
// ghList.forEach(s -> {
// JSONObject object = new JSONObject();
// object.put("device_code", s);
// object.put("device_name", s);
// object.put("temperature_setting", 50);
// object.put("temperature", 20);
// object.put("humidity_setting", 20);
// object.put("humidity", 10);
// object.put("total_running_time", 8);
// object.put("current_stage", 0);
// object.put("executing_stage_num", 1);
// object.put("device_statue", 1);
// object.put("front_door", 1);
// object.put("back_door", 0);
// array.add(object);
// });
// 整体
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());
kjzcList.forEach(s -> {
JSONObject object = new JSONObject();
object.put("device_code", s);
object.put("device_name", s);
object.put("mode", 0);
object.put("open_time", DateUtil.now());
object.put("standby_time", 20);
object.put("production_time", 10);
object.put("error_time", 8);
object.put("material_type", "1");
array.add(object);
});
// 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());
// kjzcList.forEach(s -> {
// JSONObject object = new JSONObject();
// object.put("device_code", s);
// object.put("device_name", s);
// object.put("mode", 0);
// object.put("open_time", DateUtil.now());
// object.put("standby_time", 20);
// object.put("production_time", 10);
// object.put("error_time", 8);
// object.put("material_type", "1");
// array.add(object);
// });
// 固化室详情
JSONArray ghsInteriorList = cockpitMapper.getGHSInteriorList();
JSONObject ghsDetail = new JSONObject();

View File

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

View File

@@ -61,8 +61,7 @@
AND p4.point_type = '2' AND p4.is_used = TRUE)
AND #{materialId} IN (
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 =
p2.vehicle_type AND vg.is_delete = '0' AND vg.group_bind_material_status = '2'
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'
WHERE p2.parent_point_code = p.point_code AND p2.point_type = '2' AND p2.point_status = '2'
)
AND p.region_code IN