tags/yfai-pcn-ext-v1.0
王杰 12 months ago
parent 002c30ef4b
commit ba951ff29f

@ -1,9 +1,12 @@
package cn.estsh.i3plus.ext.mes.pcn.api.base; package cn.estsh.i3plus.ext.mes.pcn.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellExtendCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.List;
public interface IMesProdOrgExtService { public interface IMesProdOrgExtService {
@ApiOperation(value = "根据生产线代码查询生产线信息") @ApiOperation(value = "根据生产线代码查询生产线信息")
@ -12,4 +15,13 @@ public interface IMesProdOrgExtService {
@ApiOperation(value = "根据生产线代码,工位代码查询工位信息") @ApiOperation(value = "根据生产线代码,工位代码查询工位信息")
MesWorkCell getWorkCellDb(String organizeCode, String workCenterCode, String workCellCode); MesWorkCell getWorkCellDb(String organizeCode, String workCenterCode, String workCellCode);
@ApiOperation(value = "根据子生产线代码,子工位代码,关系类型查询主子工位关系信息")
MesWorkCellExtendCfg getWorkCellExtendCfg(String organizeCode, String workCenterCodeBak, String workCellCodeBak, Integer extendType);
@ApiOperation(value = "根据生产线代码,工位代码,关系类型查询主子工位关系信息")
List<MesWorkCellExtendCfg> getWorkCellExtendCfgList(String organizeCode, String workCenterCode, String workCellCode, Integer extendType);
@ApiOperation(value = "根据生产线代码,工位代码查询主子工位实虚关系信息(排除传参workCellCodeBak数据)")
List<MesWorkCellExtendCfg> getWorkCellExtendCfgRvListByBak(String organizeCode, String workCenterCodeBak, String workCellCodeBak);
} }

@ -1,9 +1,6 @@
package cn.estsh.i3plus.ext.mes.pcn.api.busi; package cn.estsh.i3plus.ext.mes.pcn.api.busi;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesWorkOrderContext;
import cn.estsh.i3plus.pojo.mes.bean.MesMouldMultiCavity; import cn.estsh.i3plus.pojo.mes.bean.MesMouldMultiCavity;
import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
@ -168,4 +165,16 @@ public interface IMesProductionDispatchContextStepService {
@ApiOperation(value = "删除上下文装配件数据信息集合") @ApiOperation(value = "删除上下文装配件数据信息集合")
void deleteAssemblyDataContext(StationRequestBean reqBean); void deleteAssemblyDataContext(StationRequestBean reqBean);
@ApiOperation(value = "获取上下文非排序产品加工规则信息集合")
List<MesProdRuleNoSortContext> getProdRuleNosortDataContext(StationRequestBean reqBean);
@ApiOperation(value = "验证上下文非排序产品加工规则信息集合是否存在")
Boolean checkProdRuleNosortDataIsExistContext(StationRequestBean reqBean);
@ApiOperation(value = "保存上下文非排序产品加工规则信息集合", notes = "[JSON]List<MesProdRuleNoSortContext>")
Boolean saveProdRuleNosortDataContext(StationRequestBean reqBean, List<MesProdRuleNoSortContext> prodRuleNoSortContextList);
@ApiOperation(value = "删除上下文非排序产品加工规则信息集合")
void deleteProdRuleNosortDataContext(StationRequestBean reqBean);
} }

@ -4,14 +4,22 @@ import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellExtendCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellExtendCfgRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellRepository; import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository; import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service @Service
public class MesProdOrgExtService implements IMesProdOrgExtService { public class MesProdOrgExtService implements IMesProdOrgExtService {
@ -22,6 +30,9 @@ public class MesProdOrgExtService implements IMesProdOrgExtService {
@Autowired @Autowired
private MesWorkCellRepository workCellRepository; private MesWorkCellRepository workCellRepository;
@Autowired
private MesWorkCellExtendCfgRepository workCellExtendCfgRepository;
@Override @Override
public MesWorkCenter getWorkCenterDb(String organizeCode, String workCenterCode) { public MesWorkCenter getWorkCenterDb(String organizeCode, String workCenterCode) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode)) return null; if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode)) return null;
@ -38,4 +49,36 @@ public class MesProdOrgExtService implements IMesProdOrgExtService {
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCenterCode, workCellCode}); new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCenterCode, workCellCode});
} }
@Override
public MesWorkCellExtendCfg getWorkCellExtendCfg(String organizeCode, String workCenterCodeBak, String workCellCodeBak, Integer extendType) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCodeBak) || StringUtils.isEmpty(workCellCodeBak) || StringUtils.isEmpty(extendType)) return null;
return workCellExtendCfgRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.WORK_CENTER_CODE_BAK, MesPcnExtConstWords.WORK_CENTER_CODE_BAK, MesPcnExtConstWords.EXTEND_TYPE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCenterCodeBak, workCellCodeBak, extendType});
}
@Override
public List<MesWorkCellExtendCfg> getWorkCellExtendCfgList(String organizeCode, String workCenterCode, String workCellCode, Integer extendType) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode) || StringUtils.isEmpty(workCellCode) || StringUtils.isEmpty(extendType)) return null;
return workCellExtendCfgRepository.findByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.EXTEND_TYPE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCenterCode, workCellCode, extendType});
}
@Override
public List<MesWorkCellExtendCfg> getWorkCellExtendCfgRvListByBak(String organizeCode, String workCenterCodeBak, String workCellCodeBak) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCodeBak) || StringUtils.isEmpty(workCellCodeBak)) return null;
MesWorkCellExtendCfg workCellExtendCfg = getWorkCellExtendCfg(organizeCode, workCenterCodeBak, workCellCodeBak, MesExtEnumUtil.WORK_CELL_EXTEND_TYPE.RV.getValue());
if (null == workCellCodeBak) return null;
List<MesWorkCellExtendCfg> workCellExtendCfgList = getWorkCellExtendCfgList(organizeCode, workCellExtendCfg.getWorkCenterCode(), workCellExtendCfg.getWorkCellCode(), MesExtEnumUtil.WORK_CELL_EXTEND_TYPE.RV.getValue());
List<MesWorkCellExtendCfg> workCellExtendCfgListAfter = workCellExtendCfgList.stream().filter(o -> (null != o && workCellExtendCfg.getId().compareTo(o.getId()) != 0 && workCellExtendCfg.getSeq().compareTo(o.getSeq()) <= 0)).sorted(Comparator.comparing(MesWorkCellExtendCfg::getSeq)).collect(Collectors.toList());
List<MesWorkCellExtendCfg> workCellExtendCfgListBefore = workCellExtendCfgList.stream().filter(o -> (null != o && workCellExtendCfg.getSeq().compareTo(o.getSeq()) > 0)).sorted(Comparator.comparing(MesWorkCellExtendCfg::getSeq)).collect(Collectors.toList());
workCellExtendCfgList = new ArrayList<>();
workCellExtendCfgList.addAll(workCellExtendCfgListAfter);
workCellExtendCfgList.addAll(workCellExtendCfgListBefore);
return workCellExtendCfgList;
}
} }

@ -0,0 +1,65 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService;
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.serviceimpl.fsm.IShippingDispatchService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IStepService;
import cn.estsh.i3plus.mes.pcn.websocket.StationWebSocket;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellExtendCfg;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
* @Description :
* @Author : wangjie
**/
@Slf4j
@Service("mesManyCellIsVerificationStepService")
public class MesManyCellNoticeNextStepService extends BaseStepService {
@Autowired
private IMesProdOrgExtService prodOrgExtService;
@Autowired
private IShippingDispatchService shippingDispatchService;
@Override
public StepResult execute(StationRequestBean reqBean) {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
//根据生产线代码,工位代码查询主子工位实虚关系信息(排除当前工位)
List<MesWorkCellExtendCfg> workCellExtendCfgList = prodOrgExtService.getWorkCellExtendCfgRvListByBak(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
if (CollectionUtils.isEmpty(workCellExtendCfgList)) return stepResult;
for (MesWorkCellExtendCfg workCellExtendCfg : workCellExtendCfgList) {
if (null == workCellExtendCfg) continue;
//验证下个工位是否在线
String clientInfo = shippingDispatchService.getActorClientInfo(reqBean.getOrganizeCode(), workCellExtendCfg.getWorkCenterCode(), workCellExtendCfg.getWorkCellCode());
if (CollectionUtils.isEmpty(StationWebSocket.getStationWebSocketList(clientInfo))) continue;
//调用多工位场景触发定位分屏工步, CLIENT_INFO是必要传参
reqBean.getDataMap().put(MesPcnExtConstWords.CLIENT_INFO, clientInfo);
return ((IStepService) SpringContextsUtil.getBean("mesManyCellTriggerTabSwitchStepService")).execute(reqBean);
}
return stepResult;
}
}

@ -0,0 +1,44 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* @Description :
* @Author : wangjie
**/
@Slf4j
@Service("mesManyCellTriggerTabSwitchStepService")
public class MesManyCellTriggerTabSwitchStepService extends BaseStepService {
@Override
public StepResult execute(StationRequestBean reqBean) {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
//从工位对象的DataMap中取出固定传参[CLIENT_INFO], 值固定格式:工厂@生产线@工位 可以调用IShippingDispatchService.getActorClientInfo
String clientInfo = (null != reqBean.getDataMap() && reqBean.getDataMap().containsKey(MesPcnExtConstWords.CLIENT_INFO)) ? (String) reqBean.getDataMap().get(MesPcnExtConstWords.CLIENT_INFO) : reqBean.getClientInfo();
if (StringUtils.isEmpty(clientInfo)) return stepResult;
if (null != reqBean.getDataMap() && reqBean.getDataMap().containsKey(MesPcnExtConstWords.CLIENT_INFO)) reqBean.getDataMap().remove(MesPcnExtConstWords.CLIENT_INFO);
StationRequestBean stationRequestBean = new StationRequestBean();
BeanUtils.copyProperties(reqBean, stationRequestBean);
stationRequestBean.setScanInfo(clientInfo);
return execDynamicsCompleteAndSendMsgReturn(stationRequestBean, resultBean, stepResult, true, MesPcnEnumUtil.STATION_BUSI_TYPE.TAB_SWITCH, MesPcnEnumUtil.STATION_DATA_TYPE.CUSTOM, String.format("多工位页面切换,从[%s]切换到[%s]!", reqBean.getClientInfo(), clientInfo));
}
}

@ -0,0 +1,81 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
/**
* @Description :
* @Author : wangjie
**/
@Slf4j
@Service("mesAssemblyScanStepService")
public class MesAssemblyScanStepService extends BaseStepService {
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Override
public StepResult guide(StationRequestBean reqBean) {
productionDispatchContextStepService.doSendStepContextMessage(reqBean);
return execSuccessCompleteAndSendGuideReturn(reqBean, new StationResultBean(), "请扫描装配件条码!");
}
@Override
public StepResult execute(StationRequestBean reqBean) {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
if (StringUtils.isEmpty(reqBean.getScanInfo())) execSendGuideAndThrowEx(reqBean, resultBean, "请扫描装配件条码!");
//扫描信息置空
String scanInfo = reqBean.resetScanInfo(reqBean.getScanInfo());
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean);
//获取生产过程上下文对象有异常信息 抛出异常
if (!productionProcessContext.getSuccess()) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, productionProcessContext.getMessage());
//保存设备当前一轮工序待验证的装配件条码信息
productionDispatchContextStepService.saveScanAssemblySnContext(reqBean, getAssemblySnJson(reqBean, scanInfo));
//发送工步内容
productionDispatchContextStepService.doSendStepContextMessage(reqBean, scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN);
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("当前扫描信息装配件条码[%s]!", scanInfo));
}
private List<MesEquipVariableCollectContext> getAssemblySnJson(StationRequestBean reqBean, String scanInfo) {
List<MesEquipVariableCollectContext> equipVariableCollectContextList = new ArrayList<>();
equipVariableCollectContextList.add(new MesEquipVariableCollectContext(reqBean.getOrganizeCode(), scanInfo, TimeTool.getNowTime(true)));
return equipVariableCollectContextList;
}
}

@ -177,8 +177,8 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp
//验证上下文一模多腔信息是否存在 //验证上下文一模多腔信息是否存在
@Override @Override
public Boolean checkMouldMultiCavityIsExistContext(StationRequestBean reqBean) { public Boolean checkMouldMultiCavityIsExistContext(StationRequestBean reqBean) {
String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MOULD_MULTI_CAVITY_CONTEXT); String mouldCavityJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MOULD_MULTI_CAVITY_CONTEXT);
return !StringUtils.isEmpty(firstMouldNo) ? true : false; return !StringUtils.isEmpty(mouldCavityJson) ? true : false;
} }
//保存上下文一模多腔信息 [JSON]List<MesMouldMultiCavity> //保存上下文一模多腔信息 [JSON]List<MesMouldMultiCavity>
@ -224,8 +224,8 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp
//验证上下文模具号是否存在 //验证上下文模具号是否存在
@Override @Override
public Boolean checkMouldNoIsExistContext(StationRequestBean reqBean) { public Boolean checkMouldNoIsExistContext(StationRequestBean reqBean) {
String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MOULD_NO_CONTEXT); String mouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MOULD_NO_CONTEXT);
return !StringUtils.isEmpty(firstMouldNo) ? true : false; return !StringUtils.isEmpty(mouldNo) ? true : false;
} }
//保存上下文模具号 [JSON]MesEquipVariableCollectContext::equipVariableValue //保存上下文模具号 [JSON]MesEquipVariableCollectContext::equipVariableValue
@ -251,8 +251,8 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp
//验证上下文生产工单数据信息集合是否存在 //验证上下文生产工单数据信息集合是否存在
@Override @Override
public Boolean checkWorkOrderDataIsExistContext(StationRequestBean reqBean) { public Boolean checkWorkOrderDataIsExistContext(StationRequestBean reqBean) {
String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.WORK_ORDER_DATA_CONTEXT); String workOrderDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.WORK_ORDER_DATA_CONTEXT);
return !StringUtils.isEmpty(firstMouldNo) ? true : false; return !StringUtils.isEmpty(workOrderDataJson) ? true : false;
} }
//保存上下文生产工单数据信息集合 [JSON]List<MesWorkOrderContext> //保存上下文生产工单数据信息集合 [JSON]List<MesWorkOrderContext>
@ -278,8 +278,8 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp
//验证上下文扫/读信息:主条码是否存在 //验证上下文扫/读信息:主条码是否存在
@Override @Override
public Boolean checkScanProductSnIsExistContext(StationRequestBean reqBean) { public Boolean checkScanProductSnIsExistContext(StationRequestBean reqBean) {
String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.SCAN_PRODUCT_SN_CONTEXT); String productSnJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.SCAN_PRODUCT_SN_CONTEXT);
return !StringUtils.isEmpty(firstMouldNo) ? true : false; return !StringUtils.isEmpty(productSnJson) ? true : false;
} }
//保存上下文扫/读信息:主条码 [JSON]List<MesEquipVariableCollectContext> //保存上下文扫/读信息:主条码 [JSON]List<MesEquipVariableCollectContext>
@ -305,8 +305,8 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp
//验证上下文扫/读信息:装配件条码是否存在 //验证上下文扫/读信息:装配件条码是否存在
@Override @Override
public Boolean checkScanAssemblySnIsExistContext(StationRequestBean reqBean) { public Boolean checkScanAssemblySnIsExistContext(StationRequestBean reqBean) {
String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.SCAN_ASSEMBLY_SN_CONTEXT); String assemblySnJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.SCAN_ASSEMBLY_SN_CONTEXT);
return !StringUtils.isEmpty(firstMouldNo) ? true : false; return !StringUtils.isEmpty(assemblySnJson) ? true : false;
} }
//保存上下文扫/读信息:装配件条码 [JSON]List<MesEquipVariableCollectContext> //保存上下文扫/读信息:装配件条码 [JSON]List<MesEquipVariableCollectContext>
@ -332,8 +332,8 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp
//验证上下文产出条码数据信息集合是否存在 //验证上下文产出条码数据信息集合是否存在
@Override @Override
public Boolean checkOutProduceSnDataIsExistContext(StationRequestBean reqBean) { public Boolean checkOutProduceSnDataIsExistContext(StationRequestBean reqBean) {
String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.OUT_PRODUCE_SN_DATA_CONTEXT); String outProduceSnDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.OUT_PRODUCE_SN_DATA_CONTEXT);
return !StringUtils.isEmpty(firstMouldNo) ? true : false; return !StringUtils.isEmpty(outProduceSnDataJson) ? true : false;
} }
//保存上下文产出条码数据信息集合 [JSON]List<MesProduceSn> //保存上下文产出条码数据信息集合 [JSON]List<MesProduceSn>
@ -368,8 +368,8 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp
//验证上下文装配件数据信息集合是否存在 //验证上下文装配件数据信息集合是否存在
@Override @Override
public Boolean checkAssemblyDataIsExistContext(StationRequestBean reqBean) { public Boolean checkAssemblyDataIsExistContext(StationRequestBean reqBean) {
String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.ASSEMBLY_DATA_CONTEXT); String productionAssemblyJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.ASSEMBLY_DATA_CONTEXT);
return !StringUtils.isEmpty(firstMouldNo) ? true : false; return !StringUtils.isEmpty(productionAssemblyJson) ? true : false;
} }
//保存上下文装配件数据信息集合 [JSON]List<MesProductionAssemblyContext> //保存上下文装配件数据信息集合 [JSON]List<MesProductionAssemblyContext>
@ -385,4 +385,31 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp
deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.ASSEMBLY_DATA_CONTEXT); deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.ASSEMBLY_DATA_CONTEXT);
} }
//获取上下文非排序产品加工规则信息集合
@Override
public List<MesProdRuleNoSortContext> getProdRuleNosortDataContext(StationRequestBean reqBean) {
String prodRuleNosortJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PROD_RULE_NOSORT_DATA_CONTEXT);
return !StringUtils.isEmpty(prodRuleNosortJson) ? JSONObject.parseArray(prodRuleNosortJson, MesProdRuleNoSortContext.class) : null;
}
//验证上下文非排序产品加工规则信息集合是否存在
@Override
public Boolean checkProdRuleNosortDataIsExistContext(StationRequestBean reqBean) {
String prodRuleNosortJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PROD_RULE_NOSORT_DATA_CONTEXT);
return !StringUtils.isEmpty(prodRuleNosortJson) ? true : false;
}
//保存上下文非排序产品加工规则信息集合 [JSON]List<MesProdRuleNoSortContext>
@Override
public Boolean saveProdRuleNosortDataContext(StationRequestBean reqBean, List<MesProdRuleNoSortContext> prodRuleNoSortContextList) {
if (CollectionUtils.isEmpty(prodRuleNoSortContextList)) return false;
return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PROD_RULE_NOSORT_DATA_CONTEXT, JSONObject.toJSONString(prodRuleNoSortContextList));
}
//删除上下文非排序产品加工规则信息集合
@Override
public void deleteProdRuleNosortDataContext(StationRequestBean reqBean) {
deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PROD_RULE_NOSORT_DATA_CONTEXT);
}
} }

@ -11,7 +11,13 @@ import java.io.Serializable;
@Data @Data
public class MesProdRuleNoSortContext implements Serializable { public class MesProdRuleNoSortContext implements Serializable {
private static final long serialVersionUID = -6129403108477819932L; private static final long serialVersionUID = -3062405517994447105L;
@ApiParam(name = "零件条码")
private String productSn;
@ApiParam(name = "生产工单号")
private String workOrderNo;
@ApiParam(name = "进料零件号") @ApiParam(name = "进料零件号")
private String inPartNo; private String inPartNo;
@ -49,7 +55,4 @@ public class MesProdRuleNoSortContext implements Serializable {
@ApiParam(name = "子箱设备信号点") @ApiParam(name = "子箱设备信号点")
private String packageEquSignal; private String packageEquSignal;
@ApiParam(name = "装配件待绑定清单 ([JSON]List<MesProductionAssemblyNosortContext>)")
private String productionAssemblyDataJson;
} }

@ -88,6 +88,12 @@ public class MesPcnExtConstWords {
public static final String ROUTE_SEQ = "routeSeq"; public static final String ROUTE_SEQ = "routeSeq";
// 序号 // 序号
public static final String INDEX = "index"; public static final String INDEX = "index";
// 产线常量
public static final String WORK_CENTER_CODE_BAK = "workCenterCodeBak";
// 工位常量
public static final String WORK_CELL_CODE_BAK = "workCellCodeBak";
// 主子工位关系类型
public static final String EXTEND_TYPE = "extendType";
@ -115,6 +121,8 @@ public class MesPcnExtConstWords {
public static final String CUSTOM_PAGE_NAME_DEFAULT = "CUSTOM_PAGE_NAME_DEFAULT"; public static final String CUSTOM_PAGE_NAME_DEFAULT = "CUSTOM_PAGE_NAME_DEFAULT";
// 上个扫描信息 // 上个扫描信息
public static final String CLIENT_INFO = "clientInfo";
// 上个扫描信息
public static final String LAST_SCAN_INFO = "lastScanInfo"; public static final String LAST_SCAN_INFO = "lastScanInfo";
// 当前扫描信息 // 当前扫描信息
public static final String SCAN_INFO = "scanInfo"; public static final String SCAN_INFO = "scanInfo";
@ -155,6 +163,8 @@ public class MesPcnExtConstWords {
public static final String OUT_PRODUCE_SN_DATA_CONTEXT = "OUT_PRODUCE_SN_DATA_CONTEXT"; public static final String OUT_PRODUCE_SN_DATA_CONTEXT = "OUT_PRODUCE_SN_DATA_CONTEXT";
// 上下文: 装配件清单 // 上下文: 装配件清单
public static final String ASSEMBLY_DATA_CONTEXT = "ASSEMBLY_DATA_CONTEXT"; public static final String ASSEMBLY_DATA_CONTEXT = "ASSEMBLY_DATA_CONTEXT";
// 上下文: 非排序产品加工规则信息
public static final String PROD_RULE_NOSORT_DATA_CONTEXT = "PROD_RULE_NOSORT_DATA_CONTEXT";

Loading…
Cancel
Save