| | |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.haikang.model.HKConstants; |
| | | import com.doumee.core.haikang.model.param.BaseResponse; |
| | | import com.doumee.core.haikang.model.param.request.UserAddRequest; |
| | | import com.doumee.core.haikang.model.param.request.UserDelRequest; |
| | | import com.doumee.core.haikang.model.param.respose.UserAddResponse; |
| | | import com.doumee.core.haikang.model.param.respose.UserDelResponse; |
| | | import com.doumee.core.haikang.service.HKService; |
| | | import com.doumee.core.model.LoginUserInfo; |
| | |
| | | import com.doumee.dao.admin.response.MemberInfoDTO; |
| | | import com.doumee.dao.admin.response.StagingDataVO; |
| | | import com.doumee.dao.business.*; |
| | | import com.doumee.dao.business.dao.CompanyMapper; |
| | | import com.doumee.dao.business.join.MemberJoinMapper; |
| | | import com.doumee.dao.business.join.RetentionJoinMapper; |
| | | import com.doumee.dao.business.join.UserActionJoinMapper; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.system.SystemUserMapper; |
| | | import com.doumee.dao.system.model.SystemDepartment; |
| | | import com.doumee.dao.system.model.SystemDepartmentUser; |
| | | import com.doumee.dao.system.model.SystemDictData; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.dao.web.reqeust.AccountLoginDTO; |
| | | import com.doumee.dao.web.reqeust.CheckVisitedDTO; |
| | | import com.doumee.dao.web.reqeust.VisitMemberDTO; |
| | |
| | | import com.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import org.apache.commons.collections.CollectionUtils; |
| | | import org.apache.commons.lang3.RandomStringUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | |
| | | |
| | | @Autowired |
| | | private VisitsMapper visitsMapper; |
| | | @Autowired |
| | | private SystemUserMapper systemUserMapper; |
| | | |
| | | |
| | | @Override |
| | | public Integer create(Member member) { |
| | | memberMapper.insert(member); |
| | | return member.getId(); |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | | public Member create(Member member) { |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(loginUserInfo == null){ |
| | | loginUserInfo = member.getLoginUserInfo(); |
| | | } |
| | | isMemberParamValid(member); |
| | | //获取出生日期 |
| | | //脱敏操作 |
| | | Member insert = initAddMemberModel(member,loginUserInfo); |
| | | //海康人员新增业务 |
| | | if(dealHkUserBiz(insert)){ |
| | | try { |
| | | memberMapper.insert(insert); |
| | | //创建系统登陆账号(默认无任何角色) |
| | | createSystemUser(insert); |
| | | }catch (Exception e){ |
| | | //如果发生异常,删除已经创建的人员信息 |
| | | deleteHkUserBiz(insert.getHkId()); |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,员工信息新建失败,请稍后重试!"); |
| | | } |
| | | }else{ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,员工信息同步安防平台失败,请稍后重试!"); |
| | | } |
| | | return insert; |
| | | } |
| | | private void createSystemUser(Member insert) { |
| | | SystemUser user = new SystemUser(); |
| | | // 生成密码盐 |
| | | String salt = RandomStringUtils.randomAlphabetic(6); |
| | | // 生成密码 |
| | | 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()); |
| | | user.setEmpNo(insert.getCode()); |
| | | user.setRealname(insert.getName()); |
| | | user.setCompanyId(insert.getCompanyId()); |
| | | user.setMobile(insert.getPhone()); |
| | | user.setCreateTime(insert.getCreateDate()); |
| | | user.setCreateUser(insert.getCreator()); |
| | | user.setUpdateUser(insert.getEditor()); |
| | | user.setUpdateTime(insert.getEditDate()); |
| | | user.setMemberId(insert.getId()); |
| | | user.setDeleted(Boolean.FALSE); |
| | | user.setFixed(Boolean.FALSE); |
| | | user.setStatus(Constants.ZERO); |
| | | systemUserMapper.insert(user); |
| | | } |
| | | |
| | | private Member initAddMemberModel(Member member, LoginUserInfo loginUserInfo) { |
| | | Member insert= new Member(); |
| | | insert.setCreator(loginUserInfo.getId()); |
| | | insert.setCreateDate(new Date()); |
| | | insert.setEditor(loginUserInfo.getId()); |
| | | insert.setEditDate(new Date()); |
| | | insert.setIsdeleted(Constants.ZERO); |
| | | insert.setCompanyId(member.getCompanyId()); |
| | | insert.setFaceImg(member.getFaceImg()); |
| | | insert.setImgurl(member.getImgurl()); |
| | | insert.setCode(member.getCode()); |
| | | insert.setType(Constants.TWO); |
| | | insert.setHkDate(new Date()); |
| | | insert.setName(member.getName()); |
| | | insert.setHkStatus(Constants.ONE); |
| | | insert.setSex(IdcardUtil.getGenderByIdCard(member.getIdcardNo()) ==1?Constants.TWO:Constants.ONE);//根据身份证号获取性别 |
| | | insert.setBirthday( DateUtil.parse(IdcardUtil.getBirthByIdCard(member.getIdcardNo()), "yyyyMMdd")); |
| | | insert.setPhone(member.getPhone()); |
| | | insert.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, member.getIdcardNo()));//身份证号加密 |
| | | insert.setIdcardDecode( Constants.getTuominStr(member.getIdcardNo())); |
| | | insert.setStatus(Constants.ZERO); |
| | | return insert; |
| | | } |
| | | |
| | | /** |
| | | * 删除海康人员信息 |
| | | * @param hkId |
| | | */ |
| | | private void deleteHkUserBiz(String hkId) { |
| | | UserDelRequest request = new UserDelRequest(); |
| | | request.setPersonIds(new String[]{hkId}); |
| | | BaseResponse<List<UserDelResponse>> result = HKService.delBatchUser(request); |
| | | } |
| | | |
| | | /** |
| | | * 海康人员新增业务 |
| | | * @param insert |
| | | * @return |
| | | */ |
| | | 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(),"对不起,人脸照片有误,请尝试重新上传!"); |
| | | } |
| | | //处理新增数据 |
| | | BaseResponse<UserAddResponse> result = HKService.addUser(hkAddRequest); |
| | | if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){ |
| | | insert.setHkId(hkAddRequest.getPersonId()); |
| | | insert.setFaceId(result.getData().getFaceId()); |
| | | if(StringUtils.isNotBlank(insert.getFaceId())){ |
| | | insert.setFaceStatus(Constants.ONE); |
| | | }else{ |
| | | insert.setFaceStatus(Constants.ZERO); |
| | | } |
| | | return true; |
| | | }else if(result!=null ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,同步安防平台失败【"+result.getMsg()+"】,请联系管理员!"); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | private void isMemberParamValid(Member member) { |
| | | if (!PhoneUtil.isPhone(member.getPhone())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"电话号码格式有误"); |
| | | } |
| | | if (!IdcardUtil.isValidCard(member.getIdcardNo())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"身份证号格式有误"); |
| | | } |
| | | |
| | | SystemUser systemUser = new SystemUser(); |
| | | 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(), "手机号【"+systemUser.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()+"】已存在"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Transactional |
| | | @Override |
| | | public Integer laborMemberCreate(LaborMemberDTO member) { |
| | | |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | |
| | | if (PhoneUtil.isPhone(member.getPhone())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"电话号码格式有误"); |
| | | } |
| | |
| | | memberMapper.updateById(member); |
| | | } |
| | | @Override |
| | | public void updateFace(Member member) { |
| | | public boolean updateFace(Member member) { |
| | | QueryWrapper<Member> wrapper = new QueryWrapper<>(member); |
| | | wrapper.lambda().ne(Member::getRemark,"人脸已同步最新"); |
| | | List<Member> list =memberMapper.selectList(wrapper); |
| | |
| | | update.setRemark("人脸已同步最新"); |
| | | update.setFaceStatus(Constants.ONE); |
| | | memberMapper.updateById(update); |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | @Override |
| | | public void delHkForce(Member member) { |
| | |
| | | queryWrapper.eq(Member::getCompanyId,member.getCompanyId()); |
| | | } |
| | | queryWrapper.eq(Member::getIsdeleted,Constants.ZERO); |
| | | |
| | | List<Member> list = memberJoinMapper.selectJoinList(Member.class,queryWrapper); |
| | | if(list!=null){ |
| | | for(Member m : list){ |
| | |
| | | .having(pageWrap.getModel().getTrainTimeEndTime()!=null,"trainTimeEndTime < "+ DateUtil.format(end,"yyyy-MM-dd HH:mm:ss")); |
| | | IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper); |
| | | if (!CollectionUtils.isEmpty(memberIPage.getRecords())){ |
| | | memberIPage.getRecords().forEach(s->s.setSex(IdcardUtil.getGenderByIdCard(s.getIdcardDecode()))); |
| | | memberIPage.getRecords().forEach(s->s.setSex(IdcardUtil.getGenderByIdCard(s.getIdcardDecode()) ==1?Constants.TWO:Constants.ONE)); |
| | | } |
| | | return PageData.from(memberIPage); |
| | | } |
| | |
| | | |
| | | queryWrapper.selectAll(Member.class); |
| | | queryWrapper.selectAs(Company::getName,Member::getCompanyName); |
| | | queryWrapper.selectAs(Company::getCompanyNamePath,Member::getCompanyNamePath); |
| | | queryWrapper.selectAs(Company::getCompanyPath,Member::getCompanyPath); |
| | | queryWrapper.select(" ( select count(1) from member_card mc where mc.isdeleted = 0 and mc.member_id = t.id ) as memberCardCount "); |
| | | queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId); |
| | | queryWrapper.in(Objects.nonNull(pageWrap.getModel().getCompanyIds())&&pageWrap.getModel().getCompanyIds().size()>0, |
| | |
| | | memberInfoDTO.setRoleNames(this.dealRoleDatas(memberInfoDTO.getRoleId(),deviceRoleList)); |
| | | //拼接前缀 |
| | | if(StringUtils.isNotBlank(memberInfoDTO.getFaceImg())){ |
| | | memberInfoDTO.setFaceImg(prefixUrl + memberInfoDTO.getFaceImg()); |
| | | memberInfoDTO.setFaceImgFull(prefixUrl + memberInfoDTO.getFaceImg()); |
| | | } |
| | | if(StringUtils.isNotBlank(memberInfoDTO.getImgurl())){ |
| | | memberInfoDTO.setImgurl(prefixUrl + memberInfoDTO.getImgurl()); |
| | | memberInfoDTO.setImgurlFull(prefixUrl + memberInfoDTO.getImgurl()); |
| | | } |
| | | } |
| | | } |