package com.bs.ct.controller; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; import com.bs.cm.domain.CmAttach; import com.bs.cm.service.ICmAttachService; import com.bs.common.config.BsConfig; import com.bs.common.core.domain.entity.SysDept; import com.bs.common.core.domain.model.LoginUser; import com.bs.common.utils.StringUtils; import com.bs.common.utils.file.FileUploadUtils; import com.bs.common.utils.file.FileUtils; import com.bs.ct.domain.*; import com.bs.ct.service.*; import com.bs.ct.utils.ExifUtils; import com.bs.ct.utils.OperateImageUtils; import com.bs.ct.utils.UUIDUtils; import com.bs.framework.config.ServerConfig; import com.bs.system.service.ISysDeptService; import com.drew.imaging.ImageMetadataReader; import com.drew.imaging.ImageProcessingException; import com.drew.metadata.Directory; import com.drew.metadata.Metadata; import com.drew.metadata.Tag; import com.drew.metadata.exif.ExifSubIFDDirectory; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.bs.common.annotation.Log; import com.bs.common.core.controller.BaseController; import com.bs.common.core.domain.AjaxResult; import com.bs.common.core.page.TableDataInfo; import com.bs.common.enums.BusinessType; import com.bs.common.utils.poi.ExcelUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import cn.hutool.core.lang.Validator; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import static com.bs.common.config.BsConfig.getProfile; /** * 图库图片Controller * * @author bs * @date 2025-02-22 */ @Api(tags = "图库图片") @RestController @RequestMapping("/gallery/images") public class CtGalleryImagesController extends BaseController { @Value("${bs.profile}") private String profile; @Resource private ICtGalleryImagesService ctGalleryImagesService; @Autowired private ServerConfig serverConfig; @Autowired private ICmAttachService cmAttachService; @Resource private ICtTaskTagService ctTaskTagService; @Resource private ICtGalleryImagesTagService ctGalleryImagesTagService; @Resource private ICtTagService ctTagService; @Autowired private ISysDeptService deptService; @Resource private ICtTaskBranchService ctTaskBranchService; @Resource private ICtTaskInfoService ctTaskInfoService; @Resource private ICtImagesFeedbackRefService ctImagesFeedbackRefService; @Resource private ICtGalleryCataService ctGalleryCataService; @Resource private ICtTaskFeedbackService ctTaskFeedbackService; /** * 分页查询图库图片列表 */ @ApiOperation("分页查询图库图片列表") @GetMapping("/pageList") public TableDataInfo pageList(CtGalleryImages ctGalleryImages) { Integer pageNum = ctGalleryImages.getPageNum() != null ? ctGalleryImages.getPageNum() : 1; Integer pageSize = ctGalleryImages.getPageSize() != null ? ctGalleryImages.getPageSize() : 10; LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); if (Validator.isEmpty(ctGalleryImages.getImageTitle())) { condition(queryWrapper,ctGalleryImages); } List list = ctGalleryImagesService.list(queryWrapper); setAll(list); setFile(list); if (Validator.isNotEmpty(ctGalleryImages.getImageTitle())) { list = filterByImageTitle(list,ctGalleryImages.getImageTitle()); } Integer start = (pageNum - 1) * pageSize; List 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 filterByImageTitle(List 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 list) { List ctGalleryCatas = ctGalleryCataService.list(); List imagesTags = ctGalleryImagesTagService.list(); HashMap longStringHashMap = ctGalleryCatas.stream() .collect(Collectors.toMap( CtGalleryCata::getId, CtGalleryCata::getCataName, (existing, replacement) -> existing, HashMap::new )); Map> imageStringHashMap = imagesTags.stream() .collect(Collectors.groupingBy( CtGalleryImagesTag::getImageId, Collectors.mapping( CtGalleryImagesTag::getTagName, Collectors.toList() ) )); //查询相关任务名称 List imagesFeedbackRefs = ctImagesFeedbackRefService.list(); Map> refMap = imagesFeedbackRefs.stream() .collect(Collectors.groupingBy( CtImagesFeedbackRef::getImageId, // 分组键:imageId Collectors.mapping( CtImagesFeedbackRef::getFeedbackId, // 提取值:feedbackId Collectors.toList() // 收集为列表 ) )); List ctTaskFeedbacks = ctTaskFeedbackService.list(); HashMap feedbackIdsMap = ctTaskFeedbacks.stream() .collect(Collectors.toMap( CtTaskFeedback::getId, // 键:id CtTaskFeedback::getTaskId, // 值:taskId (existing, replacement) -> existing, // 处理键冲突:保留现有值 () -> new HashMap<>() // 指定 Map 实现类(可选) )); List ctTaskInfos = ctTaskInfoService.list(); HashMap infoMap = new HashMap<>(); if (null != ctTaskInfos) { infoMap = ctTaskInfos.stream() .filter(ctTaskInfo -> ctTaskInfo.getTaskTitle() != null) // 过滤掉taskTitle为空的项 .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 tagNames = imageStringHashMap.get(ctGalleryImage.getId()); ctGalleryImage.setTagNames(tagNames); List feedList = refMap.get(ctGalleryImage.getId()); List taskTitles = new ArrayList<>(); if (null != feedList && feedList.size() > 0) { for (Long feedId : feedList) { Long taskInfoId = feedbackIdsMap.get(feedId); if (null != infoMap && infoMap.size() > 0) { String taskTitleName = infoMap.get(taskInfoId); taskTitles.add(taskTitleName); } } ctGalleryImage.setTaskTitles(taskTitles); } } } private void setFile(List list) { for (CtGalleryImages ctGalleryImages : list) { List galleryImagesTags = ctGalleryImagesTagService.list(new LambdaQueryWrapper() .eq(CtGalleryImagesTag::getImageId, ctGalleryImages.getId())); ctGalleryImages.setImagesTags(galleryImagesTags); List cmAttachList = cmAttachService.list(new LambdaQueryWrapper().eq(CmAttach::getFileId,ctGalleryImages.getFileId())); ctGalleryImages.setFile(cmAttachList); } } /** * 查询图库图片列表 */ @ApiOperation("查询图库图片列表") @GetMapping("/list") public AjaxResult list(CtGalleryImages ctGalleryImages) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); condition(queryWrapper,ctGalleryImages); if (null != ctGalleryImages.getFeedbackId()) { List ctImagesFeedbackRefs = ctImagesFeedbackRefService.list(new LambdaQueryWrapper() .eq(CtImagesFeedbackRef::getFeedbackId, ctGalleryImages.getFeedbackId())); List imageIds = ctImagesFeedbackRefs.stream() .map(CtImagesFeedbackRef::getImageId) .collect(Collectors.toList()); if (null != imageIds && imageIds.size() > 0) { List galleryImages = ctGalleryImagesService.list(new LambdaQueryWrapper() .in(CtGalleryImages::getId, imageIds)); return success(galleryImages); } else { return null; } } List list = ctGalleryImagesService.list(queryWrapper); return success(list); } /** * 生成图片 */ @ApiOperation("生成图片") @Log(title = "生成图片", businessType = BusinessType.UPDATE) @PostMapping("/generateImage") public AjaxResult generateImage(@RequestBody CtGalleryImages ctGalleryImages) { List imagesIds = ctGalleryImages.getIds(); String imageType = ctGalleryImages.getImageType(); // 假设 CtGalleryImages 有一个 imageType 字段用于指定生成图片的类型 List list = ctGalleryImagesService.list(new LambdaQueryWrapper() .in(CtGalleryImages::getId, imagesIds)); BufferedImage[] imgs = new BufferedImage[list.size()]; Map imgMap = new HashMap<>(); int index = 0; for (CtGalleryImages galleryImages : list) { String attachUrl = galleryImages.getImagePath().replace("/profile", ""); String filePath = profile + attachUrl; try { imgs[index] = OperateImageUtils.getBufferedImage(filePath); imgMap.put(index, new File(filePath)); index = index + 1 ; } catch (IOException e) { e.printStackTrace(); return AjaxResult.error("读取图片失败: " + filePath); } } BufferedImage destImg = null; String outputFileName = null; String mp4SavePath = ""; try { switch (imageType) { case "nineGrid": if (imgs.length >= 9) { destImg = OperateImageUtils.mergeImageToGrid(3, 3, imgs); outputFileName = UUIDUtils.generatorUUID() + "nineGrid.jpg"; } else { return AjaxResult.error("生成九宫格图片需要至少9张图片"); } break; case "fourGrid": if (imgs.length >= 4) { BufferedImage[] fourImgs = new BufferedImage[4]; System.arraycopy(imgs, 0, fourImgs, 0, 4); destImg = OperateImageUtils.mergeImageToGrid(2, 2, fourImgs); outputFileName = UUIDUtils.generatorUUID() + "fourGrid.jpg"; } else { return AjaxResult.error("生成四宫格图片需要至少4张图片"); } break; case "horizontalMerge": if (imgs.length >= 2) { destImg = OperateImageUtils.mergeImage(true, imgs); outputFileName = UUIDUtils.generatorUUID() + "horizontalMerge.jpg"; } else { return AjaxResult.error("水平合并需要至少2张图片"); } break; case "verticalMerge": if (imgs.length >= 2) { destImg = OperateImageUtils.mergeImage(false, imgs); outputFileName = UUIDUtils.generatorUUID() + "verticalMerge.jpg"; } else { return AjaxResult.error("垂直合并需要至少2张图片"); } break; case "video": int width = imgs[0].getWidth(); int height = imgs[0].getHeight(); mp4SavePath = UUIDUtils.generatorUUID() + "output.mp4"; OperateImageUtils.createMp4(profile, mp4SavePath, imgMap, width, height); break; default: return AjaxResult.error("不支持的生成类型: " + imageType); } } catch (IOException e) { e.printStackTrace(); } if (destImg != null) { OperateImageUtils.saveImage(destImg, profile , outputFileName, "jpg"); return AjaxResult.success("图片生成成功", outputFileName); } if (StringUtils.isNotEmpty(mp4SavePath)) { return AjaxResult.success("视频生成成功", mp4SavePath); } return AjaxResult.error("图片/视频生成失败"); } // /** * 通用上传请求(单个) */ @PostMapping("/upload") public AjaxResult uploadFile(MultipartFile file, String fileId, Long cataId, String imageTitle, Date photoTime, Date uploadTime, String isOpen, String keyWords, String remarks, Long tagId, ArrayList ctTags, Long feedbackId ) throws Exception { try { Long newId = System.currentTimeMillis() + new Random().nextInt(1000); CtGalleryImages ctGalleryImages = new CtGalleryImages(); ctGalleryImages.setCataId(cataId); ctGalleryImages.setImageTitle(imageTitle); ctGalleryImages.setPhotoTime(photoTime); ctGalleryImages.setUploadTime(uploadTime); ctGalleryImages.setIsOpen(isOpen); ctGalleryImages.setKeyWords(keyWords); ctGalleryImages.setRemarks(remarks); ctGalleryImages.setFileId(newId); // 上传文件路径 String filePath = BsConfig.getUploadPath(); // 上传并返回新文件名称 String fileName = FileUploadUtils.upload(filePath, file); String realName = fileName.replace("profile", ""); String exifInfo = ExifUtils.getExifInfo(getProfile() + realName).toString(); ctGalleryImages.setExifInfo(exifInfo); String url = serverConfig.getUrl() + fileName; String newFileName = FileUtils.getName(fileName); String originalFilename = file.getOriginalFilename(); CmAttach cmAttach = new CmAttach(); cmAttach.setFileId(String.valueOf(newId)); cmAttach.setFileSort(1L); cmAttach.setAttachName(newFileName); cmAttach.setAttachContentType(file.getContentType()); cmAttach.setAttachFileSize(file.getSize()); cmAttach.setAttachFileUrl(fileName); cmAttach.setOldName(originalFilename); cmAttach.setVersionNo("1"); cmAttach.setRemark(""); boolean save = cmAttachService.save(cmAttach); if (save) { Long id = cmAttach.getId(); AjaxResult ajax = AjaxResult.success(); ajax.put("cmAttach", cmAttach); CtTaskTag taskTag = null; if (null != tagId) { taskTag = ctTaskTagService.getById(tagId); ctGalleryImages.setCataId(taskTag.getSaveDir()); } ctGalleryImages.setImageName(originalFilename); ctGalleryImages.setImagePath(fileName); ctGalleryImages.setImageSize(BigDecimal.valueOf(file.getSize())); ctGalleryImages.setFileId(newId); boolean saveImage = ctGalleryImagesService.save(ctGalleryImages); if (saveImage) { ajax.put("imageId",ctGalleryImages.getId()); if (null != taskTag) { CtGalleryImagesTag ctGalleryImagesTag = new CtGalleryImagesTag(); ctGalleryImagesTag.setImageId(ctGalleryImages.getId()); ctGalleryImagesTag.setTagType(taskTag.getTagType()); ctGalleryImagesTag.setTagName(taskTag.getTagName()); ctGalleryImagesTagService.save(ctGalleryImagesTag); } if (null != ctTags) { for (Long ctTagId : ctTags) { CtTag ctTag = ctTagService.getById(ctTagId); CtGalleryImagesTag ctGalleryImagesTag = new CtGalleryImagesTag(); ctGalleryImagesTag.setImageId(ctGalleryImages.getId()); ctGalleryImagesTag.setTagType(ctTag.getTagType()); ctGalleryImagesTag.setTagName(ctTag.getTagName()); ctGalleryImagesTag.setIsPhoto(ctTag.getIsPhoto()); ctGalleryImagesTag.setTagDesc(ctTag.getTagDesc()); ctGalleryImagesTag.setPhotoNum(ctTag.getPhotoNum()); ctGalleryImagesTag.setSaveDir(ctTag.getSaveDir()); ctGalleryImagesTag.setFileId(ctTag.getFileId()); ctGalleryImagesTagService.save(ctGalleryImagesTag); } } } return ajax; } return null; } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } /** * 修改图库图片 */ @ApiOperation("添加图片标签") @Log(title = "添加图片标签", businessType = BusinessType.UPDATE) @PostMapping("/saveByTag") public AjaxResult saveByTag(@RequestBody CtGalleryImages ctGalleryImages) { ctGalleryImages.getTaskTagId(); CtTaskTag ctTaskTag = ctTaskTagService.getById(ctGalleryImages.getTaskTagId()); List ids = ctGalleryImages.getIds(); for (Long id : ids) { CtGalleryImagesTag ctGalleryImagesTag = new CtGalleryImagesTag(); ctGalleryImagesTag.setImageId(id); ctGalleryImagesTag.setTagType(ctTaskTag.getTagType()); ctGalleryImagesTag.setTagName(ctTaskTag.getTagName()); List ctGalleryImagesTags = ctGalleryImagesTagService.list(new LambdaQueryWrapper() .eq(CtGalleryImagesTag::getImageId, id) .eq(CtGalleryImagesTag::getTagType, ctTaskTag.getTagType()) .eq(CtGalleryImagesTag::getTagName, ctTaskTag.getTagName())); if (null == ctGalleryImagesTags || ctGalleryImagesTags.size() == 0) { ctGalleryImagesTagService.save(ctGalleryImagesTag); } } return toAjax(true); } /** * 修改图库图片 */ @ApiOperation("生成任务") @Log(title = "生成任务", businessType = BusinessType.UPDATE) @PostMapping("/generateTasks") public AjaxResult generateTasks(@RequestBody CtGalleryImages ctGalleryImages) { List imagesIds = ctGalleryImages.getIds(); List list = ctGalleryImagesTagService.list(new LambdaQueryWrapper() .in(CtGalleryImagesTag::getImageId, imagesIds)); CtTaskInfo ctTaskInfo = new CtTaskInfo(); Long newId = System.currentTimeMillis() + new Random().nextInt(1000); ctTaskInfo.setId(newId); //设置发起单位与部门 LoginUser loginUser = getLoginUser(); Long deptId = loginUser.getDeptId(); if (null != deptId) { ctTaskInfo.setDeptId(deptId); SysDept sysDept = deptService.selectDeptById(deptId); Long parentId = sysDept.getParentId(); SysDept parentDept = deptService.selectDeptById(parentId); if (null != parentDept) { ctTaskInfo.setBranchCode(String.valueOf(parentDept.getDeptId())); 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())) { ctTaskInfo.setTaskDate(new Date()); } boolean save = ctTaskInfoService.save(ctTaskInfo); if (save) { List tasgs = ctTaskInfo.getTags(); if (null != tasgs && tasgs.size() > 0) { if (null != list && list.size() > 0) { for (CtGalleryImagesTag image : list) { CtTaskTag taskTag = new CtTaskTag(); taskTag.setTaskId(ctTaskInfo.getId()); taskTag.setTagName(image.getTagName()); taskTag.setTagType(image.getTagType()); taskTag.setIsPhoto(image.getIsPhoto()); taskTag.setTagDesc(image.getTagDesc()); taskTag.setPhotoNum(image.getPhotoNum()); taskTag.setSaveDir(image.getSaveDir()); taskTag.setFileId(image.getFileId()); ctTaskTagService.save(taskTag); } } } } return success(ctTaskInfo); } /** * 导出图库图片列表 */ @ApiOperation("导出图库图片列表") @Log(title = "图库图片导出", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, CtGalleryImages ctGalleryImages) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); condition(queryWrapper,ctGalleryImages); List list = ctGalleryImagesService.list(queryWrapper); ExcelUtil util = new ExcelUtil(CtGalleryImages. class); util.exportExcel(response, list, "图库图片数据"); } /** * 获取图库图片详细信息 */ @ApiOperation("获取图库图片详细信息") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return success(ctGalleryImagesService.getById(id)); } /** * 新增图库图片 */ @ApiOperation("新增图库图片") @Log(title = "图库图片新增", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody CtGalleryImages ctGalleryImages) { return toAjax(ctGalleryImagesService.save(ctGalleryImages)); } /** * 修改图库图片 */ @ApiOperation("修改图库图片") @Log(title = "图库图片修改", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody CtGalleryImages ctGalleryImages) { return toAjax(ctGalleryImagesService.updateById(ctGalleryImages)); } /** * 删除图库图片 */ @ApiOperation("删除图库图片") @Log(title = "图库图片删除", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable List ids) { return toAjax(ctGalleryImagesService.removeBatchByIds(ids)); } /** * 条件设置 */ private void condition (LambdaQueryWrapper queryWrapper,CtGalleryImages ctGalleryImages){ //id if(Validator.isNotEmpty(ctGalleryImages.getId())){ queryWrapper.eq(CtGalleryImages::getId,ctGalleryImages.getId()); } //目录id if(Validator.isNotEmpty(ctGalleryImages.getCataId())){ queryWrapper.eq(CtGalleryImages::getCataId,ctGalleryImages.getCataId()); } //图片名称 if(Validator.isNotEmpty(ctGalleryImages.getImageName())){ queryWrapper.eq(CtGalleryImages::getImageName,ctGalleryImages.getImageName()); } //图片标题 if(Validator.isNotEmpty(ctGalleryImages.getImageTitle())){ queryWrapper.eq(CtGalleryImages::getImageTitle,ctGalleryImages.getImageTitle()); } //图片路径 if(Validator.isNotEmpty(ctGalleryImages.getImagePath())){ queryWrapper.eq(CtGalleryImages::getImagePath,ctGalleryImages.getImagePath()); } //图片大小 if(Validator.isNotEmpty(ctGalleryImages.getImageSize())){ queryWrapper.eq(CtGalleryImages::getImageSize,ctGalleryImages.getImageSize()); } //图片拍摄时间 if(Validator.isNotEmpty(ctGalleryImages.getPhotoTime())){ queryWrapper.eq(CtGalleryImages::getPhotoTime,ctGalleryImages.getPhotoTime()); } //图片上传时间 if(Validator.isNotEmpty(ctGalleryImages.getUploadTime())){ queryWrapper.eq(CtGalleryImages::getUploadTime,ctGalleryImages.getUploadTime()); } //是否公开 if(Validator.isNotEmpty(ctGalleryImages.getIsOpen())){ queryWrapper.eq(CtGalleryImages::getIsOpen,ctGalleryImages.getIsOpen()); } //图片关键字 if(Validator.isNotEmpty(ctGalleryImages.getKeyWords())){ queryWrapper.eq(CtGalleryImages::getKeyWords,ctGalleryImages.getKeyWords()); } //附件id if(Validator.isNotEmpty(ctGalleryImages.getFileId())){ queryWrapper.eq(CtGalleryImages::getFileId,ctGalleryImages.getFileId()); } //备注 if(Validator.isNotEmpty(ctGalleryImages.getRemarks())){ queryWrapper.eq(CtGalleryImages::getRemarks,ctGalleryImages.getRemarks()); } //删除标志(0代表存在 2代表删除) if(Validator.isNotEmpty(ctGalleryImages.getDelFlag())){ queryWrapper.eq(CtGalleryImages::getDelFlag,ctGalleryImages.getDelFlag()); } //创建部门 if(Validator.isNotEmpty(ctGalleryImages.getCreateDept())){ queryWrapper.eq(CtGalleryImages::getCreateDept,ctGalleryImages.getCreateDept()); } //创建人 if(Validator.isNotEmpty(ctGalleryImages.getCreateBy())){ queryWrapper.eq(CtGalleryImages::getCreateBy,ctGalleryImages.getCreateBy()); } //创建时间 if(Validator.isNotEmpty(ctGalleryImages.getCreateTime())){ queryWrapper.eq(CtGalleryImages::getCreateTime,ctGalleryImages.getCreateTime()); } //修改人 if(Validator.isNotEmpty(ctGalleryImages.getUpdateBy())){ queryWrapper.eq(CtGalleryImages::getUpdateBy,ctGalleryImages.getUpdateBy()); } //修改时间 if(Validator.isNotEmpty(ctGalleryImages.getUpdateTime())){ queryWrapper.eq(CtGalleryImages::getUpdateTime,ctGalleryImages.getUpdateTime()); } //租户ID if(Validator.isNotEmpty(ctGalleryImages.getTenantId())){ queryWrapper.eq(CtGalleryImages::getTenantId,ctGalleryImages.getTenantId()); } } public static void main(String[] args) { try { System.out.println(ExifUtils.getExifInfo("d:\\1.jpg").toString()); /*File imageFile = new File("d:\\1.jpg"); Metadata metadata = ImageMetadataReader.readMetadata(imageFile); for (Directory directory : metadata.getDirectories()) { for (Tag tag : directory.getTags()) { System.out.println(tag.getTagName() + " = " + tag.getDescription()); } }*/ } catch (ImageProcessingException e) { // 处理异常 } catch (IOException e) { // 处理IO异常 } catch (Exception e) { throw new RuntimeException(e); } } }