lyhzzz преди 2 години
родител
ревизия
24cad56859

+ 2 - 1
src/main/java/com/fdkankan/manage/controller/DataController.java

@@ -63,9 +63,10 @@ public class DataController {
      */
     @GetMapping("/orderTrend")
     public ResultData orderTrend(@RequestParam(required = false,defaultValue = "0") Integer type,
+                                 @RequestParam(required = false,defaultValue = "0") Integer dataType,
                                  @RequestParam(required = false) String startTime,
                                  @RequestParam(required = false) String endTime){
-        return ResultData.ok(dataService.orderTrend(type,startTime,endTime));
+        return ResultData.ok(dataService.orderTrend(type,dataType,startTime,endTime));
     }
     /**
      *统计近半年场景新增趋势

+ 5 - 0
src/main/java/com/fdkankan/manage/mapper/IDataMapper.java

@@ -1,6 +1,7 @@
 package com.fdkankan.manage.mapper;
 
 import com.fdkankan.manage.vo.response.DataGroupByCount;
+import com.fdkankan.manage.vo.response.DataGroupBySum;
 import com.fdkankan.manage.vo.response.OrderDataGroupByCount;
 import com.fdkankan.manage.vo.response.SceneDataGroupByCount;
 import org.apache.ibatis.annotations.Mapper;
@@ -13,6 +14,8 @@ public interface IDataMapper {
 
     List<DataGroupByCount> userDataGroupBy(@Param("tb") String tb,@Param("dateFormat")String dateFormat,
                                            @Param("startTime")String startTime,@Param("endTime")String endTime);
+    List<DataGroupBySum> userDataSumGroupBy(@Param("tb") String tb, @Param("dateFormat")String dateFormat,
+                                            @Param("startTime")String startTime, @Param("endTime")String endTime);
 
     Long totalUserCount(@Param("tb") String tb,@Param("type")Integer type);
 
@@ -23,9 +26,11 @@ public interface IDataMapper {
     Long todayActiveCount();
 
     List<DataGroupByCount> userDataGroupByWeek(@Param("tb") String tb, @Param("startTime")String startTime,@Param("endTime")String endTime);
+    List<DataGroupBySum> userDataSumGroupByWeek(@Param("tb") String tb, @Param("startTime")String startTime,@Param("endTime")String endTime);
 
     List<DataGroupByCount> sceneGroupBy(@Param("tb") String tb, @Param("dateFormat")String dateFormat,
                                         @Param("startTime")String startTime,@Param("endTime")String endTime);
 
     List<DataGroupByCount> sceneGroupByWeek(@Param("tb") String tb,@Param("startTime")String startTime,@Param("endTime")String endTime);
+
 }

+ 1 - 1
src/main/java/com/fdkankan/manage/service/IDataService.java

@@ -15,7 +15,7 @@ public interface IDataService {
 
     List<DataGroupByCount> userTrend(Integer type,Integer dataType,String startTime,String endTime);
 
-    HashMap<String, List<DataGroupByCount>> orderTrend(Integer type,String startTime,String endTime);
+    HashMap<String, Object> orderTrend(Integer type,Integer dataType,String startTime,String endTime);
 
     HashMap<String, List<DataGroupByCount>> sceneTrend(Integer type,Integer dataType,String startTime,String endTime);
 

+ 55 - 4
src/main/java/com/fdkankan/manage/service/impl/DataService.java

@@ -114,11 +114,13 @@ public class DataService implements IDataService {
     }
 
     @Override
-    public HashMap<String, List<DataGroupByCount>> orderTrend(Integer type,String startTime,String endTime) {
+    public HashMap<String, Object> orderTrend(Integer type,Integer dataType,String startTime,String endTime) {
         startTime = Dateutils.formatStartTime(startTime,type);
         endTime = Dateutils.formatEndTime(endTime,type);
-
-        HashMap<String,List<DataGroupByCount>> map = new HashMap<>();
+        HashMap<String,Object> map = new HashMap<>();
+        if(dataType == 1){
+            return getAmountSumOrder(map,type,startTime,endTime);
+        }
         List<DataGroupByCount> incrementOrderList = new ArrayList<>();
         List<DataGroupByCount> downOrderList = new ArrayList<>();
         List<DataGroupByCount> partOrderList = new ArrayList<>();
@@ -163,7 +165,56 @@ public class DataService implements IDataService {
         }
         map.put("incrementOrder",incrementOrderResultList);
         map.put("downOrder",downOrderResultList);
-        map.put("partOrder",partOrderList);
+        //map.put("partOrder",partOrderList);
+        return map;
+    }
+
+    private HashMap<String, Object> getAmountSumOrder(HashMap<String,Object> map,Integer type, String startTime, String endTime) {
+        List<DataGroupBySum> incrementOrderList = new ArrayList<>();
+        List<DataGroupBySum> downOrderList = new ArrayList<>();
+        List<DataGroupBySum> partOrderList = new ArrayList<>();
+        List<DataGroupBySum> incrementOrderResultList = new ArrayList<>();
+        List<DataGroupBySum> downOrderResultList = new ArrayList<>();
+        List<DataGroupBySum> partOrderResultList = new ArrayList<>();
+        int rule = Dateutils.DAY;
+        switch (type){
+            case 0 :
+                incrementOrderList = dataMapper.userDataSumGroupBy("t_increment_order",dayFormat,startTime,endTime);
+                downOrderList = dataMapper.userDataSumGroupBy("t_download_order",dayFormat,startTime,endTime);
+                break;
+            case 1 :
+                rule = Dateutils.WEEK;
+                incrementOrderList = dataMapper.userDataSumGroupByWeek("t_increment_order",startTime,endTime);
+                downOrderList = dataMapper.userDataSumGroupByWeek("t_download_order",startTime,endTime);
+                break;
+            case 2 :
+                rule = Dateutils.MONTH;
+                incrementOrderList = dataMapper.userDataSumGroupBy("t_increment_order",mouthFormat,startTime,endTime);
+                downOrderList = dataMapper.userDataSumGroupBy("t_download_order",mouthFormat,startTime,endTime);
+                break;
+        }
+        //查询从开始时间到结束时间为止所有天数,月份,不存在结果补零
+        HashMap<String,String> incrementMap = new HashMap<>();
+        HashMap<String,String> downOrderMap = new HashMap<>();
+        HashMap<String,Long> partMap = new HashMap<>();
+        incrementOrderList.forEach(entity -> incrementMap.put(entity.getGroupKey(),entity.getCount()));
+        downOrderList.forEach(entity -> downOrderMap.put(entity.getGroupKey(),entity.getCount()));
+
+        List<String> dates = Dateutils.findDatesStr(Dateutils.getDate(startTime), Dateutils.getDate(endTime),rule );
+        for (String date : dates) {
+            DataGroupBySum groupByCount = new DataGroupBySum();
+            groupByCount.setGroupKey(date);
+            groupByCount.setCount(incrementMap.get(date)== null ?"0" :incrementMap.get(date));
+            incrementOrderResultList.add(groupByCount);
+
+            DataGroupBySum groupByCount2 = new DataGroupBySum();
+            groupByCount2.setGroupKey(date);
+            groupByCount2.setCount(downOrderMap.get(date)== null ?"0" :downOrderMap.get(date));
+            downOrderResultList.add(groupByCount2);
+        }
+        map.put("incrementOrder",incrementOrderResultList);
+        map.put("downOrder",downOrderResultList);
+        //map.put("partOrder",partOrderList);
         return map;
     }
 

+ 8 - 0
src/main/java/com/fdkankan/manage/vo/response/DataGroup.java

@@ -0,0 +1,8 @@
+package com.fdkankan.manage.vo.response;
+
+import lombok.Data;
+
+@Data
+public class DataGroup {
+    private String groupKey;
+}

+ 1 - 2
src/main/java/com/fdkankan/manage/vo/response/DataGroupByCount.java

@@ -3,8 +3,7 @@ package com.fdkankan.manage.vo.response;
 import lombok.Data;
 
 @Data
-public class DataGroupByCount {
-    private String groupKey;
+public class DataGroupByCount extends DataGroup{
     private Long count;
     private String groupKey2;
 }

+ 9 - 0
src/main/java/com/fdkankan/manage/vo/response/DataGroupBySum.java

@@ -0,0 +1,9 @@
+package com.fdkankan.manage.vo.response;
+
+import lombok.Data;
+
+@Data
+public class DataGroupBySum extends DataGroup{
+    private String count;
+    private String groupKey2;
+}

+ 17 - 0
src/main/resources/mapper/manage/DataMapper.xml

@@ -9,6 +9,13 @@
         GROUP BY groupKey
     </select>
 
+    <select id="userDataSumGroupBy" resultType="com.fdkankan.manage.vo.response.DataGroupBySum">
+        SELECT DATE_FORMAT(create_time,#{dateFormat}) AS groupKey, sum(amount) AS count FROM ${tb} WHERE rec_status = 'A'
+        and create_time between #{startTime} and #{endTime}
+        <include refid="tbWhereSql"></include>
+        GROUP BY groupKey
+    </select>
+
     <select id="userDataGroupByWeek" resultType="com.fdkankan.manage.vo.response.DataGroupByCount">
         SELECT groupKey ,count(1) as count FROM (
                select date_format(date_add(create_time,interval-(weekday(create_time ))day),'%Y-%m-%d')  as groupKey
@@ -18,6 +25,15 @@
                 <include refid="tbWhereSql"></include>
          ) as tb GROUP BY groupKey
     </select>
+    <select id="userDataSumGroupByWeek" resultType="com.fdkankan.manage.vo.response.DataGroupBySum">
+        SELECT groupKey ,sum(amount) as count FROM (
+               select amount,date_format(date_add(create_time,interval-(weekday(create_time ))day),'%Y-%m-%d')  as groupKey
+                from ${tb}
+               WHERE rec_status = 'A'
+                 and create_time between #{startTime} and #{endTime}
+                <include refid="tbWhereSql"></include>
+         ) as tb GROUP BY groupKey
+    </select>
 
 
     <sql id="typeSQL">
@@ -81,4 +97,5 @@
     </select>
 
 
+
 </mapper>