XiaoRuby
2023-09-24 20956b0f05f81ca47cf6c3e8f9b3b426e9cfd035
inventory-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java
@@ -1,21 +1,22 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.mapper.*;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.service.OrdersService;
import com.yuanchu.mom.service.SpecificationsService;
import com.yuanchu.mom.service.StandardService;
import com.yuanchu.mom.service.*;
import com.yuanchu.mom.utils.MyUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * 订单(Order)表服务实现类
@@ -45,13 +46,22 @@
    ManufactureOrderMapper manufactureOrderMapper;
    @Resource
    ManualTechnologyMapper manualTechnologyMapper;
    @Resource
    SpecificationsMapper specificationsMapper;
    ManualTechnologyService manualTechnologyService;
    @Resource
    TechnologyMapper technologyMapper;
    @Resource
    ProductMapper productMapper;
    @Resource
    MbomMapper mbomMapper;
    @Resource
    ManualProductService manualProductService;
    @Resource
    ManualMbomService manualMbomService;
    //查询所有订单列表
@@ -87,27 +97,66 @@
                .build();
        //新增生产订单
        manufactureOrderMapper.insert(manufactureOrder);
        //查询产品的最新工序
        //产品编码
        String code = materialMapper.selMcode(manufactureOrder.getName());
        //型号id
        Integer specificationId = getSpecificationId(manufactureOrder.getName(), code, manufactureOrder.getSpecifications());
        //默认最新版本
        Integer version = technologyMapper.selectVerByTec(specificationId).get(0);
        List<Technology> technologyList = technologyMapper.selectList(Wrappers.<Technology>query()
                .eq("specifications_id", specificationId)
                .eq("version", version));
        for (Technology technology : technologyList) {
        /*正序查询该型号最新版本下的工艺路线*/
        LambdaQueryWrapper<Technology> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Technology::getSpecificationsId,specificationId);
        queryWrapper.eq(Technology::getVersion,version);
        queryWrapper.orderByAsc(Technology::getFather);
        List<Technology> technologyList = technologyMapper.selectList(queryWrapper);
        List<ManualTechnology> manualTechnologyList = technologyList.stream().map(technology -> {
            ManualTechnology manualTechnology = ManualTechnology.builder()
                    .techname(technology.getName())
                    .techfather(technology.getFather())
                    .deviceGroup(technology.getDeviceGroup())
                    .manufactureOrderId(manufactureOrder.getId())
                    .productionQuota(technology.getProductionQuota())
                    .technologyId(technology.getId())
                    .techname(technology.getName()) //工艺
                    .techfather(technology.getFather()) //工序
                    .deviceGroup(technology.getDeviceGroup()) //生产设备组
                    .manufactureOrderId(manufactureOrder.getId()) //生产订单id
                    .productionQuota(technology.getProductionQuota()) //生产效率
                    .technologyId(technology.getId()) //标准bom中工艺路线id
                    .build();
            //新增编制工序表
            manualTechnologyMapper.insert(manualTechnology);
            return manualTechnology;
        }).collect(Collectors.toList());
        /*新增编制工艺表*/
        manualTechnologyService.saveBatch(manualTechnologyList);
        //根据标准bom的工艺路线id查询标准bom中的技术指标
        for (ManualTechnology manualTechnology : manualTechnologyList) {
            List<Product> productList = productMapper.selProByVerSpe(manualTechnology.getTechnologyId());
            List<ManualProduct> manualProducts = new ArrayList<>();
            for (Product product : productList) {
                ManualProduct manualProduct = ManualProduct.builder()
                        .manualTechnologyId(manualTechnology.getId()) //关联 生产订单id
                        .name(product.getName())
                        .father(product.getFather())
                        .unit(product.getUnit())
                        .required(product.getRequired())
                        .internal(product.getInternal())
                        .build();
                manualProducts.add(manualProduct);
            }
            /*新增编制技术指标表*/
            manualProductService.saveBatch(manualProducts);
        }
        //根据标准bom的工艺路线id查询标准bom中的物料清单
        for (ManualTechnology manualTechnology : manualTechnologyList) {
            List<Mbom> mbomList = mbomMapper.selectList(Wrappers.<Mbom>query().eq("technology_id",manualTechnology.getTechnologyId()));
            List<ManualMbom> manualMboms = new ArrayList<>();
            for (Mbom mbom : mbomList) {
                ManualMbom manualMbom = ManualMbom.builder()
                        .manualTechnologyId(manualTechnology.getId()) //关联 生产订单id
                        .name(mbom.getName())
                        .unit(mbom.getUnit())
                        .num(mbom.getNum())
                        .qualityTraceability(mbom.getQualityTraceability())
                        .specifications(mbom.getSpecifications())
                        .build();
                manualMboms.add(manualMbom);
            }
            /*新增编制物料清单表*/
            manualMbomService.saveBatch(manualMboms);
        }
    }
@@ -123,7 +172,7 @@
        //获取规格名称和型号名称
        String[] split = specification.split("-");
        String stName = split[0];
        String spName = split[1];
        String spName = split[1]+split[2];
        //获取规格id
        Standard standard = standardService.getOne(Wrappers.<Standard>query()
                .eq("name", stName)