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 joinDocumentBomRoutingList = joinDocumentBomRoutingMapper.selectList(Wrappers.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 documentTestStandardList = documentTestStandardMapper.selectList(Wrappers.lambdaQuery().eq(DocumentTestStandard::getDocBomId,joinDocumentBomRouting.getId())); if(CollectionUtils.isNotEmpty(documentTestStandardList)){ joinDocumentBomRouting_use = joinDocumentBomRouting; break;//退出遍历 } } List documentTestStandardList = documentTestStandardMapper.selectList(Wrappers.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 documentSamplingRules = documentSamplingRuleMapper.selectList(Wrappers.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); } } } } }