ChangeFlowContextValueManagerImpl.java
package com.mycim.server.ctx.exec.manager.impl;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.server.base.manager.NamedObjectManager;
import com.mycim.server.ctx.exec.manager.ChangeFlowContextValueManager;
import com.mycim.server.ctx.manager.ContextValueManager;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.context.ChangeFlowContextValue;
import com.mycim.valueobject.prp.ContextValue;
import com.mycim.valueobject.wip.Lot;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author Johnson.Wang
* @version 6.0.0
* @date 2019/10/6
**/
@Service
@Transactional
public class ChangeFlowContextValueManagerImpl implements ChangeFlowContextValueManager {
private final NamedObjectManager namedObjectManager;
private final ContextValueManager contextValueManager;
public ChangeFlowContextValueManagerImpl(NamedObjectManager namedObjectManager,
ContextValueManager contextValueManager) {
this.namedObjectManager = namedObjectManager;
this.contextValueManager = contextValueManager;
}
@Override
public List<ContextValue> getChangeFlowContextValues(Lot lot) {
ChangeFlowContextValue contextValue = buildNewChangeFlowContextValue(lot);
return contextValueManager.simulateContextValues(contextValue);
}
private ChangeFlowContextValue buildNewChangeFlowContextValue(Lot lot) {
ChangeFlowContextValue changeFlowContextValue = buildNewChangeFlowContextValue();
changeFlowContextValue.setContextKey1(String.valueOf(lot.getProductRrn()));
changeFlowContextValue.setContextKey2(String.valueOf(lot.getProcessRrn()));
long routeRrn = namedObjectManager
.getNamedObjectRrn(lot.getRouteId(), LocalContext.getFacilityRrn(), ObjectList.WFL_KEY);
changeFlowContextValue.setContextKey3(String.valueOf(routeRrn));
changeFlowContextValue.setContextKey4(String.valueOf(lot.getOperationRrn()));
Long recipeLogicalRrn = lot.getRecipeLogicalRrn();
if (recipeLogicalRrn != null) {
changeFlowContextValue.setContextKey5(String.valueOf(recipeLogicalRrn));
}
changeFlowContextValue.setContextKey6(String.valueOf(lot.getEqptRrn()));
changeFlowContextValue.setContextKey7(String.valueOf(lot.getPriority()));
return changeFlowContextValue;
}
private ChangeFlowContextValue buildNewChangeFlowContextValue() {
ChangeFlowContextValue contextValue = new ChangeFlowContextValue();
long contextRrn = namedObjectManager
.getNamedObjectRrn(contextValue.getContextId(), LocalContext.getFacilityRrn(), ObjectList.CONTEXT_KEY);
contextValue.setContextRrn(contextRrn);
return contextValue;
}
}