From c77004ef62a5027a6eee33d89891fa4baf8b597c Mon Sep 17 00:00:00 2001 From: jason Date: Fri, 11 Jul 2025 10:18:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=8F=E6=A8=A1=E7=BB=9F=E8=AE=A1=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=96=B7=E8=83=B6=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MesContainerBindProductSnService.java | 2 + .../step/MesGlueSprayedAmountStepService.java | 151 +++++++++++++++++++++ 2 files changed, 153 insertions(+) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesGlueSprayedAmountStepService.java diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindProductSnService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindProductSnService.java index 273ab31..5ea49e6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindProductSnService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindProductSnService.java @@ -59,6 +59,8 @@ public class MesContainerBindProductSnService extends MesAbstractContainerBindDi if (Objects.equals(model.getContainerType(), MesExtEnumUtil.CONTAINER_TYPE.CONTAINER_TYPE_50.getValue())) { Double netWeight = getRawSnWeightQty(organizeCode, barcode); result.put(MesPcnExtConstWords.QTY, netWeight); + } else { + result.put(MesPcnExtConstWords.QTY, produceSn.getQty()); } result.put(MesPcnExtConstWords.RESULT, true); return result; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesGlueSprayedAmountStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesGlueSprayedAmountStepService.java new file mode 100644 index 0000000..23d95d0 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesGlueSprayedAmountStepService.java @@ -0,0 +1,151 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipmentLogExtService; +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.*; +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.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableParam; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableParamLog; +import cn.estsh.i3plus.pojo.mes.bean.MesPart; +import cn.estsh.i3plus.pojo.mes.bean.MesRawMixCfgDetail; +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.repository.MesEquipmentVariableParamLogRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableParamRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesRawMixCfgDetailRepository; +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.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.*; + +/** + * @Description : 统计每摸模自动喷胶量 + * @Author : jason.niu + **/ +@Slf4j +@Service("mesGlueSprayedAmountStepService") +public class MesGlueSprayedAmountStepService extends BaseStepService { + @Autowired + private IMesProductionProcessContextStepService productionProcessContextStepService; + @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + @Autowired + private IMesEquipmentLogExtService equipmentLogExtService; + @Autowired + private MesEquipmentVariableParamRepository equipVarParamRDao; + @Autowired + private MesRawMixCfgDetailRepository rawMixCfgDetailRDao; + @Autowired + private MesEquipmentVariableParamLogRepository equipVarParamLogRDao; + @Autowired + private MesPartRepository mesPartRDao; + + @Override + public StepResult execute(StationRequestBean reqBean) { + StationResultBean resultBean = new StationResultBean(); + + StepResult stepResult = StepResult.getSuccessComplete(); + final String organizeCode = reqBean.getOrganizeCode(); + + //获取工位当前设备信息 + MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean); + + //配置错误 抛出异常 + if (!productionProcessContext.getSuccess()) { + stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); + } + + //获取上下文产品加工规则数据信息集合 + List prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean); + if (CollectionUtils.isEmpty(prodRuleContextList)) { + stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产品加工规则信息,请重置工序解决!"); + } + + //当前工位使用的设备 + MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); + List equipVariableIds = getEquipmentVariable(organizeCode, cellEquipContext.getEquipId()); + List variableContexts = equipmentLogExtService.getEquipmentLogCollectList(organizeCode, cellEquipContext.getEquipId(), MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.FALSE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), equipVariableIds); + Map variableMap = new HashMap<>(); + for (MesEquipVariableCollectContext context : variableContexts) { + variableMap.put(context.(), context.getEquipVariableValue()); + } + + //遍历产品加工规则 + for (MesProdRuleContext prodRuleContext : prodRuleContextList) { + + //没有装配件的条件 + if (null == prodRuleContext || StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) continue; + + //获取非排序装配件清单 + List productionAssemblyNosortContextList = prodRuleContext.getNosortAssemblyDataContext(); + + boolean flag = false; + + MesEquipmentVariableParamLog paramLog = new MesEquipmentVariableParamLog(); + paramLog.setPartNo(prodRuleContext.getOutPartNo()); + MesPart mesPart = mesPartRDao.getByProperty(new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PART_NO}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), prodRuleContext.getOutPartNo()}); + if (mesPart != null) { + paramLog.setPartName(mesPart.getPartName()); + } + paramLog.setProductSn(prodRuleContext.getProductSn()); + paramLog.setWorkCellCode(reqBean.getWorkCellCode()); + paramLog.setWorkCenterCode(reqBean.getWorkCenterCode()); + paramLog.setEquipId(cellEquipContext.getEquipId()); + paramLog.setEquipmentCode(cellEquipContext.getEquipmentCode()); + paramLog.setEquipmentName(cellEquipContext.getEquipmentName()); + //遍历装配件清单 + for (MesProductionAssemblyNosortContext productionAssemblyNosortContext : productionAssemblyNosortContextList) { + String assemblyPartNo = productionAssemblyNosortContext.getAssemblyPartNo(); + MesRawMixCfgDetail detail = rawMixCfgDetailRDao.getByProperty( + new String[]{"organizeCode", "isValid", "isDeleted", "outPartNo", "partNo"}, + new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), prodRuleContext.getOutPartNo(), productionAssemblyNosortContext.getAssemblyPartNo()}); + if (detail == null) { + continue; + } + Integer rawType = detail.getRawType(); + if (Objects.equals(rawType, MesExtEnumUtil.RAW_MIX_DETAIL_TYPE.RAW_MIX_DETAIL_TYPE_10.getValue())) { + paramLog.setGluePartNo(assemblyPartNo); + } else if (Objects.equals(rawType, MesExtEnumUtil.RAW_MIX_DETAIL_TYPE.RAW_MIX_DETAIL_TYPE_20.getValue())) { + paramLog.setCuringPartNo(assemblyPartNo); + } else if (Objects.equals(rawType, MesExtEnumUtil.RAW_MIX_DETAIL_TYPE.RAW_MIX_DETAIL_TYPE_30.getValue())) { + paramLog.setAdhesivePartNo(assemblyPartNo); + } else if (Objects.equals(rawType, MesExtEnumUtil.RAW_MIX_DETAIL_TYPE.RAW_MIX_DETAIL_TYPE_40.getValue())) { + paramLog.setInkPartNo(assemblyPartNo); + } else if (Objects.equals(rawType, MesExtEnumUtil.RAW_MIX_DETAIL_TYPE.RAW_MIX_DETAIL_TYPE_50.getValue())) { + paramLog.setDiluentPartNo(assemblyPartNo); + } + } + + equipVarParamLogRDao.insert(paramLog); + } + + return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "统计每摸模自动喷胶量!"); + } + + private List getEquipmentVariable(String organizeCode, Integer equipId) { + List result = new ArrayList<>(); + if (equipId == null) { + return result; + } + + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(equipId, "equipId", packBean); + List variableParams = equipVarParamRDao.findByHqlWhere(packBean); + for (MesEquipmentVariableParam param : variableParams) { + result.add(param.getEquipVariableId().longValue()); + } + return null; + } +}