content: package org.jeecg.modules.system.service.impl;
  
  import com.alibaba.fastjson.JSONObject;
  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  import org.apache.poi.ss.formula.functions.T;
  import org.jeecg.common.api.vo.Result;
  import org.jeecg.common.constant.CommonConstant;
  import org.jeecg.common.util.ImportExcelUtil;
  import org.jeecg.common.util.PmsUtil;
  import org.jeecg.modules.quartz.service.IQuartzJobService;
  import org.jeecg.modules.system.entity.SysRole;
  import org.jeecg.modules.system.mapper.SysRoleMapper;
  import org.jeecg.modules.system.mapper.SysUserMapper;
  import org.jeecg.modules.system.service.ISysRoleService;
  import org.jeecgframework.poi.excel.ExcelImportUtil;
  import org.jeecgframework.poi.excel.entity.ImportParams;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Service;
  import org.springframework.transaction.annotation.Transactional;
  import org.springframework.web.multipart.MultipartFile;
  
  import java.io.File;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.List;
  
  /**
   * <p>
   * 角色表 服务实现类
   * </p>
   *
   * @Author scott
   * @since 2018-12-19
   */
  @Service
  public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements ISysRoleService {
      @Autowired
      SysRoleMapper sysRoleMapper;
      @Autowired
      SysUserMapper sysUserMapper;
  
      @Override
      public Result importExcelCheckRoleCode(MultipartFile file, ImportParams params) throws Exception {
          List<Object> listSysRoles = ExcelImportUtil.importExcel(file.getInputStream(), SysRole.class, params);
          int totalCount = listSysRoles.size();
          List<String> errorStrs = new ArrayList<>();
  
          // 去除 listSysRoles 中重复的数据
          for (int i = 0; i < listSysRoles.size(); i++) {
              String roleCodeI =((SysRole)listSysRoles.get(i)).getRoleCode();
              for (int j = i + 1; j < listSysRoles.size(); j++) {
                  String roleCodeJ =((SysRole)listSysRoles.get(j)).getRoleCode();
                  // 发现重复数据
                  if (roleCodeI.equals(roleCodeJ)) {
                      errorStrs.add("第 " + (j + 1) + " 行的 roleCode 值：" + roleCodeI + " 已存在，忽略导入");
                      listSysRoles.remove(j);
                      break;
                  }
              }
          }
          // 去掉 sql 中的重复数据
          Integer errorLines=0;
          Integer successLines=0;
          List<String> list = ImportExcelUtil.importDateSave(listSysRoles, ISysRoleService.class, errorStrs, CommonConstant.SQL_INDEX_UNIQ_SYS_ROLE_CODE);
           errorLines+=list.size();
           successLines+=(listSysRoles.size()-errorLines);
          return ImportExcelUtil.imporReturnRes(errorLines,successLines,list);
      }
  
      @Override
      @Transactional(rollbackFor = Exception.class)
      public boolean deleteRole(String roleid) {
          //1.删除角色和用户关系
          sysRoleMapper.deleteRoleUserRelation(roleid);
          //2.删除角色和权限关系
          sysRoleMapper.deleteRolePermissionRelation(roleid);
          //3.删除角色
          this.removeById(roleid);
          return true;
      }
  
      @Override
      @Transactional(rollbackFor = Exception.class)
      public boolean deleteBatchRole(String[] roleIds) {
          //1.删除角色和用户关系
          sysUserMapper.deleteBathRoleUserRelation(roleIds);
          //2.删除角色和权限关系
          sysUserMapper.deleteBathRolePermissionRelation(roleIds);
          //3.删除角色
          this.removeByIds(Arrays.asList(roleIds));
          return true;
      }
  }
  