acs与lms交互联调优化

This commit is contained in:
psh
2023-12-28 14:32:43 +08:00
parent 1e15725d1f
commit 9fbd0016c4
11 changed files with 50 additions and 150 deletions

View File

@@ -50,6 +50,11 @@ public class CreateTaskRequest extends BaseRequest {
*/
String task_type;
/**
* agv任务类型
*/
String agv_task_type;
/**
* 备注
@@ -64,13 +69,15 @@ public class CreateTaskRequest extends BaseRequest {
@Override
public String toString() {
return "CreateTaskRequest{" +
"task_code='" + task_code + '\'' +
"task_id='" + task_id + '\'' +
", task_code='" + task_code + '\'' +
", start_device_code='" + start_device_code + '\'' +
", next_device_code='" + next_device_code + '\'' +
", priority='" + priority + '\'' +
", vehicle_code='" + vehicle_code + '\'' +
", vehicle_type='" + vehicle_type + '\'' +
", task_type='" + task_type + '\'' +
", agv_task_type='" + agv_task_type + '\'' +
", remark='" + remark + '\'' +
", params=" + params +
'}';

View File

@@ -473,6 +473,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
String vehicle_code = req.getVehicle_code();
String vehicle_type = req.getVehicle_type();
String task_type = req.getTask_type();
String agv_task_type=req.getAgv_task_type();
String remark = req.getRemark();
Map<String, String> params = req.getParams();
@@ -588,7 +589,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
jo.put("priority", priority);
jo.put("vehicle_code", vehicle_code);
jo.put("vehicle_type", vehicle_type);
jo.put("agv_system_type", "1");
jo.put("agv_system_type", agv_task_type);
jo.put("remark", remark);
jo.put("params", params);
jo.put("task_type", StrUtil.isEmpty(task_type) ? 1 : Integer.parseInt(task_type));

View File

@@ -21,9 +21,9 @@ import java.util.Map;
import java.util.Set;
/**
* @author jiaolm
* @date 2023-05-09
**/
* @author jiaolm
* @date 2023-05-09
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "指令服务管理")

View File

@@ -22,9 +22,9 @@ import java.util.Map;
import java.util.Set;
/**
* @author jiaolm
* @date 2023-05-09
**/
* @author jiaolm
* @date 2023-05-09
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "任务管理")

View File

@@ -983,7 +983,6 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
if (!StrUtil.startWith(entity.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) {
FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest();
request.setTask_id(entity.getExt_task_id());
request.setTask_id(entity.getExt_task_id());
request.setTask_code(entity.getTask_code());
request.setTask_status(entity.getTask_status());
request.setRequest_medthod_code(RequestMethodEnum.feedback_task_status.getCode());

View File

@@ -162,24 +162,7 @@ public class AutoCreateInst {
continue;
}
}
// if (startdevice.getDeviceDriver() instanceof StandardEmptyPalletSiteDeviceDriver) {
// standardEmptsyPalletSiteDeviceDriver = (StandardEmptyPalletSiteDeviceDriver) startdevice.getDeviceDriver();
// if (standardEmptsyPalletSiteDeviceDriver.getMode() != 2) {
// log.info("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
// acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// }
// }
// if (startdevice.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) {
// lnshFoldDiscSiteDeviceDriver = (LnshFoldDiscSiteDeviceDriver) startdevice.getDeviceDriver();
// if (lnshFoldDiscSiteDeviceDriver.getMode() != 2) {
// log.info("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
// acsTask.setRemark("目标设备:" + nextdevice.getDevice_code() + "设备未待机,任务号:" + taskcode);
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// }
// }
//校验 是否同任务是否存在相同终点、未完成的指令
int sameqty = instructionService.querySameDestinationInst(next_point_code);
@@ -191,117 +174,6 @@ public class AutoCreateInst {
}
}
//空盘位生成指令需要另外逻辑
// if (nextdevice.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) {
// lnshFoldDiscSiteDeviceDriver = (LnshFoldDiscSiteDeviceDriver) nextdevice.getDeviceDriver();
// if (lnshFoldDiscSiteDeviceDriver.getMode() == 0) {
// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// } else if (lnshFoldDiscSiteDeviceDriver.getError() != 0
// || lnshFoldDiscSiteDeviceDriver.getStatus() == 3) {
// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// }
// int max_emptypalletnum = Integer.parseInt(nextdevice.getExtraValue().get("max_emptypalletnum").toString());
// int nowNumber = lnshFoldDiscSiteDeviceDriver.getContainer_qty();
// if (nowNumber >= max_emptypalletnum) {
// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 已满,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 已满,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// }
// // 查看是否有相同终点的指令
// int count = instructionService.queryDeviceInstCount(next_device_code);
// if (count > 0) {
// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 已被占用,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 已被占用,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// //this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
// //this.execute_log.log("存在相同终点的指令,任务号:" + taskcode);
// continue;
// }
// next_point_code = next_device_code + "." + (nowNumber + 1);
// } else if (nextdevice.getDeviceDriver() instanceof LnshStationDeviceDriver
// && "true".equals(nextdevice.getExtraValue().get("inspect_in_stocck"))) {
// LnshStationDeviceDriver deviceDriver = (LnshStationDeviceDriver) nextdevice.getDeviceDriver();
// if (deviceDriver.getMode() == 0) {
// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 未联机,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// } else if (deviceDriver.getMove() != 0) {
// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 有货,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 有货,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// } else if (deviceDriver.getError() != 0) {
// log.info("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 终点 [" + nextdevice.getDevice_name() + "] 异常,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// }
// }
// if (startdevice.getDeviceDriver() instanceof LnshFoldDiscSiteDeviceDriver) {
// lnshFoldDiscSiteDeviceDriver = (LnshFoldDiscSiteDeviceDriver) startdevice.getDeviceDriver();
// if (lnshFoldDiscSiteDeviceDriver.getMode() == 0) {
// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// } else if (lnshFoldDiscSiteDeviceDriver.getError() != 0
// || lnshFoldDiscSiteDeviceDriver.getStatus() == 3) {
// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// }
//
// int container_qty = lnshFoldDiscSiteDeviceDriver.getContainer_qty();
// int max_emptypalletnum = Integer.parseInt(startdevice.getExtraValue().get("max_emptypalletnum").toString());
// if (container_qty < (max_emptypalletnum / 2)) {
// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 可用托盘数量少于最大托盘数量 [" + max_emptypalletnum + "] / 2无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 可用托盘数量少于最大托盘数量 [" + max_emptypalletnum + "] / 2无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// }
//
// int count = instructionService.queryDeviceInstCount(start_device_code);
// if (count > 0) {
// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 已被占用,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 已被占用,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// //this.execute_log.setResource(nextdevice.getDevice_code(), nextdevice.getDevice_code());
// //this.execute_log.log("存在相同终点的指令,任务号:" + taskcode);
// continue;
// }
//
// start_point_code = start_device_code + ".1";
// } else if (startdevice.getDeviceDriver() instanceof LnshStationDeviceDriver
// && "true".equals(startdevice.getExtraValue().get("inspect_in_stocck"))) {
// LnshStationDeviceDriver deviceDriver = (LnshStationDeviceDriver) startdevice.getDeviceDriver();
// if (deviceDriver.getMode() == 0) {
// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 未联机,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// } else if (deviceDriver.getMove() == 0) {
// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 无货,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 无货,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// } else if (deviceDriver.getError() != 0) {
// log.info("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。");
// acsTask.setRemark("任务 [" + taskcode + "] 起点 [" + startdevice.getDevice_name() + "] 异常,无法生成指令。");
// taskserver.updateByCodeFromCache(acsTask);
// continue;
// }
// }
Instruction instdto = new Instruction();
instdto.setInstruction_type(acsTask.getTask_type());
instdto.setInstruction_id(IdUtil.simpleUUID());

View File

@@ -129,6 +129,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
BaseResponse result = BaseResponse.build(requestNo);
FeedBackTaskStatusRequest taskStatusRequest = param.toJavaObject(FeedBackTaskStatusRequest.class);
String taskId = taskStatusRequest.getTask_id();
String taskCode = taskStatusRequest.getTask_code();
if (ObjectUtil.isEmpty(taskId)) {
throw new BadRequestException("任务编码不能为空!");
}
@@ -159,12 +160,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
AbstractTask abstractTask = taskFactory.getTask(processingClass);
// 更新任务
try {
abstractTask.updateTaskStatus(taskId, status);
abstractTask.updateTaskStatus(taskCode, status);
result.setMessage("任务状态反馈成功!");
} catch (Exception e) {
log.error("任务状态更新失败: {}", message);
result.setCode(HttpStatus.HTTP_BAD_REQUEST);
result.setMessage("任务:[" + taskId + "]状态更新失败," + message);
result.setMessage("任务:[" + taskCode + "]状态更新失败," + message);
}
interactRecordService.saveRecord(requestMethodName, param, result, GeneralDefinition.ACS_LMS);
return result;

View File

@@ -3,6 +3,7 @@ package org.nl.wms.sch.task_manage;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.nl.common.exception.BadRequestException;
@@ -23,6 +24,7 @@ import org.nl.wms.sch.task_manage.task.AcsUtil;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -95,22 +97,34 @@ public abstract class AbstractTask {
taskDto.setRoute_plan_code("normal");
taskDto.setStart_device_code(task.getPoint_code1());
taskDto.setNext_device_code(task.getPoint_code2());
taskDto.setStart_waite_code(task.getStart_wait_point());
taskDto.setNext_waite_code(task.getNext_wait_point());
//如果存在等待点,任务下发目标点给等待点
if(ObjectUtil.isEmpty(task.getPoint_code2())){
taskDto.setNext_device_code(task.getNext_wait_point());
}else {
taskDto.setNext_device_code(task.getPoint_code2());
}
// taskDto.setStart_wait_code(task.getStart_wait_point());
// taskDto.setNext_wait_code(task.getNext_wait_point());
taskDto.setVehicle_code(task.getVehicle_code());
this.setTask(task.getConfig_code(), taskDto);
list.add(taskDto);
}
return AcsUtil.notifyAcs("api/wms/task", list);
JSONObject result=AcsUtil.notifyAcs("api/wms/task", list);
if (HttpStatus.OK.value()==result.getInteger("status")) {
for (SchBaseTask schBaseTask : taskList) {
schBaseTask.setTask_status(TaskStatus.ISSUED.getCode());
taskService.update(schBaseTask);
}
}
return result;
}
private AcsTaskDto setTask(String config_code, AcsTaskDto taskDto) {
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
.eq(SchBaseTaskconfig::getConfig_code, config_code));
taskDto.setPriority(taskConfig.getPriority());
taskDto.setTask_type(taskConfig.getAcs_task_type());
taskDto.setTask_type(taskConfig.getTask_type());
taskDto.setAgv_task_type(taskConfig.getAcs_task_type());
taskDto.setRoute_plan_code(taskConfig.getRoute_plan_code());
return taskDto;
}

View File

@@ -10,14 +10,16 @@ public class AcsTaskDto {
private String task_code;
//任务类型
private String task_type;
//AGV任务类型
private String agv_task_type;
//起点
private String start_device_code;
//下一点
private String next_device_code;
//取货等待点
private String start_waite_code;
private String start_wait_code;
//放货等待点
private String next_waite_code;
private String next_wait_code;
//载具号
private String vehicle_code;
//载具类型

View File

@@ -5,14 +5,17 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task_manage.AcsTaskDto;
import org.nl.wms.sch.task_manage.GeneralDefinition;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.springframework.http.HttpStatus;
import java.util.List;
@@ -56,6 +59,7 @@ public class AcsUtil {
//acs抛异常这里
/* if (result.getString("status").equals(String.valueOf(HttpStatus.BAD_REQUEST.value())))
throw new BadRequestException(result.getString("message"));*/
// 如果下发完毕,就修改状态
return result;
}

View File

@@ -6,10 +6,10 @@ spring:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:xftn_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:tn_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
# url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:stand_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root}
password: ${DB_PWD:12356}
password: ${DB_PWD:123456}
# password: ${DB_PWD:P@ssw0rd}
# 初始连接数
initial-size: 5