Преглед на файлове

济南联志总后台企微看课统计新增总合计数据内容

lmx преди 1 седмица
родител
ревизия
837cf58c4a

+ 13 - 0
fs-admin/src/main/java/com/fs/course/controller/qw/QwFsCourseWatchLogController.java

@@ -23,6 +23,7 @@ import com.fs.qw.param.QwWatchLogStatisticsListParam;
 import com.fs.qw.service.IQwWatchLogService;
 import com.fs.qw.vo.QwWatchLogAllStatisticsListVO;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
@@ -39,6 +40,9 @@ import java.util.List;
 @RequestMapping("/qw/course/courseWatchLog")
 public class QwFsCourseWatchLogController extends BaseController
 {
+    @Value("${cloud_host.company_name}")
+    private String signProjectName;
+
     @Autowired
     private IFsCourseWatchLogService fsCourseWatchLogService;
 
@@ -78,9 +82,18 @@ public class QwFsCourseWatchLogController extends BaseController
         }
         param.setSendType(2); //企微
         List<FsCourseWatchLogStatisticsListVO> list = fsCourseWatchLogService.selectFsCourseWatchLogStatisticsListVO(param);
+        if("济南联志健康".equals(signProjectName)){
+            FsCourseWatchLogStatisticsListVO totalData = fsCourseWatchLogService.getTotalDataAddItem(param);
+            list.add(totalData);
+        }
         return getDataTable(list);
     }
 
+    @GetMapping("/getSignProjectName")
+    public R getSignProjectName(){
+        return R.ok().put("signProjectName", signProjectName);
+    }
+
     @GetMapping("/statisticsListByCompany")
     public R statisticsListByCompany(FsCourseWatchLogStatisticsListParam param)
     {

+ 92 - 0
fs-service/src/main/java/com/fs/course/mapper/FsCourseWatchLogMapper.java

@@ -295,6 +295,98 @@ public interface FsCourseWatchLogMapper extends BaseMapper<FsCourseWatchLog> {
             "</script>"})
     List<FsCourseWatchLogStatisticsListVO> selectFsCourseWatchLogStatisticsListVO(FsCourseWatchLogStatisticsListParam param);
 
+    @Select({"<script> " +
+            " \tselect \n" +
+            "\t'总合计' as qw_user_name,\n" +
+            "\tsum(t1.type1) as type1,\n" +
+            "\tsum(t1.type2) as type2,\n" +
+            "\tsum(t1.type3) as type3,\n" +
+            "\tsum(t1.type4) as type4,\n" +
+            "\t (\n" +
+            "     sum(t1.type1)+\n" +
+            "     sum(t1.type2) +\n" +
+            "     sum(t1.type4)\n" +
+            "   ) AS on_line_num,\n" +
+            "\t sum(send_number) as send_number,\n" +
+            "\t sum(is_user_wait_number) as is_user_wait_number,\n" +
+            "\t sum(no_user_wait_number) as no_user_wait_number,\n" +
+            "\t sum(red_amount) as red_amount\n" +
+            "\tfrom  ( select t.* " +
+            "<if test= 'sendType != 1 '> " +
+            " ,concat(round(if(t.send_number=0,0,(t.on_line_num/t.send_number)*100),2),'%') on_line_rate" +
+            " ,concat(round(if(t.send_number=0,0,(t.type2/t.send_number)*100),2),'%') finished_rate" +
+            "</if> " +
+            "from (" +
+            "SELECT \n" +
+            "o.video_id,o.company_id,o.qw_user_id,DATE(o.create_time) create_time," +
+            "<if test= 'sendType != 1 '> " +
+            " qu.qw_user_name qw_user_name," +
+            "</if>\n" +
+            "<if test= 'sendType == 1 '> " +
+            " cu.nick_name qw_user_name," +
+            "</if>\n" +
+            "v.title videoName,uc.course_name,\n" +
+            "SUM(CASE WHEN o.log_type = '1' THEN 1 ELSE 0 END) AS type1,\n" +
+            "SUM(CASE WHEN o.log_type = '2' THEN 1 ELSE 0 END) AS type2,\n" +
+            "SUM(CASE WHEN o.log_type = '3' THEN 1 ELSE 0 END) AS type3,\n" +
+            "SUM(CASE WHEN o.log_type = '4' THEN 1 ELSE 0 END) AS type4,\n" +
+            "(\n" +
+            "  SUM(CASE WHEN o.log_type = '1' THEN 1 ELSE 0 END) +\n" +
+            "  SUM(CASE WHEN o.log_type = '2' THEN 1 ELSE 0 END) +\n" +
+            "  SUM(CASE WHEN o.log_type = '4' THEN 1 ELSE 0 END)\n" +
+            ") AS on_line_num " +
+            "<if test= 'sendType != 1 '> " +
+            " ,count(o.log_id) send_number" +
+            " ,sum(if((o.user_id is not null or o.user_id>0) and o.log_type=3,1,0)) is_user_wait_number" +
+            " ,sum(if((o.user_id is null or o.user_id=0) and o.log_type=3,1,0)) no_user_wait_number" +
+//            " ,sum(ifnull(fcr.amount,0)) red_amount" +
+            ",(SELECT SUM(amount) FROM fs_course_red_packet_log \n" +
+            "     WHERE user_id = o.user_id AND video_id = o.video_id) as red_amount " +
+            "</if> " +
+            "FROM fs_course_watch_log o " +
+            "<if test= 'sendType != 1 '> " +
+            " LEFT JOIN qw_user qu on qu.id=o.qw_user_id " +
+//            " LEFT JOIN fs_course_red_packet_log fcr on o.user_id = fcr.user_id and fcr.video_id = o.video_id" + //会有笛卡尔积问题
+            "</if>\n" +
+            "LEFT JOIN fs_user_course_video v on v.video_id=o.video_id \n" +
+            "LEFT JOIN fs_user_course uc on uc.course_id=v.course_id\n" +
+            "<if test= 'sendType == 1 '> " +
+            " LEFT JOIN company_user cu on cu.user_id=o.company_user_id\n" +
+            "</if>\n" +
+            "where o.company_id=#{companyId} " +
+            "<if test= 'sendType != null '> " +
+            "       and  send_type= #{sendType} " +
+            "</if>\n" +
+            "<if test= 'sTime != null '> " +
+            "       and DATE(o.create_time) &gt;= DATE(#{sTime})\n" +
+            "</if>\n" +
+            "<if test='eTime != null '> " +
+            "      and DATE(o.create_time) &lt;= DATE(#{eTime})\n" +
+            "</if>" +
+            "<if test ='sendType != 1 and nickName !=null and nickName!=\"\"'>\n" +
+            "   and qu.qw_user_name like concat( #{nickName}, '%')\n" +
+            "</if>" +
+            "<if test ='sendType == 1 and nickName !=null and nickName!=\"\"'>\n" +
+            "   and cu.nick_name like concat( #{nickName}, '%')\n" +
+            "</if>" +
+            "<if test ='courseId !=null'> " +
+            "     and o.course_id = #{courseId} " +
+            "</if>" +
+            "<if test ='videoId !=null'> " +
+            "     and o.video_id = #{videoId} " +
+            "</if>" +
+            "GROUP BY o.video_id," +
+            "<if test= 'sendType != 1 '> " +
+            " o.qw_user_id," +
+            "</if>\n" +
+            "<if test= 'sendType == 1 '> " +
+            " o.company_user_id," +
+            "</if>\n" +
+            "DATE(o.create_time)\n" +
+            "ORDER BY o.video_id ,DATE(o.create_time) " +
+            ") t ) t1 \n"+
+            "</script>"})
+    FsCourseWatchLogStatisticsListVO getTotalDataAddItem(FsCourseWatchLogStatisticsListParam param);
     @Select({"<script> " +
             "SELECT COUNT(*) FROM (" +
             "    SELECT 1 " +

+ 8 - 0
fs-service/src/main/java/com/fs/course/service/IFsCourseWatchLogService.java

@@ -88,6 +88,14 @@ public interface IFsCourseWatchLogService extends IService<FsCourseWatchLog> {
     void testFinishMsg();
 
     List<FsCourseWatchLogStatisticsListVO> selectFsCourseWatchLogStatisticsListVO(FsCourseWatchLogStatisticsListParam param);
+
+    /**
+     * 新增企微看课统计汇总行查询
+     * @param param
+     * @return
+     */
+    FsCourseWatchLogStatisticsListVO getTotalDataAddItem(FsCourseWatchLogStatisticsListParam param);
+
     List<FsCourseWatchLogStatisticsListByCompanyVO> selectFsCourseWatchLogStatisticsListByCompanyVO(FsCourseWatchLogStatisticsListParam param);
 
     void scheduleBatchUpdateToDatabase();

+ 23 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsCourseWatchLogServiceImpl.java

@@ -59,6 +59,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.Duration;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -764,6 +766,27 @@ public class FsCourseWatchLogServiceImpl extends ServiceImpl<FsCourseWatchLogMap
         return fsCourseWatchLogMapper.selectFsCourseWatchLogStatisticsListVO(param);
     }
 
+
+    /**
+     * 新增企微看课统计汇总行查询
+     * @param param
+     * @return
+     */
+    public FsCourseWatchLogStatisticsListVO getTotalDataAddItem(FsCourseWatchLogStatisticsListParam param){
+        FsCourseWatchLogStatisticsListVO addItem =  fsCourseWatchLogMapper.getTotalDataAddItem(param);
+        if(null != addItem && null != addItem.getOnLineNum() && 0 != addItem.getOnLineNum() && null != addItem.getSendNumber()){
+            addItem.setOnLineRate(new BigDecimal(addItem.getOnLineNum())
+                    .multiply(new BigDecimal(100))
+                    .divide(new BigDecimal(addItem.getSendNumber()),2,BigDecimal.ROUND_HALF_UP)
+                     + "%");
+
+            addItem.setFinishedRate(new BigDecimal(addItem.getType2())
+                    .multiply(new BigDecimal(100))
+                    .divide(new BigDecimal(addItem.getSendNumber()),2,BigDecimal.ROUND_HALF_UP) + "%");
+        }
+        return addItem;
+    }
+
     @Override
     public List<FsCourseWatchLogStatisticsListByCompanyVO> selectFsCourseWatchLogStatisticsListByCompanyVO(FsCourseWatchLogStatisticsListParam param) {
         return fsCourseWatchLogMapper.selectFsCourseWatchLogStatisticsListByCompanyVO(param);