package com.yeqifu.bus.controller; // 声明类所在的包 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; // 导入QueryWrapper类,用于构建查询条件 import com.baomidou.mybatisplus.core.metadata.IPage; // 导入IPage接口,用于分页功能 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入Page类,用于创建分页对象 import com.yeqifu.bus.entity.Customer; // 导入Customer实体类,表示客户信息 import com.yeqifu.bus.entity.Goods; // 导入Goods实体类,表示商品信息 import com.yeqifu.bus.entity.Salesback; // 导入Salesback实体类,表示销售退货信息 import com.yeqifu.bus.service.ICustomerService; // 导入ICustomerService接口,用于处理客户业务逻辑 import com.yeqifu.bus.service.IGoodsService; // 导入IGoodsService接口,用于处理商品业务逻辑 import com.yeqifu.bus.service.ISalesbackService; // 导入ISalesbackService接口,用于处理销售退货业务逻辑 import com.yeqifu.bus.vo.SalesbackVo; // 导入SalesbackVo类,用于封装查询参数 import com.yeqifu.sys.common.DataGridView; // 导入DataGridView类,用于返回表格数据 import com.yeqifu.sys.common.ResultObj; // 导入ResultObj类,用于统一返回操作结果 import org.springframework.beans.factory.annotation.Autowired; // 导入@Autowired注解,用于自动注入服务对象 import org.springframework.web.bind.annotation.RequestMapping; // 导入@RequestMapping注解,用于映射请求路径 import org.springframework.web.bind.annotation.RestController; // 导入@RestController注解,标识该类为REST控制器 import java.util.List; // 导入Java集合类List,用于处理列表数据 /** * 销售退货控制器类 * 负责处理与销售退货相关的请求 */ @RestController // 标识该类为REST风格的控制器 @RequestMapping("/salesback") // 将类的基础URL路径映射为"/salesback" public class SalesbackController { @Autowired // 自动注入ISalesbackService接口的实现类 private ISalesbackService salesbackService; @Autowired // 自动注入ICustomerService接口的实现类 private ICustomerService customerService; @Autowired // 自动注入IGoodsService接口的实现类 private IGoodsService goodsService; /** * 添加退货信息 * @param id 退货的销售单ID * @param number 退货数量 * @param remark 备注信息 * @return 返回操作结果 */ @RequestMapping("addSalesback") // 映射URL路径为"/salesback/addSalesback" public ResultObj addSalesback(Integer id, Integer number, String remark) { try { salesbackService.addSalesback(id, number, remark); // 调用服务层方法添加退货记录 return ResultObj.BACKINPORT_SUCCESS; // 返回退货成功的结果对象 } catch (Exception e) { e.printStackTrace(); // 打印异常信息 return ResultObj.BACKINPORT_ERROR; // 返回退货失败的结果对象 } } /** * 查询商品销售退货记录 * @param salesbackVo 封装查询参数的对象 * @return 返回表格数据 */ @RequestMapping("loadAllSalesback") // 映射URL路径为"/salesback/loadAllSalesback" public DataGridView loadAllSalesback(SalesbackVo salesbackVo) { IPage page = new Page<>(salesbackVo.getPage(), salesbackVo.getLimit()); // 创建分页对象,指定当前页和每页记录数 QueryWrapper queryWrapper = new QueryWrapper<>(); // 创建QueryWrapper对象,用于构建查询条件 queryWrapper.eq(salesbackVo.getCustomerid() != null && salesbackVo.getCustomerid() != 0, "customerid", salesbackVo.getCustomerid()); // 如果客户ID不为空且不为0,添加客户ID的查询条件 queryWrapper.eq(salesbackVo.getGoodsid() != null && salesbackVo.getGoodsid() != 0, "goodsid", salesbackVo.getGoodsid()); // 如果商品ID不为空且不为0,添加商品ID的查询条件 queryWrapper.ge(salesbackVo.getStartTime() != null, "salesbacktime", salesbackVo.getStartTime()); // 如果开始时间不为空,添加大于等于开始时间的查询条件 queryWrapper.le(salesbackVo.getEndTime() != null, "salesbacktime", salesbackVo.getEndTime()); // 如果结束时间不为空,添加小于等于结束时间的查询条件 queryWrapper.orderByDesc("salesbacktime"); // 按照退货时间降序排列 salesbackService.page(page, queryWrapper); // 调用服务层分页查询方法,获取分页数据 List records = page.getRecords(); // 获取分页记录列表 for (Salesback salesback : records) { // 遍历退货记录列表 Customer customer = customerService.getById(salesback.getCustomerid()); // 根据退货记录中的客户ID查询客户信息 if (customer != null) { salesback.setCustomername(customer.getCustomername()); // 如果客户信息存在,设置客户名称 } Goods goods = goodsService.getById(salesback.getGoodsid()); // 根据退货记录中的商品ID查询商品信息 if (goods != null) { salesback.setGoodsname(goods.getGoodsname()); // 如果商品信息存在,设置商品名称 salesback.setSize(goods.getSize()); // 设置商品规格 } } return new DataGridView(page.getTotal(), page.getRecords()); // 返回DataGridView对象,包含总记录数和分页记录列表 } /** * 删除商品销售退货记录 * @param id 要删除的退货记录ID * @return 返回操作结果 */ @RequestMapping("deleteSalesback") // 映射URL路径为"/salesback/deleteSalesback" public ResultObj deleteSalesback(Integer id) { try { salesbackService.removeById(id); // 调用服务层方法,根据ID删除退货记录 return ResultObj.DELETE_SUCCESS; // 返回删除成功的结果对象 } catch (Exception e) { e.printStackTrace(); // 打印异常信息 return ResultObj.DELETE_ERROR; // 返回删除失败的结果对象 } } }