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);
|
}
|
}
|
}
|
}
|
}
|