k94314517
2024-03-18 52f8e08715abd234c3bd6908e4338b1da1d8b0b4
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
@@ -209,7 +212,6 @@
        model.setOrgIndexCode(c.getHkId());
        model.setOrgName(c.getName());
        return  model;
    }
    /**
@@ -228,7 +230,7 @@
            List<String> fIds = new ArrayList<>();
            if(result.getData()!=null){
                for(OrgUpdateFailureResponse r : result.getData()){
                    if(!r.getCode().equals("0x00052102")){
                    if(r.getCode().equals("0x00052102")){
                        //不存在的也算删除成功
                        fIds.add(r.getOrgIndexCode());//删除失败的数据集合
                    }
@@ -264,10 +266,12 @@
            List<Member> list = memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
                    .selectAll(Member.class )
                    .selectAs(Company::getHkId,Member::getHkOrgId)
                    .isNotNull(Member::getFaceId)
//                    .isNotNull(Member::getFaceId
                    .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                    .eq(Member::getHkStatus,Constants.ZERO)
                    .eq(Member::getStatus,Constants.ZERO)
                    .eq(Member::getType,Constants.memberType.internal)
                    .notExists("select d.id from empower d where d.member_id=t.id and d.send_status in (1,5)")//排除有正在同步下发任务的数据
                    .orderByAsc(Member::getErpDate));
            if(list ==null || list.size()==0){
                return;
@@ -303,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){
                            //脏数据不处理
@@ -314,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){
@@ -329,13 +344,20 @@
        }
        return  false;
    }
    private void dealDelMemberRoleEmpower(Member member ) {
    private int dealDelMemberRoleEmpower(Member member ) {
        //待移除权限的设备数据授权记录(针对删除和更新丢失的权限,需要同步下发删除权限)
        empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                .eq(Empower::getMemberId,member.getId())
                .set(Empower::getIsdeleted,Constants.ONE)
                .eq(Empower::getIsdeleted,Constants.ZERO)
                .set(Empower::getSendStatus,Constants.ZERO));
            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));
    }
    private void dealMemberRoleEmpower(Member member ) {
        //处理新增的人员卡片数据(与海康同步)
@@ -349,6 +371,12 @@
        }
        List<Integer> doorIds = getRoleIdByParam(member,deviceRoleMapper);
        if(doorIds==null || doorIds.size() == 0){
            //如果权限清空,则清空人员授权的权限数据
            empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                    .eq(Empower::getMemberId,member.getId())
                    .set(Empower::getIsdeleted,Constants.ONE)
                    .eq(Empower::getIsdeleted,Constants.ZERO)
                    .set(Empower::getSendStatus,Constants.ZERO));
            return;
        }
        if(StringUtils.isBlank(member.getFaceImg())){
@@ -409,7 +437,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){
            //没有带处理的数据,直接跳过
@@ -470,7 +498,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)  );
@@ -487,15 +515,21 @@
        c.setHkStatus(Constants.ONE);
        if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){
            //处理删除数据(删除之前下发的海康人员权限信息)
            dealDelMemberRoleEmpower(c);
            c.setHkStatus(Constants.FOUR );
            c.setRemark( "等待删除授权!");
            /*boolean r = doHkDeleteUser(c.getId(),c.getHkId(),date);
            c.setHkStatus(r?Constants.ONE:Constants.TWO);
            c.setRemark(r?null:"删除海康人员信息失败!");
            c.setIsdeleted(r? Constants.ONE: Constants.ZERO);//删除失败,恢复数据
            //删除所有绑定的卡片信息
            memberCardMapper.delete(new QueryWrapper<MemberCard>().lambda().eq(MemberCard::getMemberId,c.getId()));*/
            int rr = dealDelMemberRoleEmpower(c);
            if(rr >0){
                //如果有權限待刪除,等待删除完成再删除人员
                c.setHkStatus(Constants.FOUR );
                c.setRemark( "等待删除授权!");
            }else{
                //没有权限直接删除人员
                boolean r = doHkDeleteUser(c.getId(),c.getHkId(),date);
                c.setHkStatus(r?Constants.ONE:Constants.TWO);
                c.setRemark(r?null:"删除海康人员信息失败!");
                c.setIsdeleted(r? Constants.ONE: Constants.ZERO);//删除失败,恢复数据
                //删除所有绑定的卡片信息
                memberCardMapper.delete(new QueryWrapper<MemberCard>().lambda().eq(MemberCard::getMemberId,c.getId()));
            }
        }else{
            //处理修改数据,并且更新人脸
            UserAddRequest  addHkModel = getUserAddModel(c,path,1);//修改
@@ -548,6 +582,7 @@
            noticeErpFail(c,Constants.ZERO,"人脸照片不存在,获取失败!");
            c.setHkStatus(Constants.TWO);
            c.setRemark("人脸照片不存在,获取失败!");
            c.setHkDate(new Date());
            memberMapper.updateById(c);
            return  false;
        }
@@ -557,6 +592,7 @@
            c.setFaceId(result.getData().getFaceId());
            c.setHkStatus(Constants.ONE);
            c.setHkId(addHkModel.getPersonId());
            c.setHkDate(new Date());
            memberMapper.updateById(c);
            dealMemberRoleEmpower(c);
            return  true;
@@ -564,6 +600,7 @@
            noticeErpFail(c,Constants.ZERO,"人员信息同步安防平台失败,请修正后重试!"+result.getCode()+result.getMsg());
            c.setHkStatus(Constants.TWO);
            c.setRemark("人员信息同步安防平台失败,请修正后重试!"+(result!=null?result.getMsg():""));
            c.setHkDate(new Date());
            memberMapper.updateById(c);
            return  false;
        }