package com.chinaztt.mes.technology.util;
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.chinaztt.mes.technology.dto.RoutingOperationParamDTO;
|
import com.chinaztt.mes.technology.entity.JoinDocumentBomRouting;
|
import com.chinaztt.mes.technology.entity.RoutingOperation;
|
import com.chinaztt.mes.technology.entity.RoutingOperationParam;
|
import com.chinaztt.mes.technology.mapper.JoinDocumentBomRoutingMapper;
|
import com.chinaztt.mes.technology.mapper.RoutingOperationMapper;
|
import com.chinaztt.mes.technology.mapper.RoutingOperationParamMapper;
|
import lombok.AllArgsConstructor;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
import java.util.Optional;
|
|
/**
|
* @Description : 技术模块工具类
|
* @ClassName : TechnologyUtils
|
* @Author : sll
|
* @Date: 2022-07-02 2:10
|
*/
|
@Service
|
@AllArgsConstructor
|
public class TechnologyUtils{
|
private JoinDocumentBomRoutingMapper joinDocumentBomRoutingMapper;
|
private RoutingOperationMapper routingOperationMapper;
|
private RoutingOperationParamMapper routingOperationParamMapper;
|
/**
|
* 获取工艺路线下工序对应的工艺参数值
|
* @param docBomId 工艺文件与bom关系表
|
* @param routingOperationId 工艺工序id
|
* @param code 参数项编号
|
* @return
|
*/
|
public String getRoutingOperationParamValue(Long docBomId,Long routingOperationId,String code){
|
JoinDocumentBomRouting joinDocumentBomRouting = joinDocumentBomRoutingMapper.selectById(docBomId);
|
if(joinDocumentBomRouting == null){
|
return null;
|
}
|
//Long rountingId = joinDocumentBomRouting.getRoutingId();//工艺路线id
|
//根据工艺路线id、工艺工序id找工艺工序关系
|
// List<RoutingOperation> routingOperationList = routingOperationMapper.selectList(Wrappers.<RoutingOperation>lambdaQuery().eq(RoutingOperation::getRoutingId,rountingId).eq(RoutingOperation::get,operationId));
|
// if(CollectionUtils.isEmpty(routingOperationList)){
|
// return null;
|
// }else if(routingOperationList.size() > 1){
|
// throw new RuntimeException("工艺工序关系重复");
|
// }else{
|
// Long rountingOperationId = routingOperationList.get(0).getId();//工艺工序id
|
// List<RoutingOperationParam> routingOperationParamList = routingOperationParamMapper.selectList(Wrappers.<RoutingOperationParam>lambdaQuery().eq(RoutingOperationParam::getRoutingOperationId,rountingOperationId).eq(RoutingOperationParam::getCode,code));
|
// if(CollectionUtils.isEmpty(routingOperationParamList)){
|
// return null;
|
// }else{
|
// return routingOperationParamList.get(0).getParamValue();
|
// }
|
// }
|
List<RoutingOperationParam> routingOperationParamList = routingOperationParamMapper.selectList(Wrappers.<RoutingOperationParam>lambdaQuery().eq(RoutingOperationParam::getRoutingOperationId,routingOperationId).eq(RoutingOperationParam::getCode,code));
|
if(CollectionUtils.isEmpty(routingOperationParamList)){
|
return null;
|
}else{
|
return routingOperationParamList.get(0).getParamValue();
|
}
|
|
}
|
|
/**
|
* 获取工艺文件下所有工序对应的工艺参数值
|
* @param docBomId 工艺文件与bom关系表
|
* @param routingOperationId 工艺工序id
|
* @param code 参数项编号
|
* @param wireCore 线芯
|
* @return
|
*/
|
public String getRoutingOperationParamValueFinishedproduct(Long docBomId,Long routingOperationId,String code,String wireCore){
|
//将code还原成系统参数集中的code
|
if(StringUtils.isBlank(code)){
|
return null;
|
}
|
String originalCode = code.split("_")[0];
|
|
//将docBomId转成docId
|
Long docId = joinDocumentBomRoutingMapper.selectById(docBomId).getDocumentId();//工艺文件id
|
if(null == docId || docId == 0){
|
return null;
|
}
|
//获取工艺文件下所有bom
|
List<RoutingOperationParamDTO> routingOperationParamDTOList = routingOperationParamMapper.getRoutingOperationParamListByDocId(docId);
|
if(CollectionUtils.isEmpty(routingOperationParamDTOList)){
|
return null;
|
}else{
|
Optional<RoutingOperationParamDTO> param = routingOperationParamDTOList.stream().filter(o -> o.getCode().equals(originalCode) && o.getWireCore().equals(wireCore) && o.getRoutingOperationId() == routingOperationId).findFirst();
|
if(param.isPresent()){
|
return param.get().getParamValue();
|
}else{
|
//最优匹配找不到,则放宽范围
|
param = routingOperationParamDTOList.stream().filter(o -> o.getCode().equals(originalCode) && o.getWireCore().equals(wireCore)).findFirst();
|
if(param.isPresent()){
|
return param.get().getParamValue();
|
}else{
|
param = routingOperationParamDTOList.stream().filter(o -> o.getCode().equals(originalCode)).findFirst();
|
if(param.isPresent()){
|
return param.get().getParamValue();
|
}else{
|
return null;
|
}
|
}
|
}
|
}
|
}
|
}
|