瀏覽代碼

Merge branch 'master' of http://git.ds-bay.com/project/kmall-pt-general

 Conflicts:
	kmall-admin/src/main/java/com/kmall/admin/controller/statistics/MonthlyCustomersController.java
	kmall-admin/src/main/java/com/kmall/admin/service/statistics/MonthlyCustomersService.java
zcb 4 年之前
父節點
當前提交
49ac9a33be

+ 49 - 3
kmall-admin/src/main/java/com/kmall/admin/controller/statistics/MonthlyCustomersController.java

@@ -1,9 +1,12 @@
 package com.kmall.admin.controller.statistics;
 
+import com.kmall.admin.dao.GoodsDao;
+import com.kmall.admin.dao.ProductStoreRelaDao;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.kmall.admin.dao.statistics.MonthlyCustomersDao;
 import com.kmall.admin.dao.statistics.WechatFollowersDao;
+import com.kmall.admin.entity.GoodsEntity;
 import com.kmall.admin.entity.MonthlySalesGrowthEntity;
 import com.kmall.admin.entity.ProductStoreRelaEntity;
 import com.kmall.admin.entity.WechatFollowersEntity;
@@ -57,6 +60,10 @@ public class MonthlyCustomersController {
     private MonthlyCustomersDao monthlyCustomersDao;
     @Autowired
     private WechatFollowersDao wechatFollowersDao;
+    @Autowired
+    private GoodsDao goodsDao;
+    @Autowired
+    private ProductStoreRelaDao productStoreRelaDao;
 
 
     private void calculateDifferentMonth(List<String> monthList, String startMonth, String endMonth) throws ParseException {
@@ -95,7 +102,7 @@ public class MonthlyCustomersController {
             if(!"1".equals(sysUser.getRoleType())){
                 merchSn = sysUser.getMerchSn();
             }
-            Map<String,Object> map = monthlyCustomersService.queryMonthlyCustomers(startMonth,endMonth,merchSn);
+            Map<String,Object> map = monthlyCustomersService.queryMonthlyCustomers(startMonth,endMonth,merchSn,dateList);
 
             returnMap.put("dateList", dateList);
             returnMap.putAll(map);
@@ -335,7 +342,7 @@ public class MonthlyCustomersController {
         }else{
             endWeek =weekSdf.format(aft.getTime())+"-"+aftWeek;
         }
-        Map<String,Object> map = monthlyCustomersService.queryWeeklyCustomers(startWeek,endWeek,merchSn);
+        Map<String,Object> map = monthlyCustomersService.queryWeeklyCustomers(startWeek,endWeek,merchSn,dateList);
 
         Map<String, Object> returnMap = new HashMap<>();
         returnMap.put("dateList", dateList);
@@ -571,7 +578,7 @@ public class MonthlyCustomersController {
             if(!"1".equals(sysUser.getRoleType())){
                 merchSn = sysUser.getMerchSn();
             }
-            Map<String,Object> map = monthlyCustomersService.monthlyCategory(startMonth,endMonth,merchSn);
+            Map<String,Object> map = monthlyCustomersService.monthlyCategory(startMonth,endMonth,merchSn,dateList);
 
             returnMap.put("dateList", dateList);
             returnMap.putAll(map);
@@ -583,6 +590,45 @@ public class MonthlyCustomersController {
     }
 
 
+    @RequestMapping("/monthlyCategoryExport")
+    public R monthlyCategoryExport(@RequestParam Map<String, Object> params, HttpServletResponse response, HttpServletRequest request) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        if (Objects.isNull(params.get("startMonth"))  || "".equals(params.get("startMonth"))){
+            return R.error("请先选择开始时间");
+        }
+        if (Objects.isNull(params.get("endMonth"))  || "".equals(params.get("endMonth"))){
+            return R.error("请先选择结束时间");
+        }
+        String merchSn = null;
+        SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
+        if(!"1".equals(sysUser.getRoleType())){
+            merchSn = sysUser.getMerchSn();
+        }
+        List<MonthlySalesGrowthEntity> monthlySalesGrowthEntities = monthlyCustomersDao.monthlyCategory((String) params.get("startMonth"), (String) params.get("endMonth"), merchSn);
+        ExcelExport ee = new ExcelExport("品牌销售量比较");
+        String[] header = new String[]{"序号","销售数量","品牌名","销售额","年-月"};
+        List<Map<String, Object>> list = new ArrayList<>();
+        int count = 1;
+        if (monthlySalesGrowthEntities!=null && monthlySalesGrowthEntities.size()>0) {
+            for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : monthlySalesGrowthEntities) {
+                LinkedHashMap<String, Object> map = new LinkedHashMap<>();
+                map.put("OrderNumber",count++);
+                map.put("Sales",monthlySalesGrowthEntity.getSales());
+                map.put("Cgname",monthlySalesGrowthEntity.getCgname());
+                map.put("TotalSales",monthlySalesGrowthEntity.getTotalSales());
+                map.put("YearAndMonth",monthlySalesGrowthEntity.getYearAndMonth());
+                list.add(map);
+            }
+        }
+        ee.addSheetByMap("品牌销售量比较", list, header);
+        ee.export(response);
+        return R.ok();
+    }
+
+
+
+
+
 
     @RequestMapping("/exportSelectedMonthData")
     public void exportSelectedMonthData(@RequestParam("startMonth") String startMonth, @RequestParam("endMonth") String endMonth

+ 58 - 30
kmall-admin/src/main/java/com/kmall/admin/service/impl/statistics/MonthlyCustomersServiceImpl.java

@@ -28,33 +28,36 @@ public class MonthlyCustomersServiceImpl implements MonthlyCustomersService {
     private WechatFollowersDao wechatFollowersDao;
 
     @Override
-    public Map<String, Object> queryMonthlyCustomers(String startMonth, String endMonth, String merchSn) {
+    public Map<String, Object> queryMonthlyCustomers(String startMonth, String endMonth, String merchSn, List<String> dateList) {
         List<MonthlySalesGrowthEntity> monthlySalesGrowthEntities = monthlyCustomersDao.queryMonthlyCustomers(startMonth, endMonth, merchSn);
 
-        Map<String,Object> map = new HashMap<>();
+        Map<String, Object> map = new HashMap<>();
         // 查询销售件数
         List<String> totalNumberList = new ArrayList<>();
-//        // 查询销售额
+        // 查询销售额
         List<String> totalSalesList = new ArrayList<>();
-//        // 查询客户数
+        // 查询客户数
         List<String> taotalCustomersList = new ArrayList<>();
-//        // 查询客单价
+        // 查询客单价
         List<String> avgBasketSaleList = new ArrayList<>();
-
         // 按照实体类的日期进行升序排序
         monthlySalesGrowthEntities = monthlySalesGrowthEntities.stream().sorted(Comparator.comparing(MonthlySalesGrowthEntity::getYearAndMonth)).collect(Collectors.toList());
-        for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : monthlySalesGrowthEntities) {
-            String totalSales = monthlySalesGrowthEntity.getTotalSales();
-            String taotalCustomers = monthlySalesGrowthEntity.getTotalCustomers();
-            String totalNumber = monthlySalesGrowthEntity.getTotalNumber();
-
-            totalNumberList.add(totalNumber); // 销售数量
-            totalSalesList.add(totalSales); // 销售额
-            taotalCustomersList.add(taotalCustomers); // 客单数
-            String avgBasketSale = new BigDecimal(totalSales).divide(new BigDecimal(totalNumber),3, RoundingMode.HALF_UP).toString(); // 客单价
-            avgBasketSaleList.add(avgBasketSale);
+        for (String date : dateList) {
+            for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : monthlySalesGrowthEntities) {
+
+                String totalSales = monthlySalesGrowthEntity.getTotalSales();
+                String taotalCustomers = monthlySalesGrowthEntity.getTotalCustomers();
+                String totalNumber = monthlySalesGrowthEntity.getTotalNumber();
+
+                totalNumberList.add(monthlySalesGrowthEntity.getYearAndMonth().equals(date) ? totalNumber : "0"); // 销售数量
+                totalSalesList.add(monthlySalesGrowthEntity.getYearAndMonth().equals(date)?totalSales:"0"); // 销售额
+                taotalCustomersList.add(monthlySalesGrowthEntity.getYearAndMonth().equals(date)?taotalCustomers:"0"); // 客单数
+                String avgBasketSale = new BigDecimal(totalSales).divide(new BigDecimal(totalNumber), 3, RoundingMode.HALF_UP).toString(); // 客单价
+                avgBasketSaleList.add(monthlySalesGrowthEntity.getYearAndMonth().equals(date)?avgBasketSale:"0");
+            }
         }
-        map.put("totalNumberList",totalNumberList);
+
+        map.put("totalNumberList", totalNumberList);
         map.put("totalSalesList",totalSalesList);
         map.put("taotalCustomersList",taotalCustomersList);
         map.put("avgBasketSaleList",avgBasketSaleList);
@@ -96,7 +99,7 @@ public class MonthlyCustomersServiceImpl implements MonthlyCustomersService {
     }
 
     @Override
-    public Map<String, Object> queryWeeklyCustomers(String startWeek, String endWeek, String merchSn) {
+    public Map<String, Object> queryWeeklyCustomers(String startWeek, String endWeek, String merchSn,List<String> dateList) {
         List<MonthlySalesGrowthEntity> monthlySalesGrowthEntities = monthlyCustomersDao.queryWeeklyCustomers(startWeek, endWeek, merchSn);
 
         Map<String,Object> map = new HashMap<>();
@@ -111,17 +114,20 @@ public class MonthlyCustomersServiceImpl implements MonthlyCustomersService {
 
         // 按照实体类的日期进行升序排序
         monthlySalesGrowthEntities = monthlySalesGrowthEntities.stream().sorted(Comparator.comparing(MonthlySalesGrowthEntity::getYearAndWeek)).collect(Collectors.toList());
-        for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : monthlySalesGrowthEntities) {
-            String totalSales = monthlySalesGrowthEntity.getTotalSales();
-            String taotalCustomers = monthlySalesGrowthEntity.getTotalCustomers();
-            String totalNumber = monthlySalesGrowthEntity.getTotalNumber();
-
-            totalNumberList.add(totalNumber); // 销售数量
-            totalSalesList.add(totalSales); // 销售额
-            taotalCustomersList.add(taotalCustomers); // 客单数
-            String avgBasketSale = new BigDecimal(totalSales).divide(new BigDecimal(totalNumber),3, RoundingMode.HALF_UP).toString(); // 客单价
-            avgBasketSaleList.add(avgBasketSale);
+        for (String date : dateList) {
+            for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : monthlySalesGrowthEntities) {
+                String totalSales = monthlySalesGrowthEntity.getTotalSales();
+                String taotalCustomers = monthlySalesGrowthEntity.getTotalCustomers();
+                String totalNumber = monthlySalesGrowthEntity.getTotalNumber();
+
+                totalNumberList.add(monthlySalesGrowthEntity.getYearAndWeek().equals(date) ? totalNumber : "0"); // 销售数量
+                totalSalesList.add(monthlySalesGrowthEntity.getYearAndWeek().equals(date)?totalSales:"0"); // 销售额
+                taotalCustomersList.add(monthlySalesGrowthEntity.getYearAndWeek().equals(date)?taotalCustomers:"0"); // 客单数
+                String avgBasketSale = new BigDecimal(totalSales).divide(new BigDecimal(totalNumber), 3, RoundingMode.HALF_UP).toString(); // 客单价
+                avgBasketSaleList.add(monthlySalesGrowthEntity.getYearAndWeek().equals(date)?avgBasketSale:"0");
+            }
         }
+
         map.put("totalNumberList",totalNumberList);
         map.put("totalSalesList",totalSalesList);
         map.put("taotalCustomersList",taotalCustomersList);
@@ -176,9 +182,31 @@ public class MonthlyCustomersServiceImpl implements MonthlyCustomersService {
     }
 
     @Override
-    public Map<String, Object> monthlyCategory(String startMonth, String endMonth, String merchSn) {
+    public Map<String, Object> monthlyCategory(String startMonth, String endMonth, String merchSn, List<String> dateList) {
         List<MonthlySalesGrowthEntity> monthlySalesGrowthEntities = monthlyCustomersDao.monthlyCategory(startMonth, endMonth, merchSn);
-        return null;
+        Map<String, Object> map = new HashMap<>();
+        // 类目数量
+        List<String> categoryList = new ArrayList<>();
+        for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : monthlySalesGrowthEntities) {
+            categoryList.add(monthlySalesGrowthEntity.getCgname());
+        }
+        // 遍历每个月
+        for (String date : dateList) {
+            // 查询销售件数
+            List<String> totalNumberList = new ArrayList<>();
+            // 查询销售额
+            List<String> totalSalesList = new ArrayList<>();
+            for (MonthlySalesGrowthEntity monthlySalesGrowthEntity : monthlySalesGrowthEntities) {
+                totalNumberList.add(monthlySalesGrowthEntity.getYearAndMonth().equals(date) ? monthlySalesGrowthEntity.getSales() : "0");
+                totalSalesList.add(monthlySalesGrowthEntity.getYearAndMonth().equals(date) ? monthlySalesGrowthEntity.getTotalSales() : "0");
+
+            }
+            map.put("totalNumberList" + date, totalNumberList);
+            map.put("totalSalesList" + date, totalSalesList);
+        }
+
+        map.put("categoryList", categoryList);
+        return map;
     }
 
     @Override

+ 4 - 4
kmall-admin/src/main/java/com/kmall/admin/service/statistics/MonthlyCustomersService.java

@@ -1,6 +1,5 @@
 package com.kmall.admin.service.statistics;
 
-import com.kmall.admin.entity.MonthlySalesGrowthEntity;
 import com.kmall.admin.entity.WechatFollowersEntity;
 
 import java.util.List;
@@ -13,13 +12,13 @@ import java.util.Map;
  */
 public interface MonthlyCustomersService {
 
-    Map<String, Object> queryMonthlyCustomers(String startMonth, String endMonth, String merchSn);
+    Map<String, Object> queryMonthlyCustomers(String startMonth, String endMonth, String merchSn,List<String> dateList);
 
     Map<String, Object> top10ForProduct(String month, String week, String merchSn);
 
     Map<String, Object> top10ByBrandAndSupplier(String startDate, String endDate, String merchSn);
 
-    Map<String, Object> queryWeeklyCustomers(String startWeek, String endWeek, String merchSn);
+    Map<String, Object> queryWeeklyCustomers(String startWeek, String endWeek, String merchSn,List<String> dateList);
 
     Map<String, Object> queryMonthlyWechatFollowers(String startMonth, String endMonth, String merchSn);
 
@@ -27,7 +26,8 @@ public interface MonthlyCustomersService {
 
     List<Map<String,Object>> salesByCategory(String startMonth, String endMonth, String merchSn);
 
-    Map<String, Object> monthlyCategory(String startMonth, String endMonth, String merchSn);
+    Map<String, Object> monthlyCategory(String startMonth, String endMonth, String merchSn,List<String> dateList);
+
 
     List<MonthlySalesGrowthEntity> exportSelectedMonthData(String startMonth, String endMonth, String merchSn, int size, Integer monthNumber);
 }

+ 3 - 0
kmall-admin/src/main/resources/mybatis/mapper/statistics/MonthlyCustomersDao.xml

@@ -160,6 +160,9 @@
 			LEFT JOIN mall_product_store_rela a ON a.goods_id = og.goods_id
 			LEFT JOIN mall_category cg ON a.category_id = cg.id
 		<where>
+			o.is_onffline_order = '1'
+			AND o.order_biz_type = '10'
+			AND o.pay_status = '2'
 			<if test="startDate != null and startDate.trim() != ''">
 				and DATE_FORMAT(o.pay_time,'%Y-%m')  &gt;= #{startDate}
 			</if>

+ 1 - 1
kmall-admin/src/main/webapp/WEB-INF/page/sale/monthlyCategory.html

@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
     <meta charset="UTF-8">
-    <title>Monthly Customers & Avg Basket</title>
+    <title>Monthly Category</title>
     #parse("sys/header.html")
     <style>
         .coldiv {

+ 1 - 1
kmall-admin/src/main/webapp/WEB-INF/page/sale/salesByCategory.html

@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
     <meta charset="UTF-8">
-    <title>Monthly Customers & Avg Basket</title>
+    <title>Sales By Category</title>
     #parse("sys/header.html")
     <style>
         .coldiv {

+ 69 - 404
kmall-admin/src/main/webapp/js/sale/monthlyCategory.js

@@ -1,36 +1,37 @@
 $(function () {
-    var data = {
-        "echatX": [
-            "2019-07-02",
-            "2019-07-03",
-            "2019-07-04",
-            "2019-07-05",
-            "2019-07-06",
-            "2019-07-07",
-            "2019-07-08",
-            "2019-07-09",
-            "2019-07-10",
-            "2019-07-11",
-            "2019-07-12",
-            "2019-07-13",
-            "2019-07-14",
-            "2019-07-15"
-        ],
-        "echatY": [
-            501,210,123,333,445,157,151,369,101,101,350,435,153,100
-        ],
-        "echatY2": [
-            80,40,13,36,57,77,41,39,61,31,60,73,33,50
-        ],
-        "echatY3": [
-            5091,2210,1233,3133,4415,1517,1511,3619,1101,1011,3510,4315,1513,1100
-        ],
-        "echatY4": [
-            501,210,123,333,445,157,151,369,101,101,350,435,153,100
-        ],
-        "peopleTotal":15,"peopleOnline":4,"peopleOutline":12,"ranges":[]
-    };
-    dFun(data.echatX, data.echatY, data.echatY2,data.echatY3,data.echatY4);
+    // var data = {
+    //     "echatX": [
+    //         "2019-07-02",
+    //         "2019-07-03",
+    //         "2019-07-04",
+    //         "2019-07-05",
+    //         "2019-07-06",
+    //         "2019-07-07",
+    //         "2019-07-08",
+    //         "2019-07-09",
+    //         "2019-07-10",
+    //         "2019-07-11",
+    //         "2019-07-12",
+    //         "2019-07-13",
+    //         "2019-07-14",
+    //         "2019-07-15"
+    //     ],
+    //     "echatY": [
+    //         501,210,123,333,445,157,151,369,101,101,350,435,153,100
+    //     ],
+    //     "echatY2": [
+    //         80,40,13,36,57,77,41,39,61,31,60,73,33,50
+    //     ],
+    //     "echatY3": [
+    //         5091,2210,1233,3133,4415,1517,1511,3619,1101,1011,3510,4315,1513,1100
+    //     ],
+    //     "echatY4": [
+    //         501,210,123,333,445,157,151,369,101,101,350,435,153,100
+    //     ],
+    //     "peopleTotal":15,"peopleOnline":4,"peopleOutline":12,"ranges":[]
+    // };
+    // var series=[];
+    // dFun(data.echatX, data.echatY, data.echatY2,data.echatY3,data.echatY4,series);
 
 
 });
@@ -39,13 +40,8 @@ var myChart;
 var dChart = echarts.init(document.getElementById('main3'));
 // 指定图表的配置项和数据
 // 品牌类型,月份数量,月份数量
-function dFun(dateList, totalNumberList, totalSalesList,taotalCustomersList,avgBasketSaleList) {
+function dFun(categoryList,series) {
     dChart.setOption({
-        // title: {
-        //     left: 'left',
-        //     text: '概率',
-        //     show: false
-        // },
         tooltip: {
             trigger: 'axis',
             // formatter: '{a}:{c}',
@@ -62,22 +58,10 @@ function dFun(dateList, totalNumberList, totalSalesList,taotalCustomersList,avgB
             right: '4%',
             bottom: '10%'
         },
-        // legend: {
-        //     show: true,
-        //     selectedMode: 'single', // 设置显示单一图例的图形,点击可切换
-        //     bottom: 10,
-        //     left: 50,
-        //     textStyle: {
-        //         color: '#666',
-        //         fontSize: 12
-        //     },
-        //     itemGap: 20,
-        //     inactiveColor: '#ccc'
-        // },
         xAxis: {
             // splitLine: {     show: false   },
             type: 'category',
-            data: dateList,
+            data: categoryList,
             axisPointer: {
                 type: 'shadow'
             },
@@ -97,7 +81,7 @@ function dFun(dateList, totalNumberList, totalSalesList,taotalCustomersList,avgB
         yAxis: [{
             splitLine: {     show: false   },
             type: 'value',
-            name: '',
+            name: '销售数量',
             // max: 10000,
             // min: 0,
             // show: true,
@@ -113,7 +97,7 @@ function dFun(dateList, totalNumberList, totalSalesList,taotalCustomersList,avgB
         {
             splitLine: {     show: false   },
             type: 'value',
-            name: '客单价',
+            name: '销售金额',
             // min: 0,
             // max: 100,
             // interval: 10,
@@ -126,81 +110,7 @@ function dFun(dateList, totalNumberList, totalSalesList,taotalCustomersList,avgB
             }
         }],
         // 每个设备分数量、概率2个指标,只要让他们的name一致,即可通过,legeng进行统一的切换
-        series: [{
-            name: 'Units Sold',
-            type: 'bar',
-            symbol: 'circle', // 折线点设置为实心点
-            symbolSize: 4, // 折线点的大小
-            data: totalNumberList,
-            barWidth: '20%',
-
-        },{
-            name: 'Sales',
-            type: 'bar',
-            symbol: 'circle', // 折线点设置为实心点
-            symbolSize: 4, // 折线点的大小
-            data: totalSalesList,
-            barWidth: '20%',
-
-        },{
-            name: 'Customers',
-            type: 'bar',
-            symbol: 'circle', // 折线点设置为实心点
-            symbolSize: 4, // 折线点的大小
-            data: taotalCustomersList,
-            barWidth: '20%',
-
-        },
-            {
-            //折线
-            name: 'Average Basket Sale213213211',
-            type: 'line',
-            symbol: 'circle', // 折线点设置为实心点
-            symbolSize: 6, // 折线点的大小
-            yAxisIndex: 1, // 这里要设置哪个y轴,默认是最左边的是0,然后1,2顺序来。
-            data: avgBasketSaleList,
-            symbolSize: 10,
-            itemStyle: {
-                normal: {
-                    color: "#DDA0DD"
-                }
-            }
-
-        },
-            {
-                //折线
-                name: 'Average Basket Sale1',
-                type: 'line',
-                symbol: 'circle', // 折线点设置为实心点
-                symbolSize: 6, // 折线点的大小
-                yAxisIndex: 1, // 这里要设置哪个y轴,默认是最左边的是0,然后1,2顺序来。
-                data: avgBasketSaleList,
-                symbolSize: 10,
-                itemStyle: {
-                    normal: {
-                        color: "#DDC0BD"
-                    }
-                }
-
-            },
-            {
-                //折线
-                name: 'Average Basket Sale2',
-                type: 'line',
-                symbol: 'circle', // 折线点设置为实心点
-                symbolSize: 6, // 折线点的大小
-                yAxisIndex: 1, // 这里要设置哪个y轴,默认是最左边的是0,然后1,2顺序来。
-                data: avgBasketSaleList,
-                symbolSize: 10,
-                itemStyle: {
-                    normal: {
-                        color: "#DDB0AD"
-                    }
-                }
-
-            },
-
-        ]
+        series: series
 
     });
 }
@@ -213,6 +123,7 @@ function queryMonthly(){
         startMonth:startMonth,
         endMonth:endMonth
     };
+    var series=[];
     console.log(param);
     // 折线图
     $.ajax({
@@ -221,8 +132,35 @@ function queryMonthly(){
         contentType:"application/x-www-form-urlencoded",
         type: 'POST',
         success: function(data) {
-            console.log(JSON.stringify(data))
-           // dFun(data.dateList, data.totalNumberList, data.totalSalesList,data.taotalCustomersList,data.avgBasketSaleList);
+            console.log(JSON.stringify(data));
+            series=[];
+            series.length=0;
+            for (var i = 0, size = data.dateList.length; i < size; i++) {
+                series.push({
+                    name: 'Units Sold'+data.dateList[i],
+                    type: 'bar',
+                    symbol: 'circle', // 折线点设置为实心点
+                    symbolSize: 4, // 折线点的大小
+                    data: data[`totalNumberList${data.dateList[i]}`], // data.totalNumberList2020-05
+                    barWidth: '20%',
+
+                });
+                series.push({
+                    name: 'Sales'+data.dateList[i],
+                    type: 'line',
+                    symbol: 'circle', // 折线点设置为实心点
+                    symbolSize: 6, // 折线点的大小
+                    yAxisIndex: 1, // 这里要设置哪个y轴,默认是最左边的是0,然后1,2顺序来。
+                    data: data[`totalSalesList${data.dateList[i]}`],
+                    symbolSize: 10,
+                    itemStyle: {
+                        normal: {
+                            color: "#DDB0AD"
+                        }
+                    }
+                });
+            }
+            dFun(data.categoryList,series);
 
         },
     });
@@ -238,279 +176,6 @@ function exportMonthly(){
         endMonth:endMonth
     };
     console.log(params);
-    exportFile('#rrapp', '../monthly/monthlySalesGrowthExport2', params);
+    exportFile('#rrapp', '../monthly/monthlyCategoryExport', params);
 
 }
-
-
-let vm = new Vue({
-    el: '#rrapp',
-    data: {
-        date: '',
-        refreshTime: 10,
-        type: 'store',
-        refreshCount:0,
-
-        storeId: '',
-        merchSn: '',
-        merchName: '',
-        storeName: '',
-        salesDate: '',
-        totalSales: '',
-        actualSales: '',
-        preferentialLoss: '',
-        totalCost: '',
-        grossProfit: '',
-        grossProfitRatio: '',
-        proportion: '',
-        guestNumber: '',
-        guestUnitPrice: '',
-        lastSalesTime: '',
-        categoryId: '',
-        categoryName: '',
-
-        showList: false,
-        compareDate: '',//比较日期
-        storeId2: '',
-        merchSn2: '',
-        merchName2: '',
-        storeName2: '',
-        salesDate2: '',
-        totalSales2: '',
-        actualSales2: '',
-        preferentialLoss2: '',
-        totalCost2: '',
-        grossProfit2: '',
-        grossProfitRatio2: '',
-        proportion2: '',
-        guestNumber2: '',
-        guestUnitPrice2: '',
-        lastSalesTime2: '',
-        intervalId: 0,
-        isCompare: false,
-        compare2: '',
-
-
-        temp: {
-            date: '',
-            refreshTime: 10,
-            type: '',
-            storeId: '',
-            merchSn: '',
-            salesDate: '',
-            categoryId: ''
-        },
-
-
-        rateList: [
-            {
-                id: '0',
-                name: '含税'
-            },
-            {
-                id: '1',
-                name: '不含税'
-
-            }
-        ],
-        projectList: [
-            {
-                id: '0',
-                name: '销售总额'
-            },
-            {
-                id: '1',
-                name: '客单价'
-
-            }
-        ],
-        seriesTypeList: [
-            {
-                id: 'bar',
-                name: '垂直柱状图'
-            },
-            {
-                id: 'line',
-                name: '折线图'
-
-            },
-            {
-                id: 'pie',
-                name: '饼图'
-
-            }
-        ],
-        formatsList: [
-            {
-                id: '0',
-                name: '<全部>'
-            },
-            {
-                id: '1',
-                name: '<非全部>'
-
-            }
-        ],
-        salesList: [
-            {
-                store: {storeId: '11106', storeName: '前海店'},
-                totalSales: 43046.18,
-                actualSales: 35593.46
-            }
-        ],
-        dept: {
-            deptId: '',
-            deptName: ''
-        },
-        category: {
-            categoryId: '',
-            categoryName: ''
-        },
-        seriesList: [], //保存饼图数据
-        seriesList2: [],
-        xAxisList: {    //主要用于保存 启动刷新时的条件和数据
-            storeId: '',
-            storeName: '',
-            merchSn: '',
-            merchName: '',
-            totalSales: '',
-            actualSales: '',
-            preferentialLoss: '',
-            totalCost: '',
-            grossProfit: '',
-            grossProfitRatio: '',
-            proportion: '',
-            guestNumber: '',
-            guestUnitPrice: '',
-            lastSalesTime: '',
-
-            salesDate: '0',
-            projectSelect: '0',
-            type:''
-        },
-        dataList: [],
-        tooltip: {},
-        today:''
-    },
-    created() {
-        this.rateSelect = this.rateList[0].id;
-        this.projectSelect = this.projectList[0].id;
-        this.seriesTypeSelect = this.seriesTypeList[0].id;
-        this.formatsSelect = this.formatsList[0].id;
-    },
-    methods: {
-
-        seriesTypeSwitch: function () {
-            console.log(vm.seriesTypeSelect);
-        },
-        showEcharts: function () {
-            // 基于准备好的dom,初始化echarts实例
-            myChart = echarts.init(document.getElementById('main'));
-            myChart.clear();
-            //加载动画
-            myChart.showLoading();
-
-
-            //项目下拉框判断       6-19,饼图设置 vm.xAxisList
-            var temp = '';
-            if (vm.xAxisList.projectSelect == '0') {
-                if (vm.xAxisList.type == 'dept') {
-                    temp = '[' + vm.xAxisList.merchSn + ']' + vm.xAxisList.merchName + '/销售总额:' + vm.xAxisList.totalSales + '元(' + vm.xAxisList.salesDate + ')';
-                } else {
-                    temp = '[' + vm.xAxisList.storeId + ']' + vm.xAxisList.storeName + '/销售总额:' + vm.xAxisList.totalSales + '元(' + vm.xAxisList.salesDate + ')';
-                }
-                vm.seriesList2.push(vm.xAxisList.totalSales);
-                vm.seriesList.push({value: vm.xAxisList.totalSales, name: temp});
-
-            } else if (vm.xAxisList.projectSelect == '1') {
-                if (vm.xAxisList.type == 'dept') {
-                    temp = '[' + vm.xAxisList.merchSn + ']' + vm.xAxisList.merchName + '/客单价:' + vm.xAxisList.guestUnitPrice + '元(' + vm.xAxisList.salesDate + ')';
-                } else {
-                    temp = '[' + vm.xAxisList.storeId + ']' + vm.xAxisList.storeName + '/客单价:' + vm.xAxisList.guestUnitPrice + '元(' + vm.xAxisList.salesDate + ')';
-                }
-                vm.seriesList2.push(vm.xAxisList.guestUnitPrice);
-                vm.seriesList.push({value: vm.xAxisList.guestUnitPrice, name: temp});
-
-            }
-
-            vm.dataList = [temp];
-
-            if (vm.seriesTypeSelect == "pie") {
-                vm.seriesList2 = vm.seriesList.concat();
-            }
-
-            // console.log('vm.seriesList2');
-            // console.log(vm.seriesList2);
-
-            // 指定图表的配置项和数据
-            //销售量
-            var option = {
-                title: {
-                    // textAlign: 'right',
-                    text: 'Monthly Customers & Avg Basket',
-                    x: 'center',
-                    textStyle: {
-                        //文字颜色
-                        color: '#17233d',
-                        //字体风格,'normal','italic','oblique'
-                        fontStyle: 'normal',
-                        //字体粗细 'normal','bold','bolder','lighter',100 | 200 | 300 | 400...
-                        fontWeight: 'bold',
-                        //字体系列
-                        fontFamily: 'sans-serif',
-                        //字体大小
-                        fontSize: 28
-                    }
-                },
-                tooltip: {
-                    formatter: function (params) {
-                        return params.name;
-                    }
-                },
-                legend: {
-                    data: ['/销售总额']
-                },
-                xAxis: {
-                    data: vm.dataList,
-                    axisLabel: {
-                        interval: 0
-                    }
-                },
-                yAxis: {},
-                series: [{
-                    barMaxWidth: '20%',
-                    barWidth: '50%',
-                    radius: '55%',
-                    roseType: 'angle',
-                    type: vm.seriesTypeSelect,
-                    color: ['#dd6b66', '#759aa0'],
-                    data: vm.seriesList2
-                }]
-            };
-
-            //隐藏
-            myChart.hideLoading();
-            // 使用刚指定的配置项和数据显示图表。
-            myChart.setOption(option);
-
-        },
-        tooltipFormatter: function () {
-            if (vm.type == 'dept') {
-                return '[' + vm.merchSn + ']' + vm.merchName + '/销售总额:' + vm.totalSales + '元(' + vm.salesDate + ')';
-            }
-            return '[' + vm.storeId + ']' + vm.storeName + '/销售总额:' + vm.totalSales + '元(' + vm.salesDate + ')';
-        },
-        showTable: function (postParam) {
-
-            console.log(postParam);
-
-            $("#jqGrid").jqGrid('setGridParam', {
-                postData: postParam
-
-            }).trigger("reloadGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "scroll"});
-        },
-        switchProjectView: function () {
-            console.log(vm.projectSelect);
-        }
-    }
-});

+ 0 - 272
kmall-admin/src/main/webapp/js/sale/salesByCategory.js

@@ -61,275 +61,3 @@ function queryMonthly(){
 
 }
 
-
-let vm = new Vue({
-    el: '#rrapp',
-    data: {
-        date: '',
-        refreshTime: 10,
-        type: 'store',
-        refreshCount:0,
-
-        storeId: '',
-        merchSn: '',
-        merchName: '',
-        storeName: '',
-        salesDate: '',
-        totalSales: '',
-        actualSales: '',
-        preferentialLoss: '',
-        totalCost: '',
-        grossProfit: '',
-        grossProfitRatio: '',
-        proportion: '',
-        guestNumber: '',
-        guestUnitPrice: '',
-        lastSalesTime: '',
-        categoryId: '',
-        categoryName: '',
-
-        showList: false,
-        compareDate: '',//比较日期
-        storeId2: '',
-        merchSn2: '',
-        merchName2: '',
-        storeName2: '',
-        salesDate2: '',
-        totalSales2: '',
-        actualSales2: '',
-        preferentialLoss2: '',
-        totalCost2: '',
-        grossProfit2: '',
-        grossProfitRatio2: '',
-        proportion2: '',
-        guestNumber2: '',
-        guestUnitPrice2: '',
-        lastSalesTime2: '',
-        intervalId: 0,
-        isCompare: false,
-        compare2: '',
-
-
-        temp: {
-            date: '',
-            refreshTime: 10,
-            type: '',
-            storeId: '',
-            merchSn: '',
-            salesDate: '',
-            categoryId: ''
-        },
-
-
-        rateList: [
-            {
-                id: '0',
-                name: '含税'
-            },
-            {
-                id: '1',
-                name: '不含税'
-
-            }
-        ],
-        projectList: [
-            {
-                id: '0',
-                name: '销售总额'
-            },
-            {
-                id: '1',
-                name: '客单价'
-
-            }
-        ],
-        seriesTypeList: [
-            {
-                id: 'bar',
-                name: '垂直柱状图'
-            },
-            {
-                id: 'line',
-                name: '折线图'
-
-            },
-            {
-                id: 'pie',
-                name: '饼图'
-
-            }
-        ],
-        formatsList: [
-            {
-                id: '0',
-                name: '<全部>'
-            },
-            {
-                id: '1',
-                name: '<非全部>'
-
-            }
-        ],
-        salesList: [
-            {
-                store: {storeId: '11106', storeName: '前海店'},
-                totalSales: 43046.18,
-                actualSales: 35593.46
-            }
-        ],
-        dept: {
-            deptId: '',
-            deptName: ''
-        },
-        category: {
-            categoryId: '',
-            categoryName: ''
-        },
-        seriesList: [], //保存饼图数据
-        seriesList2: [],
-        xAxisList: {    //主要用于保存 启动刷新时的条件和数据
-            storeId: '',
-            storeName: '',
-            merchSn: '',
-            merchName: '',
-            totalSales: '',
-            actualSales: '',
-            preferentialLoss: '',
-            totalCost: '',
-            grossProfit: '',
-            grossProfitRatio: '',
-            proportion: '',
-            guestNumber: '',
-            guestUnitPrice: '',
-            lastSalesTime: '',
-
-            salesDate: '0',
-            projectSelect: '0',
-            type:''
-        },
-        dataList: [],
-        tooltip: {},
-        today:''
-    },
-    created() {
-        this.rateSelect = this.rateList[0].id;
-        this.projectSelect = this.projectList[0].id;
-        this.seriesTypeSelect = this.seriesTypeList[0].id;
-        this.formatsSelect = this.formatsList[0].id;
-    },
-    methods: {
-
-        seriesTypeSwitch: function () {
-            console.log(vm.seriesTypeSelect);
-        },
-        showEcharts: function () {
-            // 基于准备好的dom,初始化echarts实例
-            myChart = echarts.init(document.getElementById('main'));
-            myChart.clear();
-            //加载动画
-            myChart.showLoading();
-
-
-            //项目下拉框判断       6-19,饼图设置 vm.xAxisList
-            var temp = '';
-            if (vm.xAxisList.projectSelect == '0') {
-                if (vm.xAxisList.type == 'dept') {
-                    temp = '[' + vm.xAxisList.merchSn + ']' + vm.xAxisList.merchName + '/销售总额:' + vm.xAxisList.totalSales + '元(' + vm.xAxisList.salesDate + ')';
-                } else {
-                    temp = '[' + vm.xAxisList.storeId + ']' + vm.xAxisList.storeName + '/销售总额:' + vm.xAxisList.totalSales + '元(' + vm.xAxisList.salesDate + ')';
-                }
-                vm.seriesList2.push(vm.xAxisList.totalSales);
-                vm.seriesList.push({value: vm.xAxisList.totalSales, name: temp});
-
-            } else if (vm.xAxisList.projectSelect == '1') {
-                if (vm.xAxisList.type == 'dept') {
-                    temp = '[' + vm.xAxisList.merchSn + ']' + vm.xAxisList.merchName + '/客单价:' + vm.xAxisList.guestUnitPrice + '元(' + vm.xAxisList.salesDate + ')';
-                } else {
-                    temp = '[' + vm.xAxisList.storeId + ']' + vm.xAxisList.storeName + '/客单价:' + vm.xAxisList.guestUnitPrice + '元(' + vm.xAxisList.salesDate + ')';
-                }
-                vm.seriesList2.push(vm.xAxisList.guestUnitPrice);
-                vm.seriesList.push({value: vm.xAxisList.guestUnitPrice, name: temp});
-
-            }
-
-            vm.dataList = [temp];
-
-            if (vm.seriesTypeSelect == "pie") {
-                vm.seriesList2 = vm.seriesList.concat();
-            }
-
-            // console.log('vm.seriesList2');
-            // console.log(vm.seriesList2);
-
-            // 指定图表的配置项和数据
-            //销售量
-            var option = {
-                title: {
-                    // textAlign: 'right',
-                    text: 'Monthly Customers & Avg Basket',
-                    x: 'center',
-                    textStyle: {
-                        //文字颜色
-                        color: '#17233d',
-                        //字体风格,'normal','italic','oblique'
-                        fontStyle: 'normal',
-                        //字体粗细 'normal','bold','bolder','lighter',100 | 200 | 300 | 400...
-                        fontWeight: 'bold',
-                        //字体系列
-                        fontFamily: 'sans-serif',
-                        //字体大小
-                        fontSize: 28
-                    }
-                },
-                tooltip: {
-                    formatter: function (params) {
-                        return params.name;
-                    }
-                },
-                legend: {
-                    data: ['/销售总额']
-                },
-                xAxis: {
-                    data: vm.dataList,
-                    axisLabel: {
-                        interval: 0
-                    }
-                },
-                yAxis: {},
-                series: [{
-                    barMaxWidth: '20%',
-                    barWidth: '50%',
-                    radius: '55%',
-                    roseType: 'angle',
-                    type: vm.seriesTypeSelect,
-                    color: ['#dd6b66', '#759aa0'],
-                    data: vm.seriesList2
-                }]
-            };
-
-            //隐藏
-            myChart.hideLoading();
-            // 使用刚指定的配置项和数据显示图表。
-            myChart.setOption(option);
-
-        },
-        tooltipFormatter: function () {
-            if (vm.type == 'dept') {
-                return '[' + vm.merchSn + ']' + vm.merchName + '/销售总额:' + vm.totalSales + '元(' + vm.salesDate + ')';
-            }
-            return '[' + vm.storeId + ']' + vm.storeName + '/销售总额:' + vm.totalSales + '元(' + vm.salesDate + ')';
-        },
-        showTable: function (postParam) {
-
-            console.log(postParam);
-
-            $("#jqGrid").jqGrid('setGridParam', {
-                postData: postParam
-
-            }).trigger("reloadGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "scroll"});
-        },
-        switchProjectView: function () {
-            console.log(vm.projectSelect);
-        }
-    }
-});