doum
6 天以前 57b1d0498e3832478986fbd1277bfe278cea816a
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -182,11 +182,11 @@
        Member insert = initAddMemberModel(member,loginUserInfo);
        //海康人员新增业务
        try {
             if(dealHkUserBiz(insert)){
            if(dealHkUserBiz(insert)){
                insert.setHkStatus(Constants.ONE);
                memberMapper.insert(insert);
                //创建系统登陆账号(默认无任何角色)
    //                if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){
                //                if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){
                //如果是内部组织人员,新增系统登陆账号
                systemUserMapper.insert(createSystemUser(insert,systemDictDataBiz));
                //处理培训有效期业务
@@ -377,6 +377,38 @@
                .eq(Empower::getIsdeleted,Constants.ZERO)
                .set(Empower::getSendStatus,Constants.ZERO));
    }
    public   void cancelAllMemberEmpowerBathch(List<Integer> members,LoginUserInfo user) {
        //删除全部权限
        Date date = new Date();
        memberMapper.update(null,new UpdateWrapper<Member>().lambda()
                .in(Member::getId,members)
                .set(Member::getRoleId,null)
                .set(Member::getAuthStatus,Constants.ZERO)
                .set(Member::getStartTime,null)
                .set(Member::getEndTime,null)
                .set(Member::getEditor,user.getId())
                .set(Member::getEditDate,new Date()) );
        memberRoleMapper.update(null,new UpdateWrapper<MemberRole>().lambda()
                .in(MemberRole::getMemberId,members)
                .set(MemberRole::getIsdeleted,Constants.ONE)
                .set(MemberRole::getEdirot,user.getId())
                .set(MemberRole::getEditDate,date));
        //把所有待下发的任务改成 已取消
        empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                .in(Empower::getMemberId,members)
                .eq(Empower::getIsdeleted,Constants.ZERO)
                .eq(Empower::getSendStatus,Constants.EmpowerStatus.wait)
                .set(Empower::getIsdeleted,Constants.ONE)
                .set(Empower::getSendStatus,Constants.EmpowerStatus.cancel));
        //所有下发过的任务,改为待删除权限
        empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                .in(Empower::getMemberId,members)
                .set(Empower::getIsdeleted,Constants.ONE)
                .notIn(Empower::getSendStatus,Constants.EmpowerStatus.fail)
                .set(Empower::getRemark,"等待同步删除安防平台")
                .eq(Empower::getIsdeleted,Constants.ZERO)
                .set(Empower::getSendStatus,Constants.ZERO));
    }
    private void isMemberParamValid(Member member) {
        if(member.getCompanyId() == null){
@@ -445,7 +477,6 @@
        if(model ==null ||Constants.equalsInteger(member.getIsdeleted(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该员工信息不存在,请刷新页面重试!");
        }
        member.setSex(model.getSex());//默认是原来的性别
        if (StringUtils.isNotBlank(member.getPhone())  ){
            if ( !PhoneUtil.isPhone(member.getPhone())) {
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "电话号码格式有误");
@@ -683,6 +714,7 @@
        }
        if(memberRole.getRoleIds() ==null || memberRole.getRoleIds().length ==0){
            //如果是清空权限
            cancelAllMemberEmpowerBathch(memberRole.getIds(),memberRole.getLoginUserInfo() );
        }else{
            if( ! (Constants.equalsInteger(memberRole.getTimeType(),Constants.ZERO)
                    ||Constants.equalsInteger(memberRole.getTimeType(),Constants.TWO)
@@ -696,54 +728,54 @@
            if(Constants.equalsInteger(memberRole.getTimeType(),Constants.ONE) && memberRole.getEndTime().getTime() <= memberRole.getStartTime().getTime()){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"有效期截止日期不能小于开始时间!");
            }
        }
        if(Constants.equalsInteger(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;
            if(Constants.equalsInteger(memberRole.getTimeType(),Constants.ZERO) ){
                memberRole.setStartTime(null);
                memberRole.setEndTime(null);
            }
            if(StringUtils.isBlank(member.getFaceId()) || !Constants.equalsInteger(member.getFaceStatus(),Constants.ONE)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,用户【"+member.getName()+"】的人脸信息不满足授权条件,请返回完善后再进行该操作!");
            }
            member.setStartTime(memberRole.getStartTime());
            member.setEndTime(memberRole.getEndTime());
            Integer ischange = getRoleIdByParam(memberRole.getRoleIds(),member,memberRoleMapper,deviceRoleMapper);
            if(memberRole.getRoleIds()!=null && memberRole.getRoleIds().length>0 && StringUtils.isBlank(member.getRoleId())){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,未查询到有效门禁组数据");
            }
            if(Constants.equalsInteger(memberRole.getTimeType(),Constants.TWO)){
                //如果按照培训日期下发
                TrainTime trainTime = trainTimeMapper.selectOne(new QueryWrapper<TrainTime>().lambda()
                        .eq(TrainTime::getMemberId,id )
                        .eq(TrainTime::getIsdeleted,Constants.ZERO )
                        .orderByDesc(TrainTime::getId)
                        .last("limit 1")
                );
                if(trainTime == null || trainTime.getStartTime()==null || trainTime.getEndTime() ==null || trainTime.getStartTime().getTime()>=trainTime.getEndTime().getTime()){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,用户【"+member.getName()+"】培训有效期信息为空,请返回完善后再进行该操作!");
            for (Integer id : memberRole.getIds()){
                Member member = memberMapper.selectById(id);
                if(member==null || member.getIsdeleted().equals(Constants.ONE)){
                    //如果员工信息不合法直接跳过
                    continue;
                }
                if(trainTime.getEndTime() .getTime()< System.currentTimeMillis()){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,用户【"+member.getName()+"】培训有效期已过期,请重新上传其培训有效期!");
                if(StringUtils.isBlank(member.getFaceId()) || !Constants.equalsInteger(member.getFaceStatus(),Constants.ONE)){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,用户【"+member.getName()+"】的人脸信息不满足授权条件,请返回完善后再进行该操作!");
                }
                memberRole.setStartTime(trainTime.getStartTime());
                memberRole.setEndTime(trainTime.getEndTime());
                member.setStartTime(memberRole.getStartTime());
                member.setEndTime(memberRole.getEndTime());
                Integer ischange = getRoleIdByParam(memberRole.getRoleIds(),member,memberRoleMapper,deviceRoleMapper);
                if(memberRole.getRoleIds()!=null && memberRole.getRoleIds().length>0 && StringUtils.isBlank(member.getRoleId())){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,未查询到有效门禁组数据");
                }
                if(Constants.equalsInteger(memberRole.getTimeType(),Constants.TWO)){
                    //如果按照培训日期下发
                    TrainTime trainTime = trainTimeMapper.selectOne(new QueryWrapper<TrainTime>().lambda()
                            .eq(TrainTime::getMemberId,id )
                            .eq(TrainTime::getIsdeleted,Constants.ZERO )
                            .orderByDesc(TrainTime::getId)
                            .last("limit 1")
                    );
                    if(trainTime == null || trainTime.getStartTime()==null || trainTime.getEndTime() ==null || trainTime.getStartTime().getTime()>=trainTime.getEndTime().getTime()){
                        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,用户【"+member.getName()+"】培训有效期信息为空,请返回完善后再进行该操作!");
                    }
                    if(trainTime.getEndTime() .getTime()< System.currentTimeMillis()){
                        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,用户【"+member.getName()+"】培训有效期已过期,请重新上传其培训有效期!");
                    }
                    memberRole.setStartTime(trainTime.getStartTime());
                    memberRole.setEndTime(trainTime.getEndTime());
                }
                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,null);
                //重新授权
                HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper);
            }
            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,null);
            //重新授权
            HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper);
        }
    }
@@ -977,6 +1009,8 @@
                    .set(Member::getStartTime,null)
                    .set(Member::getEndTime,null)
                    .set(Member::getRoleId,null)
                    .set(StringUtils.isNotBlank(updateMember.getErpId()),Member::getErpId,updateMember.getErpId())
                    .set(StringUtils.isNotBlank(updateMember.getDdId()),Member::getDdId,updateMember.getDdId())
                    .set(StringUtils.isNotBlank(updateMember.getPhone()),Member::getPhone,updateMember.getPhone())
                    .set(StringUtils.isNotBlank(updateMember.getName()),Member::getName,updateMember.getName())
                    .set(Member::getEditDate,updateMember.getEditDate())
@@ -995,7 +1029,7 @@
                    .set(updateMember.getFaceId()!=null,Member::getFaceId,updateMember.getFaceId())
                    .set(updateMember.getCompanyId()!=null,Member::getCompanyId,updateMember.getCompanyId())
                    .set(Member::getCode,updateMember.getCode())
    //                    .set(StringUtils.isNotBlank(updateMember.getCode()),Member::getCode,updateMember.getCode())
                    //                    .set(StringUtils.isNotBlank(updateMember.getCode()),Member::getCode,updateMember.getCode())
                    .set( updateMember.getPositionId()!=null,Member::getPositionId,updateMember.getPositionId())
                    .set( updateMember.getIsDangyuan()!=null,Member::getIsDangyuan,updateMember.getIsDangyuan())
                    .set( updateMember.getJobDate()!=null,Member::getJobDate,updateMember.getJobDate())
@@ -2071,7 +2105,7 @@
                .eq(Member::getStatus,Constants.ZERO)
                .eq(Member::getWorkStatus,Constants.ZERO)
                .eq(Member::getCanVisit,Constants.ONE)
                .eq(Company::getType,Constants.ONE)
//                .eq(Company::getType,Constants.ONE)
                .orderByAsc(Member::getPinyin)
        );
        List<MemberVO> memberVOList = new ArrayList<>();
@@ -2479,20 +2513,37 @@
     */
    @Override
    public void dealJdyMemberInfo(MemberPushData data){
        if(StringUtils.isBlank(data.getUsername())
        if(data.getDeleter()!=null){
            //如果是已经删除人员,不处理 //内部人员信息
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
                    .eq( Member::getErpId,data.get_id() )
                    .eq( Member::getIsdeleted,Constants.ZERO )
                    .eq( Member::getType,Constants.TWO )
                    .last("limit 1"));
            if(member == null){
                //如果是已经删除人员,不处理
                return;
            }
            //如果是已经删除人员,删除服务中心人员
            this.deleteById(member.getId(),null);
            return;
        }
        if(StringUtils.isBlank(data.get_id())
                ||StringUtils.isBlank(data.getUsername())
                ||StringUtils.isBlank(data.getPhone())
                ||StringUtils.isBlank(data.getName())){
            throw  new BusinessException(ResponseStatus.JDY_BAD_REQUEST.getCode(),"人员信息不完整!");
        }
        //内部人员信息
        Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
                .eq( Member::getErpId,data.getUsername() )
                .eq( Member::getErpId,data.get_id() )
                .eq( Member::getIsdeleted,Constants.ZERO )
                .eq( Member::getType,Constants.TWO )
                .last("limit 1"));
        if(member ==null){
            //如果erpid未绑定,按手机号查询用户
              member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
            member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
                    .eq( Member::getPhone,data.getPhone() )
                    .eq( Member::getIsdeleted,Constants.ZERO )
                    .eq( Member::getType,Constants.TWO )
@@ -2500,26 +2551,15 @@
        }
        boolean addOrEdit = false;
        if(member == null){
            //新增人员
            if(data.getDeleter()!=null){
                //如果是已经删除人员,不处理
                return;
            }
            member = getAddOrUpdateModelFromJDY(data,true);
            this.create(member);
            addOrEdit=true;
        }else{
            //更新人员
            if(data.getDeleter()!=null){
                //如果是已经删除人员,不处理
                this.deleteById(member.getId(),null);
            }else{
                //更新人员信息
                Member updateMember =getAddOrUpdateModelFromJDY(data,false);
                updateMember.setId(member.getId());
                addOrEdit=true;
                this.updateById(updateMember);
            }
            //更新人员信息
            Member updateMember =getAddOrUpdateModelFromJDY(data,false);
            updateMember.setId(member.getId());
            addOrEdit=true;
            this.updateById(updateMember);
        }
        if(addOrEdit && Constants.equalsInteger(member.getHeadStatus(),Constants.ONE) && member.getCompanyModel()!=null){
            //如果是部门主管
@@ -2549,7 +2589,8 @@
        if(StringUtils.isNotBlank(data.getMaster())){
            member.setHeadStatus(StringUtils.equals(data.getMaster(),"是")?1:0);
        }
        member.setErpId(data.getUsername());
        member.setErpId(data.get_id());
        member.setDdId(data.getUsername());
        if(data.getDepartment()!=null){
            member.setErpOrgId(data.getDepartment().getDept_no());
        }
@@ -2590,7 +2631,7 @@
    private String getMemberImgByJdyImg(String imgurl) {
        try {
            String folder =   systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
            String folder = systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
            FtpUtil ftp = new FtpUtil(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_HOST).getCode(),
                    Integer.parseInt(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PORT).getCode()),
                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_USERNAME).getCode(),
@@ -2614,15 +2655,15 @@
                    selectAll(SystemUser.class )
                    .leftJoin(Member.class,Member::getId,SystemUser::getMemberId)
                    .eq(SystemUser::getDeleted,Boolean.FALSE)
                    .eq(Member::getErpId,user.getUsername())
                    .eq(Member::getDdId,user.getUsername())
                    .last("limit 1"));
        }
       return null;
        return null;
    }
    @Override
    public String syncJdyUserInfo() {
        DeptApiClient deptApiClient = new DeptApiClient(systemDictDataBiz.queryByCode(Constants.JDY_CONFIG, Constants.API_KEY).getCode()
        DeptApiClient deptApiClient = new DeptApiClient(systemDictDataBiz.queryByCode(Constants.JDY_CONFIG, Constants.JDY_API_KEY).getCode()
                ,systemDictDataBiz.queryByCode(Constants.JDY_CONFIG, Constants.JDY_API_HOST).getCode());
        try {
            Map<String, Object> result =  deptApiClient.deptMemberList(1,true,deptApiClient.getDefaultVersion());