栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[Java] easyExcel导入组织结构精选

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Java] easyExcel导入组织结构精选

模板

 表结构

HSGD_base_GROUP_import_RECORD

 HSGD_base_GROUP_import_COMPLETION

HSGD_base_GROUP_NOT_import_RECORD

 代码

package com.zhgd.base.controller.api;

import com.zhgd.base.service.IZhgdSrbaseGroupimportService;
import com.zhgd.common.util.JsonUtil;
import com.zhgd.common.web.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.util.List;


@RestController
@Api(tags = "Zhgd Sr base Group import Controller")
@RequestMapping(value = "/api/srbaseGroupimport")
@Slf4j
public class ApiZhgdSrbaseGroupimportController {

    @Resource
    private IZhgdSrbaseGroupimportService iZhgdSrbaseGroupimportService;


    @ApiOperation(value = "掌柜组织改版导入组织接口-V2版本", response = String.class, notes = "import base Group V2")
    @PostMapping(value = "/11201/v2/importbaseGroup")
    public ResponseResult> importbaseGroupV2(@RequestParam("importFile") MultipartFile importFile){
        String importFileName1 = importFile != null ? importFile.getOriginalFilename() : "--";
        log.info("[掌柜组织改版]导入部门组织,导入文件名:{}",importFileName1);
        ResponseResult> result = new ResponseResult<>();
        result.setData(iZhgdSrbaseGroupimportService.importbaseGroupProcessV2(importFile));
        log.info("[掌柜组织改版]导入部门组织,导入文件名:{}", JsonUtil.toJSonString(result));
        return result;
    }

}
public interface IZhgdSrbaseGroupimportService {

    void batchInsertAll(List recordList);

    List importbaseGroupProcess(MultipartFile importFile);

    void insert(HsgdbaseGroupimportRecord record);

    HsgdbaseGroupSimpleVO getGroupSimpleByGroupNameAndLevel(String levelGroupName, Integer groupLevel);

    HsgdbaseGroupSimpleVO getGroupSimpleByGroupNameAndParentIdAndLevel(String levelGroupName, Long groupId, Integer groupLevel);

    List importbaseGroupProcessV2(MultipartFile importFile);

    HsgdbaseGroupSimpleVO getGroupSimpleByGroupNameAndLevelAndParentId(String levelGroupName, Integer groupLevel,Long parentId);
}
package com.zhgd.base.service.impl;

import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.zhgd.base.domain.model.ZhgdSrGroupimportModel;
import com.zhgd.base.domain.vo.HsgdbaseGroupSimpleVO;
import com.zhgd.base.entity.*;
import com.zhgd.base.enums.HsgdbaseGroupLevelEnum;
import com.zhgd.base.listener.ZhgdSrbaseGroupimportExcelListener;
import com.zhgd.base.mapper.*;
import com.zhgd.base.service.IHsgdbaseGroupNotimportRecordService;
import com.zhgd.base.service.IZhgdSrbaseGroupimportHandleService;
import com.zhgd.base.service.IZhgdSrbaseGroupimportService;
import com.zhgd.common.util.JsonUtil;
import com.zhgd.common.util.UUIDUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;

@Service
@Slf4j
public class ZhgdSrbaseGroupimportServiceImpl implements IZhgdSrbaseGroupimportService {

    private final String SYSTEM_USER_NAME = "system";

    @Resource
    private IZhgdSrbaseGroupimportHandleService iZhgdSrbaseGroupimportHandleService;
    @Resource
    private HsgdbaseGroupimportRecordMapper hsgdbaseGroupimportRecordMapper;
    @Resource
    private HsgdbaseGroupMapper hsgdbaseGroupMapper;
    @Resource
    private HsgdbaseGroupInfoMapper hsgdbaseGroupInfoMapper;
    @Resource
    private HsgdbaseGroupLabelDictMapper hsgdbaseGroupLabelDictMapper;
    @Resource
    private HsgdbaseGroupLabelMapper hsgdbaseGroupLabelMapper;
    @Resource
    private HsgdbaseGroupRegionMapper hsgdbaseGroupRegionMapper;
    @Resource
    private CrmRegionMapper crmRegionMapper;
    @Resource
    private HsgdbaseGroupimportCompletionMapper hsgdbaseGroupimportCompletionMapper;
    @Resource
    private IHsgdbaseGroupNotimportRecordService iHsgdbaseGroupNotimportRecordService;

    
    @Override
    public List importbaseGroupProcess(MultipartFile importFile) {
        List importResultList = new ArrayList<>();
        try {
            String batchNo = UUIDUtils.getUUID();
            // 1、导入数据
            ZhgdSrbaseGroupimportExcelListener listener = new ZhgdSrbaseGroupimportExcelListener(iZhgdSrbaseGroupimportHandleService, batchNo);
            EasyExcel.read(importFile.getInputStream(), ZhgdSrGroupimportModel.class, listener).sheet(0).doRead();
            // 2、文件校验(待处理)
            // 3、组织数据
            int totalRecord = this.organizeAndSavebaseGroupCompletionData(batchNo);
            this.savebaseGroupData(batchNo,totalRecord);
        } catch (Exception e) {
            log.info("组织改版组织导入异常", e);
            importResultList.add("导入异常!" + e.getMessage());
            return importResultList;
        }
        importResultList.add("导入成功!");
        return importResultList;
    }

    private int organizeAndSavebaseGroupCompletionData(String batchNo) {
        int importDataTotal = hsgdbaseGroupimportRecordMapper.countimportbaseGroupDataTotalByBatchNo(batchNo);
        if (importDataTotal > 0) {
            // 每页记录数
            int pageSize = 500, startPage = 1;
            // 总页数
            int totalPage = importDataTotal % pageSize == 0 ? (importDataTotal / pageSize) : (importDataTotal / pageSize + 1);
            String grouponeLevel = "";
            String groupTwoLevel = "";
            String groupThreeLevel = "";
            String groupFourLevel = "";
            String groupFiveLevel = "";
            String groupSixLevel = "";
            String groupSevenLevel = "";

            for (int pageN = 0; pageN < totalPage; pageN++) {
                PageHelper.startPage(startPage + pageN, pageSize, false);
                List list = hsgdbaseGroupimportRecordMapper.selectListByBatchNo(batchNo);
                if (CollectionUtils.isNotEmpty(list)) {
                    List completionList = new ArrayList<>();
                    HsgdbaseGroupimportCompletion completion;

                    for (int i = 0, listSize = list.size(); i < listSize; i++) {
                        HsgdbaseGroupimportRecord record = list.get(i);
                        completion = new HsgdbaseGroupimportCompletion();

                        if (StringUtils.isNotBlank(record.getLeveloneGroup())) {
                            grouponeLevel = record.getLeveloneGroup();
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.ONE.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelTwoGroup())) {
                            groupTwoLevel = record.getLevelTwoGroup();
                            record.setLeveloneGroup(groupOneLevel);
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.TWO.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelThreeGroup())) {
                            groupThreeLevel = record.getLevelThreeGroup();
                            record.setLeveloneGroup(groupOneLevel);
                            record.setLevelTwoGroup(groupTwoLevel);
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.THREE.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelFourGroup())) {
                            groupFourLevel = record.getLevelFourGroup();
                            record.setLeveloneGroup(groupOneLevel);
                            record.setLevelTwoGroup(groupTwoLevel);
                            record.setLevelThreeGroup(groupThreeLevel);
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.FOUR.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelFiveGroup())) {
                            groupFiveLevel = record.getLevelFiveGroup();
                            record.setLeveloneGroup(groupOneLevel);
                            record.setLevelTwoGroup(groupTwoLevel);
                            record.setLevelThreeGroup(groupThreeLevel);
                            record.setLevelFourGroup(groupFourLevel);
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.FIVE.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelSixGroup())) {
                            groupSixLevel = record.getLevelSixGroup();
                            record.setLeveloneGroup(groupOneLevel);
                            record.setLevelTwoGroup(groupTwoLevel);
                            record.setLevelThreeGroup(groupThreeLevel);
                            record.setLevelFourGroup(groupFourLevel);
                            record.setLevelFiveGroup(groupFiveLevel);
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.SIX.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelSevenGroup())) {
                            groupSevenLevel = record.getLevelSevenGroup();
                            record.setLeveloneGroup(groupOneLevel);
                            record.setLevelTwoGroup(groupTwoLevel);
                            record.setLevelThreeGroup(groupThreeLevel);
                            record.setLevelFourGroup(groupFourLevel);
                            record.setLevelFiveGroup(groupFiveLevel);
                            record.setLevelSixGroup(groupSixLevel);
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.SEVEN.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelEightGroup())) {
                            record.setLeveloneGroup(groupOneLevel);
                            record.setLevelTwoGroup(groupTwoLevel);
                            record.setLevelThreeGroup(groupThreeLevel);
                            record.setLevelFourGroup(groupFourLevel);
                            record.setLevelFiveGroup(groupFiveLevel);
                            record.setLevelSixGroup(groupSixLevel);
                            record.setLevelSevenGroup(groupSevenLevel);
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.EIGHT.getGroupLevel());
                        }

                        BeanUtils.copyProperties(record, completion);
                        completionList.add(completion);
                    }

                    iZhgdSrbaseGroupimportHandleService.insertAllimportCompletion(completionList);
                }
            }
        }

        return importDataTotal;
    }

    private void savebaseGroupData(String batchNo,int totalRecord ) {
        if(totalRecord > 0) {
            // 每页记录数
            int pageSize = 500, startPage = 1;
            // 总页数
            int totalPage = totalRecord % pageSize == 0 ? (totalRecord / pageSize) : (totalRecord / pageSize + 1);
            Date nowDate = new Date();
            Long parentId ;

            Map grouponeLevelMap = new HashMap<>();
            Map groupTwoLevelMap = new HashMap<>();
            Map groupThreeLevelMap = new HashMap<>();
            Map groupFourLevelMap = new HashMap<>();
            Map groupFiveLevelMap = new HashMap<>();
            Map groupSixLevelMap = new HashMap<>();
            Map groupSevenLevelMap = new HashMap<>();
            Map groupEightLevelMap = new HashMap<>();

            Map labelMap = this.getGroupLabelMap();
            Map regionMap = new HashMap<>();

            for (int pageN = 0; pageN < totalPage; pageN++) {
                PageHelper.startPage(startPage + pageN, pageSize, false);

                List importCompletionList = hsgdbaseGroupimportCompletionMapper.selectListByBatchNo(batchNo);

                if(CollectionUtils.isNotEmpty(importCompletionList)){
                    List  errorRecordList = new ArrayList<>();
                    HsgdbaseGroupNotimportRecord notimportRecord;
                    this.getPageAllRegionToRegionMap(regionMap,importCompletionList);

                    for (HsgdbaseGroupimportCompletion completionVO : importCompletionList){

                        try {
                            if (HsgdbaseGroupLevelEnum.ONE.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                if (groupOneLevelMap.get(completionVO.getLeveloneGroup()) == null) {
                                    HsgdbaseGroupSimpleVO simpleoneVO = this.getGroupSimpleByGroupNameAndLevel(completionVO.getLeveloneGroup(), completionVO.getGroupLevel());
                                    if (simpleoneVO != null) {
                                        groupOneLevelMap.put(completionVO.getLeveloneGroup(), simpleOneVO);
                                    } else {
                                        simpleoneVO = this.generatorGroupLevel(completionVO, nowDate, labelMap, regionMap, 0L);
                                        groupOneLevelMap.put(completionVO.getLeveloneGroup(), simpleOneVO);
                                    }
                                }
                            } else if (HsgdbaseGroupLevelEnum.TWO.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                HsgdbaseGroupSimpleVO oneSiVO = groupOneLevelMap.get(completionVO.getLeveloneGroup());
                                parentId = oneSiVO.getGroupId();
                                if (groupTwoLevelMap.get(completionVO.getLevelTwoGroup()) == null) {
                                    HsgdbaseGroupSimpleVO simpleTwoVO = this.getGroupSimpleByGroupNameAndLevel(completionVO.getLevelTwoGroup(), completionVO.getGroupLevel());
                                    if (simpleTwoVO != null) {
                                        groupTwoLevelMap.put(completionVO.getLevelTwoGroup(), simpleTwoVO);
                                    } else {
                                        simpleTwoVO = this.generatorGroupLevel(completionVO, nowDate, labelMap, regionMap, parentId);
                                        groupTwoLevelMap.put(completionVO.getLevelTwoGroup(), simpleTwoVO);
                                    }
                                }
                            } else if (HsgdbaseGroupLevelEnum.THREE.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                HsgdbaseGroupSimpleVO twoSiVO = groupTwoLevelMap.get(completionVO.getLevelTwoGroup());
                                parentId = twoSiVO.getGroupId();
                                if (groupThreeLevelMap.get(completionVO.getLevelThreeGroup()) == null) {
                                    HsgdbaseGroupSimpleVO simpleThreeVO = this.getGroupSimpleByGroupNameAndLevel(completionVO.getLevelThreeGroup(), completionVO.getGroupLevel());
                                    if (simpleThreeVO != null) {
                                        groupThreeLevelMap.put(completionVO.getLevelThreeGroup(), simpleThreeVO);
                                    } else {
                                        simpleThreeVO = this.generatorGroupLevel(completionVO, nowDate, labelMap, regionMap, parentId);
                                        groupThreeLevelMap.put(completionVO.getLevelThreeGroup(), simpleThreeVO);
                                    }
                                }
                            } else if (HsgdbaseGroupLevelEnum.FOUR.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                HsgdbaseGroupSimpleVO threeSiVO = groupThreeLevelMap.get(completionVO.getLevelThreeGroup());
                                parentId = threeSiVO.getGroupId();
                                if (groupFourLevelMap.get(completionVO.getLevelFourGroup()) == null) {
                                    HsgdbaseGroupSimpleVO simplefourVO = this.getGroupSimpleByGroupNameAndLevel(completionVO.getLevelFourGroup(), completionVO.getGroupLevel());
                                    if (simplefourVO != null) {
                                        groupFourLevelMap.put(completionVO.getLevelFourGroup(), simplefourVO);
                                    } else {
                                        simplefourVO = this.generatorGroupLevel(completionVO, nowDate, labelMap, regionMap, parentId);
                                        groupFourLevelMap.put(completionVO.getLevelFourGroup(), simplefourVO);
                                    }
                                }
                            } else if (HsgdbaseGroupLevelEnum.FIVE.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                HsgdbaseGroupSimpleVO fourSiVO = groupFourLevelMap.get(completionVO.getLevelFourGroup());
                                parentId = fourSiVO.getGroupId();
                                String fiveKey = completionVO.getLevelFourGroup() + "-" + completionVO.getLevelFiveGroup();
                                if (groupFiveLevelMap.get(fiveKey) == null) {
                                    HsgdbaseGroupSimpleVO simplefourVO = this.getGroupSimpleByGroupNameAndParentIdAndLevel(completionVO.getLevelFiveGroup(), parentId, completionVO.getGroupLevel());
                                    if (simplefourVO != null) {
                                        groupFiveLevelMap.put(fiveKey, simplefourVO);
                                    } else {
                                        simplefourVO = this.generatorGroupLevel(completionVO, nowDate, labelMap, regionMap, parentId);
                                        groupFiveLevelMap.put(fiveKey, simplefourVO);
                                    }
                                }
                            } else if (HsgdbaseGroupLevelEnum.SIX.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                HsgdbaseGroupSimpleVO fiveSiVO = groupFiveLevelMap.get(completionVO.getLevelFourGroup() + "-" + completionVO.getLevelFiveGroup());
                                parentId = fiveSiVO.getGroupId();
                                String sixKey = completionVO.getLevelFiveGroup() + "-" + completionVO.getLevelSixGroup();
                                if (groupSixLevelMap.get(sixKey) == null) {
                                    HsgdbaseGroupSimpleVO simplefourVO = this.getGroupSimpleByGroupNameAndParentIdAndLevel(completionVO.getLevelSixGroup(), parentId, completionVO.getGroupLevel());
                                    if (simplefourVO != null) {
                                        groupSixLevelMap.put(sixKey, simplefourVO);
                                    } else {
                                        simplefourVO = this.generatorGroupLevel(completionVO, nowDate, labelMap, regionMap, parentId);
                                        groupSixLevelMap.put(sixKey, simplefourVO);
                                    }
                                }
                            } else if (HsgdbaseGroupLevelEnum.SEVEN.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                HsgdbaseGroupSimpleVO sixSiVO = groupSixLevelMap.get(completionVO.getLevelFiveGroup() + "-" + completionVO.getLevelSixGroup());
                                parentId = sixSiVO.getGroupId();
                                String sevenKey = completionVO.getLevelSixGroup() + "-" + completionVO.getLevelSevenGroup();
                                if (groupSevenLevelMap.get(sevenKey) == null) {
                                    HsgdbaseGroupSimpleVO simplefourVO = this.getGroupSimpleByGroupNameAndParentIdAndLevel(completionVO.getLevelSixGroup(), parentId, completionVO.getGroupLevel());
                                    if (simplefourVO != null) {
                                        groupSevenLevelMap.put(sevenKey, simplefourVO);
                                    } else {
                                        simplefourVO = this.generatorGroupLevel(completionVO, nowDate, labelMap, regionMap, parentId);
                                        groupSevenLevelMap.put(sevenKey, simplefourVO);
                                    }
                                }
                            } else if (HsgdbaseGroupLevelEnum.EIGHT.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                HsgdbaseGroupSimpleVO sevenSiVO = groupSevenLevelMap.get(completionVO.getLevelSixGroup() + "-" + completionVO.getLevelSevenGroup());
                                parentId = sevenSiVO.getGroupId();
                                String eightKey = completionVO.getLevelSevenGroup() + "-" + completionVO.getLevelEightGroup();
                                if (groupEightLevelMap.get(eightKey) == null) {
                                    HsgdbaseGroupSimpleVO simplefourVO = this.getGroupSimpleByGroupNameAndParentIdAndLevel(completionVO.getLevelEightGroup(), sevenSiVO.getGroupId(), completionVO.getGroupLevel());
                                    if (simplefourVO != null) {
                                        groupEightLevelMap.put(eightKey, simplefourVO);
                                    } else {
                                        simplefourVO = this.generatorGroupLevel(completionVO, nowDate, labelMap, regionMap, parentId);
                                        groupEightLevelMap.put(eightKey, simplefourVO);
                                    }
                                }
                            }

                        } catch (Exception e) {
                            log.info("组织{}导入失败", JsonUtil.toJSonString(completionVO));
                            log.info("组织"+JsonUtil.toJSonString(completionVO)+"导入失败",e);

                            notimportRecord = new HsgdbaseGroupNotimportRecord();
                            BeanUtils.copyProperties(completionVO,notimportRecord);
                            errorRecordList.add(notimportRecord);
                        }
                    }

                    if(CollectionUtils.isNotEmpty(errorRecordList)){
                        iHsgdbaseGroupNotimportRecordService.saveBatch(errorRecordList);
                    }
                }
            }
        }
    }


    @Override
    public List importbaseGroupProcessV2(MultipartFile importFile) {
        List importResultList = new ArrayList<>();
        try {
            // 批次号
            String batchNo = UUIDUtils.getUUID();
            // 1、导入数据
            ZhgdSrbaseGroupimportExcelListener listener = new ZhgdSrbaseGroupimportExcelListener(iZhgdSrbaseGroupimportHandleService, batchNo);
            EasyExcel.read(importFile.getInputStream(), ZhgdSrGroupimportModel.class, listener).sheet(0).doRead();
            // 2、组织整理数据
            int totalRecord = this.organizeAndSavebaseGroupCompletionDataV2(batchNo);
            // 3、保存组织数据
            this.savebaseGroupDataV2(batchNo,totalRecord);
        } catch (Exception e) {
            log.info("组织改版组织导入异常", e);
            importResultList.add("导入异常 :" + e.getMessage());
            return importResultList;
        }

        importResultList.add("执行完成,请检查是否全部导入成功!");
        return importResultList;
    }


    private int organizeAndSavebaseGroupCompletionDataV2(String batchNo) {
        int importDataTotal = hsgdbaseGroupimportRecordMapper.countimportbaseGroupDataTotalByBatchNo(batchNo);
        if (importDataTotal > 0) {
            // 每页记录数,起始页
            int pageSize = 120, startPage = 1;
            // 总页数
            int totalPage = importDataTotal % pageSize == 0 ? (importDataTotal / pageSize) : (importDataTotal / pageSize + 1);
            String grouponeLevel = "";
            String groupTwoLevel = "";
            String groupThreeLevel = "";
            String groupFourLevel = "";
            String groupFiveLevel = "";
            String groupSixLevel = "";
            String groupSevenLevel = "";
            String groupEightLevel = "";
            String  groupRecordRe = "";
            int grouponeSort = 0;
            int groupTwoSort = 0;
            int groupThreeSort = 0;
            int groupFourSort = 0;
            int groupFiveSort = 0;
            int groupSixSort = 0;
            int groupSevenSort = 0;
            int groupEightSort = 0;

            for (int pageN = 0; pageN < totalPage; pageN++) {

                PageHelper.startPage(startPage + pageN, pageSize, false);
                List list = hsgdbaseGroupimportRecordMapper.selectListByBatchNo(batchNo);

                if (CollectionUtils.isNotEmpty(list)) {
                    List completionList = new ArrayList<>();
                    HsgdbaseGroupimportCompletion completion;

                    for (int i = 0, listSize = list.size(); i < listSize; i++) {
                        HsgdbaseGroupimportRecord record = list.get(i);
                        completion = new HsgdbaseGroupimportCompletion();
                        BeanUtils.copyProperties(record, completion);

                        if (StringUtils.isNotBlank(record.getLeveloneGroup())) {
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.ONE.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelTwoGroup())) {
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.TWO.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelThreeGroup())) {
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.THREE.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelFourGroup())) {
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.FOUR.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelFiveGroup())) {
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.FIVE.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelSixGroup())) {
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.SIX.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelSevenGroup())) {
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.SEVEN.getGroupLevel());
                        }

                        if (StringUtils.isNotBlank(record.getLevelEightGroup())) {
                            completion.setGroupLevel(HsgdbaseGroupLevelEnum.EIGHT.getGroupLevel());
                        }

                        if (HsgdbaseGroupLevelEnum.ONE.getGroupLevel().equals(completion.getGroupLevel())) {
                            groupRecordRe = completion.getLeveloneGroup();
                            if (! groupOneLevel.equals(groupRecordRe)) {
                                grouponeSort = grouponeSort + 1;
                                grouponeLevel = groupRecordRe;
                                groupTwoSort = 0;
                                groupThreeSort = 0;
                                groupFourSort = 0;
                                groupFiveSort = 0;
                                groupSixSort = 0;
                                groupSevenSort = 0;
                                groupEightSort = 0;
                                completion.setGroupSort(groupOneSort);
                            }else{
                                completion.setGroupSort(groupOneSort);
                            }
                        }
                        else if (HsgdbaseGroupLevelEnum.TWO.getGroupLevel().equals(completion.getGroupLevel())) {
                            groupRecordRe = completion.getLevelTwoGroup();
                            if (! groupTwoLevel.equals(groupRecordRe)) {
                                groupTwoSort = groupTwoSort + 1;
                                groupTwoLevel = groupRecordRe;
                                groupThreeSort = 0;
                                groupFourSort = 0;
                                groupFiveSort = 0;
                                groupSixSort = 0;
                                groupSevenSort = 0;
                                groupEightSort = 0;
                                completion.setGroupSort(groupTwoSort);
                            }else{
                                completion.setGroupSort(groupTwoSort);
                            }
                        }
                        else if (HsgdbaseGroupLevelEnum.THREE.getGroupLevel().equals(completion.getGroupLevel())) {
                            groupRecordRe = completion.getLevelThreeGroup();
                            if (! groupThreeLevel.equals(groupRecordRe)) {
                                groupThreeSort = groupThreeSort + 1;
                                groupThreeLevel = groupRecordRe;
                                groupFourSort = 0;
                                groupFiveSort = 0;
                                groupSixSort = 0;
                                groupSevenSort = 0;
                                groupEightSort = 0;
                                completion.setGroupSort(groupThreeSort);
                            }else{
                                completion.setGroupSort(groupThreeSort);
                            }
                        }
                        else if (HsgdbaseGroupLevelEnum.FOUR.getGroupLevel().equals(completion.getGroupLevel())) {
                            groupRecordRe = completion.getLevelFourGroup();
                            if (! groupFourLevel.equals(groupRecordRe)) {
                                groupFourSort = groupFourSort + 1;
                                groupFourLevel = groupRecordRe;
                                groupFiveSort = 0;
                                groupSixSort = 0;
                                groupSevenSort = 0;
                                groupEightSort = 0;
                                completion.setGroupSort(groupFourSort);
                            }else{
                                completion.setGroupSort(groupFourSort);
                            }
                        }
                        else if (HsgdbaseGroupLevelEnum.FIVE.getGroupLevel().equals(completion.getGroupLevel())) {
                            groupRecordRe = completion.getLevelFiveGroup();
                            if (! groupFiveLevel.equals(groupRecordRe)) {
                                groupFiveSort = groupFiveSort + 1;
                                groupFiveLevel = groupRecordRe;
                                groupSixSort = 0;
                                groupSevenSort = 0;
                                groupEightSort = 0;
                                completion.setGroupSort(groupFiveSort);
                            }else{
                                completion.setGroupSort(groupFiveSort);
                            }
                        }
                        else if (HsgdbaseGroupLevelEnum.SIX.getGroupLevel().equals(completion.getGroupLevel())) {
                            groupRecordRe = completion.getLevelSixGroup();
                            if (! groupSixLevel.equals(groupRecordRe)) {
                                groupSixSort = groupSixSort + 1;
                                groupSixLevel = groupRecordRe;
                                groupSevenSort = 0;
                                groupEightSort = 0;
                                completion.setGroupSort(groupSixSort);
                            }else{
                                completion.setGroupSort(groupSixSort);
                            }
                        }
                        else if (HsgdbaseGroupLevelEnum.SEVEN.getGroupLevel().equals(completion.getGroupLevel())) {
                            groupRecordRe = completion.getLevelSevenGroup();
                            if (! groupSevenLevel.equals(groupRecordRe)) {
                                groupSevenSort = groupSevenSort + 1;
                                groupSevenLevel = groupRecordRe;
                                groupEightSort = 0;
                                completion.setGroupSort(groupSevenSort);
                            }else{
                                completion.setGroupSort(groupSevenSort);
                            }
                        }
                        else if (HsgdbaseGroupLevelEnum.EIGHT.getGroupLevel().equals(completion.getGroupLevel())) {
                            groupRecordRe = completion.getLevelEightGroup();
                            if (! groupEightLevel.equals(groupRecordRe)) {
                                groupEightSort = groupEightSort + 1;
                                groupEightLevel = groupRecordRe;
                                completion.setGroupSort(groupEightSort);
                            }else{
                                completion.setGroupSort(groupEightSort);
                            }
                        }

                        completionList.add(completion);
                    }
                    iZhgdSrbaseGroupimportHandleService.insertAllimportCompletion(completionList);
                }
            }
        }

        return importDataTotal;
    }


    private void savebaseGroupDataV2(String batchNo, int totalRecord) {
        if(totalRecord > 0) {
            int pageSize = 120, startPage = 1;
            int totalPage = totalRecord % pageSize == 0 ? (totalRecord / pageSize) : (totalRecord / pageSize + 1);
            Date nowDate = new Date();
            Long parentId;
            String oneMapKey, twoMapKey, threeMapKey, fourMapKey, fiveMapKey, sixMapKey, sevenMapKey, eightMapKey;

            Map regionMap = new HashMap<>();
            Map labelMap = this.getGroupLabelMap();
            Map grouponeLevelMap = new HashMap<>();
            Map groupTwoLevelMap = new HashMap<>();
            Map groupThreeLevelMap = new HashMap<>();
            Map groupFourLevelMap = new HashMap<>();
            Map groupFiveLevelMap = new HashMap<>();
            Map groupSixLevelMap = new HashMap<>();
            Map groupSevenLevelMap = new HashMap<>();
            Map groupEightLevelMap = new HashMap<>();

            for (int pageN = 0; pageN < totalPage; pageN++) {
                PageHelper.startPage(startPage + pageN, pageSize, false);
                List importCompletionList = hsgdbaseGroupimportCompletionMapper.selectListByBatchNoV2(batchNo);
                if(CollectionUtils.isNotEmpty(importCompletionList)){

                    List  errorRecordList = new ArrayList<>();
                    HsgdbaseGroupNotimportRecord notimportRecord;
                    this.getPageAllRegionToRegionMap(regionMap,importCompletionList);

                    for (HsgdbaseGroupimportCompletion completionVO : importCompletionList) {

                        try {
                            // 一级部门
                            if (HsgdbaseGroupLevelEnum.ONE.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                oneMapKey = completionVO.getLeveloneGroup();
                                if (groupOneLevelMap.get(oneMapKey) == null) {
                                    this.handleoneLevelGroup(nowDate, regionMap, groupOneLevelMap, labelMap, oneMapKey, completionVO);
                                }
                            }
                            else if (HsgdbaseGroupLevelEnum.TWO.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                oneMapKey = completionVO.getLeveloneGroup();
                                twoMapKey = completionVO.getLevelTwoGroup();
                                if (groupOneLevelMap.get(oneMapKey) == null) {
                                    this.handleoneLevelGroup(nowDate, regionMap, groupOneLevelMap, labelMap, oneMapKey, completionVO);
                                }
                                if (groupTwoLevelMap.get(twoMapKey) == null) {
                                    parentId = groupOneLevelMap.get(oneMapKey).getGroupId();
                                    this.handleTwoLevelGroup(parentId, nowDate, regionMap, groupTwoLevelMap, labelMap, twoMapKey, completionVO);
                                }

                            }
                            else if (HsgdbaseGroupLevelEnum.THREE.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                oneMapKey = completionVO.getLeveloneGroup();
                                twoMapKey = completionVO.getLevelTwoGroup();
                                threeMapKey = completionVO.getLevelThreeGroup();

                                if (groupOneLevelMap.get(oneMapKey) == null) {
                                    this.handleoneLevelGroup(nowDate, regionMap, groupOneLevelMap, labelMap, oneMapKey, completionVO);
                                }
                                if(groupTwoLevelMap.get(twoMapKey) == null){
                                    parentId = groupOneLevelMap.get(oneMapKey).getGroupId();
                                    this.handleTwoLevelGroup(parentId, nowDate, regionMap, groupTwoLevelMap, labelMap, twoMapKey, completionVO);
                                }
                                if (groupThreeLevelMap.get(threeMapKey) == null) {
                                    parentId = groupTwoLevelMap.get(twoMapKey).getGroupId();
                                    this.handleThreeLevelGroup(parentId, nowDate, regionMap, groupThreeLevelMap, labelMap, threeMapKey, completionVO);
                                }

                            }
                            else if (HsgdbaseGroupLevelEnum.FOUR.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                oneMapKey = completionVO.getLeveloneGroup();
                                twoMapKey = completionVO.getLevelTwoGroup();
                                threeMapKey = completionVO.getLevelThreeGroup();
                                fourMapKey = completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup();

                                if (groupOneLevelMap.get(oneMapKey) == null) {
                                    this.handleoneLevelGroup(nowDate, regionMap, groupOneLevelMap, labelMap, oneMapKey, completionVO);
                                }
                                if(groupTwoLevelMap.get(twoMapKey) == null){
                                    parentId = groupOneLevelMap.get(oneMapKey).getGroupId();
                                    this.handleTwoLevelGroup(parentId, nowDate, regionMap, groupTwoLevelMap, labelMap, twoMapKey, completionVO);
                                }
                                if (groupThreeLevelMap.get(threeMapKey) == null) {
                                    parentId = groupTwoLevelMap.get(twoMapKey).getGroupId();
                                    this.handleThreeLevelGroup(parentId, nowDate, regionMap, groupThreeLevelMap, labelMap, threeMapKey, completionVO);
                                }
                                if(groupFourLevelMap.get(fourMapKey) == null){
                                    parentId = groupThreeLevelMap.get(threeMapKey).getGroupId();
                                    this.handleFourLevelGroup(parentId, nowDate, regionMap, groupFourLevelMap, labelMap, fourMapKey, completionVO);
                                }

                            }
                            else if (HsgdbaseGroupLevelEnum.FIVE.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                oneMapKey = completionVO.getLeveloneGroup();
                                twoMapKey = completionVO.getLevelTwoGroup();
                                threeMapKey = completionVO.getLevelThreeGroup();
                                fourMapKey = completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup();
                                fiveMapKey = completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup() + "-" + completionVO.getLevelFiveGroup();

                                if (groupOneLevelMap.get(oneMapKey) == null) {
                                    this.handleoneLevelGroup(nowDate, regionMap, groupOneLevelMap, labelMap, oneMapKey, completionVO);
                                }
                                if(groupTwoLevelMap.get(twoMapKey) == null){
                                    parentId = groupOneLevelMap.get(oneMapKey).getGroupId();
                                    this.handleTwoLevelGroup(parentId, nowDate, regionMap, groupTwoLevelMap, labelMap, twoMapKey, completionVO);
                                }
                                if (groupThreeLevelMap.get(threeMapKey) == null) {
                                    parentId = groupTwoLevelMap.get(twoMapKey).getGroupId();
                                    this.handleThreeLevelGroup(parentId, nowDate, regionMap, groupThreeLevelMap, labelMap, threeMapKey, completionVO);
                                }
                                if(groupFourLevelMap.get(fourMapKey) == null){
                                    parentId = groupThreeLevelMap.get(threeMapKey).getGroupId();
                                    this.handleFourLevelGroup(parentId, nowDate, regionMap, groupFourLevelMap, labelMap, fourMapKey, completionVO);
                                }

                                if(groupFiveLevelMap.get(fiveMapKey) == null){
                                    parentId = groupFourLevelMap.get(fourMapKey).getGroupId();
                                    this.handleFiveLevelGroup(parentId, nowDate, regionMap, groupFiveLevelMap, labelMap, fiveMapKey, completionVO);
                                }

                            }
                            else if (HsgdbaseGroupLevelEnum.SIX.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                oneMapKey = completionVO.getLeveloneGroup();
                                twoMapKey = completionVO.getLevelTwoGroup();
                                threeMapKey = completionVO.getLevelThreeGroup();
                                fourMapKey = completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup();
                                fiveMapKey = completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup() + "-" + completionVO.getLevelFiveGroup();
                                sixMapKey = completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup() + "-" + completionVO.getLevelFiveGroup()
                                        + "-" + completionVO.getLevelSixGroup();

                                if (groupOneLevelMap.get(oneMapKey) == null) {
                                    this.handleoneLevelGroup(nowDate, regionMap, groupOneLevelMap, labelMap, oneMapKey, completionVO);
                                }
                                if(groupTwoLevelMap.get(twoMapKey) == null){
                                    parentId = groupOneLevelMap.get(oneMapKey).getGroupId();
                                    this.handleTwoLevelGroup(parentId, nowDate, regionMap, groupTwoLevelMap, labelMap, twoMapKey, completionVO);
                                }
                                if (groupThreeLevelMap.get(threeMapKey) == null) {
                                    parentId = groupTwoLevelMap.get(twoMapKey).getGroupId();
                                    this.handleThreeLevelGroup(parentId, nowDate, regionMap, groupThreeLevelMap, labelMap, threeMapKey, completionVO);
                                }
                                if(groupFourLevelMap.get(fourMapKey) == null){
                                    parentId = groupThreeLevelMap.get(threeMapKey).getGroupId();
                                    this.handleFourLevelGroup(parentId, nowDate, regionMap, groupFourLevelMap, labelMap, fourMapKey, completionVO);
                                }

                                if(groupFiveLevelMap.get(fiveMapKey) == null){
                                    parentId = groupFourLevelMap.get(fourMapKey).getGroupId();
                                    this.handleFiveLevelGroup(parentId, nowDate, regionMap, groupFiveLevelMap, labelMap, fiveMapKey, completionVO);
                                }

                                if(groupSixLevelMap.get(sixMapKey) == null){
                                    parentId = groupFiveLevelMap.get(fiveMapKey).getGroupId();
                                    this.handleSixLevelGroup(parentId, nowDate, regionMap, groupSixLevelMap, labelMap, sixMapKey, completionVO);
                                }

                            }
                            else if (HsgdbaseGroupLevelEnum.SEVEN.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                oneMapKey = completionVO.getLeveloneGroup();
                                twoMapKey = completionVO.getLevelTwoGroup();
                                threeMapKey = completionVO.getLevelThreeGroup();
                                fourMapKey = completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup();
                                fiveMapKey = completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup() + "-" + completionVO.getLevelFiveGroup();
                                sixMapKey = completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup() + "-" + completionVO.getLevelFiveGroup()
                                        + "-" + completionVO.getLevelSixGroup();
                                sevenMapKey =  completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup() + "-" + completionVO.getLevelFiveGroup()
                                        + "-" + completionVO.getLevelSixGroup() + "-" + completionVO.getLevelSevenGroup();

                                if (groupOneLevelMap.get(oneMapKey) == null) {
                                    this.handleoneLevelGroup(nowDate, regionMap, groupOneLevelMap, labelMap, oneMapKey, completionVO);
                                }
                                if(groupTwoLevelMap.get(twoMapKey) == null){
                                    parentId = groupOneLevelMap.get(oneMapKey).getGroupId();
                                    this.handleTwoLevelGroup(parentId, nowDate, regionMap, groupTwoLevelMap, labelMap, twoMapKey, completionVO);
                                }
                                if (groupThreeLevelMap.get(threeMapKey) == null) {
                                    parentId = groupTwoLevelMap.get(twoMapKey).getGroupId();
                                    this.handleThreeLevelGroup(parentId, nowDate, regionMap, groupThreeLevelMap, labelMap, threeMapKey, completionVO);
                                }
                                if(groupFourLevelMap.get(fourMapKey) == null){
                                    parentId = groupThreeLevelMap.get(threeMapKey).getGroupId();
                                    this.handleFourLevelGroup(parentId, nowDate, regionMap, groupFourLevelMap, labelMap, fourMapKey, completionVO);
                                }

                                if(groupFiveLevelMap.get(fiveMapKey) == null){
                                    parentId = groupFourLevelMap.get(fourMapKey).getGroupId();
                                    this.handleFiveLevelGroup(parentId, nowDate, regionMap, groupFiveLevelMap, labelMap, fiveMapKey, completionVO);
                                }

                                if(groupSixLevelMap.get(sixMapKey) == null){
                                    parentId = groupFiveLevelMap.get(fiveMapKey).getGroupId();
                                    this.handleSixLevelGroup(parentId, nowDate, regionMap, groupSixLevelMap, labelMap, sixMapKey, completionVO);
                                }

                                if(groupSevenLevelMap.get(sevenMapKey) == null){
                                    parentId = groupSixLevelMap.get(sixMapKey).getGroupId();
                                    this.handleSevenLevelGroup(parentId, nowDate, regionMap, groupSevenLevelMap, labelMap, sevenMapKey, completionVO);
                                }

                            }
                            else if (HsgdbaseGroupLevelEnum.EIGHT.getGroupLevel().equals(completionVO.getGroupLevel())) {
                                oneMapKey = completionVO.getLeveloneGroup();
                                twoMapKey = completionVO.getLevelTwoGroup();
                                threeMapKey = completionVO.getLevelThreeGroup();
                                fourMapKey = completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup();
                                fiveMapKey = completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup() + "-" + completionVO.getLevelFiveGroup();
                                sixMapKey = completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup() + "-" + completionVO.getLevelFiveGroup()
                                        + "-" + completionVO.getLevelSixGroup();
                                sevenMapKey =  completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup() + "-" + completionVO.getLevelFiveGroup()
                                        + "-" + completionVO.getLevelSixGroup() + "-" + completionVO.getLevelSevenGroup();
                                eightMapKey =   completionVO.getLevelThreeGroup() + "-" + completionVO.getLevelFourGroup() + "-" + completionVO.getLevelFiveGroup()
                                        + "-" + completionVO.getLevelSixGroup() + "-" + completionVO.getLevelSevenGroup() + "-" + completionVO.getLevelEightGroup();

                                if (groupOneLevelMap.get(oneMapKey) == null) {
                                    this.handleoneLevelGroup(nowDate, regionMap, groupOneLevelMap, labelMap, oneMapKey, completionVO);
                                }
                                if(groupTwoLevelMap.get(twoMapKey) == null){
                                    parentId = groupOneLevelMap.get(oneMapKey).getGroupId();
                                    this.handleTwoLevelGroup(parentId, nowDate, regionMap, groupTwoLevelMap, labelMap, twoMapKey, completionVO);
                                }
                                if (groupThreeLevelMap.get(threeMapKey) == null) {
                                    parentId = groupTwoLevelMap.get(twoMapKey).getGroupId();
                                    this.handleThreeLevelGroup(parentId, nowDate, regionMap, groupThreeLevelMap, labelMap, threeMapKey, completionVO);
                                }
                                if(groupFourLevelMap.get(fourMapKey) == null){
                                    parentId = groupThreeLevelMap.get(threeMapKey).getGroupId();
                                    this.handleFourLevelGroup(parentId, nowDate, regionMap, groupFourLevelMap, labelMap, fourMapKey, completionVO);
                                }

                                if(groupFiveLevelMap.get(fiveMapKey) == null){
                                    parentId = groupFourLevelMap.get(fourMapKey).getGroupId();
                                    this.handleFiveLevelGroup(parentId, nowDate, regionMap, groupFiveLevelMap, labelMap, fiveMapKey, completionVO);
                                }

                                if(groupSixLevelMap.get(sixMapKey) == null){
                                    parentId = groupFiveLevelMap.get(fiveMapKey).getGroupId();
                                    this.handleSixLevelGroup(parentId, nowDate, regionMap, groupSixLevelMap, labelMap, sixMapKey, completionVO);
                                }

                                if(groupSevenLevelMap.get(sevenMapKey) == null){
                                    parentId = groupSixLevelMap.get(sixMapKey).getGroupId();
                                    this.handleSevenLevelGroup(parentId, nowDate, regionMap, groupSevenLevelMap, labelMap, sevenMapKey, completionVO);
                                }

                                if(groupEightLevelMap.get(eightMapKey) == null){
                                    parentId = groupSevenLevelMap.get(sevenMapKey).getGroupId();
                                    this.handleEightLevelGroup(parentId, nowDate, regionMap, groupEightLevelMap, labelMap, eightMapKey, completionVO);
                                }
                            }
                        } catch (Exception e) {
                            log.info("组织"+JsonUtil.toJSonString(completionVO)+"导入失败",e);
                             log.info("组织{}导入失败", JsonUtil.toJSonString(completionVO));
                            notimportRecord = new HsgdbaseGroupNotimportRecord();
                            BeanUtils.copyProperties(completionVO,notimportRecord);
                            errorRecordList.add(notimportRecord);
                        }
                    }

                    if(CollectionUtils.isNotEmpty(errorRecordList)){
                        iHsgdbaseGroupNotimportRecordService.saveBatch(errorRecordList);
                    }
                }
            }
        }
    }


    @Override
    public void insert(HsgdbaseGroupimportRecord record) {
        hsgdbaseGroupimportRecordMapper.insert(record);
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void batchInsertAll(List recordList) {
        hsgdbaseGroupimportRecordMapper.insertAll(recordList);
    }

    private void getPageAllRegionToRegionMap(Map regionMap, List importCompletionList) {
        if (CollectionUtils.isNotEmpty(importCompletionList)) {
            List regionInfoList = new ArrayList<>();
            for (HsgdbaseGroupimportCompletion completiondata: importCompletionList) {
                if(StringUtils.isNotBlank(completionData.getGroupRegion())){
                    List regionList = Arrays.asList(completionData.getGroupRegion().split(","));
                    for ( String regionCode :  regionList){
                        if(regionMap.get(regionCode) == null){
                            regionInfoList.add(regionCode);
                        }
                    }
                }
            }

            if(CollectionUtils.isNotEmpty(regionInfoList)){
                List regions = crmRegionMapper.selectCrmRegionsByCodes(regionInfoList);
                for ( CrmRegion crmRegion : regions){
                    regionMap.put(crmRegion.getRegionCode(),crmRegion);
                }
            }
        }
    }

    @Override
    public HsgdbaseGroupSimpleVO getGroupSimpleByGroupNameAndParentIdAndLevel(String levelGroupName, Long groupId, Integer groupLevel) {
        return hsgdbaseGroupMapper.getGroupSimpleByGroupNameAndParentIdAndLevel(levelGroupName,groupId, groupLevel);
    }


    private HsgdbaseGroupSimpleVO generatorGroupLevel(HsgdbaseGroupimportCompletion completionVO, Date nowDate,
                                                      Map labelMap, Map regionMap, Long parentId) {
        HsgdbaseGroupSimpleVO resultVo = new HsgdbaseGroupSimpleVO();
        Long parentIdTop = 0L;
        Integer recordStatus = 1;
        Integer level = completionVO.getGroupLevel();

        // 表HSGD_base_GROUP
        HsgdbaseGroup hsgdbaseGroup = new HsgdbaseGroup();
        hsgdbaseGroup.setGroupName(this.getGroupNameByLevel(completionVO));
        if(HsgdbaseGroupLevelEnum.ONE.getGroupLevel().equals(level)){
            hsgdbaseGroup.setParentId(parentIdTop);
        }else {
            hsgdbaseGroup.setParentId(parentId);
        }

        hsgdbaseGroup.setStatus(recordStatus);
        hsgdbaseGroup.setCreated(nowDate);
        hsgdbaseGroup.setCreatedBy(SYSTEM_USER_NAME);
        hsgdbaseGroup.setUpdated(nowDate);
        hsgdbaseGroup.setUpdatedBy(SYSTEM_USER_NAME);
        hsgdbaseGroupMapper.insert(hsgdbaseGroup);

        long groupId = hsgdbaseGroup.getId();
        resultVo.setGroupId(groupId);
        resultVo.setGroupName(hsgdbaseGroup.getGroupName());
        resultVo.setParentId(hsgdbaseGroup.getParentId());
        resultVo.setGroupLevel(level);

        // 表HSGD_base_GROUP_INFO
        HsgdbaseGroupInfo hsgdbaseGroupInfo = new HsgdbaseGroupInfo();
        hsgdbaseGroupInfo.setGroupId(groupId);
        hsgdbaseGroupInfo.setStatus(recordStatus);
        hsgdbaseGroupInfo.setGroupLevel(completionVO.getGroupLevel());
        hsgdbaseGroupInfo.setGroupLevelInfo(getGroupLevelInfoByLevel(completionVO));
        hsgdbaseGroupInfo.setRegionFlag(0);
        if(StringUtils.isNotBlank(completionVO.getGroupRegion())){
            hsgdbaseGroupInfo.setRegionFlag(1);
        }
        hsgdbaseGroupInfo.setCustomerNumber(0);
        hsgdbaseGroupInfo.setEmployeeNumber(0);
        hsgdbaseGroupInfo.setCreated(nowDate);
        hsgdbaseGroupInfo.setCreatedBy(SYSTEM_USER_NAME);
        hsgdbaseGroupInfo.setUpdated(nowDate);
        hsgdbaseGroupInfo.setUpdatedBy(SYSTEM_USER_NAME);
        hsgdbaseGroupInfoMapper.insert(hsgdbaseGroupInfo);

        // 表 HSGD_base_GROUP_LABEL
        if(StringUtils.isNotBlank(completionVO.getGroupLabel())){
            HsgdbaseGroupLabel hsgdbaseGroupLabel = new HsgdbaseGroupLabel();
            hsgdbaseGroupLabel.setGroupId(groupId);
            hsgdbaseGroupLabel.setLabelId(labelMap.get(completionVO.getGroupLabel()));
            hsgdbaseGroupLabel.setCreated(nowDate);
            hsgdbaseGroupLabel.setCreatedBy(SYSTEM_USER_NAME);
            hsgdbaseGroupLabel.setUpdated(nowDate);
            hsgdbaseGroupLabel.setUpdatedBy(SYSTEM_USER_NAME);
            hsgdbaseGroupLabelMapper.insert(hsgdbaseGroupLabel);
        }

        if(StringUtils.isNotBlank(completionVO.getGroupRegion())){
            List regionCodeList = Arrays.asList(completionVO.getGroupRegion().split(","));
            List regionList = new ArrayList<>();
            HsgdbaseGroupRegion region = null;
            for (String regionCode :  regionCodeList ){
                region = new HsgdbaseGroupRegion();
                region.setGroupId(groupId);
                region.setGroupName(hsgdbaseGroup.getGroupName());
                region.setStatus(recordStatus);
                CrmRegion crmRegion = regionMap.get(regionCode);
                if(crmRegion !=null){
                    region.setProvinceCode(crmRegion.getProvinceCode());
                    region.setCityCode(crmRegion.getCityCode());
                    region.setCountyCode(crmRegion.getCountyCode());
                }
                region.setRegionCode(regionCode);
                region.setStatus(recordStatus);
                region.setCreated(nowDate);
                region.setCreatedBy(SYSTEM_USER_NAME);
                region.setUpdated(nowDate);
                region.setUpdatedBy(SYSTEM_USER_NAME);
                regionList.add(region);
            }

            hsgdbaseGroupRegionMapper.batchInsert(regionList);
        }

        return resultVo;
    }

    @Override
    public HsgdbaseGroupSimpleVO getGroupSimpleByGroupNameAndLevel(String levelGroupName, Integer groupLevel) {
        return hsgdbaseGroupMapper.selectByGroupNameAndLevel(levelGroupName, groupLevel);
    }

    @Override
    public HsgdbaseGroupSimpleVO getGroupSimpleByGroupNameAndLevelAndParentId(String levelGroupName, Integer groupLevel,Long parentId) {
        return hsgdbaseGroupMapper.selectByGroupNameAndLevelAndParentId(levelGroupName, groupLevel,parentId);
    }

    public Map getGroupLabelMap(){
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByAsc("ID");
        List  labelList =  hsgdbaseGroupLabelDictMapper.selectList(queryWrapper);
        Map labelMap = labelList.stream().collect(Collectors.toMap(HsgdbaseGroupLabelDict::getLabelName,HsgdbaseGroupLabelDict::getId,(key1,key2)-> key2));
        return labelMap;
    }

    private HsgdbaseGroupSimpleVO generatorGroupLevelNew(HsgdbaseGroupimportCompletion completionVO, Date nowDate,
            Map labelMap, Map regionMap, Long parentId,Integer groupLevel) {
        HsgdbaseGroupSimpleVO resultVo = new HsgdbaseGroupSimpleVO();
        Integer recordStatus = 1;
        Integer createSource = 1;
        Long userId = -1L;

        // 表HSGD_base_GROUP
        HsgdbaseGroup hsgdbaseGroup = new HsgdbaseGroup();
        hsgdbaseGroup.setGroupName(this.getGroupNameByLevelNew(completionVO, groupLevel));
        hsgdbaseGroup.setParentId(parentId);
        hsgdbaseGroup.setStatus(recordStatus);
        hsgdbaseGroup.setCreated(nowDate);
        hsgdbaseGroup.setCreatedBy(SYSTEM_USER_NAME);
        hsgdbaseGroup.setCreatedById(userId);
        hsgdbaseGroup.setCreatedSource(createSource);
        hsgdbaseGroup.setUpdated(nowDate);
        hsgdbaseGroup.setUpdatedBy(SYSTEM_USER_NAME);
        hsgdbaseGroup.setUpdatedById(userId);
        hsgdbaseGroup.setUpdatedSource(createSource);
        hsgdbaseGroupMapper.insert(hsgdbaseGroup);

        long groupId = hsgdbaseGroup.getId();
        resultVo.setGroupId(groupId);
        resultVo.setGroupName(hsgdbaseGroup.getGroupName());
        resultVo.setParentId(hsgdbaseGroup.getParentId());
        resultVo.setGroupLevel(groupLevel);

        // 表HSGD_base_GROUP_INFO
        HsgdbaseGroupInfo hsgdbaseGroupInfo = new HsgdbaseGroupInfo();
        hsgdbaseGroupInfo.setGroupId(groupId);
        hsgdbaseGroupInfo.setGroupLevelInfo(getGroupLevelInfoByLevelNew(completionVO,groupLevel));
        hsgdbaseGroupInfo.setRegionFlag(0);
        if(completionVO.getGroupLevel().equals(groupLevel)) {
            if (StringUtils.isNotBlank(completionVO.getGroupRegion())) {
                hsgdbaseGroupInfo.setRegionFlag(1);
            }
        }
        hsgdbaseGroupInfo.setStatus(recordStatus);
        hsgdbaseGroupInfo.setCustomerNumber(0);
        hsgdbaseGroupInfo.setEmployeeNumber(0);
        hsgdbaseGroupInfo.setCreated(nowDate);
        hsgdbaseGroupInfo.setCreatedBy(SYSTEM_USER_NAME);
        hsgdbaseGroupInfo.setCreatedById(userId);
        hsgdbaseGroupInfo.setUpdated(nowDate);
        hsgdbaseGroupInfo.setUpdatedBy(SYSTEM_USER_NAME);
        hsgdbaseGroupInfo.setUpdatedById(userId);
        hsgdbaseGroupInfo.setGroupLevel(groupLevel);
        hsgdbaseGroupInfoMapper.insert(hsgdbaseGroupInfo);

        if(completionVO.getGroupLevel().equals(groupLevel)){
            // 表 HSGD_base_GROUP_LABEL
            if(StringUtils.isNotBlank(completionVO.getGroupLabel())){
                HsgdbaseGroupLabel hsgdbaseGroupLabel = new HsgdbaseGroupLabel();
                hsgdbaseGroupLabel.setGroupId(groupId);
                hsgdbaseGroupLabel.setLabelId(labelMap.get(completionVO.getGroupLabel()));
                hsgdbaseGroupLabel.setCreated(nowDate);
                hsgdbaseGroupLabel.setCreatedBy(SYSTEM_USER_NAME);
                hsgdbaseGroupLabel.setCreatedById(userId);
                hsgdbaseGroupLabel.setUpdated(nowDate);
                hsgdbaseGroupLabel.setUpdatedBy(SYSTEM_USER_NAME);
                hsgdbaseGroupLabel.setUpdatedById(userId);
                hsgdbaseGroupLabelMapper.insert(hsgdbaseGroupLabel);
            }

            if (StringUtils.isNotBlank(completionVO.getGroupRegion())) {
                List regionCodeList = Arrays.asList(completionVO.getGroupRegion().split(","));
                List regionList = new ArrayList<>();
                HsgdbaseGroupRegion region;
                for (String regionCode : regionCodeList) {
                    region = new HsgdbaseGroupRegion();
                    region.setGroupName(hsgdbaseGroup.getGroupName());
                    region.setGroupId(groupId);
                    region.setRegionCode(regionCode);
                    CrmRegion crmRegion = regionMap.get(regionCode);
                    if (crmRegion != null) {
                        region.setProvinceCode(crmRegion.getProvinceCode());
                        region.setCityCode(crmRegion.getCityCode());
                        region.setCountyCode(crmRegion.getCountyCode());
                    }
                    region.setStatus(recordStatus);
                    region.setCreated(nowDate);
                    region.setCreatedBy(SYSTEM_USER_NAME);
                    region.setCreatedById(userId);
                    region.setUpdated(nowDate);
                    region.setUpdatedBy(SYSTEM_USER_NAME);
                    region.setUpdatedById(userId);
                    regionList.add(region);
                }

                hsgdbaseGroupRegionMapper.batchInsert(regionList);
            }
        }


        return resultVo;
    }


    public String getGroupNameByLevel(HsgdbaseGroupimportCompletion completionVO) {
        Integer level = completionVO.getGroupLevel();
        String groupName = "";
        if (HsgdbaseGroupLevelEnum.ONE.getGroupLevel().equals(level)) {
            groupName = completionVO.getLeveloneGroup();
        } else if (HsgdbaseGroupLevelEnum.TWO.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelTwoGroup();
        } else if (HsgdbaseGroupLevelEnum.THREE.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelThreeGroup();
        } else if (HsgdbaseGroupLevelEnum.FOUR.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelFourGroup();
        } else if (HsgdbaseGroupLevelEnum.FIVE.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelFiveGroup();
        } else if (HsgdbaseGroupLevelEnum.SIX.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelSixGroup();
        } else if (HsgdbaseGroupLevelEnum.SEVEN.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelSevenGroup();
        } else if (HsgdbaseGroupLevelEnum.EIGHT.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelEightGroup();
        }
        return groupName;
    }

    public String getGroupNameByLevelNew(HsgdbaseGroupimportCompletion completionVO,Integer groupLevel) {
        Integer level = groupLevel;
        String groupName = "";
        if (HsgdbaseGroupLevelEnum.ONE.getGroupLevel().equals(level)) {
            groupName = completionVO.getLeveloneGroup();
        } else if (HsgdbaseGroupLevelEnum.TWO.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelTwoGroup();
        } else if (HsgdbaseGroupLevelEnum.THREE.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelThreeGroup();
        } else if (HsgdbaseGroupLevelEnum.FOUR.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelFourGroup();
        } else if (HsgdbaseGroupLevelEnum.FIVE.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelFiveGroup();
        } else if (HsgdbaseGroupLevelEnum.SIX.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelSixGroup();
        } else if (HsgdbaseGroupLevelEnum.SEVEN.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelSevenGroup();
        } else if (HsgdbaseGroupLevelEnum.EIGHT.getGroupLevel().equals(level)) {
            groupName = completionVO.getLevelEightGroup();
        }

        return groupName;
    }


    public String getGroupLevelInfoByLevel(HsgdbaseGroupimportCompletion completionVO) {
        Integer level = completionVO.getGroupLevel();
        String groupLevelInfoname = "";
        if (HsgdbaseGroupLevelEnum.ONE.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup();
        } else if (HsgdbaseGroupLevelEnum.TWO.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup();
        } else if (HsgdbaseGroupLevelEnum.THREE.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup() + "->" + completionVO.getLevelThreeGroup();
        } else if (HsgdbaseGroupLevelEnum.FOUR.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup() + "->" + completionVO.getLevelThreeGroup() + "->" + completionVO.getLevelFourGroup();
        } else if (HsgdbaseGroupLevelEnum.FIVE.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup() + "->" + completionVO.getLevelThreeGroup() + "->" + completionVO.getLevelFourGroup()
                    + "->" + completionVO.getLevelFiveGroup();
        } else if (HsgdbaseGroupLevelEnum.SIX.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup() + "->" + completionVO.getLevelThreeGroup() + "->" + completionVO.getLevelFourGroup()
                    + "->" + completionVO.getLevelFiveGroup() + "->" + completionVO.getLevelSixGroup();
        } else if (HsgdbaseGroupLevelEnum.SEVEN.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup() + "->" + completionVO.getLevelThreeGroup() + "->" + completionVO.getLevelFourGroup()
                    + "->" + completionVO.getLevelFiveGroup() + "->" + completionVO.getLevelSixGroup() + "->" + completionVO.getLevelSevenGroup();
        } else if (HsgdbaseGroupLevelEnum.EIGHT.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup() + "->" + completionVO.getLevelThreeGroup() + "->" + completionVO.getLevelFourGroup()
                    + "->" + completionVO.getLevelFiveGroup() + "->" + completionVO.getLevelSixGroup() + "->" + completionVO.getLevelSevenGroup() + "->" + completionVO.getLevelEightGroup();
        }

        return groupLevelInfoName;
    }


    public String getGroupLevelInfoByLevelNew(HsgdbaseGroupimportCompletion completionVO,Integer groupLevel) {
        Integer level = groupLevel;
        String groupLevelInfoname = "";
        if (HsgdbaseGroupLevelEnum.ONE.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup();
        } else if (HsgdbaseGroupLevelEnum.TWO.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup();
        } else if (HsgdbaseGroupLevelEnum.THREE.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup() + "->" + completionVO.getLevelThreeGroup();
        } else if (HsgdbaseGroupLevelEnum.FOUR.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup() + "->" + completionVO.getLevelThreeGroup() + "->" + completionVO.getLevelFourGroup();
        } else if (HsgdbaseGroupLevelEnum.FIVE.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup() + "->" + completionVO.getLevelThreeGroup() + "->" + completionVO.getLevelFourGroup()
                    + "->" + completionVO.getLevelFiveGroup();
        } else if (HsgdbaseGroupLevelEnum.SIX.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup() + "->" + completionVO.getLevelThreeGroup() + "->" + completionVO.getLevelFourGroup()
                    + "->" + completionVO.getLevelFiveGroup() + "->" + completionVO.getLevelSixGroup();
        } else if (HsgdbaseGroupLevelEnum.SEVEN.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup() + "->" + completionVO.getLevelThreeGroup() + "->" + completionVO.getLevelFourGroup()
                    + "->" + completionVO.getLevelFiveGroup() + "->" + completionVO.getLevelSixGroup() + "->" + completionVO.getLevelSevenGroup();
        } else if (HsgdbaseGroupLevelEnum.EIGHT.getGroupLevel().equals(level)) {
            groupLevelInfoname = completionVO.getLeveloneGroup() + "->" + completionVO.getLevelTwoGroup() + "->" + completionVO.getLevelThreeGroup() + "->" + completionVO.getLevelFourGroup()
                    + "->" + completionVO.getLevelFiveGroup() + "->" + completionVO.getLevelSixGroup() + "->" + completionVO.getLevelSevenGroup() + "->" + completionVO.getLevelEightGroup();
        }

        return groupLevelInfoName;
    }

    
    private void handleoneLevelGroup(Date nowDate, Map regionMap, Map groupOneLevelMap, Map labelMap,
                                     String oneMapKey, HsgdbaseGroupimportCompletion completionVO) {
        HsgdbaseGroupSimpleVO simpleoneVO = this.getGroupSimpleByGroupNameAndLevel(completionVO.getLeveloneGroup(), HsgdbaseGroupLevelEnum.ONE.getGroupLevel());
        if (simpleoneVO != null) {
            this.updateGroupLabelAndRegion(simpleOneVO,completionVO,labelMap,regionMap,nowDate,HsgdbaseGroupLevelEnum.ONE.getGroupLevel());
            groupOneLevelMap.put(oneMapKey, simpleOneVO);
        } else {
            simpleoneVO = this.generatorGroupLevelNew(completionVO, nowDate, labelMap, regionMap, null, HsgdbaseGroupLevelEnum.ONE.getGroupLevel());
            groupOneLevelMap.put(oneMapKey, simpleOneVO);
        }
    }

    // 生成二级组织
    private void handleTwoLevelGroup(Long parentId, Date nowDate, Map regionMap, Map groupTwoLevelMap, Map labelMap,
                                     String twoMapKey, HsgdbaseGroupimportCompletion completionVO) {
        HsgdbaseGroupSimpleVO simpleTwoVO = this.getGroupSimpleByGroupNameAndLevel(completionVO.getLevelTwoGroup(), HsgdbaseGroupLevelEnum.TWO.getGroupLevel());
        if (simpleTwoVO != null) {
            this.updateGroupLabelAndRegion(simpleTwoVO,completionVO,labelMap,regionMap,nowDate,HsgdbaseGroupLevelEnum.TWO.getGroupLevel());
            groupTwoLevelMap.put(twoMapKey, simpleTwoVO);
        } else {
            simpleTwoVO = this.generatorGroupLevelNew(completionVO, nowDate, labelMap, regionMap, parentId, HsgdbaseGroupLevelEnum.TWO.getGroupLevel());
            groupTwoLevelMap.put(twoMapKey, simpleTwoVO);
        }
    }

    // 生成三级组织
    private void handleThreeLevelGroup(Long parentId, Date nowDate, Map regionMap, Map groupThreeLevelMap, Map labelMap,
                                       String threeMapKey, HsgdbaseGroupimportCompletion completionVO) {
        HsgdbaseGroupSimpleVO simpleThreeVO = this.getGroupSimpleByGroupNameAndLevel(completionVO.getLevelThreeGroup(), HsgdbaseGroupLevelEnum.THREE.getGroupLevel());
        if (simpleThreeVO != null) {
            this.updateGroupLabelAndRegion(simpleThreeVO,completionVO,labelMap,regionMap,nowDate,HsgdbaseGroupLevelEnum.THREE.getGroupLevel());
            groupThreeLevelMap.put(threeMapKey, simpleThreeVO);
        } else {
            simpleThreeVO = this.generatorGroupLevelNew(completionVO, nowDate, labelMap, regionMap, parentId, HsgdbaseGroupLevelEnum.THREE.getGroupLevel());
            groupThreeLevelMap.put(threeMapKey, simpleThreeVO);
        }
    }

    // 生成四级组织
    private void handleFourLevelGroup(Long parentId, Date nowDate, Map regionMap, Map groupFourLevelMap, Map labelMap,
                                      String fourMapKey, HsgdbaseGroupimportCompletion completionVO) {
        HsgdbaseGroupSimpleVO simpleFourVO = this.getGroupSimpleByGroupNameAndLevelAndParentId(completionVO.getLevelFourGroup(), HsgdbaseGroupLevelEnum.FOUR.getGroupLevel(),parentId);
        if (simpleFourVO != null) {
            this.updateGroupLabelAndRegion(simpleFourVO,completionVO,labelMap,regionMap,nowDate,HsgdbaseGroupLevelEnum.FOUR.getGroupLevel());
            groupFourLevelMap.put(fourMapKey, simpleFourVO);
        } else {
            simpleFourVO = this.generatorGroupLevelNew(completionVO, nowDate, labelMap, regionMap, parentId, HsgdbaseGroupLevelEnum.FOUR.getGroupLevel());
            groupFourLevelMap.put(fourMapKey, simpleFourVO);
        }
    }

    // 生成五级组织
    private void handleFiveLevelGroup(Long parentId, Date nowDate, Map regionMap, Map groupFiveLevelMap, Map labelMap,
                                      String fiveMapKey, HsgdbaseGroupimportCompletion completionVO) {
        HsgdbaseGroupSimpleVO simpleFiveVO = this.getGroupSimpleByGroupNameAndLevelAndParentId(completionVO.getLevelFiveGroup(), HsgdbaseGroupLevelEnum.FIVE.getGroupLevel(),parentId);
        if (simpleFiveVO != null) {
            this.updateGroupLabelAndRegion(simpleFiveVO,completionVO,labelMap,regionMap,nowDate,HsgdbaseGroupLevelEnum.FIVE.getGroupLevel());
            groupFiveLevelMap.put(fiveMapKey, simpleFiveVO);
        } else {
            simpleFiveVO = this.generatorGroupLevelNew(completionVO, nowDate, labelMap, regionMap, parentId, HsgdbaseGroupLevelEnum.FIVE.getGroupLevel());
            groupFiveLevelMap.put(fiveMapKey, simpleFiveVO);
        }
    }

    // 生成六级组织
    private void handleSixLevelGroup(Long parentId, Date nowDate, Map regionMap, Map groupSixLevelMap, Map labelMap,
                                     String sixMapKey, HsgdbaseGroupimportCompletion completionVO) {
        HsgdbaseGroupSimpleVO simpleSixVO = this.getGroupSimpleByGroupNameAndLevelAndParentId(completionVO.getLevelSixGroup(), HsgdbaseGroupLevelEnum.SIX.getGroupLevel(),  parentId);
        if (simpleSixVO != null) {
            this.updateGroupLabelAndRegion(simpleSixVO,completionVO,labelMap,regionMap,nowDate,HsgdbaseGroupLevelEnum.SIX.getGroupLevel());
            groupSixLevelMap.put(sixMapKey, simpleSixVO);
        } else {
            simpleSixVO = this.generatorGroupLevelNew(completionVO, nowDate, labelMap, regionMap, parentId, HsgdbaseGroupLevelEnum.SIX.getGroupLevel());
            groupSixLevelMap.put(sixMapKey, simpleSixVO);
        }
    }

    // 生成七级组织
    private void handleSevenLevelGroup(Long parentId, Date nowDate, Map regionMap, Map groupSevenLevelMap, Map labelMap,
                                       String sevenMapKey, HsgdbaseGroupimportCompletion completionVO) {
        HsgdbaseGroupSimpleVO simpleSevenVO = this.getGroupSimpleByGroupNameAndLevelAndParentId(completionVO.getLevelSevenGroup(), HsgdbaseGroupLevelEnum.SEVEN.getGroupLevel(), parentId);
        if (simpleSevenVO != null) {
            this.updateGroupLabelAndRegion(simpleSevenVO,completionVO,labelMap,regionMap,nowDate,HsgdbaseGroupLevelEnum.SEVEN.getGroupLevel());
            groupSevenLevelMap.put(sevenMapKey, simpleSevenVO);
        } else {
            simpleSevenVO = this.generatorGroupLevelNew(completionVO, nowDate, labelMap, regionMap, parentId, HsgdbaseGroupLevelEnum.SEVEN.getGroupLevel());
            groupSevenLevelMap.put(sevenMapKey, simpleSevenVO);
        }
    }


    // 生成八级组织
    private void handleEightLevelGroup(Long parentId, Date nowDate, Map regionMap, Map groupEightLevelMap, Map labelMap,
                                       String eightMapKey, HsgdbaseGroupimportCompletion completionVO) {
        HsgdbaseGroupSimpleVO simpleEightVO = this.getGroupSimpleByGroupNameAndLevelAndParentId(completionVO.getLevelEightGroup(), HsgdbaseGroupLevelEnum.EIGHT.getGroupLevel(), parentId);
        if (simpleEightVO != null) {
            this.updateGroupLabelAndRegion(simpleEightVO,completionVO,labelMap,regionMap,nowDate,HsgdbaseGroupLevelEnum.EIGHT.getGroupLevel());
            groupEightLevelMap.put(eightMapKey, simpleEightVO);
        } else {
            simpleEightVO = this.generatorGroupLevelNew(completionVO, nowDate, labelMap, regionMap, parentId, HsgdbaseGroupLevelEnum.EIGHT.getGroupLevel());
            groupEightLevelMap.put(eightMapKey, simpleEightVO);
        }
    }

    private void updateGroupLabelAndRegion(HsgdbaseGroupSimpleVO simpleOneVO, HsgdbaseGroupimportCompletion completionVO,
                 Map labelMap, Map regionMap,Date nowDate,Integer groupLvel) {
        // 表 HSGD_base_GROUP_LABEL
        Long userId = -1L;
        Integer recordStatus = 1;
        Long groupId = simpleOneVO.getGroupId();

        if(completionVO.getGroupLevel().equals(groupLvel)){
            if(StringUtils.isNotBlank(completionVO.getGroupLabel())){
                QueryWrapper queryWrapper = new QueryWrapper();
                queryWrapper.eq("GROUP_ID",groupId);

                Long labelCount = hsgdbaseGroupLabelMapper.selectCount(queryWrapper);
                if (labelCount > 0) {
                    UpdateWrapper updateWrapper = new UpdateWrapper();
                    updateWrapper.eq("GROUP_ID",groupId);
                    HsgdbaseGroupLabel updateLabel = new HsgdbaseGroupLabel();
                    updateLabel.setLabelId(labelMap.get(completionVO.getGroupLabel()));
                    updateLabel.setUpdated(nowDate);
                    updateLabel.setUpdatedBy(SYSTEM_USER_NAME);
                    updateLabel.setUpdatedById(userId);
                    hsgdbaseGroupLabelMapper.update(updateLabel,updateWrapper);
                } else {
                    HsgdbaseGroupLabel hsgdbaseGroupLabel = new HsgdbaseGroupLabel();
                    hsgdbaseGroupLabel.setGroupId(groupId);
                    hsgdbaseGroupLabel.setLabelId(labelMap.get(completionVO.getGroupLabel()));
                    hsgdbaseGroupLabel.setCreated(nowDate);
                    hsgdbaseGroupLabel.setCreatedBy(SYSTEM_USER_NAME);
                    hsgdbaseGroupLabel.setCreatedById(userId);
                    hsgdbaseGroupLabel.setUpdated(nowDate);
                    hsgdbaseGroupLabel.setUpdatedBy(SYSTEM_USER_NAME);
                    hsgdbaseGroupLabel.setUpdatedById(userId);
                    hsgdbaseGroupLabelMapper.insert(hsgdbaseGroupLabel);
                }
            }

            if (StringUtils.isNotBlank(completionVO.getGroupRegion())) {
                List regionCodeList = Arrays.asList(completionVO.getGroupRegion().split(","));
                List regionList = new ArrayList<>();
                HsgdbaseGroupRegion region;
                for (String regionCode : regionCodeList) {
                    region = new HsgdbaseGroupRegion();
                    region.setGroupName(simpleOneVO.getGroupName());
                    region.setGroupId(groupId);
                    region.setRegionCode(regionCode);
                    CrmRegion crmRegion = regionMap.get(regionCode);
                    if (crmRegion != null) {
                        region.setProvinceCode(crmRegion.getProvinceCode());
                        region.setCityCode(crmRegion.getCityCode());
                        region.setCountyCode(crmRegion.getCountyCode());
                    }
                    region.setStatus(recordStatus);
                    region.setCreated(nowDate);
                    region.setCreatedBy(SYSTEM_USER_NAME);
                    region.setCreatedById(userId);
                    region.setUpdated(nowDate);
                    region.setUpdatedBy(SYSTEM_USER_NAME);
                    region.setUpdatedById(userId);
                    regionList.add(region);
                }


                QueryWrapper queryWrapper = new QueryWrapper();
                queryWrapper.eq("GROUP_ID",groupId);
                queryWrapper.eq("STATUS",1);
                Long existsRegionNum = hsgdbaseGroupRegionMapper.selectCount(queryWrapper);
                if(existsRegionNum > 0){
                    UpdateWrapper updateWrapper = new UpdateWrapper();
                    updateWrapper.eq("GROUP_ID",groupId);
                    HsgdbaseGroupRegion  updateRegion = new HsgdbaseGroupRegion();
                    updateRegion.setStatus(0);
                    updateRegion.setUpdated(nowDate);
                    updateRegion.setUpdatedBy(SYSTEM_USER_NAME);
                    updateRegion.setUpdatedById(userId);
                    hsgdbaseGroupRegionMapper.update(updateRegion,updateWrapper);
                }
                hsgdbaseGroupRegionMapper.batchInsert(regionList);
            }
        }

    }

}
package com.zhgd.base.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.zhgd.base.domain.model.ZhgdSrGroupimportModel;
import com.zhgd.base.service.IZhgdSrbaseGroupimportHandleService;
import com.zhgd.common.util.JsonUtil;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;

@Slf4j
public class ZhgdSrbaseGroupimportExcelListener extends AnalysisEventListener {

    private List dataList = new ArrayList<>();

    private static final int BATCH_COUNT = 120;

    private IZhgdSrbaseGroupimportHandleService iZhgdSrbaseGroupimportHandleService;

    private String batchNo;

    public ZhgdSrbaseGroupimportExcelListener(IZhgdSrbaseGroupimportHandleService iZhgdSrbaseGroupimportHandleService,String batchNo) {
        this.iZhgdSrbaseGroupimportHandleService = iZhgdSrbaseGroupimportHandleService;
        this.batchNo = batchNo;
    }

    @Override
    public void invoke(ZhgdSrGroupimportModel model, AnalysisContext analysisContext) {
        log.debug("读取数据:{}", JsonUtil.toJSonString(model));
        model.setBatchNo(batchNo);
        dataList.add(model);
        if(dataList.size() >= BATCH_COUNT){
            iZhgdSrbaseGroupimportHandleService.saveSrbaseGroupimportDataList(dataList);
            dataList.clear();
        }
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        iZhgdSrbaseGroupimportHandleService.saveSrbaseGroupimportDataList(dataList);
        dataList.clear();
    }
}

package com.zhgd.base.service;

import com.zhgd.base.domain.model.ZhgdSrGroupimportModel;
import com.zhgd.base.entity.HsgdbaseGroupimportCompletion;

import java.util.List;

public interface IZhgdSrbaseGroupimportHandleService {

    void saveSrbaseGroupimportDataList(List dataList);

    void saveSrbaseGroupimportData(ZhgdSrGroupimportModel dataList);

    void insertAllimportCompletion(List completionList);
}
package com.zhgd.base.service.impl;

import com.zhgd.base.domain.model.ZhgdSrGroupimportModel;
import com.zhgd.base.entity.HsgdbaseGroupimportCompletion;
import com.zhgd.base.entity.HsgdbaseGroupimportRecord;
import com.zhgd.base.mapper.HsgdbaseGroupimportCompletionMapper;
import com.zhgd.base.service.IZhgdSrbaseGroupimportHandleService;
import com.zhgd.base.service.IZhgdSrbaseGroupimportService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Service
@Slf4j
public class ZhgdSrbaseGroupimportHandleServiceImpl implements IZhgdSrbaseGroupimportHandleService {

    @Resource
    private IZhgdSrbaseGroupimportService iZhgdSrbaseGroupimportService;

    @Resource
    private HsgdbaseGroupimportCompletionMapper hsgdbaseGroupimportCompletionMapper;

    @Override
    public void saveSrbaseGroupimportDataList(List dataList) {
        Date nowDate = new Date();
        final String userName = "system";
        if(CollectionUtils.isNotEmpty(dataList)){
            List recordList = new ArrayList();
            HsgdbaseGroupimportRecord record = null;
            for (int i=0,len = dataList.size();i< len;i++){
                ZhgdSrGroupimportModel importModel = dataList.get(i);
                record = new HsgdbaseGroupimportRecord();
                BeanUtils.copyProperties(importModel,record);
                record.setCreated(nowDate);
                record.setCreatedBy(userName);
                record.setUpdated(nowDate);
                record.setUpdatedBy(userName);
                recordList.add(record);
            };
            iZhgdSrbaseGroupimportService.batchInsertAll(recordList);
        }
    }

    @Override
    public void saveSrbaseGroupimportData(ZhgdSrGroupimportModel data) {
        Date nowDate = new Date();
        final String userName = "system";
        if(data != null){
            HsgdbaseGroupimportRecord record =  new HsgdbaseGroupimportRecord();
            BeanUtils.copyProperties(data,record);
            record.setCreated(nowDate);
            record.setCreatedBy(userName);
            record.setUpdated(nowDate);
            record.setUpdatedBy(userName);
            iZhgdSrbaseGroupimportService.insert(record);
         }

    }

    @Transactional
    @Override
    public void insertAllimportCompletion(List completionList) {
        hsgdbaseGroupimportCompletionMapper.insertAll(completionList);
    }
}

 导入之后

 HSGD_base_GROUP_import_RECORD

HSGD_base_GROUP_import_COMPLETION

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336447.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号