Forráskód Böngészése

Merge remote-tracking branch 'origin/master'

lfx 7 hónapja%!(EXTRA string=óta)
szülő
commit
02c0050280
100 módosított fájl, 4229 hozzáadás és 383 törlés
  1. 4 14
      mjava-jiangshi/pom.xml
  2. 4 6
      mjava-jiangshi/src/main/java/com/malk/jiangshi/JiangshiApplication.java
  3. 18 0
      mjava-boyang/src/main/java/com/malk/boyang/controller/BoyangController.java
  4. 7 0
      mjava-boyang/src/main/java/com/malk/boyang/service/BoyangService.java
  5. 27 0
      mjava-boyang/src/main/java/com/malk/boyang/service/impl/BoyangServiceImpl.java
  6. 403 0
      mjava-boyang/src/main/java/com/malk/boyang/utils/HTTPHelper.java
  7. 26 0
      mjava-boyang/src/main/resources/application-dev.yml
  8. 26 0
      mjava-boyang/src/main/resources/application-prod.yml
  9. 0 0
      mjava-boyang/src/main/resources/application.yml
  10. 0 0
      mjava-boyang/src/main/resources/logback-spring.xml
  11. 184 0
      mjava-boyang/src/test/java/com/malk/boyang/Test.java
  12. 10 0
      mjava-diwei/pom.xml
  13. 0 29
      mjava-diwei/src/main/java/com/malk/diwei/controller/ClientController.java
  14. 138 0
      mjava-diwei/src/main/java/com/malk/diwei/controller/DiweiController.java
  15. 0 20
      mjava-diwei/src/main/java/com/malk/diwei/controller/GoodsController.java
  16. 0 29
      mjava-diwei/src/main/java/com/malk/diwei/controller/ProcStepController.java
  17. 67 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/Bom.java
  18. 76 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/BomItem.java
  19. 37 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/Department.java
  20. 46 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/Employee.java
  21. 33 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/GoodsParts.java
  22. 41 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/GoodsStock.java
  23. 145 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/Process.java
  24. 80 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/ProcessItem.java
  25. 50 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/ProcessMaterial.java
  26. 117 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/SalesOrder.java
  27. 80 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/SalesOrderItem.java
  28. 76 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/WorkProcStep.java
  29. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/BomItemMapper.java
  30. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/BomMapper.java
  31. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/DepartmentMapper.java
  32. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/EmployeeMapper.java
  33. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/GoodsPartsMapper.java
  34. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/GoodsStockMapper.java
  35. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/ProcessItemMapper.java
  36. 37 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/ProcessMapper.java
  37. 24 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/ProcessMaterialMapper.java
  38. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/SalesOrderItemMapper.java
  39. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/SalesOrderMapper.java
  40. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/WorkProcStepMapper.java
  41. 16 0
      mjava-diwei/src/main/java/com/malk/diwei/service/BomItemService.java
  42. 16 0
      mjava-diwei/src/main/java/com/malk/diwei/service/BomService.java
  43. 16 0
      mjava-diwei/src/main/java/com/malk/diwei/service/DepartmentService.java
  44. 9 0
      mjava-diwei/src/main/java/com/malk/diwei/service/DiweiService.java
  45. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/service/EmployeeService.java
  46. 16 0
      mjava-diwei/src/main/java/com/malk/diwei/service/GoodsPartsService.java
  47. 10 0
      mjava-diwei/src/main/java/com/malk/diwei/service/GoodsService.java
  48. 16 0
      mjava-diwei/src/main/java/com/malk/diwei/service/ProcessItemService.java
  49. 16 0
      mjava-diwei/src/main/java/com/malk/diwei/service/ProcessMaterialService.java
  50. 27 0
      mjava-diwei/src/main/java/com/malk/diwei/service/ProcessService.java
  51. 16 0
      mjava-diwei/src/main/java/com/malk/diwei/service/SalesOrderItemService.java
  52. 20 0
      mjava-diwei/src/main/java/com/malk/diwei/service/SalesOrderService.java
  53. 16 0
      mjava-diwei/src/main/java/com/malk/diwei/service/WorkProcStepService.java
  54. 20 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/BomItemServiceImpl.java
  55. 20 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/BomServiceImpl.java
  56. 20 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/DepartmentServiceImpl.java
  57. 49 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/DiweiServiceImpl.java
  58. 69 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/EmployeeServiceImpl.java
  59. 20 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/GoodsPartsServiceImpl.java
  60. 288 1
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/GoodsServiceImpl.java
  61. 0 1
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/ProcStepServiceImpl.java
  62. 20 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/ProcessItemServiceImpl.java
  63. 20 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/ProcessMaterialServiceImpl.java
  64. 733 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/ProcessServiceImpl.java
  65. 20 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/SalesOrderItemServiceImpl.java
  66. 160 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/SalesOrderServiceImpl.java
  67. 20 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/WorkProcStepServiceImpl.java
  68. 1 1
      mjava-diwei/src/main/java/com/malk/diwei/utils/MPGenerator.java
  69. 24 7
      mjava-diwei/src/main/resources/application-prod.yml
  70. 5 0
      mjava-diwei/src/main/resources/mapper/BomItemMapper.xml
  71. 5 0
      mjava-diwei/src/main/resources/mapper/BomMapper.xml
  72. 5 0
      mjava-diwei/src/main/resources/mapper/DepartmentMapper.xml
  73. 5 0
      mjava-diwei/src/main/resources/mapper/EmployeeMapper.xml
  74. 5 0
      mjava-diwei/src/main/resources/mapper/GoodsPartsMapper.xml
  75. 5 0
      mjava-diwei/src/main/resources/mapper/GoodsSizeMapper.xml
  76. 5 0
      mjava-diwei/src/main/resources/mapper/GoodsStockMapper.xml
  77. 5 0
      mjava-diwei/src/main/resources/mapper/ProcessItemMapper.xml
  78. 252 0
      mjava-diwei/src/main/resources/mapper/ProcessMapper.xml
  79. 43 0
      mjava-diwei/src/main/resources/mapper/ProcessMaterialMapper.xml
  80. 5 0
      mjava-diwei/src/main/resources/mapper/SalesOrderItemMapper.xml
  81. 5 0
      mjava-diwei/src/main/resources/mapper/SalesOrderMapper.xml
  82. 5 0
      mjava-diwei/src/main/resources/mapper/SizeMapper.xml
  83. 5 0
      mjava-diwei/src/main/resources/mapper/WorkProcStepMapper.xml
  84. 22 0
      mjava-diwei/src/test/java/com/malk/diwei/DwTest.java
  85. 0 42
      mjava-jiangshi/src/main/java/com/malk/jiangshi/controller/JiangshiController.java
  86. 0 33
      mjava-jiangshi/src/main/java/com/malk/jiangshi/entity/Product.java
  87. 0 9
      mjava-jiangshi/src/main/java/com/malk/jiangshi/mapper/ProductMapper.java
  88. 0 14
      mjava-jiangshi/src/main/java/com/malk/jiangshi/service/JiangshiService.java
  89. 0 44
      mjava-jiangshi/src/main/java/com/malk/jiangshi/service/impl/JiangshiServiceImpl.java
  90. 0 59
      mjava-jiangshi/src/main/resources/application-dev.yml
  91. 0 49
      mjava-jiangshi/src/main/resources/application-prod.yml
  92. 0 8
      mjava-jiangshi/src/main/resources/mapper/ProductMapper.xml
  93. 7 0
      mjava-jianhui/src/main/java/com/malk/jianhui/controller/JianhuiController.java
  94. 2 0
      mjava-jianhui/src/main/java/com/malk/jianhui/entity/DefectEntity.java
  95. 2 0
      mjava-jianhui/src/main/java/com/malk/jianhui/service/JianhuiService.java
  96. 123 16
      mjava-jianhui/src/main/java/com/malk/jianhui/service/impl/JianhuiServiceImpl.java
  97. 1 1
      mjava-kabeiyi/src/main/java/com/malk/kabeiyi/controller/KabeiyiController.java
  98. 68 0
      mjava-lianxiang/pom.xml
  99. 17 0
      mjava-lianxiang/src/main/java/com/malk/lianxiang/LianXiangApplication.java
  100. 0 0
      mjava-lianxiang/src/main/java/com/malk/lianxiang/controller/LianxiangController.java

+ 4 - 14
mjava-jiangshi/pom.xml

@@ -3,7 +3,6 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
@@ -11,15 +10,15 @@
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
 
-    <groupId>com.malk.jiangshi</groupId>
-    <artifactId>mjava-jiangshi</artifactId>
-    <version>1.0-SNAPSHOT</version>
+    <groupId>com.malk.boyang</groupId>
+    <artifactId>mjava-boyang</artifactId>
 
     <properties>
         <maven.compiler.source>8</maven.compiler.source>
         <maven.compiler.target>8</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -30,20 +29,11 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>3.5.3.2</version>
-        </dependency>
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-        </dependency>
         <dependency>
             <groupId>com.malk</groupId>
             <artifactId>base</artifactId>
@@ -52,7 +42,7 @@
     </dependencies>
 
     <build>
-        <finalName>jiangshi</finalName>
+        <finalName>boyang</finalName>
         <plugins>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>

+ 4 - 6
mjava-jiangshi/src/main/java/com/malk/jiangshi/JiangshiApplication.java

@@ -1,17 +1,15 @@
-package com.malk.jiangshi;
+package com.malk.boyang;
 
-import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
-@SpringBootApplication
+@SpringBootApplication(scanBasePackages = {"com.malk"})
 @EnableScheduling
-@MapperScan("com.malk.jiangshi.mapper")
-public class JiangshiApplication {
+public class BoyangApplication {
     public static void main(String[] args) {
         try {
-            SpringApplication.run(JiangshiApplication.class,args);
+            SpringApplication.run(BoyangApplication.class,args);
         }catch (Exception e){
             e.printStackTrace();
         }

+ 18 - 0
mjava-boyang/src/main/java/com/malk/boyang/controller/BoyangController.java

@@ -0,0 +1,18 @@
+package com.malk.boyang.controller;
+
+import com.malk.boyang.service.BoyangService;
+import com.malk.server.common.McR;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping
+public class BoyangController {
+
+    @Autowired
+    private BoyangService boyangService;
+
+
+
+}

+ 7 - 0
mjava-boyang/src/main/java/com/malk/boyang/service/BoyangService.java

@@ -0,0 +1,7 @@
+package com.malk.boyang.service;
+
+import com.malk.server.common.McR;
+
+public interface BoyangService {
+
+}

+ 27 - 0
mjava-boyang/src/main/java/com/malk/boyang/service/impl/BoyangServiceImpl.java

@@ -0,0 +1,27 @@
+package com.malk.boyang.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.malk.boyang.service.BoyangService;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.common.McR;
+import com.malk.server.dingtalk.DDR_New;
+import com.malk.service.aliwork.YDClient;
+import com.malk.service.dingtalk.DDClient;
+import com.malk.utils.UtilHttp;
+import com.malk.utils.UtilMap;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Slf4j
+@Service
+public class BoyangServiceImpl implements BoyangService {
+
+}

+ 403 - 0
mjava-boyang/src/main/java/com/malk/boyang/utils/HTTPHelper.java

@@ -0,0 +1,403 @@
+package com.malk.boyang.utils;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.UnknownHostException;
+import java.text.MessageFormat;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class HTTPHelper {
+    // slf4j日志记录器
+    private static final Logger LOG = LoggerFactory.getLogger(HTTPHelper.class);
+    // 结尾符
+    private static final String LINE_FEED = "\r\n";
+
+    /***
+     * 向指定URL发送GET方法的请求
+     *
+     * @param apiUrl
+     * @param data
+     * @param projectId
+     * @param signature
+     * @param encoding
+     * @return
+     * @throws Exception
+     */
+    public static String sendGet(String apiUrl, LinkedHashMap<String, String> headers,
+                                 String encoding) throws Exception {
+        // 获得响应内容
+        String http_RespContent = null;
+        HttpURLConnection httpURLConnection = null;
+        int http_StatusCode = 0;
+        String http_RespMessage = null;
+        try {
+            LOG.info(">>>> 实际请求Url: " + apiUrl);
+
+            // 建立连接
+            URL url = new URL(apiUrl);
+            httpURLConnection = (HttpURLConnection) url.openConnection();
+            // 需要输出
+            httpURLConnection.setDoOutput(true);
+            // 需要输入
+            httpURLConnection.setDoInput(true);
+            // 不允许缓存
+            httpURLConnection.setUseCaches(false);
+            // HTTP请求方式
+            httpURLConnection.setRequestMethod("GET");
+            // 设置Headers
+            if (null != headers) {
+                for (String key : headers.keySet()) {
+                    httpURLConnection.setRequestProperty(key, headers.get(key));
+                }
+            }
+            // 连接会话
+            httpURLConnection.connect();
+            // 获得响应状态(HTTP状态码)
+            http_StatusCode = httpURLConnection.getResponseCode();
+            // 获得响应消息(HTTP状态码描述)
+            http_RespMessage = httpURLConnection.getResponseMessage();
+            // 获得响应内容
+            if (HttpURLConnection.HTTP_OK == http_StatusCode) {
+                // 返回响应结果
+                http_RespContent = getResponseContent(httpURLConnection);
+            } else {
+                // 返回非200状态时响应结果
+                http_RespContent = getErrorResponseContent(httpURLConnection);
+                String msg =
+                        MessageFormat.format("请求失败: Http状态码 = {0} , {1}", http_StatusCode, http_RespMessage);
+                LOG.info(msg);
+            }
+        } catch (UnknownHostException e) {
+            String message = MessageFormat.format("网络请求时发生异常: {0}", e.getMessage());
+            Exception ex = new Exception(message);
+            ex.initCause(e);
+            throw ex;
+        } catch (MalformedURLException e) {
+            String message = MessageFormat.format("格式错误的URL: {0}", e.getMessage());
+            Exception ex = new Exception(message);
+            ex.initCause(e);
+            throw ex;
+        } catch (IOException e) {
+            String message = MessageFormat.format("网络请求时发生异常: {0}", e.getMessage());
+            Exception ex = new Exception(message);
+            ex.initCause(e);
+            throw ex;
+        } catch (Exception e) {
+            String message = MessageFormat.format("网络请求时发生异常: {0}", e.getMessage());
+            Exception ex = new Exception(message);
+            ex.initCause(e);
+            throw ex;
+        } finally {
+            if (null != httpURLConnection) {
+                httpURLConnection.disconnect();
+            }
+        }
+        return http_RespContent;
+    }
+
+    /***
+     * 向指定URL发送POST方法的请求
+     *
+     * @param apiUrl
+     * @param data
+     * @param encoding
+     * @return
+     * @throws Exception
+     */
+    public static String sendPOST(String apiUrl, String data, LinkedHashMap<String, String> headers,
+                                  String encoding) throws Exception {
+        // 获得响应内容
+        String http_RespContent = null;
+        HttpURLConnection httpURLConnection = null;
+        int http_StatusCode = 0;
+        String http_RespMessage = null;
+        try {
+            // 建立连接
+            URL url = new URL(apiUrl);
+            httpURLConnection = (HttpURLConnection) url.openConnection();
+            // 需要输出
+            httpURLConnection.setDoOutput(true);
+            // 需要输入
+            httpURLConnection.setDoInput(true);
+            // 不允许缓存
+            httpURLConnection.setUseCaches(false);
+            // HTTP请求方式
+            httpURLConnection.setRequestMethod("POST");
+            // 设置Headers
+            if (null != headers) {
+                for (String key : headers.keySet()) {
+                    httpURLConnection.setRequestProperty(key, headers.get(key));
+                }
+            }
+            // 连接会话
+            httpURLConnection.connect();
+            // 建立输入流,向指向的URL传入参数
+            DataOutputStream dos = new DataOutputStream(httpURLConnection.getOutputStream());
+            // 设置请求参数
+            dos.write(data.getBytes(encoding));
+            dos.flush();
+            dos.close();
+            // 获得响应状态(HTTP状态码)
+            http_StatusCode = httpURLConnection.getResponseCode();
+            // 获得响应消息(HTTP状态码描述)
+            http_RespMessage = httpURLConnection.getResponseMessage();
+            // 获得响应内容
+            if (HttpURLConnection.HTTP_OK == http_StatusCode) {
+                // 返回响应结果
+                http_RespContent = getResponseContent(httpURLConnection);
+            } else {
+                // 返回非200状态时响应结果
+                http_RespContent = getErrorResponseContent(httpURLConnection);
+                String msg =
+                        MessageFormat.format("请求失败: Http状态码 = {0} , {1}", http_StatusCode, http_RespMessage);
+                LOG.info(msg);
+            }
+        } catch (UnknownHostException e) {
+            String message = MessageFormat.format("网络请求时发生异常: {0}", e.getMessage());
+            Exception ex = new Exception(message);
+            ex.initCause(e);
+            throw ex;
+        } catch (MalformedURLException e) {
+            String message = MessageFormat.format("格式错误的URL: {0}", e.getMessage());
+            Exception ex = new Exception(message);
+            ex.initCause(e);
+            throw ex;
+        } catch (IOException e) {
+            String message = MessageFormat.format("网络请求时发生异常: {0}", e.getMessage());
+            Exception ex = new Exception(message);
+            ex.initCause(e);
+            throw ex;
+        } catch (Exception e) {
+            String message = MessageFormat.format("网络请求时发生异常: {0}", e.getMessage());
+            Exception ex = new Exception(message);
+            ex.initCause(e);
+            throw ex;
+        } finally {
+            if (null != httpURLConnection) {
+                httpURLConnection.disconnect();
+            }
+        }
+        return http_RespContent;
+    }
+
+    /***
+     * 读取HttpResponse响应内容
+     *
+     * @param httpURLConnection
+     * @return
+     * @throws UnsupportedEncodingException
+     * @throws IOException
+     */
+    private static String getResponseContent(HttpURLConnection httpURLConnection)
+            throws UnsupportedEncodingException, IOException {
+        StringBuffer contentBuffer = null;
+        BufferedReader responseReader = null;
+        try {
+            contentBuffer = new StringBuffer();
+            String readLine = null;
+            responseReader =
+                    new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(), "UTF-8"));
+            while ((readLine = responseReader.readLine()) != null) {
+                contentBuffer.append(readLine);
+            }
+        } finally {
+            if (null != responseReader) {
+                responseReader.close();
+            }
+        }
+        return contentBuffer.toString();
+    }
+
+    /***
+     * 读取HttpResponse响应内容
+     *
+     * @param httpURLConnection
+     * @return
+     * @throws UnsupportedEncodingException
+     * @throws IOException
+     */
+    private static String getErrorResponseContent(HttpURLConnection httpURLConnection)
+            throws UnsupportedEncodingException, IOException {
+        StringBuffer contentBuffer = null;
+        BufferedReader responseReader = null;
+        try {
+            contentBuffer = new StringBuffer();
+            String readLine = null;
+            responseReader =
+                    new BufferedReader(new InputStreamReader(httpURLConnection.getErrorStream(), "UTF-8"));
+            while ((readLine = responseReader.readLine()) != null) {
+                contentBuffer.append(readLine);
+            }
+        } finally {
+            if (null != responseReader) {
+                responseReader.close();
+            }
+        }
+        return contentBuffer.toString();
+    }
+
+    /***
+     * 上传文件
+     *
+     * @param apiUrl 请求url
+     * @param fileFieldName 文件在请求体中的field名字
+     * @param filePath 文件路径
+     * @param data 请求体
+     * @param headers headers
+     * @param encoding 编码格式
+     * @return
+     * @throws Exception
+     */
+    public static String uploadFile(String apiUrl, String fileFieldName, String filePath, Map<String, Object> data,
+                                    LinkedHashMap<String, String> headers, String encoding) throws Exception {
+        // 获得响应内容
+        String http_RespContent;
+        HttpURLConnection httpURLConnection = null;
+        int http_StatusCode = 0;
+        String http_RespMessage;
+        try {
+            String boundary = "---" + System.currentTimeMillis() + "---";
+            httpURLConnection = (HttpURLConnection) new URL(apiUrl).openConnection();
+            // 设置为POST情
+            httpURLConnection.setRequestMethod("POST");
+            // 发送POST请求必须设置如下两行
+            httpURLConnection.setDoOutput(true);
+            httpURLConnection.setDoInput(true);
+            httpURLConnection.setUseCaches(false);
+            // 设置请求头参数
+            // 设置Headers
+            if (null != headers) {
+                for (String key : headers.keySet()) {
+                    httpURLConnection.setRequestProperty(key, headers.get(key));
+                }
+            }
+            httpURLConnection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
+
+            OutputStream outputStream = httpURLConnection.getOutputStream();
+            PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream, encoding),
+                    true);
+            if (data != null && data.size() != 0) {
+                Set<Entry<String, Object>> entries = data.entrySet();
+                for (Entry<String, Object> entry : entries) {
+                    if (entry.getValue() != null) {
+                        addFormField(writer, boundary, "UTF-8", entry.getKey(), entry.getValue().toString());
+                    }
+                }
+            }
+
+            addFilePart(writer, outputStream, boundary, fileFieldName, new File(filePath));
+            writer.println("--" + boundary + "--");
+            writer.close();
+            // 获得响应状态(HTTP状态码)
+            http_StatusCode = httpURLConnection.getResponseCode();
+            // 获得响应消息(HTTP状态码描述)
+            http_RespMessage = httpURLConnection.getResponseMessage();
+            // 获得响应内容
+            if (HttpURLConnection.HTTP_OK == http_StatusCode) {
+                // 返回响应结果
+                http_RespContent = getResponseContent(httpURLConnection);
+            } else {
+                // 返回非200状态时响应结果
+                http_RespContent = getErrorResponseContent(httpURLConnection);
+                String msg =
+                        MessageFormat.format("请求失败: Http状态码 = {0} , {1}", http_StatusCode, http_RespMessage);
+                LOG.info(msg);
+            }
+        } catch (UnknownHostException e) {
+            String message = MessageFormat.format("网络请求时发生异常: {0}", e.getMessage());
+            Exception ex = new Exception(message);
+            ex.initCause(e);
+            throw ex;
+        } catch (MalformedURLException e) {
+            String message = MessageFormat.format("格式错误的URL: {0}", e.getMessage());
+            Exception ex = new Exception(message);
+            ex.initCause(e);
+            throw ex;
+        } catch (IOException e) {
+            String message = MessageFormat.format("网络请求时发生异常: {0}", e.getMessage());
+            Exception ex = new Exception(message);
+            ex.initCause(e);
+            throw ex;
+        } catch (Exception e) {
+            String message = MessageFormat.format("网络请求时发生异常: {0}", e.getMessage());
+            Exception ex = new Exception(message);
+            ex.initCause(e);
+            throw ex;
+        } finally {
+            if (null != httpURLConnection) {
+                httpURLConnection.disconnect();
+            }
+        }
+        return http_RespContent;
+    }
+
+    /**
+     * 添加请求体的key和value
+     *
+     * @param name  field name
+     * @param value field value
+     */
+    public static void addFormField(PrintWriter writer,  String boundary, String charset, String name, String value) {
+        writer.append("--" + boundary).append(LINE_FEED);
+        writer.append("Content-Disposition: form-data; name=\"" + name + "\"")
+                .append(LINE_FEED);
+        writer.append("Content-Type: text/plain; charset=" + charset).append(
+                LINE_FEED);
+        writer.append(LINE_FEED);
+        writer.append(value).append(LINE_FEED);
+        writer.flush();
+    }
+
+    /**
+     * 添加文件到请求中
+     *
+     * @param fieldName  field名字
+     * @param uploadFile 要上传的文件
+     * @throws IOException
+     */
+    public static void addFilePart(PrintWriter writer, OutputStream outputStream, String boundary,
+                                   String fieldName, File uploadFile)
+            throws IOException {
+        String fileName = uploadFile.getName();
+        writer.append("--" + boundary).append(LINE_FEED);
+        writer.append(
+                        "Content-Disposition: form-data; name=\"" + fieldName
+                                + "\"; filename=\"" + fileName + "\"")
+                .append(LINE_FEED);
+        writer.append(
+                        "Content-Type: "
+                                + URLConnection.guessContentTypeFromName(fileName))
+                .append(LINE_FEED);
+        writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED);
+        writer.append(LINE_FEED);
+        writer.flush();
+
+        FileInputStream inputStream = new FileInputStream(uploadFile);
+        byte[] buffer = new byte[4096];
+        int bytesRead = -1;
+        while ((bytesRead = inputStream.read(buffer)) != -1) {
+            outputStream.write(buffer, 0, bytesRead);
+        }
+        outputStream.flush();
+        inputStream.close();
+        writer.append(LINE_FEED);
+        writer.flush();
+    }
+}

+ 26 - 0
mjava-boyang/src/main/resources/application-dev.yml

@@ -0,0 +1,26 @@
+server:
+  port: 9033
+  servlet:
+    context-path: /boyang
+
+enable:
+  scheduling: false
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/server/boyang/log/
+  level:
+    com.malk.*: debug
+
+# dingtalk
+dingtalk:
+  agentId:
+  appKey:
+  appSecret:
+  corpId:
+  aesKey:
+  token:
+
+aliwork:
+  appType:
+  systemToken:
+

+ 26 - 0
mjava-boyang/src/main/resources/application-prod.yml

@@ -0,0 +1,26 @@
+server:
+  port: 9033
+  servlet:
+    context-path: /boyang
+
+enable:
+  scheduling: false
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/server/boyang/log/
+  level:
+    com.malk.*: debug
+
+# dingtalk
+dingtalk:
+  agentId:
+  appKey:
+  appSecret:
+  corpId:
+  aesKey:
+  token:
+
+aliwork:
+  appType:
+  systemToken:
+

mjava-jiangshi/src/main/resources/application.yml → mjava-boyang/src/main/resources/application.yml


mjava-jiangshi/src/main/resources/logback-spring.xml → mjava-boyang/src/main/resources/logback-spring.xml


+ 184 - 0
mjava-boyang/src/test/java/com/malk/boyang/Test.java

@@ -0,0 +1,184 @@
+package com.malk.boyang;
+
+import com.alibaba.fastjson.JSONObject;
+import java.text.MessageFormat;
+import java.util.LinkedHashMap;
+
+import com.malk.boyang.utils.HTTPHelper;
+import org.apache.commons.codec.binary.Hex;
+import org.apache.commons.codec.digest.HmacAlgorithms;
+import org.apache.commons.codec.digest.HmacUtils;
+
+public class Test {
+    public static void main(String[] args) {
+        // 应用ID
+        String projectId = "1000004";
+        // 应用密钥
+        String secret = "96Uh7CR83NkN3TA6";
+        // 接口调用域名
+        String host = "http://122.227.225.202:9011/";
+
+        // 请求签名鉴权-POST请求
+        testPost(projectId, secret, host);
+
+        // 请求签名鉴权-GET请求
+//        testGet(projectId, secret, host);
+
+        // 请求签名鉴权-POST请求-文件上传
+//        testUpload(projectId, secret, host);
+    }
+
+    /***
+     * 请求签名鉴权-POST请求
+     *
+     * @param projectId 项目Id
+     * @param secret 项目密钥
+     * @param host 网关地址
+     */
+    public static void testPost(String projectId, String secret, String host) {
+        // 查询查询内部组织详情地址
+        String getInnerOrganizationsDetailApi = "/manage/v1/innerOrganizations/detail";
+        // 查询查询内部组织详情请求地址
+        String getInnerOrganizationsDetailApiUrl = host + getInnerOrganizationsDetailApi;
+
+        try {
+            // 构建请求Body体
+            JSONObject reqBodyObj = new JSONObject(true);
+            reqBodyObj.put("organizationCode", "");
+            reqBodyObj.put("customOrgNo", "");
+            reqBodyObj.put("name", "博洋");
+
+            // 请求Body体数据
+            String reqBodyData = reqBodyObj.toString();
+            // 对请求Body体内的数据计算ContentMD5
+
+            // 构建参与请求签名计算的明文
+            String plaintext = reqBodyData;
+            // 计算请求签名值
+            String reqSignature = sign(plaintext, secret);
+
+            // 构建请求头
+            LinkedHashMap<String, String> header = new LinkedHashMap<>();
+            // 构建待签名字符串
+            String accept = "*/*";
+            String contentType = "application/json; charset=UTF-8";
+            header.put("X-timevale-project-id", projectId);
+            header.put("X-timevale-signature", reqSignature);
+            header.put("Accept", accept);
+            header.put("Content-Type", contentType);
+
+            // 发送POST请求
+            String result = HTTPHelper.sendPOST(getInnerOrganizationsDetailApiUrl, reqBodyData, header, "UTF-8");
+            JSONObject resultObj = JSONObject.parseObject(result);
+            System.out.println("请求返回信息: " + resultObj.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+            String msg = MessageFormat.format("请求签名鉴权方式调用接口出现异常: {0}", e.getMessage());
+            System.out.println(msg);
+        }
+    }
+
+    /***
+     * 请求签名鉴权-GET请求
+     *
+     * @param projectId 项目id
+     * @param secret 项目密钥
+     * @param host 网关地址
+     */
+    public static void testGet(String projectId, String secret, String host) {
+        // 获取签署地址列表API地址
+        String getSignFlowApi = "/esign-signs/v1/signFlow/signUrls?signFlowId=" + "24210df8420968c1e785a3b7582295b6";
+        // 获取签署地址列表接口请求地址
+        String hostGetSignFlowApi = host + getSignFlowApi;
+
+        try {
+            // 构建待签名字符串
+            String accept = "*/*";
+            String contentType = "application/json; charset=UTF-8";
+
+            // 构建参与请求签名计算的明文
+            int index = getSignFlowApi.indexOf("?");
+            String plaintext = index == -1 ? "" : getSignFlowApi.substring(index + 1);
+            // 计算请求签名值
+            String reqSignature = sign(plaintext, secret);
+
+            // 构建请求头
+            LinkedHashMap<String, String> header = new LinkedHashMap<>();
+            header.put("X-timevale-project-id", projectId);
+            header.put("X-timevale-signature", reqSignature);
+            header.put("Accept", accept);
+            header.put("Content-Type", contentType);
+
+            // 发送GET请求
+            String result = HTTPHelper.sendGet(hostGetSignFlowApi, header, "UTF-8");
+            JSONObject resultObj = JSONObject.parseObject(result);
+            System.out.println("请求返回信息: " + resultObj.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+            String msg = MessageFormat.format("请求签名鉴权方式调用接口出现异常: {0}", e.getMessage());
+            System.out.println(msg);
+        }
+    }
+
+    /**
+     * hmac-sha256签名
+     *
+     * @param content 代签名的内容
+     * @param key     签名的key
+     * @return 签名
+     */
+    public static String sign(String content, String key) {
+        byte[] bytes = new HmacUtils(HmacAlgorithms.HMAC_SHA_256, key).hmac(content);
+        return new String(Hex.encodeHex(bytes));
+    }
+
+
+    /***
+     * 请求签名鉴权-POST请求
+     *
+     * @param projectId 项目Id
+     * @param secret 项目密钥
+     * @param host 网关地址
+     */
+    public static void testUpload(String projectId, String secret, String host) {
+        // 文件上传接口
+        String uploadApi = "/file/v1/pdf/uploadAndSpilt";
+        // 文件上传接口请求地址
+        String uploadApiUrl = host + uploadApi;
+
+        try {
+            // 构建请求Body体
+            JSONObject reqBodyObj = new JSONObject(true);
+            reqBodyObj.put("file", "测试文件密码123456.pdf");
+            reqBodyObj.put("filePwd", "123456");
+
+            // 请求Body体数据
+            String reqBodyData = reqBodyObj.toString();
+
+            // 构建参与请求签名计算的明文
+            String plaintext = reqBodyData;
+            // 计算请求签名值
+            String reqSignature = sign(plaintext, secret);
+
+            // 构建文件
+            String filePath = "/xxx/xxx/测试文件密码123456.pdf";
+            String fileFieldName = "file";
+
+            // 构建请求头
+            LinkedHashMap<String, String> header = new LinkedHashMap<>();
+            // 构建待签名字符串
+            String accept = "*/*";
+            header.put("X-timevale-project-id", projectId);
+            header.put("X-timevale-signature", reqSignature);
+            header.put("Accept", accept);
+            // 发送POST请求
+            String result = HTTPHelper.uploadFile(uploadApiUrl,  fileFieldName, filePath, reqBodyObj,  header, "UTF-8");
+            JSONObject resultObj = JSONObject.parseObject(result);
+            System.out.println("请求返回信息: " + resultObj.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+            String msg = MessageFormat.format("请求签名鉴权方式调用接口出现异常: {0}", e.getMessage());
+            System.out.println(msg);
+        }
+    }
+}

+ 10 - 0
mjava-diwei/pom.xml

@@ -53,6 +53,16 @@
             <artifactId>velocity</artifactId>
             <version>1.7</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <scope>test</scope>
+        </dependency>
 
     </dependencies>
 

+ 0 - 29
mjava-diwei/src/main/java/com/malk/diwei/controller/ClientController.java

@@ -1,29 +0,0 @@
-package com.malk.diwei.controller;
-
-import com.malk.diwei.service.ClientService;
-import com.malk.server.common.McR;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author WZY
- * @since 2025-03-11
- */
-@RestController
-@RequestMapping("/client")
-public class ClientController {
-    @Autowired
-    private ClientService clientService;
-
-    @GetMapping("/syncClient")
-    public McR syncClient() {
-        return clientService.syncClient();
-    }
-}

+ 138 - 0
mjava-diwei/src/main/java/com/malk/diwei/controller/DiweiController.java

@@ -0,0 +1,138 @@
+package com.malk.diwei.controller;
+
+import com.malk.diwei.service.*;
+import com.malk.server.common.McR;
+import com.malk.utils.UtilServlet;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+@RestController
+@RequestMapping()
+public class DiweiController {
+    @Autowired
+    private ClientService clientService;
+
+    @Autowired
+    private GoodsService goodsService;
+
+    @Autowired
+    private ProcStepService procStepService;
+
+    @Autowired
+    private EmployeeService employeeService;
+
+    @Autowired
+    private ProcessService processService;
+
+    @Autowired
+    private SalesOrderService salesOrderService;
+
+    @Autowired
+    private DiweiService diweiService;
+
+    //同步客户
+    @GetMapping("/syncClient")
+    public McR syncClient() {
+        return clientService.syncClient();
+    }
+
+    //同步物料
+    @GetMapping("/syncGoods")
+    private McR syncGoods(){
+        return goodsService.syncGoods();
+    }
+
+    //同步工序
+    @GetMapping("/syncProcStep")
+    public McR syncProcStep(){
+        return procStepService.syncProcStep();
+    }
+
+    //同步员工
+    @GetMapping("/syncEmployee")
+    public McR syncEmployee(){
+        return employeeService.syncEmplyee();
+    }
+
+    //查询物料库存信息
+    @GetMapping("/queryGoodsStock")
+    public McR queryGoodsStock(Integer goodsId,Integer colorId,Integer sizeId){
+        return goodsService.queryGoodsStock(goodsId, colorId, sizeId);
+    }
+
+    //同步毛衫加工单
+    @GetMapping("/syncProcess")
+    public McR syncProcess(){
+        return processService.syncProcess();
+    }
+
+    //同步横机外发单
+    @GetMapping("/syncProcessOut")
+    public McR syncProcessOut(){
+        return processService.syncProcessOut();
+    }
+
+    //同步工艺外发单
+    @GetMapping("/syncProcessOut2")
+    public McR syncProcessOut2(){
+        return processService.syncProcessOut2();
+    }
+
+    //同步织片回收单
+    @GetMapping("/syncProcessOn")
+    public McR syncProcessOn(){
+        return processService.syncProcessOn();
+    }
+
+    //同步工艺回收单
+    @GetMapping("/syncProcessOn2")
+    public McR syncProcessOn2(){
+        return processService.syncProcessOn2();
+    }
+
+    //同步所有基础数据
+    @Scheduled(cron = "0 0 0 * * ?")
+    @GetMapping("/syncBaseAll")
+    public McR syncBaseAll(){
+        return diweiService.syncBaseAll();
+    }
+
+    //同步所有生产流程数据
+    @Scheduled(cron = "0 0 1 * * ?")
+    @GetMapping("/syncProcessAll")
+    public McR syncProcessAll(){
+        return diweiService.syncProcessAll();
+    }
+
+    //新增销售订单
+    @PostMapping("/addSaleOrder")
+    public McR addSaleOrder(@RequestBody Map map){
+        return salesOrderService.addSaleOrder(map);
+    }
+
+    //新增BOM
+    @PostMapping("/addBom")
+    public McR addBom(@RequestBody Map map){
+        return goodsService.addBom(map);
+    }
+
+    //查询成品最新Bom
+    @GetMapping("/queryGoodsNewBom")
+    public McR queryGoodsNewBom(int goodsId){
+        return goodsService.queryGoodsNewBom(goodsId);
+    }
+
+    //查询Bom是否存在
+    @PostMapping("/queryBomIsExist")
+    public McR queryBomIsExist(HttpServletRequest request){
+        Map data = UtilServlet.getParamMap(request);
+        String bomCode = data.get("bomCode").toString();
+        return goodsService.queryBomIsExist(bomCode);
+    }
+
+
+}

+ 0 - 20
mjava-diwei/src/main/java/com/malk/diwei/controller/GoodsController.java

@@ -1,20 +0,0 @@
-package com.malk.diwei.controller;
-
-import com.malk.diwei.service.GoodsService;
-import com.malk.server.common.McR;
-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;
-
-@RestController
-@RequestMapping("/goods")
-public class GoodsController {
-    @Autowired
-    private GoodsService goodsService;
-
-    @GetMapping("/syncGoods")
-    private McR syncGoods(){
-        return goodsService.syncGoods();
-    }
-}

+ 0 - 29
mjava-diwei/src/main/java/com/malk/diwei/controller/ProcStepController.java

@@ -1,29 +0,0 @@
-package com.malk.diwei.controller;
-
-import com.malk.diwei.service.ProcStepService;
-import com.malk.server.common.McR;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author WZY
- * @since 2025-03-07
- */
-@RestController
-@RequestMapping("/procStep")
-public class ProcStepController {
-    @Autowired
-    private ProcStepService procStepService;
-
-    @GetMapping("/syncProcStep")
-    public McR syncProcStep(){
-        return procStepService.syncProcStep();
-    }
-}

+ 67 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/Bom.java

@@ -0,0 +1,67 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+@TableName("Bom")
+@Data
+  public class Bom implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long bomID;
+
+    private Long goodsID;
+
+    private BigDecimal bomGoodsQty;
+
+    private Long bomUnitID;
+
+    private String bomDescription;
+
+    private Long bomCreatorID;
+
+    private Date bomCreateDatetime;
+
+    private Long bomUpdaterID;
+
+    private Date bomUpdateDatetime;
+
+    private Long bomApproverID;
+
+    private Date bomApproveDatetime;
+
+    private Integer bomStatus;
+
+    private String bomUnitName;
+
+    private Long bomOrgID;
+
+    private BigDecimal bomProcessPrice;
+
+    private BigDecimal bomOtherFeePrice;
+
+    private Integer bomType;
+
+    private String bomCode;
+
+    private Integer bomDisAble;
+
+    private Long bomDesignDetailID;
+
+    private String bomProofingRequirement;
+}

+ 76 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/BomItem.java

@@ -0,0 +1,76 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+@TableName("BomItem")
+@Data
+  public class BomItem implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long bomID;
+
+      private Long bomItemID;
+
+    private Integer bomItemNo;
+
+    private Long bomItemGoodsID;
+
+    private BigDecimal bomItemQty;
+
+    private Long bomItemUnitID;
+
+    private String bomItemUnitName;
+
+    private BigDecimal bomItemPrice;
+
+    private BigDecimal bomItemAmount;
+
+    private String bomItemDescription;
+
+    private Long bomGoodsColorID;
+
+    private Long bomMaterialColorID;
+
+    private Long bomMaterialSizeID;
+
+    private Long bomGoodsSizeID;
+
+    private Long bomItemGoodsVendorID;
+
+    private BigDecimal bomItemLossRate;
+
+    private Boolean isSplitSize;
+
+    private Boolean isMainItem;
+
+    private Integer bomItemGroup;
+
+    private String bomMaterialBatchNo;
+
+    private String bomMaterialColorNo;
+
+    private Long bomItemGoodsPartsID;
+
+    private Boolean bomItemIsMainMaterial;
+
+    private String bomItemColorWay;
+
+    private String bomItemPartsMachineType;
+
+    private String bomItemPartsNeedleType;
+}

+ 37 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/Department.java

@@ -0,0 +1,37 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-31
+ */
+@TableName("Department")
+@Data
+  public class Department implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long deptID;
+
+    private String deptCode;
+
+    private String deptName;
+
+    private Integer deptOrderNo;
+
+    private String deptDescription;
+
+    private Long parentDeptID;
+
+    private Long deptOrgID;
+}

+ 46 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/Employee.java

@@ -0,0 +1,46 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-24
+ */
+@TableName("Employee")
+@Data
+  public class Employee implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long empID;
+
+    private String empCode;
+
+    private String empName;
+
+    private String empSex;
+
+    private Long deptID;
+
+    private Integer empWorkStatus;
+
+    private Integer empIsSalesman;
+
+    private Long jobID;
+
+    private Integer empIsQCMerchandiser;
+
+    private String empGamUserID;
+
+}

+ 33 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/GoodsParts.java

@@ -0,0 +1,33 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-31
+ */
+@TableName("GoodsParts")
+@Data
+  public class GoodsParts implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long goodsPartsID;
+
+    private String goodsPartsCode;
+
+    private String goodsPartsName;
+
+    private Integer goodsPartsNo;
+
+    private Boolean goodsPartsDisable;
+}

+ 41 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/GoodsStock.java

@@ -0,0 +1,41 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-25
+ */
+@TableName("GoodsStock")
+@Data
+  public class GoodsStock implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long goodsStockID;
+
+    private Long goodsID;
+
+    private Long colorID;
+
+    private Long sizeID;
+
+    private Long warehouseID;
+
+    private BigDecimal goodsStockStartQty;
+
+    private BigDecimal goodsStockInQty;
+
+    private BigDecimal goodsStockOutQty;
+}

+ 145 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/Process.java

@@ -0,0 +1,145 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-27
+ */
+@TableName("Process")
+@Data
+  public class Process implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long processID;
+
+    private Date processDate;
+
+    private String processCode;
+
+    private Date processDeliveryDate;
+
+    private Long factoryID;
+
+    private Integer processStatus;
+
+    private Integer processIsDone;
+
+    private Integer processAborted;
+
+    private Integer processIsPrinted;
+
+    private Integer processDeleteFlag;
+
+    private Long processCreatorID;
+
+    private Date processCreateDatetime;
+
+    private Long processUpdaterID;
+
+    private Date processUpdateDatetime;
+
+    private Long processApproverID;
+
+    private Date processApproveDatetime;
+
+    private String processDescription;
+
+    private String processLinkMan;
+
+    private String processLinkTel;
+
+    private String processLinkMob;
+
+    private Long processOrgID;
+
+    private String entityObjKey;
+
+    private Integer processMaterialPickIsDone;
+
+    private Integer processSecondMaterialPickIsDone;
+
+    private Long processBomID;
+
+    private Integer processOutSideType;
+
+    private Integer processReceiptType;
+
+    private Integer processHadCard;
+
+    private Integer processCardConfirmType;
+
+    private Integer processIsUseStepReferStock;
+
+    private Integer processIsUseStepReferOutSideN;
+
+    private String processChuangCi;
+
+    private Integer processIsSettle;
+
+    private Integer processPrintedTimes;
+
+    private Long processDeptID;
+
+    private Integer processFrom;
+
+    private Date processSalesDeliveryDate;
+
+    private Date processSocketFinishedDate;
+
+    private Date processWeavingFinishedDate;
+
+    private Date processHadProDate;
+
+    private Date processReprintDate;
+
+    private String processSOGoodsName;
+
+    private String processSOGoodsCode;
+
+    private Long processSOGoodsId;
+
+    private String processSOClientOrderCode;
+
+    private String processSOClientName;
+
+    private String processSOClientCode;
+
+    private Long processSOClientID;
+
+    private Long processMerchandiserID;
+
+    private Date processReceiptDate;
+
+    private Date processCutDate;
+
+    private Long pCGoodsID;
+
+    private String processPOCodes;
+
+    private String processBOInfo;
+
+    private String processBOKey;
+
+    private Long processSalesmanID;
+
+    private Long processReferSOID;
+
+    private Date processUrgentTime;
+
+    private Long processQCMerchandiserID;
+
+    private Integer processBoardFalg;
+}

+ 80 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/ProcessItem.java

@@ -0,0 +1,80 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-27
+ */
+@TableName("ProcessItem")
+@Data
+  public class ProcessItem implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long processID;
+
+      private Long processItemID;
+
+    private Integer processItemNo;
+
+    private Long goodsID;
+
+    private Long unitID;
+
+    private Long colorID;
+
+    private Long sizeID;
+
+    private BigDecimal processItemQty;
+
+    private String processItemDesc;
+
+    private BigDecimal processItemDeliveryQty;
+
+    private Long processItemReferBillID;
+
+    private Long processItemReferBillItemID;
+
+    private Long processItemGroupID;
+
+    private Integer processItemAborted;
+
+    private String processItemReferBillCode;
+
+    private String processItemReferObjKey;
+
+    private Long processOSNWPSID;
+
+    private Long processOSNWPSProcStepID;
+
+    private Integer processOSNIsConfirm;
+
+    private Long processOSNConfirmQty;
+
+    private BigDecimal processItemCardConfirmQty;
+
+    private BigDecimal processItemBeyondQty;
+
+    private BigDecimal processItemReturnQty;
+
+    private Long processItemReferBillItemID2;
+
+    private String processItemReferObjKey2;
+
+    private String processItemReferBillCode2;
+
+    private Long processItemReferBillID2;
+
+    private BigDecimal processItemCutQty;
+}

+ 50 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/ProcessMaterial.java

@@ -0,0 +1,50 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-31
+ */
+@TableName("ProcessMaterial")
+@Data
+  public class ProcessMaterial implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long processMaterialID;
+
+    private Long processID;
+
+    private Long goodsID;
+
+    private Long unitID;
+
+    private Long colorID;
+
+    private Long sizeID;
+
+    private BigDecimal processMaterialQty;
+
+    private BigDecimal processMaterialPickQty;
+
+    private BigDecimal processMaterialPrice;
+
+    private String processMaterialColorVCode;
+
+    private String processMaterialDes;
+
+    private Long processMaterialGoodsPartsID;
+
+    private String processMaterialBatchNo;
+}

+ 117 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/SalesOrder.java

@@ -0,0 +1,117 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+@TableName("SalesOrder")
+@Data
+  public class SalesOrder implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long salesOrderID;
+
+    private Date salesOrderDate;
+
+    private String salesOrderCode;
+
+    private Long clientID;
+
+    private String salesOrderContractNo;
+
+    private String salesOrderLinkMan;
+
+    private Date salesOrderDeliveryDate;
+
+    private String salesOrderDeliveryAddress;
+
+    private String salesOrderLinkTel;
+
+    private String salesOrderDescription;
+
+    private Long salesOrderCreatorID;
+
+    private Long salesOrderUpdaterID;
+
+    private Date salesOrderUpdateDatetime;
+
+    private Long salesOrderApproverID;
+
+    private Date salesOrderApproveDatetime;
+
+    private Integer salesOrderStatus;
+
+    private Integer salesOrderIsDone;
+
+    private Integer salesOrderAborted;
+
+    private Integer salesOrderDeleteFlag;
+
+    private Long salesOrderLastItemID;
+
+    private Date salesOrderCreateDatetime;
+
+    private Long salesmanID;
+
+    private Integer salesOrderIsPrinted;
+
+    private Long salesOrderOrgID;
+
+    private String salesOrderLinkMob;
+
+    private String entityObjKey;
+
+    private Integer salesOrderFrom;
+
+    private Integer salesOrderIsMrp;
+
+    private Integer salesOrderPrintedTimes;
+
+    private Integer salesOrderNoNeedMrp;
+
+    private String salesOrderTrustee;
+
+    private Integer salesOrderIsInvoice;
+
+    private String salesOrderGUID;
+
+    private BigDecimal salesOrderDiscount;
+
+    private BigDecimal salesOrderYZPercent;
+
+    private BigDecimal salesOrderDZPercent;
+
+    private String salesOrderWFCAuthor;
+
+    private String salesOrderWFCNodeName;
+
+    private String salesOrderWFCNodeID;
+
+    private String salesOrderWFCNodeMemo;
+
+    private Long salesOrderFollowEmpID;
+
+    private Integer salesOrderProperty;
+
+    private String salesOrderDeptName;
+
+    private Long salesOrderDeptID;
+
+    private Long salesOrderQCFollowEmpID;
+
+    private Integer salesOrderBoardFalg;
+}

+ 80 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/SalesOrderItem.java

@@ -0,0 +1,80 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+@TableName("SalesOrderItem")
+@Data
+  public class SalesOrderItem implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long salesOrderID;
+
+      private Long salesOrderItemID;
+
+    private Integer salesOrderItemNo;
+
+    private Long goodsID;
+
+    private BigDecimal salesOrderItemPrice;
+
+    private BigDecimal salesOrderItemQty;
+
+    private BigDecimal salesOrderItemAmount;
+
+    private BigDecimal salesOrderItemDeliveryQty;
+
+    private String salesOrderItemDescription;
+
+    private Long unitID;
+
+    private Long colorID;
+
+    private Long sizeID;
+
+    private Boolean salesOrderItemAborted;
+
+    private BigDecimal salesOrderItemOrigPrice;
+
+    private Integer salesOrderItemDiscRate;
+
+    private BigDecimal salesOrderItemDiscAmount;
+
+    private Boolean salesOrderItemIsGift;
+
+    private Long salesOrderItemGroupID;
+
+    private BigDecimal salesOrderItemPurchaseQty;
+
+    private BigDecimal salesOrderItemDistributionDeilveryQty;
+
+    private BigDecimal salesOrderItemDistributionQty;
+
+    private Boolean salesOrderItemIsInvoice;
+
+    private BigDecimal salesOrderItemInvoiceAmount;
+
+    private BigDecimal salesOrderItemInvoiceQty;
+
+    private BigDecimal salesOrderItemDiscount;
+
+    private BigDecimal salesOrderItemReturnQty;
+
+    private BigDecimal salesOrderItemProcessQty;
+
+    private BigDecimal salesOrderItemPackingQty;
+}

+ 76 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/WorkProcStep.java

@@ -0,0 +1,76 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-04-02
+ */
+@TableName("WorkProcStep")
+@Data
+  public class WorkProcStep implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long wpsid;
+
+    private Long wPSProcessID;
+
+    private Long processID;
+
+    private Long wPSProcStepID;
+
+    private String wPSProcStepCode;
+
+    private String wPSProcStepName;
+
+    private Integer wPSProcStepType;
+
+    private Long wPSFactoryID;
+
+    private Integer wPSProcStepSequence;
+
+    private BigDecimal wPSProcStepPrice;
+
+    private Integer wPSConfirmQty;
+
+    private Integer wPSHadRecordQty;
+
+    private Integer wPSIsByHand;
+
+    private String wPSProcStepDescription;
+
+    private Long goodsID;
+
+    private Integer wPSIsAbort;
+
+    private Integer wPSNotAlowConfirmPrice;
+
+    private Integer wPSProcStepIsReferStock;
+
+    private Integer wPSProcStepIsReferOutSizeN;
+
+    private Integer wPSProcStepIsFKM;
+
+    private Integer wPSColorSizeType;
+
+    private BigDecimal wpsProcStepGoodsMiShu;
+
+    private Integer workProcStepIsReferMiShu;
+
+    private Integer wPSBeyondQty;
+
+    private Integer wPSReturnQty;
+
+    private String wpsdes_Confirm;
+}

+ 18 - 0
mjava-diwei/src/main/java/com/malk/diwei/mapper/BomItemMapper.java

@@ -0,0 +1,18 @@
+package com.malk.diwei.mapper;
+
+import com.malk.diwei.entity.BomItem;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+@Mapper
+public interface BomItemMapper extends BaseMapper<BomItem> {
+
+}

+ 18 - 0
mjava-diwei/src/main/java/com/malk/diwei/mapper/BomMapper.java

@@ -0,0 +1,18 @@
+package com.malk.diwei.mapper;
+
+import com.malk.diwei.entity.Bom;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+@Mapper
+public interface BomMapper extends BaseMapper<Bom> {
+
+}

+ 18 - 0
mjava-diwei/src/main/java/com/malk/diwei/mapper/DepartmentMapper.java

@@ -0,0 +1,18 @@
+package com.malk.diwei.mapper;
+
+import com.malk.diwei.entity.Department;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-31
+ */
+@Mapper
+public interface DepartmentMapper extends BaseMapper<Department> {
+
+}

+ 18 - 0
mjava-diwei/src/main/java/com/malk/diwei/mapper/EmployeeMapper.java

@@ -0,0 +1,18 @@
+package com.malk.diwei.mapper;
+
+import com.malk.diwei.entity.Employee;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-24
+ */
+@Mapper
+public interface EmployeeMapper extends BaseMapper<Employee> {
+
+}

+ 18 - 0
mjava-diwei/src/main/java/com/malk/diwei/mapper/GoodsPartsMapper.java

@@ -0,0 +1,18 @@
+package com.malk.diwei.mapper;
+
+import com.malk.diwei.entity.GoodsParts;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-31
+ */
+@Mapper
+public interface GoodsPartsMapper extends BaseMapper<GoodsParts> {
+
+}

+ 18 - 0
mjava-diwei/src/main/java/com/malk/diwei/mapper/GoodsStockMapper.java

@@ -0,0 +1,18 @@
+package com.malk.diwei.mapper;
+
+import com.malk.diwei.entity.GoodsStock;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-25
+ */
+@Mapper
+public interface GoodsStockMapper extends BaseMapper<GoodsStock> {
+
+}

+ 18 - 0
mjava-diwei/src/main/java/com/malk/diwei/mapper/ProcessItemMapper.java

@@ -0,0 +1,18 @@
+package com.malk.diwei.mapper;
+
+import com.malk.diwei.entity.ProcessItem;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-27
+ */
+@Mapper
+public interface ProcessItemMapper extends BaseMapper<ProcessItem> {
+
+}

+ 37 - 0
mjava-diwei/src/main/java/com/malk/diwei/mapper/ProcessMapper.java

@@ -0,0 +1,37 @@
+package com.malk.diwei.mapper;
+
+import com.malk.diwei.entity.Process;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-27
+ */
+@Mapper
+public interface ProcessMapper extends BaseMapper<Process> {
+
+    //查询加工单加工产品
+    List<Map> selectProductById(Long processID);
+
+    //查询加工单 横机/附件外发明细
+    List<Map> selectProcessONDetailByCode(String processCode);
+
+    //查询外发单外发明细
+    List<Map> selectOutSideDetails(Long processID);
+
+    List<Map> selectOnDetails(String processONDetailCode);
+
+    List<Map> selectOnCardBarDetails(String processONDetailCode);
+
+    Map selectOnBaseInfo(String processONDetailCode);
+
+    List<Map> selectOnCardBarDetails2(String processONDetailCode);
+}

+ 24 - 0
mjava-diwei/src/main/java/com/malk/diwei/mapper/ProcessMaterialMapper.java

@@ -0,0 +1,24 @@
+package com.malk.diwei.mapper;
+
+import com.malk.diwei.entity.ProcessMaterial;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-31
+ */
+@Mapper
+public interface ProcessMaterialMapper extends BaseMapper<ProcessMaterial> {
+
+    List<Map> selectProcessMaterialByGoodsProperty(@Param("processId") Long processId,@Param("goodsProperty") int goodsProperty);
+
+}

+ 18 - 0
mjava-diwei/src/main/java/com/malk/diwei/mapper/SalesOrderItemMapper.java

@@ -0,0 +1,18 @@
+package com.malk.diwei.mapper;
+
+import com.malk.diwei.entity.SalesOrderItem;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+@Mapper
+public interface SalesOrderItemMapper extends BaseMapper<SalesOrderItem> {
+
+}

+ 18 - 0
mjava-diwei/src/main/java/com/malk/diwei/mapper/SalesOrderMapper.java

@@ -0,0 +1,18 @@
+package com.malk.diwei.mapper;
+
+import com.malk.diwei.entity.SalesOrder;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+@Mapper
+public interface SalesOrderMapper extends BaseMapper<SalesOrder> {
+
+}

+ 18 - 0
mjava-diwei/src/main/java/com/malk/diwei/mapper/WorkProcStepMapper.java

@@ -0,0 +1,18 @@
+package com.malk.diwei.mapper;
+
+import com.malk.diwei.entity.WorkProcStep;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-04-02
+ */
+@Mapper
+public interface WorkProcStepMapper extends BaseMapper<WorkProcStep> {
+
+}

+ 16 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/BomItemService.java

@@ -0,0 +1,16 @@
+package com.malk.diwei.service;
+
+import com.malk.diwei.entity.BomItem;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+public interface BomItemService extends IService<BomItem> {
+
+}

+ 16 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/BomService.java

@@ -0,0 +1,16 @@
+package com.malk.diwei.service;
+
+import com.malk.diwei.entity.Bom;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+public interface BomService extends IService<Bom> {
+
+}

+ 16 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/DepartmentService.java

@@ -0,0 +1,16 @@
+package com.malk.diwei.service;
+
+import com.malk.diwei.entity.Department;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-31
+ */
+public interface DepartmentService extends IService<Department> {
+
+}

+ 9 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/DiweiService.java

@@ -0,0 +1,9 @@
+package com.malk.diwei.service;
+
+import com.malk.server.common.McR;
+
+public interface DiweiService {
+    McR syncBaseAll();
+
+    McR syncProcessAll();
+}

+ 18 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/EmployeeService.java

@@ -0,0 +1,18 @@
+package com.malk.diwei.service;
+
+import com.malk.diwei.entity.Employee;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.malk.server.common.McR;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-24
+ */
+public interface EmployeeService extends IService<Employee> {
+
+    McR syncEmplyee();
+}

+ 16 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/GoodsPartsService.java

@@ -0,0 +1,16 @@
+package com.malk.diwei.service;
+
+import com.malk.diwei.entity.GoodsParts;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-31
+ */
+public interface GoodsPartsService extends IService<GoodsParts> {
+
+}

+ 10 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/GoodsService.java

@@ -4,6 +4,8 @@ import com.malk.diwei.entity.Goods;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.malk.server.common.McR;
 
+import java.util.Map;
+
 /**
  * <p>
  *  服务类
@@ -15,4 +17,12 @@ import com.malk.server.common.McR;
 public interface GoodsService extends IService<Goods> {
 
     McR syncGoods();
+
+    McR queryGoodsStock(Integer goodsId, Integer colorId, Integer sizeId);
+
+    McR addBom(Map map);
+
+    McR queryGoodsNewBom(int goodsId);
+
+    McR queryBomIsExist(String bomCode);
 }

+ 16 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/ProcessItemService.java

@@ -0,0 +1,16 @@
+package com.malk.diwei.service;
+
+import com.malk.diwei.entity.ProcessItem;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-04-02
+ */
+public interface ProcessItemService extends IService<ProcessItem> {
+
+}

+ 16 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/ProcessMaterialService.java

@@ -0,0 +1,16 @@
+package com.malk.diwei.service;
+
+import com.malk.diwei.entity.ProcessMaterial;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-31
+ */
+public interface ProcessMaterialService extends IService<ProcessMaterial> {
+
+}

+ 27 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/ProcessService.java

@@ -0,0 +1,27 @@
+package com.malk.diwei.service;
+
+import com.malk.diwei.entity.Process;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.malk.server.common.McR;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-27
+ */
+public interface ProcessService extends IService<Process> {
+
+    McR syncProcess();
+
+    McR syncProcessOut();
+
+    McR syncProcessOut2();
+
+    McR syncProcessOn();
+
+    McR syncProcessOn2();
+
+}

+ 16 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/SalesOrderItemService.java

@@ -0,0 +1,16 @@
+package com.malk.diwei.service;
+
+import com.malk.diwei.entity.SalesOrderItem;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+public interface SalesOrderItemService extends IService<SalesOrderItem> {
+
+}

+ 20 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/SalesOrderService.java

@@ -0,0 +1,20 @@
+package com.malk.diwei.service;
+
+import com.malk.diwei.entity.SalesOrder;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.malk.server.common.McR;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+public interface SalesOrderService extends IService<SalesOrder> {
+
+    McR addSaleOrder(Map map);
+}

+ 16 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/WorkProcStepService.java

@@ -0,0 +1,16 @@
+package com.malk.diwei.service;
+
+import com.malk.diwei.entity.WorkProcStep;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-04-02
+ */
+public interface WorkProcStepService extends IService<WorkProcStep> {
+
+}

+ 20 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/BomItemServiceImpl.java

@@ -0,0 +1,20 @@
+package com.malk.diwei.service.impl;
+
+import com.malk.diwei.entity.BomItem;
+import com.malk.diwei.mapper.BomItemMapper;
+import com.malk.diwei.service.BomItemService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+@Service
+public class BomItemServiceImpl extends ServiceImpl<BomItemMapper, BomItem> implements BomItemService {
+
+}

+ 20 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/BomServiceImpl.java

@@ -0,0 +1,20 @@
+package com.malk.diwei.service.impl;
+
+import com.malk.diwei.entity.Bom;
+import com.malk.diwei.mapper.BomMapper;
+import com.malk.diwei.service.BomService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+@Service
+public class BomServiceImpl extends ServiceImpl<BomMapper, Bom> implements BomService {
+
+}

+ 20 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/DepartmentServiceImpl.java

@@ -0,0 +1,20 @@
+package com.malk.diwei.service.impl;
+
+import com.malk.diwei.entity.Department;
+import com.malk.diwei.mapper.DepartmentMapper;
+import com.malk.diwei.service.DepartmentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-31
+ */
+@Service
+public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Department> implements DepartmentService {
+
+}

+ 49 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/DiweiServiceImpl.java

@@ -0,0 +1,49 @@
+package com.malk.diwei.service.impl;
+
+import com.malk.diwei.service.*;
+import com.malk.server.common.McR;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DiweiServiceImpl implements DiweiService {
+    @Autowired
+    private ClientService clientService;
+
+    @Autowired
+    private GoodsService goodsService;
+
+    @Autowired
+    private ProcStepService procStepService;
+
+    @Autowired
+    private EmployeeService employeeService;
+
+    @Autowired
+    private ProcessService processService;
+
+    @Async
+    @Override
+    public McR syncBaseAll() {
+        clientService.syncClient();
+        goodsService.syncGoods();
+        procStepService.syncProcStep();
+        employeeService.syncEmplyee();
+
+        return McR.success();
+    }
+
+    @Async
+    @Override
+    public McR syncProcessAll() {
+        processService.syncProcess();
+        processService.syncProcessOut();
+        processService.syncProcessOut2();
+        processService.syncProcessOn();
+        processService.syncProcessOn2();
+
+        return McR.success();
+    }
+}

+ 69 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/EmployeeServiceImpl.java

@@ -0,0 +1,69 @@
+package com.malk.diwei.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.malk.diwei.entity.Employee;
+import com.malk.diwei.mapper.EmployeeMapper;
+import com.malk.diwei.service.EmployeeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.common.McR;
+import com.malk.service.aliwork.YDClient;
+import com.malk.utils.UtilMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-24
+ */
+@Service
+public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {
+    @Autowired
+    private EmployeeMapper employeeMapper;
+
+    @Autowired
+    private YDClient ydClient;
+
+    @Override
+    public McR syncEmplyee() {
+        List<Employee> employeeList = employeeMapper.selectList(null);
+        for (Employee employee : employeeList) {
+            Map formData = new HashMap();
+
+            formData.put("textField_m8msenxy",employee.getEmpName());//名称
+            formData.put("textField_m8msenxz",employee.getEmpCode());//员工编号
+            formData.put("numberField_m8mseny0",employee.getEmpID());//员工id
+            formData.put("radioField_m8msenya",employee.getEmpSex().equals("M") ? "男" : "女");//员工性别
+            formData.put("numberField_m8msenyl",employee.getDeptID());//部门id
+            formData.put("selectField_m8msenyb",employee.getEmpIsSalesman() == 1 ? "是" : "否");//业务员
+            formData.put("numberField_m8mu7y3d",employee.getJobID());//职位id
+            formData.put("selectField_m8msenyj",employee.getEmpIsQCMerchandiser() != null && employee.getEmpIsQCMerchandiser() == 1 ? "是" : "否");//QC跟单
+            formData.put("selectField_m8msenyk",employee.getEmpWorkStatus() == 1 ? "正常" : "停用");//状态
+
+
+            //精准匹配
+            List<Map> jsonString = new ArrayList<>();
+            jsonString.add(UtilMap.map("key, value, type, operator, componentName", "textField_m8msenxz",employee.getEmpCode(),"TEXT","eq","TextField"));
+
+            ydClient.operateData(YDParam.builder()
+                    .formUuid("FORM-DDF42AE83D864D88B78721F823E082DFCKUB")
+                    .searchCondition(JSONObject.toJSONString(jsonString))
+                    .formDataJson(JSONObject.toJSONString(formData))
+                    .build(), YDConf.FORM_OPERATION.upsert);
+
+
+        }
+        return McR.success();
+    }
+}

+ 20 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/GoodsPartsServiceImpl.java

@@ -0,0 +1,20 @@
+package com.malk.diwei.service.impl;
+
+import com.malk.diwei.entity.GoodsParts;
+import com.malk.diwei.mapper.GoodsPartsMapper;
+import com.malk.diwei.service.GoodsPartsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-31
+ */
+@Service
+public class GoodsPartsServiceImpl extends ServiceImpl<GoodsPartsMapper, GoodsParts> implements GoodsPartsService {
+
+}

+ 288 - 1
mjava-diwei/src/main/java/com/malk/diwei/service/impl/GoodsServiceImpl.java

@@ -3,6 +3,7 @@ package com.malk.diwei.service.impl;
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.google.common.base.Strings;
 import com.malk.diwei.entity.*;
 import com.malk.diwei.mapper.*;
 import com.malk.diwei.service.GoodsService;
@@ -10,12 +11,17 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.common.McR;
+import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
+import com.malk.utils.UtilHttp;
+import com.malk.utils.UtilList;
 import com.malk.utils.UtilMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -54,13 +60,25 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     @Autowired
     private SizeMapper sizeMapper;
 
+    @Autowired
+    private GoodsStockMapper goodsStockMapper;
+
+    @Autowired
+    private EmployeeMapper employeeMapper;
+
+    @Autowired
+    private BomMapper bomMapper;
+
     @Autowired
     private YDClient ydClient;
 
     public McR syncGoods() {
         //查询昨天修改的物料
         LambdaQueryWrapper<Goods> goodsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-//        goodsLambdaQueryWrapper.ge(Goods::getGoodsUpdateDatetime,DateUtil.yesterday());
+        goodsLambdaQueryWrapper.ge(Goods::getGoodsUpdateDatetime,"2025-03-12 00:00:00")
+                .or()
+                .ge(Goods::getGoodsCreateDatetime,"2025-03-12 00:00:00");
+        //DateUtil.beginOfDay(DateUtil.yesterday())
         List<Goods> goods = goodsMapper.selectList(goodsLambdaQueryWrapper);
 
         for (Goods good : goods) {
@@ -155,6 +173,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
                     colorLambdaQueryWrapper.eq(Color::getColorID,goodsColor.getColorID());
                     Color color = colorMapper.selectOne(colorLambdaQueryWrapper);
                     if (Objects.nonNull(color)){
+                        colorMap.put("numberField_m8o7fxr6",color.getColorID());
                         colorMap.put("textField_m85b219g",color.getColorName());
                     }
                     colorList.add(colorMap);
@@ -174,6 +193,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
                     sizeLambdaQueryWrapper.eq(Size::getSizeID,goodsSize.getSizeID());
                     Size size = sizeMapper.selectOne(sizeLambdaQueryWrapper);
                     if (Objects.nonNull(size)){
+                        sizeMap.put("numberField_m8o7fxr7",size.getSizeID());
                         sizeMap.put("textField_m85b219m",size.getSizeName());
                     }
                     sizeMap.put("textField_m85b219o",goodsSize.getGoodsSizeDes());//备注
@@ -190,8 +210,275 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
                     .searchCondition(JSONObject.toJSONString(searchCondition))
                     .formDataJson(JSONObject.toJSONString(formData))
                     .build(), YDConf.FORM_OPERATION.upsert);
+
+            //临时更新数据
+            /*List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
+                    .formUuid("FORM-06568CCD028F45278F6D571FDD5B91A5X2FX")
+                    .searchCondition(JSONObject.toJSONString(searchCondition))
+                    .build(), YDConf.FORM_QUERY.retrieve_list).getData();
+
+            if(Objects.nonNull(data) && !data.isEmpty()){
+                String formInstId = data.get(0).get("formInstanceId").toString();
+                ydClient.operateData(YDParam.builder()
+                        .formInstId(formInstId)
+                        .updateFormDataJson(JSONObject.toJSONString(formData))
+                        .useLatestVersion(true)
+                        .build(), YDConf.FORM_OPERATION.update);
+            }*/
+
+
+        }
+
+        return McR.success();
+    }
+
+    @Override
+    public McR queryGoodsStock(Integer goodsId, Integer colorId, Integer sizeId) {
+        LambdaQueryWrapper<GoodsStock> goodsStockLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        goodsStockLambdaQueryWrapper.eq(GoodsStock::getGoodsID,goodsId)
+                .eq(GoodsStock::getColorID,colorId)
+                .eq(GoodsStock::getSizeID,sizeId);
+        GoodsStock goodsStock = goodsStockMapper.selectOne(goodsStockLambdaQueryWrapper);
+        if (Objects.nonNull(goodsStock)){
+            BigDecimal goodsStockInQty = goodsStock.getGoodsStockInQty();
+            return McR.success(goodsStockInQty);
+        }else {
+            return McR.success(-1);
+        }
+    }
+
+    @Override
+    public McR addBom(Map map) {
+        if (Objects.isNull(map.get("formInstId"))){
+            return McR.errorParam("实例id为空!");
+        }
+        String formInstId = map.get("formInstId").toString();
+
+        Map formData = ydClient.queryData(YDParam.builder()
+                .formInstId(formInstId)
+                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+
+        Map data = new HashMap();
+
+        data.put("BomCode",formData.get("textField_m85ngbmt"));//单据编码
+        data.put("BomGoodsCode",formData.get("textField_m913mbyz"));//款号
+        data.put("BomProcessPrice",formData.get("numberField_m85ngbna"));//其他工费
+        data.put("BomOtherFeePrice",formData.get("numberField_m85ngbnb"));//其他费用
+
+        String creator = formData.get("textField_m913mbz1").toString();
+        LambdaQueryWrapper<Employee> employeeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        employeeLambdaQueryWrapper.eq(Employee::getEmpName,creator)
+                        .or().eq(Employee::getEmpGamUserID,creator);
+        Employee employee = employeeMapper.selectOne(employeeLambdaQueryWrapper);
+        if (Objects.nonNull(employee)){
+            data.put("BomCreatEmp",creator);//制单人
+        }else {
+            data.put("BomCreatEmp","蒂维");//制单人
+        }
+        data.put("BomOrgName","总部");//组织机构
+        data.put("BomDes",formData.get("textareaField_m85ngbnc"));//备注
+        data.put("BomProofingRequirement",formData.get("textareaField_m85ngbne"));//工艺要求
+
+        //获取所有子表明细(大于50条)
+        //原料明细
+        List<Map> materialDetails2 = getInnerTable("FORM-9A64B193700349F6A090D0D0D38A7F5CK8BG",formInstId,"tableField_m85ngbnd",1,50);
+        //原料分码明细
+        List<Map> materialDetails3 = getInnerTable("FORM-9A64B193700349F6A090D0D0D38A7F5CK8BG",formInstId,"tableField_m8cg47od",1,50);
+        //辅料明细
+        List<Map> sMaterialDetails2 = getInnerTable("FORM-9A64B193700349F6A090D0D0D38A7F5CK8BG",formInstId,"tableField_m8i5xg6k",1,50);
+        //辅料分码明细
+        List<Map> sMaterialDetails3 = getInnerTable("FORM-9A64B193700349F6A090D0D0D38A7F5CK8BG",formInstId,"tableField_m8ih0mhc",1,50);
+
+
+
+        //原料明细
+        List<Map> materialItems = new ArrayList<>();
+
+        for (Map materialDetail : materialDetails2) {
+            Map detail = new HashMap();
+
+            if (Strings.isNullOrEmpty(materialDetail.get("textField_m8i5xg6m").toString())){
+                continue;
+            }
+
+            String uuid = materialDetail.get("textField_m8cg47ol").toString();
+            detail.put("GoodsPartsName",materialDetail.get("selectField_m88elwmx"));//部件
+            detail.put("GoodsColorName",materialDetail.get("textField_m88elwlo"));//成品颜色
+            detail.put("GoodsColorWay",materialDetail.get("textField_m85ngbni"));//色位
+
+            boolean isSplit = false;
+            if (materialDetail.get("radioField_m85ngbnp") != null && materialDetail.get("radioField_m85ngbnp").toString().equals("是")) {
+                isSplit = true;
+            }
+
+            detail.put("GoodsColorIsSplitSize",isSplit);//分码
+            detail.put("MaterialCode",materialDetail.get("textField_m8i5xg6m"));//原料货号
+            detail.put("MaterialColorName",materialDetail.get("textField_m88elwmt"));//原料颜色
+            detail.put("MaterialColorNo",materialDetail.get("textField_m85ngbnn"));//原料色号
+            detail.put("MaterialDes",materialDetail.get("textareaField_m85ngbnu"));//明细备注
+
+            //分码
+            if (isSplit) {
+                List<Map> collect2 = materialDetails3.stream().filter(item ->
+                                item.get("textField_m8cg47of").toString().contains(uuid))
+                        .collect(Collectors.toList());
+
+                for (Map map1 : collect2) {
+                    Map detail2 = new HashMap(detail);
+                    detail2.put("GoodsSizeName",map1.get("textField_m8cg47og"));//成品尺码
+                    detail2.put("MaterialQty",map1.get("numberField_m8cg47oh"));//需求数
+                    detail2.put("MaterialLossRate",map1.get("numberField_m8cg47oi"));//损耗率
+                    detail2.put("MaterialPrice",map1.get("numberField_m8cg47oj"));//成本单价
+                    detail2.put("MaterialVendorName",map1.get("textField_m913mbza"));//供应商
+
+                    materialItems.add(detail2);
+                }
+            }else {
+                detail.put("MaterialQty",materialDetail.get("numberField_m85ngbnq"));//需求数
+                detail.put("MaterialLossRate",materialDetail.get("numberField_m85ngbns"));//损耗率
+                detail.put("MaterialPrice",materialDetail.get("numberField_m85ngbnr"));//成本单价
+                detail.put("MaterialVendorName",materialDetail.get("textField_m913mbz6"));//供应商
+
+                materialItems.add(detail);
+            }
+
+        }
+
+        data.put("MaterialItems",materialItems);//原料明细
+
+        //辅料明细
+        List<Map> sMaterialItems = new ArrayList<>();
+
+        for (Map sMaterialDetail : sMaterialDetails2) {
+            Map detail = new HashMap();
+
+            if (Strings.isNullOrEmpty(sMaterialDetail.get("textField_m8i5xg69").toString())){
+                continue;
+            }
+
+            String uuid = sMaterialDetail.get("textField_m8i5xg65").toString();
+            detail.put("GoodsColorName",sMaterialDetail.get("textField_m8i5xg66"));//成品颜色
+
+            boolean isSplit = false;
+            if (sMaterialDetail.get("radioField_m8i5xg6c") != null && sMaterialDetail.get("radioField_m8i5xg6c").toString().equals("是")) {
+                isSplit = true;
+            }
+
+            detail.put("GoodsColorIsSplitSize",isSplit);//分码
+            detail.put("SMaterialCode",sMaterialDetail.get("textField_m8i5xg69"));//辅料货号
+            detail.put("SMaterialColorName",sMaterialDetail.get("selectField_m96or1zu"));//辅料颜色
+            detail.put("SMaterialDes",sMaterialDetail.get("textareaField_m8i5xg6j"));//明细备注
+
+            //分码
+            if (isSplit) {
+                List<Map> collect2 = sMaterialDetails3.stream().filter(item ->
+                                item.get("textField_m8ih0mh5").toString().contains(uuid))
+                        .collect(Collectors.toList());
+
+                for (Map map1 : collect2) {
+                    Map detail2 = new HashMap(detail);
+
+                    detail2.put("GoodsSizeName",map1.get("textField_m8ih0mh6"));//成品尺码
+                    detail2.put("SMaterialQty",map1.get("numberField_m8ih0mh7"));//需求数
+                    detail2.put("SMaterialLossRate",map1.get("numberField_m8ih0mh8"));//损耗率
+                    detail2.put("SMaterialPrice",map1.get("numberField_m8ih0mh9"));//成本单价
+                    detail2.put("SMaterialVendorName",map1.get("textField_m913mbzc"));//供应商
+
+                    sMaterialItems.add(detail2);
+                }
+            }else {
+                detail.put("SMaterialQty",sMaterialDetail.get("numberField_m8i5xg6e"));//需求数
+                detail.put("SMaterialLossRate",sMaterialDetail.get("numberField_m8i5xg6g"));//损耗率
+                detail.put("SMaterialPrice",sMaterialDetail.get("numberField_m8i5xg6f"));//成本单价
+                detail.put("SMaterialVendorName",sMaterialDetail.get("textField_m913mbzb"));//供应商
+
+                sMaterialItems.add(detail);
+            }
         }
 
+        data.put("SMaterialItems",sMaterialItems);
+
+        //工序明细
+        List<Map> stepItems = new ArrayList<>();
+
+        List<Map> stepItemList = (List<Map>) formData.get("tableField_m85ngbmz");
+        if (Objects.nonNull(stepItemList)){
+            for (Map stepItem : stepItemList) {
+                Map map1 = new HashMap();
+                map1.put("StepName",stepItem.get("textField_m85ngbn0"));//工序名称
+                map1.put("StepUseTime",stepItem.get("numberField_m85ngbn2"));//单间耗时
+                map1.put("StepPrice",stepItem.get("numberField_m85ngbn3"));//工序单价
+                map1.put("StepDes",stepItem.get("textareaField_m85ngbn4"));//备注
+
+                stepItems.add(map1);
+            }
+        }
+
+        //工序为空时也需传
+        data.put("StepItems",stepItems);//工序明细
+
+
+        String s = UtilHttp.doPost("http://47.98.200.166/EpiErp5_DiWei_2023/rest/SyncBom_DW", null, null, data);
+
+        System.out.println(s);
+        String[] jsonParts = s.split("(?<=})"); // 按 } 分割
+
+        for (String jsonPart : jsonParts) {
+            Map parse = (Map) JSONObject.parse(jsonPart);
+            if(Objects.nonNull(parse.get("errcode"))){
+                if (!parse.get("errcode").toString().equals("0")){
+                    return McR.errorUnknown("新增失败!失败原因:"+parse.get("errmsg").toString());
+                }
+            }
+        }
+
+        return McR.success();
+    }
+
+    @Override
+    public McR queryGoodsNewBom(int goodsId) {
+        LambdaQueryWrapper<Bom> bomLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        bomLambdaQueryWrapper.eq(Bom::getGoodsID,goodsId)
+                        .orderByDesc(Bom::getBomID);
+
+
+
+        List<Bom> bomList = bomMapper.selectList(bomLambdaQueryWrapper);
+
+        if (Objects.nonNull(bomList) && !bomList.isEmpty()){
+            return McR.success("当前货号存在最新启用BOM:"+bomList.get(0).getBomCode());
+        }else {
+            return McR.success("未查询到BOM信息!");
+        }
+    }
+
+    @Override
+    public McR queryBomIsExist(String bomCode) {
+        LambdaQueryWrapper<Bom> bomLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        bomLambdaQueryWrapper.eq(Bom::getBomCode,bomCode);
+        List<Bom> bomList = bomMapper.selectList(bomLambdaQueryWrapper);
+        if (Objects.nonNull(bomList) && !bomList.isEmpty()){
+            return McR.errorUnknown("当前BOM已存在!");
+        }
         return McR.success();
     }
+
+    private List<Map> getInnerTable(String formUuid, String formInstId, String tableField, int pageNumber, int pageSize) {
+        List<Map> details = new ArrayList<>();
+        DDR_New ddrNew = new DDR_New();
+
+        do {
+            ddrNew = ydClient.queryData(YDParam.builder()
+                    .formUuid(formUuid)
+                    .formInstId(formInstId)
+                    .tableFieldId(tableField)
+                    .pageNumber(pageNumber)
+                    .pageSize(pageSize)
+                    .build(), YDConf.FORM_QUERY.retrieve_details);
+            details.addAll((List<Map>)ddrNew.getData());
+            pageNumber++;
+        }while (ddrNew.getTotalCount() > pageSize * ddrNew.getPageNumber());
+
+        return details;
+    }
 }

+ 0 - 1
mjava-diwei/src/main/java/com/malk/diwei/service/impl/ProcStepServiceImpl.java

@@ -46,7 +46,6 @@ public class ProcStepServiceImpl extends ServiceImpl<ProcStepMapper, ProcStep> i
     @Override
     public McR syncProcStep() {
         LambdaQueryWrapper<ProcStep>  procStepLambdaQueryWrapper = new LambdaQueryWrapper();
-        procStepLambdaQueryWrapper.eq(ProcStep::getProcStepType, 1);
 
         List<ProcStep> list = procStepMapper.selectList(procStepLambdaQueryWrapper);
 

+ 20 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/ProcessItemServiceImpl.java

@@ -0,0 +1,20 @@
+package com.malk.diwei.service.impl;
+
+import com.malk.diwei.entity.ProcessItem;
+import com.malk.diwei.mapper.ProcessItemMapper;
+import com.malk.diwei.service.ProcessItemService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-04-02
+ */
+@Service
+public class ProcessItemServiceImpl extends ServiceImpl<ProcessItemMapper, ProcessItem> implements ProcessItemService {
+
+}

+ 20 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/ProcessMaterialServiceImpl.java

@@ -0,0 +1,20 @@
+package com.malk.diwei.service.impl;
+
+import com.malk.diwei.entity.ProcessMaterial;
+import com.malk.diwei.mapper.ProcessMaterialMapper;
+import com.malk.diwei.service.ProcessMaterialService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-31
+ */
+@Service
+public class ProcessMaterialServiceImpl extends ServiceImpl<ProcessMaterialMapper, ProcessMaterial> implements ProcessMaterialService {
+
+}

+ 733 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/ProcessServiceImpl.java

@@ -0,0 +1,733 @@
+package com.malk.diwei.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.malk.diwei.entity.*;
+import com.malk.diwei.entity.Process;
+import com.malk.diwei.mapper.*;
+import com.malk.diwei.service.ProcessService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.common.McR;
+import com.malk.service.aliwork.YDClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-27
+ */
+@Service
+public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> implements ProcessService {
+    @Autowired
+    private ProcessMapper processMapper;
+
+    @Autowired
+    private DepartmentMapper departmentMapper;
+
+    @Autowired
+    private EmployeeMapper employeeMapper;
+
+    @Autowired
+    private ProcessMaterialMapper processMaterialMapper;
+
+    @Autowired
+    private YDClient ydClient;
+
+    @Autowired
+    private BomMapper bomMapper;
+
+    @Autowired
+    private GoodsMapper goodsMapper;
+
+    @Autowired
+    private ColorMapper colorMapper;
+
+    @Autowired
+    private UnitMapper unitMapper;
+
+    @Autowired
+    private GoodsPartsMapper goodsPartsMapper;
+
+    @Autowired
+    private WorkProcStepMapper workProcStepMapper;
+
+    @Autowired
+    private ClientMapper clientMapper;
+
+    @Autowired
+    private ProcessItemMapper processItemMapper;
+
+    @Autowired
+    private ProcessONDetailMapper processONDetailMapper;
+
+    private static final Map PROC_STEP_TYPE = new HashMap<>();
+
+    static {
+        PROC_STEP_TYPE.put(1, "厂内工序");
+        PROC_STEP_TYPE.put(3, "裁剪工序");
+        PROC_STEP_TYPE.put(4, "工艺委外工序");
+    }
+
+    @Override
+    public McR syncProcess() {
+        LambdaQueryWrapper<Process> processLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        processLambdaQueryWrapper.and(wrapper -> wrapper.ge(Process::getProcessUpdateDatetime, DateUtil.beginOfDay(DateUtil.yesterday()))
+                .or()
+                .ge(Process::getProcessCreateDatetime,DateUtil.beginOfDay(DateUtil.yesterday())))
+                .eq(Process::getEntityObjKey,"ProductionSW")
+                .eq(Process::getProcessStatus,2);
+
+        /*processLambdaQueryWrapper.and(wrapper -> wrapper.ge(Process::getProcessUpdateDatetime, "2025-04-10 00:00:00")
+                        .or()
+                        .ge(Process::getProcessCreateDatetime,"2025-04-10 00:00:00"))
+                .eq(Process::getEntityObjKey,"ProductionSW")
+                .eq(Process::getProcessStatus,2);*/
+        List<Process> processeList= processMapper.selectList(processLambdaQueryWrapper);
+
+        for (Process process : processeList) {
+            Map formData = new HashMap();
+
+            formData.put("dateField_m8pi90ec", process.getProcessDate().getTime());//单据日期
+            formData.put("textField_m8pi90ei",process.getProcessCode());//单据编号
+
+            LambdaQueryWrapper<Bom> bomLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            bomLambdaQueryWrapper.eq(Bom::getBomID, process.getProcessBomID());
+            Bom bom = bomMapper.selectOne(bomLambdaQueryWrapper);
+
+            formData.put("textField_m8pi90ej",bom.getBomCode());//BOM
+            formData.put("dateField_m8pi90eo",process.getProcessDeliveryDate().getTime());//交货日期
+
+            if (process.getProcessDeptID() != null && process.getProcessDeptID() != 0){
+                LambdaQueryWrapper<Department> departmentLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                departmentLambdaQueryWrapper.eq(Department::getDeptID, process.getProcessDeptID());
+                Department department = departmentMapper.selectOne(departmentLambdaQueryWrapper);
+                formData.put("textField_m8pi90eq",department.getDeptName());//部门
+            }
+
+            formData.put("textField_m8pi90es","总部");//组织机构
+            formData.put("textField_m8pi90ex",process.getProcessSOClientName());//订单客户
+            formData.put("textField_m8pi90ey",process.getProcessSOClientOrderCode());//客户订单号
+            formData.put("textField_m8pi90ez",process.getProcessSOGoodsCode());//订单款号
+
+            if (process.getProcessQCMerchandiserID() != null && process.getProcessQCMerchandiserID() != 0){
+                LambdaQueryWrapper<Employee> employeeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                employeeLambdaQueryWrapper.eq(Employee::getEmpID, process.getProcessQCMerchandiserID());
+                Employee employee = employeeMapper.selectOne(employeeLambdaQueryWrapper);
+
+                formData.put("textField_m8pi90f4",employee.getEmpName());//QC跟单
+            }
+
+            formData.put("textareaField_m8pi90f6",process.getProcessDescription());//备注
+
+            //加工产品
+            List<Map> list = processMapper.selectProductById(process.getProcessID());
+            List<Map> collect = list.stream().map(map -> {
+                Map map1 = new HashMap();
+                map1.put("textField_m8pi90fa",map.get("GoodsCode"));//款号
+                map1.put("textField_m8pi90fe",map.get("GoodsName"));//款名
+                map1.put("textField_m8pi90fi",map.get("UnitName"));//单位
+                map1.put("numberField_m8pi90fk",map.get("qty"));//加工数
+                map1.put("textField_m8pi90fm",map.get("ProcessItemReferBillCode"));//引用单据编号
+
+                return map1;
+            }).collect(Collectors.toList());
+
+            formData.put("tableField_m8pi90f9",collect);
+
+            //加工件数
+            int num1 = 0;
+            for (Map map : list) {
+                num1 += ((BigDecimal) map.get("qty")).intValue();
+            }
+            formData.put("numberField_m8pi90hw",num1);
+
+
+
+            //横机/附件外发明细
+            List<Map> processDetailList = processMapper.selectProcessONDetailByCode(process.getProcessCode());
+            List<Map> processDetails = new ArrayList<>();
+            for (Map processDetail : processDetailList) {
+                Map map = new HashMap();
+                map.put("textField_m8pi90fo",processDetail.get("ProcessCode"));//外发单号
+                map.put("dateField_m8pi90fc",((Date)processDetail.get("ProcessDate")).getTime());//外发日期
+                //状态
+                int status = ((Short) processDetail.get("ProcessStatus")).intValue();
+                switch (status){
+                    case 1:map.put("textField_m8pi90fp","草稿");break;
+                    case 2:map.put("textField_m8pi90fp","已提交");break;
+                    case 3:map.put("textField_m8pi90fp","已审核");break;
+                    default:break;
+                }
+                map.put("textField_m8pi90fq",processDetail.get("ClientName"));//加工厂
+                map.put("textField_m8pi90fr",processDetail.get("GoodsPartsName"));//部件
+                map.put("textField_m8pi90ft",processDetail.get("WPSProcStepName"));//工序
+                map.put("textField_m8pi90fv",processDetail.get("GoodsNeedleType"));//针型
+                map.put("textField_m8pi90fx",processDetail.get("GoodsMachineType"));//机型
+                map.put("numberField_m8pi90fz",processDetail.get("WPSHadRecordQty"));//外发数
+
+
+                processDetails.add(map);
+            }
+
+            formData.put("tableField_m8pi90fn",processDetails);
+
+
+            //原料需求
+            double num2 = 0.0;
+            List<Map> processMaterialList = processMaterialMapper.selectProcessMaterialByGoodsProperty(process.getProcessID(),3);
+            List<Map> processMaterials = new ArrayList<>();
+            for (Map processMaterial : processMaterialList) {
+                Map map = new HashMap();
+
+                map.put("textField_m8pi90g3",processMaterial.get("GoodsPartsName"));//部件
+                map.put("textField_m8pi90g5",processMaterial.get("GoodsCode"));//原料编码
+                map.put("textField_m8pi90g7",processMaterial.get("GoodsName"));//原料名称
+                map.put("textField_m8pi90g9",processMaterial.get("ColorName"));//颜色
+                map.put("textField_m8pi90gb",processMaterial.get("ProcessMaterialColorVCode"));//色号
+                map.put("textField_m8pi90gd",processMaterial.get("ProcessMaterialDes"));//批号
+                map.put("textField_m8pi90gf",processMaterial.get("UnitName"));//单位
+                map.put("numberField_m8pi90gh",processMaterial.get("ProcessMaterialQty"));//需求数
+
+                num2 += Double.parseDouble(processMaterial.get("ProcessMaterialQty").toString());
+
+                processMaterials.add(map);
+            }
+
+            formData.put("tableField_m8pi90g2",processMaterials);
+            formData.put("numberField_m8pi90hy",num2);
+
+            //辅料需求
+            double num3 = 0.0;
+            List<Map> processMaterialList2 = processMaterialMapper.selectProcessMaterialByGoodsProperty(process.getProcessID(),4);
+            List<Map> processMaterials2 = new ArrayList<>();
+            for (Map processMaterial : processMaterialList2) {
+                Map map = new HashMap();
+
+                map.put("textField_m8pi90h5",processMaterial.get("GoodsCode"));//辅料编码
+                map.put("textField_m8pi90h6",processMaterial.get("GoodsName"));//辅料名称
+                map.put("textField_m8pi90h7",processMaterial.get("ColorName"));//颜色
+                map.put("textField_m8pi90h9",processMaterial.get("GoodsSpecs"));//规格
+                map.put("textField_m8pi90ha",processMaterial.get("UnitName"));//单位
+                map.put("numberField_m8pi90hb",processMaterial.get("ProcessMaterialQty"));//需求数
+                map.put("numberField_m8pi90he",processMaterial.get("ProcessMaterialPickQty"));//已领数
+
+                num3 += Double.parseDouble(processMaterial.get("ProcessMaterialQty").toString());
+
+                processMaterials2.add(map);
+            }
+
+            formData.put("tableField_m8pi90hc",processMaterials2);
+            formData.put("numberField_m8pi90hz",num3);
+
+            //加工工艺
+            LambdaQueryWrapper<WorkProcStep> workProcStepLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            workProcStepLambdaQueryWrapper.eq(WorkProcStep::getProcessID,process.getProcessID());
+            List<WorkProcStep> workProcStepList = workProcStepMapper.selectList(workProcStepLambdaQueryWrapper);
+            List<Map> workProcSteps = new ArrayList<>();
+            for (WorkProcStep workProcStep : workProcStepList) {
+                Map map = new HashMap();
+                map.put("textField_m8pi90hh",workProcStep.getWPSProcStepName());//工序
+
+                int wpsProcStepType = workProcStep.getWPSProcStepType();
+                map.put("textField_m8pi90hj",PROC_STEP_TYPE.get(wpsProcStepType));//类型
+                map.put("radioField_m8zkxbjm",workProcStep.getWPSProcStepIsFKM() == 1 ? "是" : "否");//横机
+
+                int WPSConfirmQty = 0;
+                if (wpsProcStepType == 4){
+                    WPSConfirmQty = workProcStep.getWPSConfirmQty();
+                }else {
+                    WPSConfirmQty =  ((BigDecimal)list.get(0).get("qty")).intValue();
+                }
+                int WPSHadRecordQty = workProcStep.getWPSHadRecordQty();
+                int WPSUnRecordQty = WPSConfirmQty - WPSHadRecordQty;
+
+                map.put("numberField_m8pi90hp",WPSConfirmQty);//应排
+                map.put("numberField_m8pi90hq",WPSHadRecordQty);//已排
+                map.put("numberField_m8pi90hr",WPSUnRecordQty);//未排
+
+                Long wpsFactoryID = workProcStep.getWPSFactoryID();
+                if (wpsFactoryID != null && wpsFactoryID != 0){
+                    LambdaQueryWrapper<Client> clientLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                    clientLambdaQueryWrapper.eq(Client::getClientID,workProcStep.getWPSFactoryID());
+                    Client client = clientMapper.selectOne(clientLambdaQueryWrapper);
+                    if (client != null){
+                        map.put("textField_m8pi90hn",client.getClientName());//委外加工厂
+                    }
+                }
+
+                workProcSteps.add(map);
+            }
+
+            formData.put("tableField_m8pi90hg",workProcSteps);
+
+            ydClient.operateData(YDParam.builder()
+                    .formUuid("FORM-233DD96AE9A342C69DFF33016370504ETO2Z")
+                    .searchCondition(JSONObject.toJSONString(Arrays.asList(YDConf.searchCondition_TextFiled("textField_m8pi90ei",process.getProcessCode(),"eq"))))
+                    .formDataJson(JSONObject.toJSONString(formData))
+                    .build(), YDConf.FORM_OPERATION.upsert);
+        }
+
+        return McR.success();
+    }
+
+    @Override
+    public McR syncProcessOut() {
+        LambdaQueryWrapper<Process> processLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        processLambdaQueryWrapper.and(wrapper -> wrapper.ge(Process::getProcessUpdateDatetime, DateUtil.beginOfDay(DateUtil.yesterday()))
+                        .or()
+                .ge(Process::getProcessCreateDatetime,DateUtil.beginOfDay(DateUtil.yesterday())))
+                .eq(Process::getEntityObjKey,"ProductionProcOutSideN")
+                .eq(Process::getProcessOutSideType,3)
+                .eq(Process::getProcessStatus,2);
+
+        /*processLambdaQueryWrapper.and(wrapper -> wrapper.ge(Process::getProcessUpdateDatetime, "2025-04-10 00:00:00")
+                        .or()
+                        .ge(Process::getProcessCreateDatetime,"2025-04-10 00:00:00"))
+                .eq(Process::getEntityObjKey,"ProductionProcOutSideN")
+                .eq(Process::getProcessOutSideType,3)
+                .eq(Process::getProcessStatus,2);*/
+
+
+        List<Process> processeList= processMapper.selectList(processLambdaQueryWrapper);
+
+        for (Process process : processeList) {
+            Map formData = new HashMap();
+
+            formData.put("dateField_m8pi90ec", process.getProcessDate().getTime());//单据日期
+            formData.put("textField_m8pi90ei",process.getProcessCode());//单据编号
+            formData.put("textField_m8pi90es","总部");//组织机构
+            formData.put("dateField_m8pi90eo",process.getProcessDeliveryDate().getTime());//交货日期
+
+            LambdaQueryWrapper<Client> clientLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            clientLambdaQueryWrapper.eq(Client::getClientID,process.getFactoryID());
+            Client client = clientMapper.selectOne(clientLambdaQueryWrapper);
+            if (Objects.nonNull(client)){
+                formData.put("textField_m8pi90ex",client.getClientName());//加工厂
+            }
+
+            if (process.getProcessSalesmanID() != null && process.getProcessSalesmanID() != 0){
+                LambdaQueryWrapper<Employee> employeeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                employeeLambdaQueryWrapper.eq(Employee::getEmpID, process.getProcessSalesmanID());
+                Employee employee = employeeMapper.selectOne(employeeLambdaQueryWrapper);
+
+                formData.put("textField_m8pjta80",employee.getEmpName());//业务跟单
+            }
+
+            if (process.getProcessQCMerchandiserID() != null && process.getProcessQCMerchandiserID() != 0){
+                LambdaQueryWrapper<Employee> employeeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                employeeLambdaQueryWrapper.eq(Employee::getEmpID, process.getProcessQCMerchandiserID());
+                Employee employee = employeeMapper.selectOne(employeeLambdaQueryWrapper);
+
+                formData.put("textField_m8pi90f4",employee.getEmpName());//QC跟单
+            }
+
+            formData.put("textareaField_m8pi90f6",process.getProcessDescription());//备注
+
+            //外发明细
+            List<Map> outSideDetails = new ArrayList<>();
+            List<Map> outSideDetailList = processMapper.selectOutSideDetails(process.getProcessID());
+            int num = 0;
+            for (Map outSideDetail : outSideDetailList) {
+                Map map = new HashMap();
+
+                map.put("textField_m8pjta82",outSideDetail.get("GoodsPartsName"));//部件
+                map.put("textField_m8pi90fa",outSideDetail.get("GoodsCode"));//款号
+                map.put("textField_m8pi90fe",outSideDetail.get("GoodsName"));//款名
+                map.put("textField_m8pjta83",outSideDetail.get("GoodsNeedleType"));//针型
+                map.put("textField_m8pjta84",outSideDetail.get("GoodsMachineType"));//机型
+                map.put("textField_m8pjta85",outSideDetail.get("ColorName"));//颜色
+                map.put("textField_m8pi90fi",outSideDetail.get("SizeName"));//尺码
+                map.put("textField_m8pjta86",outSideDetail.get("WPSProcStepName"));//工序
+                map.put("numberField_m8pi90fk",outSideDetail.get("ProcessONDetailQty"));//外发数
+                map.put("numberField_m8pjta87",outSideDetail.get("WPSProcStepPrice"));//工序单价
+                map.put("textareaField_m8pjta88",outSideDetail.get("ProcessItemDesc"));//备注
+                map.put("textField_m8pi90fm",outSideDetail.get("ProcessItemReferBillCode"));//加工单号
+
+                num += ((BigDecimal) outSideDetail.get("ProcessONDetailQty")).intValue();
+
+                outSideDetails.add(map);
+            }
+
+            formData.put("tableField_m8pi90f9",outSideDetails);
+            formData.put("numberField_m8pi90hw",num);//外发数合计
+
+            List<Map> processMaterialList = processMaterialMapper.selectProcessMaterialByGoodsProperty(process.getProcessID(),3);
+            List<Map> processMaterials = new ArrayList<>();
+            for (Map processMaterial : processMaterialList) {
+                Map map = new HashMap();
+
+                map.put("textField_m8pi90g3",processMaterial.get("GoodsPartsName"));//部件
+                map.put("textField_m8pi90g5",processMaterial.get("GoodsCode"));//原料编码
+                map.put("textField_m8pi90g7",processMaterial.get("GoodsName"));//原料名称
+                map.put("textField_m8pi90g9",processMaterial.get("ColorName"));//颜色
+                map.put("textField_m8pi90gb",processMaterial.get("ProcessMaterialColorVCode"));//色号
+                map.put("textField_m8pi90gd",processMaterial.get("ProcessMaterialDes"));//批号
+                map.put("textField_m8pi90gf",processMaterial.get("UnitName"));//单位
+                map.put("numberField_m8pi90gh",processMaterial.get("ProcessMaterialQty"));//需求数
+                map.put("numberField_m8pjta81",processMaterial.get("ProcessMaterialPickQty"));//已领数
+
+                processMaterials.add(map);
+            }
+
+            formData.put("tableField_m8pi90g2",processMaterials);
+
+            //辅料需求
+            List<Map> processMaterialList2 = processMaterialMapper.selectProcessMaterialByGoodsProperty(process.getProcessID(),4);
+            List<Map> processMaterials2 = new ArrayList<>();
+            for (Map processMaterial : processMaterialList2) {
+                Map map = new HashMap();
+
+                map.put("textField_m8pi90h5",processMaterial.get("GoodsCode"));//辅料编码
+                map.put("textField_m8pi90h6",processMaterial.get("GoodsName"));//辅料名称
+                map.put("textField_m8pi90h7",processMaterial.get("ColorName"));//颜色
+                map.put("textField_m8pi90h9",processMaterial.get("GoodsSpecs"));//规格
+                map.put("textField_m8pi90ha",processMaterial.get("UnitName"));//单位
+                map.put("numberField_m8pi90hb",processMaterial.get("ProcessMaterialQty"));//需求数
+
+                processMaterials2.add(map);
+            }
+
+            formData.put("tableField_m8pi90hc",processMaterials2);
+
+            ydClient.operateData(YDParam.builder()
+                    .formUuid("FORM-BEEFBB3E63CB427DA0FFD4391780ED2AAIQ4")
+                    .searchCondition(JSONObject.toJSONString(Arrays.asList(YDConf.searchCondition_TextFiled("textField_m8pi90ei",process.getProcessCode(),"eq"))))
+                    .formDataJson(JSONObject.toJSONString(formData))
+                    .build(), YDConf.FORM_OPERATION.upsert);
+        }
+
+        return McR.success();
+    }
+
+    @Override
+    public McR syncProcessOut2() {
+        LambdaQueryWrapper<Process> processLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        processLambdaQueryWrapper.and(wrapper -> wrapper.ge(Process::getProcessUpdateDatetime, DateUtil.beginOfDay(DateUtil.yesterday()))
+                        .or()
+                        .ge(Process::getProcessCreateDatetime,DateUtil.beginOfDay(DateUtil.yesterday())))
+                .eq(Process::getEntityObjKey,"ProductionProcOutSideN")
+                .eq(Process::getProcessOutSideType,0)
+                .eq(Process::getProcessStatus,2);
+
+        /*processLambdaQueryWrapper.and(wrapper -> wrapper.ge(Process::getProcessUpdateDatetime, "2025-04-10 00:00:00")
+                        .or()
+                        .ge(Process::getProcessCreateDatetime,"2025-04-10 00:00:00"))
+                .eq(Process::getEntityObjKey,"ProductionProcOutSideN")
+                .eq(Process::getProcessOutSideType,0)
+                .eq(Process::getProcessStatus,2);*/
+        List<Process> processeList= processMapper.selectList(processLambdaQueryWrapper);
+
+        for (Process process : processeList) {
+            Map formData = new HashMap();
+
+            formData.put("dateField_m8pi90ec", process.getProcessDate().getTime());//单据日期
+            formData.put("textField_m8pi90ei",process.getProcessCode());//单据编号
+            formData.put("textField_m8pi90es","总部");//组织机构
+            formData.put("dateField_m8pi90eo",process.getProcessDeliveryDate().getTime());//交货日期
+
+            LambdaQueryWrapper<Client> clientLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            clientLambdaQueryWrapper.eq(Client::getClientID,process.getFactoryID());
+            Client client = clientMapper.selectOne(clientLambdaQueryWrapper);
+            if (Objects.nonNull(client)){
+                formData.put("textField_m8pi90ex",client.getClientName());//加工厂
+            }
+
+            formData.put("textareaField_m8pi90f6",process.getProcessDescription());//备注
+
+            //外发明细
+            double num = 0;
+            double price = 0;
+            List<Map> outSideDetails = new ArrayList<>();
+            List<Map> outSideDetailList = processMapper.selectOutSideDetails(process.getProcessID());
+
+            for (Map outSideDetail : outSideDetailList) {
+                Map map = new HashMap();
+
+                map.put("textField_m8pi90fa",outSideDetail.get("GoodsCode"));//款号
+                map.put("textField_m8pjta85",outSideDetail.get("ColorName"));//颜色
+                map.put("textField_m8pi90fi",outSideDetail.get("SizeName"));//尺码
+                if (Objects.isNull(outSideDetail.get("ColorName")) && Objects.isNull(outSideDetail.get("SizeName"))){
+                    map.put("textField_m8pld6zz","不分色码");
+                }else {
+                    map.put("textField_m8pld6zz","分色分码");
+                }
+                map.put("textField_m8pjta86",outSideDetail.get("WPSProcStepName"));//工序
+                map.put("numberField_m8pi90fk",outSideDetail.get("ProcessItemQty"));//委外件数
+                map.put("numberField_m8pjta87",outSideDetail.get("WPSProcStepPrice"));//工序单价
+                map.put("textareaField_m8pjta88",outSideDetail.get("ProcessItemDesc"));//备注
+                map.put("textField_m8pi90fm",outSideDetail.get("ProcessItemReferBillCode"));//加工单号
+
+                num += ((BigDecimal) outSideDetail.get("ProcessONDetailQty")).doubleValue();
+                price += ((BigDecimal) outSideDetail.get("WPSProcStepPrice")).doubleValue();
+
+                outSideDetails.add(map);
+            }
+
+            formData.put("tableField_m8pi90f9",outSideDetails);
+            formData.put("numberField_m8pi90hw",num);//数量合计
+            formData.put("numberField_m8pld6zw",price);//金额合计
+
+            ydClient.operateData(YDParam.builder()
+                    .formUuid("FORM-CBB8EADCBBD84982BAD3C6F38CB56171V6PS")
+                    .searchCondition(JSONObject.toJSONString(Arrays.asList(YDConf.searchCondition_TextFiled("textField_m8pi90ei",process.getProcessCode(),"eq"))))
+                    .formDataJson(JSONObject.toJSONString(formData))
+                    .build(), YDConf.FORM_OPERATION.upsert);
+        }
+
+        return McR.success();
+    }
+
+    @Override
+    public McR syncProcessOn() {
+        LambdaQueryWrapper<ProcessONDetail> processONDetailLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        processONDetailLambdaQueryWrapper.and(wrapper -> wrapper.ge(ProcessONDetail::getProcessONDetailUpdateDate, DateUtil.beginOfDay(DateUtil.yesterday()))
+                .or()
+                .ge(ProcessONDetail::getProcessONDetailCreatDate,DateUtil.beginOfDay(DateUtil.yesterday())))
+                .eq(ProcessONDetail::getProcessONDetailType,2)//回收
+                .eq(ProcessONDetail::getProcessONDetailReceiptWay,2)//扫码录入
+                .like(ProcessONDetail::getProcessONDetailCode,"PCWR");
+
+
+        /*processONDetailLambdaQueryWrapper.and(wrapper -> wrapper.ge(ProcessONDetail::getProcessONDetailUpdateDate, "2025-04-10 00:00:00")
+                        .or()
+                        .ge(ProcessONDetail::getProcessONDetailCreatDate,"2025-04-10 00:00:00"))
+                .eq(ProcessONDetail::getProcessONDetailType,2)//回收
+                .eq(ProcessONDetail::getProcessONDetailReceiptWay,2)//扫码录入
+                .like(ProcessONDetail::getProcessONDetailCode,"PCWR");*/
+        List<ProcessONDetail> processONDetails = processONDetailMapper.selectList(processONDetailLambdaQueryWrapper);
+
+        Set<String> processONDetailCodeSet = new HashSet<>();
+        for (ProcessONDetail processONDetail : processONDetails) {
+            String processONDetailCode = processONDetail.getProcessONDetailCode();
+            processONDetailCodeSet.add(processONDetailCode);
+        }
+
+        for (String processONDetailCode : processONDetailCodeSet) {
+            Map formData = new HashMap();
+
+            //基础信息
+            Map base = processMapper.selectOnBaseInfo(processONDetailCode);
+            formData.put("dateField_m8pi90ec",((Date)base.get("ProcessONDetailDate")).getTime());//单据日期
+            formData.put("textField_m99n1t8f",base.get("ProcessONDetailCode"));//回收单号
+            formData.put("textField_m8pkxdg5",base.get("WPSProcStepName"));//工序
+            formData.put("textField_m8pi90ex",base.get("ClientName"));//加工厂
+
+            //关联明细
+            List<Map> details = new ArrayList<>();
+            List<Map> detailList = processMapper.selectOnDetails(processONDetailCode);
+            int sumQty = 0;
+            double sumWeight = 0;
+            for (Map detail : detailList) {
+                Map map= new HashMap();
+
+                map.put("textField_m8pkxdf6",detail.get("GoodsCode"));//款号
+                map.put("textField_m99n1t8d",detail.get("GoodsName"));//款名
+                map.put("textField_m99n1t8e",detail.get("GoodsPartsName"));//部件
+                map.put("textField_m8pkxdfa",detail.get("ColorName"));//颜色
+                map.put("textField_m8pkxdfb",detail.get("SizeName"));//尺码
+                map.put("numberField_m99n1t88",detail.get("ProcessONDetailQty"));//件数
+                map.put("numberField_m99n1t89",detail.get("ProcessONDetailWeight"));//重量
+                map.put("textField_m99n1t8a",detail.get("ProcessCode"));//外发单号
+                map.put("textField_m99n1t8b",detail.get("ProcessItemReferBillCode"));//毛衫加工单
+
+                sumQty += ((BigDecimal) detail.get("ProcessONDetailQty")).intValue();
+                sumWeight += ((BigDecimal) detail.get("ProcessONDetailWeight")).doubleValue();
+
+                details.add(map);
+            }
+
+            formData.put("tableField_m8pkxdfh",details);
+            formData.put("numberField_m8pkxdgc",sumQty);//件数合计
+            formData.put("numberField_m8pkxdgd",sumWeight);//重量合计
+
+            //款号汇总
+            //将details根据款号、款名、颜色、尺码进行分组,计算总件数、总数量
+            List<Map<String, Object>> summaryList = details.stream()
+                    .collect(Collectors.groupingBy(
+                            detail -> {
+                                // 使用款号、款名、颜色、尺码作为分组键
+                                return detail.get("textField_m8pkxdf6") + "-" +
+                                        detail.get("textField_m99n1t8d") + "-" +
+                                        detail.get("textField_m8pkxdfa") + "-" +
+                                        detail.get("textField_m8pkxdfb");
+                            }
+                    ))
+                    .entrySet().stream()
+                    .map(entry -> {
+                        Map<String, Object> groupSummary = new HashMap<>();
+                        List<Map> groupDetails = entry.getValue();
+                        int totalQty = groupDetails.stream()
+                                .mapToInt(detail -> ((BigDecimal) detail.get("numberField_m99n1t88")).intValue())
+                                .sum();
+                        double totalWeight = groupDetails.stream()
+                                .mapToDouble(detail -> ((BigDecimal) detail.get("numberField_m99n1t89")).doubleValue())
+                                .sum();
+
+                        // 设置汇总信息
+                        groupSummary.put("textField_m99n1t87", entry.getKey().split("-")[0]); //款号
+                        groupSummary.put("textField_m99n1t8c", entry.getKey().split("-")[1]); //款名
+                        groupSummary.put("textField_m8pkxdfl", entry.getKey().split("-")[2]); //颜色
+                        groupSummary.put("textField_m8pkxdfm", entry.getKey().split("-")[3]); //尺码
+                        groupSummary.put("numberField_m8pkxdfn", totalQty); //总件数
+                        groupSummary.put("numberField_m8pkxdfw", totalWeight); //总重量
+
+                        return groupSummary;
+                    })
+                    .collect(Collectors.toList());
+
+            formData.put("tableField_m8pkxdfj",summaryList);
+
+            //条码明细
+            List<Map> cardBarDetails = new ArrayList<>();
+            List<Map> cardBarDetailList = processMapper.selectOnCardBarDetails(processONDetailCode);
+            for (Map cardBarDetail : cardBarDetailList) {
+                Map map= new HashMap();
+                map.put("textField_m99n1t8p",cardBarDetail.get("ProceCardBarCode"));//条码
+
+                cardBarDetails.add(map);
+            }
+            formData.put("tableField_m99n1t8k",cardBarDetails);
+
+            ydClient.operateData(YDParam.builder()
+                    .formUuid("FORM-C003D6F6769F400FA324851889EE458EOH9H")
+                    .searchCondition(JSONObject.toJSONString(Arrays.asList(YDConf.searchCondition_TextFiled("textField_m99n1t8f",processONDetailCode,"eq"))))
+                    .formDataJson(JSONObject.toJSONString(formData))
+                    .build(), YDConf.FORM_OPERATION.upsert);
+
+        }
+
+        return McR.success();
+    }
+
+    @Override
+    public McR syncProcessOn2() {
+        LambdaQueryWrapper<ProcessONDetail> processONDetailLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        processONDetailLambdaQueryWrapper.and(wrapper -> wrapper.ge(ProcessONDetail::getProcessONDetailUpdateDate, DateUtil.beginOfDay(DateUtil.yesterday()))
+                        .or()
+                        .ge(ProcessONDetail::getProcessONDetailCreatDate,DateUtil.beginOfDay(DateUtil.yesterday())))//
+                .eq(ProcessONDetail::getProcessONDetailType,2)//回收
+                .eq(ProcessONDetail::getProcessONDetailReceiptWay,2)//扫码录入
+                .like(ProcessONDetail::getProcessONDetailCode,"PCNR");
+
+        /*processONDetailLambdaQueryWrapper.and(wrapper -> wrapper.ge(ProcessONDetail::getProcessONDetailUpdateDate, "2025-04-10 00:00:00")
+                        .or()
+                        .ge(ProcessONDetail::getProcessONDetailCreatDate,"2025-04-10 00:00:00"))//
+                .eq(ProcessONDetail::getProcessONDetailType,2)//回收
+                .eq(ProcessONDetail::getProcessONDetailReceiptWay,2)//扫码录入
+                .like(ProcessONDetail::getProcessONDetailCode,"PCNR");*/
+        List<ProcessONDetail> processONDetails = processONDetailMapper.selectList(processONDetailLambdaQueryWrapper);
+
+        Set<String> processONDetailCodeSet = new HashSet<>();
+        for (ProcessONDetail processONDetail : processONDetails) {
+            String processONDetailCode = processONDetail.getProcessONDetailCode();
+            processONDetailCodeSet.add(processONDetailCode);
+        }
+
+        for (String processONDetailCode : processONDetailCodeSet) {
+            Map formData = new HashMap();
+
+            //基础信息
+            Map base = processMapper.selectOnBaseInfo(processONDetailCode);
+            formData.put("dateField_m8pi90ec",((Date)base.get("ProcessONDetailDate")).getTime());//单据日期
+            formData.put("textField_m99n1t8f",base.get("ProcessONDetailCode"));//回收单号
+            formData.put("textField_m8pkxdg5",base.get("WPSProcStepName"));//工序
+            formData.put("textField_m8pi90ex",base.get("ClientName"));//加工厂
+
+            //关联明细
+            List<Map> details = new ArrayList<>();
+            List<Map> detailList = processMapper.selectOnDetails(processONDetailCode);
+            int sumQty = 0;
+            double sumWeight = 0;
+            for (Map detail : detailList) {
+                Map map= new HashMap();
+
+                map.put("textField_m8pkxdf6",detail.get("GoodsCode"));//款号
+                map.put("textField_m99n1t8d",detail.get("GoodsName"));//款名
+                map.put("textField_m99n1t8e",detail.get("GoodsPartsName"));//部件
+                map.put("textField_m8pkxdfa",detail.get("ColorName"));//颜色
+                map.put("textField_m8pkxdfb",detail.get("SizeName"));//尺码
+                map.put("numberField_m99n1t88",detail.get("ProcessONDetailQty"));//件数
+                map.put("numberField_m99n1t89",detail.get("ProcessONDetailWeight"));//重量
+                map.put("textField_m99n1t8a",detail.get("ProcessCode"));//外发单号
+                map.put("textField_m99n1t8b",detail.get("ProcessItemReferBillCode"));//毛衫加工单
+
+                sumQty += ((BigDecimal) detail.get("ProcessONDetailQty")).intValue();
+                sumWeight += ((BigDecimal) detail.get("ProcessONDetailWeight")).doubleValue();
+
+                details.add(map);
+            }
+
+            formData.put("tableField_m8pkxdfh",details);
+            formData.put("numberField_m8pkxdgc",sumQty);//件数合计
+            formData.put("numberField_m8pkxdgd",sumWeight);//重量合计
+
+            //款号汇总
+            //将details根据款号、款名、颜色、尺码进行分组,计算总件数、总数量
+            List<Map<String, Object>> summaryList = details.stream()
+                    .collect(Collectors.groupingBy(
+                            detail -> {
+                                // 使用款号、款名、颜色、尺码作为分组键
+                                return detail.get("textField_m8pkxdf6") + "-" +
+                                        detail.get("textField_m99n1t8d") + "-" +
+                                        detail.get("textField_m8pkxdfa") + "-" +
+                                        detail.get("textField_m8pkxdfb");
+                            }
+                    ))
+                    .entrySet().stream()
+                    .map(entry -> {
+                        Map<String, Object> groupSummary = new HashMap<>();
+                        List<Map> groupDetails = entry.getValue();
+                        int totalQty = groupDetails.stream()
+                                .mapToInt(detail -> ((BigDecimal) detail.get("numberField_m99n1t88")).intValue())
+                                .sum();
+                        double totalWeight = groupDetails.stream()
+                                .mapToDouble(detail -> ((BigDecimal) detail.get("numberField_m99n1t89")).doubleValue())
+                                .sum();
+
+                        // 设置汇总信息
+                        groupSummary.put("textField_m99n1t87", entry.getKey().split("-")[0]); //款号
+                        groupSummary.put("textField_m99n1t8c", entry.getKey().split("-")[1]); //款名
+                        groupSummary.put("textField_m8pkxdfl", entry.getKey().split("-")[2]); //颜色
+                        groupSummary.put("textField_m8pkxdfm", entry.getKey().split("-")[3]); //尺码
+                        groupSummary.put("numberField_m8pkxdfn", totalQty); //总件数
+                        groupSummary.put("numberField_m8pkxdfw", totalWeight); //总重量
+
+                        return groupSummary;
+                    })
+                    .collect(Collectors.toList());
+
+            formData.put("tableField_m8pkxdfj",summaryList);
+
+            //条码明细
+            List<Map> cardBarDetails = new ArrayList<>();
+            List<Map> cardBarDetailList = processMapper.selectOnCardBarDetails2(processONDetailCode);
+            for (Map cardBarDetail : cardBarDetailList) {
+                Map map= new HashMap();
+                map.put("textField_m99n1t8p",cardBarDetail.get("ProceCardBarCode"));//条码
+
+                cardBarDetails.add(map);
+            }
+            formData.put("tableField_m99n1t8k",cardBarDetails);
+
+            ydClient.operateData(YDParam.builder()
+                    .formUuid("FORM-B6D30D0FD0064383BBD45DD64078B31E3KQK")
+                    .searchCondition(JSONObject.toJSONString(Arrays.asList(YDConf.searchCondition_TextFiled("textField_m99n1t8f",processONDetailCode,"eq"))))
+                    .formDataJson(JSONObject.toJSONString(formData))
+                    .build(), YDConf.FORM_OPERATION.upsert);
+
+        }
+
+        return McR.success();
+    }
+}

+ 20 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/SalesOrderItemServiceImpl.java

@@ -0,0 +1,20 @@
+package com.malk.diwei.service.impl;
+
+import com.malk.diwei.entity.SalesOrderItem;
+import com.malk.diwei.mapper.SalesOrderItemMapper;
+import com.malk.diwei.service.SalesOrderItemService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+@Service
+public class SalesOrderItemServiceImpl extends ServiceImpl<SalesOrderItemMapper, SalesOrderItem> implements SalesOrderItemService {
+
+}

+ 160 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/SalesOrderServiceImpl.java

@@ -0,0 +1,160 @@
+package com.malk.diwei.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.malk.diwei.entity.Color;
+import com.malk.diwei.entity.Employee;
+import com.malk.diwei.entity.SalesOrder;
+import com.malk.diwei.entity.Size;
+import com.malk.diwei.mapper.ColorMapper;
+import com.malk.diwei.mapper.EmployeeMapper;
+import com.malk.diwei.mapper.SalesOrderMapper;
+import com.malk.diwei.mapper.SizeMapper;
+import com.malk.diwei.service.SalesOrderService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.common.McR;
+import com.malk.service.aliwork.YDClient;
+import com.malk.utils.UtilHttp;
+import com.malk.utils.UtilMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-28
+ */
+@Service
+public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOrder> implements SalesOrderService {
+    @Autowired
+    private YDClient ydClient;
+
+    @Autowired
+    private ColorMapper colorMapper;
+
+    @Autowired
+    private SizeMapper sizeMapper;
+
+    @Autowired
+    private EmployeeMapper employeeMapper;
+
+    @Autowired
+    private SalesOrderMapper salesOrderMapper;
+
+    @Override
+    public McR addSaleOrder(Map map) {
+        if (Objects.isNull(map.get("formInstId"))){
+            return McR.errorParam("实例id为空!");
+        }
+        String formInstId = map.get("formInstId").toString();
+
+        Map formData = ydClient.queryData(YDParam.builder()
+                .formInstId(formInstId)
+                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+
+        Map salesOrder = new HashMap();
+        //将时间戳转化为字符串 年月日格式
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+        LambdaQueryWrapper<SalesOrder> salesOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        salesOrderLambdaQueryWrapper.ge(SalesOrder::getSalesOrderCreateDatetime, DateUtil.beginOfDay(new Date()))
+                .orderByDesc(SalesOrder::getSalesOrderID);
+        List<SalesOrder> salesOrderList = salesOrderMapper.selectList(salesOrderLambdaQueryWrapper);
+        String newSalesOrderCode = "";
+        if (Objects.nonNull(salesOrderList) && !salesOrderList.isEmpty()){
+            String salesOrderCode = salesOrderList.get(0).getSalesOrderCode();//格式:SO-yyyyMMdd-0001
+
+            //salesOrderCode累加
+            String[] split = salesOrderCode.split("-");
+            int i = Integer.parseInt(split[2]) + 1;
+
+            newSalesOrderCode = "SO-"+split[1]+"-"+String.format("%04d",i);
+        }else {
+            newSalesOrderCode = "SO-"+sdf.format(new Date())+"-0001";
+        }
+
+        salesOrder.put("SalesOrderCode",newSalesOrderCode);//订单编号
+        salesOrder.put("SalesOrderDate",sdf.format(new Date((long) formData.get("dateField_m8mpzwsh"))));//销售订单日期
+        salesOrder.put("ClientName",formData.get("textField_m8s4mqfv"));//客户名称
+        salesOrder.put("ClientLinkMan",formData.get("textField_m8mpzwst"));//联系记录
+        salesOrder.put("ClientLinkMob",formData.get("textField_m8mpzwsu"));//联系手机
+        salesOrder.put("ClientLinkTel",formData.get("textField_m8mpzwsv"));//联系电话
+        salesOrder.put("SalesOrderDeptName",formData.get("textField_m8mv98nf"));//部门
+        salesOrder.put("SalesOrderContractNo",formData.get("textField_m8mpzwt1"));//合同号
+        //订单性质
+        if (Objects.nonNull(formData.get("selectField_m8mpzwt2"))){
+            switch (formData.get("selectField_m8mpzwt2").toString()){
+                case "销售样":
+                    salesOrder.put("SalesOrderProperty",1);
+                    break;
+                case "大货订单":
+                    salesOrder.put("SalesOrderProperty",2);
+                    break;
+            }
+        }
+        salesOrder.put("SalesOrderDZPercent",formData.get("numberField_m8mpzwt7"));//短装数
+        salesOrder.put("SalesOrderYZPercent",formData.get("numberField_m8mpzwt8"));//溢装数
+        salesOrder.put("SalesOrderDeliveryDate",sdf.format(new Date((long) formData.get("dateField_m8mpzwso"))));//交货日期
+        salesOrder.put("SalesOrderDeliveryAddress",formData.get("textareaField_m8mpzwtj"));//交货地址
+        salesOrder.put("SalesmanName",formData.get("textField_m8s4mqg0"));//业务员
+
+        String creator = formData.get("textField_m8mpzwt0").toString();
+        LambdaQueryWrapper<Employee> employeeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        employeeLambdaQueryWrapper.eq(Employee::getEmpName,creator)
+                .or().eq(Employee::getEmpGamUserID,creator);
+        Employee employee = employeeMapper.selectOne(employeeLambdaQueryWrapper);
+        if (Objects.nonNull(employee)){
+            salesOrder.put("SalesOrderCreatEmp",creator);//制单人
+        }else {
+            salesOrder.put("SalesOrderCreatEmp","蒂维");//制单人
+        }
+
+        salesOrder.put("SalesOrderFollowEmp",formData.get("textField_m8s4mqg0"));//业务跟单
+        salesOrder.put("SalesOrderQCFollowEmp",formData.get("textField_m8s4mqg2"));//QC跟单
+        salesOrder.put("SalesOrderDescription",formData.get("textareaField_m8mpzwti"));//单据备注
+        salesOrder.put("SalesOrderOrgName","总部");//组织机构
+
+        List<Map> billItems = new ArrayList<>();
+        List<Map> details = (List<Map>) formData.get("tableField_m8mpzwtk");
+        for (Map detail : details) {
+            Map billItem = new HashMap();
+            billItem.put("GoodsCode",formData.get("textField_m8mpzwtl"));//款号
+
+            billItem.put("ColorName",detail.get("selectField_m8nxpzya"));//颜色
+            billItem.put("SizeName",detail.get("selectField_m8nxpzy8"));//尺码
+            billItem.put("SalesOrderItemPrice",detail.get("numberField_m8mpzwtu"));//销售单价
+            billItem.put("SalesOrderItemQty",detail.get("numberField_m8mpzwts"));//订单件数
+            billItem.put("SalesOrderItemAmount",detail.get("numberField_m8mpzwtv"));//订单金额
+            billItem.put("SalesOrderItemIsGift",detail.get("radioField_m8mpzwtw").toString().equals("是"));//是否赠品
+            billItem.put("SalesOrderItemDescription",detail.get("textareaField_m8mpzwtt"));//明细备注
+
+            billItems.add(billItem);
+        }
+
+        salesOrder.put("BillItems",billItems);
+
+        String s = UtilHttp.doPost("http://47.98.200.166/EpiErp5_DiWei_2023/rest/SyncSalesOrder_DW", null, null, salesOrder);
+
+        Map parse = (Map) JSONObject.parse(s);
+
+        if (!parse.get("errcode").toString().equals("0")){
+            return McR.errorUnknown("新增失败!失败原因:"+parse.get("errmsg").toString());
+        }else {
+            ydClient.operateData(YDParam.builder()
+                    .formInstId(formInstId)
+                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_m9cgygm3",newSalesOrderCode)))
+                    .build(), YDConf.FORM_OPERATION.update);
+        }
+
+        return McR.success();
+    }
+}

+ 20 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/WorkProcStepServiceImpl.java

@@ -0,0 +1,20 @@
+package com.malk.diwei.service.impl;
+
+import com.malk.diwei.entity.WorkProcStep;
+import com.malk.diwei.mapper.WorkProcStepMapper;
+import com.malk.diwei.service.WorkProcStepService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-04-02
+ */
+@Service
+public class WorkProcStepServiceImpl extends ServiceImpl<WorkProcStepMapper, WorkProcStep> implements WorkProcStepService {
+
+}

+ 1 - 1
mjava-diwei/src/main/java/com/malk/diwei/utils/MPGenerator.java

@@ -35,7 +35,7 @@ public class MPGenerator {
                             .entity("entity");
                 })
                 .strategyConfig(builder -> {
-                    builder.addInclude("Size")
+                    builder.addInclude("ProcessONDetail")
                             .entityBuilder().enableLombok();
                 })
                 .templateEngine(new VelocityTemplateEngine())

+ 24 - 7
mjava-diwei/src/main/resources/application-prod.yml

@@ -11,17 +11,34 @@ logging:
   level:
     com.malk.*: debug
 
+spring:
+  datasource:
+    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+    url: jdbc:sqlserver://47.98.200.166:1433;databaseName=GT_DB_Epi5
+    username: dw
+    password: Goodtek2008
+
+mybatis-plus:
+  configuration:
+    #开启驼峰命名自动映射
+    map-underscore-to-camel-case: false
+    #开启日志打印
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  type-aliases-package: com.malk.diwei.entity
+  #扫描mapper文件
+  mapper-locations: classpath:mapper/*.xml
+
 # dingtalk
 dingtalk:
-  agentId: 3366214854
-  appKey: dingntvkzjzxdx8h2m1s
-  appSecret: YfaV5mYOL4F--P8P_G9aD8DP_a8_IgM6dBILsSaTb4LeUZYSntacol55O1tJuqcU
-  corpId: ding923faa53d9d45937acaaa37764f94726
+  agentId:
+  appKey: dinglrt7qaqjmlnwaaul
+  appSecret: FBWNzNC8i9srucJmqo5iOo61icmbzA_dDquuIzVXYa2hSlP8aGIrhYPeQXemqy3Z
+  corpId:
   aesKey:
   token:
-  operator: 344749020127590108
+  operator:
 
 aliwork:
-  appType: APP_XPPVVMG6HA0GNDPJV4C1
-  systemToken: 8R7668D1P92RSNTS7OKZG5UR9P333QA7GAJ4MTG
+  appType: APP_D7TTZKL8C03JKEWCNW74
+  systemToken: TCC66771RQETFGT5DYPUGAXP4GRC29A6HCV7MV19
 

+ 5 - 0
mjava-diwei/src/main/resources/mapper/BomItemMapper.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.malk.diwei.mapper.BomItemMapper">
+
+</mapper>

+ 5 - 0
mjava-diwei/src/main/resources/mapper/BomMapper.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.malk.diwei.mapper.BomMapper">
+
+</mapper>

+ 5 - 0
mjava-diwei/src/main/resources/mapper/DepartmentMapper.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.malk.diwei.mapper.DepartmentMapper">
+
+</mapper>

+ 5 - 0
mjava-diwei/src/main/resources/mapper/EmployeeMapper.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.malk.diwei.mapper.EmployeeMapper">
+
+</mapper>

+ 5 - 0
mjava-diwei/src/main/resources/mapper/GoodsPartsMapper.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.malk.diwei.mapper.GoodsPartsMapper">
+
+</mapper>

+ 5 - 0
mjava-diwei/src/main/resources/mapper/GoodsSizeMapper.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.malk.diwei.mapper.GoodsSizeMapper">
+
+</mapper>

+ 5 - 0
mjava-diwei/src/main/resources/mapper/GoodsStockMapper.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.malk.diwei.mapper.GoodsStockMapper">
+
+</mapper>

+ 5 - 0
mjava-diwei/src/main/resources/mapper/ProcessItemMapper.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.malk.diwei.mapper.ProcessItemMapper">
+
+</mapper>

+ 252 - 0
mjava-diwei/src/main/resources/mapper/ProcessMapper.xml

@@ -0,0 +1,252 @@
+<?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.malk.diwei.mapper.ProcessMapper">
+    <select id="selectProductById" resultType="java.util.Map">
+        select
+            g.GoodsCode,
+            g.GoodsName,
+            u.UnitName,
+            tmp.qty,
+            tmp.ProcessItemReferBillCode
+        from
+            (
+                select
+                    ProcessID,
+                    GoodsID ,
+                    UnitID,
+                    SUM(ProcessItemQty) as qty,
+                    ProcessItemReferBillCode
+                from
+                    ProcessItem
+                where
+                    ProcessID = #{processID}
+                group by
+                    ProcessID,
+                    GoodsID ,
+                    UnitID,
+                    ProcessItemReferBillCode) tmp
+                INNER join Goods g
+                           on
+                               tmp.GoodsID = g.GoodsID
+                inner join Unit u
+                           on
+                               tmp.UnitID = u.UnitID
+    </select>
+    <select id="selectProcessONDetailByCode" resultType="java.util.Map">
+        SELECT
+            p.ProcessID ,p.ProcessCode ,p.ProcessDate ,p.ProcessStatus ,c.ClientName ,gp2.GoodsPartsName,
+            wps.WPSProcStepName,g.GoodsID ,g.GoodsNeedleType,g.GoodsMachineType,wps.WPSHadRecordQty
+        from
+            ProcessItem pi2
+        inner join
+            Process p
+        on
+            pi2.ProcessID = p.ProcessID
+        inner join
+            WorkProcStep wps
+        on
+            pi2.ProcessID = wps.ProcessID
+        inner join
+            Goods g
+        on
+            wps.GoodsID = g.GoodsID
+        inner join
+            Client c
+        ON
+            wps.WPSFactoryID = c.ClientID
+        inner JOIN
+            (
+            select
+                pm.ProcessID,gp.GoodsPartsName
+            from
+                ProcessMaterial pm
+            inner join
+                GoodsParts gp
+            on
+                pm.ProcessMaterialGoodsPartsID = gp.GoodsPartsID
+            group by
+                pm.ProcessID,gp.GoodsPartsName
+            ) gp2
+        on
+            pi2.ProcessID = gp2.ProcessID
+        where
+            pi2.ProcessItemReferBillCode = #{processCode}
+    </select>
+    <select id="selectOutSideDetails" resultType="java.util.Map">
+        --查询外发单外发明细
+        select
+            gp.GoodsPartsName ,
+            g.GoodsCode ,
+            g.GoodsName ,
+            g.GoodsNeedleType ,
+            g.GoodsMachineType ,
+            c.ColorName,
+            s.SizeName ,
+            wps.WPSProcStepName ,
+            po.ProcessONDetailQty,
+            wps.WPSProcStepPrice ,
+            po.ProcessONDetailDes,
+            pi2.ProcessItemReferBillCode
+        from
+            ProcessItem pi2
+        inner join
+            ProcessONDetail po
+        on
+            po.ProcessID = pi2.ProcessID
+        left join
+            PCONDetailParts pp
+        on
+            po.ProcessONDetailID = pp.ProcessONDetailID
+        left join
+            GoodsParts gp
+        on
+            pp.GoodsPartsID = gp.GoodsPartsID
+        left join
+            Goods g
+        on
+            pi2.GoodsID = g.GoodsID
+        left join
+            Color c
+        on
+            po.PCNODColorID = c.ColorID
+        left join
+            [Size] s
+        on
+            po.PCNODSizeID = s.SizeID
+        left join
+            WorkProcStep wps
+        on
+            pi2.ProcessID = wps.ProcessID
+        where
+            pi2.ProcessID = #{processID}
+        and
+            po.ProcessONDetailType = 1
+    </select>
+
+    <select id="selectOnDetails" resultType="java.util.Map">
+        --查询回收单关联明细
+        select
+            po.ProcessID,
+            po.ProcessItemID,
+            g.GoodsCode,
+            g.GoodsName,
+            gp.GoodsPartsName ,
+            c.ColorName,
+            s.SizeName,
+            po.ProcessONDetailQty,
+            po.ProcessONDetailWeight,
+            p.ProcessCode,
+            po.PCONDPackageBarCode,
+            pi2.ProcessItemReferBillCode
+        from
+            ProcessONDetail po
+        left join
+            Process p
+        on
+            po.ProcessID = p.ProcessID
+        left join
+            ProcessItem pi2
+        on
+            pi2.ProcessID = po.ProcessID and pi2.ProcessItemID = po.ProcessItemID
+        left JOIN
+            PCONDetailParts pp
+        on
+            po.ProcessONDetailID = pp.ProcessONDetailID
+        left join
+            GoodsParts gp
+        on
+            pp.GoodsPartsID = gp.GoodsPartsID
+        left JOIN
+            Goods g
+        on
+            pi2.GoodsID = g.GoodsID
+        left JOIN
+            Color c
+        on
+            po.PCNODColorID = c.ColorID
+        left JOIN
+            [Size] s
+        on
+            po.PCNODSizeID = s.SizeID
+        where
+            po.processONDetailCode = #{processONDetailCode}
+        AND
+            ProcessONDetailType = 2
+        and
+            ProcessONDetailReceiptWay = 2
+    </select>
+
+    <select id="selectOnCardBarDetails" resultType="java.util.Map">
+        --查询回收单条码明细
+        SELECT
+            po.ProcessONDetailID,
+            po.ProcessONDetailCode,
+            pbc.ProceCardID,
+            pc.ProceCardBarCode
+        from
+            ProcessONDetail po
+        inner join
+            PCONDetailBarCode pbc
+        on
+            po.ProcessONDetailID = pbc.ProcessONDetailID
+        INNER JOIN
+            ProcessCard pc
+        on
+            pbc.ProceCardID = pc.ProceCardID
+        where
+            po.ProcessONDetailCode = #{processONDetailCode}
+        order BY
+            pc.ProceCardBarCode
+    </select>
+
+    <select id="selectOnBaseInfo" resultType="java.util.Map">
+        --查询回收单基础信息
+        select top 1
+	        po.ProcessONDetailDate,
+            po.ProcessONDetailCode,
+            wps.WPSProcStepName,
+            c.ClientName
+        from
+            ProcessONDetail po
+        inner join
+            WorkProcStep wps
+        on
+            po.ProcessID = wps.ProcessID
+        inner JOIN
+            Client c
+        on
+            wps.WPSFactoryID = c.ClientID
+        where
+            ProcessONDetailCode = #{processONDetailCode}
+        AND
+            ProcessONDetailType = 2
+        and
+            ProcessONDetailReceiptWay = 2
+        group by
+            po.ProcessONDetailDate,
+            po.ProcessONDetailCode,
+            wps.WPSProcStepName,
+            c.ClientName
+    </select>
+    <select id="selectOnCardBarDetails2" resultType="java.util.Map">
+        --查询工艺回收单条码明细
+        SELECT
+            po.ProcessONDetailID ,po.ProcessONDetailCode,pc2.ProceCardID ,pc.ProceCardBarCode,
+            pc2.PCONDDetailCardQty,pc2.PCONDCProcStepID,pc2.PCONDCFactoryName,pc2.PCONDCProcessCode
+        from
+            ProcessONDetail po
+                inner join
+            PCONDetailCard pc2
+            on
+                po.ProcessONDetailID = pc2.ProcessONDetailID
+                INNER JOIN
+            ProcessCard pc
+            on
+                pc2.ProceCardID = pc.ProceCardID
+        where
+            po.ProcessONDetailCode = #{processONDetailCode}
+        order BY
+            pc.ProceCardBarCode
+    </select>
+
+</mapper>

+ 43 - 0
mjava-diwei/src/main/resources/mapper/ProcessMaterialMapper.xml

@@ -0,0 +1,43 @@
+<?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.malk.diwei.mapper.ProcessMaterialMapper">
+
+    <select id="selectProcessMaterialByGoodsProperty" resultType="java.util.Map">
+        SELECT
+            pm.ProcessMaterialID,
+            pm.ProcessID,
+            gp.GoodsPartsName,
+            g.GoodsID,
+            g.GoodsCode,
+            g.GoodsName,
+            g.GoodsSpecs,
+            c.ColorName,
+            pm.ProcessMaterialColorVCode,
+            pm.ProcessMaterialDes,
+            u.UnitName,
+            pm.ProcessMaterialQty,
+            pm.ProcessMaterialPickQty
+        from
+            ProcessMaterial pm
+        left join
+            Goods g
+        on
+            pm.GoodsID = g.GoodsID
+        left join
+            GoodsParts gp
+        on
+            pm.ProcessMaterialGoodsPartsID = gp.GoodsPartsID
+        left join
+            Color c
+        on
+            pm.ColorID = c.ColorID
+        left join
+            Unit u
+        on
+            pm.UnitID = u.UnitID
+        where
+            pm.ProcessID = #{processId}
+        and
+            g.GoodsProperty = #{goodsProperty}
+    </select>
+</mapper>

+ 5 - 0
mjava-diwei/src/main/resources/mapper/SalesOrderItemMapper.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.malk.diwei.mapper.SalesOrderItemMapper">
+
+</mapper>

+ 5 - 0
mjava-diwei/src/main/resources/mapper/SalesOrderMapper.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.malk.diwei.mapper.SalesOrderMapper">
+
+</mapper>

+ 5 - 0
mjava-diwei/src/main/resources/mapper/SizeMapper.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.malk.diwei.mapper.SizeMapper">
+
+</mapper>

+ 5 - 0
mjava-diwei/src/main/resources/mapper/WorkProcStepMapper.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.malk.diwei.mapper.WorkProcStepMapper">
+
+</mapper>

+ 22 - 0
mjava-diwei/src/test/java/com/malk/diwei/DwTest.java

@@ -0,0 +1,22 @@
+package com.malk.diwei;
+
+import com.malk.diwei.service.ProcessService;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@Slf4j
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class DwTest {
+    @Autowired
+    private ProcessService processService;
+
+    @Test
+    public void test(){
+        processService.syncProcess();
+    }
+}

+ 0 - 42
mjava-jiangshi/src/main/java/com/malk/jiangshi/controller/JiangshiController.java

@@ -1,42 +0,0 @@
-package com.malk.jiangshi.controller;
-
-import com.malk.jiangshi.entity.Product;
-import com.malk.jiangshi.service.JiangshiService;
-import com.malk.server.common.McR;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-import java.util.Map;
-
-@RestController
-@Slf4j
-public class JiangshiController {
-    @Autowired
-    private JiangshiService jiangshiService;
-
-    @GetMapping("/test")
-    public McR test() {
-        log.info("test");
-        return McR.success();
-    }
-
-
-    @PostMapping("/addProduct")
-    public McR addProduct(@RequestBody Product product) {
-        log.info("addProduct");
-        jiangshiService.addProduct(product);
-        return McR.success();
-    }
-
-    @PostMapping("/updateProduct")
-    public McR updateProduct(@RequestBody Map map) {
-        log.info("updateProduct");
-        jiangshiService.updateProduct(map);
-        return McR.success();
-    }
-}

+ 0 - 33
mjava-jiangshi/src/main/java/com/malk/jiangshi/entity/Product.java

@@ -1,33 +0,0 @@
-package com.malk.jiangshi.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data
-@TableName(value = "jiangshi_product")
-public class Product {
-    @TableId(value = "id", type = IdType.AUTO)
-    private String id;
-
-    private String name;
-
-    private String code;
-
-    private String specification;
-
-    private String model;
-
-    private int num;
-
-    private String warningNum;
-
-    private int price;
-
-    private String company;
-
-    private String companyPhone;
-
-    private String validFlag;
-}

+ 0 - 9
mjava-jiangshi/src/main/java/com/malk/jiangshi/mapper/ProductMapper.java

@@ -1,9 +0,0 @@
-package com.malk.jiangshi.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.malk.jiangshi.entity.Product;
-import org.apache.ibatis.annotations.Mapper;
-
-@Mapper
-public interface ProductMapper extends BaseMapper<Product> {
-}

+ 0 - 14
mjava-jiangshi/src/main/java/com/malk/jiangshi/service/JiangshiService.java

@@ -1,14 +0,0 @@
-package com.malk.jiangshi.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.malk.jiangshi.entity.Product;
-
-import java.util.List;
-import java.util.Map;
-
-public interface JiangshiService extends IService<Product> {
-
-    void addProduct(Product product);
-
-    void updateProduct(Map map);
-}

+ 0 - 44
mjava-jiangshi/src/main/java/com/malk/jiangshi/service/impl/JiangshiServiceImpl.java

@@ -1,44 +0,0 @@
-package com.malk.jiangshi.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.malk.jiangshi.entity.Product;
-import com.malk.jiangshi.mapper.ProductMapper;
-import com.malk.jiangshi.service.JiangshiService;
-import org.checkerframework.checker.units.qual.A;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Map;
-
-@Service
-public class JiangshiServiceImpl extends ServiceImpl<ProductMapper, Product> implements JiangshiService {
-    @Autowired
-    private ProductMapper productMapper;
-
-
-    @Override
-    public void addProduct(Product product) {
-        productMapper.insert(product);
-
-    }
-
-    @Override
-    public void updateProduct(Map map) {
-        String code = String.valueOf(map.get("code"));
-        int num = Integer.parseInt(String.valueOf(map.get("num")));
-        String type = String.valueOf(map.get("type"));
-        LambdaQueryWrapper<Product> productLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        productLambdaQueryWrapper.eq(Product::getCode, code)
-                        .eq(Product::getValidFlag,"1");
-        Product product = productMapper.selectOne(productLambdaQueryWrapper);
-        if (type.equals("add")){
-            product.setNum(product.getNum()+num);
-        }else if (type.equals("sub")){
-            product.setNum(product.getNum()-num);
-        }
-
-        productMapper.updateById(product);
-    }
-}

+ 0 - 59
mjava-jiangshi/src/main/resources/application-dev.yml

@@ -1,59 +0,0 @@
-server:
-  port: 8115
-  servlet:
-    context-path: /jiangshi
-
-spring:
-  datasource:
-    url: jdbc:mysql://47.97.181.40:3306/dingtalk?serverTimezone=GMT%2B8
-    username: root
-    password: cp-root@2022++
-    driver-class-name: com.mysql.cj.jdbc.Driver
-enable:
-  scheduling: false
-logging:
-  config: classpath:logback-spring.xml
-  path: /home/server/jiangshi/log/
-  level:
-    com.malk.*: debug
-
-mybatis-plus:
-  configuration:
-    #开启驼峰命名自动映射
-    map-underscore-to-camel-case: true
-    #开启日志打印
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-  type-aliases-package: com.malk.jiangshi.entity
-  #扫描mapper文件
-  mapper-locations: classpath:mapper/*.xml
-
-
-
-# dingtalk
-dingtalk:
-  agentId: 3088485347
-  appKey: dingryt7ulefpiziveoj
-  appSecret: qBdVqoK1UP9J3yN0ulaKuBmse4nrZPfNbVxjLGjaODGoRqbtws0__f3A5GpD5bLz
-  corpId: ding2c2e3f1dbf2b3ffebc961a6cb783455b
-  aesKey: uCSTfCFVU18QJjECfZTBWyC9mi10qqY1Spuqjl4ghct
-  token: Adib7WsRXHYrLGkOAUNcgl6gLY9nBIIaeprkhfmxGg6ca6atYWWKDkuE
-
-  #poc
-  #agentId: 2995824312
-  #appKey: ding3ap1jk1tg44tz3s2
-  #appSecret: PaWTDG-FiX-RW5fnV9r8CzEmR-9QlJpubC88txhprL_Z_iREO62B-iRW6w7gkA_K
-  #corpId: ding321c72787fffc78b35c2f4657eb6378f
-  #aesKey: LSIc7r5uHAP0dd6v23J3LWRmjECMNzbkIcxAwdx63RE
-  #token: yqXHMHaK4oHYvjyQshU4zFqgrHFq7PcBxVSqGo1BAQk0
-
-
-# teambition
-teambition:
-  AppID:
-  AppSecret:
-  TenantId:
-  OperatorId:    # 公共账号, 需要有操作权限 [牧语]
-# aliwork
-aliwork:
-  appType:
-  systemToken:

+ 0 - 49
mjava-jiangshi/src/main/resources/application-prod.yml

@@ -1,49 +0,0 @@
-server:
-  port: 8115
-  servlet:
-    context-path: /jiangshi
-
-spring:
-  datasource:
-    url: jdbc:mysql://127.0.0.1:3306/shantai?serverTimezone=GMT%2B8
-    username: root
-    password: ST-cloudpure2024
-    driver-class-name: com.mysql.cj.jdbc.Driver
-enable:
-  scheduling: false
-logging:
-  config: classpath:logback-spring.xml
-  path: /home/server/jiangshi/log/
-  level:
-    com.malk.*: debug
-
-mybatis-plus:
-  configuration:
-    #开启驼峰命名自动映射
-    map-underscore-to-camel-case: true
-    #开启日志打印
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-  type-aliases-package: com.malk.jiangshi.entity
-  #扫描mapper文件
-  mapper-locations: classpath:mapper/*.xml
-
-
-
-# dingtalk
-dingtalk:
-  agentId: 3088485347
-  appKey: dingryt7ulefpiziveoj
-  appSecret: qBdVqoK1UP9J3yN0ulaKuBmse4nrZPfNbVxjLGjaODGoRqbtws0__f3A5GpD5bLz
-  corpId: ding2c2e3f1dbf2b3ffebc961a6cb783455b
-  aesKey: uCSTfCFVU18QJjECfZTBWyC9mi10qqY1Spuqjl4ghct
-  token: Adib7WsRXHYrLGkOAUNcgl6gLY9nBIIaeprkhfmxGg6ca6atYWWKDkuE
-# teambition
-teambition:
-  AppID:
-  AppSecret:
-  TenantId:
-  OperatorId:    # 公共账号, 需要有操作权限 [牧语]
-# aliwork
-aliwork:
-  appType:
-  systemToken:

+ 0 - 8
mjava-jiangshi/src/main/resources/mapper/ProductMapper.xml

@@ -1,8 +0,0 @@
-<?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.malk.jiangshi.mapper.ProductMapper">
-
-
-</mapper>
-

+ 7 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/controller/JianhuiController.java

@@ -4,6 +4,7 @@ import com.malk.jianhui.config.KDWebApiConf;
 import com.malk.jianhui.service.JianhuiService;
 import com.malk.server.common.McR;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -98,6 +99,12 @@ public class JianhuiController {
         return jianhuiService.syncData();
     }
 
+    @GetMapping("/manualSyncData")
+    public McR manualSyncData(String userId){
+        jianhuiService.manualSyncData(userId);
+        return McR.success();
+    }
+
 
 
 

+ 2 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/entity/DefectEntity.java

@@ -12,6 +12,8 @@ public class DefectEntity {
     private FNumber FSupplierId;
     //单位
     private FNumber FUnitID;
+    //检验单使用决策
+    private String FUsePolicy;
     //检验不良数量
     private double FInspectDefectQty;
     //不良处理

+ 2 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/service/JianhuiService.java

@@ -28,4 +28,6 @@ public interface JianhuiService {
     McR syncSalePrice();
 
     McR syncInspectionOrder();
+
+    void manualSyncData(String userId);
 }

+ 123 - 16
mjava-jianhui/src/main/java/com/malk/jianhui/service/impl/JianhuiServiceImpl.java

@@ -1,5 +1,6 @@
 package com.malk.jianhui.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
 import com.kingdee.bos.webapi.entity.IdentifyInfo;
@@ -10,11 +11,16 @@ import com.malk.jianhui.service.JianhuiService;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.common.McR;
+import com.malk.server.dingtalk.DDConf;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
+import com.malk.service.dingtalk.DDClient;
+import com.malk.utils.UtilHttp;
 import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.logging.log4j.util.Strings;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import com.kingdee.bos.webapi.sdk.K3CloudApi;
 
@@ -37,6 +43,12 @@ public class JianhuiServiceImpl implements JianhuiService {
     @Autowired
     private YDClient ydClient;
 
+    @Autowired
+    private DDClient ddClient;
+
+    @Autowired
+    private DDConf ddConf;
+
     //单据状态
     private static final Map<String,String> FDOCUMENTSTATUS = new HashMap<>();
     static{
@@ -454,9 +466,17 @@ public class JianhuiServiceImpl implements JianhuiService {
             billQuery.setFormId("BD_MATERIAL");
             billQuery.setFieldKeys("FUseOrgId,FNumber,FName,FSpecification,FDocumentStatus,FForbidStatus,FErpClsID,FBaseUnitId,FRefStatus");
             List<Map> filterString = new ArrayList<>();
-            //修改时间为昨天到今天
-            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FModifyDate","265","1","","","0"));
-//            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FModifyDate","39","2025-03-06 00:00:00","","","0"));
+            //修改时间或审核日期为昨天到今天
+            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FModifyDate","265","1","","","1"));
+            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FApproveDate","265","1","","","0"));
+
+//            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FModifyDate","39","2025-03-12 00:00:00","","","0"));//修改日期大于等于xx
+//            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FModifyDate","16","2025-03-14 00:00:00","","","0"));//修改日期小于等于xx
+//            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FCreateDate","39","2025-03-12 00:00:00","","","0"));//创建日期大于等于xx
+//            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FCreateDate","16","2025-03-14 00:00:00","","","0"));//创建日期大于等于xx
+//            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FApproveDate","16","2025-03-14 00:00:00","","","0"));//审核日期大于等于xx
+
+
             billQuery.setFilterString(filterString);
             billQuery.setLimit(limit);
             do {
@@ -664,6 +684,7 @@ public class JianhuiServiceImpl implements JianhuiService {
             defectEntity.setFMateridlId(new FNumber(getString(detail.get("textField_m64pw0go"))));//物料
             defectEntity.setFSupplierId(new FNumber(getString(detail.get("textField_m6yumh8w"))));//供应商
             defectEntity.setFUnitID(new FNumber(getString(detail.get("textField_m6yntxnj"))));//单位
+            defectEntity.setFUsePolicy("F");//检验单使用决策   F:判退
             defectEntity.setFInspectDefectQty((int) detail.get("numberField_m82qkv1u"));//检验不良数量
 
             //不良处理 A:接收 B:让步接收 F:判退
@@ -700,10 +721,6 @@ public class JianhuiServiceImpl implements JianhuiService {
 
         model.setFEntity(FEntity);
 
-
-
-
-
         save.setModel(model);
 
         try{
@@ -725,22 +742,60 @@ public class JianhuiServiceImpl implements JianhuiService {
                 //提交
                 String resultJson2 = client.submit(formId, JSONObject.toJSONString(submit));
                 RepoRet repoRet2 = gson.fromJson(resultJson2, RepoRet.class);
-                isTrue(repoRet2);
+                if (isTrue(repoRet2)){
+                    String orderCode = repoRet2.getResult().getResponseStatus().getSuccessEntitys().get(0).getNumber();
 
-                String orderCode = repoRet2.getResult().getResponseStatus().getSuccessEntitys().get(0).getNumber();
+                    ydClient.operateData(YDParam.builder()
+                            .formInstId(formInstId)
+                            .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_m6yntxmz",orderCode)))
+                            .build(), YDConf.FORM_OPERATION.update);
 
-                ydClient.operateData(YDParam.builder()
-                        .formInstId(formInstId)
-                        .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_m6yntxmz",orderCode)))
-                        .build(), YDConf.FORM_OPERATION.update);
-
-                if (isTrue(repoRet2)){
                     Audit audit = new Audit();
                     audit.setIds(id);
+
                     //审核
                     String resultJson3 = client.audit(formId,JSONObject.toJSONString(audit));
                     RepoRet repoRet3 = gson.fromJson(resultJson3, RepoRet.class);
-                    isTrue(repoRet3);
+                    if (isTrue(repoRet3)){
+                        //更新检验单使用决策
+                        String formId2 = "QM_InspectBill";
+
+                        Save save2 = new Save();
+                        Model model2 = new Model();
+                        model2.setFID((int)formData.get("numberField_m86nq0a5"));//检验单id
+                        List<Object> FEntityList = new ArrayList<>();
+                        for (Map detail : details) {
+                            Map FEntity2 = new HashMap();
+                            FEntity2.put("FEntryID",detail.get("numberField_m873a1q2"));//分录明细id
+
+                            List<Map> FPolicyDetailList = new ArrayList<>();
+                            Map FPolicyDetail = new HashMap();
+                            FPolicyDetail.put("FDetailID",detail.get("numberField_m8fkgsvo"));//使用决策id
+
+                            //不良处理 A:接收 B:让步接收 F:判退
+                            String FDefProcess = getString(detail.get("selectField_m64pw0gt"));
+                            switch (FDefProcess){
+                                case "接收": FPolicyDetail.put("FUsePolicy","A");break;
+                                case "让步接收": FPolicyDetail.put("FUsePolicy","B");break;
+                                case "判退": FPolicyDetail.put("FUsePolicy","F");break;
+                                default:break;
+                            }
+
+                            FPolicyDetailList.add(FPolicyDetail);
+
+                            FEntity2.put("FPolicyDetail",FPolicyDetailList);
+
+                            FEntityList.add(FEntity2);
+                        }
+                        model2.setFEntity(FEntityList);
+
+                        save2.setModel(model2);
+
+                        String resultJson4 = client.save(formId2,JSONObject.toJSONString(save2));
+
+                        RepoRet repoRet4 = gson.fromJson(resultJson4, RepoRet.class);
+                        isTrue(repoRet4);
+                    }
                 }
             }
         } catch (Exception e) {
@@ -1176,6 +1231,12 @@ public class JianhuiServiceImpl implements JianhuiService {
                             if (!((List<Map>)entity.get("Memo")).isEmpty()){
                                 detail.put("textField_m82j5zsz",((List<Map>)entity.get("Memo")).get(0).get("Value"));//不良原因
                             }
+
+                            List<Map> policyDetail = (List<Map>) entity.get("PolicyDetail");
+                            if (!policyDetail.isEmpty()){
+                                detail.put("numberField_m8fkgsvo",policyDetail.get(0).get("Id"));//使用决策id
+                            }
+
                             detailList.add(detail);
                         }
                         formData.put("tableField_m82j5zso",detailList);
@@ -1212,9 +1273,55 @@ public class JianhuiServiceImpl implements JianhuiService {
         syncSupplier();//同步供应商
         syncSalePrice();//同步销售价目表
         syncMaterial();//同步物料
+
+        //新增数据底表更新时间
+        ydClient.operateData(YDParam.builder()
+                .formUuid("FORM-5BAA6A050AC449438568D5A50FE2D2684RBN")
+                .formDataJson(JSONObject.toJSONString(UtilMap.map("dateField_m8sdk1ny", new Date().getTime())))
+                .build(), YDConf.FORM_OPERATION.create);
+
         return McR.success();
     }
 
+    @Async
+    @Override
+    public void manualSyncData(String userId) {
+        //发送工作通知
+        if (Strings.isNotBlank(userId)){
+            Map param2 = new HashMap();
+            param2.put("access_token",ddClient.getAccessToken());
+            Map body3 = new HashMap();
+            body3.put("agent_id",ddConf.getAgentId());
+            body3.put("userid_list",userId);
+            Map msg = new HashMap();
+            msg.put("msgtype","text");
+            //获取当前时间 精确到秒
+            String time = DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss");
+            msg.put("text", UtilMap.map("content","开始同步金蝶业务数据  时间:" + time));
+            body3.put("msg",msg);
+            UtilHttp.doPost("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2",null,param2,body3);
+        }
+
+        syncData();
+
+        //发送工作通知
+        if (Strings.isNotBlank(userId)){
+            Map param2 = new HashMap();
+            param2.put("access_token",ddClient.getAccessToken());
+            Map body3 = new HashMap();
+            body3.put("agent_id",ddConf.getAgentId());
+            body3.put("userid_list",userId);
+            Map msg = new HashMap();
+            msg.put("msgtype","text");
+            //获取当前时间 精确到秒
+            String time = DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss");
+            msg.put("text", UtilMap.map("content","金蝶业务数据已更新  时间:" + time));
+            body3.put("msg",msg);
+            UtilHttp.doPost("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2",null,param2,body3);
+        }
+    }
+
+
 
 
     private String getMultiLanguageTextName(Object object){

+ 1 - 1
mjava-kabeiyi/src/main/java/com/malk/kabeiyi/controller/KabeiyiController.java

@@ -96,7 +96,7 @@ public class KabeiyiController {
     }
 
     //每天0点定时同步发货单信息
-    @Scheduled(cron = "0 0 0 * * ?")
+//    @Scheduled(cron = "0 0 0 * * ?")
     @GetMapping("getDeliveryInfo")
     public McR getDeliveryInfo(){
         return kabeiyiService.getDeliveryInfo();

+ 68 - 0
mjava-lianxiang/pom.xml

@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.2.0.RELEASE</version> <!-- 使用最新的稳定版或其他适用版本 -->
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+
+    <groupId>com.malk.lianxiang</groupId>
+    <artifactId>mjava-lianxiang</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </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>
+    <dependency>
+        <groupId>junit</groupId>
+        <artifactId>junit</artifactId>
+        <scope>test</scope>
+    </dependency>
+    <dependency>
+        <groupId>com.malk</groupId>
+        <artifactId>base</artifactId>
+        <version>1.1-SNAPSHOT</version>
+    </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>lianxiang</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <executable>true</executable>
+                    <includeSystemScope>true</includeSystemScope>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 17 - 0
mjava-lianxiang/src/main/java/com/malk/lianxiang/LianXiangApplication.java

@@ -0,0 +1,17 @@
+package com.malk.lianxiang;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@SpringBootApplication(scanBasePackages = {"com.malk"})
+@EnableScheduling
+public class LianXiangApplication {
+    public static void main(String[] args) {
+        try {
+            SpringApplication.run(LianXiangApplication.class,args);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+}

+ 0 - 0
mjava-lianxiang/src/main/java/com/malk/lianxiang/controller/LianxiangController.java


Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott