Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

fyz 9 mesi fa
parent
commit
95a667216b
78 ha cambiato i file con 2569 aggiunte e 45 eliminazioni
  1. 85 0
      mjava-diwei/pom.xml
  2. 17 0
      mjava-diwei/src/main/java/com/malk/diwei/DiweiApplication.java
  3. 29 0
      mjava-diwei/src/main/java/com/malk/diwei/controller/ClientController.java
  4. 20 0
      mjava-diwei/src/main/java/com/malk/diwei/controller/GoodsController.java
  5. 29 0
      mjava-diwei/src/main/java/com/malk/diwei/controller/ProcStepController.java
  6. 29 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/Brand.java
  7. 103 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/Client.java
  8. 45 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/ClientMoreLinkData.java
  9. 35 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/Color.java
  10. 108 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/Goods.java
  11. 43 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/GoodsCategory.java
  12. 35 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/GoodsColor.java
  13. 33 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/GoodsSize.java
  14. 68 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/GoodsUnit.java
  15. 54 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/ProcStep.java
  16. 37 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/Size.java
  17. 29 0
      mjava-diwei/src/main/java/com/malk/diwei/entity/Unit.java
  18. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/BrandMapper.java
  19. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/ClientMapper.java
  20. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/ClientMoreLinkDataMapper.java
  21. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/ColorMapper.java
  22. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/GoodsCategoryMapper.java
  23. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/GoodsColorMapper.java
  24. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/GoodsMapper.java
  25. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/GoodsSizeMapper.java
  26. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/GoodsUnitMapper.java
  27. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/ProcStepMapper.java
  28. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/SizeMapper.java
  29. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/mapper/UnitMapper.java
  30. 19 0
      mjava-diwei/src/main/java/com/malk/diwei/service/ClientService.java
  31. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/service/GoodsService.java
  32. 18 0
      mjava-diwei/src/main/java/com/malk/diwei/service/ProcStepService.java
  33. 157 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/ClientServiceImpl.java
  34. 197 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/GoodsServiceImpl.java
  35. 78 0
      mjava-diwei/src/main/java/com/malk/diwei/service/impl/ProcStepServiceImpl.java
  36. 44 0
      mjava-diwei/src/main/java/com/malk/diwei/utils/MPGenerator.java
  37. 44 0
      mjava-diwei/src/main/resources/application-dev.yml
  38. 27 0
      mjava-diwei/src/main/resources/application-prod.yml
  39. 15 0
      mjava-diwei/src/main/resources/application.yml
  40. 61 0
      mjava-diwei/src/main/resources/logback-spring.xml
  41. 5 0
      mjava-diwei/src/main/resources/mapper/BrandMapper.xml
  42. 5 0
      mjava-diwei/src/main/resources/mapper/ClientMapper.xml
  43. 5 0
      mjava-diwei/src/main/resources/mapper/ClientMoreLinkDataMapper.xml
  44. 5 0
      mjava-diwei/src/main/resources/mapper/ColorMapper.xml
  45. 5 0
      mjava-diwei/src/main/resources/mapper/GoodsCategoryMapper.xml
  46. 5 0
      mjava-diwei/src/main/resources/mapper/GoodsColorMapper.xml
  47. 5 0
      mjava-diwei/src/main/resources/mapper/GoodsMapper.xml
  48. 5 0
      mjava-diwei/src/main/resources/mapper/GoodsUnitMapper.xml
  49. 5 0
      mjava-diwei/src/main/resources/mapper/ProcStepMapper.xml
  50. 5 0
      mjava-diwei/src/main/resources/mapper/UnitMapper.xml
  51. 41 4
      mjava-huagao/src/main/java/com/malk/huagao/controller/HuaGaoController.java
  52. 13 0
      mjava-huagao/src/main/java/com/malk/huagao/service/HuaGaoService.java
  53. 217 0
      mjava-huagao/src/main/java/com/malk/huagao/service/impl/HuaGaoServiceImpl.java
  54. 2 2
      mjava-huagao/src/main/resources/application-dev.yml
  55. 10 0
      mjava-jianhui/pom.xml
  56. 11 2
      mjava-jianhui/src/main/java/com/malk/jianhui/controller/JianhuiController.java
  57. 6 0
      mjava-jianhui/src/main/java/com/malk/jianhui/entity/DefectEntity.java
  58. 16 0
      mjava-jianhui/src/main/java/com/malk/jianhui/entity/LinkEntry.java
  59. 2 0
      mjava-jianhui/src/main/java/com/malk/jianhui/service/JianhuiService.java
  60. 172 4
      mjava-jianhui/src/main/java/com/malk/jianhui/service/impl/JianhuiServiceImpl.java
  61. 1 1
      mjava-jianhui/src/main/resources/application-prod.yml
  62. 66 0
      mjava-jianhui/src/test/java/com/malk/jianhui/Test.java
  63. 9 0
      mjava-lingmingguangzi/src/main/java/com/malk/lingmingguangzi/controller/LingmingguangziController.java
  64. 2 0
      mjava-lingmingguangzi/src/main/java/com/malk/lingmingguangzi/service/LingmingguangziService.java
  65. 51 1
      mjava-lingmingguangzi/src/main/java/com/malk/lingmingguangzi/service/LingmingguangziServiceImpl.java
  66. 1 1
      mjava-lingmingguangzi/src/main/resources/application-dev.yml
  67. 1 1
      mjava-lingmingguangzi/src/main/resources/application-prod.yml
  68. 12 0
      mjava-mc/pom.xml
  69. 1 1
      mjava-mc/src/main/java/com/malk/mc/aspect/RequestLoggingAspect.java
  70. 74 0
      mjava-mc/src/main/java/com/malk/mc/controller/McBotController.java
  71. 56 0
      mjava-mc/src/main/java/com/malk/mc/controller/McDdController.java
  72. 29 4
      mjava-mc/src/main/java/com/malk/mc/service/impl/McProjectServiceImpl.java
  73. 8 4
      mjava-mc/src/main/java/com/malk/mc/service/impl/McYdServiceImpl.java
  74. 1 1
      mjava-mc/src/main/resources/application-dev.yml
  75. 1 1
      mjava-mc/src/main/resources/application.yml
  76. 7 2
      mjava-xzkj/pom.xml
  77. 14 14
      mjava-xzkj/src/main/java/com/malk/xzkj/controller/IVController.java
  78. 2 2
      mjava-xzkj/src/main/resources/static/mjs/mjs.js

+ 85 - 0
mjava-diwei/pom.xml

@@ -0,0 +1,85 @@
+<?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.diwei</groupId>
+    <artifactId>mjava-diwei</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>com.malk</groupId>
+            <artifactId>base</artifactId>
+            <version>1.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!--sql server依赖-->
+        <dependency>
+            <groupId>com.microsoft.sqlserver</groupId>
+            <artifactId>mssql-jdbc</artifactId>
+            <version>6.4.0.jre8</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.3.2</version>
+        </dependency>
+        <!--MP自动生成器依赖-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+            <version>3.5.3.1</version>
+        </dependency>
+        <dependency> <!--自动生成的模板:模板有三种:Velocity(默认)、Freemarker、Beetl -->
+            <groupId>org.apache.velocity</groupId>
+            <artifactId>velocity</artifactId>
+            <version>1.7</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <finalName>diwei</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-diwei/src/main/java/com/malk/diwei/DiweiApplication.java

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

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

@@ -0,0 +1,29 @@
+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();
+    }
+}

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

@@ -0,0 +1,20 @@
+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();
+    }
+}

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

@@ -0,0 +1,29 @@
+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();
+    }
+}

+ 29 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/Brand.java

@@ -0,0 +1,29 @@
+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-12
+ */
+@TableName("Brand")
+@Data
+  public class Brand implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Integer brandId;
+
+    private String brandName;
+
+    private Integer brandNo;
+}

+ 103 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/Client.java

@@ -0,0 +1,103 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-11
+ */
+@TableName("Client")
+@Data
+  public class Client implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long clientID;
+
+    private String clientCode;
+
+    private String clientName;
+
+    private String clientShortName;
+
+    private Boolean clientDoubleIdentity;
+
+    private String clientShortCode;
+
+    private Integer clientLevel;
+
+    private Integer clientProperty;
+
+    private String clientLinkman;
+
+    private String clientTel;
+
+    private String clientFax;
+
+    private String clientAddress;
+
+    private String clientPostcode;
+
+    private String clientWebsite;
+
+    private String clientDescription;
+
+    private String clientMob;
+
+    private String clientLinkmanPosition;
+
+    private Integer clientStatus;
+
+    private String clientBank;
+
+    private String clientBankaccount;
+
+    private String clientTaxno;
+
+    private Long clientCredit;
+
+    private Boolean clientIsExpressCorp;
+
+    private String clientLegalPerson;
+
+    private Long ownerID;
+
+    private Integer clientCategory;
+
+    private Long clientOrgID;
+
+    private Integer clientProvinceID;
+
+    private Integer clientCityID;
+
+    private Long clientAreaID;
+
+    private Long clientMarketPlaceID;
+
+    private Long clientCategoryID;
+
+    private String clientBusinessScope;
+
+    private Integer clientSetMthod;
+
+    private Integer clientPayWay;
+
+    private BigDecimal clientSalesDiscount;
+
+    private Integer clientClass;
+
+    private String clientCompanyName;
+}

+ 45 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/ClientMoreLinkData.java

@@ -0,0 +1,45 @@
+package com.malk.diwei.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+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-11
+ */
+@TableName("ClientMoreLinkData")
+@Data
+  public class ClientMoreLinkData implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      @TableId(value = "ClientMoreLinkDataID", type = IdType.AUTO)
+      private Long clientMoreLinkDataID;
+
+    private Long clientMoreLinkDataClientID;
+
+    private String clientMoreLinkDataLinkMan;
+
+    private String clientMoreLinkDataTel;
+
+    private String clientMoreLinkDataMob;
+
+    private String clientMoreLinkDataFax;
+
+    private String clientMoreLinkDataPostcode;
+
+    private String clientMoreLinkDataAddress;
+
+    private Boolean clientMoreLinkDataIsDefault;
+}

+ 35 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/Color.java

@@ -0,0 +1,35 @@
+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-12
+ */
+@TableName("Color")
+@Data
+  public class Color implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long colorID;
+
+    private String colorCode;
+
+    private String colorName;
+
+    private Boolean colorIsDisable;
+
+    private Integer colorSequence;
+
+    private Long colorCategoryID;
+}

+ 108 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/Goods.java

@@ -0,0 +1,108 @@
+package com.malk.diwei.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+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-12
+ */
+@TableName("Goods")
+@Data
+  public class Goods implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long goodsID;
+
+    private String goodsCode;
+
+    private String goodsName;
+
+    private String goodsShortName;
+
+    private String goodsSpecs;
+
+    private Integer brandId;
+
+    private String goodsLocation;
+
+    private String goodsShortCode;
+
+    private Integer goodsProperty;
+
+    private String goodsAliasName;
+
+    private Integer goodsEnableBatch;
+
+    private Integer goodsSeason;
+
+    private String goodsSeries;
+
+    private Integer goodsDisable;
+
+    private Long goodsStocksLower;
+
+    private Long goodsStocksUpper;
+
+    private Long goodsCategoryID;
+
+    private Long goodsCreatorID;
+
+    private Date goodsUpdateDatetime;
+
+    private Long goodsUpdaterID;
+
+    private String goodsDescription;
+
+    private BigDecimal goodsCostPrice;
+
+    private Date goodsCreateDatetime;
+
+    private String goodsImageUrl;
+
+    private String goodsSkuID;
+
+    private Long vendorID;
+
+    private Integer goodsCheckStatus;
+
+    private Integer goodsIsGroup;
+
+    private Long goodsOrgID;
+
+    private Integer goodsSequence;
+
+    private Long goodsDesignID;
+
+    private String goodsNeedleType;
+
+    private String goodsIngredients;
+
+    private Long goodsMerchandiserID;
+
+    private Long goodsSalesManID;
+
+    private String goodsProofingRequirement;
+
+    private BigDecimal goodsMeterNumber;
+
+    private BigDecimal goodsGWeight;
+
+    private String goodsMachineType;
+
+    private String goodsFurryStyle;
+
+    private String goodsLeatherStyle;
+}

+ 43 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/GoodsCategory.java

@@ -0,0 +1,43 @@
+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-12
+ */
+@TableName("GoodsCategory")
+@Data
+  public class GoodsCategory implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long goodsCategoryID;
+
+    private String goodsCategoryCode;
+
+    private String goodsCategoryName;
+
+    private String goodsCategoryDescription;
+
+    private Long parentGoodsCategoryID;
+
+    private Integer goodsCategoryNo;
+
+    private Integer goodsCategoryProperty;
+
+    private Long goodsCategoryOrgID;
+
+    private String gCPrefix;
+
+    private Integer gCFNLength;
+}

+ 35 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/GoodsColor.java

@@ -0,0 +1,35 @@
+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-12
+ */
+@TableName("GoodsColor")
+@Data
+  public class GoodsColor implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long goodsColorID;
+
+    private Long goodsID;
+
+    private Long colorID;
+
+    private String goodsColorDescription;
+
+    private Boolean goodsColorDisable;
+
+    private String goodsColorDescription1;
+}

+ 33 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/GoodsSize.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-12
+ */
+@TableName("GoodsSize")
+@Data
+  public class GoodsSize implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long goodsSizeID;
+
+    private Long goodsID;
+
+    private Long sizeID;
+
+    private String goodsSizeDes;
+
+    private Boolean goodsSizeDisable;
+}

+ 68 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/GoodsUnit.java

@@ -0,0 +1,68 @@
+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-12
+ */
+@TableName("GoodsUnit")
+@Data
+  public class GoodsUnit implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long goodsUnitID;
+
+    private Long goodsID;
+
+    private BigDecimal goodsUnitPPrice;
+
+    private BigDecimal goodsUnitSPrice;
+
+    private String goodsUnitBarcode;
+
+    private String goodsUnitRemarks;
+
+    private Long unitID;
+
+    private BigDecimal goodsUnitRate;
+
+    private Boolean goodsUnitIsBasic;
+
+    private Boolean goodsUnitIsDefault;
+
+    private String goodsUnitFactoryBarcode;
+
+    private BigDecimal goodsUnitMaxPPrice;
+
+    private BigDecimal goodsUnitMinSprice;
+
+    private BigDecimal goodsUnitL1WSPrice;
+
+    private BigDecimal goodsUnitL2WSPrice;
+
+    private BigDecimal goodsUnitL3WSPrice;
+
+    private BigDecimal goodsUnitL4WSPrice;
+
+    private BigDecimal goodsUnitL5WSPrice;
+
+    private BigDecimal goodsUnitL6WSPrice;
+
+    private BigDecimal goodsUnitMemberPrice;
+
+    private BigDecimal goodsUnitVipPrice;
+
+    private Integer goodsUnitNo;
+}

+ 54 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/ProcStep.java

@@ -0,0 +1,54 @@
+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-07
+ */
+@TableName("ProcStep")
+@Data
+  public class ProcStep implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long procStepID;
+
+    private String procStepCode;
+
+    private String procStepName;
+
+    private String procStepDescription;
+
+    private Integer procStepSequence;
+
+    private BigDecimal procStepPrice;
+
+    private BigDecimal procStepHours;
+
+    private Integer procStepType;
+
+    private Integer procStepIsReferStock;
+
+    private Integer procStepIsReferOutSizeN;
+
+    private Integer procStepIsFKM;
+
+    private Integer procStepIsPackageScan;
+
+    private Long procStepSectionID;
+
+    private Integer procStepIsPrintLabel;
+
+    private Integer procStepIsNeedMeterNumber;
+}

+ 37 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/Size.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-12
+ */
+@TableName("Size")
+@Data
+  public class Size implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long sizeID;
+
+    private String sizeCode;
+
+    private String sizeName;
+
+    private Boolean sizeIsDisable;
+
+    private Integer sizeSequence;
+
+    private Integer sizeProperty;
+
+    private String sizeDes;
+}

+ 29 - 0
mjava-diwei/src/main/java/com/malk/diwei/entity/Unit.java

@@ -0,0 +1,29 @@
+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-12
+ */
+@TableName("Unit")
+@Data
+  public class Unit implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      private Long unitID;
+
+    private String unitName;
+
+    private String unitEnName;
+}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

+ 19 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/ClientService.java

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

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

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

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

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

+ 157 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/ClientServiceImpl.java

@@ -0,0 +1,157 @@
+package com.malk.diwei.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.malk.diwei.entity.Client;
+import com.malk.diwei.entity.ClientMoreLinkData;
+import com.malk.diwei.mapper.ClientMapper;
+import com.malk.diwei.mapper.ClientMoreLinkDataMapper;
+import com.malk.diwei.service.ClientService;
+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.*;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-11
+ */
+@Service
+public class ClientServiceImpl extends ServiceImpl<ClientMapper, Client> implements ClientService {
+    @Autowired
+    private ClientMapper clientMapper;
+
+    @Autowired
+    private ClientMoreLinkDataMapper clientMoreLinkDataMapper;
+
+    @Autowired
+    private YDClient ydClient;
+
+    @Override
+    public McR syncClient() {
+        LambdaQueryWrapper<Client> clientLambdaQueryWrapper = new LambdaQueryWrapper<>();
+
+        List<Client> clientList = clientMapper.selectList(clientLambdaQueryWrapper);
+
+        for (Client client : clientList) {
+            Map formData = new HashMap();
+
+            formData.put("numberField_m858ik1r",client.getClientID());//客户id
+            formData.put("textField_m7vidqxr",client.getClientCode());//客户编号
+            formData.put("textField_m7vidqxq",client.getClientName());//客户名称
+            formData.put("textField_m843zjgb",client.getClientShortName());//客户简称
+            formData.put("textField_m843zjgd",client.getClientShortCode());//助记码
+            //结款类型
+            if (Objects.nonNull(client.getClientPayWay())){
+                switch (client.getClientPayWay()){
+                    case 1 : formData.put("selectField_m843zjgj","现金");break;
+                    case 2 : formData.put("selectField_m843zjgj","非现金");break;
+                    case 9 : formData.put("selectField_m843zjgj","现金");break;
+                    default : break;
+                }
+            }
+
+            formData.put("textField_m843zjgk",client.getClientBank());//开户银行
+            formData.put("textField_m7vidqy7",client.getClientBankaccount());//银行账号
+            formData.put("textField_m7vidqy8",client.getClientTaxno());//税号
+            formData.put("textField_m843zjgq",client.getClientLegalPerson());//法人代表
+            formData.put("numberField_m843zjgr",client.getClientCredit());//信用额度
+
+            //客户类别
+            if (Objects.nonNull(client.getClientCategory())){
+                switch (client.getClientCategory()){
+                    case 0 : formData.put("selectField_m843zjg3","不限");break;
+                    case 1 : formData.put("selectField_m843zjg3","成品供应商");break;
+                    case 2 : formData.put("selectField_m843zjg3","原料供应商");break;
+                    case 3 : formData.put("selectField_m843zjg3","辅料供应商");break;
+                    case 4 : formData.put("selectField_m843zjg3","加工厂");break;
+                    case 5 : formData.put("selectField_m843zjg3","物流公司");break;
+                    case 6 : formData.put("selectField_m843zjg3","其他供应商");break;
+                    default : break;
+                }
+            }
+
+            //客户类型
+            if (Objects.nonNull(client.getClientClass())){
+                switch (client.getClientClass()){
+                    case 1 : formData.put("selectField_m843zjgv","批发客户");break;
+                    case 2 : formData.put("selectField_m843zjgv","Vip客户");break;
+                }
+            }
+
+            //客户级别
+            if (Objects.nonNull(client.getClientLevel())){
+                switch (client.getClientLevel()){
+                    case 1 : formData.put("textField_m7vidqxx","一级");break;
+                    case 2 : formData.put("textField_m7vidqxx","二级");break;
+                    case 3 : formData.put("textField_m7vidqxx","三级");break;
+                    case 4 : formData.put("textField_m7vidqxx","四级");break;
+                    case 5 : formData.put("textField_m7vidqxx","五级");break;
+                    default : break;
+                }
+            }
+
+            //客户属性
+            if (Objects.nonNull(client.getClientProperty())){
+                switch (client.getClientProperty()){
+                    case 1 : formData.put("selectField_m843zjg1","客户");break;
+                    case 2 : formData.put("selectField_m843zjg1","供应商");break;
+                    default : break;
+                }
+            }
+
+            //正常/停用
+            if (Objects.nonNull(client.getClientStatus())){
+                switch (client.getClientStatus()){
+                    case 1 : formData.put("selectField_m843zjg2","正常");break;
+                    case 2 : formData.put("selectField_m843zjg2","停用");break;
+                    default : break;
+                }
+            }
+
+            formData.put("textareaField_m843zjga",client.getClientDescription());//备注
+
+            //查询联系人
+            LambdaQueryWrapper<ClientMoreLinkData> clientMoreLinkDataLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            clientMoreLinkDataLambdaQueryWrapper.eq(ClientMoreLinkData::getClientMoreLinkDataClientID,client.getClientID())
+                    .isNotNull(ClientMoreLinkData::getClientMoreLinkDataLinkMan)
+                    .ne(ClientMoreLinkData::getClientMoreLinkDataLinkMan,"");
+            List<ClientMoreLinkData> clientMoreLinkDataList = clientMoreLinkDataMapper.selectList(clientMoreLinkDataLambdaQueryWrapper);
+
+            List<Map> detailList = new ArrayList<>();
+
+            if (!clientMoreLinkDataList.isEmpty()){
+                for (ClientMoreLinkData clientMoreLinkData : clientMoreLinkDataList) {
+                    Map detail = new HashMap();
+                    detail.put("textField_m843zjfm",clientMoreLinkData.getClientMoreLinkDataLinkMan());//联系人
+                    detail.put("textField_m843zjfn",clientMoreLinkData.getClientMoreLinkDataMob());//手机
+
+                    detailList.add(detail);
+                }
+                formData.put("tableField_m843zjfl",detailList);//联系人明细
+            }
+
+
+            //精准匹配
+            List<Map> searchCondition = new ArrayList<>();
+            searchCondition.add(UtilMap.map("key, value, type, operator, componentName","textField_m7vidqxr",client.getClientCode(),"TEXT","eq","TextField"));
+            ydClient.operateData(YDParam.builder()
+                    .formUuid("FORM-55BFAC57E0774F4FBC77295ACA75E09AZTL8")
+                    .searchFieldJson(JSONObject.toJSONString(searchCondition))
+                    .formDataJson(JSONObject.toJSONString(formData))
+                    .build(), YDConf.FORM_OPERATION.upsert);
+
+        }
+        return McR.success();
+    }
+}

+ 197 - 0
mjava-diwei/src/main/java/com/malk/diwei/service/impl/GoodsServiceImpl.java

@@ -0,0 +1,197 @@
+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.mapper.*;
+import com.malk.diwei.service.GoodsService;
+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.*;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author WZY
+ * @since 2025-03-12
+ */
+@Service
+public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements GoodsService {
+    @Autowired
+    private GoodsMapper goodsMapper;
+
+    @Autowired
+    private GoodsCategoryMapper goodsCategoryMapper;
+
+    @Autowired
+    private BrandMapper brandMapper;
+
+    @Autowired
+    private GoodsUnitMapper goodsUnitMapper;
+
+    @Autowired
+    private UnitMapper unitMapper;
+
+    @Autowired
+    private GoodsColorMapper goodsColorMapper;
+
+    @Autowired
+    private ColorMapper colorMapper;
+
+    @Autowired
+    private GoodsSizeMapper goodsSizeMapper;
+
+    @Autowired
+    private SizeMapper sizeMapper;
+
+    @Autowired
+    private YDClient ydClient;
+
+    public McR syncGoods() {
+        //查询昨天修改的物料
+        LambdaQueryWrapper<Goods> goodsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+//        goodsLambdaQueryWrapper.ge(Goods::getGoodsUpdateDatetime,DateUtil.yesterday());
+        List<Goods> goods = goodsMapper.selectList(goodsLambdaQueryWrapper);
+
+        for (Goods good : goods) {
+            Map formData = new HashMap();
+            formData.put("numberField_m85b219y",good.getGoodsID());//物料id
+            formData.put("textField_m82g94gl",good.getGoodsCode());//货号
+            formData.put("textField_m82g94gm",good.getGoodsName());//货品名称
+            formData.put("textField_m82g94gn",good.getGoodsIngredients());//成分
+            formData.put("textField_m82g94gt",good.getGoodsShortCode());//助记码
+            formData.put("textField_m82g94gu",good.getGoodsAliasName());//货品别名
+            formData.put("textField_m82g94gv",good.getGoodsSpecs());//货品规格
+            formData.put("textField_m82g94h2",good.getGoodsShortName());//货品简称
+
+            //货品类别
+            LambdaQueryWrapper<GoodsCategory> goodsCategoryLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            goodsCategoryLambdaQueryWrapper.eq(GoodsCategory::getGoodsCategoryID,good.getGoodsCategoryID());
+            GoodsCategory goodsCategory = goodsCategoryMapper.selectOne(goodsCategoryLambdaQueryWrapper);
+            if (Objects.nonNull(goodsCategory)){
+                formData.put("textField_m82g94h3",goodsCategory.getGoodsCategoryName());
+            }
+
+            //货品属性
+            if (Objects.nonNull(good.getGoodsProperty())){
+                switch (good.getGoodsProperty()){
+                    case 0 : formData.put("textField_m82g94h4","不限");break;
+                    case 1 : formData.put("textField_m82g94h4","成品");break;
+                    case 2 : formData.put("textField_m82g94h4","半成品");break;
+                    case 3 : formData.put("textField_m82g94h4","原料");break;
+                    case 4 : formData.put("textField_m82g94h4","辅料");break;
+                    case 5 : formData.put("textField_m82g94h4","办公用品");break;
+                    case 6 : formData.put("textField_m82g94h4","低值易耗品");break;
+                    case 7 : formData.put("textField_m82g94h4","劳务/服务");break;
+                    default : break;
+                }
+            }
+
+            //品牌名称
+            LambdaQueryWrapper<Brand> brandLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            brandLambdaQueryWrapper.eq(Brand::getBrandId,good.getBrandId());
+            Brand brand = brandMapper.selectOne(brandLambdaQueryWrapper);
+            if (Objects.nonNull(brand)){
+                formData.put("textField_m82g94h9",brand.getBrandName());
+            }
+
+            formData.put("textField_m82g94ho",good.getGoodsNeedleType());//针型
+            formData.put("textField_m82g94hp",good.getGoodsMachineType());//机型
+            formData.put("numberField_m85b21a3",good.getGoodsGWeight());//克重
+
+            //启用/停用
+            if (Objects.nonNull(good.getGoodsDisable())){
+                switch (good.getGoodsDisable()){
+                    case 0 : formData.put("selectField_m82g94hh","启用");break;
+                    case 1 : formData.put("selectField_m82g94hh","停用");break;
+                    default : break;
+                }
+            }
+
+            //库存预警
+            if (Objects.nonNull(good.getGoodsCheckStatus())){
+                switch (good.getGoodsCheckStatus()){
+                    case 0 : formData.put("selectField_m82g94hv","关闭");break;
+                    case 1 : formData.put("selectField_m82g94hv","开启");break;
+                    default : break;
+                }
+            }
+
+            formData.put("textareaField_m85b21a2",good.getGoodsDescription());//备注
+
+            //单位名称
+            LambdaQueryWrapper<GoodsUnit> goodsUnitLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            goodsUnitLambdaQueryWrapper.eq(GoodsUnit::getGoodsID,good.getGoodsID());
+            GoodsUnit goodsUnit = goodsUnitMapper.selectOne(goodsUnitLambdaQueryWrapper);
+            if (Objects.nonNull(goodsUnit)){
+                LambdaQueryWrapper<Unit> unitLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                unitLambdaQueryWrapper.eq(Unit::getUnitID,goodsUnit.getUnitID());
+                Unit unit = unitMapper.selectOne(unitLambdaQueryWrapper);
+                if (Objects.nonNull(unit)){
+                    formData.put("textField_m85b218v",unit.getUnitName());
+                }
+            }
+
+            //颜色
+            LambdaQueryWrapper<GoodsColor> goodsColorLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            goodsColorLambdaQueryWrapper.eq(GoodsColor::getGoodsID,good.getGoodsID());
+            List<GoodsColor> goodsColorList = goodsColorMapper.selectList(goodsColorLambdaQueryWrapper);
+            if(Objects.nonNull(goodsColorList) && !goodsColorList.isEmpty()){
+                List<Map> colorList = new ArrayList<>();
+                for (GoodsColor goodsColor : goodsColorList) {
+                    Map colorMap = new HashMap();
+
+                    LambdaQueryWrapper<Color> colorLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                    colorLambdaQueryWrapper.eq(Color::getColorID,goodsColor.getColorID());
+                    Color color = colorMapper.selectOne(colorLambdaQueryWrapper);
+                    if (Objects.nonNull(color)){
+                        colorMap.put("textField_m85b219g",color.getColorName());
+                    }
+                    colorList.add(colorMap);
+                }
+                formData.put("tableField_m85b219h",colorList);
+            }
+
+            //尺码
+            LambdaQueryWrapper<GoodsSize> goodsSizeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            goodsSizeLambdaQueryWrapper.eq(GoodsSize::getGoodsID,good.getGoodsID());
+            List<GoodsSize> goodsSizeList = goodsSizeMapper.selectList(goodsSizeLambdaQueryWrapper);
+            if(Objects.nonNull(goodsSizeList) && !goodsSizeList.isEmpty()){
+                List<Map> sizeList = new ArrayList<>();
+                for (GoodsSize goodsSize : goodsSizeList) {
+                    Map sizeMap = new HashMap();
+                    LambdaQueryWrapper<Size> sizeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                    sizeLambdaQueryWrapper.eq(Size::getSizeID,goodsSize.getSizeID());
+                    Size size = sizeMapper.selectOne(sizeLambdaQueryWrapper);
+                    if (Objects.nonNull(size)){
+                        sizeMap.put("textField_m85b219m",size.getSizeName());
+                    }
+                    sizeMap.put("textField_m85b219o",goodsSize.getGoodsSizeDes());//备注
+                    sizeList.add(sizeMap);
+                }
+                formData.put("tableField_m85b219n",sizeList);
+            }
+
+            //精准匹配
+            List<Map> searchCondition = new ArrayList<>();
+            searchCondition.add(UtilMap.map("key, value, type, operator, componentName","textField_m82g94gl",good.getGoodsCode(),"TEXT","eq","TextField"));
+            ydClient.operateData(YDParam.builder()
+                    .formUuid("FORM-06568CCD028F45278F6D571FDD5B91A5X2FX")
+                    .searchCondition(JSONObject.toJSONString(searchCondition))
+                    .formDataJson(JSONObject.toJSONString(formData))
+                    .build(), YDConf.FORM_OPERATION.upsert);
+        }
+
+        return McR.success();
+    }
+}

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

@@ -0,0 +1,78 @@
+package com.malk.diwei.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.malk.diwei.entity.ProcStep;
+import com.malk.diwei.mapper.ProcStepMapper;
+import com.malk.diwei.service.ProcStepService;
+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-07
+ */
+@Service
+public class ProcStepServiceImpl extends ServiceImpl<ProcStepMapper, ProcStep> implements ProcStepService {
+    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, "工艺委外工序");
+    }
+
+    @Autowired
+    private ProcStepMapper procStepMapper;
+
+    @Autowired
+    private YDClient ydClient;
+
+    @Override
+    public McR syncProcStep() {
+        LambdaQueryWrapper<ProcStep>  procStepLambdaQueryWrapper = new LambdaQueryWrapper();
+        procStepLambdaQueryWrapper.eq(ProcStep::getProcStepType, 1);
+
+        List<ProcStep> list = procStepMapper.selectList(procStepLambdaQueryWrapper);
+
+        for (ProcStep procStep : list) {
+            Map formData = new HashMap();
+            formData.put("textField_m7y4xld9", procStep.getProcStepID());//工序id
+            formData.put("textField_m7y4xlce", procStep.getProcStepCode());//工序编码
+            formData.put("textField_m7y4xlcj",procStep.getProcStepName());//工序名称
+            formData.put("textareaField_m7y4xlcx",procStep.getProcStepDescription());//备注
+            formData.put("numberField_m7y4xlcv",procStep.getProcStepPrice());//工序价格
+            formData.put("numberField_m7y4xlcw",procStep.getProcStepHours());//工序工时
+            formData.put("textField_m7y4xlck",PROC_STEP_TYPE.get(procStep.getProcStepType()));//工序类型
+            formData.put("radioField_m7y4xlcu",procStep.getProcStepIsReferStock() == 1 ? "是" : "否");//是否参照库存
+            formData.put("radioField_m7y4xlcp",procStep.getProcStepIsReferOutSizeN() == 1 ? "是" : "否");//是否参照外尺寸
+
+
+            //精准匹配
+            List<Map> searchCondition = new ArrayList<>();
+            searchCondition.add(UtilMap.map("key, value, type, operator, componentName","textField_m7y4xld9",procStep.getProcStepID(),"TEXT","eq","TextField"));
+            ydClient.operateData(YDParam.builder()
+                    .formUuid("FORM-E3E8CA72C68C43BBAF53A22B199AC9302SQK")
+                    .searchCondition(JSONObject.toJSONString(searchCondition))
+                    .formDataJson(JSONObject.toJSONString(formData))
+                    .build(), YDConf.FORM_OPERATION.upsert);
+        }
+
+        return McR.success();
+    }
+}

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

@@ -0,0 +1,44 @@
+package com.malk.diwei.utils;
+
+import com.baomidou.mybatisplus.generator.FastAutoGenerator;
+import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
+import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
+
+import java.sql.Types;
+
+public class MPGenerator {
+    public static void main(String[] args) {
+        //可以直接去官方文档上查看
+        FastAutoGenerator
+                .create("jdbc:sqlserver://47.98.200.166:1433;databaseName=GT_DB_Epi5",
+                        "dw", "Goodtek2008")
+                .globalConfig(builder -> {
+                    builder.author("WZY")
+                            .disableOpenDir()
+                            .outputDir(System.getProperty("user.dir")+
+                                    "/mjava-diwei/src/main/java");
+                })
+                .dataSourceConfig(builder ->
+                        builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
+                            int typeCode = metaInfo.getJdbcType().TYPE_CODE;
+                            if (typeCode == Types.SMALLINT) {
+                                return DbColumnType.INTEGER;
+                            }
+                            return typeRegistry.getColumnType(metaInfo);
+                        }))
+                .packageConfig(builder -> {
+                    builder.parent("com.malk.diwei")
+                            .controller("controller")
+                            .service("service")
+                            .serviceImpl("service.impl")
+                            .mapper("mapper")
+                            .entity("entity");
+                })
+                .strategyConfig(builder -> {
+                    builder.addInclude("Size")
+                            .entityBuilder().enableLombok();
+                })
+                .templateEngine(new VelocityTemplateEngine())
+                .execute();
+    }
+}

+ 44 - 0
mjava-diwei/src/main/resources/application-dev.yml

@@ -0,0 +1,44 @@
+server:
+  port: 9031
+  servlet:
+    context-path: /diwei
+
+enable:
+  scheduling: false
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/server/diwei/log/
+  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:
+  appKey: dinglrt7qaqjmlnwaaul
+  appSecret: FBWNzNC8i9srucJmqo5iOo61icmbzA_dDquuIzVXYa2hSlP8aGIrhYPeQXemqy3Z
+  corpId:
+  aesKey:
+  token:
+  operator:
+
+aliwork:
+  appType: APP_D7TTZKL8C03JKEWCNW74
+  systemToken: TCC66771RQETFGT5DYPUGAXP4GRC29A6HCV7MV19
+

+ 27 - 0
mjava-diwei/src/main/resources/application-prod.yml

@@ -0,0 +1,27 @@
+server:
+  port: 9031
+  servlet:
+    context-path: /diwei
+
+enable:
+  scheduling: false
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/server/diwei/log/
+  level:
+    com.malk.*: debug
+
+# dingtalk
+dingtalk:
+  agentId: 3366214854
+  appKey: dingntvkzjzxdx8h2m1s
+  appSecret: YfaV5mYOL4F--P8P_G9aD8DP_a8_IgM6dBILsSaTb4LeUZYSntacol55O1tJuqcU
+  corpId: ding923faa53d9d45937acaaa37764f94726
+  aesKey:
+  token:
+  operator: 344749020127590108
+
+aliwork:
+  appType: APP_XPPVVMG6HA0GNDPJV4C1
+  systemToken: 8R7668D1P92RSNTS7OKZG5UR9P333QA7GAJ4MTG
+

+ 15 - 0
mjava-diwei/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-diwei/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>

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

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

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

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

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

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

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

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

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

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

+ 41 - 4
mjava-huagao/src/main/java/com/malk/huagao/controller/HuaGaoController.java

@@ -1,14 +1,19 @@
 package com.malk.huagao.controller;
 
 import com.malk.huagao.service.HuaGaoService;
+import com.malk.server.common.McException;
 import com.malk.server.common.McR;
+import com.malk.utils.UtilServlet;
+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.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+@Slf4j
 @RestController
-@RequestMapping("")
+@RequestMapping("/hg")
 public class HuaGaoController {
     @Autowired
     private HuaGaoService huaGaoService;
@@ -17,4 +22,36 @@ public class HuaGaoController {
     public McR test() {
         return McR.success();
     }
+
+    /**
+     * 创建投资人用户
+     */
+    @PostMapping("/user/sync")
+    McR syncUser() {
+
+        log.info("syncUser");
+        huaGaoService.syncDingTalk_exclusive();
+        return McR.success();
+    }
+
+    /**
+     * 重置密码流程
+     */
+    @PostMapping("/reset")
+    McR resetPwd(HttpServletRequest request) {
+
+        Map data = UtilServlet.getParamMap(request);
+        log.info("reset, {}", data);
+        McException.assertParamException_Null(data, "userId", "password");
+        huaGaoService.resetPwd(data);
+        return McR.success();
+    }
+    /**
+     * 获取工作时长详情
+     */
+    @PostMapping("details")
+    McR details(@RequestBody Map<String,Object> data) {
+        huaGaoService.getCheckWorkDateDetails(data);
+        return McR.success();
+    }
 }

+ 13 - 0
mjava-huagao/src/main/java/com/malk/huagao/service/HuaGaoService.java

@@ -1,4 +1,17 @@
 package com.malk.huagao.service;
 
+import java.util.Map;
+
 public interface HuaGaoService {
+    /**
+     * 同步钉钉企业账号
+     */
+    void syncDingTalk_exclusive();
+
+    /**
+     * 重置企业账号密码
+     */
+    void resetPwd(Map data);
+
+    void getCheckWorkDateDetails(Map data);
 }

+ 217 - 0
mjava-huagao/src/main/java/com/malk/huagao/service/impl/HuaGaoServiceImpl.java

@@ -1,8 +1,225 @@
 package com.malk.huagao.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.malk.huagao.service.HuaGaoService;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.common.McException;
+import com.malk.server.dingtalk.DDR;
+import com.malk.service.aliwork.YDClient;
+import com.malk.service.aliwork.YDService;
+import com.malk.service.dingtalk.DDClient;
+import com.malk.service.dingtalk.DDClient_Attendance;
+import com.malk.service.dingtalk.DDClient_Contacts;
+import com.malk.service.fxiaoke.FXKClient;
+import com.malk.utils.UtilMap;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Slf4j
 @Service
 public class HuaGaoServiceImpl implements HuaGaoService {
+
+    @Autowired
+    private YDService ydService;
+
+    @Autowired
+    private YDClient ydClient;
+
+    @Value("${dingtalk.appKey}")
+    private String appKey;
+
+    @Value("${dingtalk.appSecret}")
+    private String appSecret;
+
+    @Autowired
+    private DDClient_Contacts ddClient_contacts;
+
+    @Autowired
+    private DDClient_Attendance ddClientAttendance;
+
+    @Autowired
+    private DDClient ddClient;
+    @Autowired
+    private FXKClient fxkClient;
+
+    @Autowired
+    private static final long DEPT_ID = 971482089L; // 合作加盟校区
+
+    /// 创建企业账号: loginI/userId 都为 SHR 工号
+private Map crcreateUser_dingTalk(String name, String randomAccount, String randomPassword) {
+
+    Map param = new HashMap();
+    param.put("access_token", ddClient.getAccessToken());
+    Map body = new HashMap();
+    body.put("exclusive_account", "true");
+    body.put("exclusive_account_type", "dingtalk");
+    body.put("login_id", randomAccount);
+    body.put("init_password", randomPassword);
+    body.put("name", name);
+    body.put("userid", randomAccount);
+    body.put("dept_id_list", DEPT_ID);
+    Object result = DDR.doPost("https://oapi.dingtalk.com/topapi/v2/user/create", (Map) null, param, body).getResult();
+    return (Map) result;
+}
+
+    /**
+     * 同步钉钉企业账号
+     */
+    @Override
+    public void syncDingTalk_exclusive() {
+
+        List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
+                .formUuid("FORM-0086C4597047459BBB37C79E404745C9CK0C")
+                .build());
+        log.info("钉钉企业账号同步开始,共{}条数据", dataList.size());
+        dataList.forEach(data -> {
+            if ("".equals(UtilMap.getString(data, "textField_m1mw64v4"))) {
+                String message = "";
+                String randomAccount = generateRandomAccount();
+                String randomPassword = generateRandomSixDigitPassword();
+                try {
+                    Map textField_m21lkesk = this.crcreateUser_dingTalk(UtilMap.getString(data, "textField_m21lkesk"), randomAccount, randomPassword);
+                    System.out.println("");
+                } catch (McException e) {
+                    message = e.getMessage();
+                    log.error(e.getMessage(), e);
+                }
+                ydClient.operateData(YDParam.builder()
+                        .formInstanceId(UtilMap.getString(data, "instanceId"))
+                        .useLatestVersion(true)
+                        .updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_m1mw64v4, textField_m1mw64v5", randomAccount, randomPassword)))
+                        .build(), YDConf.FORM_OPERATION.update);
+
+            }
+
+        });
+
+    }
+
+    /**
+     * 重置企业账号密码
+     */
+    @Override
+    public void resetPwd(Map data) {
+        ddClient_contacts.updateUser_dingTalk(ddClient.getAccessToken(), UtilMap.getString(data, "userId"), Arrays.asList(DEPT_ID), UtilMap.map("init_password", UtilMap.getString(data, "password")));
+    }
+    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    @Override
+    public void getCheckWorkDateDetails(Map data) {
+        List<String> users = new ArrayList<>();
+        users.add("284156461536271475");
+        String[] strings = users.toArray(new String[0]);
+        log.info("users:{}", JSON.toJSONString(strings));
+        List<Map> mapList = ddClientAttendance.getAttColumnVal(ddClient.getAccessToken(appKey, appSecret),"284156461536271475", Arrays.asList("82772106,89349019"),"2025-01-20 08:00:00", "2025-01-21 08:00:00");
+        System.out.println("====="+mapList);
+//        mapList.get(0)
+       String FORMtime = "2025-01-01 00:00:00";
+        String TOtime = "2025-01-31 00:00:00";
+
+//        dateFormat.format(FORMtime);
+//        dateFormat.format(TOtime);
+        //工作时长(实际工时)
+        // Step 1. 提取原始数据到日期-字段ID-值的映射
+        Map<String, Map<Long, Double>> dateData = new HashMap<>();
+
+        for (Map<String, Object> element : mapList) {
+            // 获取字段ID
+            Map<String, Object> columnVo = (Map<String, Object>) element.get("column_vo");
+            Long id = ((Number) columnVo.get("id")).longValue();
+
+            // 遍历该字段的所有日期数据
+            List<Map<String, String>> columnVals = (List<Map<String, String>>) element.get("column_vals");
+            for (Map<String, String> entry : columnVals) {
+                String fullDate = entry.get("date");
+//                System.out.println("fullDate:====="+fullDate);
+                String date = fullDate.split(" ")[0]; // 提取日期部分
+                Double value = Double.parseDouble(entry.get("value"));
+
+                // 存储到日期映射中
+                dateData.computeIfAbsent(date, k -> new HashMap<>())
+                        .put(id, value);
+            }
+        }
+
+        // Step 2. 按日期处理业务逻辑
+        Map<String, Double> finalResult = new LinkedHashMap<>(); // 保持日期顺序
+
+        for (Map.Entry<String, Map<Long, Double>> entry : dateData.entrySet()) {
+            String date = entry.getKey();
+            Map<Long, Double> idValues = entry.getValue();
+
+            // 获取目标字段的值
+            Double targetValue = idValues.get(89349019L); // ID=89349019
+            Double refValue = idValues.get(82772106L);    // ID=82772106
+
+            // 逻辑判断
+            if (targetValue == null || refValue == null) {
+                System.err.println("日期 " + date + " 缺少必要字段数据,跳过计算");
+                continue;
+            }
+
+            double result;
+            if (targetValue >= 8) {
+                result = targetValue; // 直接返回
+            } else {
+                result = targetValue + (refValue / 60); // 组合计算
+            }
+
+            finalResult.put(date, result);
+        }
+
+        // Step 3. 打印最终结果
+        System.out.println("===== 计算结果 =====");
+        finalResult.forEach((date, value) -> {
+            System.out.printf("日期: %s \t 结果值: %.1f%n", date, value);
+        });
+
+
+    }
+
+    /**
+     * 生成一个由大写字母和数字组成的八位随机账号。
+     *
+     * @return 生成的随机账号字符串
+     */
+    public static String generateRandomAccount() {
+        // 可选字符集合:大写字母A-Z和数字0-9
+        final String CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+        final int LENGTH = 8; // 账号长度
+
+        Random random = new Random();
+        StringBuilder sb = new StringBuilder(LENGTH);
+
+        for (int i = 0; i < LENGTH; i++) {
+            // 随机选择一个字符
+            int index = random.nextInt(CHARS.length());
+            char randomChar = CHARS.charAt(index);
+            sb.append(randomChar);
+        }
+
+        return sb.toString();
+    }
+
+    /**
+     * 生成一个六位数的随机密码。
+     *
+     * @return 生成的随机密码字符串
+     */
+    public static String generateRandomSixDigitPassword() {
+        Random random = new Random();
+        int min = 100000; // 六位数最小值
+        int max = 999999; // 六位数最大值
+
+        // 生成一个介于[min, max]之间的随机数
+        int randomNumber = random.nextInt(max - min + 1) + min;
+
+        // 将生成的随机数转换为字符串
+        return String.valueOf(randomNumber);
+    }
 }

+ 2 - 2
mjava-huagao/src/main/resources/application-dev.yml

@@ -22,7 +22,7 @@ dingtalk:
 
 # aliwork
 aliwork:
-  appType:
-  systemToken:
+  appType: APP_FWH90IADKEXJ1O540RCM
+  systemToken: IDD66DC1H2ITY3HU789SK9IFJXKD2RL8BF28MBF1
 
 

+ 10 - 0
mjava-jianhui/pom.xml

@@ -40,6 +40,16 @@
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </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>
 

+ 11 - 2
mjava-jianhui/src/main/java/com/malk/jianhui/controller/JianhuiController.java

@@ -18,8 +18,10 @@ public class JianhuiController {
     @Autowired
     private JianhuiService jianhuiService;
 
-    @Autowired
-    private KDWebApiConf kdWebApiConf;
+    @GetMapping("/test")
+    public McR test(){
+        return McR.success();
+    }
 
     //新增销售订单
     @PostMapping("/saveSaleOrder")
@@ -82,6 +84,13 @@ public class JianhuiController {
         return jianhuiService.auditPurchaseOrder(map);
     }
 
+    //金蝶同步检验单
+    @Scheduled(cron = "0 0/30 * * * ?")
+    @GetMapping("/syncInspectionOrder")
+    public McR syncInspectionOrder() {
+        return jianhuiService.syncInspectionOrder();
+    }
+
     //每天0点同步所有数据
     @Scheduled(cron = "0 0 0 * * ?")
     @GetMapping("/syncData")

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

@@ -2,6 +2,8 @@ package com.malk.jianhui.entity;
 
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class DefectEntity {
     //物料id
@@ -10,10 +12,14 @@ public class DefectEntity {
     private FNumber FSupplierId;
     //单位
     private FNumber FUnitID;
+    //检验不良数量
+    private double FInspectDefectQty;
     //不良处理
     private String FDefProcess;
     //不良数量
     private double FDefectiveQty;
     //使用决策备注
     private String FMemo;
+    //关联明细
+    private List<Object> FEntity_Link;
 }

+ 16 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/entity/LinkEntry.java

@@ -0,0 +1,16 @@
+package com.malk.jianhui.entity;
+
+import lombok.Data;
+
+@Data
+public class LinkEntry {
+    private FNumber FMaterialId;
+    private FNumber FUnitID;
+    private double FQty;
+    private FNumber FPriceUnitId;
+    private double FTaxPrice;
+    private boolean FIsFree;
+    private double FEntryTaxRate;
+    private String FDeliveryDate;
+    private String FEntryNote;
+}

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

@@ -26,4 +26,6 @@ public interface JianhuiService {
     McR syncData();
 
     McR syncSalePrice();
+
+    McR syncInspectionOrder();
 }

+ 172 - 4
mjava-jianhui/src/main/java/com/malk/jianhui/service/impl/JianhuiServiceImpl.java

@@ -86,6 +86,30 @@ public class JianhuiServiceImpl implements JianhuiService {
         FERPCLSID.put("1","外购");
     }
 
+    private static final Map<String,String> BUSINESS_TYPE = new HashMap<>();
+    static {
+        BUSINESS_TYPE.put("8","发货检验");
+        BUSINESS_TYPE.put("25","生产退料检验");
+        BUSINESS_TYPE.put("26","委外退料检验");
+        BUSINESS_TYPE.put("3","产品检验");
+        BUSINESS_TYPE.put("20","其他检验");
+        BUSINESS_TYPE.put("6","委外工序");
+        BUSINESS_TYPE.put("10","受托材料检验");
+        BUSINESS_TYPE.put("2","委外检验");
+        BUSINESS_TYPE.put("21","工序巡检");
+        BUSINESS_TYPE.put("7","退货检验");
+        BUSINESS_TYPE.put("9","生产线检验");
+        BUSINESS_TYPE.put("1","采购检验");
+        BUSINESS_TYPE.put("4","库存检验");
+        BUSINESS_TYPE.put("5","工序自制");
+    }
+
+    private static final Map<String,String> INSPECT_RESULT = new HashMap<>();
+    static {
+        INSPECT_RESULT.put("1","合格");
+        INSPECT_RESULT.put("2","不合格");
+        INSPECT_RESULT.put("3","保留");
+    }
 
     private IdentifyInfo initIden(){
         //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
@@ -306,6 +330,7 @@ public class JianhuiServiceImpl implements JianhuiService {
             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"));
             billQuery.setFilterString(filterString);
             billQuery.setLimit(limit);
             do {
@@ -359,6 +384,7 @@ public class JianhuiServiceImpl implements JianhuiService {
             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"));
             billQuery.setFilterString(filterString);
 
             List<Map> result = new ArrayList<>();
@@ -430,6 +456,7 @@ public class JianhuiServiceImpl implements JianhuiService {
             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"));
             billQuery.setFilterString(filterString);
             billQuery.setLimit(limit);
             do {
@@ -445,6 +472,7 @@ public class JianhuiServiceImpl implements JianhuiService {
                 Map formData = new HashMap();
                 formData.put("textField_m6ak640p",material.get("FUseOrgId"));//使用组织
                 formData.put("textField_m6ak640v",material.get("FNumber"));//编码
+                formData.put("selectField_m83u6et1",getString(material.get("FNumber")).substring(0,1).equals("C") ? "成品" : "配件");
                 formData.put("textField_m6ak640w",material.get("FName"));//名称
                 formData.put("textField_m6ak640x",material.get("FSpecification"));//规格型号
                 formData.put("textField_m6ak6413",FDOCUMENTSTATUS.get(material.get("FDocumentStatus").toString()));//单据状态
@@ -636,6 +664,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.setFInspectDefectQty((int) detail.get("numberField_m82qkv1u"));//检验不良数量
 
             //不良处理 A:接收 B:让步接收 F:判退
             String FDefProcess = getString(detail.get("selectField_m64pw0gt"));
@@ -647,14 +676,36 @@ public class JianhuiServiceImpl implements JianhuiService {
             }
             defectEntity.setFDefectiveQty((int) detail.get("numberField_m64pw0gu"));//不良数量
 
+
+            //关联检验单
+            List<Object> linkEntity = new ArrayList<>();
+            Map link = new HashMap();
+            HashMap<String, Object> detailLink = new HashMap<>();
+
+//            link.put("FEntity_Link_FFlowId", "");//业务流程图
+//            link.put("FEntity_Link_FFlowLineId", "");//推进路线
+            link.put("FEntity_Link_FRuleId","QM_Inspect2DefProecess");//转换规则
+//            link.put("FEntity_Link_FSTableId", "");//源单表内码
+            link.put("FEntity_Link_FSTableName","T_QM_INSPECTBILLENTRY");//源单表
+            link.put("FEntity_Link_FSBillId",formData.get("numberField_m86nq0a5"));//源单内码
+            link.put("FEntity_Link_FSId", detail.get("numberField_m873a1q2"));//源单分录内码
+
+            linkEntity.add(link);
+
+            defectEntity.setFEntity_Link(linkEntity);
+
+
             FEntity.add(defectEntity);
         }
 
         model.setFEntity(FEntity);
 
-        save.setModel(model);
 
 
+
+
+        save.setModel(model);
+
         try{
             K3CloudApi client = new K3CloudApi(initIden());
             //业务对象标识
@@ -693,10 +744,10 @@ public class JianhuiServiceImpl implements JianhuiService {
                 }
             }
         } catch (Exception e) {
-            fail(e.getMessage());
+            McR.errorUnknown(e.getMessage());
         }
 
-        return null;
+        return McR.success();
     }
 
     @Override
@@ -715,6 +766,7 @@ public class JianhuiServiceImpl implements JianhuiService {
             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"));
             billQuery.setFilterString(filterString);
 
             List<Map> result = new ArrayList<>();
@@ -774,7 +826,7 @@ public class JianhuiServiceImpl implements JianhuiService {
             billQuery.setFormId(formId);
             billQuery.setFieldKeys("FBillNo");
             billQuery.setStartRow(0);
-            billQuery.setLimit(50);
+            billQuery.setLimit(100);
 
             List<Map> filterString = new ArrayList<>();
             filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FDocumentStatus","105","B","","","0"));
@@ -964,6 +1016,7 @@ public class JianhuiServiceImpl implements JianhuiService {
             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"));
             billQuery.setFilterString(filterString);
 
             List<Map> result = new ArrayList<>();
@@ -1037,6 +1090,121 @@ public class JianhuiServiceImpl implements JianhuiService {
         return McR.success();
     }
 
+    @Override
+    public McR syncInspectionOrder() {
+        try {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
+
+            //业务对象标识
+            String formId = "QM_InspectBill";
+
+            K3CloudApi client = new K3CloudApi(initIden());
+            Gson gson = new Gson();
+
+            //查询当天已审核且审核结果为不合格的数据
+            BillQuery billQuery = new BillQuery();
+            billQuery.setFormId(formId);
+            billQuery.setFieldKeys("FBillNo");
+            billQuery.setStartRow(0);
+            billQuery.setLimit(2000);
+
+            List<Map> filterString = new ArrayList<>();
+            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FInspectResult","29","2","","","0"));
+            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FDocumentStatus","105","C","","","0"));
+            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FApproveDate","13","","","","0"));//审核日期为今天
+//            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FApproveDate","39","2025-03-10 00:00:00","","","0"));//审核日期大于2025-03-10 00:00:00
+            billQuery.setFilterString(filterString);
+
+            String resultJson = client.billQuery(JSONObject.toJSONString(billQuery));
+
+            List<Map> list = (List<Map>) JSONObject.parse(resultJson);
+
+            Set<String> fBillNoSet = new HashSet<>();
+
+            for (Map map : list) {
+                String fBillNo = getString(map.get("FBillNo"));
+
+                if (!fBillNoSet.contains(fBillNo)){
+                    fBillNoSet.add(fBillNo);
+                }else {
+                    continue;
+                }
+
+                //查询宜搭中是否已添加该检验单
+                List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
+                        .formUuid("FORM-959B1CB0AF9F41A091DFDE1203D0C7B2FQBO")
+                        .searchFieldJson(JSONObject.toJSONString(UtilMap.map("textField_m82j5zsd", fBillNo)))
+                        .build(), YDConf.FORM_QUERY.retrieve_list).getData();
+
+                if (data.isEmpty()){
+                    View view = new View();
+                    view.setNumber(fBillNo);
+                    String resultJson2 = client.view(formId,JSONObject.toJSONString(view));
+                    RepoRet repoRet = gson.fromJson(resultJson2, RepoRet.class);
+                    if (isTrue(repoRet)){
+                        Map result = (Map) repoRet.getResult().getResult();
+                        Map formData = new HashMap();
+                        formData.put("textField_m82j5zsd",fBillNo);//单据编号
+                        formData.put("numberField_m86nmon3",result.get("Id"));//id
+                        formData.put("textField_m82j5zse",getMultiLanguageTextName(result.get("FBillTypeID")));//单据类型
+                        formData.put("textField_m82j5zsf",BUSINESS_TYPE.get(getString(result.get("BusinessType"))));//业务类型
+                        // 解析字符串为 LocalDateTime
+                        LocalDateTime localDateTime = LocalDateTime.parse(getString(result.get("FDate")), formatter);
+                        // 将 LocalDateTime 转换为 ZonedDateTime
+                        ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());
+                        formData.put("dateField_m82j5zsk",zonedDateTime.toInstant().toEpochMilli());//单据日期
+                        formData.put("textField_m82j5zsl",FDOCUMENTSTATUS.get(getString(result.get("DocumentStatus"))));//单据状态
+                        if (!((List<Map>)result.get("Description")).isEmpty()){
+                            formData.put("textareaField_m82j5zsm",((List<Map>)result.get("Description")).get(0).get("Value"));//描述
+                        }
+                        List<Map> entityList = (List<Map>) result.get("Entity");
+                        List<Map> detailList = new ArrayList<>();
+                        for (Map entity : entityList) {
+                            Map detail = new HashMap();
+                            detail.put("textField_m82j5zsp",getEntryNumber(entity.get("MaterialId")));//物料编码
+                            detail.put("textField_m82j5zsr",getMultiLanguageTextSpecification(entity.get("MaterialId")));//规格型号
+                            detail.put("textField_m82j5zsq",getMultiLanguageTextName(entity.get("MaterialId")));//物料名称
+                            detail.put("textField_m82og859",getMultiLanguageTextName(entity.get("UnitId")));//单位
+                            detail.put("textField_m82og85a",getEntryNumber(entity.get("UnitId")));//单位编码
+                            detail.put("textField_m82qhpm0",getMultiLanguageTextName(entity.get("SupplierId")));//供应商
+                            detail.put("textField_m82qhpm1",getEntryNumber(entity.get("SupplierId")));//供应商编码
+                            detail.put("numberField_m82j5zst",entity.get("InspectQty"));//检验数量
+                            detail.put("numberField_m82j5zsu",entity.get("QualifiedQty"));//合格数
+                            detail.put("numberField_m82j5zsv",entity.get("UnqualifiedQty"));//不合格数
+                            detail.put("textField_m82j5zsx",INSPECT_RESULT.get(getString(entity.get("InspectResult"))));//检验结果
+                            detail.put("numberField_m873a1q2",entity.get("Id"));//分录明细id
+                            if (!((List<Map>)entity.get("Memo")).isEmpty()){
+                                detail.put("textField_m82j5zsz",((List<Map>)entity.get("Memo")).get(0).get("Value"));//不良原因
+                            }
+                            detailList.add(detail);
+                        }
+                        formData.put("tableField_m82j5zso",detailList);
+
+
+                        //新增数据
+                        ydClient.operateData(YDParam.builder()
+                                .formUuid("FORM-959B1CB0AF9F41A091DFDE1203D0C7B2FQBO")
+                                .formDataJson(JSONObject.toJSONString(formData))
+                                .build(), YDConf.FORM_OPERATION.create);
+                    }
+
+                    /*else {
+                        //更新数据
+                        ydClient.operateData(YDParam.builder()
+                                .formInstId(getString(data.get(0).get("formInstanceId")))
+                                .updateFormDataJson(JSONObject.toJSONString(formData))
+                                .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update);
+                    }*/
+                }
+
+            }
+        }catch (Exception e){
+            return McR.errorUnknown(e.getMessage());
+        }
+
+        return McR.success();
+    }
+
     @Override
     public McR syncData() {
         syncCustomers();//同步客户

+ 1 - 1
mjava-jianhui/src/main/resources/application-prod.yml

@@ -10,7 +10,7 @@ logging:
   config: classpath:logback-spring.xml
   path: /home/server/jianhui/log/
   level:
-    com.malk.*: debug
+    com.malk.*: INFO
 
 # dingtalk
 dingtalk:

+ 66 - 0
mjava-jianhui/src/test/java/com/malk/jianhui/Test.java

@@ -0,0 +1,66 @@
+package com.malk.jianhui;
+
+import com.alibaba.fastjson.JSONObject;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.dingtalk.DDR_New;
+import com.malk.service.aliwork.YDClient;
+import com.malk.utils.UtilMap;
+import lombok.extern.slf4j.Slf4j;
+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;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class Test {
+
+    @Autowired
+    private YDClient ydClient;
+    @org.junit.Test
+    public void test(){
+        List<Map> ydFormDataList = getYdFormDataList("FORM-2A5CAB7EB91D493AAFC90D8C7479A7F5KPR7", "", YDConf.FORM_QUERY.retrieve_list);
+
+        for (Map data : ydFormDataList) {
+            String formInstId = data.get("formInstanceId").toString();
+            Map formData = (Map) data.get("formData");
+            String code = formData.get("textField_m6ak640v").toString();
+
+            String type = code.substring(0,1).equals("C") ? "成品" : "配件";
+
+            ydClient.operateData(YDParam.builder()
+                    .formInstId(formInstId)
+                    .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_m83u6et1",type)))
+                    .useLatestVersion(true)
+                    .build(),YDConf.FORM_OPERATION.update);
+
+        }
+
+
+    }
+
+    private List<Map> getYdFormDataList(String formUuid, String searchCondition, YDConf.FORM_QUERY formQuery) {
+        List<Map> list = new ArrayList<>();
+        DDR_New ddrNew = new DDR_New();
+        int pageNumber = 1;
+        int pageSize = 100;
+        do {
+            ddrNew = ydClient.queryData(YDParam.builder().formUuid(formUuid)
+                    .searchCondition(searchCondition)
+                    .pageNumber(pageNumber)
+                    .pageSize(pageSize).build(), formQuery);
+
+            list.addAll((List<Map>) ddrNew.getData());
+            pageNumber++;
+        }while (ddrNew.getTotalCount() > ddrNew.getPageNumber() * pageSize);
+        return list;
+    }
+
+}

+ 9 - 0
mjava-lingmingguangzi/src/main/java/com/malk/lingmingguangzi/controller/LingmingguangziController.java

@@ -44,6 +44,15 @@ public class LingmingguangziController {
         return lingmingguangziService.getCustomerQuestionnaireCount2(start, end);
     }
 
+    /**
+     * 客户新增后更新线索状态
+     * @param map
+     * @return
+     */
+    @PostMapping("/updateClueStatus")
+    public McR updateClue(@RequestBody Map map) {
+        return lingmingguangziService.updateClueStatus(map);
+    }
     /**
      * 获取tb转阶段申请交付件等详情
      * @param

+ 2 - 0
mjava-lingmingguangzi/src/main/java/com/malk/lingmingguangzi/service/LingmingguangziService.java

@@ -52,4 +52,6 @@ public interface LingmingguangziService {
     McR stopProcess(Map map);
 
     void downloadFile(String fileURL, String savePath , String fileName) throws IOException;
+
+    McR updateClueStatus(Map map);
 }

+ 51 - 1
mjava-lingmingguangzi/src/main/java/com/malk/lingmingguangzi/service/LingmingguangziServiceImpl.java

@@ -614,6 +614,7 @@ public class LingmingguangziServiceImpl implements LingmingguangziService {
         param.put("systemToken",ydConf.getSystemToken());
         param.put("userId","344749020127590108");//wzy
         param.put("fileUrl",fileURL);
+        param.put("timeout",3600000);
 
         Map mcBody = new HashMap();
         mcBody.put("params",param);
@@ -627,7 +628,7 @@ public class LingmingguangziServiceImpl implements LingmingguangziService {
 //        fileURL = UtilHttp.doPost("http://127.0.0.1:9900/api/mc/request/downloadFile",null,null,mcBody);
 
 //        fileURL = ((DDR_New) UtilHttp.doGet("https://api.dingtalk.com/v1.0/yida/apps/temporaryUrls/" + ydConf.getAppType(), ddClient.initTokenHeader(), param, DDR_New.class)).getResult().toString();
-
+        log.info("fileUrl:{}",fileURL);
         URL url = new URL(fileURL);
         HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
         int responseCode = httpConn.getResponseCode();
@@ -652,6 +653,55 @@ public class LingmingguangziServiceImpl implements LingmingguangziService {
         httpConn.disconnect();
     }
 
+    @Override
+    public McR updateClueStatus(Map map) {
+        String formInstId = getString(map.get("formInstId"));
+
+       if (!Strings.isNullOrEmpty(formInstId)) {
+           Map formData = ydClient.queryData(YDParam.builder()
+                   .formInstId(formInstId)
+                   .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
+
+           String customerName = getString(formData.get("textField_lwpqbm7b"));
+           String customerCode = getString(formData.get("serialNumberField_m4rv2j4i"));
+
+           List<Map> clueList = (List<Map>) formData.get("tableField_m86r3mmn");
+           if (Objects.nonNull(clueList) && !clueList.isEmpty()){
+               for (Map clue : clueList) {
+                   String clueCode = getString(clue.get("textField_m86r3mmo"));
+
+                   //客户资源池关联表单
+                   List<Map> formControlList = new ArrayList<>();
+                   Map formControl = new HashMap();
+                   formControl.put("formType","receipt");
+                   formControl.put("formUuid","FORM-6F1E2DCFB3F5448EBDD4994551EBF690DVIT");
+                   formControl.put("instanceId",formInstId);
+                   formControl.put("appType","APP_MOIYIC856NRIBCMXEXVD");
+                   formControl.put("title",customerName);
+                   formControlList.add(formControl);
+
+                   Map updateFormData = new HashMap();
+                   updateFormData.put("associationFormField_m50t9d7y",formControlList);
+                   updateFormData.put("selectField_m2lh8c49","已转换");
+                   updateFormData.put("textField_m50vl2jt",customerCode);
+
+                   //更新线索
+                   ydClient.operateData(YDParam.builder()
+                           .formUuid("FORM-45C086AFF2F94D9BB056A15B34CD2BCAFQET")
+                           .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_m2mwp0iy",clueCode)))
+                           .formDataJson(JSONObject.toJSONString(updateFormData))
+                           .build(), YDConf.FORM_OPERATION.upsert);
+               }
+           }
+
+
+
+       }else {
+           McR.errorParam("formInstId不能为空");
+       }
+       return McR.success();
+    }
+
 /*    @Override
     public McR updateSaleOrder(Map map) {
         if (Objects.isNull(map.get("formInstId"))){

+ 1 - 1
mjava-lingmingguangzi/src/main/resources/application-dev.yml

@@ -36,7 +36,7 @@ teambition:
   AppSecret: rFmIOAPtWjEKt7TkRZWFbBh0YxSY5GfC
   TenantId: 5f4c9efbb019fd31e3ef327c
   OperatorId: 64d9834ad191502259bde0d6   # jecky
-  TemplateId: 6687adda4817a3f6324a0b0e  # 转阶段项目模板id
+  TemplateId: 67d129f7680c0fef647481f2  # 转阶段项目模板id
 
 # aliwork
 aliwork:

+ 1 - 1
mjava-lingmingguangzi/src/main/resources/application-prod.yml

@@ -36,7 +36,7 @@ teambition:
   AppSecret: rFmIOAPtWjEKt7TkRZWFbBh0YxSY5GfC
   TenantId: 5f4c9efbb019fd31e3ef327c
   OperatorId: 64d9834ad191502259bde0d6   # jecky
-  TemplateId: 6687adda4817a3f6324a0b0e  # 转阶段项目模板id
+  TemplateId: 67d129f7680c0fef647481f2  # 转阶段项目模板id
 
 # aliwork
 aliwork:

+ 12 - 0
mjava-mc/pom.xml

@@ -55,6 +55,18 @@
             <artifactId>lombok</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.68</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.malk</groupId>
+            <artifactId>base</artifactId>
+            <version>1.3</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>

+ 1 - 1
mjava-mc/src/main/java/com/malk/mc/aspect/RequestLoggingAspect.java

@@ -35,7 +35,7 @@ public class RequestLoggingAspect {
     @Around("execution(* com.malk.mc.controller..*(..))")
     public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
-        if(request.getRequestURI().contains("/api/mc/project/")){
+        if(request.getRequestURI().contains("/api/mc/project/")||request.getRequestURI().contains("/api/mc/bot/")){
             return joinPoint.proceed();
         }
 

+ 74 - 0
mjava-mc/src/main/java/com/malk/mc/controller/McBotController.java

@@ -0,0 +1,74 @@
+package com.malk.mc.controller;
+
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.malk.server.common.McException;
+import com.malk.server.common.McR;
+import com.malk.service.dingtalk.DDClient;
+import com.malk.service.dingtalk.DDClient_Extension;
+import com.malk.utils.UtilMap;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@RestController
+@RequestMapping("/bot/")
+public class McBotController {
+
+    @Autowired
+    private  DDClient_Extension ddClientExtension;
+    @Autowired
+    private DDClient ddClient;
+
+    @PostMapping("groupMsg/send")
+    public McR sendGroupMsg(@RequestBody JSONObject param){
+        log.info("推送消息:{}",param);
+        McException.assertParamException_Null(param,"msgParam","msgKey","openConversationId","robotCode","coolAppCode");
+        Map map = ddClientExtension.sendGroupMessages(ddClient.getAccessToken(), param.getJSONObject("msgParam"), param.getString("msgKey"), param.getString("openConversationId")
+                , param.getString("robotCode"), param.getString("coolAppCode"));
+        return McR.success(map);
+    }
+
+    @PostMapping("card/createAndDeliver")
+    public McR createAndDeliverCard(@RequestBody JSONObject param){
+        log.info("推送消息:{}",param);
+        McException.assertParamException_Null(param,"cardData","outTrackId","openSpaceId","robotCode","cardTemplateId");
+        Map<String,Object> data = new HashMap();
+        data.put("imGroupOpenDeliverModel",UtilMap.map("robotCode",param.getString("robotCode")));
+        data.put("imGroupOpenSpaceModel",UtilMap.map("supportForward",true));
+        if(param.containsKey("extInfo")){
+            data.putAll(param.getJSONObject("extInfo"));
+        }
+        Map map = ddClientExtension.createAndDeliverCards(ddClient.getAccessToken(),param.getString("cardTemplateId"),param.getString("outTrackId"),
+                UtilMap.map("cardParamMap",param.getJSONObject("cardData")),param.getString("openSpaceId"),data);
+        return McR.success(map);
+    }
+
+
+    @PostMapping("msg")
+    public McR msg(@RequestBody JSONObject param){
+        log.info("机器人消息:{}",param);
+        String text=param.getJSONObject("text").getString("content");
+        if(text.contains("群信息")){
+            sendBotTextMsgByWebhook(param.getString("sessionWebhook"),
+                    "群ID:"+param.getString("conversationId") +
+                        "\nrobotCode:"+param.getString("robotCode") +
+                        "\nchatbotUserId:"+param.getString("chatbotUserId"));
+        }
+        return McR.success();
+    }
+
+    private void sendBotTextMsgByWebhook(String sessionWebhook,String text){
+        Map<String,Object> map=new HashMap<>();
+        map.put("msgtype","text");
+        map.put("text",UtilMap.map("content",text));
+        HttpUtil.createPost(sessionWebhook).body(JSONObject.toJSONString(map)).execute();
+    }
+}

+ 56 - 0
mjava-mc/src/main/java/com/malk/mc/controller/McDdController.java

@@ -0,0 +1,56 @@
+package com.malk.mc.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.malk.server.common.McException;
+import com.malk.server.common.McR;
+import com.malk.service.dingtalk.DDClient;
+import com.malk.service.dingtalk.DDClient_Group;
+import com.malk.service.dingtalk.DDClient_Report;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@Slf4j
+@RestController
+@RequestMapping("/dd")
+public class McDdController {
+
+    @Autowired
+    private DDClient_Group ddClientGroup;
+    @Autowired
+    private DDClient_Report ddClientReport;
+    @Autowired
+    private DDClient ddClient;
+
+    @PostMapping("/group/createGroupByTemp")
+    public McR createGroupByTemp(@RequestBody JSONObject param){
+        log.info("创建场景群:{}",param);
+        McException.assertParamException_Null(param,"title","template_id","owner_user_id","user_ids");
+        String id=ddClientGroup.createGroupByTemp(ddClient.getAccessToken(),param.getString("title"),
+                param.getString("template_id"),param.getString("owner_user_id"),param.getString("user_ids"));
+        return McR.success(id);
+    }
+
+    @PostMapping("/report/create")
+    public McR createReport(@RequestBody JSONObject param){
+        log.info("创建日志:{}",param);
+        McException.assertParamException_Null(param,"template_id","to_chat","dd_from","userid","contents");
+        JSONObject contents=param.getJSONObject("contents");
+        List list=new ArrayList();
+        for(String key:contents.keySet()){
+            list.add(contents.getJSONObject(key));
+        }
+        String result=ddClientReport.createReport(ddClient.getAccessToken(),param.getString("to_userids"),param.getString("to_cids")
+                ,param.getString("template_id"),param.getBoolean("to_chat"),param.getString("dd_from"),param.getString("userid"),
+                list);
+        return McR.success(result);
+    }
+
+}

+ 29 - 4
mjava-mc/src/main/java/com/malk/mc/service/impl/McProjectServiceImpl.java

@@ -7,11 +7,14 @@ import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.aliwork.YDClient;
+import com.malk.utils.PublicUtil;
 import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -27,7 +30,8 @@ public class McProjectServiceImpl implements McProjectService {
     public void init() {
         int i=0;
         int t=1;
-        Map<String, String[]> data = new HashMap();
+        Map<String, String[]> ydData = new HashMap();
+        Map<String, String[]> ddData = new HashMap();
         do {
             i++;
             DDR_New projectData = ydClient.queryData(YDParam.builder()
@@ -40,10 +44,31 @@ public class McProjectServiceImpl implements McProjectService {
             List<Map> dataList = (List<Map>) projectData.getData();
             for (Map map:dataList){
                 Map formData=UtilMap.getMap(map,"formData");
-                data.put(UtilMap.getString(formData,"serialNumberField_lxlfw7nn"),new String[]{UtilMap.getString(formData,"textField_lxlfw7no"),UtilMap.getString(formData,"textField_lxlfw7np")});
+                ydData.put(UtilMap.getString(formData,"serialNumberField_lxlfw7nn"),new String[]{UtilMap.getString(formData,"textField_lxlfw7no"),UtilMap.getString(formData,"textField_lxlfw7np")});
+                if(!PublicUtil.isNull(formData,"textField_m7abagvx","textField_m7abagvy")){
+                    ddData.put(UtilMap.getString(formData,"serialNumberField_lxlfw7nn"),new String[]{UtilMap.getString(formData,"textField_m7abagvx"),UtilMap.getString(formData,"textField_m7abagvy")});
+                }
             }
         }while (i<t);
-        McProject.insertYida(data);
-        log.info("项目加载完毕:{}",data.keySet());
+        McProject.insertYida(ydData);
+        McProject.insertDD(ddData);
+        log.info("项目加载完毕:{} 钉钉:{}",ydData.keySet(),ddData.keySet());
+    }
+
+    public static void main(String[] args) {
+        System.out.println(strFormat("\n优尚和越:表单的搭建\n未来节拍:根据客户的需求进行调整\n未来节拍:根据客户的需求进行调整\n未来节拍:根据客户的需求进行调整"));
+    }
+
+    private static String strFormat(String input){
+        StringBuilder output = new StringBuilder(input);
+        int count = 0;
+        int index = 0;
+
+        while ((index = output.indexOf("\n", index)) != -1) {
+            count++; // 计数器增加
+            output.insert(index + 1, "工作"+count); // 在 \n 后插入数字
+            index += 2; // 跳过插入的数字,继续查找下一个 \n
+        }
+        return output.toString();
     }
 }

+ 8 - 4
mjava-mc/src/main/java/com/malk/mc/service/impl/McYdServiceImpl.java

@@ -169,10 +169,12 @@ public class McYdServiceImpl implements McYdService {
                     String[] numberFieldCodes=numberFieldCode.split(",");
                     String[] textFieldCodes=textFieldCode.split(",");
                     for (int i = 0; i < numberFieldCodes.length; i++) {
-                        BigDecimal number = NumberUtil.toBigDecimal(UtilMap.getNumberStr(item,numberFieldCodes[i]));
-                        if(number==null){
+                        String numstr=UtilMap.getNumberStr(item,numberFieldCodes[i]);
+                        if(PublicUtil.isNull(numstr)||numstr.equals("0")){
+                            updateMap.put(textFieldCodes[i],"0.00");
                             continue;
                         }
+                        BigDecimal number = NumberUtil.toBigDecimal(numstr);
                         // 创建一个 DecimalFormat 实例,指定千位分隔符模式
                         DecimalFormat df = new DecimalFormat("#,###.00");
                         // 格式化 double 数值
@@ -187,10 +189,12 @@ public class McYdServiceImpl implements McYdService {
                 String[] mainNumKeys=UtilMap.getString(map,"mainNumKeys").split(",");
                 String[] mainTextKeys=UtilMap.getString(map,"mainTextKeys").split(",");
                 for (int i = 0; i < mainNumKeys.length; i++) {
-                    BigDecimal number = NumberUtil.toBigDecimal(UtilMap.getNumberStr(formData,(mainNumKeys[i])));
-                    if(number==null){
+                    String numstr=UtilMap.getNumberStr(formData,(mainNumKeys[i]));
+                    if(PublicUtil.isNull(numstr)||numstr.equals("0")){
+                        updateMap.put(mainTextKeys[i],"0.00");
                         continue;
                     }
+                    BigDecimal number = NumberUtil.toBigDecimal(numstr);
                     // 创建一个 DecimalFormat 实例,指定千位分隔符模式
                     DecimalFormat df = new DecimalFormat("#,###.00");
                     // 格式化 double 数值

+ 1 - 1
mjava-mc/src/main/resources/application-dev.yml

@@ -1,5 +1,5 @@
 server:
-  port: 9900
+  port: 9001
   servlet:
     context-path: /api/mc
 spring:

+ 1 - 1
mjava-mc/src/main/resources/application.yml

@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: prod
+    active: dev
   servlet:
     multipart:
       max-file-size: 100MB

+ 7 - 2
mjava-xzkj/pom.xml

@@ -47,10 +47,15 @@
             <version>1.1-SNAPSHOT</version>
         </dependency>
         <!-- 腾讯云 [go to https://search.maven.org/search?q=tencentcloud-sdk-java and getDefault the latest version.] -->
+<!--        <dependency>-->
+<!--            <groupId>com.tencentcloudapi</groupId>-->
+<!--            <artifactId>tencentcloud-sdk-java</artifactId>-->
+<!--            <version>3.1.778</version>-->
+<!--        </dependency>-->
         <dependency>
             <groupId>com.tencentcloudapi</groupId>
-            <artifactId>tencentcloud-sdk-java</artifactId>
-            <version>3.1.778</version>
+            <artifactId>tencentcloud-sdk-java-ocr</artifactId>
+            <version>3.1.1210</version>
         </dependency>
         <!-- 图片压缩 -->
         <dependency>

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

@@ -133,16 +133,16 @@ public class IVController {
 
     // prd 校验发票抬头, 购买方范围
     private void validateBuyer(String BuyerName, String tips) {
-        List<String> corpNames = Arrays.asList(
-                "珠海金魁新能源科技有限公司",
-                "珠海能魁新能源科技有限公司",
-                "珠海创伟新能源有限公司",
-                "河南能辉绿电科技有限公司",
-                "河南省绿色生态新能源科技有限公司",
-                "贵州能辉智慧能源科技有限公司",
-                "上海能辉科技股份有限公司",
-                "浙江数实通信息技术有限公司");
-        McException.assertAccessException(!corpNames.contains(BuyerName), tips + ", 购买方名称不合法!");
+//        List<String> corpNames = Arrays.asList(
+//                "珠海金魁新能源科技有限公司",
+//                "珠海能魁新能源科技有限公司",
+//                "珠海创伟新能源有限公司",
+//                "河南能辉绿电科技有限公司",
+//                "河南省绿色生态新能源科技有限公司",
+//                "贵州能辉智慧能源科技有限公司",
+//                "上海能辉科技股份有限公司",
+//                "浙江数实通信息技术有限公司");
+//        McException.assertAccessException(!corpNames.contains(BuyerName), tips + ", 购买方名称不合法!");
     }
 
     /**
@@ -186,12 +186,12 @@ public class IVController {
                     .date(UtilString.replaceDateZH_cn(UtilMap.getString(prop, "Date")))
                     .checkCode(UtilMap.getString(prop, "CheckCode"))
                     // ppExt: 多明细行时, 优先取值合计 [全电票返回了subTotal字段, 但值为空]
-                    .amount(UtilNumber.setBigDecimal(UtilMap.getString_first(prop, "SubTotal", "Total")))
+                    .amount(UtilNumber.setBigDecimal(UtilMap.getString_first(prop, "SubTotal", "Total", "Fare")))
                     .tax(UtilNumber.setBigDecimal(UtilMap.getString_first(prop, "SubTax", "Tax")))
                     .excludingTax(UtilNumber.setBigDecimal(UtilMap.getString(prop, "PretaxAmount")))
-                    .buyerName(StringUtils.isBlank(guyuanNameRepalce(UtilMap.getString(prop, "Buyer")))?"上海能辉科技股份有限公司":guyuanNameRepalce(UtilMap.getString(prop, "Buyer")))
+                    .buyerName(StringUtils.isBlank(guyuanNameRepalce(UtilMap.getString(prop, "Buyer")))?"":guyuanNameRepalce(UtilMap.getString(prop, "Buyer")))
                     // ppExt: 中央非税未返回税号官方说明: 非税发票理论是没有税号的,图片中属于信用代码
-                    .buyerTaxId(StringUtils.isBlank(UtilMap.getString(prop, "BuyerTaxID"))?"91310000685457643J": UtilMap.getString(prop, "BuyerTaxID"))
+                    .buyerTaxId(StringUtils.isBlank(UtilMap.getString(prop, "BuyerTaxID"))?"": UtilMap.getString(prop, "BuyerTaxID"))
                     .sellerName(guyuanNameRepalce(UtilMap.getString_first(prop, "Seller", "Issuer")))                            // 行程单: 填开单位
                     .sellerTaxId(UtilMap.getString_first(prop, "SellerTaxID", "AgentCode"))                       // 行程单: 销售单位代号
                     .passengerName(UtilMap.getString_first(prop, "Name", "UserName"))                             // 火车票, 行程单
@@ -318,7 +318,7 @@ public class IVController {
             String invoiceNo = dto.getSerial(); // 唯一标识, 发票号码
 
             String serial = "第【" + (index + 1) + "】张发票";
-            validateBuyer(dto.getBuyerName(), serial + "有疑问");
+//            validateBuyer(dto.getBuyerName(), serial + "有疑问");
             McException.assertAccessException(StringUtils.isBlank(invoiceNo), serial + ", 识别结果为空, 请检查!");
             YDParam ydParam = YDParam.builder()
                     .formUuid("FORM-FE4634E6D01745C7B26DC58D049EAADC6RP4")

+ 2 - 2
mjava-xzkj/src/main/resources/static/mjs/mjs.js

@@ -14720,8 +14720,8 @@ import { SS as storage } from "storage"; // import { SS } from "storage"; */
         // 修改公共配置
         init: function init() {
             {
-                // mjs.conf.api = "https://mc.cloudpure.cn/api/guyuan/nh";
-                mjs.conf.api = "http://127.0.0.1:8113/xzkj/iv";
+                mjs.conf.api = "https://agibang.cn:1443/xzkj/iv";
+                // mjs.conf.api = "http://127.0.0.1:8113/xzkj/iv";
             }
             return this; // this 指向当前项目本身
         },