mitao
2024-07-24 4b5624af301dfbdcf54b65dc55aadde1b6a8efd5
finance-admin/src/main/java/com/finance/web/controller/lisenter/DeptImportListener.java
@@ -6,14 +6,17 @@
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.finance.common.core.domain.entity.SysUser;
import com.finance.common.enums.AreaLevelEnum;
import com.finance.common.enums.UserTypeEnum;
import com.finance.common.exception.ServiceException;
import com.finance.common.utils.BeanUtils;
import com.finance.common.utils.CollUtils;
import com.finance.common.utils.SecurityUtils;
import com.finance.common.utils.StringUtils;
import com.finance.system.service.ISysUserService;
import com.finance.web.controller.excel.DeptExcel;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
/**
@@ -94,14 +97,53 @@
    private void saveData() {
        log.info("{}条数据,开始存储数据库!", cachedDataList.size());
        List<SysUser> sysUsers = BeanUtils.copyList(cachedDataList, SysUser.class);
        sysUsers.forEach(item -> {
            item.setPassword(SecurityUtils.encryptPassword(item.getPassword()));
            item.setNickName(item.getAreaName());
            item.setUserType(UserTypeEnum.DEPARTMENT);
        });
        sysUserService.remove(Wrappers.<SysUser>lambdaQuery()
        List<SysUser> sysUsers = cachedDataList.stream().map(data -> {
            SysUser sysUser = new SysUser();
            sysUser.setAreaName(data.getAreaName());
            sysUser.setAreaAlias(data.getAreaAlias());
            sysUser.setAreaCode(data.getAreaCode());
            sysUser.setAreaLevel(AreaLevelEnum.getEnumByDesc(data.getAreaLevel()));
            sysUser.setCountyFlag(data.getCountyFlag());
            sysUser.setUserName(data.getUserName());
            sysUser.setNickName(data.getUserName());
            sysUser.setPersonInCharge(data.getPersonInCharge());
            sysUser.setPhoneNumber(data.getPhoneNumber());
            sysUser.setPassword(SecurityUtils.encryptPassword(data.getPassword()));
            sysUser.setUserType(UserTypeEnum.DEPARTMENT);
            return sysUser;
        }).collect(Collectors.toList());
        List<String> areaCodeSet = sysUsers.stream().map(SysUser::getAreaCode)
                .collect(Collectors.toList());
        List<SysUser> userListOrg = sysUserService.list(
                Wrappers.lambdaQuery(SysUser.class).in(SysUser::getAreaCode, areaCodeSet)
                .eq(SysUser::getUserType, UserTypeEnum.DEPARTMENT.getCode()));
        List<String> collect = userListOrg.stream().map(SysUser::getAreaCode)
                .collect(Collectors.toList());
        List<SysUser> updateUserList = null;
        if (CollUtils.isNotEmpty(collect)) {
            updateUserList = sysUsers.stream()
                    .filter(item -> collect.contains(item.getAreaCode())).collect(
                            Collectors.toList());
            List<SysUser> updateUsers = updateUserList.stream()
                    .flatMap(updUser -> userListOrg.stream()
                            .filter(userOrg -> userOrg.getAreaCode().equals(updUser.getAreaCode()))
                            .peek(userOrg -> {
                                userOrg.setAreaName(updUser.getAreaName());
                                userOrg.setAreaAlias(updUser.getAreaAlias());
                                userOrg.setUserName(updUser.getUserName());
                                userOrg.setPersonInCharge(updUser.getPersonInCharge());
                                userOrg.setPhoneNumber(updUser.getPhoneNumber());
                                userOrg.setAreaLevel(updUser.getAreaLevel());
                                userOrg.setCountyFlag(updUser.getCountyFlag());
                                userOrg.setPassword(updUser.getPassword());
                                userOrg.setUpdateTime(new Date());
                            }))
                    .collect(Collectors.toList());
            sysUserService.updateBatchById(updateUsers);
        }
        if (CollUtils.isNotEmpty(updateUserList)) {
            sysUsers.removeAll(updateUserList);
        }
        sysUserService.saveBatch(sysUsers);
        log.info("{}条数据,导入成功!", cachedDataList.size());
    }