diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcExportTemplateFormDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcExportTemplateFormDTO.java index e55e1e020e..a7d52bf75b 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcExportTemplateFormDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcExportTemplateFormDTO.java @@ -1,7 +1,9 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.validator.group.ExportGroup; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; @@ -24,6 +26,7 @@ public class IcExportTemplateFormDTO implements Serializable { /** * 客户id */ + @NotBlank(message = "客户Id不能为空",groups = ExportGroup.class) private String customerId; /** diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResultDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResultDTO.java index 730d8fa0e5..fe2e7b03cb 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResultDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResultDTO.java @@ -14,7 +14,7 @@ import java.util.List; public class ConditionResultDTO implements Serializable { private static final long serialVersionUID = -2021200288758478252L; /** - * 父项ID + * ID */ private String itemId; diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java index 19b1dc1974..363714ab18 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java @@ -28,7 +28,12 @@ public class IcCustomExportResultDTO implements Serializable { /** * sql中要返回的 列名 顺序跟表头顺序一致 */ - private List sqlColumns; + private List showSqlColumns; + + /** + * sql中要返回的关联的列 (与显示的要去重) + */ + private List hiddenSqlColumns; @AllArgsConstructor @Data diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java index 7dc27c898a..a40407d03b 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java @@ -3,7 +3,6 @@ package com.epmet.dto.result; import lombok.Data; import java.io.Serializable; -import java.util.List; /** @@ -47,6 +46,11 @@ public class IcExportTemplateForExportResultDTO implements Serializable { */ private Integer sort; + /** + * itemId + */ + private String itemId; + /** * 表名 */ @@ -55,10 +59,9 @@ public class IcExportTemplateForExportResultDTO implements Serializable { * 列名 */ private String columnName; - /** - * 子节点 + * 只有远程获取的才有值 */ - private List children; + private String optionSourceValue; } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java index 89054811ec..bb02a5425c 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java @@ -38,8 +38,10 @@ public interface IcFormItemDao extends BaseDao { List selectConditionList(@Param("customerId") String customerId, @Param("formCode") String formCode); List selectConditionListByGroupId(String groupId); + /** * 查询组件列表 + * * @param customerId * @param formCode * @return @@ -53,28 +55,44 @@ public interface IcFormItemDao extends BaseDao { * * @param customerId * @param formCode - * @return java.util.List + * @return java.util.List * @author yinzuomei * @date 2021/11/1 12:58 下午 */ - List queryConditions(@Param("customerId") String customerId, @Param("formCode")String formCode); + List queryConditions(@Param("customerId") String customerId, @Param("formCode") String formCode); /** * 构造出所有子表关联语句 * * @param customerId * @param formCode - * @return java.util.List + * @return java.util.List * @author yinzuomei * @date 2021/11/1 1:25 下午 */ - List querySubTables(@Param("customerId") String customerId, @Param("formCode")String formCode); + List querySubTables(@Param("customerId") String customerId, @Param("formCode") String formCode); - Set queryIcResiSubTables(@Param("customerId") String customerId, @Param("formCode")String formCode); + Set queryIcResiSubTables(@Param("customerId") String customerId, @Param("formCode") String formCode); /** * @Author sun * @Description 居民信息新增查询各表必填字段 **/ - List getMustColumn(@Param("customerId")String customerId); -} \ No newline at end of file + List getMustColumn(@Param("customerId") String customerId); + + /** + * desc:获取需要远程获取并带有关联item的参数的 item项 + * + * @param customerId + * @param formCode + * @return + */ + List getConditionRemoteItems(@Param("customerId") String customerId, @Param("formCode") String formCode); + + /** + * desc:根据Id获取item对应的表名和item属性 + * @param itemId + * @return + */ + ConditionResultDTO getConditionItem(@Param("itemId") String itemId); +} diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java index d965df9f47..9e72beb002 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java @@ -4,15 +4,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IcExportTemplateDao; +import com.epmet.dao.IcFormItemDao; import com.epmet.dto.IcExportTemplateDTO; import com.epmet.dto.form.IcExportTemplateFormDTO; +import com.epmet.dto.result.ConditionResultDTO; import com.epmet.dto.result.IcCustomExportResultDTO; import com.epmet.dto.result.IcExportTemplateForExportResultDTO; import com.epmet.entity.IcExportTemplateEntity; import com.epmet.service.IcExportTemplateService; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -28,11 +33,14 @@ import java.util.stream.Collectors; * @author generator generator@elink-cn.com * @since v1.0.0 2022-04-21 */ +@Slf4j @Service public class IcExportTemplateServiceImpl extends BaseServiceImpl implements IcExportTemplateService { @Autowired private IcExportTemplateDao icExportTemplateDao; + @Autowired + private IcFormItemDao icFormItemDao; @Override public PageData page(Map params) { @@ -92,21 +100,61 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl remoteItemList = icFormItemDao.getConditionRemoteItems(param.getCustomerId(), param.getFormCode()); Map> resultTemp = list.stream().collect(Collectors.groupingBy(IcExportTemplateForExportResultDTO::getPid, LinkedHashMap::new, Collectors.toList())); List> headerMap = new ArrayList<>(); - List sqlColumns = new ArrayList<>(); - resultTemp.forEach((pid, groupList) -> { + List showSqlColumns = new ArrayList<>(); + List hiddenSqlColumns = new ArrayList<>(); + Set hasExistColumnSet = new HashSet<>(); + resultTemp.get(NumConstant.ZERO_STR).forEach(root -> { List headerGroupList = new ArrayList<>(); - for (IcExportTemplateForExportResultDTO item : groupList) { - headerGroupList.add(item.getLabel()); - sqlColumns.add(new IcCustomExportResultDTO.SqlColumn(item.getTableName(), item.getColumnName())); - } + digui(resultTemp, root, headerGroupList, showSqlColumns, hiddenSqlColumns, hasExistColumnSet); headerMap.add(headerGroupList); }); + //组织 关联item项的 + if (hasExistColumnSet.size() > NumConstant.ZERO) { + Set configItemIdSet = list.stream().map(IcExportTemplateForExportResultDTO::getItemId).collect(Collectors.toSet()); + System.out.println("参数的ItemId:" + hasExistColumnSet); + System.out.println("需要显示的itemId:" + configItemIdSet); + Set conditionItemIdSet = new HashSet<>(hasExistColumnSet); + conditionItemIdSet.removeAll(configItemIdSet); + System.out.println("额外需要查询的列:" + conditionItemIdSet); + conditionItemIdSet.forEach(itemId -> { + ConditionResultDTO item = icFormItemDao.getConditionItem(itemId); + if (item == null || StringUtils.isBlank(item.getColumnName())) { + log.error("getTemplateConfigForExport item 不存在 id:{}", itemId); + return; + } + hiddenSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(item.getTableName(), item.getColumnName())); + }); + } + IcCustomExportResultDTO result = new IcCustomExportResultDTO(); result.setHeaders(headerMap); - result.setSqlColumns(sqlColumns); + result.setShowSqlColumns(showSqlColumns); + result.setHiddenSqlColumns(hiddenSqlColumns); return result; } + private void digui(Map> resultTemp, IcExportTemplateForExportResultDTO root, List headerList, List showSqlColumns, List hiddenSqlColumns, Set hasExistColumnSet) { + headerList.add(root.getLabel()); + if (StringUtils.isNotBlank(root.getColumnName())) { + showSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(root.getTableName(), root.getColumnName())); + if (StringUtils.isNotBlank(root.getOptionSourceValue())) { + String[] paramArr = root.getOptionSourceValue().split(StrConstant.QUESTION_MARK_TRANSFER)[NumConstant.ONE].split(StrConstant.AND_MARK); + System.out.println("========" + root.getOptionSourceValue()); + //先remote中再添加 然后移除item中有的 + hasExistColumnSet.addAll(Arrays.asList(paramArr)); + } + } + List children = resultTemp.get(root.getId()); + if (CollectionUtils.isEmpty(children)) { + return; + } + children.forEach(o -> { + digui(resultTemp, o, headerList, showSqlColumns, hiddenSqlColumns, hasExistColumnSet); + }); + } + } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml index 34257f84bc..325b844347 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml +++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml @@ -20,9 +20,11 @@ + +