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/OutportController.java

215 lines
14 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;
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.Outport;
import com.yeqifu.bus.entity.Provider;
import com.yeqifu.bus.service.IGoodsService;
import com.yeqifu.bus.service.IOutportService;
import com.yeqifu.bus.service.IProviderService;
import com.yeqifu.bus.vo.OutportVo;
import com.yeqifu.sys.common.DataGridView;
import com.yeqifu.sys.common.ResultObj;
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;
/**
* <p>
* InnoDB free: 9216 kB 前端控制器
* </p>
*
* @author luoyi-
* @since 2019-12-19
*/
@RestController
@RequestMapping("/outport")
public class OutportController {
@Autowired
private IOutportService outportService;
@Autowired
private IProviderService providerService;
@Autowired
private IGoodsService goodsService;
/**
* 添加退货信息
* @param id 进货单ID
* @param number 退货数量
* @param remark 备注
* @return
*/
@RequestMapping("addOutport")
public ResultObj addOutport(Integer id,Integer number,String remark){
try {
outportService.addOutport(id,number,remark);
return ResultObj.BACKINPORT_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.BACKINPORT_ERROR;
}
}
/**t
* 查询商品退货
* @param outportVo
* @return
*/
@RequestMapping("loadAllOutport")
public DataGridView loadAllOuport(OutportVo outportVo){
IPage<Outport> page = new Page<Outport>(outportVo.getPage(),outportVo.getLimit());
QueryWrapper<Outport> queryWrapper = new QueryWrapper<Outport>();
//对供应商进行查询
queryWrapper.eq(outportVo.getProviderid()!=null&&outportVo.getProviderid()!=0,"providerid",outportVo.getProviderid());
//对商品进行查询
queryWrapper.eq(outportVo.getGoodsid()!=null&&outportVo.getGoodsid()!=0,"goodsid",outportVo.getGoodsid());
//对时间进行查询要求大于开始时间小于结束时间
queryWrapper.ge(outportVo.getStartTime()!=null,"outputtime",outportVo.getStartTime());
queryWrapper.le(outportVo.getEndTime()!=null,"outputtime",outportVo.getEndTime());
//通过进货时间对商品进行排序
queryWrapper.orderByDesc("outputtime");
IPage<Outport> page1 = outportService.page(page, queryWrapper);
List<Outport> records = page1.getRecords();
for (Outport ouport : records) {
Provider provider = providerService.getById(ouport.getProviderid());
if (provider!=null){
//设置供应商姓名
ouport.setProvidername(provider.getProvidername());
}
Goods goods = goodsService.getById(ouport.getGoodsid());
if (goods!=null){
//设置商品名称
ouport.setGoodsname(goods.getGoodsname());
//设置商品规格
ouport.setSize(goods.getSize());
}
}
return new DataGridView(page1.getTotal(),page1.getRecords());
}
/**
* 删除退货信息
* @param id
* @return
*/
@RequestMapping("deleteOutport")
public ResultObj deleteOutport(Integer id){
try {
outportService.removeById(id);
return ResultObj.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.DELETE_ERROR;
}
}
}
// OutportController类使用了@RestController注解表明这是一个Spring框架中的RESTful风格的控制器类
// 用于处理与商品退货Outport相关的HTTP请求并将处理结果以JSON等格式返回给客户端通常是前端页面是连接前端与后端业务逻辑的重要环节。
// 同时通过@RequestMapping("/outport")注解,为该控制器下的所有请求映射路径设置了一个公共的前缀"/outport"方便对相关的API进行统一管理和区分。
// 使用@Autowired注解自动注入IOutportService接口的实现类对象用于调用与商品退货相关的业务逻辑方法
// 例如添加退货信息、分页查询退货记录、删除退货信息等操作,具体的业务实现是在对应的服务层接口实现类中完成的,这里只是进行调用触发相应逻辑。
// 同样通过@Autowired注解注入IProviderService接口的实现类对象用于获取供应商相关的业务服务
// 在查询商品退货信息时会借助该服务根据供应商ID查询供应商详细信息以便补充到退货记录中展示更完整的数据。
// 注入IGoodsService接口的实现类对象用于获取商品相关的业务服务在查询商品退货信息时通过该服务依据商品ID查询商品详情如名称、规格等
// 然后将这些商品相关信息设置到退货记录中,使返回给前端的数据更加丰富全面,方便前端展示和业务操作。
/**
* 添加退货信息
* @param id 进货单ID用于明确此次退货操作是针对哪一笔进货业务进行的是关联到具体进货记录的关键标识由前端传入。
* @param number 退货数量,指定了要退回商品的具体数量,这个数量信息对于后续更新库存、统计退货数据等业务操作至关重要,同样由前端传入。
* @param remark 备注,用于记录一些额外的关于此次退货的相关情况说明,比如退货原因(是商品质量问题、数量不符还是其他原因等)、特殊的退货协商结果等内容,也是由前端传入。
* @return 返回一个ResultObj类型的结果对象ResultObj中定义了诸如BACKINPORT_SUCCESS、BACKINPORT_ERROR等枚举值用于明确表示添加退货信息操作的成功或失败状态以便前端根据返回结果进行相应提示或处理。
*/
// 调用outportService的addOutport方法将前端传入的进货单ID、退货数量和备注信息传递过去触发服务层的添加退货信息业务逻辑
// 该逻辑可能涉及到更新库存、在数据库中插入退货记录、处理与财务等相关模块的数据交互等一系列复杂操作,如果操作顺利完成则无异常抛出,若过程中出现问题(比如数据库操作失败、业务规则校验不通过等)则会抛出异常。
// 如果在添加退货信息过程中出现异常打印异常堆栈信息方便开发人员排查问题根源然后返回表示添加退货信息失败的ResultObj.BACKINPORT_ERROR结果对象给前端
// 使得前端能够知晓操作未成功,进而进行相应的提示告知用户或者采取其他补救措施等。
/**
* 查询商品退货
* @param outportVo 这是一个封装了查询条件的对象通常包含分页相关信息如页码、每页显示数量以及其他筛选条件如供应商ID、商品ID、时间范围等由前端传入方便在后端统一处理各种查询需求。
* @return 返回一个DataGridView对象该对象一般是项目中自定义用于封装数据展示相关信息的这里面包含了查询到的商品退货记录的总数量以及具体的退货记录列表方便前端进行分页展示和数据处理等操作。
*/
// 创建一个IPage对象用于实现分页功能通过传入从outportVo对象中获取的当前页码outportVo.getPage()和每页显示记录数量outportVo.getLimit())来确定分页范围,
// 例如当页码为2且每页显示数量为10时表示要获取第2页每页显示10条商品退货记录的那部分数据方便对大量退货记录进行分页展示提升前端展示和用户查看数据的体验。
// 创建一个QueryWrapper对象用于构建查询条件类似于构建SQL语句中的WHERE子句部分方便灵活地添加各种筛选条件来精确查询符合要求的商品退货记录。
// 对供应商进行查询如果outportVo对象中获取的供应商IDoutportVo.getProviderid()不为空且不等于0说明前端传入了供应商筛选条件
// 则添加一个相等性查询条件,在数据库表中对应"providerid"字段查找与传入的供应商ID相等的退货记录以此实现按供应商筛选退货信息的功能。
// 对商品进行查询同理当outportVo对象中获取的商品IDoutportVo.getGoodsid()不为空且不等于0时表明前端传入了商品筛选条件
// 就在数据库表的"goodsid"字段添加相等性查询条件查找与传入商品ID匹配的退货记录便于根据具体商品来查询其退货情况。
// 对时间进行查询要求大于开始时间小于结束时间当outportVo对象中的开始时间outportVo.getStartTime()不为空时添加一个大于等于ge的查询条件
// 在数据库表的"outputtime"字段推测是退货时间字段筛选出退货时间大于等于传入的开始时间的退货记录同样当结束时间outportVo.getEndTime())不为空时,
// 添加一个小于等于le的查询条件筛选出退货时间小于等于传入的结束时间的退货记录这样就能获取到处于指定时间范围内的商品退货信息方便按时间区间进行数据查询和统计分析等操作。
// 通过进货时间对商品进行排序,添加一个按照"outputtime"字段(退货时间)进行降序排序的条件,使得查询返回的退货记录按照退货时间从近到远的顺序排列,
// 这样在前端展示时,用户能先看到较新的退货记录,更符合一般的数据查看习惯,方便查看和分析近期的退货情况。
// 调用outportService的page方法传入构建好的分页对象page和查询条件包装器queryWrapper服务层会根据这些条件执行数据库查询操作
// 获取符合条件的商品退货数据并将数据填充到page对象中例如设置page对象中的总记录数、当前页的记录列表等属性最终返回填充好数据的page对象赋值给page1。
// 获取查询结果中当前页的退货记录列表,方便后续对每条记录进行补充相关信息的操作,比如添加供应商名称、商品名称和规格等,使返回给前端的数据更加完整详细。
// 遍历当前页查询到的每条商品退货记录,为每条记录补充供应商名称、商品名称和规格等信息,使其展示的数据更加丰富全面,方便前端展示和业务查看使用。
// 通过providerService的getById方法根据当前退货记录中的供应商IDouport.getProviderid()从数据库中查询对应的供应商详细信息获取到一个Provider对象如果存在的话
// 如果查询到了对应的供应商信息将供应商的名称设置到当前退货记录ouport以便前端展示退货记录时能同时显示供应商名称让数据更直观、完整。
// 通过goodsService的getById方法依据当前退货记录中的商品IDouport.getGoodsid()从数据库中查询对应的商品详细信息获取到一个Goods对象若存在的话
// 如果查询到了商品信息将商品的名称设置到当前退货记录ouport方便前端展示退货记录时能呈现商品名称使数据更具可读性。
// 同时将商品的规格信息也设置到当前退货记录ouport进一步丰富退货记录展示的数据内容便于业务操作和查看详细情况。
// 创建一个DataGridView对象将查询得到的商品退货记录的总数量通过page1.getTotal()获取以及当前页补充完整信息后的退货记录列表page1.getRecords())进行封装,
// 最终返回给前端,使得前端能够按照分页逻辑展示商品退货信息,并且展示的数据包含了丰富的关联信息(供应商名称、商品名称和规格等),满足业务查看和操作的需求。
/**
* 删除退货信息
* @param id 要删除的退货记录的唯一标识符通常是主键ID由前端传入通过这个ID来确定要从数据库中删除的具体退货记录。
* @return 返回一个ResultObj类型的结果对象ResultObj中定义了如DELETE_SUCCESS、DELETE_ERROR等枚举值用于表示删除退货信息操作的成功或失败状态方便前端根据返回结果进行相应处理或提示用户。
*/
// 调用outportService的removeById方法传入要删除的退货记录的ID服务层会根据这个ID在数据库中找到对应的退货记录并执行删除操作
// 如果删除操作顺利完成则无异常抛出,若出现问题(比如存在关联数据、违反数据库约束等)则会抛出异常。
// 如果在删除退货信息过程中出现异常打印异常堆栈信息便于开发人员排查问题然后返回表示删除操作失败的ResultObj.DELETE_ERROR结果对象给前端
// 让前端知晓删除操作未成功,以便采取相应的提示或其他处理措施。