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.dto.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 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 public String addSale(String saleman,SaleDto saleDto) { Sale sale = new Sale(); BeanUtils.copyProperties(saleDto,sale); sale.setSaleman(saleman); saleMapper.insert(sale); //如果saleMaterialList有值,需要添加销售产品单 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 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 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 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 saleMaterials = saleMaterialMapper.selectSaleDatil(id); for (SaleMaterial saleMaterial : saleMaterials) { List saleMaterialDtos = saleVo.getSaleMaterialList(); for (SaleMaterialDto saleMaterialDto : saleMaterialDtos) { BeanUtils.copyProperties(saleMaterialDto,saleMaterial); //更新销售产品单 saleMaterialMapper.updateById(saleMaterial); } } } //审核 @Override 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); } //根据订单号查询销售信息 @Override public ConsignmentDto1 selSale(String orderNumber) { Sale sale = saleMapper.selectOne(Wrappers.query().eq("order_number", orderNumber)); List saleMaterials = saleMaterialMapper.selectList(Wrappers.query().eq("sale_id", sale.getId())); 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; } }