|
|
|
@ -1,184 +1,219 @@
|
|
|
|
|
package com.yeqifu.bus.controller;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
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;
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
// 导入必要的类和注解
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; // 用于条件查询的封装器
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; // 分页结果封装类
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 分页类
|
|
|
|
|
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; // 商品视图对象
|
|
|
|
|
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; // REST 控制器注解
|
|
|
|
|
|
|
|
|
|
import java.util.List; // Java 集合类
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <p>
|
|
|
|
|
* InnoDB free: 9216 kB; (`providerid`) REFER `warehouse/bus_provider`(`id`) 前端控制器
|
|
|
|
|
* </p>
|
|
|
|
|
*
|
|
|
|
|
* @author luoyi-
|
|
|
|
|
* @since 2019-12-06
|
|
|
|
|
* 商品管理控制器
|
|
|
|
|
* 提供了对商品的查询、添加、修改、删除等功能
|
|
|
|
|
*/
|
|
|
|
|
@RestController
|
|
|
|
|
@RequestMapping("/goods")
|
|
|
|
|
@RestController // 标注为 REST 控制器,返回 JSON 数据
|
|
|
|
|
@RequestMapping("/goods") // 设置请求路径的统一前缀
|
|
|
|
|
public class GoodsController {
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
@Autowired // 自动注入商品服务
|
|
|
|
|
private IGoodsService goodsService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
@Autowired // 自动注入供应商服务
|
|
|
|
|
private IProviderService providerService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询商品
|
|
|
|
|
* @param goodsVo
|
|
|
|
|
* @return
|
|
|
|
|
* 查询商品信息
|
|
|
|
|
* @param goodsVo 商品视图对象,封装了查询条件
|
|
|
|
|
* @return 返回分页的商品信息
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("loadAllGoods")
|
|
|
|
|
public DataGridView loadAllGoods(GoodsVo goodsVo){
|
|
|
|
|
IPage<Goods> page = new Page<Goods>(goodsVo.getPage(),goodsVo.getLimit());
|
|
|
|
|
@RequestMapping("loadAllGoods") // 请求映射到 /goods/loadAllGoods
|
|
|
|
|
public DataGridView loadAllGoods(GoodsVo goodsVo) {
|
|
|
|
|
// 创建分页对象,指定当前页和每页大小
|
|
|
|
|
IPage<Goods> page = new Page<Goods>(goodsVo.getPage(), goodsVo.getLimit());
|
|
|
|
|
|
|
|
|
|
// 构造查询条件
|
|
|
|
|
QueryWrapper<Goods> queryWrapper = new QueryWrapper<Goods>();
|
|
|
|
|
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");
|
|
|
|
|
goodsService.page(page,queryWrapper);
|
|
|
|
|
queryWrapper.eq(goodsVo.getProviderid() != null && goodsVo.getProviderid() != 0, "providerid", goodsVo.getProviderid()); // 按供应商 ID 查询
|
|
|
|
|
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 降序排序
|
|
|
|
|
|
|
|
|
|
// 执行分页查询
|
|
|
|
|
goodsService.page(page, queryWrapper);
|
|
|
|
|
|
|
|
|
|
// 获取查询结果
|
|
|
|
|
List<Goods> records = page.getRecords();
|
|
|
|
|
for (Goods goods : records) {
|
|
|
|
|
// 根据商品的供应商 ID 查询供应商信息,并设置供应商名称
|
|
|
|
|
Provider provider = providerService.getById(goods.getProviderid());
|
|
|
|
|
if (null!=provider){
|
|
|
|
|
if (provider != null) {
|
|
|
|
|
goods.setProvidername(provider.getProvidername());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return new DataGridView(page.getTotal(),page.getRecords());
|
|
|
|
|
|
|
|
|
|
// 返回分页数据和商品记录
|
|
|
|
|
return new DataGridView(page.getTotal(), page.getRecords());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 添加商品
|
|
|
|
|
* @param goodsVo
|
|
|
|
|
* @return
|
|
|
|
|
* @param goodsVo 商品视图对象
|
|
|
|
|
* @return 返回操作结果
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("addGoods")
|
|
|
|
|
public ResultObj addGoods(GoodsVo goodsVo){
|
|
|
|
|
@RequestMapping("addGoods") // 请求映射到 /goods/addGoods
|
|
|
|
|
public ResultObj addGoods(GoodsVo goodsVo) {
|
|
|
|
|
try {
|
|
|
|
|
System.out.println("====================================");
|
|
|
|
|
System.out.println(goodsVo.getGoodsimg());
|
|
|
|
|
if (goodsVo.getGoodsimg()!=null&&goodsVo.getGoodsimg().endsWith("_temp")){
|
|
|
|
|
System.out.println(goodsVo.getGoodsimg()); // 打印上传的商品图片路径
|
|
|
|
|
|
|
|
|
|
// 如果上传的图片路径是临时文件,则重命名为正式文件
|
|
|
|
|
if (goodsVo.getGoodsimg() != null && goodsVo.getGoodsimg().endsWith("_temp")) {
|
|
|
|
|
String newName = AppFileUtils.renameFile(goodsVo.getGoodsimg());
|
|
|
|
|
goodsVo.setGoodsimg(newName);
|
|
|
|
|
goodsVo.setGoodsimg(newName); // 更新图片路径
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 保存商品信息
|
|
|
|
|
goodsService.save(goodsVo);
|
|
|
|
|
|
|
|
|
|
// 返回添加成功的结果
|
|
|
|
|
return ResultObj.ADD_SUCCESS;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
return ResultObj.ADD_ERROR;
|
|
|
|
|
e.printStackTrace(); // 打印异常堆栈信息
|
|
|
|
|
return ResultObj.ADD_ERROR; // 返回添加失败的结果
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 修改商品
|
|
|
|
|
* @param goodsVo
|
|
|
|
|
* @return
|
|
|
|
|
* @param goodsVo 商品视图对象
|
|
|
|
|
* @return 返回操作结果
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("updateGoods")
|
|
|
|
|
public ResultObj updateGoods(GoodsVo goodsVo){
|
|
|
|
|
@RequestMapping("updateGoods") // 请求映射到 /goods/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());
|
|
|
|
|
// 如果商品图片不是默认图片,则处理图片路径
|
|
|
|
|
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;
|
|
|
|
|
e.printStackTrace(); // 打印异常堆栈信息
|
|
|
|
|
return ResultObj.UPDATE_ERROR; // 返回更新失败的结果
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除商品
|
|
|
|
|
* @param id 商品id
|
|
|
|
|
* @return
|
|
|
|
|
* @param id 商品 ID
|
|
|
|
|
* @param goodsimg 商品图片路径
|
|
|
|
|
* @return 返回操作结果
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("deleteGoods")
|
|
|
|
|
public ResultObj deleteGoods(Integer id,String goodsimg){
|
|
|
|
|
@RequestMapping("deleteGoods") // 请求映射到 /goods/deleteGoods
|
|
|
|
|
public ResultObj deleteGoods(Integer id, String goodsimg) {
|
|
|
|
|
try {
|
|
|
|
|
//删除商品的图片
|
|
|
|
|
// 删除商品的图片文件
|
|
|
|
|
AppFileUtils.removeFileByPath(goodsimg);
|
|
|
|
|
// goodsService.removeById(id);
|
|
|
|
|
|
|
|
|
|
// 删除商品信息
|
|
|
|
|
goodsService.deleteGoodsById(id);
|
|
|
|
|
|
|
|
|
|
// 返回删除成功的结果
|
|
|
|
|
return ResultObj.DELETE_SUCCESS;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
return ResultObj.DELETE_ERROR;
|
|
|
|
|
e.printStackTrace(); // 打印异常堆栈信息
|
|
|
|
|
return ResultObj.DELETE_ERROR; // 返回删除失败的结果
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 加载所有可用的商品
|
|
|
|
|
* @return
|
|
|
|
|
* @return 返回所有可用商品的信息
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("loadAllGoodsForSelect")
|
|
|
|
|
public DataGridView loadAllGoodsForSelect(){
|
|
|
|
|
@RequestMapping("loadAllGoodsForSelect") // 请求映射到 /goods/loadAllGoodsForSelect
|
|
|
|
|
public DataGridView loadAllGoodsForSelect() {
|
|
|
|
|
// 构造查询条件,仅查询状态为可用的商品
|
|
|
|
|
QueryWrapper<Goods> queryWrapper = new QueryWrapper<Goods>();
|
|
|
|
|
queryWrapper.eq("available",Constast.AVAILABLE_TRUE);
|
|
|
|
|
queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
|
|
|
|
|
|
|
|
|
|
// 查询商品列表
|
|
|
|
|
List<Goods> list = goodsService.list(queryWrapper);
|
|
|
|
|
for (Goods goods : list) {
|
|
|
|
|
// 设置供应商名称
|
|
|
|
|
Provider provider = providerService.getById(goods.getProviderid());
|
|
|
|
|
if (null!=provider){
|
|
|
|
|
if (provider != null) {
|
|
|
|
|
goods.setProvidername(provider.getProvidername());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 返回商品列表
|
|
|
|
|
return new DataGridView(list);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据供应商ID查询商品信息
|
|
|
|
|
* @param providerid 供应商ID
|
|
|
|
|
* @return
|
|
|
|
|
* 根据供应商 ID 查询商品信息
|
|
|
|
|
* @param providerid 供应商 ID
|
|
|
|
|
* @return 返回该供应商的商品信息
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("loadGoodsByProviderId")
|
|
|
|
|
public DataGridView loadGoodsByProviderId(Integer providerid){
|
|
|
|
|
@RequestMapping("loadGoodsByProviderId") // 请求映射到 /goods/loadGoodsByProviderId
|
|
|
|
|
public DataGridView loadGoodsByProviderId(Integer providerid) {
|
|
|
|
|
// 构造查询条件,仅查询状态为可用的商品
|
|
|
|
|
QueryWrapper<Goods> queryWrapper = new QueryWrapper<Goods>();
|
|
|
|
|
queryWrapper.eq("available",Constast.AVAILABLE_TRUE);
|
|
|
|
|
queryWrapper.eq(providerid!=null,"providerid",providerid);
|
|
|
|
|
queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
|
|
|
|
|
queryWrapper.eq(providerid != null, "providerid", providerid); // 按供应商 ID 查询
|
|
|
|
|
|
|
|
|
|
// 查询商品列表
|
|
|
|
|
List<Goods> list = goodsService.list(queryWrapper);
|
|
|
|
|
for (Goods goods : list) {
|
|
|
|
|
// 设置供应商名称
|
|
|
|
|
Provider provider = providerService.getById(goods.getProviderid());
|
|
|
|
|
if (null!=provider){
|
|
|
|
|
if (provider != null) {
|
|
|
|
|
goods.setProvidername(provider.getProvidername());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 返回商品列表
|
|
|
|
|
return new DataGridView(list);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping("loadAllWarningGoods")
|
|
|
|
|
public DataGridView loadAllWarningGoods(){
|
|
|
|
|
/**
|
|
|
|
|
* 查询所有库存预警的商品
|
|
|
|
|
* @return 返回库存预警商品的信息
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping("loadAllWarningGoods") // 请求映射到 /goods/loadAllWarningGoods
|
|
|
|
|
public DataGridView loadAllWarningGoods() {
|
|
|
|
|
// 查询所有库存预警的商品
|
|
|
|
|
List<Goods> goods = goodsService.loadAllWarning();
|
|
|
|
|
return new DataGridView((long) goods.size(),goods);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 返回预警商品的数量和列表
|
|
|
|
|
return new DataGridView((long) goods.size(), goods);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|