package jnpf.flowable.util;
|
|
import cn.hutool.core.util.ObjectUtil;
|
import jnpf.constant.MsgCode;
|
import jnpf.exception.WorkFlowException;
|
import jnpf.flowable.entity.OperatorEntity;
|
import jnpf.flowable.entity.TaskEntity;
|
import jnpf.flowable.entity.TemplateEntity;
|
import jnpf.flowable.enums.OperatorStateEnum;
|
import jnpf.flowable.enums.TemplateStatueEnum;
|
import jnpf.flowable.mapper.OperatorMapper;
|
import jnpf.flowable.mapper.TaskMapper;
|
import jnpf.flowable.mapper.TemplateMapper;
|
import jnpf.flowable.model.message.FlowMsgModel;
|
import jnpf.flowable.model.time.FlowTimeModel;
|
import jnpf.flowable.model.util.FlowNature;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @author :JNPF开发平台组
|
* @version: V3.1.0
|
* @copyright 引迈信息技术有限公司
|
* @date :2024/5/23 上午10:33
|
*/
|
@Component
|
public class OverTimeUtil {
|
@Autowired
|
private MsgUtil msgUtil;
|
@Autowired
|
private OperatorUtil operatorUtil;
|
@Autowired
|
private TaskMapper taskMapper;
|
@Autowired
|
private OperatorMapper operatorMapper;
|
@Autowired
|
private TemplateMapper templateMapper;
|
|
public void overMsg(FlowTimeModel flowTimeModel) throws WorkFlowException {
|
TaskEntity task = taskMapper.getInfo(flowTimeModel.getTaskId());
|
//暂停,是跳过
|
if (task == null) {
|
throw new WorkFlowException(MsgCode.FA001.get());
|
}
|
boolean isSuccess = false;
|
try {
|
operatorUtil.isSuspend(task);
|
} catch (Exception e) {
|
isSuccess = true;
|
}
|
if (!isSuccess) {
|
// 判断是否下架
|
TemplateEntity template = templateMapper.selectById(task.getTemplateId());
|
if (null != template && !ObjectUtil.equals(template.getStatus(), TemplateStatueEnum.up.getCode())) {
|
isSuccess = true;
|
}
|
}
|
if (isSuccess) {
|
if (flowTimeModel.getOverTime()) {
|
flowTimeModel.setNum(flowTimeModel.getNum() + 1);
|
flowTimeModel.setTransferNum(flowTimeModel.getTransferNum() + 1);
|
}
|
flowTimeModel.setIsPause(true);
|
return;
|
}
|
operatorUtil.isCancel(task);
|
OperatorEntity operator = operatorMapper.selectById(flowTimeModel.getOperatorId());
|
if (operator == null || ObjectUtil.equals(operator.getStatus(), OperatorStateEnum.Futility.getCode())) {
|
throw new WorkFlowException(MsgCode.FA001.get());
|
}
|
if (operator.getHandleStatus() != null) {
|
throw new WorkFlowException(MsgCode.WF031.get());
|
}
|
// complete为1的经办,不执行(加签、指派、转办、驳回、撤回、变更、复活流程,该节点的限时提醒规则重新生效)
|
if (operator.getCompletion().equals(FlowNature.Action)) {
|
throw new WorkFlowException(MsgCode.FA001.get());
|
}
|
if (flowTimeModel.getOverTime()) {
|
if (operator.getDuedate() == null) {
|
operator.setDuedate(new Date());
|
operatorMapper.updateById(operator);
|
}
|
}
|
List<OperatorEntity> list = new ArrayList<>();
|
list.add(operator);
|
FlowMsgModel msgModel = new FlowMsgModel();
|
msgModel.setFlowModel(flowTimeModel.getFlowModel());
|
msgModel.setTaskEntity(task);
|
msgModel.setNodeList(flowTimeModel.getFlowModel().getNodeEntityList());
|
msgModel.setNodeCode(operator.getNodeCode());
|
msgModel.setOperatorList(list);
|
msgModel.setNotice(!flowTimeModel.getOverTime());
|
msgModel.setOvertime(flowTimeModel.getOverTime());
|
msgModel.setWait(false);
|
msgUtil.message(msgModel);
|
if (flowTimeModel.getOverTime()) {
|
flowTimeModel.setNum(flowTimeModel.getNum() + 1);
|
flowTimeModel.setTransferNum(flowTimeModel.getTransferNum() + 1);
|
}
|
}
|
|
}
|