package com.chinaztt.mes.technology.state.routing;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
import com.chinaztt.mes.common.handler.StateMachineHandler;
|
import com.chinaztt.mes.technology.entity.Routing;
|
import com.chinaztt.mes.technology.mapper.RoutingMapper;
|
import com.chinaztt.mes.technology.mapper.RoutingOperationMapper;
|
import com.chinaztt.mes.technology.state.routing.constant.RoutingEvents;
|
import com.chinaztt.mes.technology.state.routing.constant.RoutingStateStringValues;
|
import lombok.AllArgsConstructor;
|
import org.springframework.messaging.Message;
|
import org.springframework.statemachine.StateMachine;
|
import org.springframework.statemachine.annotation.OnTransition;
|
import org.springframework.statemachine.annotation.WithStateMachine;
|
import org.springframework.stereotype.Component;
|
|
import java.util.List;
|
|
|
/**
|
* @Author: zhangxy
|
* @Date: 2020-08-24 9:51
|
*/
|
@AllArgsConstructor
|
@Component
|
@WithStateMachine(id = "routingStateMachine")
|
public class RoutingStateListener {
|
|
private RoutingMapper routingMapper;
|
private RoutingOperationMapper routingOperationMapper;
|
|
/**
|
* 接受
|
*/
|
@OnTransition(source = RoutingStateStringValues.DRAFT, target = RoutingStateStringValues.ACCEPTED)
|
public boolean accept(StateMachine stateMachine, Message<RoutingEvents> msg) {
|
Routing routing = (Routing) msg.getHeaders().get("routing");
|
List<Long> ids = routingOperationMapper.checkOperationPartByRoutingId(routing.getId());
|
if (CollectionUtil.isNotEmpty(ids)) {
|
stateMachine.getExtendedState().getVariables().put(StateMachineHandler.ERROR_KEY, "工序未全部绑定零件");
|
return false;
|
}
|
// ids = routingOperationMapper.checkMasterOperationByRoutingId(routing.getId());
|
// if (CollectionUtil.isEmpty(ids) || ids.size() != 1) {
|
// stateMachine.getExtendedState().getVariables().put(StateMachineHandler.ERROR_KEY, "有且只能有一个工序绑定成品零件");
|
// return false;
|
// }
|
routing.setState(RoutingStateStringValues.ACCEPTED);
|
routingMapper.updateById(routing);
|
return true;
|
}
|
|
|
/**
|
* 作废
|
*/
|
@OnTransition(source = RoutingStateStringValues.ACCEPTED, target = RoutingStateStringValues.CANCELLED)
|
public boolean cancel(StateMachine stateMachine, Message<RoutingEvents> msg) {
|
Routing routing = (Routing) msg.getHeaders().get("routing");
|
routing.setState(RoutingStateStringValues.CANCELLED);
|
routingMapper.updateById(routing);
|
return true;
|
}
|
|
|
/**
|
* 撤回
|
*
|
* @param stateMachine
|
* @param msg
|
* @return
|
*/
|
@OnTransition(source = RoutingStateStringValues.ACCEPTED, target = RoutingStateStringValues.DRAFT)
|
public boolean revoke(StateMachine stateMachine, Message<RoutingEvents> msg) {
|
Routing routing = (Routing) msg.getHeaders().get("routing");
|
routing.setState(RoutingStateStringValues.DRAFT);
|
routingMapper.updateById(routing);
|
return true;
|
}
|
|
|
}
|