opt:优化输送线状态采集
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user