opt:优化输送线状态采集

This commit is contained in:
2024-11-29 15:33:01 +08:00
parent 15c500f10e
commit e7d1c76a9f

View File

@@ -13,7 +13,6 @@ import org.nl.acs.device_driver.basedriver.agv.ndcone.AgvNdcOneDeviceDriver;
import org.nl.acs.device_driver.tianneng.baoshijian.BaoshijianSiteDeviceDriver;
import org.nl.acs.device_driver.tianneng.guhuashi.GuhuashiSiteDeviceDriver;
import org.nl.acs.device_driver.tianneng.site.SiteDeviceDriver;
import org.nl.acs.device_driver.tianneng.site_status.SiteStatusDeviceDriver;
import org.nl.acs.enums.AcsDefineEnum;
import org.nl.acs.instruction.domain.InstructionMybatis;
import org.nl.acs.instruction.service.InstructionService;
@@ -145,30 +144,20 @@ public class SyncDeviceStatus {
json.put("back_door", guhuashiSiteDeviceDriver.getVW70006() == 0 ? 0 : 1);
json.put("error", guhuashiSiteDeviceDriver.getVD7046());
guhuashi.add(json);
} else if (device.getDeviceDriver() instanceof SiteStatusDeviceDriver) {
SiteStatusDeviceDriver siteStatusDeviceDriver=(SiteStatusDeviceDriver)device.getDeviceDriver();
JSONObject json = new JSONObject();
json.put("device_code", siteStatusDeviceDriver.getDevice_code());
json.put("mode",siteStatusDeviceDriver.getMode());
json.put("open_time",siteStatusDeviceDriver.getOpen_time());
json.put("standby_time",siteStatusDeviceDriver.getStandby_time());
json.put("production_time",siteStatusDeviceDriver.getProduction_time());
json.put("error_time",siteStatusDeviceDriver.getError_time());
json.put("end_time",siteStatusDeviceDriver.getEnd_time());
json.put("device_status", siteStatusDeviceDriver.getError()==0?1:0);
site.add(json);
} else if (device.getDeviceDriver() instanceof SiteDeviceDriver) {
SiteDeviceDriver siteDeviceDriver=(SiteDeviceDriver)device.getDeviceDriver();
SiteDeviceDriver siteDeviceDriver = (SiteDeviceDriver) device.getDeviceDriver();
JSONObject json = new JSONObject();
json.put("device_code", siteDeviceDriver.getDevice_code());
json.put("move", siteDeviceDriver.getMove());
json.put("action", siteDeviceDriver.getAction());
json.put("vehicle_type", siteDeviceDriver.getPallet_type());
json.put("error", siteDeviceDriver.getError());
json.put("device_status", siteDeviceDriver.getError()==0?1:0);
//todo 检查mode值是否正常
json.put("device_status", siteDeviceDriver.getMode() == 0 ? 1 : 0);
// json.put("device_status", siteDeviceDriver.getError() == 0 ? 1 : 0);
site.add(json);
} else if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) {
AgvNdcOneDeviceDriver agvNdcOneDeviceDriver=(AgvNdcOneDeviceDriver)device.getDeviceDriver();
AgvNdcOneDeviceDriver agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver();
JSONObject json = new JSONObject();
json.put("device_code", agvNdcOneDeviceDriver.getDevice_code());
json.put("device_name", agvNdcOneDeviceDriver.getDevice_code());
@@ -183,44 +172,82 @@ public class SyncDeviceStatus {
}
redisUtils.set("baoshijian", baoshijian);
redisUtils.set("guhuashi", guhuashi);
redisUtils.set("site", site);
if (ObjectUtil.isNotEmpty(agv)) {
List<String> deviceCodes = agv.stream()
.map(r -> {
String deviceCode = ((JSONObject) r).getString("device_code");
if (StringUtils.isNotBlank(deviceCode)) {
return deviceCode.substring(deviceCode.length() - 1);
} else {
return null;
}
//获取输送线设备主体信息
if (ObjectUtil.isNotEmpty(site)) {
//输送线前缀ZCSSX01
List<String> siteList = site.stream()
.map(obj -> {
JSONObject jsonObj = (JSONObject) obj;
String deviceCode = jsonObj.getString("device_code");
return StringUtils.isNotBlank(deviceCode) && deviceCode.contains("ZCSSX") ? deviceCode.substring(0, 7) : null;
})
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(deviceCodes)) {
List<InstructionMybatis> instructionList = instructionService.list(new LambdaQueryWrapper<InstructionMybatis>().in(InstructionMybatis::getCarno, deviceCodes).lt(InstructionMybatis::getInstruction_status, 2).eq(InstructionMybatis::getIs_delete, 0));
if (ObjectUtil.isNotEmpty(instructionList)) {
Map<String, String> taskCodeToTaskIdMap = instructionList.stream()
.filter(instruction -> StringUtils.isNotBlank(instruction.getExt_task_id()))
.collect(Collectors.toMap(
InstructionMybatis::getInstruction_code,
InstructionMybatis::getExt_task_id
));
agv.forEach(r -> {
JSONObject Item = (JSONObject) r;
String taskId = taskCodeToTaskIdMap.get(Item.getString("task_code"));
Item.put("task_id", "");
if (StringUtils.isNotBlank(taskId)) {
Item.put("task_id", taskId);
}
});
JSONArray siteJsonArray = new JSONArray();
for (String deviceCode : siteList) {
JSONArray siteJSONArray = site.stream()
.filter(obj -> ((JSONObject) obj).getString("device_code").startsWith(deviceCode))
.collect(Collectors.toCollection(JSONArray::new));
long siteCount = site.stream()
.filter(obj -> "0".equals(((JSONObject) obj).getString("device_status")))
.count();
JSONObject json = new JSONObject();
json.put("device_code", deviceCode);
json.put("device_status", siteCount > 0 ? 0 : 1);
if (!siteList.isEmpty()) {
JSONObject item = siteJSONArray.getJSONObject(0);
json.put("vehicle_type", item.getString("vehicle_type"));
json.put("action", item.getString("action"));
}
siteJsonArray.add(json);
}
JSONArray ptJsonArray = site.stream()
.filter(obj -> ((JSONObject) obj).getString("device_code").startsWith("PTHCW"))
.collect(Collectors.toCollection(JSONArray::new));
JSONArray ssxJsonArray = site.stream()
.filter(obj -> ((JSONObject) obj).getString("device_code").startsWith("ZCSSX"))
.collect(Collectors.toCollection(JSONArray::new));
redisUtils.set("siteMain", siteJsonArray);
redisUtils.set("site", ssxJsonArray);
redisUtils.set("ptx", ptJsonArray);
if (ObjectUtil.isNotEmpty(agv)) {
List<String> deviceCodes = agv.stream()
.map(r -> {
String deviceCode = ((JSONObject) r).getString("device_code");
if (StringUtils.isNotBlank(deviceCode)) {
return deviceCode.substring(deviceCode.length() - 1);
} else {
return null;
}
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(deviceCodes)) {
List<InstructionMybatis> instructionList = instructionService.list(new LambdaQueryWrapper<InstructionMybatis>().in(InstructionMybatis::getCarno, deviceCodes).lt(InstructionMybatis::getInstruction_status, 2).eq(InstructionMybatis::getIs_delete, 0));
if (ObjectUtil.isNotEmpty(instructionList)) {
Map<String, String> taskCodeToTaskIdMap = instructionList.stream()
.filter(instruction -> StringUtils.isNotBlank(instruction.getExt_task_id()))
.collect(Collectors.toMap(
InstructionMybatis::getInstruction_code,
InstructionMybatis::getExt_task_id
));
agv.forEach(r -> {
JSONObject Item = (JSONObject) r;
String taskId = taskCodeToTaskIdMap.get(Item.getString("task_code"));
Item.put("task_id", "");
if (StringUtils.isNotBlank(taskId)) {
Item.put("task_id", taskId);
}
});
}
}
}
}
redisUtils.set("agv", agv);
// log.trace("自动上报驱动状态,完毕耗时{}", System.currentTimeMillis() - startTime);
// log.trace("自动上报驱动状态,完毕耗时{}", System.currentTimeMillis() - startTime);
} catch (Exception e) {
//log.error("自动线程开始查询AGV设备自动上报驱动状态失败{}{}", e, e.getMessage());
log.error("自动线程开始查询AGV设备自动上报驱动状态失败{}{}", e, e.getMessage());
}
}
}