From b71d454f550a53dde29b1849acfebd06e34f7299 Mon Sep 17 00:00:00 2001
From: 李林 <z1292839451@163.com>
Date: 星期二, 08 八月 2023 13:54:35 +0800
Subject: [PATCH] 迁移仓库
---
inspect-server/src/main/resources/mapper/FinishedInspectMapper.xml | 21
inventory-server/src/main/java/com/yuanchu/mom/mapper/RepertoryMapper.java | 21
system-run/src/main/java/com/yuanchu/mom/SystemRunApplication.java | 15
framework/src/main/java/com/yuanchu/mom/utils/RedisUtil.java | 622 +++++
inspect-server/src/main/java/com/yuanchu/mom/controller/RawInspectController.java | 122
user-server/src/main/java/com/yuanchu/mom/pojo/User.java | 39
standard-server/src/main/java/com/yuanchu/mom/controller/MaterialController.java | 33
framework/src/main/java/com/yuanchu/mom/mybatis_config/MyMetaObjectHandler.java | 22
standard-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java | 16
framework/src/main/java/com/yuanchu/mom/vo/Result.java | 56
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InspectionItemServiceImpl.java | 130 +
standard-server/src/main/java/com/yuanchu/mom/pojo/dto/ProductDto.java | 16
standard-server/src/test/java/com/yuanchu/mom/StandardServerApplicationTests.java | 13
system-run/src/main/resources/mysqldump.exe | 0
standard-server/.gitignore | 33
standard-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java | 47
standard-server/src/main/java/com/yuanchu/mom/controller/OrdersController.java | 63
inspect-server/pom.xml | 55
inspect-server/src/main/java/com/yuanchu/mom/pojo/InspectionItem.java | 86
framework/src/main/java/com/yuanchu/mom/handler/GlobalExceptionHandler.java | 243 +
standard-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java | 35
standard-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyServiceImpl.java | 38
framework/src/main/java/com/yuanchu/mom/config/WebMvcConfig.java | 25
system-run/src/main/resources/application.yml | 23
framework/src/main/java/com/yuanchu/mom/mybatis_config/MySqlInjector.java | 24
standard-server/src/main/java/com/yuanchu/mom/service/SpecificationsService.java | 33
inspect-server/src/main/java/com/yuanchu/mom/pojo/FinishedInspect.java | 99
standard-server/src/main/java/com/yuanchu/mom/service/impl/MaterialServiceImpl.java | 64
inventory-server/src/main/java/com/yuanchu/mom/service/RepertoryService.java | 29
framework/src/main/java/com/yuanchu/mom/config/FiferConfig.java | 110
standard-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java | 42
inspect-server/src/main/java/com/yuanchu/mom/controller/FinishedInspectController.java | 118
standard-server/src/main/java/com/yuanchu/mom/pojo/dto/StandardDto.java | 17
framework/src/main/java/com/yuanchu/mom/utils/JackSonUtil.java | 131 +
standard-server/src/main/java/com/yuanchu/mom/mapper/StandardMapper.java | 18
inspect-server/src/main/java/com/yuanchu/mom/service/RawInspectService.java | 36
user-server/pom.xml | 24
standard-server/src/main/resources/mapper/SpecificationsMapper.xml | 30
standard-server/src/main/resources/mapper/TechnologyMapper.xml | 5
inspect-server/src/main/resources/mapper/InspectUnacceptedMapper.xml | 68
standard-server/src/main/java/com/yuanchu/mom/service/OrdersService.java | 27
standard-server/src/main/java/com/yuanchu/mom/pojo/dto/ProductDto2.java | 29
standard-server/src/main/java/com/yuanchu/mom/service/ProductService.java | 20
pom.xml | 231 +
inspect-server/src/main/java/com/yuanchu/mom/pojo/RawInspect.java | 106
inspect-server/src/test/java/com/yuanchu/mom/InspectServerApplicationTests.java | 13
inspect-server/src/main/java/com/yuanchu/mom/mapper/InspectUnacceptedMapper.java | 23
standard-server/src/main/java/com/yuanchu/mom/pojo/Material.java | 60
standard-server/src/main/java/com/yuanchu/mom/pojo/Technology.java | 63
inventory-server/src/main/java/com/yuanchu/mom/service/impl/RepertoryServiceImpl.java | 32
system-run/src/main/resources/logback-spring.xml | 236 +
user-server/src/main/java/com/yuanchu/mom/service/UserService.java | 20
inspect-server/src/main/java/com/yuanchu/mom/pojo/vo/RawInspectVo.java | 81
standard-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java | 59
standard-server/src/main/resources/mapper/DeviceMapper.xml | 11
standard-server/src/main/java/com/yuanchu/mom/pojo/Specifications.java | 55
standard-server/src/main/resources/mapper/ProductMapper.xml | 44
inspect-server/src/main/java/com/yuanchu/mom/controller/RawInsProductController.java | 67
inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/UpdateInspectionItemDto.java | 23
inspect-server/src/main/java/com/yuanchu/mom/service/RawInsProductService.java | 21
inspect-server/src/main/java/com/yuanchu/mom/service/InspectUnacceptedService.java | 28
system-run/src/main/resources/application-dev.yml | 77
inspect-server/src/main/java/com/yuanchu/mom/service/impl/RawInspectServiceImpl.java | 188 +
standard-server/src/main/java/com/yuanchu/mom/pojo/Device.java | 58
inspect-server/src/main/resources/mapper/InspectionItemMapper.xml | 27
framework/src/main/java/com/yuanchu/mom/config/MyCorsConfig.java | 28
inspect-server/src/main/java/com/yuanchu/mom/mapper/RawInspectMapper.java | 23
standard-server/src/main/java/com/yuanchu/mom/service/TechnologyService.java | 20
standard-server/src/main/resources/mapper/StandardMapper.xml | 17
system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java | 129 +
standard-server/src/main/java/com/yuanchu/mom/pojo/Standard.java | 56
standard-server/src/main/java/com/yuanchu/mom/pojo/Product.java | 75
system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java | 57
standard-server/src/main/java/com/yuanchu/mom/mapper/TechnologyMapper.java | 16
inspect-server/src/main/resources/mapper/RawInspectMapper.xml | 41
user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java | 11
standard-server/src/main/java/com/yuanchu/mom/mapper/SpecificationsMapper.java | 29
inspect-server/src/main/java/com/yuanchu/mom/service/impl/FinishedInspectServiceImpl.java | 83
user-server/src/test/java/com/yuanchu/mom/SystemRunApplicationTests.java | 13
standard-server/src/main/java/com/yuanchu/mom/controller/ProductController.java | 35
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InspectUnacceptedServiceImpl.java | 49
framework/src/main/java/com/yuanchu/mom/utils/FileSaveUtil.java | 60
inventory-server/src/main/java/com/yuanchu/mom/controller/RepertoryController.java | 62
inventory-server/src/main/java/com/yuanchu/mom/pojo/Repertory.java | 115
standard-server/src/main/java/com/yuanchu/mom/pojo/Orders.java | 128 +
standard-server/src/main/java/com/yuanchu/mom/controller/TechnologyController.java | 45
inspect-server/.gitignore | 33
standard-server/src/main/java/com/yuanchu/mom/service/impl/StandardServiceImpl.java | 21
inspect-server/src/main/java/com/yuanchu/mom/service/FinishedInspectService.java | 27
system-run/src/main/resources/application-prod.yml | 76
standard-server/src/main/java/com/yuanchu/mom/mapper/ProductMapper.java | 23
user-server/src/main/resources/mapper/UserMapper.xml | 5
README.md | 39
user-server/src/main/java/com/yuanchu/mom/controller/UserController.java | 68
inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto.java | 21
inspect-server/src/main/java/com/yuanchu/mom/pojo/InspectUnaccepted.java | 94
system-run/src/main/java/com/yuanchu/mom/backup/MysqlDataBackup.java | 190 +
framework/src/main/java/com/yuanchu/mom/utils/Jwt.java | 57
inspect-server/src/main/java/com/yuanchu/mom/mapper/InspectionItemMapper.java | 20
inspect-server/src/main/java/com/yuanchu/mom/mapper/RawInsProductMapper.java | 15
inspect-server/src/main/resources/mapper/RawInsProductMapper.xml | 4
standard-server/src/main/resources/mapper/OrdersMapper.xml | 36
.gitignore | 35
inspect-server/src/main/java/com/yuanchu/mom/pojo/RawInsProduct.java | 92
standard-server/src/main/java/com/yuanchu/mom/pojo/dto/SpecificationsDto.java | 15
inspect-server/src/main/java/com/yuanchu/mom/controller/InspectionItemController.java | 66
inventory-server/pom.xml | 35
inspect-server/src/main/java/com/yuanchu/mom/service/impl/RawInsProductServiceImpl.java | 89
standard-server/src/main/resources/mapper/MaterialMapper.xml | 70
framework/src/main/java/com/yuanchu/mom/mybatis_config/MyBaseMapper.java | 15
standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MaterialTreeDto.java | 20
standard-server/src/main/java/com/yuanchu/mom/mapper/OrdersMapper.java | 23
inventory-server/src/main/resources/mapper/RepertoryMapper.xml | 29
inspect-server/src/main/java/com/yuanchu/mom/mapper/FinishedInspectMapper.java | 21
user-server/src/main/java/com/yuanchu/mom/service/imp/UserServiceImp.java | 42
framework/src/main/java/com/yuanchu/mom/config/DruidConfig.java | 57
standard-server/src/main/java/com/yuanchu/mom/service/impl/SpecificationsServiceImpl.java | 53
inspect-server/src/main/java/com/yuanchu/mom/controller/InspectUnacceptedController.java | 52
framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java | 20
framework/pom.xml | 42
framework/src/main/java/com/yuanchu/mom/config/Swagger3.java | 122
inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto2.java | 34
inspect-server/src/main/java/com/yuanchu/mom/pojo/vo/RawInsProductVo.java | 66
inspect-server/src/main/java/com/yuanchu/mom/service/InspectionItemService.java | 28
standard-server/src/main/java/com/yuanchu/mom/mapper/MaterialMapper.java | 32
framework/src/main/java/com/yuanchu/mom/mybatis_config/MyBatisPlusConfig.java | 39
framework/src/main/java/com/yuanchu/mom/utils/MyUtil.java | 65
standard-server/src/main/java/com/yuanchu/mom/service/MaterialService.java | 43
standard-server/src/main/java/com/yuanchu/mom/service/DeviceService.java | 28
standard-server/src/main/java/com/yuanchu/mom/service/StandardService.java | 13
standard-server/pom.xml | 24
system-run/pom.xml | 74
132 files changed, 7,384 insertions(+), 2 deletions(-)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cf2c0f4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,35 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+*.log
+*.jar
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/README.md b/README.md
index 33f4734..1ac30ac 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,39 @@
-## mom-before
+# 鍚庣涓ぉ娴锋磱
-mom鍓嶇
+#### 浠嬬粛
+{**浠ヤ笅鏄� Gitee 骞冲彴璇存槑锛屾偍鍙互鏇挎崲姝ょ畝浠�**
+Gitee 鏄� OSCHINA 鎺ㄥ嚭鐨勫熀浜� Git 鐨勪唬鐮佹墭绠″钩鍙帮紙鍚屾椂鏀寔 SVN锛夈�備笓涓哄紑鍙戣�呮彁渚涚ǔ瀹氥�侀珮鏁堛�佸畨鍏ㄧ殑浜戠杞欢寮�鍙戝崗浣滃钩鍙�
+鏃犺鏄釜浜恒�佸洟闃熴�佹垨鏄紒涓氾紝閮借兘澶熺敤 Gitee 瀹炵幇浠g爜鎵樼銆侀」鐩鐞嗐�佸崗浣滃紑鍙戙�備紒涓氶」鐩鐪� [https://gitee.com/enterprises](https://gitee.com/enterprises)}
+#### 杞欢鏋舵瀯
+杞欢鏋舵瀯璇存槑
+
+
+#### 瀹夎鏁欑▼
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### 浣跨敤璇存槑
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### 鍙備笌璐$尞
+
+1. Fork 鏈粨搴�
+2. 鏂板缓 Feat_xxx 鍒嗘敮
+3. 鎻愪氦浠g爜
+4. 鏂板缓 Pull Request
+
+
+#### 鐗规妧
+
+1. 浣跨敤 Readme\_XXX.md 鏉ユ敮鎸佷笉鍚岀殑璇█锛屼緥濡� Readme\_en.md, Readme\_zh.md
+2. Gitee 瀹樻柟鍗氬 [blog.gitee.com](https://blog.gitee.com)
+3. 浣犲彲浠� [https://gitee.com/explore](https://gitee.com/explore) 杩欎釜鍦板潃鏉ヤ簡瑙� Gitee 涓婄殑浼樼寮�婧愰」鐩�
+4. [GVP](https://gitee.com/gvp) 鍏ㄧО鏄� Gitee 鏈�鏈変环鍊煎紑婧愰」鐩紝鏄患鍚堣瘎瀹氬嚭鐨勪紭绉�寮�婧愰」鐩�
+5. Gitee 瀹樻柟鎻愪緵鐨勪娇鐢ㄦ墜鍐� [https://gitee.com/help](https://gitee.com/help)
+6. Gitee 灏侀潰浜虹墿鏄竴妗g敤鏉ュ睍绀� Gitee 浼氬憳椋庨噰鐨勬爮鐩� [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/framework/pom.xml b/framework/pom.xml
new file mode 100644
index 0000000..4fcce66
--- /dev/null
+++ b/framework/pom.xml
@@ -0,0 +1,42 @@
+<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mom</artifactId>
+ <groupId>com.yuanchu.mom</groupId>
+ <version>1.0.0</version>
+ </parent>
+
+ <artifactId>framework</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <name>framework</name>
+ <description>framework</description>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--鏁版嵁搴撹繛鎺ユ睜-->
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>druid</artifactId>
+ </dependency>
+
+ <!-- mysql椹卞姩 -->
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ </dependency>
+
+ <!--redis jar鍖�-->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-redis</artifactId>
+ </dependency>
+
+ <!--jwt-->
+ <dependency>
+ <groupId>com.auth0</groupId>
+ <artifactId>java-jwt</artifactId>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/framework/src/main/java/com/yuanchu/mom/config/DruidConfig.java b/framework/src/main/java/com/yuanchu/mom/config/DruidConfig.java
new file mode 100644
index 0000000..7b9f43c
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/config/DruidConfig.java
@@ -0,0 +1,57 @@
+package com.yuanchu.mom.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.support.http.StatViewServlet;
+import com.alibaba.druid.support.http.WebStatFilter;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+@Configuration
+public class DruidConfig {
+ //鍔犺浇application.yaml涓殑Druid閰嶇疆
+ @ConfigurationProperties(prefix = "spring.datasource")
+ @Bean
+ public DataSource druid(){
+ return new DruidDataSource();
+ }
+
+ //閰嶇疆Druid鐨勭洃鎺�
+ //1銆侀厤缃竴涓鐞嗗悗鍙扮殑Servlet
+ @Bean
+ public ServletRegistrationBean statViewServlet(){
+ ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
+ Map<String,String> initParams = new HashMap<>();
+
+ initParams.put("loginUsername","root");
+ initParams.put("loginPassword","123456");
+ initParams.put("allow","");//榛樿灏辨槸鍏佽鎵�鏈夎闂�
+// initParams.put("deny","192.168.15.21"); 绂佹璇P璁块棶
+
+ bean.setInitParameters(initParams);
+ return bean;
+ }
+
+ //2銆侀厤缃竴涓獁eb鐩戞帶鐨刦ilter
+ @Bean
+ public FilterRegistrationBean webStatFilter(){
+ FilterRegistrationBean bean = new FilterRegistrationBean();
+ bean.setFilter(new WebStatFilter());
+
+ Map<String,String> initParams = new HashMap<>();
+ initParams.put("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
+
+ bean.setInitParameters(initParams);
+
+ bean.setUrlPatterns(Arrays.asList("/*"));
+
+ return bean;
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/config/FiferConfig.java b/framework/src/main/java/com/yuanchu/mom/config/FiferConfig.java
new file mode 100644
index 0000000..792dbea
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/config/FiferConfig.java
@@ -0,0 +1,110 @@
+package com.yuanchu.mom.config;
+
+import com.alibaba.druid.pool.vendor.NullExceptionSorter;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.utils.Jwt;
+import com.yuanchu.mom.utils.RedisUtil;
+import com.yuanchu.mom.vo.Result;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.WriteListener;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+@Component
+public class FiferConfig implements HandlerInterceptor {
+
+ @Value("${server.port}")
+ private String serverPort;
+
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+ if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
+ response.setStatus(HttpServletResponse.SC_OK);
+ return true;
+ }
+ String[] strs = request.getRequestURL().toString().split(serverPort);
+ AtomicBoolean judge = new AtomicBoolean(false);
+ list.forEach(a -> {
+ if (strs[1].equals(a)) {
+ judge.set(true);
+ return;
+ } else if (a.indexOf("/**") > -1) {
+ if (strs[1].indexOf(a.replace("/**", "")) == 0) {
+ judge.set(true);
+ return;
+ }
+ }
+ });
+ if (judge.get()) return true;
+ response.setContentType(MediaType.APPLICATION_JSON_VALUE);
+ response.setCharacterEncoding("UTF-8");
+ String token = request.getHeader("token");
+ Map<String, String> map = new Jwt().readJWT(token);
+ if (map.get("state").equals("0")) {
+ String redisToken = String.valueOf(RedisUtil.get(JackSonUtil.unmarshal(map.get("data"), Map.class).get("id").toString()));
+ if (!redisToken.equals(token)) {
+ map.put("info", "涓嶅瓨鍦ㄧ殑token");
+ map.put("state", "2");
+ } else {
+ return true;
+ }
+ }
+ PrintWriter out = response.getWriter();
+ out.print(new Result<>().fail(401,map.get("info")));
+ switch (map.get("state")){
+ case "1":
+ response.setStatus(401);
+ break;
+ case "2":
+ response.setStatus(402);
+ break;
+ }
+ return false;
+ }
+
+ @Override
+ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
+
+ }
+
+ @Override
+ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+// System.out.println("-------------------------鎷︽埅鍣ㄦ牎楠岄�氳繃---------------------------");
+ }
+
+ private List<String> list;
+
+ public FiferConfig() {
+ List<String> list = new ArrayList<>();
+
+ // swagger鏀捐
+ list.add("/doc.html/**");
+ list.add("/webjars/**");
+ list.add("/swagger-resources");
+ list.add("/api-docs");
+ list.add("/v3/api-docs");
+
+ list.add("/user/enter");
+ list.add("/user/refresh");
+ this.list = list;
+ }
+
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/config/MyCorsConfig.java b/framework/src/main/java/com/yuanchu/mom/config/MyCorsConfig.java
new file mode 100644
index 0000000..0626b4c
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/config/MyCorsConfig.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class MyCorsConfig {
+
+ @Bean
+ public CorsFilter corsFilter() {
+ CorsConfiguration config = new CorsConfiguration();
+ //鍏佽鎵�鏈夊煙鍚嶈繘琛岃法鍩熻皟鐢�
+ config.addAllowedOriginPattern("*");//鏇挎崲杩欎釜
+ //鍏佽璺ㄨ秺鍙戦�乧ookie
+ config.setAllowCredentials(true);
+ //鏀捐鍏ㄩ儴鍘熷澶翠俊鎭�
+ config.addAllowedHeader("*");
+ //鍏佽鎵�鏈夎姹傛柟娉曡法鍩熻皟鐢�
+ config.addAllowedMethod("*");
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", config);
+ return new CorsFilter(source);
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java b/framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java
new file mode 100644
index 0000000..d61bbb0
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+//@Configuration
+public class OpenFifer extends WebMvcConfigurationSupport {
+
+ @Autowired
+ private FiferConfig fiferConfig;
+
+ @Override
+ protected void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(fiferConfig).addPathPatterns("/**")
+ .excludePathPatterns();
+ super.addInterceptors(registry);
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/config/Swagger3.java b/framework/src/main/java/com/yuanchu/mom/config/Swagger3.java
new file mode 100644
index 0000000..5f057d5
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/config/Swagger3.java
@@ -0,0 +1,122 @@
+package com.yuanchu.mom.config;
+
+
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.oas.annotations.EnableOpenApi;
+import springfox.documentation.service.*;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spi.service.contexts.SecurityContext;
+import springfox.documentation.spring.web.plugins.Docket;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@Configuration
+@EnableOpenApi
+public class Swagger3 {
+ // 璺緞http://localhost:8080/doc.html
+ @Value("${swagger.enabled}")
+ private boolean enable;
+
+ private final String swaggerPackage = "com.yuanchu.mom";
+
+ /**
+ * 娣诲姞鎽樿淇℃伅
+ */
+ private ApiInfo apiInfo() {
+ // 鐢ˋpiInfoBuilder杩涜瀹氬埗
+ return new ApiInfoBuilder()
+ // 璁剧疆鏍囬
+ .title("涓ぉ娴锋磱mom")
+ // 鎻忚堪
+ .description("涓ぉ娴锋磱mom")
+ // 浣滆�呬俊鎭�
+ .contact(new Contact("榈烽洀", null, null))
+ // 鐗堟湰
+ .version("鐗堟湰鍙�:V.1")
+ //鍗忚
+ .license("The Apache License")
+ //鍗忚url
+ .licenseUrl("http://www.baidu.com")
+ .build();
+ }
+
+ /**
+ * 鍒涘缓API
+ * http:IP:绔彛鍙�/swagger-ui/index.html 鍘熺敓鍦板潃
+ * http:IP:绔彛鍙�/doc.html bootStrap-UI鍦板潃
+ */
+ @Bean
+ public Docket createRestApi() {
+ return new Docket(DocumentationType.OAS_30).pathMapping("/")
+ // 鐢ㄦ潵鍒涘缓璇PI鐨勫熀鏈俊鎭紝灞曠ず鍦ㄦ枃妗g殑椤甸潰涓紙鑷畾涔夊睍绀虹殑淇℃伅锛�
+ .enable(enable)
+ .apiInfo(apiInfo())
+ // 璁剧疆鍝簺鎺ュ彛鏆撮湶缁橲wagger灞曠ず
+ .select()
+ // 鎵弿鎵�鏈夋湁娉ㄨВ鐨刟pi锛岀敤杩欑鏂瑰紡鏇寸伒娲�
+ .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+
+
+ // 鎵弿鎸囧畾鍖呬腑鐨剆wagger娉ㄨВ
+ .apis(RequestHandlerSelectors.basePackage(swaggerPackage))
+ // 鎵弿鎵�鏈� .apis(RequestHandlerSelectors.any())
+ .paths(PathSelectors.regex("(?!/ApiError.*).*"))
+ .paths(PathSelectors.any())
+ .build()
+ // 鏀寔鐨勯�氳鍗忚闆嗗悎
+ .protocols(newHashSet("https", "http"))
+ .securitySchemes(securitySchemes())
+ .securityContexts(securityContexts());
+ }
+
+ /**
+ * 鏀寔鐨勯�氳鍗忚闆嗗悎
+ * @param type1
+ * @param type2
+ * @return
+ */
+ private Set<String> newHashSet(String type1, String type2){
+ Set<String> set = new HashSet<>();
+ set.add(type1);
+ set.add(type2);
+ return set;
+ }
+
+ /**
+ * 璁よ瘉鐨勫畨鍏ㄤ笂涓嬫枃
+ */
+ private List<SecurityScheme> securitySchemes() {
+ List<SecurityScheme> securitySchemes = new ArrayList<>();
+ securitySchemes.add((SecurityScheme) new ApiKey("token", "token", "header"));
+ return securitySchemes;
+ }
+
+ /**
+ * 鎺堟潈淇℃伅鍏ㄥ眬搴旂敤
+ */
+ private List<SecurityContext> securityContexts() {
+ List<SecurityContext> securityContexts = new ArrayList<>();
+ securityContexts.add(SecurityContext.builder()
+ .securityReferences(defaultAuth())
+ .forPaths(PathSelectors.any()).build());
+ return securityContexts;
+ }
+
+ private List<SecurityReference> defaultAuth() {
+ AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+ AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+ authorizationScopes[0] = authorizationScope;
+ List<SecurityReference> securityReferences = new ArrayList<>();
+ securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
+ return securityReferences;
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/config/WebMvcConfig.java b/framework/src/main/java/com/yuanchu/mom/config/WebMvcConfig.java
new file mode 100644
index 0000000..e219b63
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/config/WebMvcConfig.java
@@ -0,0 +1,25 @@
+package com.yuanchu.mom.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+@Configuration
+public class WebMvcConfig extends WebMvcConfigurationSupport {
+
+ @Value("${file.path}")
+ private String filePath;
+
+ @Override
+ protected void addResourceHandlers(ResourceHandlerRegistry registry) {
+ //閰嶇疆鎷︽埅鍣ㄨ闂潤鎬佽祫婧�
+ registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("/favicon.ico").addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+
+ //璁剧疆鏂囦欢铏氭嫙璺緞鏄犲皠
+ registry.addResourceHandler("/img/**").addResourceLocations("file:"+filePath+"/")
+ .addResourceLocations("file:"+filePath+"/");
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/handler/GlobalExceptionHandler.java b/framework/src/main/java/com/yuanchu/mom/handler/GlobalExceptionHandler.java
new file mode 100644
index 0000000..e34b0d1
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/handler/GlobalExceptionHandler.java
@@ -0,0 +1,243 @@
+package com.yuanchu.mom.handler;
+
+import com.yuanchu.mom.vo.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.ConversionNotSupportedException;
+import org.springframework.beans.TypeMismatchException;
+import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DuplicateKeyException;
+import org.springframework.http.converter.HttpMessageNotReadableException;
+import org.springframework.http.converter.HttpMessageNotWritableException;
+import org.springframework.jdbc.BadSqlGrammarException;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+
+ @Autowired
+ HttpServletResponse response;
+
+ @ExceptionHandler(SQLException.class)
+ public Result<?> handlerSQLException(SQLException e) {
+ log.error(e.getMessage().toLowerCase(), e);
+ response.setStatus(500);
+ return Result.fail("鏁版嵁鎿嶄綔澶辫触锛佽鑱旂郴绠$悊鍛�");
+ }
+
+ /**
+ * 鍞竴鍊煎湪鏁版嵁搴撲腑閲嶅
+ * Duplicate entry ' ' for key ' '
+ *
+ * @param e锛氶噸澶嶉敭寮傚父
+ * @return 199
+ */
+ @ExceptionHandler
+ public Result<?> DuplicateKeyException(DuplicateKeyException e) {
+ log.error(String.valueOf(e));
+ String message = e.getCause().getMessage();
+ String[] split = message.split("'");
+ response.setStatus(500);
+ return Result.fail("閲嶅娣诲姞锛氥��" + split[1] + "銆戞搷浣滃け璐ワ紒");
+ }
+
+ @ExceptionHandler
+ public Result<?> NullPointerException(NullPointerException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("閮ㄥ垎鍙傛暟涓虹┖锛岃妫�鏌ワ紒");
+ }
+
+ /**
+ * 杩愯鏃跺紓甯�
+ */
+ @ExceptionHandler(RuntimeException.class)
+ public Result<?> runtimeExceptionHandler(RuntimeException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("杩愯鏃跺紓甯�");
+ }
+
+ /**
+ * 绫诲瀷杞崲寮傚父
+ */
+ @ExceptionHandler(ClassCastException.class)
+ public Result<?> classCastExceptionHandler(ClassCastException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("绫诲瀷杞崲寮傚父");
+ }
+
+ /**
+ * 鏂囦欢鏈壘鍒板紓甯�
+ */
+ @ExceptionHandler(FileNotFoundException.class)
+ public Result<?> FileNotFoundException(FileNotFoundException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("鏂囦欢鏈壘鍒板紓甯�");
+ }
+
+ /**
+ * 鏁板瓧鏍煎紡寮傚父
+ */
+ @ExceptionHandler(NumberFormatException.class)
+ public Result<?> NumberFormatException(NumberFormatException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("鏁板瓧鏍煎紡寮傚父");
+ }
+
+ /**
+ * 瀹夊叏寮傚父
+ */
+ @ExceptionHandler(SecurityException.class)
+ public Result<?> SecurityException(SecurityException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("瀹夊叏寮傚父");
+ }
+
+ /**
+ * 绫诲瀷涓嶅瓨鍦ㄥ紓甯�
+ */
+ @ExceptionHandler(TypeNotPresentException.class)
+ public Result<?> TypeNotPresentException(TypeNotPresentException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("绫诲瀷涓嶅瓨鍦ㄥ紓甯�");
+ }
+
+ /**
+ * IO寮傚父
+ */
+ @ExceptionHandler(IOException.class)
+ public Result<?> iOExceptionHandler(IOException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("IO寮傚父");
+ }
+
+ /**
+ * 鏈煡鏂规硶寮傚父
+ */
+ @ExceptionHandler(NoSuchMethodException.class)
+ public Result<?> noSuchMethodExceptionHandler(NoSuchMethodException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("鏈煡鏂规硶寮傚父");
+ }
+
+ /**
+ * 鏁扮粍瓒婄晫寮傚父
+ */
+ @ExceptionHandler(IndexOutOfBoundsException.class)
+ public Result<?> indexOutOfBoundsExceptionHandler(IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("鏁扮粍瓒婄晫寮傚父");
+ }
+
+ /**
+ * sql璇硶閿欒寮傚父
+ */
+ @ExceptionHandler(BadSqlGrammarException.class)
+ public Result<?> BadSqlGrammarException(BadSqlGrammarException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("sql璇硶閿欒寮傚父");
+ }
+
+ /**
+ * 鏃犳硶娉ㄥ叆bean寮傚父
+ */
+ @ExceptionHandler(NoSuchBeanDefinitionException.class)
+ public Result<?> NoSuchBeanDefinitionException(NoSuchBeanDefinitionException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("鏃犳硶娉ㄥ叆bean");
+ }
+
+ /**
+ * Http娑堟伅涓嶅彲璇诲紓甯�
+ */
+ @ExceptionHandler({HttpMessageNotReadableException.class})
+ public Result<?> requestNotReadable(HttpMessageNotReadableException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("Http娑堟伅涓嶅彲璇�");
+ }
+
+ /**
+ * 400閿欒
+ */
+ @ExceptionHandler({TypeMismatchException.class})
+ public Result<?> requestTypeMismatch(TypeMismatchException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("鏈嶅姟鍣ㄥ紓甯�");
+ }
+
+ /**
+ * 500閿欒
+ */
+ @ExceptionHandler({ConversionNotSupportedException.class, HttpMessageNotWritableException.class})
+ public Result<?> server500(RuntimeException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("鏈嶅姟鍣ㄥ紓甯�");
+ }
+
+ /**
+ * 鏍堟孩鍑�
+ */
+ @ExceptionHandler({StackOverflowError.class})
+ public Result<?> requestStackOverflow(StackOverflowError e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("鏍堟孩鍑哄紓甯�");
+ }
+
+ /**
+ * 闄ゆ暟涓嶈兘涓�0
+ */
+ @ExceptionHandler({ArithmeticException.class})
+ public Result<?> arithmeticException(ArithmeticException e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("闄ゆ暟涓嶈兘涓�0寮傚父");
+ }
+
+ /**
+ * 鍙傛暟妫�楠�
+ */
+ @ExceptionHandler({MethodArgumentNotValidException.class})
+ public Result<?> methodArgumentNotValidException(MethodArgumentNotValidException e) {
+ List<ObjectError> allErrors = e.getBindingResult().getAllErrors();
+ String message = allErrors.stream().map(s -> s.getDefaultMessage()).collect(Collectors.joining(";"));
+ return Result.fail(message);
+ }
+
+ /** 鍏朵粬閿欒 */
+ /**
+ * 鍏朵粬閿欒
+ */
+ @ExceptionHandler({Exception.class})
+ public Result<?> exception(Exception e) {
+ e.printStackTrace();
+ response.setStatus(500);
+ return Result.fail("缃戠粶杩炴帴澶辫触锛岃閫�鍑哄悗鍐嶈瘯");
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/mybatis_config/MyBaseMapper.java b/framework/src/main/java/com/yuanchu/mom/mybatis_config/MyBaseMapper.java
new file mode 100644
index 0000000..ce4eb6f
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/mybatis_config/MyBaseMapper.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.mybatis_config;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+
+/**
+ * 鑷畾涔夋坊鍔爉ybatis-plus鎵归噺娣诲姞
+ * @param <T>
+ */
+public interface MyBaseMapper <T> extends BaseMapper<T> {
+
+ int insertBatchSomeColumn(List<T> entityList);
+}
+
diff --git a/framework/src/main/java/com/yuanchu/mom/mybatis_config/MyBatisPlusConfig.java b/framework/src/main/java/com/yuanchu/mom/mybatis_config/MyBatisPlusConfig.java
new file mode 100644
index 0000000..95404df
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/mybatis_config/MyBatisPlusConfig.java
@@ -0,0 +1,39 @@
+package com.yuanchu.mom.mybatis_config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+
+@Configuration
+public class MyBatisPlusConfig {
+
+// 涔愯閿佹彃浠�
+ @Bean
+ public OptimisticLockerInterceptor optimisticLockerInterceptor() {
+ return new OptimisticLockerInterceptor();
+ }
+
+ /**
+ * 寮�鍚壒閲忔坊鍔�
+ * @return
+ */
+ @Bean
+ public MySqlInjector sqlInjector() {
+ return new MySqlInjector();
+ }
+
+ /**
+ * 闇�瑕侀厤缃嫤鎴櫒锛屼笉鐒跺湪AddDevice涓殑total鏃犳硶鑾峰彇鍒�
+ * @return
+ */
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/mybatis_config/MyMetaObjectHandler.java b/framework/src/main/java/com/yuanchu/mom/mybatis_config/MyMetaObjectHandler.java
new file mode 100644
index 0000000..ede59ea
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/mybatis_config/MyMetaObjectHandler.java
@@ -0,0 +1,22 @@
+package com.yuanchu.mom.mybatis_config;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+@Component
+public class MyMetaObjectHandler implements MetaObjectHandler {
+ @Override
+ public void insertFill(MetaObject metaObject) {
+ this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 璧峰鐗堟湰 3.3.0(鎺ㄨ崘浣跨敤)
+ this.strictInsertFill(metaObject, "updateTime", Date.class, new Date()); // 璧峰鐗堟湰 3.3.0(鎺ㄨ崘浣跨敤)
+ }
+
+ @Override
+ public void updateFill(MetaObject metaObject) {
+ // update鐨勬椂鍊欎娇鐢紝鏇存柊鐨勬椂鍊欏己鍒惰繘琛屽~鍏�
+ this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 璧峰鐗堟湰 3.3.0(鎺ㄨ崘)
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/mybatis_config/MySqlInjector.java b/framework/src/main/java/com/yuanchu/mom/mybatis_config/MySqlInjector.java
new file mode 100644
index 0000000..5e79237
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/mybatis_config/MySqlInjector.java
@@ -0,0 +1,24 @@
+package com.yuanchu.mom.mybatis_config;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.core.injector.AbstractMethod;
+import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn;
+
+import java.util.List;
+
+/**
+ * 鎵归噺娣诲姞
+ */
+public class MySqlInjector extends DefaultSqlInjector {
+
+ @Override
+ public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
+ List<AbstractMethod> methodList = super.getMethodList(mapperClass);
+ //澧炲姞鑷畾涔夋柟娉曪紝瀛楁娉ㄨВ涓婁笉绛変簬FieldFill.DEFAULT鐨勫瓧娈垫墠浼氭彃鍏�
+ methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.DEFAULT));
+ return methodList;
+ }
+
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/FileSaveUtil.java b/framework/src/main/java/com/yuanchu/mom/utils/FileSaveUtil.java
new file mode 100644
index 0000000..11332ea
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/utils/FileSaveUtil.java
@@ -0,0 +1,60 @@
+package com.yuanchu.mom.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.tomcat.util.http.fileupload.IOUtils;
+import org.springframework.stereotype.Component;
+
+import java.io.ByteArrayInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * 淇濆瓨鏂囦欢宸ュ叿
+ */
+@Slf4j
+@Component
+public class FileSaveUtil {
+
+ // 鍙杫ml涓殑璺緞 + /
+// @Value("${file.path}")
+ private String FILE_PATH;
+
+ /**
+ * 瀛樺偍鏂囦欢涓诲嚱鏁�
+ * @param content 鏂囦欢浜岃繘鍒舵祦
+ * @param originalFilename 鏂囦欢鍚嶇О
+ * @return 杩斿洖鏂囦欢鍚嶇О鐢ㄤ簬瀛樺偍鏁版嵁搴�
+ */
+ public String StoreFile(byte[] content, String originalFilename) {
+ // 鐢熸垚闅忔満鍚嶇О锛氭椂闂確闅忔満6浣嶆暟瀛�
+ String FileName = System.currentTimeMillis() + "_" + MyUtil.getNumber(6);
+ String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
+ // 鍚嶇О鎷兼帴
+ String fileName = FileName + suffix;
+ // 杩涜瀛樺偍
+ storeFileWithFileName(content, fileName);
+ return fileName;
+ }
+
+ /**
+ * 瀛樺偍鏂囦欢鍑芥暟
+ * @param content 鏂囦欢浜岃繘鍒舵祦
+ * @param fileName 鏂囦欢鍚嶇О
+ */
+ private void storeFileWithFileName(byte[] content, String fileName) {
+ // 瀛樺偍璺緞
+ String path = FILE_PATH + java.io.File.separatorChar;
+ // 鐩綍涓嶅瓨鍦ㄥ垯鍒涘缓
+ java.io.File file = new java.io.File(path);
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ // 寮�濮嬪瓨鍌�
+ try (FileOutputStream os = new FileOutputStream(path + fileName);
+ ByteArrayInputStream is = new ByteArrayInputStream(content)) {
+ IOUtils.copy(is, os);
+ } catch (IOException e) {
+ MyUtil.PrintLog("瀛樺偍鏂囦欢寮傚父锛�" + e);
+ }
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/JackSonUtil.java b/framework/src/main/java/com/yuanchu/mom/utils/JackSonUtil.java
new file mode 100644
index 0000000..27ce635
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/utils/JackSonUtil.java
@@ -0,0 +1,131 @@
+package com.yuanchu.mom.utils;
+
+import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * JSON瑙f瀽澶勭悊
+ *
+ * @author 寮犲
+ */
+@Component
+public class JackSonUtil {
+ private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+ private static final ObjectWriter OBJECT_WRITER = OBJECT_MAPPER.writerWithDefaultPrettyPrinter();
+
+ public static void marshal(File file, Object value) throws Exception {
+ try {
+ OBJECT_WRITER.writeValue(file, value);
+ } catch (JsonGenerationException e) {
+ throw new Exception(e);
+ } catch (JsonMappingException e) {
+ throw new Exception(e);
+ } catch (IOException e) {
+ throw new Exception(e);
+ }
+ }
+
+ public static void marshal(OutputStream os, Object value) throws Exception {
+ try {
+ OBJECT_WRITER.writeValue(os, value);
+ } catch (JsonGenerationException e) {
+ throw new Exception(e);
+ } catch (JsonMappingException e) {
+ throw new Exception(e);
+ } catch (IOException e) {
+ throw new Exception(e);
+ }
+ }
+
+ public static String marshal(Object value) throws Exception {
+ try {
+ return OBJECT_WRITER.writeValueAsString(value);
+ } catch (JsonGenerationException e) {
+ throw new Exception(e);
+ } catch (JsonMappingException e) {
+ throw new Exception(e);
+ } catch (IOException e) {
+ throw new Exception(e);
+ }
+ }
+
+ public static byte[] marshalBytes(Object value) throws Exception {
+ try {
+ return OBJECT_WRITER.writeValueAsBytes(value);
+ } catch (JsonGenerationException e) {
+ throw new Exception(e);
+ } catch (JsonMappingException e) {
+ throw new Exception(e);
+ } catch (IOException e) {
+ throw new Exception(e);
+ }
+ }
+
+ public static <T> T unmarshal(File file, Class<T> valueType) throws Exception {
+ try {
+ return OBJECT_MAPPER.readValue(file, valueType);
+ } catch (JsonParseException e) {
+ throw new Exception(e);
+ } catch (JsonMappingException e) {
+ throw new Exception(e);
+ } catch (IOException e) {
+ throw new Exception(e);
+ }
+ }
+
+ public static <T> T unmarshal(InputStream is, Class<T> valueType) throws Exception {
+ try {
+ return OBJECT_MAPPER.readValue(is, valueType);
+ } catch (JsonParseException e) {
+ throw new Exception(e);
+ } catch (JsonMappingException e) {
+ throw new Exception(e);
+ } catch (IOException e) {
+ throw new Exception(e);
+ }
+ }
+
+ /**
+ * 瀛楃涓茶浆瀵硅薄
+ * @param str
+ * @param valueType
+ * @return
+ * @param <T>
+ * @throws Exception
+ */
+ public static <T> T unmarshal(String str, Class<T> valueType) throws Exception {
+ try {
+ return OBJECT_MAPPER.readValue(str, valueType);
+ } catch (JsonParseException e) {
+ throw new Exception(e);
+ } catch (JsonMappingException e) {
+ throw new Exception(e);
+ } catch (IOException e) {
+ throw new Exception(e);
+ }
+ }
+
+ public static <T> T unmarshal(byte[] bytes, Class<T> valueType) throws Exception {
+ try {
+ if (bytes == null) {
+ bytes = new byte[0];
+ }
+ return OBJECT_MAPPER.readValue(bytes, 0, bytes.length, valueType);
+ } catch (JsonParseException e) {
+ throw new Exception(e);
+ } catch (JsonMappingException e) {
+ throw new Exception(e);
+ } catch (IOException e) {
+ throw new Exception(e);
+ }
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/Jwt.java b/framework/src/main/java/com/yuanchu/mom/utils/Jwt.java
new file mode 100644
index 0000000..8dff28c
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/utils/Jwt.java
@@ -0,0 +1,57 @@
+package com.yuanchu.mom.utils;
+
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.JWTVerifier;
+import com.auth0.jwt.algorithms.Algorithm;
+import com.auth0.jwt.interfaces.DecodedJWT;
+import org.springframework.stereotype.Component;
+
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+@Component
+public class Jwt {
+ private final String SECRET = "value";
+
+ public String createJwt(String name,int id, int time) {
+ HashMap<String, Object> headers = new HashMap<>();
+ Calendar expires = Calendar.getInstance();
+ expires.add(Calendar.MINUTE, time);
+ String jwtToken = JWT.create()
+ // 绗竴閮ㄥ垎Header
+ .withHeader(headers)
+ // 绗簩閮ㄥ垎Payload
+ .withClaim("name", name)
+ .withClaim("id", id)
+ .withExpiresAt(expires.getTime())
+ // 绗笁閮ㄥ垎Signature
+ .sign(Algorithm.HMAC256(SECRET));
+ return jwtToken;
+ }
+
+ public Map<String, String> readJWT(String token) {
+ Map<String, String> map = new HashMap<>();
+ map.put("state", "0");
+ map.put("info", "姝e父");
+ map.put("data", null);
+ // 鍒涘缓涓�涓獙璇佺殑瀵硅薄
+ JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(SECRET)).build();
+ DecodedJWT verify;
+ try {
+ verify = jwtVerifier.verify(token);
+ Map<String, String> maps = new HashMap<>();
+ maps.put("id",verify.getClaim("id").toString());
+ maps.put("name",verify.getClaim("name").toString());
+ map.put("data", JackSonUtil.marshal(maps));
+ } catch (Exception e) {
+ String info = ("" + e).contains("expired") ? "宸茶繃鏈�" : "鏃犳晥绛惧悕";
+ String state = ("" + e).contains("expired") ? "1" : "2";
+ map.put("state", "1");
+ map.put("info", info);
+ }
+ return map;
+ }
+
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/MyUtil.java b/framework/src/main/java/com/yuanchu/mom/utils/MyUtil.java
new file mode 100644
index 0000000..23f54b5
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/utils/MyUtil.java
@@ -0,0 +1,65 @@
+package com.yuanchu.mom.utils;
+
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Random;
+
+@Component
+public class MyUtil<T> {
+
+ /**
+ * 鑷畾涔夎皟璇曞伐鍏风被
+ * @return
+ */
+ public static void PrintLog(String str){
+ // 绫诲悕
+ String className = Thread.currentThread().getStackTrace()[2].getClassName();
+ // 鍑芥暟鍚�
+ String methodName = Thread.currentThread().getStackTrace()[2].getMethodName();
+ System.out.println("\033[1;94m" + className + "-->" + methodName + "-->" + str + "\033[0m");
+ }
+
+ /**
+ * 鏃ユ湡宸ュ叿绫�
+ * @return
+ */
+ public static String MyDateFormat(){
+ //鑾峰彇鏃ユ湡
+ //瀵� import java.util.Date; 涓嬬殑鍖�
+ Date date = new Date();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ return sdf.format(date);
+ }
+
+ /**
+ * 鑾峰彇闅忔満鍔犲瘑鐩�
+ * @param n 浣嶆暟
+ * @return 杩斿洖闅忔満鍔犲瘑鐩�
+ */
+ public static String getSalt(int n) {
+ char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890!@#$%^&*()+-=/[];~.".toCharArray();
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < n; i++) {
+ char c = chars[new Random().nextInt(chars.length)];
+ sb.append(c);
+ }
+ return sb.toString();
+ }
+
+ /**
+ * 鑾峰彇闅忔満鏁板瓧
+ * @param n 浣嶆暟
+ * @return 杩斿洖闅忔満鍊�
+ */
+ public static String getNumber(int n) {
+ char[] chars = "1234567890".toCharArray();
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < n; i++) {
+ char c = chars[new Random().nextInt(chars.length)];
+ sb.append(c);
+ }
+ return sb.toString();
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/RedisUtil.java b/framework/src/main/java/com/yuanchu/mom/utils/RedisUtil.java
new file mode 100644
index 0000000..00206d3
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/utils/RedisUtil.java
@@ -0,0 +1,622 @@
+package com.yuanchu.mom.utils;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class RedisUtil {
+ private static RedisTemplate<String, Object> redisTemplate;
+ public static RedisTemplate<String, Object> getRedisTemplate() {
+ return redisTemplate;
+ }
+ @Autowired
+ private RedisUtil(RedisConnectionFactory redisConnectionFactory){
+ // redisTemplate妯℃澘鍒濆鍖�
+ redisTemplate = new RedisTemplate<>();
+ redisTemplate.setConnectionFactory(redisConnectionFactory);
+
+ // 灏嗗璞″簭鍒楀寲
+ ObjectMapper om=new ObjectMapper();
+ om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+ om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,
+ ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
+
+ // String鐨勫簭鍒楀寲
+ StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+ // json搴忓垪鍖栭厤缃�
+ Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer=new Jackson2JsonRedisSerializer<>(Object.class);
+ jackson2JsonRedisSerializer.setObjectMapper(om);
+ //key閲囩敤String鐨勫簭鍒楀寲鏂瑰紡
+ redisTemplate.setKeySerializer(stringRedisSerializer);
+ //hash鐨刱ey涔熼噰鐢⊿tring 鐨勫簭鍒楀寲鏂瑰紡
+ redisTemplate.setHashKeySerializer(stringRedisSerializer);
+ //value鐨勫簭鍒楀寲鏂瑰紡閲囩敤jackson鐨勬柟寮�
+ redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
+// //hash鐨剉alue搴忓垪鍖栨柟寮忛噰鐢╦ackson
+ redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
+ redisTemplate.afterPropertiesSet();
+ }
+
+ // =============================common============================
+ /**
+ * 鎸囧畾缂撳瓨澶辨晥鏃堕棿
+ * @param key 閿�
+ * @param time 鏃堕棿(绉�)
+ */
+ public static boolean expire(String key, long time) {
+ try {
+ if (time > 0) {
+ redisTemplate.expire(key, time, TimeUnit.SECONDS);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 鏍规嵁key 鑾峰彇杩囨湡鏃堕棿
+ * @param key 閿� 涓嶈兘涓簄ull
+ * @return 鏃堕棿(绉�) 杩斿洖0浠h〃涓烘案涔呮湁鏁�
+ */
+ public static long getExpire(String key) {
+ return redisTemplate.getExpire(key, TimeUnit.SECONDS);
+ }
+
+
+ /**
+ * 鍒ゆ柇key鏄惁瀛樺湪
+ * @param key 閿�
+ * @return true 瀛樺湪 false涓嶅瓨鍦�
+ */
+ public static boolean hasKey(String key) {
+ try {
+ return redisTemplate.hasKey(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ /**
+ * 鍒犻櫎缂撳瓨
+ * @param key 鍙互浼犱竴涓�� 鎴栧涓�
+ */
+// @SuppressWarnings("unchecked")
+ public static void del(String... key) {
+ if (key != null && key.length > 0) {
+ if (key.length == 1) {
+ redisTemplate.delete(key[0]);
+ } else {
+ redisTemplate.delete(Arrays.asList(key));
+// redisTemplate.delete(CollectionUtils.arrayToList(key));
+ }
+ }
+ }
+
+ /**
+ * 鑾峰彇骞跺垹闄ょ紦瀛�
+ * @param key 閿�
+ * @return 鍊�
+ */
+ public static Object getAndDelete(String key) {
+ try{
+ return key == null ? null : get(key);
+ }finally {
+ del(key);
+ }
+ }
+
+ // ============================String=============================
+
+ /**
+ * 鏅�氱紦瀛樿幏鍙�
+ * @param key 閿�
+ * @return 鍊�
+ */
+ public static Object get(String key) {
+ return key == null ? null : redisTemplate.opsForValue().get(key);
+ }
+
+ /**
+ * 鏅�氱紦瀛樻斁鍏�
+ * @param key 閿�
+ * @param value 鍊�
+ * @return true鎴愬姛 false澶辫触
+ */
+
+ public static boolean set(String key, Object value) {
+ try {
+ redisTemplate.opsForValue().set(key, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ /**
+ * 鏅�氱紦瀛樻斁鍏ュ苟璁剧疆鏃堕棿
+ * @param key 閿�
+ * @param value 鍊�
+ * @param time 鏃堕棿(绉�) time瑕佸ぇ浜�0 濡傛灉time灏忎簬绛変簬0 灏嗚缃棤闄愭湡
+ * @return true鎴愬姛 false 澶辫触
+ */
+
+ public static boolean set(String key, Object value, long time) {
+ try {
+ if (time > 0) {
+ redisTemplate.opsForValue().set(key, value, time, TimeUnit.MINUTES);
+ } else {
+ // 鍙慨鏀瑰弬鏁颁笉淇敼ttl
+ redisTemplate.opsForValue().set(key, value, 0);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ /**
+ * 閫掑
+ * @param key 閿�
+ * @param delta 瑕佸鍔犲嚑(澶т簬0)
+ */
+ public static long incr(String key, long delta) {
+ if (delta < 0) {
+ throw new RuntimeException("閫掑鍥犲瓙蹇呴』澶т簬0");
+ }
+ return redisTemplate.opsForValue().increment(key, delta);
+ }
+
+
+ /**
+ * 閫掑噺
+ * @param key 閿�
+ * @param delta 瑕佸噺灏戝嚑(灏忎簬0)
+ */
+ public static long decr(String key, long delta) {
+ if (delta < 0) {
+ throw new RuntimeException("閫掑噺鍥犲瓙蹇呴』澶т簬0");
+ }
+ return redisTemplate.opsForValue().increment(key, -delta);
+ }
+
+
+ // ================================Map=================================
+
+ /**
+ * HashGet
+ * @param key 閿� 涓嶈兘涓簄ull
+ * @param item 椤� 涓嶈兘涓簄ull
+ */
+ public static Object hget(String key, String item) {
+ return redisTemplate.opsForHash().get(key, item);
+ }
+
+ /**
+ * 鑾峰彇hashKey瀵瑰簲鐨勬墍鏈夐敭鍊�
+ * @param key 閿�
+ * @return 瀵瑰簲鐨勫涓敭鍊�
+ */
+ public static Map<Object, Object> hmget(String key) {
+ return redisTemplate.opsForHash().entries(key);
+ }
+
+ /**
+ * HashSet
+ * @param key 閿�
+ * @param map 瀵瑰簲澶氫釜閿��
+ */
+ public static boolean hmset(String key, Map<String, Object> map) {
+ try {
+ redisTemplate.opsForHash().putAll(key, map);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ /**
+ * HashSet 骞惰缃椂闂�
+ * @param key 閿�
+ * @param map 瀵瑰簲澶氫釜閿��
+ * @param time 鏃堕棿(绉�)
+ * @return true鎴愬姛 false澶辫触
+ */
+ public static boolean hmset(String key, Map<String, Object> map, long time) {
+ try {
+ if (time > 0) {
+ redisTemplate.opsForHash().putAll(key, map);
+ expire(key, time);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ /**
+ * 鍚戜竴寮爃ash琛ㄤ腑鏀惧叆鏁版嵁,濡傛灉涓嶅瓨鍦ㄥ皢鍒涘缓
+ *
+ * @param key 閿�
+ * @param item 椤�
+ * @param value 鍊�
+ * @return true 鎴愬姛 false澶辫触
+ */
+ public static boolean hset(String key, String item, Object value) {
+ try {
+ redisTemplate.opsForHash().put(key, item, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 鍚戜竴寮爃ash琛ㄤ腑鏀惧叆鏁版嵁,濡傛灉涓嶅瓨鍦ㄥ皢鍒涘缓
+ *
+ * @param key 閿�
+ * @param item 椤�
+ * @param value 鍊�
+ * @param time 鏃堕棿(绉�) 娉ㄦ剰:濡傛灉宸插瓨鍦ㄧ殑hash琛ㄦ湁鏃堕棿,杩欓噷灏嗕細鏇挎崲鍘熸湁鐨勬椂闂�
+ * @return true 鎴愬姛 false澶辫触
+ */
+ public static boolean hset(String key, String item, Object value, long time) {
+ try {
+ if (time > 0) {
+ redisTemplate.opsForHash().put(key, item, value);
+ expire(key, time);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 鍒犻櫎hash琛ㄤ腑鐨勫��
+ *
+ * @param key 閿� 涓嶈兘涓簄ull
+ * @param item 椤� 鍙互浣垮涓� 涓嶈兘涓簄ull
+ */
+ public static void hdel(String key, Object... item) {
+ redisTemplate.opsForHash().delete(key, item);
+ }
+
+
+ /**
+ * 鍒ゆ柇hash琛ㄤ腑鏄惁鏈夎椤圭殑鍊�
+ *
+ * @param key 閿� 涓嶈兘涓簄ull
+ * @param item 椤� 涓嶈兘涓簄ull
+ * @return true 瀛樺湪 false涓嶅瓨鍦�
+ */
+ public static boolean hHasKey(String key, String item) {
+ return redisTemplate.opsForHash().hasKey(key, item);
+ }
+
+
+ /**
+ * hash閫掑 濡傛灉涓嶅瓨鍦�,灏变細鍒涘缓涓�涓� 骞舵妸鏂板鍚庣殑鍊艰繑鍥�
+ *
+ * @param key 閿�
+ * @param item 椤�
+ * @param by 瑕佸鍔犲嚑(澶т簬0)
+ */
+ public static double hincr(String key, String item, double by) {
+ return redisTemplate.opsForHash().increment(key, item, by);
+ }
+
+
+ /**
+ * hash閫掑噺
+ *
+ * @param key 閿�
+ * @param item 椤�
+ * @param by 瑕佸噺灏戣(灏忎簬0)
+ */
+ public static double hdecr(String key, String item, double by) {
+ return redisTemplate.opsForHash().increment(key, item, -by);
+ }
+
+
+ // ============================set=============================
+
+ /**
+ * 鏍规嵁key鑾峰彇Set涓殑鎵�鏈夊��
+ * @param key 閿�
+ */
+ public static Set<Object> sGet(String key) {
+ try {
+ return redisTemplate.opsForSet().members(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+
+ /**
+ * 鏍规嵁value浠庝竴涓猻et涓煡璇�,鏄惁瀛樺湪
+ *
+ * @param key 閿�
+ * @param value 鍊�
+ * @return true 瀛樺湪 false涓嶅瓨鍦�
+ */
+ public static boolean sHasKey(String key, Object value) {
+ try {
+ return redisTemplate.opsForSet().isMember(key, value);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ /**
+ * 灏嗘暟鎹斁鍏et缂撳瓨
+ *
+ * @param key 閿�
+ * @param values 鍊� 鍙互鏄涓�
+ * @return 鎴愬姛涓暟
+ */
+ public static long sSet(String key, Object... values) {
+ try {
+ return redisTemplate.opsForSet().add(key, values);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+
+ /**
+ * 灏唖et鏁版嵁鏀惧叆缂撳瓨
+ *
+ * @param key 閿�
+ * @param time 鏃堕棿(绉�)
+ * @param values 鍊� 鍙互鏄涓�
+ * @return 鎴愬姛涓暟
+ */
+ public static long sSetAndTime(String key, long time, Object... values) {
+ try {
+ Long count = (long)values.length;
+ if (time > 0) {
+ count = redisTemplate.opsForSet().add(key, values);
+ expire(key, time);
+ }
+ return count;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+
+ /**
+ * 鑾峰彇set缂撳瓨鐨勯暱搴�
+ *
+ * @param key 閿�
+ */
+ public static long sGetSetSize(String key) {
+ try {
+ return redisTemplate.opsForSet().size(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+
+ /**
+ * 绉婚櫎鍊间负value鐨�
+ *
+ * @param key 閿�
+ * @param values 鍊� 鍙互鏄涓�
+ * @return 绉婚櫎鐨勪釜鏁�
+ */
+
+ public static long setRemove(String key, Object... values) {
+ try {
+ return redisTemplate.opsForSet().remove(key, values);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ // ===============================list=================================
+
+ /**
+ * 鑾峰彇list缂撳瓨鐨勫唴瀹�
+ *
+ * @param key 閿�
+ * @param start 寮�濮�
+ * @param end 缁撴潫 0 鍒� -1浠h〃鎵�鏈夊��
+ */
+ public static List<Object> lGet(String key, long start, long end) {
+ try {
+ return redisTemplate.opsForList().range(key, start, end);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+
+ /**
+ * 鑾峰彇list缂撳瓨鐨勯暱搴�
+ *
+ * @param key 閿�
+ */
+ public static long lGetListSize(String key) {
+ try {
+ return redisTemplate.opsForList().size(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+
+ /**
+ * 閫氳繃绱㈠紩 鑾峰彇list涓殑鍊�
+ *
+ * @param key 閿�
+ * @param index 绱㈠紩 index>=0鏃讹紝 0 琛ㄥご锛�1 绗簩涓厓绱狅紝渚濇绫绘帹锛沬ndex<0鏃讹紝-1锛岃〃灏撅紝-2鍊掓暟绗簩涓厓绱狅紝渚濇绫绘帹
+ */
+ public static Object lGetIndex(String key, long index) {
+ try {
+ return redisTemplate.opsForList().index(key, index);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+
+ /**
+ * 灏唋ist鏀惧叆缂撳瓨
+ *
+ * @param key 閿�
+ * @param value 鍊�
+ */
+ public static boolean lSet(String key, Object value) {
+ try {
+ redisTemplate.opsForList().rightPush(key, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ /**
+ * 灏唋ist鏀惧叆缂撳瓨
+ * @param key 閿�
+ * @param value 鍊�
+ * @param time 鏃堕棿(绉�)
+ */
+ public static boolean lSet(String key, Object value, long time) {
+ try {
+ if (time > 0) {
+ redisTemplate.opsForList().rightPush(key, value);
+ expire(key, time);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+
+ }
+
+
+ /**
+ * 灏唋ist鏀惧叆缂撳瓨
+ *
+ * @param key 閿�
+ * @param value 鍊�
+ * @return true 瀛樻斁鎴愬姛 false瀛樻斁澶辫触
+ */
+ public static boolean lSet(String key, List<Object> value) {
+ try {
+ redisTemplate.opsForList().rightPushAll(key, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+
+ }
+
+
+ /**
+ * 灏唋ist鏀惧叆缂撳瓨
+ *
+ * @param key 閿�
+ * @param value 鍊�
+ * @param time 鏃堕棿(绉�)
+ * @return true 瀛樻斁鎴愬姛 false瀛樻斁澶辫触
+ */
+ public static boolean lSet(String key, List<Object> value, long time) {
+ try {
+ if (time > 0) {
+ redisTemplate.opsForList().rightPushAll(key, value);
+ expire(key, time);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ /**
+ * 鏍规嵁绱㈠紩淇敼list涓殑鏌愭潯鏁版嵁
+ *
+ * @param key 閿�
+ * @param index 绱㈠紩
+ * @param value 鍊�
+ * @return true 瀛樻斁鎴愬姛 false瀛樻斁澶辫触
+ */
+
+ public static boolean lUpdateIndex(String key, long index, Object value) {
+ try {
+ redisTemplate.opsForList().set(key, index, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ /**
+ * 绉婚櫎N涓�间负value
+ *
+ * @param key 閿�
+ * @param count 绉婚櫎澶氬皯涓�
+ * @param value 鍊�
+ * @return 绉婚櫎鐨勪釜鏁�
+ */
+
+ public static long lRemove(String key, long count, Object value) {
+ try {
+ return redisTemplate.opsForList().remove(key, count, value);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+}
+
diff --git a/framework/src/main/java/com/yuanchu/mom/vo/Result.java b/framework/src/main/java/com/yuanchu/mom/vo/Result.java
new file mode 100644
index 0000000..77333a4
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/vo/Result.java
@@ -0,0 +1,56 @@
+package com.yuanchu.mom.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.servlet.http.HttpServletResponse;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Result<T> {
+
+ @ApiModelProperty(value = "鍝嶅簲鐮侊細200鎴愬姛锛�201澶辫触")
+ private int code;
+
+ @ApiModelProperty(value = "鍝嶅簲娑堟伅")
+ private String message;
+
+ @ApiModelProperty(value = "鍝嶅簲鍙傛暟")
+ private T data;
+
+ public static <T> Result<T> success(){
+ return new Result<>(200, "success",null);
+ }
+
+ public static <T> Result<T> success(String message){
+ return new Result<>(200, message,null);
+ }
+
+ public static <T> Result<T> success(T data){
+ return new Result<>(200, "success",data);
+ }
+
+ public static <T> Result<T> success(String message, T data){
+ return new Result<>(200, message,data);
+ }
+
+ public static <T> Result<T> fail(){
+ return new Result<>(201, "fail", null);
+ }
+
+ public static <T> Result<T> fail(String message){
+ return new Result<>(201, message, null);
+ }
+
+ public static <T> Result<T> fail(Integer code){
+ return new Result<>(code, "fail", null);
+ }
+
+ public static <T> Result<T> fail(Integer code, String message){
+ return new Result<>(code, message, null);
+ }
+}
diff --git a/inspect-server/.gitignore b/inspect-server/.gitignore
new file mode 100644
index 0000000..549e00a
--- /dev/null
+++ b/inspect-server/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/inspect-server/pom.xml b/inspect-server/pom.xml
new file mode 100644
index 0000000..800b39b
--- /dev/null
+++ b/inspect-server/pom.xml
@@ -0,0 +1,55 @@
+<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mom</artifactId>
+ <groupId>com.yuanchu.mom</groupId>
+ <version>1.0.0</version>
+ </parent>
+
+ <artifactId>inspect-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <name>inspect-server</name>
+ <description>inspect-server</description>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <!--宸ュ叿妯″潡-->
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>framework</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>user-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>standard-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin.external.google</groupId>
+ <artifactId>android-json</artifactId>
+ <version>0.0.20131108.vaadin1</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <!--鐢ㄦ埛妯″潡-->
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>user-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+
+ <!--鏍囧噯妯″潡-->
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>standard-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/FinishedInspectController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/FinishedInspectController.java
new file mode 100644
index 0000000..4b06a6f
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/FinishedInspectController.java
@@ -0,0 +1,118 @@
+package com.yuanchu.mom.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.FinishedInspect;
+import com.yuanchu.mom.service.*;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-08-01
+ */
+@Api(tags = "QMS绠$悊-->鎴愬搧妫�楠�")
+@RestController
+@RequestMapping("/finished-inspect")
+public class FinishedInspectController {
+
+ @Autowired
+ private FinishedInspectService finishedInspectService;
+
+ @Autowired
+ private UserService userService;
+
+ @Autowired
+ private SpecificationsService specificationsService;
+
+ @Autowired
+ private MaterialService materialService;
+
+ @ApiOperation(value = "鏂板鎸夐挳-->1銆佹柊澧炶繃绋嬫楠屽崟")
+ @PostMapping("/add_process_inspection_sheet")
+ public Result<?> addProcessInspectionSheet(@Validated @RequestBody FinishedInspect finishedInspect){
+ Integer isInsertSuccess = finishedInspectService.addProcessInspectionSheet(finishedInspect);
+ if (isInsertSuccess == 1){
+ return Result.success("鏂板鎴愬姛锛�");
+ }
+ return Result.fail("鏂板澶辫触锛�");
+ }
+
+ @ApiOperation(value = "鏂板鎸夐挳-->1銆佹柊澧炶繃绋嬫楠屽崟-->涓绘満宸ヤ笅鎷夋")
+ @GetMapping("/list_user")
+ public Result<?> selectUserIdAndName(){
+ List<Map<String, Object>> maps = userService.listUserIdAndName();
+ return Result.success(maps);
+ }
+
+ @ApiOperation(value = "鏂板鎸夐挳-->1銆佹柊澧炶繃绋嬫楠屽崟-->2銆佽鏍煎瀷鍙蜂笅鎷夋锛氭牴鎹」鐩甀D鏌ヨ")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "materialId",value = "椤圭洰鍚嶇ОID",dataTypeClass = Integer.class,required = true)
+ })
+ @GetMapping("/list_specification")
+ public Result<?> selectSpecificationIdAndName(Integer materialId){
+ List<Map<String, Object>> maps = specificationsService.selectSpecificationIdAndName(materialId);
+ return Result.success(maps);
+ }
+
+ @ApiOperation(value = "鏂板鎸夐挳-->1銆佹柊澧炶繃绋嬫楠屽崟-->1銆侀」鐩悕绉颁笅鎷夋")
+ @GetMapping("/list_material")
+ public Result<?> selectMaterialIdAndNameAndCode(){
+ List<Map<String, Object>> maps = materialService.selectMaterialIdAndNameAndCode();
+ return Result.success(maps);
+ }
+
+ @ApiOperation(value = "鏂板鎸夐挳-->3銆佹楠岀粨璁�")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "finishedInspectId",value = "妫�楠屽崟Id",dataTypeClass = Integer.class,required = true),
+ @ApiImplicitParam(name = "result",value = "妫�楠岀粨璁�",dataTypeClass = Integer.class,required = true),
+ })
+ @PostMapping("/inspection_conclusion")
+ public Result<?> inspectionConclusion(Integer finishedInspectId, Integer result){
+ Integer isInsertSuccess = finishedInspectService.inspectionConclusion(finishedInspectId, result);
+ if (isInsertSuccess == 1){
+ return Result.success("涓婃姤鎴愬姛锛�");
+ }
+ return Result.fail("涓婃姤澶辫触锛�");
+ }
+
+ @ApiOperation(value = "4銆佷富椤靛垎椤�")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "pageNo", value = "鏉℃暟/椤�", dataTypeClass = Integer.class, required = true),
+ @ApiImplicitParam(name = "pageSize", value = "椤垫暟", dataTypeClass = Integer.class, required = true),
+ @ApiImplicitParam(name = "inspectResult", value = "妫�楠岀粨鏋�", dataTypeClass = Integer.class),
+ @ApiImplicitParam(name = "inspectDate", value = "妫�楠屾棩鏈�", dataTypeClass = Date.class, dataType = "date"),
+ @ApiImplicitParam(name = "inspectUsername", value = "涓绘満宸�", dataTypeClass = String.class)
+ })
+ @GetMapping("/list_page")
+ public Result<?> selectFinishedInspectPage(Integer pageNo, Integer pageSize, Integer inspectResult, String inspectDate, String inspectUsername){
+ IPage<Map<String, Object>> page = finishedInspectService.selectFinishedInspectPage(new Page<Object>(pageNo, pageSize), inspectResult, inspectDate, inspectUsername);
+ Map<String, Object> map = new HashMap<>();
+ map.put("total", page.getTotal());
+ map.put("row", page.getRecords());
+ return Result.success(map);
+ }
+
+ @ApiOperation(value = "4銆佷富椤靛垎椤�-->涓绘満宸ユ潯浠舵煡璇笅鎷夋")
+ @GetMapping("/page_user")
+ public Result<?> selectPageUserIdAndName(){
+ List<Map<String, Object>> maps = userService.listUserIdAndName();
+ return Result.success(maps);
+ }
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InspectUnacceptedController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InspectUnacceptedController.java
new file mode 100644
index 0000000..e5682a2
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InspectUnacceptedController.java
@@ -0,0 +1,52 @@
+package com.yuanchu.mom.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.yuanchu.mom.service.InspectUnacceptedService;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 涓嶅悎鏍煎搧妫�楠岃〃(InspectUnaccepted)琛ㄦ帶鍒跺眰
+ *
+ * @author zss
+ * @since 2023-08-07 10:04:01
+ */
+@Api(tags = "QMS绠$悊-->涓嶅悎鏍煎搧")
+@RestController
+@RequestMapping("/inspectUnaccepted")
+public class InspectUnacceptedController {
+
+ @Autowired
+ private InspectUnacceptedService inspectUnacceptedService;
+
+
+ @ApiOperation(value = "鏌ヨ鍘熸潗鏂欎笉鍚堟牸鍝佹楠屽崟鍒楄〃")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "pageSize",value = "椤垫暟",dataTypeClass = Integer.class,required = true),
+ @ApiImplicitParam(name = "countSize",value = "鏉℃暟/椤�",dataTypeClass = Integer.class,required = true),
+ @ApiImplicitParam(name = "formTime",value = "鏉ユ枡鏃ユ湡",dataTypeClass = String.class),
+ @ApiImplicitParam(name = "dealState",value = "澶勭悊鐘舵��(涓虹┖=鍏ㄩ儴)",dataTypeClass = Integer.class),
+ @ApiImplicitParam(name = "supplier",value = "渚涘簲鍟�(涓虹┖=鍏ㄩ儴)",dataTypeClass = String.class),
+ @ApiImplicitParam(name = "type",value = "绫诲瀷(涓虹┖=鍘熸潗鏂�2)",dataTypeClass = Integer.class)
+ })
+ @GetMapping("/selectUnRawInspectsList")
+ public Result selectUnRawInspectsList(int pageSize, int countSize, String formTime, Integer dealState,String supplier,Integer type){
+ IPage<Map<String, Object>> inspectionPage = inspectUnacceptedService.selectUnRawInspectsList(new Page<Object>(pageSize, countSize), formTime,dealState,supplier,type);
+ Map<String, Object> map = new HashMap<>();
+ map.put("total", inspectionPage.getTotal());
+ map.put("row", inspectionPage.getRecords());
+ return Result.success(map);
+ }
+
+}
+
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InspectionItemController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InspectionItemController.java
new file mode 100644
index 0000000..e77f84b
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InspectionItemController.java
@@ -0,0 +1,66 @@
+package com.yuanchu.mom.controller;
+
+import com.yuanchu.mom.pojo.dto.InspectionItemDto;
+import com.yuanchu.mom.pojo.dto.UpdateInspectionItemDto;
+import com.yuanchu.mom.service.InspectionItemService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.utils.Jwt;
+
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-08-01
+ */
+@Api(tags = "QMS绠$悊-->鎴愬搧妫�楠�")
+@RestController
+@RequestMapping("/inspection-item")
+public class InspectionItemController {
+
+ @Autowired
+ private InspectionItemService inspectionItemService;
+
+ @Autowired
+ private Jwt jwt;
+
+ @ApiOperation(value = "鏂板鎸夐挳-->2銆佹煡璇㈡墍鏈夋楠岄」鐩�")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "finishInspectId",value = "鎴愬搧妫�楠屽崟Id",dataTypeClass = Integer.class,required = true)
+ })
+ @GetMapping("/list_user")
+ public Result<?> selectInspectionItem(Integer finishInspectId){
+ List<InspectionItemDto> inspectionItemDto = inspectionItemService.selectInspectionItem(finishInspectId);
+ return Result.success(inspectionItemDto);
+ }
+
+ @ApiOperation(value = "鏂板鎸夐挳-->2銆佹楠岄」鐩�-->澶卞幓鐒︾偣鍙戣捣璇ヨ姹�")
+ @PostMapping("/lose_focus_update")
+ public Result<?> addInspectionItem(@RequestHeader("token")String token, @RequestBody UpdateInspectionItemDto updateInspectionItemDto) throws Exception {
+ Map<String, String> usernameMessage = jwt.readJWT(token);
+ Map<String, Object> usernameAndId = JackSonUtil.unmarshal(usernameMessage.get("data"), Map.class);
+ String name = usernameAndId.get("name").toString().replaceAll("\"", "");
+ Integer isInsertSuccess = inspectionItemService.addProcessInspectionSheet(name, updateInspectionItemDto);
+ Map<String, Object> map = new HashMap<>();
+ map.put("result", isInsertSuccess);
+ map.put("username", name);
+ return Result.success(map);
+ }
+
+ @ApiOperation(value = "鏂板鎸夐挳-->2銆佹楠岄」鐩�-->璇曢獙璁惧涓嬫媺妗�")
+ @GetMapping("/list_device")
+ public Result<?> selectDeviceIdAndName(){
+ List<Map<String, Object>> maps = inspectionItemService.selectDeviceIdAndName();
+ return Result.success(maps);
+ }
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/RawInsProductController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/RawInsProductController.java
new file mode 100644
index 0000000..a738a85
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/RawInsProductController.java
@@ -0,0 +1,67 @@
+package com.yuanchu.mom.controller;
+
+import com.yuanchu.mom.pojo.RawInsProduct;
+import com.yuanchu.mom.service.DeviceService;
+import com.yuanchu.mom.utils.Jwt;
+import com.yuanchu.mom.utils.MyUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.yuanchu.mom.service.RawInsProductService;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * 鍘熸潗鏂欑敵璇峰崟涓殑椤圭洰鍒楄〃(RawInsProduct)琛ㄦ帶鍒跺眰
+ *
+ * @author zss
+ * @since 2023-08-01 13:52:30
+ */
+@Api(tags = "QMS绠$悊-->鍘熸潗鏂欐楠�-->妫�楠岄」鐩�")
+@RestController
+@RequestMapping("/rawInsProduct")
+public class RawInsProductController {
+
+ @Autowired
+ private RawInsProductService rawInsProductService;
+
+ @Resource
+ DeviceService deviceService;
+
+ @Resource
+ Jwt jwt;
+
+ @ApiOperation(value = "鏌ヨ鎵�鏈夎澶�")
+ @GetMapping("/selectDevice")
+ public Result selectDevice() {
+ return Result.success(deviceService.selectDevice());
+ }
+
+ @ApiOperation("閫夋嫨璁惧淇℃伅")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "id", value = "璁惧ID", dataTypeClass = Integer.class, required = true),
+ })
+ @GetMapping("/selectDeviceById")
+ public Result selectDeviceById(Integer id) {
+ return Result.success( deviceService.getDeviceNameById(id));
+ }
+
+
+ @ApiOperation(value = "鏇存柊妫�楠岄」鐩�")
+ @PostMapping("/updaterawInsProduct")
+ public Result updaterawInsProduct(@RequestHeader("token") String token, @RequestBody RawInsProduct rawInsProduct) throws Exception {
+ Map<String, String> map = jwt.readJWT(token);
+ String data = map.get("data");
+ JSONObject jsonObject = new JSONObject(data);
+ int userId = Integer.parseInt(jsonObject.getString("id"));
+ rawInsProductService.updaterawInsProduct(userId,rawInsProduct);
+ return Result.success();
+ }
+}
+
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/RawInspectController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/RawInspectController.java
new file mode 100644
index 0000000..c52c933
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/RawInspectController.java
@@ -0,0 +1,122 @@
+package com.yuanchu.mom.controller;
+
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.yuanchu.mom.pojo.RawInspect;
+import com.yuanchu.mom.pojo.vo.RawInsProductVo;
+import com.yuanchu.mom.pojo.vo.RawInspectVo;
+import com.yuanchu.mom.service.*;
+import com.yuanchu.mom.utils.Jwt;
+import com.yuanchu.mom.utils.MyUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.*;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+
+@RestController
+@RequestMapping("/rawInspect")
+@Api(tags = "QMS绠$悊-->鍘熸潗鏂欐楠�")
+public class RawInspectController {
+
+ @Autowired
+ RawInspectService rawInspectService;
+
+ @Resource
+ Jwt jwt;
+
+ @Resource
+ MaterialService materialService;
+
+ @Resource
+ SpecificationsService specificationsService;
+
+ @ApiOperation(value = "鏌ヨ鍘熸潗鏂欐楠屽崟鍒楄〃")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "pageSize", value = "椤垫暟", dataTypeClass = Integer.class, required = true),
+ @ApiImplicitParam(name = "countSize", value = "鏉℃暟/椤�", dataTypeClass = Integer.class, required = true),
+ @ApiImplicitParam(name = "formTime", value = "鏉ユ枡鏃ユ湡", dataTypeClass = String.class),
+ @ApiImplicitParam(name = "createTime", value = "鎶ユ鏃ユ湡", dataTypeClass = String.class),
+ @ApiImplicitParam(name = "insState", value = "妫�娴嬬姸鎬�: 鍏ㄩ儴榛樿2", dataTypeClass = Integer.class, required = true),
+ @ApiImplicitParam(name = "judgeState", value = "鍚堟牸鐘舵��: 鍏ㄩ儴榛樿2", dataTypeClass = Integer.class, required = true),
+ })
+ @PostMapping("/selectRawInspectsList")
+ public Result selectRawInspectsList(Integer pageSize, Integer countSize, String formTime, String createTime, Integer insState, Integer judgeState) {
+ return Result.success(rawInspectService.selectRawInspectsList(pageSize, countSize, formTime, createTime, insState, judgeState));
+ }
+
+ @ApiOperation(value = "鏍规嵁妫�楠屽崟id鏌ヨ鍘熸潗鏂欐楠屽崟璇︽儏")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "id", value = "妫�楠屽崟id", dataTypeClass = Integer.class, required = true)
+ })
+ @GetMapping("/selectRawInspectsListById/{id}")
+ public Result selectRawInspectsListById(@PathVariable Integer id) {
+ return Result.success(rawInspectService.selectRawInspectsListById(id));
+ }
+
+ @ApiOperation(value = "涓婃姤(鏇存柊妫�楠岀姸鎬�)")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "id", value = "妫�楠屽崟id", dataTypeClass = Integer.class, required = true)
+ })
+ @PostMapping("/updateRawInspectsById/{id}")
+ public Result updateRawInspectsById(@PathVariable Integer id) {
+ //濡傛灉宸茬粡涓婃姤浜嗕笉鑳藉啀涓�娆′笂鎶�
+ RawInspect rawInspect = rawInspectService.getById(id);
+ if (rawInspect.getInsState() == 1) {
+ return Result.fail("宸茬粡涓婃姤杩囦簡,涓嶈兘鍐嶆涓婃姤!");
+ }
+ return Result.success(rawInspectService.updateRawInspectsById(id));
+ }
+
+ @ApiOperation(value = "鏌ヨ鎵�鏈夊師鏉愭枡淇℃伅")
+ @GetMapping("/selectMaterial")
+ public Result selectMaterial() {
+ return Result.success(materialService.selectMaterial());
+ }
+
+ @ApiOperation(value = "閫夋嫨鐗╂枡鍚嶇О鏌ヨ鐗╂枡淇℃伅(鐗╂枡id鍜岀紪鐮�)")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "name", value = "鍘熸潗鏂欏悕绉�(鐗╂枡鍚嶇О)", dataTypeClass = String.class, required = true)
+ })
+ @GetMapping("/selectMcodeId")
+ public Result selectMcodeId(String name) {
+ return Result.success(materialService.selectMcodeId(name));
+ }
+
+ @ApiOperation(value = "閫夋嫨鐗╂枡缂栫爜(鑾峰彇鐗╂枡瑙勬牸id.鍚嶇О鍜屽瀷鍙峰悕绉�)")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "name", value = "鍘熸潗鏂欏悕绉�(鐗╂枡鍚嶇О)", dataTypeClass = String.class, required = true),
+ @ApiImplicitParam(name = "code", value = "鍘熸潗鏂欑紪鍙�(鐗╂枡缂栧彿)", dataTypeClass = String.class, required = true)
+ })
+ @GetMapping("/selectIdByCoNa")
+ public Result selectIdByCoNa(String name, String code) {
+ return Result.success(materialService.selectIdByCoNa(name, code));
+ }
+
+ @ApiOperation(value = "閫夋嫨鐗╂枡瑙勬牸(鏍规嵁瑙勬牸id鑾峰彇鐗╂枡鍨嬪彿)")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "id", value = "鐗╂枡瑙勬牸id", dataTypeClass = Integer.class, required = true)
+ })
+ @GetMapping("/selectSpBySt")
+ public Result selectSpBySt(Integer id) {
+ return Result.success(specificationsService.selectSpecificationIdAndName(id));
+ }
+
+
+ @ApiOperation(value = "鏂板妫�楠屽崟")
+ @PostMapping("/addRawInspects")
+ public Result addRawInspects(@RequestHeader("token") String token, @RequestBody RawInspect rawInspect) throws JSONException {
+ Map<String, String> map = jwt.readJWT(token);
+ String data = map.get("data");
+ JSONObject jsonObject = new JSONObject(data);
+ String userName = jsonObject.getString("name");
+ return Result.success(rawInspectService.addRawInspects(userName, rawInspect));
+ }
+
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/FinishedInspectMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/FinishedInspectMapper.java
new file mode 100644
index 0000000..e01edee
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/FinishedInspectMapper.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.FinishedInspect;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-08-01
+ */
+public interface FinishedInspectMapper extends BaseMapper<FinishedInspect> {
+
+ IPage<Map<String, Object>> selectFinishedInspectPage(Page<Object> page, Integer inspectResult, String inspectDate, String inspectUsername);
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InspectUnacceptedMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InspectUnacceptedMapper.java
new file mode 100644
index 0000000..a1850d7
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InspectUnacceptedMapper.java
@@ -0,0 +1,23 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.InspectUnaccepted;
+import java.util.Map;
+
+/**
+ * 涓嶅悎鏍煎搧妫�楠岃〃(InspectUnaccepted)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author zss
+ * @since 2023-08-07 10:04:01
+ */
+public interface InspectUnacceptedMapper extends BaseMapper<InspectUnaccepted> {
+
+ //鏌ヨ鍘熸潗鏂欎笉鍚堟牸鍝佹楠屽崟鍒楄〃
+ IPage<Map<String, Object>> selectUnRawInspectsList(Page<Object> page, String formTime, Integer dealState, String supplier, Integer type);
+
+ //鏌ヨ杩囩▼妫�楠屽拰鎴愬搧妫�楠屼腑涓嶅悎鏍煎搧妫�楠屽崟鍒楄〃
+ IPage<Map<String, Object>> selectInsList(Page<Object> page, String formTime, Integer dealState, String supplier, Integer type);
+}
+
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InspectionItemMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InspectionItemMapper.java
new file mode 100644
index 0000000..991b8c7
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InspectionItemMapper.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.mybatis_config.MyBaseMapper;
+import com.yuanchu.mom.pojo.InspectionItem;
+import com.yuanchu.mom.pojo.dto.InspectionItemDto;
+
+import java.util.List;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-08-01
+ */
+public interface InspectionItemMapper extends MyBaseMapper<InspectionItem> {
+
+ List<InspectionItemDto> selectInspectionItem(Integer finishInspectId);
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/RawInsProductMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/RawInsProductMapper.java
new file mode 100644
index 0000000..738d800
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/RawInsProductMapper.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.RawInsProduct;
+
+/**
+ * 鍘熸潗鏂欑敵璇峰崟涓殑椤圭洰鍒楄〃(RawInsProduct)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author zss
+ * @since 2023-08-01 13:52:30
+ */
+public interface RawInsProductMapper extends BaseMapper<RawInsProduct> {
+
+}
+
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/RawInspectMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/RawInspectMapper.java
new file mode 100644
index 0000000..fecdc43
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/RawInspectMapper.java
@@ -0,0 +1,23 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.pojo.RawInspect;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恟aw_inspect(鍘熸潗鏂欑敵璇疯〃)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2023-07-31 14:43:15
+* @Entity com.yuanchu.mom.pojo.RawInspect
+*/
+public interface RawInspectMapper extends BaseMapper<RawInspect> {
+
+ List<RawInspect> selectRawInspectsByLimit(int pageSize, int countSize, String formTime, String createTime,int insState,int judgeState);
+
+
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/FinishedInspect.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/FinishedInspect.java
new file mode 100644
index 0000000..120f250
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/FinishedInspect.java
@@ -0,0 +1,99 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-08-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="FinishedInspect瀵硅薄", description="")
+public class FinishedInspect implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "涓婚敭", hidden = true)
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @NotBlank(message = "璁㈠崟鍙蜂笉鍏佽涓虹┖锛�")
+ @ApiModelProperty(value = "璁㈠崟鍙�", required = true, example = "DDH202308010001")
+ private String orderNumber;
+
+ @NotBlank(message = "瀹㈡埛鍚嶇О涓嶅厑璁镐负绌猴紒")
+ @ApiModelProperty(value = "瀹㈡埛鍚嶇О", required = true, example = "鎳掓磱娲�")
+ private String customerName;
+
+ @NotBlank(message = "宸ョ▼鍚嶇О涓嶅厑璁镐负绌猴紒")
+ @ApiModelProperty(value = "宸ョ▼鍚嶇О", required = true, example = "娑蹭綋纭呮鑳�")
+ private String projectName;
+
+ @NotBlank(message = "璐ㄩ噺杩芥函鍙蜂笉鍏佽涓虹┖锛�")
+ @ApiModelProperty(value = "璐ㄩ噺杩芥函鍙�", required = true, example = "ZLZSH202308010001")
+ private String qualityTraceability;
+
+ @ApiModelProperty(value = "0:鎴愬搧;1锛氳繃绋�;", hidden = true)
+ private Integer type;
+
+ @NotBlank(message = "鍗曚綅涓嶅厑璁镐负绌猴紒")
+ @ApiModelProperty(value = "鍗曚綅", required = true, example = "鍚�")
+ private String unit;
+
+ @NotNull(message = "璇疯緭鍏ユ暟閲忥紒")
+ @ApiModelProperty(value = "鏁伴噺", required = true, example = "50")
+ private Integer quantity;
+
+ @NotNull(message = "璇烽�夋嫨瑙勬牸鍨嬪彿锛�")
+ @ApiModelProperty(value = "瑙勬牸鍨嬪彿鎷兼帴瀛楃", required = true, example = "8.7/15kV JLS-3.2")
+ private String specificationsModel;
+
+ @NotNull(message = "璇烽�夋嫨瑙勬牸鍨嬪彿锛�")
+ @TableField(exist = false)
+ @ApiModelProperty(value = "鍨嬪彿ID", required = true, example = "1")
+ private Integer specificationsId;
+
+ @NotNull(message = "璇烽�夋嫨椤圭洰鍚嶇О锛�")
+ @ApiModelProperty(value = "椤圭洰鍚嶇О", required = true, example = "鍏夌氦")
+ private String material;
+
+ @NotNull(message = "璇烽�夋嫨涓绘満宸ワ紒")
+ @ApiModelProperty(value = "涓绘満宸�:鐢ㄦ埛id", required = true, example = "1")
+ private Integer userId;
+
+ @ApiModelProperty(value = "妫�楠岀粨璁�", hidden = true, required = true, example = "DDH202308010001")
+ private Integer result;
+
+ @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+ @TableLogic(value = "1", delval = "0")
+ private Integer state;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date updateTime;
+
+
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InspectUnaccepted.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InspectUnaccepted.java
new file mode 100644
index 0000000..be76c96
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InspectUnaccepted.java
@@ -0,0 +1,94 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.*;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * 涓嶅悎鏍煎搧妫�楠岃〃(InspectUnaccepted)琛ㄥ疄浣撶被
+ *
+ * @author zss
+ * @since 2023-08-07 10:04:01
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@Builder
+@TableName("inspect_unaccepted")
+public class InspectUnaccepted implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * id
+ **/
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 缂洪櫡鍚嶇О(鐞嗙敱)
+ **/
+ private String reason;
+
+ /**
+ * 澶勭悊鐘舵�� 0锛氬緟澶勭悊锛�1锛氬凡澶勭悊
+ **/
+ private Integer dealState;
+
+ /**
+ * 澶勭悊缁撴灉 0锛氫笉閫氳繃锛�1锛氶�氳繃
+ **/
+ private Integer dealReasult;
+
+ /**
+ * 澶勭悊鏃ユ湡
+ **/
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date dealTime;
+
+ /**
+ * ${column.comment}
+ **/
+ private Integer state;
+
+ /**
+ * ${column.comment}
+ **/
+ @TableField(fill = FieldFill.INSERT)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date updateTime;
+
+ /**
+ * 鍏宠仈 妫�楠屽崟id
+ **/
+ private Integer rawInspectId;
+
+ /**
+ * 0锛氭垚鍝侊紱1锛氳繃绋嬶紱2锛氬師鏉愭枡
+ **/
+ private Integer type;
+
+ /**
+ * 渚涘簲鍟�
+ **/
+ private String supplier;
+
+ /**
+ * 鐜拌薄鎻忚堪
+ **/
+ private String tell;
+}
+
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InspectionItem.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InspectionItem.java
new file mode 100644
index 0000000..c32d30d
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InspectionItem.java
@@ -0,0 +1,86 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-08-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="InspectionItem瀵硅薄", description="")
+public class InspectionItem extends Model<InspectionItem> implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "涓婚敭")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "椤圭洰鍚嶇О")
+ private String name;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鐖跺悕绉�")
+ private String father;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍗曚綅")
+ private String unit;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鏍囧噯鍊�")
+ private String required;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍐呮帶鍊�")
+ private String internal;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鎴愬搧妫�楠屽崟Id")
+ private Integer finishInspectId;
+
+ @ApiModelProperty(value = "妫�楠屽��")
+ private String inspectionValue;
+
+ @ApiModelProperty(value = "璇曢獙璁惧")
+ private Integer deviceId;
+
+ @ApiModelProperty(value = "缁撹")
+ private Integer result;
+
+ @ApiModelProperty(value = "妫�楠屼汉")
+ private String username;
+
+ @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+ @TableLogic(value = "1", delval = "0")
+ private Integer state;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date updateTime;
+
+
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/RawInsProduct.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/RawInsProduct.java
new file mode 100644
index 0000000..e974eee
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/RawInsProduct.java
@@ -0,0 +1,92 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.*;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * 鍘熸潗鏂欑敵璇峰崟涓殑椤圭洰鍒楄〃(RawInsProduct)琛ㄥ疄浣撶被
+ *
+ * @author zss
+ * @since 2023-08-01 13:52:31
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@Builder
+@TableName("raw_ins_product")
+public class RawInsProduct implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 椤圭洰id
+ **/
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 椤圭洰鍚嶇О
+ **/
+ private String name;
+
+ /**
+ * 鍗曚綅
+ **/
+ private String unit;
+
+ /**
+ * 鏍囧噯鍊�
+ **/
+ private String required;
+
+ /**
+ * 鍐呮帶鍊�
+ **/
+ private String internal;
+
+ /**
+ * 妫�娴嬪��
+ **/
+ private String testValue;
+
+ /**
+ * 缁撹 0锛氫笉鍚堟牸锛�1锛氬悎鏍�
+ **/
+ private Integer testState;
+
+
+ private Integer state;
+
+ @TableField(fill = FieldFill.INSERT)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date updateTime;
+
+ /**
+ * 鍏宠仈 璁惧id
+ **/
+ private Integer deviceId;
+
+ /**
+ * 鍏宠仈 鐢宠鍗昳d
+ **/
+ private Integer rawInspectId;
+
+ /**
+ * 鍏宠仈 妫�楠屽憳锛堢敤鎴穒d锛�
+ **/
+ private Integer userId;
+}
+
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/RawInspect.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/RawInspect.java
new file mode 100644
index 0000000..1902601
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/RawInspect.java
@@ -0,0 +1,106 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 鍘熸潗鏂欑敵璇疯〃
+ * @TableName raw_inspect
+ */
+@TableName(value ="raw_inspect")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class RawInspect implements Serializable {
+ /**
+ * 妫�楠屽崟id
+ */
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 鍘熸潗鏂欑紪鐮�
+ */
+ private String code;
+
+ /**
+ * 鍘熸潗鏂欏悕绉�
+ */
+ private String name;
+
+ /**
+ * 鍨嬪彿瑙勬牸
+ */
+ private String specifications;
+
+ /**
+ * 鍗曚綅
+ */
+ private String unit;
+
+ /**
+ * 鏁伴噺
+ */
+ private Integer number;
+
+ /**
+ * 妫�楠岀姸鎬� 0锛氭湭妫�楠岋紱1锛氬凡妫�楠�
+ */
+ private Integer insState;
+
+ /**
+ * 鍚堟牸鐘舵�� 0锛氫笉鍚堟牸锛�1锛氬悎鏍�
+ */
+ private Integer judgeState;
+
+ /**
+ * 妫�楠屾棩鏈�
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date insTime;
+
+ /**
+ * 鎶ユ浜猴紙褰撳墠鐢ㄦ埛鍚嶏級
+ */
+ private String userName;
+
+ /**
+ *
+ */
+ private Integer state;
+
+ /**
+ * 鎶ユ鏃ユ湡
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date createTime;
+
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date updateTime;
+
+ /**
+ * 鏉ユ枡鏃ユ湡
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date formTime;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto.java
new file mode 100644
index 0000000..7799a21
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.pojo.dto;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class InspectionItemDto {
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鐖跺悕绉�")
+ private String father;
+
+ @ApiModelProperty(value = "瀛愭暟鎹�")
+ private List<InspectionItemDto2> children;
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto2.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto2.java
new file mode 100644
index 0000000..d9ad4d5
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/InspectionItemDto2.java
@@ -0,0 +1,34 @@
+package com.yuanchu.mom.pojo.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class InspectionItemDto2 {
+ @ApiModelProperty(value = "涓婚敭")
+ private Integer id;
+
+ @ApiModelProperty(value = "椤圭洰鍚嶇О")
+ private String name;
+
+ @ApiModelProperty(value = "鍗曚綅")
+ private String unit;
+
+ @ApiModelProperty(value = "鏍囧噯鍊�")
+ private String required;
+
+ @ApiModelProperty(value = "鍐呮帶鍊�")
+ private String internal;
+
+ @ApiModelProperty(value = "妫�楠屽��")
+ private String inspectionValue;
+
+ @ApiModelProperty(value = "璇曢獙璁惧")
+ private Integer deviceId;
+
+ @ApiModelProperty(value = "缁撹")
+ private Integer result;
+
+ @ApiModelProperty(value = "妫�楠屼汉")
+ private String username;
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/UpdateInspectionItemDto.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/UpdateInspectionItemDto.java
new file mode 100644
index 0000000..71fe288
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/dto/UpdateInspectionItemDto.java
@@ -0,0 +1,23 @@
+package com.yuanchu.mom.pojo.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class UpdateInspectionItemDto {
+
+ @ApiModelProperty(value = "妫�楠屽�糏d锛氭牴鎹繖涓狪D淇敼", required = true, example = "5079")
+ String inspectionItemId;
+
+ @ApiModelProperty(value = "鏍囧噯鍊�", required = true, example = ">=1")
+ private String required;
+
+ @ApiModelProperty(value = "鍐呮帶鍊�", required = true, example = ">2")
+ private String internal;
+
+ @ApiModelProperty(value = "妫�楠屽��", required = true, example = "3")
+ String inspectionValue;
+
+ @ApiModelProperty(value = "璇曢獙璁惧", required = true, example = "1")
+ String deviceId;
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/vo/RawInsProductVo.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/vo/RawInsProductVo.java
new file mode 100644
index 0000000..f85aa74
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/vo/RawInsProductVo.java
@@ -0,0 +1,66 @@
+package com.yuanchu.mom.pojo.vo;
+
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Data;
+import java.io.Serializable;
+
+
+@Data
+public class RawInsProductVo implements Serializable {
+
+ /**
+ * 椤圭洰鍚嶇О
+ **/
+ @JsonSerialize
+ private String name;
+
+ /**
+ * 鍗曚綅
+ **/
+ @JsonSerialize
+ private String unit;
+
+ /**
+ * 鏍囧噯鍊�
+ **/
+ @JsonSerialize
+ private String required;
+
+ /**
+ * 鍐呮帶鍊�
+ **/
+ @JsonSerialize
+ private String internal;
+
+ /**
+ * 妫�娴嬪��
+ **/
+ @JsonSerialize
+ private String testValue;
+
+ /**
+ * 缁撹 0锛氫笉鍚堟牸锛�1锛氬悎鏍�
+ **/
+ @JsonSerialize
+ private Integer testState;
+
+
+ /**
+ * 璁惧鍚嶇О
+ **/
+ @JsonSerialize
+ private String deviceName;
+
+ /**
+ * 鍏宠仈 鐢宠鍗昳d
+ **/
+ @JsonSerialize
+ private Integer rawInspectId;
+
+ /**
+ * 妫�楠屽憳
+ **/
+ @JsonSerialize
+ private String userName;
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/vo/RawInspectVo.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/vo/RawInspectVo.java
new file mode 100644
index 0000000..ce5224f
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/vo/RawInspectVo.java
@@ -0,0 +1,81 @@
+package com.yuanchu.mom.pojo.vo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.yuanchu.mom.pojo.RawInsProduct;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+//鏌ヨ妫�楠屽崟璇︽儏(妫�楠屽熀鏈俊鎭互鍙婃楠岄」鐩俊鎭�)
+public class RawInspectVo implements Serializable {
+
+ /* 妫�楠岃鎯� */
+ /**
+ * 鏉ユ枡鏃ユ湡
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date formTime;
+
+ /**
+ * 鍨嬪彿瑙勬牸
+ */
+ @JsonSerialize
+ private String specifications;
+
+ /**
+ * 鍘熸潗鏂欑紪鐮�
+ */
+ @JsonSerialize
+ private String code;
+
+ /**
+ * 鍘熸潗鏂欏悕绉�
+ */
+ @JsonSerialize
+ private String name;
+
+ /**
+ * 鎶ユ鏃ユ湡
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date createTime;
+
+ /**
+ * 鍗曚綅
+ */
+ @JsonSerialize
+ private String unit;
+
+ /**
+ * 鏁伴噺
+ */
+ @JsonSerialize
+ private Integer number;
+
+ /**
+ * 鎶ユ浜猴紙褰撳墠鐢ㄦ埛鍚嶏級
+ */
+ @JsonSerialize
+ private String userName;
+
+ /* 妫�楠岄」鐩� */
+ @JsonSerialize
+ private List<RawInsProductVo> rawInsProducts;
+
+ /* 妫�楠岀粨璁� */
+ /**
+ * 鍚堟牸鐘舵�� 0锛氫笉鍚堟牸锛�1锛氬悎鏍�
+ */
+ @JsonSerialize
+ private Integer judgeState;
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/FinishedInspectService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/FinishedInspectService.java
new file mode 100644
index 0000000..9d3f22c
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/FinishedInspectService.java
@@ -0,0 +1,27 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.FinishedInspect;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-08-01
+ */
+public interface FinishedInspectService extends IService<FinishedInspect> {
+
+ @Transactional(rollbackFor = Exception.class)
+ Integer addProcessInspectionSheet(FinishedInspect finishedInspect);
+
+ Integer inspectionConclusion(Integer finishedInspectId, Integer result);
+
+ IPage<Map<String, Object>> selectFinishedInspectPage(Page<Object> page, Integer inspectResult, String inspectDate, String inspectUsername);
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InspectUnacceptedService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InspectUnacceptedService.java
new file mode 100644
index 0000000..f2c2639
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InspectUnacceptedService.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.InspectUnaccepted;
+
+import java.util.Map;
+
+/**
+ * 涓嶅悎鏍煎搧妫�楠岃〃(InspectUnaccepted)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author zss
+ * @since 2023-08-07 10:04:01
+ */
+public interface InspectUnacceptedService extends IService<InspectUnaccepted> {
+
+ /**
+ *鏌ヨ鍘熸潗鏂欎笉鍚堟牸鍝佹楠屽崟鍒楄〃
+ * @param
+ * @param formTime
+ * @param dealState
+ * @return
+ */
+ IPage<Map<String, Object>> selectUnRawInspectsList(Page<Object> page, String formTime, Integer dealState, String supplier,Integer type);
+
+}
+
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InspectionItemService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InspectionItemService.java
new file mode 100644
index 0000000..ecf667f
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InspectionItemService.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.InspectionItem;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.dto.InspectionItemDto;
+import com.yuanchu.mom.pojo.dto.UpdateInspectionItemDto;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-08-01
+ */
+public interface InspectionItemService extends IService<InspectionItem> {
+
+ void insertList(Integer finishInspectId, List<Map<String, Object>> list);
+
+ List<InspectionItemDto> selectInspectionItem(Integer finishInspectId);
+
+ Integer addProcessInspectionSheet(String username, UpdateInspectionItemDto updateInspectionItemDto);
+
+ List<Map<String, Object>> selectDeviceIdAndName();
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/RawInsProductService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/RawInsProductService.java
new file mode 100644
index 0000000..58e11ac
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/RawInsProductService.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.RawInsProduct;
+
+/**
+ * 鍘熸潗鏂欑敵璇峰崟涓殑椤圭洰鍒楄〃(RawInsProduct)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author zss
+ * @since 2023-08-01 13:52:31
+ */
+public interface RawInsProductService extends IService<RawInsProduct> {
+
+ /**
+ * 鏇存柊妫�楠岄」鐩�
+ * @param userId
+ * @param rawInsProduct
+ */
+ void updaterawInsProduct(int userId, RawInsProduct rawInsProduct);
+}
+
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/RawInspectService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/RawInspectService.java
new file mode 100644
index 0000000..994e554
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/RawInspectService.java
@@ -0,0 +1,36 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.RawInspect;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.vo.RawInspectVo;
+
+import java.util.Map;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恟aw_inspect(鍘熸潗鏂欑敵璇疯〃)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2023-07-31 14:43:15
+*/
+public interface RawInspectService extends IService<RawInspect> {
+ Map<String, Object> selectRawInspectsList(int pageSize, int countSize, String formTime, String createTime, int insState, int judgeState);
+
+ /**
+ * 鏍规嵁妫�楠屽崟id鏌ヨ鍘熸潗鏂欐楠屽崟璇︽儏
+ * @param id
+ * @return
+ */
+ RawInspectVo selectRawInspectsListById(Integer id);
+
+ /**
+ * 鏇存柊妫�楠岀姸鎬�
+ * @param id
+ */
+ boolean updateRawInspectsById(Integer id);
+
+ /**
+ * 鏂板妫�楠屽崟
+ * @param userName
+ * @param rawInspect
+ */
+ Integer addRawInspects(String userName, RawInspect rawInspect);
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/FinishedInspectServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/FinishedInspectServiceImpl.java
new file mode 100644
index 0000000..9b74a67
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/FinishedInspectServiceImpl.java
@@ -0,0 +1,83 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.mapper.InspectUnacceptedMapper;
+import com.yuanchu.mom.pojo.FinishedInspect;
+import com.yuanchu.mom.mapper.FinishedInspectMapper;
+import com.yuanchu.mom.pojo.InspectUnaccepted;
+import com.yuanchu.mom.service.FinishedInspectService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.service.InspectionItemService;
+import com.yuanchu.mom.service.ProductService;
+import com.yuanchu.mom.service.SpecificationsService;
+import com.yuanchu.mom.utils.MyUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-08-01
+ */
+@Service
+public class FinishedInspectServiceImpl extends ServiceImpl<FinishedInspectMapper, FinishedInspect> implements FinishedInspectService {
+
+ @Resource
+ private FinishedInspectMapper finishedInspectMapper;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private InspectionItemService inspectionItemService;
+
+ @Resource
+ InspectUnacceptedMapper inspectUnacceptedMapper;
+
+ @Override
+ public Integer addProcessInspectionSheet(FinishedInspect finishedInspect) {
+ finishedInspect.setType(0);
+ int insert = finishedInspectMapper.insert(finishedInspect);
+ if (insert == 1){
+ List<Map<String, Object>> maps = productService.selectProductList(finishedInspect.getSpecificationsId());
+ inspectionItemService.insertList(finishedInspect.getId(), maps);
+ return insert;
+ }
+ return 0;
+ }
+
+ @Override
+ public Integer inspectionConclusion(Integer finishedInspectId, Integer result) {
+ //鏇存柊妫�楠屽崟閲岄潰鐨勬楠岀粨璁�
+ LambdaUpdateWrapper<FinishedInspect> updateWrapper = new LambdaUpdateWrapper<>();
+ updateWrapper.eq(FinishedInspect::getId, finishedInspectId);
+ updateWrapper.set(FinishedInspect::getResult, result);
+ finishedInspectMapper.update(new FinishedInspect(), updateWrapper);
+ //濡傛灉妫�楠岀粨璁轰负涓嶅悎鏍�,鍒欓渶瑕佹柊澧炰笉鍚堟牸妫�楠屽崟
+ FinishedInspect finishedInspect = finishedInspectMapper.selectById(finishedInspectId);
+ if (result == 0) {
+ InspectUnaccepted inspectUnaccepted = InspectUnaccepted.builder()
+ .reason(finishedInspect.getProjectName() + "涓嶅悎鏍�") //鏆備笖瀹氫箟涓哄伐绋嬪悕绉颁笉鍚堟牸
+ .rawInspectId(finishedInspectId)
+ .type(finishedInspect.getType())
+ .supplier(finishedInspect.getCustomerName())
+ .build();
+ inspectUnacceptedMapper.insert(inspectUnaccepted);
+ }
+ return 1;
+ }
+
+ @Override
+ public IPage<Map<String, Object>> selectFinishedInspectPage(Page<Object> page, Integer inspectResult, String inspectDate, String inspectUsername) {
+ return finishedInspectMapper.selectFinishedInspectPage(page, inspectResult, inspectDate, inspectUsername);
+ }
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InspectUnacceptedServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InspectUnacceptedServiceImpl.java
new file mode 100644
index 0000000..e4b7c36
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InspectUnacceptedServiceImpl.java
@@ -0,0 +1,49 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.InspectUnacceptedMapper;
+import com.yuanchu.mom.pojo.InspectUnaccepted;
+import com.yuanchu.mom.service.InspectUnacceptedService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 涓嶅悎鏍煎搧妫�楠岃〃(InspectUnaccepted)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author zss
+ * @since 2023-08-07 10:04:01
+ */
+@Service
+public class InspectUnacceptedServiceImpl extends ServiceImpl<InspectUnacceptedMapper, InspectUnaccepted> implements InspectUnacceptedService {
+
+ @Resource
+ InspectUnacceptedMapper inspectUnacceptedMapper;
+
+ //鏌ヨ鍘熸潗鏂欎笉鍚堟牸鍝佹楠屽崟鍒楄〃
+ @Override
+ public IPage<Map<String, Object>> selectUnRawInspectsList(Page<Object> page, String formTime, Integer dealState, String supplier,Integer type) {
+ if (type==null){
+ type=2;//涓虹┖鏄師鏉愭枡2
+ }
+ switch (type) {
+ case 2:
+ //2鏄煡璇㈠師鏉愭枡涓嶅悎鏍煎搧
+ return inspectUnacceptedMapper.selectUnRawInspectsList(page,formTime,dealState,supplier,0);
+ case 1:
+ //1鏄煡璇㈣繃绋嬩笉鍚堟牸鍝�
+ return inspectUnacceptedMapper.selectInsList(page,formTime,dealState,supplier,1);
+ case 0:
+ //0鏄煡璇㈡垚鍝佷笉鍚堟牸鍝�
+ return inspectUnacceptedMapper.selectInsList(page,formTime,dealState,supplier,2);
+ default:
+ return null;
+ }
+ }
+}
+
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InspectionItemServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InspectionItemServiceImpl.java
new file mode 100644
index 0000000..e0a13f1
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InspectionItemServiceImpl.java
@@ -0,0 +1,130 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.yuanchu.mom.pojo.Device;
+import com.yuanchu.mom.pojo.InspectionItem;
+import com.yuanchu.mom.mapper.InspectionItemMapper;
+import com.yuanchu.mom.pojo.dto.InspectionItemDto;
+import com.yuanchu.mom.pojo.dto.UpdateInspectionItemDto;
+import com.yuanchu.mom.service.DeviceService;
+import com.yuanchu.mom.service.InspectionItemService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.service.SpecificationsService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.utils.MyUtil;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-08-01
+ */
+@Service
+public class InspectionItemServiceImpl extends ServiceImpl<InspectionItemMapper, InspectionItem> implements InspectionItemService {
+
+ @Resource
+ private InspectionItemMapper inspectionItemMapper;
+
+ @Autowired
+ private DeviceService deviceService;
+
+ @Override
+ public void insertList(Integer finishInspectId, List<Map<String, Object>> list) {
+ List<InspectionItem> list1 = new ArrayList<>();
+ for (Map<String, Object> map : list){
+ try {
+ InspectionItem inspectionItem = JackSonUtil.unmarshal(JackSonUtil.marshal(map), InspectionItem.class);
+ inspectionItem.setFinishInspectId(finishInspectId);
+ list1.add(inspectionItem);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ inspectionItemMapper.insertBatchSomeColumn(list1);
+ }
+
+ @Override
+ public List<InspectionItemDto> selectInspectionItem(Integer finishInspectId) {
+ return inspectionItemMapper.selectInspectionItem(finishInspectId);
+ }
+
+ @Override
+ public Integer addProcessInspectionSheet(String username, UpdateInspectionItemDto updateInspectionItemDto) {
+ LambdaUpdateWrapper<InspectionItem> wrapper = new LambdaUpdateWrapper<>();
+ wrapper.eq(InspectionItem::getId, updateInspectionItemDto.getInspectionItemId());
+ wrapper.set(InspectionItem::getInspectionValue, updateInspectionItemDto.getInspectionValue());
+ wrapper.set(InspectionItem::getDeviceId, updateInspectionItemDto.getDeviceId());
+ int i = checkValues(updateInspectionItemDto.getRequired(), updateInspectionItemDto.getInternal(), updateInspectionItemDto.getInspectionValue());
+ wrapper.set(InspectionItem::getResult, i);
+ wrapper.set(InspectionItem::getUsername, username);
+ int update = inspectionItemMapper.update(new InspectionItem(), wrapper);
+ if (update > 0){
+ return i;
+ }
+ return 2;
+ }
+
+ @Override
+ public List<Map<String, Object>> selectDeviceIdAndName() {
+ LambdaQueryWrapper<Device> wrapper = new LambdaQueryWrapper<>();
+ wrapper.select(Device::getId, Device::getName);
+ return deviceService.listMaps(wrapper);
+ }
+
+ /*鍒ゆ柇妫�娴嬪�兼槸鍚︽弧瓒虫爣鍑嗗�煎拰鍐呮帶鍊肩殑瑕佹眰,濡傛灉涓嶆弧瓒冲垯妫�楠岀粨璁轰负涓嶅悎鏍�*/
+ private int checkValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
+ boolean isStandardValueSatisfied = isValueSatisfied(standardValueStr, detectionValueStr);
+ boolean isControlValueSatisfied = isValueSatisfied(controlValueStr, detectionValueStr);
+
+ if (isStandardValueSatisfied && isControlValueSatisfied) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+ private boolean isValueSatisfied(String valueStr, String detectionValueStr) {
+ String substring = valueStr.substring(1, 2);
+ if (substring.equals("=")) {
+ String operator = valueStr.substring(0, 2);
+ Double standardValue = Double.parseDouble(valueStr.substring(2));
+ Double detectionValue = Double.parseDouble(detectionValueStr);
+ switch (operator) {
+ case ">=":
+ return detectionValue >= standardValue;
+ case "<=":
+ return detectionValue <= standardValue;
+ default:
+ return false;
+ }
+ } else {
+ String operator = valueStr.substring(0, 1);
+ Double standardValue = Double.parseDouble(valueStr.substring(1));
+ Double detectionValue = Double.parseDouble(detectionValueStr);
+ switch (operator) {
+ case ">":
+ return detectionValue > standardValue;
+ case "<":
+ return detectionValue < standardValue;
+ case "=":
+ return detectionValue.equals(standardValue);
+ case "鈮�":
+ return detectionValue >= standardValue;
+ case "鈮�":
+ return detectionValue <= standardValue;
+ default:
+ return false;
+ }
+ }
+ }
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/RawInsProductServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/RawInsProductServiceImpl.java
new file mode 100644
index 0000000..1d85c3e
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/RawInsProductServiceImpl.java
@@ -0,0 +1,89 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.RawInsProductMapper;
+import com.yuanchu.mom.pojo.RawInsProduct;
+import com.yuanchu.mom.service.RawInsProductService;
+import com.yuanchu.mom.utils.MyUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * 鍘熸潗鏂欑敵璇峰崟涓殑椤圭洰鍒楄〃(RawInsProduct)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author zss
+ * @since 2023-08-01 13:52:31
+ */
+@Service
+public class RawInsProductServiceImpl extends ServiceImpl<RawInsProductMapper, RawInsProduct> implements RawInsProductService {
+
+ @Resource
+ RawInsProductMapper rawInsProductMapper;
+
+ //鏇存柊妫�楠岄」鐩�
+ @Override
+ public void updaterawInsProduct(int userId, RawInsProduct rawInsProduct) {
+ //璧嬪�兼楠屽憳id
+ rawInsProduct.setUserId(userId);
+ //鍒ゆ柇妫�娴嬪�兼槸鍚︽弧瓒虫爣鍑嗗�煎拰鍐呮帶鍊肩殑瑕佹眰,濡傛灉涓嶆弧瓒冲垯妫�楠岀粨璁轰负涓嶅悎鏍�0
+ String testValue = rawInsProduct.getTestValue();//妫�楠屽��
+ String required = rawInsProduct.getRequired();//鏍囧噯鍊�
+ String internal = rawInsProduct.getInternal();//鍐呮帶鍊�
+ rawInsProduct.setTestState(checkValues(required, internal, testValue));
+ //鏍规嵁妫�楠岄」鐩悕鍜屽叧鑱旂殑妫�楠屽崟id鏉ユ煡璇㈡楠岄」鐩殑鏁版嵁
+ LambdaUpdateWrapper<RawInsProduct> updateWrapper = new LambdaUpdateWrapper<>();
+ updateWrapper.eq(RawInsProduct::getRawInspectId, rawInsProduct.getRawInspectId())
+ .eq(RawInsProduct::getName, rawInsProduct.getName());
+ rawInsProductMapper.update(rawInsProduct, updateWrapper);
+ }
+
+ /*鍒ゆ柇妫�娴嬪�兼槸鍚︽弧瓒虫爣鍑嗗�煎拰鍐呮帶鍊肩殑瑕佹眰,濡傛灉涓嶆弧瓒冲垯妫�楠岀粨璁轰负涓嶅悎鏍�*/
+ private int checkValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
+ boolean isStandardValueSatisfied = isValueSatisfied(standardValueStr, detectionValueStr);
+ boolean isControlValueSatisfied = isValueSatisfied(controlValueStr, detectionValueStr);
+
+ if (isStandardValueSatisfied && isControlValueSatisfied) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+
+ private boolean isValueSatisfied(String valueStr, String detectionValueStr) {
+ String substring = valueStr.substring(1, 2);
+ if (substring.equals("=")) {
+ String operator = valueStr.substring(0, 2);
+ Double standardValue = Double.parseDouble(valueStr.substring(2));
+ Double detectionValue = Double.parseDouble(detectionValueStr);
+ switch (operator) {
+ case ">=":
+ return detectionValue >= standardValue;
+ case "<=":
+ return detectionValue <= standardValue;
+ default:
+ return false;
+ }
+ } else {
+ String operator = valueStr.substring(0, 1);
+ Double standardValue = Double.parseDouble(valueStr.substring(1));
+ Double detectionValue = Double.parseDouble(detectionValueStr);
+ switch (operator) {
+ case ">":
+ return detectionValue > standardValue;
+ case "鈮�":
+ return detectionValue >= standardValue;
+ case "鈮�":
+ return detectionValue <= standardValue;
+ case "<":
+ return detectionValue < standardValue;
+ case "=":
+ return detectionValue.equals(standardValue);
+ default:
+ return false;
+ }
+ }
+ }
+}
+
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/RawInspectServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/RawInspectServiceImpl.java
new file mode 100644
index 0000000..839e7ae
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/RawInspectServiceImpl.java
@@ -0,0 +1,188 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.*;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.pojo.vo.RawInsProductVo;
+import com.yuanchu.mom.pojo.vo.RawInspectVo;
+import com.yuanchu.mom.service.*;
+import com.yuanchu.mom.utils.MyUtil;
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author Administrator
+ * @description 閽堝琛ㄣ�恟aw_inspect(鍘熸潗鏂欑敵璇疯〃)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2023-07-31 14:43:15
+ */
+@Service
+public class RawInspectServiceImpl extends ServiceImpl<RawInspectMapper, RawInspect>
+ implements RawInspectService {
+
+ @Resource
+ RawInspectMapper rawInspectMapper;
+
+ @Resource
+ RawInsProductMapper rawInsProductMapper;
+
+ @Resource
+ RawInsProductService rawInsProductService;
+
+ @Resource
+ InspectUnacceptedMapper inspectUnacceptedMapper;
+
+ @Resource
+ DeviceService deviceService;
+
+ @Resource
+ MaterialMapper materialMapper;
+
+ @Resource
+ UserService userService;
+
+ @Resource
+ SpecificationsService specificationsService;
+
+ @Resource
+ StandardService standardService;
+
+ @Resource
+ ProductMapper productMapper;
+
+ @Override
+ public Map<String, Object> selectRawInspectsList(int pageSize, int countSize, String formTime, String createTime, int insState, int judgeState) {
+ Map<String, Object> map = new HashMap<>();
+ map.put("count", rawInspectMapper.selectCount(new QueryWrapper<RawInspect>().eq("state", 1)));
+ map.put("data", rawInspectMapper.selectRawInspectsByLimit((pageSize - 1) * countSize, pageSize * countSize, formTime, createTime, insState, judgeState));
+ return map;
+ }
+
+ //鏍规嵁妫�楠屽崟id鏌ヨ鍘熸潗鏂欐楠屽崟璇︽儏
+ @Override
+ public RawInspectVo selectRawInspectsListById(Integer id) {
+ //灏嗘楠屽崟鍩烘湰淇℃伅鏌ヨ鍑烘潵骞跺皝瑁呭埌RawInspectVo瀵硅薄涓�
+ RawInspect rawInspect = rawInspectMapper.selectById(id);
+ RawInspectVo rawInspectVo = new RawInspectVo();
+ BeanUtils.copyProperties(rawInspect, rawInspectVo);
+ //鏌ヨ妫�楠屽崟閲岄潰鐨勬楠岄」鐩�,骞跺皝瑁呭埌RawInspectVo瀵硅薄涓�
+ LambdaQueryWrapper<RawInsProduct> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(RawInsProduct::getRawInspectId, id);
+ List<RawInsProduct> rawInsProducts = rawInsProductMapper.selectList(queryWrapper);
+ //杩欓噷鏌ュ埌鐨勮澶噄d鍜屾楠屽憳id瑕佹煡璇㈠悕绉�
+ List<RawInsProductVo> rawInsProductVos = rawInsProducts.stream().map(rawInsProduct -> {
+ //灏嗕竴涓璞$殑鍊艰祴鍊肩粰鍙︿竴涓璞�
+ RawInsProductVo rawInsProductVo = new RawInsProductVo();
+ BeanUtils.copyProperties(rawInsProduct, rawInsProductVo);
+ //鑾峰彇璁惧鍚�(鍓嶆彁鏄鏋滃瓨鍦�)
+ if (rawInsProduct.getDeviceId() != null) {
+ String deviceName = deviceService.getDeviceNameById(rawInsProduct.getDeviceId());
+ rawInsProductVo.setDeviceName(deviceName);
+ }
+ //鑾峰彇鐢ㄦ埛鍚�(鍓嶆彁鏄鏋滃瓨鍦�)
+ if (rawInsProduct.getUserId() != null) {
+ String userName = userService.selectNameById(rawInsProduct.getUserId());
+ rawInsProductVo.setUserName(userName);
+ }
+ return rawInsProductVo;
+ }).collect(Collectors.toList());
+ rawInspectVo.setRawInsProducts(rawInsProductVos);
+ return rawInspectVo;
+ }
+
+ //鏇存柊妫�楠岀姸鎬�(涓婃姤)
+ @Override
+ public boolean updateRawInspectsById(Integer id) {
+ //鏇存柊妫�楠屽崟閲岄潰鐨勬楠岀姸鎬佸拰妫�楠岀粨璁�
+ RawInspectVo rawInspectVo = selectRawInspectsListById(id);
+ RawInspect rawInspect = RawInspect.builder()
+ .id(id)
+ .insState(1)
+ .insTime(new Date())
+ .judgeState(rawInspectVo.getJudgeState())
+ .build();
+ rawInspectMapper.updateById(rawInspect);
+ //濡傛灉妫�楠岀粨璁轰负涓嶅悎鏍�,鍒欓渶瑕佹柊澧炰笉鍚堟牸妫�楠屽崟
+ if (rawInspectVo.getJudgeState() == 0) {
+ InspectUnaccepted rawUnaccepted = InspectUnaccepted.builder()
+ .reason(rawInspectVo.getName() + "涓嶅悎鏍�") //鏆備笖瀹氫箟涓哄師鏉愭枡涓嶅悎鏍�
+ .rawInspectId(id)
+ .type(2) //绫诲瀷涓哄師鏉愭枡
+ .build();
+ inspectUnacceptedMapper.insert(rawUnaccepted);
+ }
+ return true;
+ }
+
+
+ //鏂板妫�楠屽崟
+ @Override
+ public Integer addRawInspects(String userName, RawInspect rawInspect) {
+ rawInspect.setUserName(userName);
+ //鏂板妫�楠屽崟
+ rawInspectMapper.insert(rawInspect);
+ //鑾峰彇鐗╂枡id
+ Material material = materialMapper.selectOne(Wrappers.<Material>query()
+ .eq("name", rawInspect.getName())
+ .eq("code", rawInspect.getCode()));
+ //鑾峰彇瑙勬牸鍚嶇О鍜屽瀷鍙峰悕绉�
+ String specification = rawInspect.getSpecifications();
+ String[] strings = specification.split("-");
+ String stName = strings[0];//瑙勬牸鍚嶇О
+ String spName = strings[1];//鍨嬪彿鍚嶇О
+ //鑾峰彇瑙勬牸id
+ Standard standard = standardService.getOne(Wrappers.<Standard>query()
+ .eq("name", stName)
+ .eq("material_id", material.getId()));
+ //鑾峰彇鍨嬪彿id
+ Specifications specifications = specificationsService.selectSpIdByname(standard.getId(), spName);
+ //鏍规嵁鍨嬪彿id鏌ヨ椤圭洰淇℃伅
+ List<Product> productList = productMapper.selectList(Wrappers.<Product>query().eq("specifications_id", specifications.getId()));
+ ArrayList<RawInsProduct> list = new ArrayList<>();
+ for (Product product : productList) {
+ RawInsProduct rawInsProduct = RawInsProduct.builder()
+ .name(product.getName())
+ .unit(product.getUnit())
+ .required(product.getRequired())
+ .internal(product.getInternal())
+ .rawInspectId(rawInspect.getId())
+ .build();
+ list.add(rawInsProduct);
+ }
+ //妫�楠岄」鐩壒閲忔坊鍔�
+ rawInsProductService.saveBatch(list);
+ return rawInspect.getId();
+ }
+
+ //鍒ゆ柇鏁扮粍鏄惁鍖呭惈0
+ private static boolean containsZero(Object[] array) {
+ for (Object num : array) {
+ if (num.equals(0)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ //鍒ゆ柇鏁扮粍鏄惁鍏ㄩ儴涓�1
+ private static boolean allOnes(Object[] array) {
+ for (Object num : array) {
+ if (!num.equals(1)) {
+ return false;
+ }
+ }
+ return true;
+ }
+}
+
+
+
+
diff --git a/inspect-server/src/main/resources/mapper/FinishedInspectMapper.xml b/inspect-server/src/main/resources/mapper/FinishedInspectMapper.xml
new file mode 100644
index 0000000..643181e
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/FinishedInspectMapper.xml
@@ -0,0 +1,21 @@
+<?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.yuanchu.mom.mapper.FinishedInspectMapper">
+
+ <select id="selectFinishedInspectPage" resultType="map">
+ SELECT f.`id`, f.`order_number`, f.`customer_name`, f.`project_name`, f.`quality_traceability`, f.`material`, f.`specifications_model`, f.`unit`,
+ f.`quantity`, u.`name`, DATE_FORMAT(f.`create_time`, '%Y-%m-%d') detectionPeriod, f.`result`
+ FROM finished_inspect f, `user` u
+ WHERE f.`user_id` = u.`id`
+ AND f.`state` = 1
+ <if test="inspectResult != null and inspectResult != ''">
+ AND f.result = #{inspectResult}
+ </if>
+ <if test="inspectDate != null and inspectDate != ''">
+ AND DATE_FORMAT(f.`create_time`, '%Y-%m-%d') = #{inspectDate}
+ </if>
+ <if test="inspectUsername != null and inspectUsername != ''">
+ AND u.`name` LIKE CONCAT('%',#{inspectUsername},'%')
+ </if>
+ </select>
+</mapper>
diff --git a/inspect-server/src/main/resources/mapper/InspectUnacceptedMapper.xml b/inspect-server/src/main/resources/mapper/InspectUnacceptedMapper.xml
new file mode 100644
index 0000000..4cd0d51
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/InspectUnacceptedMapper.xml
@@ -0,0 +1,68 @@
+<?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.yuanchu.mom.mapper.InspectUnacceptedMapper">
+ <select id="selectUnRawInspectsList" resultType="java.util.Map">
+ select DATE_FORMAT(form_time, '%Y-%m-%d') '鏉ユ枡鏃ユ湡',
+ supplier,
+ reason,
+ code,
+ name,
+ specifications,
+ unit,
+ number,
+ DATE_FORMAT(ri.create_time, '%Y-%m-%d') '鎶ユ鏃ユ湡',
+ user_name,
+ DATE_FORMAT(ins_time, '%Y-%m-%d') '妫�楠屾棩鏈�',
+ deal_state,
+ deal_reasult,
+ DATE_FORMAT(deal_time, '%Y-%m-%d') '澶勭悊鏃ユ湡'
+ from mom_ocean.raw_inspect ri inner join mom_ocean.inspect_unaccepted ru on ri.id = ru.raw_inspect_id
+ <if test="dealState!=null">
+ where deal_state=#{dealState}
+ </if>
+ <if test="formTime!=null">
+ and form_time=#{formTime}
+ </if>
+ <if test="supplier!=null">
+ and supplier=#{supplier}
+ </if>
+ <if test="type!=null">
+ and ru.type=#{type}
+ </if>
+ and ru.state=1
+ </select>
+ <select id="selectInsList" resultType="java.util.Map">
+ select DATE_FORMAT(fi.create_time, '%Y-%m-%d') '鏉ユ枡鏃ユ湡',
+ supplier,
+ reason,
+ material_code,
+ name,
+ specifications_model,
+ unit,
+ quantity,
+ DATE_FORMAT(fi.create_time, '%Y-%m-%d') '鎶ユ鏃ユ湡',
+ u.name,
+ DATE_FORMAT(fi.update_time, '%Y-%m-%d') '妫�楠屾棩鏈�',
+ deal_state,
+ deal_reasult,
+ DATE_FORMAT(deal_time, '%Y-%m-%d') '澶勭悊鏃ユ湡'
+ from mom_ocean.inspect_unaccepted ru,
+ mom_ocean.finished_inspect fi ,
+ mom_ocean.user u
+ where fi.id = ru.raw_inspect_id
+ and fi.user_id=u.id
+ <if test="dealState!=null">
+ and deal_state=#{dealState}
+ </if>
+ <if test="formTime!=null">
+ and fi.create_time=#{formTime}
+ </if>
+ <if test="supplier!=null">
+ and supplier=#{supplier}
+ </if>
+ <if test="type!=null">
+ and ru.type=#{type}
+ </if>
+ and ru.state=1
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/inspect-server/src/main/resources/mapper/InspectionItemMapper.xml b/inspect-server/src/main/resources/mapper/InspectionItemMapper.xml
new file mode 100644
index 0000000..4ee7346
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/InspectionItemMapper.xml
@@ -0,0 +1,27 @@
+<?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.yuanchu.mom.mapper.InspectionItemMapper">
+
+ <resultMap id="selectInspectionItemMap" type="inspectionItemDto">
+ <id property="father" column="father"/>
+ <association property="children" resultMap="selectInspectionItemDto2Map"/>
+ </resultMap>
+
+ <resultMap id="selectInspectionItemDto2Map" type="inspectionItemDto2">
+ <id property="id" column="id"/>
+ <result property="name" column="name"/>
+ <result property="unit" column="unit"/>
+ <result property="internal" column="internal"/>
+ <result property="required" column="required"/>
+ <result property="inspectionValue" column="inspection_value"/>
+ <result property="deviceId" column="device_id"/>
+ <result property="result" column="result"/>
+ </resultMap>
+
+ <select id="selectInspectionItem" resultMap="selectInspectionItemMap">
+ SELECT i.`id`, IFNULL(i.`father`,i.`name`) father, i.`name`, i.`unit`, i.`internal`, i.`required`, i.`inspection_value`, i.`device_id`, i.`result`
+ FROM inspection_item i
+ WHERE i.`finish_inspect_id` = #{finishInspectId}
+ AND i.`state` = 1
+ </select>
+</mapper>
diff --git a/inspect-server/src/main/resources/mapper/RawInsProductMapper.xml b/inspect-server/src/main/resources/mapper/RawInsProductMapper.xml
new file mode 100644
index 0000000..dd43f5e
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/RawInsProductMapper.xml
@@ -0,0 +1,4 @@
+<?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.yuanchu.mom.mapper.RawInsProductMapper">
+</mapper>
\ No newline at end of file
diff --git a/inspect-server/src/main/resources/mapper/RawInspectMapper.xml b/inspect-server/src/main/resources/mapper/RawInspectMapper.xml
new file mode 100644
index 0000000..f8bfd64
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/RawInspectMapper.xml
@@ -0,0 +1,41 @@
+<?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.yuanchu.mom.mapper.RawInspectMapper">
+
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.RawInspect">
+ <id property="id" column="id" jdbcType="INTEGER"/>
+ <result property="code" column="code" jdbcType="VARCHAR"/>
+ <result property="name" column="name" jdbcType="VARCHAR"/>
+ <result property="specifications" column="specifications" jdbcType="VARCHAR"/>
+ <result property="unit" column="unit" jdbcType="VARCHAR"/>
+ <result property="number" column="number" jdbcType="INTEGER"/>
+ <result property="insState" column="ins_state" jdbcType="INTEGER"/>
+ <result property="judgeState" column="judge_state" jdbcType="INTEGER"/>
+ <result property="insTime" column="ins_time" jdbcType="DATE"/>
+ <result property="userName" column="user_name" jdbcType="VARCHAR"/>
+ <result property="state" column="state" jdbcType="INTEGER"/>
+ <result property="createTime" column="create_time" jdbcType="DATE"/>
+ <result property="updateTime" column="update_time" jdbcType="DATE"/>
+ <result property="formTime" column="form_time" jdbcType="DATE"/>
+ </resultMap>
+ <select id="selectRawInspectsByLimit" resultType="com.yuanchu.mom.pojo.RawInspect">
+ select id, code, name, specifications, unit, number, ins_state, judge_state, ins_time, user_name, create_time, form_time
+ from raw_inspect
+ where state = 1
+ <if test="formTime!=null and formTime!=''">
+ and form_time = #{formTime}
+ </if>
+ <if test="createTime!=null and createTime!=''">
+ and create_time = #{createTime}
+ </if>
+ <if test="insState!=2">
+ and ins_state = #{insState}
+ </if>
+ <if test="judgeState!=2">
+ and judge_state = #{judgeState}
+ </if>
+ limit #{pageSize},#{countSize}
+ </select>
+</mapper>
diff --git a/inspect-server/src/test/java/com/yuanchu/mom/InspectServerApplicationTests.java b/inspect-server/src/test/java/com/yuanchu/mom/InspectServerApplicationTests.java
new file mode 100644
index 0000000..03d7150
--- /dev/null
+++ b/inspect-server/src/test/java/com/yuanchu/mom/InspectServerApplicationTests.java
@@ -0,0 +1,13 @@
+package com.yuanchu.mom;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class InspectServerApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/inventory-server/pom.xml b/inventory-server/pom.xml
new file mode 100644
index 0000000..cc61e2f
--- /dev/null
+++ b/inventory-server/pom.xml
@@ -0,0 +1,35 @@
+<?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">
+ <parent>
+ <artifactId>mom</artifactId>
+ <groupId>com.yuanchu.mom</groupId>
+ <version>1.0.0</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>inventory-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <name>inventory-server</name>
+ <description>inventory-server</description>
+ <packaging>jar</packaging>
+
+
+ <dependencies>
+ <!--鐢ㄦ埛妯″潡-->
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>user-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+
+ <!--鏍囧噯妯″潡-->
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>standard-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/controller/RepertoryController.java b/inventory-server/src/main/java/com/yuanchu/mom/controller/RepertoryController.java
new file mode 100644
index 0000000..25caf5b
--- /dev/null
+++ b/inventory-server/src/main/java/com/yuanchu/mom/controller/RepertoryController.java
@@ -0,0 +1,62 @@
+package com.yuanchu.mom.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.api.ApiController;
+
+import java.util.HashMap;
+import java.util.List;
+
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.service.RepertoryService;
+
+import javax.annotation.Resource;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 搴撳瓨琛�(Repertory)琛ㄦ帶鍒跺眰
+ *
+ * @author zss
+ * @since 2023-08-07 16:33:01
+ */
+@Api(tags = "搴撳瓨琛ㄦ帴鍙�")
+@RestController
+@RequestMapping("/repertory")
+public class RepertoryController {
+
+ @Autowired
+ private RepertoryService repertoryService;
+
+ @ApiOperation("鏌ヨ鎵�鏈夊簱瀛樺垪琛�")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "pageSize", value = "椤垫暟", dataTypeClass = Integer.class, required = true),
+ @ApiImplicitParam(name = "countSize", value = "鏉℃暟/椤�", dataTypeClass = Integer.class, required = true),
+ @ApiImplicitParam(name = "name", value = "浜у搧鍚嶇О", dataTypeClass = String.class),
+ @ApiImplicitParam(name = "specifications", value = "浜у搧鍨嬪彿", dataTypeClass = String.class),
+ @ApiImplicitParam(name = "time", value = "鍏ュ簱鏃ユ湡", dataTypeClass = String.class),
+ @ApiImplicitParam(name = "type", value = "绫诲瀷(涓虹┖=鍏ㄩ儴)", dataTypeClass = Integer.class)
+ })
+ @GetMapping("/selectAllRepertory")
+ public Result selectAllRepertory(int pageSize, int countSize, String name, String specifications, String time, Integer type) {
+ IPage<Map<String, Object>> repertoryPage = repertoryService.selectAllRepertory(new Page<Object>(pageSize, countSize), name, specifications, time, type);
+ Map<String, Object> map = new HashMap<>();
+ map.put("total", repertoryPage.getTotal());
+ map.put("row", repertoryPage.getRecords());
+ return Result.success(map);
+ }
+
+}
+
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/mapper/RepertoryMapper.java b/inventory-server/src/main/java/com/yuanchu/mom/mapper/RepertoryMapper.java
new file mode 100644
index 0000000..8d58883
--- /dev/null
+++ b/inventory-server/src/main/java/com/yuanchu/mom/mapper/RepertoryMapper.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.Repertory;
+
+import java.util.Map;
+
+/**
+ * 搴撳瓨琛�(Repertory)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author zss
+ * @since 2023-08-07 16:33:01
+ */
+public interface RepertoryMapper extends BaseMapper<Repertory> {
+
+ //鏌ヨ鎵�鏈夊簱瀛樺垪琛�
+ IPage<Map<String, Object>> selectAllRepertory(Page<Object> page, String name, String specifications, String time, Integer type);
+}
+
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/pojo/Repertory.java b/inventory-server/src/main/java/com/yuanchu/mom/pojo/Repertory.java
new file mode 100644
index 0000000..d552828
--- /dev/null
+++ b/inventory-server/src/main/java/com/yuanchu/mom/pojo/Repertory.java
@@ -0,0 +1,115 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.*;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * 搴撳瓨琛�(Repertory)琛ㄥ疄浣撶被
+ *
+ * @author zss
+ * @since 2023-08-07 16:33:01
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@Builder
+@TableName("repertory")
+public class Repertory implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 搴撳瓨id
+ **/
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 璁㈠崟缂栫爜
+ **/
+ private String orderCode;
+
+ /**
+ * 浜у搧缂栫爜
+ **/
+ private String code;
+
+ /**
+ * 浜у搧鍚嶇О
+ **/
+ private String name;
+
+ /**
+ * 鍨嬪彿瑙勬牸
+ **/
+ private String specifications;
+
+ /**
+ * 璇曢獙瑕佹眰
+ **/
+ private String requirements;
+
+ /**
+ * 宸ヨ壓鏂囦欢缂栧彿
+ **/
+ private String documentNumber;
+
+ /**
+ * 搴撲綅鍙�
+ **/
+ private Integer seat;
+
+ /**
+ * 鍗曚綅
+ **/
+ private String unit;
+
+ /**
+ * 鏁伴噺
+ **/
+ private Integer number;
+
+ /**
+ * 鍏ュ簱浜猴紙褰撳墠鐢ㄦ埛鍚嶏級
+ **/
+ private String userName;
+
+ /**
+ * ${column.comment}
+ **/
+ private Integer state;
+
+ /**
+ * 鍏ュ簱鏃ユ湡
+ **/
+ @TableField(fill = FieldFill.INSERT)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date createTime;
+
+ /**
+ * ${column.comment}
+ **/
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date updateTime;
+
+ /**
+ * 澶囨敞
+ **/
+ private String note;
+
+ /**
+ * 绫诲瀷 0:鎴愬搧;1:鍗婃垚鍝�
+ **/
+ private Integer type;
+}
+
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/RepertoryService.java b/inventory-server/src/main/java/com/yuanchu/mom/service/RepertoryService.java
new file mode 100644
index 0000000..54bec43
--- /dev/null
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/RepertoryService.java
@@ -0,0 +1,29 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.Repertory;
+
+import java.util.Map;
+
+/**
+ * 搴撳瓨琛�(Repertory)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author zss
+ * @since 2023-08-07 16:33:01
+ */
+public interface RepertoryService extends IService<Repertory> {
+
+ /**
+ *鏌ヨ鎵�鏈夊簱瀛樺垪琛�
+ * @param page
+ * @param name
+ * @param specifications
+ * @param time
+ * @param type
+ * @return
+ */
+ IPage<Map<String, Object>> selectAllRepertory(Page<Object> page, String name, String specifications, String time, Integer type);
+}
+
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/RepertoryServiceImpl.java b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/RepertoryServiceImpl.java
new file mode 100644
index 0000000..e2f095d
--- /dev/null
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/RepertoryServiceImpl.java
@@ -0,0 +1,32 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.RepertoryMapper;
+import com.yuanchu.mom.pojo.Repertory;
+import com.yuanchu.mom.service.RepertoryService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * 搴撳瓨琛�(Repertory)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author zss
+ * @since 2023-08-07 16:33:01
+ */
+@Service
+public class RepertoryServiceImpl extends ServiceImpl<RepertoryMapper, Repertory> implements RepertoryService {
+
+ @Resource
+ RepertoryMapper repertoryMapper;
+
+ //鏌ヨ鎵�鏈夊簱瀛樺垪琛�
+ @Override
+ public IPage<Map<String, Object>> selectAllRepertory(Page<Object> page, String name, String specifications, String time, Integer type) {
+ return repertoryMapper.selectAllRepertory(page,name,specifications,time,type);
+ }
+}
+
diff --git a/inventory-server/src/main/resources/mapper/RepertoryMapper.xml b/inventory-server/src/main/resources/mapper/RepertoryMapper.xml
new file mode 100644
index 0000000..a3c0b4f
--- /dev/null
+++ b/inventory-server/src/main/resources/mapper/RepertoryMapper.xml
@@ -0,0 +1,29 @@
+<?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.yuanchu.mom.mapper.RepertoryMapper">
+ <select id="selectAllRepertory" resultType="java.util.Map">
+ select name,
+ specifications,
+ code,
+ requirements,
+ order_code,
+ seat,
+ user_name,
+ DATE_FORMAT(create_time, '%Y-%m-%d') '鍏ュ簱鏃ユ湡',
+ note
+ from mom_ocean.repertory
+ where state=1
+ <if test="name!=null and name!=' '">
+ and name LIKE CONCAT('%',#{name},'%')
+ </if>
+ <if test="specifications!=null and specifications!=' '">
+ and specifications LIKE CONCAT('%',#{specifications},'%')
+ </if>
+ <if test="time!=null and time!=''">
+ and create_time=#{time}
+ </if>
+ <if test="type!=null and type!=''">
+ and type=#{type}
+ </if>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..a60f122
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,231 @@
+<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-parent</artifactId>
+ <version>2.7.3</version>
+ <relativePath/> <!-- lookup parent from repository -->
+ </parent>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>mom</artifactId>
+ <version>1.0.0</version>
+ <name>mom_ocean</name>
+ <description>mom_ocean</description>
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>framework</module>
+ <module>user-server</module>
+ <module>standard-server</module>
+ <module>inspect-server</module>
+ <module>system-run</module>
+ </modules>
+
+ <properties>
+ <java.version>1.8</java.version>
+ <log4j.version>1.2.17</log4j.version>
+ <mysql.version>8.0.28</mysql.version>
+ <jwt.version>4.4.0</jwt.version>
+ <swagger.version>3.0.0</swagger.version>
+ <knife4j-spring-ui.version>3.0.3</knife4j-spring-ui.version>
+ <druid.version>1.2.18</druid.version>
+ <mybatis-plus.version>3.4.0</mybatis-plus.version>
+ <openfeign.version>3.1.3</openfeign.version>
+ <feign-okhttp.version>11.0</feign-okhttp.version>
+ <shiro.version>1.5.3</shiro.version>
+
+ <!-- 鎵撳寘鍚庡鍑虹殑璺緞 -->
+ <package.path>${project.build.directory}/BLOG</package.path>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!--lombok-->
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ </dependency>
+
+ <!--mybatis-plus-->
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-boot-starter</artifactId>
+ </dependency>
+
+ <!--Swagger3-->
+ <dependency>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-boot-starter</artifactId>
+ <version>${swagger.version}</version>
+ </dependency>
+
+ <!--Swagger3-Ui缇庡寲-->
+ <dependency>
+ <groupId>com.github.xiaoymin</groupId>
+ <artifactId>knife4j-spring-ui</artifactId>
+ <version>${knife4j-spring-ui.version}</version>
+ </dependency>
+
+ <!--鍚庣娉ㄩ噴妫�楠屽伐鍏�-->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-validation</artifactId>
+ </dependency>
+ </dependencies>
+
+ <dependencyManagement>
+ <dependencies>
+ <!--log4j-->
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j.version}</version>
+ </dependency>
+
+ <!--mysql-->
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>${mysql.version}</version>
+ </dependency>
+
+ <!--鏁版嵁搴撹繛鎺ユ睜-->
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>druid</artifactId>
+ <version>${druid.version}</version>
+ </dependency>
+
+ <!--jwt-->
+ <dependency>
+ <groupId>com.auth0</groupId>
+ <artifactId>java-jwt</artifactId>
+ <version>${jwt.version}</version>
+ </dependency>
+
+ <!--mybatis-plus-->
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-boot-starter</artifactId>
+ <version>${mybatis-plus.version}</version>
+ </dependency>
+
+ <!--mybatis-plus浠g爜鐢熸垚鍣�-->
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-generator</artifactId>
+ <version>${mybatis-plus.version}</version>
+ </dependency>
+
+ <!--feign-->
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-starter-openfeign</artifactId>
+ <version>${openfeign.version}</version>
+ </dependency>
+
+ <!--okhttp-->
+ <dependency>
+ <groupId>io.github.openfeign</groupId>
+ <artifactId>feign-okhttp</artifactId>
+ <version>${feign-okhttp.version}</version>
+ </dependency>
+
+ <!--瀹夊叏妗嗘灦shiro-->
+ <dependency>
+ <groupId>org.apache.shiro</groupId>
+ <artifactId>shiro-spring-boot-starter</artifactId>
+ <version>${shiro.version}</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <build>
+ <plugins>
+ <!-- 涓婄嚎閮ㄧ讲 JAR鍚姩鍒嗙渚濊禆lib鍜岄厤缃� -->
+ <!-- 鎵撳寘jar -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <!-- 涓嶆墦鍖呰祫婧愭枃浠� -->
+ <excludes>
+ <exclude>*.**</exclude>
+ </excludes>
+ <archive>
+ <manifest>
+ <addClasspath>true</addClasspath>
+ <!-- MANIFEST.MF 涓� Class-Path 鍔犲叆鍓嶇紑 -->
+ <classpathPrefix>lib/</classpathPrefix>
+ <!-- jar鍖呬笉鍖呭惈鍞竴鐗堟湰鏍囪瘑 -->
+ <useUniqueVersions>false</useUniqueVersions>
+ <!-- 鎸囧畾鍏ュ彛绫� -->
+ <mainClass>com.yuanchu.mom.SystemRunApplication</mainClass>
+ </manifest>
+ <!-- 鎸囧畾閰嶇疆鏂囦欢鐩綍锛岃繖鏍穓ar杩愯鏃朵細鍘绘壘鍒板悓鐩綍涓嬬殑conf鏂囦欢澶逛笅鏌ユ壘 -->
+ <manifestEntries>
+ <Class-Path>conf/</Class-Path>
+ </manifestEntries>
+ </archive>
+ <outputDirectory>${package.path}</outputDirectory>
+ </configuration>
+ </plugin>
+ <!-- 鎷疯礉渚濊禆 copy-dependencies -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-dependencies</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${package.path}/lib/ </outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- 鎷疯礉璧勬簮鏂囦欢 copy-resources -->
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-resources</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <!-- 鎸囧畾鍙備笌鏋勫缓鐨剅esource -->
+ <includes>
+ <include>*.**</include>
+ <!--鎺掗櫎application-dev.yml鏂囦欢-->
+ </includes>
+ </resource>
+ </resources>
+ <outputDirectory>${package.path}/conf</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/standard-server/.gitignore b/standard-server/.gitignore
new file mode 100644
index 0000000..549e00a
--- /dev/null
+++ b/standard-server/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/standard-server/pom.xml b/standard-server/pom.xml
new file mode 100644
index 0000000..cced00d
--- /dev/null
+++ b/standard-server/pom.xml
@@ -0,0 +1,24 @@
+<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mom</artifactId>
+ <groupId>com.yuanchu.mom</groupId>
+ <version>1.0.0</version>
+ </parent>
+
+ <artifactId>standard-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <name>standard-server</name>
+ <description>standard-server</description>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>framework</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/standard-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java b/standard-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
new file mode 100644
index 0000000..e408098
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
@@ -0,0 +1,47 @@
+package com.yuanchu.mom.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.yuanchu.mom.pojo.Device;
+import com.yuanchu.mom.pojo.dto.ProductDto;
+import com.yuanchu.mom.service.DeviceService;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-31
+ */
+@Api(tags = "鎶�鏈鐞�-->鏍囧噯MOM-->宸ヨ壓璺嚎")
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+ @Autowired
+ private DeviceService deviceService;
+
+ @ApiOperation(value = "鐐瑰嚮琛ㄦ牸涓殑閫夋嫨")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "deviceGroup", value = "璁惧缁�", dataTypeClass = String.class, required = true)
+ })
+ @GetMapping("/select")
+ public Result<?> selectTreeDevice(String deviceGroup){
+ Map<String, Object> map = deviceService.selectTechnology(deviceGroup);
+ return Result.success(map);
+ }
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/controller/MaterialController.java b/standard-server/src/main/java/com/yuanchu/mom/controller/MaterialController.java
new file mode 100644
index 0000000..30ac074
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/controller/MaterialController.java
@@ -0,0 +1,33 @@
+package com.yuanchu.mom.controller;
+
+import com.yuanchu.mom.pojo.dto.MaterialTreeDto;
+import com.yuanchu.mom.service.MaterialService;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+@Api(tags = "鎶�鏈鐞�-->鏍囧噯MOM-->鐗╂枡妯″潡")
+@RestController
+@RequestMapping("/material")
+public class MaterialController {
+
+ @Autowired
+ private MaterialService materialService;
+
+ @ApiOperation(value = "鏌ヨ鐗╂枡鐨勬爲")
+ @GetMapping("/selectTreeByMaterial")
+ public Result<List<MaterialTreeDto>> selectTreeByMaterial(){
+ return Result.success(materialService.selectTreeByMaterial());
+ }
+
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/controller/OrdersController.java b/standard-server/src/main/java/com/yuanchu/mom/controller/OrdersController.java
new file mode 100644
index 0000000..8a8969a
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/controller/OrdersController.java
@@ -0,0 +1,63 @@
+package com.yuanchu.mom.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import com.yuanchu.mom.service.OrdersService;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 璁㈠崟(Order)琛ㄦ帶鍒跺眰
+ *
+ * @author zss
+ * @since 2023-07-31 11:57:44
+ */
+@Api(tags = "鎶�鏈鐞�-->璁㈠崟BOM")
+@RestController
+@RequestMapping("/orders")
+@Slf4j
+public class OrdersController {
+
+ @Resource
+ OrdersService ordersService;
+
+ @ApiOperation("鏌ヨ鎵�鏈夎鍗曞垪琛�")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "pageSize", value = "椤垫暟", dataTypeClass = Integer.class, required = true),
+ @ApiImplicitParam(name = "countSize", value = "鏉℃暟/椤�", dataTypeClass = Integer.class, required = true),
+ @ApiImplicitParam(name = "id", value = "璁㈠崟id", dataTypeClass = Integer.class),
+ @ApiImplicitParam(name = "name", value = "浜у搧鍚嶇О", dataTypeClass = String.class),
+ @ApiImplicitParam(name = "state", value = "鐘舵��(涓虹┖=鍏ㄩ儴)", dataTypeClass = Integer.class),
+ @ApiImplicitParam(name = "time", value = "涓嬪崟鏃堕棿", dataTypeClass = String.class)
+ })
+ @GetMapping("/selectAllOrder")
+ public Result selectAllOrder(int pageSize, int countSize, Integer id, String name, Integer state ,String time) {
+ IPage<Map<String, Object>> inspectionPage = ordersService.selectAllOrder(new Page<Object>(pageSize, countSize), id, name, state, time);
+ Map<String, Object> map = new HashMap<>();
+ map.put("total", inspectionPage.getTotal());
+ map.put("row", inspectionPage.getRecords());
+ return Result.success(map);
+ }
+
+ @ApiOperation("鏍规嵁璁㈠崟id鏌ヨ璁㈠崟璇︽儏")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "id", value = "璁㈠崟id", dataTypeClass = Integer.class, required = true)
+ })
+ @GetMapping("/selectOrderById")
+ public Result selectOrderById(Integer id) {
+ return Result.success(ordersService.getById(id));
+ }
+
+}
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/controller/ProductController.java b/standard-server/src/main/java/com/yuanchu/mom/controller/ProductController.java
new file mode 100644
index 0000000..f1870a8
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/controller/ProductController.java
@@ -0,0 +1,35 @@
+package com.yuanchu.mom.controller;
+
+import com.yuanchu.mom.pojo.dto.ProductDto;
+import com.yuanchu.mom.service.ProductService;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api(tags = "鎶�鏈鐞�-->鏍囧噯MOM-->椤圭洰妯″潡")
+@RestController
+@RequestMapping("/product")
+public class ProductController {
+
+ @Autowired
+ private ProductService productService;
+
+ @ApiOperation(value = "椤圭洰琛ㄦ牸浜岀骇鏍�")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "project", value = "椤圭洰", dataTypeClass = String.class),
+ @ApiImplicitParam(name = "specifications", value = "鍨嬪彿ID", dataTypeClass = String.class, required = true)
+ })
+ @GetMapping("/selectTreeByMaterial")
+ public Result<?> selectTreeProduct(String specifications, String project){
+ List<ProductDto> map = productService.selectTreeProduct(specifications, project);
+ return Result.success(map);
+ }
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/controller/TechnologyController.java b/standard-server/src/main/java/com/yuanchu/mom/controller/TechnologyController.java
new file mode 100644
index 0000000..d9f788f
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/controller/TechnologyController.java
@@ -0,0 +1,45 @@
+package com.yuanchu.mom.controller;
+
+
+import com.yuanchu.mom.service.TechnologyService;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-31
+ */
+@Api(tags = "鎶�鏈鐞�-->鏍囧噯MOM-->宸ヨ壓璺嚎")
+@RestController
+@RequestMapping("/technology")
+public class TechnologyController {
+
+ @Autowired
+ private TechnologyService technologyService;
+
+ @ApiOperation(value = "閫夋嫨宸ヨ壓璺嚎鍑虹幇鐨勮〃鏍兼煡璇�")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "technologyName", value = "宸ヨ壓鍚嶇О", dataTypeClass = String.class),
+ @ApiImplicitParam(name = "specificationId", value = "瑙勬牸ID", dataTypeClass = String.class,required = true)
+ })
+ @GetMapping("/select")
+ public Result<?> selectTechnology(String technologyName, String specificationId){
+ List<Map<String, Object>> map = technologyService.selectTechnology(technologyName);
+ return Result.success(map);
+ }
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java b/standard-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java
new file mode 100644
index 0000000..56b0106
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.pojo.Device;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-31
+ */
+public interface DeviceMapper extends BaseMapper<Device> {
+
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/mapper/MaterialMapper.java b/standard-server/src/main/java/com/yuanchu/mom/mapper/MaterialMapper.java
new file mode 100644
index 0000000..7d429c1
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/mapper/MaterialMapper.java
@@ -0,0 +1,32 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.pojo.Material;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.dto.MaterialTreeDto;
+import org.apache.ibatis.annotations.MapKey;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恗aterial銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2023-07-26 15:52:50
+* @Entity com.yuanchu.mom.pojo.Material
+*/
+
+public interface MaterialMapper extends BaseMapper<Material> {
+
+ @MapKey("id")
+ List<MaterialTreeDto> selectTreeByMaterial();
+
+ //鏍规嵁鐗╂枡鍚嶇О鏌ヨ鐗╂枡id鍜岀墿鏂欑紪鐮�
+ List<Material> selectMcodeId(String name);
+
+ //鏍规嵁鐗╂枡鍚嶇О鍜岀墿鏂欑紪鐮佹煡璇㈢墿鏂檌d,瑙勬牸淇℃伅鍜屽瀷鍙蜂俊鎭�
+ List<Map> selectIdByCoNa(String name, String code);
+}
+
+
+
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/mapper/OrdersMapper.java b/standard-server/src/main/java/com/yuanchu/mom/mapper/OrdersMapper.java
new file mode 100644
index 0000000..20997ef
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/mapper/OrdersMapper.java
@@ -0,0 +1,23 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.Orders;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 璁㈠崟(Order)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author zss
+ * @since 2023-07-31 11:57:44
+ */
+public interface OrdersMapper extends BaseMapper<Orders> {
+
+ //鏌ヨ鎵�鏈夎鍗曞垪琛�
+ IPage<Map<String, Object>> selectAllOrder(Page<Object> page, Integer id, String name, Integer state , String time);
+}
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/mapper/ProductMapper.java b/standard-server/src/main/java/com/yuanchu/mom/mapper/ProductMapper.java
new file mode 100644
index 0000000..55edfae
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/mapper/ProductMapper.java
@@ -0,0 +1,23 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.pojo.Product;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.dto.ProductDto;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恜roduct銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2023-07-26 16:00:44
+* @Entity com.yuanchu.mom.pojo.Product
+*/
+public interface ProductMapper extends BaseMapper<Product> {
+
+ List<ProductDto> selectTreeProduct(String specifications, String project);
+}
+
+
+
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/mapper/SpecificationsMapper.java b/standard-server/src/main/java/com/yuanchu/mom/mapper/SpecificationsMapper.java
new file mode 100644
index 0000000..ba17d8b
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/mapper/SpecificationsMapper.java
@@ -0,0 +1,29 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.Specifications;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Administrator
+ * @description 閽堝琛ㄣ�恠pecifications銆戠殑鏁版嵁搴撴搷浣淢apper
+ * @createDate 2023-07-26 16:02:54
+ * @Entity com.yuanchu.mom.pojo.Specifications
+ */
+public interface SpecificationsMapper extends BaseMapper<Specifications> {
+
+ /**
+ * 妫�楠屾ā鍧�-->OMS绠$悊-->鎴愬搧妫�楠�-->鏂板(闇�瑕佽鏍煎瀷鍙风殑Id涓庡悕绉�)
+ */
+ List<Map<String, Object>> selectSpecificationIdAndName(Integer materialId);
+
+}
+
+
+
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/mapper/StandardMapper.java b/standard-server/src/main/java/com/yuanchu/mom/mapper/StandardMapper.java
new file mode 100644
index 0000000..433b240
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/mapper/StandardMapper.java
@@ -0,0 +1,18 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.pojo.Standard;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恠tandard銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2023-07-26 15:59:05
+* @Entity com.yuanchu.mom.pojo.Standard
+*/
+public interface StandardMapper extends BaseMapper<Standard> {
+
+}
+
+
+
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/mapper/TechnologyMapper.java b/standard-server/src/main/java/com/yuanchu/mom/mapper/TechnologyMapper.java
new file mode 100644
index 0000000..719f2fb
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/mapper/TechnologyMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.pojo.Technology;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-31
+ */
+public interface TechnologyMapper extends BaseMapper<Technology> {
+
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/Device.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/Device.java
new file mode 100644
index 0000000..50ba911
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/Device.java
@@ -0,0 +1,58 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.time.LocalDate;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="Device瀵硅薄", description="")
+public class Device implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "璁惧id")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty(value = "璁惧缂栫爜")
+ private String code;
+
+ @ApiModelProperty(value = "璁惧鍚嶇О")
+ private String name;
+
+ @ApiModelProperty(value = "璁惧鍒嗙粍")
+ private String father;
+
+ @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+ @TableLogic(value = "1", delval = "0")
+ private Integer state;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date updateTime;
+
+
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/Material.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/Material.java
new file mode 100644
index 0000000..adff440
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/Material.java
@@ -0,0 +1,60 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * @TableName material
+ */
+@TableName(value ="material")
+@Data
+public class Material implements Serializable {
+ /**
+ * 鐗╂枡id
+ */
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 鐗╂枡缂栫爜
+ */
+ private String code;
+
+ /**
+ * 鐗╂枡鍚嶇О
+ */
+ private String name;
+
+ /**
+ * 0锛氬師鏉愭枡锛�1锛氭垚鍝侊紱2锛氬崐鎴愬搧
+ */
+ private Integer type;
+
+ @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+ @TableLogic(value = "1", delval = "0")
+ private Integer state;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date updateTime;
+
+ @ApiModelProperty(value = "涔愯閿�", hidden = true)
+ @Version
+ private Integer version;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/Orders.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/Orders.java
new file mode 100644
index 0000000..5e45802
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/Orders.java
@@ -0,0 +1,128 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * 璁㈠崟(Order)琛ㄥ疄浣撶被
+ *
+ * @author zss
+ * @since 2023-07-31 11:57:44
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@TableName("orders")
+public class Orders implements Serializable {
+ private static final long serialVersionUID = 1L;
+ /**
+ * 璁㈠崟id
+ */
+ @ApiModelProperty(name = "璁㈠崟id")
+ @TableId(value = "id", type = IdType.ASSIGN_UUID)
+ private Integer id;
+ /**
+ * 瀹㈡埛鍚嶇О
+ */
+ @ApiModelProperty(name = "瀹㈡埛鍚嶇О")
+ @TableField("proname")
+ private String proname;
+ /**
+ * 浜у搧缂栫爜
+ */
+ @ApiModelProperty(name = "浜у搧缂栫爜")
+ @TableField("code")
+ private String code;
+ /**
+ * 浜у搧澶х被,0锛氬師鏉愭枡锛�1锛氭垚鍝侊紱2锛氬崐鎴愬搧
+ */
+ @ApiModelProperty(name = "浜у搧澶х被,0锛氬師鏉愭枡锛�1锛氭垚鍝侊紱2锛氬崐鎴愬搧")
+ @TableField("type")
+ private Integer type;
+ /**
+ * 鍨嬪彿瑙勬牸
+ */
+ @ApiModelProperty(name = "鍨嬪彿瑙勬牸")
+ @TableField("specifications")
+ private String specifications;
+ /**
+ * 鍗曚綅
+ */
+ @ApiModelProperty(name = "鍗曚綅")
+ @TableField("unit")
+ private String unit;
+ /**
+ * 鏁伴噺
+ */
+ @ApiModelProperty(name = "鏁伴噺")
+ @TableField("number")
+ private Integer number;
+ /**
+ * 鐘舵��,0:寰呯紪鍒�;1:宸茬紪鍒�
+ */
+ @ApiModelProperty(name = "鐘舵��,0:寰呯紪鍒�;1:宸茬紪鍒�")
+ @TableField("state")
+ private Integer state;
+ /**
+ * 涓嬪崟浜�
+ */
+ @ApiModelProperty(name = "涓嬪崟浜�")
+ @TableField("username")
+ private String username;
+ /**
+ * 涓嬪崟鏃ユ湡
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "涓嬪崟鏃ユ湡", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date updateTime;
+ /**
+ * 浜よ揣鏃ユ湡
+ */
+ @ApiModelProperty(name = "浜よ揣鏃ユ湡")
+ @TableField("delivery_time")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date deliveryTime;
+ /**
+ * 瀹㈡埛鍚嶇О
+ */
+ @ApiModelProperty(name = "瀹㈡埛鍚嶇О")
+ @TableField("custname")
+ private String custname;
+ /**
+ * 鐪佷唤
+ */
+ @ApiModelProperty(name = "鐪佷唤")
+ @TableField("province")
+ private String province;
+ /**
+ * 閮ㄩ棬
+ */
+ @ApiModelProperty(name = "閮ㄩ棬")
+ @TableField("department")
+ private String department;
+ /**
+ * 涓氬姟鍛�
+ */
+ @ApiModelProperty(name = "涓氬姟鍛�")
+ @TableField("salesman")
+ private String salesman;
+}
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/Product.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/Product.java
new file mode 100644
index 0000000..85018af
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/Product.java
@@ -0,0 +1,75 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * @TableName product
+ */
+@TableName(value ="product")
+@Data
+public class Product implements Serializable {
+ /**
+ * 椤圭洰id
+ */
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 椤圭洰鍚嶇О
+ */
+ private String name;
+
+ /**
+ * 椤圭洰鐖剁被
+ */
+ private String father;
+
+ /**
+ * 鍗曚綅
+ */
+ private String unit;
+
+ /**
+ * 鏍囧噯鍊�
+ */
+ private String required;
+
+ /**
+ * 鍐呮帶鍊�
+ */
+ private String internal;
+
+ @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+ @TableLogic(value = "1", delval = "0")
+ private Integer state;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date updateTime;
+
+ @ApiModelProperty(value = "涔愯閿�", hidden = true)
+ @Version
+ private Integer version;
+
+ /**
+ * 鍏宠仈 鍨嬪彿id
+ */
+ private Integer specificationsId;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/Specifications.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/Specifications.java
new file mode 100644
index 0000000..4a89010
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/Specifications.java
@@ -0,0 +1,55 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * @TableName specifications
+ */
+@TableName(value ="specifications")
+@Data
+public class Specifications implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 瑙勬牸鍚嶇О
+ */
+ private String name;
+
+ @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+ @TableLogic(value = "1", delval = "0")
+ private Integer state;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date updateTime;
+
+ @ApiModelProperty(value = "涔愯閿�", hidden = true)
+ @Version
+ private Integer version;
+
+ /**
+ * 鍏宠仈 鏍囧噯id
+ */
+ private Integer standardId;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/Standard.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/Standard.java
new file mode 100644
index 0000000..df175df
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/Standard.java
@@ -0,0 +1,56 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * @TableName standard
+ */
+@TableName(value ="standard")
+@Data
+public class Standard implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 鏍囧噯鍚嶇О
+ */
+ private String name;
+
+ @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+ @TableLogic(value = "1", delval = "0")
+ private Integer state;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date updateTime;
+
+ @ApiModelProperty(value = "涔愯閿�", hidden = true)
+ @Version
+ private Integer version;
+
+ /**
+ * 鍏宠仈 鐗╂枡id
+ */
+ private Integer material_id;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/Technology.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/Technology.java
new file mode 100644
index 0000000..c1754bd
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/Technology.java
@@ -0,0 +1,63 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.time.LocalDate;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="Technology瀵硅薄", description="")
+public class Technology implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "宸ヨ壓id")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty(value = "宸ヨ壓鍚嶇О")
+ private String name;
+
+ private String quota;
+
+ @ApiModelProperty(value = "璁惧缁�")
+ private String deviceGroup;
+
+ @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+ @TableLogic(value = "1", delval = "0")
+ private Integer state;
+
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date updateTime;
+
+ @ApiModelProperty(value = "鍏宠仈 瑙勬牸id")
+ private Integer specificationsId;
+
+ @ApiModelProperty(value = "鍏宠仈 璁惧id")
+ private Integer deviceId;
+
+
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MaterialTreeDto.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MaterialTreeDto.java
new file mode 100644
index 0000000..1b26fcb
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MaterialTreeDto.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.pojo.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MaterialTreeDto {
+
+ private Integer id;
+
+ private String name;
+
+ private Integer type;
+
+ private String code = "[2]";
+
+ List<StandardDto> children;
+
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/ProductDto.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/ProductDto.java
new file mode 100644
index 0000000..08ec5bf
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/ProductDto.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.pojo.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ProductDto {
+
+ /**
+ * 椤圭洰鍚嶇О
+ */
+ private String father;
+
+ List<ProductDto2> children;
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/ProductDto2.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/ProductDto2.java
new file mode 100644
index 0000000..15e8a3f
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/ProductDto2.java
@@ -0,0 +1,29 @@
+package com.yuanchu.mom.pojo.dto;
+
+import lombok.Data;
+
+@Data
+public class ProductDto2 {
+ private Integer id;
+
+ /**
+ * 椤圭洰鍚嶇О
+ */
+ private String name;
+
+ /**
+ * 鍗曚綅
+ */
+ private String unit;
+
+ /**
+ * 鏍囧噯鍊�
+ */
+ private String required;
+
+ /**
+ * 鍐呮帶鍊�
+ */
+ private String internal;
+
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/SpecificationsDto.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/SpecificationsDto.java
new file mode 100644
index 0000000..62ffdb6
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/SpecificationsDto.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.pojo.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+class SpecificationsDto {
+ private Integer id;
+
+ private String name;
+
+ private String code = "[4]";
+
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/StandardDto.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/StandardDto.java
new file mode 100644
index 0000000..2796d34
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/dto/StandardDto.java
@@ -0,0 +1,17 @@
+package com.yuanchu.mom.pojo.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+class StandardDto {
+ private Integer id;
+
+ private String name;
+
+ private String code = "[3]";
+
+ List<SpecificationsDto> children;
+}
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/DeviceService.java b/standard-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
new file mode 100644
index 0000000..5890ff7
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.Device;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-31
+ */
+public interface DeviceService extends IService<Device> {
+
+ Map<String, Object> selectTechnology(String deviceGroup);
+
+ List<Device> selectDevice();
+
+ /**
+ * 鏍规嵁璁惧id鏌ヨ璁惧鍚嶇О
+ * @param id
+ */
+ String getDeviceNameById(Integer id);
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/MaterialService.java b/standard-server/src/main/java/com/yuanchu/mom/service/MaterialService.java
new file mode 100644
index 0000000..4268c33
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/MaterialService.java
@@ -0,0 +1,43 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.Material;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.dto.MaterialTreeDto;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恗aterial銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2023-07-26 15:52:50
+*/
+public interface MaterialService extends IService<Material> {
+
+ List<MaterialTreeDto> selectTreeByMaterial();
+
+ /**
+ * 鏍规嵁鐗╂枡鍚嶇О鏌ヨ鐗╂枡id鍜岀墿鏂欑紪鐮�
+ * @param name
+ * @return
+ */
+ List<Material> selectMcodeId(String name);
+
+ /**
+ * 鏍规嵁鐗╂枡鍚嶇О鍜岀墿鏂欑紪鐮佹煡璇㈢墿鏂檌d
+ * @param name
+ * @param code
+ * @return
+ */
+ List<Map> selectIdByCoNa(String name, String code);
+ /**
+ * 妫�楠屾ā鍧�-->OMS绠$悊-->鎴愬搧妫�楠�-->鏂板(椤圭洰鍚嶇О涓嬫媺妗嗭細Id涓庡悕绉帮紝缂栫爜)
+ */
+ List<Map<String, Object>> selectMaterialIdAndNameAndCode();
+
+ /**
+ * 鏌ヨ鎵�鏈夌墿鏂欎俊鎭�
+ * @return
+ */
+ List<Material> selectMaterial();
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/OrdersService.java b/standard-server/src/main/java/com/yuanchu/mom/service/OrdersService.java
new file mode 100644
index 0000000..36ee978
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/OrdersService.java
@@ -0,0 +1,27 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.Orders;
+
+import java.util.Map;
+
+/**
+ * 璁㈠崟(Order)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author zss
+ * @since 2023-07-31 11:57:44
+ */
+public interface OrdersService extends IService<Orders> {
+ /**
+ * 鏌ヨ鎵�鏈夎鍗曞垪琛�
+ *
+ * @param
+ * @return
+ */
+ IPage<Map<String, Object>> selectAllOrder(Page<Object> page, Integer id, String name, Integer state , String time);
+
+
+}
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/ProductService.java b/standard-server/src/main/java/com/yuanchu/mom/service/ProductService.java
new file mode 100644
index 0000000..99cbeff
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/ProductService.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.Product;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.dto.ProductDto;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恜roduct銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2023-07-26 16:00:44
+*/
+public interface ProductService extends IService<Product> {
+
+ List<ProductDto> selectTreeProduct(String specifications, String project);
+
+ List<Map<String, Object>> selectProductList(Integer specificationsId);
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/SpecificationsService.java b/standard-server/src/main/java/com/yuanchu/mom/service/SpecificationsService.java
new file mode 100644
index 0000000..bcba5e7
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/SpecificationsService.java
@@ -0,0 +1,33 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.Material;
+import com.yuanchu.mom.pojo.Specifications;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恠pecifications銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2023-07-26 16:01:49
+*/
+public interface SpecificationsService extends IService<Specifications> {
+
+
+ /**
+ * 鏍规嵁瑙勬牸id鍜屽瀷鍙峰悕绉版煡璇㈠瀷鍙蜂俊鎭�
+ * @param id
+ * @param name
+ * @return
+ */
+ Specifications selectSpIdByname(Integer id, String name);
+
+ /**
+ * 妫�楠屾ā鍧�-->OMS绠$悊-->鎴愬搧妫�楠�-->鏂板(闇�瑕佽鏍煎瀷鍙风殑Id涓庡悕绉�)
+ */
+ List<Map<String, Object>> selectSpecificationIdAndName(Integer materialId);
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/StandardService.java b/standard-server/src/main/java/com/yuanchu/mom/service/StandardService.java
new file mode 100644
index 0000000..8461cf4
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/StandardService.java
@@ -0,0 +1,13 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.Standard;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恠tandard銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2023-07-26 15:59:05
+*/
+public interface StandardService extends IService<Standard> {
+
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/TechnologyService.java b/standard-server/src/main/java/com/yuanchu/mom/service/TechnologyService.java
new file mode 100644
index 0000000..b6935c8
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/TechnologyService.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.Technology;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-31
+ */
+public interface TechnologyService extends IService<Technology> {
+
+ List<Map<String, Object>> selectTechnology(String technologyName);
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java b/standard-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..629fb2c
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,59 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.yuanchu.mom.pojo.Device;
+import com.yuanchu.mom.mapper.DeviceMapper;
+import com.yuanchu.mom.service.DeviceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.MyUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-31
+ */
+@Service
+public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements DeviceService {
+
+ @Resource
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public Map<String, Object> selectTechnology(String deviceGroup) {
+ String[] split = deviceGroup.split("\\+");
+ Map<String, Object> map = new HashMap<>();
+ for (String str : split){
+ LambdaQueryWrapper<Device> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(Device::getFather, str);
+ wrapper.select(Device::getId, Device::getName);
+ List<Map<String, Object>> maps = deviceMapper.selectMaps(wrapper);
+ map.put("first", str);
+ map.put("children", maps);
+ }
+ return map;
+ }
+
+ //鏌ヨ鎵�鏈夎澶�
+ @Override
+ public List<Device> selectDevice() {
+ return deviceMapper.selectList(new QueryWrapper<>());
+ }
+
+ //鏍规嵁璁惧id鑾峰彇璁惧鍚嶇О
+ @Override
+ public String getDeviceNameById(Integer id) {
+ Device device = deviceMapper.selectById(id);
+ return device.getName();
+ }
+}
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/impl/MaterialServiceImpl.java b/standard-server/src/main/java/com/yuanchu/mom/service/impl/MaterialServiceImpl.java
new file mode 100644
index 0000000..722e4c3
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/impl/MaterialServiceImpl.java
@@ -0,0 +1,64 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.pojo.Material;
+import com.yuanchu.mom.pojo.dto.MaterialTreeDto;
+import com.yuanchu.mom.service.MaterialService;
+import com.yuanchu.mom.mapper.MaterialMapper;
+import com.yuanchu.mom.utils.JackSonUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Administrator
+ * @description 閽堝琛ㄣ�恗aterial銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2023-07-26 15:52:50
+ */
+@Service
+public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material>
+ implements MaterialService {
+
+ @Resource
+ MaterialMapper materialMapper;
+
+ @Override
+ public List<MaterialTreeDto> selectTreeByMaterial() {
+ List<MaterialTreeDto> materialTreeDtos = materialMapper.selectTreeByMaterial();
+ materialTreeDtos.forEach(System.out::println);
+ return materialMapper.selectTreeByMaterial();
+ }
+
+ @Override
+ public List<Map<String, Object>> selectMaterialIdAndNameAndCode() {
+ LambdaQueryWrapper<Material> wrapper = new LambdaQueryWrapper<>();
+ wrapper.select(Material::getId, Material::getName, Material::getCode);
+ return materialMapper.selectMaps(wrapper);
+ }
+
+ //鏌ヨ鎵�鏈夌墿鏂欎俊鎭�
+ @Override
+ public List<Material> selectMaterial() {
+ return materialMapper.selectList(Wrappers.<Material>query());
+ }
+
+ //鏍规嵁鐗╂枡鍚嶇О鏌ヨ鐗╂枡id鍜岀墿鏂欑紪鐮�
+ @Override
+ public List<Material> selectMcodeId(String name) {
+ return materialMapper.selectMcodeId(name);
+ }
+
+ //鏍规嵁鐗╂枡鍚嶇О鍜岀墿鏂欑紪鐮佹煡璇㈢墿鏂檌d,瑙勬牸淇℃伅鍜屽瀷鍙蜂俊鎭�
+ @Override
+ public List<Map> selectIdByCoNa(String name, String code) {
+ return materialMapper.selectIdByCoNa(name,code);
+ }
+}
+
+
+
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java b/standard-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java
new file mode 100644
index 0000000..da8680b
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java
@@ -0,0 +1,35 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.OrdersMapper;
+import com.yuanchu.mom.pojo.Orders;
+import com.yuanchu.mom.service.OrdersService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 璁㈠崟(Order)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author zss
+ * @since 2023-07-31 11:57:44
+ */
+@Service("orderService")
+public class OrdersServiceImpl extends ServiceImpl<OrdersMapper, Orders> implements OrdersService {
+
+ @Resource
+ OrdersMapper orderMapper;
+
+ //鏌ヨ鎵�鏈夎鍗曞垪琛�
+ @Override
+ public IPage<Map<String, Object>> selectAllOrder(Page<Object> page, Integer id, String name, Integer state , String time) {
+ return orderMapper.selectAllOrder(page, id,name,state, time);
+ }
+
+}
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java b/standard-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java
new file mode 100644
index 0000000..331d83d
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java
@@ -0,0 +1,42 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.pojo.Product;
+import com.yuanchu.mom.pojo.dto.ProductDto;
+import com.yuanchu.mom.service.ProductService;
+import com.yuanchu.mom.mapper.ProductMapper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恜roduct銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2023-07-26 16:00:44
+*/
+@Service
+public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService{
+
+ @Resource
+ private ProductMapper productMapper;
+
+ @Override
+ public List<ProductDto> selectTreeProduct(String specifications, String project) {
+ return productMapper.selectTreeProduct(specifications, project);
+ }
+
+ @Override
+ public List<Map<String, Object>> selectProductList(Integer specificationsId) {
+ LambdaQueryWrapper<Product> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(Product::getSpecificationsId, specificationsId);
+ wrapper.select(Product::getName, Product::getFather, Product::getRequired, Product::getInternal, Product::getUnit);
+ return productMapper.selectMaps(wrapper);
+ }
+}
+
+
+
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/impl/SpecificationsServiceImpl.java b/standard-server/src/main/java/com/yuanchu/mom/service/impl/SpecificationsServiceImpl.java
new file mode 100644
index 0000000..75ea50f
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/impl/SpecificationsServiceImpl.java
@@ -0,0 +1,53 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.SpecificationsMapper;
+import com.yuanchu.mom.pojo.Specifications;
+import com.yuanchu.mom.service.SpecificationsService;
+import com.yuanchu.mom.utils.MyUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Administrator
+ * @description 閽堝琛ㄣ�恠pecifications銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2023-07-26 16:01:49
+ */
+@Service
+public class SpecificationsServiceImpl extends ServiceImpl<SpecificationsMapper, Specifications>
+ implements SpecificationsService {
+
+ @Resource
+ private SpecificationsMapper specificationsMapper;
+
+ /**
+ * 妫�楠屾ā鍧�-->OMS绠$悊-->鎴愬搧妫�楠�-->鏂板(闇�瑕佽鏍煎瀷鍙风殑Id涓庡悕绉�)
+ */
+ @Override
+ public List<Map<String, Object>> selectSpecificationIdAndName(Integer materialId) {
+ List<Map<String, Object>> maps = specificationsMapper.selectSpecificationIdAndName(materialId);
+ return maps;
+ }
+
+
+ //鏍规嵁瑙勬牸id鍜屽瀷鍙峰悕绉版煡璇㈠瀷鍙蜂俊鎭�
+ @Override
+ public Specifications selectSpIdByname(Integer id, String name) {
+ Specifications specifications = specificationsMapper.selectOne(Wrappers.<Specifications>query()
+ .eq("standard_id", id)
+ .eq("name", name));
+ return specifications;
+ }
+}
+
+
+
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/impl/StandardServiceImpl.java b/standard-server/src/main/java/com/yuanchu/mom/service/impl/StandardServiceImpl.java
new file mode 100644
index 0000000..f52274f
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/impl/StandardServiceImpl.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.pojo.Standard;
+import com.yuanchu.mom.service.StandardService;
+import com.yuanchu.mom.mapper.StandardMapper;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author Administrator
+ * @description 閽堝琛ㄣ�恠tandard銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2023-07-26 15:59:05
+ */
+@Service
+public class StandardServiceImpl extends ServiceImpl<StandardMapper, Standard> implements StandardService {
+
+}
+
+
+
+
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyServiceImpl.java b/standard-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyServiceImpl.java
new file mode 100644
index 0000000..917cefd
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyServiceImpl.java
@@ -0,0 +1,38 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.yuanchu.mom.pojo.Technology;
+import com.yuanchu.mom.mapper.TechnologyMapper;
+import com.yuanchu.mom.service.TechnologyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-31
+ */
+@Service
+public class TechnologyServiceImpl extends ServiceImpl<TechnologyMapper, Technology> implements TechnologyService {
+
+ @Resource
+ private TechnologyMapper technologyMapper;
+
+ @Override
+ public List<Map<String, Object>> selectTechnology(String technologyName) {
+ LambdaQueryWrapper<Technology> wrapper = new LambdaQueryWrapper<>();
+ if (!ObjectUtils.isEmpty(technologyName)){
+ wrapper.like(Technology::getName, technologyName);
+ }
+ wrapper.select(Technology::getId, Technology::getName, Technology::getDeviceGroup, Technology::getQuota);
+ return technologyMapper.selectMaps(wrapper);
+ }
+}
diff --git a/standard-server/src/main/resources/mapper/DeviceMapper.xml b/standard-server/src/main/resources/mapper/DeviceMapper.xml
new file mode 100644
index 0000000..6c95802
--- /dev/null
+++ b/standard-server/src/main/resources/mapper/DeviceMapper.xml
@@ -0,0 +1,11 @@
+<?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.yuanchu.mom.mapper.DeviceMapper">
+
+ <select id="selectDeviceTables" resultType="map">
+ SELECT d.`id`, d.`name`, d.`father`,t.`quota`
+ FROM device d, technology t
+ WHERE d.`state` = 1
+ AND d.`id` = t.`device_id`
+ </select>
+</mapper>
diff --git a/standard-server/src/main/resources/mapper/MaterialMapper.xml b/standard-server/src/main/resources/mapper/MaterialMapper.xml
new file mode 100644
index 0000000..3609c3b
--- /dev/null
+++ b/standard-server/src/main/resources/mapper/MaterialMapper.xml
@@ -0,0 +1,70 @@
+<?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.yuanchu.mom.mapper.MaterialMapper">
+ <resultMap id="BaseResultMap" type="Material">
+ <id property="id" column="id" jdbcType="INTEGER"/>
+ <result property="code" column="code" jdbcType="VARCHAR"/>
+ <result property="name" column="name" jdbcType="VARCHAR"/>
+ <result property="type" column="type" jdbcType="INTEGER"/>
+ <result property="state" column="state" jdbcType="INTEGER"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="version" column="version" jdbcType="INTEGER"/>
+ </resultMap>
+
+ <resultMap id="materialTreeDto" type="materialTreeDto">
+ <id property="id" column="mid"/>
+ <result property="name" column="mname"/>
+ <result property="type" column="type"/>
+ <association property="children" resultMap="standardDto"/>
+ </resultMap>
+ <resultMap id="standardDto" type="standardDto">
+ <id property="id" column="sid"/>
+ <result property="name" column="sname"/>
+ <association property="children" resultMap="specificationsDto"/>
+ </resultMap>
+ <resultMap id="specificationsDto" type="specificationsDto">
+ <id property="id" column="spid"/>
+ <result property="name" column="spname"/>
+ </resultMap>
+
+ <select id="selectTreeByMaterial" resultMap="materialTreeDto">
+ select m.type,
+ m.id mid,
+ m.name mname,
+ s.id sid,
+ s.name sname,
+ s2.id spid,
+ s2.name spname,
+ p.id pid,
+ p.name pname
+ from (select type, id, name from material where state = 1) m
+ left join (select id, name, material_id from standard where state = 1) s on m.id = s.material_id
+ left join (select id, name, standard_id from specifications where state = 1) s2
+ on s2.standard_id = s.id
+ left join (select id, name, specifications_id from product where state = 1) p
+ on s2.id = p.specifications_id
+ </select>
+
+ <select id="selectMcodeId" resultType="com.yuanchu.mom.pojo.Material">
+ select id, code
+ from mom_ocean.material
+ where name = #{name}
+ </select>
+
+ <select id="selectIdByCoNa" resultType="java.util.Map">
+ select m.id '鐗╂枡id',
+ st.id '瑙勬牸id',
+ st.name '瑙勬牸鍚嶇О',
+ sp.name '鍨嬪彿鍚嶇О'
+ from mom_ocean.material m,
+ mom_ocean.standard st,
+ mom_ocean.specifications sp
+ where m.id = material_id
+ and material_id = standard_id
+ and m.name = #{name}
+ and code = #{code}
+ </select>
+</mapper>
diff --git a/standard-server/src/main/resources/mapper/OrdersMapper.xml b/standard-server/src/main/resources/mapper/OrdersMapper.xml
new file mode 100644
index 0000000..a668608
--- /dev/null
+++ b/standard-server/src/main/resources/mapper/OrdersMapper.xml
@@ -0,0 +1,36 @@
+<?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.yuanchu.mom.mapper.OrdersMapper">
+ <select id="selectAllOrder" resultType="java.util.Map">
+ select o.id,
+ department,
+ province,
+ salesman,
+ proname,
+ m.name,
+ specifications,
+ o.type,
+ unit,
+ number,
+ DATE_FORMAT(o.create_time, '%Y-%m-%d') ,
+ DATE_FORMAT(delivery_time, '%Y-%m-%d'),
+ o.state
+ from mom_ocean.orders o,mom_ocean.material m
+ <where>
+ <if test="id != null">
+ and o.id = #{id}
+ </if>
+ <if test="time != null">
+ and o.create_time = #{time}
+ </if>
+ <if test="name != null">
+ and m.name = #{name}
+ </if>
+ <if test="state != null">
+ and o.state = #{state}
+ </if>
+ and o.code=m.code
+ </where>
+ order by o.create_time desc
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/standard-server/src/main/resources/mapper/ProductMapper.xml b/standard-server/src/main/resources/mapper/ProductMapper.xml
new file mode 100644
index 0000000..cee2fea
--- /dev/null
+++ b/standard-server/src/main/resources/mapper/ProductMapper.xml
@@ -0,0 +1,44 @@
+<?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.yuanchu.mom.mapper.ProductMapper">
+
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.Product">
+ <id property="id" column="id" jdbcType="INTEGER"/>
+ <result property="name" column="name" jdbcType="VARCHAR"/>
+ <result property="father" column="father" jdbcType="VARCHAR"/>
+ <result property="unit" column="unit" jdbcType="VARCHAR"/>
+ <result property="required" column="required" jdbcType="VARCHAR"/>
+ <result property="internal" column="internal" jdbcType="VARCHAR"/>
+ <result property="state" column="state" jdbcType="INTEGER"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="version" column="version" jdbcType="INTEGER"/>
+ <result property="specificationsId" column="specifications_id" jdbcType="INTEGER"/>
+ </resultMap>
+
+ <resultMap id="selectTreeProduct" type="ProductDto">
+ <id property="father" column="father" jdbcType="VARCHAR"/>
+ <collection property="children" resultMap="productDto2ListMap"/>
+ </resultMap>
+
+ <resultMap id="productDto2ListMap" type="ProductDto2">
+ <id property="id" column="id" jdbcType="INTEGER"/>
+ <result property="name" column="name" jdbcType="VARCHAR"/>
+ <result property="unit" column="unit" jdbcType="VARCHAR"/>
+ <result property="required" column="required" jdbcType="VARCHAR"/>
+ <result property="internal" column="internal" jdbcType="VARCHAR"/>
+ <result property="state" column="state" jdbcType="INTEGER"/>
+ </resultMap>
+
+ <select id="selectTreeProduct" resultMap="selectTreeProduct">
+ SELECT p.id, p.`name`, IFNULL(p.`father`,p.`name`) father, p.`unit`, p.`required`, p.`internal`
+ FROM product p
+ where p.specifications_id = #{specifications}
+ <if test="project != null and project != ''">
+ AND p.father like concat('%',#{project},'%')
+ </if>
+ and p.state = 1
+ </select>
+</mapper>
diff --git a/standard-server/src/main/resources/mapper/SpecificationsMapper.xml b/standard-server/src/main/resources/mapper/SpecificationsMapper.xml
new file mode 100644
index 0000000..56e6f92
--- /dev/null
+++ b/standard-server/src/main/resources/mapper/SpecificationsMapper.xml
@@ -0,0 +1,30 @@
+<?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.yuanchu.mom.mapper.SpecificationsMapper">
+ <resultMap id="BaseResultMap" type="java.util.Map">
+ <id property="id" column="specificationsId" jdbcType="INTEGER"/>
+ <result property="name" column="specificationsName" jdbcType="VARCHAR"/>
+ <collection property="children" resultMap="BaseResultMapChildren" javaType="java.util.List"/>
+ </resultMap>
+ <resultMap id="BaseResultMapChildren" type="java.util.Map">
+ <id property="id" column="modelId" jdbcType="INTEGER"/>
+ <result property="name" column="modelName" jdbcType="VARCHAR"/>
+ </resultMap>
+
+ <select id="selectSpecificationIdAndName" resultMap="BaseResultMap">
+ SELECT s.`id` specificationsId, s.`name` specificationsName, f.id modelId, f.name modelName
+ FROM standard s
+ LEFT JOIN (SELECT f.`id`, f.`name`, f.`standard_id` FROM specifications f WHERE f.`state` = 1) f
+ ON s.`id` = f.`standard_id`
+ WHERE s.`material_id` = #{materialId}
+ AND s.`state` = 1
+ </select>
+
+ <select id="selectSpBySt" resultType="com.yuanchu.mom.pojo.Specifications">
+ select name
+ from mom_ocean.specifications
+ where standard_id = #{id}
+ </select>
+</mapper>
diff --git a/standard-server/src/main/resources/mapper/StandardMapper.xml b/standard-server/src/main/resources/mapper/StandardMapper.xml
new file mode 100644
index 0000000..fc38593
--- /dev/null
+++ b/standard-server/src/main/resources/mapper/StandardMapper.xml
@@ -0,0 +1,17 @@
+<?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.yuanchu.mom.mapper.StandardMapper">
+
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.Standard">
+ <id property="id" column="id" jdbcType="INTEGER"/>
+ <result property="name" column="name" jdbcType="VARCHAR"/>
+ <result property="state" column="state" jdbcType="INTEGER"/>
+ <result property="create_time" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="update_time" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="version" column="version" jdbcType="INTEGER"/>
+ <result property="material_id" column="material_id" jdbcType="INTEGER"/>
+ </resultMap>
+
+</mapper>
diff --git a/standard-server/src/main/resources/mapper/TechnologyMapper.xml b/standard-server/src/main/resources/mapper/TechnologyMapper.xml
new file mode 100644
index 0000000..1a5c4fe
--- /dev/null
+++ b/standard-server/src/main/resources/mapper/TechnologyMapper.xml
@@ -0,0 +1,5 @@
+<?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.yuanchu.mom.mapper.TechnologyMapper">
+
+</mapper>
diff --git a/standard-server/src/test/java/com/yuanchu/mom/StandardServerApplicationTests.java b/standard-server/src/test/java/com/yuanchu/mom/StandardServerApplicationTests.java
new file mode 100644
index 0000000..1c8de3c
--- /dev/null
+++ b/standard-server/src/test/java/com/yuanchu/mom/StandardServerApplicationTests.java
@@ -0,0 +1,13 @@
+package com.yuanchu.mom;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class StandardServerApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/system-run/pom.xml b/system-run/pom.xml
new file mode 100644
index 0000000..0e976dc
--- /dev/null
+++ b/system-run/pom.xml
@@ -0,0 +1,74 @@
+<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mom</artifactId>
+ <groupId>com.yuanchu.mom</groupId>
+ <version>1.0.0</version>
+ </parent>
+
+ <artifactId>system-run</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <name>system-run</name>
+ <description>system-run</description>
+ <packaging>pom</packaging>
+
+ <dependencies>
+ <!--鍩虹妗嗘灦绫�-->
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>framework</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>user-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>standard-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>inspect-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+
+
+ <!--druid-->
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>druid</artifactId>
+ </dependency>
+
+ <!--mybatis-plus-->
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-boot-starter</artifactId>
+ </dependency>
+
+ <!--mybatis-plus浠g爜鐢熸垚鍣�-->
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-generator</artifactId>
+ </dependency>
+
+ <!-- framework: mybatis-plus浠g爜鐢熸垚闇�瑕佷竴涓ā鏉垮紩鎿� -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-freemarker</artifactId>
+ </dependency>
+
+ <!--mysql-->
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java b/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
new file mode 100644
index 0000000..fa7be4d
--- /dev/null
+++ b/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
@@ -0,0 +1,129 @@
+package com.yuanchu.mom;
+
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+// 婕旂ず渚嬪瓙锛屾墽琛� main 鏂规硶鎺у埗鍙拌緭鍏ユā鍧楄〃鍚嶅洖杞﹁嚜鍔ㄧ敓鎴愬搴旈」鐩洰褰曚腑
+public class CodeGenerator {
+
+ public static String database_url = "jdbc:mysql://localhost:3306/mom_ocean?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
+ public static String database_driver_name = "com.mysql.cj.jdbc.Driver";
+ public static String database_username = "root";
+ public static String database_password= "123456";
+ public static String author = "姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃";
+ public static String model_name = "/inspect-server"; // 濡傛灉涓哄垎甯冨紡濉瓙妯″潡鍚嶇О锛屽鏋滀笉鏄垎甯冨紡涓虹┖鍗冲彲
+ public static String setParent = "com.yuanchu.mom"; // 鍖呰矾寰�
+ public static Boolean Override = false; // 鏄惁瑕嗙洊鍘熸潵鐨勬枃浠讹紵
+
+ public static void main(String[] args) {
+ // 浠g爜鐢熸垚鍣�
+ AutoGenerator mpg = new AutoGenerator();
+
+ String projectPath = System.getProperty("user.dir");
+ System.out.println(projectPath+"===================");
+
+ GlobalConfig gc = new GlobalConfig() // 鍏ㄥ眬閰嶇疆
+ .setOutputDir(projectPath + model_name + "/src/main/java") // 杈撳嚭璺緞
+ .setAuthor(author) // 浣滆�呮敞閲�
+ .setOpen(false) // 鏄惁鎵撳紑
+ .setSwagger2(true) //瀹炰綋灞炴�� Swagger2 娉ㄨВ
+ .setServiceName("%sService") // 璁剧疆serviceName鐨勫悕绉板幓澶у啓I
+ .setFileOverride(Override);// 鏄惁瑕嗙洊宸茬敓鎴愭枃浠�
+ mpg.setGlobalConfig(gc);
+
+ // 鏁版嵁婧愰厤缃� 鏁版嵁搴撳悕 璐﹀彿瀵嗙爜
+ DataSourceConfig dsc = new DataSourceConfig()
+ .setUrl(database_url)
+ .setDriverName(database_driver_name)
+ .setUsername(database_username)
+ .setPassword(database_password);
+ mpg.setDataSource(dsc);
+
+
+ // 鍖呴厤缃�
+ PackageConfig pc = new PackageConfig()
+ .setModuleName(null)
+ .setParent(setParent)
+ .setEntity("pojo");// 鍖呰矾寰�
+ mpg.setPackageInfo(pc);
+
+ // 鑷畾涔夐厤缃�
+ InjectionConfig cfg = new InjectionConfig() {
+ @Override
+ public void initMap() {
+ // to do nothing
+ }
+ };
+
+ // 濡傛灉妯℃澘寮曟搸鏄� freemarker
+ String templatePath = "/templates/mapper.xml.ftl";
+ // 濡傛灉妯℃澘寮曟搸鏄� velocity
+ // String templatePath = "/templates/mapper.xml.vm";
+
+ // 鑷畾涔夎緭鍑洪厤缃�
+ List<FileOutConfig> focList = new ArrayList<>();
+ // 鑷畾涔夐厤缃細琚紭鍏堣緭鍑�
+ focList.add(new FileOutConfig(templatePath) {
+ @Override
+ public String outputFile(TableInfo tableInfo) {
+ // 鑷畾涔夎緭鍑烘枃浠跺悕 锛� 濡傛灉浣� Entity 璁剧疆浜嗗墠鍚庣紑銆佹澶勬敞鎰� xml 鐨勫悕绉颁細璺熺潃鍙戠敓鍙樺寲锛�
+ return projectPath + model_name + "/src/main/resources/mapper/"
+ + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+ }
+ });
+
+ cfg.setFileOutConfigList(focList);
+ mpg.setCfg(cfg);
+
+ // 閰嶇疆妯℃澘
+ TemplateConfig templateConfig = new TemplateConfig()
+ .setXml(null);
+
+ mpg.setTemplate(templateConfig);
+
+ // 绛栫暐閰嶇疆
+ StrategyConfig strategy = new StrategyConfig()
+ .setNaming(NamingStrategy.underline_to_camel)
+ .setColumnNaming(NamingStrategy.underline_to_camel)
+ .setEntityLombokModel(true)
+ .setRestControllerStyle(true)
+ .setInclude(scanner("琛ㄥ悕锛屽涓┖鏍煎垎鍓�").split(" "))
+ .setControllerMappingHyphenStyle(true)
+ .setTablePrefix("m_");
+ mpg.setStrategy(strategy);
+ mpg.setTemplateEngine(new FreemarkerTemplateEngine());
+ //濡傛灉涓嶈皟鐢ㄨ鏂规硶銆佸氨浼氫娇鐢∕yBatis-Plus榛樿鐨勬枃浠剁敓鎴愯矾寰勫拰鍖呰矾寰勭敓鎴愭枃浠躲�佷絾鍙互浣跨敤涓婇潰鐨凱ackageConfig鍋氫竴浜涚畝鍗曠殑閰嶇疆
+ mpg.execute();
+ }
+
+ /**
+ * <p>
+ * 璇诲彇鎺у埗鍙板唴瀹�
+ * </p>
+ */
+ public static String scanner(String tip) {
+ Scanner scanner = new Scanner(System.in);
+ StringBuilder help = new StringBuilder();
+ help.append("璇疯緭鍏�" + tip + "锛�");
+ System.out.println(help.toString());
+ if (scanner.hasNext()) {
+ String ipt = scanner.next();
+
+ if (StringUtils.isNotBlank(ipt)) {
+ return ipt;
+ }
+ }
+ throw new MybatisPlusException("璇疯緭鍏ユ纭殑" + tip + "锛�");
+ }
+}
diff --git a/system-run/src/main/java/com/yuanchu/mom/SystemRunApplication.java b/system-run/src/main/java/com/yuanchu/mom/SystemRunApplication.java
new file mode 100644
index 0000000..4747d6e
--- /dev/null
+++ b/system-run/src/main/java/com/yuanchu/mom/SystemRunApplication.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+@MapperScan("com.yuanchu.mom.mapper")// 鎵弿Mybatis涓殑mapper鍖�
+public class SystemRunApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(SystemRunApplication.class, args);
+ }
+
+}
diff --git a/system-run/src/main/java/com/yuanchu/mom/backup/MysqlDataBackup.java b/system-run/src/main/java/com/yuanchu/mom/backup/MysqlDataBackup.java
new file mode 100644
index 0000000..af60537
--- /dev/null
+++ b/system-run/src/main/java/com/yuanchu/mom/backup/MysqlDataBackup.java
@@ -0,0 +1,190 @@
+package com.yuanchu.mom.backup;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+@EnableScheduling
+@Slf4j
+public class MysqlDataBackup {
+ /**
+ * 鏁版嵁搴撶増鏈槸鍚︿负 8.0 + 锛坒alse=鍚� true=鏄級锛� mysql8+ 闇�瑕佸弬鏁� --column-statistics=0 锛� mysql8- 涓嶉渶瑕�
+ */
+ Boolean isDbVersion8 = false;
+
+ /**
+ * 澶囦唤鍛戒护
+ * USERNAME 璐﹀彿
+ * PASSWORD 瀵嗙爜
+ * SERVERPATH 鏈嶅姟鍣↖P/鍩熷悕
+ * DBNAME 鏁版嵁搴撳悕绉�
+ * FILEPATH 澶囦唤鏂囦欢瀛樻斁鍦板潃+鍚嶇О
+ * 璇存槑
+ * cmdCompression 锛� 闇�鍘嬬缉 锛堟湰鍦版垨鏈嶅姟鍣ㄩ渶瀹夎 mysqldump 鍛戒护(瀹夎mysql鑷甫鎮g嫭绔嬪畨瑁�) + gzip 鍛戒护(鐙珛瀹夎)锛�
+ * cmd 锛� 涓嶅帇缂� (鏈湴鎴栨湇鍔″櫒闇�瀹夎 mysqldump 鍛戒护(瀹夎mysql鑷甫鎮g嫭绔嬪畨瑁�)
+ * --column-statistics=0 mysql8 娣诲姞璇ュ弬鏁�, 闈瀖ysql8 涓嶆坊鍔�, 鍚﹀垯灏嗗嚭閿�
+ */
+ String cmdMysql8 = "mysqldump --column-statistics=0 -u{USERNAME} -p{PASSWORD} -h{SERVERPATH} -P3306 --databases {DBNAME}"; // > {FILEPATH}.sql
+ String cmd = "mysqldump -u{USERNAME} -p{PASSWORD} -h{SERVERPATH} -P3306 --databases {DBNAME}"; // > {FILEPATH}.sql
+
+ /**
+ * 澶囦唤 sql 瀛樻斁鐩綍(鐩稿璺緞, 娉ㄦ剰鍙兘闇�瑕佸湪 MvcConfig 閰嶇疆璁块棶鏉冮檺)
+ */
+ @Value("${backup.path}")
+ private String filePath;
+
+ @Value("${spring.datasource.url}")
+ private String dbUrl;
+
+ @Value("${spring.datasource.username}")
+ private String dbUserName;
+
+ @Value("${spring.datasource.password}")
+ private String dbPassWord;
+
+ @Value("${backup.destiny}")
+ private Integer destiny;
+
+ @Value("${backup.mysqldump}")
+ private String mysqldump;
+
+ /**
+ * 姣忓ぉ鏅氫笂23鐐�05绉掓墽琛� 銆� 0 0 4 1/1 * ? 銆�
+ * 娴嬭瘯 20 绉掍竴娆°�� 0/20 * * * * ? 銆慇Scheduled(cron = "5 * 23 * * ?")
+ */
+ @Scheduled(cron = "5 0 23 * * ?")
+ private void configureTasks() {
+ log.info("銆愬浠芥暟鎹簱銆�--START");
+ String dbUrl2 = dbUrl.replace("jdbc:mysql://", "");
+
+ // 鑾峰彇鏁版嵁搴撳悕绉�
+ String dbName = dbUrl2.substring(dbUrl2.lastIndexOf("/") + 1, dbUrl2.indexOf("?"));
+ // 鑾峰彇鏁版嵁搴撳湴鍧�
+ String serverPath = dbUrl2.substring(0, dbUrl2.lastIndexOf(":"));
+ // 鏁版嵁搴撹处鍙�
+ String username = dbUserName;
+ // 鏁版嵁搴撳瘑鐮�
+ String password = dbPassWord;
+
+ // 澶囦唤鏂囦欢鐩綍+鍚嶇О 澶囦唤鏂囦欢瀛樻斁鐩綍+鍚嶇О(鍚嶇О = 鏁版嵁搴撳悕+鏃堕棿瀛楃涓�.sql)
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ String format = simpleDateFormat.format(new Date());
+ String timeStr = format
+ .replaceAll("-", "_")
+ .replaceAll(" ", "_")
+ .replaceAll(":", "");
+ timeStr = timeStr.substring(0, 15);
+ String pathFileName = filePath + "/" + dbName + "_" + timeStr + ".sql";
+ String newCmd = "";
+ if (isDbVersion8) {
+ newCmd = cmdMysql8;
+ } else {
+ newCmd = cmd;
+ }
+ // 鎵ц鍛戒护
+ newCmd = newCmd.replace("{USERNAME}", username)
+ .replace("{PASSWORD}", password)
+ .replace("{SERVERPATH}", serverPath)
+ .replace("{DBNAME}", dbName)
+ .replace("{FILEPATH}", pathFileName);
+ PrintWriter printWriter = null;
+ BufferedReader bufferedReader = null;
+ try {
+ // 鍒涘缓瀛樻斁sql鐨勬枃浠�
+ existsFile(new File(pathFileName));
+ printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(pathFileName), "utf8"));
+ Process process = null;
+ String property = System.getProperty("os.name");
+ System.out.println(property);
+ if (property.indexOf("Linux") != -1) {
+ // linux
+ process = Runtime.getRuntime().exec(new String[]{"bash", "-c", newCmd});
+ } else {
+ // 鏈湴win
+ String mysqldumpPath = "cmd /c " + mysqldump + "/" + newCmd;
+ System.out.println(mysqldumpPath);
+ process = Runtime.getRuntime().exec(mysqldumpPath);
+ }
+ InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), "utf8");
+ bufferedReader = new BufferedReader(inputStreamReader);
+ String line;
+ while ((line = bufferedReader.readLine()) != null) {
+ printWriter.println(line);
+ }
+ // 姝ゆ浼氭墽琛岃繃闀挎椂闂�,鐩村埌澶囦唤瀹屾垚
+ printWriter.flush();
+ printWriter.close();
+ //0 琛ㄧず绾跨▼姝e父缁堟銆�
+ if (process.waitFor() == 0) {
+ // 绾跨▼姝e父鎵ц
+ log.info("銆愬浠芥暟鎹簱銆慡UCCESS锛孲QL鏂囦欢锛歿}", pathFileName);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.info("銆愬浠芥暟鎹簱銆慒AILURE");
+ } finally {
+ try {
+ if (bufferedReader != null) {
+ bufferedReader.close();
+ }
+ if (printWriter != null) {
+ printWriter.close();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ log.info("銆愬浠芥暟鎹簱銆�--END");
+ }
+
+
+ /**
+ * 姣忓ぉ鏅氫笂23鐐�0鍒�10绉掓墽琛� 銆� 0 0 4 1/1 * ? 銆�
+ * 娴嬭瘯 20 绉掍竴娆°�� 0/20 * * * * ? 銆�
+ */
+ @Scheduled(cron = "6 0 23 * * ?")
+ private void TimerDeleteFile(){
+ Date date = new Date();
+ SimpleDateFormat sdf = new SimpleDateFormat("d");
+ Integer currentDay = Integer.valueOf(sdf.format(date));
+ File file = new File(filePath);
+ File[] files = file.listFiles();
+ if (files != null) {
+ for(File f : files){
+ if(f.isFile()){//鑻ユ槸鏂囦欢锛岀洿鎺ユ墦鍗�
+ String[] splitFile = f.getName().split("_");
+ Integer fileDay = Integer.valueOf(splitFile[splitFile.length - 2]);
+ Integer i = currentDay - fileDay;
+ if (i.equals(destiny)){
+ f.delete();
+ log.info("澶囦唤sql鏂囦欢杩囧杩涜鍒犻櫎锛�");
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * 鍒ゆ柇鏂囦欢鏄惁瀛樺湪锛屼笉瀛樺湪鍒涘缓
+ */
+ private static void existsFile(File file) {
+ // 鍒ゆ柇鏂囦欢璺緞鏄惁瀛樺湪,涓嶅瓨鍦ㄦ柊寤�
+ if (!file.getParentFile().exists()) {
+ file.getParentFile().mkdirs();
+ }
+ if (!file.exists()) {
+ try {
+ file.createNewFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/system-run/src/main/resources/application-dev.yml b/system-run/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..b49c492
--- /dev/null
+++ b/system-run/src/main/resources/application-dev.yml
@@ -0,0 +1,77 @@
+swagger:
+ enabled: true
+
+# 鏃ュ織閰嶇疆
+logging:
+ config: classpath:logback-spring.xml
+ # 鏃ュ織瀛樺偍璺緞+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
+ file-location:
+
+# 鏁版嵁搴撳浠借矾寰�
+backup:
+ # 鏁版嵁搴撳浠借矾寰�+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
+ path: E:/webapp/backup
+ # 鏁版嵁搴撳浠藉ぉ鏁�
+ destiny: 7
+ # 鏁版嵁搴撳浠藉伐鍏疯矾寰�+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
+ mysqldump: E:\JavaCode\WMS\WMS_Admin\src\main\resources
+
+# 鐓х墖瀛樺偍璺緞+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
+file:
+ path: E:/webapp/images
+
+mybatis-plus:
+ type-aliases-package: com.yuanchu.mom.pojo
+ mapper-locations: classpath*:/mapper/*.xml
+ configuration:
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 寮�鍚痬ybatis-plus鏃ュ織
+
+
+# 鏁版嵁婧愰厤缃�
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/mom_ocean?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
+ username: root
+ password: 123456
+ druid:
+ # Druid鏁版嵁婧愰厤缃�
+ initialSize: 5 # 鍒濆杩炴帴鏁�
+ minIdle: 10 # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ maxActive: 20 # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxWait: 60000 # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ timeBetweenEvictionRunsMillis: 60000 # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000 # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000 # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ validationQuery: SELECT 1 FROM DUAL # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ testWhileIdle: true #鐢宠杩炴帴鐨勬椂鍊欐娴嬶紝濡傛灉绌洪棽鏃堕棿澶т簬timeBetweenEvictionRunsMillis锛屾墽琛寁alidationQuery妫�娴嬭繛鎺ユ槸鍚︽湁鏁堛��
+ testOnBorrow: false #閰嶇疆浠庤繛鎺ユ睜鑾峰彇杩炴帴鏃讹紝鏄惁妫�鏌ヨ繛鎺ユ湁鏁堟�э紝true姣忔閮芥鏌ワ紱false涓嶆鏌ャ�傚仛浜嗚繖涓厤缃細闄嶄綆鎬ц兘銆�
+ testOnReturn: false #閰嶇疆鍚戣繛鎺ユ睜褰掕繕杩炴帴鏃讹紝鏄惁妫�鏌ヨ繛鎺ユ湁鏁堟�э紝true姣忔閮芥鏌ワ紱false涓嶆鏌ャ�傚仛浜嗚繖涓厤缃細闄嶄綆鎬ц兘銆�
+ poolPreparedStatements: true #鎵撳紑PsCache锛屽苟涓旀寚瀹氭瘡涓繛鎺ヤ笂PSCache鐨勫ぇ灏�
+ maxPoolPreparedStatementPerConnectionSize: 20
+ filters: stat,wall,log4j # 閰嶇疆鐩戞帶缁熻鎷︽埅鐨刦ilters锛屽幓鎺夊悗鐩戞帶鐣岄潰sql鏃犳硶缁熻锛�'wall'鐢ㄤ簬闃茬伀澧�
+ useGlobalDataSourceStat: true #鍚堝苟澶氫釜DruidDatasource鐨勭洃鎺ф暟鎹�
+ connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500; #閫氳繃connectProperties灞炴�ф潵鎵撳紑mergesql鍔熻兘缃楁參sQL璁板綍
+ redis:
+ # redis鏁版嵁搴撶储寮�(榛樿涓�0)锛屾垜浠娇鐢ㄧ储寮曚负3鐨勬暟鎹簱锛岄伩鍏嶅拰鍏朵粬鏁版嵁搴撳啿绐�
+ database: 0
+ # redis鏈嶅姟鍣ㄥ湴鍧�锛堥粯璁や负localhost锛�
+ host: localhost
+ # redis绔彛锛堥粯璁や负6379锛�
+ port: 6379
+ # redis璁块棶瀵嗙爜锛堥粯璁や负绌猴級
+ password: null
+ # redis杩炴帴瓒呮椂鏃堕棿锛堝崟浣嶆绉掞級
+ timeout: 10
+ # redis杩炴帴姹犻厤缃�
+ pool:
+ # 鏈�澶у彲鐢ㄨ繛鎺ユ暟锛堥粯璁や负8锛岃礋鏁拌〃绀烘棤闄愶級
+ max-active: 8
+ # 鏈�澶х┖闂茶繛鎺ユ暟锛堥粯璁や负8锛岃礋鏁拌〃绀烘棤闄愶級
+ max-idle: 8
+ # 鏈�灏忕┖闂茶繛鎺ユ暟锛堥粯璁や负0锛岃鍊煎彧鏈変负姝f暟鎵嶆湁鐢級
+ min-idle: 0
+ # 浠庤繛鎺ユ睜涓幏鍙栬繛鎺ユ渶澶х瓑寰呮椂闂达紙榛樿涓�-1锛屽崟浣嶄负姣锛岃礋鏁拌〃绀烘棤闄愶級
+ max-wait: -1
+
diff --git a/system-run/src/main/resources/application-prod.yml b/system-run/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..69ecad6
--- /dev/null
+++ b/system-run/src/main/resources/application-prod.yml
@@ -0,0 +1,76 @@
+swagger:
+ enabled: false
+
+# 鏃ュ織閰嶇疆
+logging:
+ config: classpath:logback-spring.xml
+ # 鏃ュ織瀛樺偍璺緞+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
+ file-location: /javaWork/Blog/log
+
+# 鏁版嵁搴撳浠借矾寰�
+backup:
+ # 鏁版嵁搴撳浠借矾寰�+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
+ path: /javaWork/Blog/backup
+ # 鏁版嵁搴撳浠藉ぉ鏁�+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
+ destiny: 7
+ # 鏁版嵁搴撳浠藉伐鍏疯矾寰�+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
+ mysqldump: /javaWork/Blog/conf
+
+# 鐓х墖璺緞+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
+file:
+ path: /javaWork/Blog/images
+
+mybatis-plus:
+ configuration:
+ log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl # 鍏抽棴mybatis-plus鏃ュ織
+
+# 鏁版嵁婧愰厤缃�
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/blog_crunchy?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
+ username: root
+ password: 123456
+ druid:
+ # Druid鏁版嵁婧愰厤缃�
+ initialSize: 5 # 鍒濆杩炴帴鏁�
+ minIdle: 10 # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ maxActive: 20 # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxWait: 60000 # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ timeBetweenEvictionRunsMillis: 60000 # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000 # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000 # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ validationQuery: SELECT 1 FROM DUAL # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ testWhileIdle: true #鐢宠杩炴帴鐨勬椂鍊欐娴嬶紝濡傛灉绌洪棽鏃堕棿澶т簬timeBetweenEvictionRunsMillis锛屾墽琛寁alidationQuery妫�娴嬭繛鎺ユ槸鍚︽湁鏁堛��
+ testOnBorrow: false #閰嶇疆浠庤繛鎺ユ睜鑾峰彇杩炴帴鏃讹紝鏄惁妫�鏌ヨ繛鎺ユ湁鏁堟�э紝true姣忔閮芥鏌ワ紱false涓嶆鏌ャ�傚仛浜嗚繖涓厤缃細闄嶄綆鎬ц兘銆�
+ testOnReturn: false #閰嶇疆鍚戣繛鎺ユ睜褰掕繕杩炴帴鏃讹紝鏄惁妫�鏌ヨ繛鎺ユ湁鏁堟�э紝true姣忔閮芥鏌ワ紱false涓嶆鏌ャ�傚仛浜嗚繖涓厤缃細闄嶄綆鎬ц兘銆�
+ poolPreparedStatements: true #鎵撳紑PsCache锛屽苟涓旀寚瀹氭瘡涓繛鎺ヤ笂PSCache鐨勫ぇ灏�
+ maxPoolPreparedStatementPerConnectionSize: 20
+ filters: stat,wall,log4j # 閰嶇疆鐩戞帶缁熻鎷︽埅鐨刦ilters锛屽幓鎺夊悗鐩戞帶鐣岄潰sql鏃犳硶缁熻锛�'wall'鐢ㄤ簬闃茬伀澧�
+ useGlobalDataSourceStat: true #鍚堝苟澶氫釜DruidDatasource鐨勭洃鎺ф暟鎹�
+ connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500; #閫氳繃connectProperties灞炴�ф潵鎵撳紑mergesql鍔熻兘缃楁參sQL璁板綍
+
+
+redis:
+ # redis鏁版嵁搴撶储寮�(榛樿涓�0)锛屾垜浠娇鐢ㄧ储寮曚负3鐨勬暟鎹簱锛岄伩鍏嶅拰鍏朵粬鏁版嵁搴撳啿绐�
+ database: 0
+ # redis鏈嶅姟鍣ㄥ湴鍧�锛堥粯璁や负loaclhost锛�
+ host: 127.0.0.1
+ # redis绔彛锛堥粯璁や负6379锛�
+ port: 6379
+ # redis璁块棶瀵嗙爜锛堥粯璁や负绌猴級
+ # password:
+ # redis杩炴帴瓒呮椂鏃堕棿锛堝崟浣嶆绉掞級
+ timeout: 0
+ # redis杩炴帴姹犻厤缃�
+ pool:
+ # 鏈�澶у彲鐢ㄨ繛鎺ユ暟锛堥粯璁や负8锛岃礋鏁拌〃绀烘棤闄愶級
+ max-active: 8
+ # 鏈�澶х┖闂茶繛鎺ユ暟锛堥粯璁や负8锛岃礋鏁拌〃绀烘棤闄愶級
+ max-idle: 8
+ # 鏈�灏忕┖闂茶繛鎺ユ暟锛堥粯璁や负0锛岃鍊煎彧鏈変负姝f暟鎵嶆湁鐢級
+ min-idle: 0
+ # 浠庤繛鎺ユ睜涓幏鍙栬繛鎺ユ渶澶х瓑寰呮椂闂达紙榛樿涓�-1锛屽崟浣嶄负姣锛岃礋鏁拌〃绀烘棤闄愶級
+ max-wait: -1
+
diff --git a/system-run/src/main/resources/application.yml b/system-run/src/main/resources/application.yml
new file mode 100644
index 0000000..696df2f
--- /dev/null
+++ b/system-run/src/main/resources/application.yml
@@ -0,0 +1,23 @@
+server:
+ port: 8001
+spring:
+ profiles:
+ active: dev
+
+mybatis-plus:
+ type-aliases-package: com.yuanchu.mom.pojo
+ mapper-locations: classpath*:/mapper/*Mapper.xml
+ global-config:
+ banner: off # 鍏抽棴mybatis-plus鍚姩鍥炬爣
+
+feign:
+ client:
+ config:
+ default:
+ connectTimeout: 2000
+ readTimeout: 3000
+ loggerLevel: FULL
+ httpclient:
+ enabled: false # 鍏抽棴 httpclient
+ okhttp:
+ enabled: true # 寮�鍚� okhttp
diff --git a/system-run/src/main/resources/logback-spring.xml b/system-run/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..9c97a9f
--- /dev/null
+++ b/system-run/src/main/resources/logback-spring.xml
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 鏃ュ織绾у埆浠庝綆鍒伴珮鍒嗕负TRACE < DEBUG < INFO < WARN < ERROR < FATAL锛屾瘮濡�: 濡傛灉璁剧疆涓篧ARN锛屽垯浣庝簬WARN鐨勪俊鎭兘涓嶄細杈撳嚭 -->
+<!-- scan:褰撴灞炴�ц缃负true鏃讹紝閰嶇疆鏂囨。濡傛灉鍙戠敓鏀瑰彉锛屽皢浼氳閲嶆柊鍔犺浇锛岄粯璁ゅ�间负true -->
+<!-- scanPeriod:璁剧疆鐩戞祴閰嶇疆鏂囨。鏄惁鏈変慨鏀圭殑鏃堕棿闂撮殧锛屽鏋滄病鏈夌粰鍑烘椂闂村崟浣嶏紝榛樿鍗曚綅鏄绉掋�傚綋scan涓簍rue鏃讹紝姝ゅ睘鎬х敓鏁堛�傞粯璁ょ殑鏃堕棿闂撮殧涓�1鍒嗛挓銆� -->
+<!-- debug:褰撴灞炴�ц缃负true鏃讹紝灏嗘墦鍗板嚭logback鍐呴儴鏃ュ織淇℃伅锛屽疄鏃舵煡鐪媗ogback杩愯鐘舵�併�傞粯璁ゅ�间负false銆� -->
+<configuration scan="true" scanPeriod="10 seconds">
+ <contextName>logback</contextName>
+
+ <!-- name鐨勫�兼槸鍙橀噺鐨勫悕绉帮紝value鐨勫�兼椂鍙橀噺瀹氫箟鐨勫�笺�傞�氳繃瀹氫箟鐨勫�间細琚彃鍏ュ埌logger涓婁笅鏂囦腑銆傚畾涔夊悗锛屽彲浠ヤ娇鈥�${}鈥濇潵浣跨敤鍙橀噺銆� -->
+ <springProperty scope="context" name="logs" source="logging.file-location" default="/var/log/myapp"/>
+ <property name="log.path" value="${logs}"/>
+
+ <!--0. 鏃ュ織鏍煎紡鍜岄鑹叉覆鏌� -->
+ <!-- 褰╄壊鏃ュ織渚濊禆鐨勬覆鏌撶被 -->
+ <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+ <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+ <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+ <!-- 褰╄壊鏃ュ織鏍煎紡 -->
+ <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+ <!--1. 杈撳嚭鍒版帶鍒跺彴-->
+ <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+ <!--姝ゆ棩蹇梐ppender鏄负寮�鍙戜娇鐢紝鍙厤缃渶搴曠骇鍒紝鎺у埗鍙拌緭鍑虹殑鏃ュ織绾у埆鏄ぇ浜庢垨绛変簬姝ょ骇鍒殑鏃ュ織淇℃伅-->
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>debug</level>
+ </filter>
+ <encoder>
+ <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+ <!-- 璁剧疆瀛楃闆� -->
+ <charset>UTF-8</charset>
+ </encoder>
+ </appender>
+
+ <!--2. 杈撳嚭鍒版枃妗�-->
+ <!-- 2.1 level涓� DEBUG 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑� -->
+ <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+ <file>${log.path}/debug.log</file>
+ <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+ <encoder>
+ <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+ <charset>UTF-8</charset> <!-- 璁剧疆瀛楃闆� -->
+ </encoder>
+ <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- 鏃ュ織褰掓。 -->
+ <fileNamePattern>${log.path}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+ <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+ <maxFileSize>100MB</maxFileSize>
+ </timeBasedFileNamingAndTriggeringPolicy>
+ <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍debug绾у埆鐨� -->
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>debug</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ </appender>
+
+ <!-- 2.2 level涓� INFO 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑� -->
+ <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+ <file>${log.path}/info.log</file>
+ <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+ <encoder>
+ <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+ <charset>UTF-8</charset>
+ </encoder>
+ <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!-- 姣忓ぉ鏃ュ織褰掓。璺緞浠ュ強鏍煎紡 -->
+ <fileNamePattern>${log.path}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+ <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+ <maxFileSize>100MB</maxFileSize>
+ </timeBasedFileNamingAndTriggeringPolicy>
+ <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍info绾у埆鐨� -->
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>info</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ </appender>
+
+ <!-- 2.3 level涓� WARN 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑� -->
+ <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+ <file>${log.path}/warn.log</file>
+ <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+ <encoder>
+ <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+ <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+ </encoder>
+ <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${log.path}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+ <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+ <maxFileSize>100MB</maxFileSize>
+ </timeBasedFileNamingAndTriggeringPolicy>
+ <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍warn绾у埆鐨� -->
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>warn</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ </appender>
+
+ <!-- 2.4 level涓� ERROR 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑� -->
+ <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+ <file>${log.path}/error.log</file>
+ <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+ <encoder>
+ <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+ <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+ </encoder>
+ <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${log.path}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+ <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+ <maxFileSize>100MB</maxFileSize>
+ </timeBasedFileNamingAndTriggeringPolicy>
+ <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍ERROR绾у埆鐨� -->
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>ERROR</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ </appender>
+
+ <!-- 2.5 鎵�鏈� 闄や簡DEBUG绾у埆鐨勫叾瀹冮珮浜嶥EBUG鐨� 鏃ュ織锛岃褰曞埌涓�涓枃浠� -->
+ <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+ <file>${log.path}/all.log</file>
+ <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+ <encoder>
+ <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+ <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+ </encoder>
+ <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${log.path}/all-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+ <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+ <maxFileSize>100MB</maxFileSize>
+ </timeBasedFileNamingAndTriggeringPolicy>
+ <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <!-- 姝ゆ棩蹇楁枃妗h褰曢櫎浜咲EBUG绾у埆鐨勫叾瀹冮珮浜嶥EBUG鐨� -->
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>DEBUG</level>
+ <onMatch>DENY</onMatch>
+ <onMismatch>ACCEPT</onMismatch>
+ </filter>
+ </appender>
+
+ <!--
+ <logger>鐢ㄦ潵璁剧疆鏌愪竴涓寘鎴栬�呭叿浣撶殑鏌愪竴涓被鐨勬棩蹇楁墦鍗扮骇鍒��
+ 浠ュ強鎸囧畾<appender>銆�<logger>浠呮湁涓�涓猲ame灞炴�э紝
+ 涓�涓彲閫夌殑level鍜屼竴涓彲閫夌殑addtivity灞炴�с��
+ name:鐢ㄦ潵鎸囧畾鍙楁logger绾︽潫鐨勬煇涓�涓寘鎴栬�呭叿浣撶殑鏌愪竴涓被銆�
+ level:鐢ㄦ潵璁剧疆鎵撳嵃绾у埆锛屽ぇ灏忓啓鏃犲叧锛歍RACE, DEBUG, INFO, WARN, ERROR, ALL 鍜� OFF锛�
+ 杩樻湁涓�涓壒娈婂�糏NHERITED鎴栬�呭悓涔夎瘝NULL锛屼唬琛ㄥ己鍒舵墽琛屼笂绾х殑绾у埆銆�
+ 濡傛灉鏈缃灞炴�э紝閭d箞褰撳墠logger灏嗕細缁ф壙涓婄骇鐨勭骇鍒��
+ addtivity:鏄惁鍚戜笂绾ogger浼犻�掓墦鍗颁俊鎭�傞粯璁ゆ槸true銆�
+ <logger name="org.springframework.web" level="info"/>
+ <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
+ -->
+
+ <!--
+ 浣跨敤mybatis鐨勬椂鍊欙紝sql璇彞鏄痙ebug涓嬫墠浼氭墦鍗帮紝鑰岃繖閲屾垜浠彧閰嶇疆浜唅nfo锛屾墍浠ユ兂瑕佹煡鐪媠ql璇彞鐨勮瘽锛屾湁浠ヤ笅涓ょ鎿嶄綔锛�
+ 绗竴绉嶆妸<root level="info">鏀规垚<root level="DEBUG">杩欐牱灏变細鎵撳嵃sql锛屼笉杩囪繖鏍锋棩蹇楅偅杈逛細鍑虹幇寰堝鍏朵粬娑堟伅
+ 绗簩绉嶅氨鏄崟鐙粰dao涓嬬洰褰曢厤缃甦ebug妯″紡锛屼唬鐮佸涓嬶紝杩欐牱閰嶇疆sql璇彞浼氭墦鍗帮紝鍏朵粬杩樻槸姝e父info绾у埆锛�
+ 銆恖ogging.level.org.mybatis=debug logging.level.dao=debug銆�
+ -->
+
+ <!--
+ root鑺傜偣鏄繀閫夎妭鐐癸紝鐢ㄦ潵鎸囧畾鏈�鍩虹鐨勬棩蹇楄緭鍑虹骇鍒紝鍙湁涓�涓猯evel灞炴��
+ level:鐢ㄦ潵璁剧疆鎵撳嵃绾у埆锛屽ぇ灏忓啓鏃犲叧锛歍RACE, DEBUG, INFO, WARN, ERROR, ALL 鍜� OFF锛�
+ 涓嶈兘璁剧疆涓篒NHERITED鎴栬�呭悓涔夎瘝NULL銆傞粯璁ゆ槸DEBUG
+ 鍙互鍖呭惈闆朵釜鎴栧涓厓绱狅紝鏍囪瘑杩欎釜appender灏嗕細娣诲姞鍒拌繖涓猯ogger銆�
+ -->
+
+
+
+
+ <!-- 4 鏈�缁堢殑绛栫暐锛�
+ 鍩烘湰绛栫暐(root绾�) + 鏍规嵁profile鍦ㄥ惎鍔ㄦ椂, logger鏍囩涓畾鍒跺寲package鏃ュ織绾у埆(浼樺厛绾ч珮浜庝笂闈㈢殑root绾�)-->
+ <springProfile name="dev">
+ <root level="info">
+ <appender-ref ref="CONSOLE" />
+ <appender-ref ref="DEBUG_FILE" />
+ <appender-ref ref="INFO_FILE" />
+ <appender-ref ref="WARN_FILE" />
+ <appender-ref ref="ERROR_FILE" />
+ <appender-ref ref="ALL_FILE" />
+ </root>
+ <logger name="com.yuanchu.limslaboratory.SysApplication" level="debug"/> <!-- 寮�鍙戠幆澧�, 鎸囧畾鏌愬寘鏃ュ織涓篸ebug绾� -->
+ </springProfile>
+
+ <springProfile name="test">
+ <root level="info">
+ <appender-ref ref="CONSOLE" />
+ <appender-ref ref="DEBUG_FILE" />
+ <appender-ref ref="INFO_FILE" />
+ <appender-ref ref="WARN_FILE" />
+ <appender-ref ref="ERROR_FILE" />
+ <appender-ref ref="ALL_FILE" />
+ </root>
+ <logger name="com.yuanchu.limslaboratory.SysApplication" level="info"/> <!-- 娴嬭瘯鐜, 鎸囧畾鏌愬寘鏃ュ織涓篿nfo绾� -->
+ </springProfile>
+
+ <springProfile name="prod">
+ <root level="info">
+ <!-- 鐢熶骇鐜鏈�濂戒笉閰嶇疆console鍐欐枃浠� -->
+ <appender-ref ref="DEBUG_FILE" />
+ <appender-ref ref="INFO_FILE" />
+ <appender-ref ref="WARN_FILE" />
+ <appender-ref ref="ERROR_FILE" />
+ <appender-ref ref="ALL_FILE" />
+ </root>
+ <logger name="com.yuanchu.limslaboratory" level="warn"/> <!-- 鐢熶骇鐜, 鎸囧畾鏌愬寘鏃ュ織涓簑arn绾� -->
+ <logger name="com.yuanchu.limslaboratory.SysApplication" level="info"/> <!-- 鐗瑰畾鏌愪釜绫绘墦鍗癷nfo鏃ュ織, 姣斿application鍚姩鎴愬姛鍚庣殑鎻愮ず璇� -->
+ </springProfile>
+
+</configuration>
diff --git a/system-run/src/main/resources/mysqldump.exe b/system-run/src/main/resources/mysqldump.exe
new file mode 100644
index 0000000..9f4ce5e
--- /dev/null
+++ b/system-run/src/main/resources/mysqldump.exe
Binary files differ
diff --git a/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java b/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
new file mode 100644
index 0000000..19b2b6e
--- /dev/null
+++ b/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
@@ -0,0 +1,57 @@
+package com.yuanchu.mom;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class SystemRunApplicationTest {
+
+ @Test
+ void contextLoads() {
+ int i = checkValues(">=2", "=0", "0");
+ System.out.println(i);
+ }
+
+ public int checkValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
+ boolean isStandardValueSatisfied = isValueSatisfied(standardValueStr, detectionValueStr);
+ boolean isControlValueSatisfied = isValueSatisfied(controlValueStr, detectionValueStr);
+
+ if (isStandardValueSatisfied && isControlValueSatisfied) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+
+ private boolean isValueSatisfied(String valueStr, String detectionValueStr) {
+ String substring = valueStr.substring(1,2);
+ if (substring.equals("=")) {
+ String operator = valueStr.substring(0, 2);
+ Double standardValue = Double.parseDouble(valueStr.substring(2));
+ Double detectionValue = Double.parseDouble(detectionValueStr);
+ switch (operator){
+ case ">=":
+ return detectionValue >= standardValue;
+ case "<=":
+ return detectionValue <= standardValue;
+ default:
+ return false;
+ }
+ }else {
+ String operator = valueStr.substring(0,1);
+ Double standardValue = Double.parseDouble(valueStr.substring(1));
+ Double detectionValue = Double.parseDouble(detectionValueStr);
+ switch (operator){
+ case ">":
+ return detectionValue > standardValue;
+ case "<":
+ return detectionValue < standardValue;
+ case "=":
+ return detectionValue.equals(standardValue);
+ default:
+ return false;
+ }
+ }
+ }
+
+}
diff --git a/user-server/pom.xml b/user-server/pom.xml
new file mode 100644
index 0000000..256d010
--- /dev/null
+++ b/user-server/pom.xml
@@ -0,0 +1,24 @@
+<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mom</artifactId>
+ <groupId>com.yuanchu.mom</groupId>
+ <version>1.0.0</version>
+ </parent>
+
+ <artifactId>user-server</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <name>user-server</name>
+ <description>user-server</description>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.yuanchu.mom</groupId>
+ <artifactId>framework</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/user-server/src/main/java/com/yuanchu/mom/controller/UserController.java b/user-server/src/main/java/com/yuanchu/mom/controller/UserController.java
new file mode 100644
index 0000000..166fbd5
--- /dev/null
+++ b/user-server/src/main/java/com/yuanchu/mom/controller/UserController.java
@@ -0,0 +1,68 @@
+package com.yuanchu.mom.controller;
+
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.UserService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.utils.Jwt;
+import com.yuanchu.mom.utils.RedisUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@RequestMapping("/user")
+@RestController
+@Api(tags = "鐢ㄦ埛妯″潡")
+public class UserController {
+
+ @Autowired
+ UserService userService;
+
+ @Autowired
+ private Jwt jwt;
+
+ @ApiOperation(value = "鐧诲綍")
+ @PostMapping("/enter")
+ public Result login(String account, String password) {
+ User user = userService.selectUserByPwd(account, password);
+ if (user==null) return Result.fail("鐧诲綍澶辫触");
+ String jwtToken = jwt.createJwt(user.getName(), user.getId(), 60);
+ String jwtReToken = jwt.createJwt(user.getName(), user.getId(), 24 * 60);
+ RedisUtil.set("" + user.getId(), jwtToken, 60);
+ RedisUtil.set(user.getId() + "Re", jwtReToken, 24 * 60);
+ Map<String, String> map = new HashMap<>();
+ map.put("token", jwtToken);
+ map.put("reToken", jwtReToken);
+ map.put("name", user.getName());
+ return Result.success("鐧诲綍鎴愬姛", map);
+ }
+
+ @PostMapping("/refresh")
+ public Result refresh(String reToken) throws Exception {
+ Map<String, String> map = new Jwt().readJWT(reToken);
+ Map<String, String> maps = JackSonUtil.unmarshal(map.get("data"), Map.class);
+ if (map.get("state").equals("0")) {
+ String redisToken = String.valueOf(RedisUtil.get(maps.get("id") + "Re"));
+ if (!redisToken.equals(reToken)) {
+ return Result.success("涓嶅瓨鍦ㄧ殑token", "1");
+ } else if (redisToken.equals(reToken)) {
+ int id = Integer.parseInt(maps.get("id").replaceAll("\"", ""));
+ String name = maps.get("name").replaceAll("\"", "");
+ String jwtToken = jwt.createJwt(name, id, 60);
+ String jwtReToken = jwt.createJwt(name, id, 24 * 60);
+ RedisUtil.set("" + id, jwtToken, 60);
+ RedisUtil.set(id + "Re", jwtReToken, 24 * 60);
+ Map<String, String> map1 = new HashMap<>();
+ map1.put("token", jwtToken);
+ map1.put("reToken", jwtReToken);
+ return Result.success("鍒锋柊鎴愬姛", map1);
+ }
+ }
+ return Result.fail(map.get("info"));
+ }
+
+}
diff --git a/user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java b/user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java
new file mode 100644
index 0000000..99a6940
--- /dev/null
+++ b/user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java
@@ -0,0 +1,11 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.User;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface UserMapper extends BaseMapper<User> {
+}
diff --git a/user-server/src/main/java/com/yuanchu/mom/pojo/User.java b/user-server/src/main/java/com/yuanchu/mom/pojo/User.java
new file mode 100644
index 0000000..d8ba49b
--- /dev/null
+++ b/user-server/src/main/java/com/yuanchu/mom/pojo/User.java
@@ -0,0 +1,39 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class User {
+
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+ private String account;
+
+ private String password;
+
+ private String name;
+
+ private int state;
+
+ @TableField(fill = FieldFill.INSERT)
+ private Date createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Date updateTime;
+
+ private int version;
+
+}
diff --git a/user-server/src/main/java/com/yuanchu/mom/service/UserService.java b/user-server/src/main/java/com/yuanchu/mom/service/UserService.java
new file mode 100644
index 0000000..ed64ed1
--- /dev/null
+++ b/user-server/src/main/java/com/yuanchu/mom/service/UserService.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.User;
+
+import java.util.List;
+import java.util.Map;
+
+public interface UserService {
+
+ /*鍒ゆ柇鏄惁鐧诲綍鎴愬姛*/
+ User selectUserByPwd(String account, String password);
+
+ //鏍规嵁鐢ㄦ埛id鏌ヨ鐢ㄦ埛鍚�
+ String selectNameById(Integer id);
+
+ /**
+ * 妫�楠屾ā鍧�-->OMS绠$悊-->鎴愬搧妫�楠�-->鏂板(闇�瑕佺敤鎴稩d涓庡悕绉�)
+ */
+ List<Map<String, Object>> listUserIdAndName();
+}
diff --git a/user-server/src/main/java/com/yuanchu/mom/service/imp/UserServiceImp.java b/user-server/src/main/java/com/yuanchu/mom/service/imp/UserServiceImp.java
new file mode 100644
index 0000000..b9b108f
--- /dev/null
+++ b/user-server/src/main/java/com/yuanchu/mom/service/imp/UserServiceImp.java
@@ -0,0 +1,42 @@
+package com.yuanchu.mom.service.imp;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.UserService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.DigestUtils;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class UserServiceImp implements UserService {
+
+ @Resource
+ UserMapper userMapper;
+
+ @Override
+ public User selectUserByPwd(String account, String password) {
+ QueryWrapper<User> wrapper = new QueryWrapper<>();
+ wrapper.eq("account", account).eq("password", DigestUtils.md5DigestAsHex(password.getBytes()));
+ List<User> list = userMapper.selectList(wrapper);
+ return list.size()>0?list.get(0):null;
+ }
+
+ //鏍规嵁鐢ㄦ埛id鏌ヨ鐢ㄦ埛鍚�
+ @Override
+ public String selectNameById(Integer id) {
+ User user = userMapper.selectById(id);
+ return user.getName();
+ }
+
+ @Override
+ public List<Map<String, Object>> listUserIdAndName() {
+ LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
+ wrapper.select(User::getId, User::getName);
+ return userMapper.selectMaps(wrapper);
+ }
+}
diff --git a/user-server/src/main/resources/mapper/UserMapper.xml b/user-server/src/main/resources/mapper/UserMapper.xml
new file mode 100644
index 0000000..7f7653f
--- /dev/null
+++ b/user-server/src/main/resources/mapper/UserMapper.xml
@@ -0,0 +1,5 @@
+<?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.yuanchu.mom.mapper.UserMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/user-server/src/test/java/com/yuanchu/mom/SystemRunApplicationTests.java b/user-server/src/test/java/com/yuanchu/mom/SystemRunApplicationTests.java
new file mode 100644
index 0000000..03c0492
--- /dev/null
+++ b/user-server/src/test/java/com/yuanchu/mom/SystemRunApplicationTests.java
@@ -0,0 +1,13 @@
+package com.yuanchu.mom;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class SystemRunApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
--
Gitblit v1.9.3