nidapeng
2024-04-02 4167298accee956c10ed1b5e3d6ce909cad38edd
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
@@ -305,14 +305,15 @@
                    String doorids =deviceRole.getDoorIds();
                    if(StringUtils.isNotBlank(doorids)){
                        String[] ss = doorids.split(",");
                        try {
                            for(String s :ss){
                        for(String s :ss){
                            try {
                                Integer ts =Integer.parseInt(s);
                                 r.add(ts);
                            }catch (Exception e){
                                //脏数据不处理
                            }
                        }catch (Exception e){
                            //脏数据不处理
                        }
                    }
                }
                return  r;
@@ -365,7 +366,7 @@
        dealMemberRoleEmpowerDo(cards,member,deviceRoleMapper,empowerMapper,deviceMapper);
    }
    public static void dealMemberRoleEmpowerDo(List<MemberCard> cards,Member member , DeviceRoleMapper deviceRoleMapper, EmpowerMapper empowerMapper, DeviceMapper deviceMapper) {
    public static void dealMemberRoleEmpowerDo(List<MemberCard> cards1,Member member , DeviceRoleMapper deviceRoleMapper, EmpowerMapper empowerMapper, DeviceMapper deviceMapper) {
        List<Integer> doorIds = getRoleIdByParam(member,deviceRoleMapper);
        if(doorIds==null || doorIds.size() == 0){
            //如果权限清空,则清空人员授权的权限数据
@@ -376,15 +377,16 @@
                    .set(Empower::getSendStatus,Constants.ZERO));
            return;
        }
        if((cards == null || cards.size() == 0) && StringUtils.isBlank(member.getFaceId())){
//        if((cards == null || cards.size() == 0) && StringUtils.isBlank(member.getFaceId())){
        if( StringUtils.isBlank(member.getFaceId())){
            //如果没有卡 也没有人脸
            return;
        }
        List<Integer> deviceIds =new ArrayList<>();//新设备编码集合
        List<Empower> list = new ArrayList<>();//新授权记录集合
        if(Constants.equalsInteger(member.getIsdeleted(),Constants.ZERO)
                && Constants.equalsObject(member.getHkStatus(),Constants.ONE)){
        if(Constants.equalsInteger(member.getIsdeleted(),Constants.ZERO)){
//                && Constants.equalsObject(member.getHkStatus(),Constants.ONE)){
            List<Integer> deviceIds =new ArrayList<>();//新设备编码集合
            List<Empower> list = new ArrayList<>();//新授权记录集合
            //如果用户是同步海康成功,添加带下发权限(只管理新增或者编辑的)
            List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>().lambda().in(Device::getId,doorIds));
            if(deviceList == null || deviceList.size() == 0){
@@ -400,6 +402,7 @@
                model.setSendInfo("待同步安防平台");
                model.setRemark("待同步安防平台");
                model.setStartTime(member.getStartTime());
                model.setFailFlag(Constants.ZERO);
                model.setEndTime(member.getEndTime());
                //默认给于虚拟卡
                model.setCardNos(Constants.VIRTUAL_CARD_INDEX+member.getId());
@@ -408,22 +411,22 @@
                deviceIds.add(deviceRole.getId());
                list.add(model);
            }
        }
        //待移除权限的设备数据授权记录(针对删除和更新丢失的权限,需要同步下发删除权限)
        empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                .eq(Empower::getMemberId,member.getId())
                .set(Empower::getIsdeleted,Constants.ONE)
                .eq(Empower::getIsdeleted,Constants.ZERO)
                .notIn(deviceIds.size()>0,Empower::getDeviceId,deviceIds)
                .set(Empower::getSendStatus,Constants.ZERO));
        //导入新增的授权信息
        if(list.size()>0){
            //直接覆盖重复的设备权限,直接删除即可
            empowerMapper.delete(new UpdateWrapper<Empower>().lambda()
            //待移除权限的设备数据授权记录(针对删除和更新丢失的权限,需要同步下发删除权限)
            empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                    .eq(Empower::getMemberId,member.getId())
                    .set(Empower::getIsdeleted,Constants.ONE)
                    .eq(Empower::getIsdeleted,Constants.ZERO)
                    .in(Empower::getDeviceId,deviceIds) );
            empowerMapper.insertBatchSomeColumn(list);
                    .notIn(deviceIds.size()>0,Empower::getDeviceId,deviceIds)
                    .set(Empower::getSendStatus,Constants.ZERO));
            //导入新增的授权信息
            if(list.size()>0){
                //直接覆盖重复的设备权限,直接删除即可
                empowerMapper.delete(new UpdateWrapper<Empower>().lambda()
                        .eq(Empower::getMemberId,member.getId())
                        .eq(Empower::getIsdeleted,Constants.ZERO)
                        .in(Empower::getDeviceId,deviceIds) );
                empowerMapper.insertBatchSomeColumn(list);
            }
        }
    }
    public static void dealChangeDeviceRoleEmpower( Member member ,List<Integer> addDoorIds,List<Integer> delDoorIds, DeviceRoleMapper deviceRoleMapper, EmpowerMapper empowerMapper, DeviceMapper deviceMapper) {
@@ -435,6 +438,10 @@
                    .eq(Empower::getIsdeleted,Constants.ZERO)
                    .in(Empower::getDeviceId,delDoorIds)
                    .set(Empower::getSendStatus,Constants.ZERO));
        }
        if(addDoorIds==null || addDoorIds.size()==0){
            //待移除权限的设备数据授权记录(针对删除和更新丢失的权限,需要同步下发删除权限)
           return;
        }
        if(StringUtils.isBlank(member.getFaceId())){
            //如果没有卡 也没有人脸
@@ -455,6 +462,7 @@
                model.setCreateDate(new Date());
                model.setMemberId(member.getId());
                model.setIsdeleted(Constants.ZERO);
                model.setFailFlag(Constants.ZERO);
                model.setDeviceId(deviceRole.getId());
                model.setSendStatus(Constants.ZERO);
                model.setSendInfo("待同步安防平台");
@@ -469,13 +477,6 @@
                list.add(model);
            }
        }
        //待移除权限的设备数据授权记录(针对删除和更新丢失的权限,需要同步下发删除权限)
        empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                .eq(Empower::getMemberId,member.getId())
                .set(Empower::getIsdeleted,Constants.ONE)
                .eq(Empower::getIsdeleted,Constants.ZERO)
                .notIn(deviceIds.size()>0,Empower::getDeviceId,deviceIds)
                .set(Empower::getSendStatus,Constants.ZERO));
        //导入新增的授权信息
        if(list.size()>0){
            //直接覆盖重复的设备权限,直接删除即可
@@ -589,22 +590,26 @@
                //删除所有绑定的卡片信息
                memberCardMapper.delete(new QueryWrapper<MemberCard>().lambda().eq(MemberCard::getMemberId,c.getId()));
            }
        }else{
            //处理修改数据,并且更新人脸
            UserAddRequest  addHkModel = getUserAddModel(c,path,1);//修改
            //处理新增数据
            BaseResponse result =  HKService.editUser(addHkModel);
            if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) ){
                if(StringUtils.isNotBlank(c.getFaceImg())){
                if(StringUtils.isNotBlank(c.getFaceImg()) && Constants.equalsInteger(c.getFaceStatus(),Constants.ZERO)){
                    //如果有人脸照片,处理人脸照片同步
                    String faceid = dealMemberFace(c,path);
                    if(StringUtils.isBlank(faceid)){
                        noticeErpFail(c,Constants.ZERO,"人脸信息更新失败,请检查人脸照片是否合法!");
                        c.setHkStatus(Constants.TWO);
                        c.setFaceStatus(Constants.TWO);
                        c.setRemark("人脸信息更新失败,请检查人脸照片是否合法!!"+result.getMsg());
                    }else{
                        c.setFaceId(faceid);
                        c.setFaceStatus(Constants.ONE);
                        //如果人脸跟你,重新下发权限数据
                        c.setRemark("人员和人脸信息同步成功"+result.getMsg());
                        dealMemberRoleEmpower(c);
                    }
                }
            }else{
@@ -612,8 +617,7 @@
                c.setHkStatus(Constants.TWO);
                c.setRemark("人员信息同步安防平台更新失败,请修正后重试!!"+(result!=null?result.getCode()+result.getMsg():""));
            }
            //重新下发权限数据
            dealMemberRoleEmpower(c);
        }
        c.setHkDate(date);
        memberMapper.updateById(c);
@@ -641,6 +645,7 @@
            //如果人脸数据不正确,下载失败等原因
            noticeErpFail(c,Constants.ZERO,"人脸照片不存在,获取失败!");
            c.setHkStatus(Constants.TWO);
            c.setFaceStatus(Constants.TWO);
            c.setRemark("人脸照片不存在,获取失败!");
            c.setHkDate(new Date());
            memberMapper.updateById(c);
@@ -650,11 +655,16 @@
        BaseResponse<UserAddResponse> result =  HKService.addUser(addHkModel);
        if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){
            c.setFaceId(result.getData().getFaceId());
            if(StringUtils.isNotBlank(c.getFaceId())){
                c.setFaceStatus(Constants.ONE);
            }else{
                c.setFaceStatus(Constants.ZERO);
            }
            c.setHkStatus(Constants.ONE);
            c.setHkId(addHkModel.getPersonId());
            c.setHkDate(new Date());
            memberMapper.updateById(c);
            dealMemberRoleEmpower(c);
//            dealMemberRoleEmpower(c);
            return  true;
        }else{
            noticeErpFail(c,Constants.ZERO,"人员信息同步安防平台失败,请修正后重试!"+result.getCode()+result.getMsg());
@@ -672,7 +682,7 @@
     * @param path
     * @return
     */
    private String dealMemberFace(Member c,String path) {
    public static String dealMemberFace(Member c,String path) {
        if(StringUtils.isBlank(c.getFaceId())){
            BaseResponse<FaceAddOrEditesponse> response = HKService.addFace(getFaceAddModel(c,path));
            if(response !=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)&& response.getData()!=null ){
@@ -777,7 +787,7 @@
        }
        return  model;
    }
    private FaceAddRequest getFaceAddModel(Member c,String path) {
    public static FaceAddRequest getFaceAddModel(Member c,String path) {
        FaceAddRequest model = new FaceAddRequest();
        model.setPersonId(c.getHkId());
        if(StringUtils.isNotBlank(c.getFaceImg())){
@@ -790,7 +800,7 @@
        }
        return  model;
    }
    private FaceEditRequest getFaceUpdateModel(Member c,String path) {
    public static FaceEditRequest getFaceUpdateModel(Member c,String path) {
        FaceEditRequest model = new FaceEditRequest();
        model.setFaceId(c.getFaceId());
        if(StringUtils.isNotBlank(c.getFaceImg())){