Browse Source

获取需要导出的配置 用于生成excel

dev
jianjun 3 years ago
parent
commit
55b6b9062c
  1. 3
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcExportTemplateFormDTO.java
  2. 2
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResultDTO.java
  3. 7
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java
  4. 11
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java
  5. 30
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java
  6. 62
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java
  7. 4
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml
  8. 28
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml

3
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;
/**

2
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;

7
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<SqlColumn> sqlColumns;
private List<SqlColumn> showSqlColumns;
/**
* sql中要返回的关联的列 (与显示的要去重)
*/
private List<SqlColumn> hiddenSqlColumns;
@AllArgsConstructor
@Data

11
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<IcExportTemplateForExportResultDTO> children;
private String optionSourceValue;
}

30
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java

@ -38,8 +38,10 @@ public interface IcFormItemDao extends BaseDao<IcFormItemEntity> {
List<ConditionResultDTO> selectConditionList(@Param("customerId") String customerId, @Param("formCode") String formCode);
List<ConditionResultDTO> selectConditionListByGroupId(String groupId);
/**
* 查询组件列表
*
* @param customerId
* @param formCode
* @return
@ -53,28 +55,44 @@ public interface IcFormItemDao extends BaseDao<IcFormItemEntity> {
*
* @param customerId
* @param formCode
* @return java.util.List<com.epmet.dto.result.IcFormResColumnDTO>
* @return java.util.List<com.epmet.dto.result.IcFormResColumnDTO>
* @author yinzuomei
* @date 2021/11/1 12:58 下午
*/
List<IcFormResColumnDTO> queryConditions(@Param("customerId") String customerId, @Param("formCode")String formCode);
List<IcFormResColumnDTO> queryConditions(@Param("customerId") String customerId, @Param("formCode") String formCode);
/**
* 构造出所有子表关联语句
*
* @param customerId
* @param formCode
* @return java.util.List<java.lang.String>
* @return java.util.List<java.lang.String>
* @author yinzuomei
* @date 2021/11/1 1:25 下午
*/
List<SubTableJoinDTO> querySubTables(@Param("customerId") String customerId, @Param("formCode")String formCode);
List<SubTableJoinDTO> querySubTables(@Param("customerId") String customerId, @Param("formCode") String formCode);
Set<String> queryIcResiSubTables(@Param("customerId") String customerId, @Param("formCode")String formCode);
Set<String> queryIcResiSubTables(@Param("customerId") String customerId, @Param("formCode") String formCode);
/**
* @Author sun
* @Description 居民信息新增查询各表必填字段
**/
List<ColumnTableNameResultDTO> getMustColumn(@Param("customerId")String customerId);
List<ColumnTableNameResultDTO> getMustColumn(@Param("customerId") String customerId);
/**
* desc:获取需要远程获取并带有关联item的参数的 item项
*
* @param customerId
* @param formCode
* @return
*/
List<ConditionResultDTO> getConditionRemoteItems(@Param("customerId") String customerId, @Param("formCode") String formCode);
/**
* desc:根据Id获取item对应的表名和item属性
* @param itemId
* @return
*/
ConditionResultDTO getConditionItem(@Param("itemId") String itemId);
}

62
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<IcExportTemplateDao, IcExportTemplateEntity> implements IcExportTemplateService {
@Autowired
private IcExportTemplateDao icExportTemplateDao;
@Autowired
private IcFormItemDao icFormItemDao;
@Override
public PageData<IcExportTemplateDTO> page(Map<String, Object> params) {
@ -92,21 +100,61 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
if (CollectionUtils.isEmpty(list)) {
return null;
}
//todo 删除多余的方法
// List<ConditionResultDTO> remoteItemList = icFormItemDao.getConditionRemoteItems(param.getCustomerId(), param.getFormCode());
Map<String, List<IcExportTemplateForExportResultDTO>> resultTemp = list.stream().collect(Collectors.groupingBy(IcExportTemplateForExportResultDTO::getPid, LinkedHashMap::new, Collectors.toList()));
List<List<String>> headerMap = new ArrayList<>();
List<IcCustomExportResultDTO.SqlColumn> sqlColumns = new ArrayList<>();
resultTemp.forEach((pid, groupList) -> {
List<IcCustomExportResultDTO.SqlColumn> showSqlColumns = new ArrayList<>();
List<IcCustomExportResultDTO.SqlColumn> hiddenSqlColumns = new ArrayList<>();
Set<String> hasExistColumnSet = new HashSet<>();
resultTemp.get(NumConstant.ZERO_STR).forEach(root -> {
List<String> 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<String> configItemIdSet = list.stream().map(IcExportTemplateForExportResultDTO::getItemId).collect(Collectors.toSet());
System.out.println("参数的ItemId:" + hasExistColumnSet);
System.out.println("需要显示的itemId:" + configItemIdSet);
Set<String> 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<String, List<IcExportTemplateForExportResultDTO>> resultTemp, IcExportTemplateForExportResultDTO root, List<String> headerList, List<IcCustomExportResultDTO.SqlColumn> showSqlColumns, List<IcCustomExportResultDTO.SqlColumn> hiddenSqlColumns, Set<String> 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<IcExportTemplateForExportResultDTO> children = resultTemp.get(root.getId());
if (CollectionUtils.isEmpty(children)) {
return;
}
children.forEach(o -> {
digui(resultTemp, o, headerList, showSqlColumns, hiddenSqlColumns, hasExistColumnSet);
});
}
}

4
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml

@ -20,9 +20,11 @@
</resultMap>
<select id="getTemplateConfigForExport" resultType="com.epmet.dto.result.IcExportTemplateForExportResultDTO">
SELECT
c.ID,c.TEMP_ID,c.LABEL,c.PID,c.sort,ifig.TABLE_NAME,concat(ifi.COLUMN_NAME,if(ifi.COLUMN_NUM = 0,'',ifi.COLUMN_NUM)) columnName
c.ID,c.TEMP_ID,c.LABEL,c.PID,c.sort,ifi.ID AS itemId,ifig.TABLE_NAME,concat(ifi.COLUMN_NAME,if(ifi.COLUMN_NUM = 0,'',ifi.COLUMN_NUM)) columnName,
ifi2.OPTION_SOURCE_VALUE
FROM ic_export_template_config c
LEFT JOIN ic_form_item ifi ON c.FORM_ITEM_ID = ifi.ID
LEFT JOIN ic_form_item ifi2 ON c.FORM_ITEM_ID = ifi2.ID AND ifi2.OPTION_SOURCE_TYPE ='remote' AND ifi2.OPTION_SOURCE_VALUE LIKE '%?%'
LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID
WHERE TEMP_ID = #{tempId} and c.CUSTOMER_ID = #{customerId} and c.DEL_FLAG = '0'
ORDER BY c.PID,c.SORT

28
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml

@ -224,4 +224,32 @@
)
order by g.sort asc
</select>
<select id="getConditionRemoteItems" resultType="com.epmet.dto.result.ConditionResultDTO">
SELECT
ifi.ID AS itemId,
ifi.OPTION_SOURCE_VALUE,
ifig.TABLE_NAME,
concat(ifi.COLUMN_NAME, if(ifi.COLUMN_NUM = 0, '', ifi.COLUMN_NUM)) columnName
FROM ic_form_item ifi LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID
WHERE
ifi.OPTION_SOURCE_TYPE = 'remote'
AND ifi.OPTION_SOURCE_VALUE like '%?%'
AND ifi.CUSTOMER_ID = #{customerId}
AND ifi.FORM_CODE = #{formCode}
and ifi.DEL_FLAG = '0'
AND ifig.DEL_FLAG = '0'
</select>
<select id="getConditionItem" resultType="com.epmet.dto.result.ConditionResultDTO">
SELECT
ifi.ID AS itemId,
ifig.TABLE_NAME,
CONCAT(ifi.COLUMN_NAME, if(ifi.COLUMN_NUM = 0, '', ifi.COLUMN_NUM)) columnName
FROM
ic_form_item ifi
LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID
WHERE
ifi.ID= #{itemId}
and ifi.DEL_FLAG = '0'
AND ifig.DEL_FLAG = '0'
</select>
</mapper>

Loading…
Cancel
Save