package com.ruoyi.inventory.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.basic.mapper.SupplierManageMapper;
|
import com.ruoyi.basic.pojo.SupplierManage;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.inventory.dto.StockManagementDto;
|
import com.ruoyi.inventory.excel.StockManagementExcelDto;
|
import com.ruoyi.inventory.mapper.StockManagementMapper;
|
import com.ruoyi.inventory.mapper.StockOutMapper;
|
import com.ruoyi.inventory.pojo.StockManagement;
|
import com.ruoyi.inventory.pojo.StockOut;
|
import com.ruoyi.inventory.service.StockManagementService;
|
import com.ruoyi.purchase.dto.ProductRecordDto;
|
import com.ruoyi.purchase.mapper.ProductRecordMapper;
|
import com.ruoyi.purchase.pojo.ProductRecord;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service
|
public class StockManagementServiceImpl extends ServiceImpl<StockManagementMapper,StockManagement> implements StockManagementService {
|
@Autowired
|
private StockManagementMapper stockManagementMapper;
|
@Autowired
|
private StockOutMapper stockOutMapper;
|
@Autowired
|
private ProductRecordMapper productRecordMapper;
|
@Autowired
|
private SupplierManageMapper supplierManageMapper;
|
|
|
|
@Override
|
public int updateStockManagement(StockManagement stockManagement) {
|
return stockManagementMapper.updateById(stockManagement);
|
}
|
|
@Override
|
public int delStockManage(List<Integer> ids) {
|
return stockManagementMapper.deleteBatchIds(ids);
|
}
|
|
|
@Override
|
public IPage<StockManagement> selectStockManagePage(Page page, StockManagementDto stockManagementdto) {
|
return stockManagementMapper.selectStockManagementBypage(page, stockManagementdto);
|
}
|
|
@Override
|
public void stockManageExport(HttpServletResponse response, StockManagementDto stockManagementdto) {
|
List<StockManagementExcelDto> stockManageList = stockManagementMapper.stockManageExportList(stockManagementdto);
|
ExcelUtil<StockManagementExcelDto> util = new ExcelUtil<StockManagementExcelDto>(StockManagementExcelDto.class);
|
util.exportExcel(response, stockManageList, "库存导出");
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public int stockout(StockManagement stockManagement) {
|
// 在前端其实就穿了3个数,数量,出库人,时间,只需要进行判断,库存数量是否足够即可,有三种情况
|
StockOut stockOut = new StockOut();
|
LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(StockManagement::getId, stockManagement.getId());
|
StockManagement stockManagement1 = stockManagementMapper.selectOne(queryWrapper);
|
if (stockManagement1.getStockQuantity() < stockManagement.getStockQuantity()) {
|
throw new RuntimeException("库存数量不足");
|
} else if (stockManagement1.getStockQuantity() > stockManagement.getStockQuantity()) {
|
stockManagement1.setStockQuantity(stockManagement1.getStockQuantity() - stockManagement.getStockQuantity());
|
stockManagementMapper.updateById(stockManagement1);
|
}
|
else {
|
stockManagementMapper.deleteById(stockManagement.getId());
|
}
|
stockOut.setProductrecordId(stockManagement1.getProductrecordId());
|
stockOut.setInboundTime(stockManagement.getBoundTime());
|
// 出库批次自动生成
|
String batchCode = "CK" + System.currentTimeMillis();
|
stockOut.setInboundBatch(batchCode);
|
stockOut.setSupplierId(stockManagement1.getSupplierId());
|
stockOut.setInboundQuantity(stockManagement.getStockQuantity());
|
stockOut.setUserId(stockManagement.getUserId());
|
return stockOutMapper.insert(stockOut);
|
}
|
|
// 添加库存方法
|
@Override
|
public int addStockManage(StockManagement stockManagement) {
|
// 需要先判断采购记录表中是否有该产品的采购记录
|
LambdaQueryWrapper<ProductRecord> queryWrapper1 = new LambdaQueryWrapper<>();
|
queryWrapper1.eq(ProductRecord::getId, stockManagement.getProductrecordId());
|
ProductRecord productRecord = productRecordMapper.selectOne(queryWrapper1);
|
ProductRecordDto productRecordDto = productRecordMapper.selectProductRecordById(productRecord.getId());
|
if (productRecordDto!= null) {
|
stockManagement.setProductrecordId(productRecordDto.getId());
|
stockManagement.setBoundTime(stockManagement.getBoundTime());
|
stockManagement.setSupplierId(productRecordDto.getSupplierId());
|
stockManagement.setStockQuantity(stockManagement.getStockQuantity());
|
stockManagement.setUserId(stockManagement.getUserId());
|
return stockManagementMapper.insert(stockManagement);
|
}else {
|
throw new RuntimeException("采购记录表中没有该产品的采购记录");
|
}
|
}
|
|
@Override
|
public StockManagement getStockManageById(Long id) {
|
return stockManagementMapper.selectById(id);
|
}
|
|
|
}
|