From 1a376098d2e27eeb9c2af90fa501311c2035d5ab Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期三, 27 八月 2025 14:30:41 +0800
Subject: [PATCH] :zap: 对于前端修改 采购和应付

---
 ruoyi-common/src/main/java/com/ruoyi/basic/service/StorageBlobService.java             |    3 
 ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java    |   20 +
 main-business/src/main/java/com/ruoyi/business/mapper/DuePayableMapper.java            |   19 ++
 main-business/src/main/java/com/ruoyi/business/service/impl/DuePayableServiceImpl.java |  114 ++++++++++++
 ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml                    |    8 
 main-business/src/main/java/com/ruoyi/business/entity/PurchaseRegistration.java        |    5 
 ruoyi-common/src/main/java/com/ruoyi/basic/entity/dto/SimpleStorageDto.java            |   36 ++++
 main-business/src/main/java/com/ruoyi/business/dto/DuePayableDto.java                  |   37 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java              |    2 
 main-business/src/main/java/com/ruoyi/business/vo/DuePayableVo.java                    |   56 ++++++
 main-business/src/main/java/com/ruoyi/business/controller/DuePayableController.java    |   39 ++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java   |    9 +
 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DictDataVo.java                  |   16 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java   |   13 +
 main-business/src/main/java/com/ruoyi/business/entity/DuePayable.java                  |   61 ++++++
 main-business/src/main/java/com/ruoyi/business/entity/PendingInventory.java            |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java           |    4 
 main-business/src/main/java/com/ruoyi/business/service/DuePayableService.java          |   25 ++
 main-business/src/main/resources/mapper/DuePayableMapper.xml                           |   20 ++
 main-business/src/main/java/com/ruoyi/business/vo/SearchDuePurchaseVo.java             |   14 +
 20 files changed, 501 insertions(+), 5 deletions(-)

diff --git a/main-business/src/main/java/com/ruoyi/business/controller/DuePayableController.java b/main-business/src/main/java/com/ruoyi/business/controller/DuePayableController.java
new file mode 100644
index 0000000..a622ad2
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/controller/DuePayableController.java
@@ -0,0 +1,39 @@
+package com.ruoyi.business.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.business.dto.DuePayableDto;
+import com.ruoyi.business.entity.DuePayable;
+import com.ruoyi.business.service.DuePayableService;
+import com.ruoyi.business.vo.DuePayableVo;
+import com.ruoyi.business.vo.SearchDuePurchaseVo;
+import com.ruoyi.common.core.domain.R;
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 搴斾粯娆綾ontroller
+ *
+ * @author buhuazhen
+ * @date 2025/8/26
+ * @email 3038525872@qq.com
+ */
+@RestController
+@Api(tags = "搴斾粯娆�")
+@AllArgsConstructor
+@RequestMapping("/duePayable")
+public class DuePayableController {
+
+    private final DuePayableService duePayableService;
+
+    @PostMapping("/addDuePayable")
+    public R addDuePayable(@RequestBody DuePayableDto duePayableDto) {
+        return R.ok(duePayableService.addDuePayable(duePayableDto));
+    }
+
+    @GetMapping("/list")
+    public R<IPage<DuePayableVo>> list(Page<DuePayable> page, SearchDuePurchaseVo vo) {
+        return R.ok(duePayableService.selectPayableList(page, vo));
+    }
+}
diff --git a/main-business/src/main/java/com/ruoyi/business/dto/DuePayableDto.java b/main-business/src/main/java/com/ruoyi/business/dto/DuePayableDto.java
new file mode 100644
index 0000000..3d0eca1
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/dto/DuePayableDto.java
@@ -0,0 +1,37 @@
+package com.ruoyi.business.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author buhuazhen
+ * @date 2025/8/26
+ * @email 3038525872@qq.com
+ */
+@Data
+public class DuePayableDto {
+    private Long id;
+
+    private String ticketNo;
+
+    /**
+     * 瀵瑰簲閲囪喘淇℃伅琛╥d
+     */
+    private Long purchaseRegistrationId;
+
+    /**
+     * 浠樻绫诲瀷 锛堥浠樻銆佽繘搴︽銆佽川淇濋噾绛夛級
+     */
+    private Integer payableType;
+
+    /**
+     * 浠樻閲戦
+     */
+    private String paymentAmount;
+
+    /**
+     * 闄勪欢 `,`鍒嗗壊
+     */
+    private String attachUpload;
+}
diff --git a/main-business/src/main/java/com/ruoyi/business/entity/DuePayable.java b/main-business/src/main/java/com/ruoyi/business/entity/DuePayable.java
new file mode 100644
index 0000000..fa31cbf
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/entity/DuePayable.java
@@ -0,0 +1,61 @@
+package com.ruoyi.business.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.ruoyi.common.core.domain.MyBaseEntity;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 搴斾粯娆捐〃
+ * @TableName due_payable
+ */
+@TableName(value ="due_payable")
+@Data
+public class DuePayable extends MyBaseEntity {
+    /**
+     * 
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 绁ㄥ彿
+     */
+    @TableField("ticket_no")
+    private String ticketNo;
+
+    /**
+     * 瀵瑰簲閲囪喘淇℃伅琛╥d
+     */
+    @TableField("purchase_registration_id")
+
+    private Long purchaseRegistrationId;
+
+    /**
+     * 浠樻绫诲瀷 锛堥浠樻銆佽繘搴︽銆佽川淇濋噾绛夛級
+     */
+    @TableField("payable_type")
+    private Integer payableType;
+
+    /**
+     * 浠樻閲戦
+     */
+    @TableField("payment_amount")
+    private BigDecimal paymentAmount;
+
+    /**
+     * 闄勪欢 `,`鍒嗗壊
+     */
+    @TableField("attach_upload")
+    private String attachUpload;
+
+
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+}
\ No newline at end of file
diff --git a/main-business/src/main/java/com/ruoyi/business/entity/PendingInventory.java b/main-business/src/main/java/com/ruoyi/business/entity/PendingInventory.java
index e797d3f..2301eef 100644
--- a/main-business/src/main/java/com/ruoyi/business/entity/PendingInventory.java
+++ b/main-business/src/main/java/com/ruoyi/business/entity/PendingInventory.java
@@ -100,6 +100,11 @@
     @TableField(value = "coal_plan_id")
     private Long coalPlanId;
     /**
+     * 閲囪喘绫诲瀷
+     */
+    @TableField(value = "purchase_type")
+    private Integer purchaseType;
+    /**
      * 鐧昏鏃ユ湡
      */
     @TableField(value = "registration_date")
diff --git a/main-business/src/main/java/com/ruoyi/business/entity/PurchaseRegistration.java b/main-business/src/main/java/com/ruoyi/business/entity/PurchaseRegistration.java
index 2d0a160..afd6788 100644
--- a/main-business/src/main/java/com/ruoyi/business/entity/PurchaseRegistration.java
+++ b/main-business/src/main/java/com/ruoyi/business/entity/PurchaseRegistration.java
@@ -99,4 +99,9 @@
      */
     @TableField(value = "type")
     private Integer type;
+    /**
+     * 閲囪喘绫诲瀷
+     */
+    @TableField(value = "purchase_type")
+    private Integer purchaseType;
 }
\ No newline at end of file
diff --git a/main-business/src/main/java/com/ruoyi/business/mapper/DuePayableMapper.java b/main-business/src/main/java/com/ruoyi/business/mapper/DuePayableMapper.java
new file mode 100644
index 0000000..c3fdbfc
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/mapper/DuePayableMapper.java
@@ -0,0 +1,19 @@
+package com.ruoyi.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.business.entity.DuePayable;
+import org.mapstruct.Mapper;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恉ue_payable(搴斾粯娆捐〃)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-08-26 16:12:56
+* @Entity generator.domain.DuePayable
+*/
+public interface DuePayableMapper extends BaseMapper<DuePayable> {
+
+}
+
+
+
+
diff --git a/main-business/src/main/java/com/ruoyi/business/service/DuePayableService.java b/main-business/src/main/java/com/ruoyi/business/service/DuePayableService.java
new file mode 100644
index 0000000..0253e00
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/service/DuePayableService.java
@@ -0,0 +1,25 @@
+package com.ruoyi.business.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.business.dto.DuePayableDto;
+import com.ruoyi.business.dto.PurchaseRegistrationDto;
+import com.ruoyi.business.entity.DuePayable;
+import com.ruoyi.business.entity.PurchaseRegistration;
+import com.ruoyi.business.vo.DuePayableVo;
+import com.ruoyi.business.vo.SearchDuePurchaseVo;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恉ue_payable(搴斾粯娆捐〃)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-08-26 16:12:56
+*/
+public interface DuePayableService extends IService<DuePayable> {
+
+    int addDuePayable(DuePayableDto dueDto);
+
+    IPage<DuePayableVo> selectPayableList(Page<DuePayable> page, SearchDuePurchaseVo vo);
+
+
+}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/DuePayableServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/DuePayableServiceImpl.java
new file mode 100644
index 0000000..2ede66f
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/DuePayableServiceImpl.java
@@ -0,0 +1,114 @@
+package com.ruoyi.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.entity.dto.SimpleStorageDto;
+import com.ruoyi.basic.service.StorageBlobService;
+import com.ruoyi.business.dto.DuePayableDto;
+import com.ruoyi.business.entity.DuePayable;
+import com.ruoyi.business.mapper.DuePayableMapper;
+import com.ruoyi.business.service.DuePayableService;
+import com.ruoyi.business.vo.DuePayableVo;
+import com.ruoyi.business.vo.SearchDuePurchaseVo;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @author buhuazhen
+ * @description 閽堝琛ㄣ�恉ue_payable(搴斾粯娆捐〃)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2025-08-26 16:12:56
+ */
+@Service
+@RequiredArgsConstructor
+public class DuePayableServiceImpl extends ServiceImpl<DuePayableMapper, DuePayable>
+        implements DuePayableService {
+    private final StorageBlobService storageBlobService;
+    private final DuePayableMapper duePayableMapper;
+
+    @Getter
+    @Value("${minio.default-bucket}")
+    private String defaultBucket;
+
+    @Override
+    public int addDuePayable(DuePayableDto dto) {
+        DuePayable duePayable = new DuePayable();
+        duePayable.setPayableType(dto.getPayableType());
+        duePayable.setAttachUpload(dto.getAttachUpload());
+        duePayable.setPurchaseRegistrationId(dto.getPurchaseRegistrationId());
+        duePayable.setPaymentAmount(new BigDecimal(dto.getPaymentAmount()));
+        duePayable.setTicketNo(dto.getTicketNo());
+        duePayable.setId(dto.getId());
+
+        if (Objects.isNull(dto.getId())) {
+            return duePayableMapper.insert(duePayable);
+        }
+
+        return duePayableMapper.updateById(duePayable);
+    }
+
+    @Override
+    public IPage<DuePayableVo> selectPayableList(Page<DuePayable> page, SearchDuePurchaseVo vo) {
+        LambdaQueryWrapper<DuePayable> queryWrapper = new LambdaQueryWrapper<>();
+        // todo 鎼滅储鏉′欢鏆傛椂涓嶇煡閬撴槸浠�涔堭煠�
+        queryWrapper.orderByDesc(DuePayable::getCreateTime);
+
+        Page<DuePayable> duePayablePage = duePayableMapper.selectPage(page, queryWrapper);
+        /**
+         * 鏌ヨ鍑洪檮浠秈d 鐢变簬鍚庣画璇︾粏
+         */
+        Map<Long, List<Long>> attachMap = duePayablePage.getRecords().stream()
+                .collect(Collectors.toMap(
+                        DuePayable::getId,
+                        it -> {
+                            if (StringUtils.isNotBlank(it.getAttachUpload())) {
+                                return Arrays.stream(it.getAttachUpload().split(","))
+                                        .map(Long::parseLong)
+                                        .collect(Collectors.toList());
+                            } else {
+                                return List.of();
+                            }
+                        }
+                ));
+        /**
+         * 鏍规嵁涓婇潰鐨刬ds 鏌ヨ鍑哄叿浣撲俊鎭�
+         */
+        Map<Long,SimpleStorageDto> storageMap = storageBlobService.findStorageByIds(attachMap.values().stream().flatMap(List::stream).toList(), getDefaultBucket()).stream().collect(Collectors.toMap(SimpleStorageDto::getId,it->it));
+
+
+        List<DuePayableVo> convertedList = duePayablePage.getRecords().stream().map(it -> {
+            DuePayableVo dueVo = new DuePayableVo(it.getId(), it.getTicketNo(), it.getPurchaseRegistrationId(), it.getPayableType(), it.getPaymentAmount(),Long.parseLong(it.getCreateBy()),it.getCreateTime().toLocalDate());
+            // 鏂囦欢淇℃伅
+            List<Long> storageIds = attachMap.get(it.getId());
+            dueVo.setAttachFileList(
+                    storageIds.stream()
+                            .map(storageMap::get)   // O(1) 鑾峰彇
+                            .filter(Objects::nonNull)
+                            .toList()
+            );
+            return dueVo;
+        }).toList();
+
+        IPage<DuePayableVo> voPage = new Page<>();
+        voPage.setCurrent(duePayablePage.getCurrent());
+        voPage.setSize(duePayablePage.getSize());
+        voPage.setTotal(duePayablePage.getTotal());
+        voPage.setRecords(convertedList);
+        return voPage;
+    }
+}
+
+
+
+
diff --git a/main-business/src/main/java/com/ruoyi/business/vo/DuePayableVo.java b/main-business/src/main/java/com/ruoyi/business/vo/DuePayableVo.java
new file mode 100644
index 0000000..cfbb5c8
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/vo/DuePayableVo.java
@@ -0,0 +1,56 @@
+package com.ruoyi.business.vo;
+
+import com.ruoyi.basic.entity.dto.SimpleStorageDto;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * @author buhuazhen
+ * @date 2025/8/26
+ * @email 3038525872@qq.com
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DuePayableVo {
+
+    private Long id;
+
+    private String ticketNo;
+
+    private Long purchaseRegistrationId;
+
+    // 鏈夐渶瑕佸彲浠ユ煡璇㈠嚭閲囪喘鍏蜂綋淇℃伅
+
+    private Integer payableType;
+
+    private BigDecimal paymentAmount;
+
+    private List<SimpleStorageDto> attachFileList;
+
+    private Long registrantId;
+
+    private LocalDate registrationDate;
+    public DuePayableVo(Long id, String ticketNo, Long purchaseRegistrationId, Integer payableType, BigDecimal paymentAmount) {
+        this.id = id;
+        this.ticketNo = ticketNo;
+        this.purchaseRegistrationId = purchaseRegistrationId;
+        this.payableType = payableType;
+        this.paymentAmount = paymentAmount;
+    }
+
+    public DuePayableVo(Long id, String ticketNo, Long purchaseRegistrationId, Integer payableType, BigDecimal paymentAmount, Long registrantId, LocalDate registrationDate) {
+        this.id = id;
+        this.ticketNo = ticketNo;
+        this.purchaseRegistrationId = purchaseRegistrationId;
+        this.payableType = payableType;
+        this.paymentAmount = paymentAmount;
+        this.registrantId = registrantId;
+        this.registrationDate = registrationDate;
+    }
+}
diff --git a/main-business/src/main/java/com/ruoyi/business/vo/SearchDuePurchaseVo.java b/main-business/src/main/java/com/ruoyi/business/vo/SearchDuePurchaseVo.java
new file mode 100644
index 0000000..6bb62b7
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/vo/SearchDuePurchaseVo.java
@@ -0,0 +1,14 @@
+package com.ruoyi.business.vo;
+
+import lombok.Data;
+
+/**
+ * @author buhuazhen
+ * @date 2025/8/26
+ * @email 3038525872@qq.com
+ */
+@Data
+public class SearchDuePurchaseVo {
+
+    private String search;
+}
diff --git a/main-business/src/main/resources/mapper/DuePayableMapper.xml b/main-business/src/main/resources/mapper/DuePayableMapper.xml
new file mode 100644
index 0000000..8f07894
--- /dev/null
+++ b/main-business/src/main/resources/mapper/DuePayableMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.business.mapper.DuePayableMapper">
+
+    <resultMap id="BaseResultMap" type="com.ruoyi.business.entity.DuePayable">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="ticketNo" column="ticket_no" jdbcType="VARCHAR"/>
+            <result property="purchaseRegistrationId" column="purchase_registration_id" jdbcType="BIGINT"/>
+            <result property="payableType" column="payable_type" jdbcType="INTEGER"/>
+            <result property="paymentAmount" column="payment_amount" jdbcType="NUMERIC"/>
+            <result property="attachUpload" column="attach_upload" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,ticket_no,purchase_registration_id,
+        payable_type,payment_amount,attach_upload,
+        deleted,create_by,create_time,
+        update_by,update_time
+    </sql>
+</mapper>
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
index f65492b..38579a4 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
@@ -49,6 +49,15 @@
         return getDataTable(list);
     }
 
+    /**
+     * 鑾峰彇鍏ㄩ儴鍙敤瀛楁淇℃伅
+     * @return
+     */
+    @GetMapping("/dictDataList")
+    public AjaxResult dictDataList(){
+       return AjaxResult.success(dictDataService.selectAllDictDataList());
+    }
+
     @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.EXPORT)
     @PreAuthorize("@ss.hasPermi('system:dict:export')")
     @PostMapping("/export")
diff --git a/ruoyi-common/src/main/java/com/ruoyi/basic/entity/dto/SimpleStorageDto.java b/ruoyi-common/src/main/java/com/ruoyi/basic/entity/dto/SimpleStorageDto.java
new file mode 100644
index 0000000..248686d
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/basic/entity/dto/SimpleStorageDto.java
@@ -0,0 +1,36 @@
+package com.ruoyi.basic.entity.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * @author buhuazhen
+ * @date 2025/8/26
+ * @email 3038525872@qq.com
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SimpleStorageDto {
+    private Long id;
+
+    private String originalFilename;
+
+    private String contentType;
+
+    private String url;
+
+    private String downloadUrl;
+
+    private Date createTime;
+
+    public SimpleStorageDto(Long id, String contentType, String originalFilename, Date createTime) {
+        this.id = id;
+        this.contentType = contentType;
+        this.originalFilename = originalFilename;
+        this.createTime = createTime;
+    }
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/basic/service/StorageBlobService.java b/ruoyi-common/src/main/java/com/ruoyi/basic/service/StorageBlobService.java
index 64f737d..18e51c3 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/basic/service/StorageBlobService.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/basic/service/StorageBlobService.java
@@ -3,6 +3,7 @@
 import com.ruoyi.basic.entity.StorageAttachment;
 import com.ruoyi.basic.entity.StorageBlob;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.basic.entity.dto.SimpleStorageDto;
 import com.ruoyi.basic.entity.dto.StorageBlobDTO;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -32,4 +33,6 @@
      * @return
      */
     public int deleteStorageBlobs(StorageAttachment attachment);
+
+    List<SimpleStorageDto> findStorageByIds(List<Long> ids,String bucketName);
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java b/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
index cf2094e..1939119 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.basic.entity.StorageAttachment;
 import com.ruoyi.basic.entity.StorageBlob;
+import com.ruoyi.basic.entity.dto.SimpleStorageDto;
 import com.ruoyi.basic.entity.dto.StorageBlobDTO;
 import com.ruoyi.basic.mapper.StorageAttachmentMapper;
 import com.ruoyi.basic.mapper.StorageBlobMapper;
@@ -47,7 +48,7 @@
     private MinioUtils minioUtils;
 
     @Override
-    public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName,Long type) {
+    public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName, Long type) {
 
         // 鑻ユ病浼犲叆bucketName锛屽垯浣跨敤榛樿bucketName
         if (StringUtils.isEmpty(bucketName)) {
@@ -85,7 +86,7 @@
                 "pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "txt", "rtf", "md", "csv", "odt",
 
                 // 瑙嗛
-                "mp4", "mov", "avi", "wmv", "flv", "mkv", "webm", "mpeg", "3gp","MOV",
+                "mp4", "mov", "avi", "wmv", "flv", "mkv", "webm", "mpeg", "3gp", "MOV",
 
                 // 闊抽
                 "mp3", "wav", "ogg", "aac", "flac", "m4a", "wma", "amr",
@@ -142,7 +143,7 @@
                     new LambdaQueryWrapper<StorageBlob>().in(StorageBlob::getId, ids)
             );
         }
-        
+
         // 绉婚櫎MinIO涓殑鏂囦欢
         if (!storageBlobs.isEmpty()) {
             for (StorageBlob storageBlob : storageBlobs) {
@@ -158,4 +159,17 @@
         }
         return 0;
     }
+
+    @Override
+    public List<SimpleStorageDto> findStorageByIds(List<Long> ids, String bucketName) {
+        if (ids == null || ids.isEmpty()) {
+            return List.of();
+        }
+        return storageBlobMapper.selectByIds(ids).parallelStream().map(it -> {
+            SimpleStorageDto dto = new SimpleStorageDto(it.getId(), it.getContentType(), it.getOriginalFilename(), it.getCreateTime());
+            dto.setDownloadUrl(minioUtils.getDownloadUrls(it.getBucketFilename(), bucketName, it.getOriginalFilename(), true));
+            dto.setUrl(minioUtils.getPreviewUrl(it.getBucketFilename(), bucketName, true));
+            return dto;
+        }).toList();
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DictDataVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DictDataVo.java
new file mode 100644
index 0000000..7b020cf
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DictDataVo.java
@@ -0,0 +1,16 @@
+package com.ruoyi.system.domain.vo;
+
+import lombok.Data;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * @author buhuazhen
+ * @date 2025/8/26
+ * @email 3038525872@qq.com
+ */
+@Data
+public class DictDataVo {
+    private String label;
+    private String value;
+    private String type;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
index a341f1e..091cd33 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
@@ -19,6 +19,8 @@
      */
     public List<SysDictData> selectDictDataList(SysDictData dictData);
 
+    public List<SysDictData> selectAllDictList();
+
     /**
      * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁
      * 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
index 9bc4f13..3f86756 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.system.domain.vo.DictDataVo;
 
 /**
  * 瀛楀吀 涓氬姟灞�
@@ -57,4 +58,7 @@
      * @return 缁撴灉
      */
     public int updateDictData(SysDictData dictData);
+
+    public List<DictDataVo> selectAllDictDataList();
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
index fced569..e9079e7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
@@ -1,6 +1,8 @@
 package com.ruoyi.system.service.impl;
 
 import java.util.List;
+
+import com.ruoyi.system.domain.vo.DictDataVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.core.domain.entity.SysDictData;
@@ -108,4 +110,15 @@
         }
         return row;
     }
+
+    @Override
+    public List<DictDataVo> selectAllDictDataList() {
+       return dictDataMapper.selectAllDictList().stream().map(it->{
+            DictDataVo dict =  new DictDataVo();
+            dict.setLabel(it.getDictLabel());
+            dict.setValue(it.getDictValue());
+            dict.setType(it.getDictType());
+            return dict;
+        }).toList();
+    }
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
index d394930..3f2af4c 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
@@ -59,8 +59,12 @@
 	<select id="countDictDataByType" resultType="Integer">
 	    select count(1) from sys_dict_data where dict_type=#{dictType}  
 	</select>
-	
-	<delete id="deleteDictDataById" parameterType="Long">
+    <select id="selectAllDictList" resultType="com.ruoyi.common.core.domain.entity.SysDictData">
+        <include refid="selectDictDataVo"/>
+            where status = '0'
+    </select>
+
+    <delete id="deleteDictDataById" parameterType="Long">
  		delete from sys_dict_data where dict_code = #{dictCode}
  	</delete>
  	

--
Gitblit v1.9.3