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.StockinDto;
|
import com.ruoyi.inventory.excel.StockInExcelDto;
|
import com.ruoyi.inventory.mapper.StockManagementMapper;
|
import com.ruoyi.inventory.pojo.StockIn;
|
import com.ruoyi.inventory.mapper.StockInMapper;
|
import com.ruoyi.inventory.pojo.StockManagement;
|
import com.ruoyi.inventory.service.StockInService;
|
import com.ruoyi.purchase.dto.ProductRecordDto;
|
import com.ruoyi.purchase.dto.PurchaseLedgerDto;
|
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.Arrays;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service
|
public class StockInServiceImpl extends ServiceImpl<StockInMapper,StockIn> implements StockInService {
|
@Autowired
|
private StockInMapper stockInMapper;
|
@Autowired
|
private StockManagementMapper stockManagementMapper;
|
@Autowired
|
private ProductRecordMapper productRecordMapper;
|
@Autowired
|
private SupplierManageMapper supplierManageMapper;
|
|
|
// 新增方法
|
/**
|
* 新增库存入库信息
|
* @param stockIn
|
*/
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
//
|
public void saveStockin(StockIn stockIn) {
|
//需要先判断采购记录表中是否有该产品的采购记录
|
// 根据产品id查询采购记录表
|
ProductRecordDto productRecordDto = productRecordMapper.selectProductRecordById(stockIn.getProductrecordId());
|
if (productRecordDto != null) {
|
// 添加入库记录和库存管理记录
|
stockIn.setInboundTime(new Date());
|
// 自动生成批次码
|
String batchCode = "RK" + System.currentTimeMillis();
|
stockIn.setInboundBatch(batchCode);
|
stockIn.setSupplierId(productRecordDto.getSupplierId());
|
|
stockInMapper.insert(stockIn);
|
// 在库存管理表中添加库存管理记录
|
StockManagement stockManagement = new StockManagement();
|
stockManagement.setProductrecordId(productRecordDto.getId());
|
stockManagement.setStockQuantity(stockIn.getInboundQuantity());
|
stockManagement.setInboundTime(stockIn.getInboundTime());
|
stockManagement.setInboundBatch(stockIn.getInboundBatch());
|
stockManagement.setUserId(stockIn.getUserId());
|
stockManagement.setSupplierId(productRecordDto.getSupplierId());
|
stockManagement.setBoundTime(stockIn.getInboundTime());
|
stockManagementMapper.insert(stockManagement);
|
}else {
|
throw new RuntimeException("采购记录表中没有该产品的采购记录");
|
}
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void batchSaveStockin(List<StockIn> stockInList) {
|
if (stockInList == null || stockInList.isEmpty()) {
|
throw new RuntimeException("入库列表不能为空");
|
}
|
Date currentTime = new Date();
|
for (StockIn stockIn : stockInList) {
|
// 根据产品id查询采购记录表
|
ProductRecordDto productRecordDto = productRecordMapper.selectProductRecordById(stockIn.getProductrecordId());
|
if (productRecordDto == null) {
|
throw new RuntimeException("采购记录表中没有产品ID为" + stockIn.getProductrecordId() + "的采购记录");
|
}
|
// 设置入库时间和批次码
|
stockIn.setInboundTime(currentTime);
|
String batchCode = "RK" + System.currentTimeMillis() + "-" + stockIn.getProductrecordId();
|
stockIn.setInboundBatch(batchCode);
|
stockIn.setSupplierId(productRecordDto.getSupplierId());
|
// 添加入库记录
|
stockInMapper.insert(stockIn);
|
// 在库存管理表中添加库存管理记录
|
StockManagement stockManagement = new StockManagement();
|
stockManagement.setProductrecordId(productRecordDto.getId());
|
stockManagement.setStockQuantity(stockIn.getInboundQuantity());
|
stockManagement.setInboundTime(stockIn.getInboundTime());
|
stockManagement.setInboundBatch(stockIn.getInboundBatch());
|
stockManagement.setUserId(stockIn.getUserId());
|
stockManagement.setSupplierId(productRecordDto.getSupplierId());
|
stockManagement.setBoundTime(stockIn.getInboundTime());
|
stockManagementMapper.insert(stockManagement);
|
}
|
}
|
|
@Override//根据id获取库存入库信息
|
public StockIn getStockInById(Long id) {
|
StockIn stockIn = stockInMapper.selectById(id);
|
return stockIn;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void updateStockIn(StockIn stockIn) {
|
// 需要先判断采购记录表中是否有该产品的采购记录
|
LambdaQueryWrapper<ProductRecord> queryWrapper1 = new LambdaQueryWrapper<>();
|
queryWrapper1.eq(ProductRecord::getId, stockIn.getProductrecordId());
|
ProductRecord productRecord = productRecordMapper.selectOne(queryWrapper1);
|
if (productRecord!= null) {
|
stockIn.setInboundTime(stockIn.getInboundTime());
|
stockInMapper.updateById(stockIn);
|
} else {
|
throw new RuntimeException("采购记录表中没有该产品的采购记录");
|
}
|
}
|
|
|
@Override
|
public int delStockin(List<Integer> ids) {
|
LambdaQueryWrapper<StockIn> delWrapper = new LambdaQueryWrapper<>();
|
delWrapper.in(StockIn::getId, ids);
|
return stockInMapper.delete(delWrapper);
|
}
|
|
@Override
|
public IPage<StockIn> selectStockInPage(Page page, StockinDto stockinDto) {
|
System.out.println(stockinDto);
|
IPage<StockIn> stockinDtoIPage = stockInMapper.selectStockInWithProductInfo(page, stockinDto);
|
System.out.println(stockinDtoIPage.getRecords());
|
return stockInMapper.selectStockInWithProductInfo(page, stockinDto);
|
}
|
|
@Override
|
public void stockinExport(HttpServletResponse response, StockinDto stockinDto) {
|
List<StockInExcelDto> stockInExcelDtoList = stockInMapper.stockinExportList(stockinDto);
|
ExcelUtil<StockInExcelDto> util = new ExcelUtil<StockInExcelDto>(StockInExcelDto.class);
|
util.exportExcel(response, stockInExcelDtoList, "供应商导出");
|
}
|
|
@Override
|
public int addstockin(List<StockIn> stockIns) {
|
for (StockIn stockIn : stockIns) {
|
saveStockin(stockIn);
|
}
|
return 1;
|
}
|
}
|