AttributeQueryManagerImpl.java
package com.mycim.server.spec.manager.impl;
import com.mycim.server.ctx.exec.manager.ResequenceContextValueManager;
import com.mycim.server.prp.manager.ProcessReworkManager;
import com.mycim.server.spec.manager.AttributeQueryManager;
import com.mycim.server.spec.manager.ProcessSpecItemManager;
import com.mycim.valueobject.prp.ContextValueUtils;
import com.mycim.valueobject.prp.ProcessAttributeDto;
import com.mycim.valueobject.prp.ProcessFlowSeqDto;
import com.mycim.valueobject.prp.ProcessReworkDto;
import com.mycim.valueobject.prp.ProcessSpecItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.lang.Override;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Qiansheng.Wang
* @since 2020-08-18
*/
@Service
@Transactional
public class AttributeQueryManagerImpl implements AttributeQueryManager {
@Autowired
ProcessSpecItemManager processSpecItemManager;
@Autowired
ProcessReworkManager processReworkManager;
@Autowired
ResequenceContextValueManager resequenceContextValueManager;
@Override
public Map<String, ProcessAttributeDto> getProcessAttributesFromTargetVersion(Long processRrn,
Integer processVersion,
Integer targetProcessVersion) {
Map<String, ProcessAttributeDto> result = new HashMap<>();
setReworkInfoToProcessAttribute(processRrn, processVersion, result);
setFlowSeqToProcessAttribute(processRrn, processVersion, targetProcessVersion, result);
ProcessAttributeDto processAttribute;
for (ProcessSpecItem processSpecItem : processSpecItemManager
.getProcessSpecItemsForActive(processRrn, targetProcessVersion)) {
String key = ContextValueUtils
.buildKeyByProcess(processSpecItem.getProcessRrn(), processVersion, processSpecItem.getRouteRrn(),
processSpecItem.getOperationRrn());
processAttribute = getProcessAttribute(result, key);
processAttribute.setProcessSpecItem(processSpecItem);
}
return result;
}
@Override
public Map<String, ProcessAttributeDto> getProcessAttributesWithSetup(Long processRrn, Integer processVersion) {
Map<String, ProcessAttributeDto> result = new HashMap<>();
setReworkInfoToProcessAttribute(processRrn, processVersion, result);
ProcessAttributeDto processAttribute;
for (ProcessSpecItem processSpecItem : processSpecItemManager.getProcessSpecItems(processRrn, processVersion)) {
String key = ContextValueUtils
.buildKeyByProcess(processSpecItem.getProcessRrn(), processSpecItem.getProcessVersion(),
processSpecItem.getRouteRrn(), processSpecItem.getOperationRrn());
processAttribute = getProcessAttribute(result, key);
processAttribute.setProcessSpecItem(processSpecItem);
}
return result;
}
private void setReworkInfoToProcessAttribute(Long processRrn, Integer processVersion,
Map<String, ProcessAttributeDto> map) {
ProcessAttributeDto attr;
List<ProcessReworkDto> processReworks = processReworkManager
.getProcessReworksForProcess(processRrn, processVersion);
for (ProcessReworkDto processRework : processReworks) {
String key = ContextValueUtils
.buildKeyByProcess(processRework.getProcessRrn(), processVersion, processRework.getRouteRrn(),
processRework.getOperationRrn());
attr = getProcessAttribute(map, key);
attr.setProcessRework(processRework);
}
}
private void setFlowSeqToProcessAttribute(Long processRrn, Integer processVersion, Integer targetProcessVersion,
Map<String, ProcessAttributeDto> map) {
List<ProcessFlowSeqDto> processFlowSeqs = resequenceContextValueManager
.getProcessFlowSeqsForProcess(processRrn, targetProcessVersion);
for (ProcessFlowSeqDto dto : processFlowSeqs) {
String key = ContextValueUtils
.buildKeyByProcess(dto.getProcessRrn(), processVersion, dto.getRouteRrn(), dto.getOperationRrn());
ProcessAttributeDto attr = getProcessAttribute(map, key);
ProcessSpecItem processSpecItem = attr
.getProcessSpecItem(dto.getProcessRrn(), processVersion, dto.getRouteRrn(), dto.getOperationRrn());
processSpecItem.setFlowSeq(dto.getFlowSeq());
}
}
private ProcessAttributeDto getProcessAttribute(Map<String, ProcessAttributeDto> map, String key) {
ProcessAttributeDto obj;
obj = map.get(key);
if (obj == null) {
obj = new ProcessAttributeDto();
map.put(key, obj);
}
return obj;
}
@Override
public Map<String, String> getAllFlowSeqMap(Long processRrn, Integer processVersion) {
Map<String, String> flowSeqInfo = new HashMap<>();
for (ProcessFlowSeqDto dto : resequenceContextValueManager
.getProcessFlowSeqsForProcess(processRrn, processVersion)) {
flowSeqInfo.put(ContextValueUtils.buildKeyByProcess(processRrn, processVersion, dto.getRouteRrn(),
dto.getOperationRrn()), dto.getFlowSeq());
}
return flowSeqInfo;
}
}