dzx 1 рік тому
батько
коміт
800ea08ef0

+ 16 - 2
src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeCalendarServiceImpl.java

@@ -9,7 +9,9 @@ import com.xjrsoft.module.classtime.dto.AddClassTimeCalendarDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeCalendar;
 import com.xjrsoft.module.classtime.mapper.ClassTimeCalendarMapper;
 import com.xjrsoft.module.classtime.service.IClassTimeCalendarService;
+import com.xjrsoft.module.courseTable.entity.ClassTime;
 import com.xjrsoft.module.courseTable.entity.CourseTable;
+import com.xjrsoft.module.courseTable.service.IClassTimeService;
 import com.xjrsoft.module.courseTable.service.ICourseTableService;
 import com.xjrsoft.module.schedule.entity.CourseTableBak;
 import com.xjrsoft.module.schedule.service.ICourseTableBakService;
@@ -34,21 +36,31 @@ import java.util.stream.Collectors;
 public class ClassTimeCalendarServiceImpl extends MPJBaseServiceImpl<ClassTimeCalendarMapper, ClassTimeCalendar> implements IClassTimeCalendarService {
     private final ICourseTableService courseTableService;
     private final ICourseTableBakService courseTableBakService;
+    private final IClassTimeService classTimeService;
 
     @Override
     public Boolean add(AddClassTimeCalendarDto dto) {
         try {
             ClassTimeCalendar classTimeCalendar = BeanUtil.toBean(dto, ClassTimeCalendar.class);
 
+            List<String> timePeriod = Arrays.asList(dto.getTimePeriod().split(","));
             //1、查询补课日期的数据,将日期设置为补班日期然后新增
             List<CourseTable> list = courseTableService.list(
                     new QueryWrapper<CourseTable>().lambda()
                             .eq(CourseTable::getScheduleDate, dto.getReplaceDate())
-                            .in(dto.getCoverType() == 1, CourseTable::getTimeNumber, Arrays.asList(dto.getTimePeriod().split(",")))
+                            .in(CourseTable::getTimeNumber, timePeriod)
             );
             if(list.isEmpty()){
                 throw new MyException("未能查询到补课日期那天的课表信息,请联系管理员");
             }
+            List<Integer> timeNumbers = classTimeService.list().stream().map(ClassTime::getNumber).collect(Collectors.toList());
+
+            List<Integer> notSelectedTimeNumbers = new ArrayList<>();
+            for (Integer timeNumber : timeNumbers) {
+                if(!timePeriod.contains(timeNumber.toString())){
+                    notSelectedTimeNumbers.add(timeNumber);
+                }
+            }
 
             classTimeCalendar.setCreateDate(new Date());
             boolean isSuccess = this.save(classTimeCalendar);
@@ -57,7 +69,7 @@ public class ClassTimeCalendarServiceImpl extends MPJBaseServiceImpl<ClassTimeCa
             List<CourseTable> deleteList = courseTableService.list(
                     new QueryWrapper<CourseTable>().lambda()
                             .eq(CourseTable::getScheduleDate, dto.getSupplementDate())
-                            .in(dto.getCoverType() == 1, CourseTable::getTimeNumber, Arrays.asList(dto.getTimePeriod().split(",")))
+                            .in(dto.getCoverType() == 1, CourseTable::getTimeNumber, timePeriod)
             );
             List<CourseTableBak> bakList = new ArrayList<>();
             for (CourseTable courseTable : deleteList) {
@@ -138,11 +150,13 @@ public class ClassTimeCalendarServiceImpl extends MPJBaseServiceImpl<ClassTimeCa
     public Boolean cancel(Long id) {
         try{
             ClassTimeCalendar calendar = this.getById(id);
+            List<String> timePeriod = Arrays.asList(calendar.getTimePeriod().split(","));
             //1、作废后,删除新增的补班课表数据
             courseTableService.remove(
                     new QueryWrapper<CourseTable>().lambda()
                             .eq(CourseTable::getScheduleDate, calendar.getSupplementDate())
                             .eq(CourseTable::getAdjustType, CourseAdjustTypeEnum.courseReplace.getCode())
+                            .in(CourseTable::getTimeNumber, timePeriod)
             );
             //查询出来备份的数据,并恢复到课表中
             List<CourseTableBak> list = courseTableBakService.list(

+ 4 - 3
src/main/java/com/xjrsoft/module/material/dto/MaterialTaskAssignListDto.java

@@ -15,8 +15,9 @@ public class MaterialTaskAssignListDto {
      */
     private Integer state;
 
-    /**
-     * 姓名
-     */
+    @ApiModelProperty("姓名")
     private String name;
+
+    @ApiModelProperty("部门id")
+    private Long deptId;
 }

+ 32 - 32
src/main/java/com/xjrsoft/module/material/service/impl/MaterialTaskServiceImpl.java

@@ -2,6 +2,7 @@ package com.xjrsoft.module.material.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import cn.hutool.json.JSONUtil;
@@ -479,45 +480,43 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
 
         MPJLambdaWrapper<MaterialTaskAssign> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper
-                .disableSubLogicDel()
-                .distinct()
                 .select(MaterialTaskAssign::getId)
-                .selectAs(MaterialTaskAppendix::getFileId, MaterialTaskAssignListVo::getFileId)
-//                .selectAs(File::getFolderId, MaterialTaskAssignListVo::getFolderId)
-                .select("CASE t2.material_category WHEN 'MT0001' THEN t4.folder_id ELSE t3.file_id END folderId")
-                .select("(select GROUP_CONCAT(DISTINCT b.name) from xjr_user_dept_relation a left join xjr_department b on a.dept_id=b.id where a.user_id=t.user_id) as deptName")
-//                .selectAs(MaterialTaskAppendix::getFileId, MaterialTaskAssignListVo::getFormDataId)
-                .selectAs(MaterialTask::getMaterialCategory, MaterialTaskAssignListVo::getMaterialCategory)
-                .select(XjrUser.class, x -> VoToColumnUtil.fieldsToColumns(MaterialTaskAssignListVo.class).contains(x.getProperty()))
-                .select(MaterialTaskAssign.class, x -> VoToColumnUtil.fieldsToColumns(MaterialTaskAssignListVo.class).contains(x.getProperty()))
-                .innerJoin(XjrUser.class, XjrUser::getId, MaterialTaskAssign::getUserId, ext -> ext.selectAs(XjrUser::getUserName, MaterialTaskAssignListVo::getUserName))
-//                .leftJoin(UserDeptRelation.class, UserDeptRelation::getUserId, MaterialTypeAssign::getUserId)
-//                .leftJoin(Department.class, Department::getId, UserDeptRelation::getDeptId, ext -> ext.selectAs(Department::getName, MaterialTaskAssignListVo::getDeptName))
-                .leftJoin(MaterialTask.class, MaterialTask::getId, MaterialTaskAssign::getMaterialTaskId)
-                .leftJoin(MaterialTaskAppendix.class,on-> on.eq(MaterialTaskAppendix::getMaterialTaskId, MaterialTaskAssign::getId).eq(MaterialTaskAppendix::getDeleteMark,DeleteMark.NODELETE.getCode()) )
-                .leftJoin(File.class, File::getId, MaterialTaskAppendix::getFileId)
-                .like(dto.getName() != null && !"".equals(dto.getName()), XjrUser::getName, dto.getName())
+                .select(MaterialTaskAssign.class, x -> VoToColumnUtil.fieldsToColumns(MaterialTaskAssign.class).contains(x.getProperty()))
+                .selectAs(XjrUser::getName, MaterialTaskAssignListVo::getName)
+                .selectAs(XjrUser::getUserName, MaterialTaskAssignListVo::getUserName)
+                .selectAs(XjrUser::getUserName, MaterialTaskAssignListVo::getUserNumber)
+                .selectAs(Department::getName, MaterialTaskAssignListVo::getDeptName)
+                .leftJoin(XjrUser.class, XjrUser::getId, MaterialTaskAssign::getUserId)
+                .leftJoin(UserDeptRelation.class, UserDeptRelation::getUserId, MaterialTaskAssign::getUserId)
+                .leftJoin(Department.class, Department::getId, UserDeptRelation::getDeptId)
                 .eq(MaterialTaskAssign::getMaterialTaskId, dto.getMaterialTaskId())
-                .eq(dto.getState() != null, MaterialTaskAssign::getStatus, dto.getState())
-                .eq(XjrUser::getDeleteMark, DeleteMark.NODELETE.getCode())
-//                .eq(Department::getDeleteMark, DeleteMark.NODELETE.getCode())
-                .eq(MaterialTask::getDeleteMark, DeleteMark.NODELETE.getCode())
-                .eq(MaterialTaskAssign::getDeleteMark, DeleteMark.NODELETE.getCode())
-//                .eq(MaterialTaskAppendix::getDeleteMark, DeleteMark.NODELETE.getCode())
-//                .select("(\n" +
-//                        "SELECT id FROM xjr_file WHERE id IN (\n" +
-//                        "SELECT file_id FROM material_task_appendix WHERE material_task_id = t.id\n" +
-//                        ") ORDER BY create_date DESC LIMIT 1\n" +
-//                        ") AS folderId ")
+                .eq(MaterialTaskAssign::getStatus, dto.getState())
+                .like(StrUtil.isNotEmpty(dto.getName()), XjrUser::getName, dto.getName())
+                .like(ObjectUtil.isNotEmpty(dto.getDeptId()), Department::getId, dto.getDeptId())
         ;
 
         List<MaterialTaskAssignListVo> pageOutput = materialTaskMaterialTaskAssignMapper.selectJoinList(MaterialTaskAssignListVo.class, queryWrapper);
 
+        List<MaterialTaskAppendix> appendixList = appendixMapper.selectJoinList(MaterialTaskAppendix.class,
+                new MPJLambdaWrapper<MaterialTaskAppendix>()
+                        .select(MaterialTaskAppendix::getMaterialTaskId)
+                        .select(MaterialTaskAppendix.class, x -> VoToColumnUtil.fieldsToColumns(MaterialTaskAppendix.class).contains(x.getProperty()))
+                        .innerJoin(MaterialTaskAssign.class, MaterialTaskAssign::getId, MaterialTaskAppendix::getMaterialTaskId)
+                        .eq(MaterialTaskAssign::getMaterialTaskId, dto.getMaterialTaskId())
+        );
+        Map<Long, List<MaterialTaskAppendix>> appendixFileMap = appendixList.stream().collect(Collectors.groupingBy(MaterialTaskAppendix::getMaterialTaskId));
+
         for (MaterialTaskAssignListVo el : pageOutput){
             materialTypeService.handleFileAndTemplate(el, el.getMaterialCategory());
-
-            List<File> fileList = fileService.list(Wrappers.<File>query().lambda().eq(File::getFolderId, el.getFolderId()));
+            if(appendixFileMap.get(el.getId())  == null){
+                continue;
+            }
+            List<Long> fileIds = appendixFileMap.get(el.getId()).stream().map(MaterialTaskAppendix::getFileId).collect(Collectors.toList());
+            List<File> fileList = fileService.list(Wrappers.<File>query().lambda().in(File::getId, fileIds));
             el.setFiles(fileList);
+            if(!fileList.isEmpty()){
+                el.setFolderId(fileList.get(0).getFolderId());
+            }
         }
 
         return pageOutput;
@@ -583,7 +582,7 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
 
         Map<String, byte[]> byteAryMap = new HashMap<>();
         MaterialTask task = this.getById(dto.getMaterialTaskId());
-
+        int sortCode = 1;
         for (MaterialTaskAppendix appendix : appendices) {
             List<File> fileList = fileService.list(Wrappers.<File>query().lambda().eq(File::getId, appendix.getFileId()));
             User user = userMap.get(appendix.getCreateUserId());
@@ -600,7 +599,7 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
                         outputStream.write(buffer, 0, bytesRead);
                     }
                     byte[] byteArray = outputStream.toByteArray();
-                    String fileName = user.getName() + "-" + user.getUserName() + "-" + task.getName();
+                    String fileName = sortCode + "-" + user.getName() + "-" + user.getUserName() + "-" + task.getName();
                     if(fileList.size() > 1){
                         fileName += "-" + (i + 1);
                     }
@@ -608,6 +607,7 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
                     byteAryMap.put(fileName, byteArray);
                     in.close();
                     outputStream.close();
+                    sortCode ++;
                 } catch (IOException e) {
                     throw new MyException("文件下载失败", e);
                 }