zss
2023-11-07 3c34085a21511610477f555cebf3f6fa42272402
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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;
                    }
                }
            }
        }
    }
}