ProcessOperationDescContextValueManagerImpl.java
package com.mycim.server.ctx.exec.manager.impl;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.CharUtils;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.CollectionUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.server.base.manager.NamedObjectManager;
import com.mycim.server.ctx.exec.manager.ProcessOperationDescContextValueManager;
import com.mycim.server.ctx.manager.ContextValueManager;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.prp.ContextValue;
import com.mycim.valueobject.prp.ProcessOperationDescContextValue;
import com.mycim.valueobject.wip.Lot;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
* @author Johnson.Wang
* @version 6.0.0
* @date 2019/9/3
**/
@Service
@Transactional
public class ProcessOperationDescContextValueManagerImpl implements ProcessOperationDescContextValueManager {
private final NamedObjectManager namedObjectManager;
private final ContextValueManager contextValueManager;
public ProcessOperationDescContextValueManagerImpl(NamedObjectManager namedObjectManager,
ContextValueManager contextValueManager) {
this.namedObjectManager = namedObjectManager;
this.contextValueManager = contextValueManager;
}
@Override
public String getOperationSeqAndWait(Long productRrn, Long processRrn, Long routeRrn, Long operationRrn) {
ProcessOperationDescContextValue operationDescContextValue = buildNewOperationDescContextValue(productRrn,
processRrn,
routeRrn,
operationRrn);
StringBuilder sb = new StringBuilder();
List<ContextValue> contextValues = contextValueManager
.simulateContextValuesForRecipeAndOperationSeq(operationDescContextValue);
if (CollectionUtils.isNotEmpty(contextValues)) {
for (ContextValue ctxValue : contextValues) {
// format the correct recipe string
sb.append(ctxValue.getResultValue1());
String resultValue2 = (null == ctxValue.getResultValue2()) ? "" : ctxValue.getResultValue2();
String resultValue3 = (null == ctxValue.getResultValue3()) ? "" : ctxValue.getResultValue3();
String resultValue4 = (null == ctxValue.getResultValue4()) ? "" : ctxValue.getResultValue4();
sb.append("|");
sb.append(resultValue2);
sb.append("|");
sb.append(resultValue3);
sb.append("|");
sb.append(resultValue4);
sb.append(",");
}
if (sb.length() > 0) {
if (sb.charAt(sb.length() - 1) == CharUtils.COMMA_SIGN) {
sb.deleteCharAt(sb.length() - 1);
}
}
}
return sb.toString();
}
@Override
public ProcessOperationDescContextValue simulateContextValue(Long productRrn, Long processRrn,
Integer processVersion, Long routeRrn,
Long operationRrn) {
ProcessOperationDescContextValue operationDescContextValue = buildNewOperationDescContextValue(productRrn,
processRrn,
processVersion,
routeRrn,
operationRrn);
ContextValue contextValue = contextValueManager.simulateContextValue(operationDescContextValue);
if (contextValue != null) {
operationDescContextValue.copy(contextValue);
}
return operationDescContextValue;
}
@Override
public String getOperationDesc(Long productRrn, Long processRrn, Integer processVersion, Long routeRrn,
Long operationRrn) {
ProcessOperationDescContextValue operationDescContextValue = simulateContextValue(productRrn, processRrn,
processVersion, routeRrn,
operationRrn);
if (operationDescContextValue != null) {
return operationDescContextValue.getOperationDesc();
}
return StringUtils.EMPTY;
}
@Override
public ContextValue getOperationDescContextValue(Long productRrn, Long processRrn, Integer processVersion,
Long routeRrn, Long operationRrn) {
ProcessOperationDescContextValue processOperationDescContextValue = buildNewOperationDescContextValue(
productRrn, processRrn, processVersion, routeRrn, operationRrn);
ContextValue contextValue = contextValueManager
.getContextValue(processOperationDescContextValue, LocalContext.getFacilityRrn());
return contextValue;
}
@Override
public String buildContextValue4StepDesc(Long facility, Lot lot) {
String desc = StringUtils.EMPTY;
ProcessOperationDescContextValue operationDESCContextValue = buildNewOperationDescContextValue();
operationDESCContextValue.setProductRrn(lot.getProductRrn());
operationDESCContextValue.setProcessRrn(lot.getProcessRrn());
operationDESCContextValue.setOperationRrn(lot.getOperationRrn());
operationDESCContextValue.setRouteRrn(lot.getRouteRrn());
operationDESCContextValue.setProcessVersion(lot.getProcessVersion());
ContextValue contextValue = contextValueManager.getContextValueNoFilter(operationDESCContextValue);
if (contextValue != null) {
desc = contextValue.getResultValue1();
}
return desc;
}
@Override
public List<ContextValue> getOperationDescContextValueList(long productRrn, long processRrn, int processVersion) {
long facilityRrn = LocalContext.getFacilityRrn();
ProcessOperationDescContextValue operationDescContextValue = new ProcessOperationDescContextValue();
operationDescContextValue.setContextRrn(namedObjectManager
.getNamedObjectRrn(operationDescContextValue.getContextId(),
facilityRrn, ObjectList.CONTEXT_KEY));
operationDescContextValue.setProductRrn(productRrn);
operationDescContextValue.setProcessRrn(processRrn);
operationDescContextValue.setProcessVersion(processVersion);
return contextValueManager.getContextValuesByContextKey(operationDescContextValue);
}
@Override
public String getOperationDesc(Map<String, Object> contextValueInfo) {
String desc = StringUtils.EMPTY;
ProcessOperationDescContextValue operationDESCContextValue = buildNewOperationDescContextValue();
// BeanUtils.copyMapToBean(operationDESCContextValue, contextValueInfo);
operationDESCContextValue.setProcessVersion(MapUtils.getInteger(contextValueInfo, "processVersion"));
operationDESCContextValue.setProductRrn(MapUtils.getLong(contextValueInfo, "productRrn"));
operationDESCContextValue.setProcessRrn(MapUtils.getLong(contextValueInfo, "processRrn"));
operationDESCContextValue.setOperationRrn(MapUtils.getLong(contextValueInfo, "operationRrn"));
operationDESCContextValue.setRouteRrn(MapUtils.getLong(contextValueInfo, "routeRrn"));
ContextValue contextValue = contextValueManager.getContextValueNoFilter(operationDESCContextValue);
if (contextValue != null) {
desc = contextValue.getResultValue1();
}
return desc;
}
private ProcessOperationDescContextValue buildNewOperationDescContextValue(Long productRrn, Long processRrn,
Integer processVersion, Long routeRrn,
Long operationRrn) {
ProcessOperationDescContextValue operationDescContext = buildNewOperationDescContextValue();
operationDescContext.setProductRrn(productRrn);
operationDescContext.setProcessRrn(processRrn);
operationDescContext.setRouteRrn(routeRrn);
operationDescContext.setOperationRrn(operationRrn);
operationDescContext.setProcessVersion(processVersion);
return operationDescContext;
}
private ProcessOperationDescContextValue buildNewOperationDescContextValue(Long productRrn, Long processRrn,
Long routeRrn, Long operationRrn) {
ProcessOperationDescContextValue operationDescContext = buildNewOperationDescContextValue();
operationDescContext.setProductRrn(productRrn);
operationDescContext.setProcessRrn(processRrn);
operationDescContext.setRouteRrn(routeRrn);
operationDescContext.setOperationRrn(operationRrn);
return operationDescContext;
}
private ProcessOperationDescContextValue buildNewOperationDescContextValue() {
ProcessOperationDescContextValue operationDescContext = new ProcessOperationDescContextValue();
operationDescContext.setContextRrn(namedObjectManager.getNamedObjectRrn(operationDescContext.getContextId(),
LocalContext.getFacilityRrn(),
ObjectList.CONTEXT_KEY));
return operationDescContext;
}
}