nidapeng
2024-03-26 87ec373c158f7fa4c65fb037822fe7142a6fd5e7
server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java
@@ -1,16 +1,25 @@
package com.doumee.task;
import com.doumee.config.DataSyncConfig;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.Constants;
import com.doumee.service.business.InterfaceLogService;
import com.doumee.service.business.MemberService;
import com.doumee.service.business.impl.hksync.HkSyncEmpowerServiceImpl;
import com.doumee.service.business.impl.hksync.HkSyncImgServiceImpl;
import com.doumee.service.business.impl.hksync.HkSyncOrgUserServiceImpl;
import com.doumee.service.business.impl.hksync.HkSyncParkServiceImpl;
import com.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl;
import com.doumee.service.business.impl.hksync.HkSyncVisitServiceImpl;
import com.doumee.service.business.impl.hksync.fhk.HkSyncVehicleFromHKServiceImpl;
import com.doumee.service.business.impl.hksync.fhk.HkSyncVisitFromHKServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
 * 定时任务
@@ -18,99 +27,156 @@
 * @date 2021-10-10 14:40:35
 * https://www.bejson.com/othertools/cron/  cron 表达式生成地址
 */
//@Component
//@EnableScheduling
@Component
@EnableScheduling
public class ScheduleTool {
    @Autowired
    private HkSyncParkServiceImpl hkSyncParkService;
    @Autowired
    private HkSyncImgServiceImpl hkSyncImgService;
    @Autowired
    private HkSyncEmpowerServiceImpl hkSyncEmpowerService;
    @Autowired
    private HkSyncOrgUserServiceImpl hkSyncOrgUserService;
    private HkSyncOrgUserToHKServiceImpl hkSyncOrgUserService;
    @Autowired
    private HkSyncVisitFromHKServiceImpl hkSyncVisitFromHKService;
    @Autowired
    private HkSyncVehicleFromHKServiceImpl hkSyncVehicleFromHKService;
    @Autowired
    private HkSyncVisitServiceImpl hkSyncVisitService;
    @Autowired
    private MemberService memberService;
    @Autowired
    private InterfaceLogService interfaceLogService;
    /**
     * 是否开发者
     */
    @Value("${timing}")
    private Boolean timing;
    @Autowired
    private DataSyncConfig dataSyncConfig;
    /**
     * 缓存省市区
     * 每分钟拉取一次今日的访客预约数据
     * @throws Exception
     */
    @Scheduled(fixedDelay= 60*1000)
    @Scheduled(cron= "0 0 23 * * ?")
    public void syncVehicleUpdateData() throws Exception {
        hkSyncVehicleFromHKService.syncVehicleUpdateData(new Date(System.currentTimeMillis()-24*60*60*1000));
    }
    /**
     * 每分钟拉取一次今日的访客预约数据
     * @throws Exception
     */
    @Scheduled(fixedRate= 30*1000)
    public void syncVistAppointData() throws Exception {
        if(Constants.DEALING_FROM_HK_VISIT){
            return ;
        }
        try {
            Constants.DEALING_FROM_HK_VISIT =true;
            hkSyncVisitFromHKService.syncVistAppointData(new Date());
            Constants.DEALING_FROM_HK_VISIT =false;
        }catch (Exception e){
//            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
        }finally {
            Constants.DEALING_FROM_HK_VISIT =false;
        }
    }
    /**
     * 每10分钟拉取一次最新访客登记状态(预约成功和已登记)
     * @throws Exception
     */
    @Scheduled(fixedRate= 10*60*1000)
    public void syncVisitOuttimeStatus() throws Exception {
        hkSyncVisitService.getOutTimeVisitRecord();
    }
    /**
     * 下载海康系统图片数据
     * @throws Exception
     */
    @Scheduled(fixedRate= 60*1000)
    public void downloadHkImg() throws Exception {
        hkSyncImgService.downHKImgs(0);
        if(dataSyncConfig.getNeedDealImg()!=null && dataSyncConfig.getNeedDealImg()){
            hkSyncImgService.downHKImgs(0);
        }
    }
    /**
     * 定时同步组织信息到海康系统
     * @throws Exception
     */
    @Scheduled(fixedDelay= 60*1000)
    @Scheduled(fixedRate= 60*1000)
    public void syncOrgData() {
        hkSyncOrgUserService.syncOrgData();
        if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.erp){
            //如果是ERP系统同步下发
            hkSyncOrgUserService.syncOrgData();
        }
    }
    /**
     * 定时同步用户信息到海康系统
     * @throws Exception
     */
    @Scheduled(fixedDelay= 60*1000)
    @Scheduled(fixedRate= 60*1000)
    public void syncUserData()  {
        hkSyncOrgUserService.syncUserData();
        if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.erp) {
            //如果是ERP系统同步下发
            hkSyncOrgUserService.syncUserData();
        }
    }
    /**
     * 定时同步申请通过的访客数据到海康系统
     * @throws Exception
     */
    @Scheduled(fixedDelay= 60*1000)
    @Scheduled(fixedRate= 60*1000)
    public void syncVisitData()  {
        hkSyncVisitService.syncVisitData();
    }
    /**
 /*   *//**
     * 定时同步内部人员授权到海康系统
     * @throws Exception
     */
    @Scheduled(fixedDelay= 60*1000)
     *//*
    @Scheduled(fixedRate= 3*1000)
    public void syncEmpowerData()  {
        hkSyncEmpowerService.syncEmpowerData();
    }
    /**
    *//**
     * 定时查询人员下发海康结果(任务是否已下载结束)
     * @throws Exception
     */
    @Scheduled(fixedDelay= 60*1000)
     *//*
    @Scheduled(fixedRate= 60*1000)
    public void syncEmpowerResultData()  {
        hkSyncEmpowerService.syncEmpowerResultData();
    }
    */
    /**
     * 定时查询人员实际下发权限结果,是否已经下载成功
     * @throws Exception
     */
    @Scheduled(fixedDelay= 60*1000)
     *//*
    @Scheduled(fixedRate= 60*1000)
    public void syncEmpowerDetailData()  {
        hkSyncEmpowerService.syncEmpowerDetailData();
    }
    }*/
    /**
     * 定时同步车辆包期到海康系统
     * @throws Exception
     */
    @Scheduled(fixedDelay= 60*1000)
    @Scheduled(fixedRate= 60*1000)
    public void syncParkBookData()  {
        hkSyncImgService.syncParkBookData();
        hkSyncParkService.syncParkBookData();
    }
    /**
     * 定时冻结内部人员
     */
    @Scheduled(fixedDelay= 60*1000)
    @Scheduled(fixedRate= 60*1000)
    public void memberFreeze()  {
        memberService.memberFreeze();
    }
    /**
     * 每天清理超过一周的接口日志数据(清除和安防平台对接的接口数据)
     * @throws Exception
     */
    @Scheduled(cron= "0 0 23 * * ?")
    public void clearThreeMonthLog() throws Exception {
        interfaceLogService.clearThreeMonthLog();
    }
}