yonge пре 3 година
родитељ
комит
2afd7aa31a

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

@@ -160,4 +160,6 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
      * @return
      */
     int countWaitCreateHomeworkNum1(Integer teacherId);
+    
+    List<TeacherServeDto> queryTeacherPerformanceIndicator(Map<String, Object> params);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentExtracurricularExercisesSituationService.java

@@ -64,4 +64,11 @@ public interface StudentExtracurricularExercisesSituationService extends BaseSer
      * @return
      */
     int countWaitCreateHomeworkNum();
+    
+    /**
+     * 根据条件查询老师的服务指标
+     * @param queryInfo
+     * @return
+     */
+    List<TeacherServeDto> queryTeacherPerformanceIndicator(TeacherServeQueryInfo queryInfo);
 }

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentExtracurricularExercisesSituationServiceImpl.java

@@ -22,6 +22,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -546,4 +547,36 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 		}
 		return studentExtracurricularExercisesSituationDao.countWaitCreateHomeworkNum1(sysUser.getId());
 	}
+
+	@Override
+	public List<TeacherServeDto> queryTeacherPerformanceIndicator(TeacherServeQueryInfo queryInfo) {
+		if(StringUtils.isNotBlank(queryInfo.getOrganId())){
+			List<Integer> organIds = Arrays.stream(queryInfo.getOrganId().split(",")).map(e -> Integer.valueOf(e)).collect(Collectors.toList());
+			queryInfo.setOrganIds(organIds);
+		}
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<TeacherServeDto> dataList = null;
+		dataList = studentExtracurricularExercisesSituationDao.queryTeacherPerformanceIndicator(params);
+		List<Integer> teacherIds = dataList.stream().map(TeacherServeDto::getTeacherId).collect(Collectors.toList());
+		List<StudentExtracurricularExercisesSituation> teacherServeWithDate = studentExtracurricularExercisesSituationDao.findTeacherServeWithDate(queryInfo.getMonday(), queryInfo.getSunday(), teacherIds, null);
+		Map<Integer, List<StudentExtracurricularExercisesSituation>> teacherServeMap = teacherServeWithDate.stream().collect(Collectors.groupingBy(StudentExtracurricularExercisesSituation::getTeacherId));
+		for (TeacherServeDto teacherServeDto : dataList) {
+			List<StudentExtracurricularExercisesSituation> tss = teacherServeMap.get(teacherServeDto.getTeacherId());
+			Set<Long> courseIds = new HashSet<>();
+			for (StudentExtracurricularExercisesSituation ts : tss) {
+				if(teacherServeDto.getMonday().compareTo(ts.getMonday())!=0){
+					continue;
+				}
+				if(StringUtils.isBlank(ts.getCourseIds())){
+					continue;
+				}
+				Set<Long> ids = Arrays.stream(ts.getCourseIds().split(",")).map(s -> Long.valueOf(s)).collect(Collectors.toSet());
+				courseIds.addAll(ids);
+			}
+			teacherServeDto.setHomeworkNum(courseIds.size());
+		}
+		return dataList;
+	}
 }

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

@@ -749,4 +749,31 @@
 		AND se.expect_exercises_num_ > se.actual_exercises_num_ AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN se.monday_ AND se.sunday_
 		AND se.serve_type_ = 'HOMEWORK' AND cs.group_type_ != 'MUSIC' AND cs.class_date_ &lt;= DATE_FORMAT(NOW(), '%Y-%m-%d'))t
 	</select>
+
+	<select id="queryTeacherPerformanceIndicator" resultMap="TeacherServeDto">
+		SELECT
+			organ.name_ organ_name_,
+			sees.monday_,
+			sees.sunday_,
+			sees.teacher_id_,
+			su.real_name_ teacher_name_,
+		    tea.job_nature_,
+			SUM(expect_exercises_num_) expect_exercises_num_,
+			SUM(actual_exercises_num_) actual_exercises_num_,
+			SUM(exercises_reply_num_) exercises_reply_num_,
+			SUM(exercises_message_num_) exercises_message_num_,
+			SUM(exercises_message_timely_num_) exercises_message_timely_num_,
+			SUM(CASE sees.serve_type_ WHEN 'HOMEWORK' THEN sees.expect_exercises_num_ ELSE 0 END) homework_num_,
+			SUM(CASE sees.serve_type_ WHEN 'EXERCISE' THEN 1 ELSE 0 END) exercise_num_,
+			SUM( sees.expect_exercises_num_-sees.not_over_course_num_ )> SUM( sees.actual_exercises_num_ ) un_done_
+		FROM
+			student_extracurricular_exercises_situation_ sees
+			LEFT JOIN teacher tea ON tea.id_=sees.teacher_id_
+			LEFT JOIN organization organ ON organ.id_=tea.organ_id_
+			LEFT JOIN sys_user su ON tea.id_=su.id_
+		<include refid="queryTeacherServeInfoCondition" />
+		GROUP BY sees.teacher_id_
+		ORDER BY sees.teacher_id_
+		<include refid="global.limit"></include>
+	</select>
 </mapper>

+ 38 - 2
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -3544,8 +3544,6 @@ public class ExportController extends BaseController {
         }
     }
 
-
-
     @ApiOperation(value = "启蒙课问卷导出")
     @RequestMapping("export/musicEnlightenmentQuestionnaires")
     @PreAuthorize("@pcs.hasPermissions('export/musicEnlightenmentQuestionnaires')")
@@ -3588,4 +3586,42 @@ public class ExportController extends BaseController {
             }
         }
     }
+
+    @ApiOperation(value = "服务指标导出")
+    @RequestMapping("export/exercisesSituation")
+    @PreAuthorize("@pcs.hasPermissions('export/exercisesSituation')")
+    public void exportExercisesSituation(TeacherServeQueryInfo queryInfo, HttpServletResponse response) throws IOException {
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+        List<TeacherServeDto> list = studentExtracurricularExercisesSituationService.queryTeacherPerformanceIndicator(queryInfo);
+        if (list.size() <= 0) {
+            response.setStatus(500);
+            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
+            response.flushBuffer();
+            return;
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            String[] header = {"分部","老师编号","老师姓名","预计安排(人次)","实际安排(人次)","布置率(%)","提交人数","点评次数","点评率(%)","及时点评次数","及时点评率(%)"};
+            String[] body = {"organName","teacherId","teacherName","expectExercisesNum","actualExercisesNum","100 * actualExercisesNum / expectExercisesNum","exercisesReplyNum","exercisesMessageNum","100 * exercisesMessageNum / exercisesReplyNum", "exercisesMessageTimelyNum","100 * exercisesMessageTimelyNum / exercisesReplyNum"};
+            HSSFWorkbook workbook = POIUtil.exportExcel(header, body, list);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=teacherPerformanceIndicator-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }