wangxin 1 месяц назад
Родитель
Сommit
87f8112a1f

BIN
lib/gson-2.8.0.jar


BIN
lib/k3cloud-webapi-sdk-java1.8-v8.2.0.jar


+ 10 - 10
pom.xml

@@ -334,17 +334,17 @@
             <version>3.5.2</version>
         </dependency>
 
-<!--        <dependency>-->
-<!--            <groupId>org.testng</groupId>-->
-<!--            <artifactId>testng</artifactId>-->
-<!--            <version>7.4.0</version>-->
-<!--            <scope>compile</scope>-->
-<!--        </dependency>-->
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+            <version>7.4.0</version>
+            <scope>compile</scope>
+        </dependency>
 
-<!--        <dependency>-->
-<!--            <groupId>junit</groupId>-->
-<!--            <artifactId>junit</artifactId>-->
-<!--        </dependency>-->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
 
         <!--        <dependency>-->
 <!--            <groupId>com.ezhizao</groupId>-->

+ 24 - 0
src/main/java/cn/ezhizao/javasdk/TestCaseSuit.java

@@ -0,0 +1,24 @@
+package cn.ezhizao.javasdk;
+
+import cn.ezhizao.javasdk.accountbalance.GlrptAccoutBalanceTest;
+import cn.ezhizao.javasdk.customer.BdCustomerTest;
+import cn.ezhizao.javasdk.material.BdMaterialTest;
+import cn.ezhizao.javasdk.material.bdMaterialFlexTest;
+
+import cn.ezhizao.javasdk.purpurchaseorder.PurTest;
+import cn.ezhizao.javasdk.saleorder.SavexSaleOrder;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({ BdMaterialTest.class,
+        PurTest.class, GlrptAccoutBalanceTest.class,
+        bdMaterialFlexTest.class, PurTest.class,
+        SavexSaleOrder.class, BdCustomerTest.class
+})
+
+
+
+public class TestCaseSuit {
+}

+ 333 - 333
src/main/java/cn/ezhizao/javasdk/purpurchaseorder/PurTest.java

@@ -1,336 +1,336 @@
 package cn.ezhizao.javasdk.purpurchaseorder;
-//import java.lang.reflect.Field;
-//import java.util.ArrayList;
-//import java.util.List;
-//import java.util.UUID;
-//import cn.ezhizao.javasdk.common.SeqHelper;
-//
-//import com.google.gson.Gson;
-//import com.google.gson.JsonArray;
-//import com.google.gson.JsonObject;
-//import com.kingdee.bos.webapi.entity.RepoRet;
-//import com.kingdee.bos.webapi.sdk.K3CloudApi;
-//import org.junit.FixMethodOrder;
-//import org.junit.runners.MethodSorters;
-//import org.testng.annotations.Test;
-//
-//import static junit.framework.TestCase.fail;
-//
-//@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+import cn.ezhizao.javasdk.common.SeqHelper;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.kingdee.bos.webapi.entity.RepoRet;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
+import org.junit.FixMethodOrder;
+import org.junit.runners.MethodSorters;
+import org.testng.annotations.Test;
+
+import static junit.framework.TestCase.fail;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
 public class   PurTest {
-//    K3CloudApi api = new K3CloudApi();
-//    static String FNumber = SeqHelper.genNumber("CGDD");
-//    static String FName = "aucgdd_" + UUID.randomUUID().toString();
-//
-//
-//
-//    /* 生产订单查询 */
-//    @Test
-//    public void executeBillQuery() throws Exception {
-//        // 创建 KingdeeJson 对象并设置字段值
-//        FBillHead fBillHead = new FBillHead();
-//        // 获取 fBillHead 类的所有字段
-//        Field[] fields = fBillHead.getClass().getDeclaredFields();
-//        // 构建 fieldKeys 参数字符串
-//        StringBuilder fieldKeysBuilder = new StringBuilder();
-//        for (Field field : fields) {
-//            // 获取字段名
-//            String fieldName = field.getName();
-//            // 根据实际需求处理字段名,例如驼峰转下划线等
-//            // 这里假设直接使用字段名,实际可能需要转换
-//
-//            fieldKeysBuilder.append(fieldName).append(",");
-//        }
-//        // 去掉最后一个逗号
-//        if (fieldKeysBuilder.length() > 0) {
-//            fieldKeysBuilder.deleteCharAt(fieldKeysBuilder.length() - 1);
-//        }
-//        KingdDeeJson kingdeeJson = new KingdDeeJson();
-//        String fieldKeys = fieldKeysBuilder.toString();
-//        kingdeeJson.setFieldKeys(fieldKeys);
-//        kingdeeJson.setFormId("PRD_MO");
-//        kingdeeJson.setTopRowCount(0);
-//        kingdeeJson.setLimit(10);
-//        kingdeeJson.setStartRow(0);
-////        kingdeeJson.setFilterString("fId = 100193");
-//        kingdeeJson.setOrderString("FID ASC");
-//        Gson gson = new Gson();
-//        String json = gson.toJson(kingdeeJson);
-//        List<List<Object>> lists = api.executeBillQuery(json);
-//
-//        List<FBillHead> fBillHeadList = new ArrayList<>();
-//
-//        System.out.println("采购订单保存接口: " + lists);
-//        json=gson.toJson(lists);
-//        System.out.println("json: " + json);
-//    }
-//
-//    /** 生产用料清单查询 */
-//    @Test
-//    public void executeBillQuery1() throws Exception {
-//        // 创建 KingdeeJson 对象并设置字段值
-//        FProductionMaterialHead fBillHead = new FProductionMaterialHead();
-//        // 获取 fBillHead 类的所有字段
-//        Field[] fields = fBillHead.getClass().getDeclaredFields();
-//        // 构建 fieldKeys 参数字符串
-//        StringBuilder fieldKeysBuilder = new StringBuilder();
-//        for (Field field : fields) {
-//            // 获取字段名
-//            String fieldName = field.getName();
-//            // 根据实际需求处理字段名,例如驼峰转下划线等
-//            // 这里假设直接使用字段名,实际可能需要转换
-//            fieldKeysBuilder.append(fieldName).append(",");
-//        }
-//        // 去掉最后一个逗号
-//        if (fieldKeysBuilder.length() > 0) {
-//            fieldKeysBuilder.deleteCharAt(fieldKeysBuilder.length() - 1);
-//        }
-//        KingdDeeJson kingdeeJson = new KingdDeeJson();
-//        String fieldKeys = fieldKeysBuilder.toString();
-//        kingdeeJson.setFieldKeys(fieldKeys);
-//        kingdeeJson.setFormId("PRD_PPBOM");
-//        kingdeeJson.setTopRowCount(0);
-//        kingdeeJson.setLimit(10);
-//        kingdeeJson.setStartRow(0);
-////        kingdeeJson.setFilterString("fId = 100193");
-//        kingdeeJson.setOrderString("FID ASC");
-//        Gson gson = new Gson();
-//        String json = gson.toJson(kingdeeJson);
-//        List<List<Object>> lists = api.executeBillQuery(json);
-//
-//        List<FProductionMaterialHead> fBillHeadList = new ArrayList<>();
-//
-//        System.out.println("采购订单保存接口: " + lists);
-//        json=gson.toJson(lists);
-//        System.out.println("json: " + json);
-//    }
-//
-//    /** 生产订单保存 */
-//    @Test
-//    public void executeBillQuery2() throws Exception {
-//        // 创建 KingdeeJson 对象并设置字段值
-//        FProductionMaterialTokenHead fBillHead = new FProductionMaterialTokenHead();
-//        // 获取 fBillHead 类的所有字段
-//        Field[] fields = fBillHead.getClass().getDeclaredFields();
-//        // 构建 fieldKeys 参数字符串
-//        StringBuilder fieldKeysBuilder = new StringBuilder();
-//        for (Field field : fields) {
-//            // 获取字段名
-//            String fieldName = field.getName();
-//            // 根据实际需求处理字段名,例如驼峰转下划线等
-//            // 这里假设直接使用字段名,实际可能需要转换
-//            fieldKeysBuilder.append(fieldName).append(",");
-//        }
-//        // 去掉最后一个逗号
-//        if (fieldKeysBuilder.length() > 0) {
-//            fieldKeysBuilder.deleteCharAt(fieldKeysBuilder.length() - 1);
-//        }
-//        KingdDeeJson kingdeeJson = new KingdDeeJson();
-//        String fieldKeys = fieldKeysBuilder.toString();
-//        kingdeeJson.setFieldKeys(fieldKeys);
-//        kingdeeJson.setFormId("PRD_PickMtrl");
-//        kingdeeJson.setTopRowCount(0);
-//        kingdeeJson.setLimit(10);
-//        kingdeeJson.setStartRow(0);
-////        kingdeeJson.setFilterString("fId = 100193");
-//        kingdeeJson.setOrderString("Fseq ASC");
-//        Gson gson = new Gson();
-//        String json = gson.toJson(kingdeeJson);
-//        List<List<Object>> lists = api.executeBillQuery(json);
-//
-//        List<FProductionMaterialTokenHead> fBillHeadList = new ArrayList<>();
-//
-//        System.out.println("采购订单保存接口: " + lists);
-//        json=gson.toJson(lists);
-//        System.out.println("json: " + json);
-//    }
-//
-//    /** 生产补料单 */
-//    @Test
-//    public void executeBillQuery3() throws Exception {
-//        // 创建 KingdeeJson 对象并设置字段值
-//        FProductionFeedMaterialHead fBillHead = new FProductionFeedMaterialHead();
-//        // 获取 fBillHead 类的所有字段
-//        Field[] fields = fBillHead.getClass().getDeclaredFields();
-//        // 构建 fieldKeys 参数字符串
-//        StringBuilder fieldKeysBuilder = new StringBuilder();
-//        for (Field field : fields) {
-//            // 获取字段名
-//            String fieldName = field.getName();
-//            // 根据实际需求处理字段名,例如驼峰转下划线等
-//            // 这里假设直接使用字段名,实际可能需要转换
-//            fieldKeysBuilder.append(fieldName).append(",");
-//        }
-//        // 去掉最后一个逗号
-//        if (fieldKeysBuilder.length() > 0) {
-//            fieldKeysBuilder.deleteCharAt(fieldKeysBuilder.length() - 1);
-//        }
-//        KingdDeeJson kingdeeJson = new KingdDeeJson();
-//        String fieldKeys = fieldKeysBuilder.toString();
-//        kingdeeJson.setFieldKeys(fieldKeys);
-//        kingdeeJson.setFormId("PRD_FeedMtrl");
-//        kingdeeJson.setTopRowCount(0);
-//        kingdeeJson.setLimit(10);
-//        kingdeeJson.setStartRow(0);
-////        kingdeeJson.setFilterString("fId = 100193");
-//        kingdeeJson.setOrderString("Fseq ASC");
-//        Gson gson = new Gson();
-//        String json = gson.toJson(kingdeeJson);
-//        List<List<Object>> lists = api.executeBillQuery(json);
-//
-//        List<FProductionFeedMaterialHead> fBillHeadList = new ArrayList<>();
-//
-//        System.out.println("采购订单保存接口: " + lists);
-//        json=gson.toJson(lists);
-//        System.out.println("json: " + json);
-//    }
-//    /** 生产退料单 */
-//
-//    @Test
-//    public void executeBillQuery4() throws Exception {
-//        // 创建 KingdeeJson 对象并设置字段值
-//        FProductionReturnMaterialHead fBillHead = new FProductionReturnMaterialHead();
-//        // 获取 fBillHead 类的所有字段
-//        Field[] fields = fBillHead.getClass().getDeclaredFields();
-//        // 构建 fieldKeys 参数字符串
-//        StringBuilder fieldKeysBuilder = new StringBuilder();
-//        for (Field field : fields) {
-//            // 获取字段名
-//            String fieldName = field.getName();
-//            // 根据实际需求处理字段名,例如驼峰转下划线等
-//            // 这里假设直接使用字段名,实际可能需要转换
-//            fieldKeysBuilder.append(fieldName).append(",");
-//        }
-//        // 去掉最后一个逗号
-//        if (fieldKeysBuilder.length() > 0) {
-//            fieldKeysBuilder.deleteCharAt(fieldKeysBuilder.length() - 1);
-//        }
-//        KingdDeeJson kingdeeJson = new KingdDeeJson();
-//        String fieldKeys = fieldKeysBuilder.toString();
-//        kingdeeJson.setFieldKeys(fieldKeys);
-//        kingdeeJson.setFormId("PRD_ReturnMtrl");
-//        kingdeeJson.setTopRowCount(0);
-//        kingdeeJson.setLimit(10);
-//        kingdeeJson.setStartRow(0);
-////        kingdeeJson.setFilterString("fId = 100193");
-//        kingdeeJson.setOrderString("Fseq ASC");
-//        Gson gson = new Gson();
-//        String json = gson.toJson(kingdeeJson);
-//        List<List<Object>> lists = api.executeBillQuery(json);
-//
-//        List<FProductionReturnMaterialHead> fBillHeadList = new ArrayList<>();
-//
-//        System.out.println("采购订单保存接口: " + lists);
-//        json=gson.toJson(lists);
-//        System.out.println("json: " + json);
-//    }
-//
-//    /* 执行至完工 */
-//    @Test
-//    public void excuteOperation() throws Exception {
-//        JsonObject entry = new JsonObject();
-//        entry.addProperty("Id", "100031");
-//        entry.addProperty("EntryIds", "100037,100038,100039");
-//
-//        // 创建包含 "entry" 的 JSON 数组
-//        JsonArray pkEntryIdsArray = new JsonArray();
-//        pkEntryIdsArray.add(entry);
-//
-//        // 创建最终的 JSON 对象
-//        JsonObject data = new JsonObject();
-//        data.add("PkEntryIds", pkEntryIdsArray);
-//        data.addProperty("NetworkCtrl", "true");
-//
-//        // 将 JSON 对象转换为字符串
-//        String dataStr = data.toString();
-//        String fromid = "PRD_MO";
-//        String opNumber = "ToFinish";
-//        // 调用接口
-//        Gson gson = new Gson();
-//        String result = api.excuteOperation(fromid, opNumber, dataStr);
-//        System.out.println("执行至完工接口: " + result);
-//        String json=gson.toJson(result);
-//        System.out.println("json: " + json);
-//    }
-//    /* 反执行至开工 */
-//    @Test
-//    public void excuteOperation1() throws Exception {
-//        JsonObject entry = new JsonObject();
-//        entry.addProperty("Id", "100031");
-//        entry.addProperty("EntryIds", "100037,100038,100039");
-//
-//        // 创建包含 "entry" 的 JSON 数组
-//        JsonArray pkEntryIdsArray = new JsonArray();
-//        pkEntryIdsArray.add(entry);
-//
-//        // 创建最终的 JSON 对象
-//        JsonObject data = new JsonObject();
-//        data.add("PkEntryIds", pkEntryIdsArray);
-//        data.addProperty("NetworkCtrl", "true");
-//
-//        // 将 JSON 对象转换为字符串
-//        String dataStr = data.toString();
-//        String fromid = "PRD_MO";
-//        String opNumber = "UndoToStart";
-//        // 调用接口
-//        Gson gson = new Gson();
-//        String result = api.excuteOperation(fromid, opNumber, dataStr);
-//        System.out.println("反执行至开工接口: " + result);
-//        String json=gson.toJson(result);
-//        System.out.println("json: " + json);
-//    }
-//    /* 执行至结案 */
-//    @Test
-//    public void excuteOperation3() throws Exception {
-//        JsonObject entry = new JsonObject();
-//        entry.addProperty("Id", "100031");
-//        entry.addProperty("EntryIds", "100037,100038,100039");
-//
-//        // 创建包含 "entry" 的 JSON 数组
-//        JsonArray pkEntryIdsArray = new JsonArray();
-//        pkEntryIdsArray.add(entry);
-//
-//        // 创建最终的 JSON 对象
-//        JsonObject data = new JsonObject();
-//        data.add("PkEntryIds", pkEntryIdsArray);
-//        data.addProperty("NetworkCtrl", "true");
-//
-//        // 将 JSON 对象转换为字符串
-//        String dataStr = data.toString();
-//        String fromid = "PRD_MO";
-//        String opNumber = "ToClose";
-//        // 调用接口
-//        Gson gson = new Gson();
-//        String result = api.excuteOperation(fromid, opNumber, dataStr);
-//        System.out.println("执行至结案接口: " + result);
-//        String json=gson.toJson(result);
-//        System.out.println("json: " + json);
-//    }
-//    /* 强制结案 */
-//    @Test
-//    public void excuteOperation4() throws Exception {
-//        JsonObject entry = new JsonObject();
-//        entry.addProperty("Id", "100031");
-//        entry.addProperty("EntryIds", "100037,100038,100039");
-//
-//        // 创建包含 "entry" 的 JSON 数组
-//        JsonArray pkEntryIdsArray = new JsonArray();
-//        pkEntryIdsArray.add(entry);
-//
-//        // 创建最终的 JSON 对象
-//        JsonObject data = new JsonObject();
-//        data.add("PkEntryIds", pkEntryIdsArray);
-//        data.addProperty("NetworkCtrl", "true");
-//
-//        // 将 JSON 对象转换为字符串
-//        String dataStr = data.toString();
-//        String fromid = "PRD_MO";
-//        String opNumber = "ForceClose";
-//        // 调用接口
-//        Gson gson = new Gson();
-//        String result = api.excuteOperation(fromid, opNumber, dataStr);
-//        System.out.println("强制结案接口: " + result);
-//        String json=gson.toJson(result);
-//        System.out.println("json: " + json);
-//    }
+    K3CloudApi api = new K3CloudApi();
+    static String FNumber = SeqHelper.genNumber("CGDD");
+    static String FName = "aucgdd_" + UUID.randomUUID().toString();
+
+
+
+    /* 生产订单查询 */
+    @Test
+    public void executeBillQuery() throws Exception {
+        // 创建 KingdeeJson 对象并设置字段值
+        FBillHead fBillHead = new FBillHead();
+        // 获取 fBillHead 类的所有字段
+        Field[] fields = fBillHead.getClass().getDeclaredFields();
+        // 构建 fieldKeys 参数字符串
+        StringBuilder fieldKeysBuilder = new StringBuilder();
+        for (Field field : fields) {
+            // 获取字段名
+            String fieldName = field.getName();
+            // 根据实际需求处理字段名,例如驼峰转下划线等
+            // 这里假设直接使用字段名,实际可能需要转换
+
+            fieldKeysBuilder.append(fieldName).append(",");
+        }
+        // 去掉最后一个逗号
+        if (fieldKeysBuilder.length() > 0) {
+            fieldKeysBuilder.deleteCharAt(fieldKeysBuilder.length() - 1);
+        }
+        KingdDeeJson kingdeeJson = new KingdDeeJson();
+        String fieldKeys = fieldKeysBuilder.toString();
+        kingdeeJson.setFieldKeys(fieldKeys);
+        kingdeeJson.setFormId("PRD_MO");
+        kingdeeJson.setTopRowCount(0);
+        kingdeeJson.setLimit(10);
+        kingdeeJson.setStartRow(0);
+//        kingdeeJson.setFilterString("fId = 100193");
+        kingdeeJson.setOrderString("FID ASC");
+        Gson gson = new Gson();
+        String json = gson.toJson(kingdeeJson);
+        List<List<Object>> lists = api.executeBillQuery(json);
+
+        List<FBillHead> fBillHeadList = new ArrayList<>();
+
+        System.out.println("采购订单保存接口: " + lists);
+        json=gson.toJson(lists);
+        System.out.println("json: " + json);
+    }
+
+    /** 生产用料清单查询 */
+    @Test
+    public void executeBillQuery1() throws Exception {
+        // 创建 KingdeeJson 对象并设置字段值
+        FProductionMaterialHead fBillHead = new FProductionMaterialHead();
+        // 获取 fBillHead 类的所有字段
+        Field[] fields = fBillHead.getClass().getDeclaredFields();
+        // 构建 fieldKeys 参数字符串
+        StringBuilder fieldKeysBuilder = new StringBuilder();
+        for (Field field : fields) {
+            // 获取字段名
+            String fieldName = field.getName();
+            // 根据实际需求处理字段名,例如驼峰转下划线等
+            // 这里假设直接使用字段名,实际可能需要转换
+            fieldKeysBuilder.append(fieldName).append(",");
+        }
+        // 去掉最后一个逗号
+        if (fieldKeysBuilder.length() > 0) {
+            fieldKeysBuilder.deleteCharAt(fieldKeysBuilder.length() - 1);
+        }
+        KingdDeeJson kingdeeJson = new KingdDeeJson();
+        String fieldKeys = fieldKeysBuilder.toString();
+        kingdeeJson.setFieldKeys(fieldKeys);
+        kingdeeJson.setFormId("PRD_PPBOM");
+        kingdeeJson.setTopRowCount(0);
+        kingdeeJson.setLimit(10);
+        kingdeeJson.setStartRow(0);
+//        kingdeeJson.setFilterString("fId = 100193");
+        kingdeeJson.setOrderString("FID ASC");
+        Gson gson = new Gson();
+        String json = gson.toJson(kingdeeJson);
+        List<List<Object>> lists = api.executeBillQuery(json);
+
+        List<FProductionMaterialHead> fBillHeadList = new ArrayList<>();
+
+        System.out.println("采购订单保存接口: " + lists);
+        json=gson.toJson(lists);
+        System.out.println("json: " + json);
+    }
+
+    /** 生产订单保存 */
+    @Test
+    public void executeBillQuery2() throws Exception {
+        // 创建 KingdeeJson 对象并设置字段值
+        FProductionMaterialTokenHead fBillHead = new FProductionMaterialTokenHead();
+        // 获取 fBillHead 类的所有字段
+        Field[] fields = fBillHead.getClass().getDeclaredFields();
+        // 构建 fieldKeys 参数字符串
+        StringBuilder fieldKeysBuilder = new StringBuilder();
+        for (Field field : fields) {
+            // 获取字段名
+            String fieldName = field.getName();
+            // 根据实际需求处理字段名,例如驼峰转下划线等
+            // 这里假设直接使用字段名,实际可能需要转换
+            fieldKeysBuilder.append(fieldName).append(",");
+        }
+        // 去掉最后一个逗号
+        if (fieldKeysBuilder.length() > 0) {
+            fieldKeysBuilder.deleteCharAt(fieldKeysBuilder.length() - 1);
+        }
+        KingdDeeJson kingdeeJson = new KingdDeeJson();
+        String fieldKeys = fieldKeysBuilder.toString();
+        kingdeeJson.setFieldKeys(fieldKeys);
+        kingdeeJson.setFormId("PRD_PickMtrl");
+        kingdeeJson.setTopRowCount(0);
+        kingdeeJson.setLimit(10);
+        kingdeeJson.setStartRow(0);
+//        kingdeeJson.setFilterString("fId = 100193");
+        kingdeeJson.setOrderString("Fseq ASC");
+        Gson gson = new Gson();
+        String json = gson.toJson(kingdeeJson);
+        List<List<Object>> lists = api.executeBillQuery(json);
+
+        List<FProductionMaterialTokenHead> fBillHeadList = new ArrayList<>();
+
+        System.out.println("采购订单保存接口: " + lists);
+        json=gson.toJson(lists);
+        System.out.println("json: " + json);
+    }
+
+    /** 生产补料单 */
+    @Test
+    public void executeBillQuery3() throws Exception {
+        // 创建 KingdeeJson 对象并设置字段值
+        FProductionFeedMaterialHead fBillHead = new FProductionFeedMaterialHead();
+        // 获取 fBillHead 类的所有字段
+        Field[] fields = fBillHead.getClass().getDeclaredFields();
+        // 构建 fieldKeys 参数字符串
+        StringBuilder fieldKeysBuilder = new StringBuilder();
+        for (Field field : fields) {
+            // 获取字段名
+            String fieldName = field.getName();
+            // 根据实际需求处理字段名,例如驼峰转下划线等
+            // 这里假设直接使用字段名,实际可能需要转换
+            fieldKeysBuilder.append(fieldName).append(",");
+        }
+        // 去掉最后一个逗号
+        if (fieldKeysBuilder.length() > 0) {
+            fieldKeysBuilder.deleteCharAt(fieldKeysBuilder.length() - 1);
+        }
+        KingdDeeJson kingdeeJson = new KingdDeeJson();
+        String fieldKeys = fieldKeysBuilder.toString();
+        kingdeeJson.setFieldKeys(fieldKeys);
+        kingdeeJson.setFormId("PRD_FeedMtrl");
+        kingdeeJson.setTopRowCount(0);
+        kingdeeJson.setLimit(10);
+        kingdeeJson.setStartRow(0);
+//        kingdeeJson.setFilterString("fId = 100193");
+        kingdeeJson.setOrderString("Fseq ASC");
+        Gson gson = new Gson();
+        String json = gson.toJson(kingdeeJson);
+        List<List<Object>> lists = api.executeBillQuery(json);
+
+        List<FProductionFeedMaterialHead> fBillHeadList = new ArrayList<>();
+
+        System.out.println("采购订单保存接口: " + lists);
+        json=gson.toJson(lists);
+        System.out.println("json: " + json);
+    }
+    /** 生产退料单 */
+
+    @Test
+    public void executeBillQuery4() throws Exception {
+        // 创建 KingdeeJson 对象并设置字段值
+        FProductionReturnMaterialHead fBillHead = new FProductionReturnMaterialHead();
+        // 获取 fBillHead 类的所有字段
+        Field[] fields = fBillHead.getClass().getDeclaredFields();
+        // 构建 fieldKeys 参数字符串
+        StringBuilder fieldKeysBuilder = new StringBuilder();
+        for (Field field : fields) {
+            // 获取字段名
+            String fieldName = field.getName();
+            // 根据实际需求处理字段名,例如驼峰转下划线等
+            // 这里假设直接使用字段名,实际可能需要转换
+            fieldKeysBuilder.append(fieldName).append(",");
+        }
+        // 去掉最后一个逗号
+        if (fieldKeysBuilder.length() > 0) {
+            fieldKeysBuilder.deleteCharAt(fieldKeysBuilder.length() - 1);
+        }
+        KingdDeeJson kingdeeJson = new KingdDeeJson();
+        String fieldKeys = fieldKeysBuilder.toString();
+        kingdeeJson.setFieldKeys(fieldKeys);
+        kingdeeJson.setFormId("PRD_ReturnMtrl");
+        kingdeeJson.setTopRowCount(0);
+        kingdeeJson.setLimit(10);
+        kingdeeJson.setStartRow(0);
+//        kingdeeJson.setFilterString("fId = 100193");
+        kingdeeJson.setOrderString("Fseq ASC");
+        Gson gson = new Gson();
+        String json = gson.toJson(kingdeeJson);
+        List<List<Object>> lists = api.executeBillQuery(json);
+
+        List<FProductionReturnMaterialHead> fBillHeadList = new ArrayList<>();
+
+        System.out.println("采购订单保存接口: " + lists);
+        json=gson.toJson(lists);
+        System.out.println("json: " + json);
+    }
+
+    /* 执行至完工 */
+    @Test
+    public void excuteOperation() throws Exception {
+        JsonObject entry = new JsonObject();
+        entry.addProperty("Id", "100031");
+        entry.addProperty("EntryIds", "100037,100038,100039");
+
+        // 创建包含 "entry" 的 JSON 数组
+        JsonArray pkEntryIdsArray = new JsonArray();
+        pkEntryIdsArray.add(entry);
+
+        // 创建最终的 JSON 对象
+        JsonObject data = new JsonObject();
+        data.add("PkEntryIds", pkEntryIdsArray);
+        data.addProperty("NetworkCtrl", "true");
+
+        // 将 JSON 对象转换为字符串
+        String dataStr = data.toString();
+        String fromid = "PRD_MO";
+        String opNumber = "ToFinish";
+        // 调用接口
+        Gson gson = new Gson();
+        String result = api.excuteOperation(fromid, opNumber, dataStr);
+        System.out.println("执行至完工接口: " + result);
+        String json=gson.toJson(result);
+        System.out.println("json: " + json);
+    }
+    /* 反执行至开工 */
+    @Test
+    public void excuteOperation1() throws Exception {
+        JsonObject entry = new JsonObject();
+        entry.addProperty("Id", "100031");
+        entry.addProperty("EntryIds", "100037,100038,100039");
+
+        // 创建包含 "entry" 的 JSON 数组
+        JsonArray pkEntryIdsArray = new JsonArray();
+        pkEntryIdsArray.add(entry);
+
+        // 创建最终的 JSON 对象
+        JsonObject data = new JsonObject();
+        data.add("PkEntryIds", pkEntryIdsArray);
+        data.addProperty("NetworkCtrl", "true");
+
+        // 将 JSON 对象转换为字符串
+        String dataStr = data.toString();
+        String fromid = "PRD_MO";
+        String opNumber = "UndoToStart";
+        // 调用接口
+        Gson gson = new Gson();
+        String result = api.excuteOperation(fromid, opNumber, dataStr);
+        System.out.println("反执行至开工接口: " + result);
+        String json=gson.toJson(result);
+        System.out.println("json: " + json);
+    }
+    /* 执行至结案 */
+    @Test
+    public void excuteOperation3() throws Exception {
+        JsonObject entry = new JsonObject();
+        entry.addProperty("Id", "100031");
+        entry.addProperty("EntryIds", "100037,100038,100039");
+
+        // 创建包含 "entry" 的 JSON 数组
+        JsonArray pkEntryIdsArray = new JsonArray();
+        pkEntryIdsArray.add(entry);
+
+        // 创建最终的 JSON 对象
+        JsonObject data = new JsonObject();
+        data.add("PkEntryIds", pkEntryIdsArray);
+        data.addProperty("NetworkCtrl", "true");
+
+        // 将 JSON 对象转换为字符串
+        String dataStr = data.toString();
+        String fromid = "PRD_MO";
+        String opNumber = "ToClose";
+        // 调用接口
+        Gson gson = new Gson();
+        String result = api.excuteOperation(fromid, opNumber, dataStr);
+        System.out.println("执行至结案接口: " + result);
+        String json=gson.toJson(result);
+        System.out.println("json: " + json);
+    }
+    /* 强制结案 */
+    @Test
+    public void excuteOperation4() throws Exception {
+        JsonObject entry = new JsonObject();
+        entry.addProperty("Id", "100031");
+        entry.addProperty("EntryIds", "100037,100038,100039");
+
+        // 创建包含 "entry" 的 JSON 数组
+        JsonArray pkEntryIdsArray = new JsonArray();
+        pkEntryIdsArray.add(entry);
+
+        // 创建最终的 JSON 对象
+        JsonObject data = new JsonObject();
+        data.add("PkEntryIds", pkEntryIdsArray);
+        data.addProperty("NetworkCtrl", "true");
+
+        // 将 JSON 对象转换为字符串
+        String dataStr = data.toString();
+        String fromid = "PRD_MO";
+        String opNumber = "ForceClose";
+        // 调用接口
+        Gson gson = new Gson();
+        String result = api.excuteOperation(fromid, opNumber, dataStr);
+        System.out.println("强制结案接口: " + result);
+        String json=gson.toJson(result);
+        System.out.println("json: " + json);
+    }
 }

+ 205 - 0
src/main/java/cn/ezhizao/javasdk/saleorder/SavexSaleOrder.java

@@ -0,0 +1,205 @@
+package cn.ezhizao.javasdk.saleorder;
+
+import cn.ezhizao.javasdk.common.SeqHelper;
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.kingdee.bos.webapi.entity.RepoRet;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+import java.util.UUID;
+
+import static org.junit.Assert.fail;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class SavexSaleOrder {
+    K3CloudApi api = new K3CloudApi();
+    static String FNumber = SeqHelper.genNumber("XSDD");
+    static String FName = "auxsdd_" + UUID.randomUUID().toString();
+    private static String saleid = "";
+
+    String json = "{\n" +
+            "        \"NeedUpDateFields\": [],\n" +
+            "        \"NeedReturnFields\": [],\n" +
+            "        \"IsDeleteEntry\": \"true\",\n" +
+            "        \"SubSystemId\": \"\",\n" +
+            "        \"IsVerifyBaseDataField\": \"False\",\n" +
+            "        \"IsEntryBatchFill\": \"true\",\n" +
+            "        \"ValidateFlag\": \"true\",\n" +
+            "        \"NumberSearch\": \"true\",\n" +
+            "        \"IsAutoAdjustField\": \"False\",\n" +
+            "        \"InterationFlags\": \"\",\n" +
+            "        \"IgnoreInterationFlag\": \"\",\n" +
+            "        \"IsControlPrecision\": \"False\",\n" +
+            "        \"Model\": {\n" +
+            "    \"FBillTypeID\": {\n" +
+            "      \"FNUMBER\": \"XSDD01_SYS\"\n" +
+            "    },\n" +
+            "    \"FDate\": \"2022-04-27 00:00:00\",\n" +
+            "    \"FSaleOrgId\": {\n" +
+            "      \"FNumber\": \"100\"\n" +
+            "    },\n" +
+            "    \"FCustId\": {\n" +
+            "      \"FNumber\": \"SCMKH100001\"\n" +
+            "    },\n" +
+            "    \"FReceiveId\": {\n" +
+            "      \"FNumber\": \"SCMKH100001\"\n" +
+            "    },\n" +
+            "    \"FSaleDeptId\": {\n" +
+            "      \"FNumber\": \"SCMBM000001\"\n" +
+            "    },\n" +
+            "    \"FSalerId\": {\n" +
+            "      \"FNumber\": \"SCMYG000001_SCMGW000001_1\"\n" +
+            "    },\n" +
+            "    \"FSettleId\": {\n" +
+            "      \"FNumber\": \"SCMKH100001\"\n" +
+            "    },\n" +
+            "    \"FChargeId\": {\n" +
+            "      \"FNumber\": \"SCMKH100001\"\n" +
+            "    },\n" +
+            "    \"FSaleOrderFinance\": {\n" +
+            "      \"FSettleCurrId\": {\n" +
+            "        \"FNumber\": \"PRE001\"\n" +
+            "      },\n" +
+            "      \"FIsPriceExcludeTax\": 'true',\n" +
+            "      \"FIsIncludedTax\": 'true',\n" +
+            "      \"FExchangeTypeId\": {\n" +
+            "        \"FNumber\": \"HLTX01_SYS\"\n" +
+            "      }\n" +
+            "    },\n" +
+            "    \"FSaleOrderEntry\": [\n" +
+            "      {\n" +
+            "        \"FRowType\": \"Standard\",\n" +
+            "        \"FMaterialId\": {\n" +
+            "          \"FNumber\": \"SCMWL100002\"\n" +
+            "        },\n" +
+            "        \"FUnitID\": {\n" +
+            "          \"FNumber\": \"Pcs\"\n" +
+            "        },\n" +
+            "        \"FQty\": 10,\n" +
+            "        \"FPriceUnitId\": {\n" +
+            "          \"FNumber\": \"Pcs\"\n" +
+            "        },\n" +
+            "        \"FPrice\": 8.849558,\n" +
+            "        \"FTaxPrice\": 10,\n" +
+            "        \"FEntryTaxRate\": 13,\n" +
+            "        \"FDeliveryDate\": \"2022-04-27 15:15:54\",\n" +
+            "        \"FStockOrgId\": {\n" +
+            "          \"FNumber\": \"100\"\n" +
+            "        },\n" +
+            "        \"FSettleOrgIds\": {\n" +
+            "          \"FNumber\": \"100\"\n" +
+            "        },\n" +
+            "        \"FSupplyOrgId\": {\n" +
+            "          \"FNumber\": \"100\"\n" +
+            "        },\n" +
+            "        \"FOwnerTypeId\": \"BD_OwnerOrg\",\n" +
+            "        \"FOwnerId\": {\n" +
+            "          \"FNumber\": \"100\"\n" +
+            "        },\n" +
+            "        \"FReserveType\": \"1\",\n" +
+            "        \"FPriceBaseQty\": 10,\n" +
+            "        \"FStockUnitID\": {\n" +
+            "          \"FNumber\": \"Pcs\"\n" +
+            "        },\n" +
+            "        \"FStockQty\": 10,\n" +
+            "        \"FStockBaseQty\": 10,\n" +
+            "        \"FOUTLMTUNIT\": \"SAL\",\n" +
+            "        \"FOutLmtUnitID\": {\n" +
+            "          \"FNumber\": \"Pcs\"\n" +
+            "        },\n" +
+            "        \"FAllAmountExceptDisCount\": 100,\n" +
+            "        \"FOrderEntryPlan\": [\n" +
+            "          {\n" +
+            "            \"FPlanDate\": \"2022-04-27 15:15:54\",\n" +
+            "            \"FPlanQty\": 10\n" +
+            "          }\n" +
+            "        ]\n" +
+            "      }\n" +
+            "    ],\n" +
+            "    \"FSaleOrderPlan\": [\n" +
+            "      {\n" +
+            "        \"FRecAdvanceRate\": 100,\n" +
+            "        \"FRecAdvanceAmount\": 100\n" +
+            "      }\n" +
+            "    ],\n" +
+            "    \"FBillNo\":"+"\""+FNumber+"\""+",\n" +
+            "  }\n" +
+            "    }";
+
+
+    /* 本接口用于实现销售订单 (SAL_SaleOrder)的保存功能 */
+    @Test
+    public void atestSaveSaleOrder() throws Exception {
+        String result = api.save("SAL_SaleOrder", json);
+        Gson gson = new Gson();
+        RepoRet sRet = gson.fromJson(result, RepoRet.class);
+        if (sRet.isSuccessfully()) {
+            saleid = sRet.getResult().getId();
+            System.out.printf("销售订单保存接口%s%n", gson.toJson(sRet.getResult()));
+        } else {
+            fail("销售订单保存接口: " + gson.toJson(sRet.getResult()));
+        }
+    }
+
+
+    /*本接口用于实现销售订单 (SAL_SaleOrder)的提交功能*/
+    @Test
+    public void btestSubmitSaleOrder() throws Exception {
+        JsonObject jsonData = new JsonObject();
+        jsonData.addProperty("Numbers", FNumber);
+        String result = api.submit("SAL_SaleOrder", jsonData.toString());
+        Gson gson = new Gson();
+        RepoRet repoRet = gson.fromJson(result, RepoRet.class);
+        if (repoRet.getResult().getResponseStatus().isIsSuccess()) {
+            System.out.printf("销售订单提交接口: %s%n", gson.toJson(repoRet.getResult()));
+        } else {
+            fail("销售订单提交接口: " + gson.toJson(repoRet.getResult()));
+        }
+
+    }
+
+    /*本接口用于实现销售订单 (SAL_SaleOrder)的审核功能*/
+    @Test
+    public void ctestauditSaleOrder() throws Exception {
+        JsonObject jsonData = new JsonObject();
+        jsonData.addProperty("Numbers", FNumber);
+        String result = api.audit("SAL_SaleOrder", jsonData.toString());
+        Gson gson = new Gson();
+        RepoRet repoRet = gson.fromJson(result, RepoRet.class);
+        if (repoRet.getResult().getResponseStatus().isIsSuccess()) {
+            System.out.printf("销售订单审核接口: %s%n", gson.toJson(repoRet.getResult()));
+        } else {
+            fail("销售订单审核接口: " + gson.toJson(repoRet.getResult()));
+        }
+    }
+
+    //    //自定义api测试
+    @Test
+    public void utestApi() {
+        try {
+            K3CloudApi api = new K3CloudApi();
+            Boolean testResult=api.CheckAuthInfo().getResponseStatus().isIsSuccess();
+            if(testResult) {
+                String requestUrl = "Kingdee.K3.SCM.WebApi.ServicesStub.SaveXSaleOrderWebApi.SaveXSaleOrder";
+                Object[] paramInfo = new Object[]{"{\"SaleOrderBillNo\": "+"\""+FNumber+"\""+",\"SaleOrderBillId\":"+saleid+",}"};
+                String result = String.valueOf(api.execute(requestUrl, paramInfo));
+                JsonElement jsondata = new JsonParser().parse(result);
+                boolean issucess = jsondata.getAsJsonObject().get("IsSuccess").getAsBoolean();
+                if(issucess){
+                    System.out.println("销售订单新变更单:" + result);
+                }
+                else {
+                    fail("销售订单新变更单:" + result);
+                }
+            }
+        } catch (Exception e) {
+
+            fail(e.getMessage());
+        }
+    }
+}