| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397 |
- package com.malk.jinlun;
- import com.alibaba.fastjson.JSONObject;
- import com.auth0.jwt.JWT;
- import com.auth0.jwt.algorithms.Algorithm;
- 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.sdk.K3CloudApi;
- import com.kingdee.bos.webapi.sdk.WebApiClient;
- import com.malk.jinlun.config.KDWebApiConf;
- import com.malk.jinlun.entity.*;
- import com.malk.jinlun.service.CpClient;
- import com.malk.jinlun.service.JinlunService;
- import com.malk.jinlun.service.JinlunTaskService;
- import com.malk.server.common.McR;
- import com.malk.utils.UtilHttp;
- import com.malk.utils.UtilMap;
- import com.malk.utils.UtilToken;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- 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.nio.charset.StandardCharsets;
- import java.nio.file.Files;
- import java.nio.file.Paths;
- import java.security.MessageDigest;
- import java.util.*;
- @Slf4j
- @SpringBootTest
- @RunWith(SpringRunner.class)
- public class DdTest {
- @Autowired
- private KDWebApiConf kdWebApiConf;
- @Autowired
- private CpClient cpClient;
- @Autowired
- private JinlunService jinlunService;
- @Autowired
- private JinlunTaskService jinlunTaskService;
- @Test
- public void test2() {
- jinlunTaskService.syncMaterial();
- }
- @Test
- public void test4() {
- jinlunTaskService.syncSaleOut();
- }
- @Test
- public void test5() {
- jinlunTaskService.syncReceipt();
- }
- @Test
- public void test6() {
- jinlunTaskService.syncReceivable();
- }
- @Test
- public void test7() {
- jinlunTaskService.syncSaleReturn();
- }
- @Test
- public void test8() {
- try {
- String filePath = "C:\\Users\\EDY\\Pictures\\4.png"; // 替换为你的文件路径
- // 1. 读取文件为字节数组
- byte[] fileBytes = Files.readAllBytes(Paths.get(filePath));
- // 2. 转换为Base64字符串
- String base64String = Base64.getEncoder().encodeToString(fileBytes);
- System.out.println("Base64编码结果:");
- System.out.println(base64String);
- K3CloudApi client = new K3CloudApi(initIden());
- Map map = new HashMap();
- map.put("FileName", "4.png");//文件名
- map.put("FormId", "SAL_SaleOrder");//表单id
- map.put("IsLast", true);//是否最后一次上传
- map.put("InterId", "104784");//单据内码
- // map.put("Entrykey", "");//单据体标识
- // map.put("EntryinterId", "-1");//分录内码
- map.put("BillNO", "S301-251118005");//单据编号
- // map.put("AliasFileName", "test");
- // map.put("FileId", "");
- map.put("SendByte", base64String);//文件字节数组转base64后的字符串
- String resultJson = client.attachmentUpload(JSONObject.toJSONString(map));
- Map parse = (Map) JSONObject.parse(resultJson);
- Map map1 = UtilMap.getMap(parse, "Result");
- String fileId = UtilMap.getString(map1, "FileId");
- System.out.println(fileId);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- @Test
- public void test9() {
- //查询云枢客户单据详情
- String objectId = "264ae110db184912a63af53738cd4a0f";
- Map saleOrder = cpClient.getCpBo("XSDD", objectId, null);
- Map saleOrderData = cpClient.getCpBoResultData(saleOrder);
- //请求参数,要求为json字符串
- Save save = new Save();
- SaleOrderModel saleOrderModel = new SaleOrderModel();
- //基本信息
- FNumber FBillTypeID = new FNumber(UtilMap.getString(saleOrderData, "Dropdown1758339062589_key"));//单据类型
- String FDate = "2025-11-18 00:00:00";//日期
- FNumber FCustId = new FNumber(UtilMap.getString(saleOrderData, "ShortText1760426148831"));//客户
- String F_NLD_DDTYPE = UtilMap.getString(saleOrderData, "Dropdown1758340059699_key");//订单类型
- FNumber FSalerId = new FNumber(UtilMap.getString(saleOrderData, "ShortText1760421121913"));//销售员
- FSTAFFNUMBER F_Sl_gendanyuan = new FSTAFFNUMBER(UtilMap.getString(saleOrderData, "Text1760421147555"));//跟单员
- String FBusinessType = UtilMap.getString(saleOrderData,"Dropdown1758339265813_key");//业务类型
- String F_WGR_Combo_re5 = UtilMap.getString(saleOrderData,"Dropdown1758340112723_key");//订单要求
- FNumber FHEADLOCID = new FNumber(UtilMap.getString(saleOrderData, "ShortText1760507577966"));//交货地点
- String FNote = UtilMap.getString(saleOrderData,"LongText1758339516625");//备注
- String F_Sl_customerbillno = UtilMap.getString(saleOrderData,"ShortText1758340044946");//客户订单号
- saleOrderModel.setFBillTypeID(FBillTypeID);
- saleOrderModel.setFDate(FDate);
- saleOrderModel.setFCustId(FCustId);
- saleOrderModel.setF_NLD_DDTYPE(F_NLD_DDTYPE);
- saleOrderModel.setFSalerId(FSalerId);
- saleOrderModel.setF_Sl_gendanyuan(F_Sl_gendanyuan);
- saleOrderModel.setFBusinessType(FBusinessType);
- saleOrderModel.setF_WGR_Combo_re5(F_WGR_Combo_re5);
- saleOrderModel.setFHEADLOCID(FHEADLOCID);
- saleOrderModel.setFNote(FNote);
- saleOrderModel.setF_Sl_customerbillno(F_Sl_customerbillno);
- //财务信息
- SaleOrderFinance saleOrderFinance = new SaleOrderFinance();
- FNumber FSettleCurrId = new FNumber(UtilMap.getString(saleOrderData, "Dropdown1758339227503_key"));//结算币别
- FNumber FRecConditionId = new FNumber(UtilMap.getString(saleOrderData, "Dropdown1758339314401_key"));//收款条件
- FNumber FSettleModeId = new FNumber(UtilMap.getString(saleOrderData, "Dropdown1758340854092_key"));//结算方式
- boolean FIsIncludedTax = UtilMap.getBoolean(saleOrderData,"Logic1758340099868");//是否含税
- boolean FIsPriceExcludeTax = UtilMap.getBoolean(saleOrderData,"Logic1758340955492");//价外税
- saleOrderFinance.setFSettleCurrId(FSettleCurrId);
- saleOrderFinance.setFRecConditionId(FRecConditionId);
- saleOrderFinance.setFSettleModeId(FSettleModeId);
- saleOrderFinance.setFIsIncludedTax(FIsIncludedTax);
- saleOrderFinance.setFIsPriceExcludeTax(FIsPriceExcludeTax);
- saleOrderModel.setFSaleOrderFinance(saleOrderFinance);
- //明细信息
- List<Map> saleDetailList = UtilMap.getList(saleOrderData, "Sheet1758341252878");
- List<SaleOrderEntry> saleOrderEntryList = new ArrayList<>();
- String[] fileIds = {"276d028be0d5478695673cc985f058f2","70ae9854204f4365a8ac3baa48a5b9bd"};
- int i=0;
- for (Map saleDetail : saleDetailList) {
- FNumber FMaterialId = new FNumber(UtilMap.getString(saleDetail, "ShortText1758341332222"));//物料编码
- FNumber FUnitID = new FNumber("Kg");//销售单位
- Double FQty = 1.0;//销售数量
- FNumber FPriceUnitId = new FNumber("Kg");//计价单位
- Double FPriceUnitQty = 1.0;//计价数量
- String F_Sl_XSTYPE = UtilMap.getString(saleDetail, "Dropdown1758341293022_key");//产品类别
- Double FTaxPrice = 1.0;//含税单价
- boolean FIsFree = UtilMap.getBoolean(saleDetail,"Logic1758341430353");//是否赠品
- Double FEntryTaxRate = UtilMap.getDouble(saleDetail, "Number1758349078527");//税率
- // String FDeliveryDate = UtilMap.getString(saleDetail,"Date1758341499356");//客户交期
- // String FEntryNote = UtilMap.getString(saleDetail,"Date1758341499356");//备注
- Double F_VMKV_MPPRICE = 1.0;//报价价格
- // String F_VMKV_SCCQ1 = UtilMap.getString(saleDetail,"Dropdown1760425152219_key");//生产厂区
- // String F_VMKV_JSYQ = UtilMap.getString(saleDetail,"ShortText1762135907570");//技术要求
- // String F_NLD_BR = UtilMap.getString(saleDetail,"ShortText1762135907570");//剩磁(Br)
- // String F_NLD_Hcj = UtilMap.getString(saleDetail,"ShortText1762135907570");//内禀矫顽力(Hcj)
- // String F_NLD_Hcb = UtilMap.getString(saleDetail,"ShortText1762135907570");//磁感矫顽力(Hcb)
- // String F_NLD_BH = UtilMap.getString(saleDetail,"ShortText1762135907570");//最大磁能积(BH)max
- // String F_NLD_Hk = UtilMap.getString(saleDetail,"ShortText1762135907570");//方形度Hk/Hcj
- // String F_VMKV_GXYQ = UtilMap.getString(saleDetail,"ShortText1762135907570");//公差要求
- //
- // boolean FDeliveryControl = UtilMap.getBoolean(saleDetail,"Logic1763091193161");//控制发货数量
- // Double FDeliveryMaxQty = UtilMap.getDouble(saleDetail, "Number1763091294543");//发货上限
- // Double FDeliveryMinQty = UtilMap.getDouble(saleDetail, "Number1763091312359");//发货下限
- //todo 订单图纸附件上传
- String file = fileIds[i];
- i++;
- SaleOrderEntry saleOrderEntry = new SaleOrderEntry();
- saleOrderEntry.setFMaterialId(FMaterialId);
- saleOrderEntry.setFUnitID(FUnitID);
- saleOrderEntry.setFPriceUnitId(FPriceUnitId);
- saleOrderEntry.setFPriceUnitQty(FPriceUnitQty);
- saleOrderEntry.setF_Sl_XSTYPE(F_Sl_XSTYPE);
- saleOrderEntry.setFQty(FQty);
- saleOrderEntry.setFTaxPrice(FTaxPrice);
- saleOrderEntry.setFIsFree(FIsFree);
- saleOrderEntry.setFEntryTaxRate(FEntryTaxRate);
- // saleOrderEntry.setFDeliveryDate(FDeliveryDate);
- // saleOrderEntry.setFEntryNote(FEntryNote);
- saleOrderEntry.setF_VMKV_MPPRICE(F_VMKV_MPPRICE);
- // saleOrderEntry.setF_VMKV_SCCQ1(F_VMKV_SCCQ1);
- // saleOrderEntry.setF_VMKV_JSYQ(F_VMKV_JSYQ);
- // saleOrderEntry.setF_NLD_BR(F_NLD_BR);
- // saleOrderEntry.setF_NLD_Hcj(F_NLD_Hcj);
- // saleOrderEntry.setF_NLD_Hcb(F_NLD_Hcb);
- // saleOrderEntry.setF_NLD_BH(F_NLD_BH);
- // saleOrderEntry.setF_NLD_Hk(F_NLD_Hk);
- // saleOrderEntry.setF_VMKV_GXYQ(F_VMKV_GXYQ);
- // saleOrderEntry.setFDeliveryControl(FDeliveryControl);
- // saleOrderEntry.setFDeliveryMaxQty(FDeliveryMaxQty);
- // saleOrderEntry.setFDeliveryMinQty(FDeliveryMinQty);
- saleOrderEntry.setF_Sl_Attachment(file);
- saleOrderEntryList.add(saleOrderEntry);
- }
- saleOrderModel.setFSaleOrderEntry(saleOrderEntryList);
- save.setModel(saleOrderModel);
- Gson gson2 = new Gson();
- String jsonData = gson2.toJson(save);
- log.info(jsonData);
- K3CloudApi client = new K3CloudApi(initIden());
- //业务对象标识
- String formId = "SAL_SaleOrder";
- //调用接口
- String resultJson = "";
- try {
- resultJson = client.save(formId,jsonData);
- }catch (Exception e){
- throw new RuntimeException(e);
- }
- //用于记录结果
- Gson gson = new Gson();
- //对返回结果进行解析和校验
- RepoRet repoRet = gson.fromJson(resultJson, RepoRet.class);
- }
- @Test
- public void test10(){
- try {
- String acctID = "66816d8a115ffc";
- String username = "Administrator";
- String appId = "295561_7e1I0bHHVqGaSZxJ7Z4pVxxs7L5bxMMI";
- String appSec = "0f51467e39764b548ec3d75159dfbd2b";
- String timestamp = System.currentTimeMillis()/1000 + "";
- String[] arr = {acctID,username,appId,appSec,timestamp};
- Arrays.sort(arr, (a, b) -> a.compareTo(b));
- System.out.println("排序结果:");
- for (String s : arr) {
- System.out.println(s);
- }
- String str = String.join("", arr);
- // 1. 创建 MessageDigest 实例,指定 SHA-256 算法
- MessageDigest digest = MessageDigest.getInstance("SHA-256");
- // 2. 输入字符串转换为字节数组,并计算哈希值
- byte[] hashBytes = digest.digest(str.getBytes(StandardCharsets.UTF_8));
- // 3. 将字节数组转换为十六进制字符串
- StringBuilder hexString = new StringBuilder();
- for (byte b : hashBytes) {
- String hex = Integer.toHexString(0xff & b);
- if (hex.length() == 1) {
- hexString.append('0'); // 补零
- }
- hexString.append(hex);
- }
- // 4. 输出结果
- System.out.println("SHA-256 哈希值: " + hexString.toString());
- }catch (Exception e){
- throw new RuntimeException(e);
- }
- }
- @Test
- public void test11(){
- // String input = "RElSRV82NjdmODEyMmJkYzM0NDUyYWMyYjM3Mjg5NTAzYjhhMjEucG5n";
- String input = "RElSRV9iNWViMTdlZTA1NTI0OTU1YmM3MjM3YWEyMzU5OTY5MDIucG5n";
- String s = new String(Base64.getUrlDecoder().decode(input), StandardCharsets.UTF_8);
- System.out.println(s);
- }
- @Test
- public void test12() {
- jinlunTaskService.syncXingneng();
- }
- @Test
- public void test13() {
- McR customerDzmx = jinlunService.getCustomerDzmx("2025-06-01", "2025-12-30", "ASTAR CO., LTD.");
- System.out.println(customerDzmx);
- }
- @Test
- public void test14() {
- McR customerWqqk = jinlunService.getCustomerWqqk("2025-06-01", "ASTAR CO., LTD.");
- System.out.println(customerWqqk);
- }
- 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 test3() {
- testGetAccessToken();
- testGetAccessToken();
- }
- @Test
- public void testGetAccessToken(){
- String accessToken = UtilToken.get("invalid-token-cloudpivot");
- if (StringUtils.isNotBlank(accessToken)) {
- log.info(accessToken);
- } else {
- Map<String,Object> params = new HashMap();
- params.put("grant_type","client_credentials");
- params.put("client_id","xclient");
- params.put("client_secret","0a417ecce58c31b32364ce19ca8fcd15");
- String s = UtilHttp.doPost("http://192.168.0.12/api/oauth/token", null, params, new HashMap());
- Map result = (Map) JSONObject.parse(s);
- accessToken = "bearer" + UtilMap.getString(result, "access_token");
- long expiresIn = UtilMap.getLong(result, "expires_in") * 1000;
- UtilToken.put("invalid-token-cloudpivot", accessToken, expiresIn);
- log.info(accessToken);
- }
- }
- }
|