Browse Source

Merge remote-tracking branch 'origin/dev' into dev

大数据与最优化研究所 9 months ago
parent
commit
938ba17546

+ 6 - 6
src/main/java/com/xjrsoft/module/courseTable/service/impl/CourseTableServiceImpl.java

@@ -231,8 +231,8 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
             tableVo.setSemesterName(baseSemester.getName());
             LocalDateTime now = LocalDateTime.now();
             //计算本周是第几周
-            LocalDateTime startDateTime = LocalDateTime.ofInstant(baseSemester.getStartDate().toInstant(), ZoneId.systemDefault());
-            LocalDateTime endDateTime = LocalDateTime.ofInstant(baseSemester.getEndDate().toInstant(), ZoneId.systemDefault());
+            LocalDateTime startDateTime = LocalDateTime.ofInstant(baseSemester.getTeachingStart().toInstant(), ZoneId.systemDefault());
+            LocalDateTime endDateTime = LocalDateTime.ofInstant(baseSemester.getTeachingEnd().toInstant(), ZoneId.systemDefault());
             Duration between = Duration.between(startDateTime, endDateTime);
             long days = between.toDays();
             int weeks = (int) Math.ceil((double) days / 7);
@@ -1064,18 +1064,18 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
                             content += courseDetailVo.getCourseName() + "\r\n";
                             content += courseDetailVo.getClassroomName() + "\r\n";
                             if("teacher".equals(dto.getCourseType())){
-                                content += courseDetailVo.getTeacherName();
+                                content += courseDetailVo.getClassName();
                             }else if("class".equals(dto.getCourseType())){
-                                content += courseDetailVo.getClassName() ;
+                                content += courseDetailVo.getTeacherName() ;
                             }
                         }else{
                             CourseDetailVo courseDetailVo = list.get(0);
                             content += courseDetailVo.getCourseName() + "\r\n";
                             content += courseDetailVo.getClassroomName() + "\r\n";
                             if("teacher".equals(dto.getCourseType())){
-                                content += courseDetailVo.getTeacherName();
+                                content += courseDetailVo.getClassName();
                             }else if("class".equals(dto.getCourseType())){
-                                Set<String> classNames = list.stream().map(CourseDetailVo::getClassName).collect(Collectors.toSet());
+                                Set<String> classNames = list.stream().map(CourseDetailVo::getTeacherName).collect(Collectors.toSet());
                                 content += classNames.toString().replace("]", "").replace("[", "").replace(" ","") ;
                             }
                         }

+ 51 - 8
src/main/java/com/xjrsoft/module/databoard/controller/DatadetailController.java

@@ -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);
     }
 

+ 3 - 0
src/main/java/com/xjrsoft/module/databoard/dto/StatisticsDetailDto.java

@@ -27,4 +27,7 @@ public class StatisticsDetailDto {
     @ApiModelProperty("查询结束日期")
     private LocalDate endDate;
 
+    @ApiModelProperty("年级id")
+    private Long gradeId;
+
 }

+ 4 - 0
src/main/java/com/xjrsoft/module/databoard/vo/StudnetStatisticsDetailVo.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.databoard.vo;
 
+import com.xjrsoft.module.student.vo.StudentReportRecordItemVo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -36,4 +37,7 @@ public class StudnetStatisticsDetailVo {
     @ApiModelProperty("走读女学生总人数")
     private Integer studentNotStayFemaleCount;
 
+    @ApiModelProperty("专业部占比数据")
+    private List<StudentReportRecordItemVo> deptList;
+
 }

+ 2 - 2
src/main/java/com/xjrsoft/module/oa/controller/NewsController.java

@@ -343,7 +343,7 @@ public class NewsController {
     @ApiOperation(value = "未读类型统计")
     public RT<List<NewsCountTypeVo>> countType() {
         List<NewsCountTypeVo> newsCountTypeVoList = new ArrayList<>();
-        Integer typeIds[] = {1, 2, 3, 4};
+        Integer typeIds[] = {1, 2, 3};
         for (Integer typeId : typeIds) {
             NewsCountTypeVo newsCountTypeVo = new NewsCountTypeVo();
             News news = new News();
@@ -435,7 +435,7 @@ public class NewsController {
                 newsCountTypeVo.setTime(news.getReleaseTime());
                 newsCountTypeVo.setTitle(news.getFullHead());
             }
-            if(typeId == 4){
+            if(typeId == 3){
                 List<SystemUpdateMessage> list = systemUpdateMessageService.list(
                         MPJWrappers.<SystemUpdateMessage>lambdaJoin()
                                 .select(SystemUpdateMessage::getId)

+ 1 - 1
src/main/java/com/xjrsoft/module/oa/vo/NewsCountTypeVo.java

@@ -8,7 +8,7 @@ import java.time.LocalDateTime;
 @Data
 public class NewsCountTypeVo {
 
-    @ApiModelProperty("类型(1-新闻2-公告4-系统更新消息)")
+    @ApiModelProperty("类型(1-新闻2-公告3-系统更新消息)")
     private Integer typeId;
 
     @ApiModelProperty("最后一条标题")

+ 4 - 4
src/main/java/com/xjrsoft/module/schedule/controller/ScheduleController.java

@@ -168,8 +168,8 @@ public class ScheduleController {
             now = dto.getScheduleDate();
         }
         //计算本周是第几周
-        LocalDateTime startDateTime = LocalDateTime.ofInstant(baseSemester.getStartDate().toInstant(), ZoneId.systemDefault());
-        LocalDateTime endDateTime = LocalDateTime.ofInstant(baseSemester.getEndDate().toInstant(), ZoneId.systemDefault());
+        LocalDateTime startDateTime = LocalDateTime.ofInstant(baseSemester.getTeachingStart().toInstant(), ZoneId.systemDefault());
+        LocalDateTime endDateTime = LocalDateTime.ofInstant(baseSemester.getTeachingEnd().toInstant(), ZoneId.systemDefault());
         Duration between = Duration.between(startDateTime, endDateTime);
         long days = between.toDays();
         int weeks = (int) Math.ceil((double) days / 7);
@@ -377,8 +377,8 @@ public class ScheduleController {
                 return RT.ok(new ArrayList<>());
             }
         }
-        LocalDateTime startDateTime = LocalDateTime.ofInstant(baseSemester.getStartDate().toInstant(), ZoneId.systemDefault());
-        LocalDateTime endDateTime = LocalDateTime.ofInstant(baseSemester.getEndDate().toInstant(), ZoneId.systemDefault());
+        LocalDateTime startDateTime = LocalDateTime.ofInstant(baseSemester.getTeachingStart().toInstant(), ZoneId.systemDefault());
+        LocalDateTime endDateTime = LocalDateTime.ofInstant(baseSemester.getTeachingEnd().toInstant(), ZoneId.systemDefault());
         Duration between = Duration.between(startDateTime, endDateTime);
         long days = between.toDays();
         int weeks = (int) Math.ceil((double) days / 7);

+ 5 - 4
src/main/java/com/xjrsoft/module/schedule/util/DataUtil.java

@@ -347,7 +347,8 @@ public class DataUtil {
     /**
      * 新增学期
      */
-    public Map<String, String> insertSemester(String tableName, Map<String, String> ids) throws Exception {
+    public Map<String, String>
+    insertSemester(String tableName, Map<String, String> ids) throws Exception {
         String sql = "select * from " + tableName + " where delete_mark = 0 order by start_date desc limit 3";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, BaseSemester.class);
 
@@ -362,12 +363,12 @@ public class DataUtil {
             BaseSemester semester = SqlRunnerAdapterUtil.convertMapToEntity(semesterMap, BaseSemester.class);
             String url  = ScheduleUtil.apiUrl + "semester/Create";
             JsonObject paramJson = new JsonObject();
-            paramJson.addProperty("schoolYear", Integer.parseInt(sdfYear.format(semester.getStartDate())));
+            paramJson.addProperty("schoolYear", Integer.parseInt(sdfYear.format(semester.getStartDate())) - 1);
             Integer period = null;
             if(semester.getName().contains(spring)){
-                period = 1;
-            }else if(semester.getName().contains(autumn)){
                 period = 2;
+            }else if(semester.getName().contains(autumn)){
+                period = 1;
             }
             //获取时间戳
             long timestamp = System.currentTimeMillis();