From 7a23d9ba3ef4d2b0ade30ff53899743b05072d71 Mon Sep 17 00:00:00 2001 From: guojunyun Date: Wed, 29 Oct 2025 15:59:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=9B=BD=E8=B4=B82.0?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=90=88=E5=90=8C=E5=88=86=E9=A1=B5=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=8E=A5=E5=8F=A3=20=E4=BF=AE=E6=94=B9=E5=9B=BD?= =?UTF-8?q?=E8=B4=B82.0=E7=B3=BB=E7=BB=9F=E5=90=88=E5=90=8C=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E6=8E=A5=E5=8F=A3=EF=BC=9A=E5=90=88=E5=90=8C=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E4=BF=AE=E6=94=B9=20=E5=90=88=E5=90=8C=E4=B8=BB?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=90=86=E6=96=B9?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/contractorder/api/ContractApi.java | 12 +- .../api/dto/contract/ContractRespDTO.java | 3 + .../api/vo/contract/ContractRespVO.java | 3 + .../api/vo/contract/ContractSaveReqVO.java | 3 + ...{ContractRequest.java => IntContract.java} | 2 +- .../international/IntContractPageReq.java | 13 ++ .../enums/contract/DictEnum.java | 9 ++ .../contractorder/api/ContractApiImpl.java | 134 +++++++++++++++++- .../dataobject/contract/ContractMainDO.java | 5 + 9 files changed, 176 insertions(+), 8 deletions(-) rename zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/{ContractRequest.java => IntContract.java} (99%) create mode 100644 zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/IntContractPageReq.java 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 66a3d5f..051c0fb 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,11 @@ package com.zt.plat.module.contractorder.api; import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO; 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.api.vo.contract.international.IntContract; +import com.zt.plat.module.contractorder.api.vo.contract.international.IntContractPageReq; import com.zt.plat.module.contractorder.enums.ApiConstants; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -39,6 +41,10 @@ public interface ContractApi { CommonResult> getOrderByOrderIds(@RequestBody List ids); @PostMapping(PREFIX + "/push") - @Operation(summary = "国贸2.0系统创建合同调用") - CommonResult push(@Valid @RequestBody ContractRequest reqVO) throws Exception; + @Operation(summary = "国贸2.0系统创建合同") + CommonResult push(@Valid @RequestBody IntContract reqVO) throws Exception; + + @GetMapping(PREFIX + "/logistics/list/page") + @Operation(summary = "国贸2.0系统合同分页查询") + CommonResult> logisticsListPage(IntContractPageReq pageReq); } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java index 3e10aa4..4def12c 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java @@ -233,6 +233,9 @@ public class ContractRespDTO { @Schema(description = "合同分类(字典:SPLY_BSN_TP)") private String businessType; + @Schema(description = "代理方名称") + private String agentName; + // 物料信息 private List detail; diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractRespVO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractRespVO.java index cf1c8cc..a112ce0 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractRespVO.java @@ -236,6 +236,9 @@ public class ContractRespVO { @Schema(description = "合同分类(字典:SPLY_BSN_TP)") private String businessType; + @Schema(description = "代理方名称") + private String agentName; + // 物料信息 private List detail; diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractSaveReqVO.java index eeb6bc9..6b0bd4c 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/ContractSaveReqVO.java @@ -208,6 +208,9 @@ public class ContractSaveReqVO { @Schema(description = "合同分类(字典:SPLY_BSN_TP)") private String businessType; + @Schema(description = "代理方名称") + private String agentName; + // 物料信息 private List detail; 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/IntContract.java similarity index 99% rename from zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/ContractRequest.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/IntContract.java index b6b4507..238351c 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/IntContract.java @@ -10,7 +10,7 @@ import java.util.List; * 合同请求主实体 */ @Data -public class ContractRequest { +public class IntContract { // 基础信息 @Schema(description = "操作标志") diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/IntContractPageReq.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/IntContractPageReq.java new file mode 100644 index 0000000..abddeca --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/vo/contract/international/IntContractPageReq.java @@ -0,0 +1,13 @@ +package com.zt.plat.module.contractorder.api.vo.contract.international; + +import com.zt.plat.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class IntContractPageReq extends PageParam { + @Schema(description = "合同编号") + private String contractCode; + @Schema(description = "合同名称") + private String contractName; +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java index 8df642d..4bf0faf 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java @@ -8,6 +8,15 @@ import lombok.Getter; @Getter public enum DictEnum { + /** 供应链业务大类 */ + SPLY_BSN_TP_03BX("货物保险","03BX",null), + SPLY_BSN_TP_11CC("货物保管仓储","11CC",null), + SPLY_BSN_TP_10YS("货物运输","10YS",null), + SPLY_BSN_TP_13HD("货运代理","13HD",null), + SPLY_BSN_TP_ENTED("来料加工","ENTED",null), + SPLY_BSN_TP_ENT("委托加工","ENT",null), + SPLY_BSN_TP_PUR("采购","PUR",null), + SPLY_BSN_TP_SALE("销售","SALE",null), /** 业务类型 */ BSN_TP_3("物流合同","3",null), /** ERP合同类型编码 */ 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 5395f2d..95bbc35 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 @@ -1,9 +1,12 @@ package com.zt.plat.module.contractorder.api; import cn.hutool.extra.spring.SpringUtil; +import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; 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; @@ -39,6 +42,7 @@ import java.lang.reflect.Field; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -147,7 +151,7 @@ public class ContractApiImpl implements ContractApi { @Transactional @Override - public CommonResult push(@RequestBody ContractRequest reqVO) throws Exception { + public CommonResult push(@RequestBody IntContract reqVO) throws Exception { // 合同主信息表映射 ContractMainDO contractMainDO = getcontractMainDO(reqVO); @@ -339,6 +343,128 @@ public class ContractApiImpl implements ContractApi { return success(true); } + @Override + public CommonResult> logisticsListPage(IntContractPageReq pageReq) { + + // 查询条件 + LambdaQueryWrapperX queryWrapperX = new LambdaQueryWrapperX<>(); + // 合同类型 + queryWrapperX.in( + ContractMainDO::getBusinessType, + Arrays.asList( + DictEnum.SPLY_BSN_TP_13HD.getCode(), + DictEnum.SPLY_BSN_TP_10YS.getCode(), + DictEnum.SPLY_BSN_TP_11CC.getCode(), + DictEnum.SPLY_BSN_TP_03BX.getCode() + ) + ); + // 合同编号 + queryWrapperX.likeIfPresent(ContractMainDO::getContractPaperNumber, pageReq.getContractCode()); + // 合同名称 + queryWrapperX.likeIfPresent(ContractMainDO::getContractName, pageReq.getContractName()); + + // 查询 + PageResult pageResult = contractMainMapper.selectPage(pageReq, queryWrapperX); + + // 返回数据 + PageResult result = new PageResult<>(); + List resultList = new ArrayList<>(); + // 设置返回数据 + result.setTotal(pageResult.getTotal()); + result.setList(resultList); + + // 遍历查询结果,设置返回数据列表 + if (pageResult.getTotal() > 0) { + pageResult.getList().forEach(contractMainDO -> { + + // 合同ID + Long mainDOId = contractMainDO.getId(); + + // 合同主信息 + List mainFields = contractOtherFieldMapper.selectList( + new LambdaQueryWrapperX() + .eq(ContractOtherFieldDO::getContractMainId, mainDOId) + .isNull(ContractOtherFieldDO::getRelativityId) + ); + JSONObject resultJson = new JSONObject(); + mainFields.forEach(field + -> resultJson.putOnce(field.getFieldNumber(), field.getFieldValue())); + + // 附件清单列表 + List attachForms = contractOtherFormMapper.selectList( + new LambdaQueryWrapperX() + .eq(ContractOtherFormDO::getContractMainId, mainDOId) + .eq(ContractOtherFormDO::getFormNumber, "attachList") + ); + if (attachForms != null && !attachForms.isEmpty()) { + JSONArray jsonArray = new JSONArray(); + attachForms.forEach(form -> { + ContractOtherFieldDO fieldDO = contractOtherFieldMapper.selectOne( + new LambdaQueryWrapperX() + .eq(ContractOtherFieldDO::getContractMainId, mainDOId) + .eq(ContractOtherFieldDO::getRelativityId, form.getId()) + ); + if (fieldDO != null) { + jsonArray.add(fieldDO.getFieldValue()); + } + }); + if (!jsonArray.isEmpty()) { + resultJson.putOnce("attachList", jsonArray); + } + } + + // 客商信息 + resultJson.putOnce("partnerList", getQueryFieldJsonArray(mainDOId, "partnerList")); + // 收发港/站点 + resultJson.putOnce("goodsSiteList", getQueryFieldJsonArray(mainDOId, "goodsSiteList")); + // 货物装卸要求 + resultJson.putOnce("loadingRequirementsList", getQueryFieldJsonArray(mainDOId, "loadingRequirementsList")); + // 收付款账号 + resultJson.putOnce("accountList", getQueryFieldJsonArray(mainDOId, "accountList")); + // 费用明细 + resultJson.putOnce("freightList", getQueryFieldJsonArray(mainDOId, "freightList")); + // 服务费用项目 + resultJson.putOnce("serviceFeeList", getQueryFieldJsonArray(mainDOId, "serviceFeeList")); + // 仓库明细 + resultJson.putOnce("storgeList", getQueryFieldJsonArray(mainDOId, "storgeList")); + // 接货地址 + resultJson.putOnce("receivingAddrList", getQueryFieldJsonArray(mainDOId, "receivingAddrList")); + + // 添加到结果集 + resultList.add(resultJson.toBean(IntContract.class)); + }); + } + + return success(result); + } + + private JSONArray getQueryFieldJsonArray(Long mainDOId, String fieldName) { + + JSONArray jsonArray = new JSONArray(); + List forms = contractOtherFormMapper.selectList( + new LambdaQueryWrapperX() + .eq(ContractOtherFormDO::getContractMainId, mainDOId) + .eq(ContractOtherFormDO::getFormNumber, fieldName) + ); + if (forms != null && !forms.isEmpty()) { + forms.forEach(form -> { + List fieldDOs = contractOtherFieldMapper.selectList( + new LambdaQueryWrapperX() + .eq(ContractOtherFieldDO::getContractMainId, mainDOId) + .eq(ContractOtherFieldDO::getRelativityId, form.getId()) + ); + if (fieldDOs != null && !fieldDOs.isEmpty()) { + JSONObject jsonObject = new JSONObject(); + fieldDOs.forEach(field + -> jsonObject.putOnce(field.getFieldNumber(), field.getFieldValue())); + jsonArray.add(jsonObject); + } + }); + } + + return jsonArray.isEmpty() ? null : jsonArray; + } + @Override public CommonResult> getOrderByOrderIds(List ids) { if (ids == null || ids.isEmpty()) { @@ -370,7 +496,7 @@ public class ContractApiImpl implements ContractApi { return CommonResult.success(purchaseOrderDetails); } - private ContractMainDO getcontractMainDO(ContractRequest reqVO) { + private ContractMainDO getcontractMainDO(IntContract reqVO) { // 合同主信息表映射 ContractMainDO contractMainDO = new ContractMainDO(); @@ -430,8 +556,8 @@ public class ContractApiImpl implements ContractApi { // 本币履约保证金 默认值:NULL // 交易方式 默认值:先款后货 contractMainDO.setHasPayable(DictEnum.HS_PYBL_TP_PRE_PAY.getCode()); - // 合同类型 默认值:物流合同 - contractMainDO.setContractType(DictEnum.BSN_TP_3.getCode()); + // 合同类型 + contractMainDO.setBusinessType(reqVO.getContractType()); // 签署地 -> 签约地 (40-签约必填) contractMainDO.setSignPlace(reqVO.getSignSite()); // 甲方公司编号(采购方) -> 账套代码 diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java index ea05762..f5d9681 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java @@ -394,4 +394,9 @@ public class ContractMainDO extends BusinessBaseDO { */ @TableField("BSN_TP") private String businessType; + /** + * 代理方名称 + */ + @TableField("AGT_NAME") + private String agentName; } \ No newline at end of file