123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- 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)
- }
|