Pārlūkot izejas kodu

Merge branch 'online1' of http://git.dayaedu.com/yonge/mec into music_score

zouxuan 3 gadi atpakaļ
vecāks
revīzija
1ff9590471
17 mainītis faili ar 239 papildinājumiem un 25 dzēšanām
  1. 8 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/QuestionnaireQuestionDao.java
  2. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/QuestionnaireUserResultDao.java
  3. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ReplacementInstrumentActivityDto.java
  4. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/QuestionnaireTopic.java
  5. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/QuestionnaireActiveTypeEnum.java
  6. 9 1
      mec-biz/src/main/java/com/ym/mec/biz/service/QuestionnaireUserResultService.java
  7. 58 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/QuestionnaireUserResultServiceImpl.java
  8. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  9. 1 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  10. 10 0
      mec-biz/src/main/resources/config/mybatis/QuestionnaireQuestionMapper.xml
  11. 6 2
      mec-biz/src/main/resources/config/mybatis/QuestionnaireTopicMapper.xml
  12. 13 1
      mec-biz/src/main/resources/config/mybatis/QuestionnaireUserResultMapper.xml
  13. 45 5
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  14. 43 0
      mec-student/src/main/java/com/ym/mec/student/controller/QuestionnaireUserResultController.java
  15. 2 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java
  16. 2 1
      mec-util/src/main/java/com/ym/mec/util/excel/POIUtil.java
  17. 15 3
      mec-web/src/main/java/com/ym/mec/web/controller/QuestionnaireUserResultController.java

+ 8 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/QuestionnaireQuestionDao.java

@@ -1,7 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
+import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -14,4 +14,11 @@ public interface QuestionnaireQuestionDao extends BaseDAO<Long, QuestionnaireQue
     List<QuestionnaireQuestion> findByTopicId(int topicId);
 
     List<QuestionnaireQuestion> queryQuestionList(Integer cooperationId);
+
+    /**
+     * 根据活动类型获取问卷答案
+     * @param activeType
+     * @return
+     */
+    List<QuestionnaireQuestion> findByActiveType(String activeType);
 }

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

@@ -36,4 +36,6 @@ public interface QuestionnaireUserResultDao extends BaseDAO<Long, QuestionnaireU
      * @return
      */
     List<QuestionnaireResultDto> getQuestionResult(@Param("activeId") Integer activeId, @Param("activeType") String activeType);
+
+    List<Map<Integer, String>> queryUserName(String activeType);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ReplacementInstrumentActivityDto.java

@@ -2,9 +2,12 @@ package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
 import com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity;
+import com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum;
+
 import java.util.List;
 
 public class ReplacementInstrumentActivityDto extends ReplacementInstrumentActivity{
+    private QuestionnaireActiveTypeEnum activeType;
 
     private List<QuestionnaireUserResult> questionnaireUserResultList;
 
@@ -15,4 +18,12 @@ public class ReplacementInstrumentActivityDto extends ReplacementInstrumentActiv
     public void setQuestionnaireUserResultList(List<QuestionnaireUserResult> questionnaireUserResultList) {
         this.questionnaireUserResultList = questionnaireUserResultList;
     }
+
+    public QuestionnaireActiveTypeEnum getActiveType() {
+        return activeType;
+    }
+
+    public void setActiveType(QuestionnaireActiveTypeEnum activeType) {
+        this.activeType = activeType;
+    }
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/QuestionnaireTopic.java

@@ -17,6 +17,9 @@ public class QuestionnaireTopic {
 	/** 发布状态(1-可见  0-不可见) */
 	private int status = 0;
 
+	/** 发布状态(是否可重复提交1是0否) */
+	private int againCommitFlag = 0;
+
 	/** 创建人编号 */
 	private Integer creatorId;
 	
@@ -32,6 +35,14 @@ public class QuestionnaireTopic {
 	//问卷题目
 	private List<QuestionnaireQuestion> questionnaireQuestionList;
 
+	public int getAgainCommitFlag() {
+		return againCommitFlag;
+	}
+
+	public void setAgainCommitFlag(int againCommitFlag) {
+		this.againCommitFlag = againCommitFlag;
+	}
+
 	public List<QuestionnaireQuestion> getQuestionnaireQuestionList() {
 		return questionnaireQuestionList;
 	}

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/QuestionnaireActiveTypeEnum.java

@@ -4,6 +4,7 @@ import com.ym.mec.common.enums.BaseEnum;
 
 public enum QuestionnaireActiveTypeEnum implements BaseEnum<String, QuestionnaireActiveTypeEnum> {
 	REPLACEMENT("REPLACEMENT", "乐器置换"),
+	CLOUD_TEACHER_FEEDBACK("CLOUD_TEACHER_FEEDBACK", "云教练用户反馈"),
 	MUSIC_GROUP_QUESTION("MUSIC_GROUP_QUESTION", "乐团满意度调查");
 
 	private String code;

+ 9 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/QuestionnaireUserResultService.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityDto;
 import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
 import com.ym.mec.common.page.QueryInfo;
@@ -20,5 +21,12 @@ public interface QuestionnaireUserResultService extends BaseService<Long, Questi
      * @param questionList
      * @return
      */
-    Map<String,Object> questionnaireUserResultExport(Integer cooperationId, List<QuestionnaireQuestion> questionList);
+    Map<String,Object> questionnaireUserResultExport(String activeType,Integer cooperationId, List<QuestionnaireQuestion> questionList);
+
+    /**
+     * 提交调查问卷
+     * @param replacementInstrumentActivityDto
+     * @return
+     */
+    void add(ReplacementInstrumentActivityDto replacementInstrumentActivityDto);
 }

+ 58 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/QuestionnaireUserResultServiceImpl.java

@@ -1,23 +1,30 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.QuestionnaireUserResultDto;
-import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
-import com.ym.mec.biz.dal.entity.QuestionnaireQuestionItem;
+import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityDto;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.ReplacementInstrumentActivityQueryInfo;
+import com.ym.mec.biz.service.CooperationOrganService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.http.HttpUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
 import com.ym.mec.biz.service.QuestionnaireUserResultService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -30,7 +37,9 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
 	@Autowired
 	private QuestionnaireQuestionItemDao questionnaireQuestionItemDao;
 	@Autowired
-	private QuestionnaireQuestionDao questionnaireQuestionDao;
+	private QuestionnaireTopicDao questionnaireTopicDao;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 	@Autowired
 	private TeacherDao teacherDao;
 
@@ -65,10 +74,10 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
 	}
 
 	@Override
-	public Map<String,Object> questionnaireUserResultExport(Integer cooperationId,List<QuestionnaireQuestion> questionList) {
+	public Map<String,Object> questionnaireUserResultExport(String activeType,Integer cooperationId,List<QuestionnaireQuestion> questionList) {
 		HashMap<String, Object> paramMap = new HashMap<>(2);
 		paramMap.put("activeId",cooperationId);
-		paramMap.put("activeType","REPLACEMENT");
+		paramMap.put("activeType",activeType);
 		List<QuestionnaireUserResult> userResults = questionnaireUserResultDao.findAll(paramMap);
 
 		Map<String,Object> resultMap = new HashMap<>(2);
@@ -88,7 +97,12 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
 			Map<Integer, List<QuestionnaireUserResult>> userIdMap = userResults.stream().collect(Collectors.groupingBy(QuestionnaireUserResult::getUserId));
 			List<Integer> userIdList = new ArrayList<>(userIdMap.keySet());
 			Collections.sort(userIdList);
-			Map<Integer, String> nameList = MapUtil.convertMybatisMap(questionnaireQuestionItemDao.queryUserName(cooperationId));
+			Map<Integer, String> nameList;
+			if(cooperationId != null){
+				nameList = MapUtil.convertMybatisMap(questionnaireQuestionItemDao.queryUserName(cooperationId));
+			}else {
+				nameList = MapUtil.convertMybatisMap(questionnaireUserResultDao.queryUserName(activeType));
+			}
 			Map<Integer, String> phoneList = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(userIdList,",")));
 			for (Integer userId : userIdList) {
 				List<QuestionnaireUserResult> userResultList = userIdMap.get(userId);
@@ -130,4 +144,40 @@ public class QuestionnaireUserResultServiceImpl extends BaseServiceImpl<Long, Qu
 		resultMap.put("body",body);
 		return resultMap;
 	}
+
+    @Override
+	@Transactional(rollbackFor = Exception.class)
+    public void add(ReplacementInstrumentActivityDto replacementInstrumentActivity) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			throw new BizException("用户信息获取失败,请重新登陆");
+		}
+		Integer topicId = replacementInstrumentActivity.getTopicId();
+
+		List<QuestionnaireUserResult> questionnaireUserResultList = replacementInstrumentActivity.getQuestionnaireUserResultList();
+		if(questionnaireUserResultList == null || questionnaireUserResultList.size() == 0){
+			throw new BizException("请填写问卷结果");
+		}
+		QuestionnaireActiveTypeEnum activeType = replacementInstrumentActivity.getActiveType();
+		QuestionnaireTopic topic = questionnaireTopicDao.get(topicId);
+		if(topic.getAgainCommitFlag() == 0){
+			HashMap<String, Object> paramMap = new HashMap<>(3);
+			paramMap.put("activeId",replacementInstrumentActivity.getReplacementInstrumentCooperationId());
+			paramMap.put("activeType",activeType.getCode());
+			paramMap.put("userId",sysUser.getId());
+			List<QuestionnaireUserResult> userResults = questionnaireUserResultDao.findAll(paramMap);
+			if(userResults != null && userResults.size() > 0){
+				throw new BizException("您已提交问卷,请勿重复操作");
+			}
+		}
+		//删除原来的问卷结果
+		questionnaireUserResultDao.delByActiveIdAndUserId(null, sysUser.getId(),activeType.getCode());
+		for (QuestionnaireUserResult result : questionnaireUserResultList) {
+			result.setUserId(sysUser.getId());
+			result.setQuestionnaireTopicId(topicId);
+			result.setActiveType(activeType);
+		}
+		//新增问卷结果
+		questionnaireUserResultDao.batchInsert1(questionnaireUserResultList);
+	}
 }

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -472,7 +472,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                 if(studentGroupNamesMap.containsKey(eduOrganStudentListDto.getStudentId())){
                     eduOrganStudentListDto.setMusicGroupNames(studentGroupNamesMap.get(eduOrganStudentListDto.getStudentId()));
                 }
-                if(hasVipCourseStudentIds.contains(eduOrganStudentListDto.getSubjectId())){
+                if(hasVipCourseStudentIds.contains(eduOrganStudentListDto.getStudentId())){
                     eduOrganStudentListDto.setHasVipGroup(1);
                 }
                 if(eduOrganStudentListDto.getCloudStudyUseNum()>0 && eduOrganStudentListDto.getCloudStudyUseTime()>0){
@@ -717,7 +717,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             comparing = Comparator.comparing(EduOrganStudentDataDto::getOrganId);
         }
 
-        result = result.stream().skip(pageInfo.getOffset()).limit(pageInfo.getLimit()).sorted(comparing).collect(Collectors.toList());
+        result = result.stream().sorted(comparing).skip(pageInfo.getOffset()).limit(pageInfo.getLimit()).collect(Collectors.toList());
         pageInfo.setRows(result);
         return pageInfo;
     }

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -766,7 +766,7 @@
 		ORDER BY vg.create_time_ DESC LIMIT 1
 	</select>
 
-    <select id="getHasVipCourseStudentIds" resultType="map">
+    <select id="getHasVipCourseStudentIds" resultType="int">
 		SELECT cssp.user_id_ FROM course_schedule_student_payment cssp
 		LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
 		WHERE cssp.group_type_='VIP' AND cs.del_flag_=0

+ 10 - 0
mec-biz/src/main/resources/config/mybatis/QuestionnaireQuestionMapper.xml

@@ -119,4 +119,14 @@
 		LEFT JOIN questionnaire_question qq ON qq.questionnaire_topic_id_ = ric.topic_id_
 		WHERE ric.id_ = #{cooperationId} ORDER BY sort_
 	</select>
+	<select id="findByActiveType" resultMap="QuestionnaireQuestion">
+		SELECT
+			qq.*
+		FROM
+			questionnaire_question qq
+		WHERE
+				qq.questionnaire_topic_id_ = ( SELECT questionnaire_topic_id_ FROM questionnaire_user_result WHERE active_type_ = 'CLOUD_TEACHER_FEEDBACK' LIMIT 1 )
+		ORDER BY
+			sort_
+	</select>
 </mapper>

+ 6 - 2
mec-biz/src/main/resources/config/mybatis/QuestionnaireTopicMapper.xml

@@ -11,6 +11,7 @@
 		<result column="title_" property="title" />
 		<result column="status_" property="status"/>
 		<result column="creator_id_" property="creatorId" />
+		<result column="again_commit_flag_" property="againCommitFlag" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 	</resultMap>
@@ -27,13 +28,16 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.QuestionnaireTopic" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO questionnaire_topic (title_,status_,creator_id_,create_time_,update_time_)
-		VALUES(#{title},#{status},#{creatorId},NOW(),NOW())
+		INSERT INTO questionnaire_topic (title_,status_,creator_id_,create_time_,update_time_,again_commit_flag_)
+		VALUES(#{title},#{status},#{creatorId},NOW(),NOW(),#{againCommitFlag})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.QuestionnaireTopic">
 		UPDATE questionnaire_topic <set>
+		<if test="againCommitFlag != null">
+			again_commit_flag_ = #{againCommitFlag},
+		</if>
 		<if test="status != null">
 			status_ = #{status},
 		</if>

+ 13 - 1
mec-biz/src/main/resources/config/mybatis/QuestionnaireUserResultMapper.xml

@@ -30,6 +30,9 @@
 	<select id="findAll" resultMap="QuestionnaireUserResult">
 		SELECT * FROM questionnaire_user_result
 		<where>
+			<if test="userId != null">
+				AND user_id_ = #{userId}
+			</if>
 			<if test="activeId != null">
 				AND active_id_ = #{activeId}
 			</if>
@@ -92,10 +95,13 @@
 	</delete>
     <delete id="delByActiveIdAndUserId">
 		DELETE FROM questionnaire_user_result
-		WHERE active_id_ = #{activityId} AND active_type_ = #{activeType}
+		WHERE active_type_ = #{activeType}
 		<if test="userId != null">
 		  AND user_id_ = #{userId}
 		</if>
+		<if test="activityId != null">
+		  AND active_id_ = #{activityId}
+		</if>
 	</delete>
 
     <!-- 分页查询 -->
@@ -194,4 +200,10 @@
 		GROUP BY qq.id_
 		ORDER BY qq.sort_
 	</select>
+	<select id="queryUserName" resultType="java.util.Map">
+		SELECT qur.user_id_ `key`,su.username_ `value` FROM questionnaire_user_result qur
+		LEFT JOIN sys_user su ON su.id_ = qur.user_id_
+		WHERE qur.user_id_ IS NOT NULL AND qur.active_type_ = #{activeType} AND su.username_ IS NOT NULL
+		GROUP BY qur.user_id_
+	</select>
 </mapper>

+ 45 - 5
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -1034,7 +1034,7 @@
                 AND su.organ_id_=#{organId}
             </if>
             <if test="search!=null and search!=''">
-                AND (stu.user_id_=#{search} OR su.username_ LIKE CONCAT('%', #{search}, '%'))
+                AND (t.user_id_=#{search} OR su.username_ LIKE CONCAT('%', #{search}, '%'))
             </if>
         </where>
     </sql>
@@ -1051,7 +1051,27 @@
             SUM(CASE WHEN smcr.play_time_ IS NULL THEN 0 ELSE play_time_ END) cloudStudyUseTime,
             COUNT(DISTINCT DATE(smcr.create_time_)) cloudStudyUseDays,
             stu.membership_end_time_ membershipEndTime
-        FROM student stu
+        FROM (SELECT DISTINCT t1.user_id_ FROM ((
+                SELECT
+                sr.user_id_
+                FROM
+                student_registration sr
+                LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+                WHERE
+                mg.status_ = 'PROGRESS'
+                AND sr.music_group_status_ = 'NORMAL'
+                ) UNION ALL
+                (
+                SELECT
+                cssp.user_id_
+                FROM
+                course_schedule_student_payment cssp
+                LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
+                WHERE
+                cssp.group_type_ IN ( 'VIP', 'PRACTICE' )
+                AND cs.status_ = 'NOT_START'
+                )) t1) t
+            LEFT JOIN student stu ON t.user_id_=stu.user_id_
             LEFT JOIN sys_user su ON stu.user_id_=su.id_
             LEFT JOIN sys_user tea ON stu.teacher_id_=tea.id_
             LEFT JOIN `subject` sub ON stu.subject_id_list_ = sub.id_
@@ -1073,9 +1093,29 @@
     </select>
     <select id="countCloudStudyStudentData" resultType="int">
         SELECT
-            COUNT(stu.user_id_)
-        FROM student stu
-        LEFT JOIN sys_user su ON stu.user_id_=su.id_
+        COUNT( DISTINCT user_id_ )
+        FROM
+        ((
+        SELECT
+        sr.user_id_
+        FROM
+        student_registration sr
+        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        WHERE
+        mg.status_ = 'PROGRESS'
+        AND sr.music_group_status_ = 'NORMAL'
+        ) UNION ALL
+        (
+        SELECT
+        cssp.user_id_
+        FROM
+        course_schedule_student_payment cssp
+        LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
+        WHERE
+        cssp.group_type_ IN ( 'VIP', 'PRACTICE' )
+        AND cs.status_ = 'NOT_START'
+        )) t
+        LEFT JOIN sys_user su ON t.user_id_ = su.id_
         <include refid="queryCloudStudyStudentDataCondition" />
     </select>
 

+ 43 - 0
mec-student/src/main/java/com/ym/mec/student/controller/QuestionnaireUserResultController.java

@@ -1,14 +1,24 @@
 package com.ym.mec.student.controller;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.QuestionnaireTopicDao;
+import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityDto;
+import com.ym.mec.biz.dal.entity.QuestionnaireTopic;
 import com.ym.mec.biz.dal.entity.QuestionnaireUserResult;
+import com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity;
+import com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum;
 import com.ym.mec.biz.service.QuestionnaireUserResultService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
 import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
 import java.util.List;
 
 @RequestMapping("questionnaireUserResult")
@@ -18,5 +28,38 @@ public class QuestionnaireUserResultController extends BaseController {
 
     @Autowired
     private QuestionnaireUserResultService questionnaireUserResultService;
+    @Autowired
+    private QuestionnaireTopicDao questionnaireTopicDao;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "提交调查问卷")
+    @PostMapping("/add")
+    public Object add(@RequestBody ReplacementInstrumentActivityDto replacementInstrumentActivityDto) {
+        questionnaireUserResultService.add(replacementInstrumentActivityDto);
+        return succeed();
+    }
 
+    @ApiOperation(value = "是否可以提交问卷")
+    @GetMapping("/commitFlag")
+    public Object commitFlag(Integer cooperationId, QuestionnaireActiveTypeEnum activeType) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new BizException("请登录");
+        }
+        HashMap<String, Object> paramMap = new HashMap<>(3);
+        paramMap.put("activeId",cooperationId);
+        paramMap.put("activeType",activeType.getCode());
+        paramMap.put("userId",sysUser.getId());
+        List<QuestionnaireUserResult> userResults = questionnaireUserResultService.findAll(paramMap);
+        if(userResults == null || userResults.size() == 0){
+            return succeed(true);
+        }
+        QuestionnaireUserResult result = userResults.get(0);
+        QuestionnaireTopic topic = questionnaireTopicDao.get(result.getQuestionnaireTopicId());
+        if(topic.getAgainCommitFlag() == 1){
+            return succeed(true);
+        }
+        return succeed(false);
+    }
 }

+ 2 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentManageController.java

@@ -142,6 +142,8 @@ public class StudentManageController extends BaseController {
 		student.setPhone(user.getPhone());
 		student.setCurrentClass(user.getCurrentClass());
 		student.setCurrentGrade(user.getCurrentGrade());
+		student.setBirthdate(user.getBirthdate());
+		student.setGender(user.getGender());
 		student.setRealName(user.getRealName());
 		student.setIdCardNo(user.getIdCardNo());
 		student.setImToken(user.getImToken());

+ 2 - 1
mec-util/src/main/java/com/ym/mec/util/excel/POIUtil.java

@@ -247,7 +247,8 @@ public class POIUtil {
 					cell = row.createCell(j);
 					try {
 						if(data instanceof Map) {
-							obj = PropertyUtils.getNestedProperty(data, fieldColumns[j]);
+							obj = ((Map<?, ?>) data).get(fieldColumns[j]);
+//							obj = PropertyUtils.getNestedProperty(data, fieldColumns[j]);
 						}else {
 							obj = expressionParser.parseExpression(fieldColumns[j]).getValue(context);
 						}

+ 15 - 3
mec-web/src/main/java/com/ym/mec/web/controller/QuestionnaireUserResultController.java

@@ -2,6 +2,7 @@ package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.dao.QuestionnaireQuestionDao;
 import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
+import com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum;
 import com.ym.mec.biz.dal.page.QuestionnaireUserResultQueryInfo;
 import com.ym.mec.biz.service.QuestionnaireUserResultService;
 import com.ym.mec.common.controller.BaseController;
@@ -16,12 +17,15 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.ym.mec.biz.dal.enums.QuestionnaireActiveTypeEnum.CLOUD_TEACHER_FEEDBACK;
+
 @RequestMapping("questionnaireUserResult")
 @Api(tags = "问题答案")
 @RestController
@@ -42,8 +46,16 @@ public class QuestionnaireUserResultController extends BaseController {
     @ApiOperation(value = "导出")
     @RequestMapping("/export")
     @PreAuthorize("@pcs.hasPermissions('questionnaireUserResult/export')")
-    public void questionnaireUserResultExport(Integer cooperationId, HttpServletResponse response) throws Exception {
-        List<QuestionnaireQuestion> questionList = questionnaireQuestionDao.queryQuestionList(cooperationId);
+    public void questionnaireUserResultExport(QuestionnaireActiveTypeEnum activeType, Integer cooperationId, HttpServletResponse response) throws Exception {
+        List<QuestionnaireQuestion> questionList;
+        if(cooperationId != null){
+            questionList = questionnaireQuestionDao.queryQuestionList(cooperationId);
+        }else {
+            if(activeType != CLOUD_TEACHER_FEEDBACK){
+                throw new BizException("报表中心暂不支持 {} 导出",CLOUD_TEACHER_FEEDBACK.getDesc());
+            }
+            questionList = questionnaireQuestionDao.findByActiveType(activeType.getCode());
+        }
         questionList.removeAll(Collections.singleton(null));
         if(questionList != null && questionList.size() > 0){
             List<String> column = new ArrayList<>();
@@ -54,7 +66,7 @@ public class QuestionnaireUserResultController extends BaseController {
             List<String> collect = questionList.stream().map(e -> e.getContent()).collect(Collectors.toList());
             column.addAll(collect);
             String[] header = column.toArray(new String[column.size()]);
-            Map<String,Object> resultMap = questionnaireUserResultService.questionnaireUserResultExport(cooperationId,questionList);
+            Map<String,Object> resultMap = questionnaireUserResultService.questionnaireUserResultExport(activeType.getCode(),cooperationId,questionList);
             List<Map<String,Object>> jsonObjectList = (List<Map<String,Object>>)resultMap.get("jsonObjectList");
             if(jsonObjectList.size() == 0){
                 throw new BizException("暂无可导出数据");