【优化】质量通知添加对附件的支持
This commit is contained in:
parent
6a540f9254
commit
26bbb7275f
|
|
@ -13,16 +13,17 @@ import com.nflg.wms.common.pojo.qo.ZipDownloadQO;
|
||||||
import com.nflg.wms.common.pojo.vo.FileUploadVO;
|
import com.nflg.wms.common.pojo.vo.FileUploadVO;
|
||||||
import com.nflg.wms.common.pojo.vo.FileVO;
|
import com.nflg.wms.common.pojo.vo.FileVO;
|
||||||
import com.nflg.wms.common.util.UserUtil;
|
import com.nflg.wms.common.util.UserUtil;
|
||||||
|
import com.nflg.wms.repository.entity.FileUploadRecord;
|
||||||
import com.nflg.wms.starter.BaseController;
|
import com.nflg.wms.starter.BaseController;
|
||||||
import com.nflg.wms.starter.annotation.ApiMark;
|
import com.nflg.wms.starter.annotation.ApiMark;
|
||||||
import com.nflg.wms.starter.service.FileUploadService;
|
import com.nflg.wms.starter.service.FileUploadService;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.io.FilenameUtils;
|
import org.apache.commons.io.FilenameUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
@ -60,7 +61,17 @@ public class FileUpLoadController extends BaseController {
|
||||||
String fileName = file.getOriginalFilename();
|
String fileName = file.getOriginalFilename();
|
||||||
String fileType = getFileType(fileName);
|
String fileType = getFileType(fileName);
|
||||||
String url = fileUploadService.upload(buildFilePath(fileType), file);
|
String url = fileUploadService.upload(buildFilePath(fileType), file);
|
||||||
return ApiResult.success(new FileUploadVO(0L, fileName, url));
|
FileUploadRecord record = new FileUploadRecord()
|
||||||
|
.setFileName(fileName)
|
||||||
|
.setFileType(fileType)
|
||||||
|
.setUrl(url)
|
||||||
|
.setFrom("admin")
|
||||||
|
.setSource((short) 0)
|
||||||
|
.setSourceId(0L)
|
||||||
|
.setCreateBy(UserUtil.getUserName())
|
||||||
|
.setCreateTime(LocalDateTime.now());
|
||||||
|
fileControllerService.add(record);
|
||||||
|
return ApiResult.success(new FileUploadVO(record.getId(), fileName, url));
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
log.error("上传文件失败", ex);
|
log.error("上传文件失败", ex);
|
||||||
throw new NflgException(STATE.BusinessError, "上传文件失败:" + ex.getMessage());
|
throw new NflgException(STATE.BusinessError, "上传文件失败:" + ex.getMessage());
|
||||||
|
|
@ -104,7 +115,7 @@ public class FileUpLoadController extends BaseController {
|
||||||
*/
|
*/
|
||||||
@PostMapping("getFileTypes")
|
@PostMapping("getFileTypes")
|
||||||
@ApiMark(moduleName = "文件管理", apiName = "获取文件类型列表")
|
@ApiMark(moduleName = "文件管理", apiName = "获取文件类型列表")
|
||||||
public ApiResult<List<String>> getFileTypes(){
|
public ApiResult<List<String>> getFileTypes() {
|
||||||
return ApiResult.success(fileControllerService.getFileTypes());
|
return ApiResult.success(fileControllerService.getFileTypes());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,4 +105,8 @@ public class FileControllerService {
|
||||||
.contentType(MediaType.APPLICATION_OCTET_STREAM)
|
.contentType(MediaType.APPLICATION_OCTET_STREAM)
|
||||||
.body(zipContent);
|
.body(zipContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void add(FileUploadRecord record) {
|
||||||
|
fileUploadRecordService.save(record);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5,19 +5,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsQualityNotificationAddQO;
|
import com.nflg.wms.common.pojo.qo.QmsQualityNotificationAddQO;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsQualityNotificationSearchQO;
|
import com.nflg.wms.common.pojo.qo.QmsQualityNotificationSearchQO;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsQualityNotificationUpdateQO;
|
import com.nflg.wms.common.pojo.qo.QmsQualityNotificationUpdateQO;
|
||||||
import com.nflg.wms.common.pojo.vo.FileVO;
|
import com.nflg.wms.common.pojo.vo.FileUploadVO;
|
||||||
import com.nflg.wms.common.pojo.vo.QmsQualityNotificationUserVO;
|
import com.nflg.wms.common.pojo.vo.QmsQualityNotificationUserVO;
|
||||||
import com.nflg.wms.common.pojo.vo.QmsQualityNotificationVO;
|
import com.nflg.wms.common.pojo.vo.QmsQualityNotificationVO;
|
||||||
import com.nflg.wms.common.util.UserUtil;
|
import com.nflg.wms.common.util.UserUtil;
|
||||||
import com.nflg.wms.common.util.VUtil;
|
import com.nflg.wms.common.util.VUtil;
|
||||||
import com.nflg.wms.repository.entity.FileUploadRecord;
|
import com.nflg.wms.repository.entity.*;
|
||||||
import com.nflg.wms.repository.entity.QmsQualityNotification;
|
import com.nflg.wms.repository.service.*;
|
||||||
import com.nflg.wms.repository.entity.QmsQualityNotificationUser;
|
|
||||||
import com.nflg.wms.repository.entity.User;
|
|
||||||
import com.nflg.wms.repository.service.IFileUploadRecordService;
|
|
||||||
import com.nflg.wms.repository.service.IQmsQualityNotificationService;
|
|
||||||
import com.nflg.wms.repository.service.IQmsQualityNotificationUserService;
|
|
||||||
import com.nflg.wms.repository.service.IUserService;
|
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
@ -49,6 +43,9 @@ public class QualityNotificationControllerService {
|
||||||
@Resource
|
@Resource
|
||||||
private IFileUploadRecordService fileUploadRecordService;
|
private IFileUploadRecordService fileUploadRecordService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IQmsQualityNotificationFileService qualityNotificationFileService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增质量通知
|
* 新增质量通知
|
||||||
*/
|
*/
|
||||||
|
|
@ -79,6 +76,16 @@ public class QualityNotificationControllerService {
|
||||||
|
|
||||||
qualityNotificationService.save(entity);
|
qualityNotificationService.save(entity);
|
||||||
|
|
||||||
|
if (CollectionUtil.isNotEmpty(request.getAttachments())) {
|
||||||
|
List<QmsQualityNotificationFile> attachments = request.getAttachments().stream()
|
||||||
|
.map(attachment -> new QmsQualityNotificationFile()
|
||||||
|
.setNotificationId(entity.getId())
|
||||||
|
.setFileId(attachment.getId())
|
||||||
|
)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
qualityNotificationFileService.saveBatch(attachments);
|
||||||
|
}
|
||||||
|
|
||||||
// 如果是手动选择用户,保存用户关联
|
// 如果是手动选择用户,保存用户关联
|
||||||
if (request.getTargetType() == 2 && CollectionUtil.isNotEmpty(request.getUserIds())) {
|
if (request.getTargetType() == 2 && CollectionUtil.isNotEmpty(request.getUserIds())) {
|
||||||
saveNotificationUsers(entity.getId(), request.getUserIds(), operator, operatorId, now);
|
saveNotificationUsers(entity.getId(), request.getUserIds(), operator, operatorId, now);
|
||||||
|
|
@ -123,6 +130,19 @@ public class QualityNotificationControllerService {
|
||||||
if (request.getTargetType() == 2 && CollectionUtil.isNotEmpty(request.getUserIds())) {
|
if (request.getTargetType() == 2 && CollectionUtil.isNotEmpty(request.getUserIds())) {
|
||||||
saveNotificationUsers(request.getId(), request.getUserIds(), operator, operatorId, now);
|
saveNotificationUsers(request.getId(), request.getUserIds(), operator, operatorId, now);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (CollectionUtil.isNotEmpty(request.getAttachments())) {
|
||||||
|
qualityNotificationFileService.lambdaUpdate()
|
||||||
|
.eq(QmsQualityNotificationFile::getNotificationId, request.getId())
|
||||||
|
.remove();
|
||||||
|
List<QmsQualityNotificationFile> attachments = request.getAttachments().stream()
|
||||||
|
.map(attachment -> new QmsQualityNotificationFile()
|
||||||
|
.setNotificationId(request.getId())
|
||||||
|
.setFileId(attachment.getId())
|
||||||
|
)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
qualityNotificationFileService.saveBatch(attachments);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -140,6 +160,10 @@ public class QualityNotificationControllerService {
|
||||||
notificationUserService.lambdaUpdate()
|
notificationUserService.lambdaUpdate()
|
||||||
.eq(QmsQualityNotificationUser::getNotificationId, id)
|
.eq(QmsQualityNotificationUser::getNotificationId, id)
|
||||||
.remove();
|
.remove();
|
||||||
|
|
||||||
|
qualityNotificationFileService.lambdaUpdate()
|
||||||
|
.eq(QmsQualityNotificationFile::getNotificationId, id)
|
||||||
|
.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -208,21 +232,21 @@ public class QualityNotificationControllerService {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询附件列表
|
// 查询附件列表
|
||||||
List<FileUploadRecord> files = fileUploadRecordService.lambdaQuery()
|
List<QmsQualityNotificationFile> attachments = qualityNotificationFileService.lambdaQuery()
|
||||||
.eq(FileUploadRecord::getSourceId, id)
|
.eq(QmsQualityNotificationFile::getNotificationId, id)
|
||||||
.list();
|
.list();
|
||||||
if (CollectionUtil.isNotEmpty(files)) {
|
if (CollectionUtil.isNotEmpty(attachments)) {
|
||||||
List<FileVO> fileVOs = files.stream().map(f -> {
|
List<FileUploadRecord> files = fileUploadRecordService.lambdaQuery()
|
||||||
FileVO fileVO = new FileVO();
|
.in(FileUploadRecord::getId, attachments.stream().map(QmsQualityNotificationFile::getFileId).collect(Collectors.toList()))
|
||||||
fileVO.setId(f.getId());
|
.list();
|
||||||
fileVO.setFileName(f.getFileName());
|
vo.setAttachments(files.stream()
|
||||||
fileVO.setFileType(f.getFileType());
|
.map(file -> new FileUploadVO()
|
||||||
fileVO.setUrl(f.getUrl());
|
.setId(file.getId())
|
||||||
fileVO.setCreateBy(f.getCreateBy());
|
.setFileName(file.getFileName())
|
||||||
fileVO.setCreateTime(f.getCreateTime());
|
.setUrl(file.getUrl())
|
||||||
return fileVO;
|
)
|
||||||
}).collect(Collectors.toList());
|
.collect(Collectors.toList())
|
||||||
vo.setAttachments(fileVOs);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return vo;
|
return vo;
|
||||||
|
|
@ -232,7 +256,7 @@ public class QualityNotificationControllerService {
|
||||||
* 保存通知用户关联
|
* 保存通知用户关联
|
||||||
*/
|
*/
|
||||||
private void saveNotificationUsers(Long notificationId, List<Long> userIds,
|
private void saveNotificationUsers(Long notificationId, List<Long> userIds,
|
||||||
String operator, Long operatorId, LocalDateTime now) {
|
String operator, Long operatorId, LocalDateTime now) {
|
||||||
List<QmsQualityNotificationUser> users = userIds.stream()
|
List<QmsQualityNotificationUser> users = userIds.stream()
|
||||||
.map(userId -> new QmsQualityNotificationUser()
|
.map(userId -> new QmsQualityNotificationUser()
|
||||||
.setNotificationId(notificationId)
|
.setNotificationId(notificationId)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.nflg.wms.common.pojo.qo;
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
|
import com.nflg.wms.common.pojo.vo.FileUploadVO;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -39,4 +41,10 @@ public class QmsQualityNotificationAddQO {
|
||||||
* 通知内容(HTML格式)
|
* 通知内容(HTML格式)
|
||||||
*/
|
*/
|
||||||
private String content;
|
private String content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件列表
|
||||||
|
*/
|
||||||
|
@Valid
|
||||||
|
private List<FileUploadVO> attachments;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.nflg.wms.common.pojo.qo;
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
|
import com.nflg.wms.common.pojo.vo.FileUploadVO;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -45,4 +47,10 @@ public class QmsQualityNotificationUpdateQO {
|
||||||
* 通知内容(HTML格式)
|
* 通知内容(HTML格式)
|
||||||
*/
|
*/
|
||||||
private String content;
|
private String content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件列表
|
||||||
|
*/
|
||||||
|
@Valid
|
||||||
|
private List<FileUploadVO> attachments;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.nflg.wms.common.pojo.vo;
|
package com.nflg.wms.common.pojo.vo;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Positive;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
@ -14,6 +16,8 @@ public class FileUploadVO {
|
||||||
/**
|
/**
|
||||||
* 文件id
|
* 文件id
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
|
@Positive
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -91,5 +91,5 @@ public class QmsQualityNotificationVO {
|
||||||
/**
|
/**
|
||||||
* 附件列表
|
* 附件列表
|
||||||
*/
|
*/
|
||||||
private List<FileVO> attachments;
|
private List<FileUploadVO> attachments;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
package com.nflg.wms.repository.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.ToString;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 质量通知附件表
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@ToString
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("qms_quality_notification_file")
|
||||||
|
public class QmsQualityNotificationFile implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通知ID
|
||||||
|
*/
|
||||||
|
private Long notificationId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件ID
|
||||||
|
*/
|
||||||
|
private Long fileId;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.nflg.wms.repository.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.nflg.wms.repository.entity.QmsQualityNotificationFile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 质量通知附件 Mapper 接口
|
||||||
|
*/
|
||||||
|
public interface QmsQualityNotificationFileMapper extends BaseMapper<QmsQualityNotificationFile> {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.nflg.wms.repository.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.nflg.wms.repository.entity.QmsQualityNotificationFile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 质量通知附件 服务类
|
||||||
|
*/
|
||||||
|
public interface IQmsQualityNotificationFileService extends IService<QmsQualityNotificationFile> {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.nflg.wms.repository.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.nflg.wms.repository.entity.QmsQualityNotificationFile;
|
||||||
|
import com.nflg.wms.repository.mapper.QmsQualityNotificationFileMapper;
|
||||||
|
import com.nflg.wms.repository.service.IQmsQualityNotificationFileService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 质量通知附件 服务实现类
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class QmsQualityNotificationFileServiceImpl extends ServiceImpl<QmsQualityNotificationFileMapper, QmsQualityNotificationFile> implements IQmsQualityNotificationFileService {
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue