Browse Source

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

fanxp 1 week ago
parent
commit
f762ac01a3

+ 1 - 1
src/main/java/com/xjrsoft/common/xss/XssHttpServletRequestWrapper.java

@@ -34,7 +34,7 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
 
     private String method;
 
-    private final List<String> ignoreXssUrl = ListUtil.toList("/magic-api/**", "/magic/web/**","/workflow/execute/*");
+    private final List<String> ignoreXssUrl = ListUtil.toList("/magic-api/**", "/magic/web/**", "/workflow/execute/*", "/oa/wfMeetingApply/update_meetingSummary");
     //html过滤
     private final static HTMLFilter HTML_FILTER = new HTMLFilter();
 

+ 7 - 4
src/main/java/com/xjrsoft/module/job/JianyuekbScheduleTask.java

@@ -420,10 +420,13 @@ public class JianyuekbScheduleTask {
                 courseCount += exchangeCourseIds.length;
             }
             //查询顶课老师在本条申请的课程中的节次是否包含课
-            Integer substituteTeacherCourseCount = courseTableService.getSubstituteTeacherCourseCountByParams(new ClassTeacherDto() {{
-                setWfCourseAdjustId(courseAdjust.getId());
-                setTeacherId(Long.parseLong(courseAdjust.getExchangeTeacherId()));
-            }});
+            Integer substituteTeacherCourseCount = 0;
+            if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())){
+                substituteTeacherCourseCount = courseTableService.getSubstituteTeacherCourseCountByParams(new ClassTeacherDto() {{
+                    setWfCourseAdjustId(courseAdjust.getId());
+                    setTeacherId(Long.parseLong(courseAdjust.getExchangeTeacherId()));
+                }});
+            }
             if (courseList.size() != courseCount || substituteTeacherCourseCount > 0) {
                 //表明课程变化了,需要重新申请,需要将原来的申请作废并进行微信消息通知
                 courseAdjust.setEnabledMark(EnabledMark.DISABLED.getCode());

+ 0 - 1
src/main/java/com/xjrsoft/module/liteflow/node/WfStudentRepeatStudyNode.java

@@ -132,7 +132,6 @@ public class WfStudentRepeatStudyNode extends NodeComponent {
                                 baseStudentUser.setBaseStudentFamilyList(baseStudentFamilyList);
 
                                 List<AddBaseStudentFamilyMemberDto> baseStudentFamilyMemberList = new ArrayList<>();
-                                baseStudentFamilyMemberList.add(new AddBaseStudentFamilyMemberDto());
                                 baseStudentUser.setBaseStudentFamilyMemberList(baseStudentFamilyMemberList);
 
                                 List<AddBaseStudentSubsidizeDto> baseStudentSubsidizeList = new ArrayList<>();

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

@@ -19,6 +19,7 @@ import com.xjrsoft.module.system.service.IFileService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -137,6 +138,7 @@ public class WfMeetingApplyController {
     @ApiOperation(value = "编辑会议纪要")
     @SaCheckPermission("wfmeetingapply:edit")
     @XjrLog(value = "编辑会议纪要")
+    @Transactional(rollbackFor = Exception.class)
     public RT<Boolean> updateMeetingSummary(@Valid @RequestBody UpdateMeetingSummaryDto dto){
         WfMeetingApply wfMeetingApply = new WfMeetingApply();
         wfMeetingApply.setId(dto.getId());

+ 23 - 0
src/main/java/com/xjrsoft/module/oa/service/impl/WfMeetingApplyServiceImpl.java

@@ -14,6 +14,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.MeetingTypeEnum;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.utils.LocalDateTimeUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseOfficeBuild;
 import com.xjrsoft.module.ledger.vo.WorkflowRecordVo;
@@ -29,6 +30,7 @@ import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
 import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.organization.service.IWeChatService;
+import com.xjrsoft.module.schedule.vo.TodayScheduleVo;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
 import com.xjrsoft.module.system.entity.File;
 import com.xjrsoft.module.system.mapper.FileMapper;
@@ -289,6 +291,26 @@ public class WfMeetingApplyServiceImpl extends MPJBaseServiceImpl<WfMeetingApply
         IPage<TodayMeetingMobilePageVo> page = this.selectJoinListPage(ConventPage.getPage(dto), TodayMeetingMobilePageVo.class, wfMeetingApplyPageVoMPJLambdaWrapper);
         List<TodayMeetingMobilePageVo> record = page.getRecords();
 
+        Map<String, LocalTime> startTimeMap = record.stream().collect(Collectors.toMap(TodayMeetingMobilePageVo::getId, TodayMeetingMobilePageVo::getMeetingApplyS));
+        Map<String, LocalTime> endTimeMap = record.stream().collect(Collectors.toMap(TodayMeetingMobilePageVo::getId, TodayMeetingMobilePageVo::getMeetingApplyE));
+        for (TodayMeetingMobilePageVo vo : record) {
+            Integer adjustType = 1;
+            LocalTime oneStartTime = vo.getMeetingApplyS();
+            LocalTime oneEndTime =  vo.getMeetingApplyE();
+            for (String id : startTimeMap.keySet()) {
+                if(vo.getId().equals(id)){
+                    continue;
+                }
+                LocalTime startTime = startTimeMap.get(id);
+                LocalTime endTime = endTimeMap.get(id);
+                if((oneStartTime.isAfter(startTime) && oneStartTime.isBefore(endTime))
+                        || (oneEndTime.isAfter(startTime) && oneEndTime.isBefore(endTime))){
+                    adjustType = 0;
+                }
+            }
+            vo.setConflictStatus(adjustType);
+        }
+
         // 分割并重组列表
         List<TodayMeetingMobilePageVo> futureVo = new ArrayList<>(); // 当前时间之后的事件
         List<TodayMeetingMobilePageVo> pastVo = new ArrayList<>();   // 当前时间之前的事件
@@ -316,6 +338,7 @@ public class WfMeetingApplyServiceImpl extends MPJBaseServiceImpl<WfMeetingApply
                 futureVo.add(vo); // 未来的事件
             }
         }
+
         List<TodayMeetingMobilePageVo> result = new ArrayList<>();
         result.addAll(futureVo);
         result.addAll(pastVo);

+ 6 - 0
src/main/java/com/xjrsoft/module/oa/vo/TodayMeetingMobilePageVo.java

@@ -70,4 +70,10 @@ public class TodayMeetingMobilePageVo {
      */
     @ApiModelProperty("签到状态(0:未签到,1:已签到)")
     private Integer checkInStatus;
+
+    /**
+     * 签到状态(0:未签到,1:已签到)
+     */
+    @ApiModelProperty("冲突状态(0:冲突,1:不冲突)")
+    private Integer conflictStatus;
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/student/mapper/BaseStudentSchoolRollMapper.java

@@ -53,7 +53,7 @@ public interface BaseStudentSchoolRollMapper extends MPJBaseMapper<BaseStudentSc
     @Update("UPDATE base_student_school_roll SET class_id = #{classId} where user_id = #{userId}")
     Boolean updateStudentClass(Long classId, Long userId);
 
-    @Update("UPDATE base_student_school_roll SET class_id = #{classId},major_set_id=#{majorSetId},gradeId=#{gradeId},stduy_status=#{stduyStatus} where user_id = #{userId}")
+    @Update("UPDATE base_student_school_roll SET class_id = #{classId},major_set_id=#{majorSetId},grade_id=#{gradeId},stduy_status=#{stduyStatus} where user_id = #{userId}")
     Boolean updateStudentClassGradeMajorStduyStatus(Long classId, Long gradeId, Long majorSetId, String stduyStatus, Long userId);
 
 

+ 0 - 6
src/main/resources/application-dev.yml

@@ -116,12 +116,6 @@ xjrsoft:
       - /system/findUserByCode
       - /system/imgcaptcha-answer
       - /student/basestudentinfo/studentinfoByKeyWord
-      - /workflow/execute/new-launch
-      - /system/dictionary-detail
-      - /workflow/execute/start-process-info
-      - /baseGrade/list
-      - /baseSystemConfig/list
-      - /baseMajorSet/list
     approval-time: 300 # 审核超时时间 目前设为5分钟
   email:
     host:  #邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>

+ 15 - 11
src/test/java/com/xjrsoft/module/job/JianyuekbScheduleTaskTest.java

@@ -151,9 +151,9 @@ class JianyuekbScheduleTaskTest {
     }
     public void doExecute() {
         String active = SpringUtil.getActiveProfile();
-        if(!"prod".equals(active)){
-            return;
-        }
+//        if(!"prod".equals(active)){
+//            return;
+//        }
         String sql = "SELECT * FROM course_receive_msg WHERE delete_mark = 0 AND is_callback = -1";
         List<Map<String, Object>> receiveMsgs = SqlRunnerAdapter.db().selectList(sql);
         if(receiveMsgs.isEmpty()){
@@ -212,9 +212,9 @@ class JianyuekbScheduleTaskTest {
                 LocalDate startDateObj = LocalDate.parse(startDateStr);
                 String endDateStr = receiveMsg.get("end_date").toString();
                 LocalDate endDateObj = LocalDate.parse(endDateStr);
-                if(today.isAfter(startDateObj)){
-                    startDateStr = today.format(formatter);
-                }
+//                if(today.isAfter(startDateObj)){
+//                    startDateStr = today.format(formatter);
+//                }
 
                 //删除课表信息;
                 List<BaseClass> classList = gradeClassMaps.get(eduYearSerialNo);
@@ -286,7 +286,7 @@ class JianyuekbScheduleTaskTest {
 
         Set<String> techerIds = dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap,
                 teacherMap, classMap, String.valueOf(courseReceiveMsgId), startDate, endDate);
-        sendMsg(techerIds, courseReceiveMsgId);
+        //sendMsg(techerIds, courseReceiveMsgId);
         dataUtil.insertClassTime(scheduleInfo);
     }
 
@@ -419,10 +419,14 @@ class JianyuekbScheduleTaskTest {
                 courseCount += exchangeCourseIds.length;
             }
             //查询顶课老师在本条申请的课程中的节次是否包含课
-            Integer substituteTeacherCourseCount = courseTableService.getSubstituteTeacherCourseCountByParams(new ClassTeacherDto() {{
-                setWfCourseAdjustId(courseAdjust.getId());
-                setTeacherId(Long.parseLong(courseAdjust.getExchangeTeacherId()));
-            }});
+            Integer substituteTeacherCourseCount = 0;
+            if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())){
+                substituteTeacherCourseCount = courseTableService.getSubstituteTeacherCourseCountByParams(new ClassTeacherDto() {{
+                    setWfCourseAdjustId(courseAdjust.getId());
+                    setTeacherId(Long.parseLong(courseAdjust.getExchangeTeacherId()));
+                }});
+            }
+
             if(courseList.size() != courseCount || substituteTeacherCourseCount > 0){
                 //表明课程变化了,需要重新申请,需要将原来的申请作废并进行微信消息通知
                 courseAdjust.setEnabledMark(EnabledMark.DISABLED.getCode());

+ 2 - 3
src/test/java/com/xjrsoft/module/liteflow/node/WfStudentRepeatStudyNodeTest.java

@@ -54,7 +54,7 @@ class WfStudentRepeatStudyNodeTest {
 
     @Test
     void test(){
-        Long formId = 1906987877859340288L;
+        Long formId = 1907636186804998144L;
 
         String tableName = "wf_student_repeat_study";
         Entity where = Entity.create(tableName);
@@ -108,7 +108,6 @@ class WfStudentRepeatStudyNodeTest {
             baseStudentUser.setBaseStudentFamilyList(baseStudentFamilyList);
 
             List<AddBaseStudentFamilyMemberDto> baseStudentFamilyMemberList = new ArrayList<>();
-            baseStudentFamilyMemberList.add(new AddBaseStudentFamilyMemberDto());
             baseStudentUser.setBaseStudentFamilyMemberList(baseStudentFamilyMemberList);
 
             List<AddBaseStudentSubsidizeDto> baseStudentSubsidizeList = new ArrayList<>();
@@ -116,7 +115,7 @@ class WfStudentRepeatStudyNodeTest {
 
             studentService.add(baseStudentUser);
         }else{
-            schoolRollService.activateStudent(user.getId());
+            schoolRollService.activateStudent(user.getId(), null);
             schoolRollService.updateStudentClassGradeMajorStduyStatus(
                     Long.parseLong(objectMap.get("class_id").toString()),
                     Long.parseLong(objectMap.get("grade_id").toString()),