Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java
This commit is contained in:
潘荣晟
2025-10-27 11:29:25 +08:00
14 changed files with 1864 additions and 16 deletions

View File

@@ -4,7 +4,7 @@ package com.zt.plat.module.contractorder.api;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.module.contractorder.api.dto.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.vo.contract.international.ContractRequest;
import com.zt.plat.module.contractorder.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -43,4 +43,7 @@ public interface ContractApi {
@Operation(summary = "通过订单id获取订单信息", description = "通过订单编号获取订单信息")
CommonResult<List<PurchaseOrderWithDetailsDTO>> getOrderByOrderIds(@RequestBody List<Long> ids);
@PostMapping(PREFIX + "/send")
@Operation(summary = "国贸2.0系统创建合同调用")
CommonResult<Boolean> push(@Valid @RequestBody ContractRequest reqVO);
}

View File

@@ -0,0 +1,18 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import lombok.Data;
/*
* 收付款账号
*/
@Data
public class Account {
private String accountSourceId; // 收付款账号行号
private String accountSourceCode; // 收付款账号编号
private String accountType; // 类别
private String accountName; // 名称
private String bankAccountName; // 开户银行
private String bankAccountNo; // 银行账号
private String identificationNumber; // 纳税人识别号
private String addressPhoneTel; // 地址、电话
}

View File

@@ -0,0 +1,91 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.sql.Date;
import java.util.List;
/**
* 合同请求主实体
*/
@Data
public class ContractRequest {
// 基础信息
private String operateFlag; // 操作标志
private String bookId; // 账套代码
private String orgId; // 组织ID
private String contractId; // 合同唯一键
private String operateType; // 合同操作类型 (新增, 变更, 修正)
private String contractCode; // 合同编号
private String contractBusinessNo; // 业务合同编号
private String contractExternalNo; // 对方合同号
private BigDecimal contractVersion; // 系统合同版本号
private String contractStatus; // 合同状态代码 (值集: 40-签约)
private String contractName; // 合同名称
private String contractType; // 合同类型 (货运;货代;仓储;保险)
private String textType; // 是否非标准合同文本
@DateTimeFormat(pattern = "yyyyMMdd")
private Date contractStartDate; // 合同有效期起 (格式: yyyyMMdd)
@DateTimeFormat(pattern = "yyyyMMdd")
private Date contractEndDate; // 合同有效期止 (格式: yyyyMMdd)
private String priceType; // 是否固定单价 (0-浮动, 1-固定)
private String currencyCode; // 合同币种
private String settleMethod; // 结算方式
private String firstContractCode; // 对方合同号
private BigDecimal estimateAmountTotal; // 预估含税总金额
private String settleGist; // 结算依据 (10-交货量, 20-卸车量)
private BigDecimal priceTaxRate; // 税率
private String transType; // 运输方式 (10-铁路或汽运, 20-水路运输, 30-铁路运输, 40-汽车运输, 50-航空运输)
private String packMethod; // 包装方式
private BigDecimal intransitLoss; // 在途损耗
private String pickupLocation; // 提货地
private BigDecimal warehouseNum; // 仓库数
private BigDecimal weightDisparity; // 按码单入库磅差比
private String insuredSubjectMatter; // 投保标的
private BigDecimal estimateCoverageAmount; // 预计年保险总额
private BigDecimal estimatePremium; // 预计年保险费
private BigDecimal premiumRate; // 保险费率
private String remark; // 备注信息
private String createdUser; // 经办人工号
private String createdUserName; // 经办人姓名
private String approveSubmitCode; // 拟签递交人工号
private String approveSubmitName; // 拟签递交人姓名
@DateTimeFormat(pattern = "yyyyMMdd")
private Date approveSubmitDate; // 拟签呈批日期
private String approvePassCode; // 拟签通过人工号
private String approvePassName; // 拟签通过人姓名
@DateTimeFormat(pattern = "yyyyMMdd")
private Date approvePassDate; // 拟签通过日期
private String signSite; // 签约地 (40-签约必填)
@DateTimeFormat(pattern = "yyyyMMdd")
private Date signDate; // 签约日期 (40-签约必填, 格式: yyyyMMdd)
private String signFirstPerson; // 对方签约人 (40-签约必填)
private String signSecondPersonCode; // 我方签约人工号 (40-签约必填)
private String signSecondPersonName; // 我方签约人
private String onceAuthorityFlag; // 推荐签约人工号 (40-签约必填, Y/N)
private String signOnceAccredit; // 推荐签约人工号
private String extCol1; // 备用字段1
private String extCol2; // 备用字段2
private String extCol3; // 备用字段3
private String extCol4; // 备用字段4
private String extCol5; // 备用字段5
private String extCol6; // 备用字段6
private String extCol7; // 备用字段7
private String extCol8; // 备用字段8
private String extCol9; // 备用字段9
private String extCol10; // 备用字段10
private List<String> attachList; // 附件清单列表
// 嵌套列表
private List<Partner> partnerList; // 客商信息
private List<GoodsSite> goodsSiteList; // 收发港/站点
private List<LoadingRequirement> loadingRequirementsList; // 货物装卸要求
private List<Account> accountList; // 收付款账号
private List<Freight> freightList; // 费用明细
private List<ServiceFee> serviceFeeList; // 服务费用项目
private List<Storge> storgeList; // 仓库明细
private List<ReceivingAddr> receivingAddrList; // 接货地址
}

View File

@@ -0,0 +1,33 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import lombok.Data;
import java.math.BigDecimal;
/*
* 费用明细
*/
@Data
public class Freight {
private String freightSourceId; // 费用明细行号
private String freightSourceCode; // 费用明细编号
private String beginSiteCode; // 发货地编号
private String beginSiteName; // 发货地名称
private String beginSiteAddress; // 详细地址
private String endSiteCode; // 收货地编码
private String endSiteName; // 收货地名称
private String endSiteAddress; // 详细地址
private String contractTypeDispatch; // 运输方式 (10-汽运;20-船运;30-水汽联运)
private String feeTypeCode; // 费用类型 (包干费、汽运费、港口费...)
private String feeTypeName; // 费用名称
private String isPartybPickup; // 是否乙方提货
private BigDecimal partybPickupPrice; // 乙方提货单价
private String feeCategoryL; // 费用大类
private String feeCategoryS; // 费用小类
private String goodsStorage; // 标的仓
private String categoryName; // 标的物
private BigDecimal noHeapDays; // 免堆期
private String quantityUnitCode; // 计费单位 (01-元/吨; 02-元/40GP; 03-元/20GP; 04-元/车)
private BigDecimal priceWithtax; // 单价
private BigDecimal priceTaxRate; // 税率(%)
private String costBearing; // 费用承担
}

View File

@@ -0,0 +1,24 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import lombok.Data;
/*
* 收发港/站点
*/
@Data
public class GoodsSite {
private String goodsSiteSourceId; // 收发港站点行号
private String goodsSiteSourceCode; // 收发港站点编号
private String subMattercategoryLevel; // 标的物分类
private String subMattercategoryCode; // 标的物编码
private String subMatterCategoryName; // 标的物名称
private String beginSiteType; // 地点类型 (QY-区域; GK-港口; MT-码头; CK-仓库)
private String beginSiteCode; // 发货地编号
private String beginSiteName; // 发货地名称
private String beginSiteAddress; // 详细地址
private String endSiteType; // 地点类型
private String endSiteCode; // 收货地编号
private String endSiteName; // 收货地名称
private String endSiteAddress; // 详细地址
private String contractTypeDispatch; // 运输方式 (10-汽运;20-船运;30-水汽联运)
}

View File

@@ -0,0 +1,18 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import lombok.Data;
/*
* 货物装卸要求
*/
@Data
public class LoadingRequirement {
private String loadingReqSourceId; // 货物装卸行号
private String loadingReqSourceCode; // 货物装卸编号
private String deliveredAtPlace; // 提货地责任方
private String deliveredAtFeeparty; // 提货地费用承担方
private String destinationResponsibleParty; // 终到地责任方
private String intermediateStationParty; // 终到地费用承担方
private String destinationResponsibleFeeparty; // 中间站责任方
private String intermediateResponsibleFeeparty; // 中间站费用承担方
}

View File

@@ -0,0 +1,21 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import lombok.Data;
/*
* 客商信息
*/
@Data
public class Partner {
private String partnerSourceId; // 客商信息行号
private String partnerSourceCode; // 客商信息编码
private String partnerName; // 供应商名称
private String partnerCode; // 供应商代码
private String legalRepresentative; // 对方法定代表人
private String partnerCurrency; // 币种
private String contactPerson; // 对方联系人
private String contactInformation; // 对方联系人联系方式
private String internalTransaction; // 是否内部交易
private String partnerType; // 客商类型
private String domesticOrOverseas; // 境内/外
}

View File

@@ -0,0 +1,23 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import lombok.Data;
/*
* 接货地址
*/
@Data
public class ReceivingAddr {
private String recivingAddrSourceId; // 接货地址行号
private String recivingAddrSourceCode; // 接货地址编号
private String categoryLevel; // 标的物分类
private String ccCategoryCode; // 标的物编码
private String categoryName; // 标的物名称
private String siteCode; // 接货编码
private String siteName; // 接货名称
private String siteType; // 地址类型 (QY-区域; GK-港口; MT-码头; CK-仓库)
private String siteAddress; // 详细地址
private String consigneePrivatewire; // 专用线
private String consignerContact; // 收货人
private String contactPerson; // 联系人
private String contactPhone; // 联系电话
}

View File

@@ -0,0 +1,14 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import lombok.Data;
/*
* 服务费用项目
*/
@Data
public class ServiceFee {
private String serviceFeeSourceId; // 服务费用项目行号
private String serviceFeeSourceCode; // 服务费用项目编号
private String serviceFeeName; // 服务项目名称
private String expenseType; // 计费类别
}

View File

@@ -0,0 +1,15 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import lombok.Data;
/*
* 仓库明细
*/
@Data
public class Storge {
private String storgeSourceId; // 合同明细行号
private String storgeSourceCode; // 合同明细行编号
private String warehouseCode; // 仓库编号
private String warehouseName; // 仓库名称
private String warehouseAddress; // 详细地址
}

View File

@@ -27,4 +27,6 @@ public interface ErrorCodeConstants {
ErrorCode CONTRACT_STATUS_NOT_ARCHIVE = new ErrorCode(1_027_000_012, "{}状态合同不允许归档");
ErrorCode CONTRACT_STATUS_NOT_SUBMIT_ERP = new ErrorCode(1_027_000_013, "{}状态合同不允许提交ERP");
ErrorCode CONTRACT_ORDER_EXISTS = new ErrorCode(1_027_000_014, "关联订单已存在");
ErrorCode CONTRACT_SUBMIT_ERP_FAIL = new ErrorCode(1_027_000_015, "合同提交erp失败{}");
ErrorCode CONTRACT_UNKNOWN_OPERATE = new ErrorCode(1_027_000_015, "未知的操作");
}