|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|