|
|
@ -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); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|