|
|
|
@ -1,11 +1,16 @@
|
|
|
|
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.step.jx;
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.base.IPartExtService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxPlcExtService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesPartExt;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.WorkOrderExtModel;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
|
|
|
|
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService;
|
|
|
|
|
import cn.estsh.i3plus.mes.pcn.api.iservice.base.IModuleService;
|
|
|
|
|
import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService;
|
|
|
|
|
import cn.estsh.i3plus.mes.pcn.serviceimpl.busi.dispatch.cachedispatch.WorkCellDataCacheDispatch;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.util.MesPcnConstWords;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesPlc;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
|
|
|
@ -37,6 +42,9 @@ public class JxCenterPlcPassStepService extends BaseStepService {
|
|
|
|
|
@Autowired
|
|
|
|
|
private IJxPlcExtService plcExtService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IPartExtService partExtService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public StepResult execute(StationRequestBean reqBean) {
|
|
|
|
|
|
|
|
|
@ -70,13 +78,36 @@ public class JxCenterPlcPassStepService extends BaseStepService {
|
|
|
|
|
|
|
|
|
|
if (reqBean.getDataMap().containsKey(MesPcnExtConstWords.PLC_PASS_VALUE)) reqBean.getDataMap().remove(MesPcnExtConstWords.PLC_PASS_VALUE);
|
|
|
|
|
|
|
|
|
|
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxCenterPlcPassStepService --- SUCCESS ---", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
|
|
|
|
|
WorkOrderExtModel orderModel = getWorkOrderExtModel(reqBean);
|
|
|
|
|
|
|
|
|
|
if (null != orderModel) doCachePartInfo2CellTakt(reqBean, orderModel);
|
|
|
|
|
|
|
|
|
|
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxCenterPlcPassStepService --- PART_NO:{} --- SUCCESS ---", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), null != orderModel ? orderModel.getPartNo() : MesPcnExtConstWords.EMPTY);
|
|
|
|
|
|
|
|
|
|
if (!forceCmd) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean,
|
|
|
|
|
String.format("%s产线放行成功!", StringUtils.isEmpty(reqBean.getProductSn()) ? String.format("管理编码[%s]", getManageCode(reqBean.getTray(), 1)) : String.format("产品条码[%s]", reqBean.getProductSn())));
|
|
|
|
|
else return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, "产线强制放行成功!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void doCachePartInfo2CellTakt(StationRequestBean reqBean, WorkOrderExtModel orderModel) {
|
|
|
|
|
String key = new StringJoiner(MesPcnExtConstWords.COLON).add(MesPcnExtConstWords.CELL_TAKT).add(reqBean.getOrganizeCode()).add(reqBean.getWorkCenterCode()).add(reqBean.getWorkCellCode()).toString();
|
|
|
|
|
WorkCellDataCacheDispatch dispatch = new WorkCellDataCacheDispatch.builder().key(key).item(MesPcnExtConstWords.PART_NO).org(reqBean.getOrganizeCode()).build().get();
|
|
|
|
|
if (!StringUtils.isEmpty(dispatch.getValue()) && dispatch.getValue().split(MesPcnExtConstWords.AND)[0].equals(orderModel.getPartNo())) return;
|
|
|
|
|
new WorkCellDataCacheDispatch.builder().key(key).item(MesPcnExtConstWords.PART_NO)
|
|
|
|
|
.value(new StringJoiner(MesPcnExtConstWords.AND).add(orderModel.getPartNo()).add(orderModel.getPartNameRdd()).add(getStandardWork(reqBean.getOrganizeCode(), orderModel.getPartNo())).toString())
|
|
|
|
|
.timeSecond(MesPcnEnumUtil.EXPIRE_TIME.NEVER.getValue()).org(reqBean.getOrganizeCode()).build().save();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String getStandardWork(String organizeCode, String partNo) {
|
|
|
|
|
MesPartExt partExtDb = partExtService.getPartExt(organizeCode, partNo);
|
|
|
|
|
return (null != partExtDb && !StringUtils.isEmpty(partExtDb.getStandardWork())) ? partExtDb.getStandardWork().toString() : MesPcnExtConstWords.ZERO_STR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private WorkOrderExtModel getWorkOrderExtModel(StationRequestBean reqBean) {
|
|
|
|
|
return !reqBean.getDataMap().containsKey(MesPcnExtConstWords.WORK_ORDER) ? null :
|
|
|
|
|
JSONObject.parseObject(JSONObject.toJSONString(reqBean.getDataMap().get(MesPcnExtConstWords.WORK_ORDER)), WorkOrderExtModel.class);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesPlc getPlcDb(StationRequestBean reqBean, StationResultBean resultBean, String plcCode) {
|
|
|
|
|
String plcStr = (String) doHandlePlcData(reqBean, resultBean, plcCode, 1, null);
|
|
|
|
|
MesPlc plcDb = !StringUtils.isEmpty(plcStr) ? JSONObject.parseObject(plcStr, MesPlc.class) : plcExtService.getPlcDb(reqBean.getOrganizeCode(), plcCode);
|
|
|
|
|