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.yuanchu.mom.mapper.SaleMaterialMapper; import com.yuanchu.mom.pojo.Sale; import com.yuanchu.mom.mapper.SaleMapper; import com.yuanchu.mom.pojo.SaleMaterial; import com.yuanchu.mom.pojo.dto.ConsignmentDto1; import com.yuanchu.mom.pojo.dto.ConsignmentDto2; import com.yuanchu.mom.pojo.dto.SaleDto; import com.yuanchu.mom.pojo.dto.SaleMaterialDto; import com.yuanchu.mom.pojo.vo.SaleVo; import com.yuanchu.mom.service.SaleService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 销售单 服务实现类 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2023-08-08 */ @Service public class SaleServiceImpl extends ServiceImpl implements SaleService { @Resource SaleMapper saleMapper; @Resource SaleMaterialMapper saleMaterialMapper; //查询销售单列表 @Override public IPage> selectSaleList(Page page, String orderNumber, String name, Integer type, String delTime) { return saleMapper.selectSaleList(page, orderNumber, name, type, delTime); } //新增销售单 @Override @Transactional(rollbackFor = Exception.class) public String addSale(String saleman, SaleDto saleDto) { Sale sale = new Sale(); BeanUtils.copyProperties(saleDto, sale); sale.setSaleman(saleman); saleMapper.insert(sale); //添加销售产品单 List saleMaterialDtoList = saleDto.getSaleMaterialList(); for (SaleMaterialDto saleMaterialDto : saleMaterialDtoList) { SaleMaterial saleMaterial = new SaleMaterial(); BeanUtils.copyProperties(saleMaterialDto, saleMaterial); saleMaterial.setSaleId(sale.getId()); saleMaterialMapper.insert(saleMaterial); } return "新增成功"; } //根据销售单id查询销售详情 @Override public SaleVo selectSaleDatil(Integer id) { SaleVo saleVo = new SaleVo(); Sale sale = saleMapper.selectById(id); BeanUtils.copyProperties(sale, saleVo); List saleMaterialList = saleMaterialMapper.selectSaleDatil(id);//销售单id List saleMaterialDtoList = saleMaterialList.stream().map(saleMaterial -> { SaleMaterialDto saleMaterialDto = new SaleMaterialDto(); BeanUtils.copyProperties(saleMaterial, saleMaterialDto); return saleMaterialDto; }).collect(Collectors.toList()); saleVo.setSaleMaterialList(saleMaterialDtoList); return saleVo; } //根据销售单id删除 @Override @Transactional(rollbackFor = Exception.class) public void delSale(Integer id) { Sale sale = saleMapper.selectById(id); sale.setState(0); saleMapper.updateById(sale); List saleMaterials = saleMaterialMapper.selectSaleDatil(id); for (SaleMaterial saleMaterial : saleMaterials) { saleMaterial.setState(0); saleMaterialMapper.updateById(saleMaterial); } } //根据id批量删除 @Override @Transactional(rollbackFor = Exception.class) public void delAllSale(List ids) { List sales = saleMapper.selectBatchIds(ids); for (Sale sale : sales) { sale.setState(0); saleMapper.updateById(sale); List saleMaterials = saleMaterialMapper.selectSaleDatil(sale.getId()); for (SaleMaterial saleMaterial : saleMaterials) { saleMaterial.setState(0); saleMaterialMapper.updateById(saleMaterial); } } } //根据销售单id修改信息 @Override @Transactional(rollbackFor = Exception.class) public void updateSaleById(String saleman, Integer id, SaleVo saleVo) { Sale sale = saleMapper.selectById(id); sale.setSaleman(saleman); BeanUtils.copyProperties(saleVo, sale); //更新销售单 saleMapper.updateById(sale); List saleMaterialDtos = saleVo.getSaleMaterialList(); for (SaleMaterialDto saleMaterialDto : saleMaterialDtos) { SaleMaterial saleMaterial = new SaleMaterial(); BeanUtils.copyProperties(saleMaterialDto, saleMaterial); saleMaterialMapper.updateById(saleMaterial); } } //审核 @Override @Transactional(rollbackFor = Exception.class) public void check(String checkname, Integer id, Integer type) { Sale sale = saleMapper.selectById(id); sale.setType(type); sale.setCheckname(checkname); sale.setCheckTime(new Date()); saleMapper.updateById(sale); //审核通过的销售单将销售单中的产品的状态改为待编制0 List saleMaterials = saleMaterialMapper.selectList(Wrappers.query() .eq("sale_id", id) .eq("state", 1)); if (type == 1) { for (SaleMaterial saleMaterial : saleMaterials) { saleMaterial.setType(0); saleMaterialMapper.updateById(saleMaterial); } } } //根据订单号查询销售信息 @Override public ConsignmentDto1 selSale(String orderNumber) { Sale sale = saleMapper.selectOne(Wrappers.query() .eq("order_number", orderNumber) .eq("type", 1) .eq("state", 1)); //查询销售单中产品信息 List saleMaterials = saleMaterialMapper.selectList(Wrappers.query() .eq("sale_id", sale.getId()) .eq("state", 1)); List dto2List = saleMaterials.stream().map(saleMaterial -> { ConsignmentDto2 consignmentDto2 = new ConsignmentDto2(); BeanUtils.copyProperties(saleMaterial, consignmentDto2); return consignmentDto2; }).collect(Collectors.toList()); ConsignmentDto1 consignmentDto1 = ConsignmentDto1.builder() .orderCode(orderNumber) .customerCode(sale.getCode()) .proname(sale.getProname()) .adress(sale.getAdress()) .username(sale.getUsername()) .phone(sale.getPhone()) .messages(dto2List) .build(); return consignmentDto1; } }