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 index abddeca..477b801 100644 --- 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 @@ -6,8 +6,24 @@ import lombok.Data; @Data public class IntContractPageReq extends PageParam { - @Schema(description = "合同编号") - private String contractCode; + + // 合同名称:模糊搜索 @Schema(description = "合同名称") private String contractName; + // 合同有效期起:日期选择 + @Schema(description = "合同有效期起") + private String contractStartDate; + // 合同有效期止:日期选择 + @Schema(description = "合同有效期止") + private String contractEndDate; + // 合同版本号:精确搜索 TODO 不确定 + // 签约地:模糊搜索 + @Schema(description = "签约地") + private String signSite; + // 经办人姓名:模糊搜索 + @Schema(description = "经办人姓名") + private String createdUserName; + // 签约日期: 模糊搜索 + @Schema(description = "签约日期") + private String signDate; } 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 3b68e79..fde683f 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 @@ -42,7 +42,9 @@ import org.springframework.web.bind.annotation.RestController; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -250,6 +252,12 @@ public class ContractApiImpl implements ContractApi { return success(true); } + /** + * 国贸合同信息未映射合同主信息字段保存到动态条款 + * + * @param reqVO 国贸合同信息 + * @param contractId 合同主信息ID + */ private void saveIntContractFields(IntContract reqVO, Long contractId) { try { @@ -370,10 +378,28 @@ public class ContractApiImpl implements ContractApi { DictEnum.SPLY_BSN_TP_03BX.getCode() ) ); - // 合同编号 - queryWrapperX.likeIfPresent(ContractMainDO::getContractPaperNumber, pageReq.getContractCode()); - // 合同名称 + // 合同名称:模糊搜索 queryWrapperX.likeIfPresent(ContractMainDO::getContractName, pageReq.getContractName()); + // 合同有效期起:日期选择 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + queryWrapperX.geIfPresent(ContractMainDO::getStartDate, + pageReq.getContractStartDate() != null + ? LocalDateTime.of(LocalDate.parse(pageReq.getContractStartDate(), formatter), LocalTime.MIN) + .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + : null); + // 合同有效期止:日期选择 + queryWrapperX.leIfPresent(ContractMainDO::getEndDate, + pageReq.getContractEndDate() != null + ? LocalDateTime.of(LocalDate.parse(pageReq.getContractEndDate(), formatter), LocalTime.MAX) + .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + : null); + // 签约地:模糊搜索 + queryWrapperX.likeIfPresent(ContractMainDO::getSignPlace, pageReq.getSignSite()); + // 经办人姓名:模糊搜索 + // 签约日期: 模糊搜索 + if (pageReq.getSignDate() != null) { + queryWrapperX.apply("to_char(SGN_DT, 'yyyymmdd') like concat('%',{0},'%')", pageReq.getSignDate()); + } // 查询 PageResult pageResult = contractMainMapper.selectPage(pageReq, queryWrapperX); @@ -387,63 +413,66 @@ public class ContractApiImpl implements ContractApi { // 遍历查询结果,设置返回数据列表 if (pageResult.getTotal() > 0) { - pageResult.getList().forEach(contractMainDO -> { - - // 合同ID - Long mainDOId = contractMainDO.getId(); - - // 合同动态条款查询 - List otherFormDOs = contractOtherFormMapper.selectList( - new LambdaQueryWrapperX() - .eq(ContractOtherFormDO::getContractMainId, mainDOId) - ); - // 合同动态条款明细查询 - List otherFieldDOs = contractOtherFieldMapper.selectList( - new LambdaQueryWrapperX() - .eq(ContractOtherFieldDO::getContractMainId, mainDOId) - ); - - JSONObject resultJson = new JSONObject(); - - // 设置主信息 - otherFieldDOs.stream() - .filter(otherFieldDO -> otherFieldDO.getRelativityId() == null) - .forEach(otherFieldDO - -> resultJson.putOnce(otherFieldDO.getFieldNumber(), otherFieldDO.getFieldValue())); - - // 设置明细信息 - otherFormDOs.stream() - .collect(Collectors.groupingBy(ContractOtherFormDO::getFormNumber)) - .forEach((key, value) -> { - JSONArray detailsJson = new JSONArray(); - value.forEach(detail -> { - // 根据条款id筛选条款明细 - Stream stream = otherFieldDOs.stream() - .filter(otherFieldDO - -> Objects.equals(otherFieldDO.getRelativityId(), detail.getId())); - if ("attachList".equals(key)) { - // 基础数据类型 - stream.forEach(otherFieldDO - -> detailsJson.add(otherFieldDO.getFieldValue())); - } else { - // 对象数据类型 - JSONObject detailJson = new JSONObject(); - stream.forEach(otherFieldDO - -> detailJson.putOnce(otherFieldDO.getFieldNumber(), otherFieldDO.getFieldValue())); - detailsJson.add(detailJson); - } - }); - resultJson.putOnce(key, detailsJson); - }); - - // 添加到结果集 - resultList.add(resultJson.toBean(IntContract.class)); - }); + pageResult.getList().forEach(contractMainDO + -> resultList.add(getIntContractByMainId(contractMainDO.getId()))); } return success(result); } + /** + * 获取国贸合同信息通过合同主信息ID + * + * @param mainId 同主信息ID + * @return 国贸合同信息 + */ + private IntContract getIntContractByMainId(Long mainId) { + // 合同动态条款查询 + List otherFormDOs = contractOtherFormMapper.selectList( + new LambdaQueryWrapperX() + .eq(ContractOtherFormDO::getContractMainId, mainId) + ); + // 合同动态条款明细查询 + List otherFieldDOs = contractOtherFieldMapper.selectList( + new LambdaQueryWrapperX() + .eq(ContractOtherFieldDO::getContractMainId, mainId) + ); + + JSONObject resultJson = new JSONObject(); + + // 设置主信息 + otherFieldDOs.stream() + .filter(otherFieldDO -> otherFieldDO.getRelativityId() == null) + .forEach(otherFieldDO + -> resultJson.putOnce(otherFieldDO.getFieldNumber(), otherFieldDO.getFieldValue())); + + // 设置明细信息 + otherFormDOs.stream() + .collect(Collectors.groupingBy(ContractOtherFormDO::getFormNumber)) + .forEach((key, value) -> { + JSONArray detailsJson = new JSONArray(); + value.forEach(detail -> { + // 根据条款id筛选条款明细 + Stream stream = otherFieldDOs.stream() + .filter(otherFieldDO + -> Objects.equals(otherFieldDO.getRelativityId(), detail.getId())); + if ("attachList".equals(key)) { + // 基础数据类型 + stream.forEach(otherFieldDO + -> detailsJson.add(otherFieldDO.getFieldValue())); + } else { + // 对象数据类型 + JSONObject detailJson = new JSONObject(); + stream.forEach(otherFieldDO + -> detailJson.putOnce(otherFieldDO.getFieldNumber(), otherFieldDO.getFieldValue())); + detailsJson.add(detailJson); + } + }); + resultJson.putOnce(key, detailsJson); + }); + return resultJson.toBean(IntContract.class); + } + @Override public CommonResult> getOrderByOrderIds(List ids) { if (ids == null || ids.isEmpty()) { @@ -475,6 +504,12 @@ public class ContractApiImpl implements ContractApi { return CommonResult.success(purchaseOrderDetails); } + /** + * 国贸合同信息映射到合同主信息 + * + * @param reqVO 国贸合同信息 + * @return 合同主信息 + */ private ContractMainDO internationalToMainDO(IntContract reqVO) { // 合同主信息表映射