add:任务取消同步ndc;
任务反馈wcs重试。
This commit is contained in:
@@ -500,36 +500,36 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
||||
}
|
||||
}
|
||||
//到达桁架2请求放货
|
||||
if (device.getDeviceDriver() instanceof Hj1DeviceDriver) {
|
||||
hj1DeviceDriver = (Hj1DeviceDriver) device.getDeviceDriver();
|
||||
hj1DeviceDriver.writing(7);
|
||||
log.info("agv到达" + device_code + ",放货点,开始写入信号7进行进入申请,当前信号值为:Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction());
|
||||
if (device.getDeviceDriver() instanceof Hj2DeviceDriver) {
|
||||
hj2DeviceDriver = (Hj2DeviceDriver) device.getDeviceDriver();
|
||||
hj2DeviceDriver.writing(7);
|
||||
log.info("agv到达" + device_code + ",放货点,开始写入信号7进行进入申请,当前信号值为:Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction());
|
||||
//反馈WMS请求放货
|
||||
//sendAgvTaskStatus(inst, device_code, Integer.parseInt(AgvActionEnum.ACTION_STATUS.code("请求取货")));
|
||||
if (hj1DeviceDriver.getMode() != 0 && hj1DeviceDriver.getMove() == 0) {
|
||||
if (hj1DeviceDriver.getAction() == 3) {
|
||||
log.info("设备" + device_code + "的Action信号已变更为3允许进入,当前信号值为:Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction() + ",agv开始进入放货。");
|
||||
if (hj2DeviceDriver.getMode() != 0 && hj2DeviceDriver.getMove() == 0) {
|
||||
if (hj2DeviceDriver.getAction() == 3) {
|
||||
log.info("设备" + device_code + "的Action信号已变更为3允许进入,当前信号值为:Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction() + ",agv开始进入放货。");
|
||||
agv_status = 2;
|
||||
flag = true;
|
||||
data = getData(data, index, inst, task);
|
||||
} else {
|
||||
log.info("设备" + device_code + "的Action信号未变更为3,不允许进入,当前信号值为:Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction() + ",尝试重新写入信号7进行进入申请");
|
||||
hj1DeviceDriver.writing(7);
|
||||
log.info("设备" + device_code + "已完成信号7写入,当前信号值为:" + "Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction());
|
||||
log.info("设备" + device_code + "的Action信号未变更为3,不允许进入,当前信号值为:Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction() + ",尝试重新写入信号7进行进入申请");
|
||||
hj2DeviceDriver.writing(7);
|
||||
log.info("设备" + device_code + "已完成信号7写入,当前信号值为:" + "Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction());
|
||||
//反馈WMS请求放货
|
||||
//sendAgvTaskStatus(inst, device_code, Integer.parseInt(AgvActionEnum.ACTION_STATUS.code("请求取货")));
|
||||
}
|
||||
hj1DeviceDriver.setMessage("");
|
||||
hj2DeviceDriver.setMessage("");
|
||||
} else {
|
||||
String message = "";
|
||||
if (hj1DeviceDriver.getMode() == 0) {
|
||||
if (hj2DeviceDriver.getMode() == 0) {
|
||||
message += "设备Mode值为0,设备异常,请检查!";
|
||||
} else {
|
||||
message += "设备光电信号不为0,站点有货,请检查!";
|
||||
}
|
||||
message += "不允许AGV放货。";
|
||||
agv_message = hj1DeviceDriver.getDevice_code() + message;
|
||||
hj1DeviceDriver.setMessage(message);
|
||||
agv_message = hj2DeviceDriver.getDevice_code() + message;
|
||||
hj2DeviceDriver.setMessage(message);
|
||||
logServer.deviceExecuteLog(device_code, "", "", message);
|
||||
log.info(device_code + message);
|
||||
lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message));
|
||||
@@ -605,24 +605,24 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
||||
}
|
||||
transportOrder = "";
|
||||
// "========================================================================放货完成================================================================================="
|
||||
//到达桁架2放货完成
|
||||
if (device.getDeviceDriver() instanceof Hj2DeviceDriver) {
|
||||
hj2DeviceDriver = (Hj2DeviceDriver) device.getDeviceDriver();
|
||||
log.info("agv进入" + device_code + ",放货完成,开始写入信号5进行安全交互,当前信号值为:Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction());
|
||||
hj2DeviceDriver.writing(5);
|
||||
if (hj2DeviceDriver.getMode() == 4) {
|
||||
log.info("设备" + device_code + "的Mode信号已变更为4,当前信号值为:Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction() + ",开始写入0清除mode信号。");
|
||||
hj2DeviceDriver.writing(0);
|
||||
//到达桁架1放货完成
|
||||
if (device.getDeviceDriver() instanceof Hj1DeviceDriver) {
|
||||
hj1DeviceDriver = (Hj1DeviceDriver) device.getDeviceDriver();
|
||||
log.info("agv进入" + device_code + ",放货完成,开始写入信号5进行安全交互,当前信号值为:Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction());
|
||||
hj1DeviceDriver.writing(5);
|
||||
if (hj1DeviceDriver.getMode() == 4) {
|
||||
log.info("设备" + device_code + "的Mode信号已变更为4,当前信号值为:Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction() + ",开始写入0清除mode信号。");
|
||||
hj1DeviceDriver.writing(0);
|
||||
agv_status = 0;
|
||||
flag = true;
|
||||
data = actionComplete(index, inst, device_code, hj2DeviceDriver.getTo_command(), Integer.parseInt(AgvActionEnum.ACTION_STATUS.code("放货完成")), "放货完成");
|
||||
log.info("设备" + device_code + "已完成信号0写入,当前信号值为:" + "Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction() + ",agv开始离开。");
|
||||
data = actionComplete(index, inst, device_code, hj1DeviceDriver.getTo_command(), Integer.parseInt(AgvActionEnum.ACTION_STATUS.code("放货完成")), "放货完成");
|
||||
log.info("设备" + device_code + "已完成信号0写入,当前信号值为:" + "Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction() + ",agv开始离开。");
|
||||
} else {
|
||||
log.info("设备" + device_code + "的Mode信号未变更为4,当前信号值为:Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction() + ",尝试重新写入信号5进行安全交互");
|
||||
hj2DeviceDriver.writing(5);
|
||||
log.info("设备" + device_code + "已完成信号5写入,当前信号值为:" + "Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction());
|
||||
log.info("设备" + device_code + "的Mode信号未变更为4,当前信号值为:Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction() + ",尝试重新写入信号5进行安全交互");
|
||||
hj1DeviceDriver.writing(5);
|
||||
log.info("设备" + device_code + "已完成信号5写入,当前信号值为:" + "Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction());
|
||||
}
|
||||
hj2DeviceDriver.setMessage("");
|
||||
hj1DeviceDriver.setMessage("");
|
||||
}
|
||||
//到达桁架2放货完成
|
||||
if (device.getDeviceDriver() instanceof Hj2DeviceDriver) {
|
||||
@@ -647,19 +647,19 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
||||
if (device.getDeviceDriver() instanceof SsxDeviceDriver) {
|
||||
ssxDeviceDriver = (SsxDeviceDriver) device.getDeviceDriver();
|
||||
log.info("agv进入" + device_code + ",放货完成,开始写入信号5进行安全交互,当前信号值为:Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction());
|
||||
// ssxDeviceDriver.writing(5);
|
||||
// if (ssxDeviceDriver.getMode() == 4) {
|
||||
ssxDeviceDriver.writing(5);
|
||||
if (ssxDeviceDriver.getMode() == 4) {
|
||||
log.info("设备" + device_code + "的Mode信号已变更为4,当前信号值为:Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction() + ",开始写入0清除mode信号。");
|
||||
// ssxDeviceDriver.writing(0);
|
||||
ssxDeviceDriver.writing(0);
|
||||
agv_status = 0;
|
||||
flag = true;
|
||||
data = actionComplete(index, inst, device_code, ssxDeviceDriver.getTo_command(), Integer.parseInt(AgvActionEnum.ACTION_STATUS.code("放货完成")), "放货完成");
|
||||
log.info("设备" + device_code + "已完成信号0写入,当前信号值为:" + "Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction() + ",agv开始离开。");
|
||||
// } else {
|
||||
// log.info("设备" + device_code + "的Mode信号未变更为4,当前信号值为:Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction() + ",尝试重新写入信号5进行安全交互");
|
||||
// ssxDeviceDriver.writing(5);
|
||||
// log.info("设备" + device_code + "已完成信号5写入,当前信号值为:" + "Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction());
|
||||
// }
|
||||
} else {
|
||||
log.info("设备" + device_code + "的Mode信号未变更为4,当前信号值为:Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction() + ",尝试重新写入信号5进行安全交互");
|
||||
ssxDeviceDriver.writing(5);
|
||||
log.info("设备" + device_code + "已完成信号5写入,当前信号值为:" + "Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction());
|
||||
}
|
||||
ssxDeviceDriver.setMessage("");
|
||||
}
|
||||
//agv普通站点放货完成
|
||||
@@ -779,7 +779,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
||||
.method("feedAgvTaskStatus")
|
||||
.build();
|
||||
luceneExecuteLogService.deviceExecuteLog(reqlogDto);
|
||||
for (int i = 0; i < 5; i++) {
|
||||
for (int i = 0; i < 10; i++) {
|
||||
log.info("点位:" + device_code + ",agv开始反馈wcs动作" + AgvActionEnum.ACTION_STATUS.check(String.valueOf(status)) );
|
||||
JSONObject resp = acsToWmsService.feedAgvTaskAction(ja);
|
||||
if ("200".equals(resp.getString("code"))) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.acs.instruction.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
@@ -14,6 +15,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.nl.acs.AcsConfig;
|
||||
import org.nl.acs.agv.server.MagicAgvService;
|
||||
@@ -1221,13 +1223,17 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
|
||||
boolean flag = false;
|
||||
InstructionDto entity = this.findById(id);
|
||||
if (entity == null) {
|
||||
throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
List<InstructionMybatis> entities = this.list(new LambdaQueryWrapper<InstructionMybatis>().eq(InstructionMybatis::getTask_id, id).lt(InstructionMybatis::getInstruction_status, 2));
|
||||
if (CollectionUtils.isNotEmpty(entities)) {
|
||||
entity = BeanUtil.copyProperties(entities.get(0), InstructionDto.class);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
TaskDto task = taskService.findByCodeFromCache(entity.getTask_code());
|
||||
if (StrUtil.isEmpty(entity.getRoute_plan_code())) {
|
||||
entity.setRoute_plan_code(task.getRoute_plan_code());
|
||||
}
|
||||
|
||||
// != 0 为agv任务 1=magic 2=NDC 3=XZ,4=ZHEDA
|
||||
if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "1")
|
||||
&& !StrUtil.equals(entity.getSend_status(), "2")) {
|
||||
@@ -1237,12 +1243,12 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
|
||||
|
||||
} else if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "2")) {
|
||||
// NDC agv指令不当场取消指令,需要等agv上报
|
||||
if (!StrUtil.isEmpty(entity.getAgv_jobno())) {
|
||||
if (StrUtil.isEmpty(entity.getAgv_jobno())) {
|
||||
throw new BadRequestException("该任务已下发NDC,等待NDC反馈任务号,暂时无法取消!");
|
||||
} else {
|
||||
ndcAgvService.deleteAgvInstToNDC(new Instruction(entity));
|
||||
flag = true;
|
||||
}
|
||||
// } else {
|
||||
flag = true;
|
||||
// }
|
||||
} else {
|
||||
flag = true;
|
||||
}
|
||||
@@ -1252,22 +1258,16 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
|
||||
zheDaAgvService.deleteZDAgvInst(entity.getInstruction_code());
|
||||
flag = true;
|
||||
}
|
||||
|
||||
if (flag) {
|
||||
|
||||
String currentUsername = SecurityUtils.getCurrentUsername();
|
||||
String now = DateUtil.now();
|
||||
entity.setUpdate_time(now);
|
||||
entity.setUpdate_by(currentUsername);
|
||||
entity.setInstruction_status("3");
|
||||
// WQLObject wo = WQLObject.getWQLObject("acs_instruction");
|
||||
// JSONObject json = (JSONObject) JSONObject.toJSON(entity);
|
||||
// wo.update(json);
|
||||
InstructionMybatis ins = ConvertUtil.convert(entity, InstructionMybatis.class);
|
||||
instructionMapper.updateById(ins);
|
||||
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
|
||||
DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class);
|
||||
|
||||
// 如果是无光电的设备 指令完成变更起点、终点状态
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("device_code", entity.getStart_device_code());
|
||||
@@ -1283,7 +1283,6 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
|
||||
jo.put("batch", entity.getBatch());
|
||||
jo.put("islock", "false");
|
||||
deviceService.changeDeviceStatus(jo);
|
||||
|
||||
JSONObject jo1 = new JSONObject();
|
||||
jo1.put("device_code", entity.getNext_device_code());
|
||||
jo.put("hasGoodStatus", "0");
|
||||
@@ -1291,7 +1290,6 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
|
||||
jo.put("batch", "");
|
||||
jo1.put("islock", "false");
|
||||
deviceService.changeDeviceStatus(jo1);
|
||||
|
||||
String instnextdevice = entity.getNext_device_code();
|
||||
Device device = appService.findDeviceByCode(instnextdevice);
|
||||
if (device == null) {
|
||||
@@ -1299,9 +1297,9 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
|
||||
return;
|
||||
}
|
||||
removeByCodeFromCache(entity.getInstruction_code());
|
||||
// taskService.cancel(entity.getTask_id());
|
||||
// taskService.cancel(entity.getTask_id());
|
||||
}
|
||||
// this.reload();
|
||||
// this.reload();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -963,33 +963,29 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
|
||||
if (entity == null) {
|
||||
throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
}
|
||||
InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl");
|
||||
InstructionDto instdto = instructionservice.findByTaskid(id, "instruction_status <2 ");
|
||||
if (instdto != null) {
|
||||
throw new BadRequestException("有指令未完成!");
|
||||
try {
|
||||
InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl");
|
||||
instructionservice.cancel(id);
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException(e.getMessage());
|
||||
}
|
||||
String currentUsername = SecurityUtils.getCurrentUsername();
|
||||
String now = DateUtil.now();
|
||||
entity.setUpdate_time(now);
|
||||
entity.setUpdate_by(currentUsername);
|
||||
entity.setTask_status("3");
|
||||
|
||||
Task task = ConvertUtil.convert(entity, Task.class);
|
||||
taskMapper.updateById(task);
|
||||
|
||||
|
||||
// synchronized (TaskServiceImpl.class){
|
||||
// Iterator<TaskDto> it = tasks.iterator();
|
||||
// // 清理缓存
|
||||
// while (it.hasNext()) {
|
||||
// TaskDto taskDto = it.next();
|
||||
// if (taskDto.getTask_id().equals(id)) {
|
||||
// tasks.remove(taskDto);
|
||||
// }
|
||||
// }}
|
||||
|
||||
// synchronized (TaskServiceImpl.class){
|
||||
// Iterator<TaskDto> it = tasks.iterator();
|
||||
// // 清理缓存
|
||||
// while (it.hasNext()) {
|
||||
// TaskDto taskDto = it.next();
|
||||
// if (taskDto.getTask_id().equals(id)) {
|
||||
// tasks.remove(taskDto);
|
||||
// }
|
||||
// }}
|
||||
removeByCodeFromCache(entity.getTask_code());
|
||||
|
||||
// 判断是否为WMS下发的任务,如果是反馈任务状态给WMS
|
||||
String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue();
|
||||
if (!StrUtil.startWith(entity.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) {
|
||||
|
||||
@@ -86,11 +86,12 @@ public class SyncDeviceStatus {
|
||||
param.put("AGV", AGV);
|
||||
redisUtils.set("AGV", AGV);
|
||||
//agv状态信息反馈
|
||||
acsToWmsService.shipAgvUpdate(AGV);
|
||||
//log.trace("自动上 报agv状态,完毕耗时{}", System.currentTimeMillis() - startTime);
|
||||
//acsToWmsService.shipAgvUpdate(AGV);
|
||||
log.trace("自动上报agv状态,完毕耗时{}", System.currentTimeMillis() - startTime);
|
||||
Integer sd =0;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// log.error("自动线程开始查询AGV设备状态失败{}{}", e, e.getMessage());
|
||||
log.error("自动线程开始查询AGV设备状态失败{}{}", e, e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ https://juejin.cn/post/6844903775631572999
|
||||
<!--添加loki-->
|
||||
<!--开发环境:打印控制台-->
|
||||
<springProfile name="dev">
|
||||
<root level="debug">
|
||||
<root level="info">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</root>
|
||||
|
||||
Reference in New Issue
Block a user