lfx пре 1 месец
родитељ
комит
0fdbafc9ec
24 измењених фајлова са 934 додато и 2 уклоњено
  1. 10 0
      mjava-zhiwei/pom.xml
  2. 24 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/config/KDWebApiConf.java
  3. 32 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/config/KDWebApiConfig.java
  4. 26 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/Audit.java
  5. 18 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/BillQuery.java
  6. 24 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/ContactModel.java
  7. 10 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/CustomerContactEntry.java
  8. 72 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/CustomerModel.java
  9. 40 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/FBillHead.java
  10. 15 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/FNumber.java
  11. 15 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/FSTAFFNUMBER.java
  12. 7 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/Model.java
  13. 137 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/PreBaseDataOne.java
  14. 104 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/Receivebill.java
  15. 57 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/SaleOrderEntry.java
  16. 17 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/SaleOrderFinance.java
  17. 25 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/SaleOrderModel.java
  18. 26 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/Save.java
  19. 22 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/Submit.java
  20. 24 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/UnAudit.java
  21. 14 0
      mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/View.java
  22. 2 2
      mjava-zhiwei/src/main/java/com/malk/zhiwei/schedule/ScheduleTask.java
  23. 19 0
      mjava-zhiwei/src/main/resources/application-dev.yml
  24. 194 0
      mjava-zhiwei/src/test/java/com/malk/zhiwei/JdTest.java

+ 10 - 0
mjava-zhiwei/pom.xml

@@ -50,6 +50,16 @@
             <artifactId>lombok</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>com.example</groupId>
+            <artifactId>k3cloud</artifactId>
+            <version>8.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.example</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.0</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 24 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/config/KDWebApiConf.java

@@ -0,0 +1,24 @@
+package com.malk.zhiwei.config;
+
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "kingdee")
+@Slf4j
+public class KDWebApiConf {
+
+    private String XKDApiAcctID;
+
+    private String XKDApiUserName;
+
+    private String XKDApiAppID;
+
+    private String XKDApiAppSec;
+
+    private String XKDApiServerUrl;
+
+}

+ 32 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/config/KDWebApiConfig.java

@@ -0,0 +1,32 @@
+package com.malk.zhiwei.config;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.Properties;
+
+public class KDWebApiConfig {
+    private Properties properties = new Properties();
+
+    public KDWebApiConfig(String filePath) throws IOException {
+        try (FileInputStream input = new FileInputStream(filePath)) {
+            properties.load(input);
+        }
+    }
+
+    public String getProperty(String key) {
+        return properties.getProperty(key);
+    }
+
+    public static void main(String[] args) {
+        try {
+            KDWebApiConfig config = new KDWebApiConfig("mjava-jinlun/src/main/resources/application-dev.yml");
+            System.out.println("AcctID: " + config.getProperty("X-KDApi-AcctID"));
+            // 打印其他属性...
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+
+
+}

+ 26 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/Audit.java

@@ -0,0 +1,26 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class Audit {
+    private int CreateOrgId;
+
+    private List<String> Numbers;
+
+    private String Ids;
+
+    private String InterationFlags;
+
+    private int UseOrgId;
+
+    private String NetworkCtrl;
+
+    private Boolean IsVerifyProcInst;
+
+    private String IgnoreInterationFlag;
+
+    private Boolean UseBatControlTimes;
+}

+ 18 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/BillQuery.java

@@ -0,0 +1,18 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class BillQuery {
+    private String FormId;
+    private String FieldKeys;
+    private List<Map> FilterString;
+    private String OrderString;
+    private int TopRowCount;
+    private int StartRow;
+    private int Limit;
+    private String SubSystemId;
+}

+ 24 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/ContactModel.java

@@ -0,0 +1,24 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+@Data
+public class ContactModel extends Model{
+    private String FName;//联系人名称
+
+    private FNumber FCustId;//客户编号
+
+    private String FMobile;//移动电话
+
+    private FNumber Fex;//性别
+
+    private String FPost;//职务
+
+    private String FTel;//固定电话
+
+    private String FFax;//传真
+
+    private String FEmail;//邮箱
+
+    private String FCompanyType;//类型:BD_Customer:客户,BD_Supplier:供应商
+}

+ 10 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/CustomerContactEntry.java

@@ -0,0 +1,10 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+@Data
+public class CustomerContactEntry {
+    private String FNUMBER1;//地点编码
+
+    private String FNAME1;//地点名称
+}

+ 72 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/CustomerModel.java

@@ -0,0 +1,72 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CustomerModel extends Model{
+    private int FCUSTID;
+
+    private String FName;//客户名称
+
+    private String FShortName;//简称
+
+    private FNumber FCOUNTRY;//国家
+
+    private FNumber FGroup;//客户分组
+
+    private String F_VMKV_Combo;//客户等级
+
+    private FNumber FCustTypeId;//客类别
+
+    private String FDescription;//备注
+
+    private FNumber FSALDEPTID;//销售部门
+
+    private FNumber FSELLER;//销售员
+
+    private FSTAFFNUMBER F_VMKV_Base1;//跟单员
+
+    private String F_VMKV_Combo1;//订单要求
+
+    private FNumber FRECCONDITIONID;//收款条件
+
+    private FNumber FTRADINGCURRID;//结算币别
+
+    private FNumber FSETTLETYPEID;//结算方式
+
+    private FNumber FTaxRate;//税率
+
+    private FNumber FTaxType;//税分类
+
+    private String FInvoiceType;//发票类型
+
+    private Boolean FISCREDITCHECK;//启用信用管理
+
+    private String FINVOICEBANKACCOUNT;//银行账号
+
+    private String FINVOICETITLE;//发票抬头
+
+    private String FTAXREGISTERCODE;//纳税登记号
+
+    private String FINVOICEBANKNAME;//开户银行
+
+    private String FSOCIALCRECODE;//统一社会信用代码
+
+    private String FINVOICETEL;//开票联系电话
+
+    private String FINVOICEADDRESS;//开票通讯地址
+
+    private List<CustomerContactEntry> FT_BD_CUSTCONTACT;//地址信息
+
+    private FNumber FCreateOrgId;//创建组织 (必填项)
+
+    public CustomerModel (){}
+
+    public CustomerModel(String name){
+        this.FName=name;
+        this.FCreateOrgId = new FNumber("100");
+        this.FTRADINGCURRID = new FNumber("PRE001");
+    }
+}

+ 40 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/FBillHead.java

@@ -0,0 +1,40 @@
+package com.malk.zhiwei.entity;
+
+import com.malk.utils.UtilMap;
+import com.malk.xiding.entity.Model;
+import lombok.Data;
+
+import java.util.Map;
+
+@Data
+public class FBillHead extends Model {
+    private String FID;//实体主键
+    private String FDocumentStatus;//数据状态
+    private String FForbidStatus;//禁用状态
+    private String FName;//名称 (必填项)
+    private String FNumber;//编码
+    private String FDescription;//描述
+    private Map<String,String> FCreateOrgId;//创建组织 (必填项)
+    private Map<String,String> FUseOrgId;//使用组织 (必填项)
+    private String FCreatorId;//创建人
+    private String FModifierId;//修改人
+    private String FCreateDate;//创建日期
+    private String FModifyDate;//修改日期
+    private Map<String,String> F_ABC_Assistant;//项目类型 (必填项)
+    private String F_VPOX_Text;//CRM编号
+
+    public void setFCreateOrgId(String fCreateOrgId){
+        this.FCreateOrgId = UtilMap.map("FNumber",fCreateOrgId);
+    }
+    public void setFUseOrgId(String fUseOrgId){
+        this.FUseOrgId = UtilMap.map("FNumber",fUseOrgId);
+    }
+    public FBillHead(String FName,String FNumber,String type){
+        this.FUseOrgId = UtilMap.map("FNumber","100");
+        this.FCreateOrgId = UtilMap.map("FNumber","100");
+        this.FName=FName;
+        this.FNumber=FNumber;
+        this.F_ABC_Assistant = UtilMap.map("FNumber",type);
+    }
+    public FBillHead(){}
+}

+ 15 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/FNumber.java

@@ -0,0 +1,15 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+@Data
+public class FNumber {
+    public FNumber() {
+    }
+
+    public FNumber(String FNumber) {
+        this.FNumber = FNumber;
+    }
+
+    private String FNumber;
+}

+ 15 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/FSTAFFNUMBER.java

@@ -0,0 +1,15 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+@Data
+public class FSTAFFNUMBER {
+    public FSTAFFNUMBER() {
+    }
+
+    public FSTAFFNUMBER(String FSTAFFNUMBER) {
+        this.FSTAFFNUMBER = FSTAFFNUMBER;
+    }
+
+    private String FSTAFFNUMBER;
+}

+ 7 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/Model.java

@@ -0,0 +1,7 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+@Data
+public class Model {
+}

+ 137 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/PreBaseDataOne.java

@@ -0,0 +1,137 @@
+package com.malk.zhiwei.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+
+/**
+ * 单据操作请求实体类
+ * 用于处理单据相关的操作请求参数
+ */
+public class PreBaseDataOne {
+    
+    /**
+     * 创建者组织内码
+     * 非必录字段
+     */
+    @JsonProperty("CreateOrgId")
+    private String createOrgId;
+    
+    /**
+     * 单据编码集合
+     * 数组类型,格式:[No1,No2,...]
+     * 使用编码时必录
+     */
+    @JsonProperty("Numbers")
+    private List<String> numbers;
+    
+    /**
+     * 单据内码集合
+     * 字符串类型,格式:"Id1,Id2,..."
+     * 使用内码时必录
+     */
+    @JsonProperty("Ids")
+    private String ids;
+    
+    /**
+     * 工作流发起员工岗位内码
+     * 整型,非必录
+     * 注:员工身兼多岗时不传参默认取第一个岗位
+     */
+    @JsonProperty("SelectedPostId")
+    private Integer selectedPostId;
+    
+    /**
+     * 是否启用网控
+     * 布尔类型,默认false
+     * 非必录
+     */
+    @JsonProperty("NetworkCtrl")
+    private Boolean networkCtrl = false;
+    
+    /**
+     * 是否允许忽略交互
+     * 布尔类型,默认true
+     * 非必录
+     */
+    @JsonProperty("IgnoreInterationFlag")
+    private Boolean ignoreInterationFlag = true;
+    
+    // 无参构造函数
+    public PreBaseDataOne() {
+    }
+    
+    // 全参构造函数
+    public PreBaseDataOne(String createOrgId, List<String> numbers,
+                                   String ids, Integer selectedPostId, 
+                                   Boolean networkCtrl, Boolean ignoreInterationFlag) {
+        this.createOrgId = createOrgId;
+        this.numbers = numbers;
+        this.ids = ids;
+        this.selectedPostId = selectedPostId;
+        this.networkCtrl = networkCtrl;
+        this.ignoreInterationFlag = ignoreInterationFlag;
+    }
+    
+    // Getter和Setter方法
+    
+    public String getCreateOrgId() {
+        return createOrgId;
+    }
+    
+    public void setCreateOrgId(String createOrgId) {
+        this.createOrgId = createOrgId;
+    }
+    
+    public List<String> getNumbers() {
+        return numbers;
+    }
+    
+    public void setNumbers(List<String> numbers) {
+        this.numbers = numbers;
+    }
+    
+    public String getIds() {
+        return ids;
+    }
+    
+    public void setIds(String ids) {
+        this.ids = ids;
+    }
+    
+    public Integer getSelectedPostId() {
+        return selectedPostId;
+    }
+    
+    public void setSelectedPostId(Integer selectedPostId) {
+        this.selectedPostId = selectedPostId;
+    }
+    
+    public Boolean getNetworkCtrl() {
+        return networkCtrl;
+    }
+    
+    public void setNetworkCtrl(Boolean networkCtrl) {
+        this.networkCtrl = networkCtrl;
+    }
+    
+    public Boolean getIgnoreInterationFlag() {
+        return ignoreInterationFlag;
+    }
+    
+    public void setIgnoreInterationFlag(Boolean ignoreInterationFlag) {
+        this.ignoreInterationFlag = ignoreInterationFlag;
+    }
+    
+    @Override
+    public String toString() {
+        return "DocumentOperationRequest{" +
+                "createOrgId='" + createOrgId + '\'' +
+                ", numbers=" + numbers +
+                ", ids='" + ids + '\'' +
+                ", selectedPostId=" + selectedPostId +
+                ", networkCtrl=" + networkCtrl +
+                ", ignoreInterationFlag=" + ignoreInterationFlag +
+                '}';
+    }
+}

+ 104 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/Receivebill.java

@@ -0,0 +1,104 @@
+package com.malk.zhiwei.entity;
+
+import cn.hutool.core.annotation.Alias;
+import com.malk.utils.PublicUtil;
+import com.malk.utils.UtilDateTime;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class Receivebill {
+
+    // ==================== 基础信息 ====================
+
+    @Alias("FBillNo")
+    private String textField_mmvtlugm; // 单据编号
+
+    @Alias("FPAYUNIT.FName")
+    private String associationFormField_lypey1wr; // 付款单位(客户选择)
+
+    @Alias("FREALRECAMOUNTFOR")
+    private String numberField_lsvmld1x; // 实收金额(收款金额)
+
+    @Alias("FDATE")
+    private String dateField_lsy1vr0z; // 业务日期(收款时间)
+
+    @Alias("FSETTLETYPEID.FName")
+    private String selectField_lx4j5lnh; // 明细:结算方式(回款形式)
+
+    // 回款性质 - 默认:项目回款,无金蝶映射
+    private String selectField_lx4j5lne="项目回款";
+
+    @Alias("F.ABC.Base1")
+    private String selectField_lx4j5lnf; // 收款单位(回款主体)
+
+    @Alias("FRECACCOUNTNAME")
+    private String selectField_lx4j5lnd; // 明细:我方账户名称(回款银行)
+
+    @Alias("FACCOUNTID.FNumber")
+    private String textField_lypey1wy; // 明细:我方银行账号(银行账号)
+
+    @Alias("FSALEERID")
+    private String employeeField_lzwhaly9; // 销售员(客户负责人)
+
+    @Alias("F.ABC.Base")
+    private String associationFormField_lsvmld22; // 项目(合同选择)
+
+    @Alias("F.ABC.BaseProperty")
+    private String textField_m0oohuvq; // 项目中编码(合同编码)
+
+    // 区域负责人 - 无金蝶映射,系统查询
+    private String employeeField_m1aft8yd;
+
+    // 未收款金额 - 无金蝶映射,系统计算
+    private String numberField_lxu29mvg;
+
+    // ==================== 票据信息 ====================
+
+    // 收票日期 - 当前日期
+    private String dateField_lzca2rq0;
+
+    // 出票人名称
+    private String textField_lzca2rpv;
+
+    // 付款行名称
+    private String textField_lzca2rpx;
+
+    @Alias("FBPBILLNUMBER")
+    private String textField_lzca2rpt; // 明细:票据号(票号)
+
+    @Alias("FBPBILLPARAMOUNT")
+    private String numberField_lzca2rq1; // 明细:票面金额(票面金额)
+
+    // 出票日
+    private String dateField_lzca2rq2;
+
+    // 付款期限
+    private String textField_lzca2rq4;
+
+    @Alias("FBPBILLTYPE")
+    private String selectField_lzca2rq7; // 明细:票据类型(票据性质)
+
+    @Alias("FPAYUNIT.FName")
+    private String textField_lzca2rq8; // 付款单位(背书单位)
+
+    @Alias("FEXPIRY")
+    private String dateField_lzca2rqb; // 明细:到期日(到日期)
+
+    public Receivebill toYiDa(){
+        if(!PublicUtil.isNull(this.dateField_lzca2rqb)){
+            this.dateField_lzca2rqb = String.valueOf(UtilDateTime.getLocalDateTimeTimeStamp(LocalDateTime.parse(this.dateField_lzca2rqb)));
+            this.dateField_lzca2rq0 = this.dateField_lzca2rqb;
+        }
+        if(!PublicUtil.isNull(this.dateField_lsy1vr0z)){
+            this.dateField_lsy1vr0z = String.valueOf(UtilDateTime.getLocalDateTimeTimeStamp(LocalDateTime.parse(this.dateField_lsy1vr0z)));
+            this.dateField_lzca2rq0 = this.dateField_lsy1vr0z;
+        }
+        if(!PublicUtil.isNull(this.associationFormField_lsvmld22)){
+            System.out.println(associationFormField_lsvmld22);
+            this.associationFormField_lsvmld22="";
+        }
+        return  this;
+    }
+}

+ 57 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/SaleOrderEntry.java

@@ -0,0 +1,57 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+@Data
+public class SaleOrderEntry {
+    private FNumber FMaterialId;//物料编码
+    private String F_Sl_XSTYPE;//产品类别
+
+    private FNumber FUnitID;//销售单位
+    private double FQty;//销售数量
+    private FNumber FPriceUnitId;//计价单位
+    private double FPriceUnitQty;//计价数量
+//    private double FPrice;
+    private double FTaxPrice;//含税单价
+
+    private boolean FIsFree;//是否赠品
+
+    private double FEntryTaxRate;//税率
+
+    /*private double FTaxAmount_LC;
+    private double FAmount_LC;
+    private double FAllAmount_LC;*/
+
+    private String FDeliveryDate;
+
+    /*private FNumber FStockFNumber;
+    private FNumber FSettleOrgIds;
+    private String FOwnerTypeId;
+    private FNumber FOwnerId;*/
+    private String FEntryNote;
+
+    private double F_VMKV_MPPRICE;//报价价格
+    private String F_VMKV_SCCQ1;//生产厂区
+/*    private double F_WMVJ_Decimal;
+    private double F_WMVJ_Amount;
+    private double F_WMVJ_Qty;
+    private boolean F_WMVJ_CheckBox;*/
+
+    private String F_VMKV_JSYQ;//技术要求
+    private String F_NLD_BR;//剩磁(Br)
+    private String F_NLD_Hcj;//内禀矫顽力(Hcj)
+    private String F_NLD_Hcb;//磁感矫顽力(Hcb)
+    private String F_NLD_BH;//最大磁能积(BH)max
+    private String F_NLD_Hk;//方形度Hk/Hcj
+    private String F_VMKV_GXYQ;//公差要求
+
+    private boolean FDeliveryControl;//控制发货数量
+    private double FDeliveryMaxQty;//发货上限
+    private double FDeliveryMinQty;//发货下限
+
+    private String F_WGR_Combo_qtr;//产品质量等级
+    private String F_NLD_khwl;//客户物料编码
+    private FNumber F_Sl_salexingnengid;//客户性能
+
+    String F_Sl_Attachment;//订单图纸附件
+}

+ 17 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/SaleOrderFinance.java

@@ -0,0 +1,17 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+@Data
+public class SaleOrderFinance {
+    private FNumber FSettleCurrId;//结算币别
+
+    private FNumber FRecConditionId ;//收款条件
+
+    private FNumber FSettleModeId;//结算方式
+
+    private boolean FIsIncludedTax;//是否含税
+
+    private boolean FIsPriceExcludeTax;//价外税
+
+}

+ 25 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/SaleOrderModel.java

@@ -0,0 +1,25 @@
+package com.malk.zhiwei.entity;
+
+import com.malk.xiding.entity.SaleOrderEntry;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SaleOrderModel extends Model{
+    private int FID;
+    private FNumber FBillTypeID;//单据类型
+    private String FDate;//日期
+    private String F_NLD_DDTYPE ;//订单类型
+    private String F_WGR_Combo_re5 ;//订单要求
+    private FNumber FCustId;//客户
+    private FNumber FSalerId;//销售员
+    private FSTAFFNUMBER F_Sl_gendanyuan;//跟单员
+    private FNumber FHeadDeliveryWay;//交货方式
+    private String FBusinessType;//业务类型
+    private FNumber FHEADLOCID;//交货地点
+    private String FNote;//备注
+    private String F_Sl_customerbillno;//客户订单号
+    private SaleOrderFinance FSaleOrderFinance;//财务信息
+    private List<SaleOrderEntry> FSaleOrderEntry;//订单明细
+}

+ 26 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/Save.java

@@ -0,0 +1,26 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class Save {
+        //默认为空 需要时选择性赋值
+        private List<String> NeedUpDateFields;
+        /*private List<String> NeedReturnFields;
+        private boolean IsDeleteEntry;
+        private String SubSystemId;
+        private boolean IsVerifyBaseDataField;
+        private boolean IsEntryBatchFill;
+        private boolean ValidateFlag;
+        private boolean NumberSearch;
+        private boolean IsAutoAdjustField;
+        private String InterationFlags;
+        private boolean IgnoreInterationFlag;
+        private boolean IsControlPrecision;
+        private boolean ValidateRepeatJson;*/
+
+        //保存实体
+        private Model Model;
+}

+ 22 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/Submit.java

@@ -0,0 +1,22 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class Submit {
+    private int CreateOrgId;
+
+    private List<String> Numbers;
+
+    private String Ids;
+
+    private int SelectedPostId;
+
+    private int UseOrgId;
+
+    private Boolean NetworkCtrl;
+
+    private Boolean IgnoreInterationFlag;
+}

+ 24 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/UnAudit.java

@@ -0,0 +1,24 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class UnAudit {
+    private int CreateOrgId;
+
+    private List<String> Numbers;
+
+    private String Ids;
+
+    private String InterationFlags;
+
+    private int UseOrgId;
+
+    private String NetworkCtrl;
+
+    private Boolean IsVerifyProcInst;
+
+    private String IgnoreInterationFlag;
+}

+ 14 - 0
mjava-zhiwei/src/main/java/com/malk/zhiwei/entity/View.java

@@ -0,0 +1,14 @@
+package com.malk.zhiwei.entity;
+
+import lombok.Data;
+
+@Data
+public class View {
+    private int CreateOrgId;
+
+    private String Number;
+
+    private String Id;
+
+    private Boolean IsSortBySeq;
+}

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

@@ -38,7 +38,7 @@ public class ScheduleTask {
 
     /**
      */
-    @Scheduled(cron = "0 0/5 * * * ?")
+//    @Scheduled(cron = "0 0/5 * * * ?")
     public void sync() {
         List<Map> list=(List<Map>) ydClient.queryData(YDParam.builder().formUuid("FORM-3A89370AC94B429B9180ED98260BAF680JYM").pageSize(1)
                 .searchFieldJson(JSONObject.toJSONString(UtilMap.map("selectField_mcefftmv","待处理"))).build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
@@ -72,7 +72,7 @@ public class ScheduleTask {
         }
     }
 
-    @Scheduled(cron = "0 0 1 * * ?")
+//    @Scheduled(cron = "0 0 1 * * ?")
     public void syncProd() {
         zwService.syncProduct("","PILOT2024");
         zwService.syncProduct("","PILOT2023");

+ 19 - 0
mjava-zhiwei/src/main/resources/application-dev.yml

@@ -25,3 +25,22 @@ aliwork:
   appType: APP_G0JV4FGIR0EOSBD0K7XV
   systemToken: F2766O91DH8WNHHUD63KBDP3B5GE234U4ZSBMBS1
 
+kingdee:
+  # 第三方系统登录授权的账套ID
+  X-KDApi-AcctID: 692653fa165f17
+  # 第三方系统登录授权的用户
+  X-KDApi-UserName: 徐峰
+  # 第三方系统登录授权的应用ID
+  X-KDApi-AppID: 337960_TZ5N39EPSvpaX5+KQ11rV8VMzM5X0CLo
+  # 第三方系统登录授权的应用密钥
+  X-KDApi-AppSec: 49ac4562f30d4db6a5cb3fcca22585a9
+  # 服务Url地址(公有云统一走网关sdk底层已处理,无需传X-KDApi-ServerUrl,下面这行需要注释)
+  X-KDApi-ServerUrl: http://211.91.58.31:8081/k3cloud/
+  # 账套语系,默认2052
+  # X-KDApi-LCID: 2052
+  # 组织编码,启用多组织时配置对应的组织编码才有效
+  # X-KDApi-OrgNum: 100
+  # 允许的最大连接延时,单位为秒
+  # X-KDApi-ConnectTimeout: 120
+  # 允许的最大读取延时,单位为秒
+  # X-KDApi-RequestTimeout: 120

+ 194 - 0
mjava-zhiwei/src/test/java/com/malk/zhiwei/JdTest.java

@@ -0,0 +1,194 @@
+package com.malk.zhiwei;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.kingdee.bos.webapi.entity.IdentifyInfo;
+import com.kingdee.bos.webapi.entity.RepoRet;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.aliwork.YDSearch;
+import com.malk.server.common.McR;
+import com.malk.service.aliwork.YDClient;
+import com.malk.utils.PublicUtil;
+import com.malk.utils.UtilMap;
+import com.malk.zhiwei.config.KDWebApiConf;
+import com.malk.zhiwei.entity.*;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.*;
+
+@Slf4j
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class JdTest {
+
+    @Autowired
+    private KDWebApiConf kdWebApiConf;
+
+    @Autowired
+    private YDClient ydClient;
+    @Autowired
+    private YDConf ydConf;
+
+    private IdentifyInfo initIden(){
+        //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
+        //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
+        //读取配置,初始化SDK
+        IdentifyInfo iden = new IdentifyInfo();
+        iden.setUserName(kdWebApiConf.getXKDApiUserName());
+        iden.setAppId(kdWebApiConf.getXKDApiAppID());
+        iden.setdCID(kdWebApiConf.getXKDApiAcctID());
+        iden.setAppSecret(kdWebApiConf.getXKDApiAppSec());
+        iden.setServerUrl(kdWebApiConf.getXKDApiServerUrl());
+
+        return iden;
+    }
+
+    @Test
+    public void test(){
+        K3CloudApi client = new K3CloudApi(initIden());
+        String value="{\"CreateOrgId\":0,\"Number\":\"\",\"Id\":\"\",\"IsSortBySeq\":\"false\"}";
+        try {
+//            String result=client.view("BAS_PreBaseDataOne",value);
+            PreBaseDataOne preBaseDataOne = new PreBaseDataOne();
+            preBaseDataOne.setCreateOrgId(value);
+            String result=client.submit("BAS_PreBaseDataOne", JSONObject.toJSONString(preBaseDataOne));
+            System.out.println(result);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void saveProject(){
+        K3CloudApi client = new K3CloudApi(initIden());
+        try {
+            FBillHead fBillHead = new FBillHead("测试项目","TEST-2026-03-18-001","AI");
+            String result=client.save("BD_Customer",JSONObject.toJSONString(UtilMap.map("Model",fBillHead)));
+            System.out.println(result); // 保存数据到金蝶
+//            JsonObject jsonData = new JsonObject();
+//            jsonData.addProperty("Numbers", "TEST-2026-03-18-001");
+//            String result=client.audit("BAS_PreBaseDataOne", jsonData.toString());
+            System.out.println(result);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void saveCust() throws Exception {
+        CustomerModel customerModel = new CustomerModel("测试客户");
+        System.out.println(saveToAudit("BD_Customer", customerModel));
+    }
+
+    private McR saveToAudit(String formid, Object object) throws Exception {
+        JSONObject resultObj = new JSONObject();
+        K3CloudApi client = new K3CloudApi(initIden());
+        String result=client.save(formid,JSONObject.toJSONString(UtilMap.map("Model",object)));
+        resultObj.put("save",result);
+        Gson gson = new Gson();
+        RepoRet sRet = gson.fromJson(result, RepoRet.class);
+        if (sRet.isSuccessfully()) {
+            JsonObject jsonData = new JsonObject();
+            jsonData.addProperty("Ids", sRet.getResult().getId());
+            String result2=client.submit(formid, jsonData.toString());
+            resultObj.put("save",result2);
+            RepoRet sRet2 = gson.fromJson(result, RepoRet.class);
+            if (sRet2.isSuccessfully()) {
+                JsonObject jsonData3 = new JsonObject();
+                jsonData3.addProperty("Ids", sRet2.getResult().getId());
+                String result3 = client.audit(formid, jsonData3.toString());
+                RepoRet repoRet3 = gson.fromJson(result3, RepoRet.class);
+                if (repoRet3.getResult().getResponseStatus().isIsSuccess()) {
+                    log.info("审批通过,新增完成");
+                    return McR.success(resultObj);
+                }
+            }
+        }
+        return McR.error("203",JSONObject.toJSONString(resultObj));
+    }
+
+    @Test
+    public void queryOrder(){
+        K3CloudApi client = new K3CloudApi(initIden());
+        try {
+            int startRow = 0;
+            int limit = 2000;
+            BillQuery billQuery = new BillQuery();
+            billQuery.setFormId("AR_RECEIVEBILL");
+            billQuery.setFieldKeys("FPAYUNIT.FName,FREALRECAMOUNTFOR,FDATE,FSETTLETYPEID,FSETTLETYPEID.FName,F_ABC_Base1,FRECACCOUNTNAME,FACCOUNTID.FNumber,FACCOUNTID.FName,FSALEERID.FName,F_ABC_Base,F_ABC_BaseProperty,FBPBILLNUMBER,FBPBILLPARAMOUNT,FBPBILLTYPE,FEXPIRY");
+//            billQuery.setFieldKeys("FBillNo,FBillTypeID.FName,FPAYUNITTYPE,FDate,FPAYUNIT.FName,FCURRENCYID.FName,FRECEIVEAMOUNTFOR_H,FREALRECAMOUNTFOR,FSALEERID.FName,FSETTLETYPEID,FSETTLETYPEID.FName,FPURPOSEID.FName,FACCOUNTID.FNumber,FACCOUNTID.FName,FRECTOTALAMOUNTFOR,FREALRECAMOUNTFOR_D,FCOMMENT");
+            List<Map> filterString = new ArrayList<>();
+            //审核日期为昨天至今天
+            filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FApproveDate","265",4,"","","0"));//审核日期在今天之前N天以后
+//        filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FApproveDate","420","2025-10-20 00:00:00","","","0"));//审核日期年=XX
+//        filterString.add(UtilMap.map("FieldName, Compare, Value, Left, Right, Logic","FNumber","67","35","","","0"));//物料编码等于XX
+            billQuery.setFilterString(filterString);
+            billQuery.setLimit(limit);
+            billQuery.setStartRow(startRow);
+            String result=client.billQuery(JSONObject.toJSONString(billQuery));
+            JSONArray jsonArray = JSONArray.parseArray(result);
+            for(int i=0;i<jsonArray.size();i++){
+                JSONObject jsonObject = jsonArray.getJSONObject(i);
+                System.out.println(jsonObject);
+                Receivebill rb= BeanUtil.toBean(jsonObject, Receivebill.class);
+                if(!PublicUtil.isNull(rb.getAssociationFormField_lypey1wr())){
+                    List<Map> data=(List<Map>) ydClient.queryData(YDParam.builder().formUuid("FORM-8E4AA59DFB354F2D922826F47F70B31AZ8ES")
+                            .searchCondition(JSONObject.toJSONString(Arrays.asList(YDConf.searchCondition_TextFiled("textField_lx05suvl",rb.getAssociationFormField_lypey1wr(),"eq"))))
+                            .build(), YDConf.FORM_QUERY.retrieve_list).getData();
+                    if(data.size()>0){
+                        System.out.println(data.get(0).get("formInstanceId"));
+                        List<Map> kh=ydConf.associationForm("FORM-8E4AA59DFB354F2D922826F47F70B31AZ8ES", String.valueOf(data.get(0).get("formInstanceId")),rb.getAssociationFormField_lypey1wr(),"",false);
+                        rb.setAssociationFormField_lypey1wr(JSONObject.toJSONString(kh));
+                    }else{
+                        rb.setAssociationFormField_lypey1wr("[]");
+                    }
+                }
+                Map prodata=new HashMap();
+                if(!PublicUtil.isNull(rb.getAssociationFormField_lsvmld22())){
+                    List<Map> data=(List<Map>) ydClient.queryData(YDParam.builder().formUuid("FORM-2E06211370FA43D3AEAAC0CF7636365491YX")
+                            .searchCondition(JSONObject.toJSONString(Arrays.asList(YDConf.searchCondition_TextFiled("textField_m0c4utr2",rb.getAssociationFormField_lsvmld22(),"eq"))))
+                            .build(), YDConf.FORM_QUERY.retrieve_list).getData();
+                    if(data.size()>0){
+                        System.out.println(data.get(0).get("formInstanceId"));
+                        Map formData= UtilMap.getMap(data.get(0),"formData");
+                        List<Map> kh=ydConf.associationForm("FORM-2E06211370FA43D3AEAAC0CF7636365491YX", String.valueOf(data.get(0).get("formInstanceId")),UtilMap.getString(formData,"textField_m50ci9rk"),"",false);
+                        rb.setAssociationFormField_lsvmld22(JSONObject.toJSONString(kh));
+                        prodata.put("textField_lwgba84b",formData.get("textField_m0namazl"));
+                        prodata.put("textField_lxvrmu61",formData.get("textField_m0namazj"));
+                        prodata.put("textField_lypey1wx",formData.get("textField_m0c4utr2"));
+                        prodata.put("textField_m1aft8ye",formData.get("textField_m6yurmat"));
+                        prodata.put("numberField_lxu21h6c",formData.get("numberField_mdcwz9mr"));
+                        prodata.put("numberField_lxu29mvg",formData.get("numberField_mdcwz9mv"));
+                        prodata.put("numberField_lxu336sn",formData.get("numberField_m0gb97py"));
+                    }else{
+                        rb.setAssociationFormField_lsvmld22("[]");
+                    }
+                }
+                prodata.putAll(JSONObject.parseObject(JSONObject.toJSONString(rb.toYiDa())));
+                ydClient.operateData(YDParam.builder().formUuid("FORM-9BDAFB39320246EFACC176C9E33E51DC4N40")
+                        .formDataJson(JSONObject.toJSONString(prodata)).build(), YDConf.FORM_OPERATION.start);
+            }
+
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void queryOrder2(){
+
+    }
+
+
+
+}