lfx 9 hours ago
parent
commit
93c3cf5fcb
25 changed files with 628 additions and 48 deletions
  1. 1 1
      mjava-demo/src/main/java/com/malk/xzkj/DemoApplication.java
  2. 75 0
      mjava-lianan/pom.xml
  3. 61 0
      mjava-lianan/src/main/java/com/malk/lianan/AesUtil.java
  4. 17 0
      mjava-lianan/src/main/java/com/malk/lianan/LianAnApplication.java
  5. 127 0
      mjava-lianan/src/main/java/com/malk/lianan/RSASignatureUtil.java
  6. 6 0
      mjava-lianan/src/main/java/com/malk/lianan/RsaUtil.java
  7. 95 0
      mjava-lianan/src/main/java/com/malk/lianan/TestUtil.java
  8. 51 0
      mjava-lianan/src/main/java/com/malk/lianan/controller/LianAnBudgetController.java
  9. 27 0
      mjava-lianan/src/main/java/com/malk/lianan/controller/LianAnGyPayController.java
  10. 35 0
      mjava-lianan/src/main/resources/application-dev.yml
  11. 15 0
      mjava-lianan/src/main/resources/application.yml
  12. 61 0
      mjava-lianan/src/main/resources/logback-spring.xml
  13. 8 0
      mjava-tonglibo/src/main/java/com/malk/tonglibo/controller/machineController.java
  14. 1 1
      mjava-xzkj/src/main/java/com/malk/xzkj/XzkjApplication.java
  15. 1 1
      mjava-xzkj/src/main/java/com/malk/xzkj/config/TXYConf.java
  16. 4 7
      mjava-xzkj/src/main/java/com/malk/xzkj/controller/IVController.java
  17. 1 1
      mjava-xzkj/src/main/java/com/malk/xzkj/model/McInvoiceDto.java
  18. 1 1
      mjava-xzkj/src/main/java/com/malk/xzkj/model/McInvoiceKind.java
  19. 1 1
      mjava-xzkj/src/main/java/com/malk/xzkj/service/IvYdService.java
  20. 1 1
      mjava-xzkj/src/main/java/com/malk/xzkj/service/TXYInvoice.java
  21. 2 2
      mjava-xzkj/src/main/java/com/malk/xzkj/service/impl/IvYdServiceImpl.java
  22. 3 3
      mjava-xzkj/src/main/java/com/malk/xzkj/service/impl/TXYImplInvoice.java
  23. 1 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/controller/ZwErpController.java
  24. 3 3
      mjava-zhiwei/src/main/java/com/malk/zhiwei/schedule/ScheduleTask.java
  25. 30 26
      mjava-zhiwei/src/main/java/com/malk/zhiwei/service/impl/ZwServiceImpl.java

+ 1 - 1
mjava-demo/src/main/java/com/malk/xzkj/DemoApplication.java

@@ -1,4 +1,4 @@
-package com.malk.xzkj;
+package com.malk.lianan;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;

+ 75 - 0
mjava-lianan/pom.xml

@@ -0,0 +1,75 @@
+<?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.7.18</version> <!-- 使用最新的稳定版或其他适用版本 -->
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+
+    <groupId>com.malk</groupId>
+    <artifactId>mjava-lianan</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <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>2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.30</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <finalName>lianan</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>

+ 61 - 0
mjava-lianan/src/main/java/com/malk/lianan/AesUtil.java

@@ -0,0 +1,61 @@
+package com.malk.lianan;
+
+import cn.hutool.core.codec.Base64;
+import cn.hutool.crypto.Mode;
+import cn.hutool.crypto.Padding;
+import cn.hutool.crypto.symmetric.AES;
+
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+
+public class AesUtil {
+
+    /**
+     * AES CBC 加密
+     * @param content 明文内容
+     * @param key 密钥(需要16/24/32字节)
+     * @return Base64编码的密文
+     */
+    public static String encrypt(String content, String key) {
+        // 1. 创建AES对象,指定CBC模式,PKCS5Padding填充
+        AES aes = new AES(Mode.CBC, Padding.PKCS5Padding,
+                key.getBytes(StandardCharsets.UTF_8));
+
+        // 2. 设置IV(这里使用密钥的前16字节,但实际应该用随机IV)
+        // 注意:实际项目中IV应该是随机的,每次加密都不同
+        byte[] ivBytes = key.getBytes(StandardCharsets.UTF_8);
+        if (ivBytes.length > 16) {
+            ivBytes = Arrays.copyOf(ivBytes, 16);
+        } else if (ivBytes.length < 16) {
+            // 填充到16字节
+            ivBytes = Arrays.copyOf(ivBytes, 16);
+            Arrays.fill(ivBytes, ivBytes.length, 16, (byte)0);
+        }
+        aes.setIv(ivBytes);
+
+        // 3. 加密并返回Base64
+        byte[] encrypted = aes.encrypt(content, StandardCharsets.UTF_8);
+        return Base64.encode(encrypted);
+    }
+
+    /**
+     * 解密
+     */
+    public static String decrypt(String base64Content, String key) {
+        AES aes = new AES(Mode.CBC, Padding.PKCS5Padding,
+                key.getBytes(StandardCharsets.UTF_8));
+
+        byte[] ivBytes = key.getBytes(StandardCharsets.UTF_8);
+        if (ivBytes.length > 16) {
+            ivBytes = Arrays.copyOf(ivBytes, 16);
+        } else if (ivBytes.length < 16) {
+            ivBytes = Arrays.copyOf(ivBytes, 16);
+            Arrays.fill(ivBytes, ivBytes.length, 16, (byte)0);
+        }
+        aes.setIv(ivBytes);
+
+        byte[] decoded = Base64.decode(base64Content);
+        return aes.decryptStr(decoded, StandardCharsets.UTF_8);
+    }
+
+}

+ 17 - 0
mjava-lianan/src/main/java/com/malk/lianan/LianAnApplication.java

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

+ 127 - 0
mjava-lianan/src/main/java/com/malk/lianan/RSASignatureUtil.java

@@ -0,0 +1,127 @@
+package com.malk.lianan;
+
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.exceptions.ExceptionUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.asymmetric.Sign;
+import cn.hutool.crypto.asymmetric.SignAlgorithm;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * RSA签名工具类(基于Hutool)
+ * 支持异常处理、日志记录、参数校验
+ */
+public class RSASignatureUtil {
+    
+    private static final Logger logger = LoggerFactory.getLogger(RSASignatureUtil.class);
+    
+    // 默认使用SHA256withRSA
+    private static final SignAlgorithm DEFAULT_ALGORITHM = SignAlgorithm.SHA256withRSA;
+    
+    /**
+     * 生成签名(带完整错误处理)
+     */
+    public static String signSafe(String data, String privateKeyBase64) {
+        return signSafe(data, privateKeyBase64, DEFAULT_ALGORITHM);
+    }
+    
+    public static String signSafe(String data, String privateKeyBase64, SignAlgorithm algorithm) {
+        // 参数校验
+        if (StrUtil.isBlank(data)) {
+            logger.warn("签名数据为空");
+            return null;
+        }
+        
+        if (StrUtil.isBlank(privateKeyBase64)) {
+            logger.error("私钥为空");
+            return null;
+        }
+        
+        try {
+            // 使用Hutool的签名工具
+            Sign sign = SecureUtil.sign(algorithm, privateKeyBase64, null);
+            String signature = sign.signHex(data, StandardCharsets.UTF_8);
+            
+            logger.debug("签名成功,数据长度: {}, 签名长度: {}", 
+                        data.length(), signature.length());
+            return signature;
+            
+        } catch (Exception e) {
+            logger.error("签名失败 - 数据: {}, 算法: {}, 错误: {}", 
+                        StrUtil.subPre(data, 100), // 只记录前100字符
+                        algorithm.getValue(),
+                        ExceptionUtil.getMessage(e));
+            return null;
+        }
+    }
+    
+    /**
+     * 验证签名(带完整错误处理)
+     */
+    public static boolean verifySafe(String data, String signatureBase64, String publicKeyBase64) {
+        return verifySafe(data, signatureBase64, publicKeyBase64, DEFAULT_ALGORITHM);
+    }
+    
+    public static boolean verifySafe(String data, String signatureBase64, 
+                                    String publicKeyBase64, SignAlgorithm algorithm) {
+        // 参数校验
+        if (StrUtil.isBlank(data)) {
+            logger.warn("验证数据为空");
+            return false;
+        }
+        
+        if (StrUtil.isBlank(signatureBase64)) {
+            logger.warn("签名为空");
+            return false;
+        }
+        
+        if (StrUtil.isBlank(publicKeyBase64)) {
+            logger.error("公钥为空");
+            return false;
+        }
+        
+        try {
+            // 使用Hutool的签名工具
+            Sign sign = SecureUtil.sign(algorithm, null, publicKeyBase64);
+            boolean isValid = sign.verify(
+                data.getBytes(StandardCharsets.UTF_8),
+                Base64.decode(signatureBase64)
+            );
+            
+            logger.debug("签名验证结果: {}", isValid ? "通过" : "失败");
+            return isValid;
+            
+        } catch (Exception e) {
+            logger.error("签名验证失败 - 数据长度: {}, 算法: {}, 错误: {}", 
+                        data.length(),
+                        algorithm.getValue(),
+                        ExceptionUtil.getMessage(e));
+            return false;
+        }
+    }
+    
+    /**
+     * 批量验证签名
+     */
+    public static boolean verifyBatch(String[] dataArray, String[] signatureArray, 
+                                     String publicKeyBase64) {
+        if (dataArray == null || signatureArray == null || 
+            dataArray.length != signatureArray.length) {
+            logger.error("批量验证参数无效");
+            return false;
+        }
+        
+        for (int i = 0; i < dataArray.length; i++) {
+            if (!verifySafe(dataArray[i], signatureArray[i], publicKeyBase64)) {
+                logger.error("第 {} 个签名验证失败", i + 1);
+                return false;
+            }
+        }
+        
+        logger.info("批量签名验证成功,共验证 {} 个签名", dataArray.length);
+        return true;
+    }
+}

+ 6 - 0
mjava-lianan/src/main/java/com/malk/lianan/RsaUtil.java

@@ -0,0 +1,6 @@
+package com.malk.lianan;
+
+public class RsaUtil {
+
+
+}

File diff suppressed because it is too large
+ 95 - 0
mjava-lianan/src/main/java/com/malk/lianan/TestUtil.java


+ 51 - 0
mjava-lianan/src/main/java/com/malk/lianan/controller/LianAnBudgetController.java

@@ -0,0 +1,51 @@
+package com.malk.lianan.controller;
+
+import cn.hutool.crypto.digest.MD5;
+import com.alibaba.fastjson.JSONObject;
+import com.malk.server.common.McR;
+import com.malk.utils.PublicUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/budget/")
+@Slf4j
+public class LianAnBudgetController {
+
+    private static String SIGN_KEY="be56e057f20f883e";
+
+    @PostMapping("datasync")
+    public McR dataSync(@RequestBody JSONObject param){
+        log.info("全面预算接口:{}",param);
+        if(PublicUtil.isNull(param,"timestamp","sign","msgType","data")){
+            return McR.error("201","参数校验不通过!");
+        }
+        if(!signCheck(param)){
+            return McR.error("202","签名校验不通过!");
+        }
+        String msgType = param.getString("msgType");
+        if("T01".equals(msgType)){
+            log.info("科目数据:{}",param.get("data"));
+        }else if("T02".equals(msgType)){
+            log.info("产品数据:{}",param.get("data"));
+        }else if("T03".equals(msgType)){
+            log.info("项目数据:{}",param.get("data"));
+        }else if("Y01".equals(msgType)){
+            log.info("预算数据:{}",param.get("data"));
+        }else{
+            return McR.error("203","msgType错误!");
+        }
+        return McR.success();
+    }
+
+    private static boolean signCheck(JSONObject param){
+        String data=SIGN_KEY+param.getString("timestamp")+param.getString("data");
+        MD5 md5 = new MD5();
+        String digestHex = md5.digestHex(data);
+        return digestHex.equals(param.getString("sign"));
+    }
+}

+ 27 - 0
mjava-lianan/src/main/java/com/malk/lianan/controller/LianAnGyPayController.java

@@ -0,0 +1,27 @@
+package com.malk.lianan.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.malk.server.common.McR;
+import com.malk.utils.PublicUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/gypay/")
+@Slf4j
+public class LianAnGyPayController {
+
+    @PostMapping("callback")
+    public McR callback(@RequestBody JSONObject param){
+        log.info("callback:{}",param);
+        return McR.success();
+    }
+
+    @GetMapping("test")
+    public McR test(String id){
+        log.info("test:{}",id);
+        return McR.success();
+    }
+
+}

+ 35 - 0
mjava-lianan/src/main/resources/application-dev.yml

@@ -0,0 +1,35 @@
+server:
+  port: 9003
+  servlet:
+    context-path: /api/lianan
+
+spring:
+enable:
+  scheduling: false
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/server/lianan/log/
+  level:
+    com.malk.*: debug
+
+# dingtalk
+dingtalk:
+  agentId: 2691784047
+  appKey: dinghbynhnd2dbgypmsa
+  appSecret: Kl5Xw8x0TlEIlvcJuUkYZD18UTTShJmfdKrAIpY8oX-Q_tazyUKA28nQh7dG5-mq
+  corpId:
+  aesKey:
+  token:
+
+
+# teambition
+teambition:
+  AppID:
+  AppSecret:
+  TenantId:
+  OperatorId:    # 公共账号, 需要有操作权限 [牧语]
+# aliwork
+aliwork:
+  appType:
+  systemToken:
+

+ 15 - 0
mjava-lianan/src/main/resources/application.yml

@@ -0,0 +1,15 @@
+spring:
+  profiles:
+    active: dev
+  servlet:
+    multipart:
+      max-file-size: 100MB
+      max-request-size: 100MB
+  http:
+    enabled: false
+
+#  configuration:
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  global-config:
+    db-config:
+      id-type: auto

+ 61 - 0
mjava-lianan/src/main/resources/logback-spring.xml

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="false" scanPeriod="60 seconds">
+    <springProperty scope="context" name="LOG_HOME" source="logging.path" defaultValue="/home/server/log/"/>
+    <property name="FileNamePattern" value="${LOG_HOME}%d{yyyyMM}/%d{dd}"/>
+
+    <!-- 定义控制台输出 -->
+    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - [%thread] - %-5level - %logger{50} - %msg%n</pattern>
+        </layout>
+    </appender>
+
+    <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 指定日志文件的名称 -->
+        <!--<file>${FileNamePattern}/info.log</file>-->
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${FileNamePattern}/info-%i.log</fileNamePattern>
+            <MaxHistory>30</MaxHistory>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <MaxFileSize>30MB</MaxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
+        </layout>
+    </appender>
+
+    <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
+        <discriminator>
+            <Key>processid</Key>
+            <DefaultValue>sys</DefaultValue>
+        </discriminator>
+        <sift>
+            <appender name="FILE-${processid}"
+                      class="ch.qos.logback.core.rolling.RollingFileAppender">
+                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+                    <FileNamePattern>
+                        ${FileNamePattern}/${processid}.log
+                    </FileNamePattern>
+                </rollingPolicy>
+                <layout class="ch.qos.logback.classic.PatternLayout">
+                    <Pattern>
+                        %d{yyyyMMdd:HH:mm:ss.SSS} [%thread] %-5level %msg%n
+                    </Pattern>
+                </layout>
+            </appender>
+        </sift>
+    </appender>
+
+
+    <!-- 日志输出级别 -->
+    <logger name="org.springframework" level="debug"  additivity="false"/>
+    <logger name="com.malk.connecter" level="debug"/>
+    <root level="INFO">
+        <appender-ref ref="stdout"/>
+        <appender-ref ref="appLogAppender"/>
+        <appender-ref ref="SIFT"/>
+    </root>
+</configuration>

+ 8 - 0
mjava-tonglibo/src/main/java/com/malk/tonglibo/controller/machineController.java

@@ -119,6 +119,14 @@ public class machineController {
 
     }
 
+    private String getValue(List list,int index){
+        if(index >= list.size()){
+            return "";
+        }else{
+            return list.get(index).toString();
+        }
+    }
+
 
 
 }

+ 1 - 1
mjava-xzkj/src/main/java/com/malk/xzkj/XzkjApplication.java

@@ -1,4 +1,4 @@
-package com.malk.xzkj;
+package com.malk.lianan;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;

+ 1 - 1
mjava-xzkj/src/main/java/com/malk/xzkj/config/TXYConf.java

@@ -1,4 +1,4 @@
-package com.malk.xzkj.config;
+package com.malk.lianan.config;
 
 import com.malk.utils.UtilMap;
 import lombok.Data;

+ 4 - 7
mjava-xzkj/src/main/java/com/malk/xzkj/controller/IVController.java

@@ -1,10 +1,8 @@
-package com.malk.xzkj.controller;
+package com.malk.lianan.controller;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
-import com.malk.xzkj.model.McInvoiceDto;
-import com.malk.xzkj.model.McInvoiceKind;
-import com.malk.xzkj.config.TXYConf;
+import com.malk.lianan.model.McInvoiceDto;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.common.FilePath;
@@ -12,10 +10,9 @@ import com.malk.server.common.McException;
 import com.malk.server.common.McR;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
-import com.malk.service.aliwork.YDService;
 import com.malk.utils.*;
-import com.malk.xzkj.service.IvYdService;
-import com.malk.xzkj.service.TXYInvoice;
+import com.malk.lianan.service.IvYdService;
+import com.malk.lianan.service.TXYInvoice;
 import com.spire.pdf.PdfCompressionLevel;
 import com.spire.pdf.PdfDocument;
 import com.spire.pdf.PdfPageBase;

+ 1 - 1
mjava-xzkj/src/main/java/com/malk/xzkj/model/McInvoiceDto.java

@@ -1,4 +1,4 @@
-package com.malk.xzkj.model;
+package com.malk.lianan.model;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.malk.base.BaseDto;

+ 1 - 1
mjava-xzkj/src/main/java/com/malk/xzkj/model/McInvoiceKind.java

@@ -1,4 +1,4 @@
-package com.malk.xzkj.model;
+package com.malk.lianan.model;
 
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;

+ 1 - 1
mjava-xzkj/src/main/java/com/malk/xzkj/service/IvYdService.java

@@ -1,4 +1,4 @@
-package com.malk.xzkj.service;
+package com.malk.lianan.service;
 
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;

+ 1 - 1
mjava-xzkj/src/main/java/com/malk/xzkj/service/TXYInvoice.java

@@ -1,4 +1,4 @@
-package com.malk.xzkj.service;
+package com.malk.lianan.service;
 
 import com.tencentcloudapi.common.exception.TencentCloudSDKException;
 

+ 2 - 2
mjava-xzkj/src/main/java/com/malk/xzkj/service/impl/IvYdServiceImpl.java

@@ -1,11 +1,11 @@
-package com.malk.xzkj.service.impl;
+package com.malk.lianan.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.service.aliwork.YDClient;
 import com.malk.utils.UtilMap;
-import com.malk.xzkj.service.IvYdService;
+import com.malk.lianan.service.IvYdService;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;

+ 3 - 3
mjava-xzkj/src/main/java/com/malk/xzkj/service/impl/TXYImplInvoice.java

@@ -1,11 +1,11 @@
-package com.malk.xzkj.service.impl;
+package com.malk.lianan.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.malk.server.common.McException;
 import com.malk.utils.UtilMap;
 import com.malk.utils.UtilNumber;
-import com.malk.xzkj.config.TXYConf;
-import com.malk.xzkj.service.TXYInvoice;
+import com.malk.lianan.config.TXYConf;
+import com.malk.lianan.service.TXYInvoice;
 import com.tencentcloudapi.common.Credential;
 import com.tencentcloudapi.common.exception.TencentCloudSDKException;
 import com.tencentcloudapi.common.profile.ClientProfile;

+ 1 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/controller/ZwErpController.java

@@ -46,6 +46,7 @@ public class ZwErpController {
             serarchParam.put("textField_mdwr7jnh",param.get("saleCode"));
             serarchParam.put("textField_mdwpe4m7",param.get("noticeCode"));
             serarchParam.put("textField_mdwr7jni",param.get("code"));
+            serarchParam.put("textField_mdqsatd4",param.get("prod"));
             ydClient.operateData(YDParam.builder().formUuid("FORM-54A845D217A64108BC2B288F6F0BE622BR5C")
                     .searchCondition(JSONObject.toJSONString(serarchParam))
                     .formDataJson(JSONObject.toJSONString(formData)).build(), YDConf.FORM_OPERATION.upsert);

+ 3 - 3
mjava-zhiwei/src/main/java/com/malk/zhiwei/schedule/ScheduleTask.java

@@ -56,10 +56,10 @@ public class ScheduleTask {
 
             if("销售订单".equals(type)){
                 JSONObject jsonObject=zwService.saveSaleOrder(formData);
-                comp(formInstanceId,"同步完成!",JSONObject.toJSONString(jsonObject),null);
+                comp(formInstanceId,"同步完成!",JSONObject.toJSONString(jsonObject.getJSONObject("result")),jsonObject);
             }else if("发货单".equals(type)){
                 JSONObject jsonObject=zwService.saveDeliveryOrder(formData);
-                comp(formInstanceId,"同步完成!",JSONObject.toJSONString(jsonObject),null);
+                comp(formInstanceId,"同步完成!",JSONObject.toJSONString(jsonObject.getJSONObject("result")),jsonObject);
             }else if("产品同步".equals(type)){
                 zwService.syncProduct(UtilMap.getString(formData,"textField_mcefftng"),UtilMap.getString(formData,"textField_mdr1v1di"));
                 comp(formInstanceId,"同步完成!","",null);
@@ -74,8 +74,8 @@ public class ScheduleTask {
 
     @Scheduled(cron = "0 0 1 * * ?")
     public void syncProd() {
+        zwService.syncProduct("","PILOT2024");
         zwService.syncProduct("","PILOT2023");
-//        zwService.syncProduct("","PILOT2024");
     }
 
     private void processing(String id){

+ 30 - 26
mjava-zhiwei/src/main/java/com/malk/zhiwei/service/impl/ZwServiceImpl.java

@@ -105,18 +105,13 @@ public class ZwServiceImpl implements ZwService {
         String data=JSONObject.toJSONString(dataObj);
         log.info("入参:{}",data);
         // 调用接口
-        JSONObject result=saveSaleOrder(UtilMap.getString(formData,"textField_mcefftni"),UtilMap.getString(formData,"textField_mdr1v1di"));
+        JSONObject result=saveSaleOrder(data,UtilMap.getString(formData,"textField_mdr1v1di"));
         JSONArray codes=result.getJSONArray("page");
-        for (int i = 0; i < list.size(); i++) {
-            Map tempMap=new HashMap();
-            tempMap.put("textField_mdqsatd4",UtilMap.getString(list.get(i),"textField_mdqs9oqa"));
-            tempMap.put("textField_mdwpe4m6","合同");
-            if(codes.size() >= i){
-                tempMap.put("textField_mdqsatd5",codes.getJSONObject(i).getString("CODE"));
-            }
-            ydClient.operateData(YDParam.builder().formUuid("FORM-E999482BC03547D89A435F5441A46F1ANR0R").formDataJson(JSONObject.toJSONString(tempMap)).build(), YDConf.FORM_OPERATION.create);
-        }
-        return result;
+        String id=codes.getJSONObject(0).getString("CODE");
+        JSONObject result1=new JSONObject();
+        result1.put("textField_me17f355",id); // erp单号
+        result1.put("result",result);
+        return result1;
     }
 
     private static JSONObject saveDeliveryOrder(String data,String erpPilot){
@@ -155,17 +150,22 @@ public class ZwServiceImpl implements ZwService {
         log.info("入参:{}",data);
         JSONObject result=saveDeliveryOrder(data,UtilMap.getString(formData,"textField_mdr1v1di"));
         JSONArray codes=result.getJSONArray("page");
-        for (int i = 0; i < list.size(); i++) {
-            Map tempMap=new HashMap();
-            tempMap.put("textField_mdqsatd4",UtilMap.getString(list.get(i),"textField_mdqs9oqa"));
-            tempMap.put("textField_mdwpe4m6","发货");
-            tempMap.put("textField_mdwpe4m7",UtilMap.getString(formData,"textField_mdwqclqh"));
-            if(codes.size() >= i){
-                tempMap.put("textField_mdqsatd5",codes.getJSONObject(i).getString("CODE"));
-            }
-            ydClient.operateData(YDParam.builder().formUuid("FORM-E999482BC03547D89A435F5441A46F1ANR0R").formDataJson(JSONObject.toJSONString(tempMap)).build(), YDConf.FORM_OPERATION.create);
-        }
-        return result;
+        String id=codes.getJSONObject(0).getString("CODE");
+        JSONObject result1=new JSONObject();
+        result1.put("textField_me17f355",id); // erp单号
+        result1.put("result",result);
+        return result1;
+//        for (int i = 0; i < list.size(); i++) {
+//            Map tempMap=new HashMap();
+//            tempMap.put("textField_mdqsatd4",UtilMap.getString(list.get(i),"textField_mdqs9oqa"));
+//            tempMap.put("textField_mdwpe4m6","发货");
+//            tempMap.put("textField_mdwpe4m7",UtilMap.getString(formData,"textField_mdwqclqh"));
+//            if(codes.size() >= i){
+//                tempMap.put("textField_mdqsatd5",codes.getJSONObject(i).getString("CODE"));
+//            }
+//            ydClient.operateData(YDParam.builder().formUuid("FORM-E999482BC03547D89A435F5441A46F1ANR0R").formDataJson(JSONObject.toJSONString(tempMap)).build(), YDConf.FORM_OPERATION.create);
+//        }
+//        return result;
         // 调用接口
     }
 
@@ -180,10 +180,14 @@ public class ZwServiceImpl implements ZwService {
         for (int i = 0; i < data.size(); i++) {
             JSONObject dataObj = data.getJSONObject(i);
             String productId=UtilMap.getString(dataObj,"CODE");
-            Map saveMap=UtilMap.map("textField_mcijetil, textField_l43jpnsf, textField_l43jpnsh",productId,dataObj.getString("CNAME"),dataObj.getString("SPEC"));
-            ydClient.operateData(YDParam.builder().formUuid("FORM-4A7B1A62CCFC4D758AB98ADE3F97D40COYO2")
-                    .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mcijetil", productId)))
-                    .formDataJson(JSONObject.toJSONString(saveMap)).build(), YDConf.FORM_OPERATION.upsert);
+            Map saveMap=UtilMap.map("textField_mcijetil, textField_l43jpnsf, textField_l43jpnsh","selectField_me6qde0j",productId,dataObj.getString("CNAME"),dataObj.getString("SPEC"),erpPilot);
+            try {
+                ydClient.operateData(YDParam.builder().formUuid("FORM-4A7B1A62CCFC4D758AB98ADE3F97D40COYO2")
+                        .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mcijetil", productId)))
+                        .formDataJson(JSONObject.toJSONString(saveMap)).build(), YDConf.FORM_OPERATION.upsert);
+            }catch (Exception e){
+                e.printStackTrace();
+            }
         }
     }
 }