Просмотр исходного кода

材料缴交提交后重复问题

dzx 1 год назад
Родитель
Сommit
9d7e2cbf59

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

@@ -479,44 +479,33 @@ 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::getMaterialTaskId)
+                .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 ")
         ;
 
         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()));
+            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::getFolderId, fileIds));
             el.setFiles(fileList);
         }