瀏覽代碼

Merge remote-tracking branch 'origin/2021-04-28' into 2021-04-28

Joburgess 4 年之前
父節點
當前提交
a01d67fbda
共有 33 個文件被更改,包括 519 次插入195 次删除
  1. 5 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/QuestionnaireQuestionDao.java
  2. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/QuestionnaireQuestionItemDao.java
  3. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentManageDao.java
  4. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java
  5. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherIncomeDto.java
  6. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherIncomeReviewDto.java
  7. 39 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/QuestionnaireQuestion.java
  8. 23 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/QuestionnaireQuestionItem.java
  9. 37 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/QuestionnaireTopic.java
  10. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/QuestionnaireTopicService.java
  11. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java
  12. 36 15
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  13. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/QuestionnaireQuestionServiceImpl.java
  14. 104 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/QuestionnaireTopicServiceImpl.java
  15. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  16. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  17. 1 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  18. 1 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  19. 55 34
      mec-biz/src/main/resources/config/mybatis/QuestionnaireQuestionItemMapper.xml
  20. 56 39
      mec-biz/src/main/resources/config/mybatis/QuestionnaireQuestionMapper.xml
  21. 33 30
      mec-biz/src/main/resources/config/mybatis/QuestionnaireTopicMapper.xml
  22. 1 2
      mec-biz/src/main/resources/config/mybatis/ReplacementInstrumentActivityMapper.xml
  23. 10 2
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  24. 6 6
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  25. 16 0
      mec-student/src/main/java/com/ym/mec/student/controller/ReplacementInstrumentActivityController.java
  26. 2 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/MessageSenderPlugin.java
  27. 4 4
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/MessageSenderPluginContext.java
  28. 2 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/AwSmsPlugin.java
  29. 18 8
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/JiguangPushPlugin.java
  30. 2 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/MOxintongSMSPlugin.java
  31. 2 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/ShiyuanSMSPlugin.java
  32. 2 2
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/YimeiSmsPlugin.java
  33. 21 23
      mec-web/src/main/java/com/ym/mec/web/controller/QuestionnaireTopicController.java

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

@@ -2,8 +2,12 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface QuestionnaireQuestionDao extends BaseDAO<Long, QuestionnaireQuestion> {
 
-	
+
+    void batchDel(@Param("questionIdList") List<Long> delQuestionnaireQuestionIdList);
 }

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/QuestionnaireQuestionItemDao.java

@@ -2,8 +2,18 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.biz.dal.entity.QuestionnaireQuestionItem;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface QuestionnaireQuestionItemDao extends BaseDAO<Long, QuestionnaireQuestionItem> {
 
-	
+
+    void batchInsert(@Param("questionItemList") List<QuestionnaireQuestionItem> questionItemList,
+                     @Param("questionId") Long questionId,
+                     @Param("topicId") Integer topicId);
+
+    void batchDelByQuestionIdList(@Param("questionIdList") List<Long> delQuestionnaireQuestionIdList);
+
+    void batchUpdate(@Param("updateItemList") List<QuestionnaireQuestionItem> updateItemList);
 }

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentManageDao.java

@@ -236,6 +236,7 @@ public interface StudentManageDao {
      * @param userIds
      * @return
      */
+    @Deprecated
     List<Map<Integer, Integer>> getIsActive(@Param("userIds") Set<Integer> userIds);
 
     /**

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -299,6 +299,7 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @author Joburgess
      * @date 2020/1/7
      */
+    @Deprecated
     List<TeacherBasicDto> searchTeachers(Map<String, Object> params);
 
     /**

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherIncomeDto.java

@@ -24,8 +24,18 @@ public class TeacherIncomeDto extends CourseSchedule {
 
     private Boolean belongToDaya;
 
+    private long sortNum;
+
     private List<TeacherSalaryDeductReasonDto> deductReasons;
 
+    public long getSortNum() {
+        return sortNum;
+    }
+
+    public void setSortNum(long sortNum) {
+        this.sortNum = sortNum;
+    }
+
     public BigDecimal getExpectIncome() {
         return expectIncome;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherIncomeReviewDto.java

@@ -30,6 +30,8 @@ public class TeacherIncomeReviewDto {
 
     private Double attendanceRange;
 
+    private Double vipAttendanceRange;
+
     public Double getAttendanceRange() {
         return attendanceRange;
     }
@@ -38,6 +40,14 @@ public class TeacherIncomeReviewDto {
         this.attendanceRange = attendanceRange;
     }
 
+    public Double getVipAttendanceRange() {
+        return vipAttendanceRange;
+    }
+
+    public void setVipAttendanceRange(Double vipAttendanceRange) {
+        this.vipAttendanceRange = vipAttendanceRange;
+    }
+
     public int getComplaintsDaysRange() {
         return complaintsDaysRange;
     }

+ 39 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/QuestionnaireQuestion.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.entity;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.util.List;
+
 /**
  * 对应数据库表(questionnaire_question):
  */
@@ -20,11 +22,13 @@ public class QuestionnaireQuestion {
 	private String type;
 	
 	/** 排序 */
-	private Integer sort;
+	private Integer sort = 0;
 	
 	/** 是否必填 */
-	private boolean isRequire;
-	
+	private boolean isRequire = true;
+
+	private boolean delFlag = false;
+
 	/** 问题描述 */
 	private String desc;
 	
@@ -33,7 +37,37 @@ public class QuestionnaireQuestion {
 	
 	/**  */
 	private java.util.Date updateTime;
-	
+
+	//需要删除的答案选项
+	private List<Long> delQuestionnaireQuestionItemIdList;
+
+	//题目答案选项
+	private List<QuestionnaireQuestionItem> questionnaireQuestionItemList;
+
+	public boolean getDelFlag() {
+		return delFlag;
+	}
+
+	public void setDelFlag(boolean delFlag) {
+		this.delFlag = delFlag;
+	}
+
+	public List<Long> getDelQuestionnaireQuestionItemIdList() {
+		return delQuestionnaireQuestionItemIdList;
+	}
+
+	public void setDelQuestionnaireQuestionItemIdList(List<Long> delQuestionnaireQuestionItemIdList) {
+		this.delQuestionnaireQuestionItemIdList = delQuestionnaireQuestionItemIdList;
+	}
+
+	public List<QuestionnaireQuestionItem> getQuestionnaireQuestionItemList() {
+		return questionnaireQuestionItemList;
+	}
+
+	public void setQuestionnaireQuestionItemList(List<QuestionnaireQuestionItem> questionnaireQuestionItemList) {
+		this.questionnaireQuestionItemList = questionnaireQuestionItemList;
+	}
+
 	public void setId(Long id){
 		this.id = id;
 	}
@@ -78,7 +112,7 @@ public class QuestionnaireQuestion {
 		this.isRequire = isRequire;
 	}
 	
-	public boolean isIsRequire(){
+	public boolean getIsIsRequire(){
 		return this.isRequire;
 	}
 			

+ 23 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/QuestionnaireQuestionItem.java

@@ -20,14 +20,34 @@ public class QuestionnaireQuestionItem {
 	private String answerValue;
 	
 	/** 排序 */
-	private Integer sort;
-	
+	private Integer sort = 0;
+
+	private Boolean isOver = false;
+
+	private Boolean delFlag = false;
+
 	/**  */
 	private java.util.Date createTime;
 	
 	/**  */
 	private java.util.Date updateTime;
-	
+
+	public Boolean getDelFlag() {
+		return delFlag;
+	}
+
+	public void setDelFlag(Boolean delFlag) {
+		this.delFlag = delFlag;
+	}
+
+	public Boolean getIsOver() {
+		return isOver;
+	}
+
+	public void setIsOver(Boolean over) {
+		isOver = over;
+	}
+
 	public void setId(Long id){
 		this.id = id;
 	}

+ 37 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/QuestionnaireTopic.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.entity;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.util.List;
+
 /**
  * 对应数据库表(questionnaire_topic):
  */
@@ -14,8 +16,10 @@ public class QuestionnaireTopic {
 	private String title;
 	
 	/** 发布状态(1-可见  0-不可见) */
-	private boolean status;
-	
+	private boolean status = false;
+
+	private boolean delFlag = false;
+
 	/** 创建人编号 */
 	private Integer creatorId;
 	
@@ -24,7 +28,37 @@ public class QuestionnaireTopic {
 	
 	/**  */
 	private java.util.Date updateTime;
-	
+
+	//需要删除的问卷题
+	private List<Long> delQuestionnaireQuestionIdList;
+
+	//问卷题目
+	private List<QuestionnaireQuestion> questionnaireQuestionList;
+
+	public boolean getDelFlag() {
+		return delFlag;
+	}
+
+	public void setDelFlag(boolean delFlag) {
+		this.delFlag = delFlag;
+	}
+
+	public List<QuestionnaireQuestion> getQuestionnaireQuestionList() {
+		return questionnaireQuestionList;
+	}
+
+	public List<Long> getDelQuestionnaireQuestionIdList() {
+		return delQuestionnaireQuestionIdList;
+	}
+
+	public void setDelQuestionnaireQuestionIdList(List<Long> delQuestionnaireQuestionIdList) {
+		this.delQuestionnaireQuestionIdList = delQuestionnaireQuestionIdList;
+	}
+
+	public void setQuestionnaireQuestionList(List<QuestionnaireQuestion> questionnaireQuestionList) {
+		this.questionnaireQuestionList = questionnaireQuestionList;
+	}
+
 	public void setId(Integer id){
 		this.id = id;
 	}

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/QuestionnaireTopicService.java

@@ -5,4 +5,9 @@ import com.ym.mec.common.service.BaseService;
 
 public interface QuestionnaireTopicService extends BaseService<Integer, QuestionnaireTopic> {
 
+    void add(QuestionnaireTopic questionnaireTopic);
+
+    void modify(QuestionnaireTopic questionnaireTopic);
+
+    QuestionnaireTopic getDetail(Integer topicId);
 }

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

@@ -75,7 +75,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @return
 	 */
 	public void batchPushMessage(MessageTypeEnum messageType, Map<Integer, String> receivers, Date triggerTime,
-			Integer readStatus, String url,String jpushType,String sound, Object... args);
+			Integer readStatus, String url,String jpushType,String sound,String channelId, Object... args);
 
 	/**
 	 * 发送消息

+ 36 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -511,7 +511,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             return;
         }
 
-        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE_VIP);
+        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
         double attendanceRange = 0;
         if(Objects.nonNull(sysConfig)){
             attendanceRange = Double.valueOf(sysConfig.getParanValue());
@@ -782,7 +782,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     //早退
                     deductCost = deductCost.add(teacherSalary.abs());
                     deductReasons.add("早退扣除全部课酬");
-                }else if((signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0)||signOutCourseTimeBetween<=3600){
+                }else if((signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0)||signOutCourseTimeBetween>=3600){
                     //异常签退,扣除50元
                     deductCost = deductCost.add(new BigDecimal(50));
                     deductReasons.add("异常签退,扣除50元");
@@ -1749,7 +1749,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     deductCost = deductCost.add(teacherSalary.abs());
 //                    deductReasons.add("早退扣除全部课酬");
                     deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.abs()));
-                }else if((signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0)||signOutCourseTimeBetween<=3600){
+                }else if((signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0)||signOutCourseTimeBetween>=3600){
                     //异常签退,扣除50元
                     deductCost = deductCost.add(new BigDecimal(50));
 //                    deductReasons.add("异常签退,扣除50元");
@@ -2018,13 +2018,20 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             idSchoolMap = schools.stream().collect(Collectors.toMap(School::getId, s->s, (s1, s2)->s1));
         }
 
-        //签到时间范围
-        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE_VIP);
+        //签到GPS范围
+        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
         double attendanceRange = 0;
         if(Objects.nonNull(sysConfig)){
             attendanceRange = Double.valueOf(sysConfig.getParanValue());
         }
 
+        //签到GPS范围VIP
+        SysConfig vipSysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE_VIP);
+        double vipAttendanceRange = 0;
+        if(Objects.nonNull(vipSysConfig)){
+            vipAttendanceRange = Double.valueOf(vipSysConfig.getParanValue());
+        }
+
         //教师签到记录
         List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseIds);
         Map<Long, List<TeacherAttendance>> teacherCourseAttendanceMap = allTeacherAttendances.stream().filter(c->teacherId.equals(c.getTeacherId())).collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
@@ -2049,9 +2056,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     calMusicCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange);
                     break;
                 case VIP:
-                    calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange);
+                    calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, vipAttendanceRange);
                     break;
-
                 case PRACTICE:
                     calPracticeTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher);
                     break;
@@ -2075,6 +2081,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         }
 
         teacherSalaryOverview.setAttendanceRange(attendanceRange);
+        teacherSalaryOverview.setVipAttendanceRange(vipAttendanceRange);
 
         return teacherSalaryOverview;
     }
@@ -2108,13 +2115,20 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 idSchoolMap = schools.stream().collect(Collectors.toMap(School::getId, s->s, (s1, s2)->s1));
             }
 
-            //签到时间范围
-            SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE_VIP);
+            //签到GPS范围
+            SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
             double attendanceRange = 0;
             if(Objects.nonNull(sysConfig)){
                 attendanceRange = Double.valueOf(sysConfig.getParanValue());
             }
 
+            //签到GPS范围VIP
+            SysConfig vipSysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE_VIP);
+            double vipAttendanceRange = 0;
+            if(Objects.nonNull(vipSysConfig)){
+                vipAttendanceRange = Double.valueOf(vipSysConfig.getParanValue());
+            }
+
             //教师签到记录
             List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseIds);
             Map<Long, List<TeacherAttendance>> teacherCourseAttendanceMap = allTeacherAttendances.stream().filter(c->queryInfo.getTeacherId().equals(c.getTeacherId())).collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
@@ -2146,7 +2160,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                         calMusicCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange);
                         break;
                     case VIP:
-                        calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, attendanceRange);
+                        calVipCourseTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher, vipAttendanceRange);
                         break;
                     case PRACTICE:
                         calPracticeTeacherActualSalary(courseSchedule, teacherSalary, teacherAttendances, school, teacher);
@@ -2183,10 +2197,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     teacherIncomeInfo.getTeacherAttendance().setSchoolLongitudeLatitude(school.getLongitudeLatitude());
                 }
                 teacherIncomeInfo.setBelongToDaya(teacherSalary.getBelongToDaya());
+                teacherIncomeInfo.setSortNum(courseSchedule.getStartClassTime().getTime()+courseSchedule.getId());
                 dataList.add(teacherIncomeInfo);
             }
         }
-        dataList.sort(Comparator.comparing(TeacherIncomeDto::getId).reversed());
+        dataList.sort(Comparator.comparing(TeacherIncomeDto::getSortNum).reversed());
         pageInfo.setRows(dataList);
         return pageInfo;
     }
@@ -2208,19 +2223,25 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             startDate = startDate.withMonth(3);
         }
 
+        result.put("total", BigDecimal.ZERO);
+        result.put("salary", BigDecimal.ZERO);
+        result.put("data", Collections.emptyList());
+
         if(startDate.compareTo(minDate)<0){
-            result.put("total", BigDecimal.ZERO);
-            result.put("salary", BigDecimal.ZERO);
-            result.put("data", Collections.emptyList());
             return result;
         }
 
         List<LocalDateBigDecimalMapDto> monthIncomeMapList = courseScheduleTeacherSalaryDao.teacherIncomeStat(teacherId, year, month);
 
+        if(CollectionUtils.isEmpty(monthIncomeMapList)){
+            return result;
+        }
+
         if(Objects.isNull(month)){
             Set<String> months = monthIncomeMapList.stream().map(e -> DateUtil.dateToString(e.getDate(), "yyyy-MM")).collect(Collectors.toSet());
 
             LocalDate now = LocalDate.now();
+            now = now.plusMonths(-1);
             DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
             while (startDate.compareTo(now)<=0&&year.equals(startDate.get(ChronoField.YEAR))){
                 String dateStr = dateFormatter.format(startDate);
@@ -2264,6 +2285,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             userMap.put(teacherId, teacherId.toString());
         }
         sysMessageService.batchPushMessage(MessageTypeEnum.TEACHER_INCOME_REMIND,
-                userMap, null, 0, "12", "TEACHER","income_remind.mp3");
+                userMap, null, 0, "12", "TEACHER","income_remind.mp3","income_remind_channel");
     }
 }

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/QuestionnaireQuestionServiceImpl.java

@@ -18,5 +18,4 @@ public class QuestionnaireQuestionServiceImpl extends BaseServiceImpl<Long, Ques
 	public BaseDAO<Long, QuestionnaireQuestion> getDAO() {
 		return questionnaireQuestionDao;
 	}
-	
 }

+ 104 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/QuestionnaireTopicServiceImpl.java

@@ -1,5 +1,12 @@
 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.QuestionnaireQuestionDao;
+import com.ym.mec.biz.dal.dao.QuestionnaireQuestionItemDao;
+import com.ym.mec.biz.dal.entity.QuestionnaireQuestion;
+import com.ym.mec.biz.dal.entity.QuestionnaireQuestionItem;
+import com.ym.mec.biz.dal.entity.SysMusicScoreAccompaniment;
 import com.ym.mec.common.dal.BaseDAO;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
@@ -7,16 +14,112 @@ import com.ym.mec.biz.dal.entity.QuestionnaireTopic;
 import com.ym.mec.biz.service.QuestionnaireTopicService;
 import com.ym.mec.biz.dal.dao.QuestionnaireTopicDao;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class QuestionnaireTopicServiceImpl extends BaseServiceImpl<Integer, QuestionnaireTopic>  implements QuestionnaireTopicService {
 	
 	@Autowired
 	private QuestionnaireTopicDao questionnaireTopicDao;
+	@Autowired
+	private QuestionnaireQuestionDao questionnaireQuestionDao;
+	@Autowired
+	private QuestionnaireQuestionItemDao questionnaireQuestionItemDao;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 
 	@Override
 	public BaseDAO<Integer, QuestionnaireTopic> getDAO() {
 		return questionnaireTopicDao;
 	}
-	
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void add(QuestionnaireTopic questionnaireTopic) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		questionnaireTopic.setCreatorId(sysUser.getId());
+		questionnaireTopicDao.insert(questionnaireTopic);
+		Integer topicId = questionnaireTopic.getId();
+		List<QuestionnaireQuestion> questionnaireQuestionList = questionnaireTopic.getQuestionnaireQuestionList();
+		if(questionnaireQuestionList != null && questionnaireQuestionList.size() > 0){
+			for (QuestionnaireQuestion questionnaireQuestion : questionnaireQuestionList) {
+				questionnaireQuestion.setQuestionnaireTopicId(topicId);
+				questionnaireQuestionDao.insert(questionnaireQuestion);
+				Long questionId = questionnaireQuestion.getId();
+				List<QuestionnaireQuestionItem> questionItemList = questionnaireQuestion.getQuestionnaireQuestionItemList();
+				if(questionItemList != null && questionItemList.size() > 0){
+					questionnaireQuestionItemDao.batchInsert(questionItemList,questionId,topicId);
+				}
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void modify(QuestionnaireTopic questionnaireTopic) {
+		Date date = new Date();
+		questionnaireTopic.setUpdateTime(date);
+		questionnaireTopicDao.update(questionnaireTopic);
+		Integer topicId = questionnaireTopic.getId();
+		List<Long> delQuestionnaireQuestionIdList = questionnaireTopic.getDelQuestionnaireQuestionIdList();
+		if(delQuestionnaireQuestionIdList != null && delQuestionnaireQuestionIdList.size() > 0){
+			questionnaireQuestionDao.batchDel(delQuestionnaireQuestionIdList);
+			questionnaireQuestionItemDao.batchDelByQuestionIdList(delQuestionnaireQuestionIdList);
+		}
+		List<QuestionnaireQuestion> questionnaireQuestionList = questionnaireTopic.getQuestionnaireQuestionList();
+		if(questionnaireQuestionList != null && questionnaireQuestionList.size() > 0){
+			//获取需要修改的问题
+			List<QuestionnaireQuestion> updateCollect = questionnaireQuestionList.stream().filter(e -> e.getId() != null).collect(Collectors.toList());
+			if(updateCollect != null && updateCollect.size() > 0){
+				for (QuestionnaireQuestion question : updateCollect) {
+					//需要删除的问题答案
+					List<Long> delQuestionnaireQuestionItemIdList = question.getDelQuestionnaireQuestionItemIdList();
+					if(delQuestionnaireQuestionItemIdList != null && delQuestionnaireQuestionItemIdList.size() > 0){
+						questionnaireQuestionItemDao.batchDelByQuestionIdList(delQuestionnaireQuestionItemIdList);
+					}
+					questionnaireQuestionDao.update(question);
+					Long questionId = question.getId();
+					List<QuestionnaireQuestionItem> questionItemList = question.getQuestionnaireQuestionItemList();
+					//获取需要修改的答案
+					List<QuestionnaireQuestionItem> updateItemList = questionItemList.stream().filter(e -> e.getId() != null).collect(Collectors.toList());
+					if(updateItemList != null && updateItemList.size() > 0){
+						questionnaireQuestionItemDao.batchUpdate(updateItemList);
+					}
+					//获取删除的答案
+					List<QuestionnaireQuestionItem> insertItemList = questionItemList.stream().filter(e -> e.getId() == null).collect(Collectors.toList());
+					if(insertItemList != null && insertItemList.size() > 0){
+						questionnaireQuestionItemDao.batchInsert(insertItemList,questionId,topicId);
+					}
+				}
+			}
+			//获取需要新增的问题
+			List<QuestionnaireQuestion> addCollect = questionnaireQuestionList.stream().filter(e -> e.getId() == null).collect(Collectors.toList());
+			if(addCollect.size() > 0){
+				for (QuestionnaireQuestion question : addCollect) {
+					question.setQuestionnaireTopicId(topicId);
+					questionnaireQuestionDao.insert(question);
+					Long questionId = question.getId();
+					List<QuestionnaireQuestionItem> questionItemList = question.getQuestionnaireQuestionItemList();
+					if(questionItemList != null && questionItemList.size() > 0){
+						questionnaireQuestionItemDao.batchInsert(questionItemList,questionId,topicId);
+					}
+				}
+			}
+		}
+	}
+
+	@Override
+	public QuestionnaireTopic getDetail(Integer topicId) {
+		QuestionnaireTopic questionnaireTopic = questionnaireTopicDao.get(topicId);
+		Map<String,Object> paramMap = new HashMap(1);
+		paramMap.put("topicId",topicId);
+		questionnaireTopic.setQuestionnaireQuestionList(questionnaireQuestionDao.findAll(paramMap));
+		return questionnaireTopic;
+	}
 }

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -342,7 +342,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 			try {
 				if (debugMode == true
 						|| messageSenderPluginContext.batchSend(messageSender, messageConfig.getDescription(),
-								MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url,jpushType,"default")) {
+								MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url,jpushType,"default",null)) {
 					status = SendStatusEnum.SUCCESSED;
 				} else {
 					status = SendStatusEnum.FAILED;
@@ -366,7 +366,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	@Override
 	@Async
 	public void batchPushMessage(MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
-			String url,String jpushType,String sound, Object... args) {
+			String url,String jpushType,String sound,String channelId, Object... args) {
 		if (receivers == null || receivers.size() == 0) {
 			throw new BizException("接收地址不能为空");
 		}
@@ -411,7 +411,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 			try {
 				if (debugMode == true
 						|| messageSenderPluginContext.batchSend(MessageSender.JIGUANG, messageConfig.getDescription(),
-								MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url,jpushType,sound)) {
+								MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url,jpushType,sound,channelId)) {
 					status = SendStatusEnum.SUCCESSED;
 				} else {
 					status = SendStatusEnum.FAILED;
@@ -440,7 +440,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		if (triggerTime == null || date.after(triggerTime)) {
 			status = SendStatusEnum.SENDING;
 			try {
-				if (debugMode == true || messageSenderPluginContext.send(messageSender, receiver, title, content, url,jpushType,"default")) {
+				if (debugMode == true || messageSenderPluginContext.send(messageSender, receiver, title, content, url,jpushType,"default",null)) {
 					status = SendStatusEnum.SUCCESSED;
 				} else {
 					status = SendStatusEnum.FAILED;

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -791,7 +791,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		}
 		if(teacherAttendance.getComplaintsStatus() == ComplaintsStatusEnum.WAIT){
 			teacherAttendance.setComplaintsStatus(REPEAL);
-			teacherAttendance.setIsComplaints(0);
 			teacherAttendanceDao.update(teacherAttendance);
 		}else {
 			throw new BizException("操作失败: 当前申述状态不允许撤销");

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

@@ -3797,7 +3797,7 @@
             course_schedule cs
             LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
         <include refid="queryTeacherCourseCondition"></include>
-        ORDER BY cs.id_ DESC
+        ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC,cs.id_ DESC
         <include refid="global.limit" />
     </select>
 

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

@@ -1128,6 +1128,7 @@
 			<if test="year!=null">
 				AND YEAR ( cs.class_date_ ) = #{year}
 			</if>
+		  	AND csts.actual_salary_ &gt; 0
 			<if test="month!=null">
 				AND MONTH(cs.class_date_) = #{month}
 			</if>

+ 55 - 34
mec-biz/src/main/resources/config/mybatis/QuestionnaireQuestionItemMapper.xml

@@ -12,8 +12,10 @@
 		<result column="questionnaire_question_id_" property="questionnaireQuestionId" />
 		<result column="answer_value_" property="answerValue" />
 		<result column="sort_" property="sort" />
+		<result column="is_over_" property="isOver" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
+		<result column="del_flag_" property="delFlag" />
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -28,46 +30,65 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.QuestionnaireQuestionItem" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
-		</selectKey>
-		-->
-		INSERT INTO questionnaire_question_item (id_,questionnaire_topic_id_,questionnaire_question_id_,answer_value_,sort_,create_time_,update_time_) VALUES(#{id},#{questionnaireTopicId},#{questionnaireQuestionId},#{answerValue},#{sort},#{createTime},#{updateTime})
+		INSERT INTO questionnaire_question_item (questionnaire_topic_id_,questionnaire_question_id_,answer_value_,sort_,create_time_,update_time_)
+		VALUES(#{questionnaireTopicId},#{questionnaireQuestionId},#{answerValue},#{sort},NOW(),NOW())
 	</insert>
-	
-	<!-- 根据主键查询一条记录 -->
+
+    <insert id="batchInsert" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO questionnaire_question_item (questionnaire_topic_id_,questionnaire_question_id_,answer_value_,sort_,is_over_,create_time_,update_time_)
+		VALUES
+		<foreach collection="questionItemList" item="item" separator=",">
+			(#{topicId},#{questionId},#{item.answerValue},#{item.sort},#{item.isOver},NOW(),NOW())
+		</foreach>
+	</insert>
+
+    <!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.QuestionnaireQuestionItem">
 		UPDATE questionnaire_question_item <set>
-<if test="questionnaireQuestionId != null">
-questionnaire_question_id_ = #{questionnaireQuestionId},
-</if>
-<if test="id != null">
-id_ = #{id},
-</if>
-<if test="questionnaireTopicId != null">
-questionnaire_topic_id_ = #{questionnaireTopicId},
-</if>
-<if test="updateTime != null">
-update_time_ = #{updateTime},
-</if>
-<if test="sort != null">
-sort_ = #{sort},
-</if>
-<if test="answerValue != null">
-answer_value_ = #{answerValue},
-</if>
-<if test="createTime != null">
-create_time_ = #{createTime},
-</if>
-</set> WHERE id_ = #{id} 
+		<if test="updateTime != null">
+			update_time_ = #{updateTime},
+		</if>
+		<if test="sort != null">
+			sort_ = #{sort},
+		</if>
+		<if test="isOver != null">
+			is_over_ = #{isOver},
+		</if>
+		<if test="answerValue != null">
+			answer_value_ = #{answerValue},
+		</if>
+		</set> WHERE id_ = #{id}
 	</update>
 	
 	<!-- 根据主键删除一条记录 -->
-	<delete id="delete" >
-		DELETE FROM questionnaire_question_item WHERE id_ = #{id} 
-	</delete>
-	
+	<update id="delete" >
+		UPDATE questionnaire_question_item SET del_flag_ = 1 WHERE id_ = #{id}
+	</update>
+	<update id="batchDelByQuestionIdList">
+		UPDATE questionnaire_question_item SET del_flag_ = 1 WHERE questionnaire_question_id_ IN
+		<foreach collection="questionIdList" item="item" open="(" separator="," close=")">
+			#{item}
+		</foreach>
+	</update>
+	<update id="batchUpdate">
+		<foreach collection="updateItemList" item="item" separator=";">
+			UPDATE questionnaire_question_item
+			<set>
+				<if test="item.sort != null">
+					sort_ = #{item.sort},
+				</if>
+				<if test="item.isOver != null">
+					is_over_ = #{item.isOver},
+				</if>
+				<if test="item.answerValue != null">
+					answer_value_ = #{item.answerValue},
+				</if>
+					update_time_ = NOW()
+			</set>
+			WHERE id_ = #{item.id}
+		</foreach>
+	</update>
+
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="QuestionnaireQuestionItem" parameterType="map">
 		SELECT * FROM questionnaire_question_item ORDER BY id_ <include refid="global.limit"/>

+ 56 - 39
mec-biz/src/main/resources/config/mybatis/QuestionnaireQuestionMapper.xml

@@ -16,6 +16,18 @@
 		<result column="desc_" property="desc" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
+		<result column="del_flag_" property="delFlag" />
+		<collection property="questionnaireQuestionItemList" ofType="com.ym.mec.biz.dal.entity.QuestionnaireQuestionItem">
+			<result column="item_id_" property="id" />
+			<result column="item_questionnaire_topic_id_" property="questionnaireTopicId" />
+			<result column="item_questionnaire_question_id_" property="questionnaireQuestionId" />
+			<result column="item_answer_value_" property="answerValue" />
+			<result column="item_sort_" property="sort" />
+			<result column="item_is_over_" property="isOver" />
+			<result column="item_create_time_" property="createTime" />
+			<result column="item_update_time_" property="updateTime" />
+			<result column="item_del_flag_" property="delFlag" />
+		</collection>
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -25,58 +37,63 @@
 	
 	<!-- 全查询 -->
 	<select id="findAll" resultMap="QuestionnaireQuestion">
-		SELECT * FROM questionnaire_question ORDER BY id_
+		SELECT qq.*,qqi.answer_value_ item_answer_value_,qqi.create_time_ item_create_time_,qqi.id_ item_id_,qqi.is_over_ item_is_over_,
+			   qqi.questionnaire_question_id_ item_questionnaire_question_id_,qqi.questionnaire_topic_id_ item_questionnaire_topic_id_,
+		       qqi.sort_ item_sort_,qqi.update_time_ item_update_time_
+		FROM questionnaire_question qq
+		LEFT JOIN questionnaire_question_item qqi ON qq.id_ = qqi.questionnaire_question_id_
+		<where>
+			qq.del_flag_ = 0 AND qqi.del_flag_ = 0
+			<if test="topicId != null">
+				AND qq.questionnaire_topic_id_ = #{topicId}
+			</if>
+		</where>
+		ORDER BY qq.sort_,qq.id_,qqi.sort_,qqi.id_
 	</select>
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.QuestionnaireQuestion" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
-		</selectKey>
-		-->
-		INSERT INTO questionnaire_question (id_,questionnaire_topic_id_,content_,type_,sort_,is_require_,desc_,create_time_,update_time_) VALUES(#{id},#{questionnaireTopicId},#{content},#{type},#{sort},#{isRequire},#{desc},#{createTime},#{updateTime})
+		INSERT INTO questionnaire_question (questionnaire_topic_id_,content_,type_,sort_,is_require_,desc_,create_time_,update_time_)
+		VALUES(#{questionnaireTopicId},#{content},#{type},#{sort},#{isRequire},#{desc},NOW(),NOW())
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.QuestionnaireQuestion">
 		UPDATE questionnaire_question <set>
-<if test="id != null">
-id_ = #{id},
-</if>
-<if test="questionnaireTopicId != null">
-questionnaire_topic_id_ = #{questionnaireTopicId},
-</if>
-<if test="updateTime != null">
-update_time_ = #{updateTime},
-</if>
-<if test="content != null">
-content_ = #{content},
-</if>
-<if test="sort != null">
-sort_ = #{sort},
-</if>
-<if test="type != null">
-type_ = #{type},
-</if>
-<if test="isRequire != null">
-is_require_ = #{isRequire},
-</if>
-<if test="desc != null">
-desc_ = #{desc},
-</if>
-<if test="createTime != null">
-create_time_ = #{createTime},
-</if>
-</set> WHERE id_ = #{id} 
+		<if test="updateTime != null">
+			update_time_ = #{updateTime},
+		</if>
+		<if test="content != null">
+			content_ = #{content},
+		</if>
+		<if test="sort != null">
+			sort_ = #{sort},
+		</if>
+		<if test="type != null">
+			type_ = #{type},
+		</if>
+		<if test="isRequire != null">
+			is_require_ = #{isRequire},
+		</if>
+		<if test="desc != null">
+			desc_ = #{desc},
+		</if>
+		</set> WHERE id_ = #{id}
 	</update>
 	
 	<!-- 根据主键删除一条记录 -->
-	<delete id="delete" >
-		DELETE FROM questionnaire_question WHERE id_ = #{id} 
+	<update id="delete" >
+		UPDATE questionnaire_question SET del_flag_ = 1 WHERE id_ = #{id}
+	</update>
+
+    <delete id="batchDel">
+		UPDATE questionnaire_question SET del_flag_ = 1 WHERE id_ IN
+		<foreach collection="questionIdList" item="item" open="(" separator="," close=")">
+			#{item}
+		</foreach>
 	</delete>
-	
-	<!-- 分页查询 -->
+
+    <!-- 分页查询 -->
 	<select id="queryPage" resultMap="QuestionnaireQuestion" parameterType="map">
 		SELECT * FROM questionnaire_question ORDER BY id_ <include refid="global.limit"/>
 	</select>

+ 33 - 30
mec-biz/src/main/resources/config/mybatis/QuestionnaireTopicMapper.xml

@@ -13,6 +13,7 @@
 		<result column="creator_id_" property="creatorId" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
+		<result column="del_flag_" property="delFlag" />
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -27,50 +28,52 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.QuestionnaireTopic" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
-		</selectKey>
-		-->
-		INSERT INTO questionnaire_topic (id_,title_,status_,creator_id_,create_time_,update_time_) VALUES(#{id},#{title},#{status},#{creatorId},#{createTime},#{updateTime})
+		INSERT INTO questionnaire_topic (title_,status_,creator_id_,create_time_,update_time_)
+		VALUES(#{title},#{status},#{creatorId},NOW(),NOW())
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.QuestionnaireTopic">
 		UPDATE questionnaire_topic <set>
-<if test="status != null">
-status_ = #{status},
-</if>
-<if test="id != null">
-id_ = #{id},
-</if>
-<if test="creatorId != null">
-creator_id_ = #{creatorId},
-</if>
-<if test="title != null">
-title_ = #{title},
-</if>
-<if test="updateTime != null">
-update_time_ = #{updateTime},
-</if>
-<if test="createTime != null">
-create_time_ = #{createTime},
-</if>
-</set> WHERE id_ = #{id} 
+		<if test="status != null">
+			status_ = #{status},
+		</if>
+		<if test="title != null">
+			title_ = #{title},
+		</if>
+		<if test="updateTime != null">
+			update_time_ = #{updateTime},
+		</if>
+		</set> WHERE id_ = #{id}
 	</update>
 	
 	<!-- 根据主键删除一条记录 -->
-	<delete id="delete" >
-		DELETE FROM questionnaire_topic WHERE id_ = #{id} 
-	</delete>
-	
+	<update id="delete" >
+		UPDATE questionnaire_topic SET del_flag_ = 1 WHERE id_ = #{id}
+	</update>
+
+	<sql id="queryPageSql">
+		<where>
+			del_flag_ = 0
+			<if test="search != null and search != ''">
+				AND (id_ = #{search} OR title_ LIKE CONCAT('%',#{search},'%'))
+			</if>
+			<if test="status != null">
+				AND status_ = #{status}
+			</if>
+		</where>
+	</sql>
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="QuestionnaireTopic" parameterType="map">
-		SELECT * FROM questionnaire_topic ORDER BY id_ <include refid="global.limit"/>
+		SELECT * FROM questionnaire_topic
+		<include refid="queryPageSql"/>
+		ORDER BY id_
+		<include refid="global.limit"/>
 	</select>
 	
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM questionnaire_topic
+		<include refid="queryPageSql"/>
 	</select>
 </mapper>

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

@@ -37,7 +37,6 @@
         <result property="discountPrice" column="discount_price_"/>
         <result property="depreciationPrice" column="depreciation_price_"/>
         <result property="salePrice" column="sale_price_"/>
-        <result property="mobileNo" column="phone_"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -261,7 +260,7 @@
 
     <!-- 获取问卷分页数据 -->
     <select id="getPageList" resultMap="ReplacementInstrumentActivityStatDto" parameterType="map">
-        SELECT ria.*,su.phone_,o.name_ organ_name_,ri.brand_,ri.specification_,ri.param_,ri.market_price_,ri.discount_price_,ri.depreciation_price_,
+        SELECT ria.*,su.phone_ mobile_no_,o.name_ organ_name_,ri.brand_,ri.specification_,ri.param_,ri.market_price_,ri.discount_price_,ri.depreciation_price_,
         ri.sale_price_,s.name_ subject_name_,co.name_ cooperationOrganName FROM replacement_instrument_activity ria
         LEFT JOIN replacement_instrument ri ON ri.id_ = ria.instruments_id_
         LEFT JOIN subject s ON s.id_ = ria.subject_id_

+ 10 - 2
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -655,7 +655,11 @@
     </update>
     <update id="clearAttendanceComplaints">
         UPDATE teacher_attendance
-        SET is_complaints_ = 0,complaints_status_ = NULL,complaints_content_ = NULL,dispose_content_ = NULL,operator_ = NULL,complaints_time_ = NULL
+        SET is_complaints_ = 0,complaints_status_ = NULL,complaints_content_ = NULL,
+            dispose_content_ = NULL,operator_ = NULL,complaints_time_ = NULL,complaints_type_ = NULL,
+        sign_out_device_no_ = NULL,sign_in_device_no_ = NULL,url_ = NULL,update_attendance_type_ = NULL,
+            sign_out_remark_ = NULL,sign_out_attachments_ = NULL,current_schedule_id_ = NULL,remark_ = NULL
+        ,sign_in_longitude_latitude_ = NULL,sign_out_longitude_latitude_ = NULL
         WHERE course_schedule_id_ IN
         <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
             #{courseScheduleId}
@@ -663,7 +667,11 @@
     </update>
     <update id="clearAttendanceComplaint">
         UPDATE teacher_attendance
-        SET is_complaints_ = 0,complaints_status_ = NULL,complaints_content_ = NULL,dispose_content_ = NULL,operator_ = NULL,complaints_time_ = NULL
+        SET is_complaints_ = 0,complaints_status_ = NULL,complaints_content_ = NULL,
+            dispose_content_ = NULL,operator_ = NULL,complaints_time_ = NULL,complaints_type_ = NULL,
+            sign_out_device_no_ = NULL,sign_in_device_no_ = NULL,url_ = NULL,update_attendance_type_ = NULL,
+            sign_out_remark_ = NULL,sign_out_attachments_ = NULL,current_schedule_id_ = NULL,remark_ = NULL
+                ,sign_in_longitude_latitude_ = NULL,sign_out_longitude_latitude_ = NULL
         WHERE course_schedule_id_ = #{courseScheduleId}
     </update>
 

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

@@ -812,7 +812,7 @@
     <select id="findByFlowOrganRangeTeachers" resultMap="TeacherBasicDto">
         SELECT su.id_,su.username_,su.real_name_,t.organ_id_ FROM teacher t
         LEFT JOIN sys_user su ON t.id_ = su.id_
-        WHERE su.del_flag_ = 0
+        WHERE su.del_flag_ = 0 AND su.lock_flag_=0
         <if test="organId != null and organId != ''">
             AND (INTE_ARRAY(#{organId},t.flow_organ_range_) OR FIND_IN_SET(t.organ_id_,#{organId}))
         </if>
@@ -829,7 +829,7 @@
     <select id="findTeacherByOrganId" resultMap="TeacherBasicDto">
         SELECT su.id_,su.username_,su.real_name_ FROM teacher t
         LEFT JOIN sys_user su ON t.id_ = su.id_
-        WHERE su.del_flag_ != 1
+        WHERE su.del_flag_ != 1 AND su.lock_flag_!=1
         <if test="organId != null">
             AND (FIND_IN_SET(t.organ_id_,#{organId}) OR INTE_ARRAY(t.flow_organ_range_,#{organId}))
         </if>
@@ -850,7 +850,7 @@
     <select id="searchTeachers" resultMap="TeacherBasicDto">
         SELECT su.id_,su.username_,su.real_name_ FROM teacher t
         LEFT JOIN sys_user su ON t.id_ = su.id_
-        WHERE su.del_flag_ != 1
+        WHERE su.del_flag_ != 1 AND su.lock_flag_!=1
         <if test="organId != null">
             AND FIND_IN_SET(t.organ_id_,#{organId})
         </if>
@@ -861,7 +861,7 @@
     <select id="countTeacherName" resultType="java.lang.Integer">
         SELECT COUNT(su.id_) FROM teacher t
         LEFT JOIN sys_user su ON t.id_ = su.id_
-        WHERE su.del_flag_ != 1
+        WHERE su.del_flag_ != 1 AND su.lock_flag_!=1
         <include refid="queryPageNameSql"/>
     </select>
     <sql id="queryPageNameSql">
@@ -885,7 +885,7 @@
         SELECT su.id_,su.real_name_,su.avatar_,GROUP_CONCAT(s.name_) subject_name_ FROM teacher t
         LEFT JOIN sys_user su ON t.id_ = su.id_
         LEFT JOIN subject s ON FIND_IN_SET(s.id_, t.subject_id_)
-        WHERE su.del_flag_ != 1
+        WHERE su.del_flag_ != 1 AND su.lock_flag_!=1
         <include refid="queryPageNameSql"/>
         GROUP BY su.id_
         <include refid="global.limit"/>
@@ -951,7 +951,7 @@
         <if test="search != null and search != ''">
             AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%'))
         </if>
-        AND su.del_flag_ = 0
+        AND su.del_flag_ = 0 AND su.lock_flag_=0
         GROUP BY su.id_
     </select>
     <select id="queryTeacherImModel" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.ImUserModel">

+ 16 - 0
mec-student/src/main/java/com/ym/mec/student/controller/ReplacementInstrumentActivityController.java

@@ -115,6 +115,22 @@ public class ReplacementInstrumentActivityController extends BaseController {
         return succeed(replacementInstrumentActivityService.getInfo(id));
     }
 
+    @ApiOperation(value = "获取置换的详情")
+    @GetMapping("/getInfoByCooperationOrganId")
+    @ApiImplicitParams({@ApiImplicitParam(name = "cooperationOrganId", value = "合作单位id", required = true, dataType = "int")})
+    public HttpResponseResult<ReplacementInstrumentActivityStatDto> getInfoByCooperationOrganId(Integer cooperationOrganId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请重新登陆");
+        }
+        ReplacementInstrumentActivity replacementInstrumentActivity = replacementInstrumentActivityService.findByUserId(cooperationOrganId, sysUser.getId());
+        if(replacementInstrumentActivity == null){
+        	return failed("未查询到您参与调查的记录");
+        }
+        Integer activityId = replacementInstrumentActivity.getId();
+        return succeed(replacementInstrumentActivityService.getInfo(activityId));
+    }
+
     @ApiOperation(value = "置换支付")
     @PostMapping("/pay")
     @ApiImplicitParams({@ApiImplicitParam(name = "replacementPayDto", value = "支付参数", required = true, dataType = "ReplacementPayDto")})

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/MessageSenderPlugin.java

@@ -14,7 +14,7 @@ public interface MessageSenderPlugin {
 	 * @return 是否发送成功
 	 * @throws IOException
 	 */
-	public boolean send(String subject, String content, String receiver, String url, String jpushType,String sound) throws Exception;
+	public boolean send(String subject, String content, String receiver, String url, String jpushType,String sound,String channelId) throws Exception;
 
 	/**
 	 * 批量发送消息至目的地
@@ -26,5 +26,5 @@ public interface MessageSenderPlugin {
 	 * @return 是否发送成功
 	 * @throws IOException
 	 */
-	public boolean batchSend(String subject, String content, String[] receivers, String url, String jpushType,String sound) throws Exception;
+	public boolean batchSend(String subject, String content, String[] receivers, String url, String jpushType,String sound,String channelId) throws Exception;
 }

+ 4 - 4
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/MessageSenderPluginContext.java

@@ -69,11 +69,11 @@ public class MessageSenderPluginContext implements ApplicationContextAware {
 	 * @return 是否发送成功
 	 * @throws IOException
 	 */
-	public boolean send(MessageSender messageSender, String subject, String content, String receiver, String url, String jpushType,String sound) throws Exception {
+	public boolean send(MessageSender messageSender, String subject, String content, String receiver, String url, String jpushType,String sound,String channelId) throws Exception {
 
 		messageSenderPlugin = getMessageSenderPlugin(messageSender);
 
-		return messageSenderPlugin.send(subject, content, receiver, url, jpushType,sound);
+		return messageSenderPlugin.send(subject, content, receiver, url, jpushType,sound,channelId);
 	}
 
 	/**
@@ -86,11 +86,11 @@ public class MessageSenderPluginContext implements ApplicationContextAware {
 	 * @return 是否发送成功
 	 * @throws IOException
 	 */
-	public boolean batchSend(MessageSender messageSender, String subject, String content, String[] receivers, String url, String jpushType,String sound) throws Exception {
+	public boolean batchSend(MessageSender messageSender, String subject, String content, String[] receivers, String url, String jpushType,String sound,String channelId) throws Exception {
 
 		messageSenderPlugin = getMessageSenderPlugin(messageSender);
 
-		return messageSenderPlugin.batchSend(subject, content, receivers, url, jpushType,sound);
+		return messageSenderPlugin.batchSend(subject, content, receivers, url, jpushType,sound,channelId);
 	}
 
 	@Override

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/AwSmsPlugin.java

@@ -68,7 +68,7 @@ public class AwSmsPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 
 	@Override
-	public boolean send(String subject, String content, String receiver, String url, String jpushType,String sound) throws IOException {
+	public boolean send(String subject, String content, String receiver, String url, String jpushType,String sound,String channelId) throws IOException {
 		try {
 			Map<String, Object> reqParams = new HashMap<String, Object>();
 			reqParams.put("SpCode", appId);
@@ -92,7 +92,7 @@ public class AwSmsPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 
 	@Override
-	public boolean batchSend(String subject, String content, String[] receivers, String url, String jpushType,String sound) throws IOException {
+	public boolean batchSend(String subject, String content, String[] receivers, String url, String jpushType,String sound,String channelId) throws IOException {
 		StringBuilder stringBuilder = new StringBuilder("");
 		for (int i = 0; i < receivers.length - 1; i++) {
 			stringBuilder.append(receivers[i]).append(",");

+ 18 - 8
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/JiguangPushPlugin.java

@@ -7,6 +7,7 @@ import com.ym.mec.thirdparty.message.MessageSenderPlugin;
 import com.ym.mec.util.http.HttpUtil;
 
 import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -14,6 +15,7 @@ import org.springframework.stereotype.Service;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -58,7 +60,7 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 	 * @param content 消息内容
 	 * @return json对象
 	 */
-	private JSONObject generateJson(String[] alias, String alert, String content, String url,String sound) {
+	private JSONObject generateJson(String[] alias, String alert, String content, String url,String sound,String channelId) {
 		JSONObject json = new JSONObject();
 		JSONArray platform = new JSONArray();// 平台
 		platform.add("android");
@@ -75,6 +77,15 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 		JSONObject android = new JSONObject();// android通知内容
 		android.put("alert", alert);
 		android.put("sound", sound.split("\\.")[0]);
+		JSONObject options = new JSONObject();// 设置参数
+		if(StringUtils.isNotEmpty(channelId)){
+			JSONObject thirdParty = new JSONObject();
+			JSONObject xiaomi = new JSONObject();
+			xiaomi.put("distribution","secondary_push");
+			xiaomi.put("channel_id",channelId);
+			thirdParty.put("xiaomi",xiaomi);
+			options.put("third_party_channel",thirdParty);
+		}
 		android.put("builder_id", 1);
 		JSONObject android_extras = new JSONObject();// android额外参数
 		android_extras.put("type", "infomation");
@@ -99,7 +110,6 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 		message.put("msg_content", content);
 		message.put("content_type","text");
 
-		JSONObject options = new JSONObject();// 设置参数
 		options.put("time_to_live", this.time_to_live);
 		options.put("apns_production", this.apns_production);
 
@@ -118,7 +128,7 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 	 * @param alert 推送消息
 	 * @param content 推送内容
 	 */
-	private String push(String[] alias, String alert, String content, String url,String type,String sound) {
+	private String push(String[] alias, String alert, String content, String url,String type,String sound,String channelId) {
 		String base64_auth_string = "";
 		switch (type){
 			case "STUDENT":
@@ -132,7 +142,7 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 				break;
 		}
 		String authorization = "Basic " + base64_auth_string;
-		return sendPostRequest(generateJson(alias, alert, content, url,sound).toString(), authorization);
+		return sendPostRequest(generateJson(alias, alert, content, url,sound,channelId).toString(), authorization);
 	}
 
 	/**
@@ -178,9 +188,9 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 	}
 
 	@Override
-	public boolean send(String subject, String content, String receiver, String url, String type,String sound) throws IOException {
+	public boolean send(String subject, String content, String receiver, String url, String type,String sound,String channelId) throws IOException {
 		String[] alias = { receiver };
-		String result = this.push(alias, subject, content, url,type,sound);
+		String result = this.push(alias, subject, content, url,type,sound,channelId);
 		JSONObject json = JSONObject.parseObject(result);
 		if (json.containsKey("error")) {
 			JSONObject jsonObject = json.getJSONObject("error");
@@ -190,8 +200,8 @@ public class JiguangPushPlugin implements MessageSenderPlugin, InitializingBean
 	}
 
 	@Override
-	public boolean batchSend(String subject, String content, String[] receivers, String url, String type,String sound) throws IOException {
-		String result = this.push(receivers, subject, content, url,type,sound);
+	public boolean batchSend(String subject, String content, String[] receivers, String url, String type,String sound,String channelId) throws IOException {
+		String result = this.push(receivers, subject, content, url,type,sound,channelId);
 		JSONObject json = JSONObject.parseObject(result);
 		if (json.containsKey("error")) {
 			JSONObject jsonObject = json.getJSONObject("error");

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/MOxintongSMSPlugin.java

@@ -36,7 +36,7 @@ public class MOxintongSMSPlugin implements MessageSenderPlugin, InitializingBean
 	}
 
 	@Override
-	public boolean send(String subject, String content, String receiver, String url, String jpushType,String sound) throws IOException {
+	public boolean send(String subject, String content, String receiver, String url, String jpushType,String sound,String channelId) throws IOException {
 		Map<String, Object> reqParams = new HashMap<String, Object>();
 		reqParams.put("username", username);
 		reqParams.put("pwd", pwd);
@@ -58,7 +58,7 @@ public class MOxintongSMSPlugin implements MessageSenderPlugin, InitializingBean
 	}
 
 	@Override
-	public boolean batchSend(String subject, String content, String[] receivers, String url, String jpushType,String sound) throws IOException {
+	public boolean batchSend(String subject, String content, String[] receivers, String url, String jpushType,String sound,String channelId) throws IOException {
 		StringBuilder stringBuilder = new StringBuilder();
 		for (int i = 0; i < receivers.length - 1; i++) {
 			stringBuilder.append(receivers[i]).append(",");

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/ShiyuanSMSPlugin.java

@@ -70,7 +70,7 @@ public class ShiyuanSMSPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 
 	@Override
-	public boolean send(String subject, String content, String receiver, String url,String jpushType,String sound) throws IOException {
+	public boolean send(String subject, String content, String receiver, String url,String jpushType,String sound,String channelId) throws IOException {
 		try {
 			Map<String, Object> reqParams = new HashMap<String, Object>();
 			reqParams.put("account", account);
@@ -93,7 +93,7 @@ public class ShiyuanSMSPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 
 	@Override
-	public boolean batchSend(String subject, String content, String[] receivers, String url,String jpushType,String sound) throws IOException {
+	public boolean batchSend(String subject, String content, String[] receivers, String url,String jpushType,String sound,String channelId) throws IOException {
 		StringBuilder stringBuilder = new StringBuilder("");
 		for (int i = 0; i < receivers.length - 1; i++) {
 			stringBuilder.append(receivers[i]).append(",");

+ 2 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/message/provider/YimeiSmsPlugin.java

@@ -58,7 +58,7 @@ public class YimeiSmsPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 
 	@Override
-	public boolean send(String subject, String content, String receiver, String url,String jpushType,String sound) throws Exception {
+	public boolean send(String subject, String content, String receiver, String url,String jpushType,String sound,String channelId) throws Exception {
 		String result = getParam(subject, content, receiver, host + "/simpleinter/sendSMS");
 		JSONObject json = JSONObject.parseObject(result);
 		if ("SUCCESS".equals(json.get("code"))) {
@@ -70,7 +70,7 @@ public class YimeiSmsPlugin implements MessageSenderPlugin, InitializingBean {
 	}
 
 	@Override
-	public boolean batchSend(String subject, String content, String[] receivers, String url,String jpushType,String sound) throws Exception {
+	public boolean batchSend(String subject, String content, String[] receivers, String url,String jpushType,String sound,String channelId) throws Exception {
 		String join = StringUtils.join(receivers, ",");
 		String result = getParam(subject, content, join, host + "/simpleinter/sendSMS");
 		logger.info("调用短信接口返回:{}", result);

+ 21 - 23
mec-web/src/main/java/com/ym/mec/web/controller/QuestionnaireTopicController.java

@@ -1,8 +1,8 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.biz.dal.entity.ChargeType;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.QuestionnaireTopic;
-import com.ym.mec.biz.service.ChargeTypeService;
 import com.ym.mec.biz.service.QuestionnaireTopicService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -10,16 +10,15 @@ import com.ym.mec.common.page.QueryInfo;
 import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
-
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 
 @RequestMapping("questionnaireTopic")
-@Api(tags = "收费类型服务")
+@Api(tags = "问题分类")
 @RestController
 public class QuestionnaireTopicController extends BaseController {
 
@@ -31,26 +30,34 @@ public class QuestionnaireTopicController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('questionnaireTopic/add')")
     @AuditLogAnnotation(operateName = "新增")
     public Object add(@RequestBody QuestionnaireTopic questionnaireTopic) {
-        questionnaireTopicService.insert(questionnaireTopic);
+        questionnaireTopicService.add(questionnaireTopic);
         return succeed();
     }
 
+    @ApiOperation(value = "获取详情")
+    @GetMapping("/getDetail")
+    @PreAuthorize("@pcs.hasPermissions('questionnaireTopic/getDetail')")
+    @AuditLogAnnotation(operateName = "新增")
+    public Object getDetail(Integer id) {
+        return succeed(questionnaireTopicService.getDetail(id));
+    }
+
     @ApiOperation(value = "修改")
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('questionnaireTopic/update')")
     @AuditLogAnnotation(operateName = "修改")
     public Object upSet(@RequestBody QuestionnaireTopic questionnaireTopic) {
-        questionnaireTopicService.update(questionnaireTopic);
+        questionnaireTopicService.modify(questionnaireTopic);
         return succeed();
     }
 
-    @ApiOperation(value = "删除")
-    @PostMapping("/del")
-    @PreAuthorize("@pcs.hasPermissions('questionnaireTopic/del')")
-    public Object del(@ApiParam(value = "收费类型编号", required = true) @PathVariable("id") Integer id) {
-        questionnaireTopicService.delete(id);
-        return succeed();
-    }
+//    @ApiOperation(value = "删除")
+//    @PostMapping("/del")
+//    @PreAuthorize("@pcs.hasPermissions('questionnaireTopic/del')")
+//    public Object del(Integer id) {
+//        questionnaireTopicService.delete(id);
+//        return succeed();
+//    }
 
     @ApiOperation(value = "分页查询")
     @GetMapping("/queryPage")
@@ -58,13 +65,4 @@ public class QuestionnaireTopicController extends BaseController {
     public Object queryPage(QueryInfo queryInfo) {
         return succeed(questionnaireTopicService.queryPage(queryInfo));
     }
-
-
-    @ApiOperation(value = "全查询")
-    @GetMapping("/findAll")
-    @PreAuthorize("@pcs.hasPermissions('questionnaireTopic/findAll')")
-    public HttpResponseResult<List<QuestionnaireTopic>> findAll() {
-        return succeed(questionnaireTopicService.findAll(new HashMap<>()));
-    }
-
 }