|
|
@@ -31,6 +31,7 @@ import com.xjrsoft.module.oa.service.IWfSubscriptionService;
|
|
|
import com.xjrsoft.module.student.dto.BaseStudentUserPageDto;
|
|
|
import com.xjrsoft.module.student.service.IBaseStudentService;
|
|
|
import com.xjrsoft.module.student.vo.BaseStudentUserPageVo;
|
|
|
+import com.xjrsoft.module.student.vo.StudentReportRecordItemVo;
|
|
|
import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
|
import com.xjrsoft.module.teacher.entity.BaseTeacher;
|
|
|
import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
@@ -464,13 +465,17 @@ public class DatadetailController {
|
|
|
@GetMapping(value = "/student-statistics")
|
|
|
@ApiOperation(value="学生详情数据统计")
|
|
|
@SaCheckPermission("datadetail:detail")
|
|
|
- public RT<StudnetStatisticsDetailVo> studentStatistics(@Valid StatisticsDetailDto dto) throws ParseException {
|
|
|
+ public RT<StudnetStatisticsDetailVo> studentStatistics(@Valid StatisticsDetailDto dto){
|
|
|
StudnetStatisticsDetailVo result = new StudnetStatisticsDetailVo();
|
|
|
|
|
|
String sql = "SELECT IFNULL(t3.name,'未填写') AS item ,COUNT(*) AS a_count FROM xjr_user t1" +
|
|
|
" INNER JOIN base_student t2 ON t1.id = t2.user_id" +
|
|
|
- " LEFT JOIN xjr_dictionary_detail t3 ON t1.gender = t3.code AND t3.item_id = 2023000000000000004" +
|
|
|
- " WHERE t1.delete_mark = 0 GROUP BY t3.name";
|
|
|
+ " INNER JOIN base_student_school_roll t4 ON t1.id = t4.user_id" +
|
|
|
+ " LEFT JOIN xjr_dictionary_detail t3 ON t1.gender = t3.code" +
|
|
|
+ " AND t3.item_id = 2023000000000000004 and t3.delete_mark = 0" +
|
|
|
+ " WHERE t1.delete_mark = 0" +
|
|
|
+ " and t4.archives_status = 'FB2901'" +
|
|
|
+ " GROUP BY t3.name";
|
|
|
List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
|
|
|
List<ItemCountVo> genderList = new ArrayList<>();
|
|
|
for (Map<String, Object> objectMap : list) {
|
|
|
@@ -485,8 +490,11 @@ public class DatadetailController {
|
|
|
|
|
|
sql = "SELECT IFNULL(t3.name,'未填写') AS item ,COUNT(*) AS a_count FROM xjr_user t1" +
|
|
|
" INNER JOIN base_student_school_roll t2 ON t1.id = t2.user_id" +
|
|
|
- " LEFT JOIN xjr_dictionary_detail t3 ON t2.student_type = t3.code AND t3.item_id = 2023000000000000028" +
|
|
|
- " WHERE t1.delete_mark = 0 GROUP BY t3.name";
|
|
|
+ " LEFT JOIN xjr_dictionary_detail t3 ON t2.student_type = t3.code" +
|
|
|
+ " AND t3.item_id = 2023000000000000028 and t3.delete_mark = 0" +
|
|
|
+ " WHERE t1.delete_mark = 0" +
|
|
|
+ " and t2.archives_status = 'FB2901'" +
|
|
|
+ " GROUP BY t3.name";
|
|
|
list = SqlRunnerAdapter.db().selectList(sql);
|
|
|
List<ItemCountVo> studentTypeList = new ArrayList<>();
|
|
|
for (Map<String, Object> objectMap : list) {
|
|
|
@@ -545,20 +553,55 @@ public class DatadetailController {
|
|
|
" SELECT COUNT(*) FROM xjr_user t1" +
|
|
|
" INNER JOIN base_student_school_roll t2 ON t1.id = t2.user_id" +
|
|
|
" WHERE t1.delete_mark = 0 AND t2.grade_id = base_grade.id" +
|
|
|
- " ) AS a_count FROM base_grade" +
|
|
|
- " WHERE delete_mark = 0 AND status = 1 ORDER BY name DESC LIMIT 3";
|
|
|
+ " and t2.archives_status = 'FB2901') AS a_count FROM base_grade" +
|
|
|
+ " WHERE delete_mark = 0 AND status = 1";
|
|
|
+ if(dto.getGradeId() != null){
|
|
|
+ sql += " id = " + dto.getGradeId();
|
|
|
+ }
|
|
|
+ sql += " ORDER BY name DESC LIMIT 4";
|
|
|
list = SqlRunnerAdapter.db().selectList(sql);
|
|
|
Collections.reverse(list);
|
|
|
List<ItemCountVo> gradeList = new ArrayList<>();
|
|
|
for (Map<String, Object> objectMap : list) {
|
|
|
+ int aCount = Integer.parseInt(objectMap.get("a_count").toString());
|
|
|
+ if(aCount == 0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
gradeList.add(
|
|
|
new ItemCountVo(){{
|
|
|
setItem(objectMap.get("item").toString());
|
|
|
- setCount(Integer.parseInt(objectMap.get("a_count").toString()));
|
|
|
+ setCount(aCount);
|
|
|
}}
|
|
|
);
|
|
|
}
|
|
|
result.setGradeList(gradeList);
|
|
|
+
|
|
|
+ sql = "SELECT NAME AS item,(\n" +
|
|
|
+ "SELECT COUNT(*) FROM xjr_user t1\n" +
|
|
|
+ "INNER JOIN base_student_school_roll t2 ON t1.id = t2.user_id\n" +
|
|
|
+ "INNER JOIN base_class t3 ON t2.class_id = t3.id\n" +
|
|
|
+ "WHERE t1.delete_mark = 0 AND t3.org_id = xjr_department.id\n" +
|
|
|
+ "AND t2.archives_status = 'FB2901' AND t1.gender = 'SB10001') AS a_count,\n" +
|
|
|
+ "(\n" +
|
|
|
+ "SELECT COUNT(*) FROM xjr_user t1\n" +
|
|
|
+ "INNER JOIN base_student_school_roll t2 ON t1.id = t2.user_id\n" +
|
|
|
+ "INNER JOIN base_class t3 ON t2.class_id = t3.id\n" +
|
|
|
+ "WHERE t1.delete_mark = 0 AND t3.org_id = xjr_department.id\n" +
|
|
|
+ "AND t2.archives_status = 'FB2901' AND t1.gender = 'SB10002') AS b_count FROM xjr_department\n" +
|
|
|
+ "WHERE delete_mark = 0 AND is_major = 1 ORDER BY NAME DESC";
|
|
|
+ list = SqlRunnerAdapter.db().selectList(sql);
|
|
|
+ Collections.reverse(list);
|
|
|
+ List<StudentReportRecordItemVo> deptList = new ArrayList<>();
|
|
|
+ for (Map<String, Object> objectMap : list) {
|
|
|
+ deptList.add(
|
|
|
+ new StudentReportRecordItemVo(){{
|
|
|
+ setItem(objectMap.get("item").toString());
|
|
|
+ setCount(Integer.parseInt(objectMap.get("a_count").toString()));
|
|
|
+ setCount2(Integer.parseInt(objectMap.get("b_count").toString()));
|
|
|
+ }}
|
|
|
+ );
|
|
|
+ }
|
|
|
+ result.setDeptList(deptList);
|
|
|
return RT.ok(result);
|
|
|
}
|
|
|
|