| | |
| | | import com.doumee.core.wx.WXConstant; |
| | | import com.doumee.dao.admin.request.LaborEmpowerDTO; |
| | | import com.doumee.dao.admin.request.LaborMemberDTO; |
| | | import com.doumee.dao.admin.request.MemberImport; |
| | | import com.doumee.dao.admin.request.MemberQuery; |
| | | import com.doumee.dao.admin.response.StagingDataVO; |
| | | import com.doumee.dao.business.*; |
| | |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.Date; |
| | | import java.util.*; |
| | |
| | | //脱敏操作 |
| | | Member insert = initAddMemberModel(member,loginUserInfo); |
| | | //海康人员新增业务 |
| | | if(dealHkUserBiz(insert)){ |
| | | try { |
| | | try { |
| | | if(dealHkUserBiz(insert)){ |
| | | memberMapper.insert(insert); |
| | | //创建系统登陆账号(默认无任何角色) |
| | | createSystemUser(insert); |
| | | }catch (Exception e){ |
| | | //如果发生异常,删除已经创建的人员信息 |
| | | deleteHkUserBiz(insert.getHkId()); |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,员工信息新建失败,请稍后重试!"); |
| | | if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){ |
| | | //如果是内部组织人员,新增系统登陆账号 |
| | | createSystemUser(insert); |
| | | } |
| | | }else{ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,员工信息同步安防平台失败,请稍后重试!"); |
| | | } |
| | | }else{ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,员工信息同步安防平台失败,请稍后重试!"); |
| | | }catch (Exception e){ |
| | | //如果发生异常,删除已经创建的人员信息 |
| | | deleteHkUserBiz(insert.getHkId()); |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,员工信息新建失败,请稍后重试!"); |
| | | } |
| | | return insert; |
| | | } |
| | |
| | | // 生成密码 |
| | | user.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt)); |
| | | user.setSalt(salt); |
| | | |
| | | // 创建用户记录 |
| | | user.setType(insert.getType()); |
| | | user.setUsername(insert.getPhone()); |
| | |
| | | insert.setCreateDate(new Date()); |
| | | insert.setEditor(loginUserInfo.getId()); |
| | | insert.setEditDate(new Date()); |
| | | insert.setHkOrgId(member.getHkOrgId()); |
| | | insert.setIsdeleted(Constants.ZERO); |
| | | insert.setCompanyId(member.getCompanyId()); |
| | | insert.setFaceImg(member.getFaceImg()); |
| | |
| | | * @param hkId |
| | | */ |
| | | private void deleteHkUserBiz(String hkId) { |
| | | if(StringUtils.isBlank(hkId)){ |
| | | return; |
| | | } |
| | | UserDelRequest request = new UserDelRequest(); |
| | | request.setPersonIds(new String[]{hkId}); |
| | | BaseResponse<List<UserDelResponse>> result = HKService.delBatchUser(request); |
| | |
| | | private boolean dealHkUserBiz(Member insert) { |
| | | String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() |
| | | +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); |
| | | Company company = companyMapper.selectById(insert.getCompanyId()); |
| | | if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该组织信息已被删除,请刷新页面重试!"); |
| | | } |
| | | if(StringUtils.isBlank(company.getHkId())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该组织信息未同步安防平台,请先前往【组织管理】菜单进行维护!"); |
| | | } |
| | | insert.setHkOrgId(company.getHkId()); |
| | | UserAddRequest hkAddRequest = HkSyncOrgUserToHKServiceImpl.getUserAddModel(insert,path,Constants.ZERO); |
| | | if(hkAddRequest == null){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,人脸照片有误,请尝试重新上传!"); |
| | |
| | | } |
| | | |
| | | private void isMemberParamValid(Member member) { |
| | | if(member.getCompanyId() == null){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | if (StringUtils.isBlank(member.getPhone())||!PhoneUtil.isPhone(member.getPhone())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"电话号码格式有误"); |
| | | } |
| | |
| | | } |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"身份证号格式有误"); |
| | | } |
| | | |
| | | SystemUser queryUserDto = new SystemUser(); |
| | | queryUserDto.setUsername(member.getPhone()); |
| | | queryUserDto.setDeleted(Boolean.FALSE); |
| | | SystemUser user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1")); |
| | | if (user != null) { |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号【"+queryUserDto.getUsername()+"】已被使用,不能重复"); |
| | | Company company = companyMapper.selectById(member.getCompanyId()); |
| | | if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该组织信息已被删除,请刷新页面重试!"); |
| | | } |
| | | // 验证工号 |
| | | if (StringUtils.isNotBlank(member.getCode())) { |
| | | queryUserDto = new SystemUser(); |
| | | if(StringUtils.isBlank(company.getHkId())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该组织信息未同步安防平台,请先前往【组织管理】菜单进行维护!"); |
| | | } |
| | | member.setHkOrgId(company.getHkId()); |
| | | member.setCompanyType(company.getType()); |
| | | if(Constants.equalsInteger(company.getType(),Constants.ONE)){ |
| | | SystemUser queryUserDto = new SystemUser(); |
| | | queryUserDto.setUsername(member.getPhone()); |
| | | queryUserDto.setDeleted(Boolean.FALSE); |
| | | queryUserDto.setEmpNo(member.getCode()); |
| | | user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1")); |
| | | SystemUser user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1")); |
| | | if (user != null) { |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号【"+member.getCode()+"】已存在"); |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号【"+queryUserDto.getUsername()+"】已被使用,不能重复"); |
| | | } |
| | | // 验证工号 |
| | | if (StringUtils.isNotBlank(member.getCode())) { |
| | | queryUserDto = new SystemUser(); |
| | | queryUserDto.setDeleted(Boolean.FALSE); |
| | | queryUserDto.setEmpNo(member.getCode()); |
| | | user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1")); |
| | | if (user != null) { |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号【"+member.getCode()+"】已存在"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | |
| | | @Override |
| | | public void roleAuthById(Integer id) { |
| | | public void roleAuthById(Integer id,LoginUserInfo user) { |
| | | Member member = memberMapper.selectById(id); |
| | | if(member==null || member.getIsdeleted().equals(Constants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"员工信息已删除"); |
| | |
| | | // List<MemberCard> cards = HkSyncOrgUserToHKServiceImpl.getNormalCardList(member,memberCardMapper); |
| | | HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper); |
| | | } |
| | | @Override |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | | public void batchRoleAuth(Member memberRole) { |
| | | if(memberRole.getIds() ==null |
| | | || memberRole.getIds().size() ==0 ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | if(memberRole.getRoleIds() ==null || memberRole.getRoleIds().length ==0){ |
| | | //如果是清空权限 |
| | | }else{ |
| | | if( ! (Constants.equalsObject(memberRole.getTimeType(),Constants.ZERO) |
| | | || (Constants.equalsObject(memberRole.getTimeType(),Constants.ONE) |
| | | && memberRole.getStartTime() !=null && memberRole.getEndTime() != null ))){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | if(Constants.equalsObject(memberRole.getTimeType(),Constants.ONE) && memberRole.getEndTime().getTime() < System.currentTimeMillis()){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"有效期截止日期不能小于当前时间!"); |
| | | } |
| | | if(Constants.equalsObject(memberRole.getTimeType(),Constants.ONE) && memberRole.getEndTime().getTime() <= memberRole.getStartTime().getTime()){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"有效期截止日期不能小于开始时间!"); |
| | | } |
| | | } |
| | | if(Constants.equalsObject(memberRole.getTimeType(),Constants.ZERO) ){ |
| | | memberRole.setStartTime(null); |
| | | memberRole.setEndTime(null); |
| | | } |
| | | for (Integer id : memberRole.getIds()){ |
| | | Member member = memberMapper.selectById(id); |
| | | if(member==null || member.getIsdeleted().equals(Constants.ONE)){ |
| | | //如果员工信息不合法直接跳过 |
| | | continue; |
| | | } |
| | | member.setStartTime(memberRole.getStartTime()); |
| | | member.setEndTime(memberRole.getEndTime()); |
| | | Integer ischange = getRoleIdByParam(memberRole.getRoleIds(),member,memberRoleMapper,deviceRoleMapper); |
| | | if(ischange == 0){ |
| | | return;//未发现权限变化,直接返回 |
| | | } |
| | | if(memberRole.getRoleIds()!=null && memberRole.getRoleIds().length>0 && StringUtils.isBlank(member.getRoleId())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,未查询到有效门禁组数据"); |
| | | } |
| | | memberMapper.update(null,new UpdateWrapper<Member>().lambda() |
| | | .eq(Member::getId,member.getId()) |
| | | .set(Member::getRoleId,member.getRoleId()) |
| | | .set(Member::getAuthStatus,Constants.ONE) |
| | | .set(Member::getStartTime,memberRole.getStartTime()) |
| | | .set(Member::getEndTime,memberRole.getEndTime()) |
| | | .set(Member::getEditor,memberRole.getLoginUserInfo().getId()) |
| | | .set(Member::getEditDate,new Date()) ); |
| | | saveUserActionBiz(member,memberRole.getLoginUserInfo(), Constants.UserActionType.AUTH_ROLE,userActionJoinMapper); |
| | | //重新授权 |
| | | HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper); |
| | | } |
| | | } |
| | | |
| | | public static Integer getRoleIdByParam(Integer[] param, Member member,MemberRoleMapper memberRoleMapper,DeviceRoleMapper deviceRoleMapper) { |
| | | //添加人员角色关联数据 |
| | | member.setRoleId(null); |
| | | List<MemberRole> roleList = memberRoleMapper.selectList( new QueryWrapper<MemberRole>().lambda() |
| | | .eq(MemberRole::getIsdeleted,Constants.ZERO) |
| | | .eq(MemberRole::getMemberId,member.getId())); |
| | | |
| | | member.setRoleId(""); |
| | | if((param == null || param.length==0 ) &&( roleList==null || roleList.size()==0)){ |
| | | //检查用户情况权限原本就是空的, 则无需处理 |
| | | return 0; |
| | | } |
| | | if((param == null || param.length==0 ) &&( roleList!=null && roleList.size()>0) ){ |
| | | //如果清空原来有权限,接口进行权限删除原有权限即可 |
| | | memberRoleMapper.delete(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId())); |
| | | return 1; |
| | | } |
| | | if(!Objects.isNull(param)&¶m.length>Constants.ZERO){ |
| | | /* if(roleList!=null && roleList.size()>0) { |
| | | //和原有权限进行对比,看是否权限发生变化 |
| | | boolean ischange1=false; |
| | | for (MemberRole role : roleList) { |
| | | ischange1=false; |
| | | for (int j = 0; j < param.length; j++) { |
| | | if(Constants.equalsInteger(role.getRoleId(),param[j])){ |
| | | ischange1=true; |
| | | break; |
| | | } |
| | | } |
| | | if(!ischange1){ |
| | | break; |
| | | } |
| | | } |
| | | |
| | | boolean ischange2 =false; |
| | | for (int j = 0; j < param.length; j++) { |
| | | ischange2=false; |
| | | for (MemberRole role : roleList) { |
| | | if(Constants.equalsInteger(role.getRoleId(),param[j])){ |
| | | ischange2=true; |
| | | break; |
| | | } |
| | | } |
| | | if(!ischange2){ |
| | | break; |
| | | } |
| | | } |
| | | if(ischange2 && ischange1){ |
| | | return 0;//权限未发生改变 |
| | | } |
| | | }*/ |
| | | //如果原来有权限,接口进行权限删除 |
| | | memberRoleMapper.delete(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId())); |
| | | //查询数据库存在的权限 |
| | | List<DeviceRole> deviceRoleList= deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda() |
| | | .eq(DeviceRole::getType,Constants.TWO) |
| | | .in(DeviceRole::getId,param)); |
| | | |
| | | String ids = ""; |
| | | if(CollectionUtils.isNotEmpty(deviceRoleList)){ |
| | | List<MemberRole> memberRoleList = new ArrayList<>(); |
| | | List<Integer> r = new ArrayList<>(); |
| | | for (int i = 0; i < deviceRoleList.size(); i++) { |
| | | DeviceRole deviceRole =deviceRoleList.get(i); |
| | | if(i>0){ |
| | | ids += ","; |
| | | } |
| | | Integer id =deviceRole.getId(); |
| | | ids += "["+id+"]"; |
| | | String doorids =deviceRole.getDoorIds(); |
| | | if(StringUtils.isNotBlank(doorids)){ |
| | | String[] ss = doorids.split(","); |
| | | try { |
| | | for(String s :ss){ |
| | | r.add(Integer.parseInt(s)); |
| | | } |
| | | }catch (Exception e){ |
| | | //脏数据不处理 |
| | | } |
| | | } |
| | | MemberRole memberRole = new MemberRole(); |
| | | memberRole.setCreateDate(new Date()); |
| | | memberRole.setMemberId(member.getId()); |
| | | memberRole.setIsdeleted(Constants.ZERO); |
| | | memberRole.setRoleId(deviceRole.getId()); |
| | | memberRoleList.add(memberRole); |
| | | } |
| | | memberRoleMapper.insertBatchSomeColumn(memberRoleList); |
| | | } |
| | | member.setRoleId(ids); |
| | | return 1; |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public void empowerByList(Member member) { |
| | | if(member.getIdList()!=null && member.getIdList().size() >0){ |
| | |
| | | userAction.setIsdeleted(Constants.ZERO); |
| | | userAction.setCreateDate(updateMember.getEditDate()); |
| | | userAction.setCreator(updateMember.getEditor()); |
| | | userAction.setBeforeStatus(updateMember.getStatus()); |
| | | userAction.setType(type.getKey()); |
| | | String info = type.getInfo(); |
| | | userAction.setRemark(info.replace("${param1}",user!=null?user.getRealname():"").replace("${param2}", com.doumee.core.utils.DateUtil.getPlusTime2(updateMember.getEditDate()))); |
| | |
| | | companyMapper.update(null,new UpdateWrapper<Company>().lambda() |
| | | .eq(Company::getId,model.getCompanyId()) |
| | | .set(Company::getHeadId,member.getId())); |
| | | //记录操作日志 |
| | | saveUserActionBiz(member,member.getLoginUserInfo(), Constants.UserActionType.BE_HEAD,userActionJoinMapper); |
| | | }else{ |
| | | //如果是设为主管 |
| | | companyMapper.update(null,new UpdateWrapper<Company>().lambda() |
| | | .eq(Company::getId,model.getCompanyId()) |
| | | .set(Company::getHeadId,null) |
| | | ); |
| | | saveUserActionBiz(member,member.getLoginUserInfo(),Constants.UserActionType.NOT_HEAD,userActionJoinMapper); |
| | | } |
| | | } |
| | | } |
| | |
| | | .eq(Objects.nonNull(pageWrap.getModel().getHkStatus()),Member::getHkStatus,pageWrap.getModel().getHkStatus()) |
| | | .eq(Objects.isNull(pageWrap.getModel().getIsdeleted()),Member::getIsdeleted,Constants.ZERO) |
| | | .eq(Objects.nonNull(pageWrap.getModel().getIsdeleted()),Member::getIsdeleted,pageWrap.getModel().getIsdeleted()) |
| | | .eq(Objects.nonNull(pageWrap.getModel().getCompanyType()),Company::getType,pageWrap.getModel().getCompanyType()) |
| | | .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getName,pageWrap.getModel().getCompanyName()) |
| | | // .eq(Member::getStatus,Constants.Status.ENABLE.getValue()) |
| | | // .eq(Member::getType,Constants.memberType.internal) |
| | |
| | | return stagingHeadVO; |
| | | } |
| | | |
| | | @Override |
| | | public String importBatch(MultipartFile file, LoginUserInfo loginUserInfo){ |
| | | |
| | | List<Member> list = memberJoinMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>() |
| | | .selectAll(Member.class) |
| | | .leftJoin(Company.class,Company::getId,Member::getCompanyId) |
| | | .eq(Member::getIsdeleted,Constants.ZERO) |
| | | ); |
| | | ExcelImporter ie = null; |
| | | List<MemberImport> dataList =null; |
| | | try { |
| | | ie = new ExcelImporter(file,0,0); |
| | | dataList = ie.getDataList(MemberImport.class,null); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if(dataList == null || dataList.size() ==0){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入数据为空!"); |
| | | } |
| | | List<String> idCardList = dataList.stream().map(m->m.getIdcardNo()).collect(Collectors.toList()); |
| | | Set<String> set = new HashSet<>(idCardList); |
| | | if(idCardList.size() != set.size()){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入数据存在身份证号相同数据!"); |
| | | } |
| | | |
| | | return "导入成功"; |
| | | } |
| | | |
| | | |
| | | |
| | | } |