| | |
| | | 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.mom.mapper.SaleMapper; |
| | | import com.yuanchu.mom.service.OrdersService; |
| | | import com.yuanchu.mom.mapper.*; |
| | | import com.yuanchu.mom.pojo.*; |
| | | 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)表服务实现类 |
| | |
| | | * @since 2023-07-31 11:57:44 |
| | | */ |
| | | @Service("orderService") |
| | | public class OrdersServiceImpl implements OrdersService { |
| | | public class OrdersServiceImpl implements OrdersService { |
| | | |
| | | @Resource |
| | | SaleMapper saleMapper; |
| | | |
| | | @Resource |
| | | MaterialMapper materialMapper; |
| | | |
| | | @Resource |
| | | StandardService standardService; |
| | | |
| | | @Resource |
| | | SpecificationsService specificationsService; |
| | | |
| | | @Resource |
| | | SaleMaterialMapper saleMaterialMapper; |
| | | |
| | | @Resource |
| | | ManufactureOrderMapper manufactureOrderMapper; |
| | | |
| | | @Resource |
| | | ManualTechnologyService manualTechnologyService; |
| | | |
| | | @Resource |
| | | TechnologyMapper technologyMapper; |
| | | |
| | | @Resource |
| | | ProductMapper productMapper; |
| | | |
| | | @Resource |
| | | MbomMapper mbomMapper; |
| | | |
| | | @Resource |
| | | ManualProductService manualProductService; |
| | | |
| | | @Resource |
| | | ManualMbomService manualMbomService; |
| | | |
| | | |
| | | //查询所有订单列表 |
| | | @Override |
| | | public IPage<Map<String, Object>> selectAllOrder(Page<Object> page, String orderCode, String name, Integer type , String time) { |
| | | return saleMapper.selectAllOrder(page, orderCode,name,type, time); |
| | | public IPage<Map<String, Object>> selectAllOrder(Page<Object> page, String orderCode, String name, Integer type, String time) { |
| | | return saleMapper.selectAllOrder(page, orderCode, name, type, time); |
| | | } |
| | | |
| | | //编制订单BOM |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void compile(Integer id) { |
| | | /*更改订单BOM的状态为已编制1*/ |
| | | SaleMaterial saleMaterial = saleMaterialMapper.selectById(id); |
| | | saleMaterial.setType(1); |
| | | saleMaterialMapper.updateById(saleMaterial); |
| | | /*新增生产订单+编制工序*/ |
| | | //查询订单信息 |
| | | Sale sale = saleMapper.selectById(saleMaterial.getSaleId()); |
| | | ManufactureOrder manufactureOrder = ManufactureOrder.builder() |
| | | .orderCode(sale.getOrderNumber()) |
| | | .customerCode(sale.getCode()) |
| | | .proname(sale.getProname()) |
| | | .saleman(sale.getSaleman()) |
| | | .name(saleMaterial.getName()) |
| | | .specifications(saleMaterial.getSpecifications()) |
| | | .unit(saleMaterial.getUnit()) |
| | | .number(saleMaterial.getNumber()) |
| | | .downtime(sale.getCreateTime()) |
| | | .deltime(sale.getDelTime()) |
| | | .qualityTraceability(MyUtil.getTimeSixNumberCode("GPT", "GPT")) |
| | | .downman(sale.getOrderName()) |
| | | .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); |
| | | /*正序查询该型号最新版本下的工艺路线*/ |
| | | 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()) //生产订单id |
| | | .productionQuota(technology.getProductionQuota()) //生产效率 |
| | | .technologyId(technology.getId()) //标准bom中工艺路线id |
| | | .build(); |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | /*根据样品名称,样品编号,型号规格获取型号id*/ |
| | | private Integer getSpecificationId(String name, String mcode, String specification) { |
| | | //获取物料id |
| | | Material material = materialMapper.selectOne(Wrappers.<Material>query() |
| | | .eq("name", name) |
| | | .eq("code", mcode)); |
| | | if (Objects.isNull(material)) { |
| | | return null; |
| | | } |
| | | //获取规格名称和型号名称 |
| | | String[] split = specification.split("-"); |
| | | String stName = split[0]; |
| | | String spName = split[1]+split[2]; |
| | | //获取规格id |
| | | Standard standard = standardService.getOne(Wrappers.<Standard>query() |
| | | .eq("name", stName) |
| | | .eq("material_id", material.getId())); |
| | | //获取型号id |
| | | Specifications specifications = specificationsService.getOne(Wrappers.<Specifications>query() |
| | | .eq("name", spName) |
| | | .eq("standard_id", standard.getId())); |
| | | return specifications.getId(); |
| | | } |
| | | |
| | | } |