add 二次请求

This commit is contained in:
javami888
2026-04-28 14:26:46 +08:00
parent 980c1d880c
commit 851a937cdd
6 changed files with 80 additions and 87 deletions

View File

@@ -15,8 +15,6 @@ import org.nl.acs.device.device.service.DeviceAppService;
import org.nl.acs.task.history.ErrorUtil; import org.nl.acs.task.history.ErrorUtil;
import org.nl.acs.task.instruction.domain.Instruction; import org.nl.acs.task.instruction.domain.Instruction;
import org.nl.acs.task.instruction.service.InstructionService; import org.nl.acs.task.instruction.service.InstructionService;
import org.nl.acs.task.task.service.TaskService;
import org.nl.acs.task.task.service.dto.TaskDto;
import org.nl.config.SpringContextHolder; import org.nl.config.SpringContextHolder;
import org.nl.config.language.LangProcess; import org.nl.config.language.LangProcess;
import org.nl.config.lucene.service.LuceneExecuteLogService; import org.nl.config.lucene.service.LuceneExecuteLogService;
@@ -40,7 +38,6 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver {
private final LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); private final LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class);
private final InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); private final InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class);
private final TaskService taskService = SpringContextHolder.getBean(TaskService.class);
private final AcsToKitService acsToKitService = SpringContextHolder.getBean(AcsToKitService.class); private final AcsToKitService acsToKitService = SpringContextHolder.getBean(AcsToKitService.class);
private final DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); private final DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class);
private final AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class); private final AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class);
@@ -166,9 +163,7 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver {
log.info("点位上报状态,{},{}",instruction.getTask_code(),agvphase); log.info("点位上报状态,{},{}",instruction.getTask_code(),agvphase);
if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getStart_point_code(), this.devicecode)) { if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getStart_point_code(), this.devicecode)) {
if (agvphase == 1) { if (agvphase == 1) {
TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); if ((StrUtil.startWith(instruction.getTask_code(), "-"))) {
TaskDto task = taskService.findByCode(instruction.getTask_code());
if ((StrUtil.startWith(task.getTask_code(), "-"))) {
log.info("定点任务下发agv允许取货信号"); log.info("定点任务下发agv允许取货信号");
StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getStart_point_code()); StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getStart_point_code());
if (dto == null) { if (dto == null) {
@@ -185,9 +180,6 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver {
} }
} else } else
{ {
if (!requestPermission(task, instruction, WmsFeedbackStatusEnum.APPLY_TAKE.getValue(), WmsFeedbackStatusEnum.TAKING.getValue())) {
return;
}
HttpResponse result1 = acsToKitService.genAgvSchedulingTask(instruction, 10); HttpResponse result1 = acsToKitService.genAgvSchedulingTask(instruction, 10);
if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) {
return; return;
@@ -197,10 +189,8 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver {
} }
} }
if (agvphase == 2) { if (agvphase == 2) {
TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); acsToWmsService.feedbackTask(instruction, WmsFeedbackStatusEnum.TAKE_FINISH.getValue());
TaskDto task = taskService.findByCode(instruction.getTask_code()); if ((StrUtil.startWith(instruction.getTask_code(), "-"))) {
acsToWmsService.feedbackTask(task, resolveCard(task, instruction), WmsFeedbackStatusEnum.TAKE_FINISH.getValue());
if ((StrUtil.startWith(task.getTask_code(), "-"))) {
log.info("定点任务下发agv允许取货信号"); log.info("定点任务下发agv允许取货信号");
StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getStart_point_code()); StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getStart_point_code());
if (dto == null) { if (dto == null) {
@@ -228,12 +218,7 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver {
//放货申请 //放货申请
else if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getNext_point_code(), this.devicecode)) { else if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getNext_point_code(), this.devicecode)) {
if (agvphase == 3) { if (agvphase == 3) {
TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); if ((StrUtil.startWith(instruction.getTask_code(), "-"))) {
TaskDto task = taskService.findByCode(instruction.getTask_code());
if (!requestPermission(task, instruction, WmsFeedbackStatusEnum.APPLY_PUT.getValue(), WmsFeedbackStatusEnum.PUTTING.getValue())) {
return;
}
if ((StrUtil.startWith(task.getTask_code(), "-"))) {
log.info("定点任务下发agv允许取货信号"); log.info("定点任务下发agv允许取货信号");
StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getNext_point_code()); StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getNext_point_code());
if (dto == null) { if (dto == null) {
@@ -258,10 +243,8 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver {
} }
} }
if (agvphase == 4) { if (agvphase == 4) {
TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); acsToWmsService.feedbackTask(instruction, WmsFeedbackStatusEnum.PUT_FINISH.getValue());
TaskDto task = taskService.findByCode(instruction.getTask_code()); if ((StrUtil.startWith(instruction.getTask_code(), "-"))) {
acsToWmsService.feedbackTask(task, resolveCard(task, instruction), WmsFeedbackStatusEnum.PUT_FINISH.getValue());
if ((StrUtil.startWith(task.getTask_code(), "-"))) {
log.info("定点任务下发agv允许取货信号"); log.info("定点任务下发agv允许取货信号");
StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getNext_point_code()); StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getNext_point_code());
if (dto == null) { if (dto == null) {
@@ -419,20 +402,17 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver {
} }
} }
private boolean requestPermission(TaskDto task, Instruction instruction, String permissionStatus, String progressStatus) { private boolean requestPermission(Instruction instruction, String permissionStatus, String progressStatus) {
boolean allowed = acsToWmsService.feedbackTask(task, resolveCard(task, instruction), permissionStatus); boolean allowed = acsToWmsService.feedbackTask(instruction, permissionStatus);
if (allowed && task != null) { if (allowed) {
// WMS 放行后,先把外部状态推进到执行中,再继续给 AGV 下发动作。 // WMS 放行后,先把外部状态推进到执行中,再继续给 AGV 下发动作。
acsToWmsService.feedbackTask(task, resolveCard(task, instruction), progressStatus); acsToWmsService.feedbackTask(instruction, progressStatus);
} }
return allowed; return allowed;
} }
private String resolveCard(TaskDto task, Instruction instruction) { private String unusedResolveCard(Instruction instruction) {
// 优先取任务上已绑定的车号,没有时再回退到当前指令上的车号。 // 优先取任务上已绑定的车号,没有时再回退到当前指令上的车号。
if (task != null && StrUtil.isNotBlank(task.getCarno())) {
return task.getCarno();
}
return instruction == null ? "" : StrUtil.blankToDefault(instruction.getCarno(), ""); return instruction == null ? "" : StrUtil.blankToDefault(instruction.getCarno(), "");
} }
} }

View File

@@ -14,8 +14,6 @@ import org.nl.acs.device.storageMgt.service.impl.StorageCellServiceImpl;
import org.nl.acs.device.device.service.DeviceAppService; import org.nl.acs.device.device.service.DeviceAppService;
import org.nl.acs.task.instruction.domain.Instruction; import org.nl.acs.task.instruction.domain.Instruction;
import org.nl.acs.task.instruction.service.InstructionService; import org.nl.acs.task.instruction.service.InstructionService;
import org.nl.acs.task.task.service.TaskService;
import org.nl.acs.task.task.service.dto.TaskDto;
import org.nl.config.SpringContextHolder; import org.nl.config.SpringContextHolder;
import org.nl.extInterface.agvKit.service.AcsToKitService; import org.nl.extInterface.agvKit.service.AcsToKitService;
import org.nl.extInterface.wms.service.AcsToWmsService; import org.nl.extInterface.wms.service.AcsToWmsService;
@@ -83,20 +81,24 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractStandardDeviceDriv
if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getStart_point_code(), this.deviceCode)) { if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getStart_point_code(), this.deviceCode)) {
if (agvPhase == 1) { if (agvPhase == 1) {
TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); //取货申请
TaskDto task = taskService.findByCode(instruction.getTask_code()); if (!requestPermission(instruction, WmsFeedbackStatusEnum.APPLY_TAKE.getValue())) {
if (!requestPermission(task, instruction, WmsFeedbackStatusEnum.APPLY_TAKE.getValue(), WmsFeedbackStatusEnum.TAKING.getValue())) {
return; return;
} }
// device = deviceAppService.findDeviceByCode(this.deviceCode); //二次请求判断
StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getStart_point_code()); Instruction currentInstruction = redirectIfNeeded(instruction);
if (currentInstruction == null) {
return;
}
StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(currentInstruction.getStart_point_code());
if (dto == null) { if (dto == null) {
log.error(instruction.getStart_point_code() + "Storage_Cache_Map数据不存在"); log.error(instruction.getStart_point_code() + "Storage_Cache_Map数据不存在");
return; return;
} }
instruction.setOffSet(dto.getAddress()); currentInstruction.setOffSet(dto.getAddress());
instruction.setOffSetName(instruction.getStart_point_code()); currentInstruction.setOffSetName(currentInstruction.getStart_point_code());
HttpResponse result = acsToKitService.genAgvSchedulingTask(instruction, 10); //反馈取货申请
HttpResponse result = acsToKitService.genAgvSchedulingTask(currentInstruction, 10);
if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) {
return; return;
} else { } else {
@@ -104,9 +106,7 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractStandardDeviceDriv
} }
} }
if (agvPhase == 2) { if (agvPhase == 2) {
TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); acsToWmsService.feedbackTask(instruction, WmsFeedbackStatusEnum.TAKE_FINISH.getValue());
TaskDto task = taskService.findByCode(instruction.getTask_code());
acsToWmsService.feedbackTask(task, resolveCard(task, instruction), WmsFeedbackStatusEnum.TAKE_FINISH.getValue());
StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getStart_point_code()); StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getStart_point_code());
if (dto == null) { if (dto == null) {
log.error(instruction.getStart_point_code() + "Storage_Cache_Map数据不存在"); log.error(instruction.getStart_point_code() + "Storage_Cache_Map数据不存在");
@@ -114,7 +114,7 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractStandardDeviceDriv
} }
instruction.setOffSet(dto.getAddress()); instruction.setOffSet(dto.getAddress());
instruction.setOffSetName(instruction.getStart_point_code()); instruction.setOffSetName(instruction.getStart_point_code());
if ((StrUtil.startWith(task.getTask_code(), "-"))) { if ((StrUtil.startWith(instruction.getTask_code(), "-"))) {
log.info("定点任务下发agv允许取货信号"); log.info("定点任务下发agv允许取货信号");
HttpResponse result = acsToKitService.genAgvSchedulingTask(instruction, 10); HttpResponse result = acsToKitService.genAgvSchedulingTask(instruction, 10);
if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) {
@@ -135,9 +135,8 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractStandardDeviceDriv
//放货申请 //放货申请
else if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getNext_point_code(), this.deviceCode)) { else if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getNext_point_code(), this.deviceCode)) {
if (agvPhase == 3) { if (agvPhase == 3) {
TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); //放货申请
TaskDto task = taskService.findByCode(instruction.getTask_code()); if (!requestPermission(instruction, WmsFeedbackStatusEnum.APPLY_PUT.getValue())) {
if (!requestPermission(task, instruction, WmsFeedbackStatusEnum.APPLY_PUT.getValue(), WmsFeedbackStatusEnum.PUTTING.getValue())) {
return; return;
} }
StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getNext_point_code()); StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getNext_point_code());
@@ -155,9 +154,7 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractStandardDeviceDriv
} }
} }
if (agvPhase == 4) { if (agvPhase == 4) {
TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); acsToWmsService.feedbackTask(instruction, WmsFeedbackStatusEnum.PUT_FINISH.getValue());
TaskDto task = taskService.findByCode(instruction.getTask_code());
acsToWmsService.feedbackTask(task, resolveCard(task, instruction), WmsFeedbackStatusEnum.PUT_FINISH.getValue());
StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getNext_point_code()); StorageCellDto dto = StorageCellServiceImpl.Storage_Cache_Map.get(instruction.getNext_point_code());
if (dto == null) { if (dto == null) {
log.error(instruction.getStart_point_code() + "Storage_Cache_Map数据不存在"); log.error(instruction.getStart_point_code() + "Storage_Cache_Map数据不存在");
@@ -165,7 +162,7 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractStandardDeviceDriv
} }
instruction.setOffSet(dto.getAddress1()); instruction.setOffSet(dto.getAddress1());
instruction.setOffSetName(instruction.getNext_point_code()); instruction.setOffSetName(instruction.getNext_point_code());
if ((StrUtil.startWith(task.getTask_code(), "-"))) { if ((StrUtil.startWith(instruction.getTask_code(), "-"))) {
log.info("定点任务下发agv允许取货信号"); log.info("定点任务下发agv允许取货信号");
HttpResponse result = acsToKitService.genAgvSchedulingTask(instruction, 10); HttpResponse result = acsToKitService.genAgvSchedulingTask(instruction, 10);
if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) {
@@ -243,21 +240,29 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractStandardDeviceDriv
} }
} }
private boolean requestPermission(TaskDto task, Instruction instruction, String permissionStatus, String progressStatus) { private boolean requestPermission(Instruction instruction, String permissionStatus) {
boolean allowed = acsToWmsService.feedbackTask(task, resolveCard(task, instruction), permissionStatus); return acsToWmsService.feedbackTask(instruction, permissionStatus);
if (allowed && task != null) {
// WMS 放行后,先把外部状态推进到执行中,再继续给 AGV 下发动作。
acsToWmsService.feedbackTask(task, resolveCard(task, instruction), progressStatus);
}
return allowed;
} }
private String resolveCard(TaskDto task, Instruction instruction) { private Instruction redirectIfNeeded(Instruction instruction) {
// 优先取任务上已绑定的车号,没有时再回退到当前指令上的车号。
if (task != null && StrUtil.isNotBlank(task.getCarno())) { if (!StrUtil.equals(instruction.getNext_point_code(), "7E")) {
return task.getCarno(); return instruction;
} }
return instruction == null ? "" : StrUtil.blankToDefault(instruction.getCarno(), ""); JSONObject response = acsToWmsService.taskRedirection(instruction.getTask_code(), instruction.getNext_point_code());
if (response == null || !Integer.valueOf(0).equals(response.getInteger("responseCode"))) {
log.error("taskRedirection failed, taskCode:{}, currLocation:{}, response:{}",
instruction.getTask_code(), instruction.getNext_point_code(), response);
return null;
}
String locationNew = response.getString("locationNew");
if (StrUtil.isBlank(locationNew)) {
log.error("taskRedirection locationNew is blank, taskCode:{}, response:{}",
instruction.getTask_code(), response);
return null;
}
instruction.setStart_device_code(locationNew);
return instruction;
} }
} }

View File

@@ -436,7 +436,8 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
if (StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE)) { if (StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE)) {
throw new BadRequestException(dto.getStart_device_code() + "->" + dto.getNext_device_code() + "路由类型不是agv类型"); throw new BadRequestException(dto.getStart_device_code() + "->" + dto.getNext_device_code() + "路由类型不是agv类型");
} }
if (shortPathsList.size() > 0 && StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE) && dto.getAgv_system_type().equals(AgvSystemTypeEnum.Two_NDC_System_Type.getIndex())) { if (shortPathsList.size() > 0 && StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE) && dto.getAgv_system_type().equals(AgvSystemTypeEnum.Two_NDC_System_Type.getIndex()))
{
// 0为输送、立库任务 1 1楼叉车系统 2 2楼1区域AGV系统 3 2楼2区域AGV系统 // 0为输送、立库任务 1 1楼叉车系统 2 2楼1区域AGV系统 3 2楼2区域AGV系统
if (!StrUtil.equals(task.getAgv_system_type(), "0") if (!StrUtil.equals(task.getAgv_system_type(), "0")
&& ObjectUtil.isNotEmpty(task.getAgv_system_type())) { && ObjectUtil.isNotEmpty(task.getAgv_system_type())) {
@@ -444,31 +445,11 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
String agv_system_type = task.getAgv_system_type(); String agv_system_type = task.getAgv_system_type();
String task_type = task.getTask_type(); String task_type = task.getTask_type();
if (!StrUtil.equals(agv_system_type, "1")) { if (!StrUtil.equals(agv_system_type, "1")) {
// task_type
//1、生箔 Itype=1:取空,取满,放空,放满;
//2、分切 Itype=3取满、取空、放满、放空
//3、普通任务 Itype=2:取货、放货;
//4、叉车任务
//5、输送任务
//6、行架
//7、立库
if (StrUtil.equals(task_type, "1")) {
dto.setAgv_inst_type("1");
} else if (StrUtil.equals(task_type, "3")) {
dto.setAgv_inst_type("2"); dto.setAgv_inst_type("2");
} else if (StrUtil.equals(task_type, "2")) {
dto.setAgv_inst_type("3");
} else if (StrUtil.equals(task_type, "8")) {
dto.setAgv_inst_type("2");
} else {
log.info("未找到对应的AGV指令类型任务号:" + task.getTask_code() + ",task_type:" + task.getTask_type());
}
} else {
dto.setAgv_inst_type("4");
} }
dto.setAgv_system_type(task.getAgv_system_type()); dto.setAgv_system_type(task.getAgv_system_type());
} }
try { try {
if (StrUtil.isEmpty(dto.getAgv_inst_type()) || StrUtil.isEmpty(dto.getAgv_system_type())) { if (StrUtil.isEmpty(dto.getAgv_inst_type()) || StrUtil.isEmpty(dto.getAgv_system_type())) {
log.info("sendAgvInstToNDC 指令校验:" + dto.getInstruction_code() + ",inst_type:" + dto.getInstruction_type() log.info("sendAgvInstToNDC 指令校验:" + dto.getInstruction_code() + ",inst_type:" + dto.getInstruction_type()

View File

@@ -861,7 +861,6 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
//向缓存添加任务信息 //向缓存添加任务信息
this.addTaskToCache(dto); this.addTaskToCache(dto);
//反馈上位系统任务状态 //反馈上位系统任务状态
this.feedWmsTaskStatus(dto); this.feedWmsTaskStatus(dto);
} }

View File

@@ -1,6 +1,7 @@
package org.nl.extInterface.wms.service; package org.nl.extInterface.wms.service;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.nl.acs.task.instruction.domain.Instruction;
import org.nl.acs.task.task.service.dto.TaskDto; import org.nl.acs.task.task.service.dto.TaskDto;
public interface AcsToWmsService { public interface AcsToWmsService {
@@ -9,6 +10,8 @@ public interface AcsToWmsService {
*/ */
boolean feedbackTask(TaskDto taskDto, String card, String feedbackStatus); boolean feedbackTask(TaskDto taskDto, String card, String feedbackStatus);
boolean feedbackTask(Instruction instruction, String feedbackStatus);
boolean deprecateTask(TaskDto taskDto, String reason); boolean deprecateTask(TaskDto taskDto, String reason);
JSONObject taskRedirection(String taskCode, String currLocation); JSONObject taskRedirection(String taskCode, String currLocation);
@@ -19,4 +22,6 @@ public interface AcsToWmsService {
* 判断任务是否需要进入 WMS 回传链路,避免本地任务误回传。 * 判断任务是否需要进入 WMS 回传链路,避免本地任务误回传。
*/ */
boolean isWmsTask(TaskDto taskDto); boolean isWmsTask(TaskDto taskDto);
boolean isWmsInstruction(Instruction instruction);
} }

View File

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.acs.task.TaskConfig; import org.nl.acs.task.TaskConfig;
import org.nl.acs.task.instruction.domain.Instruction;
import org.nl.acs.task.task.service.dto.TaskDto; import org.nl.acs.task.task.service.dto.TaskDto;
import org.nl.common.db.CommonFinalParam; import org.nl.common.db.CommonFinalParam;
import org.nl.extInterface.wms.service.AcsToWmsService; import org.nl.extInterface.wms.service.AcsToWmsService;
@@ -40,6 +41,20 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
return isSuccess(response); return isSuccess(response);
} }
@Override
public boolean feedbackTask(Instruction instruction, String feedbackStatus) {
if (!isWmsInstruction(instruction)) {
return true;
}
JSONObject body = baseBody();
body.put("taskCode", instruction.getTask_code());
body.put("card", StrUtil.blankToDefault(instruction.getCarno(), ""));
body.put("taskType", StrUtil.blankToDefault(instruction.getInstruction_type(), ""));
body.put("feedbackStatus", feedbackStatus);
JSONObject response = postJson(buildUrl(FEEDBACK_TASK_PATH), body);
return isSuccess(response);
}
@Override @Override
public boolean deprecateTask(TaskDto taskDto, String reason) { public boolean deprecateTask(TaskDto taskDto, String reason) {
if (!isWmsTask(taskDto)) { if (!isWmsTask(taskDto)) {
@@ -79,6 +94,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
&& StrUtil.equals("1", getParam(TaskConfig.HASWMS, "0")); && StrUtil.equals("1", getParam(TaskConfig.HASWMS, "0"));
} }
@Override
public boolean isWmsInstruction(Instruction instruction) {
return instruction != null
&& StrUtil.isNotBlank(instruction.getTask_code())
&& !StrUtil.startWith(instruction.getTask_code(), CommonFinalParam.HYPHEN_)
&& StrUtil.equals("1", getParam(TaskConfig.HASWMS, "0"));
}
protected JSONObject postJson(String url, JSONObject body) { protected JSONObject postJson(String url, JSONObject body) {
try { try {
String result = HttpRequest.post(url) String result = HttpRequest.post(url)