diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/FileUpLoadController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/FileUpLoadController.java index 1e65441b..5de853f5 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/FileUpLoadController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/FileUpLoadController.java @@ -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.FileVO; 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.annotation.ApiMark; import com.nflg.wms.starter.service.FileUploadService; import jakarta.annotation.Resource; -import org.springframework.beans.factory.annotation.Qualifier; import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FilenameUtils; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -60,7 +61,17 @@ public class FileUpLoadController extends BaseController { String fileName = file.getOriginalFilename(); String fileType = getFileType(fileName); 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) { log.error("上传文件失败", ex); throw new NflgException(STATE.BusinessError, "上传文件失败:" + ex.getMessage()); @@ -104,7 +115,7 @@ public class FileUpLoadController extends BaseController { */ @PostMapping("getFileTypes") @ApiMark(moduleName = "文件管理", apiName = "获取文件类型列表") - public ApiResult> getFileTypes(){ + public ApiResult> getFileTypes() { return ApiResult.success(fileControllerService.getFileTypes()); } diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/FileControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/FileControllerService.java index 641babf3..172052ff 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/FileControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/FileControllerService.java @@ -105,4 +105,8 @@ public class FileControllerService { .contentType(MediaType.APPLICATION_OCTET_STREAM) .body(zipContent); } + + public void add(FileUploadRecord record) { + fileUploadRecordService.save(record); + } } \ No newline at end of file diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QualityNotificationControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QualityNotificationControllerService.java index 0805103e..084cf078 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QualityNotificationControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QualityNotificationControllerService.java @@ -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.QmsQualityNotificationSearchQO; 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.QmsQualityNotificationVO; import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.VUtil; -import com.nflg.wms.repository.entity.FileUploadRecord; -import com.nflg.wms.repository.entity.QmsQualityNotification; -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 com.nflg.wms.repository.entity.*; +import com.nflg.wms.repository.service.*; import jakarta.annotation.Resource; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; @@ -49,6 +43,9 @@ public class QualityNotificationControllerService { @Resource private IFileUploadRecordService fileUploadRecordService; + @Resource + private IQmsQualityNotificationFileService qualityNotificationFileService; + /** * 新增质量通知 */ @@ -79,6 +76,16 @@ public class QualityNotificationControllerService { qualityNotificationService.save(entity); + if (CollectionUtil.isNotEmpty(request.getAttachments())) { + List 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())) { saveNotificationUsers(entity.getId(), request.getUserIds(), operator, operatorId, now); @@ -123,6 +130,19 @@ public class QualityNotificationControllerService { if (request.getTargetType() == 2 && CollectionUtil.isNotEmpty(request.getUserIds())) { saveNotificationUsers(request.getId(), request.getUserIds(), operator, operatorId, now); } + + if (CollectionUtil.isNotEmpty(request.getAttachments())) { + qualityNotificationFileService.lambdaUpdate() + .eq(QmsQualityNotificationFile::getNotificationId, request.getId()) + .remove(); + List 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() .eq(QmsQualityNotificationUser::getNotificationId, id) .remove(); + + qualityNotificationFileService.lambdaUpdate() + .eq(QmsQualityNotificationFile::getNotificationId, id) + .remove(); } /** @@ -208,21 +232,21 @@ public class QualityNotificationControllerService { } // 查询附件列表 - List files = fileUploadRecordService.lambdaQuery() - .eq(FileUploadRecord::getSourceId, id) + List attachments = qualityNotificationFileService.lambdaQuery() + .eq(QmsQualityNotificationFile::getNotificationId, id) .list(); - if (CollectionUtil.isNotEmpty(files)) { - List fileVOs = files.stream().map(f -> { - FileVO fileVO = new FileVO(); - fileVO.setId(f.getId()); - fileVO.setFileName(f.getFileName()); - fileVO.setFileType(f.getFileType()); - fileVO.setUrl(f.getUrl()); - fileVO.setCreateBy(f.getCreateBy()); - fileVO.setCreateTime(f.getCreateTime()); - return fileVO; - }).collect(Collectors.toList()); - vo.setAttachments(fileVOs); + if (CollectionUtil.isNotEmpty(attachments)) { + List files = fileUploadRecordService.lambdaQuery() + .in(FileUploadRecord::getId, attachments.stream().map(QmsQualityNotificationFile::getFileId).collect(Collectors.toList())) + .list(); + vo.setAttachments(files.stream() + .map(file -> new FileUploadVO() + .setId(file.getId()) + .setFileName(file.getFileName()) + .setUrl(file.getUrl()) + ) + .collect(Collectors.toList()) + ); } return vo; @@ -232,7 +256,7 @@ public class QualityNotificationControllerService { * 保存通知用户关联 */ private void saveNotificationUsers(Long notificationId, List userIds, - String operator, Long operatorId, LocalDateTime now) { + String operator, Long operatorId, LocalDateTime now) { List users = userIds.stream() .map(userId -> new QmsQualityNotificationUser() .setNotificationId(notificationId) diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsQualityNotificationAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsQualityNotificationAddQO.java index 7f7dc9c7..7ceec9ce 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsQualityNotificationAddQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsQualityNotificationAddQO.java @@ -1,5 +1,7 @@ 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.NotNull; import lombok.Data; @@ -39,4 +41,10 @@ public class QmsQualityNotificationAddQO { * 通知内容(HTML格式) */ private String content; + + /** + * 附件列表 + */ + @Valid + private List attachments; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsQualityNotificationUpdateQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsQualityNotificationUpdateQO.java index 94329194..dda63eb9 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsQualityNotificationUpdateQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsQualityNotificationUpdateQO.java @@ -1,5 +1,7 @@ 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.NotNull; import lombok.Data; @@ -45,4 +47,10 @@ public class QmsQualityNotificationUpdateQO { * 通知内容(HTML格式) */ private String content; + + /** + * 附件列表 + */ + @Valid + private List attachments; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/FileUploadVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/FileUploadVO.java index d1f51fb0..43361c98 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/FileUploadVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/FileUploadVO.java @@ -1,5 +1,7 @@ package com.nflg.wms.common.pojo.vo; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Positive; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -14,6 +16,8 @@ public class FileUploadVO { /** * 文件id */ + @NotNull + @Positive private Long id; /** diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsQualityNotificationVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsQualityNotificationVO.java index 4a994c5e..3d434443 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsQualityNotificationVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsQualityNotificationVO.java @@ -91,5 +91,5 @@ public class QmsQualityNotificationVO { /** * 附件列表 */ - private List attachments; + private List attachments; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsQualityNotificationFile.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsQualityNotificationFile.java new file mode 100644 index 00000000..fbebf669 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsQualityNotificationFile.java @@ -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; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsQualityNotificationFileMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsQualityNotificationFileMapper.java new file mode 100644 index 00000000..319ed089 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsQualityNotificationFileMapper.java @@ -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 { + +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsQualityNotificationFileService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsQualityNotificationFileService.java new file mode 100644 index 00000000..2e2f12fc --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsQualityNotificationFileService.java @@ -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 { + +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsQualityNotificationFileServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsQualityNotificationFileServiceImpl.java new file mode 100644 index 00000000..1360de16 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsQualityNotificationFileServiceImpl.java @@ -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 implements IQmsQualityNotificationFileService { + +}