From bc39704375f6b59df44bbd716663fec99da24a14 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Thu, 23 Jan 2025 16:11:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...esFunctionDialogElectronicInspectionService.java | 21 ++++++++------------- .../function/MesFunctionPackagePartService.java | 6 ++++-- .../function/MesFunctionPackageProgressService.java | 3 ++- .../step/MesPackageNoGenerateStepService.java | 12 ++++++++---- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionDialogElectronicInspectionService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionDialogElectronicInspectionService.java index 52317c5..d2df6a7 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionDialogElectronicInspectionService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionDialogElectronicInspectionService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IShippingDispatchService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService; @@ -12,15 +13,14 @@ import cn.estsh.i3plus.pojo.mes.model.StationCustomDialogBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; -import com.alibaba.fastjson.JSONObject; 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.Arrays; import java.util.List; -import java.util.Map; import java.util.stream.Collectors; /** @@ -44,25 +44,20 @@ public class MesFunctionDialogElectronicInspectionService extends BaseSwsService MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); //functionValue=电子化检验的判断结果 - Map inspectionMap = null; - try { - inspectionMap = StringUtils.isEmpty(buttonDynamicModel.getFunctionValue()) ? null : JSONObject.parseObject(buttonDynamicModel.getFunctionValue(), Map.class); - } catch (Exception e) { - } + List inspectionList = StringUtils.isEmpty(buttonDynamicModel.getFunctionValue()) ? null : Arrays.asList(buttonDynamicModel.getFunctionValue().split(MesPcnExtConstWords.COMMA)); Boolean isSaveFlag = false; //获取上下文产出条码数据信息集合 - if (!CollectionUtils.isEmpty(inspectionMap)) { + if (!CollectionUtils.isEmpty(inspectionList)) { List productionPsOutContextList = productionDispatchContextStepService.getProductionPsOutContext(reqBean); if (!CollectionUtils.isEmpty(productionPsOutContextList)) { for (MesProductionPsOutContext productionPsOutContext : productionPsOutContextList) { if (null == productionPsOutContext) continue; - Integer qcStatus = inspectionMap.get(productionPsOutContext.getProductSn()); + if (productionPsOutContext.getQcStatus().compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()) != 0 + || !inspectionList.contains(productionPsOutContext.getProductSn())) continue; //电子化检验弹框判不合格 - if (!StringUtils.isEmpty(qcStatus) && qcStatus.compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()) != 0) { - productionPsOutContext.setQcStatus(qcStatus); - isSaveFlag = true; - } + productionPsOutContext.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()); + isSaveFlag = true; } //保存上下文产出条码数据信息集合 if (isSaveFlag) productionDispatchContextStepService.dispatchProductionPsOutContext(reqBean, productionPsOutContextList); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackagePartService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackagePartService.java index 1d485f1..08ded7c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackagePartService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackagePartService.java @@ -12,6 +12,7 @@ import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService; import cn.estsh.i3plus.mes.pcn.util.PojoAttrUtil; +import cn.estsh.i3plus.mes.pcn.util.StringUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesPackage; @@ -130,15 +131,16 @@ public class MesFunctionPackagePartService extends BaseSwsService implements IFs packageDataContext.setGenerateType(MesExtEnumUtil.PACKING_RULE_GENERATE_TYPE.PACKAGE.getValue()); try { //零件打包业务处理 + stepResult.setDataCollection(new ArrayList()); packageNoGenerateStepService.doHandlePackagePart(reqBean, resultBean, stepResult, packageDataContext); } catch (ImppBusiException e) { stepResult.msg(e.getErrorDetail()); } catch (Exception e) { String error = String.format("生产线[%s]工位[%s]零件打包%s", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), fsmRouteDataService.handleFsmCfgOrDefault(reqBean, MesPcnEnumUtil.FSM_CFG.FSM_EXCEPTION_MSG.getCode())); - this.cacheException(reqBean, reqBean.getStepName(), error, e, false); + this.cacheException(reqBean, StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), error, e, false); stepResult.msg(error); } - //判断强制打包的执行结果 + //判断零件打包的执行结果 if (!StringUtils.isEmpty(stepResult.getMsg())) { return packResultMap(reqBean, resultBean, resultMap, String.format("生产线[%s]工位[%s]零件打包失败,%s", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), stepResult.getMsg())); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackageProgressService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackageProgressService.java index 60ed4c9..951ec27 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackageProgressService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackageProgressService.java @@ -7,6 +7,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService; +import cn.estsh.i3plus.mes.pcn.util.StringUtil; import cn.estsh.i3plus.platform.common.tool.MathOperation; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -162,7 +163,7 @@ public class MesFunctionPackageProgressService extends BaseSwsService implements stepResult.msg(e.getErrorDetail()); } catch (Exception e) { String error = String.format("生产线[%s]工位[%s]强制打包%s", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), fsmRouteDataService.handleFsmCfgOrDefault(reqBean, MesPcnEnumUtil.FSM_CFG.FSM_EXCEPTION_MSG.getCode())); - this.cacheException(reqBean, reqBean.getStepName(), error, e, false); + this.cacheException(reqBean, StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), error, e, false); stepResult.msg(error); } //判断强制打包的执行结果 diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesPackageNoGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesPackageNoGenerateStepService.java index eb4fc07..8460540 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesPackageNoGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesPackageNoGenerateStepService.java @@ -316,17 +316,18 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements productSnList2Remain = productSnList.subList(needQty, productSnList.size()); } + //当前的实际打包数量 = 缓存的包装条码明细数量 + 当前满足标包的差额条码的个数 + Integer curQty = cachedQty + productSnList2Cur.size(); + MesPackage packageDb = null; //判断是否存在缓存的包装条码明细信息,如果进行递归则已无包装条码, 则重新生成信息的包装条码 if (!CollectionUtils.isEmpty(packageDataContextList)) packageDb = getMesPackage(reqBean.getOrganizeCode(), packageDataContextList.get(0).getPackageId()); //缓存中的包装条码也可能在DB中已被删除, 所以这里直接判断 包装条码信息是否为空则生成包装条码信息 - if (null == packageDb) packageDb = insertMesPackage(reqBean, packageRuleContext, isAsyn); + if (null == packageDb) packageDb = insertMesPackage(reqBean, packageRuleContext, curQty, isAsyn); //如果包装条码未空, 说明上面生成包装条码的时候 根据编码规则生成出现问题, 则直接退出, 记录日志, 忽略当前零件的打包 if (null == packageDb) return null; - //当前的实际打包数量 = 缓存的包装条码明细数量 + 当前满足标包的差额条码的个数 - Integer curQty = cachedQty + productSnList2Cur.size(); //判断当前是否满包, isAsyn=false代表是工位按钮零件打包触发,零头也直接封箱 Boolean isSealed = !isAsyn ? curQty >= packageRuleContext.getPackSpecQty().intValue() : true; //判断包装条码是否存在ID进行新增或者更新操作, 如果满足标包则标记满包状态跟打印状态 @@ -354,13 +355,16 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements public MesPackage getMesPackage(String organizeCode, Long packageId) { return packageExtService.getMesPackage(organizeCode, packageId); } //生成包装条码信息 - private MesPackage insertMesPackage(StationRequestBean reqBean, MesPackageRuleContext packageRuleContext, Boolean isAsyn) { + private MesPackage insertMesPackage(StationRequestBean reqBean, MesPackageRuleContext packageRuleContext, Integer curQty, Boolean isAsyn) { //封装流水号入参对象 GenSerialNoModel serialNoModel = new GenSerialNoModel(packageRuleContext.getPackageBarcodeRule()) .putDataMap(MesPackageRuleContext.class.getSimpleName(), packageRuleContext) .partNo(packageRuleContext.getPartNo()).basicInfo(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); + //后面的savePackageDb那边只判断了跨天封箱情况下才会重新生成包装条码, 所以这里如果是正常工步创建则使用标包数量,如是是零件打包创建则使用实际数量生成包装条码,因为可能存在零头数量 + if (isAsyn) serialNoModel.putDataMap(MesPcnExtConstWords.QTY, new Double(curQty)); + //根据编码规则生成包装条码 String packageNo = doGereratePackageNo(reqBean, serialNoModel, isAsyn); if (StringUtils.isEmpty(packageNo)) return null;