|
|
@@ -3,27 +3,28 @@ package com.zksy.base.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.zksy.base.domain.FileManage;
|
|
|
import com.zksy.base.domain.QualificationCertificate;
|
|
|
import com.zksy.base.mapper.QualificationCertificateMapper;
|
|
|
import com.zksy.base.service.FileManageService;
|
|
|
import com.zksy.base.service.QualificationCertificateService;
|
|
|
+import com.zksy.common.core.domain.AjaxResult;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.List;
|
|
|
-import java.util.UUID;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
-* @author Administrator
|
|
|
-* @description 针对表【qualification_certificate(荣誉资质)】的数据库操作Service实现
|
|
|
-* @createDate 2025-09-08 08:57:08
|
|
|
-*/
|
|
|
+ * @author Administrator
|
|
|
+ * @description 针对表【qualification_certificate(荣誉资质)】的数据库操作Service实现
|
|
|
+ * @createDate 2025-09-08 08:57:08
|
|
|
+ */
|
|
|
@Service
|
|
|
public class QualificationCertificateServiceImpl extends ServiceImpl<QualificationCertificateMapper, QualificationCertificate>
|
|
|
- implements QualificationCertificateService{
|
|
|
+ implements QualificationCertificateService {
|
|
|
@Autowired
|
|
|
private FileManageService fileManageService;
|
|
|
|
|
|
@@ -32,12 +33,10 @@ public class QualificationCertificateServiceImpl extends ServiceImpl<Qualificati
|
|
|
Page<QualificationCertificate> page = new Page<>(pageNum, pageSize);
|
|
|
LambdaQueryWrapper<QualificationCertificate> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.orderByDesc(QualificationCertificate::getUpdateTime);
|
|
|
- Page<QualificationCertificate> pageList = page(page,queryWrapper);
|
|
|
- if(pageList.getRecords() != null){
|
|
|
- pageList.getRecords().forEach(item -> {
|
|
|
- item.setFileList(fileManageService.listFileByFid(item.getId()));
|
|
|
- });
|
|
|
- }
|
|
|
+
|
|
|
+ Page<QualificationCertificate> pageList = page(page, queryWrapper);
|
|
|
+
|
|
|
+ fillFileList(pageList.getRecords());
|
|
|
return pageList;
|
|
|
}
|
|
|
|
|
|
@@ -45,30 +44,65 @@ public class QualificationCertificateServiceImpl extends ServiceImpl<Qualificati
|
|
|
public List<QualificationCertificate> listQualificationCertificate() {
|
|
|
LambdaQueryWrapper<QualificationCertificate> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.orderByDesc(QualificationCertificate::getUpdateTime);
|
|
|
+
|
|
|
List<QualificationCertificate> list = list(queryWrapper);
|
|
|
- list.forEach(item -> {
|
|
|
- item.setFileList(fileManageService.listFileByFid(item.getId()));
|
|
|
- });
|
|
|
+ fillFileList(list);
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public QualificationCertificate getQualificationCertificateById(String id) {
|
|
|
QualificationCertificate qualificationCertificate = getById(id);
|
|
|
- if(qualificationCertificate != null){
|
|
|
- qualificationCertificate.setFileList(fileManageService.listFileByFid(qualificationCertificate.getId()));
|
|
|
- return qualificationCertificate;
|
|
|
+ if (qualificationCertificate != null) {
|
|
|
+ fillFileList(Collections.singletonList(qualificationCertificate));
|
|
|
}
|
|
|
return qualificationCertificate;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 给证书列表填充文件信息
|
|
|
+ *
|
|
|
+ * @param certificates 证书集合
|
|
|
+ */
|
|
|
+ private void fillFileList(List<QualificationCertificate> certificates) {
|
|
|
+ if (certificates == null || certificates.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 批量查文件,避免 N+1
|
|
|
+ List<String> ids = certificates.stream()
|
|
|
+ .map(QualificationCertificate::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<FileManage> allFileRecords = fileManageService.listFilesByFids(ids);
|
|
|
+
|
|
|
+ // 按 fid 分组
|
|
|
+ Map<String, List<FileManage>> fileMap = allFileRecords.stream()
|
|
|
+ .collect(Collectors.groupingBy(FileManage::getFid));
|
|
|
+
|
|
|
+ // 给每个记录赋值
|
|
|
+ for (QualificationCertificate item : certificates) {
|
|
|
+ List<FileManage> files = fileMap.get(item.getId());
|
|
|
+ if (files != null && !files.isEmpty()) {
|
|
|
+ List<Map<String, String>> fileList;
|
|
|
+ fileList = files.stream()
|
|
|
+ .map(file -> Map.of(
|
|
|
+ "id", file.getId(),
|
|
|
+ "url", file.getFileUrl()
|
|
|
+ ))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ item.setFileList(fileList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
public QualificationCertificate saveQualificationCertificate(QualificationCertificate entity) {
|
|
|
entity.setId(UUID.randomUUID().toString());
|
|
|
entity.setCreateTime(LocalDateTime.now());
|
|
|
save(entity);
|
|
|
- if(entity.getMultipartFile() != null) {
|
|
|
+ if (entity.getMultipartFile() != null) {
|
|
|
fileManageService.uploadListFile(Arrays.asList(entity.getMultipartFile()), entity.getId(), "荣誉资质");
|
|
|
}
|
|
|
return entity;
|
|
|
@@ -77,9 +111,22 @@ public class QualificationCertificateServiceImpl extends ServiceImpl<Qualificati
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public QualificationCertificate updateQualificationCertificate(QualificationCertificate entity) {
|
|
|
+ //查询文件列表
|
|
|
+ List<FileManage> list = fileManageService.listFileByFid(entity.getId());
|
|
|
+ List<String> ids = list.stream().map(FileManage::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ if(ids.size() != entity.getFileList().size()){
|
|
|
+ List<String> mapIds = entity.getFileList().stream().map(map -> map.get("id")).collect(Collectors.toList());
|
|
|
+ //找到他们不等于的进行文件删除
|
|
|
+ List<String> removeIds = ids.stream().filter(id -> !mapIds.contains(id)).collect(Collectors.toList());
|
|
|
+ AjaxResult ajaxResult = fileManageService.deleteFileByFids(removeIds);
|
|
|
+ if(!ajaxResult.isSuccess()){
|
|
|
+ throw new RuntimeException("文件删除失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
entity.setUpdateTime(LocalDateTime.now());
|
|
|
updateById(entity);
|
|
|
- if(entity.getMultipartFile() != null) {
|
|
|
+ if (entity.getMultipartFile() != null) {
|
|
|
fileManageService.uploadListFile(Arrays.asList(entity.getMultipartFile()), entity.getId(), "荣誉资质");
|
|
|
}
|
|
|
return entity;
|