|
@@ -2,6 +2,7 @@ package com.xjrsoft.module.material.service.impl;
|
|
|
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
import cn.hutool.json.JSONUtil;
|
|
@@ -479,45 +480,43 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
|
|
|
|
|
|
|
|
MPJLambdaWrapper<MaterialTaskAssign> queryWrapper = new MPJLambdaWrapper<>();
|
|
MPJLambdaWrapper<MaterialTaskAssign> queryWrapper = new MPJLambdaWrapper<>();
|
|
|
queryWrapper
|
|
queryWrapper
|
|
|
- .disableSubLogicDel()
|
|
|
|
|
- .distinct()
|
|
|
|
|
.select(MaterialTaskAssign::getId)
|
|
.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(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<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){
|
|
for (MaterialTaskAssignListVo el : pageOutput){
|
|
|
materialTypeService.handleFileAndTemplate(el, el.getMaterialCategory());
|
|
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);
|
|
el.setFiles(fileList);
|
|
|
|
|
+ if(!fileList.isEmpty()){
|
|
|
|
|
+ el.setFolderId(fileList.get(0).getFolderId());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return pageOutput;
|
|
return pageOutput;
|
|
@@ -583,7 +582,7 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
|
|
|
|
|
|
|
|
Map<String, byte[]> byteAryMap = new HashMap<>();
|
|
Map<String, byte[]> byteAryMap = new HashMap<>();
|
|
|
MaterialTask task = this.getById(dto.getMaterialTaskId());
|
|
MaterialTask task = this.getById(dto.getMaterialTaskId());
|
|
|
-
|
|
|
|
|
|
|
+ int sortCode = 1;
|
|
|
for (MaterialTaskAppendix appendix : appendices) {
|
|
for (MaterialTaskAppendix appendix : appendices) {
|
|
|
List<File> fileList = fileService.list(Wrappers.<File>query().lambda().eq(File::getId, appendix.getFileId()));
|
|
List<File> fileList = fileService.list(Wrappers.<File>query().lambda().eq(File::getId, appendix.getFileId()));
|
|
|
User user = userMap.get(appendix.getCreateUserId());
|
|
User user = userMap.get(appendix.getCreateUserId());
|
|
@@ -600,7 +599,7 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
|
|
|
outputStream.write(buffer, 0, bytesRead);
|
|
outputStream.write(buffer, 0, bytesRead);
|
|
|
}
|
|
}
|
|
|
byte[] byteArray = outputStream.toByteArray();
|
|
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){
|
|
if(fileList.size() > 1){
|
|
|
fileName += "-" + (i + 1);
|
|
fileName += "-" + (i + 1);
|
|
|
}
|
|
}
|
|
@@ -608,6 +607,7 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
|
|
|
byteAryMap.put(fileName, byteArray);
|
|
byteAryMap.put(fileName, byteArray);
|
|
|
in.close();
|
|
in.close();
|
|
|
outputStream.close();
|
|
outputStream.close();
|
|
|
|
|
+ sortCode ++;
|
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
|
throw new MyException("文件下载失败", e);
|
|
throw new MyException("文件下载失败", e);
|
|
|
}
|
|
}
|