package com.ruoyi.system.runner; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.kingdee.bos.webapi.entity.RepoRet; import com.kingdee.bos.webapi.sdk.K3CloudApi; import com.ruoyi.common.utils.JdUtils; import com.ruoyi.system.domain.BomDetails; import com.ruoyi.system.domain.dto.*; import com.ruoyi.system.domain.vo.*; import com.ruoyi.system.jdmain.rouplan.Model; import org.aspectj.bridge.MessageUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; import static com.ruoyi.common.core.domain.R.fail; public class JdUtil { private static final Logger log = LoggerFactory.getLogger(JdUtil.class); static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 入库状态 public static JsonArray storageProduce(String number, String FMaterialIdCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "STK_InStock"); json.addProperty("FieldKeys", "F_UCHN_Text2,FMaterialId.FNumber,FMaterialName,FRealQty,FDocumentStatus"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "F_UCHN_Text2"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", number); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FMaterialId.FNumber"); filterObject1.addProperty("Compare", "67"); filterObject1.addProperty("Value", FMaterialIdCode); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); filterString.add(filterObject1); json.add("FilterString", filterString); json.addProperty("OrderString", "");// 排序字段,字符串类型 json.addProperty("TopRowCount", 0);// 返回总行数,整型 json.addProperty("StartRow", 0);// 开始行索引,整型 json.addProperty("Limit", 1000);// 最大行数,整型,不能超过10000( json.addProperty("SubSystemId", ""); String jsonData = json.toString(); System.out.println(jsonData); JsonArray jsonArray; try { // 调用接口并获取结果 String jsonStr = String.valueOf(client.billQuery(jsonData)); System.out.println(jsonStr); Gson gson = new Gson(); jsonArray = gson.fromJson(jsonStr, JsonArray.class); System.out.println(jsonArray); } catch (Exception ex) { throw new RuntimeException(ex); } return jsonArray; } public static JsonArray storageProduce1(String number, String FMaterialIdCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PRD_INSTOCK"); json.addProperty("FieldKeys", "F_UCHN_Text,FMaterialId.FNumber,FMaterialName,FRealQty,FDocumentStatus"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "F_UCHN_Text"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", number); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FMaterialId.FNumber"); filterObject1.addProperty("Compare", "67"); filterObject1.addProperty("Value", FMaterialIdCode); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); filterString.add(filterObject1); json.add("FilterString", filterString); json.addProperty("OrderString", "");// 排序字段,字符串类型 json.addProperty("TopRowCount", 0);// 返回总行数,整型 json.addProperty("StartRow", 0);// 开始行索引,整型 json.addProperty("Limit", 1000);// 最大行数,整型,不能超过10000( json.addProperty("SubSystemId", ""); String jsonData = json.toString(); System.out.println(jsonData); JsonArray jsonArray; try { // 调用接口并获取结果 String jsonStr = String.valueOf(client.billQuery(jsonData)); System.out.println(jsonStr); Gson gson = new Gson(); jsonArray = gson.fromJson(jsonStr, JsonArray.class); System.out.println(jsonArray); } catch (Exception ex) { throw new RuntimeException(ex); } return jsonArray; } /* * 查询库存 */ public static Map selectKuCun(String matrialsCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "STK_Inventory"); json.addProperty("FieldKeys", "FMaterialId.FNumber,FMaterialName,FStockName,FStockUnitId.FName,FBaseQty"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialId.FNumber"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", matrialsCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); Map resultMap = new HashMap<>(); try { // 调用接口 String resultJson = String.valueOf(client.executeBillQuery(jsonData)); if (resultJson.length() <= 2) { resultMap.put("inventory", "0"); resultMap.put("materialCode", "无"); resultMap.put("stockName", "无"); resultMap.put("materialName", "无"); resultMap.put("stockUnit", "无"); } resultJson = resultJson.substring(2, resultJson.length() - 2); String[] split = resultJson.split(","); String value1 = split[0]; String value2 = split[1]; String value3 = split[2]; String value4 = split[3]; String value5 = split[4]; resultMap.put("materialCode", value1); resultMap.put("materialName", value2); resultMap.put("stockName", value3); resultMap.put("stockUnit", value4); resultMap.put("inventory", value5); System.out.println("图号: " + value1); System.out.println("名称: " + value2); System.out.println("仓库: " + value3); System.out.println("单位: " + value4); System.out.println("数量: " + value5); System.out.println("接口返回结果: " + resultJson); } catch (Exception e) { resultMap.put("error", e.getMessage()); } return resultMap; } public static JsonArray selectKuCun1(List list) { if (list == null || list.isEmpty()) { return new JsonArray(); } K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "STK_Inventory"); json.addProperty("FieldKeys", "FMaterialId.FNumber,FMaterialName,FStockName,FStockUnitId.FName,FBaseQty"); JsonArray filterString = new JsonArray(); for (ImMaterialVo imMaterialVo : list) { JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialId.FNumber"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", imMaterialVo.getMaterialCode()); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); } json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); JsonArray jsonArray; try { // 调用接口 String resultJson = String.valueOf(client.executeBillQuery(jsonData)); jsonArray = new Gson().fromJson(resultJson, JsonArray.class); } catch (Exception e) { return null; } return jsonArray; } public static BigDecimal selectKuCun2(String matrialsCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "STK_Inventory"); json.addProperty("FieldKeys", "FMaterialId.FNumber,FMaterialName,FStockName,FStockUnitId.FName,FBaseQty"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialId.FNumber"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", matrialsCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); BigDecimal fBaseQty = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); if (jsonArray != null) { for (JsonElement jsonElement : jsonArray) { JsonObject asJsonObject = jsonElement.getAsJsonObject(); fBaseQty = asJsonObject.get("FBaseQty").getAsBigDecimal(); } } else { fBaseQty = BigDecimal.valueOf(0.0); } } catch (Exception e) { return null; } return fBaseQty; } public static List getSelecPlan(String rooteProdet) { List planOrderList = getSelectProceOrder(rooteProdet); List plannedProcesses = new ArrayList<>(); K3CloudApi client = new K3CloudApi(); for (ProductionRouteTwoVo planOrder : planOrderList) { JsonObject json = new JsonObject(); json.addProperty("FormId", "SFC_OperationPlanning"); json.addProperty("FieldKeys", "FID,FSubEntity_FDetailID,FProductId.FNumber,FOperNumber,FEntity_FEntryID,FProcessId.FName,FSeqNumber,FSeqName,FPlanStartTime,FPlanFinishTime," + "FOperPlanStartTime,FOperPlanFinishTime"); json.addProperty("FieldKeys", "F_HBYT_SCLH,FProductId.FNumber,FProductName,FMOQty , FOperNumber,FWorkCenterId.FName ,FProcessId.FName,FOperDescription,FOptCtrlCodeId.FName,FOperQty ,FOperPlanStartTime ,FOperPlanFinishTime,FPlanStartTime,FPlanFinishTime"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMONumber"); filterObject.addProperty("Compare", "="); // 改为等号运算符 // filterObject.addProperty("Value", planOrder.getFBillNo()); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); try { String resultJson = String.valueOf(client.billQuery(jsonData)); System.out.println( // "生成查询计划订单查询 " + planOrder.getFBillNo() + " 的结果: " + resultJson ); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); if (jsonArray == null || jsonArray.size() == 0) { continue; } ObjectMapper objectMapper = new ObjectMapper(); List plannedProcessList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); if (plannedProcessList != null && !plannedProcessList.isEmpty()) { plannedProcesses.addAll(plannedProcessList); } } catch (Exception e) { } } // 转换为 List 格式 return null; } public static List getSelectProceOrder(String rooteProdet) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PRD_MO"); json.addProperty("FieldKeys", "F_HBYT_SCLH,FBillNo ,FMaterialId.FNumber,FMaterialName"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "F_HBYT_SCLH"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", rooteProdet); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); String resultJson; try { // 调用API接口 resultJson = String.valueOf(client.billQuery(jsonData)); // 使用Gson解析为JsonArray,因为返回数据是直接的数组 JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 将JsonArray转为PlanOrder列表 ObjectMapper objectMapper = new ObjectMapper(); List productionRouteTwoVos = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); // 输出或返回结果 return productionRouteTwoVos; } catch (Exception e) { e.printStackTrace(); return null; } } /* * 材料bom * { * "FMATERIALID.FNumber": "001HD24.01.01.017.0", * "FITEMNAME": "行走原点标定", * "FMATERIALIDCHILD.FNumber": "001HD24.01.01.016.2", * "FCHILDITEMNAME": "不锈钢标尺", * "FNUMERATOR": 1, * "FDENOMINATOR": 1, * "FChildBaseUnitID.FNumber": "jian" * }, */ public static List getPlanOrderVo(String materialCode) { List planOrderList = getSelectProceOrder(materialCode); List plannedProcesses = new ArrayList<>(); K3CloudApi client = new K3CloudApi(); for (ProductionRouteTwoVo planOrder : planOrderList) { JsonObject json = new JsonObject(); json.addProperty("FormId", "ENG_BOM"); json.addProperty("FieldKeys", "F_HBYT_SCLH,FMaterialID.FNumber,FMaterialID.FNumber2,FMaterialName1,FNumerator,FDenominator,FUnitID2.FName"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialID.FNumber"); filterObject.addProperty("Compare", "="); // 改为等号运算符 // filterObject.addProperty("Value", planOrder.getFBillNo()); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); try { String resultJson = String.valueOf(client.billQuery(jsonData)); System.out.println( // "生成查询计划订单查询 " + planOrder.getFBillNo() + " 的结果: " + resultJson ); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); if (jsonArray == null || jsonArray.size() == 0) { continue; } ObjectMapper objectMapper = new ObjectMapper(); List plannedProcessList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); if (plannedProcessList != null && !plannedProcessList.isEmpty()) { plannedProcesses.addAll(plannedProcessList); } } catch (Exception e) { } } // 转换为 List 格式 return null; } // 查询物料是否为按图订制 /** * 库存预留信息查询 * * @param materialCode * @return */ public static List getInvReserveAnalyzeRpt(String materialCode) { List rptDTOS = new ArrayList<>(); K3CloudApi client = new K3CloudApi(); JsonObject jsonData = new JsonObject(); jsonData.addProperty("FieldKeys", "FMATERIALNUMBER,FMaterialName,FDemandTypeName,FSecQty,FSecAVBQty"); jsonData.addProperty("SchemeId", ""); jsonData.addProperty("StartRow", 0); jsonData.addProperty("Limit", 2000); jsonData.addProperty("IsVerifyBaseDataField", "true"); JsonArray filterArray = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("Left", ""); filterObject.addProperty("FieldName", "FMATERIALNUMBER"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterArray.add(filterObject); jsonData.add("FilterString", filterArray); JsonObject model = new JsonObject(); model.addProperty("FStockOrgId", "1"); JsonObject beginMaterialId = new JsonObject(); beginMaterialId.addProperty("FNUMBER", materialCode); model.add("FBeginMaterialId", beginMaterialId); model.addProperty("FDemandType", "PLN_FORECAST,PLN_PLANORDER,PRD_PPBOM,SAL_SaleOrder"); model.addProperty("FNeedTransOnly", false); jsonData.add("Model", model); String jsonString = jsonData.toString(); String formId = "PLN_InvReserveAnalyzeRpt"; String resultJson = null; try { resultJson = client.getSysReportData(formId, jsonString); } catch (Exception e) { System.err.println("Error fetching data for materialCode: " + materialCode); e.printStackTrace(); return new ArrayList<>(); } if (resultJson == null) { System.err.println("No data returned for materialCode: " + materialCode); return new ArrayList<>(); } JsonObject resultObject = new Gson().fromJson(resultJson, JsonObject.class); JsonArray rows = resultObject.getAsJsonObject("Result").getAsJsonArray("Rows"); if (rows == null){ System.err.println("No data returned for materialCode: " + materialCode); return new ArrayList<>(); } System.out.println("库存预留单===========>" + rows); for (JsonElement rowElement : rows) { JsonArray row = rowElement.getAsJsonArray(); InvReserveAnalyzeRptDTO analyzeRptDTO = new InvReserveAnalyzeRptDTO(); analyzeRptDTO.setFMATERIALNUMBER(getStringFromJsonArray(row, 0)); analyzeRptDTO.setFMaterialName(getStringFromJsonArray(row, 1)); analyzeRptDTO.setFDemandTypeName(getStringFromJsonArray(row, 2)); analyzeRptDTO.setFSecQty(getDoubleFromJsonArray(row, 3)); analyzeRptDTO.setFSecAVBQty(getDoubleFromJsonArray(row, 4)); rptDTOS.add(analyzeRptDTO); } return rptDTOS; } private static String getStringFromJsonArray(JsonArray array, int index) { return array.size() > index && !array.get(index).isJsonNull() ? array.get(index).getAsString() : ""; } private static double getDoubleFromJsonArray(JsonArray array, int index) { if (array.size() > index && !array.get(index).isJsonNull()) { String value = array.get(index).getAsString(); if (!value.isEmpty()) { try { return Double.parseDouble(value); } catch (NumberFormatException e) { System.err.println("NumberFormatException for value: " + value); } } } return 0.0; } /** * 查询生产订单单据体 *查询 * @param materialCode * @return */ public static List getProMoList(String materialCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PRD_MO"); json.addProperty("FieldKeys", "FMaterialId.FNumber,FMaterialName,FNoStockInQty"); // 创建过滤条件 JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialId.FNumber"); filterObject.addProperty("Compare", "="); // 改为等号运算符 filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FStatus"); filterObject1.addProperty("Compare", "106"); // 改为等号运算符 filterObject1.addProperty("Value", 5); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject1); JsonObject filterObject2 = new JsonObject(); filterObject2.addProperty("FieldName", "FStatus"); filterObject2.addProperty("Compare", "106"); // 改为等号运算符 filterObject2.addProperty("Value", 6); filterObject2.addProperty("Left", ""); filterObject2.addProperty("Right", ""); filterObject2.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject2); JsonObject filterObject3 = new JsonObject(); filterObject3.addProperty("FieldName", "FStatus"); filterObject3.addProperty("Compare", "106"); // 改为等号运算符 filterObject3.addProperty("Value", 7); filterObject3.addProperty("Left", ""); filterObject3.addProperty("Right", ""); filterObject3.addProperty("Logic", 0); filterString.add(filterObject3); JsonObject filterObject4 = new JsonObject(); filterObject4.addProperty("FieldName", "FNoStockInQty"); filterObject4.addProperty("Compare", "21"); // 改为等号运算符 filterObject4.addProperty("Value", 0); filterObject4.addProperty("Left", ""); filterObject4.addProperty("Right", ""); filterObject4.addProperty("Logic", 0); filterString.add(filterObject4); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List promoList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); promoList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return promoList; // 返回结果 } /** * 查询生产订单未入库 本项目除外 *查询 * @param materialCode * @return */ public static List getProMoListLimitByProCode(String materialCode,String proCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PRD_MO"); json.addProperty("FieldKeys", "FMaterialId.FNumber,FMaterialName,FNoStockInQty"); // 创建过滤条件 JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialId.FNumber"); filterObject.addProperty("Compare", "="); // 改为等号运算符 filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FStatus"); filterObject1.addProperty("Compare", "106"); // 改为等号运算符 filterObject1.addProperty("Value", 5); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject1); JsonObject filterObject2 = new JsonObject(); filterObject2.addProperty("FieldName", "FStatus"); filterObject2.addProperty("Compare", "106"); // 改为等号运算符 filterObject2.addProperty("Value", 6); filterObject2.addProperty("Left", ""); filterObject2.addProperty("Right", ""); filterObject2.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject2); JsonObject filterObject3 = new JsonObject(); filterObject3.addProperty("FieldName", "FStatus"); filterObject3.addProperty("Compare", "106"); // 改为等号运算符 filterObject3.addProperty("Value", 7); filterObject3.addProperty("Left", ""); filterObject3.addProperty("Right", ""); filterObject3.addProperty("Logic", 0); filterString.add(filterObject3); JsonObject filterObject4 = new JsonObject(); filterObject4.addProperty("FieldName", "FNoStockInQty"); filterObject4.addProperty("Compare", "21"); // 改为等号运算符 filterObject4.addProperty("Value", 0); filterObject4.addProperty("Left", ""); filterObject4.addProperty("Right", ""); filterObject4.addProperty("Logic", 0); filterString.add(filterObject4); JsonObject filterObject5 = new JsonObject(); filterObject5.addProperty("FieldName", "F_HBYT_SCLH"); filterObject5.addProperty("Compare", "83"); filterObject5.addProperty("Value", proCode);//筛选条件 生产令号 filterObject5.addProperty("Left", ""); filterObject5.addProperty("Right", ""); filterObject5.addProperty("Logic", 0); filterString.add(filterObject5); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List promoList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); promoList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return promoList; // 返回结果 } /** * 查询生产订单未入库 本项目 *查询 * @param materialCode * @return */ public static List getProMoListByProCode(String materialCode,String proCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PRD_MO"); json.addProperty("FieldKeys", "FMaterialId.FNumber,FMaterialName,FNoStockInQty"); // 创建过滤条件 JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialId.FNumber"); filterObject.addProperty("Compare", "="); // 改为等号运算符 filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FStatus"); filterObject1.addProperty("Compare", "106"); // 改为等号运算符 filterObject1.addProperty("Value", 5); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject1); JsonObject filterObject2 = new JsonObject(); filterObject2.addProperty("FieldName", "FStatus"); filterObject2.addProperty("Compare", "106"); // 改为等号运算符 filterObject2.addProperty("Value", 6); filterObject2.addProperty("Left", ""); filterObject2.addProperty("Right", ""); filterObject2.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject2); JsonObject filterObject3 = new JsonObject(); filterObject3.addProperty("FieldName", "FStatus"); filterObject3.addProperty("Compare", "106"); // 改为等号运算符 filterObject3.addProperty("Value", 7); filterObject3.addProperty("Left", ""); filterObject3.addProperty("Right", ""); filterObject3.addProperty("Logic", 0); filterString.add(filterObject3); JsonObject filterObject4 = new JsonObject(); filterObject4.addProperty("FieldName", "FNoStockInQty"); filterObject4.addProperty("Compare", "21"); // 改为等号运算符 filterObject4.addProperty("Value", 0); filterObject4.addProperty("Left", ""); filterObject4.addProperty("Right", ""); filterObject4.addProperty("Logic", 0); filterString.add(filterObject4); JsonObject filterObject5 = new JsonObject(); filterObject5.addProperty("FieldName", "F_HBYT_SCLH"); filterObject5.addProperty("Compare", "="); filterObject5.addProperty("Value", proCode);//筛选条件 生产令号 filterObject5.addProperty("Left", ""); filterObject5.addProperty("Right", ""); filterObject5.addProperty("Logic", 0); filterString.add(filterObject5); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List promoList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); promoList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return promoList; // 返回结果 } /** * 查询采购订单 单据体 * 将预留量更改为 剩余未入库数量20250325 * @param materialCode * @return */ public static List getPurchaseOrderList(String materialCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PUR_PurchaseOrder"); json.addProperty("FieldKeys", "FMaterialId.FNumber,FMaterialName,FRemainStockINQty"); // 创建过滤条件 JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialId.FNumber"); filterObject.addProperty("Compare", "="); // 改为等号运算符 filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FMRPCloseStatus"); filterObject1.addProperty("Compare", "105"); // 改为等号运算符 filterObject1.addProperty("Value", "A"); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0);// 从 PlanOrderVo 获取生产令号 filterString.add(filterObject1); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List plannedProcessList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); plannedProcessList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return plannedProcessList; // 返回结果 } /** * 查询采购订单 单据体 * 将预留量更改为 剩余未入库数量20250325 * @param materialCode * @return */ public static List getPurchaseOrderListByProCode(String materialCode,String proCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PUR_PurchaseOrder"); json.addProperty("FieldKeys", "FMaterialId.FNumber,FMaterialName,FRemainStockINQty"); // 创建过滤条件 JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialId.FNumber"); filterObject.addProperty("Compare", "="); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FMRPCloseStatus"); filterObject1.addProperty("Compare", "105"); filterObject1.addProperty("Value", "A"); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); filterString.add(filterObject1); JsonObject filterObject2 = new JsonObject(); filterObject2.addProperty("FieldName", "F_UCHN_Text2"); filterObject2.addProperty("Compare", "83"); filterObject2.addProperty("Value", proCode);// 生产令号 filterObject2.addProperty("Left", ""); filterObject2.addProperty("Right", ""); filterObject2.addProperty("Logic", 0); filterString.add(filterObject2); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List plannedProcessList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); plannedProcessList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return plannedProcessList; // 返回结果 } public static List getPurchaseRequestByProCode(String materialCode,String proCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PUR_Requisition"); json.addProperty("FieldKeys", "FMaterialId.FNumber,FMaterialName,FReqQty"); // 创建过滤条件 JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialId.FNumber"); filterObject.addProperty("Compare", "="); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "F_UCHN_Text"); filterObject1.addProperty("Compare", "="); filterObject1.addProperty("Value", proCode); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); filterString.add(filterObject1); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List plannedProcessList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); plannedProcessList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return plannedProcessList; // 返回结果 } // 采购申请(本项目除外) public static List getPurchaseRequestByLimitProCode(String materialCode,String proCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PUR_Requisition"); json.addProperty("FieldKeys", "FMaterialId.FNumber,FMaterialName,FReqQty"); // 创建过滤条件 JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialId.FNumber"); filterObject.addProperty("Compare", "="); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "F_UCHN_Text"); filterObject1.addProperty("Compare", "83"); filterObject1.addProperty("Value", proCode); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); filterString.add(filterObject1); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List plannedProcessList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); plannedProcessList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return plannedProcessList; // 返回结果 } /** * 查询生产用料清单单据体 * 查询子项物料的未领料量 * @param materialCode * @return */ public static List getWeiLingliaoLimBen(String materialCode,String procode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PRD_PPBOM"); json.addProperty("FieldKeys", "FMaterialID2.FNumber,FMaterialName1,FNoPickedQty"); // 创建过滤条件 JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialID2.FNumber"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FMoEntryStatus"); filterObject1.addProperty("Compare", "5"); filterObject1.addProperty("Value", "7"); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); filterString.add(filterObject1); JsonObject filterObject2 = new JsonObject(); filterObject2.addProperty("FieldName", "FMoEntryStatus");// 改为等号运算符 filterObject2.addProperty("Compare", "5"); filterObject2.addProperty("Value", "5"); filterObject2.addProperty("Left", ""); filterObject2.addProperty("Right", ""); filterObject2.addProperty("Logic", 0); filterString.add(filterObject2); JsonObject filterObject3 = new JsonObject(); filterObject3.addProperty("FieldName", "FMoEntryStatus"); filterObject3.addProperty("Compare", "5"); filterObject3.addProperty("Value", "6"); filterObject3.addProperty("Left", ""); filterObject3.addProperty("Right", ""); filterObject3.addProperty("Logic", 0); filterString.add(filterObject3); JsonObject filterObject4 = new JsonObject(); filterObject4.addProperty("FieldName", "FDocumentStatus"); filterObject4.addProperty("Compare", "105"); filterObject4.addProperty("Value", "C");//单据状态:已审核 filterObject4.addProperty("Left", ""); filterObject4.addProperty("Right", ""); filterObject4.addProperty("Logic", 0); filterString.add(filterObject4); JsonObject filterObject5 = new JsonObject(); filterObject5.addProperty("FieldName", "F_HBYT_SCLH"); filterObject5.addProperty("Compare", "="); filterObject5.addProperty("Value", procode);//筛选条件 生产令号 filterObject5.addProperty("Left", ""); filterObject5.addProperty("Right", ""); filterObject5.addProperty("Logic", 0); filterString.add(filterObject5); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List plannedProcessList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); plannedProcessList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return plannedProcessList; // 返回结果 } /** * 查询生产用料清单单据体 * 查询子项物料的未领料量 * @param materialCode * @return */ public static List getWeiLingliao(String materialCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PRD_PPBOM"); json.addProperty("FieldKeys", "FMaterialID2.FNumber,FMaterialName1,FNoPickedQty"); // 创建过滤条件 JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialID2.FNumber"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FMoEntryStatus"); filterObject1.addProperty("Compare", "5"); filterObject1.addProperty("Value", "7"); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); filterString.add(filterObject1); JsonObject filterObject2 = new JsonObject(); filterObject2.addProperty("FieldName", "FMoEntryStatus");// 改为等号运算符 filterObject2.addProperty("Compare", "5"); filterObject2.addProperty("Value", "5"); filterObject2.addProperty("Left", ""); filterObject2.addProperty("Right", ""); filterObject2.addProperty("Logic", 0); filterString.add(filterObject2); JsonObject filterObject3 = new JsonObject(); filterObject3.addProperty("FieldName", "FMoEntryStatus"); filterObject3.addProperty("Compare", "5"); filterObject3.addProperty("Value", "6"); filterObject3.addProperty("Left", ""); filterObject3.addProperty("Right", ""); filterObject3.addProperty("Logic", 0); filterString.add(filterObject3); JsonObject filterObject4 = new JsonObject(); filterObject4.addProperty("FieldName", "FDocumentStatus"); filterObject4.addProperty("Compare", "105"); filterObject4.addProperty("Value", "C");//单据状态:已审核 filterObject4.addProperty("Left", ""); filterObject4.addProperty("Right", ""); filterObject4.addProperty("Logic", 0); filterString.add(filterObject4); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List plannedProcessList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); plannedProcessList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return plannedProcessList; // 返回结果 } /** * 查询生产用料清单单据体 * 查询子项物料的未领料量限制生产令号 * @param materialCode * @return */ public static List getWeiLingliaoByProcode(String materialCode,String procode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PRD_PPBOM"); json.addProperty("FieldKeys", "FMaterialID2.FNumber,FMaterialName1,FNoPickedQty"); // 创建过滤条件 JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialID2.FNumber"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FMoEntryStatus"); filterObject1.addProperty("Compare", "5"); filterObject1.addProperty("Value", "7"); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); filterString.add(filterObject1); JsonObject filterObject2 = new JsonObject(); filterObject2.addProperty("FieldName", "FMoEntryStatus");// 改为等号运算符 filterObject2.addProperty("Compare", "5"); filterObject2.addProperty("Value", "5"); filterObject2.addProperty("Left", ""); filterObject2.addProperty("Right", ""); filterObject2.addProperty("Logic", 0); filterString.add(filterObject2); JsonObject filterObject3 = new JsonObject(); filterObject3.addProperty("FieldName", "FMoEntryStatus"); filterObject3.addProperty("Compare", "5"); filterObject3.addProperty("Value", "6"); filterObject3.addProperty("Left", ""); filterObject3.addProperty("Right", ""); filterObject3.addProperty("Logic", 0); filterString.add(filterObject3); JsonObject filterObject4 = new JsonObject(); filterObject4.addProperty("FieldName", "FDocumentStatus"); filterObject4.addProperty("Compare", "105"); filterObject4.addProperty("Value", "C");//单据状态:已审核 filterObject4.addProperty("Left", ""); filterObject4.addProperty("Right", ""); filterObject4.addProperty("Logic", 0); filterString.add(filterObject4); JsonObject filterObject5 = new JsonObject(); filterObject5.addProperty("FieldName", "F_HBYT_SCLH"); filterObject5.addProperty("Compare", "83"); filterObject5.addProperty("Value", procode);//筛选条件 生产令号 filterObject5.addProperty("Left", ""); filterObject5.addProperty("Right", ""); filterObject5.addProperty("Logic", 0); filterString.add(filterObject5); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List plannedProcessList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); plannedProcessList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return plannedProcessList; // 返回结果 } public static List getKuCun(String materialCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "STK_Inventory"); json.addProperty("FieldKeys", "FMaterialId.FNumber,FMaterialName,FBaseQty"); // 创建过滤条件 JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMaterialId.FNumber"); filterObject.addProperty("Compare", "="); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List plannedProcessList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); plannedProcessList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return plannedProcessList; // 返回结果 } public static Double getKeyong(String materialCode) { List analyzeRpt =getInvReserveAnalyzeRpt(materialCode); if (analyzeRpt.isEmpty()) { System.err.println("No inventory data found for materialCode: " + materialCode); return 0.0; // 返回 0.0 而不是 null } double fSecAVBQty = 0.0; double fSecQty = 0.0; fSecAVBQty = analyzeRpt.get(0).getFSecAVBQty(); for (InvReserveAnalyzeRptDTO analyzeRptDTO : analyzeRpt) { if (analyzeRptDTO.getFSecQty() != null) { fSecQty += analyzeRptDTO.getFSecQty(); } } double productionQty = 0.0; List proMoList = getProMoList(materialCode); if (proMoList != null) { for (ProMoDTO proMoDTO : proMoList) { productionQty += proMoDTO.getFQty(); } } double purchaseQty = 0.0; List purchaseOrderList = getPurchaseOrderList(materialCode); if (purchaseOrderList != null) { for (PurchaseOrderDTO purchaseOrderDTO : purchaseOrderList) { purchaseQty += purchaseOrderDTO.getFRemainStockINQty(); } } return fSecAVBQty + productionQty + purchaseQty - fSecQty; } // 金蝶物料查询 public static int isMaterialVerification(String DrawingNumber, String name) { if (DrawingNumber == null || DrawingNumber.isEmpty() || name == null || name.isEmpty()) { return 0; } JsonArray jsonArray = JdUtils.loadMaterialQuery(DrawingNumber, name); if (jsonArray == null) { return 0; } else { for (JsonElement jsonElement : jsonArray) { String FNumber = jsonElement.getAsJsonObject().get("FNumber").getAsString(); String FName = jsonElement.getAsJsonObject().get("FName").getAsString(); // 检查名称是否一致 if (FNumber.equals(DrawingNumber)) { if (!FName.equals(name)) { log.warn("编码相同但名称不同: 编码 = {}, 名称 = {}, 查询到的名称 = {}", DrawingNumber, name, FName); return 3; // 编码相同但名称不同 } return 1; // 编码和名称都一致 } } return 1; // 编码未找到,返回1表示正常 } } /*本接口用于实现物料清单 的禁用功能*/ public static void jtestForbidMaterial(String FNumber) throws Exception { K3CloudApi api = new K3CloudApi(); String data = "{\"CreateOrgId\": 0,\"Numbers\": ["+"\""+FNumber+"\""+"],\"Ids\": \"\",\"PkEntryIds\":[],\"NetworkCtrl\": \"\",\"IgnoreInterationFlag\": \"\"}"; String result = api.excuteOperation("ENG_BOM", "Forbid", data); 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())); } } //用料清单查询接口腹肌无聊 public static List getFuji(String materialCode) { List jinYongDTOS = new ArrayList<>(); K3CloudApi client = new K3CloudApi(); JsonObject json = new JsonObject(); json.addProperty("FormId", "ENG_BOM"); json.addProperty("FieldKeys", "FNumber"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMATERIALIDCHILD.FNumber"); filterObject.addProperty("Compare", "="); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); try { String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); if (jsonArray != null && jsonArray.size() > 0) { ObjectMapper objectMapper = new ObjectMapper(); List JinYongDTOList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() {}); if (JinYongDTOList != null && !JinYongDTOList.isEmpty()) { jinYongDTOS.addAll(JinYongDTOList); } } else { log.warn("未找到与bom版本号 " + materialCode + " 相关的记录"); } } catch (Exception e) { log.error("调用接口时发生异常: " + e.getMessage(), e); } return jinYongDTOS; } //查询物料 FMATERIALID SubHeadEntity5FEntryId public static List getEntryID(String materialCode) { List jinYongDTOS = new ArrayList<>(); K3CloudApi client = new K3CloudApi(); JsonObject json = new JsonObject(); json.addProperty("FormId", "BD_MATERIAL"); json.addProperty("FieldKeys", "FMATERIALID,SubHeadEntity5_FEntryId"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FNumber"); filterObject.addProperty("Compare", "="); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); try { String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); if (jsonArray != null && jsonArray.size() > 0) { ObjectMapper objectMapper = new ObjectMapper(); List JinYongDTOList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() {}); if (JinYongDTOList != null && !JinYongDTOList.isEmpty()) { jinYongDTOS.addAll(JinYongDTOList); } } else { log.warn("未找到与bom版本号 " + materialCode + " 相关的记录"); } } catch (Exception e) { log.error("调用接口时发生异常: " + e.getMessage(), e); } return jinYongDTOS; } //修改物料工时,固定单位=分 public static void atestSaveMaterial(int FMATERIALID,int fEntryId,String materialCode ,double laborTime) throws Exception { K3CloudApi api = new K3CloudApi(false); // 创建主 JSON 对象 JsonObject mainObject = new JsonObject(); // 创建 NeedUpDateFields 数组 JsonArray needUpdateFields = new JsonArray(); needUpdateFields.add("SubHeadEntity5"); needUpdateFields.add("FStdLaborProcessTime"); needUpdateFields.add("FMATERIALID"); needUpdateFields.add("FStandHourUnitId"); // 创建 NeedReturnFields 数组 JsonArray needReturnFields = new JsonArray(); needReturnFields.add("SubHeadEntity5_FEntryId"); needReturnFields.add("FStdLaborProcessTime"); needReturnFields.add("FNumber"); // 设置 IsDeleteEntry 字段 mainObject.addProperty("IsDeleteEntry", "false"); // 创建 Model 对象 JsonObject modelObject = new JsonObject(); modelObject.addProperty("FMATERIALID", FMATERIALID); modelObject.addProperty("FNumber", materialCode); // 创建 SubHeadEntity5 对象 JsonObject subHeadEntity5 = new JsonObject(); subHeadEntity5.addProperty("FEntryId", fEntryId); subHeadEntity5.addProperty("FStdLaborProcessTime", laborTime); subHeadEntity5.addProperty("FStandHourUnitId", "60"); // 将 SubHeadEntity5 添加到 Model 对象 modelObject.add("SubHeadEntity5", subHeadEntity5); // 将 NeedUpDateFields 和 NeedReturnFields 添加到主对象 mainObject.add("NeedUpDateFields", needUpdateFields); mainObject.add("NeedReturnFields", needReturnFields); // 将 Model 添加到主对象 mainObject.add("Model", modelObject); String data = mainObject.toString(); String result = api.save("BD_Material", data); Gson gson = new Gson(); RepoRet sRet = gson.fromJson(result, RepoRet.class); if (sRet.isSuccessfully()) { System.out.printf("物料保存接口: %s%n", gson.toJson(sRet.getResult())); } else { fail("物料保存接口: " + gson.toJson(sRet.getResult())); } } //新增父级物料 public static int loadChengPinMaterialPreservation(BomDetails bomDetail, Double fbWorkTime ) { K3CloudApi client = new K3CloudApi(); // 创建一个空的JsonObject JsonObject json = new JsonObject(); // 添加IsAutoSubmitAndAudit字段 json.addProperty("IsAutoSubmitAndAudit", "true"); // 创建Model对象,并加入JsonObject JsonObject model = new JsonObject(); json.add("Model", model); // 添加Model字段 model.addProperty("FMATERIALID", 0); if(!(bomDetail.getDanZhong() ==null)){ model.addProperty("F_HBYT_DZ", bomDetail.getDanZhong()); } model.addProperty("FNumber", bomDetail.getFNumber()); model.addProperty("FName", bomDetail.getFName()); // 创建FMaterialGroup对象,并加入Model JsonObject fMaterialGroup = new JsonObject(); fMaterialGroup.addProperty("FNumber", "A000106"); model.add("FMaterialGroup", fMaterialGroup); model.addProperty("FIsHandleReserve", true); // 创建SubHeadEntity对象,并加入Model JsonObject subHeadEntity = new JsonObject(); model.add("SubHeadEntity", subHeadEntity); subHeadEntity.addProperty("FErpClsID", "2"); subHeadEntity.addProperty("FFeatureItem", "1"); // 创建FCategoryID对象,并加入SubHeadEntity JsonObject fCategoryID = new JsonObject(); fCategoryID.addProperty("FNumber", "CHLB05_SYS");// 产成品 subHeadEntity.add("FCategoryID", fCategoryID); // 创建FTaxRateId对象,并加入SubHeadEntity JsonObject fTaxRateId = new JsonObject(); fTaxRateId.addProperty("FNUMBER", "SL02_SYS"); subHeadEntity.add("FTaxRateId", fTaxRateId); // 创建FBaseUnitId对象,并加入SubHeadEntity JsonObject fBaseUnitId = new JsonObject(); fBaseUnitId.addProperty("FNumber", "008"); subHeadEntity.add("FBaseUnitId", fBaseUnitId); subHeadEntity.addProperty("FIsPurchase", true); subHeadEntity.addProperty("FIsInventory", true); // 成品不允许委外 // subHeadEntity.addProperty("FIsSubContract", true); subHeadEntity.addProperty("FIsSale", true); subHeadEntity.addProperty("FIsProduce", true); // 创建SubHeadEntity1对象,并加入Model JsonObject subHeadEntity1 = new JsonObject(); model.add("SubHeadEntity1", subHeadEntity1); JsonObject fStoreUnitId = new JsonObject(); fStoreUnitId.addProperty("FNumber", "008"); subHeadEntity1.add("FStoreUnitID", fStoreUnitId); subHeadEntity1.addProperty("FUnitConvertDir", "1"); // 创建FStockId对象,并加入SubHeadEntity1 JsonObject fStockId = new JsonObject(); // 判断是产成品还是企标 String cangKu = "CK011"; fStockId.addProperty("FNumber", cangKu); subHeadEntity1.add("FStockId", fStockId); // 创建FCurrencyId对象,并加入SubHeadEntity1 JsonObject fCurrencyId = new JsonObject(); fCurrencyId.addProperty("FNumber", "PRE001"); subHeadEntity1.add("FCurrencyId", fCurrencyId); subHeadEntity1.addProperty("FIsSNPRDTracy", false); subHeadEntity1.addProperty("FSNManageType", "1"); subHeadEntity1.addProperty("FSNGenerateTime", "1"); subHeadEntity1.addProperty("FBoxStandardQty", 0.0); // 创建FPurchaseUnitId对象,并加入SubHeadEntity1 JsonObject fPurchaseUnitId = new JsonObject(); fPurchaseUnitId.addProperty("FNumber", "008"); subHeadEntity1.add("FPurchaseUnitId", fPurchaseUnitId); // 创建SubHeadEntity3对象,并加入Model JsonObject subHeadEntity3 = new JsonObject(); model.add("SubHeadEntity3", subHeadEntity3); // 创建FPurchasePriceUnitId对象,并加入SubHeadEntity3 JsonObject fPurchasePriceUnitId = new JsonObject(); fPurchasePriceUnitId.addProperty("FNumber", "008"); subHeadEntity3.add("FPurchasePriceUnitId", fPurchasePriceUnitId); subHeadEntity3.addProperty("FIsQuota", false); subHeadEntity3.addProperty("FQuotaType", "1"); // 创建SubHeadEntity6对象,并加入Model 检验项 JsonObject subHeadEntity6 = new JsonObject(); model.add("SubHeadEntity6", subHeadEntity6); subHeadEntity6.addProperty("FCheckProduct", true); subHeadEntity6.addProperty("FCheckReturn", true); // 创建SubHeadEntity5对象,并加入Model JsonObject subHeadEntity5 = new JsonObject(); model.add("SubHeadEntity5", subHeadEntity5); // 创建FProduceUnitId对象,并加入SubHeadEntity5 JsonObject fProduceUnitId = new JsonObject(); fProduceUnitId.addProperty("FNumber", "008"); subHeadEntity5.add("FProduceUnitId", fProduceUnitId); // 创建FProduceBillType对象,并加入SubHeadEntity5 JsonObject fProduceBillType = new JsonObject(); fProduceBillType.addProperty("FNUMBER", "SCDD05_SYS"); subHeadEntity5.add("FProduceBillType", fProduceBillType); // 创建FBOMUnitId对象,并加入SubHeadEntity5 JsonObject fBOMUnitId = new JsonObject(); fBOMUnitId.addProperty("FNumber", "008"); subHeadEntity5.add("FBOMUnitId", fBOMUnitId); subHeadEntity5.addProperty("FIsMainPrd", true); subHeadEntity5.addProperty("FIssueType", "1"); // 创建FPickStockId对象,并加入SubHeadEntity5 JsonObject fPickStockId = new JsonObject(); fPickStockId.addProperty("FNumber", "CK012"); subHeadEntity1.add("FPickStockId", fPickStockId); subHeadEntity5.addProperty("FOverControlMode", "1"); subHeadEntity5.addProperty("FStdLaborProcessTime", fbWorkTime); subHeadEntity5.addProperty("FStandHourUnitId", "60"); subHeadEntity5.addProperty("FBackFlushType", "1"); String jsonData = json.toString(); System.out.println(jsonData); try { // 业务对象标识 String formId = "BD_MATERIAL"; // 调用接口 String resultJson = client.save(formId, jsonData); // 用于记录结果 Gson gson = new Gson(); // 对返回结果进行解析和校验 RepoRet repoRet = gson.fromJson(resultJson, RepoRet.class); if (repoRet.getResult().getResponseStatus().isIsSuccess()) { log.debug("接口返回结果: %s%n" + gson.toJson(repoRet.getResult())); return 1; } else { MessageUtil.fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus())); log.error("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus())); return 0; } } catch (Exception e) { MessageUtil.fail(e.getMessage()); return 0; } } //查询物料 作用于更新到物料的 仓位 是否启用VMI public static List getEntryID2(String materialCode) { List jinYongDTOS = new ArrayList<>(); K3CloudApi client = new K3CloudApi(); JsonObject json = new JsonObject(); json.addProperty("FormId", "BD_MATERIAL"); json.addProperty("FieldKeys", "FMATERIALID,SubHeadEntity1_FEntryId,SubHeadEntity3_FEntryId"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FNumber"); filterObject.addProperty("Compare", "="); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); log.info("查询物料是否启用VMI的接口参数: {}", jsonData); try { String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); if (jsonArray != null && jsonArray.size() > 0) { ObjectMapper objectMapper = new ObjectMapper(); List entryVmis = objectMapper.readValue(jsonArray.toString(), new TypeReference>() {}); if (entryVmis != null && !entryVmis.isEmpty()) { jinYongDTOS.addAll(entryVmis); } } else { log.warn("未找到与 " + materialCode + " 相关的记录"); } } catch (Exception e) { log.error("调用接口时发生异常: " + e.getMessage(), e); } return jinYongDTOS; } //更新VMI public static String updateVMI(int FMATERIALID, int fEntryId1, int fEntryId2, String cangkunum, String cangWeiNum) throws Exception { K3CloudApi api = new K3CloudApi(false); JsonObject json = new JsonObject(); // 创建 NeedUpDateFields 数组 JsonArray needUpDateFields = new JsonArray(); needUpDateFields.add("SubHeadEntity1"); needUpDateFields.add("FMATERIALID"); needUpDateFields.add("SubHeadEntity3"); needUpDateFields.add("FStockPlaceId"); needUpDateFields.add("FStockId"); needUpDateFields.add("FIsVmiBusiness"); //needUpDateFields.add("FIsVmiBusiness"); json.add("NeedUpDateFields", needUpDateFields); // 添加 IsDeleteEntry 属性 json.addProperty("IsDeleteEntry", "false"); // 创建 Model 对象 JsonObject model = new JsonObject(); model.addProperty("FMATERIALID", FMATERIALID); // 创建 SubHeadEntity1 对象 JsonObject subHeadEntity1 = new JsonObject(); subHeadEntity1.addProperty("FEntryId", fEntryId1); // 创建 FStockId 对象 JsonObject fStockId = new JsonObject(); fStockId.addProperty("FNumber", cangkunum); subHeadEntity1.add("FStockId", fStockId); // 创建 FStockPlaceId 对象 JsonObject fStockPlaceId = new JsonObject(); JsonObject fStockPlaceIdFF100002 = new JsonObject(); fStockPlaceIdFF100002.addProperty("FNumber", cangWeiNum); // // fStockPlaceId.add("FSTOCKPLACEID__FF100002", fStockPlaceIdFF100002); fStockPlaceId.add("FSTOCKPLACEID__FF100002", fStockPlaceIdFF100002); subHeadEntity1.add("FStockPlaceId", fStockPlaceId); model.add("SubHeadEntity1", subHeadEntity1); // 创建 SubHeadEntity3 对象 JsonObject subHeadEntity3 = new JsonObject(); subHeadEntity3.addProperty("FEntryId", fEntryId2); subHeadEntity3.addProperty("FIsVmiBusiness", "true"); model.add("SubHeadEntity3", subHeadEntity3); json.add("Model", model); String data = json.toString(); String result = api.save("BD_Material", data); Gson gson = new Gson(); RepoRet sRet = gson.fromJson(result, RepoRet.class); if (sRet.isSuccessfully()) { String successMessage = String.format("物料 %s 保存成功", sRet.getResult().getResponseStatus()); System.out.println(successMessage); return successMessage; } else { String errorMessage = String.format("物料 %s 保存失败: %s", FMATERIALID, gson.toJson(sRet.getResult())); System.out.println(errorMessage); return errorMessage; } } public static void updateDanzhong(int FMATERIALID, String danzhong) throws Exception { K3CloudApi api = new K3CloudApi(false); JsonObject json = new JsonObject(); // 创建 NeedUpDateFields 数组 JsonArray needUpDateFields = new JsonArray(); needUpDateFields.add("FMATERIALID"); needUpDateFields.add("F_HBYT_DZ"); //needUpDateFields.add("FIsVmiBusiness"); json.add("NeedUpDateFields", needUpDateFields); // 添加 IsDeleteEntry 属性 json.addProperty("IsDeleteEntry", "false"); JsonObject model = new JsonObject(); model.addProperty("FMATERIALID", FMATERIALID); // 创建 Model 对象 model.addProperty("F_HBYT_DZ", danzhong); json.add("Model", model); String data = json.toString(); String result = api.save("BD_Material", data); Gson gson = new Gson(); RepoRet sRet = gson.fromJson(result, RepoRet.class); if (sRet.isSuccessfully()) { String successMessage = String.format("物料 %s 保存成功", sRet.getResult().getResponseStatus()); System.out.println(successMessage); } else { String errorMessage = String.format("物料 %s 保存失败: %s", FMATERIALID, gson.toJson(sRet.getResult())); System.out.println(errorMessage); } } //查询物料清单 的 行iD public static List getFID(String materialCode) { List jinYongDTOS = new ArrayList<>(); K3CloudApi client = new K3CloudApi(); JsonObject json = new JsonObject(); json.addProperty("FormId", "ENG_BOM"); json.addProperty("FieldKeys", "FTreeEntity_FENTRYID,FID"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMATERIALIDCHILD.FNumber"); filterObject.addProperty("Compare", "="); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); try { String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); if (jsonArray != null && jsonArray.size() > 0) { ObjectMapper objectMapper = new ObjectMapper(); List JinYongDTOList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() {}); if (JinYongDTOList != null && !JinYongDTOList.isEmpty()) { jinYongDTOS.addAll(JinYongDTOList); } } else { log.warn("未找到与bom版本号 " + materialCode + " 相关的记录"); } } catch (Exception e) { log.error("调用接口时发生异常: " + e.getMessage(), e); } return jinYongDTOS; } //更新物料清单 的 行ID public static String updateHuozhu(int FID, int FENTRYID,String code) throws Exception { K3CloudApi api = new K3CloudApi(false); JsonObject json = new JsonObject(); // 构建 NeedUpDateFields 数组 JsonArray needUpDateFields = new JsonArray(); needUpDateFields.add("FID"); needUpDateFields.add("FOWNERTYPEID"); needUpDateFields.add("FOWNERID"); needUpDateFields.add("FTreeEntity"); needUpDateFields.add("FTreeEntity_FENTRYID"); json.add("NeedUpDateFields", needUpDateFields); // 添加 IsDeleteEntry 字段 json.addProperty("IsDeleteEntry", "false"); // 构建 Model 对象 JsonObject model = new JsonObject(); model.addProperty("FID", FID); // 构建 FTreeEntity 数组 JsonArray fTreeEntity = new JsonArray(); JsonObject fTreeEntityItem = new JsonObject(); fTreeEntityItem.addProperty("FENTRYID", FENTRYID); fTreeEntityItem.addProperty("FOWNERTYPEID", "BD_Supplier"); // 构建 FOWNERID 对象 JsonObject fOwnerId = new JsonObject(); fOwnerId.addProperty("FNumber", "GYS_070"); fTreeEntityItem.add("FOWNERID", fOwnerId); fTreeEntity.add(fTreeEntityItem); model.add("FTreeEntity", fTreeEntity); json.add("Model", model); String data = json.toString(); String result = api.save("ENG_BOM", data); Gson gson = new Gson(); RepoRet sRet = gson.fromJson(result, RepoRet.class); if (sRet.isSuccessfully()) { String successMessage = String.format("物料清单 %s 保存成功", sRet.getResult().getResponseStatus()); log.info("更新货主信息物料编码==>"+code+" 保存成功"); return successMessage; } else { String errorMessage = String.format("物料 %s 保存失败: %s", FENTRYID, gson.toJson(sRet.getResult())); log.info("更新货主信息物料编码"+code+"保存失败"+"原因:"+gson.toJson(sRet.getResult())); return errorMessage; } } //查询物料清单 的 行iD public static JdHuoZhu getFIDToProductionOrder(PlanOrderVo planOrder) { K3CloudApi client = new K3CloudApi(); JsonObject json = new JsonObject(); json.addProperty("FormId", "PRD_MO"); json.addProperty("FieldKeys", "FTreeEntity_FENTRYID,FID"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FBillNo"); filterObject.addProperty("Compare", "="); filterObject.addProperty("Value", planOrder.getFBillNo()); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); try { String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); if (jsonArray != null && jsonArray.size() > 0) { ObjectMapper objectMapper = new ObjectMapper(); List jinYongDTOList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() {}); if (jinYongDTOList != null && !jinYongDTOList.isEmpty()) { return jinYongDTOList.get(0); // 返回第一个对象 } } else { log.warn("未找到与次生产订单的FID " + planOrder.getFBillNo() + " 相关的记录"); } } catch (Exception e) { log.error("调用接口时发生异常: " + e.getMessage(), e); } return null; // 如果没有找到,返回 null } //保存更新生产订单的开工时间 public static String updateOrder(JdHuoZhu jdHuoZhu, Model numDTO, Date xuStartTime, Date xuEndTime) throws Exception { String planStartDate = dateFormat.format(xuStartTime); String planFinishDate = dateFormat.format(xuEndTime); K3CloudApi api = new K3CloudApi(false); JsonObject json = new JsonObject(); // 构建 NeedUpDateFields 数组 JsonArray needUpDateFields = new JsonArray(); needUpDateFields.add("FID"); needUpDateFields.add("FPlanStartDate"); needUpDateFields.add("FTreeEntity_FENTRYID"); needUpDateFields.add("FPlanFinishDate"); json.add("NeedUpDateFields", needUpDateFields); // 添加 IsDeleteEntry 字段 json.addProperty("IsDeleteEntry", "false"); // 构建 Model 对象 JsonObject model = new JsonObject(); model.addProperty("FID", jdHuoZhu.getFID()); // 构建 FTreeEntity 数组 JsonArray fTreeEntity = new JsonArray(); JsonObject fTreeEntityItem = new JsonObject(); fTreeEntityItem.addProperty("FPlanStartDate", planStartDate); fTreeEntityItem.addProperty("FPlanFinishDate", planFinishDate); fTreeEntityItem.addProperty("FENTRYID", jdHuoZhu.getFTreeEntityFENTRYID()); fTreeEntity.add(fTreeEntityItem); model.add("FTreeEntity", fTreeEntity); json.add("Model", model); String data = json.toString(); String result = api.save("PRD_MO", data); Gson gson = new Gson(); RepoRet sRet = gson.fromJson(result, RepoRet.class); if (sRet.isSuccessfully()) { String successMessage = String.format("生产订单 %s 保存成功", sRet.getResult().getResponseStatus()); log.info("物料编码"+numDTO.getFID()+"保存成功"); return successMessage; } else { String errorMessage = String.format("物料 %s 保存失败: %s", +numDTO.getFID(), gson.toJson(sRet.getResult())); log.info("物料编码"+numDTO.getFID()+"保存失败"+"原因:"+gson.toJson(sRet.getResult())); return errorMessage; } } public static List getSubHeadEntity1Id(String materialCode) { ListsubHeadEntityDTOS = new ArrayList<>(); K3CloudApi client = new K3CloudApi(); JsonObject json = new JsonObject(); json.addProperty("FormId", "BD_MATERIAL"); json.addProperty("FieldKeys", "FMATERIALID,SubHeadEntity1_FEntryId"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FNumber"); filterObject.addProperty("Compare", "="); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); log.info("查询物料是否启用VMI的接口参数: {}", jsonData); try { String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); if (jsonArray != null && jsonArray.size() > 0) { ObjectMapper objectMapper = new ObjectMapper(); List JinYongDTOList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() {}); if (JinYongDTOList != null && !JinYongDTOList.isEmpty()) { subHeadEntityDTOS.addAll(JinYongDTOList); } } else { log.warn("未找到与bom版本号 " + materialCode + " 相关的记录"); } } catch (Exception e) { log.error("调用接口时发生异常: " + e.getMessage(), e); } return subHeadEntityDTOS; } public static String updateKunCun(int FMATERIALID, int fEntryId1, int fMaxPOQty, int FSafeStock) throws Exception { K3CloudApi api = new K3CloudApi(false); JsonObject json = new JsonObject(); // 创建 NeedUpDateFields 数组 JsonArray needUpDateFields = new JsonArray(); needUpDateFields.add("SubHeadEntity1"); needUpDateFields.add("FMATERIALID"); needUpDateFields.add("SubHeadEntity4"); needUpDateFields.add("FIsEnableMaxStock"); needUpDateFields.add("FIsEnableSafeStock"); needUpDateFields.add("FMinPOQty"); needUpDateFields.add("FMaxPOQty"); needUpDateFields.add("FSafeStock"); json.add("NeedUpDateFields", needUpDateFields); // 添加 IsDeleteEntry 属性 json.addProperty("IsDeleteEntry", "false"); // 创建 Model 对象 JsonObject model = new JsonObject(); model.addProperty("FMATERIALID", FMATERIALID); // 创建 SubHeadEntity1 对象 JsonObject subHeadEntity1 = new JsonObject(); model.add("SubHeadEntity1", subHeadEntity1); subHeadEntity1.addProperty("FEntryId", fEntryId1); // 创建 FStockId 对象 JsonObject fStockId = new JsonObject(); subHeadEntity1.addProperty("FIsEnableMaxStock", true); subHeadEntity1.addProperty("FIsEnableSafeStock", true); subHeadEntity1.addProperty("FSafeStock", FSafeStock); JsonObject subHeadEntity4 = new JsonObject(); model.add("SubHeadEntity4", subHeadEntity4); subHeadEntity4.addProperty("FEntryId", fEntryId1); subHeadEntity4.addProperty("FMaxPOQty", fMaxPOQty); subHeadEntity4.addProperty("FMinPOQty", fMaxPOQty); json.add("Model", model); String data = json.toString(); String result = api.save("BD_Material", data); Gson gson = new Gson(); RepoRet sRet = gson.fromJson(result, RepoRet.class); if (sRet.isSuccessfully()) { String successMessage = String.format("物料 %s 保存成功", sRet.getResult().getResponseStatus().getSuccessEntitys()); System.out.println(successMessage); return successMessage; } else { String errorMessage = String.format("物料 %s 保存失败: %s", FMATERIALID, gson.toJson(sRet.getResult().getResponseStatus().getErrors())); System.out.println(errorMessage); return errorMessage; } } //获取用料清单 根据父级物料编码,作为bom校验使用 public static List getSelectBomList(String FMaterialCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "ENG_BOM"); json.addProperty("FieldKeys", "FID,FMATERIALID.FNumber,FITEMNAME,FUNITID.FName,FCHILDITEMNAME,FCHILDITEMPROPERTY,FMATERIALIDCHILD.FNumber,FNUMERATOR,FDENOMINATOR,F_HBYT_BJBM,F_HBYT_BJMC"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMATERIALID.FNumber"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", FMaterialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObjec1 = new JsonObject(); filterObjec1.addProperty("FieldName", "FForbidStatus"); filterObjec1.addProperty("Compare", "105"); filterObjec1.addProperty("Value", "A"); filterObjec1.addProperty("Left", ""); filterObjec1.addProperty("Right", ""); filterObjec1.addProperty("Logic", 0); filterString.add(filterObjec1); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); String resultJson; try { // 调用API接口 resultJson = String.valueOf(client.billQuery(jsonData)); // 将JsonArray转为JdValidateBomDTO列表 return JdUtil.transformToJdValidateBomDTO(resultJson); } catch (Exception e) { e.printStackTrace(); return null; } } public static String updateOldFuNumber(String FMATERIALID, String FNumber, String FOldNumber) throws Exception { K3CloudApi api = new K3CloudApi(false); JsonObject json = new JsonObject(); // 创建 NeedUpDateFields 数组 JsonArray needUpDateFields = new JsonArray(); needUpDateFields.add("FMATERIALID"); needUpDateFields.add("FNumber"); needUpDateFields.add("FOldNumber"); json.add("NeedUpDateFields", needUpDateFields); // 添加 IsDeleteEntry 属性 json.addProperty("IsDeleteEntry", "false"); // 创建 Model 对象 JsonObject model = new JsonObject(); model.addProperty("FMATERIALID", FMATERIALID); model.addProperty("FNumber", FNumber); model.addProperty("FOldNumber", FOldNumber); json.add("Model", model); String data = json.toString(); String result = api.save("BD_Material", data); Gson gson = new Gson(); RepoRet sRet = gson.fromJson(result, RepoRet.class); if (sRet.isSuccessfully()) { String successMessage = String.format("物料 %s 保存成功", sRet.getResult().getResponseStatus()); return successMessage; } else { String errorMessage = String.format("物料 %s 保存失败: %s", FMATERIALID, gson.toJson(sRet.getResult())); return errorMessage; } } public static List transformToJdValidateBomDTO(String jsonData) { try { ObjectMapper objectMapper = new ObjectMapper(); JsonArray jsonArray = new Gson().fromJson(jsonData, JsonArray.class); Map bomMap = new HashMap<>(); for (JsonElement element : jsonArray) { JsonObject obj = element.getAsJsonObject(); String key = obj.get("FID").getAsString() + "_" + obj.get("FMATERIALID.FNumber").getAsString() + "_" + obj.get("FITEMNAME").getAsString(); JdValidateBomDTO parentDTO = bomMap.computeIfAbsent(key, k -> { JdValidateBomDTO dto = new JdValidateBomDTO(); dto.setFID(obj.get("FID").getAsString()); dto.setFNumber(obj.get("FMATERIALID.FNumber").getAsString()); dto.setFName(obj.get("FITEMNAME").getAsString()); dto.setChilds(new ArrayList<>()); return dto; }); JdChildDTO childDTO = new JdChildDTO(); childDTO.setPartdiagramCode(obj.get("F_HBYT_BJBM").getAsString()); childDTO.setPartdiagramName(obj.get("F_HBYT_BJMC").getAsString()); childDTO.setWareHouse(obj.get("FUNITID.FName").getAsString()); childDTO.setPartNumber(obj.get("FMATERIALIDCHILD.FNumber").getAsString()); childDTO.setName(obj.get("FCHILDITEMNAME").getAsString()); childDTO.setStats(obj.get("FCHILDITEMPROPERTY").getAsString()); childDTO.setQuantity(obj.get("FNUMERATOR").getAsDouble()); childDTO.setDenominator(obj.get("FDENOMINATOR").getAsDouble()); parentDTO.getChilds().add(childDTO); } return new ArrayList<>(bomMap.values()); } catch (Exception e) { e.printStackTrace(); return new ArrayList<>(); } } /** * 获取生产用料清单 * @param F_HBYT_SCLH * @return */ public static List getPRD_PPBOM(String F_HBYT_SCLH) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PRD_PPBOM"); json.addProperty("FieldKeys", "F_HBYT_SCLH,FMaterialID.FNumber,FMaterialName,FUnitID2.FName,FMaterialID2.FNumber,FMaterialName1,FNumerator,FDenominator,FMustQty,FPickedQty,F_HBYT_CZ,F_HBYT_DZ"); // 创建过滤条件 JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "F_HBYT_SCLH"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", F_HBYT_SCLH); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List materialUsageDTO2List = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); materialUsageDTO2List = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return materialUsageDTO2List; // 返回结果 } //用料清单查询接口腹肌无聊 public static List getEngBom(String materialCode) { List jinYongDTOS = new ArrayList<>(); K3CloudApi client = new K3CloudApi(); JsonObject json = new JsonObject(); json.addProperty("FormId", "ENG_BOM"); json.addProperty("FieldKeys", "FNumber"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMATERIALIDCHILD.FNumber"); filterObject.addProperty("Compare", "="); filterObject.addProperty("Value", materialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); try { String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); if (jsonArray != null && jsonArray.size() > 0) { ObjectMapper objectMapper = new ObjectMapper(); List JinYongDTOList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() {}); if (JinYongDTOList != null && !JinYongDTOList.isEmpty()) { jinYongDTOS.addAll(JinYongDTOList); } } else { log.warn("未找到与bom版本号 " + materialCode + " 相关的记录"); } } catch (Exception e) { log.error("调用接口时发生异常: " + e.getMessage(), e); } return jinYongDTOS; } /** * 获取固定工艺路线 * @param FMaterialCode * @return */ public static List getRouteGuDing(String FMaterialCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "ENG_Route"); json.addProperty("FieldKeys", "FNumber,FOperNumber,FWorkCenterId.FName,FProcessId.FName,FOperDescription,FOptCtrlCodeId.FName,FActivity1Qty,FActivity1UnitID.FName"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMATERIALID.FNumber"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", FMaterialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FForbidStatus"); filterObject1.addProperty("Compare", "105"); filterObject1.addProperty("Value", "A"); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); filterString.add(filterObject1); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); try { String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); if (jsonArray != null && jsonArray.size() > 0) { ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.readValue(jsonArray.toString(), new TypeReference>() {}); } else { return Collections.emptyList(); } } catch (Exception e) { log.error("调用接口时发生异常: " + e.getMessage(), e); } return Collections.emptyList(); } /** * 获取物料清单 * @param FMaterialCode * @return */ public static List getMaterialUseX(String FMaterialCode) { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "ENG_BOM"); json.addProperty("FieldKeys", "FNumber,FMATERIALIDCHILD.FNumber,FCHILDITEMNAME,FCHILDUNITID.FName,FNUMERATOR,FDENOMINATOR,F_HBYT_DZ,F_HBYT_CZ"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMATERIALID.FNumber"); filterObject.addProperty("Compare", "67"); filterObject.addProperty("Value", FMaterialCode); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FForbidStatus"); filterObject1.addProperty("Compare", "105"); filterObject1.addProperty("Value", "A"); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); filterString.add(filterObject1); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 2000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); try { String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); if (jsonArray != null && jsonArray.size() > 0) { ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.readValue(jsonArray.toString(), new TypeReference>() {}); } else { return Collections.emptyList(); } } catch (Exception e) { log.error("调用接口时发生异常: " + e.getMessage(), e); } return Collections.emptyList(); } /** * 查询金蝶资产卡片 * @return */ public static List getKingdeeAssetCards() { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "FA_CARD"); json.addProperty("FieldKeys", "FAlterID,FAssetTypeID.FName,FNumber,FUnitID.FName,FAssetNO,FPositionID.FName,FQuantity,FName,FManufacturer,FKEEPERID.FName,FModifyDate,FCreateDate"); // 创建过滤条件 JsonArray filterString = new JsonArray(); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 10000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List promoList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); promoList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return promoList; // 返回结果 } public static List getPurchaseOrder() { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PUR_PurchaseOrder"); json.addProperty("FieldKeys", "FBillNo,FDate,FSupplierId.FName,FMaterialId.FNumber,FMaterialName,FQty,FDeliveryDate,F_UCHN_Text2"); // 创建过滤条件 JsonObject filterObject = new JsonObject(); JsonArray filterString = new JsonArray(); filterObject.addProperty("FieldName", "FCloseStatus"); filterObject.addProperty("Compare", "105"); filterObject.addProperty("Value", "A"); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FMRPCloseStatus"); filterObject1.addProperty("Compare", "105"); filterObject1.addProperty("Value", "A"); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); filterString.add(filterObject1); JsonObject filterObject2 = new JsonObject(); filterObject2.addProperty("FieldName", "FDocumentStatus"); filterObject2.addProperty("Compare", "105"); filterObject2.addProperty("Value", "C"); filterObject2.addProperty("Left", ""); filterObject2.addProperty("Right", ""); filterObject2.addProperty("Logic", 0); filterString.add(filterObject2); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 10000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List purcs = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); purcs = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return purcs; // 返回结果 } public static List getPurchaseRequestOrder() { K3CloudApi client = new K3CloudApi(); // 请求参数,要求为json字符串 JsonObject json = new JsonObject(); json.addProperty("FormId", "PUR_Requisition"); json.addProperty("FieldKeys", "FBillNo,FBillTypeID,FSuggestPurDate,FSuggestSupplierId.FName,FMaterialId.FNumber,FMaterialName,FPriceUnitId.FName,FReqQty,FArrivalDate,FApplicationDate,F_UCHN_Text"); // 创建过滤条件 JsonObject filterObject = new JsonObject(); JsonArray filterString = new JsonArray(); filterObject.addProperty("FieldName", "FDocumentStatus"); filterObject.addProperty("Compare", "105"); filterObject.addProperty("Value", "C"); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); filterString.add(filterObject); JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FCloseStatus"); filterObject1.addProperty("Compare", "105"); filterObject1.addProperty("Value", "A"); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); filterString.add(filterObject1); json.add("FilterString", filterString); json.addProperty("OrderString", ""); json.addProperty("TopRowCount", 0); json.addProperty("StartRow", 0); json.addProperty("Limit", 10000); json.addProperty("SubSystemId", ""); String jsonData = json.toString(); List purchaseRequestExcelDTOList = null; try { // 调用接口 String resultJson = String.valueOf(client.billQuery(jsonData)); JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); // 使用 ObjectMapper 将 JsonArray 转换为 List ObjectMapper objectMapper = new ObjectMapper(); purchaseRequestExcelDTOList = objectMapper.readValue(jsonArray.toString(), new TypeReference>() { }); } catch (Exception e) { e.printStackTrace(); // 输出异常日志 } return purchaseRequestExcelDTOList; // 返回结果 } }