装配件发送爆炸图 音频文件到客户端

tags/yfai-pcn-ext-v1.0
王杰 10 months ago
parent 9795b07de1
commit 869132254e

@ -10,9 +10,11 @@ import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesAssemblyNosortCfg; import cn.estsh.i3plus.pojo.mes.bean.MesAssemblyNosortCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesFile;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly; import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderAssembly; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderAssembly;
import cn.estsh.i3plus.pojo.mes.repository.MesAssemblyNosortCfgRepository; import cn.estsh.i3plus.pojo.mes.repository.MesAssemblyNosortCfgRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesFileRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderAssemblyRepository; import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderAssemblyRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
@ -43,6 +45,9 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
@Autowired @Autowired
private IMesProductionCustomContextStepService productionCustomContextStepService; private IMesProductionCustomContextStepService productionCustomContextStepService;
@Autowired
private MesFileRepository fileRepository;
//【排序线】获取生产工单装配件绑定记录 //【排序线】获取生产工单装配件绑定记录
@Override @Override
public List<MesProductionAssemblySortContext> getProductionAssemblySortContextList(MesProdRuleContext prodRuleContext) { public List<MesProductionAssemblySortContext> getProductionAssemblySortContextList(MesProdRuleContext prodRuleContext) {
@ -57,13 +62,16 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
if (CollectionUtils.isEmpty(workOrderAssemblyList)) return null; if (CollectionUtils.isEmpty(workOrderAssemblyList)) return null;
//获取排序FILE文件URL
Map<Long, String> fileMap = getFileMap(prodRuleContext.getOrganizeCode(), filterSortFileIdList(workOrderAssemblyList));
//获取装配件绑定记录 //获取装配件绑定记录
Map<Long, MesProductionAssembly> productionAssemblyMap = groupProductionAssembly(filterProductionAssemblyList(getProductionAssemblyList( Map<Long, MesProductionAssembly> productionAssemblyMap = groupProductionAssembly(filterProductionAssemblyList(getProductionAssemblyList(
prodRuleContext.getOrganizeCode(), MesExtEnumUtil.PRODUCTION_ASSEMBLY_DATA_SOURCE.SORT.getValue(), workOrderAssemblyList.stream().filter(o -> null != o).map(MesWorkOrderAssembly::getId).collect(Collectors.toList())))); prodRuleContext.getOrganizeCode(), MesExtEnumUtil.PRODUCTION_ASSEMBLY_DATA_SOURCE.SORT.getValue(), workOrderAssemblyList.stream().filter(o -> null != o).map(MesWorkOrderAssembly::getId).collect(Collectors.toList()))));
List<MesProductionAssemblySortContext> productionAssemblySortContextList = new ArrayList<>(); List<MesProductionAssemblySortContext> productionAssemblySortContextList = new ArrayList<>();
workOrderAssemblyList.forEach(o -> productionAssemblySortContextList.add(new MesProductionAssemblySortContext().copy(o, getProductionAssembly(productionAssemblyMap, o.getId())))); workOrderAssemblyList.forEach(o -> productionAssemblySortContextList.add(new MesProductionAssemblySortContext().copy(o, getProductionAssembly(productionAssemblyMap, o.getId())).fileUrl(fileMap)));
return productionAssemblySortContextList; return productionAssemblySortContextList;
} }
@ -113,11 +121,14 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
if (CollectionUtils.isEmpty(assemblyNosortCfgList)) return null; if (CollectionUtils.isEmpty(assemblyNosortCfgList)) return null;
//获取非排序FILE文件URL
Map<Long, String> fileMap = getFileMap(prodRuleContext.getOrganizeCode(), filterNosortFileIdList(assemblyNosortCfgList));
List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = new ArrayList<>(); List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = new ArrayList<>();
//遍历装配件规则, 实例化装配件清单对象, 判断是否配置可复用 //遍历装配件规则, 实例化装配件清单对象, 判断是否配置可复用
assemblyNosortCfgList.forEach(o -> productionAssemblyNosortContextList.add( assemblyNosortCfgList.forEach(o -> productionAssemblyNosortContextList.add(
new MesProductionAssemblyNosortContext().copy(prodRuleContext, o, getRepeatAssemblySn(prodRuleContext.getOrganizeCode(), prodRuleContext.getWorkCenterCode(), prodRuleContext.getWorkCellCode(), o))) new MesProductionAssemblyNosortContext().copy(prodRuleContext, o, getRepeatAssemblySn(prodRuleContext.getOrganizeCode(), prodRuleContext.getWorkCenterCode(), prodRuleContext.getWorkCellCode(), o)).fileUrl(fileMap))
); );
return productionAssemblyNosortContextList; return productionAssemblyNosortContextList;
@ -200,4 +211,39 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
} }
//搜集非排序文件ID集合
private List<Long> filterNosortFileIdList(List<MesAssemblyNosortCfg> assemblyNosortCfgList) {
if (CollectionUtils.isEmpty(assemblyNosortCfgList)) return null;
List<Long> imageFileIdList = assemblyNosortCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getImageFileId()))).map(MesAssemblyNosortCfg::getImageFileId).collect(Collectors.toList());
List<Long> audioFileIdList = assemblyNosortCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getAudioFileId()))).map(MesAssemblyNosortCfg::getAudioFileId).collect(Collectors.toList());
return filterFileIdList(imageFileIdList, audioFileIdList);
}
//搜集排序文件ID集合
private List<Long> filterSortFileIdList(List<MesWorkOrderAssembly> workOrderAssemblyList) {
if (CollectionUtils.isEmpty(workOrderAssemblyList)) return null;
List<Long> imageFileIdList = workOrderAssemblyList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getImageFileId()))).map(MesWorkOrderAssembly::getImageFileId).collect(Collectors.toList());
List<Long> audioFileIdList = workOrderAssemblyList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getAudioFileId()))).map(MesWorkOrderAssembly::getAudioFileId).collect(Collectors.toList());
return filterFileIdList(imageFileIdList, audioFileIdList);
}
//搜集文件ID集合
private List<Long> filterFileIdList(List<Long> imageFileIdList, List<Long> audioFileIdList) {
if (!CollectionUtils.isEmpty(imageFileIdList) && CollectionUtils.isEmpty(audioFileIdList)) return imageFileIdList;
if (CollectionUtils.isEmpty(imageFileIdList) && !CollectionUtils.isEmpty(audioFileIdList)) return audioFileIdList;
imageFileIdList.addAll(audioFileIdList);
return imageFileIdList;
}
//获取FILE文件URL
private Map<Long, String> getFileMap(String organizeCode, List<Long> fileIdList) {
if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(fileIdList)) return null;
fileIdList = fileIdList.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
if (fileIdList.size() == 1) DdlPreparedPack.getNumEqualPack(fileIdList.get(0), MesPcnExtConstWords.ID, packBean);
DdlPreparedPack.getInPackList(fileIdList, MesPcnExtConstWords.ID, packBean);
List<MesFile> fileDbList = fileRepository.findByHqlWhere(packBean);
return CollectionUtils.isEmpty(fileIdList) ? null : fileDbList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getFileUrl()))).collect(Collectors.toMap(MesFile::getId, MesFile::getFileUrl));
}
} }

@ -7,11 +7,14 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; 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.BaseStepService;
import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.model.StepResult;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import com.alibaba.fastjson.JSONObject;
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;
@ -74,6 +77,9 @@ public class MesAssemblyScanStepService extends BaseStepService {
if (!CollectionUtils.isEmpty(prodRuleContextList) && !checkIsNeedScanAssembly(prodRuleContextList)) if (!CollectionUtils.isEmpty(prodRuleContextList) && !checkIsNeedScanAssembly(prodRuleContextList))
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前上下文中的加工规则未配置装配件扫描项,当前无需扫描装配件条码!"); return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前上下文中的加工规则未配置装配件扫描项,当前无需扫描装配件条码!");
//处理装配件的装配爆炸图和音频文件
doHandleAssemblyFile(reqBean, productionProcessContext.getWorkCenter(), prodRuleContextList);
//验证当前是否需要读装配件条码: 验证是否存在待绑定数据 【当前验证只能对内部触发生效】 //验证当前是否需要读装配件条码: 验证是否存在待绑定数据 【当前验证只能对内部触发生效】
if (!CollectionUtils.isEmpty(prodRuleContextList) && !hasUnBindAssembly(prodRuleContextList)) if (!CollectionUtils.isEmpty(prodRuleContextList) && !hasUnBindAssembly(prodRuleContextList))
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前上下文中的加工规则对应的装配件清单已扫描完毕,当前无需扫描装配件条码!"); return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前上下文中的加工规则对应的装配件清单已扫描完毕,当前无需扫描装配件条码!");
@ -129,6 +135,66 @@ public class MesAssemblyScanStepService extends BaseStepService {
} }
//处理装配件的装配爆炸图和音频文件
private void doHandleAssemblyFile(StationRequestBean reqBean, MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList) {
Boolean isSendFile = false;
Boolean isBreakLoop = false;
LOOP:
for (MesProdRuleContext prodRuleContext : prodRuleContextList) {
if (null == prodRuleContext || StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) continue;
if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == workCenter.getCenterType()) {
List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = prodRuleContext.getNosortAssemblyDataContext();
for (MesProductionAssemblyNosortContext productionAssemblyNosortContext : productionAssemblyNosortContextList) {
if (null == productionAssemblyNosortContext ||
productionAssemblyNosortContext.getFileIsFinished().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 ||
productionAssemblyNosortContext.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_60.getValue()) == 0 ||
(StringUtils.isEmpty(productionAssemblyNosortContext.getImageFileUrl()) && StringUtils.isEmpty(productionAssemblyNosortContext.getAudioFileUrl()))) continue;
//不扫描的默认直接直接标记绿色已装配, 但是文件也需要发送
if (productionAssemblyNosortContext.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_50.getValue()) != 0) isBreakLoop = true;
isSendFile = true;
//发送文件到客户端
sendFile(reqBean, productionAssemblyNosortContext.fileIsFinished());
if (isBreakLoop) break LOOP;
}
prodRuleContext.assemblyDataJson(productionAssemblyNosortContextList);
} else {
List<MesProductionAssemblySortContext> productionAssemblySortContextList = prodRuleContext.getSortAssemblyDataContext();
for (MesProductionAssemblySortContext productionAssemblySortContext : productionAssemblySortContextList) {
if (null == productionAssemblySortContext ||
productionAssemblySortContext.getFileIsFinished().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 ||
productionAssemblySortContext.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_60.getValue()) == 0 ||
(StringUtils.isEmpty(productionAssemblySortContext.getImageFileUrl()) && StringUtils.isEmpty(productionAssemblySortContext.getAudioFileUrl()))) continue;
//不扫描的默认直接直接标记绿色已装配, 但是文件也需要发送
if (productionAssemblySortContext.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_50.getValue()) != 0) isBreakLoop = true;
isSendFile = true;
//发送文件到客户端
sendFile(reqBean, productionAssemblySortContext.fileIsFinished());
if (isBreakLoop) break LOOP;
}
prodRuleContext.assemblyDataJson(productionAssemblySortContextList);
}
}
//保存上下文产品加工规则信息集合
if (isSendFile) productionDispatchContextStepService.saveProdRuleDataContext(reqBean, prodRuleContextList);
}
//发送文件到客户端
private void sendFile(StationRequestBean reqBean, MesProductionAssemblyContext productionAssemblyContext) {
if (!StringUtils.isEmpty(productionAssemblyContext.getImageFileUrl()))
this.sendMessage(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue())
.busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CUSTOM_CONTENT.getValue())
.dataType(MesPcnEnumUtil.STATION_DATA_TYPE.IMAGE.getValue())
.customPageName(MesPcnExtConstWords.CUSTOM_PAGE_NAME_ASSEMBLY)
.message(String.format("装配件信息来源ID[%s],装配件爆炸图URL[%s]", productionAssemblyContext.getSourceId(), productionAssemblyContext.getImageFileUrl()))
.resultObj(new JSONObject().put(MesPcnExtConstWords.URL, productionAssemblyContext.getImageFileUrl())));
if (!StringUtils.isEmpty(productionAssemblyContext.getAudioFileUrl()))
this.sendMessage(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue())
.busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.CUSTOM_COMPONENT.getValue())
.dataType(MesPcnEnumUtil.STATION_DATA_TYPE.SOUND.getValue())
.message(String.format("装配件信息来源ID[%s],装配件音频文件URL[%s]", productionAssemblyContext.getSourceId(), productionAssemblyContext.getAudioFileUrl()))
.resultObj(new JSONObject().put(MesPcnExtConstWords.URL, productionAssemblyContext.getAudioFileUrl())));
}
//判断是否存在装配件清单 //判断是否存在装配件清单
private Boolean checkIsNeedScanAssembly(List<MesProdRuleContext> prodRuleContextList) { private Boolean checkIsNeedScanAssembly(List<MesProdRuleContext> prodRuleContextList) {
Optional<MesProdRuleContext> optional = prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getAssemblyDataJson()))).findFirst(); Optional<MesProdRuleContext> optional = prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getAssemblyDataJson()))).findFirst();
@ -143,12 +209,14 @@ public class MesAssemblyScanStepService extends BaseStepService {
List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = prodRuleContext.getNosortAssemblyDataContext(); List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = prodRuleContext.getNosortAssemblyDataContext();
Optional<MesProductionAssemblyNosortContext> optional = productionAssemblyNosortContextList.stream().filter(o -> (null != o && o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0)).findFirst(); Optional<MesProductionAssemblyNosortContext> optional = productionAssemblyNosortContextList.stream().filter(o -> (null != o && o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0)).findFirst();
if (null == optional || !optional.isPresent()) continue; if (null == optional || !optional.isPresent()) continue;
hasUnBindAssembly = true; hasUnBindAssembly = true;
break; break;
} }
return hasUnBindAssembly; return hasUnBindAssembly;
} }
//封装当前扫描的装配件信息
private List<MesEquipVariableCollectContext> getAssemblySnJson(StationRequestBean reqBean, String scanInfo) { private List<MesEquipVariableCollectContext> getAssemblySnJson(StationRequestBean reqBean, String scanInfo) {
List<MesEquipVariableCollectContext> equipVariableCollectContextList = new ArrayList<>(); List<MesEquipVariableCollectContext> equipVariableCollectContextList = new ArrayList<>();

@ -437,7 +437,8 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
if (CollectionUtils.isEmpty(productionAssemblyContextList)) return null; if (CollectionUtils.isEmpty(productionAssemblyContextList)) return null;
List<MesAssemblyShowContext> assemblyShowContextList = new ArrayList<>(); List<MesAssemblyShowContext> assemblyShowContextList = new ArrayList<>();
for (MesProductionAssemblyContext item : productionAssemblyContextList) { for (MesProductionAssemblyContext item : productionAssemblyContextList) {
if (null == item) continue; //仅目视的不显示出来
if (null == item || MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_60.getValue() == item.getMatchType()) continue;
assemblyShowContextList.add(assemblyShowContext(item)); assemblyShowContextList.add(assemblyShowContext(item));
} }

@ -164,7 +164,8 @@ public class MesAssemblyShowSortStepService extends BaseStepService {
if (CollectionUtils.isEmpty(productionAssemblyContextList)) return null; if (CollectionUtils.isEmpty(productionAssemblyContextList)) return null;
List<MesAssemblyShowContext> assemblyShowContextList = new ArrayList<>(); List<MesAssemblyShowContext> assemblyShowContextList = new ArrayList<>();
for (MesProductionAssemblyContext item : productionAssemblyContextList) { for (MesProductionAssemblyContext item : productionAssemblyContextList) {
if (null == item) continue; //仅目视的不显示出来
if (null == item || MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_60.getValue() == item.getMatchType()) continue;
assemblyShowContextList.add(assemblyShowContext(item)); assemblyShowContextList.add(assemblyShowContext(item));
} }
assemblyShowContextList = assemblyShowContextList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesAssemblyShowContext::getRouteSeq)).collect(Collectors.toList()); assemblyShowContextList = assemblyShowContextList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesAssemblyShowContext::getRouteSeq)).collect(Collectors.toList());

@ -123,9 +123,9 @@ public class MesProdCraftRouteCheckStepService extends BaseStepService {
} }
//查询工艺路线数据 //查询工艺路线数据
private void doHandleProdCraftData(StationRequestBean reqBean, MesWorkCenter workCenter, String o, Map<String, List<MesCraftRouteDetail>> craftRouteDataMap) { private void doHandleProdCraftData(StationRequestBean reqBean, MesWorkCenter workCenter, String partNo, Map<String, List<MesCraftRouteDetail>> craftRouteDataMap) {
List<MesCraftRouteDetail> craftRouteDetailList = fsmRouteDataService.doHandleProdCraftData(reqBean, workCenter.getCenterType(), o); List<MesCraftRouteDetail> craftRouteDetailList = fsmRouteDataService.doHandleProdCraftData(reqBean, workCenter.getCenterType(), partNo);
if (!CollectionUtils.isEmpty(craftRouteDetailList)) craftRouteDataMap.put(o, craftRouteDetailList); if (!CollectionUtils.isEmpty(craftRouteDetailList)) craftRouteDataMap.put(partNo, craftRouteDetailList);
} }
//验证是否存在工艺强过码, 存在则保存 并返回强过的主条码 //验证是否存在工艺强过码, 存在则保存 并返回强过的主条码

@ -60,7 +60,7 @@ public class MesProductionProcessMonitorService extends BaseProcessMonitorServic
//客户端下线 //客户端下线
@Override @Override
public Boolean doOffLine(StationRequestBean requestBean) { public Boolean doOffLine(StationRequestBean requestBean) {
//删除当前状态点 //删除当前工步集
fsmCommonService.doFlushCache(requestBean); fsmCommonService.doFlushCache(requestBean);
//清除上下文中的所有业务数据 //清除上下文中的所有业务数据
productionDispatchContextStepService.doFlushProductionDispatchContext(requestBean); productionDispatchContextStepService.doFlushProductionDispatchContext(requestBean);
@ -69,7 +69,7 @@ public class MesProductionProcessMonitorService extends BaseProcessMonitorServic
return true; return true;
} }
//工位流程重置 【父类已经调用: 删除当前状态点; 清除工位工序流程; TASK_COMPLETE】 //工位流程重置 【父类已经调用: 删除当前工步集; 清除工位工序流程; TASK_COMPLETE】
@Override @Override
public Boolean fsmReset(StationRequestBean requestBean) { public Boolean fsmReset(StationRequestBean requestBean) {
//清除上下文中的所有业务数据 //清除上下文中的所有业务数据

@ -15,7 +15,7 @@ public class MesProductionAssemblyContext implements Serializable {
private static final long serialVersionUID = 2382117884422723639L; private static final long serialVersionUID = 2382117884422723639L;
@ApiParam("生产工单号") @ApiParam("生产工单号")
private String workOrderNo; public String workOrderNo;
@ApiParam("装配件零件编码") @ApiParam("装配件零件编码")
public String assemblyPartNo; public String assemblyPartNo;
@ -66,13 +66,22 @@ public class MesProductionAssemblyContext implements Serializable {
public Integer routeSeq; public Integer routeSeq;
@ApiParam(value = "装配爆炸图FID") @ApiParam(value = "装配爆炸图FID")
private Long imageFileId; public Long imageFileId;
@ApiParam(value = "音频文件") @ApiParam(value = "音频文件")
private Long audioFileId; public Long audioFileId;
@ApiParam(value = "装配爆炸图URL")
public String imageFileUrl;
@ApiParam(value = "音频文件URL")
public String audioFileUrl;
@ApiParam(value = "装配爆炸图URL")
public Integer fileIsFinished = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
@ApiParam("前道工艺代码") @ApiParam("前道工艺代码")
private String preCraftCode; public String preCraftCode;
@ApiParam("组织代码") @ApiParam("组织代码")
public String organizeCode; public String organizeCode;

@ -7,9 +7,11 @@ import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.Data; import lombok.Data;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.io.Serializable; import java.io.Serializable;
import java.util.Map;
/** /**
* -() * -()
@ -102,4 +104,16 @@ public class MesProductionAssemblyNosortContext extends MesProductionAssemblyCon
return this; return this;
} }
public MesProductionAssemblyNosortContext fileUrl(Map<Long, String> fileMap) {
if (CollectionUtils.isEmpty(fileMap)) return this;
if (!StringUtils.isEmpty(this.imageFileId)) this.imageFileUrl= fileMap.get(this.imageFileId);
if (!StringUtils.isEmpty(this.audioFileId)) this.audioFileUrl= fileMap.get(this.audioFileId);
return this;
}
public MesProductionAssemblyNosortContext fileIsFinished() {
this.fileIsFinished = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue();
return this;
}
} }

@ -8,9 +8,11 @@ import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.Data; import lombok.Data;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.io.Serializable; import java.io.Serializable;
import java.util.Map;
/** /**
* - * -
@ -132,4 +134,16 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte
return this; return this;
} }
public MesProductionAssemblySortContext fileUrl(Map<Long, String> fileMap) {
if (CollectionUtils.isEmpty(fileMap)) return this;
if (!StringUtils.isEmpty(this.imageFileId)) this.imageFileUrl= fileMap.get(this.imageFileId);
if (!StringUtils.isEmpty(this.audioFileId)) this.audioFileUrl= fileMap.get(this.audioFileId);
return this;
}
public MesProductionAssemblySortContext fileIsFinished() {
this.fileIsFinished = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue();
return this;
}
} }

@ -151,6 +151,8 @@ public class MesPcnExtConstWords {
public static final String STEP_CODE = "stepCode"; public static final String STEP_CODE = "stepCode";
// 生产顺序号 // 生产顺序号
public static final String PRODUCE_SEQ = "produceSeq"; public static final String PRODUCE_SEQ = "produceSeq";
// URL
public static final String URL = "url";
// 时间格式 // 时间格式
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
@ -271,12 +273,15 @@ public class MesPcnExtConstWords {
//过程条码默认生成规则 //过程条码默认生成规则
public static final String DEFAULT_SERIAL_NUMBER_RULE = "DEFAULT_SERIAL_NUMBER_RULE"; public static final String DEFAULT_SERIAL_NUMBER_RULE = "DEFAULT_SERIAL_NUMBER_RULE";
// 定制页面名称(默认) // 定制页面名称(默认 产出零件)
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 CUSTOM_PAGE_NAME_WORK_CELL = "CUSTOM_PAGE_NAME_WORK_CELL"; public static final String CUSTOM_PAGE_NAME_WORK_CELL = "CUSTOM_PAGE_NAME_WORK_CELL";
// 定制页面名称(装配件)
public static final String CUSTOM_PAGE_NAME_ASSEMBLY = "CUSTOM_PAGE_NAME_ASSEMBLY";
// 上个扫描信息 // 上个扫描信息
public static final String CLIENT_INFO = "clientInfo"; public static final String CLIENT_INFO = "clientInfo";
// 上个扫描信息 // 上个扫描信息

Loading…
Cancel
Save