EquipmentQueryManagerImpl.java
package com.mycim.server.wip.manager.impl;
import com.mycim.framework.utils.lang.BooleanUtils;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.CollectionUtils;
import com.mycim.server.base.manager.NamedObjectManager;
import com.mycim.server.ctx.exec.manager.ProcessOperationDescContextValueManager;
import com.mycim.server.ems.manager.EntityGroupManager;
import com.mycim.server.prp.manager.OperationManager;
import com.mycim.server.spec.manager.ProcessSpecItemManager;
import com.mycim.server.wip.dao.EquipmentQueryDAO;
import com.mycim.server.wip.manager.EquipmentQueryManager;
import com.mycim.server.wip.manager.LotQueryManager;
import com.mycim.valueobject.bas.Relation;
import com.mycim.valueobject.ems.Equipment;
import com.mycim.valueobject.prp.Operation;
import com.mycim.valueobject.security.Station;
import com.mycim.valueobject.wip.Lot;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
* @author Johnson.Wang
* @version 6.0.0
* @date 2019/9/24
**/
@Service
@Transactional
public class EquipmentQueryManagerImpl implements EquipmentQueryManager {
private static final String FUTURE_KEY = "future";
private static final String FUTURE_STEP_SEQ_KEY = "futureStepSeq";
private static final String FUTURE_OPERATION_KEY = "future";
@Autowired
private EquipmentQueryDAO equipmentQueryDAO;
@Autowired
private NamedObjectManager namedObjectManager;
@Autowired
private OperationManager operationManager;
@Autowired
private EntityGroupManager entityGroupManager;
@Autowired
private LotQueryManager lotQueryManager;
@Autowired
private ProcessOperationDescContextValueManager operationDescContextValueManager;
@Autowired
private ProcessSpecItemManager processSpecItemManager;
@Override
public List<Station> getEntities4ExtByUser(long userRrn, String namedSpace, String filter) {
return equipmentQueryDAO.getEntities4ExtByUser(userRrn, namedSpace, filter);
}
@Override
public Map<String, Integer> countLotByStausForEntity(String lotStatus) {
return equipmentQueryDAO.countLotByStausForEntity(lotStatus);
}
@Override
public List<String> getLotsStatusEntity(Long entityRrn) {
return equipmentQueryDAO.getLotsStatusEntity(entityRrn);
}
@Override
public List<Equipment> getEquipment4Ext(long equipmentRrn, long stationRrn) {
List<Equipment> equipmentList = equipmentQueryDAO.getEquipment4Ext(equipmentRrn, stationRrn);
if (CollectionUtils.isNotEmpty(equipmentList)) {
for (Equipment equipment : equipmentList) {
equipment.setProcessEngineerId(namedObjectManager.getNamedObjectId(equipment.getProcessEngineerRrn()));
equipment.setEquipmentModelId(namedObjectManager.getNamedObjectId(equipment.getEquipmentModelRrn()));
Long tmpRrn = equipment.getControlingStationRrn();
if ((tmpRrn != null) && (tmpRrn.longValue() > 0)) {
equipment.setControlingStationId(namedObjectManager.getNamedObjectId(tmpRrn));
}
tmpRrn = equipment.getProcessEngineerRrn();
if ((tmpRrn != null) && (tmpRrn > 0)) {
equipment.setProcessEngineerId(namedObjectManager.getNamedObjectId(tmpRrn));
}
}
}
return equipmentList;
}
@Override
public Long getDefaultEqpt(Long operationRrn) {
Long defaultEqptRrn = null;
// 1.get entity group
Operation operation = operationManager.getOperation(operationRrn);
// 2.get entitys in group
List<Relation> entities = entityGroupManager.getAllEntities(operation.getEntityGroupRrn());
long firstEqptRrn = 0L;
for (Relation item : entities) {
if (firstEqptRrn == 0L) {
firstEqptRrn = item.getFromRrn();
}
if (item.getAttributedata1() != null && BooleanUtils.toBoolean(item.getAttributedata1())) {
defaultEqptRrn = item.getFromRrn();
break;
}
}
if (defaultEqptRrn != null) {
return defaultEqptRrn;
} else {
return firstEqptRrn;
}
}
@Override
public String getEqpGroupIdsByEquipmentRrn(long equipmentRrn) {
return equipmentQueryDAO.getEqpGroupIdsByEquipmentRrn(equipmentRrn);
}
@Override
public String getMixedEqptGroupIds(Lot lot, long equipmentRrn) {
//批次流程上的设备组
String eqptGroupIdsForProcess = processSpecItemManager
.getEqptGroupIds(lot.getProcessRrn(), lot.getProcessVersion(), lot.getRouteRrn(),
lot.getOperationRrn());
//设备的设备组
String eqptGroupIdsForEqpt = this.getEqpGroupIdsByEquipmentRrn(equipmentRrn);
List mixed = new ArrayList();
if (StringUtils.isNotEmpty(eqptGroupIdsForProcess) && StringUtils.isNotEmpty(eqptGroupIdsForEqpt)) {
String[] eqptGroupIds1 = eqptGroupIdsForProcess.split(",");
String[] eqptGroupIds2 = eqptGroupIdsForEqpt.split(",");
Set<String> set = new HashSet<>(Arrays.asList(eqptGroupIds2));
for (String id : eqptGroupIds1) {
if (set.contains(StringUtils.trim(id))) {
mixed.add(StringUtils.trim(id));
}
}
}
return String.join(",", mixed);
}
@Override
public String getEquipmentLastMoveOutTime(String equipmentId) {
return equipmentQueryDAO.getEquipmentLastMoveOutTime(equipmentId);
}
@Override
public boolean checkEquipmentHasRunningLot(Long eqpRrn) {
return equipmentQueryDAO.checkEquipmentHasRunningLot(eqpRrn);
}
@Override
public String getLastHoldTimeOnEqp(Long eqpRrn) {
return equipmentQueryDAO.getLastHoldTimeOnEqp(eqpRrn);
}
@Override
public String getLastProcessEndTime(String equipmentId, String chamberType) {
return equipmentQueryDAO.getLastProcessEndTime(equipmentId, chamberType);
}
@Override
public String getLastMoveInTimeByEqp(String equipmentId, Long eqpRrn) {
return equipmentQueryDAO.getLastMoveInTimeByEqp(equipmentId, eqpRrn);
}
@Override
public String getLastProcessStartTime(Long eqpRrn, String equipmentId, String chamberType) {
return equipmentQueryDAO.getLastProcessStartTime(eqpRrn, equipmentId, chamberType);
}
@Override
public Map<String,Object> getLastEquipmentRunRecipe(String equipmentId) {
return equipmentQueryDAO.getLastEquipmentRunRecipe(equipmentId);
}
@Override
public Map<String,Object> getLastChamberEquipmentRunRecipe(String equipmentId, Long equipmentRrn, String chamberType) {
return equipmentQueryDAO.getLastChamberEquipmentRunRecipe(equipmentId, equipmentRrn, chamberType);
}
@Override
public String getLastEquipmentLogEvent(Long eqpRrn) {
return equipmentQueryDAO.getLastEquipmentLogEvent(eqpRrn);
}
}