LotStatusCheckServiceImpl.java
package com.mycim.server.wip.service;
import com.alipay.sofa.runtime.api.annotation.SofaService;
import com.alipay.sofa.runtime.api.annotation.SofaServiceBinding;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.server.base.manager.NamedObjectManager;
import com.mycim.server.wip.manager.LotQueryManager;
import com.mycim.server.wip.manager.RunCardQueryManager;
import com.mycim.valueobject.wip.Lot;
import com.mycim.valueobject.wip.LotRunCard;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* @author finatice.yang
* @date 2021/5/14
**/
@Service
@SofaService(interfaceType = LotStatusCheckService.class, bindings = {@SofaServiceBinding(bindingType = "bolt")})
public class LotStatusCheckServiceImpl implements LotStatusCheckService {
@Autowired
RunCardQueryManager runCardQueryManager;
@Autowired
LotQueryManager lotQueryManager;
@Autowired
NamedObjectManager namedObjectManager;
@Override
public boolean isValidRcHold(Lot lot, String reason) {
List<LotRunCard> runcardList = runCardQueryManager.getEffectiveLotRuncardByLot(lot.getLotRrn());
for (LotRunCard runcard : runcardList) {
String lotFlowSeq = lotQueryManager.getFlowSeqByLot(lot);
boolean isValidRcHold = StringUtils.equals(lotFlowSeq, runcard.getSplitFlowSeq()) &&
StringUtils.contains(reason, namedObjectManager.getInstanceId(runcard.getRunCardRrn()));
if (isValidRcHold) {
return true;
}
}
return false;
}
@Override
public boolean hasValidRcHold(Lot lot) {
List<Map> holdReasons = lotQueryManager.getHoldReasons(lot.getLotRrn());
List<LotRunCard> runcardList = runCardQueryManager.getEffectiveLotRuncardByLot(lot.getLotRrn());
for (LotRunCard runcard : runcardList) {
String lotFlowSeq = lotQueryManager.getFlowSeqByLot(lot);
String runcardId = namedObjectManager.getInstanceId(runcard.getRunCardRrn());
for (Map holdReason : holdReasons) {
String reason = MapUtils.getString(holdReason, "reason");
boolean isValidRcHold = StringUtils.equals(lotFlowSeq, runcard.getSplitFlowSeq()) &&
StringUtils.contains(reason, runcardId);
if (isValidRcHold) {
return true;
}
}
}
return false;
}
}