package statistics import ( "errors" "spaceofcheng/services/models/model" "spaceofcheng/services/utils" "strconv" ) // GetGoodsStatistics 获取商品统计数据 func (c *StatisticsController) GetGoodsStatistics() { page, _ := c.GetInt("page") pagesize, _ := c.GetInt("pagesize") caseids := c.GetString("caseid") name := c.GetString("name") typeid := c.GetString("typeid") if caseids == "" { cases := c.Context.Get("cases").([]model.SysUserCase) caseids = c.GetCaseIDs(cases) } goodsList, err := c.serv.GetGoodsStatistics(caseids, typeid, name, page, pagesize) if err != nil { c.ResponseError(err) } c.ResponseJSON(goodsList) } // GetGoodsStatisticsExcel 商品统计导出 func (c *StatisticsController) GetGoodsStatisticsExcel() { caseids := c.GetString("caseid") name := c.GetString("name") typeid := c.GetString("typeid") if caseids == "" { cases := c.Context.Get("cases").([]model.SysUserCase) caseids = c.GetCaseIDs(cases) } list, err := c.serv.GetGoodsStatisticsExcel(caseids, typeid, name) if err != nil { c.ResponseError(err) } excel, err := utils.NewTinyXLSXEngine() if err != nil { utils.LogError("初始化Excel服务失败: " + err.Error()) c.ResponseError(errors.New("初始化Excel服务失败")) } excel.SetCell(excel.InsertRow(), []string{ "案场", "商品名称", "分类", "价格", "下单数", "完成数", "总费用", }) for _, item := range list { row := excel.InsertRow() price, err := strconv.ParseFloat(item.Price, 64) if err != nil { c.ResponseError(errors.New("金额类型不正确!")) } amount := price * float64(item.FinishTotal) excel.SetCell(row, []string{ item.CaseName, item.GoodsName, item.TypeName, item.Price, strconv.Itoa(item.Total), strconv.Itoa(item.FinishTotal), strconv.FormatFloat(amount, 'f', -1, 64), }) } c.SaveToExcel("商品统计列表.xlsx", excel) } // GetGoodsOrdersStatistics 获取商品订单统计数据 func (c *StatisticsController) GetGoodsOrdersStatistics() { page, _ := c.GetInt("page") pagesize, _ := c.GetInt("pagesize") caseids := c.GetString("caseid") status := c.GetString("status") usertype := c.GetString("usertype") begindate := c.GetString("begindate") enddate := c.GetString("enddate") paytype := c.GetString("paytype") if caseids == "" { cases := c.Context.Get("cases").([]model.SysUserCase) caseids = c.GetCaseIDs(cases) } goodsList, err := c.serv.GetGoodsOrdersStatistics(status, usertype, caseids, begindate, enddate, paytype, page, pagesize) if err != nil { c.ResponseError(err) } c.ResponseJSON(goodsList) } // GetGoodsOrdersStatisticsExcel 商品订单统计导出 func (c *StatisticsController) GetGoodsOrdersStatisticsExcel() { caseids := c.GetString("caseid") status := c.GetString("status") usertype := c.GetString("usertype") begindate := c.GetString("begindate") enddate := c.GetString("enddate") paytype := c.GetString("paytype") if caseids == "" { cases := c.Context.Get("cases").([]model.SysUserCase) caseids = c.GetCaseIDs(cases) } list, err := c.serv.GetGoodsOrdersStatisticsExcel(status, usertype, caseids, begindate, enddate, paytype) if err != nil { c.ResponseError(err) } excel, err := utils.NewTinyXLSXEngine() if err != nil { utils.LogError("初始化Excel服务失败: " + err.Error()) c.ResponseError(errors.New("初始化Excel服务失败")) } excel.SetCell(excel.InsertRow(), []string{ "订单编号", "案场", "用户类型", "下单时间", "订单状态", "商品", "数量", "单价", "桌位", "下单人", "电话", }) for _, item := range list { usertype := "" switch item.UserType { case "customer": usertype = "用户" break case "sales": usertype = "销售" break case "manager": usertype = "主管" break } orderStatus := "" if item.Status == 1 { orderStatus = "已完成" } else { orderStatus = "已取消" } for _, detail := range item.Details { row := excel.InsertRow() name := detail.GoodsName if detail.SpecName != "" { name = name + "(" + detail.SpecName + ")" } // price, err := strconv.ParseFloat(detail.Price, 64) // if err != nil { // c.ResponseError(errors.New("金额类型不正确!")) // } // amount := price * float64(detail.Number) excel.SetCell(row, []string{ item.OrdersNo, item.CaseName, usertype, item.CreateDate.Format("2006-01-02 15:04:05"), orderStatus, name, strconv.Itoa(detail.Number), detail.Price, item.AreaName + item.TableNo, item.CustomerName, item.Phone, }) } } c.SaveToExcel("商品订单统计列表.xlsx", excel) }