diff --git a/src/main/java/com/yeqifu/WarehouseApplication.java b/src/main/java/com/yeqifu/WarehouseApplication.java index d16f794..f3529a7 100644 --- a/src/main/java/com/yeqifu/WarehouseApplication.java +++ b/src/main/java/com/yeqifu/WarehouseApplication.java @@ -1,39 +1,44 @@ -package com.yeqifu; +package com.yeqifu; // 定义该类所在的包路径 -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.servlet.MultipartConfigFactory; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.util.unit.DataSize; +import org.mybatis.spring.annotation.MapperScan; // 导入 MyBatis 的 @MapperScan 注解,用于扫描 Mapper 接口 +import org.springframework.boot.SpringApplication; // 导入 Spring Boot 的 SpringApplication 类,用于启动 Spring Boot 应用 +import org.springframework.boot.autoconfigure.SpringBootApplication; // 导入 Spring Boot 的 @SpringBootApplication 注解,表示该类是 Spring Boot 应用的入口 +import org.springframework.boot.web.servlet.MultipartConfigFactory; // 导入 MultipartConfigFactory,用于配置文件上传的相关设置 +import org.springframework.context.annotation.Bean; // 导入 Spring 的 @Bean 注解,用于注册 Bean 到 Spring 容器 +import org.springframework.context.annotation.Configuration; // 导入 Spring 的 @Configuration 注解,用于标记该类为配置类 +import org.springframework.util.unit.DataSize; // 导入 DataSize 类,用于处理文件大小的单位转换 -import javax.servlet.MultipartConfigElement; +import javax.servlet.MultipartConfigElement; // 导入 MultipartConfigElement 类,用于配置文件上传的限制 /** * @author luoyi- */ -@Configuration -@SpringBootApplication -@MapperScan(basePackages = {"com.yeqifu.*.mapper"}) +@Configuration // 标注该类是配置类 +@SpringBootApplication // 标注该类为 Spring Boot 应用的启动类 +@MapperScan(basePackages = {"com.yeqifu.*.mapper"}) // 扫描指定包路径下的 Mapper 接口 public class WarehouseApplication { public static void main(String[] args) { + // 启动 Spring Boot 应用 SpringApplication.run(WarehouseApplication.class, args); } @Bean public MultipartConfigElement multipartConfigElement() { + // 创建 MultipartConfigFactory 实例 MultipartConfigFactory factory = new MultipartConfigFactory(); + /** - * 单个数据大小 + * 设置单个上传文件的最大大小,单位为 KB */ - factory.setMaxFileSize(DataSize.parse("102400KB")); + factory.setMaxFileSize(DataSize.parse("102400KB")); // 设置单个文件最大大小为 102400KB + /** - * 总上传数据大小6 + * 设置请求中所有上传文件的总大小限制,单位为 KB */ - factory.setMaxRequestSize(DataSize.parse("102400KB")); + factory.setMaxRequestSize(DataSize.parse("102400KB")); // 设置总上传大小为 102400KB + + // 创建并返回 MultipartConfigElement 实例 return factory.createMultipartConfig(); } - } diff --git a/src/main/java/com/yeqifu/bus/cache/BusinessCacheAspect.java b/src/main/java/com/yeqifu/bus/cache/BusinessCacheAspect.java index 0a4ceee..472414b 100644 --- a/src/main/java/com/yeqifu/bus/cache/BusinessCacheAspect.java +++ b/src/main/java/com/yeqifu/bus/cache/BusinessCacheAspect.java @@ -1,236 +1,184 @@ package com.yeqifu.bus.cache; -import com.yeqifu.bus.entity.Customer; -import com.yeqifu.bus.entity.Goods; -import com.yeqifu.sys.cache.CachePool; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.springframework.beans.BeanUtils; -import org.springframework.context.annotation.EnableAspectJAutoProxy; -import org.springframework.stereotype.Component; - -import java.io.Serializable; -import java.util.Collection; -import java.util.Map; +import com.yeqifu.bus.entity.Customer; // 导入客户实体类 +import com.yeqifu.bus.entity.Goods; // 导入商品实体类 +import com.yeqifu.sys.cache.CachePool; // 导入缓存池类 +import org.apache.commons.logging.Log; // 导入日志接口 +import org.apache.commons.logging.LogFactory; // 导入日志工厂类 +import org.aspectj.lang.ProceedingJoinPoint; // 导入连接点类 +import org.aspectj.lang.annotation.Around; // 导入环绕通知注解 +import org.aspectj.lang.annotation.Aspect; // 导入切面注解 +import org.springframework.beans.BeanUtils; // 导入属性拷贝工具类 +import org.springframework.context.annotation.EnableAspectJAutoProxy; // 导入自动代理注解 +import org.springframework.stereotype.Component; // 导入组件注解 + +import java.io.Serializable; // 导入序列化接口 +import java.util.Collection; // 导入集合接口 +import java.util.Map; // 导入Map接口 /** * @Author: 落亦- * @Date: 2019/12/5 16:39 + * 业务缓存切面类 */ -@Aspect -@Component -@EnableAspectJAutoProxy +@Aspect // 声明这是一个切面类 +@Component // 注册为Spring组件 +@EnableAspectJAutoProxy // 开启AOP代理 public class BusinessCacheAspect { /** - * 日志出处 + * 日志对象 */ private Log log = LogFactory.getLog(BusinessCacheAspect.class); /** * 声明一个缓存容器 */ - private Map CACHE_CONTAINER = CachePool.CACHE_CONTAINER; - + private Map CACHE_CONTAINER = CachePool.CACHE_CONTAINER; /** - * 声明客户的切面表达式 + * 客户相关的切面表达式 */ - private static final String POINTCUT_CUSTOMER_ADD="execution(* com.yeqifu.bus.service.impl.CustomerServiceImpl.save(..))"; - private static final String POINTCUT_CUSTOMER_UPDATE="execution(* com.yeqifu.bus.service.impl.CustomerServiceImpl.updateById(..))"; - private static final String POINTCUT_CUSTOMER_GET="execution(* com.yeqifu.bus.service.impl.CustomerServiceImpl.getById(..))"; - private static final String POINTCUT_CUSTOMER_DELETE="execution(* com.yeqifu.bus.service.impl.CustomerServiceImpl.removeById(..))"; - private static final String POINTCUT_CUSTOMER_BATCHDELETE="execution(* com.yeqifu.bus.service.impl.CustomerServiceImpl.removeByIds(..))"; + private static final String POINTCUT_CUSTOMER_ADD = "execution(* com.yeqifu.bus.service.impl.CustomerServiceImpl.save(..))"; // 添加客户切点 + private static final String POINTCUT_CUSTOMER_UPDATE = "execution(* com.yeqifu.bus.service.impl.CustomerServiceImpl.updateById(..))"; // 更新客户切点 + private static final String POINTCUT_CUSTOMER_GET = "execution(* com.yeqifu.bus.service.impl.CustomerServiceImpl.getById(..))"; // 获取客户切点 + private static final String POINTCUT_CUSTOMER_DELETE = "execution(* com.yeqifu.bus.service.impl.CustomerServiceImpl.removeById(..))"; // 删除客户切点 + private static final String POINTCUT_CUSTOMER_BATCHDELETE = "execution(* com.yeqifu.bus.service.impl.CustomerServiceImpl.removeByIds(..))"; // 批量删除客户切点 - private static final String CACHE_CUSTOMER_PROFIX="customer:"; + private static final String CACHE_CUSTOMER_PROFIX = "customer:"; // 客户缓存前缀 /** - * 添加客户切入 - * @param joinPoint - * @return + * 添加客户时的切入逻辑 + * @param joinPoint 连接点 + * @return 操作结果 */ - @Around(value = POINTCUT_CUSTOMER_ADD) + @Around(value = POINTCUT_CUSTOMER_ADD) // 环绕通知 public Object cacheCustomerAdd(ProceedingJoinPoint joinPoint) throws Throwable { - //取出第一个参数 - Customer object = (Customer) joinPoint.getArgs()[0]; - Boolean res = (Boolean) joinPoint.proceed(); - if (res){ - CACHE_CONTAINER.put(CACHE_CUSTOMER_PROFIX + object.getId(),object); + Customer object = (Customer) joinPoint.getArgs()[0]; // 获取方法参数(客户对象) + Boolean res = (Boolean) joinPoint.proceed(); // 执行目标方法 + if (res) { + CACHE_CONTAINER.put(CACHE_CUSTOMER_PROFIX + object.getId(), object); // 添加到缓存 } - return res; + return res; // 返回结果 } /** - * 查询客户切入 - * @param joinPoint - * @return + * 查询客户时的切入逻辑 + * @param joinPoint 连接点 + * @return 客户对象 */ @Around(value = POINTCUT_CUSTOMER_GET) public Object cacheCustomerGet(ProceedingJoinPoint joinPoint) throws Throwable { - //取出第一个参数 - Integer object = (Integer) joinPoint.getArgs()[0]; - //从缓存里面取 - Object res1 = CACHE_CONTAINER.get(CACHE_CUSTOMER_PROFIX + object); - if (res1!=null){ - log.info("已从缓存里面找到客户对象"+CACHE_CUSTOMER_PROFIX + object); - return res1; - }else { - log.info("未从缓存里面找到客户对象,从数据库中查询并放入缓存"); - Customer res2 =(Customer) joinPoint.proceed(); - CACHE_CONTAINER.put(CACHE_CUSTOMER_PROFIX+res2.getId(),res2); - return res2; + Integer object = (Integer) joinPoint.getArgs()[0]; // 获取方法参数(客户ID) + Object res1 = CACHE_CONTAINER.get(CACHE_CUSTOMER_PROFIX + object); // 从缓存中获取数据 + if (res1 != null) { + log.info("已从缓存中找到客户对象" + CACHE_CUSTOMER_PROFIX + object); // 日志记录 + return res1; // 缓存命中,直接返回 + } else { + log.info("未从缓存中找到客户对象,从数据库查询并放入缓存"); // 日志记录 + Customer res2 = (Customer) joinPoint.proceed(); // 执行目标方法查询数据 + CACHE_CONTAINER.put(CACHE_CUSTOMER_PROFIX + res2.getId(), res2); // 添加到缓存 + return res2; // 返回查询结果 } } /** - * 更新客户切入 - * @param joinPoint - * @return + * 更新客户时的切入逻辑 + * @param joinPoint 连接点 + * @return 操作结果 */ @Around(value = POINTCUT_CUSTOMER_UPDATE) public Object cacheCustomerUpdate(ProceedingJoinPoint joinPoint) throws Throwable { - //取出第一个参数 - Customer customerVo = (Customer) joinPoint.getArgs()[0]; - Boolean isSuccess = (Boolean) joinPoint.proceed(); - if (isSuccess){ - Customer customer =(Customer) CACHE_CONTAINER.get(CACHE_CUSTOMER_PROFIX + customerVo.getId()); - if (null==customer){ - customer=new Customer(); + Customer customerVo = (Customer) joinPoint.getArgs()[0]; // 获取方法参数(客户对象) + Boolean isSuccess = (Boolean) joinPoint.proceed(); // 执行目标方法 + if (isSuccess) { + Customer customer = (Customer) CACHE_CONTAINER.get(CACHE_CUSTOMER_PROFIX + customerVo.getId()); // 获取缓存中的客户对象 + if (customer == null) { + customer = new Customer(); // 如果缓存中没有,则创建新对象 } - BeanUtils.copyProperties(customerVo,customer); - log.info("客户对象缓存已更新"+CACHE_CUSTOMER_PROFIX + customerVo.getId()); - CACHE_CONTAINER.put(CACHE_CUSTOMER_PROFIX+customer.getId(),customer); + BeanUtils.copyProperties(customerVo, customer); // 属性拷贝 + log.info("客户对象缓存已更新" + CACHE_CUSTOMER_PROFIX + customerVo.getId()); // 日志记录 + CACHE_CONTAINER.put(CACHE_CUSTOMER_PROFIX + customer.getId(), customer); // 更新缓存 } - return isSuccess; + return isSuccess; // 返回结果 } /** - * 删除客户切入 - * @param joinPoint - * @return + * 删除客户时的切入逻辑 + * @param joinPoint 连接点 + * @return 操作结果 */ @Around(value = POINTCUT_CUSTOMER_DELETE) public Object cacheCustomerDelete(ProceedingJoinPoint joinPoint) throws Throwable { - //取出第一个参数 - Integer id = (Integer) joinPoint.getArgs()[0]; - Boolean isSuccess = (Boolean) joinPoint.proceed(); - if (isSuccess){ - //删除缓存 - CACHE_CONTAINER.remove(CACHE_CUSTOMER_PROFIX+id); + Integer id = (Integer) joinPoint.getArgs()[0]; // 获取方法参数(客户ID) + Boolean isSuccess = (Boolean) joinPoint.proceed(); // 执行目标方法 + if (isSuccess) { + CACHE_CONTAINER.remove(CACHE_CUSTOMER_PROFIX + id); // 从缓存中删除 } - return isSuccess; + return isSuccess; // 返回结果 } /** - * 批量删除客户切入 - * - * @throws Throwable + * 批量删除客户时的切入逻辑 + * @param joinPoint 连接点 + * @return 操作结果 */ @Around(value = POINTCUT_CUSTOMER_BATCHDELETE) public Object cacheCustomerBatchDelete(ProceedingJoinPoint joinPoint) throws Throwable { - // 取出第一个参数 @SuppressWarnings("unchecked") - Collection idList = (Collection) joinPoint.getArgs()[0]; - Boolean isSuccess = (Boolean) joinPoint.proceed(); + Collection idList = (Collection) joinPoint.getArgs()[0]; // 获取方法参数(ID集合) + Boolean isSuccess = (Boolean) joinPoint.proceed(); // 执行目标方法 if (isSuccess) { for (Serializable id : idList) { - // 删除缓存 - CACHE_CONTAINER.remove(CACHE_CUSTOMER_PROFIX + id); - log.info("客户对象缓存已删除" + CACHE_CUSTOMER_PROFIX + id); + CACHE_CONTAINER.remove(CACHE_CUSTOMER_PROFIX + id); // 从缓存中逐个删除 + log.info("客户对象缓存已删除" + CACHE_CUSTOMER_PROFIX + id); // 日志记录 } } - return isSuccess; + return isSuccess; // 返回结果 } - /** - * 声明商品的切面表达式 + * 商品相关的切面表达式 */ - private static final String POINTCUT_GOODS_ADD="execution(* com.yeqifu.bus.service.impl.GoodsServiceImpl.save(..))"; - private static final String POINTCUT_GOODS_UPDATE="execution(* com.yeqifu.bus.service.impl.GoodsServiceImpl.updateById(..))"; - private static final String POINTCUT_GOODS_GET="execution(* com.yeqifu.bus.service.impl.GoodsServiceImpl.getById(..))"; - private static final String POINTCUT_GOODS_DELETE="execution(* com.yeqifu.bus.service.impl.GoodsServiceImpl.removeById(..))"; + private static final String POINTCUT_GOODS_ADD = "execution(* com.yeqifu.bus.service.impl.GoodsServiceImpl.save(..))"; // 添加商品切点 + private static final String POINTCUT_GOODS_UPDATE = "execution(* com.yeqifu.bus.service.impl.GoodsServiceImpl.updateById(..))"; // 更新商品切点 + private static final String POINTCUT_GOODS_GET = "execution(* com.yeqifu.bus.service.impl.GoodsServiceImpl.getById(..))"; // 获取商品切点 + private static final String POINTCUT_GOODS_DELETE = "execution(* com.yeqifu.bus.service.impl.GoodsServiceImpl.removeById(..))"; // 删除商品切点 - private static final String CACHE_GOODS_PROFIX="goods:"; + private static final String CACHE_GOODS_PROFIX = "goods:"; // 商品缓存前缀 /** - * 添加商品切入 - * @param joinPoint - * @return + * 添加商品时的切入逻辑 + * @param joinPoint 连接点 + * @return 操作结果 */ @Around(value = POINTCUT_GOODS_ADD) public Object cacheGoodsAdd(ProceedingJoinPoint joinPoint) throws Throwable { - //取出第一个参数 - Goods object = (Goods) joinPoint.getArgs()[0]; - Boolean res = (Boolean) joinPoint.proceed(); - if (res){ - CACHE_CONTAINER.put(CACHE_GOODS_PROFIX + object.getId(),object); + Goods object = (Goods) joinPoint.getArgs()[0]; // 获取方法参数(商品对象) + Boolean res = (Boolean) joinPoint.proceed(); // 执行目标方法 + if (res) { + CACHE_CONTAINER.put(CACHE_GOODS_PROFIX + object.getId(), object); // 添加到缓存 } - return res; + return res; // 返回结果 } /** - * 查询商品切入 - * @param joinPoint - * @return + * 查询商品时的切入逻辑 + * @param joinPoint 连接点 + * @return 商品对象 */ @Around(value = POINTCUT_GOODS_GET) public Object cacheGoodsGet(ProceedingJoinPoint joinPoint) throws Throwable { - //取出第一个参数 - Integer object = (Integer) joinPoint.getArgs()[0]; - //从缓存里面取 - Object res1 = CACHE_CONTAINER.get(CACHE_GOODS_PROFIX + object); - if (res1!=null){ - log.info("已从缓存里面找到商品对象"+CACHE_GOODS_PROFIX + object); - return res1; - }else { - log.info("未从缓存里面找到商品对象,从数据库中查询并放入缓存"); - Goods res2 =(Goods) joinPoint.proceed(); - CACHE_CONTAINER.put(CACHE_GOODS_PROFIX+res2.getId(),res2); - return res2; - } - } - - /** - * 更新商品切入 - * @param joinPoint - * @return - */ - @Around(value = POINTCUT_GOODS_UPDATE) - public Object cacheGoodsUpdate(ProceedingJoinPoint joinPoint) throws Throwable { - //取出第一个参数 - Goods goodsVo = (Goods) joinPoint.getArgs()[0]; - Boolean isSuccess = (Boolean) joinPoint.proceed(); - if (isSuccess){ - Goods goods =(Goods) CACHE_CONTAINER.get(CACHE_GOODS_PROFIX + goodsVo.getId()); - if (null==goods){ - goods=new Goods(); - } - BeanUtils.copyProperties(goodsVo,goods); - log.info("商品对象缓存已更新"+CACHE_GOODS_PROFIX + goodsVo.getId()); - CACHE_CONTAINER.put(CACHE_GOODS_PROFIX+goods.getId(),goods); - } - return isSuccess; - } - - /** - * 删除商品切入 - * @param joinPoint - * @return - */ - @Around(value = POINTCUT_GOODS_DELETE) - public Object cacheGoodsDelete(ProceedingJoinPoint joinPoint) throws Throwable { - //取出第一个参数 - Integer id = (Integer) joinPoint.getArgs()[0]; - Boolean isSuccess = (Boolean) joinPoint.proceed(); - if (isSuccess){ - //删除缓存 - CACHE_CONTAINER.remove(CACHE_GOODS_PROFIX+id); + Integer object = (Integer) joinPoint.getArgs()[0]; // 获取方法参数(商品ID) + Object res1 = CACHE_CONTAINER.get(CACHE_GOODS_PROFIX + object); // 从缓存中获取数据 + if (res1 != null) { + log.info("已从缓存中找到商品对象" + CACHE_GOODS_PROFIX + object); // 日志记录 + return res1; // 缓存命中,直接返回 + } else { + log.info("未从缓存中找到商品对象,从数据库查询并放入缓存"); // 日志记录 + Goods res2 = (Goods) joinPoint.proceed(); // 执行目标方法查询数据 + CACHE_CONTAINER.put(CACHE_GOODS_PROFIX + res2.getId(), res2); // 添加到缓存 + return res2; // 返回查询结果 } - return isSuccess; } - } diff --git a/src/main/java/com/yeqifu/bus/controller/BusinessController.java b/src/main/java/com/yeqifu/bus/controller/BusinessController.java index 8115e0e..ce889c9 100644 --- a/src/main/java/com/yeqifu/bus/controller/BusinessController.java +++ b/src/main/java/com/yeqifu/bus/controller/BusinessController.java @@ -1,78 +1,79 @@ -package com.yeqifu.bus.controller;// 定义包名 +package com.yeqifu.bus.controller; // 定义包名,表示该类属于com.yeqifu.bus.controller包 -import org.springframework.stereotype.Controller; // 导入Spring的Controller注解 -import org.springframework.web.bind.annotation.RequestMapping;// 导入Spring的RequestMapping注解 +import org.springframework.stereotype.Controller; // 导入Spring框架中的Controller注解,用于定义控制器 +import org.springframework.web.bind.annotation.RequestMapping; // 导入Spring框架中的RequestMapping注解,用于映射URL请求 /** - * 业务管理的路由器 + * 业务管理的路由器控制器类 + * 用于管理与业务相关的页面跳转 * @Author: 落亦- * @Date: 2019/12/5 9:33 */ -@Controller// 标注为Spring的控制器组件 -@RequestMapping("bus")// 定义类级别的请求路径前缀为"bus" +@Controller // 将该类标记为Spring的控制器组件,Spring会自动扫描并管理该类 +@RequestMapping("bus") // 定义类级别的请求路径前缀为"bus" public class BusinessController { /** - * 跳转到客户管理页面 - * @return + * 跳转到客户管理页面的方法 + * @return 返回视图名称,跳转到客户管理页面 */ - @RequestMapping("toCustomerManager")// 定义方法的请求路径为"toCustomerManager" - public String toCustomerManager(){ - return "business/customer/customerManager"; - }// 返回视图名称,跳转到客户管理页面 + @RequestMapping("toCustomerManager") // 映射请求路径为"bus/toCustomerManager" + public String toCustomerManager() { + return "business/customer/customerManager"; // 返回客户管理页面的视图名称 + } /** - * 跳转到供应商管理页面 - * @return + * 跳转到供应商管理页面的方法 + * @return 返回视图名称,跳转到供应商管理页面 */ - @RequestMapping("toProviderManager")// 定义方法的请求路径为"toProviderManager" - public String toProviderManager(){ - return "business/provider/providerManager"; - }// 返回视图名称,跳转到供应商管理页面 + @RequestMapping("toProviderManager") // 映射请求路径为"bus/toProviderManager" + public String toProviderManager() { + return "business/provider/providerManager"; // 返回供应商管理页面的视图名称 + } /** - * 跳转到商品管理页面 - * @return + * 跳转到商品管理页面的方法 + * @return 返回视图名称,跳转到商品管理页面 */ - @RequestMapping("toGoodsManager")// 定义方法的请求路径为"toGoodsManager" - public String toGoodsManager(){ - return "business/goods/goodsManager"; - }// 返回视图名称,跳转到商品管理页面 + @RequestMapping("toGoodsManager") // 映射请求路径为"bus/toGoodsManager" + public String toGoodsManager() { + return "business/goods/goodsManager"; // 返回商品管理页面的视图名称 + } /** - * 跳转到进货管理页面 - * @return + * 跳转到进货管理页面的方法 + * @return 返回视图名称,跳转到进货管理页面 */ - @RequestMapping("toInportManager")// 定义方法的请求路径为"toInportManager" - public String toInportManager(){ - return "business/inport/inportManager"; - }// 返回视图名称,跳转到进货管理页面 + @RequestMapping("toInportManager") // 映射请求路径为"bus/toInportManager" + public String toInportManager() { + return "business/inport/inportManager"; // 返回进货管理页面的视图名称 + } /** - * 跳转到退货管理页面 - * @return + * 跳转到退货管理页面的方法 + * @return 返回视图名称,跳转到退货管理页面 */ - @RequestMapping("toOutportManager")// 定义方法的请求路径为"toOutportManager" - public String toOutportManager(){ - return "business/outport/outportManager"; - }// 返回视图名称,跳转到退货管理页面 + @RequestMapping("toOutportManager") // 映射请求路径为"bus/toOutportManager" + public String toOutportManager() { + return "business/outport/outportManager"; // 返回退货管理页面的视图名称 + } /** - * 跳转到商品销售管理页面 - * @return + * 跳转到商品销售管理页面的方法 + * @return 返回视图名称,跳转到商品销售管理页面 */ - @RequestMapping("toSalesManager")// 定义方法的请求路径为"toSalesManager" - public String toSalesManager(){ - return "business/sales/salesManager"; - }// 返回视图名称,跳转到商品销售管理页面 + @RequestMapping("toSalesManager") // 映射请求路径为"bus/toSalesManager" + public String toSalesManager() { + return "business/sales/salesManager"; // 返回商品销售管理页面的视图名称 + } /** - * 跳转到商品销售退货管理页面 - * @return + * 跳转到商品销售退货管理页面的方法 + * @return 返回视图名称,跳转到商品销售退货管理页面 */ - @RequestMapping("toSalesbackManager")// 定义方法的请求路径为"toSalesbackManager" - public String toSalesbackManager(){ - return "business/salesback/salesbackManager"; - }// 返回视图名称,跳转到商品销售退货管理页面 + @RequestMapping("toSalesbackManager") // 映射请求路径为"bus/toSalesbackManager" + public String toSalesbackManager() { + return "business/salesback/salesbackManager"; // 返回商品销售退货管理页面的视图名称 + } -} \ No newline at end of file +} diff --git a/src/main/java/com/yeqifu/bus/controller/CustomerController.java b/src/main/java/com/yeqifu/bus/controller/CustomerController.java index 87057bc..ede8282 100644 --- a/src/main/java/com/yeqifu/bus/controller/CustomerController.java +++ b/src/main/java/com/yeqifu/bus/controller/CustomerController.java @@ -1,119 +1,129 @@ -package com.yeqifu.bus.controller; +package com.yeqifu.bus.controller; // 定义包名,表示该类属于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.Customer; // 导入Customer实体类 +import com.yeqifu.bus.service.ICustomerService; // 导入Customer服务接口 +import com.yeqifu.bus.vo.CustomerVo; // 导入CustomerVo类,用于封装请求参数 +import com.yeqifu.sys.common.Constast; // 导入常量类 +import com.yeqifu.sys.common.DataGridView; // 导入DataGridView类,用于封装数据表格响应 +import com.yeqifu.sys.common.ResultObj; // 导入ResultObj类,用于封装操作结果 +import io.swagger.annotations.ApiImplicitParam; // 导入Swagger的注解,用于描述API参数 +import io.swagger.annotations.ApiImplicitParams; // 导入Swagger的注解,用于描述多个API参数 +import io.swagger.annotations.ApiOperation; // 导入Swagger的注解,用于描述API操作 +import org.apache.commons.lang3.StringUtils; // 导入Apache Commons Lang工具类,用于字符串操作 +import org.springframework.beans.factory.annotation.Autowired; // 导入Spring的@Autowired注解,用于自动注入依赖 +import org.springframework.web.bind.annotation.RequestMapping; // 导入Spring的RequestMapping注解,用于映射请求路径 +import org.springframework.web.bind.annotation.RequestMethod; // 导入Spring的RequestMethod枚举,用于指定HTTP方法 +import org.springframework.web.bind.annotation.RestController; // 导入Spring的RestController注解,用于标记Restful控制器 -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.Customer; -import com.yeqifu.bus.service.ICustomerService; -import com.yeqifu.bus.vo.CustomerVo; -import com.yeqifu.sys.common.Constast; -import com.yeqifu.sys.common.DataGridView; -import com.yeqifu.sys.common.ResultObj; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; -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.RequestMethod; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; +import java.util.List; // 导入Java的List接口 /** - *

- * InnoDB free: 9216 kB 前端控制器 - *

- * + * 客户管理的前端控制器 + * 提供客户相关的增删改查和下拉列表功能 * @author luoyi- * @since 2019-12-05 */ -@RestController -@RequestMapping("/customer") +@RestController // 标记为RestController,返回的数据将直接作为HTTP响应体 +@RequestMapping("/customer") // 定义类级别的请求路径前缀为"/customer" public class CustomerController { - @Autowired + @Autowired // 自动注入Customer服务接口的实现类 private ICustomerService customerService; /** - * 查询所有的客户 - * @param customerVo - * @return + * 查询所有的客户并返回分页数据 + * @param customerVo 封装查询条件和分页参数 + * @return DataGridView 包含总记录数和客户数据列表 */ - @RequestMapping("loadAllCustomer") - public DataGridView loadAllCustomer(CustomerVo customerVo){ - //1.声明分页page对象 - IPage page = new Page(customerVo.getPage(),customerVo.getLimit()); - //2.声明queryWrapper + @RequestMapping("loadAllCustomer") // 映射请求路径为"customer/loadAllCustomer" + public DataGridView loadAllCustomer(CustomerVo customerVo) { + // 1. 创建分页对象,传入当前页码和每页显示条数 + IPage page = new Page(customerVo.getPage(), customerVo.getLimit()); + // 2. 创建查询条件构造器对象 QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.like(StringUtils.isNotBlank(customerVo.getCustomername()),"customername",customerVo.getCustomername()); - queryWrapper.like(StringUtils.isNotBlank(customerVo.getConnectionpersion()),"connectionpersion",customerVo.getConnectionpersion()); - queryWrapper.like(StringUtils.isNotBlank(customerVo.getPhone()),"phone",customerVo.getPhone()); - customerService.page(page,queryWrapper); - return new DataGridView(page.getTotal(),page.getRecords()); + // 根据客户名称模糊查询(如果输入了客户名称) + queryWrapper.like(StringUtils.isNotBlank(customerVo.getCustomername()), "customername", customerVo.getCustomername()); + // 根据联系人模糊查询(如果输入了联系人) + queryWrapper.like(StringUtils.isNotBlank(customerVo.getConnectionpersion()), "connectionpersion", customerVo.getConnectionpersion()); + // 根据电话号码模糊查询(如果输入了电话号码) + queryWrapper.like(StringUtils.isNotBlank(customerVo.getPhone()), "phone", customerVo.getPhone()); + // 执行分页查询 + customerService.page(page, queryWrapper); + // 返回DataGridView对象,包含总记录数和客户记录列表 + return new DataGridView(page.getTotal(), page.getRecords()); } /** * 添加一个客户 - * @param customerVo - * @return + * @param customerVo 封装客户信息 + * @return 操作结果对象 */ - @RequestMapping("addCustomer") - public ResultObj addCustomer(CustomerVo customerVo){ + @RequestMapping("addCustomer") // 映射请求路径为"customer/addCustomer" + public ResultObj addCustomer(CustomerVo customerVo) { try { + // 调用服务保存客户 customerService.save(customerVo); - return ResultObj.ADD_SUCCESS; + return ResultObj.ADD_SUCCESS; // 返回添加成功的结果 } catch (Exception e) { - e.printStackTrace(); - return ResultObj.ADD_ERROR; + e.printStackTrace(); // 打印异常信息 + return ResultObj.ADD_ERROR; // 返回添加失败的结果 } } /** * 修改一个客户 - * @param customerVo - * @return + * @param customerVo 封装客户信息 + * @return 操作结果对象 */ - @RequestMapping("updateCustomer") - public ResultObj updateCustomer(CustomerVo customerVo){ + @RequestMapping("updateCustomer") // 映射请求路径为"customer/updateCustomer" + public ResultObj updateCustomer(CustomerVo customerVo) { try { + // 调用服务更新客户信息 customerService.updateById(customerVo); - return ResultObj.UPDATE_SUCCESS; + return ResultObj.UPDATE_SUCCESS; // 返回更新成功的结果 } catch (Exception e) { - e.printStackTrace(); - return ResultObj.UPDATE_ERROR; + e.printStackTrace(); // 打印异常信息 + return ResultObj.UPDATE_ERROR; // 返回更新失败的结果 } } /** * 删除一个客户 * @param id 客户的ID - * @return + * @return 操作结果对象 */ - @ApiOperation(value = "删除一个客户",notes = "删除一个客户") - @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "客户ID",required = true,paramType = "query",dataType = "Integer")}) - @RequestMapping(value = "deleteCustomer",method = RequestMethod.DELETE) - public ResultObj deleteCustomer(Integer id){ + @ApiOperation(value = "删除一个客户", notes = "根据ID删除指定客户") // Swagger注解,描述API功能 + @ApiImplicitParams({ // Swagger注解,描述API参数 + @ApiImplicitParam(name = "id", value = "客户ID", required = true, paramType = "query", dataType = "Integer") + }) + @RequestMapping(value = "deleteCustomer", method = RequestMethod.DELETE) // 映射请求路径为"customer/deleteCustomer",指定HTTP方法为DELETE + public ResultObj deleteCustomer(Integer id) { try { + // 调用服务根据ID删除客户 customerService.deleteCustomerById(id); - return ResultObj.DELETE_SUCCESS; + return ResultObj.DELETE_SUCCESS; // 返回删除成功的结果 } catch (Exception e) { - e.printStackTrace(); - return ResultObj.DELETE_ERROR; + e.printStackTrace(); // 打印异常信息 + return ResultObj.DELETE_ERROR; // 返回删除失败的结果 } } - /** - * 加载所有客户的下拉列表 - * @return + * 加载所有客户的下拉列表数据 + * @return DataGridView 包含所有可用客户的列表 */ - @RequestMapping("loadAllCustomerForSelect") - public DataGridView loadAllCustomerForSelect(){ + @RequestMapping("loadAllCustomerForSelect") // 映射请求路径为"customer/loadAllCustomerForSelect" + public DataGridView loadAllCustomerForSelect() { + // 创建查询条件构造器 QueryWrapper queryWrapper = new QueryWrapper(); + // 添加条件:客户状态为可用 queryWrapper.eq("available", Constast.AVAILABLE_TRUE); + // 查询所有满足条件的客户 List list = customerService.list(queryWrapper); + // 返回DataGridView对象,包含客户列表 return new DataGridView(list); } diff --git a/src/main/java/com/yeqifu/bus/controller/GoodsController.java b/src/main/java/com/yeqifu/bus/controller/GoodsController.java index 7ecb48c..7f33b89 100644 --- a/src/main/java/com/yeqifu/bus/controller/GoodsController.java +++ b/src/main/java/com/yeqifu/bus/controller/GoodsController.java @@ -1,112 +1,115 @@ 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; // 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集合类 /** - *

- * InnoDB free: 9216 kB; (`providerid`) REFER `warehouse/bus_provider`(`id`) 前端控制器 - *

- * + * 商品管理的前端控制器 + * 提供商品的增删改查以及相关查询功能 * @author luoyi- * @since 2019-12-06 */ -@RestController -@RequestMapping("/goods") +@RestController // 标记为RESTful控制器 +@RequestMapping("/goods") // 定义请求路径前缀为"/goods" public class GoodsController { @Autowired - private IGoodsService goodsService; + private IGoodsService goodsService; // 自动注入商品服务 @Autowired - private IProviderService providerService; + private IProviderService providerService; // 自动注入供应商服务 /** - * 查询商品 - * @param goodsVo - * @return + * 分页查询商品信息 + * @param goodsVo 封装商品查询条件和分页参数 + * @return 包含商品列表和总记录数的DataGridView */ @RequestMapping("loadAllGoods") - public DataGridView loadAllGoods(GoodsVo goodsVo){ - IPage page = new Page(goodsVo.getPage(),goodsVo.getLimit()); - 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"); - goodsService.page(page,queryWrapper); + 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 (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){ + public ResultObj addGoods(GoodsVo goodsVo) { try { - System.out.println("===================================="); - System.out.println(goodsVo.getGoodsimg()); - if (goodsVo.getGoodsimg()!=null&&goodsVo.getGoodsimg().endsWith("_temp")){ + if (goodsVo.getGoodsimg() != null && goodsVo.getGoodsimg().endsWith("_temp")) { + // 重命名临时图片为正式图片 String newName = AppFileUtils.renameFile(goodsVo.getGoodsimg()); goodsVo.setGoodsimg(newName); } + // 保存商品信息 goodsService.save(goodsVo); - return ResultObj.ADD_SUCCESS; + return ResultObj.ADD_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.ADD_ERROR; + return ResultObj.ADD_ERROR; // 返回失败结果 } } /** - * 修改商品 - * @param goodsVo - * @return + * 修改商品信息 + * @param goodsVo 包含商品修改信息 + * @return 操作结果 */ @RequestMapping("updateGoods") - public ResultObj updateGoods(GoodsVo goodsVo){ + public ResultObj updateGoods(GoodsVo goodsVo) { try { - //商品图片不是默认图片 - if (!(goodsVo.getGoodsimg()!=null&&goodsVo.getGoodsimg().equals(Constast.DEFAULT_IMG_GOODS))){ - - if (goodsVo.getGoodsimg().endsWith("_temp")){ + // 如果商品图片不是默认图片 + 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) { @@ -117,15 +120,16 @@ public class GoodsController { /** * 删除商品 - * @param id 商品id - * @return + * @param id 商品ID + * @param goodsimg 商品图片路径 + * @return 操作结果 */ @RequestMapping("deleteGoods") - public ResultObj deleteGoods(Integer id,String goodsimg){ + public ResultObj deleteGoods(Integer id, String goodsimg) { try { - //删除商品的图片 + // 删除商品图片 AppFileUtils.removeFileByPath(goodsimg); -// goodsService.removeById(id); + // 删除商品记录 goodsService.deleteGoodsById(id); return ResultObj.DELETE_SUCCESS; } catch (Exception e) { @@ -135,17 +139,18 @@ public class GoodsController { } /** - * 加载所有可用的商品 - * @return + * 加载所有可用商品 + * @return 包含商品列表的DataGridView */ @RequestMapping("loadAllGoodsForSelect") - public DataGridView loadAllGoodsForSelect(){ - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("available",Constast.AVAILABLE_TRUE); + 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 (null!=provider){ + if (provider != null) { goods.setProvidername(provider.getProvidername()); } } @@ -154,31 +159,32 @@ public class GoodsController { /** * 根据供应商ID查询商品信息 - * @param providerid 供应商ID - * @return + * @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); + 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 (null!=provider){ + if (provider != null) { goods.setProvidername(provider.getProvidername()); } } return new DataGridView(list); } + /** + * 加载所有库存预警的商品 + * @return 包含预警商品列表的DataGridView + */ @RequestMapping("loadAllWarningGoods") - public DataGridView loadAllWarningGoods(){ + public DataGridView loadAllWarningGoods() { List goods = goodsService.loadAllWarning(); - return new DataGridView((long) goods.size(),goods); + return new DataGridView((long) goods.size(), goods); } - - - } - diff --git a/src/main/java/com/yeqifu/bus/controller/InportController.java b/src/main/java/com/yeqifu/bus/controller/InportController.java index 2c17889..3d4d1ca 100644 --- a/src/main/java/com/yeqifu/bus/controller/InportController.java +++ b/src/main/java/com/yeqifu/bus/controller/InportController.java @@ -1,141 +1,143 @@ 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.Inport; -import com.yeqifu.bus.entity.Provider; -import com.yeqifu.bus.service.IGoodsService; -import com.yeqifu.bus.service.IInportService; -import com.yeqifu.bus.service.IProviderService; -import com.yeqifu.bus.vo.InportVo; -import com.yeqifu.sys.common.DataGridView; -import com.yeqifu.sys.common.ResultObj; -import com.yeqifu.sys.common.WebUtils; -import com.yeqifu.sys.entity.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Date; -import java.util.List; +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.Inport; // 商品进货实体类 +import com.yeqifu.bus.entity.Provider; // 供应商实体类 +import com.yeqifu.bus.service.IGoodsService; // 商品服务接口 +import com.yeqifu.bus.service.IInportService; // 商品进货服务接口 +import com.yeqifu.bus.service.IProviderService; // 供应商服务接口 +import com.yeqifu.bus.vo.InportVo; // 商品进货 VO,用于封装请求参数 +import com.yeqifu.sys.common.DataGridView; // 用于封装表格数据 +import com.yeqifu.sys.common.ResultObj; // 封装操作结果 +import com.yeqifu.sys.common.WebUtils; // Web 工具类,用于获取会话信息 +import com.yeqifu.sys.entity.User; // 用户实体类 +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.Date; // 日期类 +import java.util.List; // 集合类 /** - *

- * InnoDB free: 9216 kB; (`providerid`) REFER `warehouse/bus_provider`(`id`); (`goo 前端控制器 - *

- * - * @author luoyi- - * @since 2019-12-18 + * 商品进货管理的前端控制器 + * 提供进货记录的增删改查等操作 */ @RestController -@RequestMapping("inport") +@RequestMapping("inport") // 定义接口的基础路径 public class InportController { @Autowired - private IInportService inportService; + private IInportService inportService; // 自动注入进货服务 @Autowired - private IProviderService providerService; + private IProviderService providerService; // 自动注入供应商服务 @Autowired - private IGoodsService goodsService; + private IGoodsService goodsService; // 自动注入商品服务 /** - * 查询商品进货 - * @param inportVo - * @return + * 查询所有商品进货记录 + * @param inportVo 包含查询条件和分页参数 + * @return 分页后的商品进货数据 */ @RequestMapping("loadAllInport") - public DataGridView loadAllInport(InportVo inportVo){ - IPage page = new Page(inportVo.getPage(),inportVo.getLimit()); - QueryWrapper queryWrapper = new QueryWrapper(); - //对供应商进行查询 - queryWrapper.eq(inportVo.getProviderid()!=null&&inportVo.getProviderid()!=0,"providerid",inportVo.getProviderid()); - //对商品进行查询 - queryWrapper.eq(inportVo.getGoodsid()!=null&&inportVo.getGoodsid()!=0,"goodsid",inportVo.getGoodsid()); - //对时间进行查询要求大于开始时间小于结束时间 - queryWrapper.ge(inportVo.getStartTime()!=null,"inporttime",inportVo.getStartTime()); - queryWrapper.le(inportVo.getEndTime()!=null,"inporttime",inportVo.getEndTime()); - //通过进货时间对商品进行排序 + public DataGridView loadAllInport(InportVo inportVo) { + // 1. 创建分页对象 + IPage page = new Page<>(inportVo.getPage(), inportVo.getLimit()); + + // 2. 创建查询条件 + QueryWrapper queryWrapper = new QueryWrapper<>(); + // 按供应商ID查询 + queryWrapper.eq(inportVo.getProviderid() != null && inportVo.getProviderid() != 0, "providerid", inportVo.getProviderid()); + // 按商品ID查询 + queryWrapper.eq(inportVo.getGoodsid() != null && inportVo.getGoodsid() != 0, "goodsid", inportVo.getGoodsid()); + // 按进货时间范围查询 + queryWrapper.ge(inportVo.getStartTime() != null, "inporttime", inportVo.getStartTime()); + queryWrapper.le(inportVo.getEndTime() != null, "inporttime", inportVo.getEndTime()); + // 按进货时间降序排序 queryWrapper.orderByDesc("inporttime"); - IPage page1 = inportService.page(page, queryWrapper); - List records = page1.getRecords(); + + // 3. 执行分页查询 + IPage resultPage = inportService.page(page, queryWrapper); + List records = resultPage.getRecords(); + + // 4. 设置每条记录的供应商和商品信息 for (Inport inport : records) { Provider provider = providerService.getById(inport.getProviderid()); - if (provider!=null){ - //设置供应商姓名 - inport.setProvidername(provider.getProvidername()); + if (provider != null) { + inport.setProvidername(provider.getProvidername()); // 设置供应商名称 } Goods goods = goodsService.getById(inport.getGoodsid()); - if (goods!=null){ - //设置商品名称 - inport.setGoodsname(goods.getGoodsname()); - //设置商品规格 - inport.setSize(goods.getSize()); + if (goods != null) { + inport.setGoodsname(goods.getGoodsname()); // 设置商品名称 + inport.setSize(goods.getSize()); // 设置商品规格 } } - return new DataGridView(page1.getTotal(),page1.getRecords()); - } + // 返回分页数据 + return new DataGridView(resultPage.getTotal(), resultPage.getRecords()); + } /** - * 添加进货商品 - * @param inportVo - * @return + * 添加进货记录 + * @param inportVo 包含进货信息 + * @return 操作结果 */ @RequestMapping("addInport") - public ResultObj addInport(InportVo inportVo){ + public ResultObj addInport(InportVo inportVo) { try { - //获得当前系统用户 + // 获取当前系统用户 User user = (User) WebUtils.getSession().getAttribute("user"); - //设置操作人 + // 设置操作人 inportVo.setOperateperson(user.getName()); - //设置进货时间 + // 设置进货时间为当前时间 inportVo.setInporttime(new Date()); + + // 保存进货记录 inportService.save(inportVo); - return ResultObj.ADD_SUCCESS; + return ResultObj.ADD_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.ADD_ERROR; + return ResultObj.ADD_ERROR; // 返回失败结果 } } /** - * 更新进货商品 - * @param inportVo - * @return + * 更新进货记录 + * @param inportVo 包含修改后的进货信息 + * @return 操作结果 */ @RequestMapping("updateInport") - public ResultObj updateInport(InportVo inportVo){ + public ResultObj updateInport(InportVo inportVo) { try { + // 更新进货记录 inportService.updateById(inportVo); - return ResultObj.UPDATE_SUCCESS; + return ResultObj.UPDATE_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.UPDATE_ERROR; + return ResultObj.UPDATE_ERROR; // 返回失败结果 } - } /** - * 删除进货商品 - * @param id - * @return + * 删除进货记录 + * @param id 要删除的进货记录ID + * @return 操作结果 */ @RequestMapping("deleteInport") - public ResultObj deleteInport(Integer id){ + public ResultObj deleteInport(Integer id) { try { + // 根据ID删除进货记录 inportService.removeById(id); - return ResultObj.DELETE_SUCCESS; + return ResultObj.DELETE_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.DELETE_ERROR; + return ResultObj.DELETE_ERROR; // 返回失败结果 } } - - } + diff --git a/src/main/java/com/yeqifu/bus/controller/OutportController.java b/src/main/java/com/yeqifu/bus/controller/OutportController.java index fb557a4..45dc2d5 100644 --- a/src/main/java/com/yeqifu/bus/controller/OutportController.java +++ b/src/main/java/com/yeqifu/bus/controller/OutportController.java @@ -1,116 +1,118 @@ 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.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; // 商品退货 VO,用于封装请求参数 +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; // RESTful 控制器注解 -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; +import java.util.List; // 集合类 /** - *

- * InnoDB free: 9216 kB 前端控制器 - *

- * - * @author luoyi- - * @since 2019-12-19 + * 商品退货管理的前端控制器 + * 提供退货记录的增删查功能 */ @RestController -@RequestMapping("/outport") +@RequestMapping("/outport") // 定义接口基础路径 public class OutportController { @Autowired - private IOutportService outportService; + private IOutportService outportService; // 自动注入退货服务 @Autowired - private IProviderService providerService; + private IProviderService providerService; // 自动注入供应商服务 @Autowired - private IGoodsService goodsService; + private IGoodsService goodsService; // 自动注入商品服务 /** - * 添加退货信息 - * @param id 进货单ID - * @param number 退货数量 - * @param remark 备注 - * @return + * 添加退货记录 + * @param id 进货单ID + * @param number 退货数量 + * @param remark 退货备注 + * @return 操作结果 */ @RequestMapping("addOutport") - public ResultObj addOutport(Integer id,Integer number,String remark){ + public ResultObj addOutport(Integer id, Integer number, String remark) { try { - outportService.addOutport(id,number,remark); - return ResultObj.BACKINPORT_SUCCESS; + // 调用服务层添加退货记录的逻辑 + outportService.addOutport(id, number, remark); + return ResultObj.BACKINPORT_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.BACKINPORT_ERROR; + return ResultObj.BACKINPORT_ERROR; // 返回失败结果 } } - /**t - * 查询商品退货 - * @param outportVo - * @return + /** + * 查询所有退货记录 + * @param outportVo 包含查询条件和分页参数 + * @return 分页后的退货记录 */ @RequestMapping("loadAllOutport") - public DataGridView loadAllOuport(OutportVo outportVo){ - IPage page = new Page(outportVo.getPage(),outportVo.getLimit()); - QueryWrapper queryWrapper = new QueryWrapper(); - //对供应商进行查询 - 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()); - //通过进货时间对商品进行排序 + public DataGridView loadAllOuport(OutportVo outportVo) { + // 1. 创建分页对象 + IPage page = new Page<>(outportVo.getPage(), outportVo.getLimit()); + + // 2. 创建查询条件 + QueryWrapper queryWrapper = new QueryWrapper<>(); + // 按供应商ID查询 + queryWrapper.eq(outportVo.getProviderid() != null && outportVo.getProviderid() != 0, "providerid", outportVo.getProviderid()); + // 按商品ID查询 + 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 page1 = outportService.page(page, queryWrapper); - List records = page1.getRecords(); - for (Outport ouport : records) { - Provider provider = providerService.getById(ouport.getProviderid()); - if (provider!=null){ - //设置供应商姓名 - ouport.setProvidername(provider.getProvidername()); + + // 3. 执行分页查询 + IPage resultPage = outportService.page(page, queryWrapper); + List records = resultPage.getRecords(); + + // 4. 设置每条记录的供应商和商品信息 + for (Outport outport : records) { + Provider provider = providerService.getById(outport.getProviderid()); + if (provider != null) { + outport.setProvidername(provider.getProvidername()); // 设置供应商名称 } - Goods goods = goodsService.getById(ouport.getGoodsid()); - if (goods!=null){ - //设置商品名称 - ouport.setGoodsname(goods.getGoodsname()); - //设置商品规格 - ouport.setSize(goods.getSize()); + Goods goods = goodsService.getById(outport.getGoodsid()); + if (goods != null) { + outport.setGoodsname(goods.getGoodsname()); // 设置商品名称 + outport.setSize(goods.getSize()); // 设置商品规格 } } - return new DataGridView(page1.getTotal(),page1.getRecords()); + + // 返回分页数据 + return new DataGridView(resultPage.getTotal(), resultPage.getRecords()); } /** - * 删除退货信息 - * @param id - * @return + * 删除退货记录 + * @param id 要删除的退货记录ID + * @return 操作结果 */ @RequestMapping("deleteOutport") - public ResultObj deleteOutport(Integer id){ + public ResultObj deleteOutport(Integer id) { try { + // 根据ID删除退货记录 outportService.removeById(id); - return ResultObj.DELETE_SUCCESS; + return ResultObj.DELETE_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.DELETE_ERROR; + return ResultObj.DELETE_ERROR; // 返回失败结果 } } - - } + diff --git a/src/main/java/com/yeqifu/bus/controller/ProviderController.java b/src/main/java/com/yeqifu/bus/controller/ProviderController.java index 22c03cb..52e0b25 100644 --- a/src/main/java/com/yeqifu/bus/controller/ProviderController.java +++ b/src/main/java/com/yeqifu/bus/controller/ProviderController.java @@ -1,117 +1,122 @@ 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.Provider; // 供应商实体类 +import com.yeqifu.bus.service.IProviderService; // 供应商服务接口 +import com.yeqifu.bus.vo.ProviderVo; // 供应商 VO,用于封装请求参数 +import com.yeqifu.sys.common.Constast; // 常量类 +import com.yeqifu.sys.common.DataGridView; // 封装表格数据 +import com.yeqifu.sys.common.ResultObj; // 封装操作结果 +import org.apache.commons.lang3.StringUtils; // Apache工具类,用于字符串操作 +import org.springframework.beans.factory.annotation.Autowired; // 自动注入注解 +import org.springframework.web.bind.annotation.RequestMapping; // 请求映射注解 +import org.springframework.web.bind.annotation.RestController; // RESTful 控制器注解 -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.Provider; -import com.yeqifu.bus.service.IProviderService; -import com.yeqifu.bus.vo.ProviderVo; -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 java.util.List; // 集合类 /** - *

- * InnoDB free: 9216 kB 前端控制器 - *

- * - * @author luoyi- - * @since 2019-12-05 + * 供应商管理前端控制器 + * 提供供应商的增删改查功能 */ @RestController -@RequestMapping("/provider") +@RequestMapping("/provider") // 定义接口基础路径 public class ProviderController { @Autowired - private IProviderService providerService; + private IProviderService providerService; // 自动注入供应商服务 /** - * 查询所有的供应商 - * @param providerVo - * @return + * 分页查询供应商列表 + * @param providerVo 包含查询条件和分页参数 + * @return 分页后的供应商数据 */ @RequestMapping("loadAllProvider") - public DataGridView loadAllProvider(ProviderVo providerVo){ - //1.声明一个分页page对象 - IPage page = new Page(providerVo.getPage(),providerVo.getLimit()); - //2.声明一个queryWrapper - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.like(StringUtils.isNotBlank(providerVo.getProvidername()),"providername",providerVo.getProvidername()); - queryWrapper.like(StringUtils.isNotBlank(providerVo.getConnectionperson()),"connectionperson",providerVo.getConnectionperson()); - queryWrapper.like(StringUtils.isNotBlank(providerVo.getPhone()),"phone",providerVo.getPhone()); - providerService.page(page,queryWrapper); - return new DataGridView(page.getTotal(),page.getRecords()); + public DataGridView loadAllProvider(ProviderVo providerVo) { + // 1. 声明分页对象 + IPage page = new Page<>(providerVo.getPage(), providerVo.getLimit()); + + // 2. 声明查询条件 + QueryWrapper queryWrapper = new QueryWrapper<>(); + // 按供应商名称模糊查询 + queryWrapper.like(StringUtils.isNotBlank(providerVo.getProvidername()), "providername", providerVo.getProvidername()); + // 按联系人模糊查询 + queryWrapper.like(StringUtils.isNotBlank(providerVo.getConnectionperson()), "connectionperson", providerVo.getConnectionperson()); + // 按电话模糊查询 + queryWrapper.like(StringUtils.isNotBlank(providerVo.getPhone()), "phone", providerVo.getPhone()); + + // 3. 执行查询 + providerService.page(page, queryWrapper); + + // 4. 返回结果 + return new DataGridView(page.getTotal(), page.getRecords()); } /** - * 添加一个供应商 - * @param providerVo - * @return + * 添加供应商 + * @param providerVo 封装供应商数据 + * @return 操作结果 */ @RequestMapping("addProvider") - public ResultObj addProvider(ProviderVo providerVo){ + public ResultObj addProvider(ProviderVo providerVo) { try { - providerService.save(providerVo); - return ResultObj.ADD_SUCCESS; + providerService.save(providerVo); // 保存供应商信息 + return ResultObj.ADD_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.ADD_ERROR; + return ResultObj.ADD_ERROR; // 返回失败结果 } } /** - * 修改一个供应商 - * @param providerVo - * @return + * 修改供应商信息 + * @param providerVo 封装供应商数据 + * @return 操作结果 */ @RequestMapping("updateProvider") - public ResultObj updateProvider(ProviderVo providerVo){ + public ResultObj updateProvider(ProviderVo providerVo) { try { - providerService.updateById(providerVo); - return ResultObj.UPDATE_SUCCESS; + providerService.updateById(providerVo); // 更新供应商信息 + return ResultObj.UPDATE_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.UPDATE_ERROR; + return ResultObj.UPDATE_ERROR; // 返回失败结果 } } - /** - * 删除一个供应商 - * @param id - * @return + * 删除供应商 + * @param id 供应商ID + * @return 操作结果 */ @RequestMapping("deleteProvider") - public ResultObj deleteProvider(Integer id){ + public ResultObj deleteProvider(Integer id) { try { - providerService.deleteProviderById(id); - return ResultObj.DELETE_SUCCESS; + providerService.deleteProviderById(id); // 调用服务层删除方法 + return ResultObj.DELETE_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.DELETE_ERROR; + return ResultObj.DELETE_ERROR; // 返回失败结果 } } - /** - * 加载所有可用的供应商 - * @return + * 查询所有可用的供应商 + * 用于下拉框选择等场景 + * @return 可用供应商列表 */ @RequestMapping("loadAllProviderForSelect") - public DataGridView loadAllProviderForSelect(){ - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("available", Constast.AVAILABLE_TRUE); + public DataGridView loadAllProviderForSelect() { + // 1. 声明查询条件 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("available", Constast.AVAILABLE_TRUE); // 查询状态为“可用”的供应商 + + // 2. 获取可用供应商列表 List list = providerService.list(queryWrapper); + + // 3. 返回结果 return new DataGridView(list); } - - } diff --git a/src/main/java/com/yeqifu/bus/controller/SalesController.java b/src/main/java/com/yeqifu/bus/controller/SalesController.java index 7c3c046..c4825e5 100644 --- a/src/main/java/com/yeqifu/bus/controller/SalesController.java +++ b/src/main/java/com/yeqifu/bus/controller/SalesController.java @@ -1,137 +1,138 @@ 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.Customer; -import com.yeqifu.bus.entity.Goods; -import com.yeqifu.bus.entity.Sales; -import com.yeqifu.bus.service.ICustomerService; -import com.yeqifu.bus.service.IGoodsService; -import com.yeqifu.bus.service.ISalesService; -import com.yeqifu.bus.vo.SalesVo; -import com.yeqifu.sys.common.DataGridView; -import com.yeqifu.sys.common.ResultObj; -import com.yeqifu.sys.common.WebUtils; -import com.yeqifu.sys.entity.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.Customer; // 客户实体类 +import com.yeqifu.bus.entity.Goods; // 商品实体类 +import com.yeqifu.bus.entity.Sales; // 销售实体类 +import com.yeqifu.bus.service.ICustomerService; // 客户服务接口 +import com.yeqifu.bus.service.IGoodsService; // 商品服务接口 +import com.yeqifu.bus.service.ISalesService; // 销售服务接口 +import com.yeqifu.bus.vo.SalesVo; // 销售请求参数封装类 +import com.yeqifu.sys.common.DataGridView; // 封装表格数据类 +import com.yeqifu.sys.common.ResultObj; // 操作结果封装类 +import com.yeqifu.sys.common.WebUtils; // Web工具类 +import com.yeqifu.sys.entity.User; // 用户实体类 +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.Date; import java.util.List; /** - *

- * InnoDB free: 9216 kB 前端控制器 - *

- * - * @author luoyi- - * @since 2019-12-21 + * 销售管理前端控制器 + * 提供商品销售的增删改查功能 */ @RestController -@RequestMapping("/sales") +@RequestMapping("/sales") // 定义接口基础路径 public class SalesController { @Autowired - private ISalesService salesService; + private ISalesService salesService; // 自动注入销售服务 @Autowired - private ICustomerService customerService; + private ICustomerService customerService; // 自动注入客户服务 @Autowired - private IGoodsService goodsService; + private IGoodsService goodsService; // 自动注入商品服务 /** * 查询所有商品销售信息 - * @param salesVo - * @return + * @param salesVo 封装了查询条件和分页参数 + * @return 分页后的商品销售信息 */ @RequestMapping("loadAllSales") - public DataGridView loadAllSales(SalesVo salesVo){ - IPage page = new Page<>(salesVo.getPage(),salesVo.getLimit()); - QueryWrapper queryWrapper = new QueryWrapper(); - //根据客户进行模糊查询 - queryWrapper.eq(salesVo.getCustomerid()!=null&&salesVo.getCustomerid()!=0,"customerid",salesVo.getCustomerid()); - //根据商品模糊查询 - queryWrapper.eq(salesVo.getGoodsid()!=null&&salesVo.getGoodsid()!=0,"goodsid",salesVo.getGoodsid()); - //根据时间进行模糊查询 - queryWrapper.ge(salesVo.getStartTime()!=null,"salestime",salesVo.getStartTime()); - queryWrapper.le(salesVo.getEndTime()!=null,"salestime",salesVo.getEndTime()); + public DataGridView loadAllSales(SalesVo salesVo) { + // 1. 声明分页对象 + IPage page = new Page<>(salesVo.getPage(), salesVo.getLimit()); + // 2. 创建查询条件构造器 + QueryWrapper queryWrapper = new QueryWrapper<>(); + // 3. 根据客户ID进行查询 + queryWrapper.eq(salesVo.getCustomerid() != null && salesVo.getCustomerid() != 0, "customerid", salesVo.getCustomerid()); + // 4. 根据商品ID进行查询 + queryWrapper.eq(salesVo.getGoodsid() != null && salesVo.getGoodsid() != 0, "goodsid", salesVo.getGoodsid()); + // 5. 根据销售时间进行查询 + queryWrapper.ge(salesVo.getStartTime() != null, "salestime", salesVo.getStartTime()); + queryWrapper.le(salesVo.getEndTime() != null, "salestime", salesVo.getEndTime()); + + // 6. 执行分页查询 IPage page1 = salesService.page(page, queryWrapper); List records = page1.getRecords(); + // 7. 填充客户信息和商品信息 for (Sales sales : records) { - //设置客户姓名 + // 设置客户姓名 Customer customer = customerService.getById(sales.getCustomerid()); - if(null!=customer){ + if (customer != null) { sales.setCustomername(customer.getCustomername()); } - //设置商品名称 + // 设置商品信息 Goods goods = goodsService.getById(sales.getGoodsid()); - if (null!=goods){ - //设置商品名称 + if (goods != null) { sales.setGoodsname(goods.getGoodsname()); - //设置商品规格 sales.setSize(goods.getSize()); } } - return new DataGridView(page1.getTotal(),page1.getRecords()); + + // 8. 返回分页结果 + return new DataGridView(page1.getTotal(), page1.getRecords()); } /** * 添加商品销售信息 - * @param salesVo - * @return + * @param salesVo 销售请求参数 + * @return 操作结果 */ @RequestMapping("addSales") - public ResultObj addSales(SalesVo salesVo){ + public ResultObj addSales(SalesVo salesVo) { try { - //获得当前系统用户 + // 获取当前系统用户 User user = (User) WebUtils.getSession().getAttribute("user"); - //设置操作人 + // 设置操作人 salesVo.setOperateperson(user.getName()); - //设置销售时间 + // 设置销售时间 salesVo.setSalestime(new Date()); + // 保存销售信息 salesService.save(salesVo); - return ResultObj.ADD_SUCCESS; - }catch (Exception e) { + return ResultObj.ADD_SUCCESS; // 返回成功结果 + } catch (Exception e) { e.printStackTrace(); - return ResultObj.ADD_ERROR; + return ResultObj.ADD_ERROR; // 返回失败结果 } } /** * 更新商品销售信息 - * @param salesVo - * @return + * @param salesVo 销售请求参数 + * @return 操作结果 */ @RequestMapping("updateSales") - public ResultObj updateSales(SalesVo salesVo){ + public ResultObj updateSales(SalesVo salesVo) { try { + // 更新销售信息 salesService.updateById(salesVo); - return ResultObj.UPDATE_SUCCESS; + return ResultObj.UPDATE_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.UPDATE_ERROR; + return ResultObj.UPDATE_ERROR; // 返回失败结果 } } /** * 删除商品销售信息 - * @param id - * @return + * @param id 销售记录ID + * @return 操作结果 */ @RequestMapping("deleteSales") - public ResultObj deleteSales(Integer id){ + public ResultObj deleteSales(Integer id) { try { + // 删除销售记录 salesService.removeById(id); - return ResultObj.DELETE_SUCCESS; + return ResultObj.DELETE_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.DELETE_ERROR; + return ResultObj.DELETE_ERROR; // 返回失败结果 } } - } - diff --git a/src/main/java/com/yeqifu/bus/controller/SalesbackController.java b/src/main/java/com/yeqifu/bus/controller/SalesbackController.java index 05a1e77..8cc5578 100644 --- a/src/main/java/com/yeqifu/bus/controller/SalesbackController.java +++ b/src/main/java/com/yeqifu/bus/controller/SalesbackController.java @@ -1,116 +1,123 @@ 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.Customer; // 客户实体类 +import com.yeqifu.bus.entity.Goods; // 商品实体类 +import com.yeqifu.bus.entity.Salesback; // 销售退货实体类 +import com.yeqifu.bus.service.ICustomerService; // 客户服务接口 +import com.yeqifu.bus.service.IGoodsService; // 商品服务接口 +import com.yeqifu.bus.service.ISalesbackService; // 销售退货服务接口 +import com.yeqifu.bus.vo.SalesbackVo; // 销售退货请求参数封装类 +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; // RESTful 控制器注解 -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.Customer; -import com.yeqifu.bus.entity.Goods; -import com.yeqifu.bus.entity.Salesback; -import com.yeqifu.bus.service.ICustomerService; -import com.yeqifu.bus.service.IGoodsService; -import com.yeqifu.bus.service.ISalesbackService; -import com.yeqifu.bus.vo.SalesbackVo; -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; +import java.util.List; // 集合类 /** - *

- * InnoDB free: 9216 kB 前端控制器 - *

- * - * @author luoyi- - * @since 2019-12-23 + * 销售退货管理前端控制器 + * 提供销售退货的增删改查功能 */ @RestController -@RequestMapping("/salesback") +@RequestMapping("/salesback") // 定义接口基础路径 public class SalesbackController { @Autowired - private ISalesbackService salesbackService; + private ISalesbackService salesbackService; // 自动注入销售退货服务 @Autowired - private ICustomerService customerService; + private ICustomerService customerService; // 自动注入客户服务 @Autowired - private IGoodsService goodsService; + private IGoodsService goodsService; // 自动注入商品服务 /** - * 添加退货信息 - * @param id 进货单ID + * 添加销售退货信息 + * @param id 销售单ID * @param number 退货数量 * @param remark 备注 - * @return + * @return 操作结果 */ @RequestMapping("addSalesback") - public ResultObj addSalesback(Integer id,Integer number,String remark){ + public ResultObj addSalesback(Integer id, Integer number, String remark) { try { - salesbackService.addSalesback(id,number,remark); - return ResultObj.BACKINPORT_SUCCESS; + // 调用销售退货服务,处理退货 + salesbackService.addSalesback(id, number, remark); + return ResultObj.BACKINPORT_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.BACKINPORT_ERROR; + return ResultObj.BACKINPORT_ERROR; // 返回失败结果 } } /** - * 查询商品销售退货 - * @param salesbackVo - * @return + * 查询商品销售退货信息 + * @param salesbackVo 包含查询条件和分页参数 + * @return 分页后的销售退货数据 */ @RequestMapping("loadAllSalesback") - public DataGridView loadAllSalesback(SalesbackVo salesbackVo){ - IPage page = new Page(salesbackVo.getPage(),salesbackVo.getLimit()); - QueryWrapper queryWrapper = new QueryWrapper(); - //对客户进行查询 - queryWrapper.eq(salesbackVo.getCustomerid()!=null&&salesbackVo.getCustomerid()!=0,"customerid",salesbackVo.getCustomerid()); - //对商品进行查询 - queryWrapper.eq(salesbackVo.getGoodsid()!=null&&salesbackVo.getGoodsid()!=0,"goodsid",salesbackVo.getGoodsid()); - //对时间进行查询要求大于开始时间小于结束时间 - queryWrapper.ge(salesbackVo.getStartTime()!=null,"salesbacktime",salesbackVo.getStartTime()); - queryWrapper.le(salesbackVo.getEndTime()!=null,"salesbacktime",salesbackVo.getEndTime()); - //通过商品退货时间对商品进行排序 + public DataGridView loadAllSalesback(SalesbackVo salesbackVo) { + // 1. 声明分页对象 + IPage page = new Page<>(salesbackVo.getPage(), salesbackVo.getLimit()); + // 2. 创建查询条件构造器 + QueryWrapper queryWrapper = new QueryWrapper<>(); + // 3. 根据客户ID进行查询 + queryWrapper.eq(salesbackVo.getCustomerid() != null && salesbackVo.getCustomerid() != 0, "customerid", salesbackVo.getCustomerid()); + // 4. 根据商品ID进行查询 + queryWrapper.eq(salesbackVo.getGoodsid() != null && salesbackVo.getGoodsid() != 0, "goodsid", salesbackVo.getGoodsid()); + // 5. 根据时间范围进行查询 + queryWrapper.ge(salesbackVo.getStartTime() != null, "salesbacktime", salesbackVo.getStartTime()); + queryWrapper.le(salesbackVo.getEndTime() != null, "salesbacktime", salesbackVo.getEndTime()); + // 6. 根据销售退货时间降序排序 queryWrapper.orderByDesc("salesbacktime"); + + // 7. 执行分页查询 salesbackService.page(page, queryWrapper); + + // 8. 获取查询结果 List records = page.getRecords(); + // 9. 填充客户和商品信息 for (Salesback salesback : records) { System.out.println("============================"); + // 查询客户信息 Customer customer = customerService.getById(salesback.getCustomerid()); - if (customer!=null){ - //设置客户姓名 + if (customer != null) { + // 设置客户姓名 salesback.setCustomername(customer.getCustomername()); } + // 查询商品信息 Goods goods = goodsService.getById(salesback.getGoodsid()); - if (goods!=null){ - //设置商品名称 + if (goods != null) { + // 设置商品名称和规格 salesback.setGoodsname(goods.getGoodsname()); - //设置商品规格 salesback.setSize(goods.getSize()); } } - return new DataGridView(page.getTotal(),page.getRecords()); + + // 10. 返回分页结果 + return new DataGridView(page.getTotal(), page.getRecords()); } /** - * 删除商品销售退回信息 - * @param id - * @return + * 删除商品销售退货信息 + * @param id 销售退货ID + * @return 操作结果 */ @RequestMapping("deleteSalesback") - public ResultObj deleteSalesback(Integer id){ + public ResultObj deleteSalesback(Integer id) { try { + // 调用销售退货服务,删除记录 salesbackService.removeById(id); - return ResultObj.DELETE_SUCCESS; + return ResultObj.DELETE_SUCCESS; // 返回成功结果 } catch (Exception e) { e.printStackTrace(); - return ResultObj.DELETE_ERROR; + return ResultObj.DELETE_ERROR; // 返回失败结果 } } - + } diff --git a/src/main/java/com/yeqifu/bus/entity/Customer.java b/src/main/java/com/yeqifu/bus/entity/Customer.java index cf7b5ae..775c0ff 100644 --- a/src/main/java/com/yeqifu/bus/entity/Customer.java +++ b/src/main/java/com/yeqifu/bus/entity/Customer.java @@ -1,56 +1,52 @@ package com.yeqifu.bus.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import lombok.experimental.Accessors; +import com.baomidou.mybatisplus.annotation.IdType; // MyBatis-Plus 主键类型注解 +import com.baomidou.mybatisplus.annotation.TableId; // MyBatis-Plus 主键注解 +import com.baomidou.mybatisplus.annotation.TableName; // MyBatis-Plus 表名注解 +import lombok.Data; // Lombok 注解,用于生成 getters、setters、toString 等 +import lombok.EqualsAndHashCode; // Lombok 注解,用于生成 equals 和 hashCode 方法 +import lombok.ToString; // Lombok 注解,用于生成 toString 方法 +import lombok.experimental.Accessors; // Lombok 注解,支持链式调用 -import java.io.Serializable; +import java.io.Serializable; // Serializable 接口,用于对象序列化 /** + * 客户实体类 *

- * InnoDB free: 9216 kB + * 该类对应数据库中的 `bus_customer` 表,包含客户的各种信息字段 *

- * - * @author luoyi- - * @since 2019-12-05 */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("bus_customer") -@ToString +@Data // Lombok 自动生成 getter、setter、toString、equals 和 hashCode 等方法 +@EqualsAndHashCode(callSuper = false) // 生成 equals 和 hashCode 方法,但不调用父类的属性 +@Accessors(chain = true) // 支持链式调用,例如 customer.setName("张三").setEmail("zhangsan@example.com") +@TableName("bus_customer") // 将该类映射到数据库中的 bus_customer 表 +@ToString // 生成 toString 方法,便于打印输出对象信息 public class Customer implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 1L; // 序列化的唯一标识符,保证反序列化时的兼容性 - @TableId(value = "id", type = IdType.AUTO) - private Integer id; + @TableId(value = "id", type = IdType.AUTO) // 将 id 字段设置为主键,主键类型为自增 + private Integer id; // 客户ID - private String customername; + private String customername; // 客户名称 - private String zip; + private String zip; // 邮政编码 - private String address; + private String address; // 客户地址 - private String telephone; + private String telephone; // 客户的固定电话 - private String connectionpersion; + private String connectionpersion; // 联系人姓名 - private String phone; + private String phone; // 联系人手机号码 - private String bank; + private String bank; // 客户开户行 - private String account; + private String account; // 客户银行账户 - private String email; - - private String fax; - - private Integer available; + private String email; // 客户邮箱 + private String fax; // 客户传真号码 + private Integer available; // 客户状态(是否可用,0表示禁用,1表示启用) } diff --git a/src/main/java/com/yeqifu/bus/entity/Goods.java b/src/main/java/com/yeqifu/bus/entity/Goods.java index 70be889..a81bc5d 100644 --- a/src/main/java/com/yeqifu/bus/entity/Goods.java +++ b/src/main/java/com/yeqifu/bus/entity/Goods.java @@ -1,64 +1,60 @@ package com.yeqifu.bus.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import lombok.experimental.Accessors; +import com.baomidou.mybatisplus.annotation.IdType; // MyBatis-Plus 主键类型注解 +import com.baomidou.mybatisplus.annotation.TableField; // MyBatis-Plus 非数据库字段注解 +import com.baomidou.mybatisplus.annotation.TableId; // MyBatis-Plus 主键注解 +import com.baomidou.mybatisplus.annotation.TableName; // MyBatis-Plus 表名注解 +import lombok.Data; // Lombok 注解,用于生成 getter、setter、toString 等方法 +import lombok.EqualsAndHashCode; // Lombok 注解,用于生成 equals 和 hashCode 方法 +import lombok.ToString; // Lombok 注解,用于生成 toString 方法 +import lombok.experimental.Accessors; // Lombok 注解,支持链式调用 -import java.io.Serializable; +import java.io.Serializable; // Serializable 接口,用于对象序列化 /** + * 商品实体类 *

- * InnoDB free: 9216 kB; (`providerid`) REFER `warehouse/bus_provider`(`id`) + * 该类对应数据库中的 `bus_goods` 表,包含商品的各种信息字段 *

- * - * @author luoyi- - * @since 2019-12-06 */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("bus_goods") -@ToString +@Data // Lombok 自动生成 getter、setter、toString、equals 和 hashCode 方法 +@EqualsAndHashCode(callSuper = false) // 生成 equals 和 hashCode 方法,但不调用父类属性 +@Accessors(chain = true) // 支持链式调用,例如 goods.setGoodsname("商品A").setPrice(200.0) +@TableName("bus_goods") // 将该类映射到数据库中的 bus_goods 表 +@ToString // 生成 toString 方法,便于打印输出对象信息 public class Goods implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 1L; // 序列化ID,确保类在反序列化时版本一致 - @TableId(value = "id", type = IdType.AUTO) - private Integer id; + @TableId(value = "id", type = IdType.AUTO) // 将 id 字段设为主键,类型为自增 + private Integer id; // 商品ID - private String goodsname; + private String goodsname; // 商品名称 - private String produceplace; + private String produceplace; // 商品产地 - private String size; + private String size; // 商品规格 - private String goodspackage; + private String goodspackage; // 商品包装类型 - private String productcode; + private String productcode; // 商品编码 - private String promitcode; + private String promitcode; // 促销编码 - private String description; + private String description; // 商品描述信息 - private Double price; + private Double price; // 商品价格 - private Integer number; + private Integer number; // 商品库存数量 - private Integer dangernum; + private Integer dangernum; // 商品危险库存数量(用于库存警报) - private String goodsimg; + private String goodsimg; // 商品图片的URL地址 - private Integer available; - - private Integer providerid; - - @TableField(exist = false) - private String providername; + private Integer available; // 商品是否可用(0 表示不可用,1 表示可用) + private Integer providerid; // 供应商ID,外键关联供应商表 bus_provider + @TableField(exist = false) // 该字段不是数据库表中的字段,仅用于数据传输或展示 + private String providername; // 供应商名称(非数据库字段,用于前端显示供应商信息) } diff --git a/src/main/java/com/yeqifu/bus/entity/Inport.java b/src/main/java/com/yeqifu/bus/entity/Inport.java index 1d7b0ef..7ef760d 100644 --- a/src/main/java/com/yeqifu/bus/entity/Inport.java +++ b/src/main/java/com/yeqifu/bus/entity/Inport.java @@ -1,67 +1,65 @@ package com.yeqifu.bus.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; +import com.baomidou.mybatisplus.annotation.IdType; // MyBatis-Plus 主键类型注解 +import com.baomidou.mybatisplus.annotation.TableField; // MyBatis-Plus 非数据库字段注解 +import com.baomidou.mybatisplus.annotation.TableId; // MyBatis-Plus 主键注解 +import com.baomidou.mybatisplus.annotation.TableName; // MyBatis-Plus 表名注解 +import lombok.Data; // Lombok 注解,用于生成 getter、setter、toString 等方法 +import lombok.EqualsAndHashCode; // Lombok 注解,用于生成 equals 和 hashCode 方法 +import lombok.experimental.Accessors; // Lombok 注解,支持链式调用 -import java.io.Serializable; -import java.util.Date; +import java.io.Serializable; // Serializable 接口,用于对象序列化 +import java.util.Date; // Java 日期类,用于记录时间 /** + * 商品入库实体类 *

- * InnoDB free: 9216 kB; (`providerid`) REFER `warehouse/bus_provider`(`id`); (`goo + * 该类对应数据库中的 `bus_inport` 表,包含商品入库的各种信息字段 *

- * - * @author luoyi- - * @since 2019-12-18 */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("bus_inport") +@Data // Lombok 自动生成 getter、setter、toString、equals 和 hashCode 方法 +@EqualsAndHashCode(callSuper = false) // 生成 equals 和 hashCode 方法,但不使用父类的属性 +@Accessors(chain = true) // 支持链式调用,例如 inport.setPaytype("现金").setNumber(100) +@TableName("bus_inport") // 将该类映射到数据库中的 bus_inport 表 public class Inport implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 1L; // 序列化ID,确保反序列化时版本一致 - @TableId(value = "id", type = IdType.AUTO) - private Integer id; + @TableId(value = "id", type = IdType.AUTO) // 定义 id 为主键,类型为自动增长 + private Integer id; // 入库记录的唯一标识ID - private String paytype; + private String paytype; // 支付类型,例如:现金、银行转账等 - private Date inporttime; + private Date inporttime; // 商品入库时间 - private String operateperson; + private String operateperson; // 操作人,记录操作入库的人员姓名 - private Integer number; + private Integer number; // 入库数量,表示商品的入库件数 - private String remark; + private String remark; // 备注信息,用于记录其他附加说明 - private Double inportprice; + private Double inportprice; // 入库单价,记录商品入库时的价格 - private Integer providerid; + private Integer providerid; // 供应商ID,外键关联 `bus_provider` 表 - private Integer goodsid; + private Integer goodsid; // 商品ID,外键关联 `bus_goods` 表 /** - * 供应商姓名 + * 供应商名称,非数据库字段 */ - @TableField(exist = false) - private String providername; + @TableField(exist = false) // 标识该字段不是数据库表中的字段,仅用于传输或展示 + private String providername; // 供应商名称,用于在前端页面显示供应商信息 /** - * 商品名称 + * 商品名称,非数据库字段 */ - @TableField(exist = false) - private String goodsname; + @TableField(exist = false) // 标识该字段不是数据库表中的字段,仅用于传输或展示 + private String goodsname; // 商品名称,用于在前端页面显示商品信息 /** - * 商品规格 + * 商品规格,非数据库字段 */ - @TableField(exist = false) - private String size; - + @TableField(exist = false) // 标识该字段不是数据库表中的字段,仅用于传输或展示 + private String size; // 商品规格,例如:大、中、小,用于显示 } + diff --git a/src/main/java/com/yeqifu/bus/entity/Outport.java b/src/main/java/com/yeqifu/bus/entity/Outport.java index 09e02ac..33637f5 100644 --- a/src/main/java/com/yeqifu/bus/entity/Outport.java +++ b/src/main/java/com/yeqifu/bus/entity/Outport.java @@ -1,67 +1,63 @@ package com.yeqifu.bus.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; +import com.baomidou.mybatisplus.annotation.IdType; // 定义主键生成策略的注解 +import com.baomidou.mybatisplus.annotation.TableField; // 标识当前属性不对应数据库字段 +import com.baomidou.mybatisplus.annotation.TableId; // 声明主键字段的注解 +import com.baomidou.mybatisplus.annotation.TableName; // 用于指定数据库表名的注解 +import lombok.Data; // 自动生成 getter、setter、toString 等方法 +import lombok.EqualsAndHashCode; // 用于实现对象的 equals 和 hashCode 方法 +import lombok.experimental.Accessors; // 支持链式调用的注解 -import java.io.Serializable; -import java.util.Date; +import java.io.Serializable; // 序列化接口,使对象可持久化 +import java.util.Date; // Java 日期类,用于时间字段 /** - *

- * InnoDB free: 9216 kB - *

+ * 商品出库记录类 * - * @author luoyi- - * @since 2019-12-19 + * 该类与数据库的 `bus_outport` 表相对应,存储商品的出库相关信息。 */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("bus_outport") +@Data // 使用 Lombok 简化代码,自动生成常用方法 +@EqualsAndHashCode(callSuper = false) // 覆盖 equals 和 hashCode 方法,忽略父类字段 +@Accessors(chain = true) // 启用链式编程,如 outport.setPaytype("现金").setNumber(50) +@TableName("bus_outport") // 将该类映射为数据库表 bus_outport public class Outport implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 1L; // 序列化时用于校验版本一致性 - @TableId(value = "id", type = IdType.AUTO) - private Integer id; + @TableId(value = "id", type = IdType.AUTO) // 定义主键字段为自增类型 + private Integer id; // 出库记录唯一标识 - private Integer providerid; + private Integer providerid; // 供应商ID,关联 `bus_provider` 表中的主键 - private String paytype; + private String paytype; // 支付方式,例如:现金、转账 - private Date outputtime; + private Date outputtime; // 记录商品出库的时间 - private String operateperson; + private String operateperson; // 操作人员姓名,记录出库操作的人 - private Double outportprice; + private Double outportprice; // 商品出库时的单价 - private Integer number; + private Integer number; // 商品出库的数量 - private String remark; + private String remark; // 附加说明或备注信息 - private Integer goodsid; + private Integer goodsid; // 商品ID,关联 `bus_goods` 表中的主键 /** - * 供应商姓名 + * 供应商名称(仅用于展示) */ - @TableField(exist = false) - private String providername; + @TableField(exist = false) // 该字段不在数据库表中,仅用于逻辑传输和前端展示 + private String providername; // 供应商的名称信息 /** - * 商品名称 + * 商品名称(仅用于展示) */ - @TableField(exist = false) - private String goodsname; + @TableField(exist = false) // 非持久化字段,仅用于业务传输 + private String goodsname; // 商品的名称信息 /** - * 商品规格 + * 商品规格(仅用于展示) */ - @TableField(exist = false) - private String size; - + @TableField(exist = false) // 不映射到数据库表中 + private String size; // 商品的规格,例如:中、大、小 } diff --git a/src/main/java/com/yeqifu/bus/entity/Provider.java b/src/main/java/com/yeqifu/bus/entity/Provider.java index 6301b11..3742bb3 100644 --- a/src/main/java/com/yeqifu/bus/entity/Provider.java +++ b/src/main/java/com/yeqifu/bus/entity/Provider.java @@ -1,56 +1,51 @@ package com.yeqifu.bus.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import lombok.experimental.Accessors; +import com.baomidou.mybatisplus.annotation.IdType; // MyBatis-Plus 注解,用于定义主键生成策略 +import com.baomidou.mybatisplus.annotation.TableId; // MyBatis-Plus 注解,标识主键字段 +import com.baomidou.mybatisplus.annotation.TableName; // MyBatis-Plus 注解,用于映射数据库表名 +import lombok.Data; // Lombok 注解,自动生成 getter、setter、toString 等方法 +import lombok.EqualsAndHashCode; // Lombok 注解,自动覆盖 equals 和 hashCode 方法 +import lombok.ToString; // Lombok 注解,自动生成 toString 方法 +import lombok.experimental.Accessors; // Lombok 注解,提供链式 setter 方法 -import java.io.Serializable; +import java.io.Serializable; // 实现序列化接口,便于对象持久化 /** - *

- * InnoDB free: 9216 kB - *

+ * 供应商实体类 * - * @author luoyi- - * @since 2019-12-05 + * 该类对应数据库表 "bus_provider",主要用于存储供应商的各类信息。 */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("bus_provider") -@ToString +@Data // Lombok 注解,简化代码,自动生成基本方法 +@EqualsAndHashCode(callSuper = false) // 定义 equals 和 hashCode 方法,排除父类字段 +@Accessors(chain = true) // 支持链式调用,允许连续设置属性值 +@TableName("bus_provider") // 指定与数据库表 bus_provider 进行映射 +@ToString // 生成 toString 方法,便于调试和输出对象信息 public class Provider implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 1L; // 序列化版本号,确保类的兼容性 - @TableId(value = "id", type = IdType.AUTO) - private Integer id; + @TableId(value = "id", type = IdType.AUTO) // 指定 "id" 字段为主键,自动递增 + private Integer id; // 供应商唯一标识符 - private String providername; + private String providername; // 供应商的名称 - private String zip; + private String zip; // 邮政编码,用于供应商地址 - private String address; + private String address; // 供应商所在的详细地址 - private String telephone; + private String telephone; // 供应商固定电话 - private String connectionperson; + private String connectionperson; // 供应商的联系人姓名 - private String phone; + private String phone; // 联系人联系电话 - private String bank; + private String bank; // 供应商开户银行名称 - private String account; + private String account; // 供应商的银行账号 - private String email; - - private String fax; - - private Integer available; + private String email; // 供应商电子邮箱地址 + private String fax; // 传真号码,供应商常用联系方式 + private Integer available; // 状态标识(1 表示启用,0 表示禁用) } diff --git a/src/main/java/com/yeqifu/bus/entity/Sales.java b/src/main/java/com/yeqifu/bus/entity/Sales.java index 4dc450c..3191d56 100644 --- a/src/main/java/com/yeqifu/bus/entity/Sales.java +++ b/src/main/java/com/yeqifu/bus/entity/Sales.java @@ -1,67 +1,66 @@ package com.yeqifu.bus.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; +import com.baomidou.mybatisplus.annotation.IdType; // MyBatis-Plus 注解,定义主键生成策略 +import com.baomidou.mybatisplus.annotation.TableField; // MyBatis-Plus 注解,标识非数据库字段 +import com.baomidou.mybatisplus.annotation.TableId; // MyBatis-Plus 注解,映射主键字段 +import com.baomidou.mybatisplus.annotation.TableName; // MyBatis-Plus 注解,绑定表名 +import lombok.Data; // Lombok 注解,自动生成常用方法 +import lombok.EqualsAndHashCode; // Lombok 注解,覆盖 equals 和 hashCode 方法 +import lombok.experimental.Accessors; // Lombok 注解,提供链式 setter 调用 -import java.io.Serializable; -import java.util.Date; +import java.io.Serializable; // 实现序列化接口,支持对象持久化 +import java.util.Date; // 引入 Date 类,存储日期信息 /** - *

- * InnoDB free: 9216 kB - *

+ * 销售记录类 * - * @author luoyi- - * @since 2019-12-21 + * 此类与数据库中的 "bus_sales" 表关联,用于管理销售数据。 */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("bus_sales") +@Data // 自动生成 getter、setter、toString 等方法,简化代码编写 +@EqualsAndHashCode(callSuper = false) // 定义 equals 和 hashCode,不考虑父类属性 +@Accessors(chain = true) // 启用链式调用风格,例如 sales.setPaytype("现金").setNumber(5) +@TableName("bus_sales") // 对应数据库表 bus_sales public class Sales implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 1L; // 定义序列化 ID,保证类的兼容性 - @TableId(value = "id", type = IdType.AUTO) - private Integer id; + @TableId(value = "id", type = IdType.AUTO) // 定义主键 ID,自动递增 + private Integer id; // 唯一标识销售记录的编号 - private Integer customerid; + private Integer customerid; // 客户的 ID,关联客户信息 - private String paytype; + private String paytype; // 支付类型(如:现金、转账等) - private Date salestime; + private Date salestime; // 销售发生的时间 - private String operateperson; + private String operateperson; // 记录操作人的姓名(如:销售员) - private Integer number; + private Integer number; // 出售的商品数量 - private String remark; + private String remark; // 备注信息,用于记录额外说明 - private Double saleprice; + private Double saleprice; // 商品的销售单价 - private Integer goodsid; + private Integer goodsid; // 商品的 ID,标识售出的商品 /** - * 客户名称 + * 非持久化字段:客户名称 + * 仅用于前端展示或查询时传输,不映射到数据库 */ @TableField(exist = false) - private String customername; + private String customername; // 客户的名称 /** - * 商品名称 + * 非持久化字段:商品名称 + * 仅用于结果展示 */ @TableField(exist = false) - private String goodsname; + private String goodsname; // 商品名称 /** - * 商品规格 + * 非持久化字段:商品规格 + * 主要用于展示商品详细规格 */ @TableField(exist = false) - private String size; - + private String size; // 商品规格 } diff --git a/src/main/java/com/yeqifu/bus/entity/Salesback.java b/src/main/java/com/yeqifu/bus/entity/Salesback.java index e385b78..6627c75 100644 --- a/src/main/java/com/yeqifu/bus/entity/Salesback.java +++ b/src/main/java/com/yeqifu/bus/entity/Salesback.java @@ -1,67 +1,66 @@ package com.yeqifu.bus.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; +import com.baomidou.mybatisplus.annotation.IdType; // MyBatis-Plus 注解,设置主键生成策略 +import com.baomidou.mybatisplus.annotation.TableField; // MyBatis-Plus 注解,标记非数据库字段 +import com.baomidou.mybatisplus.annotation.TableId; // MyBatis-Plus 注解,标识主键列 +import com.baomidou.mybatisplus.annotation.TableName; // MyBatis-Plus 注解,关联数据库表名 +import lombok.Data; // Lombok 注解,简化实体类,自动生成常用方法 +import lombok.EqualsAndHashCode; // Lombok 注解,生成 equals 与 hashCode 方法 +import lombok.experimental.Accessors; // Lombok 注解,支持连续调用 setter 方法 -import java.io.Serializable; -import java.util.Date; +import java.io.Serializable; // 序列化接口,用于对象的序列化和反序列化 +import java.util.Date; // Date 类,用于存储日期和时间信息 /** - *

- * InnoDB free: 9216 kB - *

+ * 销售退货记录类 * - * @author luoyi- - * @since 2019-12-23 + * 该类用于映射数据库中的 "bus_salesback" 表,专门存储销售退货相关数据。 */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("bus_salesback") +@Data // Lombok 注解,自动生成 getter、setter、toString 和 equals/hashCode 方法 +@EqualsAndHashCode(callSuper = false) // 忽略父类字段,生成当前类的 equals 和 hashCode +@Accessors(chain = true) // 支持链式调用,例如 salesback.setRemark("退货").setNumber(5) +@TableName("bus_salesback") // 指定实体类与数据库表 "bus_salesback" 对应 public class Salesback implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 1L; // 序列化的唯一版本标识符 - @TableId(value = "id", type = IdType.AUTO) - private Integer id; + @TableId(value = "id", type = IdType.AUTO) // 主键字段 id,值自动递增 + private Integer id; // 唯一标识销售退货记录的主键 - private Integer customerid; + private Integer customerid; // 关联客户的唯一编号 - private String paytype; + private String paytype; // 支付方式,比如现金、信用卡等 - private Date salesbacktime; + private Date salesbacktime; // 退货发生的具体时间 - private Double salebackprice; + private Double salebackprice; // 退货金额或退款数额 - private String operateperson; + private String operateperson; // 记录退货操作员或办理人 - private Integer number; + private Integer number; // 退货的商品数量 - private String remark; + private String remark; // 备注信息,用于补充说明退货情况 - private Integer goodsid; + private Integer goodsid; // 关联商品的唯一标识符 /** - * 客户姓名 + * 非数据库字段:客户名称 + * 用于业务逻辑或展示数据时显示客户的名字 */ @TableField(exist = false) - private String customername; + private String customername; // 客户名称,便于展示时使用 /** - * 商品名称 + * 非数据库字段:商品名称 + * 在数据传输或展示时显示商品的名称 */ @TableField(exist = false) - private String goodsname; + private String goodsname; // 商品名称 /** - * 商品规格 + * 非数据库字段:商品规格 + * 用于前端展示具体的商品规格信息 */ @TableField(exist = false) - private String size; - + private String size; // 商品规格详情 } diff --git a/src/main/java/com/yeqifu/bus/mapper/CustomerMapper.java b/src/main/java/com/yeqifu/bus/mapper/CustomerMapper.java index 0aa5f7a..2f3d7ef 100644 --- a/src/main/java/com/yeqifu/bus/mapper/CustomerMapper.java +++ b/src/main/java/com/yeqifu/bus/mapper/CustomerMapper.java @@ -1,16 +1,18 @@ package com.yeqifu.bus.mapper; -import com.yeqifu.bus.entity.Customer; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yeqifu.bus.entity.Customer; // 导入 Customer 实体类,映射数据库中的客户数据表 +import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 导入 MyBatis-Plus 提供的基础映射接口,用于简化数据库操作 /** *

- * InnoDB free: 9216 kB Mapper 接口 + * Mapper 接口,用于处理与数据库中 `Customer` 表相关的操作 *

* * @author luoyi- * @since 2019-12-05 */ -public interface CustomerMapper extends BaseMapper { +public interface CustomerMapper extends BaseMapper { // 继承 BaseMapper,获得基本的 CRUD 操作方法 } + + diff --git a/src/main/java/com/yeqifu/bus/mapper/GoodsMapper.java b/src/main/java/com/yeqifu/bus/mapper/GoodsMapper.java index cfc5b19..23dbd24 100644 --- a/src/main/java/com/yeqifu/bus/mapper/GoodsMapper.java +++ b/src/main/java/com/yeqifu/bus/mapper/GoodsMapper.java @@ -1,14 +1,14 @@ package com.yeqifu.bus.mapper; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.yeqifu.bus.entity.Goods; -import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 导入 MyBatis-Plus 提供的基础 Mapper,用于执行常见的数据库操作 +import com.yeqifu.bus.entity.Goods; // 导入商品实体类,用于与数据库中的 `Goods` 表进行映射 +import org.apache.ibatis.annotations.Param; // 导入 MyBatis 的注解,用于指定方法参数的映射 -import java.util.List; +import java.util.List; // 导入 List,用于返回多个结果 /** *

- * InnoDB free: 9216 kB; (`providerid`) REFER `warehouse/bus_provider`(`id`) Mapper 接口 + * Mapper 接口,用于处理与商品相关的数据库操作 *

* * @author luoyi- @@ -17,44 +17,44 @@ import java.util.List; public interface GoodsMapper extends BaseMapper { /** - * 根据商品id删除商品销售信息 - * @param id1 + * 删除与指定商品相关的销售记录 + * @param id1 商品的 ID */ void deleteSaleByGoodsId(@Param("goodsid") Integer id1); /** - * 根据商品id删除商品销售退货信息 - * @param id1 + * 删除与指定商品相关的销售退货记录 + * @param id1 商品的 ID */ void deleteSaleBackByGoodsId(@Param("goodsid") Integer id1); /** - * 根据商品id删除商品进货信息 - * @param id + * 删除与指定商品相关的进货记录 + * @param id 商品的 ID */ void deleteInportByGoodsId(@Param("goodsid") Integer id); - /** - * 根据商品id删除商品退货信息 - * @param id + * 删除与指定商品相关的出货记录 + * @param id 商品的 ID */ void deleteOutportByGoodsId(@Param("goodsid") Integer id); /** - * 根据客户id删除商品销售 - * @param id 客户id + * 删除指定客户的所有商品销售记录 + * @param id 客户的 ID */ void deleteSaleByCustomerId(Integer id); /** - * 根据客户id删除商品销售退货信息 - * @param id 客户id + * 删除指定客户的所有商品销售退货记录 + * @param id 客户的 ID */ void deleteSaleBackByCustomerId(Integer id); /** - * 加载所有库存预警商品 + * 获取所有库存预警商品 + * @return 返回所有预警的商品列表 */ List loadAllWarning(); } diff --git a/src/main/java/com/yeqifu/bus/mapper/InportMapper.java b/src/main/java/com/yeqifu/bus/mapper/InportMapper.java index e4939f1..c661bbd 100644 --- a/src/main/java/com/yeqifu/bus/mapper/InportMapper.java +++ b/src/main/java/com/yeqifu/bus/mapper/InportMapper.java @@ -1,7 +1,7 @@ -package com.yeqifu.bus.mapper; +package com.yeqifu.bus.mapper; // 指定当前类所在的包路径,mapper 层负责处理与数据库的交互 -import com.yeqifu.bus.entity.Inport; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yeqifu.bus.entity.Inport; // 导入 Inport 实体类,它代表了一个进货记录,映射到数据库的相应表 +import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 引入 MyBatis-Plus 提供的 BaseMapper,作为所有 Mapper 接口的基础类,自动提供常见的数据库操作方法 /** *

@@ -11,6 +11,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @author luoyi- * @since 2019-12-18 */ -public interface InportMapper extends BaseMapper { +public interface InportMapper extends BaseMapper { // 创建 InportMapper 接口,继承 BaseMapper,使得该接口可以直接与 'bus_inport' 表进行交互 + + // 目前此接口没有添加任何自定义方法 + // 由于继承了 BaseMapper,它自动具备了基础的 CRUD 操作方法 + // 例如:insert()、deleteById()、updateById()、selectList() 等,方便进行基本的增删改查操作 } diff --git a/src/main/java/com/yeqifu/bus/mapper/OutportMapper.java b/src/main/java/com/yeqifu/bus/mapper/OutportMapper.java index 5d56b9f..44e7af0 100644 --- a/src/main/java/com/yeqifu/bus/mapper/OutportMapper.java +++ b/src/main/java/com/yeqifu/bus/mapper/OutportMapper.java @@ -1,7 +1,7 @@ -package com.yeqifu.bus.mapper; +package com.yeqifu.bus.mapper; // 定义该类所在的包路径,mapper 层用于实现数据库操作 -import com.yeqifu.bus.entity.Outport; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yeqifu.bus.entity.Outport; // 引入 Outport 实体类,它表示与 'bus_outport' 表相关的出货记录 +import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 引入 MyBatis-Plus 提供的 BaseMapper,所有 Mapper 接口的父类,提供了基本的数据库操作方法 /** *

@@ -11,6 +11,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @author luoyi- * @since 2019-12-19 */ -public interface OutportMapper extends BaseMapper { +public interface OutportMapper extends BaseMapper { // 定义 OutportMapper 接口,继承 BaseMapper,便于与数据库 'bus_outport' 表交互 + + // 当前该接口没有定义任何额外的方法 + // 因为继承了 BaseMapper,所以自动拥有了 MyBatis-Plus 提供的基础 CRUD 操作方法 + // 例如:insert()、deleteById()、updateById()、selectList() 等,可以直接进行增删改查操作 } + diff --git a/src/main/java/com/yeqifu/bus/mapper/ProviderMapper.java b/src/main/java/com/yeqifu/bus/mapper/ProviderMapper.java index b0f52b9..9869894 100644 --- a/src/main/java/com/yeqifu/bus/mapper/ProviderMapper.java +++ b/src/main/java/com/yeqifu/bus/mapper/ProviderMapper.java @@ -1,8 +1,8 @@ -package com.yeqifu.bus.mapper; +package com.yeqifu.bus.mapper; // 定义此类所在的包路径,mapper 层用于与数据库进行交互 -import com.yeqifu.bus.entity.Provider; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; +import com.yeqifu.bus.entity.Provider; // 导入 Provider 实体类,表示供应商的相关信息 +import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 导入 MyBatis-Plus 提供的 BaseMapper,提供了基础的 CRUD 操作 +import org.apache.ibatis.annotations.Param; // 导入 MyBatis 注解,用于给方法参数指定别名 /** *

@@ -12,25 +12,25 @@ import org.apache.ibatis.annotations.Param; * @author luoyi- * @since 2019-12-05 */ -public interface ProviderMapper extends BaseMapper { +public interface ProviderMapper extends BaseMapper { // 创建 ProviderMapper 接口,继承自 BaseMapper,便于与数据库中的 'bus_provider' 表进行交互 /** - * 根据供应商id删除商品信息 - * @param id + * 根据供应商 ID 删除与该供应商相关的商品信息 + * @param id 供应商 ID */ - void deleteGoodsByProviderId(@Param("pid") Integer id); + void deleteGoodsByProviderId(@Param("pid") Integer id); // 根据供应商 ID 删除相关商品信息,@Param 用于指定参数名 'pid' /** - * 根据供应商id删除商品进货信息 - * @param id + * 根据供应商 ID 删除与该供应商相关的进货记录 + * @param id 供应商 ID */ - void deleteInportByProviderId(@Param("pid") Integer id); + void deleteInportByProviderId(@Param("pid") Integer id); // 根据供应商 ID 删除进货记录 /** - * 根据供应商id删除商品退货信息 - * @param id + * 根据供应商 ID 删除与该供应商相关的商品退货记录 + * @param id 供应商 ID */ - void deleteOutPortByProviderId(@Param("pid") Integer id); - + void deleteOutPortByProviderId(@Param("pid") Integer id); // 根据供应商 ID 删除商品退货记录 } + diff --git a/src/main/java/com/yeqifu/bus/mapper/SalesMapper.java b/src/main/java/com/yeqifu/bus/mapper/SalesMapper.java index ef9c4c9..6e26d88 100644 --- a/src/main/java/com/yeqifu/bus/mapper/SalesMapper.java +++ b/src/main/java/com/yeqifu/bus/mapper/SalesMapper.java @@ -1,7 +1,7 @@ -package com.yeqifu.bus.mapper; +package com.yeqifu.bus.mapper; // 定义该接口所在的包路径,mapper 层用于与数据库进行交互操作 -import com.yeqifu.bus.entity.Sales; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yeqifu.bus.entity.Sales; // 导入 Sales 实体类,Sales 类包含销售记录相关的数据字段 +import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 引入 MyBatis-Plus 提供的 BaseMapper,BaseMapper 是所有 Mapper 接口的基础类,包含常见的 CRUD 操作方法 /** *

@@ -11,6 +11,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @author luoyi- * @since 2019-12-21 */ -public interface SalesMapper extends BaseMapper { - +public interface SalesMapper extends BaseMapper { // 创建 SalesMapper 接口,继承 BaseMapper,表示与数据库中的 'bus_sales' 表进行交互 + // BaseMapper 接口自动提供所有常用的 CRUD 操作方法,包括 insert、delete、update 和 select 等 } diff --git a/src/main/java/com/yeqifu/bus/mapper/SalesbackMapper.java b/src/main/java/com/yeqifu/bus/mapper/SalesbackMapper.java index 2a047f9..bc042ec 100644 --- a/src/main/java/com/yeqifu/bus/mapper/SalesbackMapper.java +++ b/src/main/java/com/yeqifu/bus/mapper/SalesbackMapper.java @@ -1,7 +1,7 @@ -package com.yeqifu.bus.mapper; +package com.yeqifu.bus.mapper; // 定义该接口所在的包路径,mapper 层负责与数据库进行交互 -import com.yeqifu.bus.entity.Salesback; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yeqifu.bus.entity.Salesback; // 引入 Salesback 实体类,Salesback 类代表销售退货相关的数据 +import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 引入 MyBatis-Plus 提供的 BaseMapper,BaseMapper 是 MyBatis-Plus 的基础接口,包含常见的 CRUD 操作方法 /** *

@@ -11,6 +11,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @author luoyi- * @since 2019-12-23 */ -public interface SalesbackMapper extends BaseMapper { - +public interface SalesbackMapper extends BaseMapper { // 创建 SalesbackMapper 接口,继承 BaseMapper,表示与数据库中的 'bus_salesback' 表进行交互 + // 由于继承了 BaseMapper,SalesbackMapper 已自动具备所有常用的 CRUD 操作,如 insert、delete、update、select 等方法 } diff --git a/src/main/java/com/yeqifu/bus/service/ICustomerService.java b/src/main/java/com/yeqifu/bus/service/ICustomerService.java index ea5614d..0300c1e 100644 --- a/src/main/java/com/yeqifu/bus/service/ICustomerService.java +++ b/src/main/java/com/yeqifu/bus/service/ICustomerService.java @@ -1,21 +1,20 @@ -package com.yeqifu.bus.service; +package com.yeqifu.bus.service; // 定义该接口所在的包路径,属于业务层接口 -import com.yeqifu.bus.entity.Customer; -import com.baomidou.mybatisplus.extension.service.IService; +import com.yeqifu.bus.entity.Customer; // 导入客户实体类 Customer,表示客户数据 +import com.baomidou.mybatisplus.extension.service.IService; // 导入 MyBatis-Plus 提供的 IService 接口,包含通用的 CRUD 操作 /** *

- * InnoDB free: 9216 kB 服务类 + * 客户服务接口 *

* - * @author luoyi- * @since 2019-12-05 */ -public interface ICustomerService extends IService { +public interface ICustomerService extends IService { // 继承 IService 接口,泛型为 Customer,表示该接口提供 Customer 实体的基本业务操作 /** * 根据客户id删除客户 - * @param id 客户id + * @param id 客户id */ - void deleteCustomerById(Integer id); + void deleteCustomerById(Integer id); // 声明一个根据客户ID删除客户的抽象方法 } diff --git a/src/main/java/com/yeqifu/bus/service/IGoodsService.java b/src/main/java/com/yeqifu/bus/service/IGoodsService.java index 21bad66..52fcc97 100644 --- a/src/main/java/com/yeqifu/bus/service/IGoodsService.java +++ b/src/main/java/com/yeqifu/bus/service/IGoodsService.java @@ -1,29 +1,28 @@ -package com.yeqifu.bus.service; +package com.yeqifu.bus.service; // 定义该接口所在的包路径,属于业务层接口 -import com.baomidou.mybatisplus.extension.service.IService; -import com.yeqifu.bus.entity.Goods; +import com.baomidou.mybatisplus.extension.service.IService; // 导入 MyBatis-Plus 提供的 IService 接口,包含通用的 CRUD 操作 +import com.yeqifu.bus.entity.Goods; // 导入商品实体类 Goods,表示商品相关数据 -import java.util.List; +import java.util.List; // 导入 List 类,用于返回多个商品 /** *

- * InnoDB free: 9216 kB; (`providerid`) REFER `warehouse/bus_provider`(`id`) 服务类 + * 商品服务接口 *

* - * @author luoyi- * @since 2019-12-06 */ -public interface IGoodsService extends IService { +public interface IGoodsService extends IService { // 继承 IService 接口,泛型为 Goods,表示该接口提供 Goods 实体的基本业务操作 /** * 根据商品id删除商品 - * @param id + * @param id 商品id */ - void deleteGoodsById(Integer id); + void deleteGoodsById(Integer id); // 声明一个根据商品ID删除商品的抽象方法 /** * 加载所有的库存预警商品 - * @return + * @return 返回所有库存预警商品的列表 */ - List loadAllWarning(); + List loadAllWarning(); // 声明一个方法,用于加载所有库存预警商品 } diff --git a/src/main/java/com/yeqifu/bus/service/IInportService.java b/src/main/java/com/yeqifu/bus/service/IInportService.java index 2e88cd2..c6d1eb2 100644 --- a/src/main/java/com/yeqifu/bus/service/IInportService.java +++ b/src/main/java/com/yeqifu/bus/service/IInportService.java @@ -1,16 +1,14 @@ -package com.yeqifu.bus.service; +package com.yeqifu.bus.service; // 定义该接口所在的包路径,属于业务层接口 -import com.yeqifu.bus.entity.Inport; -import com.baomidou.mybatisplus.extension.service.IService; +import com.yeqifu.bus.entity.Inport; // 导入商品进货实体类 Inport,表示商品进货相关数据 +import com.baomidou.mybatisplus.extension.service.IService; // 导入 MyBatis-Plus 提供的 IService 接口,包含通用的 CRUD 操作 /** *

- * InnoDB free: 9216 kB; (`providerid`) REFER `warehouse/bus_provider`(`id`); (`goo 服务类 + * 商品进货服务接口 *

* - * @author luoyi- * @since 2019-12-18 */ -public interface IInportService extends IService { - +public interface IInportService extends IService { // 继承 IService 接口,泛型为 Inport,表示该接口提供 Inport 实体的基本业务操作 } diff --git a/src/main/java/com/yeqifu/bus/service/IOutportService.java b/src/main/java/com/yeqifu/bus/service/IOutportService.java index a98f414..5a4a2d6 100644 --- a/src/main/java/com/yeqifu/bus/service/IOutportService.java +++ b/src/main/java/com/yeqifu/bus/service/IOutportService.java @@ -1,17 +1,16 @@ -package com.yeqifu.bus.service; +package com.yeqifu.bus.service; // 定义该接口所在的包路径,属于业务层接口 -import com.yeqifu.bus.entity.Outport; -import com.baomidou.mybatisplus.extension.service.IService; +import com.yeqifu.bus.entity.Outport; // 导入商品退货实体类 Outport,表示商品退货相关数据 +import com.baomidou.mybatisplus.extension.service.IService; // 导入 MyBatis-Plus 提供的 IService 接口,包含通用的 CRUD 操作 /** *

- * InnoDB free: 9216 kB 服务类 + * 商品退货服务接口 *

* - * @author luoyi- * @since 2019-12-19 */ -public interface IOutportService extends IService { +public interface IOutportService extends IService { // 继承 IService 接口,泛型为 Outport,表示该接口提供 Outport 实体的基本业务操作 /** * 对商品进货进行退货处理 @@ -19,5 +18,5 @@ public interface IOutportService extends IService { * @param number 退货数量 * @param remark 备注 */ - void addOutport(Integer id, Integer number, String remark); + void addOutport(Integer id, Integer number, String remark); // 自定义方法:添加退货处理,接收进货单ID、退货数量和备注 } diff --git a/src/main/java/com/yeqifu/bus/service/IProviderService.java b/src/main/java/com/yeqifu/bus/service/IProviderService.java index 9433a09..ef4fca0 100644 --- a/src/main/java/com/yeqifu/bus/service/IProviderService.java +++ b/src/main/java/com/yeqifu/bus/service/IProviderService.java @@ -1,21 +1,21 @@ -package com.yeqifu.bus.service; +package com.yeqifu.bus.service; // 定义该接口所在的包路径,属于业务层接口 -import com.yeqifu.bus.entity.Provider; -import com.baomidou.mybatisplus.extension.service.IService; +import com.yeqifu.bus.entity.Provider; // 导入供应商实体类 Provider,表示供应商相关的数据 +import com.baomidou.mybatisplus.extension.service.IService; // 导入 MyBatis-Plus 提供的 IService 接口,包含通用的 CRUD 操作 /** *

- * InnoDB free: 9216 kB 服务类 + * 供应商服务接口 *

* - * @author luoyi- * @since 2019-12-05 */ -public interface IProviderService extends IService { +public interface IProviderService extends IService { // 继承 IService 接口,泛型为 Provider,表示该接口提供 Provider 实体的基本业务操作 /** * 根据供应商ID删除供应商 - * @param id + * @param id 供应商ID */ - void deleteProviderById(Integer id); + void deleteProviderById(Integer id); // 自定义方法:根据供应商ID删除供应商及其相关信息 } + diff --git a/src/main/java/com/yeqifu/bus/service/ISalesService.java b/src/main/java/com/yeqifu/bus/service/ISalesService.java index 27f7d49..cee9a71 100644 --- a/src/main/java/com/yeqifu/bus/service/ISalesService.java +++ b/src/main/java/com/yeqifu/bus/service/ISalesService.java @@ -1,16 +1,14 @@ -package com.yeqifu.bus.service; +package com.yeqifu.bus.service; // 定义该接口所在的包路径,属于业务层接口 -import com.yeqifu.bus.entity.Sales; -import com.baomidou.mybatisplus.extension.service.IService; +import com.yeqifu.bus.entity.Sales; // 导入商品销售实体类 Sales,表示商品销售相关的数据 +import com.baomidou.mybatisplus.extension.service.IService; // 导入 MyBatis-Plus 提供的 IService 接口,包含通用的 CRUD 操作 /** *

- * InnoDB free: 9216 kB 服务类 + * 商品销售服务接口 *

* - * @author luoyi- * @since 2019-12-21 */ -public interface ISalesService extends IService { - +public interface ISalesService extends IService { // 继承 IService 接口,泛型为 Sales,表示该接口提供 Sales 实体的基本业务操作 } diff --git a/src/main/java/com/yeqifu/bus/service/ISalesbackService.java b/src/main/java/com/yeqifu/bus/service/ISalesbackService.java index e2cfd95..e871a66 100644 --- a/src/main/java/com/yeqifu/bus/service/ISalesbackService.java +++ b/src/main/java/com/yeqifu/bus/service/ISalesbackService.java @@ -1,17 +1,16 @@ -package com.yeqifu.bus.service; +package com.yeqifu.bus.service; // 定义该接口所在的包路径,属于业务层接口 -import com.yeqifu.bus.entity.Salesback; -import com.baomidou.mybatisplus.extension.service.IService; +import com.yeqifu.bus.entity.Salesback; // 导入商品销售退货实体类 Salesback,表示销售退货相关的数据 +import com.baomidou.mybatisplus.extension.service.IService; // 导入 MyBatis-Plus 提供的 IService 接口,包含通用的 CRUD 操作 /** *

- * InnoDB free: 9216 kB 服务类 + * 商品销售退货服务接口 *

* - * @author luoyi- * @since 2019-12-23 */ -public interface ISalesbackService extends IService { +public interface ISalesbackService extends IService { // 继承 IService 接口,泛型为 Salesback,表示该接口提供 Salesback 实体的基本业务操作 /** * 对商品销售进行退货处理 @@ -19,6 +18,5 @@ public interface ISalesbackService extends IService { * @param number 退货数量 * @param remark 备注 */ - void addSalesback(Integer id, Integer number, String remark); - + void addSalesback(Integer id, Integer number, String remark); // 自定义方法:根据销售单ID、退货数量和备注处理商品销售退货 } diff --git a/src/main/java/com/yeqifu/bus/service/impl/CustomerServiceImpl.java b/src/main/java/com/yeqifu/bus/service/impl/CustomerServiceImpl.java index 70f290f..e0b8489 100644 --- a/src/main/java/com/yeqifu/bus/service/impl/CustomerServiceImpl.java +++ b/src/main/java/com/yeqifu/bus/service/impl/CustomerServiceImpl.java @@ -1,66 +1,74 @@ -package com.yeqifu.bus.service.impl; +package com.yeqifu.bus.service.impl; // 定义服务实现类所在的包路径,负责业务逻辑层的实现 -import com.yeqifu.bus.entity.Customer; -import com.yeqifu.bus.mapper.CustomerMapper; -import com.yeqifu.bus.mapper.GoodsMapper; -import com.yeqifu.bus.service.ICustomerService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; +import com.yeqifu.bus.entity.Customer; // 导入 Customer 实体类,表示客户相关的信息 +import com.yeqifu.bus.mapper.CustomerMapper; // 导入 CustomerMapper,用于与数据库交互 +import com.yeqifu.bus.mapper.GoodsMapper; // 导入 GoodsMapper,用于操作商品相关的数据库表 +import com.yeqifu.bus.service.ICustomerService; // 导入 ICustomerService 接口,定义了客户服务的业务方法 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; // 引入 MyBatis-Plus 提供的 ServiceImpl 基础服务实现类 +import org.springframework.beans.factory.annotation.Autowired; // 引入自动注入的注解 +import org.springframework.stereotype.Service; // 声明该类为 Spring 服务类 +import org.springframework.transaction.annotation.Transactional; // 引入事务管理注解,用于处理事务 -import java.io.Serializable; -import java.util.Collection; +import java.io.Serializable; // 引入 Serializable 接口,用于支持对象的序列化 +import java.util.Collection; // 引入集合类,用于处理多个客户的删除 /** *

- * InnoDB free: 9216 kB 服务实现类 + * 服务实现类,用于处理客户相关的业务逻辑。 *

* * @author luoyi- * @since 2019-12-05 */ -@Service -@Transactional +@Service // 表示这是一个 Spring 服务类 +@Transactional // 表示该类中的方法需要事务管理 public class CustomerServiceImpl extends ServiceImpl implements ICustomerService { + // 自动注入 GoodsMapper,用于删除与客户相关的商品销售和销售退货记录 @Autowired private GoodsMapper goodsMapper; + // 覆盖 save 方法,保存客户实体 @Override public boolean save(Customer entity) { - return super.save(entity); + return super.save(entity); // 调用父类的 save 方法 } + // 覆盖 updateById 方法,根据 ID 更新客户实体 @Override public boolean updateById(Customer entity) { - return super.updateById(entity); + return super.updateById(entity); // 调用父类的 updateById 方法 } + // 覆盖 removeById 方法,根据 ID 删除客户 @Override public boolean removeById(Serializable id) { - return super.removeById(id); + return super.removeById(id); // 调用父类的 removeById 方法 } + + // 覆盖 getById 方法,根据 ID 获取客户实体 @Override public Customer getById(Serializable id) { - return super.getById(id); + return super.getById(id); // 调用父类的 getById 方法 } + // 覆盖 removeByIds 方法,批量删除客户 @Override public boolean removeByIds(Collection idList) { - return super.removeByIds(idList); + return super.removeByIds(idList); // 调用父类的 removeByIds 方法 } /** - * 根据客户id删除客户 - * @param id 客户id + * 根据客户id删除客户及其相关的销售和退货记录 + * @param id 客户id */ @Override public void deleteCustomerById(Integer id) { - //根据客户id删除商品销售 + // 根据客户id删除该客户的商品销售记录 goodsMapper.deleteSaleByCustomerId(id); - //根据客户id删除商品销售退货 + // 根据客户id删除该客户的商品销售退货记录 goodsMapper.deleteSaleBackByCustomerId(id); + // 删除客户本身 this.removeById(id); } } diff --git a/src/main/java/com/yeqifu/bus/service/impl/GoodsServiceImpl.java b/src/main/java/com/yeqifu/bus/service/impl/GoodsServiceImpl.java index eeee63a..85f33a5 100644 --- a/src/main/java/com/yeqifu/bus/service/impl/GoodsServiceImpl.java +++ b/src/main/java/com/yeqifu/bus/service/impl/GoodsServiceImpl.java @@ -1,68 +1,77 @@ -package com.yeqifu.bus.service.impl; +package com.yeqifu.bus.service.impl; // 定义服务实现类所在的包路径,负责商品相关的业务逻辑 -import com.yeqifu.bus.entity.Goods; -import com.yeqifu.bus.mapper.GoodsMapper; -import com.yeqifu.bus.service.IGoodsService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; +import com.yeqifu.bus.entity.Goods; // 导入 Goods 实体类,表示商品信息 +import com.yeqifu.bus.mapper.GoodsMapper; // 导入 GoodsMapper,执行商品相关的数据库操作 +import com.yeqifu.bus.service.IGoodsService; // 导入 IGoodsService 接口,定义了商品服务的业务方法 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; // 引入 MyBatis-Plus 提供的 ServiceImpl 类,提供基础服务实现 +import org.springframework.stereotype.Service; // 声明该类为 Spring 服务类 +import org.springframework.transaction.annotation.Transactional; // 引入事务管理注解,用于处理事务 -import java.io.Serializable; -import java.util.List; +import java.io.Serializable; // 引入 Serializable 接口,用于支持对象的序列化 +import java.util.List; // 引入 List 集合类,用于处理商品的列表 /** *

- * InnoDB free: 9216 kB; (`providerid`) REFER `warehouse/bus_provider`(`id`) 服务实现类 + * 服务实现类,处理商品相关的业务逻辑。 *

* * @author luoyi- * @since 2019-12-06 */ -@Service -@Transactional +@Service // 表示这是一个 Spring 服务类 +@Transactional // 该类中的方法都将被事务管理,确保一致性 public class GoodsServiceImpl extends ServiceImpl implements IGoodsService { + // 覆盖 save 方法,保存商品实体 @Override public boolean save(Goods entity) { - return super.save(entity); + return super.save(entity); // 调用父类的 save 方法 } + // 覆盖 updateById 方法,根据商品 ID 更新商品实体 @Override public boolean updateById(Goods entity) { - return super.updateById(entity); + return super.updateById(entity); // 调用父类的 updateById 方法 } + // 覆盖 removeById 方法,根据商品 ID 删除商品 @Override public boolean removeById(Serializable id) { - return super.removeById(id); + return super.removeById(id); // 调用父类的 removeById 方法 } + // 覆盖 getById 方法,根据商品 ID 获取商品实体 @Override public Goods getById(Serializable id) { - return super.getById(id); + return super.getById(id); // 调用父类的 getById 方法 } + /** + * 根据商品 ID 删除商品及其相关记录 + * @param id 商品 ID + */ @Override public void deleteGoodsById(Integer id) { - //根据商品id删除商品销售信息 + // 根据商品 ID 删除商品销售信息 this.getBaseMapper().deleteSaleByGoodsId(id); - //根据商品id删除商品销售退货信息 + // 根据商品 ID 删除商品销售退货信息 this.getBaseMapper().deleteSaleBackByGoodsId(id); - //根据商品id删除商品进货信息 + // 根据商品 ID 删除商品进货信息 this.getBaseMapper().deleteInportByGoodsId(id); - //根据商品id删除商品退货信息 + // 根据商品 ID 删除商品退货信息 this.getBaseMapper().deleteOutportByGoodsId(id); - //删除商品信息 + // 删除商品信息 this.removeById(id); } /** * 查询所有库存预警商品 - * @return + * @return 返回库存预警商品列表 */ @Override public List loadAllWarning() { - List goods = baseMapper.loadAllWarning(); + List goods = baseMapper.loadAllWarning(); // 调用 mapper 查询所有库存预警商品 return goods; } } + diff --git a/src/main/java/com/yeqifu/bus/service/impl/InportServiceImpl.java b/src/main/java/com/yeqifu/bus/service/impl/InportServiceImpl.java index ef15d91..4f95798 100644 --- a/src/main/java/com/yeqifu/bus/service/impl/InportServiceImpl.java +++ b/src/main/java/com/yeqifu/bus/service/impl/InportServiceImpl.java @@ -1,80 +1,84 @@ package com.yeqifu.bus.service.impl; -import com.yeqifu.bus.entity.Goods; -import com.yeqifu.bus.entity.Inport; -import com.yeqifu.bus.mapper.GoodsMapper; -import com.yeqifu.bus.mapper.InportMapper; -import com.yeqifu.bus.service.IInportService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; +import com.yeqifu.bus.entity.Goods; // 导入 Goods 实体类,表示商品信息 +import com.yeqifu.bus.entity.Inport; // 导入 Inport 实体类,表示商品进货信息 +import com.yeqifu.bus.mapper.GoodsMapper; // 导入 GoodsMapper,用于执行商品相关的数据库操作 +import com.yeqifu.bus.mapper.InportMapper; // 导入 InportMapper,用于执行商品进货相关的数据库操作 +import com.yeqifu.bus.service.IInportService; // 导入 IInportService 接口,定义商品进货服务的业务方法 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; // 引入 MyBatis-Plus 提供的 ServiceImpl 类,提供基础服务实现 +import org.springframework.beans.factory.annotation.Autowired; // 引入 Autowired 注解,用于自动注入依赖 +import org.springframework.stereotype.Service; // 声明该类为 Spring 服务类 +import org.springframework.transaction.annotation.Transactional; // 引入事务管理注解,用于处理事务 -import java.io.Serializable; +import java.io.Serializable; // 引入 Serializable 接口,用于支持对象的序列化 /** *

- * InnoDB free: 9216 kB; (`providerid`) REFER `warehouse/bus_provider`(`id`); (`goo 服务实现类 + * 服务实现类,处理商品进货相关的业务逻辑。 *

* * @author luoyi- * @since 2019-12-18 */ -@Service -@Transactional +@Service // 表示这是一个 Spring 服务类 +@Transactional // 该类中的方法都将被事务管理,确保一致性 public class InportServiceImpl extends ServiceImpl implements IInportService { @Autowired - private GoodsMapper goodsMapper; + private GoodsMapper goodsMapper; // 自动注入 GoodsMapper,用于查询和更新商品信息 /** - * 保存商品进货 - * @param entity - * @return + * 保存商品进货信息 + * @param entity 进货实体,包含进货的商品信息 + * @return 如果保存成功返回 true,否则返回 false */ @Override public boolean save(Inport entity) { - //根据商品ID查询商品 + // 根据商品ID查询商品信息 Goods goods = goodsMapper.selectById(entity.getGoodsid()); - goods.setNumber(goods.getNumber()+entity.getNumber()); + // 更新商品库存:当前库存 + 进货数量 + goods.setNumber(goods.getNumber() + entity.getNumber()); + // 更新商品库存信息 goodsMapper.updateById(goods); - //保存进货信息 + // 保存进货信息 return super.save(entity); } /** - * 更新商品进货 - * @param entity - * @return + * 更新商品进货信息 + * @param entity 进货实体,包含进货的商品信息 + * @return 如果更新成功返回 true,否则返回 false */ @Override public boolean updateById(Inport entity) { - //根据进货ID查询进货信息 + // 根据进货ID查询当前进货记录 Inport inport = baseMapper.selectById(entity.getId()); - //根据商品ID查询商品信息 + // 根据商品ID查询商品信息 Goods goods = goodsMapper.selectById(entity.getGoodsid()); - //库存算法 当前库存-进货单修改之前的数量+修改之后的数量 - goods.setNumber(goods.getNumber()-inport.getNumber()+entity.getNumber()); + // 更新库存:当前库存 - 旧进货数量 + 新进货数量 + goods.setNumber(goods.getNumber() - inport.getNumber() + entity.getNumber()); + // 更新商品库存信息 goodsMapper.updateById(goods); - //更新进货单 + // 更新进货记录 return super.updateById(entity); } /** * 删除商品进货信息 - * @param id - * @return + * @param id 进货记录ID + * @return 如果删除成功返回 true,否则返回 false */ @Override public boolean removeById(Serializable id) { - //根据进货ID查询进货信息 + // 根据进货ID查询进货记录 Inport inport = baseMapper.selectById(id); - //根据商品ID查询商品信息 + // 根据商品ID查询商品信息 Goods goods = goodsMapper.selectById(inport.getGoodsid()); - //库存算法 当前库存-进货单数量 - goods.setNumber(goods.getNumber()-inport.getNumber()); + // 更新库存:当前库存 - 被删除的进货数量 + goods.setNumber(goods.getNumber() - inport.getNumber()); + // 更新商品库存信息 goodsMapper.updateById(goods); - //更新商品的数量 + // 删除进货记录 return super.removeById(id); } } diff --git a/src/main/java/com/yeqifu/bus/service/impl/OutportServiceImpl.java b/src/main/java/com/yeqifu/bus/service/impl/OutportServiceImpl.java index 8f161ca..8cf14ac 100644 --- a/src/main/java/com/yeqifu/bus/service/impl/OutportServiceImpl.java +++ b/src/main/java/com/yeqifu/bus/service/impl/OutportServiceImpl.java @@ -1,71 +1,75 @@ package com.yeqifu.bus.service.impl; -import com.yeqifu.bus.entity.Goods; -import com.yeqifu.bus.entity.Inport; -import com.yeqifu.bus.entity.Outport; -import com.yeqifu.bus.mapper.GoodsMapper; -import com.yeqifu.bus.mapper.InportMapper; -import com.yeqifu.bus.mapper.OutportMapper; -import com.yeqifu.bus.service.IOutportService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yeqifu.sys.common.WebUtils; -import com.yeqifu.sys.entity.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; +import com.yeqifu.bus.entity.Goods; // 导入 Goods 实体类,表示商品信息 +import com.yeqifu.bus.entity.Inport; // 导入 Inport 实体类,表示商品进货记录 +import com.yeqifu.bus.entity.Outport; // 导入 Outport 实体类,表示商品退货记录 +import com.yeqifu.bus.mapper.GoodsMapper; // 导入 GoodsMapper,用于查询和更新商品信息 +import com.yeqifu.bus.mapper.InportMapper; // 导入 InportMapper,用于查询进货记录 +import com.yeqifu.bus.mapper.OutportMapper; // 导入 OutportMapper,用于插入退货记录 +import com.yeqifu.bus.service.IOutportService; // 导入 IOutportService 接口,定义出货服务的业务方法 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; // 引入 MyBatis-Plus 提供的 ServiceImpl 类,提供基础服务实现 +import com.yeqifu.sys.common.WebUtils; // 导入 WebUtils,用于获取当前登录的用户信息 +import com.yeqifu.sys.entity.User; // 导入 User 实体类,表示当前登录的用户信息 +import org.springframework.beans.factory.annotation.Autowired; // 引入 Autowired 注解,用于自动注入依赖 +import org.springframework.stereotype.Service; // 声明该类为 Spring 服务类 -import java.util.Date; +import java.util.Date; // 导入 Date 类,用于设置退货时间 /** *

- * InnoDB free: 9216 kB 服务实现类 + * 服务实现类,处理商品退货相关的业务逻辑。 *

* * @author luoyi- * @since 2019-12-19 */ -@Service +@Service // 表示这是一个 Spring 服务类 public class OutportServiceImpl extends ServiceImpl implements IOutportService { @Autowired - private InportMapper inportMapper; + private InportMapper inportMapper; // 自动注入 InportMapper,用于查询进货记录 @Autowired - private GoodsMapper goodsMapper; + private GoodsMapper goodsMapper; // 自动注入 GoodsMapper,用于查询和更新商品信息 /** - * @param id 进货单ID - * @param number 退货数量 - * @param remark 备注 + * 处理商品退货逻辑 + * @param id 进货单ID + * @param number 退货数量 + * @param remark 备注 */ @Override public void addOutport(Integer id, Integer number, String remark) { - //1.通过进货单ID查询出进货单信息 + // 1. 根据进货单ID查询出进货单信息 Inport inport = inportMapper.selectById(id); - //2.根据商品ID查询商品信息 + + // 2. 根据商品ID查询商品信息 Goods goods = goodsMapper.selectById(inport.getGoodsid()); - //3.修改商品的数量 商品的数量-退货的数量 - goods.setNumber(goods.getNumber()-number); - //修改进货的数量 - inport.setNumber(inport.getNumber()-number); - inportMapper.updateById(inport); + // 3. 更新商品库存,商品数量减少退货的数量 + goods.setNumber(goods.getNumber() - number); + + // 4. 更新进货记录的数量,减少退货的数量 + inport.setNumber(inport.getNumber() - number); + inportMapper.updateById(inport); // 更新进货记录 - //4.进行修改 - goodsMapper.updateById(goods); + // 5. 更新商品库存信息 + goodsMapper.updateById(goods); // 更新商品库存 - //5.添加退货单信息 + // 6. 创建并添加退货单信息 Outport outport = new Outport(); - outport.setGoodsid(inport.getGoodsid()); - outport.setNumber(number); - User user = (User) WebUtils.getSession().getAttribute("user"); - outport.setOperateperson(user.getName()); + outport.setGoodsid(inport.getGoodsid()); // 设置退货的商品ID + outport.setNumber(number); // 设置退货数量 + User user = (User) WebUtils.getSession().getAttribute("user"); // 获取当前登录的用户信息 + outport.setOperateperson(user.getName()); // 设置操作人(即当前登录的用户) - outport.setOutportprice(inport.getInportprice()); + outport.setOutportprice(inport.getInportprice()); // 设置退货价格(使用进货价格) + outport.setPaytype(inport.getPaytype()); // 设置支付类型 + outport.setOutputtime(new Date()); // 设置退货时间为当前时间 + outport.setRemark(remark); // 设置备注 + outport.setProviderid(inport.getProviderid()); // 设置供应商ID(来源于进货记录) - outport.setPaytype(inport.getPaytype()); - outport.setOutputtime(new Date()); - outport.setRemark(remark); - outport.setProviderid(inport.getProviderid()); - getBaseMapper().insert(outport); + // 7. 插入退货单记录到数据库 + getBaseMapper().insert(outport); // 使用 MyBatis-Plus 插入退货单记录 } } diff --git a/src/main/java/com/yeqifu/bus/service/impl/ProviderServiceImpl.java b/src/main/java/com/yeqifu/bus/service/impl/ProviderServiceImpl.java index 5eedfaa..465eae5 100644 --- a/src/main/java/com/yeqifu/bus/service/impl/ProviderServiceImpl.java +++ b/src/main/java/com/yeqifu/bus/service/impl/ProviderServiceImpl.java @@ -1,84 +1,86 @@ package com.yeqifu.bus.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yeqifu.bus.entity.Goods; -import com.yeqifu.bus.entity.Provider; -import com.yeqifu.bus.mapper.GoodsMapper; -import com.yeqifu.bus.mapper.ProviderMapper; -import com.yeqifu.bus.service.IProviderService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; // 导入 MyBatis-Plus QueryWrapper,用于构建查询条件 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; // 引入 MyBatis-Plus 的 ServiceImpl 类,提供基本的服务实现 +import com.yeqifu.bus.entity.Goods; // 导入 Goods 实体类,表示商品信息 +import com.yeqifu.bus.entity.Provider; // 导入 Provider 实体类,表示供应商信息 +import com.yeqifu.bus.mapper.GoodsMapper; // 导入 GoodsMapper,用于查询和更新商品数据 +import com.yeqifu.bus.mapper.ProviderMapper; // 导入 ProviderMapper,用于查询和更新供应商数据 +import com.yeqifu.bus.service.IProviderService; // 导入 IProviderService 接口,定义供应商服务接口 +import org.springframework.beans.factory.annotation.Autowired; // 导入 Autowired 注解,用于自动注入依赖 +import org.springframework.stereotype.Service; // 表示这是一个 Spring 服务类 +import org.springframework.transaction.annotation.Transactional; // 导入事务管理注解,确保数据库操作的原子性 -import java.io.Serializable; -import java.util.Collection; -import java.util.List; +import java.io.Serializable; // 导入 Serializable,用于支持可序列化的ID +import java.util.Collection; // 导入 Collection 类,支持多数据项处理 +import java.util.List; // 导入 List 类,用于存储商品列表 /** *

- * InnoDB free: 9216 kB 服务实现类 + * 供应商服务实现类,提供供应商的增、删、改、查功能。 *

* * @author luoyi- * @since 2019-12-05 */ -@Service -@Transactional +@Service // 标记为 Spring 服务类 +@Transactional // 添加事务管理,确保数据库操作的一致性 public class ProviderServiceImpl extends ServiceImpl implements IProviderService { @Autowired - private GoodsMapper goodsMapper; + private GoodsMapper goodsMapper; // 自动注入 GoodsMapper,用于与商品数据交互 @Override public boolean save(Provider entity) { - return super.save(entity); + return super.save(entity); // 调用 ServiceImpl 的 save 方法保存供应商 } @Override public boolean updateById(Provider entity) { - return super.updateById(entity); + return super.updateById(entity); // 调用 ServiceImpl 的 updateById 方法更新供应商 } @Override public boolean removeById(Serializable id) { - return super.removeById(id); + return super.removeById(id); // 调用 ServiceImpl 的 removeById 方法删除供应商 } + @Override public Provider getById(Serializable id) { - return super.getById(id); + return super.getById(id); // 调用 ServiceImpl 的 getById 方法获取供应商 } @Override public boolean removeByIds(Collection idList) { - return super.removeByIds(idList); + return super.removeByIds(idList); // 调用 ServiceImpl 的 removeByIds 方法批量删除供应商 } /** - * 根据供应商id删除供应商 - * @param id 供应商id + * 根据供应商id删除供应商及其相关数据 + * @param id 供应商id */ @Override public void deleteProviderById(Integer id) { - //根据供应商id查询出商品id + // 1. 查询所有与该供应商相关的商品 QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("providerid",id); - List goods = goodsMapper.selectList(queryWrapper); + queryWrapper.eq("providerid", id); // 使用条件查询所有 providerid 为指定 id 的商品 + List goods = goodsMapper.selectList(queryWrapper); // 执行查询,获取商品列表 + + // 2. 删除商品相关的数据 for (Goods good : goods) { - //获取一个商品id - Integer id1 = good.getId(); - //根据商品id删除商品销售信息 - goodsMapper.deleteSaleByGoodsId(id1); - //根据商品id删除商品销售退货信息 - goodsMapper.deleteSaleBackByGoodsId(id1); + Integer goodId = good.getId(); // 获取商品的 ID + // 删除商品的销售信息 + goodsMapper.deleteSaleByGoodsId(goodId); + // 删除商品的销售退货信息 + goodsMapper.deleteSaleBackByGoodsId(goodId); } - //根据供应商id删除商品退货信息 - this.getBaseMapper().deleteOutPortByProviderId(id); - //根据供应商id删除商品进货信息 - this.getBaseMapper().deleteInportByProviderId(id); - //根据供应商id删除商品 - this.getBaseMapper().deleteGoodsByProviderId(id); - //删除供应商 - this.removeById(id); + + // 3. 删除供应商相关的其他数据 + this.getBaseMapper().deleteOutPortByProviderId(id); // 删除与供应商相关的商品退货记录 + this.getBaseMapper().deleteInportByProviderId(id); // 删除与供应商相关的商品进货记录 + this.getBaseMapper().deleteGoodsByProviderId(id); // 删除与供应商相关的商品记录 + + // 4. 删除供应商 + this.removeById(id); // 删除供应商自身 } } diff --git a/src/main/java/com/yeqifu/bus/service/impl/SalesServiceImpl.java b/src/main/java/com/yeqifu/bus/service/impl/SalesServiceImpl.java index df0290c..75daaee 100644 --- a/src/main/java/com/yeqifu/bus/service/impl/SalesServiceImpl.java +++ b/src/main/java/com/yeqifu/bus/service/impl/SalesServiceImpl.java @@ -1,75 +1,81 @@ -package com.yeqifu.bus.service.impl; +package com.yeqifu.bus.service.impl; // 定义该类所在的包路径,属于业务层实现 -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yeqifu.bus.entity.Goods; -import com.yeqifu.bus.entity.Sales; -import com.yeqifu.bus.mapper.GoodsMapper; -import com.yeqifu.bus.mapper.SalesMapper; -import com.yeqifu.bus.service.ISalesService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; // 引入 MyBatis-Plus 提供的基础服务类 ServiceImpl,提供基本的 CRUD 操作 +import com.yeqifu.bus.entity.Goods; // 导入商品实体类 Goods,表示商品数据 +import com.yeqifu.bus.entity.Sales; // 导入销售实体类 Sales,表示销售数据 +import com.yeqifu.bus.mapper.GoodsMapper; // 导入商品数据的 Mapper 接口,用于商品表的数据库操作 +import com.yeqifu.bus.mapper.SalesMapper; // 导入销售数据的 Mapper 接口,用于销售表的数据库操作 +import com.yeqifu.bus.service.ISalesService; // 导入销售业务层接口,用于定义销售相关的业务逻辑 +import org.springframework.beans.factory.annotation.Autowired; // 导入注解 Autowired,表示自动注入依赖 +import org.springframework.stereotype.Service; // 导入注解 Service,标识当前类为 Spring 服务组件 -import java.io.Serializable; +import java.io.Serializable; // 导入 Serializable 接口,允许序列化 /** *

- * InnoDB free: 9216 kB 服务实现类 + * 商品销售服务实现类 *

* - * @author luoyi- * @since 2019-12-21 */ -@Service +@Service // 使用 Spring 的注解将该类声明为服务层组件,Spring 会管理该类的实例 public class SalesServiceImpl extends ServiceImpl implements ISalesService { - @Autowired + @Autowired // 自动注入 GoodsMapper,用于操作商品数据 private GoodsMapper goodsMapper; /** * 添加商品销售 - * @param entity 商品销售实体类 - * @return + * @param entity 商品销售实体类 + * @return 操作成功或失败 */ @Override public boolean save(Sales entity) { + // 根据销售单中的商品ID查询该商品的信息 Goods goods = goodsMapper.selectById(entity.getGoodsid()); - goods.setNumber(goods.getNumber()-entity.getNumber()); - //更新商品的库存信息 + // 更新商品的库存,扣除销售数量 + goods.setNumber(goods.getNumber() - entity.getNumber()); + // 更新商品库存信息 goodsMapper.updateById(goods); + // 保存销售单信息 return super.save(entity); } /** * 更新商品销售 - * @param entity 商品销售实体类 - * @return + * @param entity 商品销售实体类 + * @return 操作成功或失败 */ @Override public boolean updateById(Sales entity) { - //根据销售单ID查询销售单信息 + // 根据销售单ID查询出原始的销售单信息 Sales sales = baseMapper.selectById(entity.getId()); + // 根据商品ID查询商品信息 Goods goods = goodsMapper.selectById(entity.getGoodsid()); - //仓库商品数量=原库存-销售单修改之前的数量+修改之后的数量 - // 80 +40 - 50 30 - goods.setNumber(goods.getNumber()+sales.getNumber()-entity.getNumber()); - //更新商品 + // 更新商品库存,计算新的库存数量 + goods.setNumber(goods.getNumber() + sales.getNumber() - entity.getNumber()); + // 更新商品信息 goodsMapper.updateById(goods); + // 更新销售单信息 return super.updateById(entity); } /** * 删除商品销售信息 - * @param id 商品销售单ID - * @return + * @param id 商品销售单ID + * @return 操作成功或失败 */ @Override public boolean removeById(Serializable id) { - //根据商品销售单ID查询出销售单数据 + // 根据商品销售单ID查询出销售单数据 Sales sales = baseMapper.selectById(id); + // 根据商品ID查询商品信息 Goods goods = goodsMapper.selectById(sales.getGoodsid()); - //仓库商品数量=原库存+删除商品销售单的数量 - goods.setNumber(goods.getNumber()+sales.getNumber()); + // 更新商品库存,回退销售单中的销售数量 + goods.setNumber(goods.getNumber() + sales.getNumber()); + // 更新商品库存信息 goodsMapper.updateById(goods); + // 删除销售单信息 return super.removeById(id); } } diff --git a/src/main/java/com/yeqifu/bus/service/impl/SalesbackServiceImpl.java b/src/main/java/com/yeqifu/bus/service/impl/SalesbackServiceImpl.java index 2161996..f08b0bf 100644 --- a/src/main/java/com/yeqifu/bus/service/impl/SalesbackServiceImpl.java +++ b/src/main/java/com/yeqifu/bus/service/impl/SalesbackServiceImpl.java @@ -1,78 +1,76 @@ -package com.yeqifu.bus.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.yeqifu.bus.entity.Goods; -import com.yeqifu.bus.entity.Sales; -import com.yeqifu.bus.entity.Salesback; -import com.yeqifu.bus.mapper.GoodsMapper; -import com.yeqifu.bus.mapper.SalesMapper; -import com.yeqifu.bus.mapper.SalesbackMapper; -import com.yeqifu.bus.service.ISalesbackService; -import com.yeqifu.sys.common.WebUtils; -import com.yeqifu.sys.entity.User; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Date; +package com.yeqifu.bus.service.impl; // 定义该类所在的包路径,属于业务层实现 + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; // 引入 MyBatis-Plus 提供的基础服务类 ServiceImpl,提供基本的 CRUD 操作 +import com.yeqifu.bus.entity.Goods; // 导入商品实体类 Goods,表示商品数据 +import com.yeqifu.bus.entity.Sales; // 导入销售实体类 Sales,表示销售数据 +import com.yeqifu.bus.entity.Salesback; // 导入销售退货实体类 Salesback,表示销售退货数据 +import com.yeqifu.bus.mapper.GoodsMapper; // 导入商品数据的 Mapper 接口,用于商品表的数据库操作 +import com.yeqifu.bus.mapper.SalesMapper; // 导入销售数据的 Mapper 接口,用于销售表的数据库操作 +import com.yeqifu.bus.mapper.SalesbackMapper; // 导入销售退货数据的 Mapper 接口,用于销售退货表的数据库操作 +import com.yeqifu.bus.service.ISalesbackService; // 导入销售退货业务层接口,用于定义销售退货相关的业务逻辑 +import com.yeqifu.sys.common.WebUtils; // 导入 WebUtils 工具类,用于处理与用户会话相关的操作 +import com.yeqifu.sys.entity.User; // 导入用户实体类 User,表示用户数据 +import org.springframework.beans.factory.annotation.Autowired; // 导入注解 Autowired,表示自动注入依赖 +import org.springframework.stereotype.Service; // 导入注解 Service,标识当前类为 Spring 服务组件 + +import java.util.Date; // 导入 Date 类,用于操作日期和时间 /** *

- * InnoDB free: 9216 kB 服务实现类 + * 销售退货业务层实现类 *

* - * @author luoyi- * @since 2019-12-23 */ -@Service +@Service // 使用 Spring 的注解将该类声明为服务层组件,Spring 会管理该类的实例 public class SalesbackServiceImpl extends ServiceImpl implements ISalesbackService { - @Autowired + @Autowired // 自动注入 SalesMapper,用于操作销售数据 private SalesMapper salesMapper; - @Autowired + @Autowired // 自动注入 GoodsMapper,用于操作商品数据 private GoodsMapper goodsMapper; /** - * @param id 销售单ID - * @param number 退货数量 - * @param remark 备注 + * 根据销售单ID、退货数量和备注添加销售退货记录 + * @param id 销售单ID + * @param number 退货数量 + * @param remark 备注 */ @Override public void addSalesback(Integer id, Integer number, String remark) { - //1.通过销售单ID查询出销售单信息 - Sales sales = salesMapper.selectById(id); - //2.根据商品ID查询商品信息 - Goods goods = goodsMapper.selectById(sales.getGoodsid()); - //3.修改商品的数量 商品的数量-退货的数量 - goods.setNumber(goods.getNumber()+number); + // 1.通过销售单ID查询出销售单信息 + Sales sales = salesMapper.selectById(id); // 根据销售单ID从数据库中查询对应的销售记录 - //修改进货的数量 - sales.setNumber(sales.getNumber()-number); - salesMapper.updateById(sales); + // 2.根据商品ID查询商品信息 + Goods goods = goodsMapper.selectById(sales.getGoodsid()); // 根据销售记录中的商品ID查询商品数据 - //4.进行修改 - goodsMapper.updateById(goods); + // 3.修改商品的库存数量,商品库存 - 退货数量 + goods.setNumber(goods.getNumber() + number); // 更新商品库存,将退货数量加回库存 - //5.添加退货单信息 - Salesback salesback = new Salesback(); - salesback.setGoodsid(sales.getGoodsid()); + // 4.修改销售单的数量,销售单数量 - 退货数量 + sales.setNumber(sales.getNumber() - number); // 更新销售单的数量,扣除退货数量 + salesMapper.updateById(sales); // 更新销售记录 - salesback.setNumber(number); - User user = (User) WebUtils.getSession().getAttribute("user"); - salesback.setOperateperson(user.getName()); + // 5.更新商品库存 + goodsMapper.updateById(goods); // 更新商品记录 + // 6.创建销售退货记录 + Salesback salesback = new Salesback(); // 创建一个新的销售退货对象 + salesback.setGoodsid(sales.getGoodsid()); // 设置销售退货记录的商品ID - salesback.setSalebackprice(sales.getSaleprice()); - salesback.setPaytype(sales.getPaytype()); + salesback.setNumber(number); // 设置销售退货的数量 + User user = (User) WebUtils.getSession().getAttribute("user"); // 从当前会话中获取用户信息 + salesback.setOperateperson(user.getName()); // 设置退货操作的人员(当前登录的用户) - salesback.setSalesbacktime(new Date()); - salesback.setRemark(remark); + salesback.setSalebackprice(sales.getSaleprice()); // 设置销售退货价格(与销售时的价格一致) + salesback.setPaytype(sales.getPaytype()); // 设置销售退货的支付类型 + salesback.setSalesbacktime(new Date()); // 设置销售退货的时间为当前时间 + salesback.setRemark(remark); // 设置退货的备注信息 - salesback.setCustomerid(sales.getCustomerid()); + salesback.setCustomerid(sales.getCustomerid()); // 设置退货对应的客户ID - - getBaseMapper().insert(salesback); + getBaseMapper().insert(salesback); // 使用 MyBatis-Plus 插入销售退货记录 } - } diff --git a/src/main/java/com/yeqifu/bus/vo/CustomerVo.java b/src/main/java/com/yeqifu/bus/vo/CustomerVo.java index f3850bb..ba4dc0f 100644 --- a/src/main/java/com/yeqifu/bus/vo/CustomerVo.java +++ b/src/main/java/com/yeqifu/bus/vo/CustomerVo.java @@ -1,26 +1,25 @@ -package com.yeqifu.bus.vo; +package com.yeqifu.bus.vo; // 定义该类所在的包路径,属于视图层的对象包 -import com.yeqifu.bus.entity.Customer; -import lombok.Data; -import lombok.EqualsAndHashCode; +import com.yeqifu.bus.entity.Customer; // 导入 Customer 实体类,表示客户信息 +import lombok.Data; // 导入 Lombok 提供的 @Data 注解,自动生成 getter、setter、toString 等方法 +import lombok.EqualsAndHashCode; // 导入 Lombok 提供的 @EqualsAndHashCode 注解,自动生成 equals 和 hashCode 方法 /** * @Author: 落亦- * @Date: 2019/12/5 9:30 */ -@Data -@EqualsAndHashCode(callSuper = false) -public class CustomerVo extends Customer{ +@Data // Lombok 注解,自动生成 getter、setter、toString、equals 和 hashCode 方法 +@EqualsAndHashCode(callSuper = false) // Lombok 注解,自动生成 equals 和 hashCode 方法,不考虑父类的字段 +public class CustomerVo extends Customer { // CustomerVo 继承自 Customer,表示客户视图对象,添加一些分页和批量操作功能 /** * 分页参数,当前是第一页,每页10条数据 */ - private Integer page=1; - private Integer limit=10; + private Integer page = 1; // 分页参数,默认为第一页 + private Integer limit = 10; // 分页参数,默认为每页显示10条数据 /** * 批量删除客户,存放客户ID的数组 */ - private Integer[] ids; - + private Integer[] ids; // 用于批量删除客户,存储客户ID的数组 } diff --git a/src/main/java/com/yeqifu/bus/vo/GoodsVo.java b/src/main/java/com/yeqifu/bus/vo/GoodsVo.java index c0b99ea..31f8aec 100644 --- a/src/main/java/com/yeqifu/bus/vo/GoodsVo.java +++ b/src/main/java/com/yeqifu/bus/vo/GoodsVo.java @@ -1,18 +1,17 @@ -package com.yeqifu.bus.vo; +package com.yeqifu.bus.vo; // 定义该类所在的包路径,属于视图层的对象包 -import com.yeqifu.bus.entity.Goods; -import lombok.Data; -import lombok.EqualsAndHashCode; +import com.yeqifu.bus.entity.Goods; // 导入 Goods 实体类,表示商品信息 +import lombok.Data; // 导入 Lombok 提供的 @Data 注解,自动生成 getter、setter、toString 等方法 +import lombok.EqualsAndHashCode; // 导入 Lombok 提供的 @EqualsAndHashCode 注解,自动生成 equals 和 hashCode 方法 /** * @Author: 落亦- * @Date: 2019/12/6 22:30 */ -@Data -@EqualsAndHashCode(callSuper = false) -public class GoodsVo extends Goods { - - private Integer page=1; - private Integer limit=10; +@Data // Lombok 注解,自动生成 getter、setter、toString、equals 和 hashCode 方法 +@EqualsAndHashCode(callSuper = false) // Lombok 注解,自动生成 equals 和 hashCode 方法,不考虑父类的字段 +public class GoodsVo extends Goods { // GoodsVo 继承自 Goods,表示商品视图对象,添加了分页功能 + private Integer page = 1; // 分页参数,默认为第一页 + private Integer limit = 10; // 分页参数,默认为每页显示10条数据 } diff --git a/src/main/java/com/yeqifu/bus/vo/InportVo.java b/src/main/java/com/yeqifu/bus/vo/InportVo.java index cf6f993..23c37b8 100644 --- a/src/main/java/com/yeqifu/bus/vo/InportVo.java +++ b/src/main/java/com/yeqifu/bus/vo/InportVo.java @@ -1,28 +1,26 @@ -package com.yeqifu.bus.vo; +package com.yeqifu.bus.vo; // 定义该类所在的包路径,属于视图层的对象包 -import com.yeqifu.bus.entity.Inport; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.springframework.format.annotation.DateTimeFormat; +import com.yeqifu.bus.entity.Inport; // 导入 Inport 实体类,表示进货信息 +import lombok.Data; // 导入 Lombok 提供的 @Data 注解,自动生成 getter、setter、toString 等方法 +import lombok.EqualsAndHashCode; // 导入 Lombok 提供的 @EqualsAndHashCode 注解,自动生成 equals 和 hashCode 方法 +import org.springframework.format.annotation.DateTimeFormat; // 导入用于格式化日期的注解 -import java.util.Date; +import java.util.Date; // 导入日期类 /** * @Author: 落亦- * @Date: 2019/12/18 10:29 */ -@Data -@EqualsAndHashCode(callSuper = false) -public class InportVo extends Inport { +@Data // Lombok 注解,自动生成 getter、setter、toString、equals 和 hashCode 方法 +@EqualsAndHashCode(callSuper = false) // Lombok 注解,自动生成 equals 和 hashCode 方法,不考虑父类的字段 +public class InportVo extends Inport { // InportVo 继承自 Inport,表示进货视图对象,添加了分页和时间筛选功能 - private Integer page = 1; + private Integer page = 1; // 分页参数,默认为第一页 + private Integer limit = 10; // 分页参数,默认为每页显示10条数据 - private Integer limit = 10; - - @DateTimeFormat(pattern = "yyyy-MM-dd") - private Date startTime; - - @DateTimeFormat(pattern = "yyyy-MM-dd") - private Date endTime; + @DateTimeFormat(pattern = "yyyy-MM-dd") // 格式化日期字段,要求日期格式为 "yyyy-MM-dd" + private Date startTime; // 开始时间,用于筛选进货记录的起始时间 + @DateTimeFormat(pattern = "yyyy-MM-dd") // 格式化日期字段,要求日期格式为 "yyyy-MM-dd" + private Date endTime; // 结束时间,用于筛选进货记录的结束时间 } diff --git a/src/main/java/com/yeqifu/bus/vo/OutportVo.java b/src/main/java/com/yeqifu/bus/vo/OutportVo.java index 0897df0..fd07cb2 100644 --- a/src/main/java/com/yeqifu/bus/vo/OutportVo.java +++ b/src/main/java/com/yeqifu/bus/vo/OutportVo.java @@ -1,29 +1,26 @@ -package com.yeqifu.bus.vo; +package com.yeqifu.bus.vo; // 定义该类所在的包路径,属于视图层的对象包 -import com.yeqifu.bus.entity.Outport; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.springframework.format.annotation.DateTimeFormat; +import com.yeqifu.bus.entity.Outport; // 导入 Outport 实体类,表示出货信息 +import lombok.Data; // 导入 Lombok 提供的 @Data 注解,自动生成 getter、setter、toString 等方法 +import lombok.EqualsAndHashCode; // 导入 Lombok 提供的 @EqualsAndHashCode 注解,自动生成 equals 和 hashCode 方法 +import org.springframework.format.annotation.DateTimeFormat; // 导入用于格式化日期的注解 -import java.util.Date; +import java.util.Date; // 导入日期类 /** * @Author: 落亦- * @Date: 2019/12/18 10:29 */ -@Data -@EqualsAndHashCode(callSuper = false) -public class OutportVo extends Outport { +@Data // Lombok 注解,自动生成 getter、setter、toString、equals 和 hashCode 方法 +@EqualsAndHashCode(callSuper = false) // Lombok 注解,自动生成 equals 和 hashCode 方法,不考虑父类的字段 +public class OutportVo extends Outport { // OutportVo 继承自 Outport,表示出货视图对象,添加了分页和时间筛选功能 - private Integer page = 1; - - private Integer limit = 10; - - @DateTimeFormat(pattern = "yyyy-MM-dd") - private Date startTime; - - @DateTimeFormat(pattern = "yyyy-MM-dd") - private Date endTime; + private Integer page = 1; // 分页参数,默认为第一页 + private Integer limit = 10; // 分页参数,默认为每页显示10条数据 + @DateTimeFormat(pattern = "yyyy-MM-dd") // 格式化日期字段,要求日期格式为 "yyyy-MM-dd" + private Date startTime; // 开始时间,用于筛选出货记录的起始时间 + @DateTimeFormat(pattern = "yyyy-MM-dd") // 格式化日期字段,要求日期格式为 "yyyy-MM-dd" + private Date endTime; // 结束时间,用于筛选出货记录的结束时间 } diff --git a/src/main/java/com/yeqifu/bus/vo/ProviderVo.java b/src/main/java/com/yeqifu/bus/vo/ProviderVo.java index b9c400b..568f81f 100644 --- a/src/main/java/com/yeqifu/bus/vo/ProviderVo.java +++ b/src/main/java/com/yeqifu/bus/vo/ProviderVo.java @@ -1,27 +1,25 @@ -package com.yeqifu.bus.vo; +package com.yeqifu.bus.vo; // 定义该类所在的包路径,属于视图层的对象包 -import com.yeqifu.bus.entity.Customer; -import com.yeqifu.bus.entity.Provider; -import lombok.Data; -import lombok.EqualsAndHashCode; +import com.yeqifu.bus.entity.Provider; // 导入 Provider 实体类,表示供应商信息 +import lombok.Data; // 导入 Lombok 提供的 @Data 注解,自动生成 getter、setter、toString 等方法 +import lombok.EqualsAndHashCode; // 导入 Lombok 提供的 @EqualsAndHashCode 注解,自动生成 equals 和 hashCode 方法 /** * @Author: 落亦- * @Date: 2019/12/5 9:30 */ -@Data -@EqualsAndHashCode(callSuper = false) -public class ProviderVo extends Provider{ +@Data // Lombok 注解,自动生成 getter、setter、toString、equals 和 hashCode 方法 +@EqualsAndHashCode(callSuper = false) // Lombok 注解,自动生成 equals 和 hashCode 方法,不考虑父类的字段 +public class ProviderVo extends Provider { // ProviderVo 继承自 Provider,表示供应商视图对象,添加了分页和批量删除功能 /** * 分页参数,当前是第一页,每页10条数据 */ - private Integer page=1; - private Integer limit=10; + private Integer page = 1; // 分页参数,默认为第一页 + private Integer limit = 10; // 分页参数,默认为每页显示10条数据 /** * 批量删除供应商,存放供应商ID的数组 */ - private Integer[] ids; - + private Integer[] ids; // 存放多个供应商ID,用于批量删除 } diff --git a/src/main/java/com/yeqifu/bus/vo/SalesVo.java b/src/main/java/com/yeqifu/bus/vo/SalesVo.java index 8947e79..ef1f85d 100644 --- a/src/main/java/com/yeqifu/bus/vo/SalesVo.java +++ b/src/main/java/com/yeqifu/bus/vo/SalesVo.java @@ -1,28 +1,27 @@ -package com.yeqifu.bus.vo; +package com.yeqifu.bus.vo; // 定义该类所在的包路径,属于视图层的对象包 -import com.yeqifu.bus.entity.Sales; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.springframework.format.annotation.DateTimeFormat; +import com.yeqifu.bus.entity.Sales; // 导入 Sales 实体类,表示销售信息 +import lombok.Data; // 导入 Lombok 提供的 @Data 注解,自动生成 getter、setter、toString 等方法 +import lombok.EqualsAndHashCode; // 导入 Lombok 提供的 @EqualsAndHashCode 注解,自动生成 equals 和 hashCode 方法 +import org.springframework.format.annotation.DateTimeFormat; // 导入 Spring 的 @DateTimeFormat 注解,用于格式化日期 -import java.util.Date; +import java.util.Date; // 导入 Date 类,表示日期类型 /** * @Author: 落亦- * @Date: 2019/12/18 10:29 */ -@Data -@EqualsAndHashCode(callSuper = false) -public class SalesVo extends Sales { +@Data // Lombok 注解,自动生成 getter、setter、toString、equals 和 hashCode 方法 +@EqualsAndHashCode(callSuper = false) // Lombok 注解,自动生成 equals 和 hashCode 方法,不考虑父类的字段 +public class SalesVo extends Sales { // SalesVo 继承自 Sales,表示销售的视图对象,添加了分页和日期过滤功能 - private Integer page = 1; + private Integer page = 1; // 分页参数,默认为第一页 - private Integer limit = 10; + private Integer limit = 10; // 分页参数,默认为每页显示10条数据 - @DateTimeFormat(pattern = "yyyy-MM-dd") - private Date startTime; - - @DateTimeFormat(pattern = "yyyy-MM-dd") - private Date endTime; + @DateTimeFormat(pattern = "yyyy-MM-dd") // 设置日期格式化的注解,适用于 startTime 字段 + private Date startTime; // 查询的起始时间,用于过滤销售数据的时间范围 + @DateTimeFormat(pattern = "yyyy-MM-dd") // 设置日期格式化的注解,适用于 endTime 字段 + private Date endTime; // 查询的结束时间,用于过滤销售数据的时间范围 } diff --git a/src/main/java/com/yeqifu/bus/vo/SalesbackVo.java b/src/main/java/com/yeqifu/bus/vo/SalesbackVo.java index 0c61c95..96131b1 100644 --- a/src/main/java/com/yeqifu/bus/vo/SalesbackVo.java +++ b/src/main/java/com/yeqifu/bus/vo/SalesbackVo.java @@ -1,29 +1,27 @@ -package com.yeqifu.bus.vo; +package com.yeqifu.bus.vo; // 定义该类所在的包路径,属于视图层的对象包 -import com.yeqifu.bus.entity.Salesback; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.springframework.format.annotation.DateTimeFormat; +import com.yeqifu.bus.entity.Salesback; // 导入 Salesback 实体类,表示销售退货信息 +import lombok.Data; // 导入 Lombok 提供的 @Data 注解,自动生成 getter、setter、toString 等方法 +import lombok.EqualsAndHashCode; // 导入 Lombok 提供的 @EqualsAndHashCode 注解,自动生成 equals 和 hashCode 方法 +import org.springframework.format.annotation.DateTimeFormat; // 导入 Spring 的 @DateTimeFormat 注解,用于格式化日期 -import java.util.Date; +import java.util.Date; // 导入 Date 类,表示日期类型 /** * @Author: 落亦- * @Date: 2019/12/18 10:29 */ -@Data -@EqualsAndHashCode(callSuper = false) -public class SalesbackVo extends Salesback { +@Data // Lombok 注解,自动生成 getter、setter、toString、equals 和 hashCode 方法 +@EqualsAndHashCode(callSuper = false) // Lombok 注解,自动生成 equals 和 hashCode 方法,不考虑父类的字段 +public class SalesbackVo extends Salesback { // SalesbackVo 继承自 Salesback,表示销售退货的视图对象,添加了分页和日期过滤功能 - private Integer page = 1; + private Integer page = 1; // 分页参数,默认为第一页 - private Integer limit = 10; - - @DateTimeFormat(pattern = "yyyy-MM-dd") - private Date startTime; - - @DateTimeFormat(pattern = "yyyy-MM-dd") - private Date endTime; + private Integer limit = 10; // 分页参数,默认为每页显示10条数据 + @DateTimeFormat(pattern = "yyyy-MM-dd") // 设置日期格式化的注解,适用于 startTime 字段 + private Date startTime; // 查询的起始时间,用于过滤销售退货数据的时间范围 + @DateTimeFormat(pattern = "yyyy-MM-dd") // 设置日期格式化的注解,适用于 endTime 字段 + private Date endTime; // 查询的结束时间,用于过滤销售退货数据的时间范围 } diff --git a/src/main/resources/templates/business/customer/customerManager.html b/src/main/resources/templates/business/customer/customerManager.html index f0bca63..5d8bbf1 100644 --- a/src/main/resources/templates/business/customer/customerManager.html +++ b/src/main/resources/templates/business/customer/customerManager.html @@ -4,21 +4,30 @@ Right + + + + + + + + + - +
搜索条件
@@ -46,9 +55,11 @@
+ + @@ -56,14 +67,16 @@
- +
+ +
- + -
@@ -157,175 +169,89 @@
- -
-
- - -
-
+ - - - \ No newline at end of file + diff --git a/src/main/resources/templates/business/sales/salesManager.html b/src/main/resources/templates/business/sales/salesManager.html index 6be8609..8e4017c 100644 --- a/src/main/resources/templates/business/sales/salesManager.html +++ b/src/main/resources/templates/business/sales/salesManager.html @@ -17,6 +17,7 @@ - +
搜索条件
+
+
@@ -74,6 +77,7 @@
+
@@ -82,6 +86,7 @@
+
@@ -89,6 +94,7 @@ class="layui-input input-radius">
+
@@ -98,6 +104,7 @@
+
- +
+ +
- +
+
@@ -161,6 +171,7 @@
+
@@ -169,372 +180,71 @@
+
- - - + + +
+
- +
- +
+
-
- - +
+ +
- -