From e1a6e20d22fbcb862247fac0a671a2a2722e7755 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 29 八月 2025 14:07:53 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/pim-jlmy' into pim-jlmy
---
main-business/src/main/java/com/ruoyi/business/entity/ReceiptPayment.java | 3
ruoyi-common/src/main/java/com/ruoyi/basic/service/StorageBlobService.java | 4 +
ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java | 38 ++++++++-
main-business/src/main/java/com/ruoyi/business/entity/StaffOnJob.java | 5 +
ruoyi-common/src/main/java/com/ruoyi/basic/entity/dto/SimpleStorageDto.java | 22 +++++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java | 26 +++++-
main-business/src/main/java/com/ruoyi/business/service/impl/ReceiptPaymentServiceImpl.java | 33 ++++++++
main-business/src/main/java/com/ruoyi/business/service/impl/StaffOnJobServiceImpl.java | 20 +++++
main-business/src/main/java/com/ruoyi/business/controller/StaffOnJobController.java | 10 ++
main-business/src/main/java/com/ruoyi/business/dto/ReceiptPaymentDto.java | 8 ++
main-business/src/main/java/com/ruoyi/business/vo/SaveStaffOnJobVo.java | 23 +++++
main-business/src/main/resources/mapper/StaffOnJobMapper.xml | 1
main-business/src/main/java/com/ruoyi/business/service/IStaffOnJobService.java | 3
13 files changed, 185 insertions(+), 11 deletions(-)
diff --git a/main-business/src/main/java/com/ruoyi/business/controller/StaffOnJobController.java b/main-business/src/main/java/com/ruoyi/business/controller/StaffOnJobController.java
index a5a6347..00e76f1 100644
--- a/main-business/src/main/java/com/ruoyi/business/controller/StaffOnJobController.java
+++ b/main-business/src/main/java/com/ruoyi/business/controller/StaffOnJobController.java
@@ -4,9 +4,13 @@
import com.ruoyi.business.entity.StaffOnJob;
import com.ruoyi.business.service.IStaffOnJobService;
+import com.ruoyi.business.vo.SaveStaffOnJobVo;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.R;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
+import lombok.Getter;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -74,5 +78,11 @@
staffOnJobService.staffOnJobExport(response, staffOnJob);
}
+ @PostMapping("/save")
+ public R save(@RequestBody SaveStaffOnJobVo vo){
+ staffOnJobService.saveStaffOnJob(vo);
+ return R.ok();
+ }
+
}
diff --git a/main-business/src/main/java/com/ruoyi/business/dto/ReceiptPaymentDto.java b/main-business/src/main/java/com/ruoyi/business/dto/ReceiptPaymentDto.java
index f211c0c..e79431d 100644
--- a/main-business/src/main/java/com/ruoyi/business/dto/ReceiptPaymentDto.java
+++ b/main-business/src/main/java/com/ruoyi/business/dto/ReceiptPaymentDto.java
@@ -1,9 +1,12 @@
package com.ruoyi.business.dto;
import com.baomidou.mybatisplus.annotation.TableField;
+import com.ruoyi.basic.entity.dto.SimpleStorageDto;
import com.ruoyi.business.entity.ReceiptPayment;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
+
+import java.util.List;
@Data
public class ReceiptPaymentDto extends ReceiptPayment {
@@ -19,4 +22,9 @@
@Excel(isExport = false)
private String receiptPaymentDateEnd;
+
+ /**
+ * 闄勪欢淇℃伅
+ */
+ private List<SimpleStorageDto> attachFileList;
}
diff --git a/main-business/src/main/java/com/ruoyi/business/entity/ReceiptPayment.java b/main-business/src/main/java/com/ruoyi/business/entity/ReceiptPayment.java
index 4fcddae..92c503c 100644
--- a/main-business/src/main/java/com/ruoyi/business/entity/ReceiptPayment.java
+++ b/main-business/src/main/java/com/ruoyi/business/entity/ReceiptPayment.java
@@ -61,4 +61,7 @@
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
+ @TableField("attach_upload")
+ private String attachUpload;
+
}
diff --git a/main-business/src/main/java/com/ruoyi/business/entity/StaffOnJob.java b/main-business/src/main/java/com/ruoyi/business/entity/StaffOnJob.java
index ff472a9..738ffcb 100644
--- a/main-business/src/main/java/com/ruoyi/business/entity/StaffOnJob.java
+++ b/main-business/src/main/java/com/ruoyi/business/entity/StaffOnJob.java
@@ -144,5 +144,10 @@
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
+ /**
+ * 闄勪欢淇℃伅
+ */
+ @TableField("attach_upload")
+ private String attachUpload;
}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/IStaffOnJobService.java b/main-business/src/main/java/com/ruoyi/business/service/IStaffOnJobService.java
index 12f9dbc..fe838ce 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/IStaffOnJobService.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/IStaffOnJobService.java
@@ -6,6 +6,7 @@
import com.ruoyi.business.entity.StaffJoinLeaveRecord;
import com.ruoyi.business.entity.StaffOnJob;
+import com.ruoyi.business.vo.SaveStaffOnJobVo;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
@@ -24,4 +25,6 @@
List<StaffJoinLeaveRecord> staffOnJobList();
Boolean importData(MultipartFile file);
+
+ void saveStaffOnJob(SaveStaffOnJobVo vo);
}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/ReceiptPaymentServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/ReceiptPaymentServiceImpl.java
index 6fd62c3..30f1d49 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/ReceiptPaymentServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/ReceiptPaymentServiceImpl.java
@@ -4,16 +4,22 @@
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.ReceiptPaymentDto;
import com.ruoyi.business.dto.SalesRecordDto;
+import com.ruoyi.business.entity.DuePayable;
import com.ruoyi.business.entity.ReceiptPayment;
import com.ruoyi.business.entity.SalesRecord;
import com.ruoyi.business.mapper.ReceiptPaymentMapper;
import com.ruoyi.business.mapper.SalesRecordMapper;
import com.ruoyi.business.service.ReceiptPaymentService;
import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
+import jakarta.annotation.Resource;
+import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -24,6 +30,7 @@
import java.time.YearMonth;
import java.util.*;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
@Service
public class ReceiptPaymentServiceImpl extends ServiceImpl<ReceiptPaymentMapper, ReceiptPayment> implements ReceiptPaymentService {
@@ -32,6 +39,10 @@
private ReceiptPaymentMapper receiptPaymentMapper;
@Autowired
private SalesRecordMapper salesRecordMapper;
+
+ @Resource
+ private StorageBlobService storageBlobService;
+
/**
* 鍥炴鐧昏鏂板
@@ -76,7 +87,27 @@
@Override
public IPage<ReceiptPaymentDto> receiptPaymentHistoryListPage(Page page, ReceiptPaymentDto receiptPaymentDto) {
- return receiptPaymentMapper.bindInvoiceNoRegPage(page, receiptPaymentDto);
+
+ IPage<ReceiptPaymentDto> receiptPaymentDtoIPage = receiptPaymentMapper.bindInvoiceNoRegPage(page, receiptPaymentDto);
+
+ List<ReceiptPaymentDto> dtoList = receiptPaymentDtoIPage.getRecords();
+ Map<Long, List<Long>> attachMap = dtoList.stream().collect(Collectors.toMap(
+ (ReceiptPaymentDto receiptPaymentDto1) -> receiptPaymentDto1.getId().longValue(),
+ it -> {
+ if (StringUtils.isNotBlank(it.getAttachUpload())) {
+ return Arrays.stream(it.getAttachUpload().split(","))
+ .map(Long::parseLong)
+ .collect(Collectors.toList());
+ } else {
+ return List.of();
+ }
+ }
+ ));
+ Map<Long, List<SimpleStorageDto>> conver = storageBlobService.conver(attachMap);
+ dtoList.forEach(it->{
+ it.setAttachFileList(conver.get(it.getId().longValue()));
+ });
+ return receiptPaymentDtoIPage;
}
@Override
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/StaffOnJobServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/StaffOnJobServiceImpl.java
index 9a0b4cd..1fb68a8 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/StaffOnJobServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/StaffOnJobServiceImpl.java
@@ -10,6 +10,9 @@
import com.ruoyi.business.mapper.StaffJoinLeaveRecordMapper;
import com.ruoyi.business.mapper.StaffOnJobMapper;
import com.ruoyi.business.service.IStaffOnJobService;
+import com.ruoyi.business.vo.SaveStaffOnJobVo;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import jakarta.servlet.http.HttpServletResponse;
@@ -17,7 +20,9 @@
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
+import java.util.Collection;
import java.util.List;
+import java.util.Objects;
@AllArgsConstructor
@Service
@@ -31,6 +36,9 @@
//鍦ㄨ亴鍛樺伐鍙拌处鍒嗛〉鏌ヨ
@Override
public IPage<StaffOnJob> staffOnJobListPage(Page page, StaffOnJob staffOnJob) {
+
+
+
return staffOnJobMapper.staffOnJobListPage(page,staffOnJob);
}
@@ -67,5 +75,17 @@
}
}
+ @Override
+ public void saveStaffOnJob(SaveStaffOnJobVo vo) {
+ StaffOnJob staffOnJob = new StaffOnJob();
+ BeanUtils.copyProperties(vo, staffOnJob);
+ if (Objects.isNull(staffOnJob.getId())){
+ // todo 鏆傛椂鏈湁鏂板瑕佹眰
+ throw new ServiceException("鍚庡彴鏆傛湭纭畾寮�鍙�");
+ }
+
+ staffOnJobMapper.insertOrUpdate(staffOnJob);
+ }
+
}
diff --git a/main-business/src/main/java/com/ruoyi/business/vo/SaveStaffOnJobVo.java b/main-business/src/main/java/com/ruoyi/business/vo/SaveStaffOnJobVo.java
new file mode 100644
index 0000000..999ed63
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/vo/SaveStaffOnJobVo.java
@@ -0,0 +1,23 @@
+package com.ruoyi.business.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author buhuazhen
+ * @date 2025/8/28
+ * @email 3038525872@qq.com
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SaveStaffOnJobVo implements Serializable {
+
+ private Long id;
+
+ private String attachUpload;
+
+}
diff --git a/main-business/src/main/resources/mapper/StaffOnJobMapper.xml b/main-business/src/main/resources/mapper/StaffOnJobMapper.xml
index 0f6b71b..3aabb60 100644
--- a/main-business/src/main/resources/mapper/StaffOnJobMapper.xml
+++ b/main-business/src/main/resources/mapper/StaffOnJobMapper.xml
@@ -18,6 +18,7 @@
<if test="staffOnJob.entryDateEnd != null and staffOnJob.entryDateEnd != '' ">
AND contract_expire_time <= to_date(#{staffOnJob.entryDateEnd},'YYYY-MM-DD')
</if>
+ order by create_time desc
</select>
<select id="staffOnJobList" resultType="com.ruoyi.business.entity.StaffOnJob">
SELECT
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
index bf81449..76a1b44 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
@@ -1,5 +1,6 @@
package com.ruoyi.web.controller.common;
+import com.google.common.collect.Iterables;
import com.ruoyi.basic.service.StorageBlobService;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants;
@@ -11,17 +12,17 @@
import com.ruoyi.framework.config.ServerConfig;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
+import lombok.Getter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
/**
@@ -42,6 +43,10 @@
@Autowired
private StorageBlobService storageBlobService;
+
+ @Getter
+ @Value("${minio.default-bucket}")
+ private String defaultBucket;
/**
* 閫氱敤涓嬭浇璇锋眰
@@ -175,4 +180,17 @@
log.error("涓嬭浇鏂囦欢澶辫触", e);
}
}
+
+ /**
+ * 鏍规嵁 storage_blob 琛╥d 杩斿洖minio鏂囦欢鍒楄〃
+ * @param ids
+ */
+ @PostMapping("/findFileListByIds")
+ public R findFileListByIds(@RequestBody List<Long> ids){
+ if (Iterables.isEmpty(ids)){
+ return R.ok();
+ }
+ return R.ok(storageBlobService.findStorageByIds(ids,defaultBucket));
+ }
+
}
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
index 248686d..9b37f1e 100644
--- 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
@@ -21,16 +21,36 @@
private String contentType;
+ /**
+ * 鐢ㄤ簬涓嬭浇
+ */
private String url;
- private String downloadUrl;
+ /**
+ * 棰勮
+ */
+ private String previewUrl;
private Date createTime;
+ // 閰嶅悎鍓嶇娣诲姞鏈変竴浜涘瓧娈�
+ private Long uid;
+
+ private String name;
+
+ private String status = "success";
public SimpleStorageDto(Long id, String contentType, String originalFilename, Date createTime) {
this.id = id;
this.contentType = contentType;
this.originalFilename = originalFilename;
this.createTime = createTime;
}
+
+ public Long getUid() {
+ return getId();
+ }
+
+ public String getName() {
+ return getOriginalFilename();
+ }
}
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 18e51c3..731428f 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
@@ -8,6 +8,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -35,4 +36,7 @@
public int deleteStorageBlobs(StorageAttachment attachment);
List<SimpleStorageDto> findStorageByIds(List<Long> ids,String bucketName);
+
+ Map<Long,List<SimpleStorageDto>> conver(Map<Long, List<Long>> attachMap);
+
}
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 1939119..c42d317 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
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Iterables;
import com.ruoyi.basic.entity.StorageAttachment;
import com.ruoyi.basic.entity.StorageBlob;
import com.ruoyi.basic.entity.dto.SimpleStorageDto;
@@ -16,15 +17,16 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.MinioUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
+import jakarta.annotation.Resource;
+import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -46,6 +48,10 @@
@Autowired
private MinioUtils minioUtils;
+
+ @Getter
+ @Value("${minio.default-bucket}")
+ private String defaultBucket;
@Override
public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName, Long type) {
@@ -167,9 +173,31 @@
}
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));
+ dto.setUrl(minioUtils.getDownloadUrls(it.getBucketFilename(), bucketName, it.getOriginalFilename(), true));
+ dto.setPreviewUrl(minioUtils.getPreviewUrl(it.getBucketFilename(), bucketName, true));
return dto;
}).toList();
}
+
+ @Override
+ public Map<Long, List<SimpleStorageDto>> conver(Map<Long, List<Long>> attachMap) {
+ if (attachMap == null || attachMap.isEmpty()) {
+ return Map.of();
+ }
+ List<Long> storageBlobIds = attachMap.values().stream().flatMap(Collection::stream).toList();
+
+ if(Iterables.isEmpty(storageBlobIds)){
+ return Map.of();
+ }
+
+ Map<Long,SimpleStorageDto> storageMap = this.findStorageByIds(storageBlobIds, defaultBucket).stream().collect(Collectors.toMap(SimpleStorageDto::getId,it->it));;
+
+
+ Map<Long, List<SimpleStorageDto>> finalMap = new HashMap<>();
+ attachMap.forEach((k,v)->{
+ finalMap.put(k, v.stream().map(storageMap::get).toList());
+ });
+
+ return finalMap;
+ }
}
--
Gitblit v1.9.3