EquipmentConstrainInfoManagerImpl.java
package com.mycim.server.constrain.manager.impl;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.jdbc.Page;
import com.mycim.framework.oid.IDGenerators;
import com.mycim.framework.oid.type.IDNames;
import com.mycim.framework.oid.type.SequenceNames;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.server.base.manager.NamedObjectManager;
import com.mycim.server.base.manager.RelationManager;
import com.mycim.server.base.manager.TransactionLogManager;
import com.mycim.server.constrain.dao.EquipmentConstrainInfoDAO;
import com.mycim.server.constrain.manager.EquipmentConstrainInfoManager;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.bas.TransactionLog;
import com.mycim.valueobject.consts.LinkTypeList;
import com.mycim.valueobject.consts.TransactionNames;
import com.mycim.valueobject.prp.EquipmentConstrainInfo;
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.*;
import java.util.stream.Collectors;
/**
* 设备约束信息 managerImpl
*
* @author pinyan song
* @version 6.0.0
* @date 2019-8-30
**/
@Service
@Transactional
public class EquipmentConstrainInfoManagerImpl implements EquipmentConstrainInfoManager {
@Autowired
private NamedObjectManager namedObjectManager;
@Autowired
private RelationManager relationManager;
@Autowired
private EquipmentConstrainInfoDAO constrainInfoDAO;
@Autowired
private EquipmentConstrainInfoDAO equipmentConstrainInfoDAO;
@Autowired
private TransactionLogManager transactionLogManager;
@Override
public List<EquipmentConstrainInfo> qryEnableEquipmentConstrainInfos(List<String> rules, String equipmentId,
String constrainAction) {
return equipmentConstrainInfoDAO.qryEnableEquipmentConstrains(rules, equipmentId, constrainAction);
}
@Override
public EquipmentConstrainInfo getEquipmentConstrainInfo(EquipmentConstrainInfo equipmentConstrainInfo,
Boolean approveFlag) {
long constrainRrn = equipmentConstrainInfo.getConstrainRrn();
if (approveFlag) {
if (constrainRrn > 0) {
return equipmentConstrainInfoDAO.getEquipmentConstrainInfoForCheck(constrainRrn);
} else {
return equipmentConstrainInfoDAO.getEquipmentConstrainInfoForCheck(equipmentConstrainInfo);
}
} else {
if (constrainRrn > 0) {
return equipmentConstrainInfoDAO.getEquipmentConstrainInfo(constrainRrn);
} else {
return equipmentConstrainInfoDAO.getEquipmentConstrainInfo(equipmentConstrainInfo);
}
}
}
@Override
public void insertEquipmentConstrainInfo(EquipmentConstrainInfo equipmentConstrainInfo) {
TransactionLog transactionLog = transactionLogManager
.startTransactionLog(equipmentConstrainInfo.getCreateBy(), TransactionNames.CREATE_KEY);
equipmentConstrainInfo.setTransName(TransactionNames.CREATE_KEY);
Long constrainRrn = Long
.valueOf(IDGenerators.get(IDNames.SEQUENCE).generateId(SequenceNames.MODULE_SEQ_OBJECT_RRN));
equipmentConstrainInfo.setConstrainRrn(constrainRrn);
equipmentConstrainInfoDAO.insertEquipmentConstrainInfoTmp(equipmentConstrainInfo);
equipmentConstrainInfoDAO.insertEquipmentConstrainHistory(equipmentConstrainInfo, transactionLog.getTransRrn());
transactionLogManager.markTransactionLog(transactionLog);
}
@Override
public void modifyEquipmentConstrainInfo(EquipmentConstrainInfo equipmentConstrainInfo) {
TransactionLog transactionLog = transactionLogManager
.startTransactionLog(LocalContext.getUserId(), TransactionNames.MODIFY_KEY);
equipmentConstrainInfo.setTransName(TransactionNames.MODIFY_KEY);
equipmentConstrainInfoDAO.modifyEquipmentConstrainInfoTmp(equipmentConstrainInfo);
equipmentConstrainInfoDAO.insertEquipmentConstrainHistory(equipmentConstrainInfo, transactionLog.getTransRrn());
transactionLogManager.markTransactionLog(transactionLog);
}
@Override
public Page qryEquipmentConstrainInfos(Page lotConstrainPage, Map condtionInfo) {
boolean checkFlag = MapUtils.getBooleanValue(condtionInfo, "checkFlag");
if (checkFlag) {
return equipmentConstrainInfoDAO.qryEquipmentConstrainsForCheck(lotConstrainPage, condtionInfo);
} else {
return equipmentConstrainInfoDAO.qryEquipmentConstrains(lotConstrainPage, condtionInfo);
}
}
@Override
public List<EquipmentConstrainInfo> validationEquipmentConstrainInfos(Map condtionMap) {
return equipmentConstrainInfoDAO.validationEquipmentConstrains(condtionMap);
}
@Override
public void deleteEquipmentConstrainInfo(EquipmentConstrainInfo equipmentConstrainInfo) {
String user = equipmentConstrainInfo.getCreateBy();
TransactionLog transactionLog = transactionLogManager.startTransactionLog(user, TransactionNames.DELETE_KEY);
equipmentConstrainInfo.setTransName(TransactionNames.DELETE_KEY);
equipmentConstrainInfoDAO.insertEquipmentConstrainHistory(equipmentConstrainInfo, transactionLog.getTransRrn());
equipmentConstrainInfoDAO.modifyEquipmentConstrainInfoTmp(equipmentConstrainInfo);
transactionLogManager.markTransactionLog(transactionLog);
}
@Override
public void checkAndModifyEquipmentConstrainInfo(EquipmentConstrainInfo equipmentConstrainInfo) {
String checkResult = equipmentConstrainInfo.getCheckResult();
String user = equipmentConstrainInfo.getModifyBy();
Long constrainInfoRrn = equipmentConstrainInfo.getConstrainRrn();
TransactionLog transactionLog = transactionLogManager.startTransactionLog(user, checkResult);
EquipmentConstrainInfo activeEquipmentConstrainInfo = equipmentConstrainInfoDAO
.getEquipmentConstrainInfo(constrainInfoRrn);
EquipmentConstrainInfo equipmentConstrainInfoFromTmp = equipmentConstrainInfoDAO
.getEquipmentConstrainInfoForCheck(constrainInfoRrn);
String transName = equipmentConstrainInfoFromTmp.getTransName();
equipmentConstrainInfoFromTmp.setTransName(null);
if (StringUtils.equalsIgnoreCase(checkResult, EquipmentConstrainInfo.APPROVE)) {
equipmentConstrainInfoFromTmp.setEffectiveDate(DateUtils.formatDate(new Date(), DateUtils.DATE_FORMAT));
if (StringUtils.equalsIgnoreCase(transName, TransactionNames.CREATE_KEY)) {// 新建
equipmentConstrainInfoDAO.insertEquipmentConstrainInfo(equipmentConstrainInfoFromTmp);
equipmentConstrainInfoDAO.modifyEquipmentConstrainInfoTmp(equipmentConstrainInfoFromTmp);
equipmentConstrainInfoDAO
.insertEquipmentConstrainHistory(equipmentConstrainInfo, transactionLog.getTransRrn());
} else if (StringUtils.equalsIgnoreCase(transName, TransactionNames.MODIFY_KEY)) {
equipmentConstrainInfoDAO.modifyEquipmentConstrainInfo(equipmentConstrainInfoFromTmp);
equipmentConstrainInfoDAO.modifyEquipmentConstrainInfoTmp(equipmentConstrainInfoFromTmp);
equipmentConstrainInfoDAO
.insertEquipmentConstrainHistory(equipmentConstrainInfo, transactionLog.getTransRrn());
} else if (StringUtils.equalsIgnoreCase(transName, TransactionNames.DELETE_KEY)) {
equipmentConstrainInfoDAO
.insertEquipmentConstrainHistory(equipmentConstrainInfo, transactionLog.getTransRrn());
equipmentConstrainInfoDAO.deleteEquipmentConstrainInfoTmp(constrainInfoRrn);
equipmentConstrainInfoDAO.deleteEquipmentConstrainInfo(constrainInfoRrn);
}
} else {
if (StringUtils.equalsIgnoreCase(transName, TransactionNames.CREATE_KEY)) {// 新建
equipmentConstrainInfoDAO
.insertEquipmentConstrainHistory(equipmentConstrainInfo, transactionLog.getTransRrn());
equipmentConstrainInfoDAO.deleteEquipmentConstrainInfoTmp(constrainInfoRrn);
} else if (StringUtils.equalsIgnoreCase(transName, TransactionNames.MODIFY_KEY)) {
activeEquipmentConstrainInfo.setModifyBy(equipmentConstrainInfoFromTmp.getModifyBy());
activeEquipmentConstrainInfo.setModifyTime(equipmentConstrainInfoFromTmp.getModifyTime());
equipmentConstrainInfoDAO.modifyEquipmentConstrainInfoTmp(activeEquipmentConstrainInfo);
equipmentConstrainInfoDAO
.insertEquipmentConstrainHistory(equipmentConstrainInfo, transactionLog.getTransRrn());
} else if (StringUtils.equalsIgnoreCase(transName, TransactionNames.DELETE_KEY)) {
activeEquipmentConstrainInfo.setModifyBy(equipmentConstrainInfoFromTmp.getModifyBy());
activeEquipmentConstrainInfo.setModifyTime(equipmentConstrainInfoFromTmp.getModifyTime());
equipmentConstrainInfoDAO.modifyEquipmentConstrainInfoTmp(activeEquipmentConstrainInfo);
equipmentConstrainInfoDAO
.insertEquipmentConstrainHistory(equipmentConstrainInfo, transactionLog.getTransRrn());
}
}
transactionLogManager.markTransactionLog(transactionLog);
}
@Override
public Integer getMaxConstrainSeqByEqpt(String eqptId) {
return equipmentConstrainInfoDAO.getMaxConstrainSeqByEqpt(eqptId);
}
@Override
public Map<String, Object> getEqptConstrain4LotOperator(String equipmentId) {
Map<String, Object> constrainMap = new HashMap<>(3);
if (StringUtils.isNotBlank(equipmentId)) {
List<String> constrainRule = Arrays
.asList(EquipmentConstrainInfo.NORMAL_EQUIPMENT_RULE, EquipmentConstrainInfo.FREE_EQUIPMENT_RULE);
List<EquipmentConstrainInfo> equipmentConstrainInfos = this
.qryEnableEquipmentConstrainInfos(constrainRule, equipmentId, EquipmentConstrainInfo.REJECTSTOP);
constrainMap.put(EquipmentConstrainInfo.REJECTSTOP, equipmentConstrainInfos);
equipmentConstrainInfos = this
.qryEnableEquipmentConstrainInfos(constrainRule, equipmentId, EquipmentConstrainInfo.ACCEPT);
constrainMap.put(EquipmentConstrainInfo.ACCEPT, equipmentConstrainInfos);
}
return constrainMap;
}
@Override
public void changeEquipmentConstantToEnable() {
equipmentConstrainInfoDAO.changeEquipmentConstantToEnable();
}
public boolean checkLotConstrain(Lot lot, EquipmentConstrainInfo equipmentConstrainInfo) {
long operationRrn = equipmentConstrainInfo.getOperationRrn();
long processRrn = equipmentConstrainInfo.getProcessRrn();
long productRrn = equipmentConstrainInfo.getProductRrn();
String lotId = equipmentConstrainInfo.getLotId();
String recipeId = equipmentConstrainInfo.getRecipeId();
String stageId = equipmentConstrainInfo.getStageId();
String customerId = equipmentConstrainInfo.getCustomerId();
long recipeRrn = namedObjectManager
.getNamedObjectRrn(recipeId, LocalContext.getFacilityRrn(), ObjectList.RECIPE_KEY);
List<Map> recipeList = relationManager.getRelationFromRecipe(recipeRrn, LinkTypeList.RECIPEFAMILY_TO_RECIPE);
List<String> recipeIds = recipeList.stream().map(map -> {
return MapUtils.getString(map, "recipeId");
}).collect(Collectors.toList());
recipeIds.add(recipeId);
if ((operationRrn == 0 || operationRrn == lot.getOperationRrn()) &&
(processRrn == 0 || processRrn == lot.getProcessRrn()) &&
(productRrn == 0 || productRrn == lot.getProductRrn()) &&
(StringUtils.isBlank(lotId) || lotId.equals(lot.getLotId())) &&
(StringUtils.isBlank(recipeId) || recipeIds.contains(lot.getRecipeId())) &&
(StringUtils.isBlank(stageId) || stageId.equals(lot.getStageId())) &&
(StringUtils.isBlank(customerId) || customerId.equals(lot.getCustomerId()))) {
return true;
}
return false;
}
}