From 299cd2a4b79f32f9e1b55997e48bbe7e598c2d3f Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 27 八月 2025 17:31:47 +0800
Subject: [PATCH] 添加openApi模块 添加下发任务接口模块
---
rsf-server/pom.xml | 113 -------
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsRcsService.java | 17 +
rsf-framework/pom.xml | 24 +
rsf-common/pom.xml | 109 ++++++
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RcsPubTaskParams.java | 48 +++
rsf-open-api/src/main/resources/application-dev.yml | 102 ++++++
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/CommonResponse.java | 30 +
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java | 119 +++++++
rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java | 80 +++++
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java | 20 +
pom.xml | 1
rsf-open-api/pom.xml | 28 +
rsf-open-api/src/main/resources/application.yml | 25 +
rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/RestTemplateConfig.java | 20 +
rsf-open-api/src/main/resources/application-prod.yml | 68 ++++
rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/LocStasEnum.java | 26 +
rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/TaskTypeEnum.java | 26 +
rsf-server/src/main/java/com/vincent/rsf/server/common/config/SwaggerConfig.java | 17
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/RcsConstant.java | 7
rsf-server/src/main/java/com/vincent/rsf/server/api/config/RemotesInfoProperties.java | 15
rsf-open-api/src/main/java/com/vincent/rsf/openApi/OpenApi.java | 13
rsf-server/src/main/resources/application-dev.yml | 7
22 files changed, 798 insertions(+), 117 deletions(-)
diff --git a/pom.xml b/pom.xml
index 4f8f968..722b109 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,6 +20,7 @@
<module>rsf-common</module>
<module>rsf-framework</module>
<module>rsf-server</module>
+ <module>rsf-open-api</module>
</modules>
<properties>
diff --git a/rsf-common/pom.xml b/rsf-common/pom.xml
index e3d17b7..1409cae 100644
--- a/rsf-common/pom.xml
+++ b/rsf-common/pom.xml
@@ -18,6 +18,7 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<gson.version>2.11.0</gson.version>
<fastjson.version>1.2.58</fastjson.version>
+ <mysql-driver.version>5.1.47</mysql-driver.version>
</properties>
<dependencies>
@@ -49,11 +50,119 @@
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
+ <groupId>com.ibeetl</groupId>
+ <artifactId>beetl</artifactId>
+ <version>3.6.1.RELEASE</version>
+ </dependency>
+
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>${mysql-driver.version}</version>
+ </dependency>
+
+ <!-- mybatis-plus -->
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-boot-starter</artifactId>
+ <version>3.4.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-generator</artifactId>
+ <version>3.4.1</version>
+ </dependency>
+ <dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
<scope>compile</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-mail</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-websocket</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi</artifactId>
+ <version>4.1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>cn.afterturn</groupId>
+ <artifactId>easypoi-spring-boot-starter</artifactId>
+ <version>4.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>1.9.19</version> <!-- 纭繚浣跨敤鏈�鏂扮増鏈� -->
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjweaver</artifactId>
+ <version>1.9.19</version> <!-- 鐢ㄤ簬缁囧叆鍒囬潰 -->
+ </dependency>
+ <!-- swagger -->
+ <dependency>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-boot-starter</artifactId>
+ <version>3.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.github.xiaoymin</groupId>
+ <artifactId>knife4j-spring-boot-starter</artifactId>
+ <version>3.0.2</version>
+ </dependency>
+ <!-- jjwt -->
+ <dependency>
+ <groupId>io.jsonwebtoken</groupId>
+ <artifactId>jjwt-impl</artifactId>
+ <version>0.11.2</version>
+ </dependency>
+ <dependency>
+ <groupId>io.jsonwebtoken</groupId>
+ <artifactId>jjwt-jackson</artifactId>
+ <version>0.11.2</version>
+ </dependency>
+
+ <!-- 鍥惧舰楠岃瘉鐮� -->
+ <dependency>
+ <groupId>com.github.whvcse</groupId>
+ <artifactId>easy-captcha</artifactId>
+ <version>1.6.2</version>
+ </dependency>
+
+ <!-- open office, 鐢ㄤ簬鏂囨。杞琾df瀹炵幇鍦ㄧ嚎棰勮 -->
+ <dependency>
+ <groupId>com.github.livesense</groupId>
+ <artifactId>jodconverter-core</artifactId>
+ <version>1.0.5</version>
+ </dependency>
+
+ <!-- tika, 鐢ㄤ簬FileServer鑾峰彇content-type -->
+ <dependency>
+ <groupId>org.apache.tika</groupId>
+ <artifactId>tika-core</artifactId>
+ <version>2.1.0</version>
+ </dependency>
+
+ <!-- druid -->
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>druid-spring-boot-starter</artifactId>
+ <version>1.2.6</version>
+ </dependency>
</dependencies>
<build>
diff --git a/rsf-framework/pom.xml b/rsf-framework/pom.xml
index e599113..5d80a0f 100644
--- a/rsf-framework/pom.xml
+++ b/rsf-framework/pom.xml
@@ -28,6 +28,30 @@
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ <version>1.6.6</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>fastjson</artifactId>
+ <version>1.2.83</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
</dependencies>
<build>
diff --git a/rsf-open-api/pom.xml b/rsf-open-api/pom.xml
new file mode 100644
index 0000000..3136260
--- /dev/null
+++ b/rsf-open-api/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>com.vincent</groupId>
+ <artifactId>rsf</artifactId>
+ <version>1.0.0</version>
+ </parent>
+
+ <artifactId>rsf-open-api</artifactId>
+
+ <properties>
+ <maven.compiler.source>17</maven.compiler.source>
+ <maven.compiler.target>17</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.vincent</groupId>
+ <artifactId>rsf-common</artifactId>
+ <version>1.0.0</version>
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/OpenApi.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/OpenApi.java
new file mode 100644
index 0000000..b058da5
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/OpenApi.java
@@ -0,0 +1,13 @@
+package com.vincent.rsf.openApi;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
+import org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration;
+
+@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, UserDetailsServiceAutoConfiguration.class })
+public class OpenApi {
+ public static void main(String[] args) {
+ SpringApplication.run(OpenApi.class, args);
+ }
+}
\ No newline at end of file
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/RestTemplateConfig.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/RestTemplateConfig.java
new file mode 100644
index 0000000..26c3fd5
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/config/RestTemplateConfig.java
@@ -0,0 +1,20 @@
+package com.vincent.rsf.openApi.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: 鍒濆鍖朢estTemplage
+ * @version 1.0
+ */
+@Configuration
+public class RestTemplateConfig {
+
+ @Bean
+ public RestTemplate restTemplate() {
+ return new RestTemplate();
+ }
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java
new file mode 100644
index 0000000..db251dd
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java
@@ -0,0 +1,80 @@
+package com.vincent.rsf.openApi.controller;
+
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.openApi.entity.params.RcsPubTaskParams;
+import com.vincent.rsf.openApi.service.WmsRcsService;
+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;
+
+@RestController
+@Api("RCS璋冨害浜や簰鎺ュ彛")
+@RequestMapping("/rcs")
+public class WmsRcsController {
+
+ @Autowired
+ private WmsRcsService wmsRcsService;
+
+ /**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: 浠诲姟涓嬪彂
+ * @version 1.0
+ */
+ @ApiOperation("璋冨害浠诲姟涓嬪彂")
+ @PostMapping("/pub/task")
+ public R pubTasks(@RequestBody RcsPubTaskParams params) {
+ if (Objects.isNull(params)) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return wmsRcsService.pubTasks(params);
+ }
+
+ /**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: 鍙栨秷浠诲姟
+ * @version 1.0
+ */
+ @ApiOperation("鍙栨秷璋冨害浠诲姟")
+ @PostMapping("/cancel/task")
+ public R cancelTasks(@RequestBody Map<String, Object> params) {
+ return wmsRcsService.cancelTasks(params);
+ }
+
+ /**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: 浠诲姟鍥炶皟锛岀姸鎬佸洖鍐�
+ * @version 1.0
+ */
+ @ApiOperation("寮傚父浠诲姟鍥炶皟")
+ @PostMapping("/callback/event")
+ public R callBackEvent(@RequestBody Map<String, Object> params) {
+ return wmsRcsService.callBackEvent(params);
+ }
+
+
+ /**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: RCS搴撲綅淇℃伅鍚屾
+ * @version 1.0
+ */
+ @ApiOperation("RCS搴撲綅淇℃伅鍚屾")
+ @PostMapping("/sync/locs")
+ public R syncLocsToWms() {
+ wmsRcsService.syncLocs();
+ return R.ok();
+ }
+
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/CommonResponse.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/CommonResponse.java
new file mode 100644
index 0000000..5d944a9
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/CommonResponse.java
@@ -0,0 +1,30 @@
+package com.vincent.rsf.openApi.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: 閫氱敤鍝嶅簲缁撴灉
+ * @version 1.0
+ */
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "CommonResponse", description = "閫氱敤鍝嶅簲缁撴灉 ")
+public class CommonResponse {
+
+ @ApiModelProperty("鍝嶅簲缂栫爜")
+ private Integer code;
+
+ @ApiModelProperty("鍝嶅簲娑堟伅")
+ private String msg;
+
+ @ApiModelProperty("鍝嶅簲缁撴灉")
+ private Object data;
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/RcsConstant.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/RcsConstant.java
new file mode 100644
index 0000000..fcdb232
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/RcsConstant.java
@@ -0,0 +1,7 @@
+package com.vincent.rsf.openApi.entity.constant;
+
+public class RcsConstant {
+
+ public static String pubTask = "/api/open/bus/submit";
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RcsPubTaskParams.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RcsPubTaskParams.java
new file mode 100644
index 0000000..c81580d
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RcsPubTaskParams.java
@@ -0,0 +1,48 @@
+package com.vincent.rsf.openApi.entity.params;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "RcsPubTaskParams", description = "涓嬪彂浠诲姟鍙傛暟")
+public class RcsPubTaskParams implements Serializable {
+
+ @ApiModelProperty("鎵规")
+ private String batch;
+
+ @ApiModelProperty("浠诲姟鏄庣粏")
+ private List<TaskParam> taskList;
+}
+
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "TaskItem", description = "浠诲姟鍒楄〃")
+class TaskParam {
+
+ @ApiModelProperty("浠诲姟绫诲瀷{LOC_TO_LOC: 绉诲簱, LOC_TO_STA: 鍑哄簱, STA_TO_LOC: 鍏ュ簱, STA_TO_STA: 绔欑偣闂存惉杩恾")
+ private String taskType;
+
+ @ApiModelProperty("璧峰搴撲綅")
+ private String oriLoc;
+
+ @ApiModelProperty("璧峰绔欑偣")
+ private String oriSta;
+
+ @ApiModelProperty("鐩爣搴撲綅")
+ private String destLoc;
+
+ @ApiModelProperty("鐩爣绔欑偣")
+ private String destSta;
+
+ @ApiModelProperty("鎵樼洏鐮�")
+ private String zpallet;
+
+ @ApiModelProperty("浼樺厛绾�")
+ private Integer priority;
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/LocStasEnum.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/LocStasEnum.java
new file mode 100644
index 0000000..42a39a4
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/LocStasEnum.java
@@ -0,0 +1,26 @@
+package com.vincent.rsf.openApi.enums;
+
+/**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: 搴撲綅鐘舵��
+ * @version 1.0
+ */
+public enum LocStasEnum {
+ /**搴撲綅鐘舵��*/
+ LOC_STAS_ENUM_IDLE("IDLE", "绌洪棽"),
+ LOC_STAS_ENUM_STOCK("STOCK", "鍦ㄥ簱"),
+ LOC_STAS_ENUM_PAKIN("PAKIN", "鍏ュ簱棰勭害"),
+ LOC_STAS_ENUM_PAKOUT("PAKOUT", "鍑哄簱棰勭害"),
+ LOC_STAS_ENUM_DISABLED("DISABLED", "绂佺敤"),
+ ;
+
+
+ LocStasEnum(String code, String desc) {
+ this.code = code;
+ this.desc = desc;
+ }
+
+ private String code;
+ private String desc;
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/TaskTypeEnum.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/TaskTypeEnum.java
new file mode 100644
index 0000000..27e93d9
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/TaskTypeEnum.java
@@ -0,0 +1,26 @@
+package com.vincent.rsf.openApi.enums;
+
+/**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: 浠诲姟绫诲瀷鏋氫妇
+ * @version 1.0
+ */
+public enum TaskTypeEnum {
+ //浠诲姟绫诲瀷
+ TASK_TYPE_ENUM_TRANSFER("LOC_TO_LOC", "绉诲簱"),
+ TASK_TYPE_ENUM_OUT("LOC_TO_STA", "鍑哄簱"),
+ TASK_TYPE_ENUM_IN("LOC_TO_LOC", "鍏ュ簱"),
+ TASK_TYPE_ENUM_STA("STA_TO_STA", "绔欑偣闂存惉杩�")
+ ;
+
+ TaskTypeEnum(String code, String desc) {
+ this.code = code;
+ this.desc = desc;
+ }
+
+ private String code;
+
+ private String desc;
+
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsRcsService.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsRcsService.java
new file mode 100644
index 0000000..e96c585
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsRcsService.java
@@ -0,0 +1,17 @@
+package com.vincent.rsf.openApi.service;
+
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.openApi.entity.params.RcsPubTaskParams;
+
+import java.util.Map;
+
+public interface WmsRcsService {
+
+ R pubTasks(RcsPubTaskParams params);
+
+ R cancelTasks(Map<String, Object> params);
+
+ R callBackEvent(Map<String, Object> params);
+
+ void syncLocs();
+}
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java
new file mode 100644
index 0000000..37caa2c
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java
@@ -0,0 +1,119 @@
+package com.vincent.rsf.openApi.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.cfg.CoercionAction;
+import com.fasterxml.jackson.databind.cfg.CoercionInputShape;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.openApi.entity.CommonResponse;
+import com.vincent.rsf.openApi.entity.constant.RcsConstant;
+import com.vincent.rsf.openApi.entity.params.RcsPubTaskParams;
+import com.vincent.rsf.openApi.service.WmsRcsService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+
+@Slf4j
+@Service("wmsRcsServiceImpl")
+public class WmsRcsServiceImpl implements WmsRcsService {
+
+// @Autowired
+// private RemotesInfoProperties.RcsApi rcsApi;
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ /**RCS鍩虹閰嶇疆閾炬帴*/
+// private final String rcsUrl = rcsApi.getHost() + rcsApi.getPort();
+
+ /**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: 浠诲姟涓嬪彂
+ * @version 1.0
+ */
+ @Override
+ @Transactional(timeout = 60, rollbackFor = Exception.class)
+ public R pubTasks(RcsPubTaskParams params) {
+ log.info("浠诲姟涓嬪彂锛岃姹傚湴鍧�锛� {}锛� 璇锋眰鍙傛暟锛� {}", "" + RcsConstant.pubTask, JSONObject.toJSONString(params));
+ HttpHeaders headers = new HttpHeaders();
+ headers.add("Content-Type", "application/json");
+ headers.add("api-version", "v2.0");
+ HttpEntity httpEntity = new HttpEntity(params, headers);
+ ResponseEntity<String> exchange = restTemplate.exchange("rcsUrl" + RcsConstant.pubTask, HttpMethod.POST, httpEntity, String.class);
+ log.info("浠诲姟涓嬪彂鍚庯紝鍝嶅簲缁撴灉锛� {}", exchange);
+ if (Objects.isNull(exchange.getBody())) {
+ throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒");
+ } else {
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.coercionConfigDefaults()
+ .setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
+ try {
+ CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
+ if (result.getCode() == 200) {
+ return R.ok(result);
+ } else {
+ throw new CoolException("浠诲姟涓嬪彂澶辫触锛侊紒");
+ }
+ } catch (JsonProcessingException e) {
+ throw new CoolException(e.getMessage());
+ }
+ }
+ }
+
+ /**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: 鍙栨秷浠诲姟
+ * @version 1.0
+ */
+ @Override
+ public R cancelTasks(Map<String, Object> params) {
+ return null;
+ }
+
+ /**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: RCS鐘舵�佸洖鍐�
+ * @version 1.0
+ */
+ @Override
+ public R callBackEvent(Map<String, Object> params) {
+ return null;
+ }
+
+ /**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: 搴撲綅淇℃伅鍚屾
+ * @version 1.0
+ */
+ @Override
+ public void syncLocs() {
+ ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(1);
+ scheduled.scheduleWithFixedDelay(new Runnable() {
+ int current = 1;
+ @Override
+ public void run() {
+ log.info("<UNK>{}<UNK>", current);
+ current ++;
+ log.info("{}", current);
+ }
+ }, 3, 3, TimeUnit.SECONDS);
+ }
+}
diff --git a/rsf-open-api/src/main/resources/application-dev.yml b/rsf-open-api/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..85e4cc3
--- /dev/null
+++ b/rsf-open-api/src/main/resources/application-dev.yml
@@ -0,0 +1,102 @@
+server:
+ port: 8081
+ servlet:
+ context-path: /@pom.artifactId@
+spring:
+ application:
+ name: @pom.artifactId@
+ mvc:
+ static-path-pattern: /**
+ path match:
+ matching-strategy: ANT_PATH_MATCHER
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+# url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+# username: rsf
+ username: root
+ url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+ password: 34821015
+ type: com.alibaba.druid.pool.DruidDataSource
+ druid:
+ initial-size: 5
+ min-idle: 5
+ max-active: 20
+ max-wait: 30000
+ time-between-eviction-runs-millis: 60000
+ min-evictable-idle-time-millis: 300000
+ test-while-idle: true
+ test-on-borrow: true
+ test-on-return: false
+ remove-abandoned: true
+ remove-abandoned-timeout: 1800
+ #pool-prepared-statements: false
+ #max-pool-prepared-statement-per-connection-size: 20
+ filters: stat, wall
+ validation-query: SELECT 'x'
+ aop-patterns: com.zy.*.*.service.*
+ stat-view-servlet:
+ url-pattern: /druid/*
+ reset-enable: true
+ login-username: admin
+ login-password: admin
+ enabled: true
+ servlet:
+ multipart:
+ maxFileSize: 100MB
+ maxRequestSize: 100MB
+ jmx:
+ enabled: false
+ mail:
+ from: t1731253606@163.com
+ host: smtp.163.com
+ port: 465
+ username: t1731253606@163.com
+ password: FCqETysH8TfuPqkY
+ properties:
+ mail:
+ smtp:
+ auth: true
+ ssl: true
+ connectiontimeout: 5000
+ timeout: 5000
+ socketFactory:
+ class: javax.net.ssl.SSLSocketFactory
+redis:
+ host: 127.0.0.1
+ password: xltys1995
+ port: 6379
+ timeout: 5000
+ index: 15
+
+#骞冲彴鎺ュ彛淇℃伅閰嶇疆(濡傦細ERP, QMS, WCS绛�)
+platform:
+ #浼佷笟ERP骞冲彴
+ erp:
+ #localhost
+ host: http://127.0.0.1
+ #绔彛鍙�
+ port: 8080
+ #鎺ュ搧閾炬帴鍓嶇紑
+ pre-path: rsf-server
+ #鎺ュ彛鏄庣粏
+ api:
+ #璐ㄦ涓婃姤鎺ュ彛
+ notify-inspect: /report/inspect
+ rcs:
+ #閾炬帴
+ host: http://192.168.4.84
+ #绔彛
+ port: 8088
+
+#浠撳簱鍔熻兘鍙傛暟閰嶇疆
+stock:
+ #鏄惁鍏佽鎵撳嵃璐х墿鏍囩锛� 榛樿鍏佽鎵撳嵃锛屼篃鍙敱渚涘簲鍟嗘彁渚涙爣绛�
+ flagPrinter: false
+ #鏄惁鑷姩鐢熸垚ASN鍗曪紙榛樿锛氭槸锛夛紝涓恒�庡惁銆忓垯寮�鍚疨O鍗曟墜鍔ㄧ敓鎴怉SN鍗曞姛鑳�
+ flagAutoAsn: false
+ #璐ㄦ鍔熻兘 鏄惁鏍¢獙涓婃灦锛堥粯璁わ細鏄級锛屾槸鍚︽牎楠屾敹璐э紙榛樿锛氬惁锛�
+ inspect:
+ #鍒ゆ柇鏄悗妫�楠屽悎鏍煎悗锛屾墠鍏佽涓婃灦
+ flagAvailable: true
+ #鍒ゆ柇鏄惁鏍¢獙鍚堟牸鍚庯紝鎵嶅厑璁告敹璐�
+ flagReceiving: false
\ No newline at end of file
diff --git a/rsf-open-api/src/main/resources/application-prod.yml b/rsf-open-api/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..1c91565
--- /dev/null
+++ b/rsf-open-api/src/main/resources/application-prod.yml
@@ -0,0 +1,68 @@
+server:
+ port: 8080
+ servlet:
+ context-path: /@pom.artifactId@
+
+spring:
+ application:
+ name: @pom.artifactId@
+ mvc:
+ static-path-pattern: /**
+ datasource:
+ driver-class-name: com.mysql.jdbc.Driver
+ url: jdbc:mysql://192.168.4.24:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+ username: root
+ password: 34821015
+ type: com.alibaba.druid.pool.DruidDataSource
+ druid:
+ initial-size: 5
+ min-idle: 5
+ max-active: 20
+ max-wait: 30000
+ time-between-eviction-runs-millis: 60000
+ min-evictable-idle-time-millis: 300000
+ test-while-idle: true
+ test-on-borrow: true
+ test-on-return: false
+ remove-abandoned: true
+ remove-abandoned-timeout: 1800
+ #pool-prepared-statements: false
+ #max-pool-prepared-statement-per-connection-size: 20
+ filters: stat, wall
+ validation-query: SELECT 'x'
+ aop-patterns: com.zy.*.*.service.*
+ stat-view-servlet:
+ url-pattern: /druid/*
+ reset-enable: true
+ login-username: admin
+ login-password: admin
+ enabled: true
+ servlet:
+ multipart:
+ maxFileSize: 100MB
+ maxRequestSize: 100MB
+ jmx:
+ enabled: false
+ mail:
+ from: whatsflow.team@gmail.com
+ host: smtp.gmail.com
+ port: 587
+ username: whatsflow.team@gmail.com
+ password: elpc vfwk twnu uoyy
+ properties:
+ mail:
+ smtp:
+ auth: true
+ starttls.enable: true
+ connectiontimeout: 5000
+ timeout: 5000
+
+redis:
+ host: 127.0.0.1
+ password: xltys1995
+ port: 6379
+ timeout: 5000
+ index: 11
+
+stock:
+ flagAvailable: true
diff --git a/rsf-open-api/src/main/resources/application.yml b/rsf-open-api/src/main/resources/application.yml
new file mode 100644
index 0000000..4e2b57e
--- /dev/null
+++ b/rsf-open-api/src/main/resources/application.yml
@@ -0,0 +1,25 @@
+spring:
+ profiles:
+ active: dev
+
+mybatis-plus:
+ mapper-locations: classpath:mapper/*/*.xml
+ # global-config:
+ # field-strategy: 0
+ configuration:
+# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ map-underscore-to-camel-case: true
+ cache-enabled: true
+ call-setters-on-nulls: true
+ global-config:
+ :banner: false
+ db-config:
+ id-type: auto
+ logic-delete-value: 1
+ logic-not-delete-value: 0
+super:
+ pwd: xltys1995
+
+logging:
+ file:
+ path: logs/@pom.artifactId@
diff --git a/rsf-server/pom.xml b/rsf-server/pom.xml
index 86be1e6..e1848c5 100644
--- a/rsf-server/pom.xml
+++ b/rsf-server/pom.xml
@@ -19,7 +19,6 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<mysql-driver.version>5.1.47</mysql-driver.version>
</properties>
-
<dependencies>
<dependency>
<groupId>com.vincent</groupId>
@@ -30,121 +29,9 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
-
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-mail</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-websocket</artifactId>
- </dependency>
-
- <dependency>
- <groupId>com.ibeetl</groupId>
- <artifactId>beetl</artifactId>
- <version>3.6.1.RELEASE</version>
- </dependency>
-
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>${mysql-driver.version}</version>
- </dependency>
-
- <!-- mybatis-plus -->
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>3.4.1</version>
- </dependency>
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-generator</artifactId>
- <version>3.4.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi</artifactId>
- <version>4.1.0</version>
- <exclusions>
- <exclusion>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>cn.afterturn</groupId>
- <artifactId>easypoi-spring-boot-starter</artifactId>
- <version>4.1.0</version>
- </dependency>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjrt</artifactId>
- <version>1.9.19</version> <!-- 纭繚浣跨敤鏈�鏂扮増鏈� -->
- </dependency>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>1.9.19</version> <!-- 鐢ㄤ簬缁囧叆鍒囬潰 -->
- </dependency>
-
- <!-- swagger -->
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-boot-starter</artifactId>
- <version>3.0.0</version>
- </dependency>
- <dependency>
- <groupId>com.github.xiaoymin</groupId>
- <artifactId>knife4j-spring-boot-starter</artifactId>
- <version>3.0.2</version>
- </dependency>
- <!-- jjwt -->
- <dependency>
- <groupId>io.jsonwebtoken</groupId>
- <artifactId>jjwt-impl</artifactId>
- <version>0.11.2</version>
- </dependency>
- <dependency>
- <groupId>io.jsonwebtoken</groupId>
- <artifactId>jjwt-jackson</artifactId>
- <version>0.11.2</version>
- </dependency>
-
- <!-- 鍥惧舰楠岃瘉鐮� -->
- <dependency>
- <groupId>com.github.whvcse</groupId>
- <artifactId>easy-captcha</artifactId>
- <version>1.6.2</version>
- </dependency>
-
- <!-- open office, 鐢ㄤ簬鏂囨。杞琾df瀹炵幇鍦ㄧ嚎棰勮 -->
- <dependency>
- <groupId>com.github.livesense</groupId>
- <artifactId>jodconverter-core</artifactId>
- <version>1.0.5</version>
- </dependency>
-
- <!-- tika, 鐢ㄤ簬FileServer鑾峰彇content-type -->
- <dependency>
- <groupId>org.apache.tika</groupId>
- <artifactId>tika-core</artifactId>
- <version>2.1.0</version>
- </dependency>
-
- <!-- druid -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid-spring-boot-starter</artifactId>
- <version>1.2.6</version>
</dependency>
</dependencies>
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/config/RemotesInfoProperties.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/config/RemotesInfoProperties.java
index b8fae24..18d5c2c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/config/RemotesInfoProperties.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/config/RemotesInfoProperties.java
@@ -40,6 +40,21 @@
private String notifyInspect;
}
+ @Data
+ @Configuration
+ @ConfigurationProperties(prefix = "platform.rcs")
+ public class RcsApi {
+ /**
+ * rcs璋冪敤璺緞
+ */
+ private String host;
+
+ /**rcs璋冪敤绔彛**/
+ private String port;
+
+ }
+
+
public String getBaseUrl() {
return this.host + ":" + this.port + "/" + this.prePath;
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
index 9d7c18f..dc0352f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
@@ -4,6 +4,7 @@
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
import com.vincent.rsf.server.api.controller.erp.params.TaskInParam;
+import com.vincent.rsf.server.common.annotation.OperationLog;
import com.vincent.rsf.server.manager.enums.TaskType;
import com.vincent.rsf.server.api.service.WcsService;
import com.vincent.rsf.server.system.controller.BaseController;
@@ -22,6 +23,9 @@
@Autowired
private WcsService wcsService;
+
+// @Autowired
+// private WmsRcsService wmsRcsService;
@ApiOperation(value = "wcs鐢熸垚鍏ュ簱浠诲姟鎺ュ彛")
@PostMapping("/create/in/task")
@@ -81,4 +85,20 @@
return R.ok();
}
+
+
+ /**
+ * @author Ryan
+ * @date 2025/8/27
+ * @description: RCS搴撲綅淇℃伅鍚屾
+ * @version 1.0
+ */
+ @ApiOperation("RCS搴撲綅淇℃伅鍚屾")
+ @OperationLog("RCS搴撲綅淇℃伅鍚屾")
+ @PostMapping("/sync/locs")
+ public R syncLocsToWms() {
+
+ return R.ok();
+// return wmsRcsService.syncLocs();
+ }
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/SwaggerConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/SwaggerConfig.java
index 4dc8b27..e0bcb41 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/SwaggerConfig.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/SwaggerConfig.java
@@ -42,7 +42,6 @@
.select()
//apis锛� 娣诲姞swagger鎺ュ彛鎻愬彇鑼冨洿
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
-// .apis(RequestHandlerSelectors.basePackage("com.vincent.rsf.server.manager.controller"))
.paths(PathSelectors.any())
.build();
@@ -56,9 +55,21 @@
.enable("dev".equals(active))
.groupName("ERP鎺ュ彛瀵规帴")
.select()
- //apis锛� 娣诲姞swagger鎺ュ彛鎻愬彇鑼冨洿
.apis(RequestHandlerSelectors.basePackage("com.vincent.rsf.server.api.controller.erp"))
- .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+ .paths(PathSelectors.any())
+ .build();
+
+ return docket;
+ }
+
+ @Bean
+ public Docket rcsDocket() {
+ Docket docket = new Docket(DocumentationType.OAS_30)
+ .apiInfo(apiInfo())
+ .enable("dev".equals(active))
+ .groupName("RCS浠诲姟璋冨害")
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.vincent.rsf.openApi.controller"))
.paths(PathSelectors.any())
.build();
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index 9c4faaf..c783677 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -10,7 +10,7 @@
path match:
matching-strategy: ANT_PATH_MATCHER
datasource:
- driver-class-name: com.mysql.jdbc.Driver
+ driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
# username: rsf
username: root
@@ -82,6 +82,11 @@
api:
#璐ㄦ涓婃姤鎺ュ彛
notify-inspect: /report/inspect
+ rcs:
+ #閾炬帴
+ host: http://192.168.4.84
+ #绔彛
+ port: 8088
#浠撳簱鍔熻兘鍙傛暟閰嶇疆
stock:
--
Gitblit v1.9.1