package com.ruoyi.stock.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.ruoyi.basic.excel.SupplierManageExcelDto;
import com.ruoyi.basic.pojo.SupplierManage;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.stock.dto.ManufacturerDto;
import com.ruoyi.stock.execl.ManufacturerExcelDto;
import com.ruoyi.stock.mapper.ManufacturerMapper;
import com.ruoyi.stock.mapper.StockInventoryMapper;
import com.ruoyi.stock.pojo.Manufacturer;
import com.ruoyi.stock.pojo.StockInventory;
import com.ruoyi.stock.service.ManufacturerService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
*
* 厂商服务实现类
*
*
* @author 芯导软件(江苏)有限公司
* @since 2026-05-28 09:52:35
*/
@Service
@RequiredArgsConstructor
public class ManufacturerServiceImpl extends ServiceImpl implements ManufacturerService {
private final StockInventoryMapper stockInventoryMapper;
private final ManufacturerMapper manufacturerMapper;
/**
* 厂商新增
*/
@Override
@Transactional
public void saveManufacturer(Manufacturer manufacturer) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Manufacturer::getName,manufacturer.getName());
if (baseMapper.selectCount(queryWrapper) > 0) {
throw new RuntimeException("供应商已存在");
}
baseMapper.insert(manufacturer);
}
/**
* 厂商删除
*/
@Override
@Transactional
public int delManufacturer(List ids) {
// 批量检查是否关联库存
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(StockInventory::getManufacturerId, ids);
List inventoryList = stockInventoryMapper.selectList(queryWrapper);
if (!inventoryList.isEmpty()) {
throw new RuntimeException("厂商已关联库存,无法删除");
}
return baseMapper.deleteBatchIds(ids);
}
/**
* 厂商详情
*/
@Override
public Manufacturer manufacturerDetail(Long id) {
return baseMapper.selectById(id);
}
/**
* 厂商修改
*/
@Override
@Transactional
public int manufacturerUpdate(Manufacturer manufacturer) {
return baseMapper.updateById(manufacturer);
}
/**
* 厂商分页查询
*/
@Override
public IPage manufacturerListPage(Page page, ManufacturerDto manufacturerDto) {
return manufacturerMapper.manufacturerListPage(page,manufacturerDto);
}
/**
* 厂商导出
*/
@Override
public void manufacturerExport(HttpServletResponse response, ManufacturerDto manufacturerDto) {
List list = manufacturerMapper.manufacturerExportList(manufacturerDto);
ExcelUtil util = new ExcelUtil<>(ManufacturerExcelDto.class);
util.exportExcel(response, list, "厂商数据");
}
/**
* 厂商导入
*/
@Override
@Transactional
public Boolean importData(MultipartFile file) {
try {
ExcelUtil util = new ExcelUtil<>(Manufacturer.class);
List list = util.importExcel(file.getInputStream());
if (list != null && !list.isEmpty()) {
this.saveBatch(list);
}
return true;
} catch (Exception e) {
log.error("导入失败", e);
return false;
}
}
}