| package doumeemes.biz.system.impl; | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.iflytek.antelope.other.client.dto.resp.UserDTO; | 
| import doumeemes.biz.system.SystemUserBiz; | 
| import doumeemes.core.exception.BusinessException; | 
| import doumeemes.core.constants.ResponseStatus; | 
| import doumeemes.core.model.LoginUserInfo; | 
| import doumeemes.core.utils.Constants; | 
| import doumeemes.core.utils.DateUtil; | 
| import doumeemes.core.utils.Utils; | 
| import doumeemes.core.utils.excel.EasyExcelUtil; | 
| import doumeemes.dao.business.CompanyPositionMapper; | 
| import doumeemes.dao.business.dto.AutoLoginUserDTO; | 
| import doumeemes.dao.business.dto.CompanyInitDataDTO; | 
| import doumeemes.dao.business.model.*; | 
| import doumeemes.dao.ext.CompanyUserExtMapper; | 
| import doumeemes.dao.ext.ProceduresExtMapper; | 
| import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO; | 
| import doumeemes.dao.ext.dto.QueryProceduresExtDTO; | 
| import doumeemes.dao.ext.vo.CompanyUserExtListVO; | 
| import doumeemes.dao.ext.vo.DepartmentExtListVO; | 
| import doumeemes.dao.ext.vo.ProceduresExtListVO; | 
| import doumeemes.dao.system.SystemRoleMapper; | 
| import doumeemes.dao.system.SystemUserRoleMapper; | 
| import doumeemes.dao.system.dto.*; | 
| import doumeemes.dao.system.model.*; | 
| import doumeemes.service.business.CompanyUserService; | 
| import doumeemes.service.ext.BarcodeParamExtService; | 
| import doumeemes.service.ext.CompanyPositionExtService; | 
| import doumeemes.service.ext.CompanyUserExtService; | 
| import doumeemes.service.ext.DepartmentExtService; | 
| import doumeemes.service.system.SystemDepartmentUserService; | 
| import doumeemes.service.system.SystemPositionUserService; | 
| import doumeemes.service.system.SystemUserRoleService; | 
| import doumeemes.service.system.SystemUserService; | 
| import org.apache.commons.lang3.RandomStringUtils; | 
| import org.apache.commons.lang3.StringUtils; | 
| import org.apache.shiro.SecurityUtils; | 
| import org.springframework.beans.BeanUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
| import org.springframework.util.CollectionUtils; | 
| import org.springframework.web.multipart.MultipartFile; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.Date; | 
| import java.util.List; | 
|   | 
| @Service | 
| public class SystemUserBizImpl implements SystemUserBiz { | 
|   | 
|     @Autowired | 
|     private SystemUserService systemUserService; | 
|     @Autowired | 
|     private ProceduresExtMapper proceduresExtMapper; | 
|     @Autowired | 
|     private CompanyUserService companyUserService; | 
|     @Autowired | 
|     private CompanyPositionMapper companyPositionMapper; | 
|     @Autowired | 
|     private SystemRoleMapper systemRoleMapper; | 
|     @Autowired | 
|     private SystemUserRoleMapper systemUserRoleMapper; | 
|     @Autowired | 
|     private BarcodeParamExtService barcodeParamExtService; | 
|   | 
|     @Autowired | 
|     private SystemUserRoleService systemUserRoleService; | 
|   | 
|     @Autowired | 
|     private SystemDepartmentUserService systemDepartmentUserService; | 
|   | 
|     @Autowired | 
|     private SystemPositionUserService systemPositionUserService; | 
|     @Autowired | 
|     private DepartmentExtService departmentExtService; | 
|     @Autowired | 
|     private CompanyUserExtMapper companyUserExtMapper; | 
|   | 
|     @Override | 
|     public void deleteById(Integer id) { | 
|         SystemUser user = systemUserService.findById(id); | 
|         if (user == null) { | 
|             return; | 
|         } | 
|         LoginUserInfo loginUser = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         if(Constants.equalsInteger(loginUser.getType(),Constants.USERTYPE.COM)){ | 
|             CompanyUser cu = new CompanyUser(); | 
|             cu.setUserId(id); | 
|             cu.setRootDepartId(loginUser.getRootDepartment().getId()); | 
|             cu.setDeleted(Constants.ZERO); | 
|             cu = companyUserService.findOne(cu); | 
|             if(cu== null){ | 
|                 throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,该用户不存在"); | 
|             } | 
|             cu.setDeleted(Constants.ONE); | 
|             cu.setUpdateUser(loginUser.getId()); | 
|             cu.setUpdateTime(DateUtil.getCurrentDate()); | 
|             //删除关联关系 | 
|             companyUserService.updateById(cu); | 
|         }else { | 
|             if (user.getFixed()) { | 
|                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "请勿删除" + user.getUsername() + ",因为这是固定用户"); | 
|             } | 
|             systemUserService.deleteById(id); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     @Transactional | 
|     public void deleteByIdInBatch(List<Integer> ids) { | 
|         if (CollectionUtils.isEmpty(ids)) { | 
|             return; | 
|         } | 
|         for (Integer id : ids) { | 
|             this.deleteById(id); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public void updatePwd(UpdatePwdDto dto) { | 
|         SystemUser user = systemUserService.findById(dto.getUserId()); | 
|         if (user.getDeleted()) { | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "用户不存在或已被删除"); | 
|         } | 
|         // 验证原始密码 | 
|         if (!user.getPassword().equals(Utils.Secure.encryptPassword(dto.getOldPwd(), user.getSalt()))) { | 
|             throw new BusinessException(ResponseStatus.PWD_INCORRECT.getCode(), "原始密码不正确"); | 
|         } | 
|         // 修改密码 | 
|         SystemUser newUser = new SystemUser(); | 
|         newUser.setId(dto.getUserId()); | 
|         newUser.setPassword(Utils.Secure.encryptPassword(dto.getNewPwd(), user.getSalt())); | 
|         systemUserService.updateById(newUser); | 
|     } | 
|   | 
|     @Override | 
|     public void resetPwd(ResetSystemUserPwdDTO dto) { | 
|         // 查询用户 | 
|         SystemUser systemUser = systemUserService.findById(dto.getId()); | 
|         if (systemUser == null || systemUser.getDeleted()) { | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "用户不存在或已被删除"); | 
|         } | 
|         // 修改密码 | 
|         SystemUser updateUserDto = new SystemUser(); | 
|         updateUserDto.setId(dto.getId()); | 
|         updateUserDto.setPassword(Utils.Secure.encryptPassword(dto.getPassword(), systemUser.getSalt())); | 
|         systemUserService.updateById(updateUserDto); | 
|     } | 
|     @Transactional(rollbackFor = {BusinessException.class,Exception.class}) | 
|     @Override | 
|     public void importUsers(MultipartFile file,String pwd)  { | 
|         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!"); | 
|         } | 
|   | 
|         //解析excel | 
|         List<ImportUserDTO> plansList = EasyExcelUtil.importExcel(file, 1, 1, ImportUserDTO.class); | 
|         if(plansList == null || plansList.size()==0){ | 
|             throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "导入数据内容有误!"); | 
|         } | 
|         CompanyPosition cp = new CompanyPosition(); | 
|         cp.setDeleted(Constants.ZERO); | 
|         cp.setCompanyId(user.getCompany().getId()); | 
|         //查询全部岗位数据 | 
|         List<CompanyPosition> cpList = companyPositionMapper.selectList(new QueryWrapper<>(cp)); | 
|   | 
|         SystemRole sr = new SystemRole(); | 
|         sr.setDeleted(false); | 
|         sr.setCompanyId(user.getCompany().getId()); | 
|         //查询全部角色数据 | 
|         List<SystemRole> srList = systemRoleMapper.selectList(new QueryWrapper<>(sr)); | 
|   | 
|         int index = 3; | 
|         List<ImportUserDTO> list = new ArrayList<>(); | 
|         for(ImportUserDTO p : plansList){ | 
|             checkRepeatMobileOrNo(p,list,index); | 
|             Date date = DateUtil.getCurrentDate(); | 
|             CompanyUser cu = new CompanyUser(); | 
|             if(StringUtils.isNotBlank(p.getPosition())){ | 
|                 //如果岗位数据不为空,根据名称查询部门岗位信息 | 
|                 CompanyPosition cpp = getPositionByName(p.getPosition(),cpList); | 
|                 if(cpp== null){ | 
| //                    throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【岗位】不存在,请检查后重试!"); | 
|                 }else{ | 
|                     //岗位数据 | 
|                     cu.setPositionId(cpp.getId()); | 
|                 } | 
|             } | 
|             cu.setRootDepartId(user.getRootDepartment().getId()); | 
|             cu.setPhone(p.getPhone()); | 
|             cu.setName(p.getName()); | 
|             cu.setStatus(Constants.ZERO); | 
|             cu.setDeleted(Constants.ZERO); | 
|             cu.setCreateUser(user.getId()); | 
|             cu.setCreateTime(date); | 
|             cu.setCode(p.getNo()); | 
|             cu.setPhoneAuthStatus(Constants.ZERO+""); | 
|             cu.setQrcodeid(barcodeParamExtService.getByType(user.getCompany().getId(),user.getCurComDepartment().getId(),Constants.BARCODEPARAM_TYPE.user)+""); | 
|             cu.setComDepartId(user.getCurComDepartment().getId()); | 
|             DepartmentExtListVO depart = departmentExtService.getModelByComDepartAndName(user.getCompany().getId(),user.getCurComDepartment().getId(),p.getDepartment()); | 
|             if(depart!=null){ | 
|                 cu.setDepartmentId(depart.getId()); | 
|             } | 
|             CompanyUser cuu = new CompanyUser(); | 
|             cuu.setDeleted(Constants.ZERO); | 
|             cuu.setRootDepartId(user.getRootDepartment().getId()); | 
|             cuu.setPhone(p.getPhone()); | 
|             if(companyUserService.findOne(cuu) !=null){ | 
|                 throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,第【"+index+"】行【手机号】员工账号已经存!"); | 
|             } | 
|             cuu.setPhone(null); | 
|             cuu.setCode(p.getNo()); | 
|             if(companyUserService.findOne(cuu) !=null){ | 
|                 throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,第【"+index+"】行【工号】已经存!"); | 
|             } | 
|             SystemUser systemUser = new SystemUser(); | 
|             systemUser.setUsername(cu.getPhone()); | 
|             systemUser.setDeleted(Boolean.FALSE); | 
|             SystemUser su = systemUserService.findOne(systemUser); | 
|             if(su!=null){ | 
|                 //如果总账号存在了,直接绑定 | 
|                 if(!Constants.equalsInteger(su.getType(),Constants.USERTYPE.COM)){ | 
|                     throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【手机号】非企业用户账号!"); | 
|                 } | 
|                 cu.setUserId(su.getId()); | 
|             }else{ | 
|                 // 生成密码盐 | 
|                 String salt = RandomStringUtils.randomAlphabetic(6); | 
|                 // 生成密码 | 
|                 systemUser.setPassword(Utils.Secure.encryptPassword(pwd, salt)); | 
|                 systemUser.setSalt(salt); | 
|                 systemUser.setType(Constants.USERTYPE.PLAT); | 
|                 systemUser.setEmpNo(cu.getCode()); | 
|                 systemUser.setRealname(p.getName()); | 
|                 systemUser.setDeleted(false); | 
|                 systemUser.setCreateUser(user.getId()); | 
|                 systemUser.setCreateTime(date); | 
|                 systemUser.setMobile(p.getPhone()); | 
|                 systemUser.setType(Constants.USERTYPE.COM); | 
|                 systemUser.setStatus(Constants.ZERO); | 
|                 Integer userId = systemUserService.create(systemUser); | 
|                 cu.setUserId(userId); | 
|             } | 
|             if(StringUtils.isNotBlank(p.getRole())){ | 
|                 //如果岗位数据不为空,根据名称查询部门岗位信息 | 
|                 SystemRole srr = getRoleByName(p.getRole(),srList); | 
|                 if(srr== null){ | 
| //                    throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【角色】不存在,请检查后重试!"); | 
|                 }else{ | 
|                     SystemUserRole ur = new SystemUserRole(); | 
|                     ur.setDeleted(false); | 
|                     ur.setCreateUser(user.getId()); | 
|                     ur.setRoleId(srr.getId()); | 
|                     ur.setUserId(cu.getUserId()); | 
|                     ur.setStatus(Constants.ZERO); | 
|                     ur.setInvalidTime(DateUtil.getCurrentDate()); | 
|                     ur.setCreateTime(ur.getInvalidTime()); | 
|                     ur.setRemark("系统导入"); | 
|                     systemUserRoleMapper.insert(ur); | 
|                 } | 
|             } | 
|             companyUserService.create(cu); | 
|             list.add(p); | 
|             index++; | 
|         } | 
|   | 
|     } | 
|     @Transactional(rollbackFor = {BusinessException.class,Exception.class}) | 
|     @Override | 
|     public void importLingYangUser(AutoLoginUserDTO userParam, String pwd, Company com)  { | 
|         //解析excel | 
|         if(userParam == null ){ | 
|             throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "用户参数有误!"); | 
|         } | 
|   | 
|         QueryCompanyUserExtDTO qUser = new QueryCompanyUserExtDTO(); | 
|         qUser.setDeleted(Constants.ZERO); | 
|         qUser.setCompanyId(com.getId()); | 
| //      qUser.setRootDepartId(com.getRootDepartment().getId()); | 
|         if(userParam.getOrigin() == Constants.COMPANY_ORIGIN.lingyang){ | 
|             qUser.setLingyangUserid(userParam.getUserId()); | 
|         }else  if(userParam.getOrigin() == Constants.COMPANY_ORIGIN.edgp){ | 
|             qUser.setEdgpUserId(userParam.getUserId()); | 
|         } | 
|         //查询用户数据 | 
|         CompanyUserExtListVO model = companyUserExtMapper.selectModel(qUser); | 
|         if(model != null){ | 
|             //如果没有绑定过 注册管理员账号 | 
|            com.setUserModel(model); | 
|            return; | 
|         } | 
|   | 
|         QueryCompanyUserExtDTO cuu = new QueryCompanyUserExtDTO(); | 
|         cuu.setDeleted(Constants.ZERO); | 
|         cuu.setRootDepartId(com.getRootDepartment().getId()); | 
|         cuu.setPhone(userParam.getPhone()); | 
|         CompanyUserExtListVO phoneUser = companyUserExtMapper.selectModel(cuu); | 
|         if(phoneUser!=null){ | 
|             com.setUserModel(phoneUser); | 
|             CompanyUser cu = new CompanyUser(); | 
|             cu.setId(phoneUser.getId()); | 
|             cu.setLingyangUserid(userParam.getUserId()); | 
|             cu.setUpdateTime(new Date()); | 
|             //绑定羚羊平台数据 | 
|             companyUserExtMapper.updateById(cu); | 
|             return; | 
|   | 
|         } | 
|   | 
|         //如果用户不存在,新增企业用户 | 
|         userParam.setName(StringUtils.defaultString(userParam.getName(),userParam.getPhone())); | 
|         if(StringUtils.isBlank(userParam.getPhone())){ | 
|             throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起, 【手机号】不能为空!"); | 
|         } | 
|         Date date = DateUtil.getCurrentDate(); | 
|         CompanyUser cu = new CompanyUser(); | 
|         cu.setRootDepartId(com.getRootDepartment().getId()); | 
|         cu.setPhone(userParam.getPhone()); | 
|         cu.setName(userParam.getName()); | 
|         cu.setStatus(Constants.ZERO); | 
|         cu.setDeleted(Constants.ZERO); | 
|         cu.setCreateTime(date); | 
|         cu.setCode("NO."+userParam.getPhone()); | 
|         cu.setPhoneAuthStatus(Constants.ZERO+""); | 
|         cu.setQrcodeid(barcodeParamExtService.getByType(com.getId(),com.getRootDepartment().getId(),Constants.BARCODEPARAM_TYPE.user)+""); | 
|         cu.setComDepartId(com.getRootDepartment().getId()); | 
|         cu.setDepartmentId(com.getRootDepartment().getId()); | 
|         if(userParam.getOrigin() == Constants.COMPANY_ORIGIN.lingyang){ | 
|             cu.setLingyangUserid(userParam.getUserId()); | 
|         }else if(userParam.getOrigin() == Constants.COMPANY_ORIGIN.edgp){ | 
|             cu.setEdgpUserId(userParam.getUserId()); | 
|         } | 
|   | 
|         SystemUser systemUser = new SystemUser(); | 
|         systemUser.setUsername(cu.getPhone()); | 
|         systemUser.setDeleted(Boolean.FALSE); | 
|         SystemUser su = systemUserService.findOne(systemUser); | 
|         if(su!=null){ | 
|             //如果总账号存在了,直接绑定 | 
|             if(!Constants.equalsInteger(su.getType(),Constants.USERTYPE.COM)){ | 
|                 throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,【手机号】已存在,非企业用户账号!"); | 
|             } | 
|             cu.setUserId(su.getId()); | 
|         }else{ | 
|             // 生成密码盐 | 
|             String salt = RandomStringUtils.randomAlphabetic(6); | 
|             // 生成密码 | 
|             systemUser.setPassword(Utils.Secure.encryptPassword(pwd, salt)); | 
|             systemUser.setSalt(salt); | 
|             systemUser.setEmpNo(cu.getCode()); | 
|             systemUser.setRealname(userParam.getName()); | 
|             systemUser.setDeleted(false); | 
|             systemUser.setCreateTime(date); | 
|             systemUser.setMobile(userParam.getPhone()); | 
|             systemUser.setType(Constants.USERTYPE.COM); | 
|             systemUser.setStatus(Constants.ZERO); | 
|             Integer userId = systemUserService.create(systemUser); | 
|             cu.setUserId(userId); | 
|         } | 
|         companyUserService.create(cu); | 
|         if(StringUtils.equals(userParam.getManager(),Constants.ONE+"")){ | 
|             //如果是管理员角色,绑定默认角色 | 
|             SystemRole sr = new SystemRole(); | 
|             sr.setDeleted(false); | 
|             sr.setCompanyId(com.getId()); | 
|             sr.setType(Constants.ROLETYPE.com); | 
|             //查询全部角色数据 | 
|             List<SystemRole> srList = systemRoleMapper.selectList(new QueryWrapper<>(sr)); | 
|             if(srList!=null && srList.size()>0){ | 
|                 List<SystemUserRole> urList = new ArrayList<>(); | 
|                 for(SystemRole tr :srList){ | 
|   | 
|                     SystemUserRole userRole = new SystemUserRole(); | 
|                     userRole.setUserId(cu.getUserId()); | 
|                     userRole.setDeleted(false); | 
|                     userRole.setRoleId(tr.getId()); | 
|                     userRole.setStatus(Constants.ZERO); | 
|                     userRole.setInvalidTime(DateUtil.getCurrentDate()); | 
|                     userRole.setCreateTime(userRole.getInvalidTime()); | 
|                     userRole.setRemark("羚羊企业生成自动导入"); | 
|                     urList.add(userRole); | 
| //                    systemUserRoleMapper.insert(userRole); | 
|                 } | 
|                 systemRoleMapper.insertRoleUserBatch(urList); | 
|             } | 
|         } | 
|     } | 
|     @Transactional(rollbackFor = {BusinessException.class,Exception.class}) | 
|     @Override | 
|     public  void importPlat(CompanyInitDataDTO userParam, String pwd, Company com) { | 
|         //解析excel | 
|         if(userParam == null ){ | 
|             throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "用户参数有误!"); | 
|         } | 
|   | 
|         QueryCompanyUserExtDTO cuu = new QueryCompanyUserExtDTO(); | 
|         cuu.setDeleted(Constants.ZERO); | 
|         cuu.setRootDepartId(com.getRootDepartment().getId()); | 
|         cuu.setPhone(userParam.getPhone()); | 
|         CompanyUserExtListVO phoneUser = companyUserExtMapper.selectModel(cuu); | 
|         if(phoneUser!=null){ | 
|             com.setUserModel(phoneUser); | 
|             return; | 
|         } | 
|         //如果用户不存在,新增企业用户 | 
|         userParam.setName(StringUtils.defaultString(userParam.getName(),userParam.getPhone())); | 
|         if(StringUtils.isBlank(userParam.getPhone())){ | 
|             throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起, 【手机号】不能为空!"); | 
|         } | 
|         Date date = DateUtil.getCurrentDate(); | 
|         CompanyUser cu = new CompanyUser(); | 
|         cu.setRootDepartId(com.getRootDepartment().getId()); | 
|         cu.setPhone(userParam.getPhone()); | 
|         cu.setName(userParam.getName()); | 
|         cu.setStatus(Constants.ZERO); | 
|         cu.setDeleted(Constants.ZERO); | 
|         cu.setCreateTime(date); | 
|         cu.setCode("NO."+userParam.getPhone()); | 
|         cu.setPhoneAuthStatus(Constants.ZERO+""); | 
|         cu.setQrcodeid(barcodeParamExtService.getByType(com.getId(),com.getRootDepartment().getId(),Constants.BARCODEPARAM_TYPE.user)+""); | 
|         cu.setComDepartId(com.getRootDepartment().getId()); | 
|         cu.setDepartmentId(com.getRootDepartment().getId()); | 
|         //设置为 主账号 | 
|         cu.setIsMaster(Constants.ONE); | 
|         SystemUser systemUser = new SystemUser(); | 
|         systemUser.setUsername(cu.getPhone()); | 
|         systemUser.setDeleted(Boolean.FALSE); | 
|         SystemUser su = systemUserService.findOne(systemUser); | 
|         if(su!=null){ | 
|             //如果总账号存在了,直接绑定 | 
|             if(!Constants.equalsInteger(su.getType(),Constants.USERTYPE.COM)){ | 
|                 throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,【手机号】已存在,非企业用户账号!"); | 
|             } | 
|             cu.setUserId(su.getId()); | 
|         }else{ | 
|             // 生成密码盐 | 
|             String salt = RandomStringUtils.randomAlphabetic(6); | 
|             // 生成密码 | 
|             systemUser.setPassword(Utils.Secure.encryptPassword(pwd, salt)); | 
|             systemUser.setSalt(salt); | 
|             systemUser.setEmpNo(cu.getCode()); | 
|             systemUser.setRealname(userParam.getName()); | 
|             systemUser.setDeleted(false); | 
|             systemUser.setCreateTime(date); | 
|             systemUser.setMobile(userParam.getPhone()); | 
|             systemUser.setType(Constants.USERTYPE.COM); | 
|             systemUser.setStatus(Constants.ZERO); | 
|             Integer userId = systemUserService.create(systemUser); | 
|             cu.setUserId(userId); | 
|         } | 
|         companyUserService.create(cu); | 
|         //如果是管理员角色,绑定默认角色 | 
|         SystemRole sr = new SystemRole(); | 
|         sr.setDeleted(false); | 
|         sr.setCompanyId(com.getId()); | 
|         sr.setType(Constants.ROLETYPE.com); | 
|         //查询全部角色数据 | 
|         List<SystemRole> srList = systemRoleMapper.selectList(new QueryWrapper<>(sr)); | 
|         if(srList!=null && srList.size()>0){ | 
|             List<SystemUserRole> urList = new ArrayList<>(); | 
|             for(SystemRole tr :srList){ | 
|   | 
|                 SystemUserRole userRole = new SystemUserRole(); | 
|                 userRole.setUserId(cu.getUserId()); | 
|                 userRole.setDeleted(false); | 
|                 userRole.setRoleId(tr.getId()); | 
|                 userRole.setStatus(Constants.ZERO); | 
|                 userRole.setInvalidTime(DateUtil.getCurrentDate()); | 
|                 userRole.setCreateTime(userRole.getInvalidTime()); | 
|                 userRole.setRemark("羚羊企业生成自动导入"); | 
|                 urList.add(userRole); | 
| //                    systemUserRoleMapper.insert(userRole); | 
|             } | 
|             systemRoleMapper.insertRoleUserBatch(urList); | 
|         } | 
|     } | 
|   | 
|     private void checkRepeatMobileOrNo(ImportUserDTO p, List<ImportUserDTO> list, int index ) { | 
|         if(StringUtils.isBlank(p.getName())|| StringUtils.isBlank(p.getPhone())){ | 
|             throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【姓名】和【手机号】不能为空!"); | 
|         } | 
|         if(!p.getPhone().startsWith("1") || p.getPhone().length()!=11){ | 
|             throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【手机号】不合法!"); | 
|         } | 
|         for(ImportUserDTO t : list){ | 
|             if(StringUtils.equals(p.getPhone(),t.getPhone())){ | 
|                 throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【手机号】在表格中重复出现,请检查后重试!"); | 
|             } | 
|             if(StringUtils.isNotBlank(p.getNo()) && StringUtils.equals(p.getNo(),t.getNo())){ | 
|                 throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【工号】在表格中重复出现,请检查后重试!"); | 
|             } | 
|         } | 
|     } | 
|   | 
|     private CompanyPosition getPositionByName(String position, List<CompanyPosition> cpList) { | 
|         if(cpList!=null){ | 
|             for(CompanyPosition cp : cpList){ | 
|                 if(StringUtils.equals(cp.getName(),position)){ | 
|                     return cp; | 
|                 } | 
|             } | 
|         } | 
|         return null; | 
|     } | 
|   | 
|     private SystemRole getRoleByName(String position, List<SystemRole> cpList) { | 
|         if(cpList!=null){ | 
|             for(SystemRole cp : cpList){ | 
|                 if(StringUtils.equals(cp.getName(),position)){ | 
|                     return cp; | 
|                 } | 
|             } | 
|         } | 
|         return null; | 
|     } | 
|   | 
|     @Override | 
|     @Transactional(rollbackFor = {Exception.class,BusinessException.class}) | 
|     public void create(CreateSystemUserDTO systemUser) { | 
|         // 验证用户名 | 
|         if(StringUtils.isBlank(systemUser.getMobile())){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "手机号不能为空!"); | 
|         } | 
|         systemUser.setUsername(systemUser.getMobile()); | 
|         SystemUser queryUserDto = new SystemUser(); | 
|         queryUserDto.setUsername(systemUser.getUsername()); | 
|         queryUserDto.setDeleted(Boolean.FALSE); | 
|         SystemUser user = systemUserService.findOne(queryUserDto); | 
|         Integer userId = null; | 
|         LoginUserInfo loginUser = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         if(Constants.equalsInteger(loginUser.getType(),Constants.USERTYPE.COM)){ | 
|             //如果是企业用户 | 
|             if (systemUser.getDepartmentId() == null && departmentExtService.getModelById(loginUser.getCompany().getId(),systemUser.getDepartmentId()) == null){ | 
|                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "请选择正确的部门"); | 
|             } | 
|             //添加企业员工关联关系 | 
|             CompanyUser cu = new CompanyUser(); | 
|             cu.setDeleted(Constants.ZERO); | 
|             cu.setRootDepartId(loginUser.getRootDepartment().getId()); | 
|             //限制人数 | 
|             int limitUserNum = Constants.formatIntegerNum(loginUser.getCompany().getOpenUserNum()); | 
|             if(limitUserNum > 0){ | 
|                 //人数限制输入0,表示不限制人数 | 
|                 if(companyUserExtMapper.selectCount(new QueryWrapper<>(cu)) +1 > limitUserNum ){ | 
|                     throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户数量超过购买数量,请联系业务经理续购!"); | 
|                 } | 
|             } | 
|             if(user ==null){ | 
|                 //如果用户账号不存在,新增用户 | 
|                 // 生成密码盐 | 
|                 String salt = RandomStringUtils.randomAlphabetic(6); | 
|                 // 生成密码 | 
|                 systemUser.setPassword(Utils.Secure.encryptPassword(systemUser.getPassword(), salt)); | 
|                 systemUser.setSalt(salt); | 
|                 systemUser.setType(Constants.USERTYPE.COM); | 
|                 // 创建用户记录 | 
|                   userId = systemUserService.create(systemUser); | 
|             }else{ | 
|                 userId = user.getId(); | 
|                 CompanyUser cuu = new CompanyUser(); | 
|                 cuu.setDeleted(Constants.ZERO); | 
|                 cuu.setRootDepartId(loginUser.getRootDepartment().getId()); | 
|                 cuu.setUserId(userId); | 
|                 if(companyUserService.findOne(cuu) !=null){ | 
|                     throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号已存在!"); | 
|                 } | 
|             } | 
|             cu.setCode(systemUser.getEmpNo()); | 
|             if(companyUserService.findOne(cu) !=null){ | 
|                 throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号已存在"); | 
|             } | 
|             cu.setUserId(userId); | 
|             cu.setComDepartId(loginUser.getComDepartment().getId()); | 
|             cu.setCreateUser(loginUser.getId()); | 
|             cu.setCreateTime(DateUtil.getCurrentDate()); | 
|             cu.setEmailAuthStatus(Constants.ZERO); | 
|             cu.setName(systemUser.getRealname()); | 
|             cu.setPhone(systemUser.getMobile()); | 
|             cu.setPhoneAuthStatus(Constants.ZERO+""); | 
|             cu.setDepartmentId(systemUser.getDepartmentId()); | 
|             cu.setQrcodeid(barcodeParamExtService.getByType(loginUser.getCompany().getId(),loginUser.getCurComDepartment().getId(),Constants.BARCODEPARAM_TYPE.user)+""); | 
|             if (systemUser.getPositionIds() != null && systemUser.getPositionIds().size() > 0) { | 
|                 cu.setPositionId(systemUser.getPositionIds().get(0)); | 
|             } | 
|             if(systemUser.getProcedureIds()!=null && systemUser.getProcedureIds().size()>0){ | 
|                 QueryProceduresExtDTO p = new QueryProceduresExtDTO(); | 
|                 p.setIds(systemUser.getProcedureIds()); | 
|                 p.setRootDepartId(loginUser.getRootDepartment().getId()); | 
|                 p.setDeleted(Constants.ZERO); | 
|                 //查询全部工序 | 
|                 List<ProceduresExtListVO> pList = proceduresExtMapper.selectList(p); | 
|                 if(pList!=null){ | 
|                     String pId = ""; | 
|                     for(ProceduresExtListVO tp : pList){ | 
|                         if(StringUtils.isNotBlank(pId)){ | 
|                             pId+=","; | 
|                         } | 
|                         pId+=tp.getId(); | 
|                     } | 
|                     cu.setProcedureIds(pId); | 
|                 } | 
|             } | 
|             companyUserService.create(cu); | 
|         }else{ | 
|             //如果是平台用户 | 
|             if (user != null) { | 
|                 throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "用户名已存在"); | 
|             } | 
|             // 验证工号 | 
|             if (StringUtils.isNotBlank(systemUser.getEmpNo())) { | 
|                 queryUserDto = new SystemUser(); | 
|                 queryUserDto.setDeleted(Boolean.FALSE); | 
|                 queryUserDto.setEmpNo(systemUser.getEmpNo()); | 
|                 user = systemUserService.findOne(queryUserDto); | 
|                 if (user != null) { | 
|                     throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号已存在"); | 
|                 } | 
|             } | 
|             // 生成密码盐 | 
|             String salt = RandomStringUtils.randomAlphabetic(6); | 
|             // 生成密码 | 
|             systemUser.setPassword(Utils.Secure.encryptPassword(systemUser.getPassword(), salt)); | 
|             systemUser.setSalt(salt); | 
|             systemUser.setType(Constants.USERTYPE.PLAT); | 
|             // 创建用户记录 | 
|              userId = systemUserService.create(systemUser); | 
|             // 设置岗位 | 
|             if (systemUser.getPositionIds() != null && systemUser.getPositionIds().size() > 0) { | 
|                 for (Integer positionId : systemUser.getPositionIds()) { | 
|                     SystemPositionUser systemPositionUser = new SystemPositionUser(); | 
|                     systemPositionUser.setPositionId(positionId); | 
|                     systemPositionUser.setUserId(userId); | 
|                     systemPositionUser.setOperaUser(systemUser.getCreateUser()); | 
|                     systemPositionUser.setOperaTime(new Date()); | 
|                     systemPositionUserService.create(systemPositionUser); | 
|                 } | 
|             } | 
|             // 设置部门 | 
|             if (systemUser.getDepartmentId() != null) { | 
|                 SystemDepartmentUser systemDepartmentUser = new SystemDepartmentUser(); | 
|                 systemDepartmentUser.setDepartmentId(systemUser.getDepartmentId()); | 
|                 systemDepartmentUser.setUserId(userId); | 
|                 systemDepartmentUser.setOperaUser(systemUser.getCreateUser()); | 
|                 systemDepartmentUser.setOperaTime(new Date()); | 
|                 systemDepartmentUserService.create(systemDepartmentUser); | 
|             } | 
|         } | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public void updateById(CreateSystemUserDTO systemUser) { | 
|         // 验证用户名 | 
|      /*   SystemUser queryUserDto = new SystemUser(); | 
|         queryUserDto.setUsername(systemUser.getUsername()); | 
|         queryUserDto.setDeleted(Boolean.FALSE); | 
|         SystemUser user = systemUserService.findOne(queryUserDto); | 
|         if (user != null && !user.getId().equals(systemUser.getId())) { | 
|             throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "用户名已存在"); | 
|         }*/ | 
|         systemUser.setUsername(null); | 
|         LoginUserInfo loginUser = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         if(Constants.equalsInteger(loginUser.getType(),Constants.USERTYPE.COM)){ | 
|             //如果是企业用户 | 
|             CompanyUser u = new CompanyUser(); | 
|             u.setUserId(systemUser.getId()); | 
|             u.setRootDepartId(loginUser.getRootDepartment().getId()); | 
|             u.setDeleted(Constants.ZERO); | 
|   | 
|             //查询企业用户数据 | 
|             CompanyUser cu = companyUserService.findOne(u); | 
|             if(systemUser.getStatus()!=null){ | 
|                 u.setStatus(systemUser.getStatus()); | 
|             } | 
|             //不修改状态 | 
|             systemUser.setStatus(null); | 
|             if(cu == null){ | 
|                 throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "企业用户信息不存在"); | 
|             } | 
|             if(StringUtils.isNotBlank(systemUser.getEmpNo())){ | 
|                 //如果修改工号,坚持是否重复 | 
|                 u.setCode(systemUser.getEmpNo()); | 
|                 CompanyUser codeUser = companyUserService.findOne(u); | 
|                 if (codeUser != null && !codeUser.getId().equals(cu.getId())) { | 
|                     throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号已存在"); | 
|                 } | 
|             } | 
|             u.setId(cu.getId()); | 
|             u.setName(systemUser.getRealname()); | 
|             u.setPhone(systemUser.getUsername()); | 
|             u.setUpdateTime(DateUtil.getCurrentDate()); | 
|             u.setUpdateUser(loginUser.getId()); | 
|             u.setDepartmentId(systemUser.getDepartmentId()); | 
|             if (systemUser.getPositionIds() != null && systemUser.getPositionIds().size() > 0) { | 
|                 u.setPositionId(systemUser.getPositionIds().get(0)); | 
|             } | 
|             if (systemUser.getDepartmentId() != null) { | 
|                  DepartmentExtListVO de = departmentExtService.getModelById(loginUser.getCompany().getId(),systemUser.getDepartmentId()); | 
|                  if(de == null){ | 
|                      throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "请选择正确的部门!"); | 
|                  } | 
|                  Integer cdId = departmentExtService.getComDepartId(de); | 
|                  u.setComDepartId(cdId); | 
|             } | 
|             if(systemUser.getProcedureIds()!=null && systemUser.getProcedureIds().size()>0){ | 
|                 QueryProceduresExtDTO p = new QueryProceduresExtDTO(); | 
|                 p.setIds(systemUser.getProcedureIds()); | 
|                 p.setRootDepartId(loginUser.getRootDepartment().getId()); | 
|                 p.setDeleted(Constants.ZERO); | 
|                 //查询全部工序 | 
|                 List<ProceduresExtListVO> pList = proceduresExtMapper.selectList(p); | 
|                 if(pList!=null){ | 
|                     String pId = ""; | 
|                     for(ProceduresExtListVO tp : pList){ | 
|                         if(StringUtils.isNotBlank(pId)){ | 
|                             pId += ","; | 
|                         } | 
|                         pId += tp.getId(); | 
|                     } | 
|                     u.setProcedureIds(pId); | 
|                 } | 
|             } | 
|             //更新关联数据 | 
|             companyUserService.updateById(u); | 
|         }else{ | 
|             //如果是平台用户信息 | 
|             // 验证工号 | 
|             if (StringUtils.isNotBlank(systemUser.getEmpNo())) { | 
|                 SystemUser  queryUserDto = new SystemUser(); | 
|                 queryUserDto.setEmpNo(systemUser.getEmpNo()); | 
|                 queryUserDto.setDeleted(Boolean.FALSE); | 
|                 SystemUser user = systemUserService.findOne(queryUserDto); | 
|                 if (user != null && !user.getId().equals(systemUser.getId())) { | 
|                     throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号已存在"); | 
|                 } | 
|             } | 
|             // 设置岗位 | 
|             SystemPositionUser deletePositionDto = new SystemPositionUser(); | 
|             deletePositionDto.setUserId(systemUser.getId()); | 
|             systemPositionUserService.delete(deletePositionDto); | 
|             if (systemUser.getPositionIds() != null && systemUser.getPositionIds().size() > 0) { | 
|                 for (Integer positionId : systemUser.getPositionIds()) { | 
|                     SystemPositionUser systemPositionUser = new SystemPositionUser(); | 
|                     systemPositionUser.setPositionId(positionId); | 
|                     systemPositionUser.setUserId(systemUser.getId()); | 
|                     systemPositionUser.setOperaUser(systemUser.getUpdateUser()); | 
|                     systemPositionUser.setOperaTime(new Date()); | 
|                     systemPositionUserService.create(systemPositionUser); | 
|                 } | 
|             } | 
|         } | 
|         // 修改用户 | 
|         systemUserService.updateById(systemUser); | 
|         // 设置部门 | 
|         SystemDepartmentUser deleteDepartmentDto = new SystemDepartmentUser(); | 
|         deleteDepartmentDto.setUserId(systemUser.getId()); | 
|         systemDepartmentUserService.delete(deleteDepartmentDto); | 
|         if (systemUser.getDepartmentId() != null) { | 
|             SystemDepartmentUser systemDepartmentUser = new SystemDepartmentUser(); | 
|             systemDepartmentUser.setDepartmentId(systemUser.getDepartmentId()); | 
|             systemDepartmentUser.setUserId(systemUser.getId()); | 
|             systemDepartmentUser.setOperaUser(systemUser.getUpdateUser()); | 
|             systemDepartmentUser.setOperaTime(new Date()); | 
|             systemDepartmentUserService.create(systemDepartmentUser); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 更换企业用户组织信息 | 
|      * @param user | 
|      */ | 
|     @Override | 
|     public void    updateDepart(UpdateUserDepartDTO user){ | 
|         LoginUserInfo loginUser = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         CompanyUser cu = new CompanyUser(); | 
|         cu.setDeleted(Constants.ZERO); | 
|         cu.setUserId(user.getUserId()); | 
|         cu.setRootDepartId(loginUser.getRootDepartment().getId()); | 
|         if(companyUserService.findOne(cu) == null){ | 
|             throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "员工信息不存在"); | 
|         } | 
|         DepartmentExtListVO depart = departmentExtService.getModelById(loginUser.getCompany().getId(),user.getDepartmentId()); | 
|         if(depart ==null){ | 
|             throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "部门信息不存在"); | 
|         } | 
|         cu.setDepartmentId(user.getDepartmentId()); | 
|         cu.setComDepartId(departmentExtService.getComDepartId(depart)); | 
|         companyUserService.updateById(cu); | 
|     } | 
|   | 
|     @Override | 
|     @Transactional | 
|     public void createUserRole(CreateUserRoleDTO dto) { | 
|         // 删除关联角色 | 
|         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         SystemUserRole deleteDto = new SystemUserRole(); | 
|         deleteDto.setUserId(dto.getUserId()); | 
|         if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ | 
|             deleteDto.setCompanyId(user.getCompany().getId()); | 
|         } | 
|         systemUserRoleService.delete(deleteDto); | 
|         // 新增新的角色 | 
|         for (Integer roleId : dto.getRoleIds()) { | 
|             SystemUserRole newUserRole = new SystemUserRole(); | 
|             newUserRole.setUserId(dto.getUserId()); | 
|             newUserRole.setRoleId(roleId); | 
|             systemUserRoleService.create(newUserRole); | 
|         } | 
|     } | 
| } |