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 462409a..3b68e79 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 @@ -44,10 +44,9 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.framework.common.pojo.CommonResult.success; @@ -393,55 +392,49 @@ public class ContractApiImpl implements ContractApi { // 合同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( + // 合同动态条款查询 + List otherFormDOs = 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); - } - } + // 合同动态条款明细查询 + List otherFieldDOs = contractOtherFieldMapper.selectList( + new LambdaQueryWrapperX() + .eq(ContractOtherFieldDO::getContractMainId, mainDOId) + ); - // 客商信息 - 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")); + 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)); @@ -451,33 +444,6 @@ public class ContractApiImpl implements ContractApi { 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()) {