From 56b1b873191d6e7022ed225cf81c3eda774f210e Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期六, 11 四月 2026 18:02:42 +0800
Subject: [PATCH] WMS2.0与WCS3.0对接完整版
---
src/main/java/com/zy/api/controller/params/AgvCarriesParam.java | 22
src/main/java/com/zy/api/controller/params/PageRequestParams.java | 16
src/main/java/com/zy/asrs/service/OrderService.java | 6
src/main/java/com/zy/api/entity/CallAgvParams.java | 38
src/main/java/com/zy/asrs/entity/Task.java | 3
src/main/java/com/zy/api/enums/MatType.java | 36
src/main/java/com/zy/api/entity/StockAdjustParams.java | 27
src/main/java/com/zy/api/controller/params/AgvRequestParam.java | 26
src/main/java/com/zy/api/controller/AgvScheduleController.java | 52
src/main/java/com/zy/asrs/controller/BasStationDetlController.java | 123 +
src/main/java/com/zy/asrs/entity/result/HIKApiDTO.java | 38
src/main/java/com/zy/api/enums/MatLocType.java | 64
src/main/java/com/zy/api/controller/params/CallBackItem.java | 42
src/main/java/com/zy/asrs/utils/Utils.java | 28
src/main/java/com/zy/api/entity/SyncMatParmas.java | 45
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 84
src/main/java/com/zy/api/entity/PubOrderParams.java | 17
src/main/resources/application-dev.yml | 8
src/main/java/com/zy/api/entity/dto/HKR.java | 79
src/main/java/com/zy/api/entity/OrderItemsParam.java | 53
src/main/java/com/zy/asrs/entity/result/Pakin.java | 89
src/main/java/com/zy/api/controller/params/WorkTaskParams.java | 42
src/main/java/com/zy/api/entity/StockUpOrderParams.java | 19
src/main/java/com/zy/api/controller/params/ReceviceTaskParams.java | 45
src/main/java/com/zy/asrs/entity/result/HIKResultDTO.java | 9
src/main/java/com/zy/api/enums/OrderType.java | 57
src/main/java/com/zy/asrs/entity/param/QueryCombParam.java | 10
src/main/java/com/zy/asrs/task/WorkMastScheduler.java | 56
src/main/java/com/zy/asrs/entity/WrkMastLog.java | 16
src/main/java/com/zy/asrs/enums/MatTagType.java | 3
src/main/java/com/zy/asrs/entity/result/CrnTaskDetlDTO.java | 18
src/main/java/com/zy/api/service/WcsApiService.java | 87
src/main/java/com/zy/asrs/enums/CommonStation.java | 24
src/main/java/com/zy/api/entity/MatnrsParams.java | 43
src/main/java/com/zy/asrs/enums/LocStsType.java | 14
src/main/java/com/zy/api/entity/OutOrderParams.java | 34
src/main/java/com/zy/api/entity/dto/LocDetlDto.java | 36
src/main/java/com/zy/asrs/enums/CheckStatusEnum.java | 33
src/main/java/com/zy/api/controller/KopenApiController.java | 200 ++
src/main/java/com/zy/asrs/entity/result/LocDetlAll.java | 16
src/main/java/com/zy/api/controller/params/AgvCallBackParam.java | 15
src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java | 717 +++++++
src/main/java/com/zy/api/entity/dto/LocMastDto.java | 27
src/main/java/com/zy/asrs/entity/CompleteParam.java | 37
src/main/java/com/zy/asrs/enums/OrderTypeEnum.java | 34
src/main/java/com/zy/api/entity/ReportOrderParam.java | 20
pom.xml | 16
src/main/java/com/zy/api/enums/LocAreaType.java | 24
src/main/java/com/zy/common/constant/HIKApiConstant.java | 17
src/main/java/com/zy/api/entity/OrderParams.java | 66
src/main/java/com/zy/asrs/entity/result/FindLocNoAttributeVo.java | 20
src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java | 204 ++
src/main/resources/mapper/BasStationDetlMapper.xml | 56
src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java | 630 +++++++
src/main/java/com/zy/api/service/KopenApiService.java | 77
src/main/java/com/zy/asrs/enums/CommonEnum.java | 2
src/main/java/com/zy/api/entity/dto/XSR.java | 77
src/main/java/com/zy/asrs/service/BasStationDetlService.java | 8
src/main/java/com/zy/common/constant/MesConstant.java | 12
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 99 +
src/main/java/com/zy/asrs/entity/BasStationDetl.java | 505 +++++
src/main/java/com/zy/asrs/entity/TaskLog.java | 16
src/main/java/com/zy/asrs/enums/TaskIOType.java | 51
src/main/java/com/zy/asrs/service/MobileService.java | 10
src/main/java/com/zy/api/service/AgvScheduleService.java | 13
src/main/java/com/zy/asrs/service/WorkService.java | 13
src/main/java/com/zy/asrs/enums/OrderSettle.java | 48
src/main/java/com/zy/api/entity/BaseRequstParam.java | 15
src/main/java/com/zy/api/enums/OrderWkType.java | 72
src/main/java/com/zy/asrs/controller/OpenController.java | 354 +++
src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java | 14
src/main/java/com/zy/asrs/service/impl/BasStationDetlServiceImpl.java | 12
src/main/java/com/zy/asrs/entity/WrkMast.java | 4
src/main/java/com/zy/asrs/entity/result/CheckOrderExportDTO.java | 50
src/main/java/com/zy/api/controller/params/AgvCallBackItemParam.java | 44
src/main/java/com/zy/api/entity/ReportOrderParams.java | 55
src/main/java/com/zy/asrs/entity/Order.java | 4
src/main/java/com/zy/asrs/enums/TaskStatusType.java | 40
src/main/java/com/zy/asrs/entity/result/ForwardAGVTaskDTO.java | 39
src/main/java/com/zy/api/controller/WcsApiController.java | 124 +
src/main/java/com/zy/asrs/enums/ContainerType.java | 2
src/main/java/com/zy/asrs/enums/LocAreaType.java | 30
src/main/java/com/zy/asrs/mapper/BasStationDetlMapper.java | 12
83 files changed, 5,205 insertions(+), 138 deletions(-)
diff --git a/pom.xml b/pom.xml
index ce8a2be..89992d8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
<groupId>com.zy</groupId>
<artifactId>asrs</artifactId>
<version>1.1.1</version>
- <packaging>war</packaging>
+ <packaging>jar</packaging>
<properties>
<java.version>1.8</java.version>
@@ -134,6 +134,20 @@
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
+ <resources>
+ <!-- 1. 棣栧厛锛岃Maven澶勭悊鍘熸湁鐨剅esources鐩綍 -->
+ <resource>
+ <directory>${basedir}/src/main/resources</directory>
+ </resource>
+ <!-- 2. 鍏舵锛屽皢webapp鐩綍涓嬬殑鏂囦欢锛屽鍒跺埌META-INF/resources鐩綍涓� -->
+ <resource>
+ <directory>${basedir}/src/main/webapp</directory>
+ <targetPath>META-INF/resources</targetPath>
+ <includes>
+ <include>**/*</include>
+ </includes>
+ </resource>
+ </resources>
</build>
</project>
diff --git a/src/main/java/com/zy/api/controller/AgvScheduleController.java b/src/main/java/com/zy/api/controller/AgvScheduleController.java
new file mode 100644
index 0000000..9eec976
--- /dev/null
+++ b/src/main/java/com/zy/api/controller/AgvScheduleController.java
@@ -0,0 +1,52 @@
+package com.zy.api.controller;
+
+import com.core.common.R;
+import com.zy.api.controller.params.AgvCallBackParam;
+import com.zy.api.entity.CallAgvParams;
+import com.zy.api.entity.dto.HKR;
+import com.zy.api.service.AgvScheduleService;
+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
+@RequestMapping("/hlk")
+public class AgvScheduleController {
+
+ @Autowired
+ private AgvScheduleService agvScheduleService;
+
+ /**
+ * @author Ryan
+ * @date 2025/11/3
+ * @description: 鍛煎彨AGV鎼繍缂撳瓨鍖�/EO/SO
+ * @version 1.0
+ */
+ @ApiOperation("鍛煎彨AGV鎼繍")
+ @PostMapping("/call/carry")
+ public R callAgvCarry(@RequestBody CallAgvParams params) {
+ if (Objects.isNull(params)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return agvScheduleService.callAgvCarry(params);
+ }
+
+ /**
+ * AGV浠诲姟瀹屾垚
+ * @param params
+ * @return
+ */
+ @ApiOperation("agv鎼繍缁撴灉鍥炰紶")
+ @PostMapping("/agv/result/callback")
+ public HKR agvCarryCallBack(@RequestBody AgvCallBackParam params) {
+ if (Objects.isNull(params)) {
+ return HKR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return agvScheduleService.callback(params);
+ }
+}
diff --git a/src/main/java/com/zy/api/controller/KopenApiController.java b/src/main/java/com/zy/api/controller/KopenApiController.java
new file mode 100644
index 0000000..f08ec51
--- /dev/null
+++ b/src/main/java/com/zy/api/controller/KopenApiController.java
@@ -0,0 +1,200 @@
+package com.zy.api.controller;
+
+
+import com.zy.api.controller.params.PageRequestParams;
+import com.zy.api.entity.PubOrderParams;
+import com.zy.api.entity.ReportOrderParam;
+import com.zy.api.entity.StockAdjustParams;
+import com.zy.api.entity.StockUpOrderParams;
+import com.zy.api.entity.SyncMatParmas;
+import com.zy.api.entity.dto.XSR;
+import com.zy.api.service.KopenApiService;
+import com.zy.common.web.BaseController;
+
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+
+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.List;
+import java.util.Objects;
+
+
+
+@Slf4j
+@RestController
+@RequestMapping("/kopen")
+public class KopenApiController extends BaseController{
+
+ @Autowired
+ private KopenApiService kopenApiService;
+
+ /**
+ * 涓婃父涓嬪彂娲惧伐鍗�
+ *
+ * @author Ryan
+ * @date 2025/11/24 15:18
+ * @param params
+ * @return com.core.common.R
+ */
+ @ApiOperation("涓婃灦娲惧伐鍗�")
+ @PostMapping("/sendInDispatch")
+ public XSR receiveOrders(@RequestBody List<PubOrderParams> params) {
+ if (Objects.isNull(params)) {
+ return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+// if (Objects.isNull(params.getType())) {
+// return XSR.error("鍗曟嵁绫诲瀷涓嶈兘涓虹┖锛�");
+// }
+ return kopenApiService.receiveOrders(params, "add");
+ }
+
+ /**
+ * 涓婃灦娲惧伐鍗曞彉鏇�
+ * @author Ryan
+ * @date 2025/11/24 15:22
+ * @param params
+ * @return com.core.common.R
+ */
+ @ApiOperation("涓婃灦娲惧伐鍗曞彉鏇�")
+ @PostMapping("/sendInDispatchCancel")
+ public XSR dispatchUpdate(@RequestBody List<PubOrderParams> params) {
+ if (Objects.isNull(params)) {
+ return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+// if (Objects.isNull(params.getType())) {
+// return XSR.error("鍗曟嵁绫诲瀷涓嶈兘涓虹┖锛�");
+// }
+ return kopenApiService.receiveOrders(params, "update");
+ }
+
+ /**
+ * 涓婃父涓嬪彂闆朵欢鏁版嵁鍙樻洿
+ *
+ * @author Ryan
+ * @date 2025/11/24 15:19
+ * @param params
+ * @return com.core.common.R
+ */
+ @ApiOperation("闆朵欢淇℃伅鏁版嵁鏇存柊")
+ @PostMapping("/sendPartsMaster")
+ public XSR basMatUpdate(@RequestBody List<SyncMatParmas> params) {
+ if (Objects.isNull(params) || params.isEmpty()) {
+ return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return kopenApiService.basMatupdate(params);
+ }
+
+ /**
+ * 涓婃灦娲惧伐鍗曞弽棣�
+ * @author Ryan
+ * @date 2025/11/24 15:20
+ * @param params
+ * @return com.core.common.R
+ */
+ @ApiOperation("涓婃灦娲惧伐鍗曞弽棣�")
+ @PostMapping("/getInDispatchResult")
+ public XSR getInDispatchResult(@RequestBody List<ReportOrderParam> params) {
+ if (Objects.isNull(params)) {
+ return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+// if (Objects.isNull(params.getKopen_id()) && Objects.isNull(params.getInv_no()) && Objects.isNull(params.getDispatch_no())) {
+// return XSR.error("鍙栨秷鏉′欢涓嶈兘涓虹┖锛侊紒");
+// }
+ return kopenApiService.getInDispatchResult(params, null);
+ }
+
+ /**
+ * 澶囪揣鎸囩ず娲惧伐鍗曚笅鍙�
+ * @author Ryan
+ * @date 2025/11/24 15:21
+ * @param params
+ * @return com.core.common.R
+ */
+ @ApiOperation("澶囪揣鎸囩ず娲惧伐鍗曚笅鍙�")
+ @PostMapping("/sendOutDispatch")
+ public XSR sendStockPrepareDispatch(@RequestBody List<PubOrderParams> params) {
+ if (Objects.isNull(params)) {
+ return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+// if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
+// return XSR.error("涓婃姤璁㈠崟鍒楄〃涓嶈兘涓虹┖锛侊紒");
+// }
+ return kopenApiService.sendOutDispatch(params, "add");
+ }
+
+ /**
+ * 澶囪揣鎸囩ず娲惧伐鍗曞彉鏇�
+ * @author Ryan
+ * @date 2025/11/24 15:22
+ * @param params
+ * @return com.core.common.R
+ */
+ @ApiOperation("澶囪揣鎸囩ず娲惧伐鍗曞彉鏇�")
+ @PostMapping("/sendOutDispacthCancel")
+ public XSR sendOutDispatchCancel(@RequestBody List<PubOrderParams> params) {
+ if (Objects.isNull(params)) {
+ return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+// if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
+// return XSR.error("涓婃姤璁㈠崟鍒楄〃涓嶈兘涓虹┖锛侊紒");
+// }
+ return kopenApiService.sendOutDispatch(params, "update");
+ }
+
+
+ // /**
+ // * 澶囪揣鎸囩ず娲惧伐鍗曞弽棣�
+ // * @author Ryan
+ // * @date 2025/11/24 15:22
+ // * @param params
+ // * @return com.core.common.R
+ // */
+ // @ApiOperation("澶囪揣鎸囩ず娲惧伐鍗曞弽棣�")
+ // @PostMapping("/getOutDispatchResult")
+ // public R getOutDispatchResult(@RequestBody ReportOrderParam params) {
+ // if (Objects.isNull(params)) {
+ // return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ // }
+ // if (Objects.isNull(params.getKopen_id()) && Objects.isNull(params.getInv_no()) && Objects.isNull(params.getDispatch_no())) {
+ // return R.error("鍙栨秷鏉′欢涓嶈兘涓虹┖锛侊紒");
+ // }
+ // return kopenApiService.getOutDispatchResult(params);
+ // }
+
+
+ /**
+ * 澶囪揣鍗曚笅鍙�
+ * @author Ryan
+ * @date 2025/11/24 15:21
+ * @param params
+ * @return com.core.common.R
+ */
+ @ApiOperation("澶囪揣鍗曚笅鍙�")
+ @PostMapping("/getOutDetails")
+ public XSR getOutDetails(@RequestBody List<StockUpOrderParams> params) {
+ if (Objects.isNull(params)) {
+ return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return kopenApiService.getOutDetails(params);
+ }
+
+
+ /**
+ * 鏌ヨWMS搴撳瓨淇℃伅
+ * @author Ryan
+ * @date 2025/11/24 15:22
+ * @param params
+ * @return com.core.common.R
+ */
+ @ApiOperation("鏌ヨWMS搴撳瓨淇℃伅")
+ @PostMapping("/getPartsStock")
+ public XSR getStockInfo(@RequestBody List<PageRequestParams> params) {
+ return kopenApiService.getStockInfo(params);
+ }
+
+}
diff --git a/src/main/java/com/zy/api/controller/WcsApiController.java b/src/main/java/com/zy/api/controller/WcsApiController.java
new file mode 100644
index 0000000..308dc78
--- /dev/null
+++ b/src/main/java/com/zy/api/controller/WcsApiController.java
@@ -0,0 +1,124 @@
+package com.zy.api.controller;
+
+
+import com.core.annotations.ManagerAuth;
+import com.core.common.R;
+import com.zy.api.controller.params.ReceviceTaskParams;
+import com.zy.api.controller.params.WorkTaskParams;
+import com.zy.api.service.WcsApiService;
+import com.zy.asrs.entity.param.CompleteParam;
+import com.zy.asrs.service.MobileService;
+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.Map;
+import java.util.Objects;
+
+@Api("WCS浜や簰鎺ュ彛")
+@RequestMapping("/wcs")
+@RestController
+public class WcsApiController {
+
+ @Autowired
+ private WcsApiService wcsApiService;
+ @Autowired
+ private MobileService mobileService;
+
+
+ /**
+ * 鐛插彇搴綅淇℃伅
+ * @param params
+ * @return
+ */
+ @ManagerAuth
+ @ApiOperation("鍚屾搴撲綅淇℃伅")
+ @PostMapping("/sync/locs")
+ public R getAllLocs(@RequestBody Map<String, String> params) {
+ return wcsApiService.getLocs(params);
+ }
+
+
+ /**
+ * 鑾峰彇绔欑偣淇℃伅
+ * @param params
+ * @return
+ */
+ @ManagerAuth
+ @ApiOperation("鑾峰彇绔欑偣淇℃伅")
+ @PostMapping("sync/stations")
+ public R getAllStation(@RequestBody Map<String, String> params) {
+ return wcsApiService.getStations(params);
+ }
+
+ /**
+ * 涓嬪彂浠诲姟鑷砏CS
+ * @author Ryan
+ * @date 2026/1/10 13:57
+ * @param params
+ * @return com.core.common.R
+ */
+ @ManagerAuth
+ @ApiOperation("涓嬪彂浠诲姟鑷砏CS")
+ @PostMapping("/pub/wrks")
+ public R pubWrkToWcs(@RequestBody WorkTaskParams params) {
+ if (Objects.isNull(params)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return wcsApiService.pubWrkToWcs(params);
+ }
+
+
+ @ManagerAuth(memo = "鍏ュ簱鐢宠(妯℃嫙鐗╃悊鎸夐挳)")
+ @RequestMapping("/openapi/comb/pub")
+ public R cacheCombPub(@RequestBody CompleteParam combParam) {
+ if (Objects.isNull(combParam)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖!!");
+ }
+ return wcsApiService.combInPub(combParam, 10031L);
+ }
+
+ /**
+ * WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅
+ * @param combParam
+ * @return
+ */
+ @ManagerAuth(memo = "WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅")
+ @RequestMapping("/openapi/change/loc")
+ public R changeLoc(@RequestBody CompleteParam combParam) {
+ if (Objects.isNull(combParam)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖!!");
+ }
+ return mobileService.changeLoc(combParam, 10031L);
+ }
+
+
+ @ManagerAuth
+ @ApiOperation("璁惧鎵ц鐘舵�佸洖鍐�")
+ @PostMapping("/openapi/report")
+ public R receviceTaskFromWcs(@RequestBody ReceviceTaskParams params) {
+ if (Objects.isNull(params)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return wcsApiService.receviceTaskFromWcs(params);
+ }
+
+ /**
+ * 閲嶆柊鍒嗛厤鍏ュ簱淇℃伅
+ */
+ @ManagerAuth
+ @ApiOperation("WCS鐢宠浠诲姟閲嶆柊鍒嗛厤鍏ュ簱")
+ @PostMapping("/openapi/reassign/loc")
+ public R repeatLocs(@RequestBody CompleteParam params) {
+ if (Objects.isNull(params)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return wcsApiService.repeatLoc(params);
+ }
+
+
+}
diff --git a/src/main/java/com/zy/api/controller/params/AgvCallBackItemParam.java b/src/main/java/com/zy/api/controller/params/AgvCallBackItemParam.java
new file mode 100644
index 0000000..4318b26
--- /dev/null
+++ b/src/main/java/com/zy/api/controller/params/AgvCallBackItemParam.java
@@ -0,0 +1,44 @@
+package com.zy.api.controller.params;
+
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+public class AgvCallBackItemParam implements Serializable {
+
+
+ private CallBackItem values;
+
+// {
+// "robotTaskCode": "5685",
+// "singleRobotCode": "8857",
+// "currentSeq": -1,
+// "extra": {
+// "async": "0",
+// "values": {
+// "mapCode": "DD",
+// "slotCategory": "SITE",
+// "slotCode": "286260DD305240",
+// "slotName": "JH06",
+// "x": 286260.0,
+// "y": 305240.0,
+// "method": "start",
+// "carrierCategory": "POD",
+// "carrierType": "TC",
+// "carrierCode": "TC10104",
+// "pileCount": 1,
+// "taskTime": "2026-02-12 15:59:45.704",
+// "amrCategory": "LMR",
+// "amrType": "17",
+// "amrCode": "8857",
+// "carrierName": "TC10104",
+// "layerNo": 1
+// }
+// }
+// }
+
+}
diff --git a/src/main/java/com/zy/api/controller/params/AgvCallBackParam.java b/src/main/java/com/zy/api/controller/params/AgvCallBackParam.java
new file mode 100644
index 0000000..1eb0b15
--- /dev/null
+++ b/src/main/java/com/zy/api/controller/params/AgvCallBackParam.java
@@ -0,0 +1,15 @@
+package com.zy.api.controller.params;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+public class AgvCallBackParam implements Serializable {
+
+ private String robotTaskCode;
+
+ private AgvCallBackItemParam extra;
+}
diff --git a/src/main/java/com/zy/api/controller/params/AgvCarriesParam.java b/src/main/java/com/zy/api/controller/params/AgvCarriesParam.java
new file mode 100644
index 0000000..45fe2af
--- /dev/null
+++ b/src/main/java/com/zy/api/controller/params/AgvCarriesParam.java
@@ -0,0 +1,22 @@
+package com.zy.api.controller.params;
+
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "AgvCarriesParam", description = "AGV鎼繍鍙傛暟")
+public class AgvCarriesParam implements Serializable {
+
+ private Integer autoStart = 1;
+
+ private String code;
+
+ private Integer seq;
+
+ private String type = "SITE";
+}
diff --git a/src/main/java/com/zy/api/controller/params/AgvRequestParam.java b/src/main/java/com/zy/api/controller/params/AgvRequestParam.java
new file mode 100644
index 0000000..0051e13
--- /dev/null
+++ b/src/main/java/com/zy/api/controller/params/AgvRequestParam.java
@@ -0,0 +1,26 @@
+package com.zy.api.controller.params;
+
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "AgvRequestParam", description = "Agv璇锋眰鍙傛暟")
+public class AgvRequestParam implements Serializable {
+
+ //浠诲姟绫诲瀷
+ private String taskType;
+
+ //浠诲姟鎵ц娓呭崟
+ private List<AgvCarriesParam> targetRoute;
+
+ //浠诲姟鍙�
+ private String robotTaskCode;
+
+
+}
diff --git a/src/main/java/com/zy/api/controller/params/CallBackItem.java b/src/main/java/com/zy/api/controller/params/CallBackItem.java
new file mode 100644
index 0000000..f6a8a8f
--- /dev/null
+++ b/src/main/java/com/zy/api/controller/params/CallBackItem.java
@@ -0,0 +1,42 @@
+package com.zy.api.controller.params;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+public class CallBackItem implements Serializable {
+
+ private String slotName;
+
+ private String method;
+
+ private String carrierCode;
+
+ private String taskTime;
+
+ private String carrierName;
+
+// "values": {
+// "mapCode": "DD",
+// "slotCategory": "SITE",
+// "slotCode": "286260DD305240",
+// "slotName": "JH06",
+// "x": 286260.0,
+// "y": 305240.0,
+// "method": "start",
+// "carrierCategory": "POD",
+// "carrierType": "TC",
+// "carrierCode": "TC10104",
+// "pileCount": 1,
+// "taskTime": "2026-02-12 15:59:45.704",
+// "amrCategory": "LMR",
+// "amrType": "17",
+// "amrCode": "8857",
+// "carrierName": "TC10104",
+// "layerNo": 1
+// }
+
+}
diff --git a/src/main/java/com/zy/api/controller/params/PageRequestParams.java b/src/main/java/com/zy/api/controller/params/PageRequestParams.java
new file mode 100644
index 0000000..77f858c
--- /dev/null
+++ b/src/main/java/com/zy/api/controller/params/PageRequestParams.java
@@ -0,0 +1,16 @@
+package com.zy.api.controller.params;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel("鍒嗛〉璇锋眰鍙傛暟")
+public class PageRequestParams {
+
+ private String pro_komcode;
+
+ private String pro_id;
+}
+
diff --git a/src/main/java/com/zy/api/controller/params/ReceviceTaskParams.java b/src/main/java/com/zy/api/controller/params/ReceviceTaskParams.java
new file mode 100644
index 0000000..928a2cc
--- /dev/null
+++ b/src/main/java/com/zy/api/controller/params/ReceviceTaskParams.java
@@ -0,0 +1,45 @@
+package com.zy.api.controller.params;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "ReceviceTaskParams", description = "绌跨嚎澧欏弬鏁�")
+public class ReceviceTaskParams implements Serializable {
+
+
+ @ApiModelProperty("娴佹按鍙�")
+ private Long id;
+
+ @ApiModelProperty("閫氱煡绫诲瀷锛歵ask")
+ private String notifyType;
+
+ @ApiModelProperty("鍫嗗灈鏈哄彿")
+ private Integer device;
+
+ @ApiModelProperty("WCS浠诲姟鍙�")
+ private String taskNo;
+
+ @ApiModelProperty("WMS浠诲姟鍙�")
+ private String wrkNo;
+
+ @ApiModelProperty("WMS绯荤粺浠诲姟鍙�")
+ private String superTaskNo;
+
+ @ApiModelProperty("娑堟伅绫诲瀷锛歵ask_complete銆乼ask_cancel")
+ private String msgType;
+
+ @ApiModelProperty("娑堟伅鎻忚堪")
+ private String msgDesc;
+
+ @ApiModelProperty("娑堟伅鏁版嵁")
+ private String data;
+
+
+}
diff --git a/src/main/java/com/zy/api/controller/params/WorkTaskParams.java b/src/main/java/com/zy/api/controller/params/WorkTaskParams.java
new file mode 100644
index 0000000..010893b
--- /dev/null
+++ b/src/main/java/com/zy/api/controller/params/WorkTaskParams.java
@@ -0,0 +1,42 @@
+package com.zy.api.controller.params;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "WorkTaskParams", description = "鎵ц浠诲姟鍙傛暟")
+public class WorkTaskParams implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("鍗忚浠诲姟缂栧彿(瀵瑰簲鍑哄簱浠诲姟鍙�)")
+ private String taskNo;
+
+ @ApiModelProperty("宸ヤ綔妗d换鍔″彿")
+ private String wrkNo;
+
+ @ApiModelProperty("搴撲綅缂栫爜")
+ private String locNo;
+
+ @ApiModelProperty("鏉$爜")
+ private String barcode;
+
+ @ApiModelProperty("浼樺厛绾�")
+ private Integer taskPri;
+
+ @ApiModelProperty("鍑哄簱绔欑偣")
+ private String staNo;
+
+ @ApiModelProperty("浣滀笟绫诲瀷锛宨n: 鍏ュ簱锛� out:鍑哄簱")
+ private String type;
+
+ @ApiModelProperty("鏄惁浣欐枡")
+ private Integer isSuplus;
+
+}
diff --git a/src/main/java/com/zy/api/entity/BaseRequstParam.java b/src/main/java/com/zy/api/entity/BaseRequstParam.java
new file mode 100644
index 0000000..acd8d03
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/BaseRequstParam.java
@@ -0,0 +1,15 @@
+package com.zy.api.entity;
+
+import java.util.Map;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@ApiModel("鍩虹璇锋眰鍙傛暟")
+@Accessors(chain = true)
+public class BaseRequstParam {
+
+ private Map<String, Object> root;
+}
diff --git a/src/main/java/com/zy/api/entity/CallAgvParams.java b/src/main/java/com/zy/api/entity/CallAgvParams.java
new file mode 100644
index 0000000..98276dd
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/CallAgvParams.java
@@ -0,0 +1,38 @@
+package com.zy.api.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "CallAgvParams", description = "AGV鎼繍鍙傛暟")
+public class CallAgvParams implements Serializable {
+
+ @ApiModelProperty("鍛煎彨绫诲瀷锛氬嚭搴擄細out, 鍏ュ簱锛歩n")
+ private String type;
+
+ @ApiModelProperty("鍘熷簱浣�")
+ private String orgLoc;
+
+ @ApiModelProperty("鐩爣绔欑偣")
+ private String tarSite;
+
+ @ApiModelProperty("鍘熺珯鐐�")
+ private String orgSite;
+
+ @ApiModelProperty("鐩爣搴撲綅")
+ private String tarLoc;
+
+ @ApiModelProperty("鎼繍鐘舵��")
+ private String status;
+
+ @ApiModelProperty("浠诲姟鍙�")
+ private String wrkNo;
+
+ @ApiModelProperty("浠诲姟绫诲瀷")
+ private String taskType = "M2";
+}
diff --git a/src/main/java/com/zy/api/entity/MatnrsParams.java b/src/main/java/com/zy/api/entity/MatnrsParams.java
new file mode 100644
index 0000000..c1e72ec
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/MatnrsParams.java
@@ -0,0 +1,43 @@
+package com.zy.api.entity;
+
+import org.springframework.format.annotation.DateTimeFormat;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "MatnrsParams", description = "鐗╂枡淇℃伅")
+public class MatnrsParams {
+
+ @ApiModelProperty("鍗曟嵁绫诲瀷")
+ private String pro_komcode;
+
+ @ApiModelProperty("宸ュ崟绫诲瀷")
+ private String pro_id;
+
+ @ApiModelProperty("璁㈠崟鍙�")
+ private String company_id;
+
+ @ApiModelProperty("璁㈠崟鏁伴噺")
+ private Double pro_name;
+
+ @ApiModelProperty("鎿嶄綔浜�")
+ private String pro_size;
+
+ @ApiModelProperty("閲嶉噺")
+ private String pro_wet;
+
+ @ApiModelProperty("闆朵欢绫诲瀷")
+ private String pro_type;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private String update_time;
+}
diff --git a/src/main/java/com/zy/api/entity/OrderItemsParam.java b/src/main/java/com/zy/api/entity/OrderItemsParam.java
new file mode 100644
index 0000000..1d926c3
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/OrderItemsParam.java
@@ -0,0 +1,53 @@
+package com.zy.api.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "OrderItemsParam", description = "璁㈠崟鏄庣粏鍙傛暟")
+public class OrderItemsParam implements Serializable {
+
+ @ApiModelProperty("BS Code")
+ private String total_serial;
+
+ @ApiModelProperty("鐩爣搴撳尯")
+ private String target_location;
+
+ @ApiModelProperty("闆朵欢绫诲瀷")
+ private String pro_type;
+
+ @ApiModelProperty("闆朵欢浠g爜")
+ private String pro_komcode;
+
+ @ApiModelProperty("渚涘簲鍟嗙紪鐮�")
+ private String pro_id;
+
+ @ApiModelProperty("鍏ュ簱閫氱煡鏁伴噺")
+ private Double inv_qty;
+
+ @ApiModelProperty("鎸囩ず鎷h揣璁㈠崟鏁伴噺")
+ private Integer order_qty;
+
+ @ApiModelProperty("鍘熶笂鏋舵淳宸ユ暟閲�")
+ private Integer old_qty;
+
+ @ApiModelProperty("鍙樻洿鏁伴噺")
+ private Integer new_qty;
+
+ @ApiModelProperty("鎹嗙粦/鍙枡/鏁伴噺鏁伴噺")
+ private Integer pick_qty;
+
+ @ApiModelProperty("鎹熸孩鏁伴噺")
+ private Integer bsby_qty;
+
+ @ApiModelProperty("鎵樼洏缂栧彿")
+ private String location_no;
+
+ @ApiModelProperty("鍙拌溅缂栫爜")
+ private String truck_no;
+
+}
diff --git a/src/main/java/com/zy/api/entity/OrderParams.java b/src/main/java/com/zy/api/entity/OrderParams.java
new file mode 100644
index 0000000..e09e9a9
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/OrderParams.java
@@ -0,0 +1,66 @@
+package com.zy.api.entity;
+
+import java.io.Serializable;
+
+import org.springframework.format.annotation.DateTimeFormat;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "OrderParams", description = "鍗曟嵁淇℃伅")
+public class OrderParams implements Serializable {
+
+ @ApiModelProperty("娴佹按鍙凤紙鍞竴锛�")
+ private String kopen_id;
+
+ @ApiModelProperty("娲惧伐鍗曞彿")
+ private String dispatch_no;
+
+ @ApiModelProperty("鍏徃ID")
+ private String company_id;
+
+ @ApiModelProperty("鍏ュ簱绫诲瀷 1: 閲囪喘鍏ュ簱锛�2: 璋冩嫧鍏ュ簱锛�3: 閿�鍞��璐у叆搴擄紝4: 濂楀寘鍏ュ簱, 5:SO, 6:EO, 7:鍑哄簱")
+ private String type;
+
+ @ApiModelProperty("绠卞彿")
+ private String pm_tktid;
+
+ @ApiModelProperty("鍏ュ簱閫氱煡鍗曞彿")
+ private String inv_no;
+
+ @ApiModelProperty("鐩爣搴撳尯")
+ private String target_location;
+
+ @ApiModelProperty("婧愬簱鍖�")
+ private String source_location;
+
+
+ @ApiModelProperty("鎷h揣鍗曞彿")
+ private String pick_no;
+
+ @ApiModelProperty("璁㈠崟鍙�")
+ private String order_no;
+
+
+ @ApiModelProperty("瀹㈡埛ID")
+ private String cus_id;
+
+
+ @ApiModelProperty("瀹㈡埛鍦板潃")
+ private String cus_address;
+
+
+ @ApiModelProperty("WMS ID")
+ private String wms_id;
+
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private String update_time;
+}
diff --git a/src/main/java/com/zy/api/entity/OutOrderParams.java b/src/main/java/com/zy/api/entity/OutOrderParams.java
new file mode 100644
index 0000000..32aed18
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/OutOrderParams.java
@@ -0,0 +1,34 @@
+package com.zy.api.entity;
+
+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 = "OutOrderParams", description = "澶囪揣璁㈠崟鍙傛暟")
+public class OutOrderParams implements Serializable {
+
+ @ApiModelProperty("鏄庣粏澶囪揣鍗曞彿")
+ private String pick_no;
+
+ @ApiModelProperty("璁㈠崟鍙�")
+ private String order_no;
+
+ @ApiModelProperty("瀹㈡埛")
+ private String cus_id;
+
+ @ApiModelProperty("瀹㈡埛鍦板潃")
+ private String cus_address;
+
+ @ApiModelProperty("涓氬姟绫诲瀷")
+ private String type;
+
+ @ApiModelProperty("璁㈠崟鏄庣粏")
+ private List<OrderItemsParam> partList;
+
+
+}
diff --git a/src/main/java/com/zy/api/entity/PubOrderParams.java b/src/main/java/com/zy/api/entity/PubOrderParams.java
new file mode 100644
index 0000000..2f90cdb
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/PubOrderParams.java
@@ -0,0 +1,17 @@
+package com.zy.api.entity;
+
+import java.util.List;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "PubOrderParams", description = "鍙戝竷璁㈠崟淇℃伅")
+public class PubOrderParams extends OrderParams {
+
+ @ApiModelProperty("鍏ュ簱鐗╂枡鍒楄〃")
+ List<OrderItemsParam> details;
+}
diff --git a/src/main/java/com/zy/api/entity/ReportOrderParam.java b/src/main/java/com/zy/api/entity/ReportOrderParam.java
new file mode 100644
index 0000000..b5c998c
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/ReportOrderParam.java
@@ -0,0 +1,20 @@
+package com.zy.api.entity;
+
+import java.util.List;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "ReportOrderParam", description = "涓婃姤璁㈠崟淇℃伅")
+public class ReportOrderParam extends OrderParams{
+
+ @ApiModelProperty("涓婃姤璁㈠崟鍒楄〃")
+ List<ReportOrderParams> details;
+
+ @ApiModelProperty("璁㈠崟鏄庣粏")
+ private List<OrderItemsParam> partList;
+}
diff --git a/src/main/java/com/zy/api/entity/ReportOrderParams.java b/src/main/java/com/zy/api/entity/ReportOrderParams.java
new file mode 100644
index 0000000..99585b2
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/ReportOrderParams.java
@@ -0,0 +1,55 @@
+package com.zy.api.entity;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel("涓婃姤璁㈠崟鍙傛暟")
+public class ReportOrderParams implements Serializable {
+
+ @ApiModelProperty("BS Code")
+ private String total_serial;
+
+ @ApiModelProperty("浜у搧绫诲瀷")
+ private String pro_type;
+
+ @ApiModelProperty("闆朵欢浠g爜")
+ private String pro_komcode;
+
+ @ApiModelProperty("渚涘簲鍟咺D")
+ private String pro_id;
+
+ @ApiModelProperty("瀹瑰櫒缂栫爜")
+ private String location_no;
+
+ @ApiModelProperty("璐т綅绫诲瀷")
+ private String location_type;
+
+ @ApiModelProperty("涓婃灦鏃ユ湡")
+ private String sj_date;
+
+ @ApiModelProperty("涓婃灦浜�")
+ private String sj_emp;
+
+ @ApiModelProperty("涓婃灦鏁伴噺")
+ private Integer pick_qty;
+
+ @ApiModelProperty("鐮存崯鏁伴噺")
+ private Integer damage_qty;
+
+ @ApiModelProperty("宸紓鏁伴噺")
+ private Integer diff_qty;
+
+ @ApiModelProperty("鍘熶笂鏋舵淳宸ユ暟閲�")
+ private Integer old_qty;
+
+ @ApiModelProperty("鍙樻洿鏁伴噺")
+ private Integer new_qty;
+
+
+}
diff --git a/src/main/java/com/zy/api/entity/StockAdjustParams.java b/src/main/java/com/zy/api/entity/StockAdjustParams.java
new file mode 100644
index 0000000..5b3ae43
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/StockAdjustParams.java
@@ -0,0 +1,27 @@
+package com.zy.api.entity;
+
+import java.util.List;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "StockAdjustParams", description = "闆朵欢鎹熸孩鍗曞弬鏁�")
+public class StockAdjustParams extends OrderParams {
+
+ @ApiModelProperty("璋冩暣鍘熷洜")
+ private String reason;
+
+ @ApiModelProperty("璋冩暣鍘熷洜鍚嶇О")
+ private String reason_name;
+
+ @ApiModelProperty("璋冩暣鍗曠紪鍙�")
+ private String bsby_no;
+
+ @ApiModelProperty("璋冩暣鍗曟槑缁嗗垪琛�")
+ List<OrderItemsParam> details;
+
+}
diff --git a/src/main/java/com/zy/api/entity/StockUpOrderParams.java b/src/main/java/com/zy/api/entity/StockUpOrderParams.java
new file mode 100644
index 0000000..6243370
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/StockUpOrderParams.java
@@ -0,0 +1,19 @@
+package com.zy.api.entity;
+
+import java.util.List;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "StockUpOrderParams", description = "澶囪揣璁㈠崟鍙傛暟")
+public class StockUpOrderParams extends OrderParams{
+
+
+ @ApiModelProperty("璁㈠崟鏄庣粏")
+ private List<OutOrderParams> details;
+
+}
diff --git a/src/main/java/com/zy/api/entity/SyncMatParmas.java b/src/main/java/com/zy/api/entity/SyncMatParmas.java
new file mode 100644
index 0000000..7de24a6
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/SyncMatParmas.java
@@ -0,0 +1,45 @@
+package com.zy.api.entity;
+
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "SyncMatParmas", description = "鐗╂枡鍚屾鍙傛暟")
+public class SyncMatParmas implements Serializable {
+
+
+ @ApiModelProperty("闆朵欢绫诲瀷")
+ private String pro_type;
+
+ @ApiModelProperty("闆朵欢浠g爜")
+ private String pro_komcode;
+
+ @ApiModelProperty("渚涘簲鍟嗙紪鐮�")
+ private String pro_id;
+
+ @ApiModelProperty("鍏ュ簱閫氱煡鏁伴噺")
+ private Double inv_qty;
+
+ @ApiModelProperty("鍏徃ID")
+ private String company_id;
+
+ @ApiModelProperty("闆朵欢鍚嶇О")
+ private String pro_name;
+
+ @ApiModelProperty("灏哄")
+ private String pro_size;
+
+ @ApiModelProperty("閲嶉噺")
+ private String pro_wet;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ private String update_time;
+
+}
diff --git a/src/main/java/com/zy/api/entity/dto/HKR.java b/src/main/java/com/zy/api/entity/dto/HKR.java
new file mode 100644
index 0000000..c05a2ab
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/dto/HKR.java
@@ -0,0 +1,79 @@
+package com.zy.api.entity.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.sql.Date;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "HKR", description = "娴峰悍鍝嶅簲淇℃伅")
+public class HKR<T> {
+ private static final String SUCCESS_CODE = "200";
+ private static final String FAIL_CODE = "500";
+
+ private String code;
+
+ private String message;
+
+ private Boolean success;
+
+ private String reqCode;
+
+ private Integer errorCode;
+
+ private T result;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date timestamp;
+
+ public HKR() {
+ this.timestamp = new Date(System.currentTimeMillis());
+ }
+
+ public static <T> HKR<T> ok() {
+ return new HKR<T>()
+ .setCode("SUCCESS")
+ .setSuccess(true)
+ .setMessage("鎿嶄綔鎴愬姛")
+ .setErrorCode(0);
+ }
+
+ public static <T> HKR<T> ok(T data) {
+ return new HKR<T>()
+ .setCode("SUCCESS")
+ .setSuccess(true)
+ .setMessage("鎿嶄綔鎴愬姛")
+ .setErrorCode(0)
+ .setResult(data);
+ }
+
+ public static <T> HKR<T> ok(T data, String message) {
+ return new HKR<T>()
+ .setCode("SUCCESS")
+ .setSuccess(true)
+ .setMessage(message)
+ .setErrorCode(0)
+ .setResult(data);
+ }
+
+ public static <T> HKR<T> error(String message) {
+ return new HKR<T>()
+ .setCode("ERROR")
+ .setSuccess(false)
+ .setMessage(message)
+ .setErrorCode(99);
+ }
+
+ public static <T> HKR<T> error(String code, String message) {
+ return new HKR<T>()
+ .setCode("ERROR")
+ .setSuccess(false)
+ .setMessage(message)
+ .setErrorCode(99);
+ }
+}
diff --git a/src/main/java/com/zy/api/entity/dto/LocDetlDto.java b/src/main/java/com/zy/api/entity/dto/LocDetlDto.java
new file mode 100644
index 0000000..e3c5ba2
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/dto/LocDetlDto.java
@@ -0,0 +1,36 @@
+package com.zy.api.entity.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import lombok.Data;
+
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "LocDetlDto", description = "搴撲綅鏄庣粏杩斿洖鍊�")
+public class LocDetlDto implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("鐗╂枡缂栫爜")
+ private String pro_komcode;
+
+ @ApiModelProperty("渚涘簲鍟�")
+ private String pro_id;
+
+ @ApiModelProperty("鍙敤搴撳瓨")
+ private Integer stock_qty;
+
+ @ApiModelProperty("闅旂搴撳瓨")
+ private Integer lock_qty;
+
+ @ApiModelProperty("鐩爣鎵樼洏")
+ private String location_no;
+
+ @ApiModelProperty("搴撳尯")
+ private String target_location;
+
+
+}
diff --git a/src/main/java/com/zy/api/entity/dto/LocMastDto.java b/src/main/java/com/zy/api/entity/dto/LocMastDto.java
new file mode 100644
index 0000000..a842c44
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/dto/LocMastDto.java
@@ -0,0 +1,27 @@
+package com.zy.api.entity.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "LocMastDto", description = "搴撲綅淇℃伅")
+public class LocMastDto implements Serializable {
+
+ @ApiModelProperty("搴撲綅淇℃伅")
+ private String locNo;
+
+ private String locSts;
+
+ private String barcode;
+
+ private Integer row;
+
+ private Integer bay;
+
+ private Integer lev;
+}
diff --git a/src/main/java/com/zy/api/entity/dto/XSR.java b/src/main/java/com/zy/api/entity/dto/XSR.java
new file mode 100644
index 0000000..842a586
--- /dev/null
+++ b/src/main/java/com/zy/api/entity/dto/XSR.java
@@ -0,0 +1,77 @@
+package com.zy.api.entity.dto;
+
+import java.sql.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "XSR", description = "鍩虹鍝嶅簲")
+public class XSR<T> {
+ private static final String SUCCESS_CODE = "200";
+ private static final String FAIL_CODE = "500";
+
+ private String code;
+
+ private String message;
+
+ private Boolean success;
+
+ private String returnMessage;
+
+ private T result;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date timestamp;
+
+ public XSR() {
+ this.timestamp = new Date(System.currentTimeMillis());
+ }
+
+ public static <T> XSR<T> ok() {
+ return new XSR<T>()
+ .setCode(SUCCESS_CODE)
+ .setSuccess(true)
+ .setMessage("鎿嶄綔鎴愬姛")
+ .setReturnMessage("鎿嶄綔鎴愬姛");
+ }
+
+ public static <T> XSR<T> ok(T data) {
+ return new XSR<T>()
+ .setCode(SUCCESS_CODE)
+ .setSuccess(true)
+ .setMessage("鎿嶄綔鎴愬姛")
+ .setReturnMessage("鎿嶄綔鎴愬姛")
+ .setResult(data);
+ }
+
+ public static <T> XSR<T> ok(T data, String message) {
+ return new XSR<T>()
+ .setCode(SUCCESS_CODE)
+ .setSuccess(true)
+ .setMessage(message)
+ .setReturnMessage(message)
+ .setResult(data);
+ }
+
+ public static <T> XSR<T> error(String message) {
+ return new XSR<T>()
+ .setCode(FAIL_CODE)
+ .setSuccess(false)
+ .setMessage(message)
+ .setReturnMessage(message);
+ }
+
+ public static <T> XSR<T> error(String code, String message) {
+ return new XSR<T>()
+ .setCode(code)
+ .setSuccess(false)
+ .setMessage(message)
+ .setReturnMessage(message);
+ }
+}
diff --git a/src/main/java/com/zy/api/enums/LocAreaType.java b/src/main/java/com/zy/api/enums/LocAreaType.java
new file mode 100644
index 0000000..3ac462b
--- /dev/null
+++ b/src/main/java/com/zy/api/enums/LocAreaType.java
@@ -0,0 +1,24 @@
+package com.zy.api.enums;
+/**
+ * 搴撳尯绫诲瀷
+ */
+public enum LocAreaType {
+
+
+ /** 澶у簱鍖� */
+ AUTOMATED("1", "绔嬪簱"),
+ /** 涓簱鍖� */
+ SO_HOLDING("2", "SO绛夊緟鍖�"),
+ /** 灏忎欢搴撳尯 */
+ EO_HOLDING("3", "EO绛夊緟鍖�");
+
+ public String type;
+
+ public String desc;
+
+ LocAreaType(String type, String desc) {
+ this.type = type;
+ this.desc = desc;
+ }
+
+}
diff --git a/src/main/java/com/zy/api/enums/MatLocType.java b/src/main/java/com/zy/api/enums/MatLocType.java
new file mode 100644
index 0000000..416327c
--- /dev/null
+++ b/src/main/java/com/zy/api/enums/MatLocType.java
@@ -0,0 +1,64 @@
+package com.zy.api.enums;
+
+/**
+ * 鐗╂枡鎵�灞炲簱浣嶇被鍨�
+ * @author Ryan
+ * @date 2025/12/6 10:41
+ * @return null
+ */
+public enum MatLocType {
+
+ /** 灏忎欢 */
+ AUTOMATED("12", "灏忎欢"),
+ /** 涓欢 */
+ SO_HOLDING("13", "涓欢"),
+ /** 澶т欢 */
+ EO_HOLDING("14", "婊よ姱");
+
+ public String type;
+
+ public String desc;
+
+ MatLocType(String type, String desc) {
+ this.type = type;
+ this.desc = desc;
+ }
+
+ public static String getTagName(String type) {
+ if (type.equals(MatLocType.AUTOMATED.type)) {
+ return MatLocType.AUTOMATED.desc;
+ } else if (type.equals(MatLocType.SO_HOLDING.type)) {
+ return MatLocType.SO_HOLDING.desc;
+ } else if (type.equals(MatLocType.EO_HOLDING.type)) {
+ return MatLocType.EO_HOLDING.desc;
+ } else {
+ return null;
+ }
+ }
+
+
+ public static Long getTag(String type) {
+ if (type.equals(MatType.LARGE.type)) {
+ return Long.parseLong(MatLocType.EO_HOLDING.type);
+ } else if (type.equals(MatType.MIDDEL.type)) {
+ return Long.parseLong(MatLocType.SO_HOLDING.type);
+ } else if (type.equals(MatType.SMALL.type)) {
+ return Long.parseLong(MatLocType.AUTOMATED.type);
+ } else {
+ return null;
+ }
+ }
+
+
+ public static String getMatTag(String type) {
+ if (type.equals(MatLocType.EO_HOLDING.type)) {
+ return MatType.LARGE.type;
+ } else if (type.equals(MatLocType.SO_HOLDING.type)) {
+ return MatType.MIDDEL.type;
+ } else if (type.equals(MatLocType.AUTOMATED.type)) {
+ return MatType.SMALL.type;
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/src/main/java/com/zy/api/enums/MatType.java b/src/main/java/com/zy/api/enums/MatType.java
new file mode 100644
index 0000000..0b4cfac
--- /dev/null
+++ b/src/main/java/com/zy/api/enums/MatType.java
@@ -0,0 +1,36 @@
+package com.zy.api.enums;
+
+/**
+ * 鐗╂枡绫诲瀷
+ */
+public enum MatType {
+
+ /** 婊よ姱 */
+ LARGE("1", "婊よ姱"),
+ /** 涓欢 */
+ MIDDEL("2", "涓欢"),
+ /** 灏忎欢 */
+ SMALL("3", "灏忎欢");
+
+ public String type;
+
+ public String desc;
+
+ MatType(String type, String desc) {
+ this.type = type;
+ this.desc = desc;
+ }
+
+ public static Long getTag(String type) {
+ if (type.equals(MatType.LARGE.type)) {
+ return Long.parseLong(MatLocType.AUTOMATED.type);
+ } else if (type.equals(MatType.MIDDEL.type)) {
+ return Long.parseLong(MatLocType.SO_HOLDING.type);
+ } else if (type.equals(MatType.SMALL.type)) {
+ return Long.parseLong(MatLocType.EO_HOLDING.type);
+ } else {
+ return null;
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/api/enums/OrderType.java b/src/main/java/com/zy/api/enums/OrderType.java
new file mode 100644
index 0000000..0216467
--- /dev/null
+++ b/src/main/java/com/zy/api/enums/OrderType.java
@@ -0,0 +1,57 @@
+package com.zy.api.enums;
+
+/**
+ * @author Ryan
+ * @version 1.0
+ * @title PurchaseType
+ * @description
+ * @create 2025/3/5 15:54
+ */
+public enum OrderType {
+ //璁㈠崟绫诲瀷
+ ORDER_OUT("out", "鍑哄簱鍗�"),
+ ORDER_IN("in", "鍏ュ簱鍗�"),
+ ORDER_TRANSFER("transfer", "璋冩嫈鍗�"),
+ ORDER_REVISE("revise", "搴撳瓨璋冩暣"),
+ ORDER_CHECK("check", "鐩樼偣鍗�");
+
+
+ OrderType(String type, String desc) {
+ this.type = type;
+ this.desc = desc;
+ }
+
+ public String type;
+ public String desc;
+
+ public static String getTypeVal(String desc) {
+ if (desc.equals(OrderType.ORDER_IN.desc)) {
+ return OrderType.ORDER_IN.type;
+ } else if (desc.equals(OrderType.ORDER_OUT.desc)) {
+ return OrderType.ORDER_OUT.type;
+ } else if (desc.equals(OrderType.ORDER_CHECK.desc)) {
+ return OrderType.ORDER_CHECK.type;
+ } else if (desc.equals(OrderType.ORDER_TRANSFER.desc)) {
+ return OrderType.ORDER_TRANSFER.type;
+ } else if (desc.equals(OrderType.ORDER_REVISE.desc)) {
+ return OrderType.ORDER_REVISE.type;
+ }
+ return null;
+ }
+
+ public static String getValType(String type) {
+ if (type.equals(OrderType.ORDER_IN.type)) {
+ return OrderType.ORDER_IN.desc;
+ } else if (type.equals(OrderType.ORDER_OUT.type)) {
+ return OrderType.ORDER_OUT.desc;
+ } else if (type.equals(OrderType.ORDER_CHECK.type)) {
+ return OrderType.ORDER_CHECK.desc;
+ } else if (type.equals(OrderType.ORDER_TRANSFER.type)) {
+ return OrderType.ORDER_TRANSFER.desc;
+ } else if (type.equals(OrderType.ORDER_REVISE.type)) {
+ return OrderType.ORDER_REVISE.desc;
+ }
+ return null;
+ }
+
+}
diff --git a/src/main/java/com/zy/api/enums/OrderWkType.java b/src/main/java/com/zy/api/enums/OrderWkType.java
new file mode 100644
index 0000000..ee6aab6
--- /dev/null
+++ b/src/main/java/com/zy/api/enums/OrderWkType.java
@@ -0,0 +1,72 @@
+package com.zy.api.enums;
+
+import com.zy.asrs.enums.OrderTypeEnum;
+
+public enum OrderWkType {
+
+ // 璁㈠崟绫诲瀷
+ ORDER_WK_PUR_IN("0", "閲囪喘鍏ュ簱"),
+ ORDER_WK_TRANSFER_IN("1", "璋冩嫈鍏ュ簱"),
+ ORDER_WK_SALE_IN("2", "瀹㈡埛閫�璐�"),
+ ORDER_WK_BAG_IN("5", "绱㈣禂鍏ュ簱"),
+ ORDER_WK_SUPLUS_IN("7", "鎶ユ孩鍏ュ簱"),
+ ORDER_WK_PRO_UPDATE_IN("8", "浠跺彿鍙樻洿鍏ュ簱"),
+ ORDER_WK_PRO_LIXIANG_IN("8", "閫嗗悜涓婃灦鍏ュ簱"),
+ ORDER_WK_MEGER_IN("K", "缁勫悎鎷嗛浂鍏ュ簱"),
+ ORDER_WK_MOVE_IN("Y", "绉诲簱浣嶅叆搴�"),
+ ORDER_WK_ORDER_OUT_EO("12", "EO"),
+ ORDER_WK_ORDER_OUT_SO("11", "SO"),
+ ORDER_WK_ORDER_OUT("13", "MD");
+
+ OrderWkType(String val, String desc) {
+ this.val = val;
+ this.desc = desc;
+ }
+
+ public String val;
+ public String desc;
+
+ public static String getTypeVal(String val) {
+ if (val.equals(OrderWkType.ORDER_WK_PUR_IN.val)
+ || val.equals(OrderWkType.ORDER_WK_SUPLUS_IN.val)
+ || val.equals(OrderWkType.ORDER_WK_MEGER_IN.val)
+ || val.equals(OrderWkType.ORDER_WK_PRO_LIXIANG_IN.val)
+ || val.equals(OrderWkType.ORDER_WK_PRO_UPDATE_IN.val)
+ || val.equals(OrderWkType.ORDER_WK_MOVE_IN.val)) {
+ return OrderType.ORDER_IN.type;
+ } else if (val.equals(OrderWkType.ORDER_WK_TRANSFER_IN.val)) {
+ return OrderType.ORDER_IN.type;
+ } else if (val.equals(OrderWkType.ORDER_WK_SALE_IN.val)) {
+ return OrderType.ORDER_IN.type;
+ } else if (val.equals(OrderWkType.ORDER_WK_BAG_IN.val)) {
+ return OrderType.ORDER_IN.type;
+ } else if (val.equals(OrderWkType.ORDER_WK_ORDER_OUT_EO.val) || val.equals(OrderWkType.ORDER_WK_ORDER_OUT_SO.val) || val.equals(OrderWkType.ORDER_WK_ORDER_OUT.val)) {
+ return OrderType.ORDER_OUT.type;
+ } else {
+ return null;
+ }
+ }
+
+ public static Integer getDocType(String val) {
+ if (val.equals(OrderWkType.ORDER_WK_PUR_IN.val)
+ || val.equals(OrderWkType.ORDER_WK_SUPLUS_IN.val)
+ || val.equals(OrderWkType.ORDER_WK_MEGER_IN.val)
+ || val.equals(OrderWkType.ORDER_WK_PRO_UPDATE_IN.val)
+ || val.equals(OrderWkType.ORDER_WK_MOVE_IN.val)
+ ) {
+ return OrderTypeEnum.PICKING.type;
+ } else if (val.equals(OrderWkType.ORDER_WK_TRANSFER_IN.val)) {
+ return OrderTypeEnum.PICKING.type;
+ } else if (val.equals(OrderWkType.ORDER_WK_SALE_IN.val)) {
+ return OrderTypeEnum.PICKING.type;
+ } else if (val.equals(OrderWkType.ORDER_WK_BAG_IN.val)) {
+ return OrderTypeEnum.PICKING.type;
+ } else if (val.equals(OrderWkType.ORDER_WK_ORDER_OUT_EO.val) || val.equals(OrderWkType.ORDER_WK_ORDER_OUT_SO.val)) {
+ return OrderTypeEnum.TRANSFER.type;
+ } else if (val.equals(OrderWkType.ORDER_WK_ORDER_OUT.val)) {
+ return OrderTypeEnum.STOCK.type;
+ }else {
+ return null;
+ }
+ }
+}
diff --git a/src/main/java/com/zy/api/service/AgvScheduleService.java b/src/main/java/com/zy/api/service/AgvScheduleService.java
new file mode 100644
index 0000000..ca81ddb
--- /dev/null
+++ b/src/main/java/com/zy/api/service/AgvScheduleService.java
@@ -0,0 +1,13 @@
+package com.zy.api.service;
+
+import com.core.common.R;
+import com.zy.api.controller.params.AgvCallBackParam;
+import com.zy.api.entity.CallAgvParams;
+import com.zy.api.entity.dto.HKR;
+
+public interface AgvScheduleService {
+
+ R callAgvCarry(CallAgvParams params);
+
+ HKR callback(AgvCallBackParam params);
+}
diff --git a/src/main/java/com/zy/api/service/KopenApiService.java b/src/main/java/com/zy/api/service/KopenApiService.java
new file mode 100644
index 0000000..128b40f
--- /dev/null
+++ b/src/main/java/com/zy/api/service/KopenApiService.java
@@ -0,0 +1,77 @@
+package com.zy.api.service;
+
+import java.util.List;
+
+import com.zy.api.controller.params.PageRequestParams;
+import com.zy.api.entity.PubOrderParams;
+import com.zy.api.entity.ReportOrderParam;
+import com.zy.api.entity.StockUpOrderParams;
+import com.zy.api.entity.SyncMatParmas;
+import com.zy.api.entity.dto.XSR;
+import com.zy.asrs.entity.Order;
+
+public interface KopenApiService {
+
+
+ /**
+ * 涓婃灦娲惧伐鍗曚笅鍙�
+ * @author Ryan
+ * @date 2025/11/24 14:42
+ * @param params
+ * @return com.core.common.R
+ */
+ XSR receiveOrders(List<PubOrderParams> params, String type);
+
+ /**
+ * 鍩虹闆朵欢鍙樻洿
+ * @author Ryan
+ * @date 2025/11/24 15:04
+ * @param matnrs
+ * @return com.core.common.R
+ */
+ XSR basMatupdate(List<SyncMatParmas> matnrs);
+
+
+ /**
+ * 鏂板鎴栦慨鏀瑰崟鎹俊鎭�
+ * @author Ryan
+ * @date 2025/11/24 15:33
+ */
+ void addOrUpdateOrders(PubOrderParams params, String type) ;
+
+ /**
+ * 涓婃灦娲惧伐鍗曞弽棣�
+ *
+ * @param params
+ * @param order
+ * @return
+ */
+ XSR getInDispatchResult(List<ReportOrderParam> params, Order order);
+
+ /**
+ * 澶囪揣鎸囩ず娲惧伐鍗曚笅鍙�
+ * @param params
+ * @return
+ */
+ XSR sendOutDispatch(List<PubOrderParams> params, String type);
+
+ /**
+ * 澶囪揣鍗曚笅鍙�
+ * @author Ryan
+ * @date 2025/11/24 15:40
+ * @param params
+ * @return com.core.common.R
+ */
+ XSR getOutDetails(List<StockUpOrderParams> params);
+
+ /**
+ * 鏌ヨWMS搴撳瓨淇℃伅
+ * @author Ryan
+ * @date 2025/11/24 15:22
+ * @param params
+ * @return com.core.common.R
+ */
+ XSR getStockInfo(List<PageRequestParams> params);
+
+
+}
diff --git a/src/main/java/com/zy/api/service/WcsApiService.java b/src/main/java/com/zy/api/service/WcsApiService.java
new file mode 100644
index 0000000..ee2e423
--- /dev/null
+++ b/src/main/java/com/zy/api/service/WcsApiService.java
@@ -0,0 +1,87 @@
+package com.zy.api.service;
+
+import com.core.common.R;
+import com.zy.api.controller.params.ReceviceTaskParams;
+import com.zy.api.controller.params.WorkTaskParams;
+import com.zy.asrs.entity.param.CompleteParam;
+
+import java.util.Map;
+import java.util.Set;
+
+public interface WcsApiService {
+
+ /**
+ * 閿佸畾搴撲綅淇℃伅
+ * @author Ryan
+ * @date 2026/1/10 11:17
+ * @param params
+ * @return com.core.common.R
+ */
+ R lockLocs(ReceviceTaskParams params);
+
+// /**
+// * 鍥炲簱鎼繍鎸囦护
+// * @author Ryan
+// * @date 2026/1/10 13:08
+// * @param params
+// * @return com.core.common.R
+// */
+// R backLocs(WorkTaskParams params);
+
+ /**
+ * 涓嬪彂浠诲姟鑷砏CS
+ * @author Ryan
+ * @date 2026/1/10 13:57
+ * @param params
+ * @return com.core.common.R
+ */
+ R pubWrkToWcs(WorkTaskParams params);
+
+//
+// /**
+// * 閿佸畾鎴栭噴鏀惧簱浣�
+// * @author Ryan
+// * @date 2026/1/10 14:35
+// * @param locs
+// * @param type
+// */
+// void reportLockLocs(Set<String> locs, String type);
+
+ /**
+ * 鍫嗗灈鏈轰换鍔″畬鎴愮姸鎬佷笂鎶�
+ * @author Ryan
+ * @date 2026/1/10 16:29
+ * @param params
+ * @return com.core.common.R
+ */
+ R receviceTaskFromWcs(ReceviceTaskParams params);
+
+ /**
+ * 鐛插彇搴綅淇℃伅
+ * @param params
+ * @return
+ */
+ R getLocs(Map<String, String> params);
+
+ /**
+ * 鑾峰彇绔欑偣淇℃伅
+ * @param params
+ * @return
+ */
+ R getStations(Map<String, String> params);
+
+ /**
+ * 鏉$爜绔欐壂鐮佸叆搴撶敵璇�
+ * @param combParam
+ * @param l
+ * @return
+ */
+ R combInPub(CompleteParam combParam, long l);
+
+ /**
+ * WCS鐢宠浠诲姟閲嶆柊鍒嗛厤鍏ュ簱
+ * @param params
+ * @return
+ */
+ R repeatLoc(CompleteParam params);
+}
diff --git a/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java b/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java
new file mode 100644
index 0000000..56afa3d
--- /dev/null
+++ b/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java
@@ -0,0 +1,204 @@
+package com.zy.api.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.R;
+import com.core.exception.CoolException;
+import com.zy.api.controller.params.AgvCallBackParam;
+import com.zy.api.controller.params.AgvCarriesParam;
+import com.zy.api.controller.params.AgvRequestParam;
+import com.zy.api.entity.CallAgvParams;
+import com.zy.api.entity.dto.HKR;
+import com.zy.api.enums.OrderType;
+import com.zy.api.service.AgvScheduleService;
+import com.zy.asrs.entity.LocCache;
+import com.zy.asrs.entity.Task;
+import com.zy.asrs.entity.result.ForwardAGVTaskDTO;
+import com.zy.asrs.entity.result.HIKApiDTO;
+import com.zy.asrs.entity.result.HIKResultDTO;
+import com.zy.asrs.enums.LocStsType;
+import com.zy.asrs.enums.TaskIOType;
+import com.zy.asrs.enums.TaskStatusType;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.LocCacheService;
+import com.zy.asrs.service.TaskService;
+import com.zy.asrs.service.impl.LocCacheServiceImpl;
+import com.zy.common.constant.HIKApiConstant;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Slf4j
+@Service
+public class AgvScheduleServiceImpl implements AgvScheduleService {
+
+ @Autowired
+ private ApiLogService apiLogService;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private LocCacheService locCacheService;
+
+ /**
+ * @author Ryan
+ * @date 2025/11/3
+ * @description: 鍛煎彨AGV鎼繍
+ * @version 1.0
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R callAgvCarry(CallAgvParams params) {
+ if (Objects.isNull(params)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(params.getWrkNo())) {
+ return R.error("浠诲姟鍙蜂笉鑳戒负绌猴紒锛�");
+ }
+
+ Task task = taskService.selectOne(new EntityWrapper<Task>().eq("wrk_no", params.getWrkNo()));
+ if (Objects.isNull(task)) {
+ return R.error("浠诲姟淇℃伅涓嶅瓨鍦紒锛�");
+ }
+
+ if (Arrays.asList(TaskIOType.ALL_IN.type, TaskIOType.PICK_IN.type, TaskIOType.MERGE_IN.type)
+ .contains(task.getIoType())) {
+ // 鍏ュ簱
+ task.setWrkSts(TaskStatusType.AGV_TASK_ISSUED_IN.type);
+ } else if (Arrays.asList(TaskIOType.ALL_OUT.type, TaskIOType.PICK_OUT.type, TaskIOType.MERGE_OUT.type, TaskIOType.EMPTY_OUT.type)
+ .contains(task.getIoType())) {
+ // 鍑哄簱
+ task.setWrkSts(TaskStatusType.AGV_TASK_ISSUED_OUT.type);
+ }
+
+ if (!task.getIsNewIn().equals("M2")) {
+ params.setTaskType(task.getIsNewIn());
+ }
+
+ HIKResultDTO hikResultDTO = sendAgvTask(params, HIKApiConstant.TASK_SUBMIT);
+
+ if (hikResultDTO.isSuccess()) {
+ if (!taskService.updateById(task)) {
+ throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�");
+ }
+ }
+
+ return R.ok();
+ }
+
+ /**
+ * 鑾峰彇鑷畾涔夎姹傚ご
+ *
+ * @return java.util.Map<java.lang.String, java.lang.Object>
+ * @author Ryan
+ * @date 2025/12/29 9:11
+ */
+ private Map<String, Object> getHeaderParam() {
+ Map<String, Object> headerParam = new HashMap<>();
+ //璁剧疆璇锋眰杩炴帴鐨凾oken
+ headerParam.put("X-LR-REQUEST-ID", new Date().getTime() + "");
+ return headerParam;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public HKR callback(AgvCallBackParam params) {
+ if (Objects.isNull(params)) {
+ return HKR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(params.getRobotTaskCode())) {
+ return HKR.error("浠诲姟鍙蜂笉鑳戒负绌猴紒锛�");
+ }
+ Task task = taskService.selectOne(new EntityWrapper<Task>().eq("wrk_no", params.getRobotTaskCode()));
+ if (Objects.isNull(task)) {
+ return HKR.error("浠诲姟淇℃伅涓嶅瓨鍦紒锛�");
+ }
+
+ if (Arrays.asList(TaskIOType.ALL_IN.type, TaskIOType.PICK_IN.type, TaskIOType.MERGE_IN.type)
+ .contains(task.getIoType())) {
+ // 鍏ュ簱
+ if (params.getExtra().getValues().getMethod().equals("start")) {
+ task.setWrkSts(TaskStatusType.AGV_TASK_RUNNING_IN.type);
+ } else if (params.getExtra().getValues().getMethod().equals("end")){
+ task.setWrkSts(TaskStatusType.AGV_TASK_FINISHED_IN.type);
+ }
+ } else if (Arrays.asList(TaskIOType.ALL_OUT.type, TaskIOType.PICK_OUT.type, TaskIOType.MERGE_OUT.type, TaskIOType.EMPTY_OUT.type)
+ .contains(task.getIoType())) {
+ // 鍑哄簱p
+ if (params.getExtra().getValues().getMethod().equals("start")) {
+ task.setWrkSts(TaskStatusType.AGV_TASK_RUNNING_OUT.type);
+ } else if (params.getExtra().getValues().getMethod().equals("end")){
+ task.setWrkSts(TaskStatusType.AGV_TASK_FINISHED_OUT.type);
+ }
+ }
+ if (!taskService.updateById(task)) {
+ throw new CoolException("鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
+ return HKR.ok("鎵ц瀹屾垚 锛侊紒");
+ }
+
+ public HIKResultDTO sendAgvTask(CallAgvParams param, String path) {
+ HIKResultDTO result = new HIKResultDTO();
+ AgvRequestParam requestParam = new AgvRequestParam();
+ requestParam.setTaskType(param.getTaskType());
+ List<AgvCarriesParam> agvCarriesParams = new ArrayList<>();
+
+ AgvCarriesParam carriesParam = new AgvCarriesParam();
+ carriesParam.setSeq(0);
+ carriesParam.setCode(param.getOrgSite());
+
+ agvCarriesParams.add(carriesParam);
+
+ AgvCarriesParam carriesParam2 = new AgvCarriesParam();
+ carriesParam2.setSeq(1);
+ carriesParam2.setCode(param.getTarSite());
+
+ agvCarriesParams.add(carriesParam2);
+
+ requestParam.setRobotTaskCode(param.getWrkNo());
+ requestParam.setTargetRoute(agvCarriesParams);
+
+ String body = JSON.toJSONString(requestParam);
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(HIKApiConstant.AGV_IP)
+ .setPath(path)
+ .setHeaders(getHeaderParam())
+ .setJson(body)
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getString("code").equals("SUCCESS")) {
+ result.setSuccess(true);
+ } else {
+ result.setMessage(jsonObject.getString("message"));
+ log.error("鍙戦�乤gv浠诲姟澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", HIKApiConstant.AGV_IP + path, body, response);
+ }
+ // {"code":"1","data":"","interrupt":false,"message":"閲嶅鎻愪氦","msgErrCode":"0x3a80D012","reqCode":"fa92b49481a44627ae4d80c1400f28f6"}
+ } catch (Exception e) {
+ result.setMessage(e.getMessage());
+ log.error("鍙戦�乤gv浠诲姟寮傚父", e);
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鍙戦�乤gv浠诲姟",
+ HIKApiConstant.AGV_IP + path,
+ null,
+ "127.0.0.1",
+ body,
+ response,
+ result.isSuccess());
+ } catch (Exception e) {
+ log.error("", e);
+ }
+ }
+ return result;
+ }
+
+}
diff --git a/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java b/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
new file mode 100644
index 0000000..634bddb
--- /dev/null
+++ b/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
@@ -0,0 +1,630 @@
+package com.zy.api.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.SnowflakeIdWorker;
+import com.core.exception.CoolException;
+import com.zy.api.controller.params.PageRequestParams;
+import com.zy.api.entity.OrderItemsParam;
+import com.zy.api.entity.OrderParams;
+import com.zy.api.entity.OutOrderParams;
+import com.zy.api.entity.PubOrderParams;
+import com.zy.api.entity.ReportOrderParam;
+import com.zy.api.entity.StockAdjustParams;
+import com.zy.api.entity.StockUpOrderParams;
+import com.zy.api.entity.SyncMatParmas;
+import com.zy.api.entity.dto.LocDetlDto;
+import com.zy.api.entity.dto.XSR;
+import com.zy.api.enums.MatLocType;
+import com.zy.api.enums.OrderType;
+import com.zy.api.enums.OrderWkType;
+import com.zy.api.service.KopenApiService;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.enums.CommonEnum;
+import com.zy.asrs.enums.OrderSettle;
+import com.zy.asrs.enums.OrderTypeEnum;
+import com.zy.asrs.service.*;
+
+import com.zy.asrs.utils.Utils;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Slf4j
+@Service("kopenApiServiceImpl")
+public class KopenApiServiceImpl implements KopenApiService {
+
+ @Autowired
+ private OrderService orderService;
+ @Autowired
+ private OrderDetlService orderDetlService;
+ @Autowired
+ private MatService matService;
+ @Autowired
+ private LocDetlService locDetlService;
+// @Value("${kopen.url}")
+ private String url;
+// @Value("${kopen.port}")
+ private String port;
+// @Value("${kopen.prefix}")
+ private String prefix;
+ @Autowired
+ private BasAreasService basAreasService;
+ @Autowired
+ private OrderPakinService orderPakinService;
+ @Autowired
+ private OrderDetlPakinService orderDetlPakinService;
+ @Autowired
+ private OrderPakoutService orderPakoutService;
+ @Autowired
+ private OrderDetlPakoutService orderDetlPakoutService;
+
+
+ /**
+ * 鎺ユ敹涓嬪彂璁㈠崟淇℃伅
+ *
+ * @param orderParams
+ * @return com.core.common.R
+ * @author Ryan
+ * @date 2025/11/24 14:49
+ */
+ @Override
+ public XSR receiveOrders(List<PubOrderParams> orderParams, String type) {
+ log.info("鎺ユ敹涓嬪彂璁㈠崟淇℃伅鍙傛暟:{}", JSONObject.toJSONString(orderParams));
+ orderParams.forEach(params -> {
+ if (params.getType().equals(OrderWkType.getTypeVal(params.getType()))) {
+ throw new CoolException("褰撳墠绫诲瀷涓嶆槸涓婃灦娲惧伐鍗曪紒锛�");
+ }
+ addOrUpdateOrders(params, type);
+ });
+
+ return XSR.ok("鍗曟嵁涓嬪彂鎴愬姛锛侊紒");
+ }
+
+ /**
+ * 涓婃灦娲惧伐鍗曞弽棣�
+ *
+ * @author Ryan
+ * @date 2025/11/24 15:33
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public XSR getInDispatchResult(List<ReportOrderParam> params, Order order) {
+ log.info("涓婃灦娲惧伐鍗曞弽棣堣姹傚弬鏁�:{}", JSONObject.toJSONString(params));
+ if (Objects.isNull(params)) {
+ return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ String response = null;
+
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(url + ":" + port)
+ .setPath(prefix + "/getInDispatchResult")
+ .setJson(JSONObject.toJSONString(params))
+ .build()
+ .doPost();
+ if (Objects.isNull(response) || response.trim().isEmpty()) {
+ return XSR.error("澶栫綉鎺ュ彛鏃犲搷搴旓紒锛�");
+ }
+ JSONObject jsonObject = JSONObject.parseObject(response);
+ Integer code = jsonObject.getInteger("code");
+ log.info("涓婃灦娲惧伐鍗曡繑鍥炵粨鏋�:{}", JSONObject.toJSONString(response));
+ if (!Objects.isNull(code) && code.equals(200)) {
+ if (!Objects.isNull(order)) {
+ order.setReportOnce(5);
+ order.setSettle(6L);
+ orderService.updateById(order);
+ }
+ return XSR.ok("鍏ュ簱鍗曚笂鎶ュ畬鎴愶紒锛�");
+ } else {
+ if (!Objects.isNull(order)) {
+ int reportOnce = order.getReportOnce();
+ reportOnce++;
+ order.setReportOnce(reportOnce);
+ orderService.updateById(order);
+ }
+ String msg = jsonObject.getString("message");
+ return XSR.error(Objects.isNull(msg) ? "涓婃姤澶辫触锛侊紒" : msg);
+ }
+ } catch (Exception e) {
+ if (!Objects.isNull(order)) {
+ int reportOnce = order.getReportOnce();
+ reportOnce++;
+ order.setReportOnce(reportOnce);
+ orderService.updateById(order);
+ }
+ log.error(e.getMessage(), e);
+ return XSR.error(e.getMessage());
+ }
+ }
+
+ /**
+ * 鑾峰彇鑷畾涔夎姹傚ご
+ *
+ * @return java.util.Map<java.lang.String, java.lang.Object>
+ * @author Ryan
+ * @date 2025/12/29 9:11
+ */
+ private Map<String, Object> getHeaderParam() {
+ Map<String, Object> headerParam = new HashMap<>();
+// headerParam.put("accept", "*/*");
+// headerParam.put("connection", "Keep-Alive");
+ //璁剧疆璇锋眰杩炴帴鐨凾oken
+ headerParam.put("api_key", "WMS");
+ headerParam.put("charset", "UTF-8");
+ headerParam.put("timestamp", new Date());
+ headerParam.put("format", "xml");
+ headerParam.put("signature", "c56ced444ed772098ffeb59537bbfa59");
+
+ return headerParam;
+ }
+
+ /* */
+
+ /**
+ * 澶囪揣鎸囩ず娲惧伐鍗曚笅鍙�
+ *
+ * @param pubOrderParams
+ * @return com.core.common.R
+ * @author Ryan
+ * @date 2025/11/24 15:21
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public XSR sendOutDispatch(List<PubOrderParams> pubOrderParams, String type) {
+ log.info("澶囪揣鎸囩ず娲惧伐鍗曚笅鍙戝弬鏁�:{}", JSONObject.toJSONString(pubOrderParams));
+
+ if (Objects.isNull(pubOrderParams) || pubOrderParams.isEmpty()) {
+ return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ pubOrderParams.forEach(params -> {
+ // 鏍¢獙鍙傛暟
+ if (Objects.isNull(params.getDispatch_no())) {
+ throw new CoolException("娲惧伐鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
+ }
+ if (Objects.isNull(params.getKopen_id())) {
+ throw new CoolException("娴佹按鍙蜂笉鑳戒负绌猴紒锛�");
+ }
+ if (Objects.isNull(params.getCompany_id())) {
+ throw new CoolException("鍏徃ID涓嶈兘涓虹┖锛侊紒");
+ }
+ addOrUpdateOrders(params, type);
+ });
+
+ return XSR.ok("澶囪揣鎸囩ず娲惧伐鍗曚笅鍙戞垚鍔燂紒锛�");
+ }
+
+ // /**
+ // * 澶囪揣鎸囩ず娲惧伐鍗�
+ // *
+ // * @author Ryan
+ // * @date 2025/12/16 9:15
+ // * @param params
+ // */
+ // private void outOrderAddAndUpdate(PubOrderParams params, String type) {
+ // if (Objects.isNull(params)) {
+ // throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ // }
+ // if (Objects.isNull(params.getType())) {
+ // throw new CoolException("璁㈠崟绫诲瀷涓嶈兘涓虹┖锛侊紒");
+ // }
+
+ // OrderParams orderParams =
+ // JSONObject.parseObject(JSONObject.toJSONString(params), OrderParams.class);
+ // Order order = orderService.selectOne(new
+ // EntityWrapper<Order>().eq("order_no", orderParams.getInv_no()));
+ // if (type.equals("add") && !Objects.isNull(order)) {
+ // throw new CoolException("鍗曟嵁宸插瓨鍦�, 涓嶅彲閲嶅娣诲姞锛侊紒");
+ // }
+ // // 鍒ゆ柇璁㈠崟鏄惁瀛樺湪
+ // if (Objects.isNull(order)) {
+ // /** 涓嶅瓨鍦紝鏂板璁㈠崟 */
+ // generateOrders(params);
+ // } else {
+ // /** 瀛樺湪锛屽垹闄よ�佽鍗曪紝鏇存柊鎻掑叆鏂拌鍗� */
+ // // 鍒犻櫎鏃ц鍗曟槑缁�
+ // if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id",
+ // order.getId()))) {
+ // throw new CoolException("璁㈠崟鏄庣粏鍒犻櫎澶辫触锛侊紒");
+ // }
+ // ;
+ // if (!orderService.deleteById(order.getId())) {
+ // throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
+ // }
+ // generateOrders(params);
+ // }
+
+ // }
+
+ /**
+ * 鍩虹闆朵欢鍙樻洿
+ *
+ * @param params
+ * @return com.core.common.R
+ * @author Ryan
+ * @date 2025/11/24 15:05
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public synchronized XSR basMatupdate(List<SyncMatParmas> params) {
+ log.info("鍩虹闆朵欢鍙樻洿:{}", JSONArray.toJSONString(params));
+
+ if (Objects.isNull(params) || params.isEmpty()) {
+ return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ params.forEach(mats -> {
+ if (Objects.isNull(mats)) {
+ throw new CoolException("鐗╂枡缂栫爜涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(mats.getPro_type())) {
+ throw new CoolException("闆朵欢绫诲瀷涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(mats.getPro_id())) {
+ throw new CoolException("渚涘簲鍟嗕笉鑳戒负绌猴紒锛�");
+ }
+ Mat matnr = matService.selectOne(new EntityWrapper<Mat>()
+ .eq("supp_code", mats.getPro_id())
+ .eq("matnr", mats.getPro_komcode()));
+ if (!Objects.isNull(matnr)) {
+ // 璁㈠崟鏃堕棿
+ if (Utils.isValidFormat(mats.getUpdate_time(), "yyyy-MM-dd HH:mm:ss")) {
+ Date date1 = Utils.getFormateDate(mats.getUpdate_time());
+ matnr.setUpdateTime(date1);
+ }
+ matnr.setMaktx(mats.getPro_name());
+ matnr.setSpecs(mats.getPro_size());
+ matnr.setWeight(Objects.isNull(mats.getPro_wet()) ? 0.0 : Double.parseDouble(mats.getPro_wet()));
+ matnr.setSuppCode(mats.getPro_id());
+ matnr.setTagId(MatLocType.getTag(mats.getPro_type()));
+ matnr.setLocType(MatLocType.getTag(mats.getPro_type()));
+ matnr.setManu(mats.getCompany_id());
+ if (!matService.updateById(matnr)) {
+ throw new CoolException("鐗╂枡鏇存柊澶辫触鎴栨棤闇�鏇存柊锛侊紒");
+ }
+ } else {
+ if (Objects.isNull(matnr)) {
+ matnr = new Mat();
+ }
+ // 璁㈠崟鏃堕棿
+ if (Utils.isValidFormat(mats.getUpdate_time(), "yyyy-MM-dd HH:mm:ss")) {
+ Date date1 = Utils.getFormateDate(mats.getUpdate_time());
+ matnr.setUpdateTime(date1);
+ }
+ matnr.setMaktx(mats.getPro_name());
+ matnr.setMatnr(mats.getPro_komcode());
+ matnr.setSpecs(mats.getPro_size());
+ matnr.setWeight(Double.parseDouble(mats.getPro_wet()));
+ matnr.setSuppCode(mats.getPro_id());
+ matnr.setTagId(MatLocType.getTag(mats.getPro_type()));
+ matnr.setLocType(MatLocType.getTag(mats.getPro_type()));
+ matnr.setManu(mats.getCompany_id());
+ if (!matService.insert(matnr)) {
+ throw new CoolException("鐗╂枡鏇存柊澶辫触锛侊紒");
+ }
+ }
+ });
+
+ return XSR.ok("淇濆瓨鎴愬姛锛侊紒");
+ }
+
+ /**
+ * 鏂板鎴栦慨鏀硅鍗曚俊鎭�
+ *
+ * @author Ryan
+ * @date 2025/11/24 15:32
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void addOrUpdateOrders(PubOrderParams params, String type) {
+ if (Objects.isNull(params)) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(params.getType())) {
+ throw new CoolException("璁㈠崟绫诲瀷涓嶈兘涓虹┖锛侊紒");
+ }
+ OrderParams orderParams = JSONObject.parseObject(JSONObject.toJSONString(params), OrderParams.class);
+ // Order order = orderService.selectOne(new
+ // EntityWrapper<Order>().eq("order_no", orderParams.getDispatch_no()));
+ Order order = null;
+ if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) {
+ // 鍏ュ簱
+ order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",
+ orderParams.getDispatch_no()));
+ } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
+ // 鍑哄簱
+ if (OrderWkType.ORDER_WK_ORDER_OUT.val.equals(params.getType())) {
+ // 澶囪揣鍗曞嚭搴�
+ order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",
+ orderParams.getPick_no()));
+ } else if (OrderWkType.ORDER_WK_ORDER_OUT_EO.val.equals(params.getType())
+ || OrderWkType.ORDER_WK_ORDER_OUT_SO.val.equals(params.getType())) {
+ // 澶囪揣鎸囩ず娲惧伐鍗曪紙EO/SO锛夊嚭搴�
+ order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",
+ orderParams.getDispatch_no()));
+ } else {
+ throw new CoolException("鍗曟嵁绫诲瀷涓嶅瓨鍦紝涓嶆敮鎸佹坊鍔狅紒锛�");
+ }
+ } else {
+ throw new CoolException("鍗曟嵁绫诲瀷涓嶅瓨鍦紝涓嶆敮鎸佹坊鍔狅紒锛�");
+ }
+ // 鍑哄簱
+ if (type.equals("add") && !Objects.isNull(order)) {
+ throw new CoolException("鍗曟嵁宸插瓨鍦�, 涓嶅彲閲嶅娣诲姞锛侊紒");
+ }
+ // 鍒ゆ柇璁㈠崟鏄惁瀛樺湪
+ if (Objects.isNull(order)) {
+ /** 涓嶅瓨鍦紝鏂板璁㈠崟 */
+ generateOrders(params, type);
+ } else {
+ if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) {
+ // 鍏ュ簱
+ OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", order.getOrderNo()));
+ if (!Objects.isNull(orderPakin) && orderPakin.getSettle() != 1) {
+ throw new CoolException("璁㈠崟宸插鐞嗭紝涓嶅彲鍐嶅彉鏇达紒锛�");
+ }
+ /** 瀛樺湪锛屽垹闄よ�佽鍗曪紝鏇存柊鎻掑叆鏂拌鍗� */
+ if (!orderDetlPakinService.delete(new EntityWrapper<OrderDetlPakin>().eq("order_no", orderPakin.getOrderNo()))) {
+ throw new CoolException("璁㈠崟鍒犻櫎澶辫触锛侊紒");
+ }
+
+ if (!orderPakinService.delete(new EntityWrapper<OrderPakin>().eq("order_no", orderPakin.getOrderNo()))) {
+ throw new CoolException("涓诲崟鍒犻櫎澶辫触锛侊紒");
+ }
+ } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
+ // 鍑哄簱
+ if (OrderWkType.ORDER_WK_ORDER_OUT_EO.val.equals(params.getType())
+ || OrderWkType.ORDER_WK_ORDER_OUT_SO.val.equals(params.getType()) ||
+ OrderWkType.ORDER_WK_ORDER_OUT.val.equals(params.getType())) {
+ // 澶囪揣鎸囩ず娲惧伐鍗曪紙EO/SO锛夊嚭搴�
+ OrderPakout orderPakin = orderPakoutService.selectOne(new EntityWrapper<OrderPakout>().eq("order_no", order.getOrderNo()));
+ if (!Objects.isNull(orderPakin) && orderPakin.getSettle() != 1) {
+ throw new CoolException("璁㈠崟宸插鐞嗭紝涓嶅彲鍐嶅彉鏇达紒锛�");
+ }
+
+ /** 瀛樺湪锛屽垹闄よ�佽鍗曪紝鏇存柊鎻掑叆鏂拌鍗� */
+ if (!orderPakoutService.delete(new EntityWrapper<OrderPakout>().eq("order_no", orderPakin.getOrderNo()))) {
+ throw new CoolException("璁㈠崟鍒犻櫎澶辫触锛侊紒");
+ }
+
+ if (!orderDetlPakoutService.delete(new EntityWrapper<OrderDetlPakout>().eq("order_no", orderPakin.getOrderNo()))) {
+ throw new CoolException("涓诲崟鍒犻櫎澶辫触锛侊紒");
+ }
+ } else {
+ throw new CoolException("鍗曟嵁绫诲瀷涓嶅瓨鍦紝涓嶆敮鎸佹坊鍔狅紒锛�");
+ }
+ }
+
+ order.setSettle(3L);
+ if (!orderService.updateById(order)) {
+ throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
+ }
+// generateOrders(params, type);
+ }
+ }
+
+ public static String generateUUID(OrderParams params) {
+ return java.util.UUID.randomUUID().toString();
+ }
+
+ /**
+ * 鐢熸垚璁㈠崟淇℃伅
+ *
+ * @param params
+ * @param type
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void generateOrders(PubOrderParams params, String type) {
+ // 灏嗘暟鎹綋鏂拌鍗曟彃鍏�
+ Order newOrder = new Order();
+ // 娲惧伐鍗曞彿
+ newOrder.setOrderNo(params.getDispatch_no());
+ if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) {
+ // 鍏ュ簱
+ newOrder.setPakinPakoutStatus(1);
+ Integer docType = OrderWkType.getDocType(params.getType());
+ newOrder.setDocType(Long.parseLong(docType + ""));
+ newOrder.setNumber(params.getInv_no());
+ } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
+ // 鍑哄簱
+ if (OrderWkType.ORDER_WK_ORDER_OUT.val.equals(params.getType())) {
+ // 澶囪揣鍗曞嚭搴�
+ newOrder.setOrderNo(params.getPick_no());
+ newOrder.setNumber(params.getDispatch_no());
+ newOrder.setShipCode(params.getOrder_no());
+ newOrder.setCstmrName(params.getCus_id());
+ newOrder.setTel(params.getCus_address());
+ newOrder.setDocType(Long.parseLong(OrderTypeEnum.STOCK.type + ""));
+ } else if (OrderWkType.ORDER_WK_ORDER_OUT_EO.val.equals(params.getType())
+ || OrderWkType.ORDER_WK_ORDER_OUT_SO.val.equals(params.getType())) {
+ // 澶囪揣鎸囩ず娲惧伐鍗曪紙EO/SO锛夊嚭搴�
+ newOrder.setDocType(Long.parseLong(OrderTypeEnum.TRANSFER.type + ""));
+ }
+ newOrder.setPakinPakoutStatus(2);
+ }
+
+ newOrder.setUuid(generateUUID(params));
+ newOrder.setShipName(params.getType());
+ // 娴佹按鍙凤紙鍞竴锛�
+ newOrder.setDefNumber(params.getKopen_id());
+// newOrder.setTargetLocation(params.getTarget_location());
+ // 绠卞彿
+ newOrder.setItemName(params.getPm_tktid());
+ newOrder.setSettle(OrderSettle.ORDER_SETTLE_HOLDING.type);
+ newOrder.setStatus(CommonEnum.COMMON_ENUM_Y.type);
+ // 璁㈠崟鏃堕棿
+ if (Utils.isValidFormat(params.getUpdate_time(), "yyyy-MM-dd HH:mm:ss")) {
+ newOrder.setOrderTime(params.getUpdate_time());
+ }
+ // 鍏徃ID
+ newOrder.setCstmrName(params.getCompany_id());
+ newOrder.setCreateTime(new Date());
+ newOrder.setUpdateTime(new Date());
+ if (!orderService.insert(newOrder)) {
+ throw new RuntimeException("鏂板璁㈠崟澶辫触锛侊紒");
+ }
+ if (!Objects.isNull(params.getDetails()) && !params.getDetails().isEmpty()) {
+ List<OrderDetl> orderDetls = new ArrayList<>();
+ params.getDetails().forEach(item -> {
+ Mat matnr = matService.selectOne(new EntityWrapper<Mat>()
+ .eq("supp_code", item.getPro_id())
+ .eq("matnr", item.getPro_komcode()));
+ if (Objects.isNull(matnr)) {
+ throw new CoolException(item.getPro_komcode() + "锛岀墿鏂欑紪鐮佷笉瀛樺湪锛岃缁存姢鍚庡啀鎺ㄩ�侊紒锛�");
+ }
+ OrderDetl orderItem = new OrderDetl();
+ BeanUtils.copyProperties(matnr, orderItem);
+ orderItem.setOrderId(newOrder.getId());
+ orderItem.setOrderNo(newOrder.getOrderNo());
+
+ if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) {
+ // 鍏ュ簱
+ if (type.equals("add")) {
+ orderItem.setAnfme(Math.round(item.getInv_qty() * 10000) / 10000.0);
+ } else {
+ orderItem.setAnfme(Math.round(item.getNew_qty() * 10000) / 10000.0);
+ }
+ } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
+ // 鍑哄簱
+ if (OrderWkType.ORDER_WK_ORDER_OUT.val.equals(params.getType())) {
+ // 澶囪揣鍗曞嚭搴�
+ orderItem.setAnfme(Math.round(item.getPick_qty() * 10000) / 10000.0);
+ } else if (OrderWkType.ORDER_WK_ORDER_OUT_EO.val.equals(params.getType())
+ || OrderWkType.ORDER_WK_ORDER_OUT_SO.val.equals(params.getType())) {
+ // 澶囪揣鎸囩ず娲惧伐鍗曪紙EO/SO锛夊嚭搴�
+ if (type.equals("add")) {
+ orderItem.setAnfme(Math.round(item.getOrder_qty() * 10000) / 10000.0);
+ } else {
+ orderItem.setAnfme(Math.round(item.getNew_qty() * 10000) / 10000.0);
+ }
+ }
+ }
+ orderItem.setMatnr(matnr.getMatnr());
+ orderItem.setMaktx(matnr.getMaktx());
+ orderItem.setBrand(matnr.getBrand());
+ orderItem.setBatch(1 + "");
+ orderItem.setStandby1(item.getPro_id());
+ // 鍏宠仈涓婂姞娲惧伐鍗曞彿+闆朵欢浠g爜+渚涘簲鍟嗕唬鐮�
+ orderItem.setThreeCode(item.getTotal_serial());
+ // 渚涘簲鍟嗕唬鐮�
+ orderItem.setSuppCode(item.getPro_id());
+ orderItem.setCreateTime(new Date());
+ orderItem.setUpdateTime(new Date());
+ orderDetls.add(orderItem);
+ });
+
+ orderDetls.forEach(orderDetl -> {
+ if (!orderDetlService.insert(orderDetl)) {
+ throw new CoolException("璁㈠崟鏄庣粏鏂板澶辫触锛侊紒");
+ }
+ });
+ }
+ }
+
+ /**
+ * 澶囪揣鍗曚笅鍙�
+ *
+ * @param stockUpParams
+ * @return com.core.common.R
+ * @author Ryan
+ * @date 2025/11/24 15:40
+ */
+ @Override
+ public XSR getOutDetails(List<StockUpOrderParams> stockUpParams) {
+ log.info("澶囪揣鍗曚笅鍙戝弬鏁�:{}", JSONArray.toJSONString(stockUpParams));
+
+ if (Objects.isNull(stockUpParams)) {
+ return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ stockUpParams.forEach(params -> {
+ if (Objects.isNull(params.getDispatch_no())) {
+ throw new CoolException("娲惧伐鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
+ }
+ if (Objects.isNull(params.getKopen_id())) {
+ throw new CoolException("娴佹按鍙蜂笉鑳戒负绌猴紒锛�");
+ }
+ if (Objects.isNull(params.getCompany_id())) {
+ throw new CoolException("鍏徃ID涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
+ throw new CoolException("璁㈠崟鏄庣粏涓嶈兘涓虹┖锛侊紒");
+ }
+ List<OrderItemsParam> items = new ArrayList<>();
+ if (params.getDetails() != null) {
+ for (OutOrderParams detail : params.getDetails()) {
+ if (detail.getPartList() != null) {
+ items.addAll(detail.getPartList());
+ }
+ }
+ }
+
+ params.getDetails().forEach(item -> {
+ PubOrderParams pubOrderParams = new PubOrderParams();
+ BeanUtils.copyProperties(params, pubOrderParams);
+ pubOrderParams.setType(item.getType())
+ .setPick_no(item.getPick_no())
+ .setCus_address(item.getCus_address())
+ .setOrder_no(item.getOrder_no())
+ .setUpdate_time(params.getUpdate_time())
+ .setCus_id(item.getCus_id());
+ pubOrderParams.setDetails(item.getPartList());
+ addOrUpdateOrders(pubOrderParams, "add");
+ });
+ });
+
+ return XSR.ok("澶囪揣鍗曚笅鍙戞垚鍔燂紒锛�");
+ }
+
+ /**
+ * 鏌ヨWMS搴撳瓨淇℃伅
+ *
+ * @param params
+ * @return com.core.common.R
+ */
+ @Override
+ public XSR getStockInfo(List<PageRequestParams> params) {
+ if (Objects.isNull(params) || params.isEmpty()) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ List<LocDetl> detls = new ArrayList<>();
+ params.forEach(param -> {
+ List<LocDetl> selectList = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("supp_code", param.getPro_id()).eq("matnr", param.getPro_komcode()));
+ if (selectList != null && !selectList.isEmpty()) {
+ detls.addAll(selectList);
+ }
+ });
+
+ if (detls == null || detls.isEmpty()) {
+ return XSR.ok();
+ }
+ List<LocDetlDto> dtos = new ArrayList<>();
+ detls.forEach(item -> {
+ LocDetlDto locDetlDto = new LocDetlDto();
+ LocDetl barcode = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("zpallet", item.getZpallet()));
+ if (!Objects.isNull(barcode)) {
+ BasAreas areas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("id", barcode.getAreaId()));
+ if (!Objects.isNull(areas)) {
+ locDetlDto.setTarget_location(areas.getName());
+ }
+ }
+ locDetlDto
+ .setPro_komcode(item.getMatnr())
+ .setPro_id(item.getStandby1())
+ .setLocation_no(item.getZpallet());
+ dtos.add(locDetlDto);
+ });
+ return XSR.ok(dtos);
+ }
+
+ private String kopen() {
+ return url + ":" + port + prefix;
+ }
+
+}
diff --git a/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java b/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
new file mode 100644
index 0000000..7f1c539
--- /dev/null
+++ b/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
@@ -0,0 +1,717 @@
+package com.zy.api.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.core.exception.CoolException;
+import com.zy.api.controller.params.ReceviceTaskParams;
+import com.zy.api.controller.params.WorkTaskParams;
+import com.zy.api.entity.dto.LocMastDto;
+import com.zy.api.service.WcsApiService;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.CompleteParam;
+import com.zy.asrs.entity.result.FindLocNoAttributeVo;
+import com.zy.asrs.enums.ContainerType;
+import com.zy.asrs.enums.LocStsType;
+import com.zy.asrs.enums.TaskIOType;
+import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.*;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.constant.MesConstant;
+import com.zy.common.model.LocTypeDto;
+import com.zy.common.model.StartupDto;
+import com.zy.common.service.CommonService;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.IOException;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
+
+@Slf4j
+@Service
+public class WcsApiServiceImpl implements WcsApiService {
+
+ @Autowired
+ private LocMastService locMastService;
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private WorkService workService;
+ @Autowired
+ private WrkDetlService wrkDetlService;
+ @Autowired
+ private MatService matService;
+ @Autowired
+ private LocDetlService locDetlService;
+ @Autowired
+ private RowLastnoService rowLastnoService;
+ @Autowired
+ private OrderDetlPakoutService orderDetlPakoutService;
+ @Autowired
+ private WrkMastLogService wrkMastLogService;
+ @Autowired
+ private WrkDetlLogService wrkDetlLogService;
+ @Autowired
+ private BasContainerService basContainerService;
+ @Autowired
+ private BasDevpService basDevpService;
+ @Autowired
+ private WaitPakinService waitPakinService;
+ @Autowired
+ private CommonService commonService;
+
+ /**
+ * 閫氱煡WCS閿佸畾搴撲綅锛屽強绂佹褰撳墠搴撲綅鐨勪竴鍒囨搷浣�
+ *
+ * @param params
+ * @return com.core.common.R
+ * @author Ryan
+ * @date 2026/1/10 11:18
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R lockLocs(ReceviceTaskParams params) {
+// BasDevice basDevice = basDeviceService.selectOne(new EntityWrapper<BasDevice>()
+// .eq("status", 1)
+// .eq("dev_no", params.getDeviceNo()));
+// if (Objects.isNull(basDevice)) {
+// throw new CoolException("鏈哄彴淇℃伅涓嶅瓨鍦ㄦ垨宸茬鐢紒锛�");
+// }
+// List<LocAroundBind> binds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>().eq("dev_no", basDevice.getDevNo()));
+// if (Objects.isNull(binds) || binds.isEmpty()) {
+// throw new CoolException("鏈哄彴鏈粦瀹氬伐浣滅珯鍙帮紒锛�");
+// }
+// Set<String> locs = binds.stream().map(LocAroundBind::getBlocNo).collect(Collectors.toSet());
+//
+// reportLockLocs(locs, "lock");
+
+ return R.ok("涓婃姤鎴愬姛锛侊紒");
+ }
+
+// /**
+// * 浣欐枡鍥炲簱 锛堟惉杩愪綑鏂欏洖搴擄級
+// *
+// * @param params
+// * @return com.core.common.R
+// * @author Ryan
+// * @date 2026/1/10 13:19
+// */
+// @Override
+// @Transactional(rollbackFor = Exception.class)
+// public R backLocs(WorkTaskParams params) {
+// if (Objects.isNull(params.getWrkNo())) {
+// throw new CoolException("宸ヤ綔鍙蜂笉鑳戒负绌猴紒锛�");
+// }
+//// String wrkCode = params.getTaskNo();
+//// if (wrkCode.contains("-1")) {
+//// throw new CoolException("閰嶅浠诲姟缂栫爜閿欒锛岃妫�鏌ュ悗閲嶆柊涓婁紶锛侊紒");
+//// }
+// WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", params.getWrkNo()));
+// if (Objects.isNull(mast)) {
+// throw new CoolException("浠诲姟涓嶅瓨鍦紒锛�");
+// }
+//// if (!mast.getWrkSts().equals(103L)) {
+//// throw new CoolException("褰撳墠浠诲姟骞堕潪浣欐枡鍑哄簱浠诲姟锛侊紒");
+//// }
+//// if (params.getIsSuplus() == 1) {
+//// mast.setIsSuplus(1);
+//// }
+////
+//// if (!wrkMastService.updateById(mast)) {
+//// throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�");
+//// }
+// workService.backLocOperation(mast.getWrkNo() + "", mast.getAppeUser());
+//
+// return R.ok("鎺ユ敹鎴愬姛锛屾墽琛屽洖搴撲腑...");
+// }
+
+ /**
+ * 涓嬪彂浠诲姟鑷砏CS
+ *
+ * @param params
+ * @return com.core.common.R
+ * @author Ryan
+ * @date 2026/1/10 13:58
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R pubWrkToWcs(WorkTaskParams params) {
+ if (Objects.isNull(params.getTaskNo())) {
+ return R.error("浠诲姟鍙蜂笉鑳戒负绌猴紒锛�");
+ }
+ String url = MesConstant.PUB_TASK_IN;
+ if (!Objects.isNull(params.getType()) && params.getType().equals("out")) {
+ url = MesConstant.PUB_TASK_OUT;
+ }
+ log.info("鍑哄簱浠诲姟涓嬪彂鍙傛暟锛歿}", JSON.toJSONString(params));
+ String response;
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.WCS_URL)
+ .setPath(url)
+ .setJson(JSON.toJSONString(params))
+ .build()
+ .doPost();
+ Map<String, Object> result = JSON.parseObject(response, Map.class);
+ if (result.get("code").equals(200)) {
+ //TODO 涓婃姤鏄惁鎴愬姛
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", params.getTaskNo()));
+ wrkMast.setWrkSts(12L);
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("鏇存柊澶辫触锛侊紒");
+ }
+ } else {
+ throw new CoolException("鍑哄簱涓嬪彂浠诲姟涓嬪彂澶辫触---------------->" + result.get("msg"));
+// return R.error().add(result);
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return R.ok();
+ }
+
+ /**
+ * 鍫嗗灈鏈烘墽琛岀姸鎬佷笂鎶�
+ *
+ * @param params
+ * @return com.core.common.R
+ * @author Ryan
+ * @date 2026/1/10 16:30
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R receviceTaskFromWcs(ReceviceTaskParams params) {
+ if (Objects.isNull(params.getSuperTaskNo())) {
+ throw new CoolException("WMS浠诲姟鍙蜂笉鑳戒负绌猴紒锛�");
+ }
+ if (Objects.isNull(params.getNotifyType())) {
+ throw new CoolException("鍔ㄤ綔绫诲瀷涓嶈兘涓虹┖锛侊紒");
+ }
+ WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", params.getSuperTaskNo()));
+ if (Objects.isNull(mast)) {
+ throw new CoolException("浠诲姟妗d笉瀛樺湪锛侊紒");
+ }
+ log.info("浠诲姟鎵ц鍙傛暟鍥炲啓:{}", JSON.toJSONString(params));
+ if (params.getMsgType().equals("task_complete") || params.getMsgType().equals("station_out_task_run_complete")) {
+ JSONObject json = JSONObject.parseObject(params.getData());
+ log.info(params.getSuperTaskNo() + "==============>{}", json);
+ if (mast.getIoType() == 1 || mast.getIoType() == 11 || mast.getIoType() == 10 || mast.getIoType() == 53 || mast.getIoType() == 54 || mast.getIoType() == 57) {
+ if (params.getMsgType().equals("task_complete")) {
+ if (mast.getIoType() == 53 && !Objects.isNull(json) && json.getInteger("ioType") == 1) {
+ List<WrkDetl> wrkDetls103 = wrkDetlService
+ .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo()));
+ if (wrkDetls103.isEmpty()) {
+ throw new CoolException("鎷f枡鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + mast.getWrkNo());
+ }
+ for (WrkDetl wrkDetl : wrkDetls103) {
+ // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+ OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
+ wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+ wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+ if (orderDetlPakout == null) {
+ orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
+ wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+ wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+ }
+ if (!Cools.isEmpty(orderDetlPakout)) {
+ if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
+ wrkDetl.getMatnr(),
+ orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+ wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+ wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
+ wrkDetl.getAnfme())) {
+ throw new CoolException("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + mast.getWrkNo());
+ }
+ }
+ }
+ mast.setWrkSts(4L);
+ } else if ((mast.getIoType() == 54 || mast.getIoType() == 57) && !Objects.isNull(json) && json.getInteger("ioType") == 1 ) {
+ mast.setWrkSts(4L);
+ } else if (mast.getIoType() != 53 && mast.getIoType() != 54 && mast.getIoType() != 57) {
+ mast.setWrkSts(4L);
+ }
+ }
+ } else if (mast.getIoType() == 101 || mast.getIoType() == 110 || mast.getIoType() == 103 || mast.getIoType() == 104 || mast.getIoType() == 107) {
+ if (mast.getWrkSts() != 14) {
+ //TODO 鎭㈠姝e父鍚庯紝杩欓噷浠g爜瑕佹敞閲婃帀
+// if (mast.getIoType() == 103 || mast.getIoType() == 107) {
+// List<WrkDetl> wrkDetls103 = wrkDetlService
+// .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo()));
+// if (wrkDetls103.isEmpty()) {
+// throw new CoolException("鎷f枡鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + mast.getWrkNo());
+// }
+// for (WrkDetl wrkDetl : wrkDetls103) {
+// // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+// OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
+// wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+// wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+// wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+// if (orderDetlPakout == null) {
+// orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
+// wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+// wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+// wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+// }
+// if (!Cools.isEmpty(orderDetlPakout)) {
+// if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
+// wrkDetl.getMatnr(),
+// orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+// wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+// wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
+// wrkDetl.getAnfme())) {
+// throw new CoolException("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + mast.getWrkNo());
+// }
+// }
+// }
+// }
+ }
+ mast.setWrkSts(14L);
+ }
+ if (!wrkMastService.updateById(mast)) {
+ throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
+ } else if (params.getMsgType().equals("task_cancel")) {
+ //todo 鍙栨秷浠诲姟
+ }
+ return R.ok();
+ }
+
+ /**
+ * 鐛插彇搴綅淇℃伅
+ *
+ * @param params
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R getLocs(Map<String, String> params) {
+ String url = MesConstant.SYN_LOCS;
+ String response;
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.WCS_URL)
+ .setPath(url)
+ .setJson(JSON.toJSONString(params))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSONObject.parseObject(response);
+ if (jsonObject.get("code").equals(200)) {
+ List<LocMastDto> dtos = JSONArray.parseArray(jsonObject.get("data").toString(), LocMastDto.class);
+ dtos.forEach(e -> {
+ LocMast locMast = new LocMast();
+ BeanUtils.copyProperties(e, locMast);
+ locMast.setRow1(e.getRow());
+ locMast.setLev1(e.getLev());
+ locMast.setBay1(e.getBay());
+ System.out.println(JSONObject.toJSON(locMast));
+ if (!locMastService.insert(locMast)) {
+ throw new CoolException("搴撲綅淇濆瓨澶辫触锛侊紒");
+ }
+ });
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return R.ok();
+ }
+
+ @Override
+ public R getStations(Map<String, String> params) {
+ return null;
+ }
+
+ /**
+ * 鏉$爜绔欏叆搴撶敵璇�
+ *
+ * @param param
+ * @param userId
+ * @return
+ */
+ @Override
+ public R combInPub(CompleteParam param, long userId) {
+ if (Objects.isNull(param.getBarcode())) {
+ throw new CoolException("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�");
+ }
+ if (Objects.isNull(param.getSourceStaNo())) {
+ throw new CoolException("绔欑偣涓嶈兘涓虹┖!!");
+ }
+ if (Objects.isNull(param.getLocType1())) {
+ param.setLocType1((short) 1);
+ }
+
+ BasContainer container = basContainerService.selectOne(new EntityWrapper<BasContainer>().eq("barcode", param.getBarcode()));
+ if (Objects.isNull(container)) {
+ throw new CoolException("瀹瑰櫒缂栫爜鏈淮鎶わ紝璇风淮鎶ゅ悗鍐嶆搷浣滐紒锛�");
+ }
+
+ WrkMast barcode = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode()));
+ if (!Objects.isNull(barcode) && (barcode.getIoType() == 104 || barcode.getIoType() == 103 || barcode.getIoType() == 107) && barcode.getWrkSts() == 14L) {
+ //
+ workService.pickWrkMast(barcode.getWrkNo() + "", userId);
+
+ Map<String, Object> response = new HashMap<>();
+ response.put("taskNo", barcode.getWrkNo());
+ response.put("locNo", barcode.getLocNo());
+ response.put("taskPri", barcode.getIoPri());
+
+ return R.ok("浠诲姟鐢熸垚鎴愬姛").add(response);
+ } else {
+ log.info("WCS浠诲姟鐢熸垚璇锋眰鍙傛暟锛歿}", JSONObject.toJSONString(param));
+
+ BasDevp station = basDevpService.selectOne(new EntityWrapper<BasDevp>()
+ .eq("dev_no", param.getSourceStaNo()));
+ if (Objects.isNull(station)) {
+ throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
+ }
+ Map<String, Object> response = new HashMap<>();
+
+ if (Objects.isNull(barcode)) {
+ List<WaitPakin> waitPakins = waitPakinService
+ .selectList(new EntityWrapper<WaitPakin>()
+ .eq("io_status", "N")
+ .eq("zpallet", param.getBarcode()));
+ if (Objects.isNull(waitPakins) || waitPakins.isEmpty()) {
+ throw new CoolException("鏁版嵁閿欒,缁勬嫋妗e凡涓嶅瓨鍦�!!");
+ }
+
+ WrkMast wrkMast = generateCrnInTask(waitPakins, station, param.getLocType1(), userId);
+
+ response.put("taskNo", wrkMast.getWrkNo());
+ response.put("locNo", wrkMast.getLocNo());
+ response.put("taskPri", wrkMast.getIoPri());
+ } else {
+ response.put("taskNo", barcode.getWrkNo());
+ response.put("locNo", barcode.getLocNo());
+ response.put("taskPri", barcode.getIoPri());
+ }
+
+ return R.ok("浠诲姟鐢熸垚鎴愬姛").add(response);
+ }
+ }
+
+ /**
+ * 鐢熸垚鍫嗗灈鏈哄叆搴撲换鍔�
+ *
+ * @param station
+ * @author Ryan
+ * @date 2025/12/9 13:54
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public WrkMast generateCrnInTask(List<WaitPakin> waitPakins, BasDevp station, Short locType, Long userId) {
+ Date now = new Date();
+
+ BasDevp sourceStaNo = basDevpService.checkSiteStatus(station.getDevNo(), true);
+ sourceStaNo.setLocType1(locType);
+ LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+ WaitPakin pakin = waitPakins.stream().findFirst().get();
+ FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(pakin);
+
+ WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", pakin.getZpallet()));
+ WrkMast wrkMast = new WrkMast();
+ String locNo;
+ if (!Objects.isNull(mast)) {
+ if (mast.getIoType().equals(TaskIOType.MERGE_OUT.type) || mast.getIoType().equals(TaskIOType.PICK_OUT.type) || mast.getIoType().equals(TaskIOType.CHECK_OUT.type)) {
+ int ioType = mast.getIoType() - 50;
+
+ List<WrkDetl> wrkDetls103 = wrkDetlService
+ .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (wrkDetls103.isEmpty()) {
+ ioType = 10;
+ }
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
+ if (!Objects.isNull(locDetls) && !locDetls.isEmpty()) {
+ Double sum = wrkDetls103.stream().mapToDouble(WrkDetl::getAnfme).sum();
+ Double summed = locDetls.stream().mapToDouble(LocDetl::getAnfme).sum();
+ if (summed.compareTo(sum) <= 0) {
+ ioType = 10;
+ }
+ }
+ mast.setIoType(ioType);
+ mast.setWrkSts(2L);
+ mast.setSourceStaNo(mast.getSourceStaNo());
+ mast.setStaNo(mast.getSourceStaNo());
+ mast.setLocNo(mast.getSourceLocNo());
+ boolean res = wrkMastService.updateById(mast);
+ BeanUtils.copyProperties(mast, wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ locNo = mast.getLocNo();
+ // 鏇存柊婧愮珯鐐逛俊鎭�
+ sourceStaNo.setWrkNo(mast.getWrkNo());
+ sourceStaNo.setModiTime(now);
+ if (!basDevpService.updateById(sourceStaNo)) {
+ throw new CoolException("鏇存柊婧愮珯澶辫触");
+ }
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(mast.getLocNo());
+ if (locMast.getLocSts().equals("O")) {
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(mast.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+ }
+ } else {
+ throw new CoolException("鎵樼洏宸插瓨鍦ㄤ换鍔℃。锛侊紒");
+ }
+ } else {
+ StartupDto dto = commonService.getLocNo(1, sourceStaNo.getDevNo(), findLocNoAttributeVo, locTypeDto);
+
+ int workNo = dto.getWorkNo();
+ // 鐢熸垚宸ヤ綔妗�
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(dto.getSourceStaNo() + "");
+ wrkMast.setStaNo(!Objects.isNull(dto.getStaNo()) ? dto.getStaNo() + "" : null);
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setIoPri(13D); // 浼樺厛绾�
+ wrkMast.setBarcode(pakin.getZpallet()); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setModiUser(userId);
+ wrkMast.setAppeUser(userId);
+ wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ locNo = dto.getLocNo();
+ // 鏇存柊婧愮珯鐐逛俊鎭�
+ sourceStaNo.setWrkNo(workNo);
+ sourceStaNo.setModiTime(now);
+ if (!basDevpService.updateById(sourceStaNo)) {
+ throw new CoolException("鏇存柊婧愮珯澶辫触");
+ }
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("O")) {
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+ }
+ }
+
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ waitPakins.forEach(waitPakin -> {
+ if (!Objects.isNull(waitPakin.getMatnr())) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(waitPakin);
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setIoTime(wrkMast.getIoTime());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ } else {
+ wrkMast.setWrkSts(2L);
+ wrkMast.setIoType(10);
+ wrkMastService.updateById(wrkMast);
+ }
+ });
+
+ // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
+ Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
+ .eq("zpallet", pakin.getZpallet());
+
+ WaitPakin setParam = new WaitPakin();
+ setParam.setLocNo(locNo);
+ setParam.setIoStatus("Y");
+ setParam.setModiTime(now);
+ if (!waitPakinService.update(setParam, wrapper)) {
+ throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+ }
+
+ return wrkMast;
+ }
+
+ /**
+ * WCS鐢宠浠诲姟閲嶆柊鍒嗛厤鍏ュ簱
+ *
+ * @param params
+ * @return
+ */
+ @Override
+ public R repeatLoc(CompleteParam params) {
+ if (Objects.isNull(params.getTaskNo())) {
+ return R.error("宸ヤ綔鍙蜂笉鑳戒负绌猴紒锛�");
+ }
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", params.getTaskNo()));
+ if (Objects.isNull(wrkMast)) {
+ WrkMastLog wrkLog = wrkMastLogService.selectOne(new EntityWrapper<WrkMastLog>()
+ .eq("loc_no", params.getLocNo())
+ .eq("wrk_no", params.getTaskNo()));
+
+ wrkMast = new WrkMast();
+ BeanUtils.copyProperties(wrkLog, wrkMast);
+
+// return R.error("浠诲姟妗d笉瀛樺湪锛屾垨宸插姞鍏ュ巻鍙叉。");
+ }
+ LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+ if (Objects.isNull(locMast)) {
+ return R.error("搴撲綅淇℃伅涓嶅瓨鍦紒锛�");
+ }
+
+ Integer whsType = Utils.GetWhsType(Integer.parseInt(wrkMast.getSourceStaNo()));
+ if (whsType.equals(1)) {
+ RowLastno lastno = rowLastnoService.selectById(whsType);
+ if (Objects.isNull(lastno)) {
+ return R.error("鍫嗗灈瑕佺瓥鐣ヤ笉瀛樺湪锛侊紒");
+ }
+ if (locMast.getRow1().equals(141)) {
+ LocMast selectOne = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .ne("row1", 141)
+ .ge("crn_no", lastno.getsCrnNo())
+ .le("crn_no", lastno.geteCrnNo())
+ .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+ .orderAsc(Arrays.asList("row1", "bay1", "lev1")));
+ if (!Objects.isNull(selectOne)) {
+ Map<String, Object> response = new HashMap<>();
+ response.put("locNo", selectOne.getLocNo());
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
+ locDetls.forEach(locDetl -> {
+ String locNo = locDetl.getLocNo();
+ locDetl.setLocNo(selectOne.getLocNo());
+ if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>()
+ .eq("loc_no", locNo)
+ .eq("supp_code", locDetl.getSuppCode())
+ .eq("matnr", locDetl.getMatnr()))) {
+ throw new CoolException("搴撲綅鏇存柊澶辫触锛侊紒");
+ }
+ });
+
+ //鏂板簱浣嶉绾﹀叆搴�
+ selectOne.setBarcode(locMast.getBarcode());
+ selectOne.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
+ locMastService.updateById(selectOne);
+
+ wrkMast.setLocNo(selectOne.getLocNo());
+ wrkMast.setWrkSts(2L);
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMastService.updateById(wrkMast);
+
+
+ //鍘熷簱浣嶇疆绌�
+ locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+ locMast.setBarcode(null);
+ locMastService.updateById(locMast);
+
+ return R.ok().add(response);
+ } else {
+ return R.error("鏆傛棤鍙敤搴撲綅锛侊紒");
+ }
+ } else {
+ LocMast selectOne = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("crn_no", wrkMast.getCrnNo())
+ .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+ .orderAsc(Arrays.asList("row1", "bay1", "lev1")));
+ if (!Objects.isNull(selectOne)) {
+ Map<String, Object> response = new HashMap<>();
+ response.put("locNo", selectOne.getLocNo());
+
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
+ locDetls.forEach(locDetl -> {
+ String locNo = locDetl.getLocNo();
+ locDetl.setLocNo(selectOne.getLocNo());
+ if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>()
+ .eq("loc_no", locNo)
+ .eq("supp_code", locDetl.getSuppCode())
+ .eq("matnr", locDetl.getMatnr()))) {
+ throw new CoolException("搴撲綅鏇存柊澶辫触锛侊紒");
+ }
+ });
+
+ //鏂板簱浣嶉绾﹀叆搴�
+ selectOne.setBarcode(locMast.getBarcode());
+ selectOne.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
+ locMastService.updateById(selectOne);
+
+ wrkMast.setLocNo(selectOne.getLocNo());
+ wrkMast.setWrkSts(2L);
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMastService.updateById(wrkMast);
+
+
+ //鍘熷簱浣嶇疆绌�
+ locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+ locMast.setBarcode(null);
+ locMastService.updateById(locMast);
+
+ return R.ok().add(response);
+ } else {
+ return R.error("鏆傛棤鍙敤搴撲綅锛侊紒");
+ }
+ }
+ } else {
+ LocMast selectOne = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("crn_no", wrkMast.getCrnNo())
+ .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+ .orderAsc(Arrays.asList("row1", "bay1", "lev1")));
+ if (!Objects.isNull(selectOne)) {
+ Map<String, Object> response = new HashMap<>();
+ response.put("locNo", selectOne.getLocNo());
+
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
+ locDetls.forEach(locDetl -> {
+ String locNo = locDetl.getLocNo();
+ locDetl.setLocNo(selectOne.getLocNo());
+ if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>()
+ .eq("loc_no", locNo)
+ .eq("supp_code", locDetl.getSuppCode())
+ .eq("matnr", locDetl.getMatnr()))) {
+ throw new CoolException("搴撲綅鏇存柊澶辫触锛侊紒");
+ }
+ });
+
+ //鏂板簱浣嶉绾﹀叆搴�
+ selectOne.setBarcode(locMast.getBarcode());
+ selectOne.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
+ locMastService.updateById(selectOne);
+
+ wrkMast.setLocNo(selectOne.getLocNo());
+ wrkMast.setWrkSts(2L);
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMastService.updateById(wrkMast);
+
+
+ //鍘熷簱浣嶇疆绌�
+ locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+ locMast.setBarcode(null);
+ locMastService.updateById(locMast);
+
+ return R.ok().add(response);
+ } else {
+ return R.error("鏆傛棤鍙敤搴撲綅锛侊紒");
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/zy/asrs/controller/BasStationDetlController.java b/src/main/java/com/zy/asrs/controller/BasStationDetlController.java
new file mode 100644
index 0000000..2f417ce
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasStationDetlController.java
@@ -0,0 +1,123 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.DateUtils;
+import com.zy.asrs.entity.BasStationDetl;
+import com.zy.asrs.service.BasStationDetlService;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class BasStationDetlController extends BaseController {
+
+ @Autowired
+ private BasStationDetlService basStationDetlService;
+
+ @RequestMapping(value = "/basStationDetl/{id}/auth")
+ @ManagerAuth
+ public R get(@PathVariable("id") String id) {
+ return R.ok(basStationDetlService.selectById(String.valueOf(id)));
+ }
+
+ @RequestMapping(value = "/basStationDetl/list/auth")
+ @ManagerAuth
+ public R list(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param){
+ EntityWrapper<BasStationDetl> wrapper = new EntityWrapper<>();
+ excludeTrash(param);
+ convert(param, wrapper);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+ return R.ok(basStationDetlService.selectPage(new Page<>(curr, limit), wrapper));
+ }
+
+ private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ String val = String.valueOf(entry.getValue());
+ if (val.contains(RANGE_TIME_LINK)){
+ String[] dates = val.split(RANGE_TIME_LINK);
+ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+ wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+ } else {
+ wrapper.like(entry.getKey(), val);
+ }
+ }
+ }
+
+ @RequestMapping(value = "/basStationDetl/add/auth")
+ @ManagerAuth
+ public R add(BasStationDetl basStationDetl) {
+ basStationDetlService.insert(basStationDetl);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/basStationDetl/update/auth")
+ @ManagerAuth
+ public R update(BasStationDetl basStationDetl){
+ if (Cools.isEmpty(basStationDetl) || null==basStationDetl.getId()){
+ return R.error();
+ }
+ basStationDetlService.updateById(basStationDetl);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/basStationDetl/delete/auth")
+ @ManagerAuth
+ public R delete(@RequestParam(value="ids[]") Long[] ids){
+ for (Long id : ids){
+ basStationDetlService.deleteById(id);
+ }
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/basStationDetl/export/auth")
+ @ManagerAuth
+ public R export(@RequestBody JSONObject param){
+ EntityWrapper<BasStationDetl> wrapper = new EntityWrapper<>();
+ List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+ Map<String, Object> map = excludeTrash(param.getJSONObject("basStationDetl"));
+ convert(map, wrapper);
+ List<BasStationDetl> list = basStationDetlService.selectList(wrapper);
+ return R.ok(exportSupport(list, fields));
+ }
+
+ @RequestMapping(value = "/basStationDetlQuery/auth")
+ @ManagerAuth
+ public R query(String condition) {
+ EntityWrapper<BasStationDetl> wrapper = new EntityWrapper<>();
+ wrapper.like("id", condition);
+ Page<BasStationDetl> page = basStationDetlService.selectPage(new Page<>(0, 10), wrapper);
+ List<Map<String, Object>> result = new ArrayList<>();
+ for (BasStationDetl basStationDetl : page.getRecords()){
+ Map<String, Object> map = new HashMap<>();
+ map.put("id", basStationDetl.getId());
+ map.put("value", basStationDetl.getId());
+ result.add(map);
+ }
+ return R.ok(result);
+ }
+
+ @RequestMapping(value = "/basStationDetl/check/column/auth")
+ @ManagerAuth
+ public R query(@RequestBody JSONObject param) {
+ Wrapper<BasStationDetl> wrapper = new EntityWrapper<BasStationDetl>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+ if (null != basStationDetlService.selectOne(wrapper)){
+ return R.parse(BaseRes.REPEAT).add(getComment(BasStationDetl.class, String.valueOf(param.get("key"))));
+ }
+ return R.ok();
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 1f5a85f..9f957bc 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -1,14 +1,16 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
import com.core.annotations.AppAuth;
import com.core.common.*;
import com.core.exception.CoolException;
-import com.zy.asrs.entity.param.MatSyncParam;
-import com.zy.asrs.entity.param.OpenOrderCompleteParam;
-import com.zy.asrs.entity.param.OpenOrderPakinParam;
-import com.zy.asrs.entity.param.OpenOrderPakoutParam;
-import com.zy.asrs.service.OpenService;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.AxisBean;
+import com.zy.asrs.entity.param.*;
+import com.zy.asrs.mapper.ReportQueryMapper;
+import com.zy.asrs.service.*;
import com.zy.common.model.DetlDto;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
@@ -16,9 +18,9 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
/**
* Created by vincent on 2022/4/8
@@ -35,27 +37,192 @@
@Autowired
private OpenService openService;
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private WorkService workService;
+ @Autowired
+ private WrkDetlService wrkDetlService;
+ @Autowired
+ private ReportQueryMapper reportQueryMapper;
+ @Autowired
+ private LocDetlService locDetlService;
+ @Autowired
+ private MatService matService;
+ @Autowired
+ private WaitPakinService waitPakinService;
+ @Autowired
+ private BasStationService basStationService;
+ @Autowired
+ private BasStationDetlService basStationDetlService;
- @PostMapping("/order/matSync/default/v2")
-// @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛")
- public synchronized R syncMatInfoV2(@RequestHeader(required = false) String appkey,
- @RequestBody(required = false) MatSyncParam.MatParam param,
- HttpServletRequest request) {
-
- auth(appkey, param, request);
+ /**
+ * 缁勬墭鏌ヨ鎺ュ彛
+ */
+ @PostMapping("/queryComb")
+ public synchronized R queryComb(@RequestBody QueryCombParam param) {
if (Cools.isEmpty(param)) {
return R.parse(BaseRes.PARAM);
}
- MatSyncParam matSyncParam = new MatSyncParam();
- List<MatSyncParam.MatParam> objects = new ArrayList<>();
- objects.add(param);
- matSyncParam.matDetails = objects;
- openService.syncMat(matSyncParam);
- return R.ok();
+ if (Cools.isEmpty(param.getBarcode())) {
+ return R.error("鎵樼洏鐮乕barcode]涓嶈兘涓虹┖");
+ }
+
+ List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
+
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("barcode", param.getBarcode());
+ map.put("combDetls", waitPakins);
+ return R.ok().add(map);
+ }
+
+ /**
+ * 浠诲姟鏌ヨ鎺ュ彛
+ */
+ @PostMapping("/queryTask")
+ public synchronized R queryTask(@RequestBody QueryTaskParam param) {
+ if (Cools.isEmpty(param)) {
+ return R.parse(BaseRes.PARAM);
+ }
+ HashMap<String, Object> map = new HashMap<>();
+
+ if (param.getTaskType().equals("crn")) {
+ if (Cools.isEmpty(param.getTaskNo())) {
+ return R.error("浠诲姟鍙穂taskNo]涓嶈兘涓虹┖");
+ }
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",param.getTaskNo()));
+ if (wrkMast == null) {
+ return R.error("浠诲姟涓嶅瓨鍦�");
+ }
+
+ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(Integer.valueOf(param.getTaskNo()));
+ map.put("taskNo", param.getTaskNo());
+ map.put("ioType", wrkMast.getIoType());
+ map.put("wrkDetls", wrkDetls);
+ } else {
+ BasStation basStation = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", param.getAgvSite()));
+ if (Objects.isNull(basStation)) {
+ return R.error("绔欑偣涓嶅瓨鍦紝璇疯仈绯荤鐞嗗憳妫�鏌ョ珯鐐逛俊鎭紒锛�");
+ }
+ List<BasStationDetl> basStationDetls = basStationDetlService.selectList(new EntityWrapper<BasStationDetl>().eq("dev_no", param.getAgvSite()));
+ map.put("taskNo", param.getAgvSite());
+ map.put("ioType", 1);
+ map.put("wrkDetls", basStationDetls);
+ }
+ return R.ok().add(map);
+ }
+
+ /**
+ * 搴撳瓨淇℃伅鏌ヨ鎺ュ彛
+ */
+ @GetMapping("/queryLoc")
+ public synchronized R queryLoc() {
+ List<Map<String, Object>> pie = new ArrayList<>();
+ LocChartPie locUseRate = reportQueryMapper.getLocUseRate();
+
+ if (locUseRate != null) {
+ Map<String, Object> map = new HashMap<>();
+ map.put("name", "鍦ㄥ簱");
+ map.put("value", locUseRate.getFqty());
+ pie.add(map);
+
+ Map<String, Object> map1 = new HashMap<>();
+ map1.put("name", "绌�");
+ map1.put("value", locUseRate.getOqty());
+ pie.add(map1);
+
+ Map<String, Object> map2 = new HashMap<>();
+ map2.put("name", "浣跨敤");
+ map2.put("value", locUseRate.getUqty());
+ pie.add(map2);
+
+ Map<String, Object> map3 = new HashMap<>();
+ map3.put("name", "绂佺敤");
+ map3.put("value", locUseRate.getXqty());
+ pie.add(map3);
+ }
+
+ // 鎬诲簱浣嶆暟
+ Integer total = (int) Arith.add(0, locUseRate.getFqty(), locUseRate.getOqty(), locUseRate.getUqty(), locUseRate.getXqty());
+ // 浣跨敤涓�
+ Integer used = locUseRate.getFqty() + locUseRate.getUqty();
+ // 搴撲綅浣跨敤鐜�
+ double usedDivides = Arith.divides(3, used, total);
+ double usedPr = Arith.multiplys(1, usedDivides, 100);
+
+ return R.ok(
+ Cools.add("pie", pie)
+ .add("stockCount", locUseRate.getFqty())
+ .add("emptyCount", locUseRate.getOqty())
+ .add("disableCount", locUseRate.getXqty())
+ .add("total", total)
+ .add("used", used)
+ .add("usedPr", usedPr)
+ );
+ }
+
+
+ @GetMapping("/line/charts")
+ public R locIoLineCharts(){
+ Map<String,Object> map=new HashMap<String, Object>();
+ List<com.zy.asrs.entity.AxisBean> list = new ArrayList<AxisBean>();
+
+ List<WorkChartAxis> listChart = reportQueryMapper.getChartAxis();
+
+ if(listChart!=null) {
+ ArrayList<Integer> data1 = new ArrayList<Integer>();
+ ArrayList<Integer> data2 = new ArrayList<Integer>();
+
+ SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.DATE, -12);
+ for(int i=0;i<12;i++) {
+ boolean flag = true;
+ calendar.add(Calendar.DATE, 1);
+ String str = sf.format(calendar.getTime());
+ for(WorkChartAxis workChart : listChart) {
+ if(str.equals(workChart.getYmd())) {
+ data1.add(workChart.getInqty());
+ data2.add(workChart.getOutqty());
+ flag = false;
+ break;
+ }
+ }
+ if(flag) {
+ data1.add(0);
+ data2.add(0);
+ }
+ }
+ AxisBean inqty = new AxisBean();
+ inqty.setName("鍏ュ簱鏁伴噺");
+ Integer[] array1 = new Integer[data1.size()];
+ inqty.setData(data1.toArray(array1));
+ list.add(inqty);
+ AxisBean outqty = new AxisBean();
+ outqty.setName("鍑哄簱鏁伴噺");
+ Integer[] array2 = new Integer[data2.size()];
+ outqty.setData(data2.toArray(array2));
+ list.add(outqty);
+ }
+ map.put("rows",list);
+ return R.ok(map);
+ }
+
+ @GetMapping("/locDetl/statistics")
+ public R locDetlStatistics(){
+ HashMap<String, Object> param = new HashMap<>();
+ Page<LocDetl> stockStatis = locDetlService.getStockStatis(toPage(1, 100, param, LocDetl.class));
+ for (LocDetl locDetl : stockStatis.getRecords()) {
+ Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+ if (mat != null) {
+ locDetl.sync(mat);
+ }
+ }
+ return R.ok(stockStatis);
}
@PostMapping("/order/matSync/default/v1")
-// @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛")
+ @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛")
public synchronized R syncMatInfo(@RequestHeader(required = false) String appkey,
@RequestBody(required = false) MatSyncParam param,
HttpServletRequest request) {
@@ -111,7 +278,7 @@
/**
* 鍏ュ簱鍗曞洖鍐�
*/
-// @PostMapping("/order/pakin/complete/default/v1")
+ @PostMapping("/order/pakin/complete/default/v1")
public synchronized R orderPakinComplete(@RequestHeader(required = false) String appkey,
@RequestBody(required = false) OpenOrderCompleteParam param,
HttpServletRequest request) {
@@ -131,6 +298,12 @@
if (Cools.isEmpty(param)) {
return R.parse(BaseRes.PARAM);
}
+ if (Cools.isEmpty(param.getLgort())) {
+ return R.error("鍗曟嵁缂栧彿[lgort]涓嶈兘涓虹┖");
+ }
+ if (!param.getLgort().equals("5006")) {
+ return R.ok();
+ }
if (Cools.isEmpty(param.getOrderNo())) {
return R.error("鍗曟嵁缂栧彿[orderNo]涓嶈兘涓虹┖");
}
@@ -147,7 +320,7 @@
/**
* 鍑哄簱鍗曞洖鍐�
*/
-// @PostMapping("/order/pakout/complete/default/v1")
+ @PostMapping("/order/pakout/complete/default/v1")
public synchronized R orderPakoutComplete(@RequestHeader(required = false) String appkey,
@RequestBody(required = false) OpenOrderCompleteParam param,
HttpServletRequest request) {
@@ -219,4 +392,137 @@
System.out.println(JSON.toJSONString(param1));
}
+ /*********************************鍚屾鐗╂枡妗f鍜岃鍗�****************************************************/
+
+ /*********************************wcs鎺ュ彛瀵规帴****************************************************/
+
+ /**
+ * 浠诲姟寮�濮�
+ */
+ @RequestMapping("/start/task")
+ public HashMap<String, Object> startTask(@RequestBody HashMap<String, Object> map) {
+ String taskNo = map.get("TaskNo") + "";
+ HashMap<String, Object> map1 = new HashMap<>();
+ if (Cools.isEmpty(taskNo)) {
+ map1.put("ReturnStatus", "1");
+ map1.put("ErrorMessage", "浠诲姟鍙蜂负绌�");
+ } else {
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo)));
+ if (wrkMast == null) {
+ map1.put("ReturnStatus", "1");
+ map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�" + taskNo);
+ } else {
+ if (wrkMast.getIoType() == 1||wrkMast.getIoType() == 57|| wrkMast.getIoType() == 53) {
+ wrkMast.setWrkSts(3L);//鍏ュ簱寮�濮�
+ } else if (wrkMast.getIoType() == 11 ||wrkMast.getIoType() == 107|| wrkMast.getIoType() == 103 ) {
+ wrkMast.setWrkSts(13L);//鍑哄簱寮�濮�
+ }
+ wrkMast.setModiTime(new Date());
+ if (wrkMastService.updateById(wrkMast)) {
+ log.info("WMS浠诲姟寮�濮嬫洿鏂�"+wrkMast);
+ map1.put("ReturnStatus", "0");
+ map1.put("ErrorMessage", "");
+ } else {
+ map1.put("ReturnStatus", "1");
+ map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�" + wrkMast);
+ }
+ }
+ }
+ return map1;
+ }
+
+ /**
+ * 鎼繍鍒扮洰鐨勫湴
+ */
+ @RequestMapping("/destination/task")
+ public HashMap<String, Object> destinationTask(@RequestBody HashMap<String, Object> map) {
+ String taskNo = map.get("TaskNo") + "";
+ HashMap<String, Object> map1 = new HashMap<>();
+ if (Cools.isEmpty(taskNo)) {
+ map1.put("ReturnStatus", "1");
+ map1.put("ErrorMessage", "浠诲姟鍙蜂负绌�");
+ } else {
+ //浠诲姟瀹屾垚
+ if (map.get("Result").equals(1)) {
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo)));
+ if (wrkMast == null) {
+ map1.put("ReturnStatus", "1");
+ map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�" + taskNo);
+ } else {
+ if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10) {
+ wrkMast.setWrkSts(4L);//浠诲姟缁撴潫
+ } else if (wrkMast.getIoType() == 101) {
+ wrkMast.setWrkSts(13L);//鍑哄簱鍒扮珯鐐逛笂
+ } else if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) {
+ wrkMast.setWrkSts(4L);//4.浠诲姟缁撴潫
+ } else if (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107 || wrkMast.getIoType() == 110) {
+ wrkMast.setWrkSts(14L);
+ }else if(wrkMast.getIoType() == 11) {
+ wrkMast.setWrkSts(4L);
+ }
+ wrkMast.setModiTime(new Date());
+ if (wrkMastService.update(wrkMast,new EntityWrapper<WrkMast>().eq("wrk_no",wrkMast.getWrkNo()))) {
+ log.info("WMS浠诲姟瀹屾垚鏇存柊"+wrkMast);
+ map1.put("ReturnStatus", "0");
+ map1.put("ErrorMessage", "");
+ } else {
+ map1.put("ReturnStatus", "1");
+ map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�" + wrkMast);
+ }
+ }
+ } else {
+ //浠诲姟鍙栨秷
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo)));
+ if (wrkMast == null) {
+ map1.put("ReturnStatus", "1");
+ map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�" + taskNo);
+ return map1;
+ }
+ workService.cancelWrkMast(String.valueOf(wrkMast.getWrkNo()),9999L);
+ map1.put("ReturnStatus", "0");
+ map1.put("ErrorMessage", "");
+ }
+ }
+ return map1;
+ }
+
+ /**
+ * 鍑哄簱---鐩殑鍦版惉绂�
+ */
+ @RequestMapping("/leave/task")
+ public R leaveTask(@RequestBody HashMap<String, Object> map) {
+ String taskNo = String.valueOf(map.get("taskNo"));
+ String status = String.valueOf(map.get("status"));
+ HashMap<String, Object> map1 = new HashMap<>();
+ if (Cools.isEmpty(taskNo)) {
+ return R.error("浠诲姟鍙蜂负绌�");
+ } else {
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo)));
+ if (wrkMast == null) {
+ return R.error("娌℃湁鎵惧埌璇ヤ换鍔″彿锛�" + taskNo);
+ }
+
+ if (status.equals("complete")) {
+ // 鍏ュ簱 + 搴撲綅杞Щ
+ if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
+ wrkMast.setWrkSts(4L);
+ // 鍑哄簱
+ } else if (wrkMast.getWrkSts() > 10) {
+ wrkMast.setWrkSts(14L);
+ }
+ Date now = new Date();
+ wrkMast.setWrkSts(14L);//鍑哄簱鍒扮珯鐐逛笂
+ wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
+
+ return R.ok();
+ } else if (status.equals("cancel")) {
+ workService.cancelWrkMast(taskNo, 9527L);
+ return R.ok();
+ }
+ }
+ return R.error();
+ }
}
diff --git a/src/main/java/com/zy/asrs/entity/BasStationDetl.java b/src/main/java/com/zy/asrs/entity/BasStationDetl.java
new file mode 100644
index 0000000..b9f4c39
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasStationDetl.java
@@ -0,0 +1,505 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.MatService;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+import com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("agv_bas_station_detl")
+@Accessors(chain = true)
+public class BasStationDetl implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value= "")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 绔欑偣缂栫爜
+ */
+ @ApiModelProperty(value= "绔欑偣缂栫爜")
+ @TableField("dev_no")
+ private String devNo;
+
+ /**
+ * 鏁伴噺
+ */
+ @ApiModelProperty(value= "鏁伴噺")
+ private Double anfme;
+
+ @ApiModelProperty("鎵ц涓暟閲�")
+ private Double workQty;
+
+ /**
+ * 鎵樼洏鏉$爜
+ */
+ @ApiModelProperty(value= "鎵樼洏鏉$爜")
+ private String zpallet;
+
+ /**
+ * 鍟嗗搧缂栧彿
+ */
+ @ApiModelProperty(value= "鍟嗗搧缂栧彿")
+ private String matnr;
+
+ /**
+ * 鍟嗗搧鍚嶇О
+ */
+ @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
+ private String maktx;
+
+ /**
+ * 鎵瑰彿
+ */
+ @ApiModelProperty(value= "鎵瑰彿")
+ private String batch;
+
+ /**
+ * 鍗曟嵁缂栧彿
+ */
+ @ApiModelProperty(value= "鍗曟嵁缂栧彿")
+ @TableField("order_no")
+ private String orderNo;
+
+ /**
+ * 瑙勬牸
+ */
+ @ApiModelProperty(value= "瑙勬牸")
+ private String specs;
+
+ /**
+ * 鍨嬪彿
+ */
+ @ApiModelProperty(value= "鍨嬪彿")
+ private String model;
+
+ /**
+ * 棰滆壊
+ */
+ @ApiModelProperty(value= "棰滆壊")
+ private String color;
+
+ /**
+ * 鍝佺墝
+ */
+ @ApiModelProperty(value= "鍝佺墝")
+ private String brand;
+
+ /**
+ * 鍗曚綅
+ */
+ @ApiModelProperty(value= "鍗曚綅")
+ private String unit;
+
+ /**
+ * 鍗曚环
+ */
+ @ApiModelProperty(value= "鍗曚环")
+ private Double price;
+
+ /**
+ * sku
+ */
+ @ApiModelProperty(value= "sku")
+ private String sku;
+
+ /**
+ * 鍗曚綅閲�
+ */
+ @ApiModelProperty(value= "鍗曚綅閲�")
+ private Double units;
+
+ /**
+ * 鏉$爜
+ */
+ @ApiModelProperty(value= "鏉$爜")
+ private String barcode;
+
+ /**
+ * 浜у湴
+ */
+ @ApiModelProperty(value= "浜у湴")
+ private String origin;
+
+ /**
+ * 鍘傚
+ */
+ @ApiModelProperty(value= "鍘傚")
+ private String manu;
+
+ /**
+ * 鐢熶骇鏃ユ湡
+ */
+ @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
+ @TableField("manu_date")
+ private String manuDate;
+
+ /**
+ * 鍝侀」鏁�
+ */
+ @ApiModelProperty(value= "鍝侀」鏁�")
+ @TableField("item_num")
+ private String itemNum;
+
+ /**
+ * 瀹夊叏搴撳瓨閲�
+ */
+ @ApiModelProperty(value= "瀹夊叏搴撳瓨閲�")
+ @TableField("safe_qty")
+ private Double safeQty;
+
+ /**
+ * 閲嶉噺
+ */
+ @ApiModelProperty(value= "閲嶉噺")
+ private Double weight;
+
+ /**
+ * 闀垮害
+ */
+ @ApiModelProperty(value= "闀垮害")
+ @TableField("man_length")
+ private Double manLength;
+
+ /**
+ * 浣撶Н
+ */
+ @ApiModelProperty(value= "浣撶Н")
+ private Double volume;
+
+ /**
+ * 涓夋柟缂栫爜
+ */
+ @ApiModelProperty(value= "涓夋柟缂栫爜")
+ @TableField("three_code")
+ private String threeCode;
+
+ /**
+ * 渚涘簲鍟�
+ */
+ @ApiModelProperty(value= "渚涘簲鍟�")
+ private String supp;
+
+ /**
+ * 渚涘簲鍟嗙紪鐮�
+ */
+ @ApiModelProperty(value= "渚涘簲鍟嗙紪鐮�")
+ @TableField("supp_code")
+ private String suppCode;
+
+ /**
+ * 鏄惁鎵规 1: 鏄� 0: 鍚�
+ */
+ @ApiModelProperty(value= "鏄惁鎵规 1: 鏄� 0: 鍚� ")
+ @TableField("be_batch")
+ private Integer beBatch;
+
+ /**
+ * 淇濊川鏈�
+ */
+ @ApiModelProperty(value= "淇濊川鏈�")
+ @TableField("dead_time")
+ private String deadTime;
+
+ /**
+ * 棰勮澶╂暟
+ */
+ @ApiModelProperty(value= "棰勮澶╂暟")
+ @TableField("dead_warn")
+ private Integer deadWarn;
+
+ /**
+ * 鍒惰喘 1: 鍒堕�� 2: 閲囪喘 3: 澶栧崗
+ */
+ @ApiModelProperty(value= "鍒惰喘 1: 鍒堕�� 2: 閲囪喘 3: 澶栧崗 ")
+ private Integer source;
+
+ /**
+ * 瑕佹眰妫�楠� 1: 鏄� 0: 鍚�
+ */
+ @ApiModelProperty(value= "瑕佹眰妫�楠� 1: 鏄� 0: 鍚� ")
+ private Integer inspect;
+
+ /**
+ * 鍗遍櫓鍝� 1: 鏄� 0: 鍚�
+ */
+ @ApiModelProperty(value= "鍗遍櫓鍝� 1: 鏄� 0: 鍚� ")
+ private Integer danger;
+
+ /**
+ * 淇敼浜哄憳
+ */
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ @TableField("modi_user")
+ private Long modiUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @TableField("modi_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date modiTime;
+
+ /**
+ * 娣诲姞浜哄憳
+ */
+ @ApiModelProperty(value= "娣诲姞浜哄憳")
+ @TableField("appe_user")
+ private Long appeUser;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @TableField("appe_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date appeTime;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ @ApiModelProperty(value= "")
+ @TableField("line_number")
+ private Long lineNumber;
+
+ @ApiModelProperty(value= "")
+ private String standby1;
+
+ @ApiModelProperty(value= "")
+ private String standby2;
+
+ @ApiModelProperty(value= "")
+ private String standby3;
+
+ @ApiModelProperty(value= "")
+ @TableField("box_type1")
+ private String boxType1;
+
+ @ApiModelProperty(value= "")
+ @TableField("box_type2")
+ private String boxType2;
+
+ @ApiModelProperty(value= "")
+ @TableField("box_type3")
+ private String boxType3;
+
+ public BasStationDetl() {}
+
+ public BasStationDetl(Long id,String devNo,Double anfme,String zpallet,String matnr,String maktx,String batch,String orderNo,String specs,String model,String color,String brand,String unit,Double price,String sku,Double units,String barcode,String origin,String manu,String manuDate,String itemNum,Double safeQty,Double weight,Double manLength,Double volume,String threeCode,String supp,String suppCode,Integer beBatch,String deadTime,Integer deadWarn,Integer source,Integer inspect,Integer danger,Long modiUser,Date modiTime,Long appeUser,Date appeTime,String memo,Long lineNumber,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3) {
+ this.id = id;
+ this.devNo = devNo;
+ this.anfme = anfme;
+ this.zpallet = zpallet;
+ this.matnr = matnr;
+ this.maktx = maktx;
+ this.batch = batch;
+ this.orderNo = orderNo;
+ this.specs = specs;
+ this.model = model;
+ this.color = color;
+ this.brand = brand;
+ this.unit = unit;
+ this.price = price;
+ this.sku = sku;
+ this.units = units;
+ this.barcode = barcode;
+ this.origin = origin;
+ this.manu = manu;
+ this.manuDate = manuDate;
+ this.itemNum = itemNum;
+ this.safeQty = safeQty;
+ this.weight = weight;
+ this.manLength = manLength;
+ this.volume = volume;
+ this.threeCode = threeCode;
+ this.supp = supp;
+ this.suppCode = suppCode;
+ this.beBatch = beBatch;
+ this.deadTime = deadTime;
+ this.deadWarn = deadWarn;
+ this.source = source;
+ this.inspect = inspect;
+ this.danger = danger;
+ this.modiUser = modiUser;
+ this.modiTime = modiTime;
+ this.appeUser = appeUser;
+ this.appeTime = appeTime;
+ this.memo = memo;
+ this.lineNumber = lineNumber;
+ this.standby1 = standby1;
+ this.standby2 = standby2;
+ this.standby3 = standby3;
+ this.boxType1 = boxType1;
+ this.boxType2 = boxType2;
+ this.boxType3 = boxType3;
+ }
+
+// BasStationDetl basStationDetl = new BasStationDetl(
+// null, // [闈炵┖]
+// null, // 绔欑偣缂栫爜[闈炵┖]
+// null, // 鏁伴噺
+// null, // 鎵樼洏鏉$爜
+// null, // 鍟嗗搧缂栧彿[闈炵┖]
+// null, // 鍟嗗搧鍚嶇О
+// null, // 鎵瑰彿
+// null, // 鍗曟嵁缂栧彿
+// null, // 瑙勬牸
+// null, // 鍨嬪彿
+// null, // 棰滆壊
+// null, // 鍝佺墝
+// null, // 鍗曚綅
+// null, // 鍗曚环
+// null, // sku
+// null, // 鍗曚綅閲�
+// null, // 鏉$爜
+// null, // 浜у湴
+// null, // 鍘傚
+// null, // 鐢熶骇鏃ユ湡
+// null, // 鍝侀」鏁�
+// null, // 瀹夊叏搴撳瓨閲�
+// null, // 閲嶉噺
+// null, // 闀垮害
+// null, // 浣撶Н
+// null, // 涓夋柟缂栫爜
+// null, // 渚涘簲鍟�
+// null, // 渚涘簲鍟嗙紪鐮�
+// null, // 鏄惁鎵规
+// null, // 淇濊川鏈�
+// null, // 棰勮澶╂暟
+// null, // 鍒惰喘
+// null, // 瑕佹眰妫�楠�
+// null, // 鍗遍櫓鍝�
+// null, // 淇敼浜哄憳
+// null, // 淇敼鏃堕棿
+// null, // 娣诲姞浜哄憳
+// null, // 娣诲姞鏃堕棿
+// null, // 澶囨敞
+// null, //
+// null, //
+// null, //
+// null, //
+// null, //
+// null, //
+// null //
+// );
+
+ public String getBeBatch$(){
+ if (null == this.beBatch){ return null; }
+ switch (this.beBatch){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.beBatch);
+ }
+ }
+
+ public String getSource$(){
+ if (null == this.source){ return null; }
+ switch (this.source){
+ case 1:
+ return "鍒堕��";
+ case 2:
+ return "閲囪喘";
+ case 3:
+ return "澶栧崗";
+ default:
+ return String.valueOf(this.source);
+ }
+ }
+
+ public String getInspect$(){
+ if (null == this.inspect){ return null; }
+ switch (this.inspect){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.inspect);
+ }
+ }
+
+ public String getTag$() {
+ MatService service = SpringUtils.getBean(MatService.class);
+ Mat order = service.selectOne(new EntityWrapper<Mat>()
+ .eq("supp_code", this.suppCode)
+ .eq("matnr", this.matnr));
+ if (Cools.isEmpty(order)){
+ return null;
+ }
+ return order.getTagId$();
+ }
+
+ public String getDanger$(){
+ if (null == this.danger){ return null; }
+ switch (this.danger){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.danger);
+ }
+ }
+
+ public String getModiUser$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.modiUser);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
+ public String getModiTime$(){
+ if (Cools.isEmpty(this.modiTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+ }
+
+ public String getAppeUser$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.appeUser);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
+ public String getAppeTime$(){
+ if (Cools.isEmpty(this.appeTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+ }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/CompleteParam.java b/src/main/java/com/zy/asrs/entity/CompleteParam.java
new file mode 100644
index 0000000..ade758b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/CompleteParam.java
@@ -0,0 +1,37 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class CompleteParam implements Serializable {
+
+ private String barcode;
+
+ // 搴撲綅瑙勬牸锛� 0:鏈煡, 1:浣庡簱浣�, 2:楂樺簱浣嶏級
+ private Short locType1;
+
+ //绔欓粸
+ private String sourceStaNo;
+
+ //婧愬簱浣�
+ private String sourceLocNo;
+
+ //鐩爣搴撲綅
+ private String locNo;
+
+ private String taskNo;
+
+ //浠诲姟鍙�
+ private String workNo;
+
+ //鍙敤鎺�
+ private List<Integer> rowList;
+
+ private String carBarcode;
+
+ private Integer IoType;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/Order.java b/src/main/java/com/zy/asrs/entity/Order.java
index f0784c8..ff9985e 100644
--- a/src/main/java/com/zy/asrs/entity/Order.java
+++ b/src/main/java/com/zy/asrs/entity/Order.java
@@ -269,6 +269,10 @@
@TableField("move_status")
private Integer moveStatus;
+ @ApiModelProperty("涓婃姤娆℃暟")
+ @TableField("report_once")
+ private Integer reportOnce;
+
/**
* 鐘舵�� 1: 杩涜涓� 0: 鍒濆 2:宸插畬鎴�
*/
diff --git a/src/main/java/com/zy/asrs/entity/Task.java b/src/main/java/com/zy/asrs/entity/Task.java
index 24d91fe..3bf0b39 100644
--- a/src/main/java/com/zy/asrs/entity/Task.java
+++ b/src/main/java/com/zy/asrs/entity/Task.java
@@ -143,6 +143,9 @@
@TableField("upd_mk")
private String updMk;
+ @TableField("is_new_in")
+ private String isNewIn;
+
/**
* 閫�鍑�
*/
diff --git a/src/main/java/com/zy/asrs/entity/TaskLog.java b/src/main/java/com/zy/asrs/entity/TaskLog.java
index cd3b222..0ccdd08 100644
--- a/src/main/java/com/zy/asrs/entity/TaskLog.java
+++ b/src/main/java/com/zy/asrs/entity/TaskLog.java
@@ -462,14 +462,14 @@
// null //
// );
- public String getWrkNo$() {
- WrkMastService service = SpringUtils.getBean(WrkMastService.class);
- WrkMast wrkMast = service.selectById(this.wrkNo);
- if (!Cools.isEmpty(wrkMast)) {
- return String.valueOf(wrkMast.getId());
- }
- return null;
- }
+// public String getWrkNo$() {
+// WrkMastService service = SpringUtils.getBean(WrkMastService.class);
+// WrkMast wrkMast = service.selectById(this.wrkNo);
+// if (!Cools.isEmpty(wrkMast)) {
+// return String.valueOf(wrkMast.getId());
+// }
+// return null;
+// }
public String getYmd$() {
if (Cools.isEmpty(this.ymd)) {
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 2f643bf..de292cc 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -22,8 +22,8 @@
private static final long serialVersionUID = 1L;
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
+// @TableId(value = "id", type = IdType.AUTO)
+// private Long id;
/**
* 宸ヤ綔鍙�
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
index 27472d2..abbb785 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -331,14 +331,14 @@
public WrkMastLog() {
}
- public String getWrkNo$() {
- WrkMastService service = SpringUtils.getBean(WrkMastService.class);
- WrkMast wrkMast = service.selectById(this.wrkNo);
- if (!Cools.isEmpty(wrkMast)) {
- return String.valueOf(wrkMast.getWrkNo());
- }
- return null;
- }
+// public String getWrkNo$() {
+// WrkMastService service = SpringUtils.getBean(WrkMastService.class);
+// WrkMast wrkMast = service.selectById(this.wrkNo);
+// if (!Cools.isEmpty(wrkMast)) {
+// return String.valueOf(wrkMast.getWrkNo());
+// }
+// return null;
+// }
public String getYmd$() {
if (Cools.isEmpty(this.ymd)) {
diff --git a/src/main/java/com/zy/asrs/entity/param/QueryCombParam.java b/src/main/java/com/zy/asrs/entity/param/QueryCombParam.java
new file mode 100644
index 0000000..4dfdfec
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/QueryCombParam.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class QueryCombParam {
+
+ private String barcode;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java b/src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java
new file mode 100644
index 0000000..6acab45
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java
@@ -0,0 +1,14 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class QueryTaskParam {
+
+ private String taskNo;
+
+ private String taskType;
+
+ private String agvSite;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/result/CheckOrderExportDTO.java b/src/main/java/com/zy/asrs/entity/result/CheckOrderExportDTO.java
new file mode 100644
index 0000000..76e855c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/CheckOrderExportDTO.java
@@ -0,0 +1,50 @@
+package com.zy.asrs.entity.result;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.zy.common.utils.Synchro;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+@Data
+@EqualsAndHashCode
+@HeadRowHeight(20)
+public class CheckOrderExportDTO {
+ @ExcelProperty({"鐩樼偣宸紓鍗�", "璁㈠崟鍙�"})
+ private String orderNo;
+
+ @ExcelProperty({"鐩樼偣宸紓鍗�", "搴撲綅鍙�"})
+ private String locNo;
+
+ @ExcelProperty({"鐩樼偣宸紓鍗�", "瀹瑰櫒鐮�"})
+ private String zpallet;
+
+ @ExcelProperty({"鐩樼偣宸紓鍗�", "鐗╂枡浠g爜"})
+ private String matnr;
+
+ @ExcelProperty({"鐩樼偣宸紓鍗�", "鐗╂枡鍚嶇О"})
+ private String maktx;
+
+ @ExcelProperty({"鐩樼偣宸紓鍗�", "鐗╂枡瑙勬牸"})
+ private String specs;
+
+ @ExcelProperty({"鐩樼偣宸紓鍗�", "鎵规"})
+ private String batch;
+
+ @ExcelProperty({"鐩樼偣宸紓鍗�", "搴撳瓨鏁伴噺"})
+ private BigDecimal anfme;
+
+ @ExcelProperty({"鐩樼偣宸紓鍗�", "鐩樼偣鏁伴噺"})
+ private BigDecimal workQty;
+
+ @ExcelProperty({"鐩樼偣宸紓鍗�", "宸紓鏁伴噺"})
+ private BigDecimal diffQty;
+
+
+ public void sync(Object source) {
+ Synchro.Copy(source, this);
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/result/CrnTaskDetlDTO.java b/src/main/java/com/zy/asrs/entity/result/CrnTaskDetlDTO.java
new file mode 100644
index 0000000..9f92471
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/CrnTaskDetlDTO.java
@@ -0,0 +1,18 @@
+package com.zy.asrs.entity.result;
+
+import com.zy.asrs.entity.LocDetl;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+public class CrnTaskDetlDTO {
+
+ private String locNo;
+
+ private List<LocDetl> locDetlList;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/result/FindLocNoAttributeVo.java b/src/main/java/com/zy/asrs/entity/result/FindLocNoAttributeVo.java
index 8732f46..a0b3a9e 100644
--- a/src/main/java/com/zy/asrs/entity/result/FindLocNoAttributeVo.java
+++ b/src/main/java/com/zy/asrs/entity/result/FindLocNoAttributeVo.java
@@ -200,20 +200,20 @@
}
- public boolean beSimilar(LocDetl locDetl) {
+ public boolean beSimilar(LocDetl locDetl){
return (this.matnr.equals(locDetl.getMatnr())
- && this.batch.equals(locDetl.getBatch())
- && this.brand.equals(locDetl.getBrand())
- && this.standby1.equals(locDetl.getStandby1())
- && this.standby2.equals(locDetl.getStandby2())
- && this.standby3.equals(locDetl.getStandby3())
- && this.boxType1.equals(locDetl.getBoxType1())
- && this.boxType2.equals(locDetl.getBoxType2())
- && this.boxType3.equals(locDetl.getBoxType3())
+ && this.batch.equals(locDetl.getBatch())
+ && this.brand.equals(locDetl.getBrand())
+ && this.standby1.equals(locDetl.getStandby1())
+ && this.standby2.equals(locDetl.getStandby2())
+ && this.standby3.equals(locDetl.getStandby3())
+ && this.boxType1.equals(locDetl.getBoxType1())
+ && this.boxType2.equals(locDetl.getBoxType2())
+ && this.boxType3.equals(locDetl.getBoxType3())
);
}
- public boolean beSimilar(WrkDetl wrkDetl) {
+ public boolean beSimilar(WrkDetl wrkDetl){
return (this.matnr.equals(wrkDetl.getMatnr())
&& this.batch.equals(wrkDetl.getBatch())
&& this.brand.equals(wrkDetl.getBrand())
diff --git a/src/main/java/com/zy/asrs/entity/result/ForwardAGVTaskDTO.java b/src/main/java/com/zy/asrs/entity/result/ForwardAGVTaskDTO.java
new file mode 100644
index 0000000..741bdda
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/ForwardAGVTaskDTO.java
@@ -0,0 +1,39 @@
+package com.zy.asrs.entity.result;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ForwardAGVTaskDTO {
+ private String reqCode;
+ private String reqTime;
+ private String taskTyp;
+ private String ctnrCode;
+ private List<PositionCodePaths> positionCodePath;
+ private String clientCode = "";
+ private String tokenCode = "";
+ private String ctnrTyp = "";
+ private String ctnrNum = "";
+ private String wbCode = "";
+ private String podCode = "";
+ private String podDir = "";
+ private String podTyp = "";
+ private String materialLot = "";
+ private String priority = "";
+ private String taskCode;
+ private String agvCode = "";
+ private String data = "";
+
+ @Data
+ public static class PositionCodePaths{
+ private String positionCode;
+ private String type;
+
+ public PositionCodePaths(String positionCode, String type){
+ this.positionCode = positionCode;
+ this.type = type;
+
+ }
+ }
+}
diff --git a/src/main/java/com/zy/asrs/entity/result/HIKApiDTO.java b/src/main/java/com/zy/asrs/entity/result/HIKApiDTO.java
new file mode 100644
index 0000000..817a561
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/HIKApiDTO.java
@@ -0,0 +1,38 @@
+package com.zy.asrs.entity.result;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class HIKApiDTO {
+ /**
+ * 婧愮珯
+ */
+ private String org;
+ /**
+ * 婧愮珯绫诲瀷
+ */
+ private String orgType;
+ /**
+ * 鐩爣绔�
+ */
+ private String tar;
+ /**
+ * 鐩爣绔欑被鍨�
+ */
+ private String tarType;
+ /**
+ * 浠诲姟绫诲瀷
+ */
+ private String taskType;
+ /**
+ * 瀹瑰櫒绫诲瀷
+ */
+ private String ctnrType;
+ /**
+ * 浼樺厛绾�
+ */
+ private String priority;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/result/HIKResultDTO.java b/src/main/java/com/zy/asrs/entity/result/HIKResultDTO.java
new file mode 100644
index 0000000..7aa7104
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/HIKResultDTO.java
@@ -0,0 +1,9 @@
+package com.zy.asrs.entity.result;
+
+import lombok.Data;
+
+@Data
+public class HIKResultDTO {
+ private boolean success = false;
+ private String message;
+}
diff --git a/src/main/java/com/zy/asrs/entity/result/LocDetlAll.java b/src/main/java/com/zy/asrs/entity/result/LocDetlAll.java
index 27fb73d..e5c80f5 100644
--- a/src/main/java/com/zy/asrs/entity/result/LocDetlAll.java
+++ b/src/main/java/com/zy/asrs/entity/result/LocDetlAll.java
@@ -5,8 +5,8 @@
import com.core.common.SpringUtils;
import com.zy.asrs.entity.LocOwner;
import com.zy.asrs.service.LocOwnerService;
+import com.zy.common.utils.Synchro;
import lombok.Data;
-import org.springframework.beans.BeanUtils;
import java.util.Date;
@@ -30,20 +30,18 @@
private String meno;
private String manu;
- public String getOwner$() {
+ public String getOwner$(){
LocOwnerService service = SpringUtils.getBean(LocOwnerService.class);
LocOwner locOwner = service.selectById(this.owner);
- if (!Cools.isEmpty(locOwner)) {
+ if (!Cools.isEmpty(locOwner)){
return String.valueOf(locOwner.getOwner());
}
return null;
}
- public String getPayment$() {
- if (null == this.payment) {
- return null;
- }
- switch (this.payment) {
+ public String getPayment$(){
+ if (null == this.payment){ return null; }
+ switch (this.payment){
case 1:
return "浠撳偍";
case 0:
@@ -54,6 +52,6 @@
}
public void sync(Object source) {
- BeanUtils.copyProperties(source, this);
+ Synchro.Copy(source, this);
}
}
diff --git a/src/main/java/com/zy/asrs/entity/result/Pakin.java b/src/main/java/com/zy/asrs/entity/result/Pakin.java
index 06a7443..b1bc523 100644
--- a/src/main/java/com/zy/asrs/entity/result/Pakin.java
+++ b/src/main/java/com/zy/asrs/entity/result/Pakin.java
@@ -13,6 +13,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -27,192 +28,191 @@
/**
* 鎵�灞為」鐩�
*/
- @ApiModelProperty(value = "鎵�灞為」鐩�")
+ @ApiModelProperty(value= "鎵�灞為」鐩�")
@TableField("host_id")
private Long hostId;
/**
* 浠诲姟鍙�
*/
- @ApiModelProperty(value = "浠诲姟鍙�")
+ @ApiModelProperty(value= "浠诲姟鍙�")
@TableField("wrk_no")
private String wrkNo;
/**
* 宸ヤ綔鐘舵��
*/
- @ApiModelProperty(value = "宸ヤ綔鐘舵��")
+ @ApiModelProperty(value= "宸ヤ綔鐘舵��")
@TableField("wrk_sts")
private Long wrkSts;
/**
* 鎵樼洏鍙�
*/
- @ApiModelProperty(value = "鎵樼洏鍙�")
+ @ApiModelProperty(value= "鎵樼洏鍙�")
private String zpallet;
/**
* 鍏ュ簱鏁伴噺
*/
- @ApiModelProperty(value = "鍏ュ簱鏁伴噺")
+ @ApiModelProperty(value= "鍏ュ簱鏁伴噺")
@ExcelProperty(value = "鍏ュ簱鎬婚噺")
private Double anfme;
/**
* 鍏宠仈璐т綅
*/
- @ApiModelProperty(value = "鍏宠仈璐т綅")
+ @ApiModelProperty(value= "鍏宠仈璐т綅")
@TableField("node_id")
private Long nodeId;
/**
* 璐т綅
*/
- @ApiModelProperty(value = "璐т綅")
+ @ApiModelProperty(value= "璐т綅")
@TableField("loc_no")
private String locNo;
/**
* 鍟嗗搧缂栫爜
*/
- @ApiModelProperty(value = "鍟嗗搧缂栫爜")
+ @ApiModelProperty(value= "鍟嗗搧缂栫爜")
@ExcelProperty(value = "鍟嗗搧缂栫爜")
private String matnr;
/**
* 鍟嗗搧鍚嶇О
*/
- @ApiModelProperty(value = "鍟嗗搧鍚嶇О")
+ @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
@ExcelProperty(value = "鍟嗗搧鍚嶇О")
private String maktx;
/**
* 鍚嶇О
*/
- @ApiModelProperty(value = "鍚嶇О")
+ @ApiModelProperty(value= "鍚嶇О")
private String name;
/**
* 瑙勬牸
*/
- @ApiModelProperty(value = "瑙勬牸")
+ @ApiModelProperty(value= "瑙勬牸")
@ExcelProperty(value = "瑙勬牸")
private String specs;
/**
* 鍨嬪彿
*/
- @ApiModelProperty(value = "鍨嬪彿")
+ @ApiModelProperty(value= "鍨嬪彿")
private String model;
/**
* 鎵瑰彿
*/
- @ApiModelProperty(value = "鎵瑰彿")
+ @ApiModelProperty(value= "鎵瑰彿")
private String batch;
/**
* 鍗曚綅
*/
- @ApiModelProperty(value = "鍗曚綅")
+ @ApiModelProperty(value= "鍗曚綅")
@ExcelProperty(value = "鍗曚綅")
private String unit;
/**
* SKC
*/
- @ApiModelProperty(value = "SKC")
+ @ApiModelProperty(value= "SKC")
@ExcelProperty(value = "SKC")
private String barcode;
/**
* 鍗曟嵁绫诲瀷
*/
- @ApiModelProperty(value = "鍗曟嵁绫诲瀷")
+ @ApiModelProperty(value= "鍗曟嵁绫诲瀷")
@TableField("doc_id")
private Long docId;
/**
* 鍗曟嵁缂栧彿
*/
- @ApiModelProperty(value = "鍗曟嵁缂栧彿")
+ @ApiModelProperty(value= "鍗曟嵁缂栧彿")
@TableField("doc_num")
private String docNum;
/**
* 瀹㈡埛鍚嶇О
*/
- @ApiModelProperty(value = "瀹㈡埛鍚嶇О")
+ @ApiModelProperty(value= "瀹㈡埛鍚嶇О")
@TableField("cust_name")
private String custName;
/**
* 鍝侀」鏁�
*/
- @ApiModelProperty(value = "鍝侀」鏁�")
+ @ApiModelProperty(value= "鍝侀」鏁�")
@TableField("item_num")
private Integer itemNum;
/**
* 鏁伴噺
*/
- @ApiModelProperty(value = "鏁伴噺")
+ @ApiModelProperty(value= "鏁伴噺")
private Integer count;
/**
* 鍗曚环
*/
- @ApiModelProperty(value = "鍗曚环")
+ @ApiModelProperty(value= "鍗曚环")
private Double price;
/**
* 閲嶉噺
*/
- @ApiModelProperty(value = "閲嶉噺")
+ @ApiModelProperty(value= "閲嶉噺")
private Double weight;
/**
* 鐘舵�� 1: 姝e父 0: 绂佺敤
*/
- @ApiModelProperty(value = "鐘舵�� 1: 姝e父 0: 绂佺敤 ")
+ @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 绂佺敤 ")
private Integer status;
/**
* 娣诲姞浜哄憳
*/
- @ApiModelProperty(value = "娣诲姞浜哄憳")
+ @ApiModelProperty(value= "娣诲姞浜哄憳")
@TableField("create_by")
private Long createBy;
/**
* 娣诲姞鏃堕棿
*/
- @ApiModelProperty(value = "娣诲姞鏃堕棿")
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
@TableField("create_time")
private Date createTime;
/**
* 淇敼浜哄憳
*/
- @ApiModelProperty(value = "淇敼浜哄憳")
+ @ApiModelProperty(value= "淇敼浜哄憳")
@TableField("update_by")
private Long updateBy;
/**
* 淇敼鏃堕棿
*/
- @ApiModelProperty(value = "淇敼鏃堕棿")
+ @ApiModelProperty(value= "淇敼鏃堕棿")
@TableField("update_time")
private Date updateTime;
/**
* 澶囨敞
*/
- @ApiModelProperty(value = "澶囨敞")
+ @ApiModelProperty(value= "澶囨敞")
private String memo;
- public Pakin() {
- }
+ public Pakin() {}
public Pakin(Long hostId, String wrkNo, Long wrkSts, String zpallet, Double anfme, Long nodeId, String locNo, String matnr, String maktx, String name, String specs, String model, String batch, String unit, String barcode, Long docId, String docNum, String custName, Integer itemNum, Integer count, Double weight, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
this.hostId = hostId;
@@ -273,21 +273,20 @@
// null // 澶囨敞
// );
- public String getHostId$() {
+ public String getHostId$(){
HostService service = SpringUtils.getBean(HostService.class);
Host host = service.selectById(this.hostId);
- if (!Cools.isEmpty(host)) {
+ if (!Cools.isEmpty(host)){
return String.valueOf(host.getName());
}
return null;
}
- public String getStatus$() {
- if (null == this.status) {
- return null;
- }
- switch (this.status) {
+
+ public String getStatus$(){
+ if (null == this.status){ return null; }
+ switch (this.status){
case 1:
return "姝e父";
case 0:
@@ -297,33 +296,33 @@
}
}
- public String getCreateBy$() {
+ public String getCreateBy$(){
UserService service = SpringUtils.getBean(UserService.class);
User user = service.selectById(this.createBy);
- if (!Cools.isEmpty(user)) {
+ if (!Cools.isEmpty(user)){
return String.valueOf(user.getNickname());
}
return null;
}
- public String getCreateTime$() {
- if (Cools.isEmpty(this.createTime)) {
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
return "";
}
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
}
- public String getUpdateBy$() {
+ public String getUpdateBy$(){
UserService service = SpringUtils.getBean(UserService.class);
User user = service.selectById(this.updateBy);
- if (!Cools.isEmpty(user)) {
+ if (!Cools.isEmpty(user)){
return String.valueOf(user.getNickname());
}
return null;
}
- public String getUpdateTime$() {
- if (Cools.isEmpty(this.updateTime)) {
+ public String getUpdateTime$(){
+ if (Cools.isEmpty(this.updateTime)){
return "";
}
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
diff --git a/src/main/java/com/zy/asrs/enums/CheckStatusEnum.java b/src/main/java/com/zy/asrs/enums/CheckStatusEnum.java
new file mode 100644
index 0000000..c4b3d83
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/CheckStatusEnum.java
@@ -0,0 +1,33 @@
+package com.zy.asrs.enums;
+
+public enum CheckStatusEnum {
+ //鐘舵�� 1: 鏈敓鎴� 0: 绂佺敤 2锛氬緟鐩� 3锛氬凡鐩�
+ NO_CREATE(1, "鏈敓鎴�"),
+ DISABLED(0, "绂佺敤"),
+ WAIT_CHECK(2, "寰呯洏"),
+ CHECKED(3, "宸茬洏"),
+
+ //璋冩暣鍗�
+ ALLOW(4, "鍏佽"),
+ FORBID(5, "绂佹"),
+ MODIFIED(6, "宸蹭慨鏀�");
+
+
+
+ public final Integer type;
+
+ public final String desc;
+
+ CheckStatusEnum(Integer type, String desc) {
+ this.type = type;
+ this.desc = desc;
+ }
+ public static String getDescByType(Integer type) {
+ for (CheckStatusEnum value : CheckStatusEnum.values()) {
+ if (value.type.equals(type)) {
+ return value.desc;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/enums/CommonEnum.java b/src/main/java/com/zy/asrs/enums/CommonEnum.java
index dbf327d..e2fcbf9 100644
--- a/src/main/java/com/zy/asrs/enums/CommonEnum.java
+++ b/src/main/java/com/zy/asrs/enums/CommonEnum.java
@@ -2,9 +2,9 @@
/**
* @author Ryan
- * @version 1.0
* @date 2025/9/25
* @description: 閫氱敤绫诲瀷鏋氫妇
+ * @version 1.0
*/
public enum CommonEnum {
diff --git a/src/main/java/com/zy/asrs/enums/CommonStation.java b/src/main/java/com/zy/asrs/enums/CommonStation.java
new file mode 100644
index 0000000..97e4d5b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/CommonStation.java
@@ -0,0 +1,24 @@
+package com.zy.asrs.enums;
+
+/**
+ * 閫氱敤绔欑偣
+ * @author Ryan
+ * @date 2025/12/6 13:56
+ * @return null
+ */
+public enum CommonStation {
+
+ //閫氱敤绫诲瀷
+ COMMON_STATION_Y("Y", "鏄�"),
+ //閫氱敤
+ COMMON_STATION_N("N", "鍚�");
+
+ public String type;
+
+ public String desc;
+
+ CommonStation(String type, String desc) {
+ this.type = type;
+ this.desc = desc;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/enums/ContainerType.java b/src/main/java/com/zy/asrs/enums/ContainerType.java
index 4a70222..379d1aa 100644
--- a/src/main/java/com/zy/asrs/enums/ContainerType.java
+++ b/src/main/java/com/zy/asrs/enums/ContainerType.java
@@ -22,4 +22,6 @@
}
+
+
}
diff --git a/src/main/java/com/zy/asrs/enums/LocAreaType.java b/src/main/java/com/zy/asrs/enums/LocAreaType.java
new file mode 100644
index 0000000..c7e5091
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/LocAreaType.java
@@ -0,0 +1,30 @@
+package com.zy.asrs.enums;
+
+/**
+ * 搴撳尯绫诲瀷
+ * @author Ryan
+ * @date 2025/12/3 9:59
+ * @return null
+ */
+public enum LocAreaType {
+
+ //鍏ュ簱缂撳瓨鍖�
+ LOC_AREA_TYPE_IN_CACHE("5", "鍏ュ簱缂撳瓨鍖�"),
+ //鍫嗗灈鏈�
+ LOC_AREA_TYPE_CRN("1", "绔嬪簱鍖�"),
+
+ LOC_AREA_TYPE_SO("2", "鍑哄簱SO鍖�"),
+
+ LOC_AREA_TYPE_EO("3", "鍑哄簱EO鍖�")
+ ;
+
+ public Long type;
+
+ public String desc;
+
+ LocAreaType(String type, String desc) {
+ this.type = Long.valueOf(type);
+ this.desc = desc;
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/enums/LocStsType.java b/src/main/java/com/zy/asrs/enums/LocStsType.java
index fe48c4d..dec6677 100644
--- a/src/main/java/com/zy/asrs/enums/LocStsType.java
+++ b/src/main/java/com/zy/asrs/enums/LocStsType.java
@@ -3,17 +3,19 @@
public enum LocStsType {
//绌烘澘
- LOC_STS_TYPE_D("D", "绌烘澘"),
+ LOC_STS_TYPE_D("D", "D.绌烘澘"),
//鍦ㄥ簱
- LOC_STS_TYPE_F("F", "鍦ㄥ簱"),
+ LOC_STS_TYPE_F("F", "F.鍦ㄥ簱"),
//绌哄簱
- LOC_STS_TYPE_O("O", "绌哄簱"),
+ LOC_STS_TYPE_O("O", "O.绌哄簱"),
//绂佺敤
- LOC_STS_TYPE_X("X", "绂佺敤"),
+ LOC_STS_TYPE_X("X", "X.绂佺敤"),
//鍏ュ簱棰勭害
- LOC_STS_TYPE_S("S", "鍏ュ簱棰勭害"),
+ LOC_STS_TYPE_S("S", "S.鍏ュ簱棰勭害"),
+ //鎷h揣
+ LOC_STS_TYPE_P("P", "P.鎷h揣涓�"),
//鍑哄簱棰勭害
- LOC_STS_TYPE_R("R", "鍑哄簱棰勭害"),
+ LOC_STS_TYPE_R("R", "R.鍑哄簱棰勭害"),
;
public String type;
diff --git a/src/main/java/com/zy/asrs/enums/MatTagType.java b/src/main/java/com/zy/asrs/enums/MatTagType.java
index 9b97cc2..dbf9a6d 100644
--- a/src/main/java/com/zy/asrs/enums/MatTagType.java
+++ b/src/main/java/com/zy/asrs/enums/MatTagType.java
@@ -6,7 +6,8 @@
//灏忎欢
MAT_TAGT_YPE_SMALL("12", "灏忎欢"),
//婊よ姱
- MAT_TAGT_YPE_XIN("14", "婊よ姱");
+ MAT_TAGT_YPE_XIN("14", "婊よ姱")
+ ;
public String id;
diff --git a/src/main/java/com/zy/asrs/enums/OrderSettle.java b/src/main/java/com/zy/asrs/enums/OrderSettle.java
new file mode 100644
index 0000000..f92dfd5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/OrderSettle.java
@@ -0,0 +1,48 @@
+package com.zy.asrs.enums;
+
+/**
+ * 鍗曟嵁鐘舵��
+ * @author Ryan
+ * @date 2025/12/1 12:41
+ * @return null
+ */
+public enum OrderSettle {
+ //鍒濆鍖�
+ ORDER_SETTLE_INIT("0", "鍒濆鍖�"),
+ //寰呭鐞�
+ ORDER_SETTLE_HOLDING("1", "寰呭鐞�"),
+
+ ORDER_SETTLE_WORKING("2", "浣滀笟涓�"),
+
+ ORDER_SETTLE_CANCEL("3", "宸插彇娑�"),
+
+ ORDER_SETTLE_DONE("4", "宸插畬鎴�"),
+
+ ORDER_SETTLE_UN_CANCEL("5", "鍑嗗鍙栨秷"),
+
+ ORDER_SETTLE_REPORTED("6", "涓婃姤瀹屾垚"),
+
+ ORDER_SETTLE_DATA_EX("7", "鏁版嵁寮傚父"),
+
+ ORDER_SETTLE_CHECKED("8", "瀹℃牳瀹屾垚"),
+
+ ORDER_SETTLE_SUBMITED("8", "鎻愪氦瀹屾垚"),
+
+ ORDER_SETTLE_SAVED("10", "淇濆瓨瀹屾垚"),
+
+ ORDER_SETTLE_CHECKED_TASKED("11", "宸茬敓鎴愮洏鐐逛换鍔�"),
+
+ ORDER_SETTLE_SECTION_TASKED("12", "宸茬敓鎴愰儴鍒嗕换鍔�"),
+
+ ;
+
+ public Long type;
+
+ public String desc;
+
+ OrderSettle(String type, String desc) {
+ this.type = Long.valueOf(type);
+ this.desc = desc;
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/enums/OrderTypeEnum.java b/src/main/java/com/zy/asrs/enums/OrderTypeEnum.java
new file mode 100644
index 0000000..bf47fae
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/OrderTypeEnum.java
@@ -0,0 +1,34 @@
+package com.zy.asrs.enums;
+
+public enum OrderTypeEnum {
+ //涓婃灦娲惧伐鍗�
+ PICKING(0, "涓婃灦娲惧伐鍗�"),
+ //澶囪揣娲惧伐鍗�
+ TRANSFER(2, "澶囪揣娲惧伐鍗�"),
+ INVENTORY(3, "鐩樼偣鍗�"),
+ ADJUSTMENT(4, "搴撳瓨璋冩暣鍗�"),
+ //澶囪揣鍗�
+ STOCK(5, "澶囪揣鍗�"),
+
+ //澶囪揣鍑哄簱鍗�
+ STOCK_OUT(6, "澶囪揣鍑哄簱鍗�"),
+
+ //澶囪揣鍏ュ簱鍗�
+ STOCK_IN(7, "澶囪揣鍏ュ簱鍗�");
+
+
+ public Integer type;
+ public String desc;
+ OrderTypeEnum(Integer type, String desc) {
+ this.type = type;
+ this.desc = desc;
+ }
+ public static String getDescByType(Integer type) {
+ for (OrderTypeEnum value : OrderTypeEnum.values()) {
+ if (value.type.equals(type)) {
+ return value.desc;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/enums/TaskIOType.java b/src/main/java/com/zy/asrs/enums/TaskIOType.java
new file mode 100644
index 0000000..23ae4cd
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/TaskIOType.java
@@ -0,0 +1,51 @@
+package com.zy.asrs.enums;
+
+/**
+ * 浠诲姟鍑哄叆搴撶被鍨�
+ * @author Ryan
+ * @date 2025/12/6 14:55
+ * @param null
+ * @return null
+ */
+public enum TaskIOType {
+
+ //鏂欑
+ ALL_IN("1", "1.鍏ュ簱"),
+ //鎵樼洏
+ STATION_STATION("3", "3.绔欏埌绔�"),
+
+ DEVICE_OUT("6", "6.璁惧涓婇��鍑�"),
+
+ PICKING_MEGER("8", "8.鎷f枡閫斾腑骞舵澘"),
+
+ EMPTY_IN("10", "10.绌烘澘鍏ュ簱"),
+
+ MOVE("11", "11.搴撴牸绉昏浇"),
+
+ PICK_IN("53", "53.鎷f枡鍏ュ簱"),
+
+ MERGE_IN("54", "54.骞舵澘鍏ュ簱"),
+
+ CHECK_IN("57", "57.鐩樼偣鍏ュ簱"),
+
+ ALL_OUT("101", "101.鍑哄簱"),
+
+ PICK_OUT("103", "103.鎷f枡鍑哄簱"),
+
+ MERGE_OUT("104", "104.骞舵澘鍑哄簱"),
+
+ CHECK_OUT("107", "107.鐩樼偣鍑哄簱"),
+
+ EMPTY_OUT("110", "110.绌烘澘鍑哄簱"),
+
+ ;
+
+ public Integer type;
+
+ public String desc;
+
+ TaskIOType(String type, String desc) {
+ this.type = Integer.valueOf(type);
+ this.desc = desc;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/enums/TaskStatusType.java b/src/main/java/com/zy/asrs/enums/TaskStatusType.java
new file mode 100644
index 0000000..a14be9f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/TaskStatusType.java
@@ -0,0 +1,40 @@
+package com.zy.asrs.enums;
+
+/**
+ * 宸ヤ綔鐘舵�佹灇涓�
+ * 鏍规嵁WrkStaus琛ㄧ敓鎴愬搴旀灇涓句俊鎭�
+ */
+public enum TaskStatusType {
+
+ IN_START("1", "1.鐢熸垚鍏ュ簱ID"),
+ DEVICE_MOVE("2", "2.璁惧涓婅蛋"),
+ CRANE_IN_PROGRESS("3", "3.鍚婅溅鍏ュ簱涓�"),
+ INBOUND_COMPLETED("4", "4.鍏ュ簱瀹屾垚"),
+ INBOUND_ARCHIVED("5", "5.搴撳瓨鏇存柊瀹屾垚"),
+ DEVICE_EXIT("6", "6.璁惧涓婇��鍑�"),
+ OUT_START("11", "11.鐢熸垚鍑哄簱ID"),
+ CRANE_OUT_PROGRESS("12", "12.鍚婅溅鍑哄簱涓�"),
+ CRANE_EMPTY_OUT_ERROR("13", "13.鍚婅溅绌哄嚭搴撻敊璇�"),
+ OUTBOUND_COMPLETED("14", "14.宸插嚭搴撴湭纭"),
+ OUTBOUND_ARCHIVED("15", "15.鍑哄簱鏇存柊瀹屾垚"),
+ AGV_IN_START("201", "201.鐢熸垚鍏ュ簱ID"),
+ AGV_TASK_ISSUED_IN("202", "202.浠诲姟涓嬪彂鎴愬姛"),
+ AGV_TASK_RUNNING_IN("203", "203.浠诲姟鎵ц涓�"),
+ AGV_TASK_FINISHED_IN("204", "204.浠诲姟鎵ц瀹屾垚"),
+ AGV_INVENTORY_UPDATED_IN("205", "205.搴撳瓨鏇存柊瀹屾垚"),
+ AGV_OUT_START("301", "301.鐢熸垚鍑哄簱ID"),
+ AGV_TASK_ISSUED_OUT("302", "302.浠诲姟涓嬪彂鎴愬姛"),
+ AGV_TASK_RUNNING_OUT("303", "303.浠诲姟鎵ц涓�"),
+ AGV_TASK_FINISHED_OUT("304", "304.浠诲姟鎵ц瀹屾垚"),
+ AGV_INVENTORY_UPDATED_OUT("305", "305.搴撳瓨鏇存柊瀹屾垚"),
+ ;
+
+ public Long type;
+ public String desc;
+
+ TaskStatusType(String type, String desc) {
+ this.type = Long.valueOf(type);
+ this.desc = desc;
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasStationDetlMapper.java b/src/main/java/com/zy/asrs/mapper/BasStationDetlMapper.java
new file mode 100644
index 0000000..67acd23
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasStationDetlMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasStationDetl;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasStationDetlMapper extends BaseMapper<BasStationDetl> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/BasStationDetlService.java b/src/main/java/com/zy/asrs/service/BasStationDetlService.java
new file mode 100644
index 0000000..f57d444
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasStationDetlService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasStationDetl;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasStationDetlService extends IService<BasStationDetl> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 1ee220b..474e5ce 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -6,6 +6,7 @@
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.OrderDetlPakout;
import com.zy.asrs.entity.param.*;
+import com.zy.asrs.entity.param.CompleteParam;
import java.util.Date;
@@ -69,6 +70,15 @@
Double curOutQty, Integer ioType, Long userId, Date now);
/**
+ * WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅
+ * @param combParam
+ * @param l
+ * @return
+ */
+ R changeLoc(CompleteParam combParam, long l);
+
+
+ /**
* @author Ryan
* @date 2025/9/22
* @description: 鑾峰彇缂撳啿鍖哄簱浣嶄俊鎭�
diff --git a/src/main/java/com/zy/asrs/service/OrderService.java b/src/main/java/com/zy/asrs/service/OrderService.java
index 003d867..878002f 100644
--- a/src/main/java/com/zy/asrs/service/OrderService.java
+++ b/src/main/java/com/zy/asrs/service/OrderService.java
@@ -1,7 +1,7 @@
package com.zy.asrs.service;
-import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.Order;
+import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
@@ -25,11 +25,8 @@
void remove(Long orderId);
List<Order> selectComplete();
-
List<Order> selectComplete1();
-
List<Order> selectComplete99();
-
List<Order> selectComplete8();
boolean addToLogTable(Order order);
@@ -37,7 +34,6 @@
List<Order> selectorderNoL(String orderNo);
Order selectOrderMoveStatus();
-
Order selectOrderMoveStatusInitial();
}
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index e9b91c0..335db3f 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -1,12 +1,11 @@
package com.zy.asrs.service;
+import com.core.common.R;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.WaitPakin;
import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.entity.param.EmptyPlateOutParam;
-import com.zy.asrs.entity.param.FullStoreParam;
-import com.zy.asrs.entity.param.LocDetlAdjustParam;
-import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.entity.param.*;
+import com.zy.asrs.entity.param.CompleteParam;
import com.zy.common.model.LocDetlDto;
import com.zy.common.model.StartupDto;
import com.zy.common.model.TaskDto;
@@ -106,4 +105,10 @@
void turnMatLocDetl(EmptyPlateOutParam param, Long userId);
+ /**
+ * 绉诲簱浠诲姟
+ * @param param
+ * @param userId
+ */
+ R taskMove(CompleteParam param, Long userId );
}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasStationDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasStationDetlServiceImpl.java
new file mode 100644
index 0000000..97c6f78
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasStationDetlServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasStationDetlMapper;
+import com.zy.asrs.entity.BasStationDetl;
+import com.zy.asrs.service.BasStationDetlService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basStationDetlService")
+public class BasStationDetlServiceImpl extends ServiceImpl<BasStationDetlMapper, BasStationDetl> implements BasStationDetlService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 64cef33..7acfd03 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -8,16 +8,19 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
+import com.zy.asrs.entity.param.CompleteParam;
import com.zy.asrs.enums.LocStsType;
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
+import com.zy.asrs.utils.Utils;
import com.zy.common.constant.MesConstant;
import com.zy.common.entity.Parameter;
import com.zy.common.model.DetlDto;
import com.zy.common.model.MesCombParam;
import com.zy.common.model.enums.WorkNoType;
+import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.system.timer.LoadingConfigTimer;
@@ -103,6 +106,9 @@
@Autowired
private TaskService taskService;
+
+ @Autowired
+ private SlaveProperties slaveProperties;
@Autowired
private TaskDetlService taskDetlService;
@@ -1164,6 +1170,99 @@
}
/**
+ * 6.15WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅
+ *
+ * @param combParam
+ * @param l
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R changeLoc(CompleteParam combParam, long l) {
+ if (Objects.isNull(combParam)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛�");
+ }
+ if (Objects.isNull(combParam.getLocNo())) {
+ return R.error("搴撲綅鍙蜂笉鑳戒负绌�!!");
+ }
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", combParam.getLocNo()));
+ if (Objects.isNull(locMast)) {
+ return R.error("搴撲綅淇℃伅涓嶅瓨鍦ㄦ垨搴撲綅鐘舵�侀潪 F.鍦ㄥ簱 鐘舵��");
+ }
+
+ List<Integer> doubleLocs = slaveProperties.getDoubleLocs();
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .in("row1", doubleLocs)
+ .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type));
+ Map<String, Object> result = new HashMap<>();
+ LocMast selected = new LocMast();
+ for (LocMast loc : locMasts) {
+ LocMast temLoc = locMastService.selectById(loc.getLocNo());
+ if (Objects.isNull(temLoc)) {
+ throw new CoolException("鏁版嵁閿欒锛� 鍘熷簱浣嶄俊鎭笉瀛樺湪锛侊紒");
+ }
+ String shallowLoc = Utils.getShallowLoc(slaveProperties, temLoc.getLocNo());
+
+ LocMast locMast1 = locMastService.selectById(shallowLoc);
+ if (Objects.isNull(locMast1)) {
+ throw new CoolException("鏁版嵁閿欒锛� 鏂板簱浣嶄俊鎭笉瀛樺湪锛侊紒");
+ }
+ if (!locMast1.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+ continue;
+ }
+ selected = loc;
+
+ break;
+ }
+
+ WrkMast moveTask = generateMoveTask(selected, locMast);
+ result.put("locNo", selected.getLocNo());
+ result.put("taskNo", moveTask.getWrkNo());
+
+ return R.ok().add(result);
+
+ }
+
+ /**
+ * 鐢熸垚绉诲簱浠诲姟
+ *
+ * @param result
+ * @param sourceLoc
+ * @return
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public WrkMast generateMoveTask(LocMast result, LocMast sourceLoc) {
+ WrkMast wrkMast = new WrkMast();
+ int workNo = commonService.getWorkNo(0);
+
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setLocNo(result.getLocNo());
+ wrkMast.setSourceLocNo(sourceLoc.getLocNo());
+ wrkMast.setWrkSts(11L);
+ wrkMast.setIoType(11);
+ wrkMast.setCrnNo(sourceLoc.getCrnNo());
+ wrkMast.setAppeTime(new Date());
+ wrkMast.setModiTime(new Date());
+ wrkMast.setIoPri(13D);
+ wrkMast.setWrkDate(new Date());
+
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
+ }
+
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc.getLocNo()));
+ locDetls.forEach(detl -> {
+ detl.setLocNo(result.getLocNo());
+ if (!locDetlService.updateById(detl)) {
+ throw new CoolException("鏄庣粏鏇存柊澶辫触锛侊紒");
+ }
+ });
+
+ return wrkMast;
+ }
+
+
+ /**
* @author Ryan
* @date 2025/9/22
* @description: 鑾峰彇缂撳啿鍖哄簱浣嶄俊鎭�
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index e443df3..d7455b9 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -1,26 +1,25 @@
package com.zy.asrs.service.impl;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.SnowflakeIdWorker;
+import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.EmptyPlateOutParam;
-import com.zy.asrs.entity.param.FullStoreParam;
-import com.zy.asrs.entity.param.LocDetlAdjustParam;
-import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.entity.param.*;
+import com.zy.asrs.entity.param.CompleteParam;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
+import com.zy.common.constant.MesConstant;
import com.zy.common.model.*;
import com.zy.common.model.enums.IoWorkType;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
+import com.zy.common.utils.HttpHandler;
import com.zy.common.web.WcsController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -1404,4 +1403,73 @@
}
}
+ /**
+ * 鎵ц绉诲簱浠诲姟
+ * @param combParam
+ * @param userId
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R taskMove(CompleteParam combParam, Long userId) {
+
+ if (Objects.isNull(combParam.getTaskNo())) {
+ return R.error("浠诲姟鍙蜂笉鑳戒负绌�");
+ }
+ if (Objects.isNull(combParam.getSourceLocNo())) {
+ return R.error("婧愬簱浣嶄笉鑳戒负绌猴紒锛�");
+ }
+ if (Objects.isNull(combParam.getLocNo())) {
+ return R.error("鐩爣搴撲綅涓嶈兘涓虹┖锛�");
+ }
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", combParam.getTaskNo()));
+ if (Objects.isNull(wrkMast)) {
+ return R.error("浠诲姟妗d笉瀛樺湪锛侊紒");
+ }
+
+ String body = JSON.toJSONString(combParam);
+ boolean success = false;
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.WCS_URL)
+ .setPath(MesConstant.MOVE_LOC_TASK)
+ .setJson(body)
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ wrkMast.setWrkSts(2L);
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�");
+ }
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
+ if (!Objects.isNull(locMast)) {
+ locMast.setMoveStatus(1);
+ locMastService.updateById(locMast);
+ }
+ success = true;
+ } else {
+ log.error("鍙戦�乤gv浠诲姟澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.WCS_URL + MesConstant.MOVE_LOC_TASK, body, response);
+ }
+ } catch (Exception e) {
+ log.error("鍙戦�乤gv浠诲姟寮傚父", e);
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鍙戦�乤gv浠诲姟",
+ MesConstant.WCS_URL + MesConstant.MOVE_LOC_TASK,
+ null,
+ "127.0.0.1",
+ body,
+ response,
+ success);
+ } catch (Exception e) {
+ log.error("", e);
+ }
+ }
+
+ return null;
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
index 42f11d2..d3677c0 100644
--- a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -1,8 +1,13 @@
package com.zy.asrs.task;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.api.controller.params.WorkTaskParams;
+import com.zy.api.service.WcsApiService;
import com.zy.asrs.entity.Task;
import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.param.CompleteParam;
import com.zy.asrs.service.TaskService;
+import com.zy.asrs.service.WorkService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.WorkMastHandler;
@@ -12,8 +17,8 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* Created by vincent on 2020/7/7
@@ -29,6 +34,10 @@
private WorkMastHandler workMastHandler;
@Autowired
private TaskService taskService;
+ @Autowired
+ private WcsApiService wcsApiService;
+ @Autowired
+ private WorkService workService;
@Scheduled(cron = "0/3 * * * * ? ")
private void execute() {
@@ -68,4 +77,47 @@
}
}
+ /**
+ * 浠诲姟鑷姩涓嬪彂鍑哄簱浠诲姟
+ *
+ * @author Ryan
+ * @date 2026/1/10 14:42
+ */
+ @Scheduled(cron = "0/5 * * * * ? ")
+ private void autoPubTasks() {
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+ .in("wrk_sts", Arrays.asList(11L, 1L))
+ .orderDesc(Arrays.asList("io_pri")));
+ if (wrkMasts.isEmpty()) {
+ return;
+ }
+ Map<Integer, List<WrkMast>> listMap = wrkMasts.stream().collect(Collectors.groupingBy(WrkMast::getCrnNo));
+ listMap.keySet().forEach(key -> {
+ List<WrkMast> wrkMasts1 = listMap.get(key);
+ Collections.shuffle(wrkMasts1);
+ try {
+ wrkMasts1.forEach(wrkMast -> {
+ WorkTaskParams params = new WorkTaskParams();
+ if (wrkMast.getIoType().equals(11)) {
+ CompleteParam param = new CompleteParam();
+ param.setTaskNo(wrkMast.getWrkNo() + "");
+ param.setSourceLocNo(wrkMast.getSourceLocNo());
+ param.setLocNo(wrkMast.getLocNo());
+ workService.taskMove(param, 9527L);
+ } else if (wrkMast.getIoType() > 100) {
+ params.setType("in")
+ .setTaskNo(wrkMast.getWrkNo() + "")
+ .setLocNo(wrkMast.getSourceLocNo())
+ .setBarcode(wrkMast.getBarcode())
+ .setStaNo(wrkMast.getStaNo())
+ .setTaskPri(wrkMast.getIoPri().intValue());
+ wcsApiService.pubWrkToWcs(params);
+ }
+ });
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ }
+ });
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 3cc7605..27b9426 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -11,7 +11,14 @@
import com.zy.common.properties.SlaveProperties;
import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
/**
@@ -42,6 +49,27 @@
}
}
+ public static boolean isValidFormat(String dateStr, String format) {
+ SimpleDateFormat sdf = new SimpleDateFormat(format);
+ sdf.setLenient(false); // 涓ユ牸妯″紡锛屽繀椤诲畬鍏ㄥ尮閰嶆牸寮�
+ try {
+ sdf.parse(dateStr);
+ return true;
+ } catch (ParseException e) {
+ return false;
+ }
+ }
+
+ public static Date getFormateDate(String datestr) {
+ //瀛楃涓茶浆鏃ユ湡
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ LocalDateTime parse = LocalDateTime.parse(datestr, dateTimeFormatter);
+ Instant instant = parse.atZone(ZoneId.systemDefault()).toInstant();
+ Date date = Date.from(instant);
+ return date;
+ }
+
+
/**
* 鍒ゆ柇鏄惁涓烘繁搴撲綅
*/
diff --git a/src/main/java/com/zy/common/constant/HIKApiConstant.java b/src/main/java/com/zy/common/constant/HIKApiConstant.java
new file mode 100644
index 0000000..88632af
--- /dev/null
+++ b/src/main/java/com/zy/common/constant/HIKApiConstant.java
@@ -0,0 +1,17 @@
+package com.zy.common.constant;
+
+
+public class HIKApiConstant {
+
+ // AGV IP鍦板潃
+ public static final String AGV_IP = "http://192.168.238.202/rcs/rtas/api/robot/controller";
+
+ public static final String TASK_SUBMIT = "/task/submit";
+
+ // 鍏ュ簱鍛煎彨AGV鍙栬揣
+ public static final String AGV_CALL_IN_PATH = "/rcms/services/rest/hikRpcService/genAgvSchedulingTask";
+
+ // AGV缁戝畾浠撲綅
+ public static final String AGV_BIND_PATH = "/rcms/services/rest/hikRpcService/bindCtnrAndBin";
+
+}
diff --git a/src/main/java/com/zy/common/constant/MesConstant.java b/src/main/java/com/zy/common/constant/MesConstant.java
index 0fc2f46..0ac8b29 100644
--- a/src/main/java/com/zy/common/constant/MesConstant.java
+++ b/src/main/java/com/zy/common/constant/MesConstant.java
@@ -12,8 +12,20 @@
public static final String PAKIN_URL = "mes/api/zy/v1/warehouse/sendList";
public static final String PAKOUT_URL = "wmsFinprd/api/zy/v1/packOut/sendList";
+ //WCS绯荤粺鎺ュ彛鍦板潃
+// public static final String WCS_URL = "http://192.168.238.31:9090/wcs";
+ public static final String WCS_URL = "http://127.0.0.1:9090/wcs";
+ /**绉诲簱鐢宠閾炬帴浠诲姟**/
+ public static final String MOVE_LOC_TASK = "/openapi/createLocMoveTask";
+ /***鐢宠鍏ュ簱浠诲姟*/
+ public static final String PUB_TASK_IN = "/openapi/createInTask";
+ /***鐢宠鍑哄簱浠诲姟*/
+ public static final String PUB_TASK_OUT = "/openapi/createOutTask";
+
+ /***鍚屾搴綅淇℃伅*/
+ public static final String SYN_LOCS = "/openapi/getAllLocInformation";
/**
* token閫氳繃header浼犻�掔殑鍚嶇О
*/
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 07853e1..e7a0d35 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,18 +1,18 @@
server:
- port: 8081
+ port: 8080
servlet:
- context-path: /@pom.build.finalName@
+ context-path: /wms
spring:
application:
- name: @pom.build.finalName@
+ name: wms
jmx:
enabled: false
datasource:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: sa
password: sa@123
- url: jdbc:sqlserver://192.168.4.15:1433;databasename=jxhcwms
+ url: jdbc:sqlserver://192.168.10.221:1433;databaseName=nbtlwms;
mvc:
static-path-pattern: /**
redis:
diff --git a/src/main/resources/mapper/BasStationDetlMapper.xml b/src/main/resources/mapper/BasStationDetlMapper.xml
new file mode 100644
index 0000000..b734f70
--- /dev/null
+++ b/src/main/resources/mapper/BasStationDetlMapper.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.BasStationDetlMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasStationDetl">
+ <result column="id" property="id" />
+ <result column="dev_no" property="devNo" />
+ <result column="anfme" property="anfme" />
+ <result column="zpallet" property="zpallet" />
+ <result column="matnr" property="matnr" />
+ <result column="maktx" property="maktx" />
+ <result column="batch" property="batch" />
+ <result column="order_no" property="orderNo" />
+ <result column="specs" property="specs" />
+ <result column="model" property="model" />
+ <result column="color" property="color" />
+ <result column="brand" property="brand" />
+ <result column="unit" property="unit" />
+ <result column="price" property="price" />
+ <result column="sku" property="sku" />
+ <result column="units" property="units" />
+ <result column="barcode" property="barcode" />
+ <result column="origin" property="origin" />
+ <result column="manu" property="manu" />
+ <result column="manu_date" property="manuDate" />
+ <result column="item_num" property="itemNum" />
+ <result column="safe_qty" property="safeQty" />
+ <result column="weight" property="weight" />
+ <result column="man_length" property="manLength" />
+ <result column="volume" property="volume" />
+ <result column="three_code" property="threeCode" />
+ <result column="supp" property="supp" />
+ <result column="supp_code" property="suppCode" />
+ <result column="be_batch" property="beBatch" />
+ <result column="dead_time" property="deadTime" />
+ <result column="dead_warn" property="deadWarn" />
+ <result column="source" property="source" />
+ <result column="inspect" property="inspect" />
+ <result column="danger" property="danger" />
+ <result column="modi_user" property="modiUser" />
+ <result column="modi_time" property="modiTime" />
+ <result column="appe_user" property="appeUser" />
+ <result column="appe_time" property="appeTime" />
+ <result column="memo" property="memo" />
+ <result column="line_number" property="lineNumber" />
+ <result column="standby1" property="standby1" />
+ <result column="standby2" property="standby2" />
+ <result column="standby3" property="standby3" />
+ <result column="box_type1" property="boxType1" />
+ <result column="box_type2" property="boxType2" />
+ <result column="box_type3" property="boxType3" />
+
+ </resultMap>
+
+</mapper>
--
Gitblit v1.9.1