zss
2023-09-15 cd5b5908546c3d6c98e7aec607af8db1f8565495
inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
@@ -14,13 +14,13 @@
import com.yuanchu.mom.pojo.vo.SaleVo;
import com.yuanchu.mom.service.SaleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.vo.Result;
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.*;
import java.util.stream.Collectors;
/**
@@ -43,21 +43,22 @@
    //查询销售单列表
    @Override
    public IPage<Map<String, Object>> selectSaleList(Page<Object> page, String orderNumber, String name, Integer type, String delTime) {
        return saleMapper.selectSaleList(page,orderNumber,name,type,delTime);
        return saleMapper.selectSaleList(page, orderNumber, name, type, delTime);
    }
    //新增销售单
    @Override
    public String addSale(String saleman,SaleDto saleDto) {
    @Transactional(rollbackFor = Exception.class)
    public String addSale(String saleman, SaleDto saleDto) {
        Sale sale = new Sale();
        BeanUtils.copyProperties(saleDto,sale);
        BeanUtils.copyProperties(saleDto, sale);
        sale.setSaleman(saleman);
        saleMapper.insert(sale);
        //添加销售产品单
        List<SaleMaterialDto> saleMaterialDtoList = saleDto.getSaleMaterialList();
        for (SaleMaterialDto saleMaterialDto : saleMaterialDtoList) {
            SaleMaterial saleMaterial = new SaleMaterial();
            BeanUtils.copyProperties(saleMaterialDto,saleMaterial);
            BeanUtils.copyProperties(saleMaterialDto, saleMaterial);
            saleMaterial.setSaleId(sale.getId());
            saleMaterialMapper.insert(saleMaterial);
        }
@@ -69,7 +70,7 @@
    public SaleVo selectSaleDatil(Integer id) {
        SaleVo saleVo = new SaleVo();
        Sale sale = saleMapper.selectById(id);
        BeanUtils.copyProperties(sale,saleVo);
        BeanUtils.copyProperties(sale, saleVo);
        List<SaleMaterial> saleMaterialList = saleMaterialMapper.selectSaleDatil(id);//销售单id
        List<SaleMaterialDto> saleMaterialDtoList = saleMaterialList.stream().map(saleMaterial -> {
            SaleMaterialDto saleMaterialDto = new SaleMaterialDto();
@@ -82,6 +83,7 @@
    //根据销售单id删除
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void delSale(Integer id) {
        Sale sale = saleMapper.selectById(id);
        sale.setState(0);
@@ -95,60 +97,76 @@
    //根据id批量删除
    @Override
    public void delAllSale(List<Integer> ids) {
        List<Sale> sales = saleMapper.selectBatchIds(ids);
        for (Sale sale : sales) {
            sale.setState(0);
            saleMapper.updateById(sale);
            List<SaleMaterial> saleMaterials = saleMaterialMapper.selectSaleDatil(sale.getId());
            for (SaleMaterial saleMaterial : saleMaterials) {
                saleMaterial.setState(0);
                saleMaterialMapper.updateById(saleMaterial);
            }
        }
    @Transactional(rollbackFor = Exception.class)
    public void delAllSale(String ids) {
        //批量删除销售单
        saleMapper.delAllSale(ids);
        //批量删除销售产品单
        saleMaterialMapper.delAllSale(ids);
    }
    //根据销售单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<SaleMaterial> saleMaterials = saleMaterialMapper.selectSaleDatil(id);
        for (SaleMaterial saleMaterial : saleMaterials) {
            List<SaleMaterialDto> saleMaterialDtos = saleVo.getSaleMaterialList();
            for (SaleMaterialDto saleMaterialDto : saleMaterialDtos) {
                BeanUtils.copyProperties(saleMaterialDto,saleMaterial);
                //更新销售产品单
                saleMaterialMapper.updateById(saleMaterial);
    @Transactional(rollbackFor = Exception.class)
    public String updateSaleById(String saleman, Integer id, SaleVo saleVo) {
        //校验,同一个产品的规格型号不能相同
        List<SaleMaterialDto> saleMaterialList = saleVo.getSaleMaterialList();
        // 使用哈希集合来判断是否存在相同字段值组合
        Set<String> seen = new HashSet<>();
        for (SaleMaterialDto saleMaterial: saleMaterialList) {
            String key = saleMaterial.getName() + "," + saleMaterial.getSpecifications();
            if (seen.contains(key)) {
                return "同一个产品的规格型号不能相同";
            } else {
                seen.add(key);
            }
        }
        Sale sale = saleMapper.selectById(id);
        sale.setSaleman(saleman);
        BeanUtils.copyProperties(saleVo, sale);
        //更新销售单
        saleMapper.updateById(sale);
        List<SaleMaterialDto> saleMaterialDtos = saleVo.getSaleMaterialList();
        for (SaleMaterialDto saleMaterialDto : saleMaterialDtos) {
            SaleMaterial saleMaterial = new SaleMaterial();
            BeanUtils.copyProperties(saleMaterialDto, saleMaterial);
            saleMaterialMapper.updateById(saleMaterial);
        }
        return "修改成功!";
    }
    //审核
    @Override
    public void check(String checkname,Integer id,Integer type) {
    @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());
        if (type==1) {
            //如果审核通过
            sale.setBianzhiState(1);
        }else {
            //如果审核不通过
            sale.setBianzhiState(null);
        }
        saleMapper.updateById(sale);
        //审核通过的销售单将销售单中的产品的状态改为待编制0
        List<SaleMaterial> saleMaterials = saleMaterialMapper.selectList(Wrappers.<SaleMaterial>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.<Sale>query().eq("order_number", orderNumber));
        List<SaleMaterial> saleMaterials = saleMaterialMapper.selectList(Wrappers.<SaleMaterial>query().eq("sale_id", sale.getId()));
        Sale sale = saleMapper.selectOne(Wrappers.<Sale>query()
                .eq("order_number", orderNumber)
                .eq("type", 1)
                .eq("state", 1));
        //查询销售单中产品信息
        List<SaleMaterial> saleMaterials = saleMaterialMapper.selectList(Wrappers.<SaleMaterial>query()
                .eq("sale_id", sale.getId())
                .eq("state", 1));
        List<ConsignmentDto2> dto2List = saleMaterials.stream().map(saleMaterial -> {
            ConsignmentDto2 consignmentDto2 = new ConsignmentDto2();
            BeanUtils.copyProperties(saleMaterial, consignmentDto2);