ErpTaskRpc.java 2.38 KB
package cn.fw.dalaran.rpc.erp;

import cn.fw.common.exception.BusinessException;
import cn.fw.dalaran.common.constants.Constants;
import cn.fw.dalaran.rpc.erp.dto.TaskSetReq;
import cn.fw.data.base.domain.common.Message;
import cn.fw.erp.sdk.api.TaskApi;
import cn.fw.erp.sdk.api.param.TaskAddReq;
import cn.fw.erp.sdk.api.param.TaskBatchAddReq;
import com.alibaba.fastjson.JSON;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;


@Slf4j
@Component
@RequiredArgsConstructor
public class ErpTaskRpc {

    private final TaskApi taskApi;// 定时任务API

    /**
     * 添加task任务
     */
    public <T> void setTask(TaskSetReq<T> req) {
        log.info("调用ERP系统, 添加定时任务入参req[{}]", JSON.toJSONString(req));
        try {
            TaskAddReq<T> addReq = new TaskAddReq<>();
            BeanUtils.copyProperties(req, addReq);
            addReq.setSystem(Constants.APPLICATION_NAME);
            final Message<Long> msg = taskApi.addTask(addReq);
            log.info("调用ERP系统添加定时任务结果[{}]", JSON.toJSONString(msg));
        } catch (Exception e) {
            log.error("调用ERP系统添加定时任务失败 -> " + e.getCause());
            throw new BusinessException("调用ERP系统添加定时任务失败");
        }
    }

    /**
     * 批量添加task任务
     */
    public <T> void batchAddTask(TaskBatchAddReq<T> batchAddReq) {
        log.info("调用ERP系统, 批量添加定时任务入参batchAddReq[{}]", JSON.toJSONString(batchAddReq));
        try {
            Message<Void> msg = taskApi.addBatchTask(batchAddReq);
            log.info("调用ERP系统, 批量添加定时任务结果[{}]", JSON.toJSONString(msg));
        } catch (Exception e) {
            throw new BusinessException("调用ERP系统, 批量添加定时任务失败");
        }
    }

    /**
     * 取消task任务
     */
    public <T> void cancelTask(Long taskId) {
        log.info("调用ERP系统, 批量添加定时任务入参taskId[{}]", taskId);
        try {
            Message<Void> msg = taskApi.cancelTask(taskId);
            log.info("调用ERP系统, 取消定时任务结果[{}]", JSON.toJSONString(msg));
        } catch (Exception e) {
            throw new BusinessException("调用ERP系统, 取消定时任务失败");
        }
    }
}