package com.yuanchu.mom.service.impl; 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.*; import com.yuanchu.mom.pojo.*; import com.yuanchu.mom.service.ManufactureOrderService; import com.yuanchu.mom.service.OrdersService; import com.yuanchu.mom.utils.MyUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; import java.util.Map; /** * 订单(Order)表服务实现类 * * @author zss * @since 2023-07-31 11:57:44 */ @Service("orderService") public class OrdersServiceImpl implements OrdersService { @Resource SaleMapper saleMapper; @Resource SaleMaterialMapper saleMaterialMapper; @Resource ManufactureOrderMapper manufactureOrderMapper; @Resource ManualTechnologyMapper manualTechnologyMapper; @Resource SpecificationsMapper specificationsMapper; @Resource TechnologyMapper technologyMapper; //查询所有订单列表 @Override public IPage> selectAllOrder(Page 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[] split = manufactureOrder.getSpecifications().split("-"); Specifications specifications = specificationsMapper.selectOne(Wrappers.query().eq("name", split[1])); List technologyList = technologyMapper.selectList(Wrappers.query().eq("specifications_id", specifications.getId())); for (Technology technology : technologyList) { ManualTechnology manualTechnology = ManualTechnology.builder() .techname(technology.getName()) .techfather(technology.getFather()) .deviceGroup(technology.getDeviceGroup()) .manufactureOrderId(manufactureOrder.getId()) .period((int) Math.ceil((double)manufactureOrder.getNumber()/technology.getProductionQuota())) .build(); //新增编制工序表 manualTechnologyMapper.insert(manualTechnology); } } }