diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java index e437454..66a3d5f 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java @@ -2,9 +2,8 @@ package com.zt.plat.module.contractorder.api; import com.zt.plat.framework.common.pojo.CommonResult; -import com.zt.plat.module.contractorder.api.dto.order.PurchaseOrderWithDetailsDTO; import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; -import com.zt.plat.module.contractorder.api.vo.contract.ContractSaveReqVO; +import com.zt.plat.module.contractorder.api.dto.order.PurchaseOrderWithDetailsDTO; import com.zt.plat.module.contractorder.api.vo.contract.international.ContractRequest; import com.zt.plat.module.contractorder.enums.ApiConstants; import io.swagger.v3.oas.annotations.Operation; @@ -35,15 +34,11 @@ public interface ContractApi { @Operation(summary = "通过订单编号获取订单信息", description = "通过订单编号获取订单信息") CommonResult> getOrderByOrderNo(@RequestBody List orderNoS); - @PostMapping(PREFIX + "/create") - @Operation(summary = "创建合同") - CommonResult create(@Valid @RequestBody ContractSaveReqVO reqVO); - @PostMapping(PREFIX + "/order-by-order-id") @Operation(summary = "通过订单id获取订单信息", description = "通过订单编号获取订单信息") CommonResult> getOrderByOrderIds(@RequestBody List ids); - @PostMapping(PREFIX + "/send") + @PostMapping(PREFIX + "/push") @Operation(summary = "国贸2.0系统创建合同调用") - CommonResult push(@Valid @RequestBody ContractRequest reqVO); + CommonResult push(@Valid @RequestBody ContractRequest reqVO) throws Exception; } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractPageReqVO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractPageReqVO.java index bce3e3d..6b4b1a3 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractPageReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractPageReqVO.java @@ -6,7 +6,6 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; -import java.time.LocalDateTime; import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -34,7 +33,7 @@ public class ContractPageReqVO extends PageParam { @Schema(description = "签署日期;与ERP(HTQDRQ)对应") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] signDate; + private String[] signDate; @Schema(description = "本币金额;与ERP(HTBWBZJE)对应") private BigDecimal basicAmount; diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Account.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Account.java index 7919387..14f0fa0 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Account.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Account.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.api.vo.contract.international; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /* @@ -7,12 +8,20 @@ import lombok.Data; */ @Data public class Account { + @Schema(description = "收付款账号行号") private String accountSourceId; // 收付款账号行号 + @Schema(description = "收付款账号编号") private String accountSourceCode; // 收付款账号编号 + @Schema(description = "类别") private String accountType; // 类别 + @Schema(description = "名称") private String accountName; // 名称 + @Schema(description = "开户银行") private String bankAccountName; // 开户银行 + @Schema(description = "银行账号") private String bankAccountNo; // 银行账号 + @Schema(description = "纳税人识别号") private String identificationNumber; // 纳税人识别号 + @Schema(description = "地址、电话") private String addressPhoneTel; // 地址、电话 } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ContractRequest.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ContractRequest.java index 2f92d66..b6b4507 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ContractRequest.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ContractRequest.java @@ -1,10 +1,9 @@ package com.zt.plat.module.contractorder.api.vo.contract.international; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; -import java.sql.Date; import java.util.List; /** @@ -14,78 +13,144 @@ import java.util.List; public class ContractRequest { // 基础信息 + @Schema(description = "操作标志") private String operateFlag; // 操作标志 + @Schema(description = "账套代码") private String bookId; // 账套代码 + @Schema(description = "组织ID") private String orgId; // 组织ID + @Schema(description = "合同唯一键") private String contractId; // 合同唯一键 + @Schema(description = "合同操作类型 (新增, 变更, 修正)") private String operateType; // 合同操作类型 (新增, 变更, 修正) + @Schema(description = "合同编号") private String contractCode; // 合同编号 + @Schema(description = "业务合同编号") private String contractBusinessNo; // 业务合同编号 + @Schema(description = "对方合同号") private String contractExternalNo; // 对方合同号 + @Schema(description = "系统合同版本号") private BigDecimal contractVersion; // 系统合同版本号 + @Schema(description = "合同状态代码 (值集: 40-签约)") private String contractStatus; // 合同状态代码 (值集: 40-签约) + @Schema(description = "合同名称") private String contractName; // 合同名称 + @Schema(description = "合同类型 (货运;货代;仓储;保险)") private String contractType; // 合同类型 (货运;货代;仓储;保险) + @Schema(description = "是否非标准合同文本") private String textType; // 是否非标准合同文本 - @DateTimeFormat(pattern = "yyyyMMdd") - private Date contractStartDate; // 合同有效期起 (格式: yyyyMMdd) - @DateTimeFormat(pattern = "yyyyMMdd") - private Date contractEndDate; // 合同有效期止 (格式: yyyyMMdd) + @Schema(description = "合同有效期起 (格式: yyyyMMdd)") + private String contractStartDate; // 合同有效期起 (格式: yyyyMMdd) + @Schema(description = "合同有效期止 (格式: yyyyMMdd)") + private String contractEndDate; // 合同有效期止 (格式: yyyyMMdd) + @Schema(description = "是否固定单价 (0-浮动, 1-固定)") private String priceType; // 是否固定单价 (0-浮动, 1-固定) + @Schema(description = "合同币种") private String currencyCode; // 合同币种 + @Schema(description = "结算方式") private String settleMethod; // 结算方式 + @Schema(description = "对方合同号") private String firstContractCode; // 对方合同号 + @Schema(description = "预估含税总金额") private BigDecimal estimateAmountTotal; // 预估含税总金额 + @Schema(description = "结算依据 (10-交货量, 20-卸车量)") private String settleGist; // 结算依据 (10-交货量, 20-卸车量) + @Schema(description = "税率") private BigDecimal priceTaxRate; // 税率 + @Schema(description = "运输方式 (10-铁路或汽运, 20-水路运输, 30-铁路运输, 40-汽车运输, 50-航空运输)") private String transType; // 运输方式 (10-铁路或汽运, 20-水路运输, 30-铁路运输, 40-汽车运输, 50-航空运输) + @Schema(description = "包装方式") private String packMethod; // 包装方式 + @Schema(description = "在途损耗") private BigDecimal intransitLoss; // 在途损耗 + @Schema(description = "提货地") private String pickupLocation; // 提货地 + @Schema(description = "仓库数") private BigDecimal warehouseNum; // 仓库数 + @Schema(description = "按码单入库磅差比") private BigDecimal weightDisparity; // 按码单入库磅差比 + @Schema(description = "投保标的") private String insuredSubjectMatter; // 投保标的 + @Schema(description = "预计年保险总额") private BigDecimal estimateCoverageAmount; // 预计年保险总额 + @Schema(description = "预计年保险费") private BigDecimal estimatePremium; // 预计年保险费 + @Schema(description = "保险费率") private BigDecimal premiumRate; // 保险费率 + @Schema(description = "备注信息") private String remark; // 备注信息 + @Schema(description = "经办人工号") private String createdUser; // 经办人工号 + @Schema(description = "经办人姓名") private String createdUserName; // 经办人姓名 + @Schema(description = "拟签递交人工号") private String approveSubmitCode; // 拟签递交人工号 + @Schema(description = "拟签递交人姓名") private String approveSubmitName; // 拟签递交人姓名 - @DateTimeFormat(pattern = "yyyyMMdd") - private Date approveSubmitDate; // 拟签呈批日期 + @Schema(description = "拟签呈批日期") + private String approveSubmitDate; // 拟签呈批日期 + @Schema(description = "拟签通过人工号") private String approvePassCode; // 拟签通过人工号 + @Schema(description = "拟签通过人姓名") private String approvePassName; // 拟签通过人姓名 - @DateTimeFormat(pattern = "yyyyMMdd") - private Date approvePassDate; // 拟签通过日期 + @Schema(description = "拟签通过日期") + private String approvePassDate; // 拟签通过日期 + @Schema(description = "签约地 (40-签约必填)") private String signSite; // 签约地 (40-签约必填) - @DateTimeFormat(pattern = "yyyyMMdd") - private Date signDate; // 签约日期 (40-签约必填, 格式: yyyyMMdd) + @Schema(description = "签约日期 (40-签约必填, 格式: yyyyMMdd)") + private String signDate; // 签约日期 (40-签约必填, 格式: yyyyMMdd) + @Schema(description = "对方签约人 (40-签约必填)") private String signFirstPerson; // 对方签约人 (40-签约必填) + @Schema(description = "我方签约人工号 (40-签约必填)") private String signSecondPersonCode; // 我方签约人工号 (40-签约必填) + @Schema(description = "我方签约人") private String signSecondPersonName; // 我方签约人 + @Schema(description = "推荐签约人工号 (40-签约必填, Y/N)") private String onceAuthorityFlag; // 推荐签约人工号 (40-签约必填, Y/N) + @Schema(description = "推荐签约人工号") private String signOnceAccredit; // 推荐签约人工号 + @Schema(description = "备用字段1") private String extCol1; // 备用字段1 + @Schema(description = "备用字段2") private String extCol2; // 备用字段2 + @Schema(description = "备用字段3") private String extCol3; // 备用字段3 + @Schema(description = "备用字段4") private String extCol4; // 备用字段4 + @Schema(description = "备用字段5") private String extCol5; // 备用字段5 + @Schema(description = "备用字段6") private String extCol6; // 备用字段6 + @Schema(description = "备用字段7") private String extCol7; // 备用字段7 + @Schema(description = "备用字段8") private String extCol8; // 备用字段8 + @Schema(description = "备用字段9") private String extCol9; // 备用字段9 + @Schema(description = "备用字段10") private String extCol10; // 备用字段10 + @Schema(description = "附件清单列表") private List attachList; // 附件清单列表 + @Schema(description = "是否内部企业") + private String isInternal; // 是否内部企业 + @Schema(description = "是否框架合同") + private String isFramework; // 是否框架合同 // 嵌套列表 + @Schema(description = "客商信息") private List partnerList; // 客商信息 + @Schema(description = "收发港/站点") private List goodsSiteList; // 收发港/站点 + @Schema(description = "货物装卸要求") private List loadingRequirementsList; // 货物装卸要求 + @Schema(description = "收付款账号") private List accountList; // 收付款账号 + @Schema(description = "费用明细") private List freightList; // 费用明细 + @Schema(description = "服务费用项目") private List serviceFeeList; // 服务费用项目 + @Schema(description = "仓库明细") private List storgeList; // 仓库明细 + @Schema(description = "接货地址") private List receivingAddrList; // 接货地址 } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Freight.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Freight.java index 740ba73..1c03924 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Freight.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Freight.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.api.vo.contract.international; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; @@ -8,26 +9,48 @@ import java.math.BigDecimal; */ @Data public class Freight { + @Schema(description = "费用明细行号") private String freightSourceId; // 费用明细行号 + @Schema(description = "费用明细编号") private String freightSourceCode; // 费用明细编号 + @Schema(description = "发货地编号") private String beginSiteCode; // 发货地编号 + @Schema(description = "发货地名称") private String beginSiteName; // 发货地名称 + @Schema(description = "详细地址") private String beginSiteAddress; // 详细地址 + @Schema(description = "收货地编码") private String endSiteCode; // 收货地编码 + @Schema(description = "收货地名称") private String endSiteName; // 收货地名称 + @Schema(description = "详细地址") private String endSiteAddress; // 详细地址 + @Schema(description = "运输方式 (10-汽运;20-船运;30-水汽联运)") private String contractTypeDispatch; // 运输方式 (10-汽运;20-船运;30-水汽联运) + @Schema(description = "费用类型 (包干费、汽运费、港口费...)") private String feeTypeCode; // 费用类型 (包干费、汽运费、港口费...) + @Schema(description = "费用名称") private String feeTypeName; // 费用名称 + @Schema(description = "是否乙方提货") private String isPartybPickup; // 是否乙方提货 + @Schema(description = "乙方提货单价") private BigDecimal partybPickupPrice; // 乙方提货单价 + @Schema(description = "费用大类") private String feeCategoryL; // 费用大类 + @Schema(description = "费用小类") private String feeCategoryS; // 费用小类 + @Schema(description = "标的仓") private String goodsStorage; // 标的仓 + @Schema(description = "标的物") private String categoryName; // 标的物 + @Schema(description = "免堆期") private BigDecimal noHeapDays; // 免堆期 + @Schema(description = "计费单位 (01-元/吨; 02-元/40GP; 03-元/20GP; 04-元/车)") private String quantityUnitCode; // 计费单位 (01-元/吨; 02-元/40GP; 03-元/20GP; 04-元/车) + @Schema(description = "单价") private BigDecimal priceWithtax; // 单价 + @Schema(description = "税率(%)") private BigDecimal priceTaxRate; // 税率(%) + @Schema(description = "费用承担") private String costBearing; // 费用承担 } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/GoodsSite.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/GoodsSite.java index d4fc687..d7a745f 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/GoodsSite.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/GoodsSite.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.api.vo.contract.international; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /* @@ -7,18 +8,32 @@ import lombok.Data; */ @Data public class GoodsSite { + @Schema(description = "收发港站点行号") private String goodsSiteSourceId; // 收发港站点行号 + @Schema(description = "收发港站点编号") private String goodsSiteSourceCode; // 收发港站点编号 + @Schema(description = "标的物分类") private String subMattercategoryLevel; // 标的物分类 + @Schema(description = "标的物编码") private String subMattercategoryCode; // 标的物编码 + @Schema(description = "标的物名称") private String subMatterCategoryName; // 标的物名称 + @Schema(description = "地点类型 (QY-区域; GK-港口; MT-码头; CK-仓库)") private String beginSiteType; // 地点类型 (QY-区域; GK-港口; MT-码头; CK-仓库) + @Schema(description = "发货地编号") private String beginSiteCode; // 发货地编号 + @Schema(description = "发货地名称") private String beginSiteName; // 发货地名称 + @Schema(description = "详细地址") private String beginSiteAddress; // 详细地址 + @Schema(description = "地点类型") private String endSiteType; // 地点类型 + @Schema(description = "收货地编号") private String endSiteCode; // 收货地编号 + @Schema(description = "收货地名称") private String endSiteName; // 收货地名称 + @Schema(description = "详细地址") private String endSiteAddress; // 详细地址 + @Schema(description = "运输方式 (10-汽运;20-船运;30-水汽联运)") private String contractTypeDispatch; // 运输方式 (10-汽运;20-船运;30-水汽联运) } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/LoadingRequirement.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/LoadingRequirement.java index 7b8f31e..0ad7a7a 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/LoadingRequirement.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/LoadingRequirement.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.api.vo.contract.international; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /* @@ -7,12 +8,20 @@ import lombok.Data; */ @Data public class LoadingRequirement { + @Schema(description = "货物装卸行号") private String loadingReqSourceId; // 货物装卸行号 + @Schema(description = "货物装卸编号") private String loadingReqSourceCode; // 货物装卸编号 + @Schema(description = "提货地责任方") private String deliveredAtPlace; // 提货地责任方 + @Schema(description = "提货地费用承担方") private String deliveredAtFeeparty; // 提货地费用承担方 + @Schema(description = "终到地责任方") private String destinationResponsibleParty; // 终到地责任方 + @Schema(description = "终到地费用承担方") private String intermediateStationParty; // 终到地费用承担方 + @Schema(description = "中间站责任方") private String destinationResponsibleFeeparty; // 中间站责任方 + @Schema(description = "中间站费用承担方") private String intermediateResponsibleFeeparty; // 中间站费用承担方 } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Partner.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Partner.java index 7ac0033..707a890 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Partner.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Partner.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.api.vo.contract.international; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /* @@ -7,15 +8,26 @@ import lombok.Data; */ @Data public class Partner { + @Schema(description = "客商信息行号") private String partnerSourceId; // 客商信息行号 + @Schema(description = "客商信息编码") private String partnerSourceCode; // 客商信息编码 + @Schema(description = "供应商名称") private String partnerName; // 供应商名称 + @Schema(description = "供应商代码") private String partnerCode; // 供应商代码 + @Schema(description = "对方法定代表人") private String legalRepresentative; // 对方法定代表人 + @Schema(description = "币种") private String partnerCurrency; // 币种 + @Schema(description = "对方联系人") private String contactPerson; // 对方联系人 + @Schema(description = "对方联系人联系方式") private String contactInformation; // 对方联系人联系方式 + @Schema(description = "是否内部交易") private String internalTransaction; // 是否内部交易 + @Schema(description = "客商类型") private String partnerType; // 客商类型 + @Schema(description = "境内/外") private String domesticOrOverseas; // 境内/外 } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ReceivingAddr.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ReceivingAddr.java index b72dae8..1cd4f9d 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ReceivingAddr.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ReceivingAddr.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.api.vo.contract.international; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /* @@ -7,17 +8,30 @@ import lombok.Data; */ @Data public class ReceivingAddr { + @Schema(description = "接货地址行号") private String recivingAddrSourceId; // 接货地址行号 + @Schema(description = "接货地址编号") private String recivingAddrSourceCode; // 接货地址编号 + @Schema(description = "标的物分类") private String categoryLevel; // 标的物分类 + @Schema(description = "标的物编码") private String ccCategoryCode; // 标的物编码 + @Schema(description = "标的物名称") private String categoryName; // 标的物名称 + @Schema(description = "接货编码") private String siteCode; // 接货编码 + @Schema(description = "接货名称") private String siteName; // 接货名称 + @Schema(description = "地址类型 (QY-区域; GK-港口; MT-码头; CK-仓库)") private String siteType; // 地址类型 (QY-区域; GK-港口; MT-码头; CK-仓库) + @Schema(description = "详细地址") private String siteAddress; // 详细地址 + @Schema(description = "专用线") private String consigneePrivatewire; // 专用线 + @Schema(description = "收货人") private String consignerContact; // 收货人 + @Schema(description = "联系人") private String contactPerson; // 联系人 + @Schema(description = "联系电话") private String contactPhone; // 联系电话 } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ServiceFee.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ServiceFee.java index d70adc0..7eaa3db 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ServiceFee.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ServiceFee.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.api.vo.contract.international; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /* @@ -7,8 +8,12 @@ import lombok.Data; */ @Data public class ServiceFee { + @Schema(description = "服务费用项目行号") private String serviceFeeSourceId; // 服务费用项目行号 + @Schema(description = "服务费用项目编号") private String serviceFeeSourceCode; // 服务费用项目编号 + @Schema(description = "服务项目名称") private String serviceFeeName; // 服务项目名称 + @Schema(description = "计费类别") private String expenseType; // 计费类别 } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Storge.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Storge.java index 18decdc..d6aa239 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Storge.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/Storge.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.api.vo.contract.international; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /* @@ -7,9 +8,14 @@ import lombok.Data; */ @Data public class Storge { + @Schema(description = "合同明细行号") private String storgeSourceId; // 合同明细行号 + @Schema(description = "合同明细行编号") private String storgeSourceCode; // 合同明细行编号 + @Schema(description = "仓库编号") private String warehouseCode; // 仓库编号 + @Schema(description = "仓库名称") private String warehouseName; // 仓库名称 + @Schema(description = "详细地址") private String warehouseAddress; // 详细地址 } \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java index c349894..c22010f 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java @@ -4,11 +4,10 @@ import cn.hutool.extra.spring.SpringUtil; import cn.hutool.json.JSONObject; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.api.dto.order.PrchOrdDtlDTO; import com.zt.plat.module.contractorder.api.dto.order.PurchaseOrderWithDetailsDTO; -import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; import com.zt.plat.module.contractorder.api.dto.order.SalesOrdDtlDTO; -import com.zt.plat.module.contractorder.api.vo.contract.ContractSaveReqVO; import com.zt.plat.module.contractorder.api.vo.contract.international.*; import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderDetailsRespVO; import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractMainDO; @@ -28,6 +27,7 @@ import com.zt.plat.module.contractorder.enums.contract.DictEnum; import com.zt.plat.module.contractorder.service.contract.ContractService; import com.zt.plat.module.contractorder.service.purchaseorder.PurchaseOrderService; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; @@ -35,8 +35,9 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import java.lang.reflect.Field; import java.time.LocalDateTime; -import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -62,7 +63,6 @@ public class ContractApiImpl implements ContractApi { @Resource private SystemRelativityMapper systemRelativityMapper; - @Override public ContractRespDTO getContractByPaperNumber(String contractPaperNumber) { return contractService.getFormulasByPaperNumber(contractPaperNumber); @@ -145,87 +145,12 @@ public class ContractApiImpl implements ContractApi { return purchaseOrderWithDetailsDTOS; } - @Override - public CommonResult create(ContractSaveReqVO reqVO) { - return null; - } - @Transactional @Override - public CommonResult push(@RequestBody ContractRequest reqVO) { + public CommonResult push(@RequestBody ContractRequest reqVO) throws Exception { // 合同主信息表映射 - ContractMainDO contractMainDO = new ContractMainDO(); - // 合同编号 - contractMainDO.setContractPaperNumber(reqVO.getContractCode()); - // 合同名称 - contractMainDO.setContractName(reqVO.getContractName()); - // 施工类型编号 默认值:SAPO2NCOZC - contractMainDO.setConstructionTypeNumber("SAPO2NCOZC"); - // 施工类型名称 默认值:铜非施工合同支出类 - contractMainDO.setConstructionTypeName("铜非施工合同支出类"); - // 类别 默认值:购销合同(1) - contractMainDO.setCategory("1"); - // 是否虚拟合同 默认值:否(0) - contractMainDO.setContractVirtual("0"); - // 代理方 默认值:NULL - // 签署日期 -> 签约日期 (40-签约必填, 格式: yyyyMMdd) - contractMainDO.setSignDate(LocalDateTime.ofInstant(reqVO.getSignDate().toInstant(), ZoneId.systemDefault())); - // 开始日期 -> 合同有效期起 (格式: yyyyMMdd) - contractMainDO.setStartDate(LocalDateTime.ofInstant(reqVO.getContractStartDate().toInstant(), ZoneId.systemDefault())); - // 结束日期 -> 合同有效期止 (格式: yyyyMMdd) - contractMainDO.setEndDate(LocalDateTime.ofInstant(reqVO.getContractEndDate().toInstant(), ZoneId.systemDefault())); - // 币种 -> 合同币种 - contractMainDO.setCurrency(reqVO.getCurrencyCode()); - // 原币金额 -> 预估含税总金额 - contractMainDO.setCooAmount(reqVO.getEstimateAmountTotal()); - // 本币金额 -> 预估含税总金额 - contractMainDO.setBasicAmount(reqVO.getEstimateAmountTotal()); - // 状态 默认值:正在执行(EF) 执行中 - contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode()); - // 是否有预付款 默认值:否 - contractMainDO.setHasPrepayment("0"); - // 预付款比例 默认值:NULL - // 预付款金额 默认值:NULL - // 是否有质保金 默认值:否 - contractMainDO.setHasQualityAmount("0"); - // 质保金比例 默认值:NULL - // 质保金金额 默认值:NULL - // 是否内部企业 TODO - // 收支性质 默认值:支出 - contractMainDO.setDirection(DictEnum.ERP_RCV_DLVY_EXPENSES.getCode()); - // 是否框架合同 TODO - // 境内/境外 -> 客商信息:境内/外 - if (reqVO.getPartnerList() != null && !reqVO.getPartnerList().isEmpty()) { - contractMainDO.setIsDomestic(reqVO.getPartnerList().get(0).getPartnerCode()); - } - // 建筑服务发生地 默认值:NULL - // 达到收款条件金额 默认值:NULL - // 是否有履约保证金 默认值:否 - contractMainDO.setHasDeposit("0"); - // 原币履约保证金 默认值:NULL - // 本币履约保证金 默认值:NULL - // 交易方式 默认值:先款后货 - contractMainDO.setHasPayable("PRE_PAY"); - // 合同类型 默认值:物流合同 - contractMainDO.setContractType("3"); - // 签署地 -> 签约地 (40-签约必填) - contractMainDO.setSignPlace(reqVO.getSignSite()); - // 甲方公司编号(采购方) -> 账套代码 - contractMainDO.setPurchaseCompanyNumber(reqVO.getBookId()); - // 甲方公司名称 -> 账套名称 null - // 甲方地址 默认值:NULL - // 甲方法定代表人 默认值:NULL - // 乙方公司编号(销售方) -> 客商信息:供应商代码 - if (reqVO.getPartnerList() != null && !reqVO.getPartnerList().isEmpty()) { - contractMainDO.setSalesCompanyNumber(reqVO.getPartnerList().get(0).getPartnerCode()); - } - // 乙方公司名称 -> 客商信息:供应商名称 - if (reqVO.getPartnerList() != null && !reqVO.getPartnerList().isEmpty()) { - contractMainDO.setSalesCompanyName(reqVO.getPartnerList().get(0).getPartnerName()); - } - // 乙方地址 默认值:NULL - // 乙方企业负责人 默认值:NULL + ContractMainDO contractMainDO = getcontractMainDO(reqVO); // 逻辑处理 // 操作标志 I 新增/更新;D 删除 @@ -254,8 +179,7 @@ public class ContractApiImpl implements ContractApi { systemRelativityMapper.insert(saveRelation); } } else if ("D".equals(operateFlag)) { - if (systemRelativityDO == null || systemRelativityDO.getDownId() == null) - throw exception(CONTRACT_NOT_EXISTS); + if (systemRelativityDO == null || systemRelativityDO.getDownId() == null) throw exception(CONTRACT_NOT_EXISTS); contractId = systemRelativityDO.getDownId(); contractMainMapper.deleteById(contractId); } else { @@ -270,1456 +194,111 @@ public class ContractApiImpl implements ContractApi { JSONObject erpResult = contractService.sendToErp(erpContractVO); log.info("合同提交ERP结果:{}", erpResult); - // 更新合同状态 + // 调用ERP失败 if (!erpResult.getBool("success")) { throw exception(CONTRACT_SUBMIT_ERP_FAIL, erpResult.getStr("errMsg")); } - // 多余请求参数保存到动态条款明细表 - List contractOtherFieldDOS = new ArrayList<>(); - ContractOtherFieldDO contractOtherFieldDO = new ContractOtherFieldDO(); - // 基础信息----- - // 组织ID - contractOtherFieldDO.setFieldNumber("orgId"); - contractOtherFieldDO.setFieldName("组织ID"); - contractOtherFieldDO.setFieldValue(reqVO.getOrgId()); - contractOtherFieldDO.setFieldDescription("组织ID"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 合同操作类型 (新增, 变更, 修正) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("operateType"); - contractOtherFieldDO.setFieldName("合同操作类型 (新增, 变更, 修正)"); - contractOtherFieldDO.setFieldValue(reqVO.getOperateType()); - contractOtherFieldDO.setFieldDescription("合同操作类型 (新增, 变更, 修正)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 业务合同编号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("contractBusinessNo"); - contractOtherFieldDO.setFieldName("业务合同编号"); - contractOtherFieldDO.setFieldValue(reqVO.getContractBusinessNo()); - contractOtherFieldDO.setFieldDescription("业务合同编号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 对方合同号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("contractExternalNo"); - contractOtherFieldDO.setFieldName("对方合同号"); - contractOtherFieldDO.setFieldValue(reqVO.getContractExternalNo()); - contractOtherFieldDO.setFieldDescription("对方合同号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 系统合同版本号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("contractVersion"); - contractOtherFieldDO.setFieldName("系统合同版本号"); - contractOtherFieldDO.setFieldValue(reqVO.getContractVersion().toString()); - contractOtherFieldDO.setFieldDescription("系统合同版本号"); - contractOtherFieldDO.setType("BigDecimal"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 合同状态代码 (值集: 40-签约) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("contractStatus"); - contractOtherFieldDO.setFieldName("合同状态代码 (值集: 40-签约)"); - contractOtherFieldDO.setFieldValue(reqVO.getContractStatus()); - contractOtherFieldDO.setFieldDescription("合同状态代码 (值集: 40-签约)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 合同类型 (货运;货代;仓储;保险) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("contractType"); - contractOtherFieldDO.setFieldName("合同类型 (货运;货代;仓储;保险)"); - contractOtherFieldDO.setFieldValue(reqVO.getContractType()); - contractOtherFieldDO.setFieldDescription("合同类型 (货运;货代;仓储;保险)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 是否非标准合同文本 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("textType"); - contractOtherFieldDO.setFieldName("是否非标准合同文本"); - contractOtherFieldDO.setFieldValue(reqVO.getTextType()); - contractOtherFieldDO.setFieldDescription("是否非标准合同文本"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 是否固定单价 (0-浮动, 1-固定) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("priceType"); - contractOtherFieldDO.setFieldName("是否固定单价 (0-浮动, 1-固定)"); - contractOtherFieldDO.setFieldValue(reqVO.getPriceType()); - contractOtherFieldDO.setFieldDescription("是否固定单价 (0-浮动, 1-固定)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 结算方式 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("settleMethod"); - contractOtherFieldDO.setFieldName("结算方式"); - contractOtherFieldDO.setFieldValue(reqVO.getSettleMethod()); - contractOtherFieldDO.setFieldDescription("结算方式"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 对方合同号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("firstContractCode"); - contractOtherFieldDO.setFieldName("对方合同号"); - contractOtherFieldDO.setFieldValue(reqVO.getFirstContractCode()); - contractOtherFieldDO.setFieldDescription("对方合同号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 结算依据 (10-交货量, 20-卸车量) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("settleGist"); - contractOtherFieldDO.setFieldName("结算依据 (10-交货量, 20-卸车量)"); - contractOtherFieldDO.setFieldValue(reqVO.getSettleGist()); - contractOtherFieldDO.setFieldDescription("结算依据 (10-交货量, 20-卸车量)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 税率 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("priceTaxRate"); - contractOtherFieldDO.setFieldName("税率"); - contractOtherFieldDO.setFieldValue(reqVO.getPriceTaxRate().toString()); - contractOtherFieldDO.setFieldDescription("税率"); - contractOtherFieldDO.setType("BigDecimal"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 运输方式 (10-铁路或汽运, 20-水路运输, 30-铁路运输, 40-汽车运输, 50-航空运输) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("transType"); - contractOtherFieldDO.setFieldName("运输方式 (10-铁路或汽运, 20-水路运输, 30-铁路运输, 40-汽车运输, 50-航空运输)"); - contractOtherFieldDO.setFieldValue(reqVO.getTransType()); - contractOtherFieldDO.setFieldDescription("运输方式 (10-铁路或汽运, 20-水路运输, 30-铁路运输, 40-汽车运输, 50-航空运输)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 包装方式 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("packMethod"); - contractOtherFieldDO.setFieldName("包装方式"); - contractOtherFieldDO.setFieldValue(reqVO.getPackMethod()); - contractOtherFieldDO.setFieldDescription("包装方式"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 在途损耗 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("intransitLoss"); - contractOtherFieldDO.setFieldName("在途损耗"); - contractOtherFieldDO.setFieldValue(reqVO.getIntransitLoss().toString()); - contractOtherFieldDO.setFieldDescription("在途损耗"); - contractOtherFieldDO.setType("BigDecimal"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 提货地 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("pickupLocation"); - contractOtherFieldDO.setFieldName("提货地"); - contractOtherFieldDO.setFieldValue(reqVO.getPickupLocation()); - contractOtherFieldDO.setFieldDescription("提货地"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 仓库数 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("warehouseNum"); - contractOtherFieldDO.setFieldName("仓库数"); - contractOtherFieldDO.setFieldValue(reqVO.getWarehouseNum().toString()); - contractOtherFieldDO.setFieldDescription("仓库数"); - contractOtherFieldDO.setType("BigDecimal"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 按码单入库磅差比 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("weightDisparity"); - contractOtherFieldDO.setFieldName("按码单入库磅差比"); - contractOtherFieldDO.setFieldValue(reqVO.getWeightDisparity().toString()); - contractOtherFieldDO.setFieldDescription("按码单入库磅差比"); - contractOtherFieldDO.setType("BigDecimal"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 投保标的 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("insuredSubjectMatter"); - contractOtherFieldDO.setFieldName("投保标的"); - contractOtherFieldDO.setFieldValue(reqVO.getInsuredSubjectMatter()); - contractOtherFieldDO.setFieldDescription("投保标的"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 预计年保险总额 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("estimateCoverageAmount"); - contractOtherFieldDO.setFieldName("预计年保险总额"); - contractOtherFieldDO.setFieldValue(reqVO.getEstimateCoverageAmount().toString()); - contractOtherFieldDO.setFieldDescription("预计年保险总额"); - contractOtherFieldDO.setType("BigDecimal"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 预计年保险费 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("estimatePremium"); - contractOtherFieldDO.setFieldName("预计年保险费"); - contractOtherFieldDO.setFieldValue(reqVO.getEstimatePremium().toString()); - contractOtherFieldDO.setFieldDescription("预计年保险费"); - contractOtherFieldDO.setType("BigDecimal"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 保险费率 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("premiumRate"); - contractOtherFieldDO.setFieldName("保险费率"); - contractOtherFieldDO.setFieldValue(reqVO.getPremiumRate().toString()); - contractOtherFieldDO.setFieldDescription("保险费率"); - contractOtherFieldDO.setType("BigDecimal"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 备注信息 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("remark"); - contractOtherFieldDO.setFieldName("备注信息"); - contractOtherFieldDO.setFieldValue(reqVO.getRemark()); - contractOtherFieldDO.setFieldDescription("备注信息"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 经办人工号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("createdUser"); - contractOtherFieldDO.setFieldName("经办人工号"); - contractOtherFieldDO.setFieldValue(reqVO.getCreatedUser()); - contractOtherFieldDO.setFieldDescription("经办人工号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 经办人姓名 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("createdUserName"); - contractOtherFieldDO.setFieldName("经办人姓名"); - contractOtherFieldDO.setFieldValue(reqVO.getCreatedUserName()); - contractOtherFieldDO.setFieldDescription("经办人姓名"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 拟签递交人工号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("approveSubmitCode"); - contractOtherFieldDO.setFieldName("拟签递交人工号"); - contractOtherFieldDO.setFieldValue(reqVO.getApproveSubmitCode()); - contractOtherFieldDO.setFieldDescription("拟签递交人工号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 拟签递交人姓名 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("approveSubmitName"); - contractOtherFieldDO.setFieldName("拟签递交人姓名"); - contractOtherFieldDO.setFieldValue(reqVO.getApproveSubmitName()); - contractOtherFieldDO.setFieldDescription("拟签递交人姓名"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 拟签呈批日期 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("approveSubmitDate"); - contractOtherFieldDO.setFieldName("拟签呈批日期"); - contractOtherFieldDO.setFieldValue(reqVO.getApproveSubmitDate().toString()); - contractOtherFieldDO.setFieldDescription("拟签呈批日期"); - contractOtherFieldDO.setType("Date"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 拟签通过人工号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("approvePassCode"); - contractOtherFieldDO.setFieldName("拟签通过人工号"); - contractOtherFieldDO.setFieldValue(reqVO.getApprovePassCode()); - contractOtherFieldDO.setFieldDescription("拟签通过人工号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 拟签通过人姓名 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("approvePassName"); - contractOtherFieldDO.setFieldName("拟签通过人姓名"); - contractOtherFieldDO.setFieldValue(reqVO.getApprovePassName()); - contractOtherFieldDO.setFieldDescription("拟签通过人姓名"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 拟签通过日期 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("approvePassDate"); - contractOtherFieldDO.setFieldName("拟签通过日期"); - contractOtherFieldDO.setFieldValue(reqVO.getApprovePassDate().toString()); - contractOtherFieldDO.setFieldDescription("拟签通过日期"); - contractOtherFieldDO.setType("Date"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 对方签约人 (40-签约必填) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("signFirstPerson"); - contractOtherFieldDO.setFieldName("对方签约人 (40-签约必填)"); - contractOtherFieldDO.setFieldValue(reqVO.getSignFirstPerson()); - contractOtherFieldDO.setFieldDescription("对方签约人 (40-签约必填)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 我方签约人工号 (40-签约必填) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("signSecondPersonCode"); - contractOtherFieldDO.setFieldName("我方签约人工号 (40-签约必填)"); - contractOtherFieldDO.setFieldValue(reqVO.getSignSecondPersonCode()); - contractOtherFieldDO.setFieldDescription("我方签约人工号 (40-签约必填)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 我方签约人 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("signSecondPersonName"); - contractOtherFieldDO.setFieldName("我方签约人"); - contractOtherFieldDO.setFieldValue(reqVO.getSignSecondPersonName()); - contractOtherFieldDO.setFieldDescription("我方签约人"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 推荐签约人工号 (40-签约必填, Y/N) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("onceAuthorityFlag"); - contractOtherFieldDO.setFieldName("推荐签约人工号 (40-签约必填, Y/N)"); - contractOtherFieldDO.setFieldValue(reqVO.getOnceAuthorityFlag()); - contractOtherFieldDO.setFieldDescription("推荐签约人工号 (40-签约必填, Y/N)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 推荐签约人工号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("signOnceAccredit"); - contractOtherFieldDO.setFieldName("推荐签约人工号"); - contractOtherFieldDO.setFieldValue(reqVO.getSignOnceAccredit()); - contractOtherFieldDO.setFieldDescription("推荐签约人工号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 备用字段1 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("extCol1"); - contractOtherFieldDO.setFieldName("备用字段1"); - contractOtherFieldDO.setFieldValue(reqVO.getExtCol1()); - contractOtherFieldDO.setFieldDescription("备用字段1"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 备用字段2 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("extCol2"); - contractOtherFieldDO.setFieldName("备用字段2"); - contractOtherFieldDO.setFieldValue(reqVO.getExtCol2()); - contractOtherFieldDO.setFieldDescription("备用字段2"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 备用字段3 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("extCol3"); - contractOtherFieldDO.setFieldName("备用字段3"); - contractOtherFieldDO.setFieldValue(reqVO.getExtCol3()); - contractOtherFieldDO.setFieldDescription("备用字段3"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 备用字段4 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("extCol4"); - contractOtherFieldDO.setFieldName("备用字段4"); - contractOtherFieldDO.setFieldValue(reqVO.getExtCol4()); - contractOtherFieldDO.setFieldDescription("备用字段4"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 备用字段5 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("extCol5"); - contractOtherFieldDO.setFieldName("备用字段5"); - contractOtherFieldDO.setFieldValue(reqVO.getExtCol5()); - contractOtherFieldDO.setFieldDescription("备用字段5"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 备用字段6 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("extCol6"); - contractOtherFieldDO.setFieldName("备用字段6"); - contractOtherFieldDO.setFieldValue(reqVO.getExtCol6()); - contractOtherFieldDO.setFieldDescription("备用字段6"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 备用字段7 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("extCol7"); - contractOtherFieldDO.setFieldName("备用字段7"); - contractOtherFieldDO.setFieldValue(reqVO.getExtCol7()); - contractOtherFieldDO.setFieldDescription("备用字段7"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 备用字段8 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("extCol8"); - contractOtherFieldDO.setFieldName("备用字段8"); - contractOtherFieldDO.setFieldValue(reqVO.getExtCol8()); - contractOtherFieldDO.setFieldDescription("备用字段8"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 备用字段9 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("extCol9"); - contractOtherFieldDO.setFieldName("备用字段9"); - contractOtherFieldDO.setFieldValue(reqVO.getExtCol9()); - contractOtherFieldDO.setFieldDescription("备用字段9"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 备用字段10 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setFieldNumber("extCol10"); - contractOtherFieldDO.setFieldName("备用字段10"); - contractOtherFieldDO.setFieldValue(reqVO.getExtCol10()); - contractOtherFieldDO.setFieldDescription("备用字段10"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); + // 删除动态条款信息 + contractOtherFormMapper.delete("CTRT_MAIN_ID", contractId.toString()); + contractOtherFieldMapper.delete("CTRT_MAIN_ID", contractId.toString()); - // 保存 - contractOtherFieldMapper.insertBatch(contractOtherFieldDOS); + // 请求参数保存到动态条款 + Field[] fields = reqVO.getClass().getDeclaredFields(); + saveFields(fields, contractId, null, reqVO); // 明细部分保存 // 附件清单列表 - ContractOtherFormDO contractOtherFormDO = new ContractOtherFormDO(); - contractOtherFormDO.setContractMainId(contractId); - contractOtherFormDO.setFormNumber("attachList"); - contractOtherFormDO.setFormName("附件清单列表"); - contractOtherFormDO.setFormDescription("附件清单列表"); - contractOtherFormMapper.insert(contractOtherFormDO); - contractOtherFieldDOS = new ArrayList<>(); + ContractOtherFormDO otherFormDO = saveContractOtherForm(contractId, "attachList", + "附件清单列表", "附件清单列表"); + List otherFieldDOS = new ArrayList<>(); if (reqVO.getAttachList() != null && !reqVO.getAttachList().isEmpty()) { for (String attach : reqVO.getAttachList()) { - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("attach"); - contractOtherFieldDO.setFieldName("附件"); - contractOtherFieldDO.setFieldValue(attach); - contractOtherFieldDO.setFieldDescription("附件"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); + otherFieldDOS.add(getContractOtherField(contractId, otherFormDO.getId(), "attach", "附件", + attach, "附件", "java.lang.String")); } } // 保存 - contractOtherFieldMapper.insertBatch(contractOtherFieldDOS); + contractOtherFieldMapper.insertBatch(otherFieldDOS); + //----- 嵌套列表 // 客商信息 if (reqVO.getPartnerList() != null && !reqVO.getPartnerList().isEmpty()) { for (Partner partner : reqVO.getPartnerList()) { - - contractOtherFormDO = new ContractOtherFormDO(); - contractOtherFormDO.setContractMainId(contractId); - contractOtherFormDO.setFormNumber("partnerList"); - contractOtherFormDO.setFormName("客商信息"); - contractOtherFormDO.setFormDescription("客商信息"); - contractOtherFormMapper.insert(contractOtherFormDO); - - contractOtherFieldDOS = new ArrayList<>(); - // 客商信息行号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("partnerSourceId"); - contractOtherFieldDO.setFieldName("客商信息行号"); - contractOtherFieldDO.setFieldValue(partner.getPartnerSourceId()); - contractOtherFieldDO.setFieldDescription("客商信息行号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 客商信息编码 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("partnerSourceCode"); - contractOtherFieldDO.setFieldName("客商信息编码"); - contractOtherFieldDO.setFieldValue(partner.getPartnerSourceCode()); - contractOtherFieldDO.setFieldDescription("客商信息编码"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 供应商名称 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("partnerName"); - contractOtherFieldDO.setFieldName("供应商名称"); - contractOtherFieldDO.setFieldValue(partner.getPartnerName()); - contractOtherFieldDO.setFieldDescription("供应商名称"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 供应商代码 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("partnerCode"); - contractOtherFieldDO.setFieldName("供应商代码"); - contractOtherFieldDO.setFieldValue(partner.getPartnerCode()); - contractOtherFieldDO.setFieldDescription("供应商代码"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 对方法定代表人 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("legalRepresentative"); - contractOtherFieldDO.setFieldName("对方法定代表人"); - contractOtherFieldDO.setFieldValue(partner.getLegalRepresentative()); - contractOtherFieldDO.setFieldDescription("对方法定代表人"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 币种 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("partnerCurrency"); - contractOtherFieldDO.setFieldName("币种"); - contractOtherFieldDO.setFieldValue(partner.getPartnerCurrency()); - contractOtherFieldDO.setFieldDescription("币种"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 对方联系人 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("contactPerson"); - contractOtherFieldDO.setFieldName("对方联系人"); - contractOtherFieldDO.setFieldValue(partner.getContactPerson()); - contractOtherFieldDO.setFieldDescription("对方联系人"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 对方联系人联系方式 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("contactInformation"); - contractOtherFieldDO.setFieldName("对方联系人联系方式"); - contractOtherFieldDO.setFieldValue(partner.getContactInformation()); - contractOtherFieldDO.setFieldDescription("对方联系人联系方式"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 是否内部交易 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("internalTransaction"); - contractOtherFieldDO.setFieldName("是否内部交易"); - contractOtherFieldDO.setFieldValue(partner.getInternalTransaction()); - contractOtherFieldDO.setFieldDescription("是否内部交易"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 客商类型 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("partnerType"); - contractOtherFieldDO.setFieldName("客商类型"); - contractOtherFieldDO.setFieldValue(partner.getPartnerType()); - contractOtherFieldDO.setFieldDescription("客商类型"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 境内/外 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("domesticOrOverseas"); - contractOtherFieldDO.setFieldName("境内/外"); - contractOtherFieldDO.setFieldValue(partner.getDomesticOrOverseas()); - contractOtherFieldDO.setFieldDescription("境内/外"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - - // 保存 - contractOtherFieldMapper.insertBatch(contractOtherFieldDOS); + otherFormDO = saveContractOtherForm(contractId, "partnerList", + "客商信息", "客商信息"); + fields = partner.getClass().getDeclaredFields(); + saveFields(fields, contractId, otherFormDO.getId(), partner); } } + // 收发港/站点 if (reqVO.getGoodsSiteList() != null && !reqVO.getGoodsSiteList().isEmpty()) { for (GoodsSite goodsSite : reqVO.getGoodsSiteList()) { - - contractOtherFormDO = new ContractOtherFormDO(); - contractOtherFormDO.setContractMainId(contractId); - contractOtherFormDO.setFormNumber("goodsSiteList"); - contractOtherFormDO.setFormName("收发港/站点"); - contractOtherFormDO.setFormDescription("收发港/站点"); - contractOtherFormMapper.insert(contractOtherFormDO); - - contractOtherFieldDOS = new ArrayList<>(); - // 收发港站点行号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("goodsSiteSourceId"); - contractOtherFieldDO.setFieldName("收发港站点行号"); - contractOtherFieldDO.setFieldValue(goodsSite.getGoodsSiteSourceId()); - contractOtherFieldDO.setFieldDescription("收发港站点行号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 收发港站点编号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("goodsSiteSourceCode"); - contractOtherFieldDO.setFieldName("收发港站点编号"); - contractOtherFieldDO.setFieldValue(goodsSite.getGoodsSiteSourceCode()); - contractOtherFieldDO.setFieldDescription("收发港站点编号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 标的物分类 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("subMattercategoryLevel"); - contractOtherFieldDO.setFieldName("标的物分类"); - contractOtherFieldDO.setFieldValue(goodsSite.getSubMattercategoryLevel()); - contractOtherFieldDO.setFieldDescription("标的物分类"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 标的物编码 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("subMattercategoryCode"); - contractOtherFieldDO.setFieldName("标的物编码"); - contractOtherFieldDO.setFieldValue(goodsSite.getSubMattercategoryCode()); - contractOtherFieldDO.setFieldDescription("标的物编码"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 标的物名称 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("subMatterCategoryName"); - contractOtherFieldDO.setFieldName("标的物名称"); - contractOtherFieldDO.setFieldValue(goodsSite.getSubMatterCategoryName()); - contractOtherFieldDO.setFieldDescription("标的物名称"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 地点类型 (QY-区域; GK-港口; MT-码头; CK-仓库) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("beginSiteType"); - contractOtherFieldDO.setFieldName("地点类型 (QY-区域; GK-港口; MT-码头; CK-仓库)"); - contractOtherFieldDO.setFieldValue(goodsSite.getBeginSiteType()); - contractOtherFieldDO.setFieldDescription("地点类型 (QY-区域; GK-港口; MT-码头; CK-仓库)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 发货地编号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("beginSiteCode"); - contractOtherFieldDO.setFieldName("发货地编号"); - contractOtherFieldDO.setFieldValue(goodsSite.getBeginSiteCode()); - contractOtherFieldDO.setFieldDescription("发货地编号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 发货地名称 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("beginSiteName"); - contractOtherFieldDO.setFieldName("发货地名称"); - contractOtherFieldDO.setFieldValue(goodsSite.getBeginSiteName()); - contractOtherFieldDO.setFieldDescription("发货地名称"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 详细地址 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("beginSiteAddress"); - contractOtherFieldDO.setFieldName("详细地址"); - contractOtherFieldDO.setFieldValue(goodsSite.getBeginSiteAddress()); - contractOtherFieldDO.setFieldDescription("详细地址"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 地点类型 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("endSiteType"); - contractOtherFieldDO.setFieldName("地点类型"); - contractOtherFieldDO.setFieldValue(goodsSite.getEndSiteType()); - contractOtherFieldDO.setFieldDescription("地点类型"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 收货地编号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("endSiteCode"); - contractOtherFieldDO.setFieldName("收货地编号"); - contractOtherFieldDO.setFieldValue(goodsSite.getEndSiteCode()); - contractOtherFieldDO.setFieldDescription("收货地编号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 收货地名称 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("endSiteName"); - contractOtherFieldDO.setFieldName("收货地名称"); - contractOtherFieldDO.setFieldValue(goodsSite.getEndSiteName()); - contractOtherFieldDO.setFieldDescription("收货地名称"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 详细地址 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("endSiteAddress"); - contractOtherFieldDO.setFieldName("详细地址"); - contractOtherFieldDO.setFieldValue(goodsSite.getEndSiteAddress()); - contractOtherFieldDO.setFieldDescription("详细地址"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 运输方式 (10-汽运;20-船运;30-水汽联运) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("contractTypeDispatch"); - contractOtherFieldDO.setFieldName("运输方式 (10-汽运;20-船运;30-水汽联运)"); - contractOtherFieldDO.setFieldValue(goodsSite.getContractTypeDispatch()); - contractOtherFieldDO.setFieldDescription("运输方式 (10-汽运;20-船运;30-水汽联运)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - - // 保存 - contractOtherFieldMapper.insertBatch(contractOtherFieldDOS); + otherFormDO = saveContractOtherForm(contractId, "goodsSiteList", + "收发港/站点", "收发港/站点"); + fields = goodsSite.getClass().getDeclaredFields(); + saveFields(fields, contractId, otherFormDO.getId(), goodsSite); } } + // 货物装卸要求 if (reqVO.getLoadingRequirementsList() != null && !reqVO.getLoadingRequirementsList().isEmpty()) { for (LoadingRequirement loadingRequirement : reqVO.getLoadingRequirementsList()) { - - contractOtherFormDO = new ContractOtherFormDO(); - contractOtherFormDO.setContractMainId(contractId); - contractOtherFormDO.setFormNumber("loadingRequirementsList"); - contractOtherFormDO.setFormName("货物装卸要求"); - contractOtherFormDO.setFormDescription("货物装卸要求"); - contractOtherFormMapper.insert(contractOtherFormDO); - - contractOtherFieldDOS = new ArrayList<>(); - - // 货物装卸行号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("loadingReqSourceId"); - contractOtherFieldDO.setFieldName("货物装卸行号"); - contractOtherFieldDO.setFieldValue(loadingRequirement.getLoadingReqSourceId()); - contractOtherFieldDO.setFieldDescription("货物装卸行号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 货物装卸编号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("loadingReqSourceCode"); - contractOtherFieldDO.setFieldName("货物装卸编号"); - contractOtherFieldDO.setFieldValue(loadingRequirement.getLoadingReqSourceCode()); - contractOtherFieldDO.setFieldDescription("货物装卸编号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 提货地责任方 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("deliveredAtPlace"); - contractOtherFieldDO.setFieldName("提货地责任方"); - contractOtherFieldDO.setFieldValue(loadingRequirement.getDeliveredAtPlace()); - contractOtherFieldDO.setFieldDescription("提货地责任方"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 提货地费用承担方 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("deliveredAtFeeparty"); - contractOtherFieldDO.setFieldName("提货地费用承担方"); - contractOtherFieldDO.setFieldValue(loadingRequirement.getDeliveredAtFeeparty()); - contractOtherFieldDO.setFieldDescription("提货地费用承担方"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 终到地责任方 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("destinationResponsibleParty"); - contractOtherFieldDO.setFieldName("终到地责任方"); - contractOtherFieldDO.setFieldValue(loadingRequirement.getDestinationResponsibleParty()); - contractOtherFieldDO.setFieldDescription("终到地责任方"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 终到地费用承担方 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("intermediateStationParty"); - contractOtherFieldDO.setFieldName("终到地费用承担方"); - contractOtherFieldDO.setFieldValue(loadingRequirement.getIntermediateStationParty()); - contractOtherFieldDO.setFieldDescription("终到地费用承担方"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 中间站责任方 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("destinationResponsibleFeeparty"); - contractOtherFieldDO.setFieldName("中间站责任方"); - contractOtherFieldDO.setFieldValue(loadingRequirement.getDestinationResponsibleFeeparty()); - contractOtherFieldDO.setFieldDescription("中间站责任方"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 中间站费用承担方 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("intermediateResponsibleFeeparty"); - contractOtherFieldDO.setFieldName("中间站费用承担方"); - contractOtherFieldDO.setFieldValue(loadingRequirement.getIntermediateResponsibleFeeparty()); - contractOtherFieldDO.setFieldDescription("中间站费用承担方"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - - // 保存 - contractOtherFieldMapper.insertBatch(contractOtherFieldDOS); + otherFormDO = saveContractOtherForm(contractId, "loadingRequirementsList", + "货物装卸要求", "货物装卸要求"); + fields = loadingRequirement.getClass().getDeclaredFields(); + saveFields(fields, contractId, otherFormDO.getId(), loadingRequirement); } } + // 收付款账号 if (reqVO.getAccountList() != null && !reqVO.getAccountList().isEmpty()) { for (Account account : reqVO.getAccountList()) { - - contractOtherFormDO = new ContractOtherFormDO(); - contractOtherFormDO.setContractMainId(contractId); - contractOtherFormDO.setFormNumber("accountList"); - contractOtherFormDO.setFormName("收付款账号"); - contractOtherFormDO.setFormDescription("收付款账号"); - contractOtherFormMapper.insert(contractOtherFormDO); - - contractOtherFieldDOS = new ArrayList<>(); - - // 收付款账号行号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("accountSourceId"); - contractOtherFieldDO.setFieldName("收付款账号行号"); - contractOtherFieldDO.setFieldValue(account.getAccountSourceId()); - contractOtherFieldDO.setFieldDescription("收付款账号行号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 收付款账号编号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("accountSourceCode"); - contractOtherFieldDO.setFieldName("收付款账号编号"); - contractOtherFieldDO.setFieldValue(account.getAccountSourceCode()); - contractOtherFieldDO.setFieldDescription("收付款账号编号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 类别 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("accountType"); - contractOtherFieldDO.setFieldName("类别"); - contractOtherFieldDO.setFieldValue(account.getAccountType()); - contractOtherFieldDO.setFieldDescription("类别"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 名称 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("accountName"); - contractOtherFieldDO.setFieldName("名称"); - contractOtherFieldDO.setFieldValue(account.getAccountName()); - contractOtherFieldDO.setFieldDescription("名称"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 开户银行 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("bankAccountName"); - contractOtherFieldDO.setFieldName("开户银行"); - contractOtherFieldDO.setFieldValue(account.getBankAccountName()); - contractOtherFieldDO.setFieldDescription("开户银行"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 银行账号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("bankAccountNo"); - contractOtherFieldDO.setFieldName("银行账号"); - contractOtherFieldDO.setFieldValue(account.getBankAccountNo()); - contractOtherFieldDO.setFieldDescription("银行账号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 纳税人识别号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("identificationNumber"); - contractOtherFieldDO.setFieldName("纳税人识别号"); - contractOtherFieldDO.setFieldValue(account.getIdentificationNumber()); - contractOtherFieldDO.setFieldDescription("纳税人识别号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 地址、电话 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("addressPhoneTel"); - contractOtherFieldDO.setFieldName("地址、电话"); - contractOtherFieldDO.setFieldValue(account.getAddressPhoneTel()); - contractOtherFieldDO.setFieldDescription("地址、电话"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - - // 保存 - contractOtherFieldMapper.insertBatch(contractOtherFieldDOS); + otherFormDO = saveContractOtherForm(contractId, "accountList", + "收付款账号", "收付款账号"); + fields = account.getClass().getDeclaredFields(); + saveFields(fields, contractId, otherFormDO.getId(), account); } } + // 费用明细 if (reqVO.getFreightList() != null && !reqVO.getFreightList().isEmpty()) { for (Freight freight : reqVO.getFreightList()) { - - contractOtherFormDO = new ContractOtherFormDO(); - contractOtherFormDO.setContractMainId(contractId); - contractOtherFormDO.setFormNumber("freightList"); - contractOtherFormDO.setFormName("费用明细"); - contractOtherFormDO.setFormDescription("费用明细"); - contractOtherFormMapper.insert(contractOtherFormDO); - - contractOtherFieldDOS = new ArrayList<>(); - - // 费用明细行号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("freightSourceId"); - contractOtherFieldDO.setFieldName("费用明细行号"); - contractOtherFieldDO.setFieldValue(freight.getFreightSourceId()); - contractOtherFieldDO.setFieldDescription("费用明细行号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 费用明细编号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("freightSourceCode"); - contractOtherFieldDO.setFieldName("费用明细编号"); - contractOtherFieldDO.setFieldValue(freight.getFreightSourceCode()); - contractOtherFieldDO.setFieldDescription("费用明细编号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 发货地编号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("beginSiteCode"); - contractOtherFieldDO.setFieldName("发货地编号"); - contractOtherFieldDO.setFieldValue(freight.getBeginSiteCode()); - contractOtherFieldDO.setFieldDescription("发货地编号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 发货地名称 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("beginSiteName"); - contractOtherFieldDO.setFieldName("发货地名称"); - contractOtherFieldDO.setFieldValue(freight.getBeginSiteName()); - contractOtherFieldDO.setFieldDescription("发货地名称"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 详细地址 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("beginSiteAddress"); - contractOtherFieldDO.setFieldName("详细地址"); - contractOtherFieldDO.setFieldValue(freight.getBeginSiteAddress()); - contractOtherFieldDO.setFieldDescription("详细地址"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 收货地编码 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("endSiteCode"); - contractOtherFieldDO.setFieldName("收货地编码"); - contractOtherFieldDO.setFieldValue(freight.getEndSiteCode()); - contractOtherFieldDO.setFieldDescription("收货地编码"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 收货地名称 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("endSiteName"); - contractOtherFieldDO.setFieldName("收货地名称"); - contractOtherFieldDO.setFieldValue(freight.getEndSiteName()); - contractOtherFieldDO.setFieldDescription("收货地名称"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 详细地址 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("endSiteAddress"); - contractOtherFieldDO.setFieldName("详细地址"); - contractOtherFieldDO.setFieldValue(freight.getEndSiteAddress()); - contractOtherFieldDO.setFieldDescription("详细地址"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 运输方式 (10-汽运;20-船运;30-水汽联运) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("contractTypeDispatch"); - contractOtherFieldDO.setFieldName("运输方式 (10-汽运;20-船运;30-水汽联运)"); - contractOtherFieldDO.setFieldValue(freight.getContractTypeDispatch()); - contractOtherFieldDO.setFieldDescription("运输方式 (10-汽运;20-船运;30-水汽联运)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 费用类型 (包干费、汽运费、港口费...) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("feeTypeCode"); - contractOtherFieldDO.setFieldName("费用类型 (包干费、汽运费、港口费...)"); - contractOtherFieldDO.setFieldValue(freight.getFeeTypeCode()); - contractOtherFieldDO.setFieldDescription("费用类型 (包干费、汽运费、港口费...)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 费用名称 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("feeTypeName"); - contractOtherFieldDO.setFieldName("费用名称"); - contractOtherFieldDO.setFieldValue(freight.getFeeTypeName()); - contractOtherFieldDO.setFieldDescription("费用名称"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 是否乙方提货 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("isPartybPickup"); - contractOtherFieldDO.setFieldName("是否乙方提货"); - contractOtherFieldDO.setFieldValue(freight.getIsPartybPickup()); - contractOtherFieldDO.setFieldDescription("是否乙方提货"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 乙方提货单价 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("partybPickupPrice"); - contractOtherFieldDO.setFieldName("乙方提货单价"); - contractOtherFieldDO.setFieldValue(freight.getPartybPickupPrice().toString()); - contractOtherFieldDO.setFieldDescription("乙方提货单价"); - contractOtherFieldDO.setType("BigDecimal"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 费用大类 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("feeCategoryL"); - contractOtherFieldDO.setFieldName("费用大类"); - contractOtherFieldDO.setFieldValue(freight.getFeeCategoryL()); - contractOtherFieldDO.setFieldDescription("费用大类"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 费用小类 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("feeCategoryS"); - contractOtherFieldDO.setFieldName("费用小类"); - contractOtherFieldDO.setFieldValue(freight.getFeeCategoryS()); - contractOtherFieldDO.setFieldDescription("费用小类"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 标的仓 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("goodsStorage"); - contractOtherFieldDO.setFieldName("标的仓"); - contractOtherFieldDO.setFieldValue(freight.getGoodsStorage()); - contractOtherFieldDO.setFieldDescription("标的仓"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 标的物 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("categoryName"); - contractOtherFieldDO.setFieldName("标的物"); - contractOtherFieldDO.setFieldValue(freight.getCategoryName()); - contractOtherFieldDO.setFieldDescription("标的物"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 免堆期 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("noHeapDays"); - contractOtherFieldDO.setFieldName("免堆期"); - contractOtherFieldDO.setFieldValue(freight.getNoHeapDays().toString()); - contractOtherFieldDO.setFieldDescription("免堆期"); - contractOtherFieldDO.setType("BigDecimal"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 计费单位 (01-元/吨; 02-元/40GP; 03-元/20GP; 04-元/车) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("quantityUnitCode"); - contractOtherFieldDO.setFieldName("计费单位 (01-元/吨; 02-元/40GP; 03-元/20GP; 04-元/车)"); - contractOtherFieldDO.setFieldValue(freight.getQuantityUnitCode()); - contractOtherFieldDO.setFieldDescription("计费单位 (01-元/吨; 02-元/40GP; 03-元/20GP; 04-元/车)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 单价 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("priceWithtax"); - contractOtherFieldDO.setFieldName("单价"); - contractOtherFieldDO.setFieldValue(freight.getPriceWithtax().toString()); - contractOtherFieldDO.setFieldDescription("单价"); - contractOtherFieldDO.setType("BigDecimal"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 税率(%) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("priceTaxRate"); - contractOtherFieldDO.setFieldName("税率(%)"); - contractOtherFieldDO.setFieldValue(freight.getPriceTaxRate().toString()); - contractOtherFieldDO.setFieldDescription("税率(%)"); - contractOtherFieldDO.setType("BigDecimal"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 费用承担 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("costBearing"); - contractOtherFieldDO.setFieldName("费用承担"); - contractOtherFieldDO.setFieldValue(freight.getCostBearing()); - contractOtherFieldDO.setFieldDescription("费用承担"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - - // 保存 - contractOtherFieldMapper.insertBatch(contractOtherFieldDOS); + otherFormDO = saveContractOtherForm(contractId, "freightList", + "费用明细", "费用明细"); + fields = freight.getClass().getDeclaredFields(); + saveFields(fields, contractId, otherFormDO.getId(), freight); } } + // 服务费用项目 if (reqVO.getServiceFeeList() != null && !reqVO.getServiceFeeList().isEmpty()) { for (ServiceFee serviceFee : reqVO.getServiceFeeList()) { - - contractOtherFormDO = new ContractOtherFormDO(); - contractOtherFormDO.setContractMainId(contractId); - contractOtherFormDO.setFormNumber("serviceFeeList"); - contractOtherFormDO.setFormName("服务费用项目"); - contractOtherFormDO.setFormDescription("服务费用项目"); - contractOtherFormMapper.insert(contractOtherFormDO); - - contractOtherFieldDOS = new ArrayList<>(); - - // 服务费用项目行号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("serviceFeeSourceId"); - contractOtherFieldDO.setFieldName("服务费用项目行号"); - contractOtherFieldDO.setFieldValue(serviceFee.getServiceFeeSourceId()); - contractOtherFieldDO.setFieldDescription("服务费用项目行号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 服务费用项目编号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("serviceFeeSourceCode"); - contractOtherFieldDO.setFieldName("服务费用项目编号"); - contractOtherFieldDO.setFieldValue(serviceFee.getServiceFeeSourceCode()); - contractOtherFieldDO.setFieldDescription("服务费用项目编号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 服务项目名称 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("serviceFeeName"); - contractOtherFieldDO.setFieldName("服务项目名称"); - contractOtherFieldDO.setFieldValue(serviceFee.getServiceFeeName()); - contractOtherFieldDO.setFieldDescription("服务项目名称"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 计费类别 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("expenseType"); - contractOtherFieldDO.setFieldName("计费类别"); - contractOtherFieldDO.setFieldValue(serviceFee.getExpenseType()); - contractOtherFieldDO.setFieldDescription("计费类别"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - - // 保存 - contractOtherFieldMapper.insertBatch(contractOtherFieldDOS); + otherFormDO = saveContractOtherForm(contractId, "serviceFeeList", + "服务费用项目", "服务费用项目"); + fields = serviceFee.getClass().getDeclaredFields(); + saveFields(fields, contractId, otherFormDO.getId(), serviceFee); } } + // 仓库明细 if (reqVO.getStorgeList() != null && !reqVO.getStorgeList().isEmpty()) { for (Storge storge : reqVO.getStorgeList()) { - - contractOtherFormDO = new ContractOtherFormDO(); - contractOtherFormDO.setContractMainId(contractId); - contractOtherFormDO.setFormNumber("storgeList"); - contractOtherFormDO.setFormName("仓库明细"); - contractOtherFormDO.setFormDescription("仓库明细"); - contractOtherFormMapper.insert(contractOtherFormDO); - - contractOtherFieldDOS = new ArrayList<>(); - - // 合同明细行号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("storgeSourceId"); - contractOtherFieldDO.setFieldName("合同明细行号"); - contractOtherFieldDO.setFieldValue(storge.getStorgeSourceId()); - contractOtherFieldDO.setFieldDescription("合同明细行号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 合同明细行编号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("storgeSourceCode"); - contractOtherFieldDO.setFieldName("合同明细行编号"); - contractOtherFieldDO.setFieldValue(storge.getStorgeSourceCode()); - contractOtherFieldDO.setFieldDescription("合同明细行编号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 仓库编号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("warehouseCode"); - contractOtherFieldDO.setFieldName("仓库编号"); - contractOtherFieldDO.setFieldValue(storge.getWarehouseCode()); - contractOtherFieldDO.setFieldDescription("仓库编号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 仓库名称 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("warehouseName"); - contractOtherFieldDO.setFieldName("仓库名称"); - contractOtherFieldDO.setFieldValue(storge.getWarehouseName()); - contractOtherFieldDO.setFieldDescription("仓库名称"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 详细地址 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("warehouseAddress"); - contractOtherFieldDO.setFieldName("详细地址"); - contractOtherFieldDO.setFieldValue(storge.getWarehouseAddress()); - contractOtherFieldDO.setFieldDescription("详细地址"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - - // 保存 - contractOtherFieldMapper.insertBatch(contractOtherFieldDOS); + otherFormDO = saveContractOtherForm(contractId, "storgeList", + "仓库明细", "仓库明细"); + fields = storge.getClass().getDeclaredFields(); + saveFields(fields, contractId, otherFormDO.getId(), storge); } } + // 接货地址 if (reqVO.getReceivingAddrList() != null && !reqVO.getReceivingAddrList().isEmpty()) { for (ReceivingAddr receivingAddr : reqVO.getReceivingAddrList()) { - - contractOtherFormDO = new ContractOtherFormDO(); - contractOtherFormDO.setContractMainId(contractId); - contractOtherFormDO.setFormNumber("receivingAddrList"); - contractOtherFormDO.setFormName("接货地址"); - contractOtherFormDO.setFormDescription("接货地址"); - contractOtherFormMapper.insert(contractOtherFormDO); - - contractOtherFieldDOS = new ArrayList<>(); - - // 接货地址行号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("recivingAddrSourceId"); - contractOtherFieldDO.setFieldName("接货地址行号"); - contractOtherFieldDO.setFieldValue(receivingAddr.getRecivingAddrSourceId()); - contractOtherFieldDO.setFieldDescription("接货地址行号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 接货地址编号 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("recivingAddrSourceCode"); - contractOtherFieldDO.setFieldName("接货地址编号"); - contractOtherFieldDO.setFieldValue(receivingAddr.getRecivingAddrSourceCode()); - contractOtherFieldDO.setFieldDescription("接货地址编号"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 标的物分类 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("categoryLevel"); - contractOtherFieldDO.setFieldName("标的物分类"); - contractOtherFieldDO.setFieldValue(receivingAddr.getCategoryLevel()); - contractOtherFieldDO.setFieldDescription("标的物分类"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 标的物编码 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("ccCategoryCode"); - contractOtherFieldDO.setFieldName("标的物编码"); - contractOtherFieldDO.setFieldValue(receivingAddr.getCcCategoryCode()); - contractOtherFieldDO.setFieldDescription("标的物编码"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 标的物名称 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("categoryName"); - contractOtherFieldDO.setFieldName("标的物名称"); - contractOtherFieldDO.setFieldValue(receivingAddr.getCategoryName()); - contractOtherFieldDO.setFieldDescription("标的物名称"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 接货编码 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("siteCode"); - contractOtherFieldDO.setFieldName("接货编码"); - contractOtherFieldDO.setFieldValue(receivingAddr.getSiteCode()); - contractOtherFieldDO.setFieldDescription("接货编码"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 接货名称 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("siteName"); - contractOtherFieldDO.setFieldName("接货名称"); - contractOtherFieldDO.setFieldValue(receivingAddr.getSiteName()); - contractOtherFieldDO.setFieldDescription("接货名称"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 地址类型 (QY-区域; GK-港口; MT-码头; CK-仓库) - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("siteType"); - contractOtherFieldDO.setFieldName("地址类型 (QY-区域; GK-港口; MT-码头; CK-仓库)"); - contractOtherFieldDO.setFieldValue(receivingAddr.getSiteType()); - contractOtherFieldDO.setFieldDescription("地址类型 (QY-区域; GK-港口; MT-码头; CK-仓库)"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 详细地址 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("siteAddress"); - contractOtherFieldDO.setFieldName("详细地址"); - contractOtherFieldDO.setFieldValue(receivingAddr.getSiteAddress()); - contractOtherFieldDO.setFieldDescription("详细地址"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 专用线 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("consigneePrivatewire"); - contractOtherFieldDO.setFieldName("专用线"); - contractOtherFieldDO.setFieldValue(receivingAddr.getConsigneePrivatewire()); - contractOtherFieldDO.setFieldDescription("专用线"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 收货人 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("consignerContact"); - contractOtherFieldDO.setFieldName("收货人"); - contractOtherFieldDO.setFieldValue(receivingAddr.getConsignerContact()); - contractOtherFieldDO.setFieldDescription("收货人"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 联系人 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("contactPerson"); - contractOtherFieldDO.setFieldName("联系人"); - contractOtherFieldDO.setFieldValue(receivingAddr.getContactPerson()); - contractOtherFieldDO.setFieldDescription("联系人"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - // 联系电话 - contractOtherFieldDO = new ContractOtherFieldDO(); - contractOtherFieldDO.setRelativityId(contractOtherFormDO.getId()); - contractOtherFieldDO.setFieldNumber("contactPhone"); - contractOtherFieldDO.setFieldName("联系电话"); - contractOtherFieldDO.setFieldValue(receivingAddr.getContactPhone()); - contractOtherFieldDO.setFieldDescription("联系电话"); - contractOtherFieldDO.setType("String"); - contractOtherFieldDO.setContractMainId(contractId.toString()); - contractOtherFieldDOS.add(contractOtherFieldDO); - - // 保存 - contractOtherFieldMapper.insertBatch(contractOtherFieldDOS); + otherFormDO = saveContractOtherForm(contractId, "receivingAddrList", + "接货地址", "接货地址"); + fields = receivingAddr.getClass().getDeclaredFields(); + saveFields(fields, contractId, otherFormDO.getId(), receivingAddr); } } @@ -1756,7 +335,135 @@ public class ContractApiImpl implements ContractApi { } return CommonResult.success(purchaseOrderDetails); } + private ContractMainDO getcontractMainDO(ContractRequest reqVO) { + // 合同主信息表映射 + ContractMainDO contractMainDO = new ContractMainDO(); + // 合同编号 + contractMainDO.setContractPaperNumber(reqVO.getContractCode()); + // 合同名称 + contractMainDO.setContractName(reqVO.getContractName()); + // 施工类型编号 默认值:SAP02NCOZC + contractMainDO.setConstructionTypeNumber("SAP02NCOZC"); + // 施工类型名称 默认值:铜非施工合同支出类 + contractMainDO.setConstructionTypeName("SAP铜非施工合同支出类"); + // 类别 默认值:购销合同(1) + contractMainDO.setCategory("1"); + // 是否虚拟合同 默认值:否(0) + contractMainDO.setContractVirtual("0"); + // 代理方 默认值:NULL + // 签署日期 -> 签约日期 (40-签约必填, 格式: yyyyMMdd) + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); + contractMainDO.setSignDate(LocalDateTime.parse(reqVO.getSignDate()+"000000", formatter)); + // 开始日期 -> 合同有效期起 (格式: yyyyMMdd) + contractMainDO.setStartDate(LocalDateTime.parse(reqVO.getContractStartDate()+"000000", formatter)); + // 结束日期 -> 合同有效期止 (格式: yyyyMMdd) + contractMainDO.setEndDate(LocalDateTime.parse(reqVO.getContractEndDate()+"000000", formatter)); + // 币种 -> 合同币种 + contractMainDO.setCurrency(reqVO.getCurrencyCode()); + // 原币金额 -> 预估含税总金额 + contractMainDO.setCooAmount(reqVO.getEstimateAmountTotal()); + // 原币金额-变更后 + contractMainDO.setChangeCooAmount(reqVO.getEstimateAmountTotal()); + // 本币金额 -> 预估含税总金额 + contractMainDO.setBasicAmount(reqVO.getEstimateAmountTotal()); + // 本币金额-变更后 + contractMainDO.setChangeBasicAmount(reqVO.getEstimateAmountTotal()); + // 状态 默认值:正在执行(EF) 执行中 + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode()); + // 是否有预付款 默认值:否 + contractMainDO.setHasPrepayment("0"); + // 预付款比例 默认值:NULL + // 预付款金额 默认值:NULL + // 是否有质保金 默认值:否 + contractMainDO.setHasQualityAmount("0"); + // 质保金比例 默认值:NULL + // 质保金金额 默认值:NULL + // 是否内部企业 + contractMainDO.setIsInternal(reqVO.getIsInternal()); + // 收支性质 默认值:支出 + contractMainDO.setDirection(DictEnum.ERP_RCV_DLVY_EXPENSES.getCode()); + // 是否框架合同 + contractMainDO.setIsFramework(reqVO.getIsFramework()); + // 境内/境外 -> 客商信息:境内/外 + if (reqVO.getPartnerList() != null && !reqVO.getPartnerList().isEmpty()) { + contractMainDO.setIsDomestic(reqVO.getPartnerList().get(0).getDomesticOrOverseas()); + } + // 建筑服务发生地 默认值:NULL + // 达到收款条件金额 默认值:NULL + // 是否有履约保证金 默认值:否 + contractMainDO.setHasDeposit("0"); + // 原币履约保证金 默认值:NULL + // 本币履约保证金 默认值:NULL + // 交易方式 默认值:先款后货 + contractMainDO.setHasPayable("PRE_PAY"); + // 合同类型 默认值:物流合同 + contractMainDO.setContractType("3"); + // 签署地 -> 签约地 (40-签约必填) + contractMainDO.setSignPlace(reqVO.getSignSite()); + // 甲方公司编号(采购方) -> 账套代码 + contractMainDO.setPurchaseCompanyNumber(reqVO.getBookId()); + // ERP甲方公司编号 + contractMainDO.setErpPurchaseCompanyNumber(reqVO.getBookId()); + // 甲方公司名称 -> 账套名称 null + // ERP甲方公司名称 + contractMainDO.setErpPurchaseCompanyName(""); + // 甲方地址 默认值:NULL + // 甲方法定代表人 默认值:NULL + // 乙方公司编号(销售方) -> 客商信息:供应商代码 + if (reqVO.getPartnerList() != null && !reqVO.getPartnerList().isEmpty()) { + contractMainDO.setSalesCompanyNumber(reqVO.getPartnerList().get(0).getPartnerCode()); + // ERP乙方公司编码 + contractMainDO.setErpSalesCompanyNumber(reqVO.getPartnerList().get(0).getPartnerCode()); + } + // 乙方公司名称 -> 客商信息:供应商名称 + if (reqVO.getPartnerList() != null && !reqVO.getPartnerList().isEmpty()) { + contractMainDO.setSalesCompanyName(reqVO.getPartnerList().get(0).getPartnerName()); + // ERP乙方公司名称 + contractMainDO.setErpSalesCompanyName(reqVO.getPartnerList().get(0).getPartnerName()); + } + // 乙方地址 默认值:NULL + // 乙方企业负责人 默认值:NULL + + return contractMainDO; + } + + private ContractOtherFormDO saveContractOtherForm(Long contractId, String formNumber, String formName, String formDescription) { + ContractOtherFormDO otherFormDO = new ContractOtherFormDO(); + otherFormDO.setContractMainId(contractId); + otherFormDO.setFormNumber(formNumber); + otherFormDO.setFormName(formName); + otherFormDO.setFormDescription(formDescription); + contractOtherFormMapper.insert(otherFormDO); + return otherFormDO; + } + + private ContractOtherFieldDO getContractOtherField(Long contractId, Long relativityId, String number, String name, + String value, String description, String type) { + ContractOtherFieldDO otherFieldDO = new ContractOtherFieldDO(); + otherFieldDO.setContractMainId(contractId.toString()); + otherFieldDO.setRelativityId(relativityId); + otherFieldDO.setFieldNumber(number); + otherFieldDO.setFieldName(name); + otherFieldDO.setFieldValue(value); + otherFieldDO.setFieldDescription(description); + otherFieldDO.setType(type); + return otherFieldDO; + } + + private void saveFields(Field[] fields, Long contractId, Long relativityId, T obj) throws Exception { + List otherFieldDOS = new ArrayList<>(); + for (Field field : fields) { + field.setAccessible(true); + if (!"java.util.List".equals(field.getType().getName()) && field.get(obj) != null) { + Schema annotation = field.getAnnotation(Schema.class); + otherFieldDOS.add(getContractOtherField(contractId, relativityId, field.getName(), + annotation.description(), field.get(obj).toString(),annotation.description(), + field.getType().getName())); + } + } + contractOtherFieldMapper.insertBatch(otherFieldDOS); + } private List getSalesOrdDetailsByIds(List ids) { if (ids.isEmpty()) { @@ -1796,5 +503,4 @@ public class ContractApiImpl implements ContractApi { }); return purchaseOrderWithDetailsDTOS; } - }