|
|
|
@ -25,10 +25,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.StringJoiner;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
@ -89,9 +86,9 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
|
|
|
|
|
return productionAssemblySortContextList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//【排序线】获取生产工单装配件绑定记录 [前道所有装配件,无爆炸图与音频文件逻辑] -同时- 关联不可用规则
|
|
|
|
|
//【排序线】获取生产工单装配件绑定记录 [前道所有装配件,无爆炸图与音频文件逻辑] -同时- 关联不可用规则 ; 判断是否剔除平行工位 ; 判断是否根据工序顺序号过滤后道
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesProductionAssemblySortContext> getProductionAssemblySortPreCraftContextList(MesProdRuleContext prodRuleContext, Map<String, MesWorkCell> workCellMap, Map<String, List<MesProdRuleIgnoreCfg>> prodRuleIgnoreCfgMap) {
|
|
|
|
|
public List<MesProductionAssemblySortContext> getProductionAssemblySortPreCraftContextList(MesProdRuleContext prodRuleContext, Map<String, MesWorkCell> workCellMap, Map<String, List<MesProdRuleIgnoreCfg>> prodRuleIgnoreCfgMap, Boolean isFilterParallel, Boolean isFilterAfterCraft) {
|
|
|
|
|
|
|
|
|
|
if (null == prodRuleContext) return null;
|
|
|
|
|
|
|
|
|
@ -99,7 +96,7 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
|
|
|
|
|
StringUtils.isEmpty(prodRuleContext.getWorkCellCode()) || StringUtils.isEmpty(prodRuleContext.getProcessCode()) || StringUtils.isEmpty(prodRuleContext.getProductSn())) return null;
|
|
|
|
|
|
|
|
|
|
//【排序线】获取生产工单装配件清单 [前道所有装配件]
|
|
|
|
|
List<MesWorkOrderAssembly> workOrderAssemblyList = getWorkOrderAssemblyListAllCell(prodRuleContext, new ArrayList<>(workCellMap.values()));
|
|
|
|
|
List<MesWorkOrderAssembly> workOrderAssemblyList = getWorkOrderAssemblyListPreCraft(prodRuleContext, isFilterParallel, isFilterAfterCraft);
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(workOrderAssemblyList)) return null;
|
|
|
|
|
|
|
|
|
@ -150,18 +147,33 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//【排序线】获取生产工单装配件清单[前道所有装配件]
|
|
|
|
|
//【排序线】获取生产工单装配件清单[前道所有装配件] 判断是否剔除平行工位 ; 判断是否过滤后道
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesWorkOrderAssembly> getWorkOrderAssemblyListAllCell(MesProdRuleContext prodRuleContext, List<MesWorkCell> workCellList) {
|
|
|
|
|
public List<MesWorkOrderAssembly> getWorkOrderAssemblyListPreCraft(MesProdRuleContext prodRuleContext, Boolean isFilterParallel, Boolean isFilterAfterCraft) {
|
|
|
|
|
|
|
|
|
|
//【排序线】获取生产工单装配件清单
|
|
|
|
|
List<MesWorkOrderAssembly> workOrderAssemblyList = getWorkOrderAssemblyList(prodRuleContext, true);
|
|
|
|
|
if (CollectionUtils.isEmpty(workOrderAssemblyList)) return workOrderAssemblyList;
|
|
|
|
|
//判断是否存在其他末道工位[可能存在平行工位]
|
|
|
|
|
List<String> workCellList2End = workCellList.stream().filter(o -> (null != o
|
|
|
|
|
&& o.getIsEndWorkCell().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0
|
|
|
|
|
&& !o.getWorkCellCode().equals(prodRuleContext.getWorkCellCode()))).map(MesWorkCell::getWorkCellCode).collect(Collectors.toList());
|
|
|
|
|
if (CollectionUtils.isEmpty(workCellList2End)) return workOrderAssemblyList;
|
|
|
|
|
return workOrderAssemblyList.stream().filter(o -> (null != o && !workCellList2End.contains(o.getWorkCellCode()))).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
//获取当前工位的第一个装配件的工艺顺序号
|
|
|
|
|
Optional<MesWorkOrderAssembly> optional = workOrderAssemblyList.stream().filter(o -> (null != o && prodRuleContext.getWorkCellCode().equals(o.getWorkCellCode()))).findFirst();
|
|
|
|
|
if ((null == optional || !optional.isPresent()) || StringUtils.isEmpty(optional.get().getProcessSeq())) return workOrderAssemblyList;
|
|
|
|
|
|
|
|
|
|
//平行工位, 需要剔除相同工艺顺序号的工位的装配件
|
|
|
|
|
if (isFilterParallel) {
|
|
|
|
|
workOrderAssemblyList = workOrderAssemblyList.stream().filter(o -> (null != o && (StringUtils.isEmpty(o.getProcessSeq()) ||
|
|
|
|
|
o.getProcessSeq().compareTo(optional.get().getProcessSeq()) != 0 || o.getWorkCellCode().equals(prodRuleContext.getWorkCellCode())))).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(workOrderAssemblyList)) return workOrderAssemblyList;
|
|
|
|
|
|
|
|
|
|
//根据工序顺序号过滤后道
|
|
|
|
|
if (isFilterAfterCraft) {
|
|
|
|
|
workOrderAssemblyList = workOrderAssemblyList.stream().filter(o -> (null != o &&
|
|
|
|
|
(StringUtils.isEmpty(o.getProcessSeq()) || o.getProcessSeq().compareTo(optional.get().getProcessSeq()) <= 0))).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return workOrderAssemblyList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取装配件绑定记录【排序】
|
|
|
|
|