xiejun
2023-12-04 977b4b2f4b0ce0af4d259a113f076e93053a5d96
集团码导出模板功能添加
已修改6个文件
已重命名3个文件
已添加3个文件
425 ■■■■ 文件已修改
Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/IMdmInterJtClient.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeAndGroupCodeAttrMappingDTO.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeAndGroupCodeAttrRnageDTO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/ExecGroupCodePortDataDTO.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/标准修订(跨年).json 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/标准系列修订(跨年).json 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/标准系列申请.json 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/IDockingPreAttrMappingService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/DockingPreAttrMappingServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/IMdmInterJtClient.java
@@ -2,12 +2,15 @@
import com.vci.ubcs.code.applyjtcodeservice.vo.DockingClassifyModelAttrVO;
import com.vci.ubcs.code.applyjtcodeservice.vo.DockingPreAttrMappingVO;
import com.vci.ubcs.code.applyjtcodeservice.vo.DockingReturnStoreVO;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/****
@@ -24,6 +27,7 @@
    String RETURNGROUPCODE = API_PREFIX + "/getApplyGroupCode";
    String PUBMDMMODEL = API_PREFIX + "/pubMdmModel";
    String RECEIVE_EDITAPPLY =API_PREFIX + "/receiveEditApply";
    String LIST_MAPPING=API_PREFIX + "/listMapping";
    /***
     * å°†é›†å›¢ç”³è¯·æˆåŠŸçš„ç¼–ç å­˜å…¥ç›¸å…³æ•°æ®ä¹‹ä¸­
@@ -34,6 +38,13 @@
    @GetMapping(APPLYGROUPCODE)
    public R applyGroupCode(@RequestParam("oids")String oids,@RequestParam("btmName")String btmName);
    /***
     *
     * @param codeClassifyOid
     * @return
     */
    @GetMapping(LIST_MAPPING)
    public R<List<DockingPreAttrMappingVO>> list_mapping(@RequestParam("codeClassifyOid")String codeClassifyOid);
    /***
     * é›†å›¢ç¼–码数据修改
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeAndGroupCodeAttrMappingDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.vci.ubcs.code.dto;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/***
 * é›†å›¢åŸŸå±žæ€§æ˜ å°„关系
 */
@Data
public class CodeAndGroupCodeAttrMappingDTO {
    /***
     * é»˜è®¤å€¼
     */
    private String defaultValue;
    /***
     *属性id
     */
    private String metaListId;
    /***
     * æºå±žæ€§å†…部名称
     */
    private String sourceAttrKey;
    /***
     * æºå±žæ€§åç§°
     */
    private String sourceAttrName;
    /**
     * ç›®æ ‡å±žæ€§oid
     */
    private String targetAttrId;
    /***
     * ç›®æ ‡å±žæ€§å†…部名称
     */
    private String targetAttrKey;
    /***
     * ç›®æ ‡å±žæ€§åç§°
     */
    private String targetAttrName;
    List<CodeAndGroupCodeAttrRnageDTO> codeAndGroupCodeAttrRnageDTOList;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeAndGroupCodeAttrRnageDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.vci.ubcs.code.dto;
import lombok.Data;
@Data
public class CodeAndGroupCodeAttrRnageDTO {
    /***
     *属性id
     */
    private String metaListId;
    /**
     * å±žæ€§æžšä¸¾æ˜¾ç¤ºåç§°
     */
    private  String numText;
    /**
     * å±žæ€§æžšä¸¾å†…部名称
     */
    private String numTextValue;
    /**
     * æºå±žæ€§æžšä¸¾æ˜¾ç¤ºåç§°
     */
    private  String targetNumText;
    /**
     * æºå±žæ€§æžšä¸¾å†…部名称
     */
    private String targetNumTextValue;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/ExecGroupCodePortDataDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.vci.ubcs.code.dto;
import lombok.Data;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@Data
public class ExecGroupCodePortDataDTO {
    /***
     * sheet名称
     */
    private String sheetName;
    /***
     * åŽŸå§‹å­—æ®µ
     */
    private LinkedList<String> fieldList=new LinkedList<>();
    /**
     * æ•°æ®é›†æˆ
     */
    private List<Map<String,String>> dataList=new ArrayList<>();
    /***
     * åˆ—名
     */
    private LinkedList<String> colName=new LinkedList<>();
    /***
     * é›†å›¢å±žæ€§ä¸Žç¼–码属性映射关系
     */
    private List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS=new ArrayList<>();
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/±ê×¼ÐÞ¶©(¿çÄê).json
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/±ê׼ϵÁÐÐÞ¶©£¨¿çÄ꣩.json
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/±ê׼ϵÁÐÉêÇë.json
Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java
@@ -56,8 +56,10 @@
     * é›†å›¢åˆ†ç±»ç”³è¯·å•服务
     */
    private final IDockingPreClassifyService dockingPreClassifyService;
    /***
     * å±žæ€§æ˜ å°„服务
     */
    private final IDockingPreAttrMappingService dockingPreAttrMappingService;
    /**
     * é›†å›¢å–值范围申请单服务
     */
@@ -81,6 +83,22 @@
            return R.fail("集团码申请失败:"+e.getMessage());
        }
    }
    /***
     * æŸ¥è¯¢é›†å›¢å±žæ€§æ˜ å°„
     * @param codeClassifyOid:编码分类oid
     * @return
     */
    @Override
    public R<List<DockingPreAttrMappingVO>> list_mapping(String codeClassifyOid) {
        List<DockingPreAttrMapping> dockingPreAttrMappings=    dockingPreAttrMappingService.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId,codeClassifyOid));
        List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingPreAttrMappings)){
            dockingPreAttrMappingVOList=dockingPreAttrMappingService.dockingPreAttrMappingDO2VOS(dockingPreAttrMappings,true);
        }
        return R.data(dockingPreAttrMappingVOList);
    }
    /***
     * ç”³è¯·é›†å›¢ç¼–码数据维护
     * @return
Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/IDockingPreAttrMappingService.java
@@ -8,6 +8,7 @@
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.List;
/**
@@ -51,4 +52,12 @@
     * @return
     */
    public R search(DokingAttributeSerchVO dokingAttributeSerchVO);
    /***
     * è½¬æ¢é›†å›¢å±žæ€§æ˜ å°„配置
     * @param dockingPreAttrMappings
     * @param contain æ˜¯å¦æŸ¥åŽ†å²æ•°æ®
     * @return
     */
    List<DockingPreAttrMappingVO> dockingPreAttrMappingDO2VOS(Collection<DockingPreAttrMapping> dockingPreAttrMappings, boolean contain);
}
Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/DockingPreAttrMappingServiceImpl.java
@@ -242,7 +242,8 @@
     * @param dockingPreAttrMappings
     * @return
     */
    private List<DockingPreAttrMappingVO> dockingPreAttrMappingDO2VOS(Collection<DockingPreAttrMapping> dockingPreAttrMappings,boolean contain) {
    @Override
    public List<DockingPreAttrMappingVO> dockingPreAttrMappingDO2VOS(Collection<DockingPreAttrMapping> dockingPreAttrMappings,boolean contain) {
        List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=new ArrayList<>();
            dockingPreAttrMappingVOList=DockingPreAttrMappingWrapper.build().entityVOs(dockingPreAttrMappings);
            if(CollectionUtils.isEmpty(dockingPreAttrMappingVOList)){
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -779,9 +779,9 @@
    @GetMapping("/exportGroupCodeExcel")
    @VciBusinessLog(operateName = "导出集团码")
    public void exportGroupCodeExcel(String codeClassifyOid, HttpServletResponse response) throws IOException{
        String excelName = mdmIOService.exportGroupCodeExcel(codeClassifyOid);
        try {
            ControllerUtil.writeFileToResponse(response,excelName);
            String excelName = mdmIOService.exportGroupCodeExcel(codeClassifyOid);
        } catch (Throwable e) {
            //如果出错,把错误信息写到text
            String msg = LangBaseUtil.getErrorMsg(e);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -5,12 +5,14 @@
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.protobuf.ServiceException;
import com.vci.ubcs.code.applyjtcodeservice.entity.DockingPreAttrMapping;
import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient;
import com.vci.ubcs.code.applyjtcodeservice.vo.DockingPreAttrMappingVO;
import com.vci.ubcs.code.bo.AttributeValue;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
import com.vci.ubcs.code.dto.CodeExportAttrDTO;
import com.vci.ubcs.code.dto.CodeOrderDTO;
import com.vci.ubcs.code.constant.MdmEngineConstant;
import com.vci.ubcs.code.dto.*;
import com.vci.ubcs.code.entity.CodeAllCode;
import com.vci.ubcs.code.enumpack.CodeDefaultLC;
import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
@@ -4611,106 +4613,182 @@
     */
    @Override
    public String exportGroupCodeExcel(String codeClassifyOid) {
        List<CodeClassifyTemplateVO> templateVOList=new ArrayList<>();
        VciBaseUtil.alertNotNull("导出模板","导出的配置",codeClassifyOid,"主题库分类的主键");
        CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
        //找模板
        VciBaseUtil.alertNotNull(codeClassifyOid,"主题库分类的主键");
        CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
        CodeClassifyVO codeClassifyVO= classifyFullInfo.getCurrentClassifyVO();
        //获取最新的模板
        CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid);
        templateVOList.add(templateVO);
        WriteExcelOption eo = new WriteExcelOption();
        eo.setAppend(true);
        LinkedList<String> colName=new LinkedList<>();//列头
        LinkedList<String> fieldList=new LinkedList<>();//列字段
        ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO();
        createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//组织数据
        fieldList=execGroupCodePortDataDTO.getFieldList();
        List<Map<String,String>>dataList=new ArrayList<>();
        getDatas(classifyFullInfo,templateVO,fieldList,dataList);
        execGroupCodePortDataDTO.setDataList(dataList);//放数据
        execGroupCodePortDataDTO.setSheetName(codeClassifyVO.getName()+"集团码导入模板");
        String tempFolder = LocalFileUtil.getDefaultTempFolder();
        String excelName = tempFolder + File.separator +
            classifyFullInfo.getCurrentClassifyVO().getId() + "_" + classifyFullInfo.getCurrentClassifyVO().getName() + "_集团码导出模板.xls";
        try {
            new File(excelName).createNewFile();
        } catch (Throwable e) {
            throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelName}, e);
        }
        LinkedList<String> finalFieldList = fieldList;
        Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().filter(s-> finalFieldList.contains(s.getId().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
        List<WriteExcelData> excelDataList = new ArrayList<>();
        Workbook workbook = new HSSFWorkbook();
        List<CodeAndGroupCodeAttrMappingDTO>  codeAndGroupCodeAttrMappingDTOList=    execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS();
        Map<String, CodeAndGroupCodeAttrMappingDTO> jAttrVOMap = codeAndGroupCodeAttrMappingDTOList.stream().filter(s-> finalFieldList.contains(s.getTargetAttrKey().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getTargetAttrKey().toLowerCase(Locale.ROOT), t -> t));
        WriteExcelData codeExcelData = new WriteExcelData(0, 0, "企业编码");
        WriteExcelData groupExcelData = new WriteExcelData(0, 1, "集团码");
        excelDataList.add(codeExcelData);
        excelDataList.add(groupExcelData);
        for (int i = 0; i < fieldList.size(); i++) {
            String attrId=fieldList.get(i);
            if(attrId.equals(CODE_FIELD)||attrId.equals(CODE_GROUP_FIELD)){
                continue;
            }
            if (attrVOMap.containsKey(attrId)) {
                CodeClassifyTemplateAttrVO attrVO = attrVOMap.get(attrId);
                //Object text = attrVO.getName();
                CodeAndGroupCodeAttrMappingDTO codeAttrMappingDTO = jAttrVOMap.get(attrId);
                Object text = codeAttrMappingDTO.getSourceAttrName();
                text = exportKeyAndRequired(workbook, attrVO, text);
                WriteExcelData excelData = new WriteExcelData(0, i, text);
                if (text instanceof RichTextString) {
                    excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
                }
                excelDataList.add(excelData);
            }
        }
        final Integer[] rowIndex = {0};
        dataList.stream().forEach(data -> {
            rowIndex[0]++;
            String id=data.getOrDefault("id", "");
            excelDataList.add(new WriteExcelData(rowIndex[0], 0, id));
            String groupCode=data.getOrDefault("groupcode", "");
            excelDataList.add(new WriteExcelData(rowIndex[0], 1, groupCode));
            List<String> newFieldList = finalFieldList.stream().filter(e -> !e.equals("id") &&!e.equals("groupcode")).collect(Collectors.toList());
            for (int i = 0; i < newFieldList.size(); i++) {
                String attrId = newFieldList.get(i).toLowerCase(Locale.ROOT);
                if(attrId.equals("id")){
                }else if(attrId.equals("groupcode")){
                }else{
                    if (attrVOMap.containsKey(attrId)) {
                        CodeClassifyTemplateAttrVO attrVO = attrVOMap.get(attrId);
                        if (StringUtils.isNotBlank(attrVO.getEnumId()) || StringUtils.isNotBlank(attrVO.getEnumString())) {
                            attrId = attrId + "Text";
                        }
                        if (StringUtils.isNotBlank(attrVO.getReferBtmId()) || StringUtils.isNotBlank(attrVO.getReferConfig())) {
                            attrId = attrId + "name";
                        }
                        if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(attrId)) {
                            attrId = VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT);
                        }
                        excelDataList.add(new WriteExcelData(rowIndex[0], i+2, data.getOrDefault(attrId, "")));
                    }
                }
            }
        });
        WriteExcelOption excelOption = new WriteExcelOption();
        excelOption.addSheetDataList(execGroupCodePortDataDTO.getSheetName(),excelDataList);
        //增加模板的信息导入
        LinkedList<WriteExcelData> tempEDList = new LinkedList<>();
        tempEDList.add(new WriteExcelData(0,0,"模板主键"));
        tempEDList.add(new WriteExcelData(0,1,"模板代号"));
        tempEDList.add(new WriteExcelData(0,2,"模板名称"));
        CodeClassifyTemplateVO codeClassifyTemplateVO = new CodeClassifyTemplateVO();
        BeanUtils.copyProperties(templateVO,codeClassifyTemplateVO);
        //组合格式的不导入,
        // æžšä¸¾çš„æä¾›åºåˆ—的选择
        //时间全部统一为yyyy-MM-dd HH:mm:ss
        //参照的自行输入名称
        //分类注入的不用,都是导入后自动处理的
        //编码,状态等字段不导入
        List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList=codeClassifyTemplateVO.getAttributes();
        if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrVOList)) {
            if (CollectionUtils.isEmpty(codeClassifyTemplateAttrVOList)) {
                throw new VciBaseException("模板没有配置属性");
            }
        }
        List<CodeClassifyTemplateAttrVO> templateAttrVOS = codeClassifyTemplateAttrVOList.stream().filter(s ->
            !DEFAULT_ATTR_LIST.contains(s.getId())
                && StringUtils.isBlank(s.getComponentRule())
                && StringUtils.isBlank(s.getClassifyInvokeAttr())
                && (VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
        ).collect(Collectors.toList());
        if (CollectionUtils.isEmpty(templateAttrVOS)) {
            throw new VciBaseException("模板没有配置任何【表单显示】为【是】的属性");
        }
        List<CodeClassifyTemplateAttrVO> idAttrVOList = codeClassifyTemplateVO.getAttributes().stream().filter(s -> s.getId().equalsIgnoreCase(CODE_FIELD)).collect(Collectors.toList());
        LinkedList<WriteExcelData> excelDataList = new LinkedList<>();
        Workbook workbook = new HSSFWorkbook();
        excelDataList.add(new WriteExcelData(0,0,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"企业编码",idAttrVOList.get(0).getId()));
        excelDataList.add(new WriteExcelData(0,1,"集团码",""));
        for (int i = 0; i < templateAttrVOS.size(); i++) {
            CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i);
            Object text = attrVO.getName();
            text = exportKeyAndRequired(workbook, attrVO, text);
            int colIndex = 2 + i;
            WriteExcelData excelData = new WriteExcelData(0, colIndex, text, attrVO.getId());
            if (StringUtils.isNotBlank(attrVO.getCodeDateFormat())
                || VciFieldTypeEnum.VTDateTime.name().equalsIgnoreCase(attrVO.getAttributeDataType())
                || VciFieldTypeEnum.VTDate.name().equalsIgnoreCase(attrVO.getAttributeDataType())
                || VciFieldTypeEnum.VTTime.name().equalsIgnoreCase(attrVO.getAttributeDataType())) {
                excelData.setDateFormat(VciDateUtil.DateTimeFormat);
            }
            if (text instanceof RichTextString) {
                excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
            }
            excelDataList.add(excelData);
            if (StringUtils.isNotBlank(attrVO.getEnumString()) || StringUtils.isNotBlank(attrVO.getEnumId())) {
                //添加数据有效性
                List<String> enumValueList = new ArrayList<>();
                enumValueList.add("");
                List<KeyValue> valueList = engineService.listComboboxItems(attrVO);
                if (!CollectionUtils.isEmpty(valueList)) {
                    valueList.stream().forEach(kv -> {
                        enumValueList.add(kv.getValue());
                    });
                }
                //默认加1万条
                WriteExcelData ed = new WriteExcelData(1, colIndex, "");
                ed.setRowTo(100);
                ed.setColTo(colIndex);
                ed.setValidation(true);
                ed.setValidationDataList(enumValueList);
                ed.setValidationErrorMsg("请在序列中选择正确的值");
                excelDataList.add(ed);
            }
            if (VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributeDataType())) {
                List<String> booleanList = new ArrayList<>();
                booleanList.add("是");
                booleanList.add("否");
                //默认加1万条
                WriteExcelData ed = new WriteExcelData(1, colIndex, "");
                ed.setRowTo(100);
                ed.setColTo(colIndex);
                ed.setValidation(true);
                ed.setValidationDataList(booleanList);
                ed.setValidationErrorMsg("请在序列中选择正确的值");
                excelDataList.add(ed);
            }
        }
        eo.addSheetDataList(templateVO.getName(),excelDataList);
        tempEDList.add(new WriteExcelData(1,0,templateVO.getOid()));
        tempEDList.add(new WriteExcelData(1,1,templateVO.getId()));
        tempEDList.add(new WriteExcelData(1,2,templateVO.getName()));
        String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + codeClassifyVO.getName() + "集团码_导入模板.xls";
        eo.addSheetDataList(templateVOList.size()+"模板信息【请勿删除或移动】",tempEDList);
        ExcelUtil.writeDataToFile(excelName,eo);
        excelOption.addSheetDataList("模板信息【请勿删除或移动】",tempEDList);
        ExcelUtil.writeDataToFile(excelName, excelOption);
        log.info("文件路径"+excelName);
        return excelName;
    }
    /***
     *
     */
    private void createExportGroupCodeMapConfig(CodeClassifyTemplateVO templateVO,ExecGroupCodePortDataDTO execGroupCodePortDataDTO){
        String classOid=templateVO.getCodeclassifyoid();
        String templateOid=templateVO.getOid();
        R r=mdmInterJtClient.list_mapping(classOid);
        if(r.isSuccess()){
            List<DockingPreAttrMappingVO>dockingPreAttrMappingVOList= (List<DockingPreAttrMappingVO>) r.getData();
            List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS=new ArrayList<>();
            LinkedList<String> fieldList=new LinkedList<>();
            LinkedList<String> colNameList=new LinkedList<>();
            dockingPreAttrMappingVOList.stream().forEach(dockingPreAttrMappingVO -> {
                CodeAndGroupCodeAttrMappingDTO codeAndGroupCodeAttrMappingDTO=new CodeAndGroupCodeAttrMappingDTO();
                if(StringUtils.isNotBlank(dockingPreAttrMappingVO.getTargetAttrId())){
                    codeAndGroupCodeAttrMappingDTO.setDefaultValue(dockingPreAttrMappingVO.getDefaultValue());
                    codeAndGroupCodeAttrMappingDTO.setMetaListId(dockingPreAttrMappingVO.getMetaListId());
                    codeAndGroupCodeAttrMappingDTO.setSourceAttrKey(dockingPreAttrMappingVO.getSourceAttrKey());
                    codeAndGroupCodeAttrMappingDTO.setSourceAttrName(dockingPreAttrMappingVO.getSourceAttrName());
                    codeAndGroupCodeAttrMappingDTO.setTargetAttrId(dockingPreAttrMappingVO.getTargetAttrId());
                    codeAndGroupCodeAttrMappingDTO.setTargetAttrKey(dockingPreAttrMappingVO.getTargetAttrKey());
                    codeAndGroupCodeAttrMappingDTO.setTargetAttrName(dockingPreAttrMappingVO.getTargetAttrName());
                    fieldList.add(dockingPreAttrMappingVO.getTargetAttrKey());
                    colNameList.add(dockingPreAttrMappingVO.getSourceAttrName());
                }
                codeAttrMapGroupAttrDTOS.add(codeAndGroupCodeAttrMappingDTO);
            });
            execGroupCodePortDataDTO.setCodeAttrMapGroupAttrDTOS(codeAttrMapGroupAttrDTOS);
            execGroupCodePortDataDTO.setFieldList(fieldList);
            execGroupCodePortDataDTO.setColName(colNameList);
        }
    }
    /***
     * æŸ¥è¯¢æ•°æ®
     * @param classifyFullInfo
     * @param templateVO
     */
    private void getDatas(CodeClassifyFullInfoBO classifyFullInfo,CodeClassifyTemplateVO templateVO,LinkedList<String> selectFieldList,List<Map<String,String>>dataList){
        //先查询数据
        String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmTypeId();
        String codeClassifyOid=classifyFullInfo.getCurrentClassifyVO().getOid();
        Map<String, String> conditionMap = new HashMap<>();
        if(conditionMap == null){
            conditionMap = new HashMap<>();
        }
        if(conditionMap.containsKey(VciQueryWrapperForDO.OID_FIELD)){
            conditionMap.put(VciQueryWrapperForDO.OID_FIELD,QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(conditionMap.get(VciQueryWrapperForDO.OID_FIELD)) + ")");
        }
        conditionMap.put("codeclsfpath","*" + codeClassifyOid + "*");
        conditionMap.put("groupcode_null", "null");
        conditionMap.put("lastr", "1");
        conditionMap.put("lastv", "1");
        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Arrays.asList(btmTypeId));
        String tableName = "";
        if(listR.isSuccess() && !listR.getData().isEmpty()){
            tableName = Func.isNotBlank(listR.getData().get(0).getTableName()) ? listR.getData().get(0).getTableName():VciBaseUtil.getTableName(btmTypeId);
        }else{
            tableName = VciBaseUtil.getTableName(btmTypeId);
        }
        PageHelper pageHelper = new PageHelper();
        pageHelper.setLimit(1000000);
        pageHelper.setPage(1);
        pageHelper.addDefaultDesc("createTime");
        DataGrid<Map<String, String>> dataGrid = engineService.queryGrid(btmTypeId, templateVO, conditionMap, pageHelper);
        //转换数据
        if(!CollectionUtils.isEmpty(dataGrid.getData())){
            dataList.addAll(dataGrid.getData());
        }
        //封装查询出来的数据
        engineService.wrapperData(dataList, templateVO, selectFieldList,false);
        //modify by weidy@2022-09-27
        //因为在列表和表单的显示的时候,我们的开关类型页面会处理,但是在导出的时候,我们需要将true和false都替换成中文
        engineService.wrapperBoolean(dataList,templateVO);
        log.info("导出模板的数据条目数:"+dataList.size());
    }
}