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