PiLotReqServiceImpl.java
package com.mycim.server.pilot.service;
import com.alipay.sofa.runtime.api.annotation.SofaService;
import com.alipay.sofa.runtime.api.annotation.SofaServiceBinding;
import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.beans.BeanUtils;
import com.mycim.framework.utils.lang.ObjectUtils;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.server.base.manager.TransactionLogManager;
import com.mycim.server.pilot.manager.PiLotCheckManager;
import com.mycim.server.pilot.manager.PiLotReqManager;
import com.mycim.server.wip.manager.PiLotInqManager;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.bas.TransactionLog;
import com.mycim.valueobject.consts.PiLotStatusEnum;
import com.mycim.valueobject.consts.TransactionNames;
import com.mycim.valueobject.ems.pilot.PiLotRcpGrp;
import com.mycim.valueobject.ems.pilot.PiLotRcpMaping;
import com.mycim.valueobject.ems.pilot.PiLotSetup;
import com.mycim.valueobject.ems.pilot.PiLotView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author songpy
* @version 1.0.0
* @date 2021/8/26
**/
@Service
@SofaService(interfaceType = PiLotReqService.class, bindings = {@SofaServiceBinding(bindingType = "bolt")})
public class PiLotReqServiceImpl implements PiLotReqService {
@Autowired
private PiLotInqManager piLotInqManager;
@Autowired
private PiLotReqManager piLotReqManager;
@Autowired
PiLotCheckManager piLotCheckManager;
@Autowired
private TransactionLogManager transactionLogManager;
@Override
public void addPiLotSetup(PiLotSetup piLotSetup) {
TransactionLog transactionLog = transactionLogManager.startTransactionLog(LocalContext.getUserId(),
TransactionNames.CREATE_KEY);
piLotReqManager.addPiLotSetup(piLotSetup, transactionLog);
}
@Override
public void updatePiLotSetup(PiLotSetup piLotSetup) {
TransactionLog transactionLog = transactionLogManager.startTransactionLog(LocalContext.getUserId(),
TransactionNames.MODIFY_KEY);
PiLotSetup oldSetup = piLotInqManager.getPiLotSetupByRrn(piLotSetup.getPiLotRrn());
//判断是否变更Lot
Boolean needUpdateLot = !StringUtils.equalsIgnoreCase(piLotSetup.getBoundLotId(), oldSetup.getBoundLotId()) &&
StringUtils.isNotEmpty(piLotSetup.getBoundLotId());
if (needUpdateLot && piLotSetup.getBoundViewRrn() > 0L) {
PiLotView view = piLotInqManager.getPiLotViewByRrn(piLotSetup.getBoundViewRrn());
int count = view.getRetryCount() - 1;
BeanUtils.copyProperties(piLotSetup, view);
transactionLog.setTransId(TransactionNames.PI_LOT_ASSIGN_LOT);
// 子母批模式 assign lot
if (StringUtils.equalsIgnoreCase(piLotSetup.getSingleLot(), PiLotStatusEnum.NO.toString())) {
view.setStatus(PiLotStatusEnum.WAITSPLIT.toString());
piLotSetup.setStatus(PiLotStatusEnum.WAITSPLIT.toString());
}
// 单批模式 assign lot 和retry
if (StringUtils.equalsIgnoreCase(piLotSetup.getSingleLot(), PiLotStatusEnum.YES.toString())) {
view.setStatus(PiLotStatusEnum.WAITCOMPLETE.toString());
piLotSetup.setStatus(PiLotStatusEnum.WAITCOMPLETE.toString());
//设置指定站点出站 hold信息 #42577
piLotReqManager.setSingleLotFutureHold(view, oldSetup);
if (StringUtils.isNotEmpty(oldSetup.getBoundLotId())) {
Assert.state(count >= 0, Errors.create().key(MessageIdList.PILOT_RETRY_COUNT)
.content("Retry exceeds the set number of times").build());
view.setRetryCount(count);
transactionLog.setTransId(TransactionNames.PI_LOT_RETRY);
}
}
piLotReqManager.savePiLotView(view, transactionLog);
piLotReqManager.createPilotFlowLotTransHistory(oldSetup, view);
}
piLotReqManager.updatePiLotSetup(piLotSetup, transactionLog);
}
@Override
public void deletePiLotSetup(Long piLotSetupRrn) {
TransactionLog transactionLog = transactionLogManager.startTransactionLog(LocalContext.getUserId(),
TransactionNames.DELETE_KEY);
piLotReqManager.deletePiLotSetup(piLotSetupRrn, transactionLog);
}
@Override
public void savePiLotView(PiLotView piLotView) {
TransactionLog transactionLog = transactionLogManager.startTransactionLog(LocalContext.getUserId(),
TransactionNames.MODIFY_KEY);
piLotReqManager.savePiLotView(piLotView, transactionLog);
}
@Override
public void retryPilotView(PiLotView piLotView) {
TransactionLog transactionLog = transactionLogManager.startTransactionLog(LocalContext.getUserId(),
TransactionNames.PI_LOT_RETRY);
PiLotView oldView = piLotInqManager.getPiLotViewByRrn(piLotView.getViewRrn());
piLotReqManager.savePiLotView(piLotView, transactionLog);
piLotView.setChildLotRrn(oldView.getChildLotRrn());
piLotReqManager.createPilotFlowLotTransHistory(null, piLotView);
}
@Override
public void closePiLotViewAndSetup(PiLotView piLotView) {
TransactionLog transactionLog = transactionLogManager.startTransactionLog(LocalContext.getUserId(),
TransactionNames.EVENT_STATUS_CLOSE);
piLotView.setStatus(PiLotStatusEnum.CLOSE.toString());
if (StringUtils.equalsIgnoreCase(piLotView.getSingleLot(), PiLotStatusEnum.YES.toString())) {
piLotReqManager.deletePilotSingleLotFutureHold(piLotView);
}
piLotReqManager.savePiLotView(piLotView, transactionLog);
PiLotSetup setup = piLotInqManager.getPiLotSetupByRrn(piLotView.getPiLotRrn());
setup.setStatus(PiLotStatusEnum.CREATED.toString());
piLotReqManager.updatePiLotSetup(setup, transactionLog);
piLotReqManager.createPilotFlowLotTransHistory(null, piLotView);
}
@Override
public void updateRcpGrp(PiLotRcpGrp piLotRcpGrp) {
TransactionLog transactionLog = transactionLogManager.startTransactionLog(LocalContext.getUserId(),
TransactionNames.MODIFY_KEY);
piLotReqManager.updateRcpGrp(piLotRcpGrp, transactionLog);
}
@Override
public void addRcpGrp(PiLotRcpGrp piLotRcpGrp) {
TransactionLog transactionLog = transactionLogManager.startTransactionLog(LocalContext.getUserId(),
TransactionNames.CREATE_KEY);
piLotReqManager.addRcpGrp(piLotRcpGrp, transactionLog);
}
@Override
public void addRcpToGrp(PiLotRcpMaping piLotRcpMaping) {
TransactionLog transactionLog = transactionLogManager.startTransactionLog(LocalContext.getUserId(),
TransactionNames.CREATE_KEY);
piLotReqManager.addRcpToGrp(piLotRcpMaping, transactionLog);
}
@Override
public void deleteRcp(PiLotRcpMaping piLotRcpMaping) {
TransactionLog transactionLog = transactionLogManager.startTransactionLog(LocalContext.getUserId(),
TransactionNames.DELETE_KEY);
piLotReqManager.deleteRcpFromGrp(piLotRcpMaping, transactionLog);
}
@Override
public void handPilotByTime() {
piLotReqManager.handPilotByTime();
}
}