李林
2023-10-07 658d4927d468c47208fd012d9128b09249c07eff
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
113
114
115
116
117
118
package com.chinaztt.mes.plan.util;
 
 
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.chinaztt.mes.plan.entity.ManufacturingOrder;
import com.chinaztt.mes.plan.entity.MasterProductionSchedule;
import com.chinaztt.mes.plan.entity.MoSamplingRule;
import com.chinaztt.mes.plan.entity.MoTestStandard;
import com.chinaztt.mes.plan.mapper.ManufacturingOrderMapper;
import com.chinaztt.mes.plan.mapper.MasterProductionScheduleMapper;
import com.chinaztt.mes.plan.mapper.MoSamplingRuleMapper;
import com.chinaztt.mes.plan.mapper.MoTestStandardMapper;
import com.chinaztt.mes.technology.dto.RoutingOperationDTO;
import com.chinaztt.mes.technology.entity.DocumentSamplingRule;
import com.chinaztt.mes.technology.entity.DocumentTestStandard;
import com.chinaztt.mes.technology.entity.JoinDocumentBomRouting;
import com.chinaztt.mes.technology.entity.RoutingOperation;
import com.chinaztt.mes.technology.mapper.DocumentSamplingRuleMapper;
import com.chinaztt.mes.technology.mapper.DocumentTestStandardMapper;
import com.chinaztt.mes.technology.mapper.JoinDocumentBomRoutingMapper;
import com.chinaztt.mes.technology.mapper.RoutingOperationMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
 
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * @Description : 车间订单工具类
 * @ClassName : ManufacturingOrderUtils
 * @Author : sll
 * @Date: 2022-07-02  13:46
 */
@Service
@AllArgsConstructor
public class ManufacturingOrderUtils{
    private ManufacturingOrderMapper manufacturingOrderMapper;
    private RoutingOperationMapper routingOperationMapper;
    private JoinDocumentBomRoutingMapper joinDocumentBomRoutingMapper;
    private DocumentTestStandardMapper documentTestStandardMapper;
    private MoTestStandardMapper moTestStandardMapper;
    private MasterProductionScheduleMapper masterProductionScheduleMapper;
    private DocumentSamplingRuleMapper documentSamplingRuleMapper;
    private MoSamplingRuleMapper moSamplingRuleMapper;
 
 
    /**
     * @param moId                 车间订单id
     * @param moRoutingOperationId 车间订单工艺路线工序id
     * @param routingOperationDTO
     * @param outPartId 产出零件id
     */
    public void fillStandardByOperationDoc(Long moId, Long moRoutingOperationId, RoutingOperationDTO routingOperationDTO, Long outPartId) {
        ManufacturingOrder manufacturingOrder = manufacturingOrderMapper.selectById(moId);//根据车间订单行id获取车间订单
        Long bomid = manufacturingOrder.getBomId();//获取bomid
        Long mpsid = manufacturingOrder.getMpsId();//主计划id
 
        MasterProductionSchedule masterProductionSchedule = masterProductionScheduleMapper.selectById(mpsid);//根据主计划id获取主计划
        Long docid = masterProductionSchedule.getTechnologyDocumentId();//工艺文件id
 
        RoutingOperation routingOperation = routingOperationMapper.selectById(routingOperationDTO.getId());//根据工艺工序id获取工艺工序记录行
        Long routingId = routingOperation.getRoutingId();//获取工艺id
        Long routingOperationId = routingOperation.getId();//工艺工序关系表记录行id
        //Long partId = routingOperationDTO.getPartId();//零件id
        Long partId = outPartId;
 
        //根据工艺文件id&&bomid&&工艺id&&零件id——>工艺路线-零件-bom的关系
        List<JoinDocumentBomRouting> joinDocumentBomRoutingList = joinDocumentBomRoutingMapper.selectList(Wrappers.<JoinDocumentBomRouting>lambdaQuery().eq(JoinDocumentBomRouting::getDocumentId,docid).eq(JoinDocumentBomRouting::getBomId,bomid).eq(JoinDocumentBomRouting::getRoutingId,routingId).eq(JoinDocumentBomRouting::getPartId,partId));
        if(CollectionUtils.isNotEmpty(joinDocumentBomRoutingList)){
            //理论上这种查法只能查出一条记录
            //万一能取到多条记录,但是不是每一条都做了检测标准,取一个存在对应检测标准的
            JoinDocumentBomRouting joinDocumentBomRouting_use = new JoinDocumentBomRouting();
            for(JoinDocumentBomRouting joinDocumentBomRouting : joinDocumentBomRoutingList){
                List<DocumentTestStandard> documentTestStandardList = documentTestStandardMapper.selectList(Wrappers.<DocumentTestStandard>lambdaQuery().eq(DocumentTestStandard::getDocBomId,joinDocumentBomRouting.getId()));
                if(CollectionUtils.isNotEmpty(documentTestStandardList)){
                    joinDocumentBomRouting_use = joinDocumentBomRouting;
                    break;//退出遍历
                }
            }
 
            List<DocumentTestStandard> documentTestStandardList = documentTestStandardMapper.selectList(Wrappers.<DocumentTestStandard>lambdaQuery().eq(DocumentTestStandard::getDocBomId,joinDocumentBomRouting_use.getId()).eq(DocumentTestStandard::getRoutingOperationId,routingOperationId));
 
            if(CollectionUtils.isNotEmpty(documentTestStandardList)){
                //一道工序可能会存在多条检测标准
                for(DocumentTestStandard documentTestStandard : documentTestStandardList){
                    MoTestStandard moTestStandard = new MoTestStandard();
                    moTestStandard.setMoRoutingOperationId(moRoutingOperationId);
                    moTestStandard.setStandardNo(documentTestStandard.getStandardNo());
                    moTestStandard.setStandardName(documentTestStandard.getStandardName());
                    moTestStandard.setInspectionType(documentTestStandard.getInspectionType());
                    moTestStandard.setJudgeFormula(documentTestStandard.getJudgeFormula());
                    moTestStandard.setVersion(documentTestStandard.getVersion());
                    moTestStandard.setRemark(documentTestStandard.getRemark());
                    moTestStandard.setMoId(moId);
                    moTestStandard.setRoutingOperationId(routingOperationDTO.getId());
                    moTestStandardMapper.insert(moTestStandard);
                    //创建车间订单检测标准参数
                    moTestStandardMapper.createMoTestParamByDocTestStandardId(moTestStandard.getId(), documentTestStandard.getId());
                }
            }
 
            // 保存抽检规则
            List<DocumentSamplingRule> documentSamplingRules = documentSamplingRuleMapper.selectList(Wrappers.<DocumentSamplingRule>lambdaQuery()
                    .in(DocumentSamplingRule::getDocBomId, joinDocumentBomRoutingList.stream().map(JoinDocumentBomRouting::getId).collect(Collectors.toList()))
                    .eq(DocumentSamplingRule::getRoutingOperationId, routingOperationId));
            if (CollectionUtils.isNotEmpty(documentSamplingRules)) {
                for (DocumentSamplingRule documentSamplingRule : documentSamplingRules) {
                    MoSamplingRule moSamplingRule = BeanUtil.copyProperties(documentSamplingRule, MoSamplingRule.class);
                    moSamplingRule.setMoRoutingOperationId(moRoutingOperationId);
                    moSamplingRule.setMoId(moId);
                    moSamplingRuleMapper.insert(moSamplingRule);
                }
            }
        }
    }
}