Browse Source

营期统计分页数据问题处理

yfh 2 weeks ago
parent
commit
aa9d2ef2a6

+ 2 - 1
fs-admin/src/main/java/com/fs/course/controller/FsUserCoursePeriodController.java

@@ -220,10 +220,11 @@ public class FsUserCoursePeriodController extends BaseController {
     public R periodCourseCount(@RequestBody PeriodCountParam param) {
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
         List<FsPeriodCountVO> list = fsUserCoursePeriodDaysService.periodCourseCount(param);
+        long count = fsUserCoursePeriodDaysService.periodCourseByCount(param);
         PageInfo<FsPeriodCountVO> pageInfo = new PageInfo<>(list);
         Map<String, Object> result = new HashMap<>();
         result.put("rows", pageInfo.getList());
-        result.put("total", pageInfo.getTotal());
+        result.put("total", count);
         return R.ok(result);
     }
 

+ 1 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCoursePeriodDaysMapper.java

@@ -117,4 +117,5 @@ public interface FsUserCoursePeriodDaysMapper extends BaseMapper<FsUserCoursePer
             "</script>")
     int updateBatchDelFlag(@Param("ids") Long [] ids, @Param("delFlag") Integer delFlag);
 
+    Long selectFsUserCoursePeriodDaysCount(FsUserCoursePeriodDays fsUserCoursePeriodDays);
 }

+ 3 - 1
fs-service/src/main/java/com/fs/course/service/IFsUserCoursePeriodDaysService.java

@@ -117,4 +117,6 @@ public interface IFsUserCoursePeriodDaysService extends IService<FsUserCoursePer
      * 更新营期课程状态
      */
     void changePeriodCourseStatus();
-}
+
+        long periodCourseByCount(PeriodCountParam param);
+    }

+ 14 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodDaysServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.course.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -8,6 +9,7 @@ import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.PubFun;
 import com.fs.common.utils.date.DateUtil;
 import com.fs.common.utils.date.TimeTypeEnum;
+import com.fs.company.domain.CompanyDomain;
 import com.fs.course.domain.FsUserCoursePeriod;
 import com.fs.course.domain.FsUserCoursePeriodDays;
 import com.fs.course.domain.FsUserCourseVideo;
@@ -25,6 +27,7 @@ import com.fs.course.vo.UpdateCourseTimeVo;
 import com.fs.course.vo.newfs.FsCourseAnalysisCountVO;
 import com.fs.his.mapper.FsUserMapper;
 import com.fs.his.vo.OptionsVO;
+import com.fs.sop.domain.QwSopTempRules;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.mapper.SysConfigMapper;
 import lombok.AllArgsConstructor;
@@ -405,6 +408,17 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
         fsUserCoursePeriodDaysMapper.endPeriodCourse(LocalDateTime.now());
     }
 
+    @Override
+    public long periodCourseByCount(PeriodCountParam param) {
+        //1、查询课程视频信息
+        FsUserCoursePeriodDays fsUserCoursePeriodDays = new FsUserCoursePeriodDays();
+        fsUserCoursePeriodDays.setPeriodId(param.getPeriodId());
+        fsUserCoursePeriodDays.setVideoIds(param.getVideoIdList());
+        fsUserCoursePeriodDays.setMaxDate(param.getMaxDate());
+
+        return baseMapper.selectFsUserCoursePeriodDaysCount(fsUserCoursePeriodDays);
+    }
+
     private static FsCourseAnalysisCountVO getCourseAnalysisCountVO(FsUserCoursePeriodDays v, Map<Long, FsCourseAnalysisCountVO> courseMap, Map<Long, FsCourseAnalysisCountVO> redPacketMap, Map<Long, FsCourseAnalysisCountVO> answerMap) {
         FsCourseAnalysisCountVO countVO = new FsCourseAnalysisCountVO();
         FsCourseAnalysisCountVO courseVO = courseMap.getOrDefault(v.getVideoId(), countVO);

+ 18 - 1
fs-service/src/main/resources/mapper/course/FsUserCoursePeriodDaysMapper.xml

@@ -44,7 +44,24 @@
         </where>
         order by a.day_date
     </select>
-
+    <select id="selectFsUserCoursePeriodDaysCount" parameterType="FsUserCoursePeriodDays" resultType="java.lang.Long">
+        select count(a.id) from fs_user_course_period_days a
+        inner join fs_user_course b on a.course_id = b.course_id
+        inner join fs_user_course_video c on a.video_id = c.video_id
+        <where>
+            and a.del_flag ='0'
+            <if test="periodId != null "> and period_id = #{periodId}</if>
+            <if test="courseId != null "> and a.course_id = #{courseId}</if>
+            <if test="videoId != null "> and a.video_id = #{videoId}</if>
+            <if test="maxDate != null "> and a.day_date &lt;= #{maxDate}</if>
+            <if test="videoIds != null and videoIds.size > 0">
+                and a.video_id in
+                <foreach collection="videoIds" open="(" close=")" separator="," item="videoId">
+                    #{videoId}
+                </foreach>
+            </if>
+        </where>
+    </select>
     <select id="selectFsUserCoursePeriodDaysById" parameterType="Long" resultMap="FsUserCoursePeriodDaysResult">
         <include refid="selectFsUserCoursePeriodDaysVo"/>
         where id = #{id}