|
|
@ -1,12 +1,10 @@
|
|
|
|
package com.bs.ct.controller;
|
|
|
|
package com.bs.ct.controller;
|
|
|
|
|
|
|
|
|
|
|
|
import java.awt.image.BufferedImage;
|
|
|
|
import java.awt.image.BufferedImage;
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.Random;
|
|
|
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
|
|
|
|
|
@ -80,18 +78,115 @@ public class CtGalleryImagesController extends BaseController {
|
|
|
|
private ICtTaskInfoService ctTaskInfoService;
|
|
|
|
private ICtTaskInfoService ctTaskInfoService;
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private ICtImagesFeedbackRefService ctImagesFeedbackRefService;
|
|
|
|
private ICtImagesFeedbackRefService ctImagesFeedbackRefService;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private ICtGalleryCataService ctGalleryCataService;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private ICtTaskFeedbackService ctTaskFeedbackService;
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 分页查询图库图片列表
|
|
|
|
* 分页查询图库图片列表
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@ApiOperation("分页查询图库图片列表")
|
|
|
|
@ApiOperation("分页查询图库图片列表")
|
|
|
|
@GetMapping("/pageList")
|
|
|
|
@GetMapping("/pageList")
|
|
|
|
public TableDataInfo pageList(CtGalleryImages ctGalleryImages) {
|
|
|
|
public TableDataInfo pageList(CtGalleryImages ctGalleryImages) {
|
|
|
|
startPage();
|
|
|
|
Integer pageNum = ctGalleryImages.getPageNum() != null ? ctGalleryImages.getPageNum() : 1;
|
|
|
|
|
|
|
|
Integer pageSize = ctGalleryImages.getPageSize() != null ? ctGalleryImages.getPageSize() : 10;
|
|
|
|
LambdaQueryWrapper<CtGalleryImages> queryWrapper = new LambdaQueryWrapper();
|
|
|
|
LambdaQueryWrapper<CtGalleryImages> queryWrapper = new LambdaQueryWrapper();
|
|
|
|
condition(queryWrapper,ctGalleryImages);
|
|
|
|
if (Validator.isEmpty(ctGalleryImages.getImageTitle())) {
|
|
|
|
|
|
|
|
condition(queryWrapper,ctGalleryImages);
|
|
|
|
|
|
|
|
}
|
|
|
|
List<CtGalleryImages> list = ctGalleryImagesService.list(queryWrapper);
|
|
|
|
List<CtGalleryImages> list = ctGalleryImagesService.list(queryWrapper);
|
|
|
|
|
|
|
|
setAll(list);
|
|
|
|
setFile(list);
|
|
|
|
setFile(list);
|
|
|
|
return getDataTable(list);
|
|
|
|
if (Validator.isNotEmpty(ctGalleryImages.getImageTitle())) {
|
|
|
|
|
|
|
|
list = filterByImageTitle(list,ctGalleryImages.getImageTitle());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
Integer start = (pageNum - 1) * pageSize;
|
|
|
|
|
|
|
|
List<CtGalleryImages> result = list.stream()
|
|
|
|
|
|
|
|
.skip(start) // 跳过前4条数据
|
|
|
|
|
|
|
|
.limit(pageSize) // 最多取6条数据
|
|
|
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
TableDataInfo data = getDataTable(result);
|
|
|
|
|
|
|
|
data.setTotal(list.size());
|
|
|
|
|
|
|
|
return data;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 过滤方法
|
|
|
|
|
|
|
|
public static List<CtGalleryImages> filterByImageTitle(List<CtGalleryImages> list, String filterText) {
|
|
|
|
|
|
|
|
return list.stream()
|
|
|
|
|
|
|
|
.filter(image -> {
|
|
|
|
|
|
|
|
boolean matchImageName = image.getImageName() != null && image.getImageName().contains(filterText);
|
|
|
|
|
|
|
|
boolean matchImageTitle = image.getImageTitle() != null && image.getImageTitle().contains(filterText);
|
|
|
|
|
|
|
|
boolean matchKeyWords = image.getKeyWords() != null && image.getKeyWords().contains(filterText);
|
|
|
|
|
|
|
|
boolean matchCataName = image.getCataName() != null && image.getCataName().contains(filterText);
|
|
|
|
|
|
|
|
boolean matchTagNames = image.getTagNames() != null && image.getTagNames().stream().anyMatch(tag -> tag.contains(filterText));
|
|
|
|
|
|
|
|
boolean matchTaskTitles = image.getTaskTitles() != null && image.getTaskTitles().stream().anyMatch(task -> task.contains(filterText));
|
|
|
|
|
|
|
|
return matchImageName || matchImageTitle || matchKeyWords || matchCataName || matchTagNames || matchTaskTitles;
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void setAll(List<CtGalleryImages> list) {
|
|
|
|
|
|
|
|
List<CtGalleryCata> ctGalleryCatas = ctGalleryCataService.list();
|
|
|
|
|
|
|
|
List<CtGalleryImagesTag> imagesTags = ctGalleryImagesTagService.list();
|
|
|
|
|
|
|
|
HashMap<Long, String> longStringHashMap = ctGalleryCatas.stream()
|
|
|
|
|
|
|
|
.collect(Collectors.toMap(
|
|
|
|
|
|
|
|
CtGalleryCata::getId,
|
|
|
|
|
|
|
|
CtGalleryCata::getCataName,
|
|
|
|
|
|
|
|
(existing, replacement) -> existing,
|
|
|
|
|
|
|
|
HashMap::new
|
|
|
|
|
|
|
|
));
|
|
|
|
|
|
|
|
Map<Long, List<String>> imageStringHashMap = imagesTags.stream()
|
|
|
|
|
|
|
|
.collect(Collectors.groupingBy(
|
|
|
|
|
|
|
|
CtGalleryImagesTag::getImageId,
|
|
|
|
|
|
|
|
Collectors.mapping(
|
|
|
|
|
|
|
|
CtGalleryImagesTag::getTagName,
|
|
|
|
|
|
|
|
Collectors.toList()
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
));
|
|
|
|
|
|
|
|
//查询相关任务名称
|
|
|
|
|
|
|
|
List<CtImagesFeedbackRef> imagesFeedbackRefs = ctImagesFeedbackRefService.list();
|
|
|
|
|
|
|
|
Map<Long, List<Long>> refMap = imagesFeedbackRefs.stream()
|
|
|
|
|
|
|
|
.collect(Collectors.groupingBy(
|
|
|
|
|
|
|
|
CtImagesFeedbackRef::getImageId, // 分组键:imageId
|
|
|
|
|
|
|
|
Collectors.mapping(
|
|
|
|
|
|
|
|
CtImagesFeedbackRef::getFeedbackId, // 提取值:feedbackId
|
|
|
|
|
|
|
|
Collectors.toList() // 收集为列表
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
));
|
|
|
|
|
|
|
|
List<CtTaskFeedback> ctTaskFeedbacks = ctTaskFeedbackService.list();
|
|
|
|
|
|
|
|
HashMap<Long, Long> feedbackIdsMap = ctTaskFeedbacks.stream()
|
|
|
|
|
|
|
|
.collect(Collectors.toMap(
|
|
|
|
|
|
|
|
CtTaskFeedback::getId, // 键:id
|
|
|
|
|
|
|
|
CtTaskFeedback::getTaskId, // 值:taskId
|
|
|
|
|
|
|
|
(existing, replacement) -> existing, // 处理键冲突:保留现有值
|
|
|
|
|
|
|
|
() -> new HashMap<>() // 指定 Map 实现类(可选)
|
|
|
|
|
|
|
|
));
|
|
|
|
|
|
|
|
List<CtTaskInfo> ctTaskInfos = ctTaskInfoService.list();
|
|
|
|
|
|
|
|
HashMap<Long, String> infoMap = ctTaskInfos.stream()
|
|
|
|
|
|
|
|
.collect(Collectors.toMap(
|
|
|
|
|
|
|
|
CtTaskInfo::getId,
|
|
|
|
|
|
|
|
CtTaskInfo::getTaskTitle,
|
|
|
|
|
|
|
|
(existing, replacement) -> existing,
|
|
|
|
|
|
|
|
HashMap::new
|
|
|
|
|
|
|
|
));
|
|
|
|
|
|
|
|
for (CtGalleryImages ctGalleryImage : list) {
|
|
|
|
|
|
|
|
Long cataId = ctGalleryImage.getCataId();
|
|
|
|
|
|
|
|
String cataName = longStringHashMap.get(cataId);
|
|
|
|
|
|
|
|
ctGalleryImage.setCataName(cataName);
|
|
|
|
|
|
|
|
List<String> tagNames = imageStringHashMap.get(ctGalleryImage.getId());
|
|
|
|
|
|
|
|
ctGalleryImage.setTagNames(tagNames);
|
|
|
|
|
|
|
|
List<Long> feedList = refMap.get(ctGalleryImage.getId());
|
|
|
|
|
|
|
|
List<String> taskTitles = new ArrayList<>();
|
|
|
|
|
|
|
|
if (null != feedList && feedList.size() > 0) {
|
|
|
|
|
|
|
|
for (Long feedId : feedList) {
|
|
|
|
|
|
|
|
Long taskInfoId = feedbackIdsMap.get(feedId);
|
|
|
|
|
|
|
|
String taskTitleName = infoMap.get(taskInfoId);
|
|
|
|
|
|
|
|
taskTitles.add(taskTitleName);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
ctGalleryImage.setTaskTitles(taskTitles);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void setFile(List<CtGalleryImages> list) {
|
|
|
|
private void setFile(List<CtGalleryImages> list) {
|
|
|
@ -141,12 +236,14 @@ public class CtGalleryImagesController extends BaseController {
|
|
|
|
List<CtGalleryImages> list = ctGalleryImagesService.list(new LambdaQueryWrapper<CtGalleryImages>()
|
|
|
|
List<CtGalleryImages> list = ctGalleryImagesService.list(new LambdaQueryWrapper<CtGalleryImages>()
|
|
|
|
.in(CtGalleryImages::getId, imagesIds));
|
|
|
|
.in(CtGalleryImages::getId, imagesIds));
|
|
|
|
BufferedImage[] imgs = new BufferedImage[list.size()];
|
|
|
|
BufferedImage[] imgs = new BufferedImage[list.size()];
|
|
|
|
|
|
|
|
Map<Integer, File> imgMap = new HashMap<>();
|
|
|
|
int index = 0;
|
|
|
|
int index = 0;
|
|
|
|
for (CtGalleryImages galleryImages : list) {
|
|
|
|
for (CtGalleryImages galleryImages : list) {
|
|
|
|
String attachUrl = galleryImages.getImagePath().replace("/profile", "");
|
|
|
|
String attachUrl = galleryImages.getImagePath().replace("/profile", "");
|
|
|
|
String filePath = profile + attachUrl;
|
|
|
|
String filePath = profile + attachUrl;
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
imgs[index++] = OperateImageUtils.getBufferedImage(filePath);
|
|
|
|
imgs[index++] = OperateImageUtils.getBufferedImage(filePath);
|
|
|
|
|
|
|
|
imgMap.put(index++, new File(filePath));
|
|
|
|
} catch (IOException e) {
|
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
e.printStackTrace();
|
|
|
|
return AjaxResult.error("读取图片失败: " + filePath);
|
|
|
|
return AjaxResult.error("读取图片失败: " + filePath);
|
|
|
@ -190,6 +287,12 @@ public class CtGalleryImagesController extends BaseController {
|
|
|
|
return AjaxResult.error("垂直合并需要至少2张图片");
|
|
|
|
return AjaxResult.error("垂直合并需要至少2张图片");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "video":
|
|
|
|
|
|
|
|
int width = imgs[0].getWidth();
|
|
|
|
|
|
|
|
int height = imgs[0].getHeight();
|
|
|
|
|
|
|
|
String mp4SavePath = profile + UUIDUtils.generatorUUID() + "output.mp4";
|
|
|
|
|
|
|
|
OperateImageUtils.createMp4(mp4SavePath, imgMap, width, height);
|
|
|
|
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
return AjaxResult.error("不支持的图片类型: " + imageType);
|
|
|
|
return AjaxResult.error("不支持的图片类型: " + imageType);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -330,12 +433,6 @@ public class CtGalleryImagesController extends BaseController {
|
|
|
|
CtTaskInfo ctTaskInfo = new CtTaskInfo();
|
|
|
|
CtTaskInfo ctTaskInfo = new CtTaskInfo();
|
|
|
|
Long newId = System.currentTimeMillis() + new Random().nextInt(1000);
|
|
|
|
Long newId = System.currentTimeMillis() + new Random().nextInt(1000);
|
|
|
|
ctTaskInfo.setId(newId);
|
|
|
|
ctTaskInfo.setId(newId);
|
|
|
|
List<CtTaskBranch> branchList = ctTaskInfo.getBranchList();
|
|
|
|
|
|
|
|
for (CtTaskBranch sdTaskOtherBranch : branchList) {
|
|
|
|
|
|
|
|
sdTaskOtherBranch.setTaskId(ctTaskInfo.getId());
|
|
|
|
|
|
|
|
sdTaskOtherBranch.setType("机构");
|
|
|
|
|
|
|
|
ctTaskBranchService.saveOrUpdate(sdTaskOtherBranch);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//设置发起单位与部门
|
|
|
|
//设置发起单位与部门
|
|
|
|
LoginUser loginUser = getLoginUser();
|
|
|
|
LoginUser loginUser = getLoginUser();
|
|
|
|
Long deptId = loginUser.getDeptId();
|
|
|
|
Long deptId = loginUser.getDeptId();
|
|
|
@ -348,6 +445,20 @@ public class CtGalleryImagesController extends BaseController {
|
|
|
|
ctTaskInfo.setBranchCode(String.valueOf(parentDept.getDeptId()));
|
|
|
|
ctTaskInfo.setBranchCode(String.valueOf(parentDept.getDeptId()));
|
|
|
|
ctTaskInfo.setBranchName(parentDept.getDeptName());
|
|
|
|
ctTaskInfo.setBranchName(parentDept.getDeptName());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
CtTaskBranch branch = new CtTaskBranch();
|
|
|
|
|
|
|
|
branch.setBranchCode(String.valueOf(deptId));
|
|
|
|
|
|
|
|
branch.setBranchName(sysDept.getDeptName());
|
|
|
|
|
|
|
|
branch.setTaskId(ctTaskInfo.getId());
|
|
|
|
|
|
|
|
branch.setType("机构");
|
|
|
|
|
|
|
|
ctTaskBranchService.saveOrUpdate(branch);
|
|
|
|
|
|
|
|
CtTaskBranch taskBranch = new CtTaskBranch();
|
|
|
|
|
|
|
|
taskBranch.setBranchCode(String.valueOf(deptId));
|
|
|
|
|
|
|
|
taskBranch.setUserName(loginUser.getUsername());
|
|
|
|
|
|
|
|
taskBranch.setUserId(String.valueOf(loginUser.getUserId()));
|
|
|
|
|
|
|
|
taskBranch.setTaskStatus("0");
|
|
|
|
|
|
|
|
taskBranch.setTaskId(ctTaskInfo.getId());
|
|
|
|
|
|
|
|
taskBranch.setType("人员");
|
|
|
|
|
|
|
|
ctTaskBranchService.saveOrUpdate(taskBranch);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ("1".equals(ctTaskInfo.getStatus())) {
|
|
|
|
if ("1".equals(ctTaskInfo.getStatus())) {
|
|
|
|
ctTaskInfo.setTaskDate(new Date());
|
|
|
|
ctTaskInfo.setTaskDate(new Date());
|
|
|
|