Jelajahi Sumber

fix 审核状态

he2802 3 tahun lalu
induk
melakukan
c45a123dde

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

@@ -28,6 +28,8 @@ public interface ClassGradeUserMapper extends BaseMapper<ClassGradeUser> {
 
     List<ClassPeriodVo> listPeriodAudit(ClassGradeUserQueryBo bo);
 
+    ClassPeriodStudentVo getUserPeriodStatus(ClassGradeUserQueryBo bo);
+
     List<ClassPeriodChapterVo> listperiodChapter(@Param("moduleId") Long id,@Param("goodsId") Long goodsId,@Param("courseId") Long courseId,@Param("userId") Long userId,@Param("gradeId") Long gradeId);
 
     List<ClassPeriodSectionVo> listPeriodSection(@Param("chapterId") Long id,@Param("goodsId") Long goodsId,@Param("courseId") Long courseId,@Param("userId") Long userId);

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

@@ -38,6 +38,8 @@ public interface IClassGradeUserService extends IService<ClassGradeUser> {
 
 	Boolean sysChangeGrade(ClassGradeUserSysChangeBo bo);
 
+	Boolean updateUserPeriodStatus(ClassGradeUserQueryBo bo);
+
 	/**
 	 * 根据编辑业务对象修改学员记录
 	 * @param bo 学员记录编辑业务对象

+ 94 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -86,6 +86,9 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     @Autowired
     private IStudyCountLogService iStudyCountLogService;
 
+    @Autowired
+    private IClassGradeUserService iClassGradeUserService;
+
     @Override
     public ClassGradeUserVo queryById(Long id){
         ClassGradeUser db = this.baseMapper.selectById(id);
@@ -244,6 +247,71 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return true;
     }
 
+    /**
+     * 获取单个用户的最新审核状态并更新
+     * @param bo
+     * @return
+     */
+    @Override
+    public Boolean updateUserPeriodStatus(ClassGradeUserQueryBo bo) {
+        ClassPeriodStudentVo classPeriodStudentVo = baseMapper.getUserPeriodStatus(bo);
+        Long secLong = 0L;
+        Long studyLong = 0L;
+
+        SubjectStudyRecordQueryBo subjectStudyRecordQueryBo = new SubjectStudyRecordQueryBo();
+        subjectStudyRecordQueryBo.setGoodsId(classPeriodStudentVo.getGoodsId());
+        subjectStudyRecordQueryBo.setUserId(classPeriodStudentVo.getUserId());
+        subjectStudyRecordQueryBo.setGradeId(bo.getGradeId());
+        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);
+
+        //总的审核状态按照策划规则
+        ClassGradeUserQueryBo classGradeUserQueryBo = new ClassGradeUserQueryBo();
+        classGradeUserQueryBo.setGradeId(bo.getGradeId());
+        classGradeUserQueryBo.setUserId(classPeriodStudentVo.getUserId());
+        classGradeUserQueryBo.setGoodsId(classPeriodStudentVo.getGoodsId());
+        List<ClassPeriodUserVo> classPeriodUserVos1 = baseMapper.listPeriod(classGradeUserQueryBo);
+        ClassPeriodUserVo classPeriodUserVos = classPeriodUserVos1.get(0);
+        classPeriodUserVos.setPending(classPeriodStudentVo.getSecAllNum()-classPeriodUserVos.getPass()-classPeriodUserVos.getCheat());
+        classPeriodUserVos.setExamPending(classPeriodUserVos.getExamNum()-classPeriodUserVos.getExamPass()-classPeriodUserVos.getExamCheat());
+        //當前班級學員審核狀態 -1不可审核 0待審  1未通过 2通过
+        Integer gradePeriodStatus = 0; //班级里的审核状态字段,保持一致 0 未通过 1通过 2待审核 -1 不可审核
+        if (classPeriodStudentVo.getStuAllNum().equals(classPeriodStudentVo.getSecAllNum()) && classPeriodStudentVo.getExamNum().equals(classPeriodStudentVo.getRecordNum())){
+            if (classPeriodUserVos.getPending() != 0 || classPeriodUserVos.getExamPending() != 0){
+                classPeriodStudentVo.setAllStatus(0);
+                gradePeriodStatus = 2;
+            }else if (classPeriodUserVos.getCheat() != 0 || classPeriodUserVos.getExamCheat() != 0){
+                classPeriodStudentVo.setAllStatus(1);
+                gradePeriodStatus = 0;
+            }else {
+                classPeriodStudentVo.setAllStatus(2);
+                gradePeriodStatus = 1;
+            }
+        }else {
+            classPeriodStudentVo.setAllStatus(-1);
+            gradePeriodStatus = -1;
+        }
+        LambdaQueryWrapper<ClassGradeUser> classGradeUser = Wrappers.lambdaQuery();
+        classGradeUser.eq(ClassGradeUser::getUserId, bo.getUserId());
+        classGradeUser.eq(ClassGradeUser::getGradeId, bo.getGradeId());
+        ClassGradeUser classGradeUser1 = new ClassGradeUser();
+        classGradeUser1.setPeriodStatus(gradePeriodStatus);
+        classGradeUser1.setPeriodWaitTime(DateUtils.getNowTime());
+        classGradeUser1.setUpdateTime(DateUtils.getNowTime());
+        iClassGradeUserService.update(classGradeUser1, classGradeUser);
+        return null;
+    }
+
     @Override
     public Boolean updateByEditBo(ClassGradeUserEditBo bo) {
         for (Long aLong : bo.getId()) {
@@ -326,17 +394,43 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             classPeriodUserVos.setPending(classPeriodStudentVo.getSecAllNum()-classPeriodUserVos.getPass()-classPeriodUserVos.getCheat());
             classPeriodUserVos.setExamPending(classPeriodUserVos.getExamNum()-classPeriodUserVos.getExamPass()-classPeriodUserVos.getExamCheat());
             //當前班級學員審核狀態 -1不可审核 0待審  1未通过 2通过
+            Integer gradePeriodStatus = 0; //班级里的审核状态字段,保持一致 0 未通过 1通过 2待审核 -1 不可审核
             if (classPeriodStudentVo.getStuAllNum().equals(classPeriodStudentVo.getSecAllNum()) && classPeriodStudentVo.getExamNum().equals(classPeriodStudentVo.getRecordNum())){
                 if (classPeriodUserVos.getPending() != 0 || classPeriodUserVos.getExamPending() != 0){
                     classPeriodStudentVo.setAllStatus(0);
+                    gradePeriodStatus = 2;
                 }else if (classPeriodUserVos.getCheat() != 0 || classPeriodUserVos.getExamCheat() != 0){
                     classPeriodStudentVo.setAllStatus(1);
+                    gradePeriodStatus = 0;
                 }else {
                     classPeriodStudentVo.setAllStatus(2);
+                    gradePeriodStatus = 1;
                 }
             }else {
                 classPeriodStudentVo.setAllStatus(-1);
+                gradePeriodStatus = -1;
+            }
+            if(gradePeriodStatus.equals(classPeriodStudentVo.getPeriodStatus())){
+                LambdaQueryWrapper<ClassGradeUser> classGradeUser = Wrappers.lambdaQuery();
+                classGradeUser.eq(ClassGradeUser::getUserId, bo.getUserId());
+                classGradeUser.eq(ClassGradeUser::getGradeId, bo.getGradeId());
+                ClassGradeUser classGradeUser1 = new ClassGradeUser();
+                classGradeUser1.setPeriodStatus(gradePeriodStatus);
+                classGradeUser1.setPeriodWaitTime(DateUtils.getNowTime());
+                classGradeUser1.setUpdateTime(DateUtils.getNowTime());
+                iClassGradeUserService.update(classGradeUser1, classGradeUser);
             }
+           /* if (classPeriodStudentVo.getStuAllNum().equals(classPeriodStudentVo.getSecAllNum()) && classPeriodStudentVo.getExamNum().equals(classPeriodStudentVo.getRecordNum())){
+                if (classPeriodUserVos.getPending() != 0 || classPeriodUserVos.getExamPending() != 0){
+                    classPeriodStudentVo.setAllStatus(0);
+                }else if (classPeriodUserVos.getCheat() != 0 || classPeriodUserVos.getExamCheat() != 0){
+                    classPeriodStudentVo.setAllStatus(1);
+                }else {
+                    classPeriodStudentVo.setAllStatus(2);
+                }
+            }else {
+                classPeriodStudentVo.setAllStatus(-1);
+            }*/
             classPeriodStudentVo.setWaitRebuildNum(classPeriodUserVos.getCheat()+classPeriodUserVos.getExamCheat());
             if (!CollectionUtils.isEmpty(baseMapper.selectStart(classPeriodStudentVo.getUserId(),classPeriodStudentVo.getGoodsId(),classPeriodStudentVo.getGradeId()))) {
                 //查找开始学习时间

+ 32 - 0
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -292,6 +292,38 @@
         </if>
     </select>
 
+    <select id="getUserPeriodStatus" parameterType="com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo"
+            resultMap="ClassPeriodStudentVo">
+        SELECT
+        IFNULL(ge.exam_num,0) as exam_num,
+        (SELECT COUNT(DISTINCT ubr.module_id,ubr.chapter_id,ubr.exam_id) FROM user_bank_record ubr LEFT JOIN class_grade_goods cgg on cgg.goods_id
+        = ubr.goods_id where ubr.`status`=1 and ubr.report_status=1 and ubr.grade_id = cg.grade_id and ubr.user_id = cgu.user_id and ubr.current_status = 1) as record_num
+        FROM
+        class_grade_user cgu
+        LEFT JOIN class_grade cg ON cgu.grade_id = cg.grade_id
+        LEFT JOIN class_grade_goods cgg on cg.grade_id=cgg.grade_id
+        LEFT JOIN (SELECT
+        COUNT( m.id ) AS exam_num,
+        c.goods_id
+        FROM
+        course_menu_exam m
+        LEFT JOIN goods_course c ON m.course_id = c.course_id
+        where
+        m.type = 1
+        GROUP BY c.goods_id ) ge on cgg.goods_id = ge.goods_id
+        where 1=1
+        and cgu.`status` =1
+
+        <if test="gradeId != null and gradeId !='' ">
+            and cgu.grade_id = #{gradeId}
+        </if>
+
+        <if test="userId != null ">
+            and cgu.user_id = #{userId}
+        </if>
+        LIMIT 1
+    </select>
+
     <select id="listPeriod" parameterType="com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo"
             resultMap="ClassPeriodUserVo">
         SELECT