nidapeng
2024-03-19 6c40e04eb7c2060feb2533735cd3089d438965e5
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
@@ -20,6 +20,7 @@
import com.doumee.service.business.ext.ERPSyncService;
import com.doumee.service.business.impl.hksync.HkSyncBaseServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -48,6 +49,8 @@
    private DeviceMapper deviceMapper;
    @Autowired
    private EmpowerMapper empowerMapper;
    @Autowired
    private ParkBookMapper bookMapper;
    @Autowired
    private MemberCardMapper memberCardMapper;
    @Autowired
@@ -304,7 +307,8 @@
                        String[] ss = doorids.split(",");
                        try {
                            for(String s :ss){
                                r.add(Integer.parseInt(s));
                                Integer ts =Integer.parseInt(s);
                                 r.add(ts);
                            }
                        }catch (Exception e){
                            //脏数据不处理
@@ -315,6 +319,16 @@
            }
        return  null;
    }
    private static boolean isNorExistInList(Integer ts, List<Integer> list) {
        for(Integer r :list){
            if(Constants.equalsInteger(ts,r)){
                return true;
            }
        }
        return false;
    }
    @Transactional
    public boolean dealMemberInfoBiz(Member c, Date date, String path) {
        if( c.getCompanyId() == null){
@@ -332,9 +346,16 @@
    }
    private int dealDelMemberRoleEmpower(Member member ) {
        //待移除权限的设备数据授权记录(针对删除和更新丢失的权限,需要同步下发删除权限)
            bookMapper.update(null,new UpdateWrapper<ParkBook>().lambda()
                .eq(ParkBook::getMemberId,member.getId())
                .set(ParkBook::getRemark,"等待同步删除安防平台")
                .set(ParkBook::getIsdeleted,Constants.ONE)
                .eq(ParkBook::getIsdeleted,Constants.ZERO)
                .set(ParkBook::getHkStatus,Constants.ZERO));
            return  empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                        .eq(Empower::getMemberId,member.getId())
                        .set(Empower::getIsdeleted,Constants.ONE)
                        .set(Empower::getRemark,"等待同步删除安防平台")
                        .eq(Empower::getIsdeleted,Constants.ZERO)
                        .set(Empower::getSendStatus,Constants.ZERO));
    }
@@ -345,9 +366,6 @@
    }
    public static void dealMemberRoleEmpowerDo(List<MemberCard> cards,Member member , DeviceRoleMapper deviceRoleMapper, EmpowerMapper empowerMapper, DeviceMapper deviceMapper) {
        if(cards == null || cards.size() == 0){
            return;
        }
        List<Integer> doorIds = getRoleIdByParam(member,deviceRoleMapper);
        if(doorIds==null || doorIds.size() == 0){
            //如果权限清空,则清空人员授权的权限数据
@@ -358,7 +376,8 @@
                    .set(Empower::getSendStatus,Constants.ZERO));
            return;
        }
        if(StringUtils.isBlank(member.getFaceImg())){
        if((cards == null || cards.size() == 0) && StringUtils.isBlank(member.getFaceId())){
            //如果没有卡 也没有人脸
            return;
        }
@@ -407,6 +426,66 @@
            empowerMapper.insertBatchSomeColumn(list);
        }
    }
    public static void dealChangeDeviceRoleEmpower( Member member ,List<Integer> addDoorIds,List<Integer> delDoorIds, DeviceRoleMapper deviceRoleMapper, EmpowerMapper empowerMapper, DeviceMapper deviceMapper) {
        if(delDoorIds!=null && delDoorIds.size()>0){
            //待移除权限的设备数据授权记录(针对删除和更新丢失的权限,需要同步下发删除权限)
            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,delDoorIds)
                    .set(Empower::getSendStatus,Constants.ZERO));
        }
        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)){
            //如果用户是同步海康成功,添加带下发权限(只管理新增或者编辑的)
            List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>().lambda().in(Device::getId,addDoorIds));
            if(deviceList == null || deviceList.size() == 0){
                return;
            }
            for (Device deviceRole:deviceList) {
                Empower model = new Empower();
                model.setCreateDate(new Date());
                model.setMemberId(member.getId());
                model.setIsdeleted(Constants.ZERO);
                model.setDeviceId(deviceRole.getId());
                model.setSendStatus(Constants.ZERO);
                model.setSendInfo("待同步安防平台");
                model.setRemark("待同步安防平台");
                model.setStartTime(member.getStartTime());
                model.setEndTime(member.getEndTime());
                //默认给于虚拟卡
                model.setCardNos(Constants.VIRTUAL_CARD_INDEX+member.getId());
                model.setSendType(Constants.ZERO);
                //标记最新的授权设备编码集合
                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()
                    .eq(Empower::getMemberId,member.getId())
                    .eq(Empower::getIsdeleted,Constants.ZERO)
                    .in(Empower::getDeviceId,deviceIds) );
            empowerMapper.insertBatchSomeColumn(list);
        }
    }
    /**
     * 对人员带开卡数据进行自动开卡操作
@@ -416,7 +495,7 @@
    private List<MemberCard> dealMemberHkCard(Member member) {
        List<MemberCard> memberCards = memberCardMapper.selectList(new QueryWrapper<MemberCard>().lambda()
                .eq(MemberCard::getMemberId,member.getId())
                .eq(MemberCard::getType,Constants.TWO)
//              .eq(MemberCard::getType,Constants.TWO)
                .eq(MemberCard::getHkStatus,Constants.ZERO)  );
        if(memberCards==null ||  memberCards.size()==0){
            //没有带处理的数据,直接跳过
@@ -447,6 +526,8 @@
        //处理新增数据
        BaseResponse<List<CardInfoResponse>> result =  HKService.cardBingding(param);
        if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) ){
//            0x04a12022","msg":"cardNo [1223382985] is exists
            if(result.getData()!=null ){
                for(CardInfoResponse r : result.getData()){
                    doneCodes.add(r.getCardNo());
@@ -477,7 +558,7 @@
    public static   List<MemberCard> getNormalCardList(Member member,MemberCardMapper memberCardMapper) {
       return memberCardMapper.selectList(new QueryWrapper<MemberCard>().lambda()
                .eq(MemberCard::getMemberId,member.getId())
                .eq(MemberCard::getType,Constants.TWO)
//                .eq(MemberCard::getType,Constants.TWO)
                .eq(MemberCard::getStatus,Constants.MemberCard.normal)
                .eq(MemberCard::getHkStatus,Constants.ONE)  );