Procházet zdrojové kódy

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

大数据与最优化研究所 před 7 měsíci
rodič
revize
531078bce4

+ 7 - 8
src/main/java/com/xjrsoft/module/attendance/controller/StatisticsController.java

@@ -13,6 +13,7 @@ import com.xjrsoft.common.annotation.XjrLog;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.OutInStatusEnum;
 import com.xjrsoft.common.enums.StudyStatusEnum;
+import com.xjrsoft.common.model.result.R;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.attendance.dto.AttendanceStatisticDto;
@@ -135,6 +136,7 @@ public class StatisticsController {
                         .ge(AttendanceRuleCategory::getEndDate, LocalDate.now())
         );
         if(!ruleCategories.isEmpty()){
+            //查询所有需要考勤的人
             BaseTeacherPageDto teacherPageDto = new BaseTeacherPageDto();
             List<Long> userIds = new ArrayList<>();
             List<Long> deptIds = new ArrayList<>();
@@ -151,18 +153,16 @@ public class StatisticsController {
                     }
                 }
             }
-            if(dto.getDeptId() == null){
-                teacherPageDto.setDeptIds(deptIds);
-            }else{
-                deptIds = new ArrayList<>();
-                deptIds.add(dto.getDeptId());
-            }
+            teacherPageDto.setDeptIds(deptIds);
             List<XjrUserPageVo> attendanceTeacherList = teacherbaseManagerService.getList(teacherPageDto);
 
             teacherPageDto = new BaseTeacherPageDto();
             teacherPageDto.setUserIds(userIds);
             attendanceTeacherList.addAll(teacherbaseManagerService.getList(teacherPageDto));
+            //将所有需要考勤的人的id存入set集合
+            Set<String> attendanceUserIdSet = attendanceTeacherList.stream().map(XjrUserPageVo::getId).collect(Collectors.toSet());
 
+            //查询所有人
             teacherPageDto = new BaseTeacherPageDto();
             if(dto.getDeptId() != null){
                 List<Long> dtoDeptIds = new ArrayList<>();
@@ -171,8 +171,7 @@ public class StatisticsController {
             }
 
             List<XjrUserPageVo> allTeacherList = teacherbaseManagerService.getList(teacherPageDto);
-
-            statisticsVo.setNotAttendanceCount(allTeacherList.size() - attendanceTeacherList.size());
+            statisticsVo.setNotAttendanceCount(allTeacherList.stream().filter(x -> !attendanceUserIdSet.contains(x.getId())).collect(Collectors.toList()).size());
         }
 
 

+ 81 - 79
src/main/java/com/xjrsoft/module/base/service/impl/BaseClassDynamicsServiceImpl.java

@@ -67,90 +67,92 @@ public class BaseClassDynamicsServiceImpl extends MPJBaseServiceImpl<BaseClassDy
 
         List<Long> classIds = new ArrayList<>();
         classIds.add(dto.getClassId());
-        List<BaseStudentUserPageVo> studentList = studentService.getStudentList(new BaseStudentUserPageDto() {{
-            setClassIds(classIds);
-        }});
-        for (BaseStudentUserPageVo studentUserPageVo : studentList) {
-            BaseClassDynamicsRelation dynamicsRelation = new BaseClassDynamicsRelation() {{
-                setBaseClassDynamicsId(baseClassDynamics.getId());
-                setUserId(Long.parseLong(studentUserPageVo.getId()));
-                setReadMark(0);
-            }};
-            dynamicsRelationMapper.insert(dynamicsRelation);
-
-            try {
-                WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
-                weChatSendMessageDto.setUserId(studentUserPageVo.getOpenId());
-                weChatSendMessageDto.setTemplateId("qmpXORPM1Cocqn503Qa4On6BJhR92UZ00eod2-6IcGo");
-                weChatSendMessageDto.setUrl(StrUtil.format("{}pages/student/trends/detail?id={}", commonPropertiesConfig.getDomainApp(), baseClassDynamics.getId()));
-                weChatSendMessageDto.setMsgId(dynamicsRelation.getId().toString());
-                JSONObject data = new JSONObject();
-
-                JSONObject data1 = new JSONObject();
-                data1.put("value", baseClassDynamics.getTitle());
-                data.put("thing23", data1);
-
-                JSONObject data2 = new JSONObject();
-                data2.put("value", (aClass.getName() == null) ? "重庆铜梁职业教育中心" : aClass.getName());
-                data.put("thing29", data2);
-
-                JSONObject data3 = new JSONObject();
-                data3.put("value", LocalDateTimeUtil.format(now, "yyyy-MM-dd HH:mm:ss"));
-                data.put("time17", data3);
-                weChatSendMessageDto.setContent(data);
-                weChatService.sendTemplateMessage(weChatSendMessageDto);
-            }catch (Exception e){
-                Log.error(e.getMessage());
+        if(baseClassDynamics.getRoleType().contains("3")){
+            List<BaseStudentUserPageVo> studentList = studentService.getStudentList(new BaseStudentUserPageDto() {{
+                setClassIds(classIds);
+            }});
+            for (BaseStudentUserPageVo studentUserPageVo : studentList) {
+                BaseClassDynamicsRelation dynamicsRelation = new BaseClassDynamicsRelation() {{
+                    setBaseClassDynamicsId(baseClassDynamics.getId());
+                    setUserId(Long.parseLong(studentUserPageVo.getId()));
+                    setReadMark(0);
+                }};
+                dynamicsRelationMapper.insert(dynamicsRelation);
+
+                try {
+                    WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
+                    weChatSendMessageDto.setUserId(studentUserPageVo.getOpenId());
+                    weChatSendMessageDto.setTemplateId("qmpXORPM1Cocqn503Qa4On6BJhR92UZ00eod2-6IcGo");
+                    weChatSendMessageDto.setUrl(StrUtil.format("{}pages/student/trends/detail?id={}", commonPropertiesConfig.getDomainApp(), baseClassDynamics.getId()));
+                    weChatSendMessageDto.setMsgId(dynamicsRelation.getId().toString());
+                    JSONObject data = new JSONObject();
+
+                    JSONObject data1 = new JSONObject();
+                    data1.put("value", baseClassDynamics.getTitle());
+                    data.put("thing23", data1);
+
+                    JSONObject data2 = new JSONObject();
+                    data2.put("value", (aClass.getName() == null) ? "重庆铜梁职业教育中心" : aClass.getName());
+                    data.put("thing29", data2);
+
+                    JSONObject data3 = new JSONObject();
+                    data3.put("value", LocalDateTimeUtil.format(now, "yyyy-MM-dd HH:mm:ss"));
+                    data.put("time17", data3);
+                    weChatSendMessageDto.setContent(data);
+                    weChatService.sendTemplateMessage(weChatSendMessageDto);
+                }catch (Exception e){
+                    Log.error(e.getMessage());
+                }
             }
         }
 
-        List<User> list = userService.list(
-                new MPJLambdaWrapper<User>()
-                        .select(User::getId)
-                        .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
-                        .innerJoin(UserStudent.class, UserStudent::getUserId, User::getId)
-                        .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, UserStudent::getStudentId)
-                        .innerJoin(WorkflowFormRelation.class, WorkflowFormRelation::getFormKeyValue, UserStudent::getId)
-                        .eq(BaseStudentSchoolRoll::getClassId, dto.getClassId())
-                        .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_COMPLETED)
-                        .isNotNull(User::getOpenId)
-        );
-
-        for (User user : list) {
-            BaseClassDynamicsRelation dynamicsRelation = new BaseClassDynamicsRelation() {{
-                setBaseClassDynamicsId(baseClassDynamics.getId());
-                setUserId(user.getId());
-                setReadMark(0);
-            }};
-            dynamicsRelationMapper.insert(dynamicsRelation);
-
-            try {
-                WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
-                weChatSendMessageDto.setUserId(user.getOpenId());
-                weChatSendMessageDto.setTemplateId("qmpXORPM1Cocqn503Qa4On6BJhR92UZ00eod2-6IcGo");
-                weChatSendMessageDto.setUrl(StrUtil.format("{}pages/student/trends/detail?id={}", commonPropertiesConfig.getDomainApp(), baseClassDynamics.getId()));
-                weChatSendMessageDto.setMsgId(dynamicsRelation.getId().toString());
-                JSONObject data = new JSONObject();
-
-                JSONObject data1 = new JSONObject();
-                data1.put("value", baseClassDynamics.getTitle());
-                data.put("thing23", data1);
-
-                JSONObject data2 = new JSONObject();
-                data2.put("value", (aClass.getName() == null) ? "重庆铜梁职业教育中心" : aClass.getName());
-                data.put("thing29", data2);
-
-                JSONObject data3 = new JSONObject();
-                data3.put("value", LocalDateTimeUtil.format(now, "yyyy-MM-dd HH:mm:ss"));
-                data.put("time17", data3);
-                weChatSendMessageDto.setContent(data);
-                weChatService.sendTemplateMessage(weChatSendMessageDto);
-            }catch (Exception e){
-                Log.error(e.getMessage());
+        if(baseClassDynamics.getRoleType().contains("4")){
+            List<User> list = userService.list(
+                    new MPJLambdaWrapper<User>()
+                            .select(User::getId)
+                            .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
+                            .innerJoin(UserStudent.class, UserStudent::getUserId, User::getId)
+                            .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, UserStudent::getStudentId)
+                            .innerJoin(WorkflowFormRelation.class, WorkflowFormRelation::getFormKeyValue, UserStudent::getId)
+                            .eq(BaseStudentSchoolRoll::getClassId, dto.getClassId())
+                            .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_COMPLETED)
+                            .isNotNull(User::getOpenId)
+            );
+
+            for (User user : list) {
+                BaseClassDynamicsRelation dynamicsRelation = new BaseClassDynamicsRelation() {{
+                    setBaseClassDynamicsId(baseClassDynamics.getId());
+                    setUserId(user.getId());
+                    setReadMark(0);
+                }};
+                dynamicsRelationMapper.insert(dynamicsRelation);
+
+                try {
+                    WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
+                    weChatSendMessageDto.setUserId(user.getOpenId());
+                    weChatSendMessageDto.setTemplateId("qmpXORPM1Cocqn503Qa4On6BJhR92UZ00eod2-6IcGo");
+                    weChatSendMessageDto.setUrl(StrUtil.format("{}pages/student/trends/detail?id={}", commonPropertiesConfig.getDomainApp(), baseClassDynamics.getId()));
+                    weChatSendMessageDto.setMsgId(dynamicsRelation.getId().toString());
+                    JSONObject data = new JSONObject();
+
+                    JSONObject data1 = new JSONObject();
+                    data1.put("value", baseClassDynamics.getTitle());
+                    data.put("thing23", data1);
+
+                    JSONObject data2 = new JSONObject();
+                    data2.put("value", (aClass.getName() == null) ? "重庆铜梁职业教育中心" : aClass.getName());
+                    data.put("thing29", data2);
+
+                    JSONObject data3 = new JSONObject();
+                    data3.put("value", LocalDateTimeUtil.format(now, "yyyy-MM-dd HH:mm:ss"));
+                    data.put("time17", data3);
+                    weChatSendMessageDto.setContent(data);
+                    weChatService.sendTemplateMessage(weChatSendMessageDto);
+                }catch (Exception e){
+                    Log.error(e.getMessage());
+                }
             }
         }
-
-
         return true;
     }
 

+ 17 - 16
src/main/resources/sqlScript/教师视图.sql

@@ -2,19 +2,19 @@
 DROP VIEW IF EXISTS teacher_data;
 CREATE VIEW teacher_data AS
 SELECT t1.name,t1.user_name AS userName,t1.mobile,
-(SELECT GROUP_CONCAT(a1.name) FROM xjr_department a1
-INNER JOIN xjr_user_dept_relation a2 ON a1.id = a2.dept_id
-WHERE a1.delete_mark = 0 AND a2.user_id = t1.id
-) AS deptName,t3.name AS employType,t1.credential_number AS credentialNumber,t1.email,
-t4.name AS job_state,t2.join_time,(
-SELECT GROUP_CONCAT(a2.name) FROM base_teacher_regular a1
-LEFT JOIN xjr_dictionary_detail a2 ON JSON_UNQUOTE(a1.teaching_status) LIKE CONCAT('%', a2.code, '%')
-AND a2.item_id = 2023000000000000020
-WHERE a1.user_id = t1.id
-) AS teaching_status FROM xjr_user t1
-INNER JOIN base_teacher t2 ON t1.id = t2.user_id
-LEFT JOIN xjr_dictionary_detail t3 ON t2.employ_type = t3.code
-LEFT JOIN xjr_dictionary_detail t4 ON t2.job_state = t4.code
+       (SELECT GROUP_CONCAT(a1.name) FROM xjr_department a1
+                                              INNER JOIN xjr_user_dept_relation a2 ON a1.id = a2.dept_id
+        WHERE a1.delete_mark = 0 AND a2.user_id = t1.id
+       ) AS deptName,t3.name AS employType,t1.credential_number AS credentialNumber,t1.email,
+       t4.name AS jobState,t2.join_time AS joinTime,(
+           SELECT GROUP_CONCAT(a2.name) FROM base_teacher_regular a1
+                                                 LEFT JOIN xjr_dictionary_detail a2 ON JSON_UNQUOTE(a1.teaching_status) LIKE CONCAT('%', a2.code, '%')
+               AND a2.item_id = 2023000000000000020
+           WHERE a1.user_id = t1.id
+       ) AS teachingStatus FROM xjr_user t1
+                                    INNER JOIN base_teacher t2 ON t1.id = t2.user_id
+                                    LEFT JOIN xjr_dictionary_detail t3 ON t2.employ_type = t3.code
+                                    LEFT JOIN xjr_dictionary_detail t4 ON t2.job_state = t4.code
 WHERE t1.delete_mark = 0;
 
 INSERT INTO data_expert_source(id,create_user_id,create_date,delete_mark,enabled_mark,sort_code,NAME,source_type,view_name)
@@ -35,14 +35,15 @@ VALUES
 
 INSERT INTO data_expert_source_field(id,create_user_id,create_date,delete_mark,enabled_mark,sort_code,data_expert_source_id,field_name,show_name,data_group)
 VALUES
-(1713872371,1000000000000000000,NOW(),0,1,7,1713871534,'job_state','在职状态','基础信息');
+    (1713872371,1000000000000000000,NOW(),0,1,7,1713871534,'jobState','在职状态','基础信息');
 
 INSERT INTO data_expert_source_field(id,create_user_id,create_date,delete_mark,enabled_mark,sort_code,data_expert_source_id,field_name,show_name,data_group)
 VALUES
-(1713872372,1000000000000000000,NOW(),0,1,7,1713871534,'join_time','来校时间','基础信息');
+    (1713872372,1000000000000000000,NOW(),0,1,7,1713871534,'joinTime','来校时间','基础信息');
 
 INSERT INTO data_expert_source_field(id,create_user_id,create_date,delete_mark,enabled_mark,sort_code,data_expert_source_id,field_name,show_name,data_group)
 VALUES
-(1713872373,1000000000000000000,NOW(),0,1,7,1713871534,'teaching_status','任课状况','基础信息');
+    (1713872373,1000000000000000000,NOW(),0,1,7,1713871534,'teachingStatus','任课状况','基础信息');
+