فهرست منبع

feat:乐团档案--作业情况

Joburgess 4 سال پیش
والد
کامیت
16a4146031

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.dto.StudentExercisesSituationDto;
 import com.ym.mec.biz.dal.dto.TeacherExercisesServiceDto;
 import com.ym.mec.biz.dal.dto.TeacherServeDto;
+import com.ym.mec.biz.dal.entity.IndexBaseMonthData;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation;
 import com.ym.mec.common.dal.BaseDAO;
@@ -135,4 +136,9 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
                                                                             @Param("teacherIds") List<Integer> teacherIds,
                                                                             @Param("serveType") String serveType);
 
+    List<IndexBaseMonthData> getHomeworkData(@Param("startDay") String startDay,
+                                             @Param("endDay") String endDay,
+                                             @Param("type") String type,
+                                             @Param("studentIds") List<Integer> studentIds);
+
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentServeService.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.IndexBaseDto;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
@@ -74,4 +75,13 @@ public interface StudentServeService {
      * 解除会员
      */
     void cleanStudentMember();
+
+    /**
+     * @describe 乐团作业情况
+     * @author Joburgess
+     * @date 2021/7/13 0013
+     * @param musicGroupId:
+     * @return void
+     */
+    List<IndexBaseDto> musicGroupHomeworkStat(String musicGroupId, String startDay, String endDay);
 }

+ 68 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -50,6 +50,8 @@ public class StudentServeServiceImpl implements StudentServeService {
     private ClassGroupStudentMapperDao classGroupStudentMapperDao;
     @Autowired
     private MusicGroupDao musicGroupDao;
+    @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -1041,4 +1043,70 @@ public class StudentServeServiceImpl implements StudentServeService {
     public void cleanStudentMember() {
         studentDao.cleanStudentMember();
     }
+
+    @Override
+    public List<IndexBaseDto> musicGroupHomeworkStat(String musicGroupId, String startDayStr, String endDayStr) {
+        List<IndexBaseDto> result = new ArrayList<>();
+        List<StudentRegistration> musicGroupStu = studentRegistrationDao.getMusicGroupStu(musicGroupId);
+        List<Integer> studentIds = new ArrayList<>();
+        if(!CollectionUtils.isEmpty(musicGroupStu)){
+            studentIds = musicGroupStu.stream().map(StudentRegistration::getUserId).collect(Collectors.toList());
+        }
+
+        LocalDate startDate = LocalDate.parse(startDayStr, DateUtil.dateFormatter);
+        LocalDate endDate = LocalDate.parse(endDayStr, DateUtil.dateFormatter);
+        List<String> mondayDateStrs = new ArrayList<>();
+        while (startDate.compareTo(endDate)<0){
+            LocalDate monDayDate = startDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
+            mondayDateStrs.add(monDayDate.toString());
+            startDate = startDate.plusDays(7);
+        }
+
+        Map<IndexDataType, List<IndexBaseMonthData>> typeDateMap = new HashMap<>();
+
+        List<IndexBaseMonthData> d1 = new ArrayList<>();
+        List<IndexBaseMonthData> d2 = new ArrayList<>();
+        List<IndexBaseMonthData> d3 = new ArrayList<>();
+        if(StringUtils.isNotBlank(musicGroupId) && !CollectionUtils.isEmpty(studentIds)){
+            d1 = studentExtracurricularExercisesSituationDao.getHomeworkData(startDayStr, endDayStr, null, studentIds);
+            d2 = studentExtracurricularExercisesSituationDao.getHomeworkData(startDayStr, endDayStr, "submit", studentIds);
+            d3 = studentExtracurricularExercisesSituationDao.getHomeworkData(startDayStr, endDayStr, "comment", studentIds);
+        }
+        musicGroupHomeworkDataDeal(d1, mondayDateStrs, IndexDataType.HOMEWORK_CREATE_RATE);
+        typeDateMap.put(IndexDataType.HOMEWORK_CREATE_RATE, d1);
+
+        musicGroupHomeworkDataDeal(d2, mondayDateStrs, IndexDataType.HOMEWORK_SUBMIT_RATE);
+        typeDateMap.put(IndexDataType.HOMEWORK_SUBMIT_RATE, d2);
+
+        musicGroupHomeworkDataDeal(d3, mondayDateStrs, IndexDataType.HOMEWORK_COMMENT_RATE);
+        typeDateMap.put(IndexDataType.HOMEWORK_COMMENT_RATE, d3);
+
+        for (Map.Entry<IndexDataType, List<IndexBaseMonthData>> typeDateMapEntry : typeDateMap.entrySet()) {
+            IndexBaseDto indexBaseData = new IndexBaseDto(typeDateMapEntry.getKey(),typeDateMapEntry.getKey().getMsg());
+            indexBaseData.setIndexMonthData(typeDateMapEntry.getValue(), null);
+            result.add(indexBaseData);
+        }
+        return result;
+    }
+
+    private List<IndexBaseMonthData> musicGroupHomeworkDataDeal(List<IndexBaseMonthData> dataList, List<String> mondayDateStrs, IndexDataType dataType){
+        if(Objects.isNull(dataList)){
+            dataList = new ArrayList<>();
+        }
+        Set<String> hasMondayDates = dataList.stream().map(d -> DateUtil.dateToString(d.getMonth(), "yyyy-MM-dd")).collect(Collectors.toSet());
+
+        for (String mondayDate : mondayDateStrs) {
+            if(hasMondayDates.contains(mondayDate)){
+                continue;
+            }
+            IndexBaseMonthData indexBaseMonthData = new IndexBaseMonthData(DateUtil.stringToDate(mondayDate, "yyyy-MM-dd"), null);
+            indexBaseMonthData.setDataType(dataType);
+            indexBaseMonthData.setTotalNum(BigDecimal.ZERO);
+            indexBaseMonthData.setActivateNum(BigDecimal.ZERO);
+            indexBaseMonthData.setPercent(BigDecimal.ZERO);
+            indexBaseMonthData.setDataType(dataType);
+            dataList.add(indexBaseMonthData);
+        }
+        return dataList;
+    }
 }

+ 32 - 0
mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml

@@ -684,4 +684,36 @@
 			  </foreach>
 		  </if>
 	</select>
+
+	<select id="getHomeworkData" resultMap="com.ym.mec.biz.dal.dao.IndexBaseMonthDataDao.IndexBaseMonthData">
+		SELECT
+		sees.monday_ month_,
+		<choose>
+			<when test="type == 'submit'">
+				SUM(sees.actual_exercises_num_) total_num_,
+				SUM(sees.exercises_reply_num_) activate_num_,
+				TRUNCATE(SUM(sees.exercises_reply_num_)/SUM(sees.actual_exercises_num_)*100, 2) percent_
+			</when>
+			<when test="type == 'comment'">
+				SUM(sees.exercises_reply_num_) total_num_,
+				SUM(sees.exercises_message_num_) activate_num_,
+				TRUNCATE(SUM(sees.exercises_message_num_)/SUM(sees.exercises_reply_num_)*100, 2) percent_
+			</when>
+			<otherwise>
+				SUM(sees.expect_exercises_num_-sees.not_over_course_num_) total_num_,
+				SUM(sees.actual_exercises_num_) activate_num_,
+				TRUNCATE(SUM(sees.actual_exercises_num_)/SUM(sees.expect_exercises_num_-sees.not_over_course_num_)*100, 2) percent_
+			</otherwise>
+		</choose>
+		FROM student_extracurricular_exercises_situation_ sees
+		LEFT JOIN teacher tea ON sees.teacher_id_=tea.id_
+		WHERE tea.job_nature_='FULL_TIME'
+		AND DATE_FORMAT(sees.monday_, '%Y-%m-%d')&gt;=#{startDay}
+		AND DATE_FORMAT(sees.sunday_, '%Y-%m-%d')&lt;=#{endDay}
+		AND sees.student_id_ IN
+		<foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+			#{studentId}
+		</foreach>
+		GROUP BY sees.monday_
+	</select>
 </mapper>

+ 11 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentExtracurricularExercisesSituationController.java

@@ -166,4 +166,15 @@ public class StudentExtracurricularExercisesSituationController extends BaseCont
         return succeed(studentExtracurricularExercisesSituationService.queryTeacherServeExtraDetail(queryInfo));
     }
 
+    @ApiOperation(value = "乐团作业情况")
+    @GetMapping("/musicGroupHomeworkStat")
+    @PreAuthorize("@pcs.hasPermissions('exercisesSituation/musicGroupHomeworkStat')")
+    public HttpResponseResult musicGroupHomeworkStat(String musicGroupId, String startDay, String endDay) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(studentServeService.musicGroupHomeworkStat(musicGroupId, startDay, endDay));
+    }
+
 }