Merge remote-tracking branch 'origin/mes-uat-changshu0609-temp-wj-250616-xisu-merge-nht' into uat-temp-nht-2506120000-jialiao

mes-uat-changshu0609^2
jason 4 weeks ago
commit 963c87f432

@ -273,6 +273,9 @@ public class MesAssemblyGeneratePartNoStepService extends BaseStepService {
if (null == productionAssemblyNosortContext) continue; if (null == productionAssemblyNosortContext) continue;
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedCustomStepMatch(productionAssemblyNosortContext.getMatchType()))
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("当前工序模版不支持匹配[%s]确认方式的装配件信息!", MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.valueOfDescription(productionAssemblyNosortContext.getMatchType())));
for (MesEquipVariableCollectContext equipVariableCollectContext : equipVariableCollectContextListTemp) { for (MesEquipVariableCollectContext equipVariableCollectContext : equipVariableCollectContextListTemp) {
//已被消费 //已被消费

@ -271,6 +271,9 @@ public class MesAssemblyMatchNosortRetrodictStepService extends BaseStepService
if (null == productionAssemblyNosortContext) continue; if (null == productionAssemblyNosortContext) continue;
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedCustomStepMatch(productionAssemblyNosortContext.getMatchType()))
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("当前工序模版不支持匹配[%s]确认方式的装配件信息!", MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.valueOfDescription(productionAssemblyNosortContext.getMatchType())));
for (MesEquipVariableCollectContext equipVariableCollectContext : equipVariableCollectContextListTemp) { for (MesEquipVariableCollectContext equipVariableCollectContext : equipVariableCollectContextListTemp) {
//已被消费 //已被消费

@ -114,7 +114,7 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
Boolean isSkip = checkIsSkip(productionProcessContext, equipVariableCollectContextList); Boolean isSkip = checkIsSkip(productionProcessContext, equipVariableCollectContextList);
//处理待验证的装配件条码 [扫描模式匹配成功返回true, 否则返回flase, 非扫描模式需要验证是否全部匹配完成] //处理待验证的装配件条码 [扫描模式匹配成功返回true, 否则返回flase, 非扫描模式需要验证是否全部匹配完成]
Boolean result = doHandleMatchAssembly(reqBean, stepResult, productionProcessContext.getWorkCenter(), prodRuleContextList, equipVariableCollectContextList, isSkip); Boolean result = doHandleMatchAssembly(reqBean, resultBean, stepResult, productionProcessContext.getWorkCenter(), prodRuleContextList, equipVariableCollectContextList, isSkip);
//验证是否存在待绑定数据 //验证是否存在待绑定数据
hasUnBindAssembly = hasUnBindAssembly(prodRuleContextList); hasUnBindAssembly = hasUnBindAssembly(prodRuleContextList);
@ -236,7 +236,7 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
} }
//处理待验证的装配件条码 [扫描模式匹配成功返回true, 否则返回flase, 非扫描模式需要验证是否全部匹配完成] //处理待验证的装配件条码 [扫描模式匹配成功返回true, 否则返回flase, 非扫描模式需要验证是否全部匹配完成]
private Boolean doHandleMatchAssembly(StationRequestBean reqBean, StepResult stepResult, MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, List<MesEquipVariableCollectContext> equipVariableCollectContextList, Boolean isSkip) { private Boolean doHandleMatchAssembly(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, List<MesEquipVariableCollectContext> equipVariableCollectContextList, Boolean isSkip) {
//遍历产品加工规则 //遍历产品加工规则
for (MesProdRuleContext prodRuleContext : prodRuleContextList) { for (MesProdRuleContext prodRuleContext : prodRuleContextList) {
@ -256,6 +256,9 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
//已装配 //已装配
if (null == productionAssemblyNosortContext || productionAssemblyNosortContext.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) != 0) continue; if (null == productionAssemblyNosortContext || productionAssemblyNosortContext.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) != 0) continue;
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedCustomStepMatch(productionAssemblyNosortContext.getMatchType()))
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("当前工序模版不支持匹配[%s]确认方式的装配件信息!", MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.valueOfDescription(productionAssemblyNosortContext.getMatchType())));
//遍历装配件条码 //遍历装配件条码
for (MesEquipVariableCollectContext equipVariableCollectContext : equipVariableCollectContextList) { for (MesEquipVariableCollectContext equipVariableCollectContext : equipVariableCollectContextList) {

@ -106,7 +106,7 @@ public class MesAssemblyMatchSortStepService extends BaseStepService {
Boolean isCavitySkip = checkIsCavitySkip(productionProcessContext, equipVariableCollectContextList); Boolean isCavitySkip = checkIsCavitySkip(productionProcessContext, equipVariableCollectContextList);
//处理待验证的装配件条码 [扫描模式匹配成功返回true, 否则返回flase, 非扫描模式需要验证是否全部匹配完成] //处理待验证的装配件条码 [扫描模式匹配成功返回true, 否则返回flase, 非扫描模式需要验证是否全部匹配完成]
Boolean result = doHandleMatchAssembly(reqBean, stepResult, productionProcessContext.getWorkCenter(), prodRuleContextList, equipVariableCollectContextList, isSkip, isCavitySkip); Boolean result = doHandleMatchAssembly(reqBean, resultBean, stepResult, productionProcessContext.getWorkCenter(), prodRuleContextList, equipVariableCollectContextList, isSkip, isCavitySkip);
//验证是否存在待绑定数据 //验证是否存在待绑定数据
hasUnBindAssembly = hasUnBindAssembly(prodRuleContextList); hasUnBindAssembly = hasUnBindAssembly(prodRuleContextList);
@ -199,7 +199,7 @@ public class MesAssemblyMatchSortStepService extends BaseStepService {
} }
//处理待验证的装配件条码 [扫描模式匹配成功返回true, 否则返回flase, 非扫描模式需要验证是否全部匹配完成] //处理待验证的装配件条码 [扫描模式匹配成功返回true, 否则返回flase, 非扫描模式需要验证是否全部匹配完成]
private Boolean doHandleMatchAssembly(StationRequestBean reqBean, StepResult stepResult, MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, List<MesEquipVariableCollectContext> equipVariableCollectContextList, Boolean isSkip, Boolean isCavitySkip) { private Boolean doHandleMatchAssembly(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList, List<MesEquipVariableCollectContext> equipVariableCollectContextList, Boolean isSkip, Boolean isCavitySkip) {
//遍历产品加工规则 //遍历产品加工规则
for (MesProdRuleContext prodRuleContext : prodRuleContextList) { for (MesProdRuleContext prodRuleContext : prodRuleContextList) {
@ -219,6 +219,9 @@ public class MesAssemblyMatchSortStepService extends BaseStepService {
//已装配 //已装配
if (null == productionAssemblySortContext || productionAssemblySortContext.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) != 0) continue; if (null == productionAssemblySortContext || productionAssemblySortContext.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) != 0) continue;
if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedCustomStepMatch(productionAssemblySortContext.getMatchType()))
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("当前工序模版不支持匹配[%s]确认方式的装配件信息!", MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.valueOfDescription(productionAssemblySortContext.getMatchType())));
//遍历装配件条码 //遍历装配件条码
for (MesEquipVariableCollectContext equipVariableCollectContext : equipVariableCollectContextList) { for (MesEquipVariableCollectContext equipVariableCollectContext : equipVariableCollectContextList) {

@ -39,6 +39,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import rx.internal.util.LinkedArrayList;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import java.util.*; import java.util.*;
@ -122,9 +123,11 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements
List<Integer> foreignKeyList = prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getIsPackage()) && o.getIsPackage().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0)).map(MesProdRuleContext::getForeignKey).collect(Collectors.toList()); List<Integer> foreignKeyList = prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getIsPackage()) && o.getIsPackage().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0)).map(MesProdRuleContext::getForeignKey).collect(Collectors.toList());
//搜集数据关联键集合对应的[合格状态]的产出条码,根据零件号分组 //搜集数据关联键集合对应的[合格状态]的产出条码,根据零件号分组
Map<String, List<String>> productSnMap2Part = productionPsOutContextList.stream() /**Map<String, List<String>> productSnMap2Part = productionPsOutContextList.stream()
.filter(o -> (null != o && o.getQcStatus().compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()) == 0 && foreignKeyList.contains(o.getForeignKey()))) .filter(o -> (null != o && o.getQcStatus().compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()) == 0 && foreignKeyList.contains(o.getForeignKey())))
.collect(Collectors.groupingBy(MesProductionPsOutContext::getPartNo, Collectors.mapping(MesProductionPsOutContext::getProductSn, Collectors.toList()))); .collect(Collectors.groupingBy(MesProductionPsOutContext::getPartNo, Collectors.mapping(MesProductionPsOutContext::getProductSn, Collectors.toList())));**/
Map<String, LinkedList<String>> productSnMap2Part = new HashMap<>();
productionPsOutContextList.forEach(o -> productSnMap2Part.computeIfAbsent(o.getPartNo(), k -> new LinkedList<>()).addAll(generateVirtualPs(o.getQty(), o.getProductSn())));
//获取包装规则信息 //获取包装规则信息
Map<String, MesPackageRuleContext> packageRuleContextMap = productionProcessContextStepService.getPackageRuleContext(reqBean); Map<String, MesPackageRuleContext> packageRuleContextMap = productionProcessContextStepService.getPackageRuleContext(reqBean);
@ -134,7 +137,7 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements
Map<String, String> packageDataContextMap = productionCustomContextStepService.getPackageDataContext(reqBean); Map<String, String> packageDataContextMap = productionCustomContextStepService.getPackageDataContext(reqBean);
//不同的零件号分别打包处理 //不同的零件号分别打包处理
for (Map.Entry<String, List<String>> entry : productSnMap2Part.entrySet()) { for (Map.Entry<String, LinkedList<String>> entry : productSnMap2Part.entrySet()) {
if (null == entry) continue; if (null == entry) continue;
@ -150,6 +153,8 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements
} else { } else {
//获取包装规则信息 //获取包装规则信息
packageRuleContext = getPackageRuleContext(reqBean, stepResult, entry.getKey(), false); packageRuleContext = getPackageRuleContext(reqBean, stepResult, entry.getKey(), false);
Optional<MesProdRuleContext> optional = prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getIsPrintPackage()) && o.getIsPrintPackage().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0)).findFirst();
if (null == optional || !optional.isPresent()) packageRuleContext.setIsPrintPackage(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
} }
//无生产过程打包规则时, 忽略当前零件 //无生产过程打包规则时, 忽略当前零件
@ -297,7 +302,7 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements
//生成包装及明细, 根据标包数量判断是否执行打印 [递归] //生成包装及明细, 根据标包数量判断是否执行打印 [递归]
@Override @Override
public List<MesPackageDataContext> doHandlePackagePrint(StationRequestBean reqBean, StepResult stepResult, MesPackageRuleContext packageRuleContext, public List<MesPackageDataContext> doHandlePackagePrint(StationRequestBean reqBean, StepResult stepResult, MesPackageRuleContext packageRuleContext,
List<MesPackageDataContext> packageDataContextList, List<String> productSnList, Boolean isAsyn) { List<MesPackageDataContext> packageDataContextList, LinkedList<String> productSnList, Boolean isAsyn) {
//缓存的包装条码明细数量 //缓存的包装条码明细数量
Integer cachedQty = CollectionUtils.isEmpty(packageDataContextList) ? MesPcnExtConstWords.ZERO : packageDataContextList.size(); Integer cachedQty = CollectionUtils.isEmpty(packageDataContextList) ? MesPcnExtConstWords.ZERO : packageDataContextList.size();
@ -307,9 +312,9 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements
if (needQty < 0) needQty = MesPcnExtConstWords.ZERO; if (needQty < 0) needQty = MesPcnExtConstWords.ZERO;
//当前满足标包的差额条码 //当前满足标包的差额条码
List<String> productSnList2Cur = null; LinkedList<String> productSnList2Cur = null;
//除去当前满足标包的差额条码后的剩余条码 //除去当前满足标包的差额条码后的剩余条码
List<String> productSnList2Remain = null; LinkedList<String> productSnList2Remain = null;
//当前零件剩余未打包条码 如果小于等于 当前满足标包的差额数量, 则直接将 未打包条码赋给当前满足标包的差额条码, 否则 截取条码 //当前零件剩余未打包条码 如果小于等于 当前满足标包的差额数量, 则直接将 未打包条码赋给当前满足标包的差额条码, 否则 截取条码
if (productSnList.size() <= needQty) { if (productSnList.size() <= needQty) {
@ -320,8 +325,8 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements
productSnList2Remain = productSnList; productSnList2Remain = productSnList;
} else { } else {
//根据需要的个数进行截取条码 //根据需要的个数进行截取条码
productSnList2Cur = productSnList.subList(0, needQty); productSnList2Cur = new LinkedList<>(productSnList.subList(0, needQty));
productSnList2Remain = productSnList.subList(needQty, productSnList.size()); productSnList2Remain = new LinkedList<>(productSnList.subList(needQty, productSnList.size()));
} }
} }
@ -454,46 +459,49 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements
//判断统计方式,是否生成包装明细信息, 返回当前未满包的包装条码明细数据 //判断统计方式,是否生成包装明细信息, 返回当前未满包的包装条码明细数据
private List<MesPackageDataContext> insertPackageDetailAndBackUnSealedResultList(StationRequestBean reqBean, MesPackageRuleContext packageRuleContext, private List<MesPackageDataContext> insertPackageDetailAndBackUnSealedResultList(StationRequestBean reqBean, MesPackageRuleContext packageRuleContext,
MesPackage packageDb, List<String> productSnList2Cur, Boolean isSealed) { MesPackage packageDb, LinkedList<String> productSnList2Cur, Boolean isSealed) {
//当前未满包的包装条码明细数据 //当前未满包的包装条码明细数据
List<MesPackageDataContext> resultList = null; List<MesPackageDataContext> resultList = null;
if (CollectionUtils.isEmpty(productSnList2Cur)) return resultList; if (CollectionUtils.isEmpty(productSnList2Cur)) return resultList;
//包装条码明细ID //包装条码明细ID
Long detailId = null; Long detailId = null;
//遍历当前满足标包的差额条码 //遍历当前满足标包的差额条码, 这边根据条码分组(因为可能存在重复条码[适配弹框输入的工单数量])
for (String productSn : productSnList2Cur) { Map<String, Integer> productSnMap = productSnList2Cur.stream().collect(Collectors.groupingBy(o -> o, Collectors.summingInt(o -> 1)));
if (StringUtils.isEmpty(productSn)) continue; for (Map.Entry<String, Integer> entry : productSnMap.entrySet()) {
if (null == entry) continue;
//判断统计方式,是否生成包装明细信息 //判断统计方式,是否生成包装明细信息
if (packageRuleContext.getGenerateType().compareTo(MesExtEnumUtil.PACKING_RULE_GENERATE_TYPE.PACKAGE_DETAIL.getValue()) == 0) { if (packageRuleContext.getGenerateType().compareTo(MesExtEnumUtil.PACKING_RULE_GENERATE_TYPE.PACKAGE_DETAIL.getValue()) == 0) {
detailId = insertMesPackageDetail(reqBean, packageDb, productSn); detailId = insertMesPackageDetail(reqBean, packageDb, entry.getKey(), entry.getValue());
} }
//判断不满包则 赋值给 当前未满包的包装条码明细数据resultList //判断不满包则 赋值给 当前未满包的包装条码明细数据resultList
if (!isSealed) { if (!isSealed) {
if (CollectionUtils.isEmpty(resultList)) resultList = new ArrayList<>(); if (CollectionUtils.isEmpty(resultList)) resultList = new ArrayList<>();
for (Integer i = 0; i < entry.getValue(); i++) {
MesPackageDataContext packageDataContext = new MesPackageDataContext(); MesPackageDataContext packageDataContext = new MesPackageDataContext();
BeanUtils.copyProperties(packageRuleContext, packageDataContext); BeanUtils.copyProperties(packageRuleContext, packageDataContext);
packageDataContext.setPackageId(packageDb.getId()); packageDataContext.setPackageId(packageDb.getId());
packageDataContext.setDetailId(detailId); packageDataContext.setDetailId(detailId);
packageDataContext.setPackageNo(packageDb.getPackageNo()); packageDataContext.setPackageNo(packageDb.getPackageNo());
packageDataContext.setQty(new Double(1)); packageDataContext.setQty(new Double(1));
packageDataContext.setSerialNumber(productSn); packageDataContext.setSerialNumber(entry.getKey());
packageDataContext.setCreateDatetime(packageDb.getCreateDatetime()); packageDataContext.setCreateDatetime(packageDb.getCreateDatetime());
packageDataContext.setModifyDatetime(TimeTool.getNowTime(true)); packageDataContext.setModifyDatetime(TimeTool.getNowTime(true));
resultList.add(packageDataContext); resultList.add(packageDataContext);
} }
} }
}
return resultList; return resultList;
} }
//生成包装明细信息 //生成包装明细信息
private Long insertMesPackageDetail(StationRequestBean reqBean, MesPackage packageDb, String productSn) { private Long insertMesPackageDetail(StationRequestBean reqBean, MesPackage packageDb, String productSn, Integer qty) {
MesPackageDetail packageDetailDb = new MesPackageDetail(); MesPackageDetail packageDetailDb = new MesPackageDetail();
packageDetailDb.setPackageNo(packageDb.getPackageNo()); packageDetailDb.setPackageNo(packageDb.getPackageNo());
packageDetailDb.setPartNo(packageDb.getPartNo()); packageDetailDb.setPartNo(packageDb.getPartNo());
packageDetailDb.setPartName(packageDb.getPartName()); packageDetailDb.setPartName(packageDb.getPartName());
packageDetailDb.setSerialNumber(productSn); packageDetailDb.setSerialNumber(productSn);
packageDetailDb.setProductSn(productSn); packageDetailDb.setProductSn(productSn);
packageDetailDb.setQty(new Double(1)); packageDetailDb.setQty(new Double(qty));
packageDetailDb.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); packageDetailDb.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue());
packageDetailDb.setFid(UUID.randomUUID().toString()); packageDetailDb.setFid(UUID.randomUUID().toString());
packageDetailDb.setOrganizeCode(reqBean.getOrganizeCode()); packageDetailDb.setOrganizeCode(reqBean.getOrganizeCode());
@ -526,6 +534,11 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements
@Override @Override
public MesProduceSnPrintModel doPrintPackageNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesPackageRuleContext packageRuleContext, public MesProduceSnPrintModel doPrintPackageNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesPackageRuleContext packageRuleContext,
MesLabelTemplate labelTemplate, IPrintTemplateStrategyService strategyService, List<MesPackage> packageList, Boolean isAsyn) { MesLabelTemplate labelTemplate, IPrintTemplateStrategyService strategyService, List<MesPackage> packageList, Boolean isAsyn) {
MesProduceSnPrintModel printModel = null;
if (packageRuleContext.getIsPrintPackage().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) return printModel;
if (null == strategyService) { if (null == strategyService) {
//查询模版信息 //查询模版信息
labelTemplate = templateService.getLabelTemplate(packageRuleContext.getPackageTemplate(), reqBean.getOrganizeCode()); labelTemplate = templateService.getLabelTemplate(packageRuleContext.getPackageTemplate(), reqBean.getOrganizeCode());
@ -545,8 +558,6 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements
mesProduceSnPrintModel.setPartName(packageRuleContext.getPartName()); mesProduceSnPrintModel.setPartName(packageRuleContext.getPartName());
mesProduceSnPrintModel.getPackageList().addAll(packageList); mesProduceSnPrintModel.getPackageList().addAll(packageList);
MesProduceSnPrintModel printModel = null;
try { try {
printModel = strategyService.execute(null, mesProduceSnPrintModel, null, stepResult, reqBean, !StringUtils.isEmpty(reqBean.getWorkCellCode())); printModel = strategyService.execute(null, mesProduceSnPrintModel, null, stepResult, reqBean, !StringUtils.isEmpty(reqBean.getWorkCellCode()));
} catch (ImppBusiException e) { } catch (ImppBusiException e) {
@ -698,12 +709,22 @@ public class MesPackageNoGenerateStepService extends BaseStepService implements
//生成虚拟条码,零件打包不写包装明细数据, 只是为了适配工步中的方法去递归生成包装条码 //生成虚拟条码,零件打包不写包装明细数据, 只是为了适配工步中的方法去递归生成包装条码
@Override @Override
public List<String> generateVirtualPs(Double qty) { public LinkedList<String> generateVirtualPs(Double qty) {
List<String> virtualPsList = new ArrayList<>(); LinkedList<String> virtualPsList = new LinkedList<>();
for (int i = 0; i < qty.intValue(); i ++) { for (int i = 0; i < qty.intValue(); i ++) {
virtualPsList.add(String.valueOf(i)); virtualPsList.add(String.valueOf(i));
} }
return virtualPsList; return virtualPsList;
} }
//生成一样的虚拟条码, 适配弹框输入工单数量
@Override
public LinkedList<String> generateVirtualPs(Double qty, String productSn) {
LinkedList<String> virtualPsList = new LinkedList<>();
for (int i = 0; i < qty.intValue(); i ++) {
virtualPsList.add(productSn);
}
return virtualPsList;
}
} }

@ -215,7 +215,7 @@ public class MesStationDeductionAssemblyStepService extends BaseStepService {
productionAssemblyContext.setAssemblySn(null); productionAssemblyContext.setAssemblySn(null);
productionAssemblyContext.setMatchDatetime(null); productionAssemblyContext.setMatchDatetime(null);
} }
stepResult.isCompleted(false).msg(String.format("站点扣减装配件时验证零件号[%s]当前缺料,请扫描上料条码!", productionAssemblyContext.getPartNo())); stepResult.isCompleted(false).msg(String.format("站点扣减装配件时验证零件号[%s]当前缺料,请扫描上料条码!", productionAssemblyContext.getAssemblyPartNo()));
break; break;
} else { } else {
productionAssemblyContext.setAssemblySn(barCodeList.get(0)); productionAssemblyContext.setAssemblySn(barCodeList.get(0));

@ -185,7 +185,7 @@ public class MesStationMatchAssemblyStepService extends BaseStepService {
productionAssemblyContext.setAssemblySn(null); productionAssemblyContext.setAssemblySn(null);
productionAssemblyContext.setMatchDatetime(null); productionAssemblyContext.setMatchDatetime(null);
} }
stepResult.isCompleted(false).msg(String.format("站点匹配装配件时验证零件号[%s]当前缺料,请扫描上料条码!", productionAssemblyContext.getPartNo())); stepResult.isCompleted(false).msg(String.format("站点匹配装配件时验证零件号[%s]当前缺料,请扫描上料条码!", productionAssemblyContext.getAssemblyPartNo()));
break; break;
} else { } else {
productionAssemblyContext.setAssemblyStatus(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue()); productionAssemblyContext.setAssemblyStatus(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue());

@ -14,6 +14,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.LinkedList;
import java.util.List; import java.util.List;
public interface IMesPackageNoGenerateStepService { public interface IMesPackageNoGenerateStepService {
@ -42,13 +43,16 @@ public interface IMesPackageNoGenerateStepService {
@ApiOperation(value = "生成包装及明细, 根据标包数量判断是否执行打印") @ApiOperation(value = "生成包装及明细, 根据标包数量判断是否执行打印")
List<MesPackageDataContext> doHandlePackagePrint(StationRequestBean reqBean, StepResult stepResult, MesPackageRuleContext packageRuleContext, List<MesPackageDataContext> doHandlePackagePrint(StationRequestBean reqBean, StepResult stepResult, MesPackageRuleContext packageRuleContext,
List<MesPackageDataContext> packageDataContextList, List<String> productSnList, Boolean isAsyn); List<MesPackageDataContext> packageDataContextList, LinkedList<String> productSnList, Boolean isAsyn);
@ApiOperation(value = "进行打印") @ApiOperation(value = "进行打印")
MesProduceSnPrintModel doPrintPackageNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesPackageRuleContext packageRuleContext, MesProduceSnPrintModel doPrintPackageNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesPackageRuleContext packageRuleContext,
MesLabelTemplate labelTemplate, IPrintTemplateStrategyService strategyService, List<MesPackage> packageList, Boolean isAsyn); MesLabelTemplate labelTemplate, IPrintTemplateStrategyService strategyService, List<MesPackage> packageList, Boolean isAsyn);
@ApiOperation(value = "生成虚拟条码,零件打包不写包装明细数据, 只是为了适配工步中的方法去递归生成包装条码") @ApiOperation(value = "生成虚拟条码,零件打包不写包装明细数据, 只是为了适配工步中的方法去递归生成包装条码")
List<String> generateVirtualPs(Double qty); LinkedList<String> generateVirtualPs(Double qty);
@ApiOperation(value = "生成一样的虚拟条码, 适配弹框输入工单数量")
LinkedList<String> generateVirtualPs(Double qty, String productSn);
} }

@ -1,5 +1,6 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.context; package cn.estsh.i3plus.ext.mes.pcn.pojo.context;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.Data; import lombok.Data;
@ -59,9 +60,12 @@ public class MesPackageRuleContext implements Serializable {
public String printer; public String printer;
@ApiParam(name = "同步状态WMS") @ApiParam(name = "同步状态WMS")
public Integer systemSyncStatusWms = 2; public Integer systemSyncStatusWms = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
@ApiParam("零件打包加工单号") @ApiParam("零件打包加工单号")
public String partPackWorkOrderNo; public String partPackWorkOrderNo;
@ApiParam("是否打印包装条码")
private Integer isPrintPackage = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue();
} }

@ -92,6 +92,9 @@ public class MesProdRuleContext implements Serializable {
@ApiParam(name = "是否包装") @ApiParam(name = "是否包装")
private Integer isPackage; private Integer isPackage;
@ApiParam(name = "是否打印包装条码")
private Integer isPrintPackage;
@ApiParam(name = "成品站点") @ApiParam(name = "成品站点")
private String partLocation; private String partLocation;

@ -133,6 +133,9 @@ public class MesProductionAssemblyContext implements Serializable {
@ApiParam("容器匹配信息") @ApiParam("容器匹配信息")
public String containerSnData; public String containerSnData;
@ApiParam("是否已经验证过原料调配")
public String isCheckedRawMix;
public String repeatKeyToString() { public String repeatKeyToString() {
if (StringUtils.isEmpty(this.equipmentCode) || StringUtils.isEmpty(this.matchType) || (StringUtils.isEmpty(this.matchRule) && StringUtils.isEmpty(this.assemblyPartNo))) return null; if (StringUtils.isEmpty(this.equipmentCode) || StringUtils.isEmpty(this.matchType) || (StringUtils.isEmpty(this.matchRule) && StringUtils.isEmpty(this.assemblyPartNo))) return null;
return String.format("%s:%s&%s:%s&%s:%s&%s:%s", return String.format("%s:%s&%s:%s&%s:%s&%s:%s",

@ -8,6 +8,8 @@ import lombok.Data;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/** /**
* -() * -()

Loading…
Cancel
Save