فهرست منبع

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

大数据与最优化研究所 1 سال پیش
والد
کامیت
211706a039

+ 8 - 0
src/main/java/com/xjrsoft/module/assessment/controller/AssessmentPlanAnswerController.java

@@ -144,4 +144,12 @@ public class AssessmentPlanAnswerController {
         AssessmentTemplatePlanQuestionVo resultList = planService.getQuestionResult(id);
         return RT.ok(resultList);
     }
+
+    @PostMapping(value="send-msg")
+    @ApiOperation(value = "推送微信通知")
+    @SaCheckPermission("assessmenttemplateplan:question-result")
+    public RT<Boolean> questionResult(@RequestParam AssessmentTemplatePlanSureDto dto){
+        Boolean sendMsg = planService.sendMsg(dto);
+        return RT.ok(sendMsg);
+    }
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentPlanAnswerStudentMapper.java

@@ -34,4 +34,7 @@ public interface AssessmentPlanAnswerStudentMapper extends MPJBaseMapper<Assessm
 
     @Select("SELECT COUNT(*) FROM assessment_plan_answer_student WHERE delete_mark = 0 AND assessment_template_plan_id = #{id}")
     Integer getStudentCount(Long id);
+
+    @Select("SELECT submit_status FROM assessment_plan_answer_student WHERE delete_mark = 0 AND assessment_template_plan_id = #{id} and student_user_id = #{loginId}")
+    Integer getSubmitStatus(Long id, Long loginId);
 }

+ 3 - 1
src/main/java/com/xjrsoft/module/assessment/service/IAssessmentTemplatePlanService.java

@@ -12,7 +12,6 @@ import com.xjrsoft.module.assessment.dto.UpdateAssessmentTemplatePlanDto;
 import com.xjrsoft.module.assessment.dto.UpdateAssessmentTemplatePlanTimeDto;
 import com.xjrsoft.module.assessment.entity.AssessmentTemplatePlan;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerClassResultVo;
-import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerDetailVo;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerStudentPageVo;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerStudentVo;
 import com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerTeacherPageVo;
@@ -86,4 +85,7 @@ public interface IAssessmentTemplatePlanService extends MPJBaseService<Assessmen
     List<AssessmentPlanAnswerClassResultVo> getClassResult(Long id);
 
     AssessmentTemplatePlanQuestionVo getQuestionResult(Long id);
+
+
+    Boolean sendMsg(AssessmentTemplatePlanSureDto dto);
 }

+ 52 - 0
src/main/java/com/xjrsoft/module/assessment/service/impl/AssessmentTemplatePlanServiceImpl.java

@@ -3,12 +3,16 @@ package com.xjrsoft.module.assessment.service.impl;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.config.CommonPropertiesConfig;
 import com.xjrsoft.module.assessment.dto.AddAssessmentTemplatePlanDto;
 import com.xjrsoft.module.assessment.dto.AssessmentPlanAnswerPageDto;
 import com.xjrsoft.module.assessment.dto.AssessmentPlanAnswerStudentDto;
@@ -43,6 +47,8 @@ import com.xjrsoft.module.assessment.vo.AssessmentQuestionResultVo;
 import com.xjrsoft.module.assessment.vo.AssessmentQuestionVo;
 import com.xjrsoft.module.assessment.vo.AssessmentTemplatePlanPageVo;
 import com.xjrsoft.module.assessment.vo.AssessmentTemplatePlanQuestionVo;
+import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
+import com.xjrsoft.module.organization.service.IWeChatService;
 import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
@@ -75,6 +81,8 @@ public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<Assess
     private final AssessmentQuestionMapper questionMapper;
     private final AssessmentPlanAnswerResultMapper resultMapper;
     private final XjrUserMapper xjrUserMapper;
+    private final IWeChatService weChatService;
+    private final CommonPropertiesConfig commonPropertiesConfig;
 
 
     @Override
@@ -271,6 +279,10 @@ public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<Assess
             .eq(AssessmentPlanQuestion::getDeleteMark, DeleteMark.NODELETE.getCode())
             .eq(AssessmentPlanQuestion::getAssessmentTemplatePlanId, id)
         );
+
+        Integer submitStatus = studentMapper.getSubmitStatus(id, StpUtil.getLoginIdAsLong());
+        vo.setSubmitStatus(submitStatus);
+
         AssessmentQuestionResultDto resultDto = new AssessmentQuestionResultDto();
         resultDto.setAssessmentTemplatePlanId(id);
         resultDto.setUserId(StpUtil.getLoginIdAsLong());
@@ -421,4 +433,44 @@ public class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<Assess
         vo.setChildren(oneList);
         return vo;
     }
+
+    @Override
+    public Boolean sendMsg(AssessmentTemplatePlanSureDto dto) {
+        //先查询班上的所有学生
+        MPJLambdaWrapper<XjrUser> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .select(XjrUser.class, x -> VoToColumnUtil.fieldsToColumns(XjrUser.class).contains(x.getProperty()))
+                .innerJoin(AssessmentPlanAnswerStudent.class, AssessmentPlanAnswerStudent::getStudentUserId,XjrUser::getId)
+                .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId,XjrUser::getId)
+                .eq(BaseStudentSchoolRoll::getClassId , dto.getClassId())
+                .eq(AssessmentPlanAnswerStudent::getAssessmentTemplatePlanId , dto.getId())
+                .disableSubLogicDel();
+        List<XjrUser> userList = xjrUserMapper.selectJoinList(XjrUser.class, queryWrapper);
+
+        for (XjrUser user : userList) {
+            WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
+            weChatSendMessageDto.setUserId(user.getOpenId());
+
+            weChatSendMessageDto.setTemplateId("qmpXORPM1Cocqn503Qa4OkNNQ0uxlj2-ed9m6uWO-v4");
+            weChatSendMessageDto.setUrl(StrUtil.format("{}/pages/student/canteen/evaluate?id={}", commonPropertiesConfig.getDomainApp(), dto.getId()));
+            weChatSendMessageDto.setMsgId(dto.getId().toString());
+            JSONObject data = new JSONObject();
+
+//            JSONObject data1 = new JSONObject();
+//            String hValue = news.getFullHead().replace("“", "").replace("”", "").replace("\"", "").replace("\n", "").replace("\r", "").replace("\t", "");
+//            data1.put("value", hValue);
+//            data.put("thing23", data1);
+//
+//            JSONObject data2 = new JSONObject();
+//            data2.put("value", (department == null) ? "重庆铜梁职业教育中心" : department.getName());
+//            data.put("thing18", data2);
+//
+//            JSONObject data3 = new JSONObject();
+//            data3.put("value", LocalDateTimeUtil.format(news.getReleaseTime(), "yyyy-MM-dd HH:mm:ss"));
+//            data.put("time17", data3);
+//            weChatSendMessageDto.setContent(data);
+            weChatService.sendTemplateMessage(weChatSendMessageDto);
+        }
+        return null;
+    }
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/assessment/vo/AssessmentTemplatePlanQuestionVo.java

@@ -47,4 +47,7 @@ public class AssessmentTemplatePlanQuestionVo {
     @ApiModelProperty("学生人数")
     private Integer studentCount;
 
+    @ApiModelProperty("状态(0:未答题 1:已答题)")
+    private Integer submitStatus;
+
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/teacher/entity/XjrUser.java

@@ -202,4 +202,10 @@ public class XjrUser implements Serializable {
     @EntityMapping(thisField = "id", joinField = "userId")
     private List<BaseTeacherRegular> baseTeacherRegularList;
 
+    @ApiModelProperty("微信openId")
+    private String openId;
+
+    @ApiModelProperty("微信unionId")
+    private String unionId;
+
 }

+ 7 - 3
src/main/resources/mapper/assessment/AssessmentPlanAnswerResultMapper.xml

@@ -11,14 +11,18 @@
     <select id="getClassResult" resultType="com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerClassResultVo">
         SELECT t2.name AS class_name,
         (SELECT COUNT(a1.id) FROM assessment_plan_answer_student a1
-        INNER JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id WHERE a2.class_id = t1.class_id) AS student_count,
+        INNER JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id WHERE a2.class_id = t1.class_id
+        AND a1.assessment_template_plan_id = t1.assessment_template_plan_id) AS student_count,
         (SELECT COUNT(a1.id) FROM assessment_plan_answer_student a1
-        INNER JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id WHERE a2.class_id = t1.class_id AND a1.submit_status = 1) submitted_count,
+        INNER JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id WHERE a2.class_id = t1.class_id AND a1.submit_status = 1
+        AND a1.assessment_template_plan_id = t1.assessment_template_plan_id) submitted_count,
         (SELECT COUNT(a1.id) FROM assessment_plan_answer_student a1
-        INNER JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id WHERE a2.class_id = t1.class_id AND (a1.submit_status = 0 OR a1.submit_status IS NULL)) AS unsubmitted_count
+        INNER JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id WHERE a2.class_id = t1.class_id
+        AND a1.assessment_template_plan_id = t1.assessment_template_plan_id AND (a1.submit_status = 0 OR a1.submit_status IS NULL)) AS unsubmitted_count
         FROM assessment_plan_answer_class t1
         LEFT JOIN base_class t2 ON t1.class_id = t2.id
         WHERE t1.delete_mark = 0 AND t1.assessment_template_plan_id = #{id}
+        order by t2.name
     </select>
 
     <select id="getQuestionResult" resultType="com.xjrsoft.module.assessment.vo.AssessmentPlanAnswerDetailVo">