Merge branch 'test-temp-wj-250117-pack' into dev

dev-temp-nht-202502180000-customprint
王杰 4 months ago
commit 6f5b1e5de0

@ -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<String, Integer> inspectionMap = null;
try {
inspectionMap = StringUtils.isEmpty(buttonDynamicModel.getFunctionValue()) ? null : JSONObject.parseObject(buttonDynamicModel.getFunctionValue(), Map.class);
} catch (Exception e) {
}
List<String> 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<MesProductionPsOutContext> 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);

@ -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()));

@ -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);
}
//判断强制打包的执行结果

@ -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;

Loading…
Cancel
Save