wangxin 1 mēnesi atpakaļ
vecāks
revīzija
d61172a5fc

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

@@ -0,0 +1,22 @@
+package cn.ezhizao.javasdk;
+
+
+
+
+
+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({
+        PurTest.class,
+        SavexSaleOrder.class
+})
+
+
+
+public class TestCaseSuit {
+}

+ 227 - 0
src/main/java/cn/ezhizao/javasdk/purpurchaseorder/FBillHead.java

@@ -0,0 +1,227 @@
+package cn.ezhizao.javasdk.purpurchaseorder;
+
+import lombok.Data;
+
+@Data
+public class FBillHead {
+
+    private Integer fId; // 实体主键
+    private String fBillNo; // 单据编号
+    private String fDocumentStatus; // 单据状态
+    private String fApproverId; // 审核人
+    private String fApproveDate; // 审核日期
+    private String fModifierId; // 修改人
+    private String fCreateDate; // 创建日期
+    private String fCreatorId; // 创建人
+    private String fModifyDate; // 修改日期
+    private String fCancelDate; // 作废日期
+    private String fCanceler; // 作废人
+    private String fCancelStatus; // 作废状态
+    private String fDescription; // 备注
+    private String fBillType; // 单据类型
+    private Boolean fTrustteed; // 受托
+    private Integer fWorkShopID0; // 生产车间
+    private Integer fPrdOrgId; // 生产组织
+    private Integer fPlannerID; // 计划员
+    private String fDate; // 单据日期
+    private String fOwnerTypeId; // 货主类型
+    private Integer fOwnerId; // 货主
+    private Integer fWorkGroupId; // 计划组
+    private String fBusinessType; // 销售业务类型
+    private Boolean fIsRework; // 是否返工
+    private Boolean fIsEntrust; // 组织受托加工
+    private Integer fEnTrustOrgId; // 委托组织
+    private String fPPBOMType; // 用料清单展开
+    private Boolean fIssueMtrl; // 生产发料
+    private Boolean fIsQCMO; // 期初生产订单
+//    private String fScanBox; // 序列号上传
+    private String f_TSXL_Text_uky; // 月    标识
+    private String f_TSXL_DDLB; // 订单类别
+    private String f_TSXL_thdh; // 退货单号
+//    private String f_TSXL_ywy1; // 业务员
+
+
+//    private Integer fEntryId; // 实体主键
+    private String fParentRowId; // 父级行主键
+    private Integer fRowExpandType; // 行展开类型
+    private String fRowId; // 行标识
+    private Integer fMaterialId; // 物料编码
+    private String fMaterialName; // 物料名称
+    private String fSpecification; // 规格型号
+    private String fProductType; // 产品类型
+    private Double fQty; // 制造数量
+    private String fPlanFinishDate; // 计划完工时间
+    private String fPlanStartDate; // 计划开工时间
+    private Integer fLot; // 批号
+    private String fMTONO; // 计划跟踪号
+    private String fProjectNo; // 项目编号
+    private Double fBaseUnitQty; // 基
+
+    // 本单位数量
+    private Integer fGroup; // 组别
+    private Integer fBomId; // BOM版本
+    private Integer fRoutingId; // 工艺路线
+    private Double fYieldRate; // 成品率%
+    private Double fStockInLimitH; // 入库上限
+    private Double fStockInLimitL; // 入库下限
+    private Double fStockInQuaSelAuxQty; // 合格品入库选单数量
+    private Double fStockInQuaSelQty; // 基本单位合格品入库选单数量
+    private Double fStockInFailSelQty; // 基本单位不合格品入库选单数量
+    private Double fStockInFailSelAuxQty; // 不合格品入库选单数量
+    private Double fStockInQuaQty; // 基本单位合格品入库数量
+    private Double fStockInQuaAuxQty; // 合格品入库数量
+    private Double fStockInFailQty; // 基本单位不合格品入库数量
+    private Double fStockInFailAuxQty; // 不合格品入库数量
+    private Integer fStockInOrgId; // 入库组织
+    private Integer fStockId; // 仓库
+    private String fStockLocId; // 仓位
+//    private String fF100004; // 原材料仓库
+//    private String fF100005; // 博世原材料仓库
+//    private String fF100006; // 辅料仓库
+//    private String fF100007; // 金华德原材料仓库
+    private String fOperId; // 产出工序
+    private String fProcessId; // 产出作业编码
+    private String fCostRate; // 成本权重
+    private String fMemoItem; // 备注
+    private String fPlanConfirmDate; // 计划确认日期
+    private String fScheduleDate; // 排程日期
+    private String fConveyDate; // 下达日期
+    private String fStartDate; // 开工日期
+    private String fFinishDate; // 完工日期
+    private String fCloseDate; // 结案日期
+    private String fCostDate; // 结算日期
+    private String fCreateType; // 生成方式
+    private String fSrcBillId; // 来源单据ID
+    private String fSrcBillEntryId; // 来源单据分录内码
+    private String fSaleOrderId; // 销售订单ID
+    private String fSaleOrderNo; // 需求单据
+    private String fSaleOrderEntryId; // 销售订单分录内码
+    private String fRequestOrgId; // 需求组织
+    private String fRepQuaSelQty; // 基本单位汇报选单数量
+    private String fRepFailQty; // 基本单位不合格数量
+    private String fRepQuaSelAuxQty; // 汇报选单数量
+    private String fRepQuaAuxQty; // 合格数量
+    private String fRepFailAuxQty; // 不合格数量
+    private String fRepQuaQty; // 基本单位合格数量
+    private String fStatus; // 业务状态
+    private String fUnitId; // 单位
+    private String fBaseUnitId; // 基本单位
+    private String fAuxPropId; // 辅助属性
+    private String fBaseStockInLimitH; // 基本单位入库上限
+    private String fBaseStockInLimitL; // 基本单位入库下限
+    private String fStockInUlRatio; // 入库上限比例
+    private String fSrcBillType; // 源单类型
+    private String fSrcBillNo; // 源单编号
+    private String fSrcBillEntrySeq; // 源单分录行号
+    private String fSaleOrderEntrySeq; // 需求单据行号
+    private String fBaseYieldQty; // 基本单位成品数量
+    private String fCopyEntryId; // 联副产品分录内码
+    private String fIsSuspend; // 挂起状态
+    private String fStockInLlRatio; // 入库下限比例
+    private String fBFLowId; // 业务流程
+    private String fRepFailSelQty; // 基本单位汇报不合格选单数量
+    private String fRepFailSelAuxQty; // 汇报不合格选单数量
+    private String fWorkShopID; // 生产车间
+    private String fReqType; // 需求类型
+    private String fPriority; // 需求优先级
+    private String fSTOCKREADY; // 备料套数
+    private String fBaseStockReady; // 基本单位备料数量
+    private String fBaseScrapQty; // 基本单位报废数量
+    private String fScrapQty; // 报废数量
+    private String fBaseRepairQty; // 基本单位返修数量
+    private String fRepairQty; // 返修数量
+    private String fBaseStockInScrapSelQty; // 基本单位报废品入库选单数量
+    private String fStockInScrapSelQty; // 报废品入库选单数量
+    private String fBaseStockInScrapQty; // 基本报废品入库数量
+    private String fStockInScrapQty; // 报废品入库数量
+    private String fInStockOwnerTypeId; // 入库货主类型
+    private String fInStockOwnerId; // 入库货主
+    private String fInStockType; // 入库类型-推入库单用
+    private String fCheckProduct; // 产品检验
+    private String fOutPutOptQueue; // 产出序列
+    private String fBaseRptFinishQty; // 基本单位汇报完成数量
+    private String fRptFinishQty; // 汇报完成数量
+    private String fQAIP; // 紧急放行
+    private String fYieldQty; // 成品数量
+    private String fISBACKFLUSH; // 倒冲领料
+    private String fNoStockInQty; // 未入库数量
+    private String fBaseNoStockInQty; // 基本单位未入库数量
+    private String fReqSrc; // 需求来源
+    private String fForceCloserId; // 结案人
+    private String fREMWorkShopId; // 产线
+    private String fScheduleSeq; // 排产序号
+    private String fScheduleStartTime; // 排程开工时间
+    private String fScheduleFinishTime; // 排程完工时间
+    private String fCloseType; // 结案类型
+    private String fScheduleProcSplit; // 排程工序拆分数
+    private String fSNUnitID; // 序列号单位
+    private String fSNQty; // 序列号单位数量
+    private String fReStkQty; // 退库数量
+    private String fBaseReStkQty; // 基本单位退库数量
+    private String fReStkQuaQty; // 合格品退库数量
+    private String fBaseReStkQuaQty; // 基本合格品退库数量
+    private String fReStkFailQty; // 不合格品退库数量
+    private String fBaseReStkFailQty; // 基本报废品退库数量
+    private String fReStkScrapQty; // 报废品退库数量
+    private String fBaseReStkScrapQty; // 基本报废品退库数量
+    private String fPickMtlQty; // 领补套数
+    private String fBasePickMtlQty; // 基本单位领补套数
+    private String fISNEWLC; // 是否手工新增联副产品
+    private String fPickMtrlStatus; // 领料状态
+    private String fBaseIssueQty; // 基本单位发料通知套数
+    private String fIssueQty; // 发料通知套数
+    private String fSrcSplitBillNo; // 源拆分订单编号
+    private String fSrcSplitSeq; // 源拆分订单行号
+    private String fSrcSplitEntryId; // 源拆分订单分录内码
+    private String fSrcSplitId; // 源拆分生产订单内码
+    private String fMOChangeFlag; // 变更标志
+    private String fSRCBOMENTRYID; // 上级订单BOM分录内码
+    private String fReStkReMadeQty; // 返工品退库数量
+    private String fBaseReStkReMadeQty; // 基本单位返工品退库数量
+    private String fBaseReMadeQty; // 基本单位返工数量
+    private String fReMadeQty; // 返工数量
+    private String fBaseStockInReMadeQty; // 基本单位返工品入库数量
+    private String fStockInReMadeQty; // 返工品入库数量
+    private String fBaseStockInReMadeSelQty; // 基本单位返工品入库选单数量
+    private String fStockInReMadeSelQty; // 返工品入库选单数量
+    private String FCloseReason ; // 强制结案原因
+    private String fBaseScheduledQtySum; // 基本单位已排产数量
+    private String fScheduledQtySum; // 已排产数量
+    private String fScheduleStatus; // 排产状态
+    private String fIsFirstInspect; // 首检
+    private String fFirstInspectStatus; // 首检状态
+    private String fConfirmId; // 计划确认人
+    private String fReleaseId; // 下达人
+    private String fStartID; // 开工人
+    private String fFinishId; // 完工人
+    private String fIsMRP; // 已预留
+    private String fBaseSampleDamageQty; // 基本单位样本破坏数
+    private String fSampleDamageQty; // 样本破坏数
+    private String fISENABLESCHEDULE; // 启用日排产
+    private String fPathEntryId; // BOM展开路径
+    private String fPPBOMENTRYID; // 用料清单分录内码
+    private String fBOMENTRYID; // BOM分录内码
+    private String fSrcFormID; // 用料清单类型
+    private String fMatchQty; // 预计齐套数量
+    private String fInvMatchQty; // 库存齐套数
+    private String fCompleteCon; // 齐套状况
+    private String fRemarks; // 跟进备注
+    private String fMatchDate; // 预计齐套日期
+    private String fNOTECOBY; // 联副产品备注
+    private String fDirectStockInQuaQty; // 直送合格品入库数量
+    private String fDirectPickMtrlSelQty; // 直送领料选单数
+    private String fBaseDirectStockInQuaQty; // 直送基本合格品入库数量
+    private String fBaseDirectPickMtrlSelQty; // 直送基本单位领料选单数
+    private String fFirstQCControlType; // 首检控制方式
+    private String fISMRPCAL; // 已计划运算
+    private String fIsGenerateOrder; // 生成下级订单标志
+    private String fANALYSEPRIORITY; // 齐套优先级
+    private String f_TSXL_LLBM; // 领料部门
+    private String f_TSXL_JHSL; // 计划数量
+    private String f_TSXL_FPQK; // 分批情况
+    private String f_TSXL_SPSL; // 首批数量
+    private String f_TSXL_WPSL; // 尾批数量
+    private String f_TSXL_gybb; // 工艺版本
+    private String f_TSXL_CPZT; // 产品状态
+    private String f_TSXL_ddy; // 调度员
+}

+ 290 - 0
src/main/java/cn/ezhizao/javasdk/purpurchaseorder/FProductionFeedMaterialHead.java

@@ -0,0 +1,290 @@
+package cn.ezhizao.javasdk.purpurchaseorder;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FProductionFeedMaterialHead {
+    // 实体主键
+    private Long fID;
+    // 单据编号
+    private String fBillNo;
+    // 单据状态
+    private String fDocumentStatus;
+    // 审核人
+    private Long fApproverId;
+    // 审核日期
+    private Date fApproveDate;
+    // 修改人
+    private Long fModifierId;
+    // 创建日期
+    private Date fCreateDate;
+    // 创建人
+    private Long fCreatorId;
+    // 修改日期
+    private Date fModifyDate;
+    // 作废日期
+    private Date fCancelDate;
+    // 作废人
+    private Long fCanceler;
+    // 作废状态
+    private String fCancelStatus;
+    // 备注
+    private String fDescription;
+    // 日期 (必填项)
+    private Date fDate;
+    // 生产组织 (必填项)
+    private String fPrdOrgId;
+    // 发料组织 (必填项)
+    private String fStockOrgId;
+    // 元数据中标识为fWorkShopId的字段不存在
+    // 生产车间
+//    private String fWorkShopId;
+//    元数据中标识为fStockId0的字段不存在
+    // 仓库
+//    private String fStockId0;
+    // 单据类型 (必填项)
+    private String fBillType;
+    // 货主类型
+    private String fOwnerTypeId0;
+    // 货主
+    private String fOwnerId0;
+    // 本位币
+    private String fCurrId;
+    // 跨组织业务类型
+    private String fTransferBizType;
+    // 仓管员
+    private String fSTOCKERID;
+    // 领料人
+    private Long fPickerId;
+    // 跨法人交易
+    private Boolean fIsCrossTrade;
+    // VMI业务
+    private Boolean fVmiBusiness;
+//    元数据中标识为fScanBox的字段不存在
+    // 序列号上传
+//    private Boolean fScanBox;
+    // 货主含组织
+    private Boolean fIsOwnerTInclOrg;
+//    输出的字段fEntryID其在指定实体tempObject上的属性没有找到映射或不是简单属性。
+    // 实体主键
+//    private Long fEntryID;
+    // 仓库
+    private String fStockId;
+    // 物料编码 (必填项)
+    private String fMaterialId;
+    // 物料名称
+    private String fMaterialName;
+    // 规格型号
+    private String fSpecification;
+    // BOM版本
+    private String fBomId;
+    // 仓位
+    private String fStockLocId;
+    // 这个好像是字典
+//    // 材料库区域
+//    private String fF100001;
+//    // 博世库分区
+//    private String fF100002;
+//    // 智能库分区
+//    private String fF100003;
+//    // 原材料仓库
+//    private String fF100004;
+//    // 博世原材料仓库
+//    private String fF100005;
+//    // 辅料仓库
+//    private String fF100006;
+//    // 金华德原材料仓库
+//    private String fF100007;
+    // 库存状态
+    private String fStockStatusId;
+    // 生产日期
+    private Date fProduceDate;
+    // 计划跟踪号
+    private String fMtoNo;
+    // 项目编号
+    private String fProjectNo;
+    // 生产订单编号 (必填项)
+    private String fMoBillNo;
+    // 生产订单分录内码
+    private Long fMoEntryId;
+    // 用料清单分录内码
+    private Long fPPBomEntryId;
+    // 工序号
+    private String fOperId;
+    // 作业
+    private String fProcessId;
+    // 货主类型 (必填项)
+    private String fOwnerTypeId;
+    // 申请数量
+    private Double fAppQty;
+    // 实发数量
+    private Double fActualQty;
+    // 主库存单位申请数量
+    private Double fStockAppQty;
+    // 主库存单位数量
+    private Double fStockActualQty;
+    // 辅库存单位数量
+    private Double fSecActualQty;
+    // 备注
+    private String fEntrtyDescription;
+    // 生产订单内码
+    private Long fMoId;
+    // 生产订单行号
+    private Integer fMoEntrySeq;
+    // 基本单位申请数量
+    private Double fBaseAppQty;
+    // 报废数量
+    private Double fScrapQty;
+    // 主库存单位报废数量
+    private Double fStockScrapQty;
+    // 辅库存单位报废数量
+    private Double fSecScrapQty;
+    // 基本单位报废数量
+    private Double fBaseScrapQty;
+    // 用料清单编号
+    private String fPPBomBillNo;
+    // 单位 (必填项)
+    private String fUnitID;
+    // 基本单位 (必填项)
+    private String fBaseUnitId;
+    // 主库存单位 (必填项)
+    private String fStockUnitId;
+    // 辅库存单位
+    private String fSecUnitId;
+    // 车间
+    private String fEntryWorkShopId;
+    // 退料选单数量
+    private Double fSelPrcdReturnQty;
+    // 基本单位退料选单数量
+    private Double fBaseSelPrcdReturnQty;
+    // 主库存单位退料选单数量
+    private Double fStockSelPrcdReturnQty;
+    // 辅库存单位退料选单数量
+    private Double fSecSelPrcdReturnQty;
+    // 基本单位实发数量
+    private Double fBaseActualQty;
+    // 辅助属性
+    private String fAuxPropId;
+    // 保管者类型 (必填项)
+    private String fKeeperTypeId;
+    // 保管者
+    private String fKeeperId;
+    // 更新库存标志
+    private Boolean fStockFlag;
+    // 货主 (必填项)
+    private String fOwnerId;
+    // 批号
+    private String fLot;
+    // 有效期至
+    private Date fExpiryDate;
+    // 保质期单位
+    private String fExpUnit;
+    // 保质期
+    private Integer fExpPeriod;
+    // 系统源单行号
+    private Integer fEntrySrcEntrySeq;
+    // 系统源单内码
+    private Long fEntrySrcInterId;
+    // 系统源单分录内码
+    private Long fEntrySrcEnteryId;
+    // 系统源单类型 (必填项)
+    private String fEntrySrcBillType;
+    // 系统源单编号 (必填项)
+    private String fEntrySrcBillNo;
+    // 成本价
+    private Double fPrice;
+    // 总成本
+    private Double fAmount;
+    // 补料原因
+    private String fFeedReasonId;
+    // 产品货主类型 (必填项)
+    private String fParentOwnerTypeId;
+    // 产品货主 (必填项)
+    private String fParentOwnerId;
+    // 业务流程
+    private String fBFLowId;
+    // 产品编码
+    private String fParentMaterialId;
+    // 业务源单类型
+    private String fSrcBizBillType;
+    // 业务源单编号
+    private String fSrcBizBillNo;
+    // 业务源单内码
+    private Long fSrcBizInterId;
+    // 业务源单分录内码
+    private Long fSrcBizEntryId;
+    // 业务源单行号
+    private Integer fSrcBizEntrySeq;
+    // 序列号单位
+    private String fSNUnitID;
+    // 序列号单位数量
+    private Double fSNQty;
+    // 预留类型
+    private String fReserveType;
+    // 主库存基本单位数量
+    private Double fBaseStockActualQty;
+    // 消耗汇总
+    private Boolean fConsome;
+    // VMI业务
+    private Boolean fEntryVmiBusiness;
+    // 工序序列
+    private Integer fOptQueue;
+    // 工序计划单编号
+    private String fOptPlanBillNo;
+    // 工序计划单内码
+    private Long fOptPlanBillId;
+    // 工作中心
+    private String fWorkCenterId;
+    // 工序计划工序内码
+    private Long fOptDetailId;
+    // 需求来源
+    private String fReqSrc;
+    // 需求单据
+    private String fReqBillNo;
+    // 需求单据内码
+    private Long fReqBillId;
+    // 需求单据行号
+    private Integer fReqEntrySeq;
+    // 需求单据分录内码
+    private Long fReqEntryId;
+    // 基本单位采购申请选单数量
+    private Double fBaseSelPurReqQty;
+    // 采购申请选单数量
+    private Double fSelPurReqQty;
+    // 转出退料单标识
+    private String fTransRetFormId;
+    // 转出退料单号
+    private String fTransRetBillNo;
+    // 转出退料单内码
+    private Long fTransRetId;
+    // 转出退料单分录内码
+    private Long fTransRetEntryId;
+    // 转出退料单行号
+    private Integer fTransRetEntrySeq;
+    // 组织间结算跨法人标识
+    private Boolean fIsOverLegalOrg;
+    // 生产退料检验
+    private Boolean fCheckReturnMtrl;
+    // 基本单位生产退料请检选单数量
+    private Double fBaseReturnAppSelQty;
+    // 生产退料请检选单数量
+    private Double fReturnAppSelQty;
+    // 客户
+    private String f_TSXL_KH;
+    // 产品
+    private String f_TSXL_cp;
+    // 母材厂
+    private String f_TSXL_MCC;
+    // 拉拔厂
+    private String f_TSXL_LBC;
+    // 直料长度
+    private Double f_TSXL_ZLCD;
+    // 长度公差
+    private String f_TSXL_CDGC;
+    // 料头长度
+    private Double f_TSXL_LTCD;
+    // 仓管员
+    private String f_TSXL_CGY1;
+}

+ 88 - 0
src/main/java/cn/ezhizao/javasdk/purpurchaseorder/FProductionMaterialHead.java

@@ -0,0 +1,88 @@
+package cn.ezhizao.javasdk.purpurchaseorder;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FProductionMaterialHead {
+    // 实体主键
+    private Long fID;
+    // 单据编号
+    private String fBillNo;
+    // 单据状态
+    private String fDocumentStatus;
+    // 审核人
+    private Long fApproverId;
+    // 审核日期
+    private Date fApproveDate;
+    // 修改人
+    private Long fModifierId;
+    // 创建日期
+    private Date fCreateDate;
+    // 创建人
+    private Long fCreatorId;
+    // 修改日期
+    private Date fModifyDate;
+    // 备注
+    private String fDescription;
+    // 产品编码
+    private String fMaterialID;
+    // 产品名称
+    private String fMaterialName;
+    // 规格型号
+    private String fMaterialModel;
+    // 生产车间
+    private String fWorkshopID;
+    // BOM版本
+    private String fBOMID;
+    // 数量
+    private Double fQty;
+    // 生产订单编号
+    private String fMOBillNO;
+    // 生产订单行号
+    private Integer fMOEntrySeq;
+    // 生产订单状态
+    // 这个字段报错了
+//    private String fMOStatus;
+    // 生产订单分录内码
+    private Long fMOEntryID;
+    // 基本单位数量
+    private Double fBaseQty;
+    // 生产订单内码
+    private Long fMoId;
+    // 基本单位
+    private String fBaseUnitID;
+    // 生产订单类型
+    private String fMOType;
+    // 单位
+    private String fUnitID;
+    // 生产组织
+    private String fPrdOrgId;
+    // 辅助属性
+    private String  fAuxPropIDHead;
+    // 产品货主类型
+    private String fParentOwnerTypeId;
+    // 产品货主
+    private String fParentOwnerId;
+    // 委托组织
+    private String fEntrustOrgId;
+    // 生产订单行镜像
+    private String fMoEntryMirror;
+    // 需求单据ID
+    private Long fSaleOrderId;
+    // 需求单据分录内码
+    private Long fSaleOrderEntryId;
+    // 需求单据编号
+    private String fSALEORDERNO;
+    // 需求单据行号
+    private Integer fSaleOrderEntrySeq;
+    // 需求来源
+    private String fReqSrc;
+    // 库存日期
+    private Date fInventoryDate;
+    // BOM日期
+    private Date fGeneRateDate;
+    // 期初生产订单
+    private Boolean fIsQCMo;
+}

+ 316 - 0
src/main/java/cn/ezhizao/javasdk/purpurchaseorder/FProductionMaterialTokenHead.java

@@ -0,0 +1,316 @@
+package cn.ezhizao.javasdk.purpurchaseorder;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 生产领料清单
+ */
+@Data
+public class FProductionMaterialTokenHead {
+    // 实体主键
+    private Long fID;
+    // 单据编号
+    private String fBillNo;
+    // 单据状态
+    private String fDocumentStatus;
+    // 审核人
+    private Long fApproverId;
+    // 审核日期
+    private Date fApproveDate;
+    // 修改人
+    private Long fModifierId;
+    // 创建日期
+    private Date fCreateDate;
+    // 创建人
+    private Long fCreatorId;
+    // 修改日期
+    private Date fModifyDate;
+    // 作废日期
+    private Date fCancelDate;
+    // 作废人
+    private Long fCanceler;
+    // 作废状态
+    private String fCancelStatus;
+    // 备注
+    private String fDescription;
+    // 日期
+    private Date fDate;
+    // 生产组织
+    private String fPrdOrgId;
+    // 发料组织
+    private String fStockOrgId;
+    // 生产车间
+    // 数据字段不存在
+//    private String fWorkShopId;
+    // 仓库
+    // 数据字段不存在
+//    private String fStockId0;
+    // 单据类型
+    private String fBillType;
+    // 货主类型
+    private String fOwnerTypeId0;
+    // 货主
+    private String fOwnerId0;
+    // 本位币
+    private String fCurrId;
+    // 跨组织业务类型
+    private String fTransferBizType;
+    // 领料人
+    private Long fPickerId;
+    // 仓管员
+    private String fSTOCKERID;
+    // 跨法人交易
+    private Boolean fIsCrossTrade;
+    // VMI业务
+    private Boolean fVmiBusiness;
+    // 序列号上传
+    // 数据字段不存在
+//    private Boolean fScanBox;
+    // 倒冲来源
+    private String fSourceType;
+    // 货主含组织
+    private Boolean fIsOwnerTInclOrg;
+    // 库存刷新日期
+    private Date fInventoryDate;
+    // 实体主键
+//    private Long fEntryID;
+    // 物料编码
+    private String fMaterialId;
+    // 物料名称
+    private String fMaterialName;
+    // 规格型号
+    private String fSpecification;
+    // BOM版本
+    private String fBomId;
+    // 仓库
+    private String fStockId;
+    // 仓位
+    private String fStockLocId;
+    // 这个部分像字典
+//    // 材料库区域
+//    private String fF100001;
+//    // 博世库分区
+//    private String fF100002;
+//    // 智能库分区
+//    private String fF100003;
+//    // 原材料仓库
+//    private String fF100004;
+//    // 博世原材料仓库
+//    private String fF100005;
+//    // 辅料仓库
+//    private String fF100006;
+//    // 金华德原材料仓库
+//    private String fF100007;
+    // 库存状态
+    private String fStockStatusId;
+    // 生产日期
+    private Date fProduceDate;
+    // 计划跟踪号
+    private String fMtoNo;
+    // 项目编号
+    private String fProjectNo;
+    // 生产订单编号
+    private String fMoBillNo;
+    // 生产订单分录内码
+    private Long fMoEntryId;
+    // 用料清单分录内码
+    private Long fPPBomEntryId;
+    // 工序号
+    private String fOperId;
+    // 作业
+    private String fProcessId;
+    // 货主类型
+    private String fOwnerTypeId;
+    // 申请数量
+    private Double fAppQty;
+    // 实发数量
+    private Double fActualQty;
+    // 主库存单位申请数量
+    private Double fStockAppQty;
+    // 主库存单位实发数量
+    private Double fStockActualQty;
+    // 辅库存单位实发数量
+    private Double fSecActualQty;
+    // 备注
+    private String fEntrtyMemo;
+    // 生产订单内码
+    private Long fMoId;
+    // 生产订单行号
+    private Integer fMoEntrySeq;
+    // 基本单位申请数量
+    private Double fBaseAppQty;
+    // 可超发数量
+    private Double fAllowOverQty;
+    // 主库存单位可超发数量
+    private Double fStockAllowOverQty;
+    // 辅库存单位可超发数量
+    private Double fSecAllowOverQty;
+    // 基本单位可超发数量
+    private Double fBaseAllowOverQty;
+    // 用料清单编号
+    private String fPPBomBillNo;
+    // 单位
+    private String fUnitID;
+    // 基本单位
+    private String fBaseUnitId;
+    // 主库存单位
+    private String fStockUnitId;
+    // 辅库存单位
+    private String fSecUnitId;
+    // 车间
+    private String fEntryWorkShopId;
+    // 退料选单数量
+    private Double fSelPrcdReturnQty;
+    // 基本单位退料选单数量
+    private Double fBaseSelPrcdReturnQty;
+    // 主库存单位退料选单数量
+    private Double fStockSelPrcdReturnQty;
+    // 辅库存单位退料选单数量
+    private Double fSecSelPrcdReturnQty;
+    // 基本单位实发数量
+    private Double fBaseActualQty;
+    // 辅助属性
+    private String fAuxPropId;
+    // 保管者类型
+    private String fKeeperTypeId;
+    // 保管者
+    private String fKeeperId;
+    // 更新库存标志
+    private Boolean fStockFlag;
+    // 货主
+    private String fOwnerId;
+    // 有效期至
+    private Date fExpiryDate;
+    // 保质期单位
+    private String fExpUnit;
+    // 保质期
+    private Integer fExpPeriod;
+    // 系统源单类型
+    private String fSrcBillType;
+    // 系统源单编号
+    private String fSrcBillNo;
+    // 成本价
+    private Double fPrice;
+    // 总成本
+    private Double fAmount;
+    // 系统源单内码
+    private Long fEntrySrcInterId;
+    // 系统源单分录内码
+    private Long fEntrySrcEnteryId;
+    // 系统源单行号
+    private Integer fEntrySrcEntrySeq;
+    // 批号
+    private String fLot;
+    // 产品货主类型
+    private String fParentOwnerTypeId;
+    // 产品货主
+    private String fParentOwnerId;
+    // 业务源单类型
+    private String fSRCBIZBILLTYPE;
+    // 业务源单编号
+    private String fSRCBIZBILLNO;
+    // 业务源单内码
+    private Long fSRCBIZINTERID;
+    // 业务源单分录内码
+    private Long fSRCBIZENTRYID;
+    // 业务源单行号
+    private Integer fSRCBIZENTRYSEQ;
+    // 拣货规则标识位
+    private String fPickingStatus;
+    // 业务流程
+    private String fBFLowId;
+    // 产品编码
+    private String fParentMaterialId;
+    // 生产备料单据编号
+    private String fFPMBillNo;
+    // 序列号单位
+    private String fSNUnitID;
+    // 序列号单位数量
+    private Double fSNQty;
+    // 预留类型
+    private String fReserveType;
+    // 主库存基本单位实发数量
+    private Double fBaseStockActualQty;
+    // 工序序列
+    private Integer fOptQueue;
+    // 消耗汇总
+    private Boolean fConsome;
+    // VMI业务
+    private Boolean fEntryVmiBusiness;
+    // 工序计划单编号
+    private String fOptPlanBillNo;
+    // 工序计划单内码
+    private Long fOptPlanBillId;
+    // 工作中心
+    private String fWorkCenterId;
+    // 工序计划工序内码
+    private Long fOptDetailId;
+    // 联副产品BOM分录内码
+    private Long fCobyBomEntryID;
+    // 需求来源
+    private String fReqSrc;
+    // 需求单据
+    private String fReqBillNo;
+    // 需求单据内码
+    private Long fReqBillId;
+    // 需求单据行号
+    private Integer fReqEntrySeq;
+    // 需求单据分录内码
+    private Long fReqEntryId;
+    // 组别
+    private String fGroupRow;
+    // 库存查询标识
+    // 数据字段不存在
+//    private Boolean fQueryStockUpdate;
+    // 源领料单分录内码
+    // 数据字段不存在
+//    private Long fSrcPickEntryId;
+    // 业务来源类型
+    private String fSrcBusinessType;
+    // 直送标识
+    private String fSendRowId;
+    // 可用库存
+    private Double fInventoryQty;
+    // 基本单位可用库存数量
+    private Double fBaseInventoryQty;
+    // 转出退料单标识
+    private String fTransRetFormId;
+    // 转出退料单号
+    private String fTransRetBillNo;
+    // 转出退料单内码
+    private Long fTransRetId;
+    // 转出退料单分录内码
+    private Long fTransRetEntryId;
+    // 转出退料单行号
+    private Integer fTransRetEntrySeq;
+    // 生产退料检验
+    private Boolean fCheckReturnMtrl;
+    // 基本单位生产退料请检选单数量
+    private Double fBaseReturnAppSelQty;
+    // 生产退料请检选单数量
+    private Double fReturnAppSelQty;
+    // 组织间结算跨法人标识
+    private Boolean fIsOverLegalOrg;
+    // 工序计划分录内码
+    private Long fPlanEntryID;
+    // 发料通知单订单明细分录内码
+    private Long fISSUEINFOENTRYID;
+    // 客户
+    private String f_TSXL_KH;
+    // 产品
+    private String f_TSXL_cp;
+    // 母材厂
+    private String f_TSXL_MCC;
+    // 拉拔厂
+    private String f_TSXL_LBC;
+    // 直料长度
+    private Double f_TSXL_ZLCD;
+    // 长度公差
+    private String f_TSXL_CDGC;
+    // 料头长度
+    private Double f_TSXL_LTCD;
+    // 仓管员
+    private String f_TSXL_CGY1;
+}

+ 253 - 0
src/main/java/cn/ezhizao/javasdk/purpurchaseorder/FProductionReturnMaterialHead.java

@@ -0,0 +1,253 @@
+package cn.ezhizao.javasdk.purpurchaseorder;
+
+import lombok.Data;
+
+import java.util.Date;
+
+// 生产退料单
+@Data
+public class FProductionReturnMaterialHead {
+    // 实体主键
+    private Long fID;
+    // 单据编号
+    private String fBillNo;
+    // 单据状态
+    private String fDocumentStatus;
+    // 审核人
+    private Long fApproverId;
+    // 审核日期
+    private Date fApproveDate;
+    // 修改人
+    private Long fModifierId;
+    // 创建日期
+    private Date fCreateDate;
+    // 创建人
+    private Long fCreatorId;
+    // 修改日期
+    private Date fModifyDate;
+    // 作废日期
+    private Date fCancelDate;
+    // 作废人
+    private Long fCanceler;
+    // 作废状态
+    private String fCancelStatus;
+    // 备注
+    private String fDescription;
+    // 生产组织 (必填项)
+    private String fPrdOrgId;
+    // 收料组织 (必填项)
+    private String fStockOrgId;
+    // 日期 (必填项)
+    private Date fDate;
+//    元数据中标识为fWorkShopId的字段不存在
+    // 生产车间
+//    private String fWorkShopId;
+//    元数据中标识为fStockId0的字段不存在
+    // 仓库
+//    private String fStockId0;
+    // 单据类型 (必填项)
+    private String fBillType;
+    // 货主
+    private String fOwnerId0;
+    // 货主类型
+    private String fOwnerTypeId0;
+    // 本位币
+    private String fCurrId;
+    // 跨组织业务类型
+    private String fTransferBizType;
+    // 仓管员
+    private String fSTOCKERID;
+    // 退料人
+    private Long fReturnerId;
+    // 跨法人交易
+    private Boolean fIsCrossTrade;
+    // VMI业务
+    private Boolean fVmiBusiness;
+//    元数据中标识为fScanBox的字段不存在
+    // 序列号上传
+//    private Boolean fScanBox;
+    // 倒冲来源
+    private String fSourceType;
+    // 货主含组织
+    private Boolean fIsOwnerTInclOrg;
+//    输出的字段fEntryID其在指定实体tempObject上的属性没有找到映射或不是简单属性。
+    // 实体主键
+//    private Long fEntryID;
+    // 用料清单分录ID
+    private Long fPPBOMEntryId;
+    // 物料编码 (必填项)
+    private String fMaterialId;
+    // 物料名称
+    private String fMaterialName;
+    // 规格型号
+    private String fSpecification;
+    // 单位 (必填项)
+    private String fUnitID;
+    // 申请数量
+    private Double fAPPQty;
+    // 实退数量
+    private Double fQty;
+    // 退料类型 (必填项)
+    private String fReturnType;
+    // 仓库 (必填项)
+    private String fStockId;
+    // 生产订单ID
+    private Long fMoId;
+    // 生产订单编号
+    private String fMoBillNo;
+    // 生产订单分录ID
+    private Long fMoEntryId;
+    // 生产订单行号
+    private Integer fMoEntrySeq;
+    // 辅助属性
+    private String fAuxPropId;
+    // 基本单位申请数量
+    private Double fBaseAppQty;
+    // 主库存单位
+    private String fStockUnitId;
+    // 主库存申请数量
+    private Double fStockAppQty;
+    // 辅库存单位
+    private String fSecUnitId;
+    // 辅库存实退数量
+    private Double fSecStockQty;
+    // 主库存实退数量
+    private Double fStockQty;
+    // 基本单位实退数量
+    private Double fBaseQty;
+    // 计划跟踪号
+    private String fMtoNo;
+    // 项目编号
+    private String fProjectNo;
+    // 批号
+    private String fLot;
+    // 库存状态 (必填项)
+    private String fStockStatusId;
+    // 保质期单位
+    private String fExpUnit;
+    // 保质期
+    private Integer fExpPeriod;
+    // 保管者类型 (必填项)
+    private String fKeeperTypeId;
+    // 保管者 (必填项)
+    private String fKeeperId;
+    // 工序号
+    private String fOperId;
+    // 成本价
+    private Double fPrice;
+    // 总成本
+    private Double fAmount;
+    // BOM版本
+    private String fBomId;
+    // 仓位
+    private String fStockLocId;
+//    疑似字典
+//    // 材料库区域
+//    private String fF100001;
+//    // 博世库分区
+//    private String fF100002;
+//    // 智能库分区
+//    private String fF100003;
+//    // 原材料仓库
+//    private String fF100004;
+//    // 博世原材料仓库
+//    private String fF100005;
+//    // 辅料仓库
+//    private String fF100006;
+//    // 金华德原材料仓库
+//    private String fF100007;
+    // 作业
+    private String fProcessId;
+    // 系统源单类型 (必填项)
+    private String fSrcBillType;
+    // 系统源单编号
+    private String fSrcBillNo;
+    // 补料选单数
+    private Double fSelRePickedQty;
+    // 基本单位补料选单数
+    private Double fBaseSelRePickedQty;
+    // 基本单位
+    private String fBaseUnitId;
+    // 更新库存标志位
+    private Boolean fStockFlag;
+    // 货主类型 (必填项)
+    private String fOwnerTypeId;
+    // 货主 (必填项)
+    private String fOwnerId;
+    // 系统源单内码
+    private Long fEntrySrcInterId;
+    // 系统源单分录内码
+    private Long fEntrySrcEnteryId;
+    // 系统源单行号
+    private Integer fEntrySrcEntrySeq;
+    // 生产日期
+    private Date fProduceDate;
+    // 有效期至
+    private Date fExpiryDate;
+    // 用料清单编号
+    private String fPPBomBillNo;
+    // 车间
+    private String fWorkShopId1;
+    // 退料原因
+    private String fReturnReason;
+    // 备注
+    private String fEntrtyMemo;
+    // 产品货主类型 (必填项)
+    private String fParentOwnerTypeId;
+    // 产品货主 (必填项)
+    private String fParentOwnerId;
+    // 业务流程
+    private String fBFLowId;
+    // 产品编码
+    private String fParentMaterialId;
+    // 业务源单类型
+    private String fSrcBizBillType;
+    // 业务源单编号
+    private String fSrcBizBillNo;
+    // 业务源单内码
+    private Long fSrcBizInterId;
+    // 业务源单分录内码
+    private Long fSrcBizEntryId;
+    // 业务源单行号
+    private Integer fSrcBizEntrySeq;
+    // 序列号单位
+    private String fSNUnitID;
+    // 序列号单位数量
+    private Double fSNQty;
+    // 预留类型
+    private String fReserveType;
+    // 主库存基本单位实退数量
+    private Double fBASESTOCKQTY;
+    // 消耗汇总
+    private Boolean fConsome;
+    // VMI业务
+    private Boolean fEntryVmiBusiness;
+    // 工序序列
+    private Integer fOptQueue;
+    // 工序计划单编号
+    private String fOptPlanBillNo;
+    // 工序计划单内码
+    private Long fOptPlanBillId;
+    // 工作中心
+    private String fWorkCenterId;
+    // 工序计划工序内码
+    private Long fOptDetailId;
+    // 需求来源
+    private String fReqSrc;
+    // 需求单据
+    private String fReqBillNo;
+    // 需求单据内码
+    private Long fReqBillId;
+    // 需求单据行号
+    private Integer fReqEntrySeq;
+    // 需求单据分录内码
+    private Long fReqEntryId;
+    // 设备
+    private String fEquipmentId;
+    // 不更新未领
+    private Boolean fIsUpdateQty;
+    // 组织间结算跨法人标识
+    private Boolean fIsOverLegalOrg;
+    // 生产退料检验
+    private Boolean fCheckReturnMtrl;
+}

+ 15 - 0
src/main/java/cn/ezhizao/javasdk/purpurchaseorder/KingdDeeJson.java

@@ -0,0 +1,15 @@
+package cn.ezhizao.javasdk.purpurchaseorder;
+
+import lombok.Data;
+
+// 金蝶生产订单单据查询参数
+@Data
+public class KingdDeeJson {
+    private String formId; // 表单 ID
+    private String fieldKeys; // 字段键
+    private int topRowCount; // 顶部行数
+    private int limit; // 查询限制
+    private int startRow; // 起始行
+    private String filterString; // 过滤条件字符串
+    private String orderString; // 排序条件字符串
+}

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

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

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

@@ -0,0 +1,148 @@
+package cn.ezhizao.javasdk.saleorder;
+
+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 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\":"+"\""+"\""+",\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()));
+        }
+    }
+
+}