nidapeng
2024-03-25 755b60c531999e9d3c0a94759a2a5e92f5e4ad4e
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
@@ -21,6 +21,7 @@
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -52,33 +53,29 @@
     * 定时查询权限下发任务进度执行结果
     */
    @Override
    public  void syncEmpowerDetailData(){
        if(Constants.DEALING_HK_EMPOWER_DETAIL){
            return   ;
        }
        Constants.DEALING_HK_EMPOWER_DETAIL = true;
        try {
    public  Integer   syncEmpowerDetailData(Integer endId){
//        if(Constants.DEALING_HK_EMPOWER_DETAIL){
//            return   ;
//        }
//        Constants.DEALING_HK_EMPOWER_DETAIL = true;
            //查询所有完成下载,待查询结果的数据记录
            List<Empower>  list = getDealListDetail();
            List<Empower>  list = getDealListDetail(endId);
           if(list == null || list.size() ==0){
               return;
               return null;
           }
            Thread t1=new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    for(Empower c : list){
                        TaskPersonDetailRequest param = new TaskPersonDetailRequest();
                        param.setPageNo(1);
                        param.setPageSize(100);
//               param.setPersonIds(new ArrayList<>());
                        param.setPageSize(10);
                        param.setPersonIds(new String[]{c.getMemberHkId()});
                        param.setTaskId(c.getHkId());
                        TaskDataAdditionResourceRequest rec = new TaskDataAdditionResourceRequest();
                        rec.setResourceIndexCode(c.getDeviceIndexCode());
                        rec.setResourceType(c.getDeviceType());
//               rec.setChannelNos(c.getDeviceChannelNo().split(","));
                        param.setResourceInfo(rec);
                        //查询下发状态
                        BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param);
@@ -123,26 +120,26 @@
                                //如果是已删除的数据,下发失败(防止设备离线),则尝试重新下发任务
                                if(Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){
//                               && Constants.formatIntegerNum(c.getTryNum())+1 < tryNum ){
                                    empowerMapper.update(null, new UpdateWrapper<Empower>()
                              /*      empowerMapper.update(null, new UpdateWrapper<Empower>()
                                            .lambda()
                                            .eq(Empower::getId, c.getId())
                                            .set(Empower::getRemark,  "下发失败,等待重新删除权限")
//                                   .set(Empower::getHkId,null)
//                                   .set(Empower::getSendDate,null)
                                            .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1)
                                            .set(Empower::getSendInfo, "下发失败,等待重新删除权限")
                                            .set(Empower::getSendStatus, Constants.EmpowerStatus.wait));
                                            .set(Empower::getSendStatus, Constants.EmpowerStatus.wait));*/
                                    empowerMapper.update(null, new UpdateWrapper<Empower>()
                                            .lambda()
                                            .eq(Empower::getId, c.getId())
                                            .set(Empower::getRemark, "删除权限下发失败")
                                            .set(Empower::getSendInfo, "删除权限下发失败")
                                            .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1)
                                            .set(Empower::getSendStatus, Constants.EmpowerStatus.fail));
                                }else{
                                    empowerMapper.update(null, new UpdateWrapper<Empower>()
                                            .lambda()
                                            .eq(Empower::getId, c.getId())
                                            .set(Empower::getRemark, "下发失败")
                                            .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1)
                                            .set(Empower::getSendInfo, "下发失败")
                                            .set(Empower::getSendStatus, Constants.EmpowerStatus.fail));
                                }
@@ -150,21 +147,19 @@
                            checkDelMemberTask(c.getMemberId());
                        }
                    }
                    }catch (Exception e){
                }catch (Exception e){
                    }finally {
                        Constants.DEALING_HK_EMPOWER_DETAIL=false;
                    }
                }finally {
//                    Constants.DEALING_HK_EMPOWER_DETAIL=false;
                }
            });
            t1.start();
        }catch (Exception e){
            e.printStackTrace();
        }
            }
        });
        t1.start();
         return list.get(list.size()-1).getId();
    }
    /**
     * 对海康删除组织信息
     * @param id
@@ -226,7 +221,7 @@
        Constants.DEALING_HK_EMPOWER_DETAIL = true;
        try {
            //查询所有完成下载,待查询结果的数据记录
            List<Empower>  list = getDealListDetail();
            List<Empower>  list = getDealListDetail(0);
           if(list == null || list.size() ==0){
               return;
           }
@@ -272,16 +267,15 @@
     * 定时查询权限下发任务进度执行结果
     */
    @Override
    public  void syncEmpowerResultData(){
        if(Constants.DEALING_HK_EMPOWER_RESULT){
            return   ;
        }
        Constants.DEALING_HK_EMPOWER_RESULT=true;
        try {
    public  Integer syncEmpowerResultData(Integer endId){
//        if(Constants.DEALING_HK_EMPOWER_RESULT){
//            return  null ;
//        }
//        Constants.DEALING_HK_EMPOWER_RESULT=true;
            //查询所有执行中得数据
            List<Empower>  list = getIngTaskListResult();
         List<Empower>  list = getIngTaskListResult(Constants.formatIntegerNum(endId));
           if(list == null || list.size() ==0){
               return;
               return null;
           }
            Thread t1=new Thread(new Runnable() {
                @Override
@@ -315,13 +309,59 @@
                }
            });
            t1.start();
        }catch (Exception e){
            e.printStackTrace();
        }
            return list.get(list.size()-1).getId();
    }
    /**
     * 处理人员授权数据,定时下发
     */
    @Override
    public  Integer syncEmpowerFailData(Integer endId) {
        List<Empower> allList =getAllFailDealList( endId);
        if(allList!=null && allList.size()>0){
            Date date = new Date();
            List<Integer> retryIds = new ArrayList<>();
            List<Integer> noIds = new ArrayList<>();
            for(Empower empower:allList){
                //如果是删除的权限下发,查询是否伺候有下发成功的数据,如果有,则不处理
                if(empower.getId().equals(392479)){
                    System.out.println("============================");
                }
//                int flag= empowerMapper.selectCount(new QueryWrapper<Empower>().lambda()
//                        .eq(Empower::getMemberId,empower.getMemberId())
//                        .eq(Empower::getDeviceId,empower.getDeviceId() )
//                        .gt(Empower::getId,empower.getId())
//                        .last("limit 1"));
                    if(empower.getTempCouunt() ==0){
                        //如果之后时间内又重新下发记录,则跳过不做处理
                        retryIds.add(empower.getId());
                    }else{
                        noIds.add(empower.getId());
                    }
            }
             if(retryIds.size()>0){
                empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                        .set(Empower::getCreateDate,date)
                        .set(Empower::getSendStatus,Constants.EmpowerStatus.wait)
                        .set(Empower::getEditDate,date)
                        .set(Empower::getRemark,"下发失败,待重新下发~")
                        .set(Empower::getSendInfo,"下发失败,待重新下发~")
                        .in(Empower::getId,retryIds));
            }
            if(noIds.size()>0){
                empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
                        .set(Empower::getEditDate,date)
                        .set(Empower::getFailFlag,Constants.ONE)
                        .in(Empower::getId,noIds));
            }
            return allList.get(allList.size()-1).getId();
        }
        return null;
    }
    /**
     * 处理人员授权数据,定时下发
     */
@@ -331,7 +371,6 @@
//            return  null ;
//        }
//        Constants.DEALING_HK_EMPOWER =true;
        try {
            //先删除所有需要取消授权的数据
            List<Empower> allList =getAllWaitDealList( endId);
            if(allList !=null && allList.size()>0){
@@ -360,12 +399,6 @@
                t1.start();
                return allList.get(allList.size()-1).getId();
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
//            Constants.DEALING_HK_EMPOWER =false;
        }
        return null;
    }
    @Override
@@ -378,6 +411,7 @@
        }catch (Exception e){
            e.printStackTrace();
        }finally {
        }
    }
@@ -611,6 +645,17 @@
        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
        return list;
    }
    private List<Empower> getAllFailDealList(int endId ) {
        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.select(Empower::getId,Empower::getMemberId,Empower::getDeviceId,Empower::getIsdeleted);
        queryWrapper.select(" (select count(1) from empower ee  where ee.member_id=t.MEMBER_ID and ee.device_id =t.DEVICE_ID   and ee.id>t.id) as tempCouunt");
        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.fail);
        queryWrapper.gt(Empower::getId,endId);
        queryWrapper.orderByAsc(Empower::getId );
        queryWrapper.ne( Empower::getFailFlag,Constants.ONE);
        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
        return list;
    }
    private List<Empower> getDealList(int del ,int start,int end) {
        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
@@ -631,7 +676,7 @@
        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
        return list;
    }
    private List<Empower> getDealListDetail() {
    private List<Empower> getDealListDetail(int endId ) {
        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Empower.class);
        queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo);
@@ -642,17 +687,23 @@
        queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId);
        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.downloaded);
        queryWrapper.isNotNull(Member::getHkId) ;
        queryWrapper.gt(Empower::getId,endId);
        queryWrapper.orderByAsc(Empower::getSendDate);
        queryWrapper.last("limit 100");//每次限制下发100个
        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
        return list;
    }
    private List<Empower> getIngTaskListResult() {
    private List<Empower> getIngTaskListResult(int endId) {
        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Empower.class);
        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.ing);
        queryWrapper.gt(Empower::getId,endId);
        queryWrapper.groupBy(Empower::getHkId);
        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
        queryWrapper.orderByAsc(Empower::getSendDate);
        queryWrapper.last("limit 100");//每次限制下发100个
        List<Empower> list = empowerMapper.selectList(queryWrapper);
        return list;
    }
}