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 page = new Page<>(goodsVo.getPage(), goodsVo.getLimit()); // 2. 创建查询条件构造器 QueryWrapper 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 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 queryWrapper = new QueryWrapper<>(); queryWrapper.eq("available", Constast.AVAILABLE_TRUE); List 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 queryWrapper = new QueryWrapper<>(); queryWrapper.eq("available", Constast.AVAILABLE_TRUE); queryWrapper.eq(providerid != null, "providerid", providerid); List 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 = goodsService.loadAllWarning(); return new DataGridView((long) goods.size(), goods); } }