change 3 роки тому
батько
коміт
9f180cd127

+ 12 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java

@@ -87,6 +87,18 @@ public class ClassGradeController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 查询学时学员记录列表
+     */
+    @ApiOperation("查询学员信息列表")
+    @PreAuthorize("@ss.hasPermi('grade:user:list')")
+    @GetMapping("/listPeriod")
+    public TableDataInfo<ClassPeriodUserVo> listPeriod(ClassGradeUserQueryBo bo) {
+        startPage();
+        List<ClassPeriodUserVo> list = iClassGradeUserService.listPeriod(bo);
+        return getDataTable(list);
+    }
+
     /**
      * 查询学员记录列表
      */

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeUserMapper.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.grade.vo.ClassGradeUserGoodsVo;
 import com.zhongzheng.modules.grade.vo.ClassGradeUserVo;
 import com.zhongzheng.modules.grade.vo.ClassPeriodStudentVo;
+import com.zhongzheng.modules.grade.vo.ClassPeriodUserVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -23,4 +24,6 @@ public interface ClassGradeUserMapper extends BaseMapper<ClassGradeUser> {
     List<ClassGradeUserGoodsVo> listUser(ClassGradeUserQueryBo bo);
 
     List<ClassPeriodStudentVo> listUserPeriod(ClassGradeUserQueryBo bo);
+
+    List<ClassPeriodUserVo> listPeriod(ClassGradeUserQueryBo bo);
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java

@@ -8,6 +8,7 @@ import com.zhongzheng.modules.grade.bo.ClassGradeUserAddBo;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserEditBo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.grade.vo.ClassPeriodStudentVo;
+import com.zhongzheng.modules.grade.vo.ClassPeriodUserVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -55,4 +56,6 @@ public interface IClassGradeUserService extends IService<ClassGradeUser> {
     List<ClassGradeUserGoodsVo> listUser(ClassGradeUserQueryBo bo);
 
 	List<ClassPeriodStudentVo> listUserPeriod(ClassGradeUserQueryBo bo);
+
+    List<ClassPeriodUserVo> listPeriod(ClassGradeUserQueryBo bo);
 }

+ 55 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -3,8 +3,11 @@ package com.zhongzheng.modules.grade.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
 import com.zhongzheng.common.utils.DateUtils;
-import com.zhongzheng.modules.grade.vo.ClassGradeUserGoodsVo;
-import com.zhongzheng.modules.grade.vo.ClassPeriodStudentVo;
+import com.zhongzheng.modules.grade.vo.*;
+import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
+import com.zhongzheng.modules.user.service.IUserStudyRecordService;
+import com.zhongzheng.modules.user.vo.SubjectStudyRecordVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -15,9 +18,9 @@ import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserEditBo;
 import com.zhongzheng.modules.grade.domain.ClassGradeUser;
 import com.zhongzheng.modules.grade.mapper.ClassGradeUserMapper;
-import com.zhongzheng.modules.grade.vo.ClassGradeUserVo;
 import com.zhongzheng.modules.grade.service.IClassGradeUserService;
 
+import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -32,6 +35,9 @@ import java.util.stream.Collectors;
 @Service
 public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper, ClassGradeUser> implements IClassGradeUserService {
 
+    @Autowired
+    private IUserStudyRecordService iUserStudyRecordService;
+
     @Override
     public ClassGradeUserVo queryById(Long id){
         ClassGradeUser db = this.baseMapper.selectById(id);
@@ -104,6 +110,51 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
 
     @Override
     public List<ClassPeriodStudentVo> listUserPeriod(ClassGradeUserQueryBo bo) {
-        return baseMapper.listUserPeriod(bo);
+        List<ClassPeriodStudentVo> classPeriodStudentVos = baseMapper.listUserPeriod(bo);
+        for (ClassPeriodStudentVo classPeriodStudentVo : classPeriodStudentVos) {
+            Long secLong = 0L;
+            Long studyLong = 0L;
+
+            SubjectStudyRecordQueryBo subjectStudyRecordQueryBo = new SubjectStudyRecordQueryBo();
+            subjectStudyRecordQueryBo.setGoodsId(classPeriodStudentVo.getGoodsId());
+            subjectStudyRecordQueryBo.setUserId(bo.getUserId());
+            List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listSubject(subjectStudyRecordQueryBo);
+            for (SubjectStudyRecordVo subjectStudyRecordVo : subjectStudyRecordVos) {
+                secLong = new BigDecimal(secLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getSectionNum().toString())).longValue();
+                studyLong = new BigDecimal(studyLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getRecordNum().toString())).longValue();
+
+            }
+            //BigDecimal divide = new BigDecimal(studyLong.toString()).divide(new BigDecimal(secLong.toString()),2,BigDecimal.ROUND_HALF_UP);
+            //classGradeStudentVo.setStudyNum(divide.multiply(new BigDecimal("100")).longValue());
+            classPeriodStudentVo.setSecAllNum(secLong);
+            classPeriodStudentVo.setStuAllNum(studyLong);
+        }
+        return classPeriodStudentVos;
+    }
+
+    @Override
+    public List<ClassPeriodUserVo> listPeriod(ClassGradeUserQueryBo bo) {
+        List<ClassPeriodUserVo> classPeriodUserVos = baseMapper.listPeriod(bo);
+        for (ClassPeriodUserVo classPeriodUserVo : classPeriodUserVos) {
+            Long secLong = 0L;
+            Long studyLong = 0L;
+
+            SubjectStudyRecordQueryBo subjectStudyRecordQueryBo = new SubjectStudyRecordQueryBo();
+            subjectStudyRecordQueryBo.setGoodsId(classPeriodUserVo.getGoodsId());
+            subjectStudyRecordQueryBo.setUserId(bo.getUserId());
+            List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listSubject(subjectStudyRecordQueryBo);
+            for (SubjectStudyRecordVo subjectStudyRecordVo : subjectStudyRecordVos) {
+                secLong = new BigDecimal(secLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getSectionNum().toString())).longValue();
+                studyLong = new BigDecimal(studyLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getRecordNum().toString())).longValue();
+
+            }
+            //BigDecimal divide = new BigDecimal(studyLong.toString()).divide(new BigDecimal(secLong.toString()),2,BigDecimal.ROUND_HALF_UP);
+            //classGradeStudentVo.setStudyNum(divide.multiply(new BigDecimal("100")).longValue());
+            classPeriodUserVo.setSecAllNum(secLong);
+            classPeriodUserVo.setStuAllNum(studyLong);
+
+            classPeriodUserVo.setPending(classPeriodUserVo.getExamNum()+classPeriodUserVo.getSecAllNum()-classPeriodUserVo.getPass()-classPeriodUserVo.getCheat());
+        }
+        return classPeriodUserVos;
     }
 }

+ 98 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodUserVo.java

@@ -0,0 +1,98 @@
+package com.zhongzheng.modules.grade.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 学员记录视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Data
+@ApiModel("学员视图对象")
+public class ClassPeriodUserVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 学员ID */
+	@Excel(name = "学员ID")
+	@ApiModelProperty("学员ID")
+	private Long userId;
+
+	/** 学员编码 */
+	@Excel(name = "学员编码")
+	@ApiModelProperty("学员编码")
+	private String studentCode;
+
+	/** 学员编码 */
+	@Excel(name = "学员姓名")
+	@ApiModelProperty("学员姓名")
+	private String realName;
+
+	/** 商品ID */
+	@Excel(name = "商品ID")
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
+
+
+	/** 学员编码 */
+	@Excel(name = "学员身份证")
+	@ApiModelProperty("学员身份证")
+	private String idCard;
+
+	/** 学员编码 */
+	@Excel(name = "学员电话")
+	@ApiModelProperty("学员电话")
+	private String telPhone;
+
+	/** 一寸照片 */
+	@Excel(name = "一寸照片")
+	@ApiModelProperty("一寸照片")
+	private String oneInchPhotos;
+
+	@Excel(name = "身份证人像照")
+	@ApiModelProperty("身份证人像照")
+	private String idCardImg1;
+	/** 身份证国徽照 */
+	@Excel(name = "身份证国徽照")
+	@ApiModelProperty("身份证国徽照")
+	private String idCardImg2;
+
+	/** 学习进度 */
+	@ApiModelProperty("已学节数")
+	private Long stuAllNum;
+
+
+	/** 学习进度 */
+	@ApiModelProperty("总节数")
+	private Long secAllNum;
+
+
+	/** 节数 */
+	@ApiModelProperty("试卷数")
+	private Long examNum;
+
+
+	/** 已做试卷 */
+	@ApiModelProperty("已做试卷")
+	private Long recordNum;
+
+	/** 通过节 */
+	@ApiModelProperty("通过节")
+	private Long pass;
+
+	/** 作弊节 */
+	@ApiModelProperty("作弊节")
+	private Long cheat;
+
+	/** 待审*/
+	@ApiModelProperty("待审")
+	private Long pending;
+}

+ 44 - 9
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -54,18 +54,30 @@
         <result property="realName" column="realname"/>
         <result property="idCard" column="id_card"/>
         <result property="telPhone" column="telphone"/>
-        <result property="userStatus" column="user_status"/>
         <result property="status" column="status"/>
         <result property="classHours" column="class_hours"/>
         <result property="periodStatus" column="period_status"/>
-        <result property="finishStatus" column="finish_status"/>
-        <result property="officialStatus" column="official_status"/>
-        <result property="learnStatus" column="learn_status"/>
         <result property="secAllNum" column="sec_all_num"/>
         <result property="examNum" column="exam_num"/>
         <result property="recordNum" column="record_num"/>
     </resultMap>
 
+    <resultMap type="com.zhongzheng.modules.grade.vo.ClassPeriodUserVo" id="ClassPeriodUserVo">
+        <result property="userId" column="user_id"/>
+        <result property="studentCode" column="student_code"/>
+        <result property="realName" column="realname"/>
+        <result property="oneInchPhotos" column="one_inch_photos"/>
+        <result property="idCardImg1" column="id_card_img1"/>
+        <result property="idCardImg2" column="id_card_img2"/>
+        <result property="idCard" column="id_card"/>
+        <result property="telPhone" column="telphone"/>
+        <result property="secAllNum" column="sec_all_num"/>
+        <result property="examNum" column="exam_num"/>
+        <result property="recordNum" column="record_num"/>
+        <result property="pass" column="pass"/>
+        <result property="cheat" column="cheat"/>
+    </resultMap>
+
     <select id="select" parameterType="com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo"
             resultMap="ClassGradeUserVoResult">
         SELECT
@@ -138,16 +150,12 @@
         u.id_card,
         cgu.grade_id,
         u.telphone,
-        (case WHEN (select COUNT(uu.id) FROM user_update uu where cgu.user_id = uu.user_id) >0 then 1 ELSE 0 end) as user_status,
         (SELECT g.class_hours FROM goods g LEFT JOIN class_grade_goods cgg on cgg.goods_id = g.goods_id where cg.grade_id = cgg.grade_id) as class_hours,
         cgu.period_status,
-        cgu.finish_status,
         (SELECT g.study_start_time FROM goods g LEFT JOIN class_grade_goods cgg on cgg.goods_id = g.goods_id where cg.grade_id = cgg.grade_id) as study_start_time,
         (SELECT g.study_end_time FROM goods g LEFT JOIN class_grade_goods cgg on cgg.goods_id = g.goods_id where cg.grade_id = cgg.grade_id) as study_end_time,
         cg.class_start_time,
         cg.class_end_time,
-        cgu.official_status,
-        cgu.learn_status,
         (SELECT COUNT(m.id) FROM course_menu_exam m LEFT JOIN goods_course c on m.course_id=c.course_id LEFT JOIN class_grade_goods cgg on cgg.goods_id = c.goods_id where cg.grade_id=cgg.grade_id and m.type = 1 ) as exam_num,
         (SELECT COUNT(DISTINCT ubr.record_id) FROM user_bank_record ubr LEFT JOIN class_grade_goods cgg on cgg.goods_id = ubr.goods_id where ubr.`status`=1) as record_num
         FROM
@@ -162,6 +170,33 @@
         order by cgu.update_time
     </select>
 
-
+    <select id="listPeriod"  parameterType="com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo" resultMap="ClassPeriodUserVo">
+        SELECT
+            u.student_code,
+            u.realname,
+            u.id_card,
+            u.user_id,
+            u.telphone,
+        (SELECT cgg.goods_id FROM class_grade_goods cgg where cg.grade_id=cgg.grade_id) as goods_id,
+            u.one_inch_photos,
+            u.id_card_img1,
+            u.id_card_img2,
+            (SELECT COUNT(m.id) FROM course_menu_exam m LEFT JOIN goods_course c on m.course_id=c.course_id LEFT JOIN class_grade_goods cgg on cgg.goods_id = c.goods_id where cg.grade_id=cgg.grade_id and m.type = 1 ) as exam_num,
+            (SELECT COUNT(DISTINCT ubr.record_id) FROM user_bank_record ubr LEFT JOIN class_grade_goods cgg on cgg.goods_id = ubr.goods_id where ubr.`status`=1) as record_num,
+            (SELECT COUNT(up.id) FROM user_period up LEFT JOIN user_period_status ups on up.id = ups.period_id where ups.`status` =1) as pass,
+            (SELECT COUNT(up.id) FROM user_period up LEFT JOIN user_period_status ups on up.id = ups.period_id) - (SELECT COUNT(up.id) FROM user_period up LEFT JOIN user_period_status ups on up.id = ups.period_id where ups.`status` =1) as cheat
+        FROM
+            class_grade_user cgu
+                LEFT JOIN class_grade cg ON cgu.grade_id = cg.grade_id
+                LEFT JOIN `user` u ON u.user_id = cgu.user_id
+        where 1=1
+          and u.user_id = 2
+        <if test="userId != null and userId !='' ">
+            and u.user_id =  #{userId}
+        </if>
+        <if test="gradeId != null and gradeId !='' ">
+            and cgu.grade_id = #{gradeId}
+        </if>
+    </select>
 
 </mapper>