FlowApproveRpc.java 1.96 KB
package cn.fw.valhalla.rpc.flow;

import cn.fw.data.base.domain.common.Message;
import cn.fw.flow.api.FlowApi;
import cn.fw.flow.param.ApprovalDataDto;
import cn.fw.flow.result.FlowOrderDto;
import cn.fw.valhalla.rpc.flow.dto.FlowDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Collections;
import java.util.Objects;

import static cn.fw.common.businessvalidator.Validator.BV;


/**
 * @author kurisu
 * @description: 发起审批
 * @date 2019/9/22.
 */
@Service
@Slf4j
public class FlowApproveRpc {

    private final FlowApi flowApi;

    @Autowired
    public FlowApproveRpc(FlowApi flowApi) {
        this.flowApi = flowApi;
    }


    public String initiate(final FlowDto flowDto) {
        ApprovalDataDto dataDto = new ApprovalDataDto();
        BeanUtils.copyProperties(flowDto, dataDto);
        dataDto.setBriefContentList(flowDto.getBriefContentList());
        dataDto.setParam(flowDto.getParam());
        Message<FlowOrderDto> msg = flowApi.initiateApproval(dataDto);
        log.info("发起审批FlowApproveRpc.initiateApproval, 参数:[{}] 结果:{}", dataDto, msg.getResult());
        boolean success = msg.isSuccess() && Objects.nonNull(msg.getData());
        BV.isTrue(success, msg.getResult());
        FlowOrderDto data = msg.getData();
        return data.getOrderNo();
    }

    public boolean cancel(final String orderNo) {
        try {
            Message<Boolean> msg = flowApi.cancelApproval(Collections.singletonList(orderNo));
            log.info("取消审批FlowApproveRpc.cancelApproval, 参数:[{}] 结果:{}", orderNo, msg.getResult());
            return msg.isSuccess() && Objects.equals(Boolean.TRUE, msg.getData());
        } catch (Exception e) {
            log.error("取消审批失败, 参数:[{}]", orderNo);
            e.printStackTrace();
        }
        return false;
    }
}