diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/ToAgvDevice.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/ToAgvDevice.java index c740711..4afb70a 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/ToAgvDevice.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/ToAgvDevice.java @@ -37,8 +37,8 @@ public class ToAgvDevice { if (device.getDeviceDriver()instanceof AgvNdcTwoDeviceDriver){ JSONObject row = new JSONObject(); agvNdcTwoDeviceDriver= (AgvNdcTwoDeviceDriver) device.getDeviceDriver(); - row.put("device_code", String.valueOf(device.getDevice_code())); - row.put("positionX", String.valueOf(agvNdcTwoDeviceDriver.getX())); + row.put("deviceCode", String.valueOf(device.getDevice_code())); + row.put("status", String.valueOf(agvNdcTwoDeviceDriver.getX())); row.put("positionY", String.valueOf(agvNdcTwoDeviceDriver.getY())); row.put("positionAngle", String.valueOf(agvNdcTwoDeviceDriver.getAngle())); agv_rows.add(row); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java index 1260f45..126e27d 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java @@ -24,6 +24,8 @@ import org.nl.acs.device_driver.two_conveyor.hongxiang_conveyor.HongXiangStation import org.nl.acs.device_driver.two_conveyor.manipulator_agv_station.ManipulatorAgvStationDeviceDriver; import org.nl.acs.device_driver.two_conveyor.ranging_stations.RangingStationsDeviceDriver; import org.nl.acs.device_driver.two_conveyor.waste_foil_weighing_station.WasteFoilWeighingStationDriver; +import org.nl.acs.ext.wms.data.WcsToAcsData.feedBackTaskStatus.FeedBackTaskStatusRequest; +import org.nl.acs.ext.wms.service.AcsToWcsService; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.history.ErrorUtil; @@ -46,6 +48,7 @@ import org.nl.config.lucene.service.dto.LuceneLogDto; import org.nl.config.thread.ThreadPoolExecutorUtil; import org.nl.system.service.param.ISysParamService; import org.nl.config.SpringContextHolder; +import org.springframework.beans.factory.annotation.Autowired; import java.util.HashMap; import java.util.LinkedHashMap; @@ -74,6 +77,9 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); TwoAgvPhase twoAgvPhase = new TwoAgvPhase(); + @Autowired + AcsToWcsService acsToWcsService; + String error_code = "0"; int agvaddr = 0; int agvaddr_copy = 0; @@ -177,6 +183,14 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic } inst.setCarno(String.valueOf(carno)); instructionService.update(inst); + //反馈取货中 + FeedBackTaskStatusRequest feedBackTaskStatusRequest = new FeedBackTaskStatusRequest(); + feedBackTaskStatusRequest.setTaskCode(inst.getTask_code()); + feedBackTaskStatusRequest.setCarId(inst.getCarno()); + TaskDto taskDto = taskService.findByCode(inst.getTask_code()); + feedBackTaskStatusRequest.setTaskType(taskDto.getTask_type()); + feedBackTaskStatusRequest.setFeedbackStatus("taking"); + acsToWcsService.feedTaskStatus(feedBackTaskStatusRequest); } //到达取货点 //(Itype=1/2/3,需要WCS反馈Phase) @@ -245,6 +259,14 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); } + //反馈取货中 + FeedBackTaskStatusRequest feedBackTaskStatusRequest = new FeedBackTaskStatusRequest(); + feedBackTaskStatusRequest.setTaskCode(inst.getTask_code()); + feedBackTaskStatusRequest.setCarId(inst.getCarno()); + TaskDto taskDto = taskService.findByCode(inst.getTask_code()); + feedBackTaskStatusRequest.setTaskType(taskDto.getTask_type()); + feedBackTaskStatusRequest.setFeedbackStatus("applyTake"); + acsToWcsService.feedTaskStatus(feedBackTaskStatusRequest); } // 取货完毕 @@ -297,7 +319,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); //放货确认 if (standardOrdinarySiteDeviceDriver.getOption() == 1) { - log.info("等待一体机进行放货确认,指令号{},设备号{},option值{}", inst,standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); + log.info("等待一体机进行放货确认,指令号{},设备号{},option值{}", inst, standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); LuceneLogDto logDto = LuceneLogDto.builder() .device_code(this.getDeviceCode()) @@ -306,8 +328,18 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); standardOrdinarySiteDeviceDriver.setOption(0); + + //反馈取货完成 + FeedBackTaskStatusRequest feedBackTaskStatusRequest = new FeedBackTaskStatusRequest(); + feedBackTaskStatusRequest.setTaskCode(inst.getTask_code()); + feedBackTaskStatusRequest.setCarId(inst.getCarno()); + TaskDto taskDto = taskService.findByCode(inst.getTask_code()); + feedBackTaskStatusRequest.setTaskType(taskDto.getTask_type()); + feedBackTaskStatusRequest.setFeedbackStatus("applyTake"); + acsToWcsService.feedTaskStatus(feedBackTaskStatusRequest); + } else { - log.info("等待一体机进行放货确认,指令号{},设备号{},option值{}", inst,standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); + log.info("等待一体机进行放货确认,指令号{},设备号{},option值{}", inst, standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); logServer.deviceExecuteLog(this.device_code, "", "", "等待一体机进行放货确认,设备号" + device.getDevice_code() + ",指令号" + ikey); LuceneLogDto logDto = LuceneLogDto.builder() .device_code(standardOrdinarySiteDeviceDriver.getDevice_code()) @@ -316,6 +348,14 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); } + //反馈放货中 + FeedBackTaskStatusRequest feedBackTaskStatusRequest = new FeedBackTaskStatusRequest(); + feedBackTaskStatusRequest.setTaskCode(inst.getTask_code()); + feedBackTaskStatusRequest.setCarId(inst.getCarno()); + TaskDto taskDto = taskService.findByCode(inst.getTask_code()); + feedBackTaskStatusRequest.setTaskType(taskDto.getTask_type()); + feedBackTaskStatusRequest.setFeedbackStatus("puting"); + acsToWcsService.feedTaskStatus(feedBackTaskStatusRequest); } } @@ -370,7 +410,14 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic standardOrdinarySiteDeviceDriver.setAgvphase(phase); standardOrdinarySiteDeviceDriver.setIndex(index); standardOrdinarySiteDeviceDriver.setInst(inst); - + //反馈申请放货 + FeedBackTaskStatusRequest feedBackTaskStatusRequest = new FeedBackTaskStatusRequest(); + feedBackTaskStatusRequest.setTaskCode(inst.getTask_code()); + feedBackTaskStatusRequest.setCarId(inst.getCarno()); + TaskDto taskDto = taskService.findByCode(inst.getTask_code()); + feedBackTaskStatusRequest.setTaskType(taskDto.getTask_type()); + feedBackTaskStatusRequest.setFeedbackStatus("applyTake"); + acsToWcsService.feedTaskStatus(feedBackTaskStatusRequest); } else { data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); LuceneLogDto logDto = LuceneLogDto.builder() @@ -426,7 +473,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); //卸货确认 if (standardOrdinarySiteDeviceDriver.getOption() == 2) { - log.info("等待一体机进行卸货确认,指令号{},设备号{},option值{}", inst,standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); + log.info("等待一体机进行卸货确认,指令号{},设备号{},option值{}", inst, standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); LuceneLogDto logDto = LuceneLogDto.builder() .device_code(this.getDeviceCode()) @@ -435,8 +482,16 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); standardOrdinarySiteDeviceDriver.setOption(0); + //反馈放货完成 + FeedBackTaskStatusRequest feedBackTaskStatusRequest = new FeedBackTaskStatusRequest(); + feedBackTaskStatusRequest.setTaskCode(inst.getTask_code()); + feedBackTaskStatusRequest.setCarId(inst.getCarno()); + TaskDto taskDto = taskService.findByCode(inst.getTask_code()); + feedBackTaskStatusRequest.setTaskType(taskDto.getTask_type()); + feedBackTaskStatusRequest.setFeedbackStatus("applyTake"); + acsToWcsService.feedTaskStatus(feedBackTaskStatusRequest); } else { - log.info("等待一体机进行卸货确认,指令号{},设备号{},option值{}", inst,standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); + log.info("等待一体机进行卸货确认,指令号{},设备号{},option值{}", inst, standardOrdinarySiteDeviceDriver.getDevice_code(), standardOrdinarySiteDeviceDriver.getOption()); logServer.deviceExecuteLog(this.device_code, "", "", "等待一体机进行卸货确认,设备号" + device.getDevice_code() + ",指令号" + ikey); LuceneLogDto logDto = LuceneLogDto.builder() .device_code(standardOrdinarySiteDeviceDriver.getDevice_code()) @@ -446,9 +501,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic luceneExecuteLogService.deviceExecuteLog(logDto); } } - } - - else if (phase == 0x70) { + } else if (phase == 0x70) { //x坐标 x = ikey; LuceneLogDto logDto = LuceneLogDto.builder() @@ -494,6 +547,19 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic logDto.setLog_level(4); luceneExecuteLogService.deviceExecuteLog(logDto); + if (status == 6) { + //反馈异常 + if (inst != null) { + FeedBackTaskStatusRequest feedBackTaskStatusRequest = new FeedBackTaskStatusRequest(); + feedBackTaskStatusRequest.setTaskCode(inst.getTask_code()); + feedBackTaskStatusRequest.setCarId(inst.getCarno()); + TaskDto taskDto = taskService.findByCode(inst.getTask_code()); + feedBackTaskStatusRequest.setTaskType(taskDto.getTask_type()); + feedBackTaskStatusRequest.setFeedbackStatus("exception"); + acsToWcsService.feedTaskStatus(feedBackTaskStatusRequest); + } + } + if (status != last_status && status != 6 && status != 7) { boolean flag = true; JSONObject param = new JSONObject(); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/BaseRequest.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/BaseRequest.java new file mode 100644 index 0000000..6c547a7 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/BaseRequest.java @@ -0,0 +1,38 @@ +package org.nl.acs.ext.wms.data.WcsToAcsData; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +@Data +public class BaseRequest { + + /** + * 库编码 + */ + private String houseCode; + + /** + * 系统编号 + */ + private String systemCode; + + /** + * 扩展参数:砖型等 + */ + private JSONObject parameters; + + + /** + * 任务类型 + */ + private String taskType; + + + /** + * 任务号 + */ + private String taskCode; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/BaseResponse.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/BaseResponse.java new file mode 100644 index 0000000..f452d6c --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/BaseResponse.java @@ -0,0 +1,28 @@ +package org.nl.acs.ext.wms.data.WcsToAcsData; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.HashMap; +import java.util.Map; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BaseResponse { + /** + * 请求结果 + */ + private int responseCode; + + /** + * 信息 + */ + private String responseMessage; + + + private Map parameters = new HashMap(); +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/cancelTask/CancelTaskRequest.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/cancelTask/CancelTaskRequest.java new file mode 100644 index 0000000..7090c05 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/cancelTask/CancelTaskRequest.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask; + +import lombok.Data; +import org.nl.acs.ext.wms.data.WcsToAcsData.BaseRequest; + +@Data +public class CancelTaskRequest extends BaseRequest { + /** + * 作废原因 + */ + private String reason; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/cancelTask/CancelTaskResponse.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/cancelTask/CancelTaskResponse.java new file mode 100644 index 0000000..b289f90 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/cancelTask/CancelTaskResponse.java @@ -0,0 +1,8 @@ +package org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask; + +import lombok.Data; +import org.nl.acs.ext.wms.data.WcsToAcsData.BaseResponse; + +@Data +public class CancelTaskResponse extends BaseResponse { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/createTask/CreateTaskRequest.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/createTask/CreateTaskRequest.java new file mode 100644 index 0000000..fd3e000 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/createTask/CreateTaskRequest.java @@ -0,0 +1,44 @@ +package org.nl.acs.ext.wms.data.WcsToAcsData.createTask; + +import lombok.Data; +import org.nl.acs.ext.wms.data.WcsToAcsData.BaseRequest; + +import java.util.Date; + +@Data +public class CreateTaskRequest extends BaseRequest { + /** + * 任务下发时间 + */ + private Date taskCreateDateTime; + + /** + * 容器编号 + */ + private String containerCode; + + /** + * 容器类型 + */ + private String containerType; + + /** + * 任务起点 + */ + private String locationFrom; + + /** + * 任务终点 + */ + private String locationTo; + + /** + * 优先级 + */ + private Integer priority; + + /** + * 路由方案 + */ + String route_plan_code; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/createTask/CreateTaskResponse.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/createTask/CreateTaskResponse.java new file mode 100644 index 0000000..b3ba324 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/createTask/CreateTaskResponse.java @@ -0,0 +1,8 @@ +package org.nl.acs.ext.wms.data.WcsToAcsData.createTask; + +import lombok.Data; +import org.nl.acs.ext.wms.data.WcsToAcsData.BaseResponse; + +@Data +public class CreateTaskResponse extends BaseResponse { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/deviceStatus/DeviceStatusRequest.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/deviceStatus/DeviceStatusRequest.java new file mode 100644 index 0000000..d415c76 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/deviceStatus/DeviceStatusRequest.java @@ -0,0 +1,8 @@ +package org.nl.acs.ext.wms.data.WcsToAcsData.deviceStatus; + +import lombok.Data; +import org.nl.acs.ext.wms.data.WcsToAcsData.BaseRequest; + +@Data +public class DeviceStatusRequest extends BaseRequest { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/deviceStatus/DeviceStatusResponse.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/deviceStatus/DeviceStatusResponse.java new file mode 100644 index 0000000..4f4085b --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/deviceStatus/DeviceStatusResponse.java @@ -0,0 +1,11 @@ +package org.nl.acs.ext.wms.data.WcsToAcsData.deviceStatus; + +import lombok.Data; +import org.nl.acs.ext.wms.data.WcsToAcsData.BaseResponse; + +@Data +public class DeviceStatusResponse extends BaseResponse { + private int status; + private String statusDescription; + private Boolean hasGoods; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/feedBackTaskStatus/FeedBackTaskStatusRequest.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/feedBackTaskStatus/FeedBackTaskStatusRequest.java new file mode 100644 index 0000000..fe816ec --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/feedBackTaskStatus/FeedBackTaskStatusRequest.java @@ -0,0 +1,18 @@ +package org.nl.acs.ext.wms.data.WcsToAcsData.feedBackTaskStatus; + +import lombok.Data; +import org.nl.acs.ext.wms.data.WcsToAcsData.BaseRequest; + +@Data +public class FeedBackTaskStatusRequest extends BaseRequest { + /** + * 车号 + */ + private String carId; + + /** + * 任务反馈状态 taking:取货中 applyTake:申请取货 takeFinish:取货完成 puting:放货中 applyPut:申请放货 putFinish:放货完成 + * errorFinish:任务异常完成 exception:异常 deprecate:作废 + */ + private String feedbackStatus; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/feedBackTaskStatus/FeedBackTaskStatusResponse.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/feedBackTaskStatus/FeedBackTaskStatusResponse.java new file mode 100644 index 0000000..9b7ec4c --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WcsToAcsData/feedBackTaskStatus/FeedBackTaskStatusResponse.java @@ -0,0 +1,8 @@ +package org.nl.acs.ext.wms.data.WcsToAcsData.feedBackTaskStatus; + +import lombok.Data; +import org.nl.acs.ext.wms.data.WcsToAcsData.BaseResponse; + +@Data +public class FeedBackTaskStatusResponse extends BaseResponse { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWcsController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWcsController.java new file mode 100644 index 0000000..510eb6f --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWcsController.java @@ -0,0 +1,14 @@ +package org.nl.acs.ext.wms.rest; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/wcs") +@Slf4j +public class AcsToWcsController { + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WcsToAcsController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WcsToAcsController.java new file mode 100644 index 0000000..0bfed7f --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WcsToAcsController.java @@ -0,0 +1,33 @@ +package org.nl.acs.ext.wms.rest; + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask.CancelTaskRequest; +import org.nl.acs.ext.wms.service.WcsToAcsService; +import org.nl.common.logging.annotation.Log; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/wcs") +@Slf4j +public class WcsToAcsController { + private final WcsToAcsService wcsToAcsService; + + @PostMapping("/task") + @Log(value = "ACS接收WMS任务") + @SaIgnore + public ResponseEntity createFromWcs(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(wcsToAcsService.crateTask(whereJson), HttpStatus.OK); + } + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWcsService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWcsService.java new file mode 100644 index 0000000..f970568 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWcsService.java @@ -0,0 +1,32 @@ +package org.nl.acs.ext.wms.service; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask.CancelTaskRequest; +import org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask.CancelTaskResponse; +import org.nl.acs.ext.wms.data.WcsToAcsData.deviceStatus.DeviceStatusRequest; +import org.nl.acs.ext.wms.data.WcsToAcsData.deviceStatus.DeviceStatusResponse; +import org.nl.acs.ext.wms.data.WcsToAcsData.feedBackTaskStatus.FeedBackTaskStatusRequest; +import org.nl.acs.ext.wms.data.WcsToAcsData.feedBackTaskStatus.FeedBackTaskStatusResponse; + +import java.util.Map; + +public interface AcsToWcsService { + + /** + * ACS向WCS反馈任务状态 + * @param param + * @return + */ + Map feedTaskStatus(FeedBackTaskStatusRequest param); + + Map cancelTask(CancelTaskRequest param); + + /** + * 设备查询 + * + * + * @return Map + */ + Map checkDeviceStatus(JSONObject whereJson); +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WcsToAcsService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WcsToAcsService.java new file mode 100644 index 0000000..aab413d --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WcsToAcsService.java @@ -0,0 +1,15 @@ +package org.nl.acs.ext.wms.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask.CancelTaskRequest; +import org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask.CancelTaskResponse; +import org.nl.acs.ext.wms.data.WcsToAcsData.createTask.CreateTaskResponse; + +import java.util.List; +import java.util.Map; + +public interface WcsToAcsService { + + Map crateTask(JSONObject whereJson); + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWcsServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWcsServiceImpl.java new file mode 100644 index 0000000..5ee0542 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWcsServiceImpl.java @@ -0,0 +1,183 @@ +package org.nl.acs.ext.wms.service.impl; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.Header; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.yomahub.tlog.hutoolhttp.TLogHutoolhttpInterceptor; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.AcsConfig; +import org.nl.acs.address.service.AddressService; +import org.nl.acs.address.service.dto.AddressDto; +import org.nl.acs.ext.wms.data.ApplyPlugPullSitResponse; +import org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask.CancelTaskRequest; +import org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask.CancelTaskResponse; +import org.nl.acs.ext.wms.data.WcsToAcsData.deviceStatus.DeviceStatusRequest; +import org.nl.acs.ext.wms.data.WcsToAcsData.deviceStatus.DeviceStatusResponse; +import org.nl.acs.ext.wms.data.WcsToAcsData.feedBackTaskStatus.FeedBackTaskStatusRequest; +import org.nl.acs.ext.wms.data.WcsToAcsData.feedBackTaskStatus.FeedBackTaskStatusResponse; +import org.nl.acs.ext.wms.service.AcsToWcsService; +import org.nl.acs.log.service.DeviceExecuteLogService; +import org.nl.acs.task.service.TaskService; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; +import org.nl.system.service.param.ISysParamService; +import org.slf4j.MDC; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +@Service +@RequiredArgsConstructor +@Slf4j +public class AcsToWcsServiceImpl implements AcsToWcsService { + + @Autowired + ISysParamService paramService; + + @Autowired + AddressService addressService; + + @Autowired + TaskService taskService; + + @Autowired + DeviceExecuteLogService logServer; + + @Autowired + LuceneExecuteLogService luceneLogService; + + public String token; + + TLogHutoolhttpInterceptor tLogHutoolhttpInterceptor = new TLogHutoolhttpInterceptor(); + + + private String log_file_type = "log_file_type"; + private String log_type = "ACS请求LMS"; + + @Override + public Map feedTaskStatus(FeedBackTaskStatusRequest param) { + log.info("ACS向WCS反馈任务状态,请求参数{}", param); + String result = ""; + FeedBackTaskStatusResponse feedBackTaskStatusResponse = new FeedBackTaskStatusResponse(); + String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("feedTaskStatus"); + String methods_url = addressDto.getMethods_url(); + String url = wmsUrl + methods_url; + try { +// + result = HttpRequest.post(url) + .addInterceptor(tLogHutoolhttpInterceptor) + .header(Header.USER_AGENT, "Hutool http") + .body(JSON.toJSONString(param)) + .execute().body(); + JSONObject jsonObject = JSONObject.parseObject(result); + feedBackTaskStatusResponse = JSONObject.toJavaObject(jsonObject, FeedBackTaskStatusResponse.class); + LuceneLogDto luceneLogDto = new LuceneLogDto(4, "feedTaskStatus", String.valueOf(feedBackTaskStatusResponse.getResponseCode()), + JSON.toJSONString(param), String.valueOf(result), "ACS向WCS反馈任务状态"); + luceneLogService.interfaceExecuteLog(luceneLogDto); + return jsonObject; + } catch (Exception e) { + JSONObject jsonObject = JSONObject.parseObject(result); + log.info("ACS向WCS反馈任务状态----返回参数{}", e.getMessage()); + feedBackTaskStatusResponse = JSONObject.toJavaObject(jsonObject, FeedBackTaskStatusResponse.class); + LuceneLogDto luceneLogDto = new LuceneLogDto(4, "feedTaskStatus", String.valueOf(feedBackTaskStatusResponse.getResponseCode()), + JSON.toJSONString(param), + String.valueOf(result), "ACS向WCS反馈任务状态"); + luceneLogService.interfaceExecuteLog(luceneLogDto); + Map map = new HashMap<>(); + map.put("responseCode", 1); + map.put("responseMessage", e.getMessage()); + map.put("parameters", new HashMap<>()); + return map; + } + } + + @Override + public Map cancelTask(CancelTaskRequest param) { + log.info("ACS向WCS申请取消任务,请求参数{}", param); + String result = ""; + CancelTaskResponse cancelTaskResponse = new CancelTaskResponse(); + String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("cancelTask"); + String methods_url = addressDto.getMethods_url(); + String url = wmsUrl + methods_url; + try { +// + result = HttpRequest.post(url) + .addInterceptor(tLogHutoolhttpInterceptor) + .header(Header.USER_AGENT, "Hutool http") + .body(JSON.toJSONString(param)) + .execute().body(); + JSONObject jsonObject = JSONObject.parseObject(result); + cancelTaskResponse = JSONObject.toJavaObject(jsonObject, CancelTaskResponse.class); + LuceneLogDto luceneLogDto = new LuceneLogDto(4, "cancelTask", String.valueOf(cancelTaskResponse.getResponseCode()), + JSON.toJSONString(param), String.valueOf(result), "ACS向WCS申请取消任务"); + luceneLogService.interfaceExecuteLog(luceneLogDto); + return jsonObject; + } catch (Exception e) { + JSONObject jsonObject = JSONObject.parseObject(result); + log.info("ACS向WCS申请取消任务----返回参数{}", e.getMessage()); + cancelTaskResponse = JSONObject.toJavaObject(jsonObject, CancelTaskResponse.class); + LuceneLogDto luceneLogDto = new LuceneLogDto(4, "feedTaskStatus", String.valueOf(cancelTaskResponse.getResponseCode()), + JSON.toJSONString(param), + String.valueOf(result), "ACS向WCS申请取消任务"); + luceneLogService.interfaceExecuteLog(luceneLogDto); + Map map = new HashMap<>(); + map.put("responseCode", 1); + map.put("responseMessage", e.getMessage()); + map.put("parameters", new HashMap<>()); + return map; + } + } + + + @Override + public Map checkDeviceStatus(JSONObject whereJson) { + Map map = new HashMap<>(); + String result = null; + AddressDto addressDto = addressService.findByCode("checkDeviceStatus"); + String wcsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + String methods_url = addressDto.getMethods_url(); + String url = wcsurl + methods_url; + String deviceCode = MapUtil.getStr(whereJson, "deviceCode"); + if (StrUtil.isEmpty(deviceCode)) { + map.put("responseCode", 1); + map.put("responseMessage", "请求设备号不能为空!"); + map.put("parameters", new HashMap<>()); + return map; + } + try { + result = HttpRequest.post(url) + .addInterceptor(tLogHutoolhttpInterceptor) + .header(Header.USER_AGENT, "Hutool http") + .body(JSON.toJSONString(whereJson)) + .execute().body(); + JSONObject jsonObject = JSONObject.parseObject(result); + LuceneLogDto luceneLogDto = new LuceneLogDto(4, "checkDeviceStatus", String.valueOf(jsonObject.get("responseCode")), + JSON.toJSONString(jsonObject), String.valueOf(result), "ACS向WCS反馈设备状态"); + luceneLogService.interfaceExecuteLog(luceneLogDto); + log.info("checkDeviceStatus-----输出参数{}", jsonObject.toString()); + return jsonObject; + } catch (Exception e) { + JSONObject jsonObject = JSONObject.parseObject(result); + log.info("ACS向WCS反馈设备状态----返回参数{}", e.getMessage()); + LuceneLogDto luceneLogDto = new LuceneLogDto(4, "feedBackDeviceStatus", String.valueOf(jsonObject.get("responseCode")), + JSON.toJSONString(whereJson), + String.valueOf(result), "ACS向WCS反馈设备状态"); + luceneLogService.interfaceExecuteLog(luceneLogDto); + Map map1 = new HashMap<>(); + map1.put("responseCode", 1); + map1.put("responseMessage", e.getMessage()); + map1.put("parameters", new HashMap<>()); + return map1; + } + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WcsToAcsServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WcsToAcsServiceImpl.java new file mode 100644 index 0000000..1ad3952 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WcsToAcsServiceImpl.java @@ -0,0 +1,208 @@ +package org.nl.acs.ext.wms.service.impl; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.ext.wms.data.JsonUtl; +import org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask.CancelTaskRequest; +import org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask.CancelTaskResponse; +import org.nl.acs.ext.wms.data.WcsToAcsData.createTask.CreateTaskRequest; +import org.nl.acs.ext.wms.data.WcsToAcsData.createTask.CreateTaskResponse; +import org.nl.acs.ext.wms.data.WcsToAcsData.deviceStatus.DeviceStatusResponse; +import org.nl.acs.ext.wms.service.AcsToWcsService; +import org.nl.acs.ext.wms.service.WcsToAcsService; +import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.route.service.RouteLineService; +import org.nl.acs.route.service.dto.RouteLineDto; +import org.nl.acs.storage_cell.domain.StorageCell; +import org.nl.acs.storage_cell.service.mapper.StorageCellMapper; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; +import org.slf4j.MDC; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@RequiredArgsConstructor +@Slf4j +public class WcsToAcsServiceImpl implements WcsToAcsService { + + @Autowired + private StorageCellMapper storageCellMapper; + + @Autowired + private DeviceAppService deviceAppService; + + @Autowired + private TaskService taskserver; + + @Autowired + private AcsToWcsService acsToWcsService; + + @Autowired + private LuceneExecuteLogService luceneExecuteLogService; + + @Autowired + RouteLineService routeLineService; + + @Override + public Map crateTask(JSONObject whereJson) { + + Map map = new HashMap<>(); + log.info("taskCreate--------------:输入参数:" + whereJson.toString()); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code("ACS接收WMS任务") + .content("ACS接收WMS任务-----输入参数:" + whereJson) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + //获取甲方wcs传过来的参数 + String houseCode = whereJson.getString("houseCode"); + String systemCode = whereJson.getString("systemCode"); + JSONObject parameters = whereJson.getJSONObject("parameters"); + String taskCode = whereJson.getString("taskCode"); + String taskType = whereJson.getString("taskType"); + String taskCreateDatetime = whereJson.getString("taskCreateDatetime"); + String containerCode = whereJson.getString("containerCode"); + String containerType = whereJson.getString("containerType"); + String start_point_code = whereJson.getString("locationFrom"); + String next_point_code = whereJson.getString("locationTo"); + String priority = whereJson.getString("priority"); + String start_device_code = ""; + String next_device_code = ""; + //判断必填项是否为空 + if (StrUtil.isEmpty(taskCode)) { + map.put("responseCode", 1); + map.put("responseMessage", "任务号不能为空"); + return map; + } + if (StrUtil.isEmpty(start_point_code)) { + map.put("responseCode", 1); + map.put("responseMessage", "起点不能为空"); + return map; + } + if (StrUtil.isEmpty(next_point_code)) { + map.put("responseCode", 1); + map.put("responseMessage", "终点不能为空"); + return map; + } + if (StrUtil.isEmpty(containerCode)) { + map.put("responseCode", 1); + map.put("responseMessage", "容器编号不能为空"); + return map; + } + JSONObject jsonObject = new JSONObject(); + jsonObject.put("deviceCode", start_point_code); + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("deviceCode", next_point_code); + + Map feedback = acsToWcsService.checkDeviceStatus(jsonObject); + Map feedback1 = acsToWcsService.checkDeviceStatus(jsonObject1); + int responseCode = Integer.parseInt(String.valueOf(feedback.get("responseCode"))); + int responseCode1 = Integer.parseInt(String.valueOf(feedback1.get("responseCode"))); + String fromStatus = String.valueOf(feedback.get("status")); + String toStatus = String.valueOf(feedback1.get("status")); + Boolean fromHasGoods = (Boolean) feedback.get("hasGoods"); + Boolean toHasGoods = (Boolean) feedback1.get("hasGoods"); + + + if (responseCode == 0 && responseCode1 == 0){ + if (fromStatus.equals("0") && toStatus.equals("0")){ + if (fromHasGoods && !toHasGoods){ + log.info("起点设备有货,终点设备无货"); + }else { + map.put("responseCode", 1); + map.put("responseMessage", "起点和终点设备状态异常,请检查起点和终点设备状态!"); + return map; + } + }else { + map.put("responseCode", 1); + map.put("responseMessage", "设备状态异常,请检查起点和终点设备状态!"); + return map; + } + }else { + map.put("responseCode", 1); + map.put("responseMessage", "请求结果代码不为0"); + return map; + } + + + if (start_point_code.indexOf("-") > 0) { + String str[] = start_point_code.split("-"); + start_device_code = str[0]; + } else { + start_device_code = start_point_code; + } + + if (next_point_code.indexOf("-") > 0) { + String str[] = next_point_code.split("-"); + next_device_code = str[0]; + } else { + next_device_code = next_point_code; + } + + //查询wcs传过来的起点终点路由 + List list = routeLineService.getShortPathLines(start_device_code, next_device_code, "normal"); + if (ObjectUtil.isEmpty(list)) { + map.put("responseCode", 1); + map.put("responseMessage", "路由不通!"); + return map; + } + //查询任务编码是否重复 + TaskDto taskDto = taskserver.findByCodeFromCache(taskCode); + if (taskDto != null) { + map.put("responseCode", 1); + map.put("responseMessage", "不能存在相同的任务号!"); + return map; + } + //判断载具编码是否相同 + if (!StrUtil.isEmpty(containerCode)) { + TaskDto vehicle_dto = taskserver.findByContainer(containerCode); + if (vehicle_dto != null) { + map.put("responseCode", 1); + map.put("responseMessage", "已存在该容器号的任务!"); + return map; + } + } + + JSONObject jo = new JSONObject(); + jo.put("task_code", taskCode); + jo.put("start_point_code", start_point_code); + jo.put("next_point_code", next_point_code); + jo.put("start_parent_code", start_point_code); + jo.put("next_parent_code", next_point_code); + jo.put("start_device_code", start_device_code); + jo.put("next_device_code", next_device_code); + jo.put("priority", priority); + jo.put("vehicle_code", containerCode); + jo.put("vehicle_type", containerType); + jo.put("create_time", taskCreateDatetime); + jo.put("task_type", taskType); + TaskDto task_dto = (TaskDto) JSONObject.parseObject(String.valueOf(jo), TaskDto.class); + try { + taskserver.create(task_dto); + } catch (Exception e) { + e.printStackTrace(); + map.put("responseCode", 1); + map.put("responseMessage", e.getMessage()); + return map; + } + map.put("responseCode", 0); + map.put("responseMessage", "创建任务成功!"); + map.put("parameters", new HashMap<>()); + return map; + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/domain/Task.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/domain/Task.java index 8f0f7fa..8483486 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/domain/Task.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/domain/Task.java @@ -19,6 +19,7 @@ import cn.hutool.core.bean.copier.CopyOptions; import javax.validation.constraints.*; import java.math.BigDecimal; import java.io.Serializable; +import java.util.Date; /** * @author jiaolm @@ -255,6 +256,31 @@ public class Task extends CommonModel implements Serializable { */ private String class_type; + /** + * 库编码 + */ + private String house_code; + + /** + * 系统编号 + */ + private String system_code; + + /** + * 任务下发时间 + */ + private String task_create_date_time; + + /** + * 容器编号 + */ + private String container_code; + + /** + * 容器类型 + */ + private String container_type; + public void copyFrom(Task source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java index bd6585b..b4fac0c 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java @@ -5,6 +5,7 @@ import lombok.Data; import org.nl.acs.common.base.CommonFinalParam; import java.io.Serializable; +import java.util.Date; /** * @author ldjun @@ -365,4 +366,29 @@ public class TaskDto implements Serializable { * 15 RGV输送任务 */ private String class_type; + + /** + * 库编码 + */ + private String house_code; + + /** + * 系统编号 + */ + private String system_code; + + /** + * 任务下发时间 + */ + private String task_create_date_time; + + /** + * 容器编号 + */ + private String container_code; + + /** + * 容器类型 + */ + private String container_type; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 364a20e..5309bda 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -30,6 +30,10 @@ import org.nl.acs.device.service.impl.DeviceServiceImpl; import org.nl.acs.device_driver.DeviceDriverDefination; import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.storage.standard_storage.StandardStorageDeviceDriver; +import org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask.CancelTaskRequest; +import org.nl.acs.ext.wms.data.WcsToAcsData.cancelTask.CancelTaskResponse; +import org.nl.acs.ext.wms.data.WcsToAcsData.feedBackTaskStatus.FeedBackTaskStatusRequest; +import org.nl.acs.ext.wms.service.AcsToWcsService; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.domain.InstructionMybatis; @@ -61,6 +65,8 @@ import org.nl.acs.task.service.dto.TaskQueryParam; import org.nl.acs.task.service.mapper.TaskMapper; import org.nl.common.utils.SecurityUtils; import org.nl.config.language.LangProcess; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; import org.nl.system.service.param.ISysParamService; import org.nl.common.utils.CodeUtil; @@ -111,6 +117,10 @@ public class TaskServiceImpl extends CommonServiceImpl impleme private DeviceAssignedService deviceAssignedService; @Autowired private InstructionService instructionService; + @Autowired + private AcsToWcsService acsToWcsService; + @Autowired + private LuceneExecuteLogService luceneExecuteLogService; /** * 缓存 @@ -537,13 +547,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme @Override public void create(TaskDto dto) throws Exception { dto = foramte(dto); - dto.setInteraction_json(ObjectUtil.isNotEmpty(dto.getInteractionJson()) ? dto.getInteractionJson().toJSONString() : ""); - if (!StrUtil.isEmpty(dto.getVehicle_code())) { - TaskDto vehicle_dto = this.findByContainer(dto.getVehicle_code()); - if (vehicle_dto != null) { - throw new BadRequestException(LangProcess.msg("task_checkExist", dto.getVehicle_code())); - } - } String currentUsername = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); String task_uuid = dto.getTask_id(); @@ -551,14 +554,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme dto.setTask_id(IdUtil.simpleUUID()); } String task_code = dto.getTask_code(); - if (StrUtil.isEmpty(dto.getCar_no())) { - if ((dto.getStart_device_code().equals("A3") && dto.getNext_device_code().equals("A2")) || (dto.getStart_device_code().equals("A3") && dto.getNext_device_code().equals("A1"))) { - dto.setCar_no("2"); - } - if (dto.getStart_device_code().equals("A3") && dto.getNext_device_code().equals("A4")) { - dto.setCar_no("1"); - } - } if (StrUtil.isEmpty(task_code)) { task_code = CodeUtil.getNewCode("TASK_NO"); task_code = CommonFinalParam.HYPHEN_ + task_code; @@ -879,6 +874,16 @@ public class TaskServiceImpl extends CommonServiceImpl impleme Task task = ConvertUtil.convert(entity, Task.class); taskMapper.updateById(task); + + //反馈放货完成 + FeedBackTaskStatusRequest feedBackTaskStatusRequest = new FeedBackTaskStatusRequest(); + feedBackTaskStatusRequest.setTaskCode(task.getTask_code()); + feedBackTaskStatusRequest.setCarId(task.getCar_no()); + feedBackTaskStatusRequest.setTaskType(task.getTask_type()); + feedBackTaskStatusRequest.setFeedbackStatus("deprecate"); + acsToWcsService.feedTaskStatus(feedBackTaskStatusRequest); + //ACS向WCS申请取消任务 + this.cancelTask(entity); //移除任务缓存信息 this.removeByCodeFromCache(entity.getTask_code()); //反馈上位系统任务状态 @@ -889,6 +894,20 @@ public class TaskServiceImpl extends CommonServiceImpl impleme } } + private void cancelTask(TaskDto entity) { + TaskDto dto = this.findById(entity.getTask_id()); + CancelTaskRequest cancelTaskRequest = new CancelTaskRequest(); + cancelTaskRequest.setTaskCode(dto.getTask_code()); + cancelTaskRequest.setReason("手动取消"); + Map cancelTask = acsToWcsService.cancelTask(cancelTaskRequest); + int responseCode = Integer.parseInt(String.valueOf(cancelTask.get("responseCode"))); + if (responseCode == 0){ + LuceneLogDto luceneLogDto = new LuceneLogDto(4, "cancelTask", String.valueOf(responseCode), + JSON.toJSONString(cancelTaskRequest), String.valueOf(cancelTask), "ACS向WCS申请取消任务成功"); + luceneExecuteLogService.interfaceExecuteLog(luceneLogDto); + } + } + @Override @Transactional(rollbackFor = Exception.class) public void cancelAndInst(String id) throws Exception { diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/log/ACSToWCS.xml b/acs2/nladmin-system/nlsso-server/src/main/resources/log/ACSToWCS.xml new file mode 100644 index 0000000..5c279f9 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/log/ACSToWCS.xml @@ -0,0 +1,29 @@ + + + + + + + + + ${LOG_HOME}/ACS请求WCS/%d{yyyy-MM-dd}.%i.log + + 15 + + 50MB + + 2GB + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + ${log.charset} + + + + + + + + + diff --git a/acs2/nladmin-system/nlsso-server/src/main/resources/log/WCSToACS.xml b/acs2/nladmin-system/nlsso-server/src/main/resources/log/WCSToACS.xml new file mode 100644 index 0000000..3f589f1 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/resources/log/WCSToACS.xml @@ -0,0 +1,29 @@ + + + + + + + + + ${LOG_HOME}/WCS下发ACS/%d{yyyy-MM-dd}.%i.log + + 15 + + 50MB + + 2GB + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + ${log.charset} + + + + + + + + +