| src/main/java/com/ruoyi/basic/controller/StorageAttachmentController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/basic/enums/ApplicationTypeEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/basic/service/StorageAttachmentService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/basic/utils/FileUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/basic/controller/StorageAttachmentController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,58 @@ package com.ruoyi.basic.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.StorageAttachmentDTO; import com.ruoyi.basic.dto.StorageBlobDTO; import com.ruoyi.basic.dto.SupplierManageDto; import com.ruoyi.basic.enums.ApplicationTypeEnum; import com.ruoyi.basic.enums.RecordTypeEnum; import com.ruoyi.basic.pojo.StorageAttachment; import com.ruoyi.basic.service.StorageAttachmentService; import com.ruoyi.common.constant.StorageAttachmentConstants; import com.ruoyi.common.enums.StorageAttachmentRecordType; import com.ruoyi.framework.web.domain.R; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @AllArgsConstructor @RequestMapping("/basic/storage_attachment") public class StorageAttachmentController { private StorageAttachmentService storageAttachmentService; /** * å页æ¥è¯¢éç¨æä»¶ä¸ä¼ çéä»¶ä¿¡æ¯ * @param page å页忰 * @param storageAttachmentDTO å ³èè®°å½ä¿¡æ¯ * @return åé¡µç»æ */ @GetMapping("/listPage") public R listPage(Page page, StorageAttachmentDTO storageAttachmentDTO) { return R.ok(storageAttachmentService.listPage(page, storageAttachmentDTO)); } /** * å é¤éç¨æä»¶ä¸ä¼ çéä»¶ä¿¡æ¯ * @param ids æä»¶idå表 * @return å é¤ç»æ */ @DeleteMapping("/delete") public R batchDelete(@RequestBody List<Long> ids) { return R.ok(storageAttachmentService.batchDeleteStorageAttachment(ids)); } /** * ä¿åéç¨æä»¶ä¸ä¼ çéä»¶ä¿¡æ¯ * @param storageBlobs æä»¶ä¿¡æ¯å表 * @param recordId 管çè®°å½id * @param recordType å ³èè®°å½ç±»å * @param fileType æä»¶ç±»å */ @PostMapping("/add") public R add(@RequestBody List<StorageBlobDTO> storageBlobs, Long recordId, String recordType, String fileType) { storageAttachmentService.saveStorageAttachment(storageBlobs, recordId, recordType, fileType); return R.ok(); } } src/main/java/com/ruoyi/basic/enums/ApplicationTypeEnum.java
@@ -11,4 +11,19 @@ private final String type; ApplicationTypeEnum(String type) { this.type = type; } public String getType() { return type; } /** * æ ¹æ® type å¼è·å对åºçæä¸¾å®ä¾ * @param type åºç¨ç±»åå符串 * @return 对åºç ApplicationTypeEnum æä¸¾å®ä¾ * @throws RuntimeException 妿 type æ æ */ public static ApplicationTypeEnum getByType(String type) { for (ApplicationTypeEnum enumValue : ApplicationTypeEnum.values()) { if (enumValue.getType().equals(type)) { return enumValue; } } throw new RuntimeException("æ æçåºç¨ç±»å: " + type); } } src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java
@@ -6,9 +6,25 @@ PDA_VERSION("pda_version"), SALES_LEDGER("sales_ledger"), SUPPLIER_MANAGE("supplier_manage"), APPROVAL_PROCESS("approval_process"); APPROVAL_PROCESS("approval_process"), QR_CODE_SCAN_RECORDS("qr_code_scan_records"); private final String type; RecordTypeEnum(String type) { this.type = type; } public String getType() { return type; } /** * æ ¹æ® type å¼è·å对åºçæä¸¾å®ä¾ * @param type è®°å½ç±»åå符串 * @return 对åºç RecordTypeEnum æä¸¾å®ä¾ * @throws RuntimeException 妿 type æ æ */ public static RecordTypeEnum getByType(String type) { for (RecordTypeEnum enumValue : RecordTypeEnum.values()) { if (enumValue.getType().equals(type)) { return enumValue; } } throw new RuntimeException("æ æçè®°å½ç±»å: " + type); } } src/main/java/com/ruoyi/basic/service/StorageAttachmentService.java
@@ -1,6 +1,13 @@ package com.ruoyi.basic.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.basic.dto.StorageAttachmentDTO; import com.ruoyi.basic.dto.StorageAttachmentVO; import com.ruoyi.basic.dto.StorageBlobDTO; import com.ruoyi.basic.enums.ApplicationTypeEnum; import com.ruoyi.basic.enums.RecordTypeEnum; import com.ruoyi.basic.pojo.StorageAttachment; import com.ruoyi.common.constant.StorageAttachmentConstants; import com.ruoyi.common.enums.StorageAttachmentRecordType; @@ -19,15 +26,20 @@ /** * ä¿åéç¨æä»¶ä¸ä¼ çéä»¶ä¿¡æ¯ * @param attachments æä»¶ä¿¡æ¯å表 * @param storageBlobDTOS æä»¶ä¿¡æ¯å表 * @param recordId 管çè®°å½id * @param recordType å ³èè®°å½ç±»å * @param fileType æä»¶ç±»å */ public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, StorageAttachmentConstants fileType); public void saveStorageAttachment(List<StorageBlobDTO> storageBlobDTOS, Long recordId, String recordType, String fileType); public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, String fileType); /** * å页æ¥è¯¢éç¨æä»¶ä¸ä¼ çéä»¶ä¿¡æ¯ * @param page å页忰 * @param storageAttachmentDTO å ³èè®°å½ä¿¡æ¯ * @return åé¡µç»æ */ public IPage<StorageAttachmentVO> listPage(Page page, StorageAttachmentDTO storageAttachmentDTO); /** * å é¤éç¨æä»¶ä¸ä¼ çéä»¶ä¿¡æ¯ @@ -35,4 +47,11 @@ * @return å é¤ç»æ */ public int deleteStorageAttachment(StorageAttachment storageAttachment); /** * æ¹éå é¤éç¨æä»¶ä¸ä¼ çéä»¶ä¿¡æ¯ * @param ids æä»¶idå表 * @return å é¤ç»æ */ public int batchDeleteStorageAttachment(List<Long> ids); } src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java
@@ -1,15 +1,22 @@ package com.ruoyi.basic.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.dto.StorageAttachmentDTO; import com.ruoyi.basic.dto.StorageAttachmentVO; import com.ruoyi.basic.dto.StorageBlobDTO; import com.ruoyi.basic.enums.ApplicationTypeEnum; import com.ruoyi.basic.enums.RecordTypeEnum; import com.ruoyi.basic.mapper.StorageAttachmentMapper; import com.ruoyi.basic.mapper.StorageBlobMapper; import com.ruoyi.basic.pojo.StorageAttachment; import com.ruoyi.basic.service.StorageAttachmentService; import com.ruoyi.basic.service.StorageBlobService; import com.ruoyi.common.constant.StorageAttachmentConstants; import com.ruoyi.common.enums.StorageAttachmentRecordType; import com.ruoyi.basic.utils.FileUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -29,40 +36,17 @@ private final StorageAttachmentMapper storageAttachmentMapper; private final StorageBlobService storageBlobService; private final FileUtil fileUtil; @Override public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, StorageAttachmentConstants fileType) { // å 餿§å¾ // todo fileChange // deleteStorageAttachment(new StorageAttachment(fileType.toString(), (long) recordType.ordinal(), recordId)); // for (StorageAttachment attachment : attachments) { // // è·åå ³èè®°å½ // StorageBlob storageBlob = attachment.getStorageBlobDTO(); // attachment.setName(fileType.toString()); // attachment.setRecordType((long) recordType.ordinal()); // attachment.setRecordId(recordId); // attachment.setStorageBlobId(storageBlob.getId()); // storageAttachmentMapper.insert(attachment); // } @Transactional(rollbackFor = Exception.class) public void saveStorageAttachment(List<StorageBlobDTO> storageBlobDTOS, Long recordId, String recordType, String fileType) { fileUtil.saveStorageAttachment(ApplicationTypeEnum.getByType(fileType), RecordTypeEnum.getByType(recordType), recordId, storageBlobDTOS); } @Override public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, String fileType) { // å 餿§å¾ // deleteStorageAttachment(new StorageAttachment(fileType, (long) recordType.ordinal(), recordId)); // todo fileChange // for (StorageAttachment attachment : attachments) { // // è·åå ³èè®°å½ // StorageBlob storageBlob = attachment.getStorageBlobDTO(); // attachment.setName(fileType); // attachment.setRecordType((long) recordType.ordinal()); // attachment.setRecordId(recordId); // attachment.setStorageBlobId(storageBlob.getId()); // storageAttachmentMapper.insert(attachment); // } public IPage<StorageAttachmentVO> listPage(Page page, StorageAttachmentDTO storageAttachmentDTO) { return fileUtil.getStorageAttachmentVosPageListByApplicationAndRecordTypeAndRecordId(page, storageAttachmentDTO); } @Override @@ -79,4 +63,10 @@ // } return 0; } @Override public int batchDeleteStorageAttachment(List<Long> ids) { fileUtil.deleteStorageAttachmentsByStorageAttachmentIds(ids); return 1; } } src/main/java/com/ruoyi/basic/utils/FileUtil.java
@@ -1,7 +1,10 @@ package com.ruoyi.basic.utils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.StorageAttachmentDTO; import com.ruoyi.basic.dto.StorageAttachmentVO; import com.ruoyi.basic.dto.StorageBlobDTO; import com.ruoyi.basic.dto.StorageBlobVO; @@ -198,6 +201,46 @@ } /** * éè¿è®°å½ç±»åè·åæä»¶ä¿¡æ¯ attachmentï¼åé¡µï¼ * * @param page å页忰 * @param storageAttachmentDTO å ³èè®°å½ä¿¡æ¯ */ public IPage<StorageAttachmentVO> getStorageAttachmentVosPageListByApplicationAndRecordTypeAndRecordId(Page page, StorageAttachmentDTO storageAttachmentDTO) { // å页æ¥è¯¢ç¬¦åæ¡ä»¶ç StorageAttachment è®°å½ LambdaQueryWrapper<StorageAttachment> queryWrapper = new LambdaQueryWrapper<StorageAttachment>() .eq(StorageAttachment::getRecordType, storageAttachmentDTO.getRecordType()) .eq(StorageAttachment::getRecordId, storageAttachmentDTO.getRecordId()); if (storageAttachmentDTO.getApplication() != null) { queryWrapper.eq(StorageAttachment::getApplication, storageAttachmentDTO.getApplication()); } IPage<StorageAttachmentVO> storageAttachmentIPage = storageAttachmentMapper.selectPage(page, queryWrapper); // 转æ¢ä¸º StorageAttachmentVO å¹¶è·å对åºç StorageBlobVO List<StorageAttachmentVO> storageAttachmentVOS = new ArrayList<>(); if (CollectionUtils.isNotEmpty(storageAttachmentIPage.getRecords())) { for (StorageAttachment storageAttachment : storageAttachmentIPage.getRecords()) { StorageAttachmentVO storageAttachmentVO = new StorageAttachmentVO(); BeanUtils.copyProperties(storageAttachment, storageAttachmentVO); List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId())); if (CollectionUtils.isEmpty(storageBlobVOS)) { storageAttachmentVO.setStorageBlobVOS(new ArrayList<>()); } else { storageAttachmentVO.setStorageBlobVOS(storageBlobVOS); } storageAttachmentVOS.add(storageAttachmentVO); } } // æå»ºåé¡µç»æ IPage<StorageAttachmentVO> resultPage = new Page<>(); BeanUtils.copyProperties(storageAttachmentIPage, resultPage); resultPage.setRecords(storageAttachmentVOS); return resultPage; } /** * éè¿æä»¶ç¨éãå ³èè®°å½ç±»åãå ³èè®°å½idè·åæä»¶å ³èä¿¡æ¯ attachment * * @param application æä»¶ç¨é src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java
@@ -5,11 +5,16 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.dto.StorageBlobDTO; import com.ruoyi.basic.dto.StorageBlobVO; import com.ruoyi.basic.enums.ApplicationTypeEnum; import com.ruoyi.basic.enums.RecordTypeEnum; import com.ruoyi.basic.mapper.StorageAttachmentMapper; import com.ruoyi.basic.mapper.StorageBlobMapper; import com.ruoyi.basic.pojo.StorageAttachment; import com.ruoyi.basic.pojo.StorageBlob; import com.ruoyi.basic.service.StorageAttachmentService; import com.ruoyi.basic.utils.FileUtil; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.inspectiontask.dto.QrCodeScanRecordDto; import com.ruoyi.inspectiontask.mapper.QrCodeMapper; @@ -51,6 +56,8 @@ private final SysUserMapper sysUserMapper; private final FileUtil fileUtil; @Override public IPage<QrCodeScanRecordDto> selectQrCodeScanRecordList(Page<QrCodeScanRecord> page, QrCodeScanRecordDto qrCodeScanRecordDto) { @@ -159,19 +166,15 @@ } if (qrCodeScanRecordDto.getStorageBlobVO() != null && !qrCodeScanRecordDto.getStorageBlobVO().isEmpty()) { List<StorageAttachment> attachments = new ArrayList<>(); // vo 转 dto List<StorageBlobDTO> storageBlobDTOs = new ArrayList<>(); for (StorageBlobVO storageBlobVO : qrCodeScanRecordDto.getStorageBlobVO()) { StorageBlobDTO storageBlobDTO = new StorageBlobDTO(); BeanUtils.copyProperties(storageBlobVO, storageBlobDTO); storageBlobDTOs.add(storageBlobDTO); } // todo fileChange // for (StorageBlobDTO storageBlobDTO : qrCodeScanRecordDto.getStorageBlobDTO()) { // StorageAttachment storageAttachment = new StorageAttachment( // StorageAttachmentFile, // (long) QrCodeScanRecords.ordinal(), // qrCodeScanRecord.getId() // ); // storageAttachment.setStorageBlobDTO(storageBlobDTO); // attachments.add(storageAttachment); // } storageAttachmentService.saveStorageAttachment(attachments, qrCodeScanRecord.getId(), QrCodeScanRecords, StorageAttachmentFile); fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.QR_CODE_SCAN_RECORDS, qrCodeScanRecord.getId(), storageBlobDTOs); } return i; } @@ -181,4 +184,4 @@ return qrCodeScanRecordMapper.deleteBatchIds(Arrays.asList(ids)); } } }