IClearApiTask.java 4.79 KB
package com.erry.iclear.dateInterface.task;

import com.erry.iclear.dateInterface.enums.ErrorCodeEnum;
import com.erry.iclear.dateInterface.api.response.TokenResult;
import com.erry.iclear.dateInterface.service.ApiService;
import com.erry.iclear.dateInterface.service.EmailSenderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * @author Administrator
 */
@Component
@Slf4j
public class IClearApiTask {
    @Autowired
    ApiService apiService;
    @Autowired
    EmailSenderService emailSenderService;
    String token;
    @Value("${iclear.address.url42}")
    String iclearAddressUrl42;
    @Value("${iclear.address.url43}")
    String iclearAddressUrl43;

    /**
     * TODO 定时任务:每分钟推送: 报关数据、回执
     */
    @Scheduled(cron = "${task.pushCustomsTask}")
    public void pushCustomsTask(){
        try{
            log.info("pushCustomsTask start>>>>>>>>>>>>");
            //获取token
            getToken();
            //获取token成功则进行海关回执推送
            apiService.pushCustoms(this.token);
            log.info("pushCustomsTask end>>>>>>>>>>>>");
        }catch (Exception e){
            log.error("pushCustomsTask() error:" +e.getMessage());
        }
    }

    /**
     * TODO 定时任务:每分钟推送: 完整报文
     */
    @Scheduled(cron = "${task.pushMawbTask}")
    public void pushMawbTask(){
        try{
            log.info("pushMawbTask start>>>>>>>>>>>>");
            //获取token
            getToken();
            //获取token成功则进行海关回执推送
            apiService.pushMawb(this.token);
            log.info("pushMawbTask end>>>>>>>>>>>>");
        }catch (Exception e){
            log.error("pushMawbTask() error:" +e.getMessage());
        }
    }

    /**
     * TODO 定时任务:每5分钟监听: iclear应用节点是否正常
     */
    @Scheduled(cron = "${task.monitorIclearNodes}")
    public void monitorIclearNodesTask(){
        try{
            log.info("monitorIclearNodesTask start>>>>>>>>>>>>");
            boolean requestResult42 = apiService.connectIclearNode(this.iclearAddressUrl42);
            if(!requestResult42){
                emailSenderService.sendMail(null,"系统访问异常提示","系统提示:42节点访问异常,请及时查看");
            }
            boolean requestResult43 = apiService.connectIclearNode(this.iclearAddressUrl43);
            if(!requestResult43){
                emailSenderService.sendMail(null,"系统访问异常提示","系统提示:43节点访问异常,请及时查看");
            }
            log.info("monitorIclearNodesTask end>>>>>>>>>>>>");
        }catch (Exception e){
            log.error("monitorIclearNodesTask() error:" +e.getMessage());
        }
    }

    /**
     * 每次请求获取最新token
     * @throws Exception
     */
    private void getToken() throws Exception{
        try {
            //获取token
            TokenResult tokenResult = apiService.getToken();
            if(tokenResult.getErrorcode().equals(ErrorCodeEnum.SUCCESS.getCode())){
                this.token = tokenResult.getData().getToken();
            }
        }catch(Exception ex){
            log.error(ex.getMessage(),ex);
        }
        if(this.token == null){
            throw new Exception("获取token失败!");
        }
    }

    /*
     * wy on 2022年1月20日17:50:57
     * 经clj确认,这两个任务没有必要
     *  *//**
     * TODO 定时任务:每分钟推送: 推送失败的回执数据,
     *//*
    @Scheduled(cron = "${task.pushErrorReturnDate}")
    public void pushErrorReturnDate(){
      *//*  try{
            log.info("pushErrorReturnDate start>>>>>>>>>>>>");
            //获取token
            getToken();
            //获取token成功则进行海关回执推送
            apiService.pushErrorReturnDate(this.token);
            log.info("pushErrorReturnDate end>>>>>>>>>>>>");
        }catch (Exception e){
            log.error("pushErrorReturnDate() error:" +e.getMessage());
        }*//*
    }
    *//**
     * TODO 定时任务:每分钟推送: 推送失败的申报数据,
     *//*
    @Scheduled(cron = "${task.pushErrorDeclareDate}")
    public void pushErrorData(){
       *//* try{
            log.info("pushErrorDeclareDate start>>>>>>>>>>>>");
            //获取token
            getToken();
            //获取token成功则进行海关回执推送
            apiService.pushErrorDeclareDate(this.token);
            log.info("pushErrorDeclareDate end>>>>>>>>>>>>");
        }catch (Exception e){
            log.error("pushErrorDeclareDate() error:" +e.getMessage());
        }*//*
    }*/

}