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 routingOperationList = routingOperationMapper.selectList(Wrappers.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 routingOperationParamList = routingOperationParamMapper.selectList(Wrappers.lambdaQuery().eq(RoutingOperationParam::getRoutingOperationId,rountingOperationId).eq(RoutingOperationParam::getCode,code)); // if(CollectionUtils.isEmpty(routingOperationParamList)){ // return null; // }else{ // return routingOperationParamList.get(0).getParamValue(); // } // } List routingOperationParamList = routingOperationParamMapper.selectList(Wrappers.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 routingOperationParamDTOList = routingOperationParamMapper.getRoutingOperationParamListByDocId(docId); if(CollectionUtils.isEmpty(routingOperationParamDTOList)){ return null; }else{ Optional 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; } } } } } }