package com.ruoyi.stock.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.R; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.execl.StockInventoryExportData; import com.ruoyi.stock.service.StockInventoryService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.List; /** *

* 库存表 前端控制器 *

* * @author 芯导软件(江苏)有限公司 * @since 2026-01-21 04:16:36 */ @RestController @RequestMapping("/stockInventory") @Tag(name = "库存表") @AllArgsConstructor public class StockInventoryController { private StockInventoryService stockInventoryService; @GetMapping("/pagestockInventory") @Operation(summary = "分页查询库存") public R pagestockInventory(Page page, StockInventoryDto stockInventoryDto) { IPage stockInventoryDtoIPage = stockInventoryService.pagestockInventory(page, stockInventoryDto); return R.ok(stockInventoryDtoIPage); } @GetMapping("/pageListCombinedStockInventory") @Operation(summary = "分页查询联合库存列表") public R pageListCombinedStockInventory(Page page, StockInventoryDto stockInventoryDto) { IPage stockInventoryDtoIPage = stockInventoryService.pageListCombinedStockInventory(page, stockInventoryDto); return R.ok(stockInventoryDtoIPage); } @PostMapping("/addstockInventory") @Operation(summary = "新增库存") public R addstockInventory(@RequestBody StockInventoryDto stockInventoryDto) { stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode())); stockInventoryDto.setRecordId(0L); return R.ok(stockInventoryService.addstockInventory(stockInventoryDto)); } @PostMapping("/subtractStockInventory") @Operation(summary = "扣减库存") public R subtractStockInventory(@RequestBody StockInventoryDto stockInventoryDto) { stockInventoryDto.setRecordType(String.valueOf(StockOutQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_OUT.getCode())); stockInventoryDto.setRecordId(0L); return R.ok(stockInventoryService.subtractStockInventory(stockInventoryDto)); } @PostMapping("/addStockInRecordOnly") @Operation(summary = "新增入库记录(仅创建记录,不调整库存)") public R addStockInRecordOnly(@RequestBody StockInventoryDto stockInventoryDto) { stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode())); stockInventoryDto.setRecordId(0L); return R.ok(stockInventoryService.addStockInRecordOnly(stockInventoryDto)); } @PostMapping("/addStockOutRecordOnly") @Operation(summary = "新增出库记录(仅创建记录,不调整库存)") public R addStockOutRecordOnly(@RequestBody StockInventoryDto stockInventoryDto) { stockInventoryDto.setRecordType(String.valueOf(StockOutQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_OUT.getCode())); stockInventoryDto.setRecordId(0L); return R.ok(stockInventoryService.addStockOutRecordOnly(stockInventoryDto)); } @PostMapping("importStockInventory") @Operation(summary = "导入库存") public R importStockInventory(MultipartFile file) { return stockInventoryService.importStockInventory(file); } @Log(title = "下载库存导入模板", businessType = BusinessType.EXPORT) @PostMapping("/downloadStockInventory") public void downloadStockInventory(HttpServletResponse response) { List list = new ArrayList<>(); ExcelUtil util = new ExcelUtil<>(StockInventoryExportData.class); util.exportExcel(response, list, "库存模板"); } @PostMapping("/exportStockInventory") @Operation(summary = "导出库存") public void exportStockInventory(HttpServletResponse response, StockInventoryDto stockInventoryDto) { stockInventoryService.exportStockInventory(response, stockInventoryDto); } @GetMapping("stockInventoryPage") @Operation(summary = "库存报表查询") public R stockInventoryPage(Page page, StockInventoryDto stockInventoryDto) { return R.ok(stockInventoryService.stockInventoryPage(stockInventoryDto,page)); } @GetMapping("stockInAndOutRecord") @Operation(summary = "统计各个产品的入库和出库记录") public R stockInAndOutRecord(StockInventoryDto stockInventoryDto,Page page) { return R.ok(stockInventoryService.stockInAndOutRecord(stockInventoryDto,page)); } @PostMapping("/frozenStock") @Operation(summary = "冻结库存") public R frozenStock(@RequestBody StockInventoryDto stockInventoryDto) { return R.ok(stockInventoryService.frozenStock(stockInventoryDto)); } @PostMapping("/thawStock") @Operation(summary = "解冻库存") public R thawStock(@RequestBody StockInventoryDto stockInventoryDto) { return R.ok(stockInventoryService.thawStock(stockInventoryDto)); } @GetMapping("/getByModelId") @Operation(summary = "根据产品规格ID获取入库记录") public R getByModelId(Long productModelId) { return R.ok(stockInventoryService.getByModelId(productModelId)); } }