wzy месяцев назад: 4
Родитель
Сommit
f038ff154a

+ 8 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/entity/BillTypeID.java

@@ -0,0 +1,8 @@
+package com.malk.jianhui.entity;
+
+import lombok.Data;
+
+@Data
+public class BillTypeID {
+    private String FNUMBER;
+}

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

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

+ 30 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/entity/Model.java

@@ -0,0 +1,30 @@
+package com.malk.jianhui.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class Model {
+    private int FID;
+    private BillTypeID FBillTypeID;
+    private String FDate;
+    private FNumber FSaleOrgId;
+    private FNumber FCustId;
+    private FNumber FReceiveId;
+    private FNumber FSaleDeptId;
+    private FNumber FSalerId;
+    private FNumber FSettleId;
+    private FNumber FChargeId;
+    private int FNetOrderBillId;
+    private int FOppID;
+    private boolean FISINIT;
+    private boolean FIsMobile;
+    private int FContractId;
+    private boolean FIsUseOEMBomPush;
+    private int FXPKID_H;
+    private boolean FIsUseDrpSalePOPush;
+    private boolean FIsCreateStraightOutIN;
+    private SaleOrderFinance SaleOrderFinance;
+    private List<SaleOrderEntry> FSaleOrderEntry;
+}

+ 23 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/entity/SaleOrder.java

@@ -0,0 +1,23 @@
+package com.malk.jianhui.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SaleOrder {
+        private List<String> NeedUpDateFields;
+        private List<String> NeedReturnFields;
+        private boolean IsDeleteEntry = true;
+        private String SubSystemId;
+        private boolean IsVerifyBaseDataField = false;
+        private boolean IsEntryBatchFill = true;
+        private boolean ValidateFlag = true;
+        private boolean NumberSearch = true;
+        private boolean IsAutoAdjustField = true;
+        private String InterationFlags;
+        private String IgnoreInterationFlag;
+        private boolean IsControlPrecision = false;
+        private boolean ValidateRepeatJson = false;
+        private Model Model;
+}

+ 29 - 0
mjava-jianhui/src/main/java/com/malk/jianhui/entity/SaleOrderEntry.java

@@ -0,0 +1,29 @@
+package com.malk.jianhui.entity;
+
+import lombok.Data;
+
+@Data
+public class SaleOrderEntry {
+    private FNumber FMaterialId;
+    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_WMVJ_Decimal;
+    private double F_WMVJ_Amount;
+    private double F_WMVJ_Qty;
+    private boolean F_WMVJ_CheckBox;
+}

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

@@ -0,0 +1,16 @@
+package com.malk.jianhui.entity;
+
+import lombok.Data;
+
+@Data
+public class SaleOrderFinance {
+    private FNumber FSettleCurrId;
+    private boolean FIsIncludedTax;
+    private boolean FIsPriceExcludeTax;
+    private FNumber FExchangeTypeId;
+    private double FMarginLevel;
+    private double FMargin;
+    private boolean FOverOrgTransDirect;
+    private double FAllDisCount;
+    private int FXPKID_F;
+}

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

@@ -0,0 +1,22 @@
+package com.malk.jianhui.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;
+}

+ 148 - 21
mjava-jianhui/src/main/java/com/malk/jianhui/service/impl/JianhuiServiceImpl.java

@@ -1,32 +1,30 @@
 package com.malk.jianhui.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
 import com.kingdee.bos.webapi.entity.IdentifyInfo;
+import com.kingdee.bos.webapi.entity.RepoResult;
 import com.kingdee.bos.webapi.entity.RepoRet;
-import com.kingdee.bos.webapi.entity.SaveParam;
-import com.kingdee.bos.webapi.entity.SaveResult;
-import com.malk.jianhui.common.SeqHelper;
 import com.malk.jianhui.config.KDWebApiConf;
-import com.malk.jianhui.entity.Customer;
+import com.malk.jianhui.entity.*;
 import com.malk.jianhui.service.JianhuiService;
 import com.malk.server.common.McR;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.kingdee.bos.webapi.sdk.K3CloudApi;
-import static org.junit.Assert.fail;
 
-import java.io.*;
-import java.util.Properties;
-import java.util.UUID;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.Assert.fail;
 
 @Service
 public class JianhuiServiceImpl implements JianhuiService {
     @Autowired
     private KDWebApiConf kdWebApiConf;
 
-    @Override
-    //保存采购订单
-    public McR savePurchaseOrder() {
+    private IdentifyInfo initIden(){
         //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
         //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
         //读取配置,初始化SDK
@@ -35,26 +33,141 @@ public class JianhuiServiceImpl implements JianhuiService {
         iden.setAppId(kdWebApiConf.getXKDApiAppID());
         iden.setdCID(kdWebApiConf.getXKDApiAcctID());
         iden.setAppSecret(kdWebApiConf.getXKDApiAppSec());
-        iden.setlCID(2052);
         iden.setServerUrl(kdWebApiConf.getXKDApiServerUrl());
 
+        return iden;
+    }
+
+    @Override
+    //保存采购订单
+    public McR savePurchaseOrder() {
+        IdentifyInfo iden = initIden();
+
         K3CloudApi client = new K3CloudApi(iden);
+
         //请求参数,要求为json字符串
-        String jsonData = "{\"CreateOrgId\":0,\"Number\":\"\",\"Id\":\"\",\"IsSortBySeq\":\"false\"}";
-        try{
+        SaleOrder saleOrder = new SaleOrder();
+        Model model = new Model();
+
+        //基本信息
+        BillTypeID FBillTypeID = new BillTypeID();
+        FBillTypeID.setFNUMBER("XSDD01_SYS");
+
+        FNumber FSaleOrgId = new FNumber();
+        FSaleOrgId.setFNumber("100");
+
+        FNumber FCustId = new FNumber();
+        FCustId.setFNumber("C0004");
+
+        FNumber FReceiveId = new FNumber();
+        FReceiveId.setFNumber("C0004");
+
+        FNumber FSaleDeptId = new FNumber();
+        FSaleDeptId.setFNumber("BM000001");
+
+        FNumber FSalerId = new FNumber();
+        FSalerId.setFNumber("0002_0002_1");
+
+        FNumber FSettleId = new FNumber();
+        FSettleId.setFNumber("C0004");
+
+        FNumber FChargeId = new FNumber();
+        FChargeId.setFNumber("C0004");
+
+        //财务信息
+        SaleOrderFinance saleOrderFinance = new SaleOrderFinance();
+        FNumber FSettleCurrId = new FNumber();
+        FSettleCurrId.setFNumber("PRE001");
+
+        FNumber FExchangeTypeId = new FNumber();
+        FExchangeTypeId.setFNumber("HLTX01_SYS");
+
+        saleOrderFinance.setFSettleCurrId(FSettleCurrId);
+        saleOrderFinance.setFExchangeTypeId(FExchangeTypeId);
+        saleOrderFinance.setFIsIncludedTax(true);
+        saleOrderFinance.setFIsPriceExcludeTax(true);
+        saleOrderFinance.setFMarginLevel(0);
+        saleOrderFinance.setFMargin(0);
+        saleOrderFinance.setFOverOrgTransDirect(false);
+        saleOrderFinance.setFAllDisCount(0);
+        saleOrderFinance.setFXPKID_F(0);
+
+        //明细信息
+        List<SaleOrderEntry> FSaleOrderEntry = new ArrayList<>();
+        SaleOrderEntry saleOrderEntry = new SaleOrderEntry();
+        FNumber FMaterialId = new FNumber("0001");
+        FNumber FUnitID = new FNumber("tai");
+        FNumber FPriceUnitId = new FNumber("tai");
+        FNumber FStockOrgId = new FNumber("100");
+        FNumber FSettleOrgIds = new FNumber("100");
+        FNumber FOwnerId = new FNumber("100");
+        saleOrderEntry.setFMaterialId(FMaterialId);
+        saleOrderEntry.setFUnitID(FUnitID);
+        saleOrderEntry.setFPriceUnitId(FPriceUnitId);
+        saleOrderEntry.setFStockFNumber(FStockOrgId);
+        saleOrderEntry.setFSettleOrgIds(FSettleOrgIds);
+        saleOrderEntry.setFOwnerId(FOwnerId);
+        saleOrderEntry.setFQty(1);
+        saleOrderEntry.setFPriceUnitQty(1);
+        saleOrderEntry.setFPrice(100);
+        saleOrderEntry.setFTaxPrice(110);
+        saleOrderEntry.setFIsFree(false);
+        saleOrderEntry.setFEntryTaxRate(10);
+        saleOrderEntry.setFTaxAmount_LC(10);
+        saleOrderEntry.setFAmount_LC(100);
+        saleOrderEntry.setFAllAmount_LC(110);
+        saleOrderEntry.setFDeliveryDate("2025-01-16 15:13:12");
+        saleOrderEntry.setFOwnerTypeId("BD_OwnerOrg");
+        saleOrderEntry.setFEntryNote("");
+        saleOrderEntry.setF_WMVJ_Decimal(39913500);
+        saleOrderEntry.setF_WMVJ_Amount(111);
+        saleOrderEntry.setF_WMVJ_Qty(12);
+        saleOrderEntry.setF_WMVJ_CheckBox(false);
+        FSaleOrderEntry.add(saleOrderEntry);
+
+        model.setFID(0);
+        model.setFBillTypeID(FBillTypeID);
+        model.setFDate("2025-01-16 00:00:00");
+        model.setFSaleOrgId(FSaleOrgId);
+        model.setFCustId(FCustId);
+        model.setFReceiveId(FReceiveId);
+        model.setFSaleDeptId(FSaleDeptId);
+        model.setFSalerId(FSalerId);
+        model.setFSettleId(FSettleId);
+        model.setFChargeId(FChargeId);
+        model.setFNetOrderBillId(0);
+        model.setFOppID(0);
+        model.setFISINIT(false);
+        model.setFIsMobile(false);
+        model.setFContractId(0);
+        model.setFIsUseOEMBomPush(false);
+        model.setFXPKID_H(0);
+        model.setFIsUseDrpSalePOPush(false);
+        model.setFIsCreateStraightOutIN(false);
+        model.setSaleOrderFinance(saleOrderFinance);
+        model.setFSaleOrderEntry(FSaleOrderEntry);
+
+        saleOrder.setModel(model);
+
+        String jsonData = JSONObject.toJSONString(saleOrder);
+
+       try{
             //业务对象标识
-            String formId = "PUR_PurchaseOrder";
+            String formId = "SAL_SaleOrder";
             //调用接口
-            String resultJson = client.view(formId,jsonData);
-
+            String resultJson = client.save(formId,jsonData);
             //用于记录结果
             Gson gson = new Gson();
             //对返回结果进行解析和校验
             RepoRet repoRet = gson.fromJson(resultJson, RepoRet.class);
-            if (repoRet.getResult().getResponseStatus().isIsSuccess()) {
-                System.out.printf("接口返回结果: %s%n", gson.toJson(repoRet.getResult()));
-            } else {
-                fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus()));
+
+            if (isTrue(repoRet)){
+                String id = repoRet.getResult().getId();
+                Submit submit = new Submit();
+                submit.setIds(id);
+                //提交销售订单
+                String resultJson2 = client.submit("SAL_SaleOrder", JSONObject.toJSONString(submit));
+                isTrue(gson.fromJson(resultJson2,RepoRet.class));
             }
         } catch (Exception e) {
             fail(e.getMessage());
@@ -62,4 +175,18 @@ public class JianhuiServiceImpl implements JianhuiService {
 
         return McR.success();
     }
+
+    private boolean isTrue(RepoRet repoRet){
+        Gson gson = new Gson();
+
+        if (repoRet.getResult().getResponseStatus().isIsSuccess()) {
+            System.out.printf("接口返回结果: %s%n", gson.toJson(repoRet.getResult()));
+            return true;
+        } else {
+            fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus()));
+            return false;
+        }
+    }
+
+
 }

+ 5 - 0
mjava-jianhui/src/main/resources/kdwebapi.properties

@@ -0,0 +1,5 @@
+X-KDApi-AcctID =674fb46c1143b6
+X-KDApi-AppID=298516_1YdCQ8FK0loe1a0FT+Rt1xzvzMW8TPpo
+X-KDApi-AppSec =c722304cc9b64e5fb1bce4717e8434c8
+X-KDApi-UserName =Administrator
+X-KDApi-ServerUrl=http://60.204.140.168:8689/k3cloud/