扫描产成零件编码 工步

tags/yfai-pcn-ext-v2.3
王杰 7 months ago
parent c0ed1c8ce8
commit e4776fe0df

@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.equiplog;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesWorkCellScanMonitorLogDao;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
@ -9,6 +10,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.swslog.ISwsWriteDbLogService;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesWcEquipment;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -32,6 +34,9 @@ public class MesWorkCellScanMonitorLogExtService implements ISwsWriteDbLogServic
private IMesEquipmentExtService equipmentExtService;
@Autowired
private IMesProdOrgExtService prodOrgExtService;
@Autowired
private IMesWorkCellScanMonitorLogDao workCellScanMonitorLogDao;
private final static Map<String, List<String>> cellMsg2RepeatMap = new ConcurrentHashMap();
@ -46,11 +51,7 @@ public class MesWorkCellScanMonitorLogExtService implements ISwsWriteDbLogServic
if (null == scanMonitorContext) scanMonitorContext = new MesScanMonitorContext();
if (StringUtils.isEmpty(scanMonitorContext.getEquipmentCode())) {
MesWcEquipment wcEquipment = equipmentExtService.getWcEquipment(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getWorkCellCode());
scanMonitorContext.setEquipmentCode(null != wcEquipment ? wcEquipment.getEquipmentCode() : null);
scanMonitorContext.setEquipmentName(null != wcEquipment ? wcEquipment.getEquipmentName() : null);
}
restoreBasicInfo(resultBean, scanMonitorContext);
if (null == scanMonitorContext)
log.info("工厂{}生产线{}工位{}: MesWorkCellScanMonitorLogExtService --- 上下文当前不存在工位扫描监控信息 --- {}", resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getWorkCellCode(), resultBean.toWriteDbString());
@ -59,6 +60,17 @@ public class MesWorkCellScanMonitorLogExtService implements ISwsWriteDbLogServic
}
@Override
public void doRestoreDbLog(StationResultBean resultBean) {
if (StringUtils.isEmpty(resultBean.getScanInfo()) || CollectionUtils.isEmpty(resultBean.getResultList())) return;
List<MesProductionPsOutContext> productionPsOutContextList = resultBean.getResultList();
workCellScanMonitorLogDao.updateWorkCellScanMonitorLog(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getUserInfo(), Long.valueOf(resultBean.getScanInfo()), productionPsOutContextList);
}
private Boolean checkRepeat(StationResultBean resultBean, MesScanMonitorContext scanMonitorContext) {
initCellMsg2RepeatMap(resultBean);
@ -113,15 +125,22 @@ public class MesWorkCellScanMonitorLogExtService implements ISwsWriteDbLogServic
return message;
}
@Override
public void doRestoreDbLog(StationResultBean resultBean) {
if (StringUtils.isEmpty(resultBean.getScanInfo()) || CollectionUtils.isEmpty(resultBean.getResultList())) return;
List<MesProductionPsOutContext> productionPsOutContextList = resultBean.getResultList();
workCellScanMonitorLogDao.updateWorkCellScanMonitorLog(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getUserInfo(), Long.valueOf(resultBean.getScanInfo()), productionPsOutContextList);
private void restoreBasicInfo(StationResultBean resultBean, MesScanMonitorContext scanMonitorContext) {
MesWcEquipment wcEquipment = null;
if (StringUtils.isEmpty(scanMonitorContext.getEquipmentCode())) {
wcEquipment = equipmentExtService.getWcEquipment(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode(), resultBean.getWorkCellCode());
scanMonitorContext.setEquipmentCode(null != wcEquipment ? wcEquipment.getEquipmentCode() : null);
scanMonitorContext.setEquipmentName(null != wcEquipment ? wcEquipment.getEquipmentName() : null);
}
if (StringUtils.isEmpty(resultBean.getAreaCode())) {
if (!StringUtils.isEmpty(scanMonitorContext.getAreaCode())) resultBean.areaCode(scanMonitorContext.getAreaCode());
else if (null != wcEquipment && !StringUtils.isEmpty(wcEquipment.getAreaCode())) resultBean.areaCode(wcEquipment.getAreaCode());
else {
MesWorkCenter workCenter = prodOrgExtService.getWorkCenterDb(resultBean.getOrganizeCode(), resultBean.getWorkCenterCode());
if (null != workCenter) resultBean.areaCode(workCenter.getAreaCode());
}
}
}
}

@ -9,6 +9,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
@ -84,11 +85,15 @@ public class MesProductionPartNoScanStepService extends BaseStepService {
List<MesProductionPartContext> productionPartContextList = null;
List<String> readList;
List<String> partNoList;
String cellMessageSorce = null;
String suffix = null;
if (!CollectionUtils.isEmpty(chooseCavityPart)) {
String cellMessageSorce = chooseCavityPart.stream().filter(o -> (null != o && o.getKey().equals(MesPcnExtConstWords.CELL_MESSAGE_SOURCE))).findFirst().get().getValue();
//工位信息来源
cellMessageSorce = chooseCavityPart.stream().filter(o -> (null != o && o.getKey().equals(MesPcnExtConstWords.CELL_MESSAGE_SOURCE))).findFirst().get().getValue();
//搜集读取的产成零件编码
readList = new ArrayList<>(Arrays.asList(chooseCavityPart.stream().filter(o -> (null != o && o.getKey().equals(MesPcnExtConstWords.PART_NO))).findFirst().get().getValue().split(MesPcnExtConstWords.SEMICOLON)));
//发送工步内容
@ -107,10 +112,13 @@ public class MesProductionPartNoScanStepService extends BaseStepService {
} else {
//获取上下文产出零件信息
//发送工步内容
productionCustomContextStepService.sendStepContextMessage(reqBean, scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN);
//获取上下文产成零件信息
productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);
//搜集上下文产出零件编码
//搜集上下文产零件编码
readList = CollectionUtils.isEmpty(productionPartContextList) ? new ArrayList<>() : productionPartContextList.stream().filter(o -> !StringUtils.isEmpty(o)).map(MesProductionPartContext::getPartNo).collect(Collectors.toList());
//合并当前扫描的零件编码
@ -130,8 +138,7 @@ public class MesProductionPartNoScanStepService extends BaseStepService {
if (!stepResult.isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
//封装产出零件信息信息
if (CollectionUtils.isEmpty(productionPartContextList)) productionPartContextList = new ArrayList<>();
productionPartContextList = partDataMapSaveStepService.getProductionPartContext(reqBean, productionProcessContext, productionPartContextList, (Map<String, MesPart>) stepResult.getObj(), readList);
productionPartContextList = partDataMapSaveStepService.getProductionPartContext(reqBean, productionProcessContext, new ArrayList<>(), (Map<String, MesPart>) stepResult.getObj(), readList);
//验证是否全部为空腔
if (partDataMapSaveStepService.checkIsAllFinishCode(productionPartContextList)) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前产成零件信息全部为空腔,已清除当前的空腔数据!");
@ -151,6 +158,14 @@ public class MesProductionPartNoScanStepService extends BaseStepService {
//存储展示组件MODULE_CONTENT内容
productionDispatchContextStepService.dispatchModuleContentContext(reqBean, partDataMapSaveStepService.getModuleContextData2PartNo(reqBean, productionPartContextList));
//缓存产成零件编码到上下文得基础信息中, 下次开模即可无须再次选择或者扫描产成零件编码
if (CollectionUtils.isEmpty(chooseCavityPart) || !cellMessageSorce.equals(MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ.getValueStr())) {
productionProcessContextStepService.dispatchFunctionChooseCavityPartContext(reqBean, StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(),
new StationKvBean(MesPcnExtConstWords.CAVITY, "腔数", String.valueOf(productionPartContextList.size())),
new StationKvBean(MesPcnExtConstWords.CELL_MESSAGE_SOURCE, "工位信息来源", MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ.getValueStr()),
new StationKvBean(MesPcnExtConstWords.PART_NO, "零件编码", productionPartContextList.stream().filter(o -> null != o).map(MesProductionPartContext::getPartNo).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)))));
}
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(scanInfo), stepResult, String.format("当前%s验证成功!", suffix));
}

Loading…
Cancel
Save