package com.cn.servlet; // 定义Servlet所在的包名

import java.io.IOException; // 导入IOException，用于处理输入输出异常
import java.util.ArrayList; // 导入ArrayList，用于创建动态数组
import java.util.List; // 导入List接口，用于操作列表集合

import javax.servlet.ServletException; // 导入ServletException，用于处理Servlet运行时的异常
import javax.servlet.http.HttpServlet; // 导入HttpServlet，是所有HTTP servlet的父类
import javax.servlet.http.HttpServletRequest; // 导入HttpServletRequest，代表客户端的请求信息
import javax.servlet.http.HttpServletResponse; // 导入HttpServletResponse，代表服务器对客户端的响应信息

import com.cn.domain.Prep; // 导入Prep类，该类定义了订单的数据结构
import com.cn.service.PrepService; // 导入PrepService接口，该接口定义了订单服务的方法
import com.cn.service.impl.PrepServiceImpl; // 导入PrepService接口的实现类，用于具体的订单业务操作

/**
 * CountPrepServlet类，用于处理管理员销售统计的请求。
 * @ClassName: CountPrepServlet 类名：CountPrepServlet
 * @Description: 管理员销售统计
 * @author: ljy Servlet的作者
 * @date: 2019年11月16日 下午4:38:07 Servlet创建的日期和时间
 */
public class CountPrepServlet extends HttpServlet {
	private static final long serialVersionUID = 1L; // 用于序列化

    /**
     * prepService成员变量，用于访问订单数据。
     */
    private PrepService prepService = new PrepServiceImpl(); // 注入PrepService实现类

    /**
     * 处理GET请求的方法，用于展示销售统计信息。
     * @param request HttpServletRequest对象，包含客户端的请求信息
     * @param response HttpServletResponse对象，包含服务器对客户端的响应信息
     * @throws ServletException 抛出Servlet异常
     * @throws IOException 抛出输入输出异常
     */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// 获取所有订单信息
		List<Prep> list = prepService.getAll(); // 调用PrepService的getAll方法获取所有订单
		// 创建已付款订单列表
		List<Prep> preps = new ArrayList<Prep>(); // 使用ArrayList存储已付款订单
		
		// 遍历所有订单，筛选出已付款的订单
		for(Prep prep : list) {
			if(prep.isWay()) { // 如果订单已付款（prep.isWay()返回true）
				preps.add(prep); // 将已付款订单添加到列表中
			}
		}
		
		// 统计已付款订单数和总销售额
		Integer prepNumber = preps.size(); // 有效订单数，即已付款订单的数量
		Integer prepPrice = 0; // 总销售额，初始化为0
		for(Prep prep : preps) {
			prepPrice += prep.getPrice(); // 累加每个已付款订单的价格
		}
		
		// 将统计结果设置到请求中，以便在JSP页面中使用
		request.setAttribute("prepNumber", prepNumber); // 设置有效订单数属性
		request.setAttribute("prepPrice", prepPrice); // 设置总销售额属性
		// 转发请求到销售统计页面
		request.getRequestDispatcher("pages/admin/right/countPrep.jsp").forward(request, response);
		
	}

}