From 989dd1b9dec8ffbf32657d67bb5012de3bc75d04 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期五, 09 一月 2026 15:46:53 +0800
Subject: [PATCH] #接口: WCS入库任务申请 WCS任务上报通知 WCS申请任务重新分配入库 WCS申请在库库位更换库位
---
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CreateInTaskParam.java | 28 ++
rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/PlatformProperties.java | 30 ++
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WcsConstant.java | 9
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsCreateInTaskParam.java | 28 ++
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsWcsService.java | 17 +
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 6
rsf-open-api/src/main/resources/application-dev.yml | 12 +
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsTaskReportParam.java | 28 ++
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java | 55 ++++
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/TaskReportParam.java | 28 ++
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java | 15 +
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsChangeLocParam.java | 28 ++
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ReassignLocParam.java | 28 ++
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsReassignLocParam.java | 28 ++
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java | 198 ++++++++++++++++++
rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsWcsController.java | 92 ++++++++
16 files changed, 625 insertions(+), 5 deletions(-)
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/PlatformProperties.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/PlatformProperties.java
index 8559823..beb64c9 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/PlatformProperties.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/PlatformProperties.java
@@ -66,4 +66,34 @@
}
+ @Data
+ @Configuration
+ @ConfigurationProperties(prefix = "platform.wcs")
+ public class WcsApi {
+ /**
+ * rcs璋冪敤璺緞
+ */
+ private String host;
+
+ /**rcs璋冪敤绔彛**/
+ private String port;
+
+ }
+
+
+ @Data
+ @Configuration
+ @ConfigurationProperties(prefix = "platform.hk")
+ public class HkApi {
+ /**
+ * rcs璋冪敤璺緞
+ */
+ private String host;
+
+ /**rcs璋冪敤绔彛**/
+ private String port;
+
+ }
+
+
}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsWcsController.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsWcsController.java
new file mode 100644
index 0000000..aaabf78
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsWcsController.java
@@ -0,0 +1,92 @@
+package com.vincent.rsf.openApi.controller;
+
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.openApi.entity.params.WcsChangeLocParam;
+import com.vincent.rsf.openApi.entity.params.WcsCreateInTaskParam;
+import com.vincent.rsf.openApi.entity.params.WcsReassignLocParam;
+import com.vincent.rsf.openApi.entity.params.WcsTaskReportParam;
+import com.vincent.rsf.openApi.service.WmsWcsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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.Objects;
+
+@RestController
+@Api("WCS璋冨害浜や簰鎺ュ彛")
+@RequestMapping("/wcs")
+public class WmsWcsController {
+
+ @Autowired
+ private WmsWcsService wmsWcsService;
+
+
+ /**
+ * @author Munch D. Luffy
+ * @date 2026/01/09
+ * @description: WCS鍏ュ簱浠诲姟鐢宠
+ * @version 1.0
+ */
+ @ApiOperation("WCS鍏ュ簱浠诲姟鐢宠")
+ @PostMapping("/openapi/createInTask")
+ public R wcsCreateInTask(@RequestBody WcsCreateInTaskParam params) {
+ if (Objects.isNull(params)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return R.ok().add(wmsWcsService.wcsCreateInTask(params));
+ }
+
+
+ /**
+ * @author Munch D. Luffy
+ * @date 2026/01/09
+ * @description: WCS浠诲姟涓婃姤閫氱煡
+ * @version 1.0
+ */
+ @ApiOperation("WCS浠诲姟涓婃姤閫氱煡")
+ @PostMapping("/openapi/report")
+ public R wcsTaskReport(@RequestBody WcsTaskReportParam params) {
+ if (Objects.isNull(params)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return R.ok().add(wmsWcsService.wcsTaskReport(params));
+ }
+
+
+ /**
+ * @author Munch D. Luffy
+ * @date 2026/01/09
+ * @description: WCS鐢宠浠诲姟閲嶆柊鍒嗛厤鍏ュ簱
+ * @version 1.0
+ */
+ @ApiOperation("WCS鐢宠浠诲姟閲嶆柊鍒嗛厤鍏ュ簱")
+ @PostMapping("/openapi/reassign/loc")
+ public R wcsReassignLoc(@RequestBody WcsReassignLocParam params) {
+ if (Objects.isNull(params)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return R.ok().add(wmsWcsService.wcsReassignLoc(params));
+ }
+
+
+ /**
+ * @author Munch D. Luffy
+ * @date 2026/01/09
+ * @description: WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅
+ * @version 1.0
+ */
+ @ApiOperation("WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅")
+ @PostMapping("/openapi/change/loc")
+ public R wcsChangeLoc(@RequestBody WcsChangeLocParam params) {
+ if (Objects.isNull(params)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return R.ok().add(wmsWcsService.wcsChangeLoc(params));
+ }
+
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WcsConstant.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WcsConstant.java
new file mode 100644
index 0000000..9dbeb5a
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WcsConstant.java
@@ -0,0 +1,9 @@
+package com.vincent.rsf.openApi.entity.constant;
+
+public class WcsConstant {
+
+ public static String pubTask = "/openapi/createInTask";
+
+ public static String syncLocs = "/api/open/loc/sync";
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java
index d903d43..26c84d9 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java
@@ -25,6 +25,21 @@
//璁㈠崟瀹屾垚鍥炲啓
public static String REPORT_ORDER_CALLBACK = "/C3Api?SysCode=WMS";
+ //鍏ュ簱浠诲姟鐢宠
+ public static String WCS_CREATE_IN_TASK = "/rsf-server/wcs/createInTask";
+
+ //WCS浠诲姟涓婃姤閫氱煡
+ public static String WCS_TASK_REPORT = "/rsf-server/wcs/task/report";
+
+ //WCS鐢宠浠诲姟閲嶆柊鍒嗛厤鍏ュ簱
+ public static String WCS_REASSIGN_LOC = "/rsf-server/wcs/reassign/loc";
+
+ //WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅
+ public static String WCS_CHANGE_LOC = "/rsf-server/wcs/change/loc";
+
+ //绉诲簱浠诲姟鐢宠
+ public static String WCS_CREATE_LOC_MOVE_TASK = "/rsf-server/wcs/createLocMoveTask";
+
}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsChangeLocParam.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsChangeLocParam.java
new file mode 100644
index 0000000..03b4748
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsChangeLocParam.java
@@ -0,0 +1,28 @@
+package com.vincent.rsf.openApi.entity.params;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "WcsTaskReportParam", description = "WCS浠诲姟涓婃姤閫氱煡")
+public class WcsChangeLocParam implements Serializable {
+
+ @ApiModelProperty("鎵樼洏鐮�")
+ private String barcode;
+
+ @ApiModelProperty("婧愮珯")
+ private Integer sourceStaNo;
+
+ @ApiModelProperty("鍙敤鎺�")
+ private List<Integer> rowList;
+
+ @ApiModelProperty("搴撲綅绫诲瀷")
+ private Integer locType1;
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsCreateInTaskParam.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsCreateInTaskParam.java
new file mode 100644
index 0000000..528cc0d
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsCreateInTaskParam.java
@@ -0,0 +1,28 @@
+package com.vincent.rsf.openApi.entity.params;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "WcsCreateInTaskParam", description = "鍏ュ簱浠诲姟鐢宠")
+public class WcsCreateInTaskParam implements Serializable {
+
+ @ApiModelProperty("鎵樼洏鐮�")
+ private String barcode;
+
+ @ApiModelProperty("婧愮珯")
+ private Integer sourceStaNo;
+
+ @ApiModelProperty("鍙敤鎺�")
+ private List<Integer> rowList;
+
+ @ApiModelProperty("搴撲綅绫诲瀷")
+ private Integer locType1;
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsReassignLocParam.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsReassignLocParam.java
new file mode 100644
index 0000000..1df9634
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsReassignLocParam.java
@@ -0,0 +1,28 @@
+package com.vincent.rsf.openApi.entity.params;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "WcsTaskReportParam", description = "WCS浠诲姟涓婃姤閫氱煡")
+public class WcsReassignLocParam implements Serializable {
+
+ @ApiModelProperty("鎵樼洏鐮�")
+ private String barcode;
+
+ @ApiModelProperty("婧愮珯")
+ private Integer sourceStaNo;
+
+ @ApiModelProperty("鍙敤鎺�")
+ private List<Integer> rowList;
+
+ @ApiModelProperty("搴撲綅绫诲瀷")
+ private Integer locType1;
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsTaskReportParam.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsTaskReportParam.java
new file mode 100644
index 0000000..76f3472
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsTaskReportParam.java
@@ -0,0 +1,28 @@
+package com.vincent.rsf.openApi.entity.params;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "WcsTaskReportParam", description = "WCS浠诲姟涓婃姤閫氱煡")
+public class WcsTaskReportParam implements Serializable {
+
+ @ApiModelProperty("鎵樼洏鐮�")
+ private String barcode;
+
+ @ApiModelProperty("婧愮珯")
+ private Integer sourceStaNo;
+
+ @ApiModelProperty("鍙敤鎺�")
+ private List<Integer> rowList;
+
+ @ApiModelProperty("搴撲綅绫诲瀷")
+ private Integer locType1;
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsWcsService.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsWcsService.java
new file mode 100644
index 0000000..5859885
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsWcsService.java
@@ -0,0 +1,17 @@
+package com.vincent.rsf.openApi.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.openApi.entity.Loc;
+import com.vincent.rsf.openApi.entity.params.WcsChangeLocParam;
+import com.vincent.rsf.openApi.entity.params.WcsCreateInTaskParam;
+import com.vincent.rsf.openApi.entity.params.WcsReassignLocParam;
+import com.vincent.rsf.openApi.entity.params.WcsTaskReportParam;
+
+public interface WmsWcsService extends IService<Loc> {
+
+ R wcsCreateInTask(WcsCreateInTaskParam params);
+ R wcsTaskReport(WcsTaskReportParam params);
+ R wcsReassignLoc(WcsReassignLocParam params);
+ R wcsChangeLoc(WcsChangeLocParam params);
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java
new file mode 100644
index 0000000..500e2a3
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java
@@ -0,0 +1,198 @@
+package com.vincent.rsf.openApi.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.cfg.CoercionAction;
+import com.fasterxml.jackson.databind.cfg.CoercionInputShape;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.openApi.config.PlatformProperties;
+import com.vincent.rsf.openApi.entity.Loc;
+import com.vincent.rsf.openApi.entity.constant.WmsConstant;
+import com.vincent.rsf.openApi.entity.dto.CommonResponse;
+import com.vincent.rsf.openApi.entity.params.WcsChangeLocParam;
+import com.vincent.rsf.openApi.entity.params.WcsCreateInTaskParam;
+import com.vincent.rsf.openApi.entity.params.WcsReassignLocParam;
+import com.vincent.rsf.openApi.entity.params.WcsTaskReportParam;
+import com.vincent.rsf.openApi.mapper.LocMapper;
+import com.vincent.rsf.openApi.service.WmsWcsService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Objects;
+
+
+@Slf4j
+@Service("wmsWcsService")
+public class WmsWcsServiceImpl extends ServiceImpl<LocMapper, Loc> implements WmsWcsService {
+
+ @Autowired
+ private PlatformProperties.WmsApi wmsApi;
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ /**
+ * @author Munch D. Luffy
+ * @date 2026/01/09
+ * @description: 浠诲姟涓嬪彂
+ * @version 1.0
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R wcsCreateInTask(WcsCreateInTaskParam params) {
+ String createInTask = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.WCS_CREATE_IN_TASK;
+ /**WMS鍩虹閰嶇疆閾炬帴*/
+ log.info("鍏ュ簱浠诲姟鐢宠锛岃姹傚湴鍧�锛� {}锛� 璇锋眰鍙傛暟锛� {}", createInTask , JSONObject.toJSONString(params));
+ HttpHeaders headers = new HttpHeaders();
+ headers.add("Content-Type", "application/json");
+ headers.add("api-version", "v2.0");
+ HttpEntity httpEntity = new HttpEntity(params, headers);
+ ResponseEntity<String> exchange = restTemplate.exchange(createInTask, HttpMethod.POST, httpEntity, String.class);
+ log.info("WCS鍏ュ簱浠诲姟鐢宠锛屽搷搴旂粨鏋滐細 {}", exchange);
+ if (Objects.isNull(exchange.getBody())) {
+ return R.error().add("涓嬪彂WMS杩斿洖鍙傛暟涓虹┖锛侊紒锛�");
+ } else {
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.coercionConfigDefaults()
+ .setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
+ try {
+ CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
+ if (result.getCode() == 200) {
+ return R.ok();
+ } else {
+ return R.error(result.getMsg());
+// throw new CoolException("浠诲姟鎵ц鐘舵�佷笂鎶ュけ璐ワ紒锛�");
+ }
+ } catch (JsonProcessingException e) {
+// throw new CoolException(e.getMessage());
+ }
+ }
+ return R.error();
+ }
+
+ /**
+ * @author Munch D. Luffy
+ * @date 2026/01/09
+ * @description: WCS浠诲姟涓婃姤閫氱煡
+ * @version 1.0
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R wcsTaskReport(WcsTaskReportParam params) {
+ String createInTask = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.WCS_TASK_REPORT;
+ /**WMS鍩虹閰嶇疆閾炬帴*/
+ log.info("WCS浠诲姟涓婃姤閫氱煡锛岃姹傚湴鍧�锛� {}锛� 璇锋眰鍙傛暟锛� {}", createInTask , JSONObject.toJSONString(params));
+ HttpHeaders headers = new HttpHeaders();
+ headers.add("Content-Type", "application/json");
+ headers.add("api-version", "v2.0");
+ HttpEntity httpEntity = new HttpEntity(params, headers);
+ ResponseEntity<String> exchange = restTemplate.exchange(createInTask, HttpMethod.POST, httpEntity, String.class);
+ log.info("WCS浠诲姟涓婃姤閫氱煡锛屽搷搴旂粨鏋滐細 {}", exchange);
+ if (Objects.isNull(exchange.getBody())) {
+ return R.error().add("WCS浠诲姟涓婃姤閫氱煡鍛婄煡wms杩斿洖鍙傛暟涓虹┖锛侊紒锛�");
+ } else {
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.coercionConfigDefaults()
+ .setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
+ try {
+ CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
+ if (result.getCode() == 200) {
+ return R.ok();
+ } else {
+ return R.error(result.getMsg());
+// throw new CoolException("浠诲姟鎵ц鐘舵�佷笂鎶ュけ璐ワ紒锛�");
+ }
+ } catch (JsonProcessingException e) {
+// throw new CoolException(e.getMessage());
+ }
+ }
+ return R.error();
+ }
+
+ /**
+ * @author Munch D. Luffy
+ * @date 2026/01/09
+ * @description: WCS鐢宠浠诲姟閲嶆柊鍒嗛厤鍏ュ簱
+ * @version 1.0
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R wcsReassignLoc(WcsReassignLocParam params) {
+ String createInTask = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.WCS_REASSIGN_LOC;
+ /**WMS鍩虹閰嶇疆閾炬帴*/
+ log.info("WCS浠诲姟涓婃姤閫氱煡锛岃姹傚湴鍧�锛� {}锛� 璇锋眰鍙傛暟锛� {}", createInTask , JSONObject.toJSONString(params));
+ HttpHeaders headers = new HttpHeaders();
+ headers.add("Content-Type", "application/json");
+ headers.add("api-version", "v2.0");
+ HttpEntity httpEntity = new HttpEntity(params, headers);
+ ResponseEntity<String> exchange = restTemplate.exchange(createInTask, HttpMethod.POST, httpEntity, String.class);
+ log.info("WCS浠诲姟涓婃姤閫氱煡锛屽搷搴旂粨鏋滐細 {}", exchange);
+ if (Objects.isNull(exchange.getBody())) {
+ return R.error().add("WCS浠诲姟涓婃姤閫氱煡鍛婄煡wms杩斿洖鍙傛暟涓虹┖锛侊紒锛�");
+ } else {
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.coercionConfigDefaults()
+ .setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
+ try {
+ CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
+ if (result.getCode() == 200) {
+ return R.ok();
+ } else {
+ return R.error(result.getMsg());
+// throw new CoolException("浠诲姟鎵ц鐘舵�佷笂鎶ュけ璐ワ紒锛�");
+ }
+ } catch (JsonProcessingException e) {
+// throw new CoolException(e.getMessage());
+ }
+ }
+ return R.error();
+ }
+
+ /**
+ * @author Munch D. Luffy
+ * @date 2026/01/09
+ * @description: WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅
+ * @version 1.0
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R wcsChangeLoc(WcsChangeLocParam params) {
+ String createInTask = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.WCS_CHANGE_LOC;
+ /**WMS鍩虹閰嶇疆閾炬帴*/
+ log.info("WCS浠诲姟涓婃姤閫氱煡锛岃姹傚湴鍧�锛� {}锛� 璇锋眰鍙傛暟锛� {}", createInTask , JSONObject.toJSONString(params));
+ HttpHeaders headers = new HttpHeaders();
+ headers.add("Content-Type", "application/json");
+ headers.add("api-version", "v2.0");
+ HttpEntity httpEntity = new HttpEntity(params, headers);
+ ResponseEntity<String> exchange = restTemplate.exchange(createInTask, HttpMethod.POST, httpEntity, String.class);
+ log.info("WCS浠诲姟涓婃姤閫氱煡锛屽搷搴旂粨鏋滐細 {}", exchange);
+ if (Objects.isNull(exchange.getBody())) {
+ return R.error().add("WCS浠诲姟涓婃姤閫氱煡鍛婄煡wms杩斿洖鍙傛暟涓虹┖锛侊紒锛�");
+ } else {
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.coercionConfigDefaults()
+ .setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
+ try {
+ CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
+ if (result.getCode() == 200) {
+ return R.ok();
+ } else {
+ return R.error(result.getMsg());
+// throw new CoolException("浠诲姟鎵ц鐘舵�佷笂鎶ュけ璐ワ紒锛�");
+ }
+ } catch (JsonProcessingException e) {
+// throw new CoolException(e.getMessage());
+ }
+ }
+ return R.error();
+ }
+}
diff --git a/rsf-open-api/src/main/resources/application-dev.yml b/rsf-open-api/src/main/resources/application-dev.yml
index c4ba7ad..a93ac00 100644
--- a/rsf-open-api/src/main/resources/application-dev.yml
+++ b/rsf-open-api/src/main/resources/application-dev.yml
@@ -61,6 +61,18 @@
host: http://127.0.0.1
#绔彛
port: 8088
+ #WCS閾炬帴
+ wcs:
+ #閾炬帴
+ host: http://192.168.4.78
+ #绔彛
+ port: 9091
+ #WCS閾炬帴
+ hk:
+ #閾炬帴
+ host: http://127.0.0.1
+ #绔彛
+ port: 9090
wms:
#閾炬帴
host: http://127.0.0.1
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
index b4e79a9..4f163ef 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
@@ -4,8 +4,7 @@
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
import com.vincent.rsf.server.api.controller.erp.params.TaskInParam;
-import com.vincent.rsf.server.api.entity.params.ExMsgParams;
-import com.vincent.rsf.server.api.entity.params.WcsTaskParams;
+import com.vincent.rsf.server.api.entity.params.*;
import com.vincent.rsf.server.common.annotation.OperationLog;
import com.vincent.rsf.server.manager.enums.TaskType;
import com.vincent.rsf.server.api.service.WcsService;
@@ -121,5 +120,57 @@
return wcsService.receiveExMsg(params);
}
+ /**
+ * @author Munch D. Luffy
+ * @date 2026/01/09
+ * @description: WCS鍏ュ簱浠诲姟鐢宠
+ * @version 1.0
+ */
+ @ApiOperation("WCS鍏ュ簱浠诲姟鐢宠")
+ @OperationLog("WCS鍏ュ簱浠诲姟鐢宠")
+ @PostMapping("/createInTask")
+ public R wcsCreateInTask(@RequestBody CreateInTaskParam params) {
+ return R.ok();//lsh 寰呭畬鍠�
+ }
+
+ /**
+ * @author Munch D. Luffy
+ * @date 2026/01/09
+ * @description: WCS浠诲姟涓婃姤閫氱煡
+ * @version 1.0
+ */
+ @ApiOperation("WCS浠诲姟涓婃姤閫氱煡")
+ @OperationLog("WCS浠诲姟涓婃姤閫氱煡")
+ @PostMapping("/task/report")
+ public R wcsTaskReport(@RequestBody TaskReportParam params) {
+ return R.ok();//lsh 寰呭畬鍠�
+ }
+
+ /**
+ * @author Munch D. Luffy
+ * @date 2026/01/09
+ * @description: WCS鐢宠浠诲姟閲嶆柊鍒嗛厤鍏ュ簱
+ * @version 1.0
+ */
+ @ApiOperation("WCS鐢宠浠诲姟閲嶆柊鍒嗛厤鍏ュ簱")
+ @OperationLog("WCS鐢宠浠诲姟閲嶆柊鍒嗛厤鍏ュ簱")
+ @PostMapping("/reassign/loc")
+ public R wcsReassignLoc(@RequestBody ReassignLocParam params) {
+ return R.ok();//lsh 寰呭畬鍠�
+ }
+
+ /**
+ * @author Munch D. Luffy
+ * @date 2026/01/09
+ * @description: WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅
+ * @version 1.0
+ */
+ @ApiOperation("WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅")
+ @OperationLog("WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅")
+ @PostMapping("/change/loc")
+ public R wcsChangeLoc(@RequestBody TaskReportParam params) {
+ return R.ok();//lsh 寰呭畬鍠�
+ }
+
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CreateInTaskParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CreateInTaskParam.java
new file mode 100644
index 0000000..ca98875
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CreateInTaskParam.java
@@ -0,0 +1,28 @@
+package com.vincent.rsf.server.api.entity.params;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "CreateInTaskParam", description = "鍏ュ簱浠诲姟鐢宠")
+public class CreateInTaskParam implements Serializable {
+
+ @ApiModelProperty("鎵樼洏鐮�")
+ private String barcode;
+
+ @ApiModelProperty("婧愮珯")
+ private Integer sourceStaNo;
+
+ @ApiModelProperty("鍙敤鎺�")
+ private List<Integer> rowList;
+
+ @ApiModelProperty("搴撲綅绫诲瀷")
+ private Integer locType1;
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ReassignLocParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ReassignLocParam.java
new file mode 100644
index 0000000..7be5439
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ReassignLocParam.java
@@ -0,0 +1,28 @@
+package com.vincent.rsf.server.api.entity.params;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "ReassignLocParam", description = "WCS浠诲姟涓婃姤閫氱煡")
+public class ReassignLocParam implements Serializable {
+
+ @ApiModelProperty("鎵樼洏鐮�")
+ private String barcode;
+
+ @ApiModelProperty("婧愮珯")
+ private Integer sourceStaNo;
+
+ @ApiModelProperty("鍙敤鎺�")
+ private List<Integer> rowList;
+
+ @ApiModelProperty("搴撲綅绫诲瀷")
+ private Integer locType1;
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/TaskReportParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/TaskReportParam.java
new file mode 100644
index 0000000..b2352f0
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/TaskReportParam.java
@@ -0,0 +1,28 @@
+package com.vincent.rsf.server.api.entity.params;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "TaskReportParam", description = "WCS浠诲姟涓婃姤閫氱煡")
+public class TaskReportParam implements Serializable {
+
+ @ApiModelProperty("鎵樼洏鐮�")
+ private String barcode;
+
+ @ApiModelProperty("婧愮珯")
+ private Integer sourceStaNo;
+
+ @ApiModelProperty("鍙敤鎺�")
+ private List<Integer> rowList;
+
+ @ApiModelProperty("搴撲綅绫诲瀷")
+ private Integer locType1;
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
index 061473a..44ee6df 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -237,7 +237,7 @@
/**
* 闈炲厜鐢电珯鐐逛换鍔′笅鍙�
*/
-// @Scheduled(cron = "0/5 * * * * ? ")
+ @Scheduled(cron = "0/5 * * * * ? ")
@Transactional(rollbackFor = Exception.class)
public void pubTaskToWcs() {
Long loginUserId = SystemAuthUtils.getLoginUserId();
@@ -270,7 +270,7 @@
* @description: 鍏夌數绔欑偣浠诲姟涓嬪彂
* @version 1.0
*/
-// @Scheduled(cron = "0/5 * * * * ? ")
+ @Scheduled(cron = "0/5 * * * * ? ")
@Transactional(rollbackFor = Exception.class)
public void taskToWCS() throws Exception {
Long loginUserId = SystemAuthUtils.getLoginUserId();
@@ -452,7 +452,7 @@
ResponseEntity<String> exchange = restTemplate.exchange(pubTakUrl, HttpMethod.POST, httpEntity, String.class);
log.info("浠诲姟涓嬪彂鍚庯紝鍝嶅簲缁撴灉锛� {}", exchange);
if (Objects.isNull(exchange.getBody())) {
- throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒");
+ throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒锛岃繑鍥炲弬鏁颁负绌猴紒锛侊紒");
} else {
try {
ObjectMapper objectMapper = new ObjectMapper();
--
Gitblit v1.9.1