| | |
| | | package com.ruoyi.inventory.service.impl; |
| | | |
| | | import com.ruoyi.inventory.domain.StockIn; |
| | | 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 implements StockInService { |
| | | 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; |
| | | |
| | | @Override//添加库存入库信息 |
| | | public int addStockIn(StockIn stockIn) { |
| | | int i = stockInMapper.insertSelective(stockIn); |
| | | return i; |
| | | |
| | | // 新增方法 |
| | | /** |
| | | * 新增库存入库信息 |
| | | * @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//列出所有库存入库信息 |
| | | public List<StockIn> listStockIns() { |
| | | List<StockIn> stockIns = stockInMapper.selectList(); |
| | | return stockIns; |
| | | @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.selectByPrimaryKey(id); |
| | | StockIn stockIn = stockInMapper.selectById(id); |
| | | return stockIn; |
| | | } |
| | | |
| | | @Override//更新库存入库信息 |
| | | public int updateStockIn(StockIn stockIn) { |
| | | int i = stockInMapper.updateByPrimaryKeySelective(stockIn); |
| | | return i; |
| | | @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 deleteStockIn(Long id) { |
| | | int i = stockInMapper.deleteByPrimaryKey(id); |
| | | return i; |
| | | |
| | | @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; |
| | | } |
| | | } |