Преглед изворни кода

增加叮当国医看课流量导出功能

cgp пре 1 недеља
родитељ
комит
828d7021a2

+ 4 - 0
fs-admin/src/main/java/com/fs/course/controller/FsCourseTrafficLogController.java

@@ -71,6 +71,10 @@ public class FsCourseTrafficLogController extends BaseController
             param.setMonth(Integer.parseInt(parts[1]));
         }
         List<FsCourseTrafficLogListVO> list = fsCourseTrafficLogService.selectTrafficByCompany(param);
+        //格式化每个记录的流量为 GB 字符串
+        for (FsCourseTrafficLogListVO vo : list) {
+            vo.formatTraffic();
+        }
         ExcelUtil<FsCourseTrafficLogListVO> util = new ExcelUtil<FsCourseTrafficLogListVO>(FsCourseTrafficLogListVO.class);
         return util.exportExcel(list, "短链课程流量记录数据");
     }

+ 17 - 17
fs-service/src/main/java/com/fs/course/mapper/FsCourseTrafficLogMapper.java

@@ -71,23 +71,23 @@ public interface FsCourseTrafficLogMapper
      */
     public int deleteFsCourseTrafficLogByLogIds(Long[] logIds);
 
-    @Select({"<script> " +
-            "select c.company_name, SUM(l.internet_traffic) AS total_internet_traffic" +
-            ",DATE_FORMAT(l.create_time, '%Y-%m') AS `month`  from fs_course_traffic_log l " +
-            "left join company c on c.company_id = l.company_id " +
-            "where 1 = 1 " +
-            "<if test= 'maps.year != null '>" +
-            "and YEAR(l.create_time) = #{maps.year} " +
-            "</if>" +
-            "<if test= 'maps.month != null '>"+
-            "and MONTH(l.create_time) = #{maps.month} " +
-            "</if>" +
-            "<if test = ' maps.companyId !=null '> " +
-            "and l.company_id = #{maps.companyId} " +
-            "</if>" +
-            "group by l.company_id,`month` "+
-            "</script>"})
-    List<FsCourseTrafficLogListVO> selectTrafficByCompany(@Param("maps") FsCourseTrafficLogParam param);
+//    @Select({"<script> " +
+//            "select c.company_name, SUM(l.internet_traffic) AS total_internet_traffic" +
+//            ",DATE_FORMAT(l.create_time, '%Y-%m') AS `month`  from fs_course_traffic_log l " +
+//            "left join company c on c.company_id = l.company_id " +
+//            "where 1 = 1 " +
+//            "<if test= 'maps.year != null '>" +
+//            "and YEAR(l.create_time) = #{maps.year} " +
+//            "</if>" +
+//            "<if test= 'maps.month != null '>"+
+//            "and MONTH(l.create_time) = #{maps.month} " +
+//            "</if>" +
+//            "<if test = ' maps.companyId !=null '> " +
+//            "and l.company_id = #{maps.companyId} " +
+//            "</if>" +
+//            "group by l.company_id,`month` "+
+//            "</script>"})
+    List<FsCourseTrafficLogListVO> selectTrafficByCompany(FsCourseTrafficLogParam param);
 
     @Select("select * from fs_course_traffic_log where uu_id = #{uuId}")
     FsCourseTrafficLog selectFsCourseTrafficLogByuuId(@Param("uuId") String uuId);

+ 18 - 1
fs-service/src/main/java/com/fs/course/vo/FsCourseTrafficLogListVO.java

@@ -15,15 +15,32 @@ import java.io.Serializable;
 @Data
 public class FsCourseTrafficLogListVO implements Serializable
 {
+    @Excel(name = "公司名称")
     private String companyName;
     private Long companyId;
+    @Excel(name = "课程名称")
     private String courseName;
     private Long courseId;
+    @Excel(name = "项目名称")
     private String projectName;
     private Long project;
-
+    // 原始字节数(不用于导出)
     private Long totalInternetTraffic;
 
+    @Excel(name = "总流量 (GB)")
+    private String formattedTotalTraffic;
+
+    @Excel(name = "统计月份")
     private String month;
 
+    // 工具方法:根据 totalInternetTraffic 自动计算 formattedTotalTraffic
+    public void formatTraffic() {
+        if (this.totalInternetTraffic == null) {
+            this.formattedTotalTraffic = "0.0000 GB";
+        } else {
+            double gb = this.totalInternetTraffic.doubleValue() / (1024 * 1024 * 1024);
+            this.formattedTotalTraffic = String.format("%.4f GB", gb);
+        }
+    }
+
 }

+ 33 - 0
fs-service/src/main/resources/mapper/course/FsCourseTrafficLogMapper.xml

@@ -281,4 +281,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
     </select>
 
+    <select id="selectTrafficByCompany" parameterType="com.fs.course.param.FsCourseTrafficLogParam"
+            resultType="com.fs.course.vo.FsCourseTrafficLogListVO">
+        SELECT
+        c.company_name AS companyName,
+        l.company_id AS companyId,
+        '' AS courseName,
+        0 AS courseId,
+        '' AS projectName,
+        0 AS project,
+        SUM(l.internet_traffic) AS totalInternetTraffic,
+        DATE_FORMAT(l.create_time, '%Y-%m') AS month
+        FROM fs_course_traffic_log l
+        LEFT JOIN company c ON c.company_id = l.company_id
+        <where>
+            <if test="startDate != null and startDate != ''">
+                AND l.create_time >= STR_TO_DATE(#{startDate}, '%Y-%m-%d %H:%i:%s')
+            </if>
+            <if test="endDate != null and endDate != ''">
+                AND l.create_time &lt;= STR_TO_DATE(#{endDate}, '%Y-%m-%d %H:%i:%s')
+            </if>
+            <if test="companyId != null">
+                AND l.company_id = #{companyId}
+            </if>
+            <if test="common == null">
+                AND l.company_id IS NOT NULL
+            </if>
+            <if test="common != null">
+                AND l.company_id IS NULL
+            </if>
+        </where>
+        GROUP BY l.company_id, DATE_FORMAT(l.create_time, '%Y-%m')
+    </select>
+
 </mapper>