rev:一楼优化

This commit is contained in:
2024-08-19 18:37:03 +08:00
parent 4512ea7f83
commit 0e6e8eeef9
20 changed files with 290 additions and 150 deletions

View File

@@ -2131,7 +2131,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
//x坐标
x = ikey;
LuceneLogDto logDto = LuceneLogDto.builder()
.device_code(device_code)
.device_code(this.getDeviceCode())
.content("agvphase:" + phase + "x坐标:" + x)
.build();
logDto.setLog_level(4);
@@ -2140,7 +2140,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
//y坐标
y = ikey;
LuceneLogDto logDto = LuceneLogDto.builder()
.device_code(device_code)
.device_code(this.getDeviceCode())
.content("agvphase:" + phase + "y坐标:" + y)
.build();
logDto.setLog_level(4);
@@ -2149,7 +2149,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
//车辆角度
angle = ikey;
LuceneLogDto logDto = LuceneLogDto.builder()
.device_code(device_code)
.device_code(this.getDeviceCode())
.content("agvphase:" + phase + "车辆角度:" + angle)
.build();
logDto.setLog_level(4);
@@ -2158,7 +2158,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
//agv电量
electric_qty = ikey;
LuceneLogDto logDto = LuceneLogDto.builder()
.device_code(device_code)
.device_code(this.getDeviceCode())
.content("agvphase:" + phase + "agv电量:" + electric_qty)
.build();
logDto.setLog_level(4);
@@ -2167,7 +2167,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
//三色灯状态
status = ikey;
LuceneLogDto logDto = LuceneLogDto.builder()
.device_code(device_code)
.device_code(this.getDeviceCode())
.content("agvphase:" + phase + "三色灯状态:" + status)
.build();
logDto.setLog_level(4);

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
@@ -179,6 +180,7 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements
Instruction inst = null;
String material = null;
String vehicle_code2;
Boolean isonline = true;
@@ -246,6 +248,7 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements
if (move != 0 && task > 0) {
if (null != inst) {
inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code();
vehicle_code2 = inst.getVehicle_code2();
}
CompletableFuture.runAsync(() -> {
// 异步更新指令状态
@@ -417,13 +420,17 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements
.build();
logDto.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto);
String response = acsToWmsService.applyTwo(param);
JSONObject jo = JSON.parseObject(response);
message = "申请空托盘出入库,返回参数:" + jo;
if (jo.getInteger("status") == 200) {
HttpResponse httpResponse = acsToWmsService.applyTwo(param);
JSONObject jsonObject = null;
if(ObjectUtil.isNotEmpty(httpResponse)){
String body = httpResponse.body();
jsonObject = JSONObject.parseObject(body);
}
message = "申请空托盘出入库,返回参数:" + jsonObject;
if (ObjectUtil.isNotNull(jsonObject) && jsonObject.getInteger("status") == 200) {
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("申请空托盘出入库,参数,接口返回:" + jo)
.content("申请空托盘出入库,参数,接口返回:" + jsonObject)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);
@@ -436,10 +443,10 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements
this.requireSucess = true;
} else {
this.iserror = true;
message = "申请空托盘出入库出错,返回参数:" + jo;
message = "申请空托盘出入库出错,返回参数:" + jsonObject;
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("申请空托盘出入库,返回参数:" + response)
.content("申请空托盘出入库,返回参数:" + jsonObject)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);
@@ -852,6 +859,7 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements
jo.put("materiel", material_barcode);
jo.put("inst_message", this.inst_message);
jo.put("notCreateInstMessage", LangProcess.msg(notCreateInstMessage));
jo.put("vehicle_code2", this.vehicle_code2);
return jo;
}

View File

@@ -19,6 +19,7 @@ import org.nl.acs.device_driver.FeedLmsRealFailed;
import org.nl.acs.device_driver.RouteableDeviceDriver;
import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver;
import org.nl.acs.device_driver.driver.ExecutableDeviceDriver;
import org.nl.acs.device_driver.one_manipulator.box_package_manipulator.InteractionJsonDTO;
import org.nl.acs.enums.AcsToLmsApplyTaskTypeEnum;
import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.acs.history.ErrorUtil;
@@ -88,6 +89,8 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr
String notCreateInstMessage = "";
String vehicle_code2;
//工作模式
int mode = 0;
int last_mode = 0;
@@ -339,7 +342,7 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr
inst_message = null;
}
private void applyLaStrangulationAndLabeling(int mode) {
private void applyLaStrangulationAndLabeling(int mode) throws Exception {
Date date = new Date();
if (date.getTime() - this.require_apply_strangulation_time.getTime() < (long) this.instruction_require_time_out) {
log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out);
@@ -347,47 +350,56 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr
} else {
this.require_apply_strangulation_time = date;
Instruction inst = instructionService.findByCodeFromCache(String.valueOf(task));
if (ObjectUtil.isEmpty(inst) || StrUtil.isEmpty(inst.getVehicle_code())) {
message = "指令为空、或者托盘码未空";
return;
}
JSONObject param = new JSONObject();
param.put("device_code", device_code);
param.put("vehicle_code", inst.getVehicle_code());
param.put("type", AcsToLmsApplyTaskTypeEnum.LABEL_BIND.getType());
LuceneLogDto logDto = LuceneLogDto.builder()
.device_code(device_code)
.content("申请捆扎,请求参数:" + param)
.build();
logDto.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto);
String response = acsToWmsService.deviceApplyTwo(param);
JSONObject jo = JSON.parseObject(response);
message = "申请捆扎,参数,接口返回:" + jo;
if (jo.getInteger("status") == 200) {
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("申请捆扎,参数,接口返回:" + jo)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);
// Map datas = applyLabelingAndBindingResponse.getData();
packagePLCData(jo.getString("data"), mode);
requireSucess = true;
if (ObjectUtil.isNotEmpty(inst)) {
applyLaStrangulationAndLabeling2();
} else {
this.iserror = true;
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("申请捆扎失败,接口返回:" + response)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);
message = "申请捆扎报错,参数,接口返回:" + jo;
message = "当前指令号:" + task + "有误,需补码重新申请捆扎贴标";
}
if (StrUtil.isNotEmpty(hand_barcode)) {
TaskDto taskDtoHandCode = taskserver.findByVehicleCode2AndExcute(hand_barcode);
if (Objects.nonNull(taskDtoHandCode)) {
applyLaStrangulationAndLabeling2();
message = "";
}
}
return;
}
}
public synchronized void applyLaStrangulationAndLabeling2() throws Exception {
JSONObject param = new JSONObject();
param.put("device_code", device_code);
param.put("vehicle_code", inst.getVehicle_code());
param.put("type", AcsToLmsApplyTaskTypeEnum.LABEL_BIND.getType());
LuceneLogDto logDto = LuceneLogDto.builder()
.device_code(device_code)
.content("申请捆扎,请求参数:" + param)
.build();
logDto.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto);
String response = acsToWmsService.deviceApplyTwo(param);
JSONObject jo = JSON.parseObject(response);
message = "申请捆扎,参数,接口返回:" + jo;
if (jo.getInteger("status") == 200) {
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("申请捆扎,参数,接口返回:" + jo)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);
// Map datas = applyLabelingAndBindingResponse.getData();
packagePLCData(jo.getString("data"), mode);
requireSucess = true;
} else {
this.iserror = true;
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("申请捆扎失败,接口返回:" + response)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);
message = "申请捆扎报错,参数,接口返回:" + jo;
}
}
// 申请贴标
@@ -706,6 +718,7 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr
jo.put("is_click", true);
jo.put("requireSucess", requireSucess);
jo.put("driver_type", "siemens_conveyor");
jo.put("vehicle_code2", this.vehicle_code2);
jo.put("notCreateInstMessage", LangProcess.msg(notCreateInstMessage));
return jo;
}
@@ -978,6 +991,10 @@ public class FinishedProductOutBindLableDeviceDriver extends AbstractOpcDeviceDr
* 更新指令状态
*/
public synchronized void update_instruction_status() throws Exception {
if (null != inst) {
inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code();
vehicle_code2 = inst.getVehicle_code2();
}
Date date = new Date();
if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) {
log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out);

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
@@ -616,13 +617,17 @@ public class FoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implements
.build();
logDto.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto);
String response = acsToWmsService.applyTwo(param);
JSONObject jo = JSON.parseObject(response);
message = "申请空托盘出入库,参数,接口返回:" + jo;
if (jo.getInteger("status") == 200) {
HttpResponse httpResponse = acsToWmsService.applyTwo(param);
JSONObject jsonObject = null;
if(ObjectUtil.isNotEmpty(httpResponse)){
String body = httpResponse.body();
jsonObject = JSONObject.parseObject(body);
}
message = "申请空托盘出入库,参数,接口返回:" + jsonObject;
if (ObjectUtil.isNotNull(jsonObject) && jsonObject.getInteger("status") == 200) {
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("申请空托盘出入库,参数,接口返回:" + jo)
.content("申请空托盘出入库,参数,接口返回:" + jsonObject)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);
@@ -635,10 +640,10 @@ public class FoldDiscSiteDeviceDriver extends AbstractOpcDeviceDriver implements
this.requireSucess = true;
} else {
this.iserror = true;
message = "申请空托盘出入库报错,接口返回:" + jo;
message = "申请空托盘出入库报错,接口返回:" + jsonObject;
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("申请空托盘出入库,返回参数:" + response)
.content("申请空托盘出入库,返回参数:" + jsonObject)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);

View File

@@ -159,6 +159,7 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv
//托盘方向
int carrier_direction = 0;
int last_carrier_direction = 0;
String vehicle_code2;
Boolean isonline = true;
int hasGoods = 0;
@@ -499,13 +500,17 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv
.build();
logDto.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto);
String response = acsToWmsService.applyTwo(param);
JSONObject jo = JSON.parseObject(response);
message = "申请退货入库,返回参数:" + jo;
if (jo.getInteger("status") == 200) {
HttpResponse httpResponse = acsToWmsService.applyTwo(param);
JSONObject jsonObject = null;
if(ObjectUtil.isNotEmpty(httpResponse)){
String body = httpResponse.body();
jsonObject = JSONObject.parseObject(body);
}
message = "申请退货入库,返回参数:" + jsonObject;
if (ObjectUtil.isNotNull(jsonObject) && jsonObject.getInteger("status") == 200) {
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("申请退货入库,参数,接口返回:" + jo)
.content("申请退货入库,参数,接口返回:" + jsonObject)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);
@@ -520,11 +525,11 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv
this.iserror = true;
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("申请退货入库,返回参数:" + response)
.content("申请退货入库,返回参数:" + jsonObject)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);
message = "申请退货入库报错,返回参数:" + jo;
message = "申请退货入库报错,返回参数:" + jsonObject;
}
} catch (Exception e) {
e.printStackTrace();
@@ -611,13 +616,17 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv
.build();
logDto.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto);
String response = acsToWmsService.applyTwo(param);
JSONObject jo = JSON.parseObject(response);
message = "申请空托盘出入库,返回参数:" + jo;
if (jo.getInteger("status") == 200) {
HttpResponse httpResponse = acsToWmsService.applyTwo(param);
JSONObject jsonObject = null;
if(ObjectUtil.isNotEmpty(httpResponse)){
String body = httpResponse.body();
jsonObject = JSONObject.parseObject(body);
}
message = "申请空托盘出入库,返回参数:" + jsonObject;
if (jsonObject.getInteger("status") == 200) {
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("申请空托盘出入库,参数,接口返回:" + jo)
.content("申请空托盘出入库,参数,接口返回:" + jsonObject)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);
@@ -630,10 +639,10 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv
this.requireSucess = true;
} else {
this.iserror = true;
message = "申请空托盘出入库报错,返回参数:" + jo;
message = "申请空托盘出入库报错,返回参数:" + jsonObject;
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("申请空托盘出入库,返回参数:" + response)
.content("申请空托盘出入库,返回参数:" + jsonObject)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);
@@ -676,13 +685,17 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv
.build();
logDto.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto);
String response = acsToWmsService.applyTwo(param);
JSONObject jo = JSON.parseObject(response);
message = "木箱、子卷入库申请入库任务,返回参数:" + jo;
if (jo.getInteger("status") == 200) {
HttpResponse httpResponse = acsToWmsService.applyTwo(param);
JSONObject jsonObject = null;
if(ObjectUtil.isNotEmpty(httpResponse)){
String body = httpResponse.body();
jsonObject = JSONObject.parseObject(body);
}
message = "木箱、子卷入库申请入库任务,返回参数:" + jsonObject;
if (ObjectUtil.isNotNull(jsonObject) && jsonObject.getInteger("status") == 200) {
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("木箱、子卷入库申请入库任务,参数,接口返回:" + jo)
.content("木箱、子卷入库申请入库任务,参数,接口返回:" + jsonObject)
.build();
logDto2.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto2);
@@ -697,10 +710,10 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv
this.iserror = true;
LuceneLogDto logDto2 = LuceneLogDto.builder()
.device_code(device_code)
.content("木箱、子卷入库申请入库任务,返回参数:" + response)
.content("木箱、子卷入库申请入库任务,返回参数:" + jsonObject)
.build();
logDto2.setLog_level(4);
message = "木箱、子卷入库申请入库任务报错,返回参数:" + jo;
message = "木箱、子卷入库申请入库任务报错,返回参数:" + jsonObject;
luceneExecuteLogService.deviceExecuteLog(logDto2);
}
} catch (Exception e) {
@@ -713,6 +726,10 @@ public class ConveyorWithScannerWeightDeviceDriver extends AbstractOpcDeviceDriv
* 更新指令状态
*/
public synchronized void update_instruction_status() throws Exception {
if (null != inst) {
inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code();
vehicle_code2 = inst.getVehicle_code2();
}
Date date = new Date();
if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) {
log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out);

View File

@@ -381,10 +381,39 @@ public class TrappedManipulatorManipulatorDeviceDriver extends AbstractOpcDevice
}
}
}
List<TaskDto> taskDtosLikeReady = new ArrayList<>();
if (CollUtil.isNotEmpty(taskDtosReady)) {
List<TaskDto> taskDtoList = taskDtosReady.stream().sorted(Comparator.comparing(TaskDto::getCreate_time)).collect(Collectors.toList());
taskDto = taskDtoList.get(0);
for (TaskDto dto : taskDtosReady) {
BeltConveyorDeviceDriver beltConveyorDeviceDriverStart;
BeltConveyorDeviceDriver beltConveyorDeviceDriverEnd;
Device startDevice = deviceAppService.findDeviceByCode(dto.getStart_device_code());
Device nextDevice = deviceAppService.findDeviceByCode(dto.getNext_device_code());
if (startDevice.getDeviceDriver() instanceof BeltConveyorDeviceDriver && nextDevice.getDeviceDriver() instanceof BeltConveyorDeviceDriver) {
beltConveyorDeviceDriverStart = (BeltConveyorDeviceDriver) startDevice.getDeviceDriver();
beltConveyorDeviceDriverEnd = (BeltConveyorDeviceDriver) nextDevice.getDeviceDriver();
if (beltConveyorDeviceDriverStart.getMove() == 1 && beltConveyorDeviceDriverStart.getMode() == 2 && beltConveyorDeviceDriverEnd.getMove() == 1 && beltConveyorDeviceDriverEnd.getMode() == 2) {
taskDtosLikeReady.add(dto);
} else {
if (beltConveyorDeviceDriverStart.getMove() != 1) {
notCreateInstMessage = "universal_feedMessage7";
}
if (beltConveyorDeviceDriverStart.getMode() != 2) {
notCreateInstMessage = "universal_remark2";
}
if (beltConveyorDeviceDriverEnd.getMove() != 1) {
notCreateInstMessage = "universal_feedMessage7";
}
if (beltConveyorDeviceDriverEnd.getMode() != 2) {
notCreateInstMessage = "universal_remark2";
}
}
}
}
}
if (ObjectUtil.isNotEmpty(taskDto)) {
String interactionJson = taskDto.getInteraction_json();
InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class);
@@ -403,38 +432,6 @@ public class TrappedManipulatorManipulatorDeviceDriver extends AbstractOpcDevice
throw new BadRequestException("设备:" + nextDevice.getDevice_code() + "未设置电气调度号!");
}
BeltConveyorDeviceDriver beltConveyorDeviceDriverStart;
BeltConveyorDeviceDriver beltConveyorDeviceDriverEnd;
if (startDevice.getDeviceDriver() instanceof BeltConveyorDeviceDriver) {
beltConveyorDeviceDriverStart = (BeltConveyorDeviceDriver) startDevice.getDeviceDriver();
if (beltConveyorDeviceDriverStart.getMove() != 1 && beltConveyorDeviceDriverStart.getMode() != 2) {
notCreateInstMessage = "universal_notCreateInstMessage2";
return false;
}
}
if (nextDevice.getDeviceDriver() instanceof BeltConveyorDeviceDriver) {
beltConveyorDeviceDriverEnd = (BeltConveyorDeviceDriver) nextDevice.getDeviceDriver();
if (beltConveyorDeviceDriverEnd.getMove() == 1 && beltConveyorDeviceDriverEnd.getMode() == 2) {
LuceneLogDto logDto = LuceneLogDto.builder()
.device_code(device_code)
.content("当前任务号:" + taskDto.getTask_code() + " " + next_device_code + "当前move值为" + beltConveyorDeviceDriverEnd.getMove() + "当前mode值为"+beltConveyorDeviceDriverEnd.getMode())
.build();
logDto.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto);
}else {
LuceneLogDto logDto = LuceneLogDto.builder()
.device_code(device_code)
.content("当前任务号:" + taskDto.getTask_code() + " " + next_device_code + "当前move值为" + beltConveyorDeviceDriverEnd.getMove() + "当前mode值为"+beltConveyorDeviceDriverEnd.getMode())
.build();
logDto.setLog_level(4);
luceneExecuteLogService.deviceExecuteLog(logDto);
notCreateInstMessage = "universal_notCreateInstMessage2";
return false;
}
}
String taskid = taskDto.getTask_id();
String taskcode = taskDto.getTask_code();
String start_point_code = taskDto.getStart_point_code();
@@ -486,7 +483,7 @@ public class TrappedManipulatorManipulatorDeviceDriver extends AbstractOpcDevice
notCreateInstMessage = "universal_notCreateInstMessage";
}
}
return true;
return false;
}
}

View File

@@ -307,6 +307,8 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme
Boolean iserror = false;
String inst_message;
String vehicle_code2;
//阻塞队列,保证指令顺序执行
LinkedBlockingQueue<StackerInstruction> tackerInstructionQueue = new LinkedBlockingQueue<>();
@@ -350,6 +352,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme
if (mode == 3 && task > 0 && command == 1 && error == 0) {
if (null != inst) {
inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code();
vehicle_code2 = inst.getVehicle_code2();
}
Date date = new Date();
if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) {
@@ -1337,6 +1340,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme
jo.put("isError", this.getIserror());
jo.put("notCreateInstMessage", notCreateInstMessage);
jo.put("inst_message", this.inst_message);
jo.put("vehicle_code2", this.vehicle_code2);
return jo;
}

View File

@@ -89,7 +89,7 @@ public interface AcsToWmsService {
* @param param
* @return
*/
String applyTwo(JSONObject param);
HttpResponse applyTwo(JSONObject param);
/**
* 二期发货申请任务

View File

@@ -163,14 +163,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
@Override
public String applyTwo(JSONObject param) {
public HttpResponse applyTwo(JSONObject param) {
HttpResponse result2 = null;
try {
MDC.put(log_file_type, log_type);
log.info("applyTaskToWms-----输入参数{}", param);
String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue();
AddressDto addressDto = addressService.findByCode("applyTwo");
String url = wmsurl + addressDto.getMethods_url();
HttpResponse result2 = null;
try {
result2 = HttpRequest.post(url)
.addInterceptor(tLogHutoolhttpInterceptor)
@@ -183,21 +183,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
log.info("applyTaskToWms-----输出参数{}", msg);
//网络不通
}
if(ObjectUtil.isEmpty(result2)){
log.info("applyTaskToWms-----输出参数{}", "返回结果为空");
return null;
}
String type = "";
if (result2.getStatus() == 200) {
type = "info";
} else {
type = "error";
}
log.info("applyTaskToWms-----输出参数{}", result2.body());
LuceneLogDto luceneLogDto = new LuceneLogDto(4,"applyTwo", String.valueOf(result2.getStatus()),
JSON.toJSONString(param), String.valueOf(result2.body()), "二期入库申请任务");
luceneLogService.interfaceExecuteLog(luceneLogDto);
return result2.body();
return result2;
} finally {
MDC.remove(log_file_type);

View File

@@ -426,6 +426,14 @@ public interface TaskService extends CommonService<Task> {
*/
TaskDto findByVehicleCodeCodeAndReady(String device_code);
/**
* 根据木箱号查询执行中任务
*
* @param device_code
* @return
*/
TaskDto findByVehicleCode2AndExcute(String device_code);
/**
* 根据起点设备编号查询当前是否有执行中任务
*

View File

@@ -1196,6 +1196,16 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
return optionalTask.orElse(null);
}
@Override
public TaskDto findByVehicleCode2AndExcute(String vehicleCode) {
Optional<TaskDto> optionalTask = tasks.stream()
.filter(task -> StrUtil.equals(task.getVehicle_code2(), vehicleCode)
&& StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex()))
.findFirst();
return optionalTask.orElse(null);
}
@Override
public TaskDto findByCodeAndExcute(String start_code, String next_code) {
Task task = this.lambdaQuery()

View File

@@ -46,6 +46,7 @@ public class AutoCreateInst {
* 创建指令前需要判断是否条件具备:起始位置是否有货、目标位置是否有货
*/
public void run() throws Exception {
log.info("自动生成指令"+DateUtil.now());
TaskService taskserver = SpringContextHolder.getBean(TaskService.class);
InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class);
RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class);

View File

@@ -43,6 +43,7 @@ public class CreateDDJInst {
* 定时查询堆垛机任务
*/
public void run() {
log.info("定时查询堆垛机任务"+DateUtil.now());
TaskService taskserver = SpringContextHolder.getBean(TaskService.class);
InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class);
RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class);

View File

@@ -1,5 +1,6 @@
package org.nl.system.service.quartz.task;
import cn.hutool.core.date.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.auto.run.AutoRunService;
import org.nl.system.service.param.ISysParamService;
@@ -20,6 +21,7 @@ public class NdcAutoReconnection {
AutoRunService autoRunService;
public void run(String threadCode) throws Exception {
log.info("定时NDC自动重连"+ DateUtil.now());
String[] threadCodes = threadCode.split(",");
for (String code : threadCodes) {
if (!autoRunService.getThreadByCode(code).isAlive()) {

View File

@@ -0,0 +1,74 @@
package org.nl.system.service.quartz.task;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.agv.server.AgvService;
import org.nl.acs.agv.server.dto.AgvDto;
import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.common.mnt.websocket.MsgType;
import org.nl.common.mnt.websocket.SocketMsg;
import org.nl.common.mnt.websocket.WebSocketServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 查询AGV设备状态
*/
@Slf4j
@Component
public class ToAgvDevice {
@Autowired
AcsToWmsService acsToWmsService;
@Autowired
AgvService agvService;
public void run() throws Exception {
JSONObject json = new JSONObject();
Map<String, AgvDto> agv_map = agvService.findAllAgvFromCache();
JSONArray agv_rows = new JSONArray();
JSONObject row = new JSONObject();
for (AgvDto agvDto : agv_map.values()) {
row.put("device_code", agvDto.getName());
row.put("energyLevel", agvDto.getEnergyLevel());
if (agvDto.getState().equals("UNKNOWN")) {
row.put("status_name", "有任务");
row.put("flag", "1");
}
if (agvDto.getState().equals("UNAVAILABLE")) {
row.put("status_name", "网络异常");
row.put("flag", "1");
}
if (agvDto.getState().equals("ERROR")) {
row.put("status_name", "机器错误");
row.put("flag", "1");
}
if (agvDto.getState().equals("IDLE")) {
row.put("status_name", "空闲");
row.put("flag", "0");
}
if (agvDto.getState().equals("EXECUTING")) {
row.put("status_name", "运行中");
row.put("flag", "0");
}
if (agvDto.getState().equals("CHARGING")) {
row.put("status_name", "充电中");
row.put("flag", "0");
}
row.put("transportOrder", agvDto.getTransportOrder());
row.put("positionX", agvDto.getPositionX());
row.put("positionY", agvDto.getPositionY());
row.put("positionAngle", agvDto.getPositionAngle());
agv_rows.add(row);
}
json.put("agv_rows", agv_rows);
SocketMsg deviceInfo = new SocketMsg(json, MsgType.INFO);
WebSocketServer.sendInfo(deviceInfo, "toAgvDevice_data");
// acsToWmsService.feedbackAgv(row);
}
}