diff --git a/shkj-admin/pom.xml b/shkj-admin/pom.xml
index fb520ba..2410141 100644
--- a/shkj-admin/pom.xml
+++ b/shkj-admin/pom.xml
@@ -34,6 +34,12 @@
spring-boot-starter-test
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
diff --git a/shkj-admin/src/main/resources/application-yun.yml b/shkj-admin/src/main/resources/application-yun.yml
index 79ad1ad..fe67a02 100644
--- a/shkj-admin/src/main/resources/application-yun.yml
+++ b/shkj-admin/src/main/resources/application-yun.yml
@@ -92,9 +92,13 @@ third:
wcsIncomingTaskRequestUrl: http://58.214.39.42:5000/api/toWzWcs/wcsIncomingTaskRequest
uploadWCSTaskStatusUrl: http://58.214.39.42:5000/api/toWzWcs/uploadWCSTaskStatus
# agv接口
- agvCreateTaskUrl: http://127.0.0.1:8081/rest/common/createTask
+ agvCreateTaskUrl: http://127.0.0.1:8081/rcs/rtas/api/robot/controller/task/submit
agvStatesUrl: http://127.0.0.1:8081/api/robot/controller/robot/query
- agvCancelTaskUrl: http://127.0.0.1:8081/rest/common/cancelTask
+ agvCancelTaskUrl: http://127.0.0.1:8081/rcs/rtas/api/robot/controller/task/cancel
queryAckByTaskUrl: http://127.0.0.1:8081/rest/common/queryAckByTaskId
-
+plc:
+ host: 192.168.1.10
+ rack: 0
+ slot: 1
+ db-number: 5200
diff --git a/shkj-admin/src/main/resources/logback.xml b/shkj-admin/src/main/resources/logback.xml
index 3f9e265..9ad18ff 100644
--- a/shkj-admin/src/main/resources/logback.xml
+++ b/shkj-admin/src/main/resources/logback.xml
@@ -8,7 +8,7 @@
logback
-
+
diff --git a/shkj-admin/src/test/java/com/shkj/test.java b/shkj-admin/src/test/java/com/shkj/test.java
deleted file mode 100644
index bb36936..0000000
--- a/shkj-admin/src/test/java/com/shkj/test.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.shkj;
-
-import com.shkj.plc.sdk.device.PLCReadAndWrite;
-import com.shkj.wms.service.IBusinOutInPlanService;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import static java.util.concurrent.Executors.newScheduledThreadPool;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = ShkjApplication.class)
-@Slf4j
-public class test {
- @Autowired
- IBusinOutInPlanService iBusinOutInPlanService;
-
- @Autowired
- PLCReadAndWrite plcReadAndWrite;
-
- ScheduledExecutorService executor = newScheduledThreadPool(4);
-
- @Test
- public void test() {
- iBusinOutInPlanService.getOrderNoByContainerCode("10000171", "in");
- }
-
-
-
-
- @Test
- public void test2(){
-
- executor.scheduleWithFixedDelay(new Runnable() {
-
- public void run() {
- System.out.println("====");
- /* try {
- int i = 1 / 0;
- } catch (Exception e) {
- e.printStackTrace();
- }*/
-
- try {
- Thread.sleep(10000);
- System.out.println("执行完毕");
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- }
- }, 1000, 3000, TimeUnit.MILLISECONDS);
- }
-
-
- @Test
- public void test3(){
- executor.scheduleAtFixedRate(new Runnable() {
-
- public void run() {
- System.out.println("====");
- try {
- Thread.sleep(10000);//此地方可以试下把try catch去掉,任务就会停掉
- System.out.println("执行完毕");
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }, 1000, 3000, TimeUnit.MILLISECONDS);
- }
-}
diff --git a/shkj-common/src/main/java/com/shkj/common/core/domain/Result.java b/shkj-common/src/main/java/com/shkj/common/core/domain/Result.java
index 8ef3c9d..330be53 100644
--- a/shkj-common/src/main/java/com/shkj/common/core/domain/Result.java
+++ b/shkj-common/src/main/java/com/shkj/common/core/domain/Result.java
@@ -117,4 +117,11 @@ public class Result implements Serializable {
return false;
}
+ public static Boolean isOk(int code) {
+ if (code == Result.ok().getCode()) {
+ return true;
+ }
+ return false;
+ }
+
}
diff --git a/shkj-wms/pom.xml b/shkj-wms/pom.xml
index cc1eb7f..a7bfc4a 100644
--- a/shkj-wms/pom.xml
+++ b/shkj-wms/pom.xml
@@ -6,7 +6,7 @@
shkj
com.shkj
3.8.1
-
+ org.apache.maven.pluginsmaven-compiler-plugin88
4.0.0
shkj-wms
@@ -117,6 +117,19 @@
spring-aspects
5.3.23
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+
+ org.hibernate.validator
+ hibernate-validator
+ 6.0.17.Final
+ compile
+
+
@@ -124,6 +137,14 @@
plc-sdk
1.0-SNAPSHOT
+
+
+ com.github.s7connector
+ s7connector
+ 2.1
+
+
+
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/bo/AGVFeedbackBo.java b/shkj-wms/src/main/java/com/shkj/wcs/bo/AGVFeedbackBo.java
new file mode 100644
index 0000000..41e02b7
--- /dev/null
+++ b/shkj-wms/src/main/java/com/shkj/wcs/bo/AGVFeedbackBo.java
@@ -0,0 +1,27 @@
+package com.shkj.wcs.bo;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class AGVFeedbackBo {
+
+ /**
+ * 任务号
+ */
+ @NotBlank()
+ private String robotTaskCode;
+
+ /**
+ * 当前执行任务的机器人唯一标识
+ */
+ private String singleRobotCode;
+
+ private ExtraData extra;
+
+}
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/bo/ExtraData.java b/shkj-wms/src/main/java/com/shkj/wcs/bo/ExtraData.java
new file mode 100644
index 0000000..c3d3e0f
--- /dev/null
+++ b/shkj-wms/src/main/java/com/shkj/wcs/bo/ExtraData.java
@@ -0,0 +1,75 @@
+package com.shkj.wcs.bo;
+
+import lombok.Data;
+
+@Data
+public class ExtraData {
+
+ private String async;
+ private Values values;
+
+ @Data
+ public static class Values {
+ /**
+ * 地图编号
+ */
+ private String mapCode;
+ /**
+ * 上报的方法名
+ */
+ private String method;
+ /**
+ * 载具编号
+ */
+ private String carrierCode;
+ /**
+ * 载具名称
+ */
+ private String carrierName;
+ /**
+ * 载具类型
+ */
+ private String carrierType;
+ /**
+ * 载具种类
+ */
+ private String carrierCategory;
+ /**
+ * 载具角度
+ */
+ private String carrierDir;
+ /**
+ * 当前站点编号
+ */
+ private String slotCode;
+ /**
+ * 站点别名
+ */
+ private String slotName;
+ /**
+ * 存储类型
+ */
+ private String slotCategory;
+ /**
+ * 机器人当前位置x坐标
+ */
+ private String x;
+ /**
+ * 机器人当前位置y坐标
+ */
+ private String y;
+ /**
+ * 机器人种类
+ */
+ private String amrCategory;
+ /**
+ * 机器人类型
+ */
+ private String amrType;
+ /**
+ * 区域编号
+ */
+ private String zoneCode;
+
+ }
+}
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/controller/busin/AgvTaskContorller.java b/shkj-wms/src/main/java/com/shkj/wcs/controller/busin/AgvTaskContorller.java
index fc4d098..7815341 100644
--- a/shkj-wms/src/main/java/com/shkj/wcs/controller/busin/AgvTaskContorller.java
+++ b/shkj-wms/src/main/java/com/shkj/wcs/controller/busin/AgvTaskContorller.java
@@ -1,35 +1,90 @@
package com.shkj.wcs.controller.busin;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.shkj.common.annotation.Log;
import com.shkj.common.annotation.RepeatSubmit;
+import com.shkj.common.core.domain.Result;
import com.shkj.common.enums.BusinessType;
+import com.shkj.common.utils.DateUtils;
+import com.shkj.wcs.bo.AGVFeedbackBo;
+import com.shkj.wcs.bo.ExtraData;
import com.shkj.wcs.bo.WcsRequestBo;
+import com.shkj.wcs.domain.BusinDataTask;
+import com.shkj.wcs.service.IBusinDataTaskService;
+import com.shkj.wcs.third.rcs.RCSUtil;
+import com.shkj.wcs.third.rcs.dto.RcsCreateTaskDto;
+import com.shkj.wcs.third.rcs.vo.RcsResponseVo;
+import com.shkj.wcs.third.workbinWcs.WCSUtil;
+import com.shkj.wcs.third.workbinWcs.dto.UploadWCSTaskStatusBody;
+import com.shkj.wcs.third.workbinWcs.dto.UploadWCSTaskStatusDto;
+import com.shkj.wcs.third.workbinWcs.dto.WcsCreateTaskHeader;
import com.shkj.wcs.vo.QueryAreaStatusVo;
import com.shkj.wcs.vo.WcsResponseVo;
+import com.shkj.wms.enums.TaskStatusEnum;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.exceptions.TooManyResultsException;
+import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
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.ArrayList;
+import java.util.Date;
import java.util.List;
+@Slf4j
@RequiredArgsConstructor(onConstructor_ =@Autowired)
@RestController
@RequestMapping("/agvapi")
public class AgvTaskContorller {
+ @Autowired
+ private RCSUtil rcsUtil;
+
+ @Autowired
+ private IBusinDataTaskService iBusinDataTaskService;
+ @Autowired
+ private WCSUtil wcsUtil;
+
/**
- * 执行task
+ * 查询每个库区状态
*/
@Log(title = "查询每个库区状态",businessType = BusinessType.UPDATE)
@PostMapping("/toKjWcs/queryAreaStatus")
@RepeatSubmit
- public WcsResponseVo queryAreaStatus(WcsRequestBo wcsRequestBo){
+ public WcsResponseVo queryAreaStatus(@RequestBody WcsRequestBo wcsRequestBo){
// 请求agv接口...
List areaStatusVos = new ArrayList<>();
return WcsResponseVo.success(areaStatusVos);
}
+
+ /**
+ * 下发任务
+ */
+
+ @Log(title = "下发任务测试接口",businessType = BusinessType.UPDATE)
+ @PostMapping("/toAgv/rcsCreateTask")
+ @RepeatSubmit
+ public Result rcsCreateTask(@RequestBody RcsCreateTaskDto rcsCreateTaskDto){
+ // 请求agv接口...
+
+ return rcsUtil.rcsCreateTask(rcsCreateTaskDto);
+ }
+
+ /**
+ * 任务执行过程回馈接口
+ */
+
+ @Log(title = "任务执行过程回馈接口",businessType = BusinessType.UPDATE)
+ @PostMapping("/toKjWcs/rcsFeedbackTask")
+ @RepeatSubmit
+ public RcsResponseVo rcsFeedbackTask(@RequestBody AGVFeedbackBo bo){
+ return iBusinDataTaskService.rcsFeedbackTask(bo);
+ }
+
}
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/controller/busin/WcsTaskController.java b/shkj-wms/src/main/java/com/shkj/wcs/controller/busin/WcsTaskController.java
index bca9653..e60a7cb 100644
--- a/shkj-wms/src/main/java/com/shkj/wcs/controller/busin/WcsTaskController.java
+++ b/shkj-wms/src/main/java/com/shkj/wcs/controller/busin/WcsTaskController.java
@@ -1,5 +1,6 @@
package com.shkj.wcs.controller.busin;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.shkj.common.annotation.Log;
import com.shkj.common.annotation.RepeatSubmit;
@@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
@@ -48,7 +50,7 @@ public class WcsTaskController {
*/
@PostMapping("/toKjWcs/commonApi")
@RepeatSubmit
- public WcsResponseVo commonApi(@RequestBody WcsCreateTaskDto bo) {
+ public WcsResponseVo commonApi(@Valid @RequestBody WcsCreateTaskDto bo) {
return iBusinDataTaskService.doTaskGeneratePickTask(bo);
}
@@ -66,22 +68,18 @@ public class WcsTaskController {
@PostMapping("/toKjWcs/queryAreaStatus")
@RepeatSubmit
public WcsResponseVo queryAreaStatus(@RequestBody WCSQueryAreaStatusDto dto) {
- //调用plc接口 暂时不用
- WCSQueryAreaStatusDto wcsQueryAreaStatusDto = new WCSQueryAreaStatusDto();
+ //测试使用
List areaStatusBodyList = new ArrayList<>();
String[] areaCodes = {"SC-A2", "SC-B2", "SC-C2", "SC-D2"};
-
int[] statusValues = {0, 1, 1, 1};
-
for (int i = 0; i < 4; i++) {
WCSQueryAreaStatusBody queryAreaStatusBody = new WCSQueryAreaStatusBody();
queryAreaStatusBody.setAreaInLocation(areaCodes[i]);
queryAreaStatusBody.setStatus(statusValues[i]);
areaStatusBodyList.add(queryAreaStatusBody);
}
-
- wcsQueryAreaStatusDto.setBody(areaStatusBodyList);
- return WcsResponseVo.success(wcsQueryAreaStatusDto);
+ log.info("查询结果及返回结果:"+ JSONObject.toJSONString(areaStatusBodyList));
+ return WcsResponseVo.success(areaStatusBodyList);
}
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/domain/BusinDataTask.java b/shkj-wms/src/main/java/com/shkj/wcs/domain/BusinDataTask.java
index e286bc8..cbdd52a 100644
--- a/shkj-wms/src/main/java/com/shkj/wcs/domain/BusinDataTask.java
+++ b/shkj-wms/src/main/java/com/shkj/wcs/domain/BusinDataTask.java
@@ -167,4 +167,10 @@ public class BusinDataTask implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+7")
private Date updateTime;
+ /**
+ * 实际放货位置
+ */
+ private String destination;
+
+
}
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/domain/PlcProperties.java b/shkj-wms/src/main/java/com/shkj/wcs/domain/PlcProperties.java
new file mode 100644
index 0000000..09bae90
--- /dev/null
+++ b/shkj-wms/src/main/java/com/shkj/wcs/domain/PlcProperties.java
@@ -0,0 +1,16 @@
+package com.shkj.wcs.domain;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Component
+@ConfigurationProperties(prefix = "plc")
+@Data
+public class PlcProperties {
+ private String host;
+ private int rack;
+ private int slot;
+ private int dbNumber;
+
+}
\ No newline at end of file
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcEventTask.java b/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcEventTask.java
index 9bc5c1e..a9a106e 100644
--- a/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcEventTask.java
+++ b/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcEventTask.java
@@ -1,6 +1,8 @@
package com.shkj.wcs.plc;
import com.shkj.common.constant.RedisConstant;
+import com.shkj.common.core.domain.Result;
+import com.shkj.common.enums.BusinessType;
import com.shkj.plc.sdk.device.PlcOperate;
import com.shkj.system.service.ISysParameterService;
import com.shkj.wcs.bo.WcsPlcConnectQueryBo;
@@ -10,8 +12,16 @@ import com.shkj.wcs.mapper.WcsPlcConnectMapper;
import com.shkj.wcs.service.IWcsPlcConnectService;
import com.shkj.wcs.service.IWcsPlcPropertyService;
import com.shkj.wcs.third.rcs.RCSUtil;
+import com.shkj.wcs.third.workbinWcs.WCSUtil;
+import com.shkj.wcs.third.workbinWcs.dto.WCSQueryTaskStatusBody;
+import com.shkj.wcs.third.workbinWcs.dto.WcsIncomingTaskRequestBody;
+import com.shkj.wcs.vo.TaskStatusBody;
import com.shkj.wcs.vo.WcsPlcConnectVo;
+import com.shkj.wcs.vo.WcsResponseVo;
+import com.shkj.wms.enums.BusinTaskTypeEnum;
+import com.shkj.wms.enums.TaskTypeEnum;
import com.shkj.wms.utils.JsonUtil;
+import com.shkj.wms.vo.PlanOrderLocationVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@@ -22,6 +32,7 @@ import java.util.*;
import java.util.concurrent.*;
import com.shkj.plc.sdk.device.PLCReadAndWrite;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@@ -52,7 +63,10 @@ public class PlcEventTask {
@Autowired
PlcInit plcInit;
- //@Scheduled(fixedDelay = 5000)
+ @Autowired
+ WCSUtil wcsUtil;
+
+ @Scheduled(fixedDelay = 5000)
public void init() {
//查询需要连接的PLC,初始化连接对象
List plcList =(List) redisTemplate.opsForValue().get(RedisConstant.redisPlcListConnect);
@@ -74,13 +88,13 @@ public class PlcEventTask {
//输送线心跳
- //@Scheduled(fixedDelay = 4000)
+ @Scheduled(fixedDelay = 4000)
public void writePlcheartbeatDps() {
//根据连接的plcId获取属性
PlcOperate plcOperate = plcInit.getPlcOperate_dps();
PLCReadAndWrite plcReadAndWrite = new PLCReadAndWrite();
Map readPointMap = new HashMap<>();
- String heartbeat = "DB320.0.0";
+ String heartbeat = "DB5100";
readPointMap.put(heartbeat, "Boolean");
Map pointMap = plcReadAndWrite.readPlcData(plcOperate, JsonUtil.toJSONString(readPointMap));
@@ -143,8 +157,7 @@ public class PlcEventTask {
if (propertyList == null || propertyList.size() == 0) {
propertyList = iWcsPlcPropertyService.getWcsPlcPropertyByPlcId(plcId);
}
- //任务ID
- Long taskId = 0L;
+
// 设备类型:2输送线 1 堆垛机
switch (conn.getDevType()) {
//输送线
@@ -159,169 +172,269 @@ public class PlcEventTask {
public void dpsRealTimeTask(List propertyList, Map pointMap, PLCReadAndWrite plcReadAndWrite, PlcOperate plcOperate) {
try {
- } catch (Exception e) {
- log.error("dpsRealTimeTask:" + e.getMessage());
- }
- }
-
- /**
- * 输送线请求入库
- *
- * @param taskId
- * @return
- */
- public Boolean dpsTask(Long taskId, Integer reqLayer) {
-
- //下发任务时,先查询是否有正在执行的入库任务或出库任务,如果有,则不下发入库任务
- Object taskInId = redisTemplate.opsForValue().get(RedisConstant.redisTaskIn);
- if (taskInId != null) {
- log.info("有入库任务在执行,无法下发入库任务:" + taskInId);
- return false;
- }
+ /**
+ * 请求入库
+ */
+ //BCR01请求序列号
+ String reqInSeria = "";
+
+ //BCR01条码
+ String reqInBarcod = "";
+ //BCR01条码数据类型
+
+ //BCR01外形检测
+ String reqInLength = "";
+
+ //请求入库返回序列号
+ String reqInCfmSeria = "";
+ String reqInCfmSeriaVt = "";
+
+ //请求入库返回条码
+ String reqInCfmBarcod= "";
+ String reqInCfmBarcodVt= "";
+
+ //返回去向
+ String reqInDest = "";
+ String reqInDestVt= "";
+
+ /**
+ * 空托
+ */
+ //空托申请
+ String reqEmpty = "";
+
+ //空托确认
+ String reqCfm = "";
+ String reqCfmVt = "";
+
+ /**
+ * 出口上报
+ */
+ //出口上报请求序列号
+ String rptOutSeria = "";
+
+ //出口上报条码
+ String rptOutBarcod = "";
+
+ //出口上报确认序列号
+ String rptOutCfmSeria = "";
+ String rptOutCfmSeriaVt = "";
+
+ //出口上报条码确认
+ String rptOutCfmBarcod= "";
+ String rptOutCfmBarcodVt= "";
+
+ //出口上报返回信息
+ String retOut = "";
+ String retOutVt= "";
+
+ /**
+ * 出入库切换
+ */
+ //出入库切换
+ String inOutSwit = "";
+
+ //出入库切换返回
+ String retInOutSwit = "";
+ String retInOutSwitVt = "";
+
+ /**
+ * 叠盘机
+ */
+ //叠盘机完成
+ String stk = "";
+
+ //叠盘机返回
+ String retStk = "";
+ String retStkVt = "";
+
+
+ for (WcsPlcProperty plcProperty : propertyList) {
+ String pointType = plcProperty.getPointType();
+ //请求分配
+ if (pointType.equals("reqInSeria")) {
+ reqInSeria = plcProperty.getAddress();
+ } else if (pointType.equals("reqInBarcod")) {
+ reqInBarcod = plcProperty.getAddress();
+ } else if (pointType.equals("reqInLength")) {
+ reqInLength = plcProperty.getAddress();
+ reqInLength = plcProperty.getPointType();
+ } else if (pointType.equals("reqInCfmSeria")) {
+ reqInCfmSeria = plcProperty.getAddress();
+ reqInCfmSeriaVt = plcProperty.getPointType();
+ } else if (pointType.equals("reqInCfmBarcod")) {
+ reqInCfmBarcod = plcProperty.getAddress();
+ reqInCfmBarcodVt = plcProperty.getPointType();
+ } else if (pointType.equals("reqInDest")) {
+ reqInDest = plcProperty.getAddress();
+ reqInDestVt = plcProperty.getPointType();
+
+ } else if (pointType.equals("reqEmpty")) {
+ reqEmpty = plcProperty.getAddress();
+ } else if (pointType.equals("reqCfm")) {
+ reqCfm = plcProperty.getAddress();
+ reqCfmVt = plcProperty.getPointType();
+ } else if (pointType.equals("rptOutSeria")) {
+ rptOutSeria = plcProperty.getAddress();
+ } else if (pointType.equals("rptOutBarcod")) {
+ rptOutBarcod = plcProperty.getAddress();
+ } else if (pointType.equals("rptOutCfmSeria")) {
+ rptOutCfmSeria = plcProperty.getAddress();
+ rptOutCfmSeriaVt = plcProperty.getPointType();
+ } else if (pointType.equals("rptOutCfmBarcod")) {
+ rptOutCfmBarcod = plcProperty.getAddress();
+ rptOutCfmBarcodVt = plcProperty.getPointType();
+ } else if (pointType.equals("retOut")) {
+ retOut = plcProperty.getAddress();
+ retOutVt = plcProperty.getPointType();
+ } else if (pointType.equals("inOutSwit")) {
+ inOutSwit = plcProperty.getAddress();
+ } else if (pointType.equals("retInOutSwit")) {
+ retInOutSwit = plcProperty.getAddress();
+ retInOutSwitVt = plcProperty.getPointType();
+ }
- Object oneTaskOutId = redisTemplate.opsForValue().get(RedisConstant.redisTaskOutOne);
- if (oneTaskOutId != null) {
- log.info("1F有出库任务在执行,无法下发入库任务:" + oneTaskOutId);
- return false;
- }
-
- Object twoTaskOutId = redisTemplate.opsForValue().get(RedisConstant.redisTaskOutTwo);
- if (twoTaskOutId != null) {
- log.info("2F有出库任务在执行,无法下发入库任务:" + twoTaskOutId);
- return false;
- }
-
- PLCReadAndWrite plcReadAndWrite = new PLCReadAndWrite();
-
- WcsPlcConnectQueryBo plcConnect = new WcsPlcConnectQueryBo();
- plcConnect.setDevType("1");
- WcsPlcConnectVo wcsPlcConnectVo = wcsPlcConnectMapper.selectPlcConnectBydevType(plcConnect);
- Long stkPlcId = wcsPlcConnectVo.getId();
- PlcOperate stkOperate = plcInit.getPlcOperateByIp(wcsPlcConnectVo.getPlcIp());
- String pointTables = wcsPlcConnectVo.getPointTables();
-
- Map pointMap = plcReadAndWrite.readPlcData(stkOperate, pointTables);
-
- List propertyList = iWcsPlcPropertyService.getWcsPlcPropertyByPlcId(stkPlcId);
- String plcTaskId = "";
- String taskIdvalueType = "";
- String plcToRow = "";
- String toRowValueType = "";
- String plcToColumn = "";
- String toColumnValueType = "";
- String plcToLayer = "";
- String toLayerValueType = "";
-
- String plcPlatform = "";
- String plcPlatformValueType = "";
-
- String plcOrderType = "";
- String plcOrderTypeValue = "";
-
- //堆垛机完成状态
- String readfinish = "";
- String readfinishValueType = "";
-
- String stkAutoManual = "";
- String stkGround = "";
- String stkidle = "";
- String stkRun = "";
-
- for (WcsPlcProperty stkProperty : propertyList) {
- //获取要堆垛机要写入的点位
- if (stkProperty.getPointType().equals("101")) {
- plcTaskId = stkProperty.getAddress();
- taskIdvalueType = stkProperty.getValueType();
- } else if (stkProperty.getPointType().equals("108")) {
- plcToRow = stkProperty.getAddress();
- toRowValueType = stkProperty.getValueType();
- } else if (stkProperty.getPointType().equals("109")) {
- plcToColumn = stkProperty.getAddress();
- toColumnValueType = stkProperty.getValueType();
- } else if (stkProperty.getPointType().equals("110")) {
- plcToLayer = stkProperty.getAddress();
- toLayerValueType = stkProperty.getValueType();
- } else if (stkProperty.getPointType().equals("102")) {
- plcOrderType = stkProperty.getAddress();
- plcOrderTypeValue = stkProperty.getValueType();
- } else if (stkProperty.getPointType().equals("103")) {
- plcPlatform = stkProperty.getAddress();
- plcPlatformValueType = stkProperty.getValueType();
- } else if (stkProperty.getPointType().equals("4")) {
- readfinish = stkProperty.getAddress();
- readfinishValueType = stkProperty.getValueType();
- } else if (stkProperty.getPointType().equals("10")) {
- //等于1时堆垛机自动,等于0时堆垛机手动
- stkAutoManual = stkProperty.getAddress();
- } else if (stkProperty.getPointType().equals("11")) {
- //等于1时地面柜自动,等于0时地面柜手动
- stkGround = stkProperty.getAddress();
- } else if (stkProperty.getPointType().equals("12")) {
- //等于1时堆垛机空闲,等于0时堆垛机正忙
- stkidle = stkProperty.getAddress();
- } else if (stkProperty.getPointType().equals("13")) {
- //等于1时堆垛机已激活(运行)
- stkRun = stkProperty.getAddress();
}
- }
-
- Boolean stkRunV = false;
- if (pointMap.containsKey(stkRun)) {
- stkRunV = Boolean.valueOf(pointMap.get(stkRun).toString());
- }
- log.info("堆垛机运行状态:" + stkRunV);
- if (!stkRunV) {
- log.info(taskId + "请求入库时,堆垛机尚未运行");
- return false;
- }
-
-
- Boolean stkAutoManualV = null;
- if (pointMap.containsKey(stkAutoManual)) {
- stkAutoManualV = Boolean.valueOf(pointMap.get(stkAutoManual).toString());
- }
- log.info(taskId + "堆垛机自动状态:" + stkAutoManualV);
- if (!stkAutoManualV) {
- log.info(taskId + "请求入库时,堆垛机手动状态");
- return false;
- }
-
- Boolean stkGroundV = false;
- if (pointMap.containsKey(stkGround)) {
- stkGroundV = Boolean.valueOf(pointMap.get(stkGround).toString());
- }
- log.info(taskId + "地面柜自动状态:" + stkGroundV);
- if (!stkGroundV) {
- log.info(taskId + "请求入库时,堆垛机地面柜手动状态");
- return false;
- }
-
- Boolean stkidleV = false;
- if (pointMap.containsKey(stkidle)) {
- stkidleV = Boolean.valueOf(pointMap.get(stkidle).toString());
- }
- log.info(taskId + "堆垛机是状态:" + stkidleV);
- //1空闲 0繁忙
- if (!stkidleV) {
- log.info(taskId + "请求入库时,堆垛机繁忙");
- return false;
- }
+ //扫码处入库申请
+ if (pointMap.containsKey(reqInSeria) && Boolean.valueOf(pointMap.get(reqInSeria).toString())) {
+ //读取请求序列号内容
+ Integer bCR01SeriaV = (Integer) pointMap.get(reqInSeria);
+ //读取托盘条码内容
+ String barcodeValueOne = pointMap.get(reqInBarcod).toString();
+ log.info("扫码处入库申请时,读取的条码内容:" + barcodeValueOne);
+ //根据托盘条码返回正在执行的任务号
+ WcsIncomingTaskRequestBody body = new WcsIncomingTaskRequestBody();
+ body.setStation("");
+ body.setTaskType(TaskTypeEnum.In.getValue());
+ body.setBussinessType(BusinTaskTypeEnum.stockIn.getValue());
+ body.setTrayCode(barcodeValueOne);
+ body.setCreateDt(new Date().toString());
+ //调用agv接口查询库区状态
+ Object[] areaStatus = {};
+ body.setAreaStatus(areaStatus);
+ WcsResponseVo vo = wcsUtil.wcsIncomingTaskRequest(body);
+ log.info("扫码处入库申请wz-wcs返回:" + vo.getHeader());
+ Map allMap = new HashMap<>(1);
+ Map seriaMap = new HashMap<>(1);
+ seriaMap.put(reqInCfmSeriaVt,bCR01SeriaV );
+ allMap.put(reqInCfmSeria, seriaMap);
+
+ Map barcodMap = new HashMap<>(1);
+ barcodMap.put(reqInCfmBarcodVt, barcodeValueOne);
+ allMap.put(reqInCfmBarcod, barcodMap);
+ //成功直行 失败回退
+ if (Result.isOk(vo.getHeader().getMsgCode())) {
+ Map destMap = new HashMap<>(1);
+ destMap.put(reqInDestVt, 1);
+ allMap.put(reqInDest, destMap);
+ } else {
+ Map destMap = new HashMap<>(1);
+ destMap.put(reqInDestVt, 2);
+ allMap.put(reqInDest, destMap);
+ }
+ String allMapJson = JsonUtil.toJSONString(allMap);
+ log.info("扫码处入库申请时,给输送线写命令数据:{}",allMapJson);
+ Boolean reqInBoolean = plcReadAndWrite.execWrite(plcOperate, allMapJson);
+ log.info("扫码处入库申请时,写入的命令返回结果:"+reqInBoolean.toString());
+ }
+ //空托盘申请
+ if (pointMap.containsKey(reqEmpty) && Boolean.valueOf(pointMap.get(reqEmpty).toString())) {
+ WcsIncomingTaskRequestBody body = new WcsIncomingTaskRequestBody();
+ body.setStation("空托处");
+ body.setTaskType(TaskTypeEnum.Out.getValue());
+ body.setBussinessType(BusinTaskTypeEnum.stockOut.getValue());
+ body.setCreateDt(new Date().toString());
+ //调用agv接口查询库区状态
+ Object[] areaStatus = {};
+ body.setAreaStatus(areaStatus);
+ WcsResponseVo vo = wcsUtil.wcsIncomingTaskRequest(body);
+ log.info("空托申请wz-wcs返回:" + vo.getHeader());
+ Map allMap = new HashMap<>(1);
+ Map reqMap = new HashMap<>(1);
+
+ if (Result.isOk(vo.getHeader().getMsgCode())) {
+ reqMap.put(retOutVt,1);
+ } else {
+ reqMap.put(retOutVt,0);
+ }
+ allMap.put(retOut, reqMap);
+ String allMapJson = JsonUtil.toJSONString(allMap);
+ log.info("空托申请时,给输送线写命令数据:{}",allMapJson);
+ Boolean bCR01Boolean = plcReadAndWrite.execWrite(plcOperate, allMapJson);
+ log.info("空托申请时,写入的命令返回结果:"+bCR01Boolean.toString());
+ }
+ //实盘出口上报
+ if (pointMap.containsKey(rptOutSeria) && Boolean.valueOf(pointMap.get(rptOutSeria).toString())) {
+ //读取序列号
+ Integer outSeria = (Integer) pointMap.get(rptOutSeria);
+ //读取托盘条码内容
+ String barcodeValueOne = pointMap.get(rptOutBarcod).toString();
+ log.info("请求入库时,读取的条码内容:" + barcodeValueOne);
+ //调用wz-wcs接口
+ WcsIncomingTaskRequestBody body = new WcsIncomingTaskRequestBody();
+ body.setStation("出口上报处");
+ body.setTaskType(TaskTypeEnum.In.getValue());
+ body.setBussinessType(BusinTaskTypeEnum.stockIn.getValue());
+ body.setTrayCode(barcodeValueOne);
+ body.setCreateDt(new Date().toString());
+ //调用agv接口查询库区状态
+ Object[] areaStatus = {};
+ body.setAreaStatus(areaStatus);
+ WcsResponseVo vo = wcsUtil.wcsIncomingTaskRequest(body);
+ log.info("agv扫码处申请wz-wcs返回:" + vo.getHeader());
+ Map allMap = new HashMap<>(1);
+ Map seriaMap = new HashMap<>(1);
+ seriaMap.put(rptOutCfmSeriaVt,outSeria );
+ allMap.put(rptOutCfmSeria, seriaMap);
+
+ Map barcodMap = new HashMap<>(1);
+ barcodMap.put(rptOutCfmBarcodVt, barcodeValueOne);
+ allMap.put(rptOutCfmBarcod, barcodMap);
+ Map reqMap = new HashMap<>(1);
+
+ if (Result.isOk(vo.getHeader().getMsgCode())) {
+ reqMap.put(reqCfmVt,1);
+ } else {
+ reqMap.put(reqCfmVt,0);
+ }
+ allMap.put(reqCfm, reqMap);
+ String allMapJson = JsonUtil.toJSONString(allMap);
+ log.info("出口上报时,给输送线写命令数据:{}",allMapJson);
+ Boolean rptOutBoolean = plcReadAndWrite.execWrite(plcOperate, allMapJson);
+ log.info("出口上报时,写入的命令返回结果:"+rptOutBoolean.toString());
+ }
+ //出入库切换
+ if (pointMap.containsKey(inOutSwit) && Boolean.valueOf(pointMap.get(inOutSwit).toString())) {
+ WCSQueryTaskStatusBody body = new WCSQueryTaskStatusBody();
+ body.setDestination("叠盘机");
+ body.setTaskType("1");
+ body.setTrayType("2");
+ WcsResponseVo vo = wcsUtil.queryTaskStatus(body);
+ log.info("扫码处入库申请wz-wcs返回:" + vo.getHeader());
+ Map allMap = new HashMap<>(1);
+ Map reqMap = new HashMap<>(1);
+ if (Result.isOk(vo.getHeader().getMsgCode())) {
+ int taskCount = vo.getBody().get(0).getTaskCount();
+ if (taskCount == 0){
+ reqMap.put(retInOutSwitVt,2);
+ }else {
+ reqMap.put(retInOutSwitVt,1);
+ }
+ } else {
+ reqMap.put(retInOutSwitVt,1);
+ }
+ allMap.put(retInOutSwit, reqMap);
+ String allMapJson = JsonUtil.toJSONString(allMap);
+ log.info("出入库切换时,给输送线写命令数据:{}",allMapJson);
+ Boolean inOutSwitBoolean = plcReadAndWrite.execWrite(plcOperate, allMapJson);
+ log.info("出入库切换时,写入的命令返回结果:"+inOutSwitBoolean.toString());
+ }
- HashMap allMap = new HashMap();
- log.info(taskId + "请求入库:任务下发之前" + JsonUtil.toJSONString(allMap));
- if (plcReadAndWrite.execWrite(stkOperate, JsonUtil.toJSONString(allMap))) {
- log.info(taskId + "请求入库,任务下发成功:");
- redisTemplate.opsForValue().set(RedisConstant.redisTaskIn, taskId);
- //请求成功,记录已下发
- redisTemplate.opsForValue().set(RedisConstant.redisReqWare + taskId, taskId, 24, TimeUnit.HOURS);
- //请求分配任务ID dps
- redisTemplate.delete(RedisConstant.redisContainer + taskId);
- return true;
- } else {
- log.info(taskId + "请求入库任务下发失败");
- return false;
+ } catch (Exception e) {
+ log.error("dpsRealTimeTask:" + e.getMessage());
}
}
+
}
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcInit.java b/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcInit.java
index 95eceff..2566253 100644
--- a/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcInit.java
+++ b/shkj-wms/src/main/java/com/shkj/wcs/plc/PlcInit.java
@@ -57,21 +57,12 @@ public class PlcInit {
plcOperate_stk = plc.getAutomation();
OperateResult connect = plcOperate_stk.connect();
if (connect.IsSuccess){
- log.info(conn.getPlcIp()+"stk连接成功");
+ log.info(conn.getPlcIp()+"连接成功");
}else {
- log.info(conn.getPlcIp()+"stk连接失败");
+ log.info(conn.getPlcIp()+"连接失败");
}
}
- if (conn.getPlcIp().contains("155.170")){
- plcOperate_dps = plc.getAutomation();
- OperateResult connect = plcOperate_dps.connect();
- if (connect.IsSuccess){
- log.info(conn.getPlcIp()+"dps连接成功");
- }else {
- log.info(conn.getPlcIp()+"dps连接失败");
- }
- }
}
}
private void reconnect(){
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/service/IBusinDataTaskService.java b/shkj-wms/src/main/java/com/shkj/wcs/service/IBusinDataTaskService.java
index 28bbf30..356a77f 100644
--- a/shkj-wms/src/main/java/com/shkj/wcs/service/IBusinDataTaskService.java
+++ b/shkj-wms/src/main/java/com/shkj/wcs/service/IBusinDataTaskService.java
@@ -1,7 +1,9 @@
package com.shkj.wcs.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.shkj.wcs.bo.AGVFeedbackBo;
import com.shkj.wcs.domain.BusinDataTask;
+import com.shkj.wcs.third.rcs.vo.RcsResponseVo;
import com.shkj.wcs.third.workbinWcs.dto.WcsCreateTaskDto;
import com.shkj.wcs.vo.WcsResponseVo;
@@ -16,6 +18,13 @@ public interface IBusinDataTaskService extends IService {
*/
WcsResponseVo doTaskGeneratePickTask(WcsCreateTaskDto bo);
+ /**
+ * agv任务反馈
+ * @param bo
+ * @return
+ */
+ RcsResponseVo rcsFeedbackTask(AGVFeedbackBo bo);
+
}
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/service/impl/BusinDataTaskServiceImpl.java b/shkj-wms/src/main/java/com/shkj/wcs/service/impl/BusinDataTaskServiceImpl.java
index aa7828e..5ae8bee 100644
--- a/shkj-wms/src/main/java/com/shkj/wcs/service/impl/BusinDataTaskServiceImpl.java
+++ b/shkj-wms/src/main/java/com/shkj/wcs/service/impl/BusinDataTaskServiceImpl.java
@@ -1,8 +1,12 @@
package com.shkj.wcs.service.impl;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.shkj.common.core.domain.Result;
import com.shkj.common.utils.DateUtils;
+import com.shkj.wcs.bo.AGVFeedbackBo;
+import com.shkj.wcs.bo.ExtraData;
import com.shkj.wcs.bo.WcsPlcPropertyQueryBo;
import com.shkj.wcs.domain.BusinDataTask;
import com.shkj.wcs.domain.WcsPlcProperty;
@@ -10,20 +14,26 @@ import com.shkj.wcs.mapper.BusinDataTaskMapper;
import com.shkj.wcs.mapper.WcsPlcPropertyMapper;
import com.shkj.wcs.service.IBusinDataTaskService;
import com.shkj.wcs.service.IWcsPlcPropertyService;
+import com.shkj.wcs.third.rcs.RCSUtil;
+import com.shkj.wcs.third.rcs.dto.RcsCancelTaskDto;
import com.shkj.wcs.third.rcs.dto.RcsCreateTaskDto;
import com.shkj.wcs.third.rcs.dto.RcsIdList;
import com.shkj.wcs.third.rcs.enums.RCSOperation;
import com.shkj.wcs.third.rcs.enums.RCSTaskTypeEnum;
-import com.shkj.wcs.third.workbinWcs.dto.WcsCreateTaskBody;
-import com.shkj.wcs.third.workbinWcs.dto.WcsCreateTaskDto;
+import com.shkj.wcs.third.rcs.vo.RcsResponseVo;
+import com.shkj.wcs.third.workbinWcs.WCSUtil;
+import com.shkj.wcs.third.workbinWcs.dto.*;
import com.shkj.wcs.vo.WcsResponseVo;
import com.shkj.wms.enums.TaskStatusEnum;
import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.exceptions.TooManyResultsException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
/**
@@ -34,12 +44,21 @@ import java.util.List;
*/
@Service
@Slf4j
+@Transactional(rollbackFor = Exception.class)
public class BusinDataTaskServiceImpl extends ServiceImpl implements IBusinDataTaskService {
+
+ @Autowired
+ private IBusinDataTaskService iBusinDataTaskService;
+ @Autowired
+ private WCSUtil wcsUtil;
+ @Autowired
+ private RCSUtil rcsUtil;
+
@Override
public WcsResponseVo doTaskGeneratePickTask(WcsCreateTaskDto bo) {
- log.info("中科下发任务请求数据:"+bo);
if (bo != null) {
+ log.info("中科下发任务请求数据:" + JSONObject.toJSONString(bo));
List body = bo.getBody();
if (!body.isEmpty()) {
for (WcsCreateTaskBody by : body) {
@@ -52,7 +71,7 @@ public class BusinDataTaskServiceImpl extends ServiceImpl lqwDataTask = new LambdaQueryWrapper()
.eq(BusinDataTask::getContainerCode, trayCode)
- .in(BusinDataTask::getTaskStatus, TaskStatusEnum.wait_put.getValue(),TaskStatusEnum.wait_callback.getValue() );
+ .in(BusinDataTask::getTaskStatus, TaskStatusEnum.wait_put.getValue(), TaskStatusEnum.wait_callback.getValue());
BusinDataTask one = this.getOne(lqwDataTask);
if (dataChange.equals("1")) {
if (one != null) {
@@ -66,7 +85,7 @@ public class BusinDataTaskServiceImpl extends ServiceImpl rcsIdLists =new ArrayList<>();
- for (int i = 1;i<=2;i++){
- RcsIdList rcsIdList =new RcsIdList();
- if(i==1){
+ List rcsIdLists = new ArrayList<>();
+ for (int i = 1; i <= 2; i++) {
+ RcsIdList rcsIdList = new RcsIdList();
+ if (i == 1) {
rcsIdList.setType("ZONE");
rcsIdList.setCode(businDataTask.getFromSide());
rcsIdList.setOperation(RCSOperation.OT_COLLECT.getValue());
@@ -92,10 +111,14 @@ public class BusinDataTaskServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper()
+ .eq(BusinDataTask::getTaskCode, robotTaskCode)
+ .eq(BusinDataTask::getContainerCode, carrierCode);
+ BusinDataTask businDataTask;
+ try {
+ businDataTask = iBusinDataTaskService.getOne(queryWrapper, true);
+ } catch (TooManyResultsException e) {
+ log.error("任务编号 {} 存在重复记录", robotTaskCode);
+ return RcsResponseVo.error("任务编号存在重复记录");
+ }
+
+ if (businDataTask == null) {
+ log.warn("未找到对应任务,任务号:{}", robotTaskCode);
+ return RcsResponseVo.error("未找到对应任务");
+ }
+
+ String taskType = businDataTask.getTaskType();
+ switch (method) {
+ case "start":
+ case "outbin":
+ businDataTask.setTaskStatus(TaskStatusEnum.wait_callback.getValue());
+ break;
+ case "end":
+ businDataTask.setTaskStatus(TaskStatusEnum.finished.getValue());
+ businDataTask.setDestination(slotName);
+ break;
+ default:
+ return RcsResponseVo.error("任务状态未知!");
+ }
+ businDataTask.setUpdateTime(new Date());
+ boolean isUpdated = iBusinDataTaskService.updateById(businDataTask);
+ if (!isUpdated) {
+ log.error("任务状态更新失败,任务号:{}", robotTaskCode);
+ return RcsResponseVo.error("任务状态更新失败");
+ }
+ log.info("任务状态更新成功,任务号:{}", robotTaskCode);
+ UploadWCSTaskStatusDto uploadWCSTaskStatusDto = new UploadWCSTaskStatusDto();
+ WcsCreateTaskHeader header = new WcsCreateTaskHeader();
+ switch (taskType) {
+ case "1":
+ header.setBusinessType("stockOutReturn");
+ break;
+ case "2":
+ header.setBusinessType("stockInReturn");
+ break;
+ case "3":
+ header.setBusinessType("transferReturn");
+ break;
+ default:
+ return RcsResponseVo.error("未知任务类型!");
+ }
+ uploadWCSTaskStatusDto.setHeader(header);
+ UploadWCSTaskStatusBody body = new UploadWCSTaskStatusBody();
+ List bodyList = new ArrayList<>();
+ body.setTaskId(businDataTask.getTaskCode());
+ body.setTrayCode(carrierCode);
+ body.setTaskType(taskType);
+ body.setStatus(businDataTask.getTaskStatus());
+ if (businDataTask.getTaskStatus().equals(TaskStatusEnum.finished.getValue())){
+ body.setDestination(slotName);
+ }
+ body.setMsgCode("200");
+ bodyList.add(body);
+ uploadWCSTaskStatusDto.setBody(bodyList);
+ log.info("请求zk-wcs参数{}",JSONObject.toJSONString(uploadWCSTaskStatusDto));
+ try {
+ wcsUtil.uploadWCSTaskStatus(uploadWCSTaskStatusDto);
+ } catch (TooManyResultsException e) {
+ log.error("WZ-WCS状态上报异常,任务号:{}", robotTaskCode, e);
+ return RcsResponseVo.error("KJ-WCS状态上报异常");
+ }
+ return RcsResponseVo.success(new JSONObject().fluentPut("data", robotTaskCode));
+ }
+
+
}
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/third/rcs/RCSUtil.java b/shkj-wms/src/main/java/com/shkj/wcs/third/rcs/RCSUtil.java
index 7b87b54..8d0f6c3 100644
--- a/shkj-wms/src/main/java/com/shkj/wcs/third/rcs/RCSUtil.java
+++ b/shkj-wms/src/main/java/com/shkj/wcs/third/rcs/RCSUtil.java
@@ -95,14 +95,15 @@ public class RCSUtil {
*/
public Result rcsCreateTask(RcsCreateTaskDto dto) {
String json = JSONObject.toJSONString(dto);
+ log.info("向rcs创建任务参数"+json);
try {
Map headerMap = getHeaderMap();
String res = HttpRequest.post(agvCreateTaskUrl)
.addHeaders(headerMap)
.body(json)
.execute().body();
- Result result = parseThirdRcsResult(res);
- return result;
+ log.info("向rcs创建任务返回:" + res);
+ return parseThirdRcsResult(res);
} catch (Exception e) {
e.printStackTrace();
log.error("createTask 方法出错了 = {}", e.getMessage());
@@ -161,14 +162,14 @@ public class RCSUtil {
*/
public Result rcsTaskCancel(RcsCancelTaskDto dto) {
String json = JSONObject.toJSONString(dto);
-
+ log.info("向rcs任务取消参数:" + json);
try {
Map headerMap = getHeaderMap();
String res = HttpRequest.post(agvCancelTaskUrl)
.addHeaders(headerMap)
.body(json)
.execute().body();
-
+ log.info("向rcs任务取消返回:" + res);
return parseThirdRcsResult(res);
} catch (Exception e) {
e.printStackTrace();
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/third/rcs/dto/RcsCancelTaskDto.java b/shkj-wms/src/main/java/com/shkj/wcs/third/rcs/dto/RcsCancelTaskDto.java
index 6c7b712..5479700 100644
--- a/shkj-wms/src/main/java/com/shkj/wcs/third/rcs/dto/RcsCancelTaskDto.java
+++ b/shkj-wms/src/main/java/com/shkj/wcs/third/rcs/dto/RcsCancelTaskDto.java
@@ -19,11 +19,11 @@ public class RcsCancelTaskDto implements Serializable {
/**
- * 地图 id
+ * 任务号
*/
- private Integer mapId;
+ private String robotTaskCode;
/**
- * 任务id 任务 id,唯一标识(不能重复)
+ * 任务取消类型
*/
- private String taskId;
+ private String cancelType;
}
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/third/rcs/vo/RcsResponseVo.java b/shkj-wms/src/main/java/com/shkj/wcs/third/rcs/vo/RcsResponseVo.java
new file mode 100644
index 0000000..59bc749
--- /dev/null
+++ b/shkj-wms/src/main/java/com/shkj/wcs/third/rcs/vo/RcsResponseVo.java
@@ -0,0 +1,51 @@
+package com.shkj.wcs.third.rcs.vo;
+
+import lombok.Data;
+
+import java.util.Collections;
+import java.util.List;
+
+@Data
+public class RcsResponseVo {
+ private String code;
+ private String message;
+ private List data;
+
+
+ // 成功
+ public static RcsResponseVo success(List data) {
+ RcsResponseVo response = new RcsResponseVo<>();
+ response.setCode("SUCCESS");
+ response.setMessage("成功");
+ response.setData(data != null ? data : Collections.emptyList());
+ return response;
+ }
+
+ // 无数据的成功响应
+ public static RcsResponseVo success() {
+ return success(null);
+ }
+
+ // 单对象成功响应(非List场景)
+ public static RcsResponseVo success(T item) {
+ RcsResponseVo response = new RcsResponseVo<>();
+ response.setCode("SUCCESS");
+ response.setMessage("成功");
+ response.setData(item != null ?
+ Collections.singletonList(item) :
+ Collections.emptyList());
+ return response;
+ }
+
+
+
+ // 错误响应
+ public static RcsResponseVo error(String msg) {
+ RcsResponseVo response = new RcsResponseVo<>();
+ response.setCode("ERROR");
+ response.setMessage(msg);
+ response.setData(Collections.emptyList());
+ return response;
+ }
+
+}
\ No newline at end of file
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/third/workbinWcs/WCSUtil.java b/shkj-wms/src/main/java/com/shkj/wcs/third/workbinWcs/WCSUtil.java
index 0bfcfa3..0410c94 100644
--- a/shkj-wms/src/main/java/com/shkj/wcs/third/workbinWcs/WCSUtil.java
+++ b/shkj-wms/src/main/java/com/shkj/wcs/third/workbinWcs/WCSUtil.java
@@ -123,16 +123,16 @@ public class WCSUtil {
/**
* 入库申请
*
- * @param dto
+ * @param
* @return
*/
- public WcsResponseVo wcsIncomingTaskRequest(WcsIncomingTaskRequestBody dto) {
+ public WcsResponseVo wcsIncomingTaskRequest(WcsIncomingTaskRequestBody body) {
JSONObject jsonObject = new JSONObject();
JSONObject header = new JSONObject();
- header.put("businessType","stockIn");
+ header.put("businessType",body.getBussinessType());
jsonObject.put("header",header);
List incomingTaskRequestBodies = new ArrayList<>();
- incomingTaskRequestBodies.add(dto);
+ incomingTaskRequestBodies.add(body);
jsonObject.put("body",incomingTaskRequestBodies);
String json = JSONObject.toJSONString(jsonObject);
@@ -158,13 +158,14 @@ public class WCSUtil {
* @return
*/
public WcsResponseVo uploadWCSTaskStatus(UploadWCSTaskStatusDto dto) {
- Map headerMap = new HashMap<>(1);
- headerMap.put("businessType", dto.getHeader().getBusinessType());
- String json = JSONObject.toJSONString(dto);
+ JSONObject jsonObject = new JSONObject();
+ JSONObject header = new JSONObject();
+ jsonObject.put("header",dto.getHeader());
+ jsonObject.put("body",dto.getBody());
+ String json = JSONObject.toJSONString(jsonObject);
log.info("KJ向WZ任务上报参数"+json);
try {
String res = HttpRequest.post(uploadWCSTaskStatusUrl)
- .addHeaders(headerMap)
.body(json)
.execute().body();
log.info("KJ向WZ任务上报返回:" + res);
diff --git a/shkj-wms/src/main/java/com/shkj/wcs/vo/TaskStatusBody.java b/shkj-wms/src/main/java/com/shkj/wcs/vo/TaskStatusBody.java
new file mode 100644
index 0000000..93e0635
--- /dev/null
+++ b/shkj-wms/src/main/java/com/shkj/wcs/vo/TaskStatusBody.java
@@ -0,0 +1,8 @@
+package com.shkj.wcs.vo;
+
+import lombok.Data;
+
+@Data
+public class TaskStatusBody {
+ private int taskCount;
+}
\ No newline at end of file
diff --git a/shkj-wms/src/main/java/com/shkj/wms/enums/BusinTaskTypeEnum.java b/shkj-wms/src/main/java/com/shkj/wms/enums/BusinTaskTypeEnum.java
index a74ea9a..0731d3f 100644
--- a/shkj-wms/src/main/java/com/shkj/wms/enums/BusinTaskTypeEnum.java
+++ b/shkj-wms/src/main/java/com/shkj/wms/enums/BusinTaskTypeEnum.java
@@ -13,20 +13,12 @@ public enum BusinTaskTypeEnum {
/**
* 入库
*/
- in("in", "入库"),
+ stockIn("stockIn", "入库"),
/**
* 出库
*/
- out("out", "出库"),
- /**
- * 搬运
- */
- move("move", "搬运"),
- /**
- * 移库
- */
- remove("9","移库"),
+ stockOut("stockOut", "出库")
;
private String value;
diff --git a/shkj-wms/src/main/java/com/shkj/wms/enums/TaskTypeEnum.java b/shkj-wms/src/main/java/com/shkj/wms/enums/TaskTypeEnum.java
index af67348..3f63a9f 100644
--- a/shkj-wms/src/main/java/com/shkj/wms/enums/TaskTypeEnum.java
+++ b/shkj-wms/src/main/java/com/shkj/wms/enums/TaskTypeEnum.java
@@ -11,58 +11,9 @@ import lombok.Getter;
public enum TaskTypeEnum {
//任务类型 0 正常入库 1维修异常 2扫码异常 3入库冲孔 4 正常出库 5紧急出库 6越库出库 7手工入库 8呼叫空治具
- /**
- * 正常入库
- */
- normal_in("0", "正常入库"),
+ Out("1", "出"),
+ In("2", "入");
- /**
- * 1维修异常
- */
- upkeep_err("1", "维修异常"),
- /**
- * 扫码异常
- */
- scancode_err("2", "扫码异常"),
- /**
- * 入库冲孔
- */
- putin_punching("3", "入库冲孔"),
-
- /**
- * 正常出库
- */
- normal_out("4", "正常出库"),
-
- /**
- * 5紧急出库
- */
- urgent_out("5", "紧急出库"),
-
- /**
- * 6越库出库
- */
- cross_out("6", "越库出库"),
-
- /**
- * 7手工入库
- */
- byhand_in("7", "手工入库"),
- /**
- * 8呼叫空治具
- */
- call_container("8", "呼叫空治具"),
-
- /**
- * 9 移库
- */
- relocation("9", "移库"),
-
- /**
- * 10 补货出库
- */
- replenish("10", "补货出库"),
- ;
private String value;
private String desc;