You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
warehouse/src/main/java/com/yeqifu/bus/controller/GoodsController.java

191 lines
7.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.yeqifu.bus.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; // MyBatis-Plus的查询条件构造器
import com.baomidou.mybatisplus.core.metadata.IPage; // MyBatis-Plus的分页接口
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // MyBatis-Plus的分页实现类
import com.yeqifu.bus.entity.Goods; // 商品实体类
import com.yeqifu.bus.entity.Provider; // 供应商实体类
import com.yeqifu.bus.service.IGoodsService; // 商品服务接口
import com.yeqifu.bus.service.IProviderService; // 供应商服务接口
import com.yeqifu.bus.vo.GoodsVo; // 商品的VO类用于封装请求参数
import com.yeqifu.sys.common.AppFileUtils; // 文件工具类,用于操作图片
import com.yeqifu.sys.common.Constast; // 常量类
import com.yeqifu.sys.common.DataGridView; // 用于封装表格数据的类
import com.yeqifu.sys.common.ResultObj; // 封装操作结果的类
import org.apache.commons.lang3.StringUtils; // 字符串工具类
import org.springframework.beans.factory.annotation.Autowired; // 自动注入注解
import org.springframework.web.bind.annotation.RequestMapping; // 请求映射注解
import org.springframework.web.bind.annotation.RestController; // RESTful控制器注解
import java.util.List; // List集合类
/**
* 商品管理的前端控制器
* 提供商品的增删改查以及相关查询功能
* @author luoyi-
* @since 2019-12-06
*/
@RestController // 标记为RESTful控制器
@RequestMapping("/goods") // 定义请求路径前缀为"/goods"
public class GoodsController {
@Autowired
private IGoodsService goodsService; // 自动注入商品服务
@Autowired
private IProviderService providerService; // 自动注入供应商服务
/**
* 分页查询商品信息
* @param goodsVo 封装商品查询条件和分页参数
* @return 包含商品列表和总记录数的DataGridView
*/
@RequestMapping("loadAllGoods")
public DataGridView loadAllGoods(GoodsVo goodsVo) {
// 1. 创建分页对象
IPage<Goods> page = new Page<>(goodsVo.getPage(), goodsVo.getLimit());
// 2. 创建查询条件构造器
QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(goodsVo.getProviderid() != null && goodsVo.getProviderid() != 0, "providerid", goodsVo.getProviderid());
queryWrapper.like(StringUtils.isNotBlank(goodsVo.getGoodsname()), "goodsname", goodsVo.getGoodsname());
queryWrapper.like(StringUtils.isNotBlank(goodsVo.getProductcode()), "productcode", goodsVo.getProductcode());
queryWrapper.like(StringUtils.isNotBlank(goodsVo.getPromitcode()), "promitcode", goodsVo.getPromitcode());
queryWrapper.like(StringUtils.isNotBlank(goodsVo.getDescription()), "description", goodsVo.getDescription());
queryWrapper.like(StringUtils.isNotBlank(goodsVo.getSize()), "size", goodsVo.getSize());
queryWrapper.orderByDesc("id"); // 按照ID降序排列
// 3. 执行分页查询
goodsService.page(page, queryWrapper);
List<Goods> records = page.getRecords();
for (Goods goods : records) {
// 根据供应商ID设置供应商名称
Provider provider = providerService.getById(goods.getProviderid());
if (provider != null) {
goods.setProvidername(provider.getProvidername());
}
}
// 返回分页数据
return new DataGridView(page.getTotal(), page.getRecords());
}
/**
* 添加商品
* @param goodsVo 包含商品信息
* @return 操作结果
*/
@RequestMapping("addGoods")
public ResultObj addGoods(GoodsVo goodsVo) {
try {
if (goodsVo.getGoodsimg() != null && goodsVo.getGoodsimg().endsWith("_temp")) {
// 重命名临时图片为正式图片
String newName = AppFileUtils.renameFile(goodsVo.getGoodsimg());
goodsVo.setGoodsimg(newName);
}
// 保存商品信息
goodsService.save(goodsVo);
return ResultObj.ADD_SUCCESS; // 返回成功结果
} catch (Exception e) {
e.printStackTrace();
return ResultObj.ADD_ERROR; // 返回失败结果
}
}
/**
* 修改商品信息
* @param goodsVo 包含商品修改信息
* @return 操作结果
*/
@RequestMapping("updateGoods")
public ResultObj updateGoods(GoodsVo goodsVo) {
try {
// 如果商品图片不是默认图片
if (goodsVo.getGoodsimg() != null && !goodsVo.getGoodsimg().equals(Constast.DEFAULT_IMG_GOODS)) {
if (goodsVo.getGoodsimg().endsWith("_temp")) {
// 重命名临时图片
String newName = AppFileUtils.renameFile(goodsVo.getGoodsimg());
goodsVo.setGoodsimg(newName);
// 删除原图片文件
String oldPath = goodsService.getById(goodsVo.getId()).getGoodsimg();
AppFileUtils.removeFileByPath(oldPath);
}
}
// 更新商品信息
goodsService.updateById(goodsVo);
return ResultObj.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.UPDATE_ERROR;
}
}
/**
* 删除商品
* @param id 商品ID
* @param goodsimg 商品图片路径
* @return 操作结果
*/
@RequestMapping("deleteGoods")
public ResultObj deleteGoods(Integer id, String goodsimg) {
try {
// 删除商品图片
AppFileUtils.removeFileByPath(goodsimg);
// 删除商品记录
goodsService.deleteGoodsById(id);
return ResultObj.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.DELETE_ERROR;
}
}
/**
* 加载所有可用商品
* @return 包含商品列表的DataGridView
*/
@RequestMapping("loadAllGoodsForSelect")
public DataGridView loadAllGoodsForSelect() {
QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
List<Goods> list = goodsService.list(queryWrapper);
for (Goods goods : list) {
// 设置供应商名称
Provider provider = providerService.getById(goods.getProviderid());
if (provider != null) {
goods.setProvidername(provider.getProvidername());
}
}
return new DataGridView(list);
}
/**
* 根据供应商ID查询商品信息
* @param providerid 供应商ID
* @return 包含商品列表的DataGridView
*/
@RequestMapping("loadGoodsByProviderId")
public DataGridView loadGoodsByProviderId(Integer providerid) {
QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
queryWrapper.eq(providerid != null, "providerid", providerid);
List<Goods> list = goodsService.list(queryWrapper);
for (Goods goods : list) {
// 设置供应商名称
Provider provider = providerService.getById(goods.getProviderid());
if (provider != null) {
goods.setProvidername(provider.getProvidername());
}
}
return new DataGridView(list);
}
/**
* 加载所有库存预警的商品
* @return 包含预警商品列表的DataGridView
*/
@RequestMapping("loadAllWarningGoods")
public DataGridView loadAllWarningGoods() {
List<Goods> goods = goodsService.loadAllWarning();
return new DataGridView((long) goods.size(), goods);
}
}