pom.xml
@@ -15,36 +15,37 @@ <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.15</version> <version>3.5.13</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <java.version>25.0.2</java.version> <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> <pagehelper.spring.boot.starter.version>1.4.7</pagehelper.spring.boot.starter.version> <pagehelper.spring.boot.starter.version>2.1.1</pagehelper.spring.boot.starter.version> <fastjson.version>2.0.53</fastjson.version> <druid.version>1.2.23</druid.version> <commons.io.version>2.13.0</commons.io.version> <bitwalker.version>1.21</bitwalker.version> <jwt.version>0.9.1</jwt.version> <jwt.version>0.13.0</jwt.version> <kaptcha.version>2.3.3</kaptcha.version> <swagger.version>3.0.0</swagger.version> <poi.version>5.2.3</poi.version> <oshi.version>6.6.5</oshi.version> <velocity.version>2.3</velocity.version> <!-- override dependency version --> <tomcat.version>9.0.102</tomcat.version> <!-- <tomcat.version>9.0.102</tomcat.version>--> <minio.version>8.4.3</minio.version> <okhttp.version>4.9.0</okhttp.version> <hutool.version>5.8.43</hutool.version> <logback.version>1.2.13</logback.version> <spring-security.version>5.7.12</spring-security.version> <spring-framework.version>5.3.39</spring-framework.version> <mybatis-plus.version>3.5.3.1</mybatis-plus.version> <!-- <logback.version>1.2.13</logback.version>--> <!-- <spring-security.version>5.7.12</spring-security.version>--> <!-- <spring-framework.version>5.3.39</spring-framework.version>--> <mybatis-plus.version>3.5.16</mybatis-plus.version> <getui-sdk.version>1.0.7.0</getui-sdk.version> <jsqlparser.version>4.9</jsqlparser.version> </properties> <dependencies> @@ -110,13 +111,14 @@ <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> <version>8.0.33</version> </dependency> <!-- FreeMarker 模æ¿å¼æï¼å¤çåéå ä½ç¬¦ --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.32</version> <version>2.3.33</version> </dependency> <!-- pagehelper å页æä»¶ --> @@ -129,14 +131,26 @@ <!-- é¿éæ°æ®åºè¿æ¥æ± --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <artifactId>druid-spring-boot-3-starter</artifactId> <version>${druid.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis-plus.version}</version> </dependency> <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <artifactId>mybatis-plus-spring-boot3-starter</artifactId> <version>${mybatis-plus.version}</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-jsqlparser</artifactId> <version>${mybatis-plus.version}</version> </dependency> @@ -145,6 +159,12 @@ <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>${mybatis-plus.version}</version> </dependency> <dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>${jsqlparser.version}</version> </dependency> <!-- èªå®ä¹éªè¯æ³¨è§£ --> @@ -189,14 +209,27 @@ <!-- Tokençæä¸è§£æ--> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <artifactId>jjwt-api</artifactId> <version>${jwt.version}</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>${jwt.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <version>${jwt.version}</version> <scope>runtime</scope> </dependency> <!-- Jaxb --> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> </dependency> <!-- Swagger3ä¾èµ --> @@ -315,7 +348,7 @@ <version>${getui-sdk.version}</version> <scope>compile</scope> </dependency> <!--hutoolå·¥å ·å --> <dependency> <groupId>cn.hutool</groupId> @@ -335,9 +368,6 @@ <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> <!-- å¦ææ²¡æè¯¥é ç½®ï¼devtoolsä¸ä¼çæ --> </configuration> </plugin> </plugins> </build> src/main/java/com/ruoyi/RuoYiServletInitializer.java
@@ -3,6 +3,9 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; /** * web容å¨ä¸è¿è¡é¨ç½² * @@ -15,4 +18,9 @@ { return application.sources(RuoYiApplication.class); } @Override public void onStartup(ServletContext servletContext) throws ServletException { } } src/main/java/com/ruoyi/account/controller/AccountExpenseController.java
@@ -2,11 +2,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.dto.ReportDateDto; import com.ruoyi.account.mapper.AccountIncomeMapper; import com.ruoyi.account.pojo.AccountExpense; import com.ruoyi.account.pojo.AccountIncome; import com.ruoyi.account.service.AccountExpenseService; import com.ruoyi.account.service.AccountFileService; import com.ruoyi.account.service.AccountIncomeService; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.dto.DateQueryDto; @@ -14,11 +11,11 @@ import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import jakarta.annotation.Resource; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.Date; import java.util.List; src/main/java/com/ruoyi/account/controller/AccountFileController.java
@@ -11,7 +11,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import jakarta.annotation.Resource; import java.util.List; /** src/main/java/com/ruoyi/account/controller/AccountIncomeController.java
@@ -19,8 +19,8 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import java.util.Date; import java.util.List; src/main/java/com/ruoyi/account/controller/BorrowInfoController.java
@@ -13,7 +13,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/account/dto/AccountDto.java
@@ -10,7 +10,7 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; src/main/java/com/ruoyi/account/dto/DeviceTypeDistributionVO.java
@@ -1,6 +1,5 @@ package com.ruoyi.account.dto; import com.mchange.v1.util.ListUtils; import lombok.Data; import java.math.BigDecimal; src/main/java/com/ruoyi/account/pojo/AccountExpense.java
@@ -8,7 +8,7 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; src/main/java/com/ruoyi/account/pojo/AccountFile.java
@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.io.Serializable; import java.time.LocalDateTime; src/main/java/com/ruoyi/account/pojo/AccountIncome.java
@@ -8,7 +8,7 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; src/main/java/com/ruoyi/account/service/AccountExpenseService.java
@@ -11,7 +11,7 @@ import com.ruoyi.account.pojo.AccountIncome; import com.ruoyi.dto.DateQueryDto; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; src/main/java/com/ruoyi/account/service/AccountIncomeService.java
@@ -8,7 +8,7 @@ import com.ruoyi.account.dto.ReportDateDto; import com.ruoyi.account.pojo.AccountIncome; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; public interface AccountIncomeService extends IService<AccountIncome> { src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java
@@ -21,7 +21,7 @@ import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.time.DayOfWeek; import java.time.LocalDate; src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java
@@ -19,7 +19,7 @@ import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java
@@ -22,7 +22,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
@@ -18,7 +18,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.ParseException; import java.util.List; src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java
@@ -14,7 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java
@@ -17,7 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
@@ -8,7 +8,6 @@ import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java
@@ -7,7 +7,7 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.math.BigDecimal; import java.util.Date; import java.util.List; src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
@@ -7,7 +7,7 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.math.BigDecimal; import java.util.Date; import java.util.List; src/main/java/com/ruoyi/basic/constant/ApplicationType.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.ruoyi.basic.constant; import com.baomidou.mybatisplus.core.toolkit.StringUtils; public interface ApplicationType { String getType(); /** * éªè¯æä»¶ç¨éæ¯å¦ææ * * @return true:ææ, false:æ æ */ default Boolean isValid() { return !StringUtils.isEmpty(getType()); } } src/main/java/com/ruoyi/basic/constant/RecordType.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.ruoyi.basic.constant; import com.baomidou.mybatisplus.core.toolkit.StringUtils; public interface RecordType { String getType(); /** * éªè¯å ³èç±»åæ¯å¦ææ * * @return true:ææ, false:æ æ */ default Boolean isValid() { return !StringUtils.isEmpty(getType()); } } src/main/java/com/ruoyi/basic/constant/fileType/ApplicationTypeImage.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ package com.ruoyi.basic.constant.fileType; import com.ruoyi.basic.constant.ApplicationType; public class ApplicationTypeImage implements ApplicationType { @Override public String getType() { return "image"; } } src/main/java/com/ruoyi/basic/constant/fileType/FileTypeApplication.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ package com.ruoyi.basic.constant.fileType; import com.ruoyi.basic.constant.ApplicationType; public class FileTypeApplication implements ApplicationType { @Override public String getType() { return "file"; } } src/main/java/com/ruoyi/basic/controller/CustomerController.java
@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/basic/controller/CustomerPrivateController.java
@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; import static com.ruoyi.framework.web.domain.AjaxResult.success; src/main/java/com/ruoyi/basic/controller/CustomerPrivatePoolController.java
@@ -16,7 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/basic/controller/ProductController.java
@@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/basic/controller/SupplierManageController.java
@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/basic/controller/SupplierManageFileController.java
@@ -7,7 +7,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import jakarta.annotation.Resource; import java.util.List; /** src/main/java/com/ruoyi/basic/dto/StorageAttachmentDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.ruoyi.basic.dto; import com.ruoyi.basic.pojo.StorageAttachment; import lombok.Data; import java.util.List; @Data public class StorageAttachmentDTO extends StorageAttachment { /** * å卿件å表 */ private List<StorageBlobVO> storageBlobVOS; } src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/basic/dto/StorageBlobVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.ruoyi.basic.dto; import com.ruoyi.basic.pojo.StorageBlob; import lombok.Data; @Data public class StorageBlobVO extends StorageBlob { /** * é¢è§å°å */ private String previewURL; /** * ä¸è½½å°å */ private String downloadURL; } src/main/java/com/ruoyi/basic/pojo/StorageAttachment.java
@@ -1,9 +1,7 @@ package com.ruoyi.basic.pojo; import io.swagger.annotations.ApiModelProperty; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.basic.dto.StorageBlobDTO; import lombok.Data; import java.io.Serializable; @@ -12,8 +10,6 @@ /** * éç¨æä»¶ä¸ä¼ çéä»¶ä¿¡æ¯ å®ä½ç±» * * @author ruoyi * @date 2025-05-29 */ @Data @TableName("storage_attachment") @@ -21,9 +17,6 @@ private static final long serialVersionUID = 1L; /** * */ @TableId(value = "id", type = IdType.AUTO) private Long id; @@ -37,9 +30,6 @@ @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; @TableField(fill = FieldFill.INSERT) private Long tenantId; /** * é»è¾å é¤ */ @@ -49,36 +39,20 @@ * å ³èçè®°å½ç±»å */ @TableField(value = "record_type") private Long recordType; private String recordType; /** * å ³èçè®°å½id */ @TableField(value = "record_id") private Long recordId; /** * ç±»ååç§°, å¦: file, avatar (åºåå䏿¡è®°å½ä¸åç±»åçéä»¶) * æä»¶ç¨é, å¦: file, avatar (åºåå䏿¡è®°å½ä¸åç±»åçéä»¶) */ @TableField(value = "name") private String name; @TableField(value = "application") private String application; /** * å ³èstorage_blobè®°å½id */ @TableField(value = "storage_blob_id") private Long storageBlobId; @TableField(exist = false) private StorageBlobDTO storageBlobDTO; public StorageAttachment(String fileType, Long recordType, Long recordId) { this.name = fileType; this.recordType = recordType; this.recordId = recordId; } @ApiModelProperty(value = "åå»ºç¨æ·") @TableField(fill = FieldFill.INSERT) private Integer createUser; @TableField(fill = FieldFill.INSERT) private Long deptId; } src/main/java/com/ruoyi/basic/pojo/StorageBlob.java
@@ -1,20 +1,13 @@ package com.ruoyi.basic.pojo; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; /** * éç¨æä»¶ä¸ä¼ çéä»¶ä¿¡æ¯ å®ä½ç±» * * @author ruoyi * @date 2025-05-29 */ @Data @TableName("storage_blob") @@ -22,9 +15,6 @@ private static final long serialVersionUID = 1L; /** * */ @TableId(value = "id", type = IdType.AUTO) private Long id; @@ -45,15 +35,11 @@ private String originalFilename; /** * å卿¡¶ä¸ * å¯ä¸æä»¶åç§° */ @TableField(value = "bucket_filename") private String bucketFilename; /** * å卿¡¶å */ @TableField(value = "bucket_name") private String bucketName; @TableField(value = "uid_filename") private String uidFilename; /** * èµæºå°ºå¯¸(åè) */ @@ -61,35 +47,8 @@ private Long byteSize; /** * 0ç产å 1ç产å 2ç产é®é¢ * æä»¶è·¯å¾ */ @TableField(value = "type") private Long type; /** * ç§æ·ID */ @TableField(fill = FieldFill.INSERT) private Long tenantId; @ApiModelProperty(value = "å建该记å½çç¨æ·") @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT) private Integer createUser; @ApiModelProperty(value = "è®°å½å建æ¶é´") @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; @ApiModelProperty(value = "æåä¿®æ¹è¯¥è®°å½çç¨æ·") @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT_UPDATE) private Integer updateUser; @ApiModelProperty(value = "è®°å½æåæ´æ°æ¶é´") @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @TableField(fill = FieldFill.INSERT) private Long deptId; @TableField(value = "path") private String path; } src/main/java/com/ruoyi/basic/pojo/SupplierManageFile.java
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.io.Serializable; import java.time.LocalDateTime; src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java
@@ -4,9 +4,9 @@ import com.ruoyi.basic.pojo.CustomerFollowUpFile; import com.ruoyi.common.vo.SimpleFileVo; import javax.annotation.Nullable; import javax.validation.constraints.NotNull; import javax.validation.constraints.Null; import jakarta.annotation.Nullable; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Null; import java.util.List; import java.util.function.BiConsumer; import java.util.function.Function; src/main/java/com/ruoyi/basic/service/ISupplierService.java
@@ -8,7 +8,7 @@ import com.ruoyi.framework.web.domain.AjaxResult; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; public interface ISupplierService extends IService<SupplierManage> { src/main/java/com/ruoyi/basic/service/StorageBlobService.java
@@ -1,11 +1,11 @@ package com.ruoyi.basic.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.basic.dto.StorageBlobDTO; import com.ruoyi.basic.pojo.StorageAttachment; import com.ruoyi.basic.dto.StorageBlobVO; import com.ruoyi.basic.pojo.StorageBlob; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.util.List; /** @@ -19,20 +19,13 @@ public interface StorageBlobService extends IService<StorageBlob> { /** * æä»¶ä¸ä¼ æ¥å£ * @param files æä»¶ä¿¡æ¯ * @param bucketName å卿¡¶åç§° * ä¸ä¼ æä»¶ * @param files æä»¶å表 * @return ä¸ä¼ ç»æ */ List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName); List<StorageBlobVO> upload(List<MultipartFile> files); List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName,Long type); File getFileByToken(String fileName, String token); /** * æ¹éå 餿件 * @param attachment * @return */ public int deleteStorageBlobs(StorageAttachment attachment); public String getDownloadFileName(String fileName); } src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java
@@ -1,19 +1,15 @@ package com.ruoyi.basic.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.dto.StorageBlobDTO; import com.ruoyi.basic.pojo.StorageAttachment; import com.ruoyi.basic.mapper.StorageAttachmentMapper; import com.ruoyi.basic.mapper.StorageBlobMapper; import com.ruoyi.basic.pojo.StorageBlob; 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.common.utils.MinioUtils; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,36 +40,39 @@ @Override public List<StorageAttachment> selectStorageAttachments(Long recordId, StorageAttachmentRecordType recordType, String fileType) { List<StorageAttachment> storageAttachments = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>() .eq(StorageAttachment::getRecordId, recordId) .eq(StorageAttachment::getRecordType, recordType.ordinal()) .eq(StorageAttachment::getName, fileType)); if (storageAttachments != null) { for (StorageAttachment storageAttachment : storageAttachments) { StorageBlob storageBlob = storageBlobMapper.selectById(storageAttachment.getStorageBlobId()); StorageBlobDTO storageBlobDTO = new StorageBlobDTO(); BeanUtils.copyProperties(storageBlob, storageBlobDTO); storageBlobDTO.setUrl(minioUtils.getPreviewUrl(storageBlob.getBucketName(), storageBlob.getBucketName(), true)); storageAttachment.setStorageBlobDTO(storageBlobDTO); } } // todo fileChange // List<StorageAttachment> storageAttachments = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>() // .eq(StorageAttachment::getRecordId, recordId) // .eq(StorageAttachment::getRecordType, recordType.ordinal()) // .eq(StorageAttachment::getName, fileType)); // if (storageAttachments != null) { // for (StorageAttachment storageAttachment : storageAttachments) { // StorageBlob storageBlob = storageBlobMapper.selectById(storageAttachment.getStorageBlobId()); // StorageBlobDTO storageBlobDTO = new StorageBlobDTO(); // BeanUtils.copyProperties(storageBlob, storageBlobDTO); // storageBlobDTO.setUrl(minioUtils.getPreviewUrl(storageBlob.getBucketName(), storageBlob.getBucketName(), true)); // storageAttachment.setStorageBlobDTO(storageBlobDTO); // } // } return storageAttachments; // return storageAttachments; return null; } @Override public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, StorageAttachmentConstants fileType) { // å 餿§å¾ 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); } // 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); // } } @@ -81,27 +80,31 @@ public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, String fileType) { // å 餿§å¾ // deleteStorageAttachment(new StorageAttachment(fileType, (long) recordType.ordinal(), recordId)); 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); } // 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); // } } @Override public int deleteStorageAttachment(StorageAttachment storageAttachment) { // å å 餿ç»è¡¨ storageBlobService.deleteStorageBlobs(storageAttachment); return storageAttachmentMapper.delete(new LambdaQueryWrapper<StorageAttachment>() .eq(StorageAttachment::getRecordId, storageAttachment.getRecordId()) .eq(StorageAttachment::getRecordType, storageAttachment.getRecordType()) .eq(StorageAttachment::getName, storageAttachment.getName())); // todo fileChange // storageBlobService.deleteStorageBlobs(storageAttachment); // // // return storageAttachmentMapper.delete(new LambdaQueryWrapper<StorageAttachment>() // .eq(StorageAttachment::getRecordId, storageAttachment.getRecordId()) // .eq(StorageAttachment::getRecordType, storageAttachment.getRecordType()) // .eq(StorageAttachment::getName, storageAttachment.getName())); // } return 0; } } src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
@@ -1,190 +1,145 @@ package com.ruoyi.basic.service.impl; 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.ruoyi.basic.dto.StorageBlobDTO; import com.ruoyi.basic.mapper.StorageAttachmentMapper; import com.ruoyi.basic.dto.StorageBlobVO; import com.ruoyi.basic.mapper.StorageBlobMapper; import com.ruoyi.basic.pojo.StorageAttachment; import com.ruoyi.basic.pojo.StorageBlob; import com.ruoyi.basic.service.StorageBlobService; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.exception.file.InvalidExtensionException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.MinioUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.framework.web.domain.MinioResult; import com.ruoyi.basic.utils.FileUtil; import com.ruoyi.common.config.FileProperties; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.security.Keys; import lombok.RequiredArgsConstructor; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; import java.time.LocalDateTime; import javax.crypto.SecretKey; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.UUID; /** * <p> * éç¨æä»¶ä¸ä¼ çéä»¶ä¿¡æ¯ æå¡å®ç°ç±» * </p> * * @author ruoyi * @since 2025-05-29 */ @Service @RequiredArgsConstructor public class StorageBlobServiceImpl extends ServiceImpl<StorageBlobMapper, StorageBlob> implements StorageBlobService { @Autowired private StorageAttachmentMapper storageAttachmentMapper; @Autowired private StorageBlobMapper storageBlobMapper; @Autowired private MinioUtils minioUtils; private final FileProperties properties; private final StorageBlobMapper storageBlobMapper; private final FileUtil fileUtil; @Override public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName) { // è¥æ²¡ä¼ å ¥bucketNameï¼å使ç¨é»è®¤bucketName if (StringUtils.isEmpty(bucketName)) { bucketName = minioUtils.getDefaultBucket(); public List<StorageBlobVO> upload(List<MultipartFile> files) { if (CollectionUtils.isEmpty(files)) { throw new IllegalArgumentException("æä»¶ä¸è½ä¸ºç©º"); } List<StorageBlobDTO> storageBlobDTOs = new ArrayList<>(); List<StorageBlobVO> storageBlobVOS = new ArrayList<>(); for (MultipartFile file : files) { try { MinioResult res = minioUtils.upload(bucketName, file, false); StorageBlobDTO dto = new StorageBlobDTO(); dto.setContentType(file.getContentType()); dto.setBucketFilename(res.getBucketFileName()); dto.setOriginalFilename(res.getOriginalName()); dto.setByteSize(file.getSize()); dto.setResourceKey(IdUtils.simpleUUID()); dto.setBucketName(bucketName); dto.setUrl(minioUtils.getPreviewUrl(res.getBucketFileName(), bucketName, false)); // æå ¥æ°æ®åº storageBlobMapper.insert(dto); storageBlobDTOs.add(dto); } catch (InvalidExtensionException e) { throw new RuntimeException("minioæä»¶ä¸ä¼ å¼å¸¸ï¼" + e); if (file == null || file.isEmpty()) { throw new IllegalArgumentException("æä»¶ä¸è½ä¸ºç©º"); } String originalFileName = StringUtils.hasText(file.getOriginalFilename()) ? StringUtils.cleanPath(file.getOriginalFilename()) : UUID.randomUUID().toString(); String fileName = UUID.randomUUID() + "_" + originalFileName; String relativePath = fileUtil.buildRelativePath(); File targetDirectory = new File(properties.getPath(), relativePath); if (!targetDirectory.exists() && !targetDirectory.mkdirs()) { throw new RuntimeException("å建ä¸ä¼ ç®å½å¤±è´¥"); } File dest = new File(targetDirectory, fileName); StorageBlobVO storageBlob; try { file.transferTo(dest); storageBlob = getStorageBlob(file, originalFileName, fileName, relativePath); if (storageBlob == null || storageBlob.getId() == null) { throw new RuntimeException("æä»¶å æ°æ®ä¿å失败"); } } catch (RuntimeException e) { if (dest.exists()) { dest.delete(); } throw e; } catch (IOException e) { throw new RuntimeException("æä»¶ä¿å失败", e); } storageBlobVOS.add(storageBlob); } return storageBlobDTOs; return storageBlobVOS; } @Override public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName, Long type) { // è¥æ²¡ä¼ å ¥bucketNameï¼å使ç¨é»è®¤bucketName if (StringUtils.isEmpty(bucketName)) { bucketName = minioUtils.getDefaultBucket(); public File getFileByToken(String fileName, String token) { if (!StringUtils.hasText(token)) { throw new IllegalArgumentException("tokenä¸è½ä¸ºç©º"); } List<StorageBlobDTO> storageBlobDTOs = new ArrayList<>(); for (MultipartFile file : files) { try { validateFileExtension(file); MinioResult res = minioUtils.upload(bucketName, file, false); String secretStr = StringUtils.hasText(properties.getJwtSecret()) ? properties.getJwtSecret() : "local-file-jwt-secret"; StorageBlobDTO dto = buildStorageBlobDTO(file, res, bucketName, type); storageBlobMapper.insert(dto); storageBlobDTOs.add(dto); } catch (InvalidExtensionException e) { throw new RuntimeException("䏿¯æçæä»¶ç±»åï¼" + file.getOriginalFilename(), e); } catch (Exception e) { throw new RuntimeException("ä¸ä¼ æä»¶å¤±è´¥ï¼" + file.getOriginalFilename(), e); } SecretKey key = Keys.hmacShaKeyFor(secretStr.getBytes(StandardCharsets.UTF_8)); Claims claims = Jwts.parser() .verifyWith(key) // ä»£æ¿æ§çç setSigningKey .build() // å¿ é¡»å æå»ºè§£æå¨ .parseSignedClaims(token) // ä»£æ¿æ§çç parseClaimsJws .getPayload(); // ä»£æ¿æ§çç getBody() if (!fileName.equals(claims.getSubject())) { throw new IllegalArgumentException("token䏿件ä¸å¹é "); } return storageBlobDTOs; fileUtil.validateTokenUsage(token); StorageBlob storageBlob = findStorageBlob(fileName); String path = storageBlob == null ? claims.get("path", String.class) : storageBlob.getPath(); if (!StringUtils.hasText(path)) { return new File(properties.getPath(), fileName); } return new File(new File(properties.getPath(), path), fileName); } private StorageBlobDTO buildStorageBlobDTO(MultipartFile file, MinioResult res, String bucketName, Long type) { StorageBlobDTO dto = new StorageBlobDTO(); dto.setContentType(file.getContentType()); dto.setBucketFilename(res.getBucketFileName()); dto.setOriginalFilename(res.getOriginalName()); dto.setByteSize(file.getSize()); dto.setResourceKey(IdUtils.simpleUUID()); dto.setBucketName(bucketName); dto.setUrl(minioUtils.getPreviewUrl(res.getBucketFileName(), bucketName, false)); dto.setDownloadUrl(minioUtils.getDownloadUrl(res.getBucketFileName(), bucketName)); if (type != null) { dto.setType(type); } return dto; private StorageBlob findStorageBlob(String fileName) { return storageBlobMapper.selectOne(new LambdaQueryWrapper<StorageBlob>() .eq(StorageBlob::getUidFilename, fileName) .last("limit 1")); } private void validateFileExtension(MultipartFile file) throws InvalidExtensionException { String filename = file.getOriginalFilename(); String extension = FilenameUtils.getExtension(filename).toLowerCase(); List<String> allowedExtensions = Arrays.asList( // å¾ç "jpg", "jpeg", "png", "gif", "bmp", "webp", "tiff", "ico", "svg", // ææ¡£ "pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "txt", "rtf", "md", "csv", "odt", // è§é¢ "mp4", "mov", "avi", "wmv", "flv", "mkv", "webm", "mpeg", "3gp", "MOV", // é³é¢ "mp3", "wav", "ogg", "aac", "flac", "m4a", "wma", "amr", // å缩å "zip", "rar", "7z", "tar", "gz", "bz2", "xz", // ç¼ç¨ä»£ç æä»¶ "java", "py", "js", "ts", "html", "css", "cpp", "c", "cs", "json", "xml", "sql", "yaml", "yml", "sh", "bat", // å®è£ ç¨åº & äºè¿å¶ "exe", "apk", "dmg", "msi", "bin", "iso", // 设计类 "psd", "ai", "xd", "sketch", "fig" ); if (!allowedExtensions.contains(extension)) { throw new BaseException("æä»¶ç±»åä¸è¢«å 许ï¼" + extension); private StorageBlobVO getStorageBlob(MultipartFile file, String originalFileName, String fileName, String relativePath) { StorageBlobVO storageBlob = new StorageBlobVO(); storageBlob.setResourceKey(UUID.randomUUID().toString().replace("-", "")); storageBlob.setContentType(file.getContentType()); storageBlob.setOriginalFilename(originalFileName); storageBlob.setUidFilename(fileName); storageBlob.setByteSize(file.getSize()); storageBlob.setPath(relativePath); storageBlob.setPreviewURL(fileUtil.buildSignedPreviewUrl(storageBlob)); storageBlob.setDownloadURL(fileUtil.buildSignedDownloadUrl(storageBlob)); int affectedRows = storageBlobMapper.insert(storageBlob); if (affectedRows <= 0) { throw new RuntimeException("æä»¶å æ°æ®ä¿å失败"); } return storageBlob; } @Override public int deleteStorageBlobs(StorageAttachment attachment) { List<StorageAttachment> attachments = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>() .eq(StorageAttachment::getRecordId, attachment.getRecordId()) .eq(StorageAttachment::getRecordType, attachment.getRecordType()) .eq(StorageAttachment::getName, attachment.getName())); List<Long> ids = attachments.stream().map(StorageAttachment::getStorageBlobId).collect(Collectors.toList()); if(CollectionUtils.isEmpty(ids)){ return 0; public String getDownloadFileName(String fileName) { StorageBlob storageBlob = findStorageBlob(fileName); if (storageBlob == null || !StringUtils.hasText(storageBlob.getOriginalFilename())) { return fileName; } List<StorageBlob> storageBlobs = storageBlobMapper.selectList(new LambdaQueryWrapper<StorageBlob>() .in(StorageBlob::getId, ids)); if (!storageBlobs.isEmpty()) { for (StorageBlob storageBlob : storageBlobs) { // ç§»é¤æ¡¶å æä»¶ minioUtils.removeObjectsResult(storageBlob.getBucketName(), storageBlob.getBucketName()); } } if (!ids.isEmpty()) { return storageBlobMapper.delete(new QueryWrapper<StorageBlob>().lambda().in(StorageBlob::getId, ids)); } return 0; return storageBlob.getOriginalFilename(); } } src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java
@@ -21,7 +21,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; src/main/java/com/ruoyi/basic/utils/FileUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,494 @@ package com.ruoyi.basic.utils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.ruoyi.basic.constant.ApplicationType; import com.ruoyi.basic.constant.RecordType; import com.ruoyi.basic.dto.StorageAttachmentDTO; import com.ruoyi.basic.dto.StorageBlobVO; import com.ruoyi.basic.mapper.StorageAttachmentMapper; import com.ruoyi.basic.mapper.StorageBlobMapper; import com.ruoyi.basic.pojo.StorageAttachment; import com.ruoyi.common.config.FileProperties; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @Component @RequiredArgsConstructor public class FileUtil { private final FileProperties properties; private final StorageAttachmentMapper storageAttachmentMapper; private final StorageBlobMapper storageBlobMapper; private final StringRedisTemplate stringRedisTemplate; private static final String TOKEN_USAGE_KEY_PREFIX = "file:token:usage:"; private static final DateTimeFormatter YEAR_PATH_FORMATTER = DateTimeFormatter.ofPattern("yyyy"); private static final DateTimeFormatter MONTH_DAY_PATH_FORMATTER = DateTimeFormatter.ofPattern("MMdd"); /** * ä¿åéä»¶ä¿¡æ¯ * * @param application æä»¶ç¨é * @param recordType å ³èè®°å½ç±»å * @param recordId å ³èè®°å½id * @param storageBlobVOS æä»¶ä¿¡æ¯ */ public void saveStorageAttachment(ApplicationType application, RecordType recordType, Long recordId, List<StorageBlobVO> storageBlobVOS) { if (CollectionUtils.isEmpty(storageBlobVOS)) { throw new RuntimeException("æä»¶ä¿¡æ¯ä¸è½ä¸ºç©º"); } if (!application.isValid()) { throw new RuntimeException("æä»¶ç¨éä¸è½ä¸ºç©º"); } if (!recordType.isValid()) { throw new RuntimeException("å ³èè®°å½ç±»åä¸è½ä¸ºç©º"); } if (recordId == null || recordId <= 0) { throw new RuntimeException("å ³èè®°å½idä¸è½ä¸ºç©º"); } // å 餿§éä»¶ä¿¡æ¯ deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId); List<StorageAttachment> storageAttachments = new ArrayList<>(); for (StorageBlobVO storageBlobVO : storageBlobVOS) { StorageAttachment storageAttachment = new StorageAttachment(); storageAttachment.setApplication(application.getType()); storageAttachment.setRecordType(recordType.getType()); storageAttachment.setRecordId(recordId); storageAttachment.setStorageBlobId(storageBlobVO.getId()); storageAttachment.setDeleted(0L); } // todo fileChange // storageAttachmentMapper.insert(storageAttachments); } /** * å é¤æä»¶ä¿¡æ¯ * * @param storageBlobIds æä»¶id */ public void deleteStorageBlobs(List<Long> storageBlobIds) { // todo fileChange // storageBlobMapper.deleteByIds(storageBlobIds); } /** * éè¿æä»¶å ³èidå é¤æä»¶ä¿¡æ¯ * * @param storageAttachmentIds æä»¶id */ public void deleteStorageBlobsByStorageAttachmentIds(List<Long> storageAttachmentIds) { // todo fileChange // List<StorageAttachment> storageAttachments = storageAttachmentMapper.selectByIds(storageAttachmentIds); // List<Long> storageBlobIds = storageAttachments.stream().map(StorageAttachment::getStorageBlobId).collect(Collectors.toList()); // deleteStorageBlobs(storageBlobIds); } /** * éè¿æä»¶ç¨éãå ³èè®°å½ç±»åãå ³èè®°å½idå é¤æä»¶ä¿¡æ¯ * * @param application æä»¶ç¨é * @param recordType å ³èè®°å½ç±»å * @param recordId å ³èè®°å½id */ public void deleteStorageBlobsByApplicationAndRecordTypeAndRecordId(ApplicationType application, RecordType recordType, Long recordId) { if (!application.isValid()) { throw new RuntimeException("æä»¶ç¨éä¸è½ä¸ºç©º"); } if (!recordType.isValid()) { throw new RuntimeException("å ³èè®°å½ç±»åä¸è½ä¸ºç©º"); } if (recordId == null || recordId <= 0) { throw new RuntimeException("å ³èè®°å½idä¸è½ä¸ºç©º"); } List<StorageAttachment> storageAttachments = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>() .eq(StorageAttachment::getRecordType, recordType.getType()) .eq(StorageAttachment::getRecordId, recordId) .eq(StorageAttachment::getApplication, application.getType())); if (CollectionUtils.isNotEmpty(storageAttachments)) { List<Long> storageAttachmentIds = storageAttachments.stream().map(StorageAttachment::getStorageBlobId) .collect(Collectors.toList()); deleteStorageBlobsByStorageAttachmentIds(storageAttachmentIds); } } /** * å é¤æä»¶å ³èä¿¡æ¯ * * @param storageAttachmentIds æä»¶å ³èid */ public void deleteStorageAttachmentsByStorageAttachmentIds(List<Long> storageAttachmentIds) { deleteStorageBlobsByStorageAttachmentIds(storageAttachmentIds); // todo fileChange // storageAttachmentMapper.deleteByIds(storageAttachmentIds); } public void deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordId(ApplicationType application, RecordType recordType, Long recordId) { if (!application.isValid()) { throw new RuntimeException("æä»¶ç¨éä¸è½ä¸ºç©º"); } if (!recordType.isValid()) { throw new RuntimeException("å ³èè®°å½ç±»åä¸è½ä¸ºç©º"); } if (recordId == null || recordId <= 0) { throw new RuntimeException("å ³èè®°å½idä¸è½ä¸ºç©º"); } deleteStorageBlobsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId); storageAttachmentMapper.delete(new LambdaQueryWrapper<StorageAttachment>() .eq(StorageAttachment::getRecordType, recordType.getType()) .eq(StorageAttachment::getRecordId, recordId) .eq(StorageAttachment::getApplication, application.getType())); } /** * éè¿æä»¶å ³èidè·åæä»¶ä¿¡æ¯ * * @param storageAttachmentIds æä»¶id */ public List<StorageAttachment> getStorageAttachmentsByStorageAttachmentIds(List<Long> storageAttachmentIds) { if (CollectionUtils.isEmpty(storageAttachmentIds)) { throw new RuntimeException("æä»¶idä¸è½ä¸ºç©º"); } // todo fileChange // return storageAttachmentMapper.selectByIds(storageAttachmentIds); return new ArrayList<>(); } /** * éè¿æä»¶ç¨éãå ³èè®°å½ç±»åãå ³èè®°å½idè·åæä»¶å ³èä¿¡æ¯ * * @param application æä»¶ç¨é * @param recordType å ³èè®°å½ç±»å * @param recordId å ³èè®°å½id */ public List<StorageAttachment> getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(ApplicationType application, RecordType recordType, Long recordId) { if (!application.isValid()) { throw new RuntimeException("æä»¶ç¨éä¸è½ä¸ºç©º"); } if (!recordType.isValid()) { throw new RuntimeException("å ³èè®°å½ç±»åä¸è½ä¸ºç©º"); } if (recordId == null || recordId <= 0) { throw new RuntimeException("å ³èè®°å½idä¸è½ä¸ºç©º"); } return storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>() .eq(StorageAttachment::getRecordType, recordType.getType()) .eq(StorageAttachment::getRecordId, recordId) .eq(StorageAttachment::getApplication, application.getType())); } /** * éè¿æä»¶å ³èidè·åæä»¶ä¿¡æ¯ * * @param storageAttachmentIds æä»¶id */ public List<StorageBlobVO> getStorageBlobDTOsByStorageAttachmentIds(List<Long> storageAttachmentIds) { List<StorageAttachment> storageAttachments = getStorageAttachmentsByStorageAttachmentIds(storageAttachmentIds); if (CollectionUtils.isEmpty(storageAttachments)) { return null; } List<Long> storageBlobIds = storageAttachments.stream().map(StorageAttachment::getStorageBlobId).collect(Collectors.toList()); // todo fileChange // List<StorageBlob> storageBlobs = storageBlobMapper.selectByIds(storageBlobIds); // List<StorageBlobDTO> storageBlobDTOS = new ArrayList<>(); // for (StorageBlob storageBlob : storageBlobs) { // StorageBlobDTO storageBlobDTO = new StorageBlobDTO(); // BeanUtils.copyProperties(storageBlob, storageBlobDTO); // storageBlobDTO.setPreviewURL(buildSignedPreviewUrl(storageBlobDTO)); // storageBlobDTO.setDownloadURL(buildSignedDownloadUrl(storageBlobDTO)); // storageBlobDTOS.add(storageBlobDTO); // } return new ArrayList<>(); } /** * éè¿æä»¶å ³èidè·åæä»¶ä¿¡æ¯åå¨è¿ææ¶é´ * * @param storageAttachmentIds æä»¶id * @param expired è¿ææ¶é´ */ public List<StorageBlobVO> getStorageBlobDTOsByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) { List<StorageAttachment> storageAttachments = getStorageAttachmentsByStorageAttachmentIds(storageAttachmentIds); if (CollectionUtils.isEmpty(storageAttachments)) { return null; } List<Long> storageBlobIds = storageAttachments.stream().map(StorageAttachment::getStorageBlobId).collect(Collectors.toList()); // todo fileChange // List<StorageBlob> storageBlobs = storageBlobMapper.selectByIds(storageBlobIds); // List<StorageBlobDTO> storageBlobDTOS = new ArrayList<>(); // for (StorageBlob storageBlob : storageBlobs) { // StorageBlobDTO storageBlobDTO = new StorageBlobDTO(); // BeanUtils.copyProperties(storageBlob, storageBlobDTO); // storageBlobDTO.setPreviewURL(buildSignedUrl(storageBlobDTO, "/preview/", expired)); // storageBlobDTO.setDownloadURL(buildSignedUrl(storageBlobDTO, "/download/", expired)); // storageBlobDTOS.add(storageBlobDTO); // } // return storageBlobDTOS; return new ArrayList<>(); } /** * éè¿æä»¶å ³èidè·åæä»¶ä¿¡æ¯ * * @param storageAttachmentIds æä»¶id */ public List<StorageAttachmentDTO> getStorageAttachmentDTOsByStorageAttachmentIds(List<Long> storageAttachmentIds) { List<StorageAttachment> storageAttachments = getStorageAttachmentsByStorageAttachmentIds(storageAttachmentIds); if (CollectionUtils.isEmpty(storageAttachments)) { return new ArrayList<>(); } List<StorageAttachmentDTO> storageAttachmentDTOS = new ArrayList<>(); for (StorageAttachment storageAttachment : storageAttachments) { StorageAttachmentDTO storageAttachmentDTO = new StorageAttachmentDTO(); BeanUtils.copyProperties(storageAttachment, storageAttachmentDTO); List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId())); if (CollectionUtils.isEmpty(storageBlobVOS)) { storageAttachmentDTO.setStorageBlobVOS(new ArrayList<>()); } else { storageAttachmentDTO.setStorageBlobVOS(storageBlobVOS); } storageAttachmentDTOS.add(storageAttachmentDTO); } return storageAttachmentDTOS; } /** * éè¿æä»¶å ³èidè·åæä»¶ä¿¡æ¯åå¨è¿ææ¶é´ * * @param storageAttachmentIds æä»¶id * @param expired è¿ææ¶é´ */ public List<StorageAttachmentDTO> getStorageAttachmentDTOsByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) { List<StorageAttachment> storageAttachments = getStorageAttachmentsByStorageAttachmentIds(storageAttachmentIds); if (CollectionUtils.isEmpty(storageAttachments)) { return new ArrayList<>(); } List<StorageAttachmentDTO> storageAttachmentDTOS = new ArrayList<>(); for (StorageAttachment storageAttachment : storageAttachments) { StorageAttachmentDTO storageAttachmentDTO = new StorageAttachmentDTO(); BeanUtils.copyProperties(storageAttachment, storageAttachmentDTO); List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()), expired); if (CollectionUtils.isEmpty(storageBlobVOS)) { storageAttachmentDTO.setStorageBlobVOS(new ArrayList<>()); } else { storageAttachmentDTO.setStorageBlobVOS(storageBlobVOS); } storageAttachmentDTOS.add(storageAttachmentDTO); } return storageAttachmentDTOS; } /** * éè¿æä»¶å ³èidè·åæä»¶ä¿¡æ¯ * * @param application åºç¨ * @param recordType è®°å½ç±»å * @param recordId è®°å½id */ public List<StorageAttachmentDTO> getStorageAttachmentDTOsByApplicationAndRecordTypeAndRecordId(ApplicationType application, RecordType recordType, Long recordId) { List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId); if (CollectionUtils.isEmpty(storageAttachments)) { return new ArrayList<>(); } List<StorageAttachmentDTO> storageAttachmentDTOS = new ArrayList<>(); for (StorageAttachment storageAttachment : storageAttachments) { StorageAttachmentDTO storageAttachmentDTO = new StorageAttachmentDTO(); BeanUtils.copyProperties(storageAttachment, storageAttachmentDTO); List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId())); if (CollectionUtils.isEmpty(storageBlobVOS)) { storageAttachmentDTO.setStorageBlobVOS(new ArrayList<>()); } else { storageAttachmentDTO.setStorageBlobVOS(storageBlobVOS); } storageAttachmentDTOS.add(storageAttachmentDTO); } return storageAttachmentDTOS; } /** * éè¿æä»¶å ³èidè·åæä»¶ä¿¡æ¯åå¨è¿ææ¶é´ * * @param application åºç¨ * @param recordType è®°å½ç±»å * @param recordId è®°å½id * @param expired è¿ææ¶é´ */ public List<StorageAttachmentDTO> getStorageAttachmentDTOsByApplicationAndRecordTypeAndRecordId(ApplicationType application, RecordType recordType, Long recordId, BigDecimal expired) { List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId); if (CollectionUtils.isEmpty(storageAttachments)) { return new ArrayList<>(); } List<StorageAttachmentDTO> storageAttachmentDTOS = new ArrayList<>(); for (StorageAttachment storageAttachment : storageAttachments) { StorageAttachmentDTO storageAttachmentDTO = new StorageAttachmentDTO(); BeanUtils.copyProperties(storageAttachment, storageAttachmentDTO); List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()), expired); if (CollectionUtils.isEmpty(storageBlobVOS)) { storageAttachmentDTO.setStorageBlobVOS(new ArrayList<>()); } else { storageAttachmentDTO.setStorageBlobVOS(storageBlobVOS); } storageAttachmentDTOS.add(storageAttachmentDTO); } return storageAttachmentDTOS; } /** * éè¿æä»¶å ³èidè·åæä»¶é¢è§å°å * * @param storageAttachmentIds æä»¶å ³èid */ public List<String> getFilePreviewURLByStorageAttachmentIds(List<Long> storageAttachmentIds) { List<String> res = new ArrayList<>(); List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(storageAttachmentIds); for (StorageBlobVO storageBlobVO : storageBlobVOS) { res.add(buildSignedPreviewUrl(storageBlobVO)); } return res; } /** * éè¿æä»¶å ³èidè·åæä»¶é¢è§å°ååå¨è¿ææ¶é´ * * @param storageAttachmentIds æä»¶å ³èid * @param expired è¿ææ¶é´ */ public List<String> getFilePreviewURLByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) { List<String> res = new ArrayList<>(); List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(storageAttachmentIds); for (StorageBlobVO storageBlobVO : storageBlobVOS) { res.add(buildSignedUrl(storageBlobVO, "/preview/", expired)); } return res; } /** * éè¿æä»¶å ³èidè·åæä»¶ä¸è½½å°å * * @param storageAttachmentIds æä»¶å ³èid */ public List<String> getFileDownloadURLByStorageAttachmentIds(List<Long> storageAttachmentIds) { List<String> res = new ArrayList<>(); List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(storageAttachmentIds); for (StorageBlobVO storageBlobVO : storageBlobVOS) { res.add(buildSignedDownloadUrl(storageBlobVO)); } return res; } /** * éè¿æä»¶å ³èidè·åæä»¶ä¸è½½å°ååå¨è¿ææ¶é´ * * @param storageAttachmentIds æä»¶å ³èid * @param expired è¿ææ¶é´ */ public List<String> getFileDownloadURLByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) { List<String> res = new ArrayList<>(); List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(storageAttachmentIds); for (StorageBlobVO storageBlobVO : storageBlobVOS) { res.add(buildSignedUrl(storageBlobVO, "/download/", expired)); } return res; } public String buildSignedPreviewUrl(StorageBlobVO storageBlob) { return buildSignedUrl(storageBlob, "/preview/", properties.getExpired()); } public String buildSignedDownloadUrl(StorageBlobVO storageBlob) { return buildSignedUrl(storageBlob, "/download/", properties.getExpired()); } /** * æå»ºå¸¦ç¾åçURL * * @param storageBlob æä»¶å æ°æ® * @param actionPath æä½è·¯å¾ "/preview/" or "/download/" * @param expired è¿ææ¶é´ 妿ä¸é ç½®ï¼ä¸ä¼ åï¼å°ä½¿ç¨é»è®¤å¼120åé * @return 带ç¾åçURL */ public String buildSignedUrl(StorageBlobVO storageBlob, String actionPath, BigDecimal expired) { if (!Arrays.asList("/preview/", "/download/").contains(actionPath)) { throw new IllegalArgumentException("æä½è·¯å¾åæ°é误"); } if (storageBlob == null || !StringUtils.hasText(storageBlob.getUidFilename())) { throw new IllegalArgumentException("æä»¶ä¿¡æ¯ä¸å®æ´"); } long now = System.currentTimeMillis(); long expiredMillis = expired.multiply(new BigDecimal("60000")).longValue(); if (expiredMillis <= 0L) { expiredMillis = 2L * 60L * 60L * 1000L; } Date issuedAt = new Date(now); Date expiration = new Date(now + expiredMillis); String token = Jwts.builder() .setSubject(storageBlob.getUidFilename()) .setIssuedAt(issuedAt) .setExpiration(expiration) .claim("path", storageBlob.getPath()) .claim("resourceKey", storageBlob.getResourceKey()) .signWith(SignatureAlgorithm.HS256, properties.getJwtSecret()) .compact(); cacheTokenUsage(token, expiredMillis); String domain = StringUtils.trimTrailingCharacter(properties.getDomain(), '/'); String prefix = properties.getUrlPrefix().startsWith("/") ? properties.getUrlPrefix() : "/" + properties.getUrlPrefix(); String normalizedActionPath = StringUtils.hasText(actionPath) ? actionPath : "/preview/"; if (!normalizedActionPath.startsWith("/")) { normalizedActionPath = "/" + normalizedActionPath; } if (!normalizedActionPath.endsWith("/")) { normalizedActionPath = normalizedActionPath + "/"; } return domain + prefix + normalizedActionPath + storageBlob.getUidFilename() + "?token=" + token; } private void cacheTokenUsage(String token, long expiredMillis) { if (!StringUtils.hasText(token)) { return; } long ttl = expiredMillis > 0L ? expiredMillis : 2L * 60L * 60L * 1000L; stringRedisTemplate.opsForValue().set(buildTokenUsageKey(token), "0", ttl, TimeUnit.MILLISECONDS); } private String buildTokenUsageKey(String token) { return TOKEN_USAGE_KEY_PREFIX + token; } public String buildRelativePath() { LocalDate now = LocalDate.now(); return now.format(YEAR_PATH_FORMATTER) + "/" + now.format(MONTH_DAY_PATH_FORMATTER); } public void validateTokenUsage(String token) { String redisKey = buildTokenUsageKey(token); String currentCountValue = stringRedisTemplate.opsForValue().get(redisKey); if (!StringUtils.hasText(currentCountValue)) { throw new IllegalArgumentException("龿¥å·²è¿ææè¾¾å°ä½¿ç¨æ¬¡æ°å¤±æ"); } long currentCount = Long.parseLong(currentCountValue); int limit = resolveLimit(); if (currentCount >= limit) { stringRedisTemplate.delete(redisKey); throw new IllegalArgumentException("龿¥è¾¾å°ä½¿ç¨æ¬¡æ°å¤±æ"); } Long updatedCount = stringRedisTemplate.opsForValue().increment(redisKey); if (updatedCount != null && updatedCount >= limit) { stringRedisTemplate.delete(redisKey); } } private int resolveLimit() { return properties.getUseLimit() == null || properties.getUseLimit() <= 0 ? 10 : properties.getUseLimit(); } } src/main/java/com/ruoyi/collaborativeApproval/controller/DutyPlanController.java
@@ -14,7 +14,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java
@@ -19,7 +19,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementController.java
@@ -16,7 +16,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementFileController.java
@@ -9,7 +9,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import jakarta.annotation.Resource; import java.util.List; /** src/main/java/com/ruoyi/collaborativeApproval/controller/SealApplicationManagementController.java
@@ -16,7 +16,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.Arrays; import java.util.List; src/main/java/com/ruoyi/collaborativeApproval/service/DutyPlanService.java
@@ -6,7 +6,7 @@ import com.ruoyi.collaborativeApproval.dto.DutyPlanDTO; import com.ruoyi.collaborativeApproval.pojo.DutyPlan; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; src/main/java/com/ruoyi/collaborativeApproval/service/impl/DutyPlanServiceImpl.java
@@ -11,7 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; src/main/java/com/ruoyi/collaborativeApproval/service/impl/RulesRegulationsManagementFileServiceImpl.java
@@ -1,7 +1,6 @@ package com.ruoyi.collaborativeApproval.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.collaborativeApproval.pojo.RulesRegulationsManagementFile; import com.ruoyi.collaborativeApproval.mapper.RulesRegulationsManagementFileMapper; @@ -10,7 +9,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.management.Query; /** * <p> src/main/java/com/ruoyi/common/aop/DataScopeAop.java
@@ -10,8 +10,8 @@ import org.springframework.web.multipart.MultipartFile; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; import java.lang.reflect.Array; import java.lang.reflect.Field; import java.util.Collection; @@ -150,7 +150,7 @@ || ServletRequest.class.isAssignableFrom(type) || ServletResponse.class.isAssignableFrom(type) || packageName.startsWith("java.") || packageName.startsWith("javax.") || packageName.startsWith("jakarta.") || packageName.startsWith("jakarta.") || packageName.startsWith("org.springframework.") || packageName.startsWith("com.baomidou."); src/main/java/com/ruoyi/common/config/FileProperties.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package com.ruoyi.common.config; import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import java.math.BigDecimal; @Configuration @Component @ConfigurationProperties(prefix = "file") @Data public class FileProperties { private String path = "D:/upload"; private String urlPrefix = "/file"; private String domain = "http://localhost:8080"; private BigDecimal expired = new BigDecimal("120"); private Integer useLimit = 10; // 令çç§é¥ @Value("${token.secret}") private String jwtSecret; } src/main/java/com/ruoyi/common/constant/Constants.java
@@ -168,6 +168,6 @@ /** * 宿¶ä»»å¡è¿è§çå符 */ public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", public static final String[] JOB_ERROR_STR = { "java.net.URL", "jakarta.naming.InitialContext", "org.yaml.snakeyaml", "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.framework.config", "com.ruoyi.project.tool" }; } src/main/java/com/ruoyi/common/filter/RepeatableFilter.java
@@ -1,13 +1,13 @@ package com.ruoyi.common.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import jakarta.servlet.Filter; import jakarta.servlet.FilterChain; import jakarta.servlet.FilterConfig; import jakarta.servlet.ServletException; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; import jakarta.servlet.http.HttpServletRequest; import org.springframework.http.MediaType; import com.ruoyi.common.utils.StringUtils; src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java
@@ -4,11 +4,11 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStreamReader; import javax.servlet.ReadListener; import javax.servlet.ServletInputStream; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import jakarta.servlet.ReadListener; import jakarta.servlet.ServletInputStream; import jakarta.servlet.ServletResponse; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequestWrapper; import com.ruoyi.common.utils.http.HttpHelper; import com.ruoyi.common.constant.Constants; src/main/java/com/ruoyi/common/filter/XssFilter.java
@@ -3,14 +3,14 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.Filter; import jakarta.servlet.FilterChain; import jakarta.servlet.FilterConfig; import jakarta.servlet.ServletException; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.enums.HttpMethod; src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
@@ -2,10 +2,10 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import javax.servlet.ReadListener; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import jakarta.servlet.ReadListener; import jakarta.servlet.ServletInputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequestWrapper; import org.apache.commons.io.IOUtils; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; src/main/java/com/ruoyi/common/utils/MinioUtils.java
@@ -18,8 +18,8 @@ import org.springframework.util.FastByteArrayOutputStream; import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; import java.io.InputStream; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; src/main/java/com/ruoyi/common/utils/ServletUtils.java
@@ -7,10 +7,10 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import jakarta.servlet.ServletRequest; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java
@@ -1,9 +1,9 @@ package com.ruoyi.common.utils.bean; import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import javax.validation.Validator; import jakarta.validation.ConstraintViolation; import jakarta.validation.ConstraintViolationException; import jakarta.validation.Validator; /** * beanå¯¹è±¡å±æ§éªè¯ src/main/java/com/ruoyi/common/utils/excel/ExcelUtils.java
@@ -15,8 +15,8 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; import java.io.*; import java.lang.reflect.Field; import java.math.BigDecimal; src/main/java/com/ruoyi/common/utils/file/FileUtils.java
@@ -9,8 +9,8 @@ import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ArrayUtils; src/main/java/com/ruoyi/common/utils/http/HttpHelper.java
@@ -5,7 +5,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import javax.servlet.ServletRequest; import jakarta.servlet.ServletRequest; import org.apache.commons.lang3.exception.ExceptionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
@@ -1,27 +1,19 @@ package com.ruoyi.common.utils.http; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.utils.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.MediaType; import javax.net.ssl.*; import java.io.*; import java.net.ConnectException; import java.net.SocketTimeoutException; import java.net.URL; import java.net.URLConnection; import java.nio.charset.StandardCharsets; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.utils.StringUtils; import org.springframework.http.MediaType; /** * éç¨httpåéæ¹æ³ src/main/java/com/ruoyi/common/utils/ip/IpUtils.java
@@ -2,7 +2,7 @@ import java.net.InetAddress; import java.net.UnknownHostException; import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -23,7 +23,7 @@ import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.RegExUtils; import org.apache.commons.lang3.reflect.FieldUtils; src/main/java/com/ruoyi/common/vo/SimpleFileVo.java
@@ -5,7 +5,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull; import java.io.Serializable; /** src/main/java/com/ruoyi/common/xss/Xss.java
@@ -1,7 +1,7 @@ package com.ruoyi.common.xss; import javax.validation.Constraint; import javax.validation.Payload; import jakarta.validation.Constraint; import jakarta.validation.Payload; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; src/main/java/com/ruoyi/common/xss/XssValidator.java
@@ -1,8 +1,8 @@ package com.ruoyi.common.xss; import com.ruoyi.common.utils.StringUtils; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; import java.util.regex.Matcher; import java.util.regex.Pattern; src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java
@@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
@@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List; src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
@@ -13,7 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.Arrays; @Api(tags = "设å¤ä¿å »") src/main/java/com/ruoyi/device/controller/DeviceMaintenanceFileController.java
@@ -9,7 +9,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import jakarta.annotation.Resource; import java.util.List; /** src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
@@ -12,7 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.Arrays; @Api(tags = "è®¾å¤æ¥ä¿®ç®¡ç") src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
@@ -8,7 +8,7 @@ import com.ruoyi.framework.web.domain.AjaxResult; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; public interface IDeviceLedgerService extends IService<DeviceLedger> { src/main/java/com/ruoyi/device/service/IDeviceMaintenanceService.java
@@ -7,7 +7,7 @@ import com.ruoyi.device.pojo.DeviceMaintenance; import com.ruoyi.framework.web.domain.AjaxResult; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; public interface IDeviceMaintenanceService extends IService<DeviceMaintenance> { src/main/java/com/ruoyi/device/service/IDeviceRepairService.java
@@ -7,7 +7,7 @@ import com.ruoyi.device.pojo.DeviceRepair; import com.ruoyi.framework.web.domain.AjaxResult; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; public interface IDeviceRepairService extends IService<DeviceRepair> { src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
@@ -23,7 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
@@ -21,7 +21,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
@@ -27,7 +27,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; src/main/java/com/ruoyi/equipmentenergyconsumption/controller/ElectricityConsumptionAreaController.java
@@ -19,7 +19,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EnergyPeriodController.java
@@ -16,7 +16,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java
@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
@@ -2,8 +2,8 @@ import java.util.Collection; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.lang3.ArrayUtils; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; src/main/java/com/ruoyi/framework/config/DruidConfig.java
@@ -1,28 +1,25 @@ package com.ruoyi.framework.config; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.sql.DataSource; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceBuilder; import com.alibaba.druid.spring.boot3.autoconfigure.properties.DruidStatProperties; import com.alibaba.druid.util.Utils; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.framework.aspectj.lang.enums.DataSourceType; import com.ruoyi.framework.config.properties.DruidProperties; import com.ruoyi.framework.datasource.DynamicDataSource; import jakarta.servlet.*; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; import com.alibaba.druid.util.Utils; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.framework.aspectj.lang.enums.DataSourceType; import com.ruoyi.framework.config.properties.DruidProperties; import com.ruoyi.framework.datasource.DynamicDataSource; import javax.sql.DataSource; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * druid é ç½®å¤æ°æ®æº @@ -96,7 +93,7 @@ Filter filter = new Filter() { @Override public void init(javax.servlet.FilterConfig filterConfig) throws ServletException public void init(jakarta.servlet.FilterConfig filterConfig) throws ServletException { } @Override src/main/java/com/ruoyi/framework/config/FilterConfig.java
@@ -9,7 +9,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.servlet.DispatcherType; import jakarta.servlet.DispatcherType; import java.util.HashMap; import java.util.Map; src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
@@ -18,8 +18,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; import java.sql.SQLException; /** * MyBatis Plus config. */ @@ -48,8 +46,7 @@ PaginationInnerInterceptor interceptor = new PaginationInnerInterceptor(DbType.MYSQL) { @Override public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException { RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) { IPage<?> page = ParameterUtils.findPage(parameter).orElse(null); if (page != null && page.getSize() <= 0) { return; src/main/java/com/ruoyi/framework/config/ScheduleConfig.java
@@ -3,7 +3,7 @@ //import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Configuration; //import org.springframework.scheduling.quartz.SchedulerFactoryBean; //import javax.sql.DataSource; //import jakarta.sql.DataSource; //import java.util.Properties; // ///** src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -108,16 +108,48 @@ // åºäºtokenï¼æä»¥ä¸éè¦session .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) // 注解æ è®°å 许å¿å访é®çurl .authorizeHttpRequests((requests) -> { permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll()); // 对äºç»å½login 注åregister éªè¯ç captchaImage å 许å¿åè®¿é® requests.antMatchers("/login", "/register", "/captchaImage","/loginCheck","/userLoginFacotryList/**","/loginCheckFactory").permitAll() // éæèµæºï¼å¯å¿åè®¿é® .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**","/javaWork/**","/**/*.pdf").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() // é¤ä¸é¢å¤çææè¯·æ±å ¨é¨éè¦é´æè®¤è¯ .anyRequest().authenticated(); }) // todo aiçæï¼ åæè¥æé®é¢è¯·èªè¡ä¼å .authorizeHttpRequests(requests -> { // 1. æ¾è¡å¨æé ç½®ç URL permitAllUrl.getUrls().forEach(url -> requests.requestMatchers(url).permitAll() ); // 2. ç»å½ / 注å / éªè¯ç / çæ¾è¡ requests.requestMatchers( "/login", "/register", "/captchaImage", "/loginCheck", "/userLoginFacotryList/**", "/loginCheckFactory" ).permitAll(); // 3. éæèµæºæ¾è¡ requests.requestMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**", "/javaWork/**", "/**/*.pdf" ).permitAll(); // 4. swagger / druid æ¾è¡ requests.requestMatchers( "/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**" ).permitAll(); // 5. å ¶ä»å ¨é¨æ¦æª requests.anyRequest().authenticated(); }) // æ·»å Logout filter .logout(logout -> logout.logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler)) // æ·»å JWT filter src/main/java/com/ruoyi/framework/config/ServerConfig.java
@@ -1,6 +1,6 @@ package com.ruoyi.framework.config; import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest; import org.springframework.stereotype.Component; import com.ruoyi.common.utils.ServletUtils; src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java
@@ -1,11 +1,6 @@ package com.ruoyi.framework.config.properties; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.regex.Pattern; import com.ruoyi.framework.aspectj.lang.annotation.Anonymous; import org.apache.commons.lang3.RegExUtils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.InitializingBean; @@ -16,7 +11,9 @@ import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import com.ruoyi.framework.aspectj.lang.annotation.Anonymous; import java.util.*; import java.util.regex.Pattern; /** * 设置Anonymous注解å 许å¿å访é®çurl @@ -40,18 +37,36 @@ RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class); Map<RequestMappingInfo, HandlerMethod> map = mapping.getHandlerMethods(); // map.keySet().forEach(info -> { // HandlerMethod handlerMethod = map.get(info); // // // è·åæ¹æ³ä¸è¾¹ç注解 æ¿ä»£path variable 为 * // Anonymous method = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class); // Optional.ofNullable(method).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns()) // .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK)))); // // // è·åç±»ä¸è¾¹ç注解, æ¿ä»£path variable 为 * // Anonymous controller = AnnotationUtils.findAnnotation(handlerMethod.getBeanType(), Anonymous.class); // Optional.ofNullable(controller).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns()) // .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK)))); // }); map.keySet().forEach(info -> { HandlerMethod handlerMethod = map.get(info); // è·åæ¹æ³ä¸çå¿åè®¿é®æ³¨è§£ Anonymous anonymous = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class); if (Objects.nonNull(anonymous)) { // éç¹ï¼Spring Boot 3 å ¼å®¹æ§åæ³ Set<String> patterns = new HashSet<>(); if (info.getPatternsCondition() != null) { patterns.addAll(info.getPatternsCondition().getPatterns()); } if (info.getPathPatternsCondition() != null) { patterns.addAll(info.getPathPatternsCondition().getPatternValues()); } // è·åæ¹æ³ä¸è¾¹ç注解 æ¿ä»£path variable 为 * Anonymous method = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class); Optional.ofNullable(method).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns()) .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK)))); // è·åç±»ä¸è¾¹ç注解, æ¿ä»£path variable 为 * Anonymous controller = AnnotationUtils.findAnnotation(handlerMethod.getBeanType(), Anonymous.class); Optional.ofNullable(controller).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns()) .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK)))); patterns.forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, "*"))); } }); } src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java
@@ -1,9 +1,10 @@ package com.ruoyi.framework.datasource; import java.util.Map; import javax.sql.DataSource; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; import javax.sql.DataSource; import java.util.Map; /** * å¨ææ°æ®æº * src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java
@@ -1,8 +1,8 @@ package com.ruoyi.framework.interceptor; import java.lang.reflect.Method; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
@@ -3,7 +3,7 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; src/main/java/com/ruoyi/framework/manager/ShutdownManager.java
@@ -1,9 +1,9 @@ package com.ruoyi.framework.manager; import jakarta.annotation.PreDestroy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.annotation.PreDestroy; /** * ç¡®ä¿åºç¨éåºæ¶è½å ³éåå°çº¿ç¨ src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
@@ -1,10 +1,10 @@ package com.ruoyi.framework.security.filter; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java
@@ -2,8 +2,8 @@ import java.io.IOException; import java.io.Serializable; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.stereotype.Component; src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java
@@ -1,9 +1,9 @@ package com.ruoyi.framework.security.handle; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.core.Authentication; src/main/java/com/ruoyi/framework/security/service/SysLoginService.java
@@ -1,6 +1,6 @@ package com.ruoyi.framework.security.service; import javax.annotation.Resource; import jakarta.annotation.Resource; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.project.system.mapper.SysUserMapper; src/main/java/com/ruoyi/framework/security/service/TokenService.java
@@ -1,35 +1,36 @@ package com.ruoyi.framework.security.service; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.project.system.domain.SysUserDept; import com.ruoyi.project.system.mapper.SysUserDeptMapper; 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.stereotype.Component; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.common.utils.ip.IpUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.framework.redis.RedisCache; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.project.system.domain.SysRole; import eu.bitwalker.useragentutils.UserAgent; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.framework.redis.RedisCache; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.project.system.domain.SysRole; import com.ruoyi.project.system.domain.SysUserDept; import com.ruoyi.project.system.mapper.SysUserDeptMapper; import eu.bitwalker.useragentutils.UserAgent; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.security.Keys; import jakarta.servlet.http.HttpServletRequest; 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.stereotype.Component; import org.springframework.util.CollectionUtils; import javax.crypto.SecretKey; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; /** * tokenéªè¯å¤ç @@ -160,74 +161,74 @@ { loginUser.setLoginTime(System.currentTimeMillis()); loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); loginUser.setDeptIds(getDeptIdsByUserId(loginUser.getUserId())); if (loginUser.getDeptIds() != null && loginUser.getDeptIds().length > 0) { loginUser.setCurrentDeptId(loginUser.getDeptIds()[0]); } loginUser.setDataScope(resolveDataScope(loginUser)); loginUser.setDeptIds(getDeptIdsByUserId(loginUser.getUserId())); if (loginUser.getDeptIds() != null && loginUser.getDeptIds().length > 0) { loginUser.setCurrentDeptId(loginUser.getDeptIds()[0]); } loginUser.setDataScope(resolveDataScope(loginUser)); // æ ¹æ®uuidå°loginUserç¼å String userKey = getTokenKey(loginUser.getToken()); redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); } public String resolveDataScope(LoginUser loginUser) { if (loginUser == null || loginUser.getUser() == null || CollectionUtils.isEmpty(loginUser.getUser().getRoles())) { return null; } boolean hasCustom = false; boolean hasDeptAndChild = false; boolean hasDept = false; boolean hasSelf = false; for (SysRole role : loginUser.getUser().getRoles()) { if (role == null || !"0".equals(role.getStatus())) { continue; } if ("1".equals(role.getDataScope())) { return "1"; } if ("2".equals(role.getDataScope())) { hasCustom = true; } else if ("4".equals(role.getDataScope())) { hasDeptAndChild = true; } else if ("3".equals(role.getDataScope())) { hasDept = true; } else if ("5".equals(role.getDataScope())) { hasSelf = true; } } if (hasCustom) { return "2"; } if (hasDeptAndChild) { return "4"; } if (hasDept) { return "3"; } if (hasSelf) { return "5"; } return null; } public Long[] getDeptIdsByUserId(Long userId){ public String resolveDataScope(LoginUser loginUser) { if (loginUser == null || loginUser.getUser() == null || CollectionUtils.isEmpty(loginUser.getUser().getRoles())) { return null; } boolean hasCustom = false; boolean hasDeptAndChild = false; boolean hasDept = false; boolean hasSelf = false; for (SysRole role : loginUser.getUser().getRoles()) { if (role == null || !"0".equals(role.getStatus())) { continue; } if ("1".equals(role.getDataScope())) { return "1"; } if ("2".equals(role.getDataScope())) { hasCustom = true; } else if ("4".equals(role.getDataScope())) { hasDeptAndChild = true; } else if ("3".equals(role.getDataScope())) { hasDept = true; } else if ("5".equals(role.getDataScope())) { hasSelf = true; } } if (hasCustom) { return "2"; } if (hasDeptAndChild) { return "4"; } if (hasDept) { return "3"; } if (hasSelf) { return "5"; } return null; } public Long[] getDeptIdsByUserId(Long userId){ LambdaQueryWrapper<SysUserDept> sysUserDeptLambdaQueryWrapper = new LambdaQueryWrapper<>(); sysUserDeptLambdaQueryWrapper.eq(SysUserDept::getUserId, userId); List<SysUserDept> sysUserDept = sysUserDeptMapper.selectList(sysUserDeptLambdaQueryWrapper); @@ -252,6 +253,11 @@ loginUser.setOs(userAgent.getOperatingSystem().getName()); } private SecretKey getSigningKey() { byte[] keyBytes = secret.getBytes(StandardCharsets.UTF_8); return Keys.hmacShaKeyFor(keyBytes); } /** * 仿°æ®å£°æçæä»¤ç * @@ -260,10 +266,10 @@ */ private String createToken(Map<String, Object> claims) { String token = Jwts.builder() .setClaims(claims) .signWith(SignatureAlgorithm.HS512, secret).compact(); return token; return Jwts.builder() .claims(claims) // 注æï¼æ°çæ¹æ³ååäºï¼ä¸åæ¯ setClaims .signWith(getSigningKey(), Jwts.SIG.HS512) // ä½¿ç¨æ°çç¾å常é .compact(); } /** @@ -275,9 +281,10 @@ private Claims parseToken(String token) { return Jwts.parser() .setSigningKey(secret) .parseClaimsJws(token) .getBody(); .verifyWith(getSigningKey()) // æ°çä½¿ç¨ verifyWith .build() .parseSignedClaims(token) .getPayload(); } /** src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
@@ -1,6 +1,6 @@ package com.ruoyi.framework.web.exception; import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.access.AccessDeniedException; src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java
@@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; /** src/main/java/com/ruoyi/inspectiontask/controller/TimingTaskController.java
@@ -16,7 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; /** * @author :yys src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java
@@ -1,7 +1,5 @@ package com.ruoyi.inspectiontask.dto; import com.ruoyi.basic.dto.StorageBlobDTO; import com.ruoyi.basic.pojo.StorageAttachment; import com.ruoyi.inspectiontask.pojo.InspectionTask; import com.ruoyi.sales.pojo.CommonFile; import lombok.Data; src/main/java/com/ruoyi/inspectiontask/dto/QrCodeScanRecordDto.java
@@ -1,7 +1,7 @@ package com.ruoyi.inspectiontask.dto; import com.ruoyi.basic.dto.StorageBlobDTO; import com.ruoyi.basic.dto.StorageBlobVO; import com.ruoyi.inspectiontask.pojo.QrCode; import com.ruoyi.inspectiontask.pojo.QrCodeScanRecord; import lombok.Data; @@ -15,6 +15,6 @@ private String scanner; private List<StorageBlobDTO> storageBlobDTO; private List<StorageBlobVO> storageBlobVO; } src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
@@ -5,10 +5,9 @@ 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.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.common.enums.FileNameType; @@ -36,9 +35,6 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import java.util.stream.Collectors; import static com.ruoyi.common.constant.StorageAttachmentConstants.StorageAttachmentFile; import static com.ruoyi.common.enums.StorageAttachmentRecordType.InspectionTasks; /** * @author :yys @@ -179,24 +175,25 @@ } // æåå建BlobDTOçå ¬å ±æ¹æ³ private StorageBlobDTO createBlobDto(StorageBlob blob) { StorageBlobDTO dto = new StorageBlobDTO(); private StorageBlobVO createBlobDto(StorageBlob blob) { StorageBlobVO dto = new StorageBlobVO(); BeanUtils.copyProperties(blob, dto); // 设置URL dto.setUrl(minioUtils.getPreviewUrls( blob.getBucketFilename(), blob.getBucketName(), true )); // 设置ä¸è½½URL dto.setDownloadUrl(minioUtils.getDownloadUrls( blob.getBucketFilename(), blob.getBucketName(), blob.getOriginalFilename(), true )); // todo fileChange // // 设置URL // dto.setUrl(minioUtils.getPreviewUrls( // blob.getBucketFilename(), // blob.getBucketName(), // true // )); // // // 设置ä¸è½½URL // dto.setDownloadUrl(minioUtils.getDownloadUrls( // blob.getBucketFilename(), // blob.getBucketName(), // blob.getOriginalFilename(), // true // )); return dto; } src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java
@@ -5,7 +5,6 @@ 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.mapper.StorageAttachmentMapper; import com.ruoyi.basic.mapper.StorageBlobMapper; import com.ruoyi.basic.pojo.StorageAttachment; @@ -127,23 +126,24 @@ }); // 6.2 设置éä»¶ä¿¡æ¯ dto.setStorageBlobDTO( Optional.ofNullable(attachmentsMap.get(record.getId())) .orElse(Collections.emptyList()) .stream() .map(att -> { StorageBlobDTO blobDTO = new StorageBlobDTO(); Optional.ofNullable(blobMap.get(att.getStorageBlobId())) .ifPresent(blob -> { BeanUtils.copyProperties(blob, blobDTO); blobDTO.setUrl(minioUtils.getPreviewUrls(blob.getBucketFilename(), blob.getBucketName(), true)); blobDTO.setDownloadUrl(minioUtils.getDownloadUrls(blob.getBucketFilename(),blob.getBucketName(),blob.getOriginalFilename(),true)); }); return blobDTO; }) .filter(blobDTO -> blobDTO.getId() != null) // è¿æ»¤æ æéä»¶ .collect(Collectors.toList()) ); // todo fileChange // dto.setStorageBlobDTO( // Optional.ofNullable(attachmentsMap.get(record.getId())) // .orElse(Collections.emptyList()) // .stream() // .map(att -> { // StorageBlobDTO blobDTO = new StorageBlobDTO(); // Optional.ofNullable(blobMap.get(att.getStorageBlobId())) // .ifPresent(blob -> { // BeanUtils.copyProperties(blob, blobDTO); // blobDTO.setUrl(minioUtils.getPreviewUrls(blob.getBucketFilename(), blob.getBucketName(), true)); // blobDTO.setDownloadUrl(minioUtils.getDownloadUrls(blob.getBucketFilename(),blob.getBucketName(),blob.getOriginalFilename(),true)); // }); // return blobDTO; // }) // .filter(blobDTO -> blobDTO.getId() != null) // è¿æ»¤æ æéä»¶ // .collect(Collectors.toList()) // ); return dto; }).collect(Collectors.toList()); @@ -166,18 +166,19 @@ i = qrCodeScanRecordMapper.updateById(qrCodeScanRecord); } if (qrCodeScanRecordDto.getStorageBlobDTO() != null && !qrCodeScanRecordDto.getStorageBlobDTO().isEmpty()) { if (qrCodeScanRecordDto.getStorageBlobVO() != null && !qrCodeScanRecordDto.getStorageBlobVO().isEmpty()) { List<StorageAttachment> attachments = new ArrayList<>(); for (StorageBlobDTO storageBlobDTO : qrCodeScanRecordDto.getStorageBlobDTO()) { StorageAttachment storageAttachment = new StorageAttachment( StorageAttachmentFile, (long) QrCodeScanRecords.ordinal(), qrCodeScanRecord.getId() ); storageAttachment.setStorageBlobDTO(storageBlobDTO); attachments.add(storageAttachment); } // 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); } return i; src/main/java/com/ruoyi/inspectiontask/service/impl/QuartzConfig.java
@@ -13,6 +13,7 @@ import javax.sql.DataSource; @Configuration public class QuartzConfig { @Autowired src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java
@@ -25,7 +25,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.time.LocalDate; src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java
@@ -6,7 +6,7 @@ import com.ruoyi.lavorissue.dto.StatisticsLaborIssue; import com.ruoyi.lavorissue.pojo.LaborIssue; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.UnsupportedEncodingException; import java.util.List; import java.util.Map; src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java
@@ -27,7 +27,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerController.java
@@ -21,7 +21,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerRecordController.java
@@ -15,7 +15,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerRecordService.java
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; /** src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerService.java
@@ -6,7 +6,7 @@ import com.ruoyi.measuringinstrumentledger.dto.MeasuringInstrumentLedgerDto; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedger; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; /** src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerRecordServiceImpl.java
@@ -22,7 +22,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java
@@ -26,7 +26,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; src/main/java/com/ruoyi/oA/controller/OaProjectController.java
@@ -3,17 +3,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedger; import com.ruoyi.oA.dto.OaProjectDto; import com.ruoyi.oA.pojo.OaProject; import com.ruoyi.oA.service.OaProjectService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.List; @@ -66,7 +65,7 @@ // } @ApiOperation("å¯¼åºæé项ç®") @PostMapping("/export/{ids}") public void export(HttpServletResponse response,@PathVariable("ids") List<Long> ids) { public void export(HttpServletResponse response, @PathVariable("ids") List<Long> ids) { if (CollectionUtils.isEmpty(ids)) { throw new IllegalArgumentException("导åºé¡¹ç®å表ä¸è½ä¸ºç©º"); } src/main/java/com/ruoyi/oA/service/OaProjectService.java
@@ -2,11 +2,11 @@ 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.oA.dto.OaProjectDto; import com.ruoyi.oA.pojo.OaProject; import com.baomidou.mybatisplus.extension.service.IService; import jakarta.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/oA/service/impl/OaProjectServiceImpl.java
@@ -5,18 +5,17 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord; import com.ruoyi.oA.dto.OaProjectDto; import com.ruoyi.oA.mapper.OaProjectMapper; import com.ruoyi.oA.pojo.OaProject; import com.ruoyi.oA.pojo.OaProjectPhase; import com.ruoyi.oA.service.OaProjectPhaseService; import com.ruoyi.oA.service.OaProjectService; import com.ruoyi.oA.mapper.OaProjectMapper; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java
@@ -17,7 +17,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Date; src/main/java/com/ruoyi/procurementrecord/controller/GasTankWarningController.java
@@ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java
@@ -16,7 +16,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPlanController.java
@@ -11,7 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPriceManagementController.java
@@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -19,7 +19,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
@@ -17,7 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/procurementrecord/service/GasTankWarningService.java
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.procurementrecord.pojo.GasTankWarning; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; public interface GasTankWarningService extends IService<GasTankWarning> { src/main/java/com/ruoyi/procurementrecord/service/ProcurementPlanService.java
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.procurementrecord.pojo.ProcurementPlan; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; /** * @author :yys src/main/java/com/ruoyi/procurementrecord/service/ProcurementPriceManagementService.java
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.procurementrecord.pojo.ProcurementPriceManagement; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; /** * @author :yys src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
@@ -8,7 +8,7 @@ import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto; import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; /** * @author :yys src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
@@ -9,7 +9,7 @@ import com.ruoyi.procurementrecord.pojo.CustomStorage; import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.List; import java.util.Map; src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java
@@ -13,7 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java
@@ -12,7 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java
@@ -13,7 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
@@ -19,7 +19,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -31,7 +31,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; src/main/java/com/ruoyi/production/controller/ProductBomController.java
@@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -13,7 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RequestMapping("productOrder") src/main/java/com/ruoyi/production/controller/ProductProcessController.java
@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java
@@ -10,7 +10,7 @@ import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; @RestController @AllArgsConstructor src/main/java/com/ruoyi/production/controller/ProductWorkOrderFileController.java
@@ -12,7 +12,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import jakarta.annotation.Resource; import java.util.List; /** src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
@@ -13,7 +13,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.Arrays; import java.util.List; src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java
@@ -24,7 +24,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/production/controller/SalesLedgerSchedulingController.java
@@ -25,7 +25,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java
@@ -19,7 +19,7 @@ //import org.springframework.transaction.annotation.Transactional; //import org.springframework.web.bind.annotation.*; // //import javax.servlet.http.HttpServletResponse; //import jakarta.servlet.http.HttpServletResponse; //import java.util.List; // ///** src/main/java/com/ruoyi/production/pojo/ProductProcess.java
@@ -47,7 +47,7 @@ * å·¥èµå®é¢ */ @Excel(name = "å·¥èµå®é¢") @TableField(updateStrategy = FieldStrategy.IGNORED) @TableField(updateStrategy = FieldStrategy.NOT_NULL) private BigDecimal salaryQuota; @ApiModelProperty("ç±»å åºåæ¯è®¡æ¶è¿æ¯è®¡ä»¶ 0 è®¡æ¶ 1计件") src/main/java/com/ruoyi/production/service/ProductBomService.java
@@ -8,7 +8,7 @@ import com.ruoyi.production.pojo.ProductBom; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; /** * <p> src/main/java/com/ruoyi/production/service/ProductProcessService.java
@@ -10,7 +10,7 @@ import com.ruoyi.production.pojo.SalesLedgerScheduling; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java
@@ -6,7 +6,7 @@ import com.ruoyi.production.dto.ProductWorkOrderDto; import com.ruoyi.production.pojo.ProductWorkOrder; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; public interface ProductWorkOrderService extends IService<ProductWorkOrder>{ src/main/java/com/ruoyi/production/service/SalesLedgerSchedulingService.java
@@ -9,7 +9,7 @@ import com.ruoyi.production.dto.SalesLedgerSchedulingProcessDto; import com.ruoyi.production.pojo.SalesLedgerScheduling; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/production/service/impl/ProductBomServiceImpl.java
@@ -26,7 +26,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
@@ -25,7 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java
@@ -29,7 +29,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; src/main/java/com/ruoyi/project/common/CaptchaController.java
@@ -3,9 +3,9 @@ import java.awt.image.BufferedImage; import java.io.IOException; import java.util.concurrent.TimeUnit; import javax.annotation.Resource; import jakarta.annotation.Resource; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.FastByteArrayOutputStream; src/main/java/com/ruoyi/project/common/CommonController.java
@@ -1,183 +1,202 @@ package com.ruoyi.project.common; import java.io.File; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.ruoyi.basic.service.StorageBlobService; import com.ruoyi.framework.aspectj.lang.annotation.Anonymous; import com.ruoyi.framework.config.ServerConfig; import com.ruoyi.framework.web.domain.R; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; 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 com.ruoyi.common.constant.Constants; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.framework.config.RuoYiConfig; import com.ruoyi.framework.config.ServerConfig; import com.ruoyi.framework.web.domain.AjaxResult; import jakarta.servlet.http.HttpServletResponse; import java.io.File; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.List; /** * éç¨è¯·æ±å¤ç * * * @author ruoyi */ @Api(tags = "éç¨æ¥å£") @AllArgsConstructor @RestController @RequestMapping("/common") public class CommonController { public class CommonController { private static final Logger log = LoggerFactory.getLogger(CommonController.class); @Autowired private ServerConfig serverConfig; private static final String FILE_DELIMETER = ","; /** * éç¨ä¸è½½è¯·æ± * * @param fileName æä»¶åç§° * @param delete æ¯å¦å é¤ */ @GetMapping("/download") public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) { try { if (!FileUtils.checkAllowDownload(fileName)) { throw new Exception(StringUtils.format("æä»¶åç§°({})éæ³ï¼ä¸å 许ä¸è½½ã ", fileName)); } String realFileName = fileName.substring(fileName.indexOf("_") + 1); private final StorageBlobService storageBlobService; response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, realFileName); FileUtils.writeBytes(fileName, response.getOutputStream()); // if (delete) // /** // * éç¨ä¸è½½è¯·æ± // * // * @param fileName æä»¶åç§° // * @param delete æ¯å¦å é¤ // */ // @GetMapping("/download") // public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) // { // try // { // if (!FileUtils.checkAllowDownload(fileName)) // { // FileUtils.deleteFile(fileName); // throw new Exception(StringUtils.format("æä»¶åç§°({})éæ³ï¼ä¸å 许ä¸è½½ã ", fileName)); // } } catch (Exception e) { log.error("ä¸è½½æä»¶å¤±è´¥", e); } // String realFileName = fileName.substring(fileName.indexOf("_") + 1); // // response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); // FileUtils.setAttachmentResponseHeader(response, realFileName); // FileUtils.writeBytes(fileName, response.getOutputStream()); /// / if (delete) /// / { /// / FileUtils.deleteFile(fileName); /// / } // } // catch (Exception e) // { // log.error("ä¸è½½æä»¶å¤±è´¥", e); // } // } // // /** // * minioéç¨ä¸ä¼ 请æ±ï¼å¤ä¸ªï¼ // */ // @PostMapping("/minioUploads") // @ApiOperation(value = "minioéç¨ä¸ä¼ 请æ±") // public AjaxResult minioUploadFiles(List<MultipartFile> files, String bucketName, Long type) throws Exception // { // return AjaxResult.success(); // } // // /** // * éç¨ä¸ä¼ 请æ±ï¼åä¸ªï¼ // */ // @PostMapping("/upload") // public AjaxResult uploadFile(MultipartFile file) throws Exception // { // try // { // // ä¸ä¼ æä»¶è·¯å¾ // String filePath = RuoYiConfig.getUploadPath(); // // ä¸ä¼ å¹¶è¿åæ°æä»¶åç§° // String fileName = FileUploadUtils.upload(filePath, file); // String url = serverConfig.getUrl() + fileName; // AjaxResult ajax = AjaxResult.success(); // ajax.put("url", url); // ajax.put("fileName", fileName); // ajax.put("newFileName", FileUtils.getName(fileName)); // ajax.put("originalFilename", file.getOriginalFilename()); // return ajax; // } // catch (Exception e) // { // return AjaxResult.error(e.getMessage()); // } // } // // /** // * éç¨ä¸ä¼ 请æ±ï¼å¤ä¸ªï¼ // */ // @PostMapping("/uploads") // public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception // { // try // { // // ä¸ä¼ æä»¶è·¯å¾ // String filePath = RuoYiConfig.getUploadPath(); // List<String> urls = new ArrayList<String>(); // List<String> fileNames = new ArrayList<String>(); // List<String> newFileNames = new ArrayList<String>(); // List<String> originalFilenames = new ArrayList<String>(); // for (MultipartFile file : files) // { // // ä¸ä¼ å¹¶è¿åæ°æä»¶åç§° // String fileName = FileUploadUtils.upload(filePath, file); // String url = serverConfig.getUrl() + fileName; // urls.add(url); // fileNames.add(fileName); // newFileNames.add(FileUtils.getName(fileName)); // originalFilenames.add(file.getOriginalFilename()); // } // AjaxResult ajax = AjaxResult.success(); // ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER)); // ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER)); // ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER)); // ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER)); // return ajax; // } // catch (Exception e) // { // return AjaxResult.error(e.getMessage()); // } // } // // /** // * æ¬å°èµæºéç¨ä¸è½½ // */ // @GetMapping("/download/resource") // public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) // throws Exception // { // try // { // if (!FileUtils.checkAllowDownload(resource)) // { // throw new Exception(StringUtils.format("èµæºæä»¶({})éæ³ï¼ä¸å 许ä¸è½½ã ", resource)); // } // // æ¬å°èµæºè·¯å¾ // String localPath = RuoYiConfig.getProfile(); // // æ°æ®åºèµæºå°å // String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX); // // ä¸è½½åç§° // String downloadName = StringUtils.substringAfterLast(downloadPath, "/"); // response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); // FileUtils.setAttachmentResponseHeader(response, downloadName); // FileUtils.writeBytes(downloadPath, response.getOutputStream()); // } // catch (Exception e) // { // log.error("ä¸è½½æä»¶å¤±è´¥", e); // } // } @PostMapping({"/upload"}) @ApiOperation(value = "æä»¶ä¸ä¼ ") public R upload(@RequestParam("files") List<MultipartFile> files) throws Exception { return R.ok(storageBlobService.upload(files)); } @Autowired private StorageBlobService storageBlobService; /** * minioéç¨ä¸ä¼ 请æ±ï¼å¤ä¸ªï¼ */ @PostMapping("/minioUploads") @ApiOperation(value = "minioéç¨ä¸ä¼ 请æ±") public AjaxResult minioUploadFiles(List<MultipartFile> files, String bucketName, Long type) throws Exception { return AjaxResult.success(storageBlobService.updateStorageBlobs(files, bucketName,type)); @GetMapping("/download/{fileName}") @Anonymous public void download(@PathVariable String fileName, @RequestParam("token") String token, HttpServletResponse response) throws Exception { File file = storageBlobService.getFileByToken(fileName, token); String originalFileName = storageBlobService.getDownloadFileName(fileName); String encodedFileName = URLEncoder.encode(originalFileName, StandardCharsets.UTF_8.name()).replace("+", "%20"); response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + encodedFileName); Files.copy(file.toPath(), response.getOutputStream()); } /** * éç¨ä¸ä¼ 请æ±ï¼åä¸ªï¼ */ @PostMapping("/upload") public AjaxResult uploadFile(MultipartFile file) throws Exception { try { // ä¸ä¼ æä»¶è·¯å¾ String filePath = RuoYiConfig.getUploadPath(); // ä¸ä¼ å¹¶è¿åæ°æä»¶åç§° String fileName = FileUploadUtils.upload(filePath, file); String url = serverConfig.getUrl() + fileName; AjaxResult ajax = AjaxResult.success(); ajax.put("url", url); ajax.put("fileName", fileName); ajax.put("newFileName", FileUtils.getName(fileName)); ajax.put("originalFilename", file.getOriginalFilename()); return ajax; } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } /** * éç¨ä¸ä¼ 请æ±ï¼å¤ä¸ªï¼ */ @PostMapping("/uploads") public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception { try { // ä¸ä¼ æä»¶è·¯å¾ String filePath = RuoYiConfig.getUploadPath(); List<String> urls = new ArrayList<String>(); List<String> fileNames = new ArrayList<String>(); List<String> newFileNames = new ArrayList<String>(); List<String> originalFilenames = new ArrayList<String>(); for (MultipartFile file : files) { // ä¸ä¼ å¹¶è¿åæ°æä»¶åç§° String fileName = FileUploadUtils.upload(filePath, file); String url = serverConfig.getUrl() + fileName; urls.add(url); fileNames.add(fileName); newFileNames.add(FileUtils.getName(fileName)); originalFilenames.add(file.getOriginalFilename()); } AjaxResult ajax = AjaxResult.success(); ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER)); ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER)); ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER)); ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER)); return ajax; } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } /** * æ¬å°èµæºéç¨ä¸è½½ */ @GetMapping("/download/resource") public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) throws Exception { try { if (!FileUtils.checkAllowDownload(resource)) { throw new Exception(StringUtils.format("èµæºæä»¶({})éæ³ï¼ä¸å 许ä¸è½½ã ", resource)); } // æ¬å°èµæºè·¯å¾ String localPath = RuoYiConfig.getProfile(); // æ°æ®åºèµæºå°å String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX); // ä¸è½½åç§° String downloadName = StringUtils.substringAfterLast(downloadPath, "/"); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, downloadName); FileUtils.writeBytes(downloadPath, response.getOutputStream()); } catch (Exception e) { log.error("ä¸è½½æä»¶å¤±è´¥", e); } @GetMapping("/preview/{fileName}") @Anonymous public void preview(@PathVariable String fileName, @RequestParam("token") String token, HttpServletResponse response) throws Exception { File file = storageBlobService.getFileByToken(fileName, token); String contentType = Files.probeContentType(file.toPath()); response.setContentType(contentType == null ? "application/octet-stream" : contentType); String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()).replace("+", "%20"); response.setHeader("Content-Disposition", "inline;filename*=UTF-8''" + encodedFileName); Files.copy(file.toPath(), response.getOutputStream()); } } src/main/java/com/ruoyi/project/monitor/controller/SysJobController.java
@@ -1,7 +1,7 @@ package com.ruoyi.project.monitor.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.quartz.SchedulerException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; src/main/java/com/ruoyi/project/monitor/controller/SysJobLogController.java
@@ -1,7 +1,7 @@ package com.ruoyi.project.monitor.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.DeleteMapping; src/main/java/com/ruoyi/project/monitor/controller/SysLogininforController.java
@@ -1,7 +1,7 @@ package com.ruoyi.project.monitor.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.DeleteMapping; src/main/java/com/ruoyi/project/monitor/controller/SysOperlogController.java
@@ -1,7 +1,7 @@ package com.ruoyi.project.monitor.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.DeleteMapping; src/main/java/com/ruoyi/project/monitor/domain/SysJob.java
@@ -1,8 +1,8 @@ package com.ruoyi.project.monitor.domain; import java.util.Date; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.fasterxml.jackson.annotation.JsonFormat; src/main/java/com/ruoyi/project/monitor/service/impl/SysJobServiceImpl.java
@@ -1,14 +1,5 @@ package com.ruoyi.project.monitor.service.impl; import java.util.List; import javax.annotation.PostConstruct; import org.quartz.JobDataMap; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.ruoyi.common.constant.ScheduleConstants; import com.ruoyi.common.exception.job.TaskException; import com.ruoyi.common.utils.job.CronUtils; @@ -16,6 +7,16 @@ import com.ruoyi.project.monitor.domain.SysJob; import com.ruoyi.project.monitor.mapper.SysJobMapper; import com.ruoyi.project.monitor.service.ISysJobService; import jakarta.annotation.PostConstruct; import org.quartz.JobDataMap; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * 宿¶ä»»å¡è°åº¦ä¿¡æ¯ æå¡å± src/main/java/com/ruoyi/project/system/controller/SysConfigController.java
@@ -1,7 +1,7 @@ package com.ruoyi.project.system.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java
@@ -2,7 +2,7 @@ import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java
@@ -1,7 +1,7 @@ package com.ruoyi.project.system.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; src/main/java/com/ruoyi/project/system/controller/SysPostController.java
@@ -1,7 +1,7 @@ package com.ruoyi.project.system.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; src/main/java/com/ruoyi/project/system/controller/SysRoleController.java
@@ -1,7 +1,7 @@ package com.ruoyi.project.system.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; src/main/java/com/ruoyi/project/system/controller/SysUserController.java
@@ -2,7 +2,7 @@ import java.util.List; import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import com.ruoyi.project.system.domain.vo.SysUserDeptVo; import com.ruoyi.project.system.mapper.SysUserMapper; src/main/java/com/ruoyi/project/system/domain/SysConfig.java
@@ -1,7 +1,7 @@ package com.ruoyi.project.system.domain; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.framework.aspectj.lang.annotation.Excel; src/main/java/com/ruoyi/project/system/domain/SysDept.java
@@ -1,16 +1,16 @@ package com.ruoyi.project.system.domain; import java.util.ArrayList; import java.util.List; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.framework.web.domain.BaseEntity; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.framework.web.domain.BaseEntity; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; import java.util.ArrayList; import java.util.List; /** * é¨é¨è¡¨ sys_dept src/main/java/com/ruoyi/project/system/domain/SysDictData.java
@@ -1,7 +1,7 @@ package com.ruoyi.project.system.domain; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.constant.UserConstants; src/main/java/com/ruoyi/project/system/domain/SysDictType.java
@@ -1,8 +1,8 @@ package com.ruoyi.project.system.domain; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.framework.aspectj.lang.annotation.Excel; src/main/java/com/ruoyi/project/system/domain/SysMenu.java
@@ -2,9 +2,9 @@ import java.util.ArrayList; import java.util.List; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.framework.web.domain.BaseEntity; src/main/java/com/ruoyi/project/system/domain/SysNotice.java
@@ -1,7 +1,7 @@ package com.ruoyi.project.system.domain; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; src/main/java/com/ruoyi/project/system/domain/SysPost.java
@@ -1,8 +1,8 @@ package com.ruoyi.project.system.domain; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.framework.aspectj.lang.annotation.Excel; src/main/java/com/ruoyi/project/system/domain/SysRole.java
@@ -1,9 +1,9 @@ package com.ruoyi.project.system.domain; import java.util.Set; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.framework.aspectj.lang.annotation.Excel; src/main/java/com/ruoyi/project/system/domain/SysUser.java
@@ -1,18 +1,20 @@ package com.ruoyi.project.system.domain; import java.util.Date; import java.util.List; import javax.validation.constraints.*; import com.baomidou.mybatisplus.annotation.TableField; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.xss.Xss; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.framework.aspectj.lang.annotation.Excel.ColumnType; import com.ruoyi.framework.aspectj.lang.annotation.Excel.Type; import com.ruoyi.framework.aspectj.lang.annotation.Excels; import com.ruoyi.framework.web.domain.BaseEntity; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import jakarta.validation.constraints.Size; import java.util.Date; import java.util.List; /** * ç¨æ·å¯¹è±¡ sys_user src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java
@@ -2,7 +2,7 @@ import java.util.Collection; import java.util.List; import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.common.constant.CacheConstants; src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java
@@ -4,7 +4,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
@@ -4,7 +4,7 @@ import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import javax.validation.Validator; import jakarta.validation.Validator; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; src/main/java/com/ruoyi/project/system/service/impl/UnipushService.java
@@ -19,13 +19,13 @@ import com.ruoyi.project.system.domain.SysUserClient; import com.ruoyi.project.system.mapper.SysMenuMapper; import com.ruoyi.project.system.service.SysUserClientService; import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.HashMap; import java.util.List; import java.util.Map; src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
@@ -5,7 +5,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; src/main/java/com/ruoyi/project/tool/gen/domain/GenTable.java
@@ -1,8 +1,8 @@ package com.ruoyi.project.tool.gen.domain; import java.util.List; import javax.validation.Valid; import javax.validation.constraints.NotBlank; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import org.apache.commons.lang3.ArrayUtils; import com.ruoyi.common.constant.GenConstants; import com.ruoyi.common.utils.StringUtils; src/main/java/com/ruoyi/project/tool/gen/domain/GenTableColumn.java
@@ -1,6 +1,6 @@ package com.ruoyi.project.tool.gen.domain; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.domain.BaseEntity; src/main/java/com/ruoyi/projectManagement/controller/InfoController.java
@@ -13,7 +13,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import jakarta.validation.Valid; /** * @author buhuazhen src/main/java/com/ruoyi/projectManagement/controller/PlanController.java
@@ -11,7 +11,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import jakarta.validation.Valid; /** * @author buhuazhen src/main/java/com/ruoyi/projectManagement/dto/InfoStageDto.java
@@ -6,7 +6,7 @@ import lombok.NoArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull; import java.time.LocalDate; import java.time.LocalDateTime; src/main/java/com/ruoyi/projectManagement/dto/SaveInfoDto.java
@@ -8,8 +8,8 @@ import lombok.NoArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; src/main/java/com/ruoyi/projectManagement/dto/UpdateStateInfo.java
@@ -6,7 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull; import java.io.Serializable; /** src/main/java/com/ruoyi/projectManagement/service/InfoService.java
@@ -7,7 +7,7 @@ import com.ruoyi.projectManagement.vo.SaveInfoVo; import com.ruoyi.projectManagement.vo.SearchInfoVo; import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull; /** * @author buhuazhen src/main/java/com/ruoyi/projectManagement/service/PlanService.java
@@ -9,9 +9,9 @@ import com.ruoyi.projectManagement.vo.SavePlanVo; import com.ruoyi.projectManagement.vo.SearchPlanVo; import javax.annotation.Nullable; import javax.validation.constraints.NotNull; import javax.validation.constraints.Null; import jakarta.annotation.Nullable; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Null; import java.util.List; /** src/main/java/com/ruoyi/projectManagement/service/impl/handle/ContractInfoHandleService.java
@@ -10,8 +10,8 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Nullable; import javax.validation.constraints.NotNull; import jakarta.annotation.Nullable; import jakarta.validation.constraints.NotNull; /** * @author buhuazhen src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoHandleService.java
@@ -20,7 +20,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull; import java.util.Collections; import java.util.List; import java.util.Optional; src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoStageHandleService.java
@@ -21,7 +21,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull; import java.util.*; import java.util.stream.Collectors; src/main/java/com/ruoyi/projectManagement/service/impl/handle/ShippingAddressHandleService.java
@@ -9,8 +9,8 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Nullable; import javax.validation.constraints.NotNull; import jakarta.annotation.Nullable; import jakarta.validation.constraints.NotNull; /** * @author buhuazhen src/main/java/com/ruoyi/projectManagement/vo/SaveInfoVo.java
@@ -8,7 +8,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.Valid; import jakarta.validation.Valid; import java.io.Serializable; import java.util.List; src/main/java/com/ruoyi/projectManagement/vo/SavePlanNodeVo.java
@@ -4,8 +4,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import java.io.Serializable; /** src/main/java/com/ruoyi/projectManagement/vo/SavePlanVo.java
@@ -6,8 +6,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.Valid; import javax.validation.constraints.NotBlank; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import java.io.Serializable; import java.util.List; src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java
@@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java
@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
@@ -17,7 +17,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; src/main/java/com/ruoyi/purchase/controller/ProcurementBusinessSummaryController.java
@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -28,7 +28,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
@@ -30,7 +30,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrderProductsMapper.java
@@ -6,7 +6,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull; import java.util.List; /** src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
@@ -8,7 +8,7 @@ import com.ruoyi.purchase.vo.PurchaseReturnDetailsVo; import com.ruoyi.purchase.vo.PurchaseReturnOrderVo; import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull; /** * <p> src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
@@ -28,7 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import jakarta.annotation.Resource; import java.util.List; import java.util.Map; import java.util.Objects; src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
@@ -18,8 +18,8 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/quality/controller/QualityInspectFileController.java
@@ -12,8 +12,8 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/quality/controller/QualityInspectParamController.java
@@ -12,8 +12,8 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/quality/controller/QualityTestStandardController.java
@@ -10,8 +10,8 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Nonnull; import javax.annotation.Resource; import jakarta.annotation.Nonnull; import jakarta.annotation.Resource; import java.util.List; /** src/main/java/com/ruoyi/quality/controller/QualityUnqualifiedController.java
@@ -7,8 +7,8 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/quality/dto/QualityInspectDto.java
@@ -9,7 +9,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
@@ -7,7 +7,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; src/main/java/com/ruoyi/quality/pojo/QualityInspectFile.java
@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.io.Serializable; import java.time.LocalDateTime; src/main/java/com/ruoyi/quality/pojo/QualityInspectParam.java
@@ -3,9 +3,9 @@ import com.baomidou.mybatisplus.annotation.*; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import jakarta.validation.constraints.NotBlank; import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; import java.time.LocalDateTime; src/main/java/com/ruoyi/quality/pojo/QualityUnqualified.java
@@ -7,7 +7,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; src/main/java/com/ruoyi/quality/service/IQualityInspectService.java
@@ -6,7 +6,7 @@ import com.ruoyi.quality.dto.QualityInspectDto; import com.ruoyi.quality.pojo.QualityInspect; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; public interface IQualityInspectService extends IService<QualityInspect> { src/main/java/com/ruoyi/quality/service/IQualityUnqualifiedService.java
@@ -6,7 +6,7 @@ import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.QualityUnqualified; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; public interface IQualityUnqualifiedService extends IService<QualityUnqualified> { src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -29,7 +29,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -28,7 +28,7 @@ import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; src/main/java/com/ruoyi/safe/controller/SafeCertificationFileController.java
@@ -13,7 +13,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import jakarta.annotation.Resource; import java.util.List; /** src/main/java/com/ruoyi/safe/controller/SafeHiddenFileController.java
@@ -10,7 +10,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import jakarta.annotation.Resource; import java.util.List; /** src/main/java/com/ruoyi/safe/controller/SafeTrainingController.java
@@ -14,7 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/safe/controller/SafeTrainingDetailsController.java
@@ -11,7 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; /** * <p> src/main/java/com/ruoyi/safe/controller/SafeTrainingFileController.java
@@ -11,7 +11,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import jakarta.annotation.Resource; import java.util.List; /** src/main/java/com/ruoyi/safe/pojo/SafeCertificationFile.java
@@ -12,7 +12,7 @@ import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; /** * <p> src/main/java/com/ruoyi/safe/pojo/SafeHidden.java
@@ -1,22 +1,17 @@ package com.ruoyi.safe.pojo; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; /** * <p> src/main/java/com/ruoyi/safe/pojo/SafeTraining.java
@@ -17,7 +17,7 @@ import lombok.Setter; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; /** * <p> src/main/java/com/ruoyi/safe/pojo/SafeTrainingDetails.java
@@ -1,22 +1,18 @@ package com.ruoyi.safe.pojo; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; /** * <p> src/main/java/com/ruoyi/safe/service/SafeTrainingDetailsService.java
@@ -6,7 +6,7 @@ import com.ruoyi.safe.pojo.SafeTrainingDetails; import com.baomidou.mybatisplus.extension.service.IService; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; /** * <p> src/main/java/com/ruoyi/safe/service/SafeTrainingService.java
@@ -6,7 +6,7 @@ import com.ruoyi.safe.pojo.SafeTraining; import com.baomidou.mybatisplus.extension.service.IService; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/safe/service/impl/SafeTrainingDetailsServiceImpl.java
@@ -16,7 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; src/main/java/com/ruoyi/safe/service/impl/SafeTrainingServiceImpl.java
@@ -25,7 +25,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java
@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
@@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
@@ -22,7 +22,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -29,7 +29,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -1,6 +1,6 @@ package com.ruoyi.sales.controller; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java
@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; @RestController @RequestMapping("/sales/quotation") src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
@@ -19,7 +19,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController @@ -101,7 +101,7 @@ @PostMapping("/export") @ApiOperation("导åºå货审æ¹") public void export(HttpServletResponse response) { List<ShipmentApproval> list = shipmentApprovalService.list(null); List<ShipmentApproval> list = shipmentApprovalService.list(); ExcelUtil<ShipmentApproval> util = new ExcelUtil<ShipmentApproval>(ShipmentApproval.class); util.exportExcel(response, list, "å货审æ¹"); } src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -35,7 +35,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.time.LocalDate; import java.util.List; src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -13,8 +13,8 @@ import com.ruoyi.sales.pojo.SalesLedgerProduct; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Nullable; import javax.validation.constraints.NotNull; import jakarta.annotation.Nullable; import jakarta.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.List; src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java
@@ -9,7 +9,7 @@ import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.List; src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java
@@ -7,7 +7,7 @@ import com.ruoyi.sales.dto.SalesLedgerDto; import org.springframework.web.bind.annotation.RequestBody; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; public interface InvoiceRegistrationService { src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
@@ -7,7 +7,7 @@ import com.ruoyi.sales.dto.ReceiptPaymentDto; import com.ruoyi.sales.pojo.ReceiptPayment; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.List; import java.util.Map; src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
@@ -23,7 +23,7 @@ import org.springframework.util.ObjectUtils; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.File; import java.math.BigDecimal; import java.time.LocalDate; src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
@@ -28,7 +28,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.List; import java.util.stream.Collectors; src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -27,7 +27,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.time.LocalDate; import java.time.YearMonth; src/main/java/com/ruoyi/staff/controller/AnalyticsController.java
@@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import jakarta.annotation.Resource; @RestController @RequestMapping("/staff/analytics") src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java
@@ -9,8 +9,8 @@ import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; /** * <p> src/main/java/com/ruoyi/staff/controller/PersonalShiftController.java
@@ -17,9 +17,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotNull; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotNull; import java.util.Collection; import java.util.List; import java.util.Map; src/main/java/com/ruoyi/staff/controller/StaffContractController.java
@@ -7,7 +7,7 @@ import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import jakarta.annotation.Resource; /** * åå·¥å°è´¦/åå管ç src/main/java/com/ruoyi/staff/controller/StaffLeaveController.java
@@ -8,8 +8,8 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
@@ -16,9 +16,9 @@ import org.springframework.web.multipart.MultipartFile; import com.ruoyi.staff.dto.StaffOnJobExcelDto; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import java.util.List; /** src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java
@@ -14,7 +14,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/staff/dto/PerformanceShiftAddDto.java
@@ -5,7 +5,7 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull; import java.time.LocalDateTime; @Data src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java
@@ -6,7 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
@@ -8,7 +8,7 @@ import com.ruoyi.staff.pojo.StaffOnJob; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; public interface IStaffOnJobService extends IService<StaffOnJob> { src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java
@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.staff.pojo.StaffOnJob; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; /** * <p> src/main/java/com/ruoyi/staff/service/StaffLeaveService.java
@@ -6,7 +6,7 @@ import com.ruoyi.staff.dto.StaffLeaveDto; import com.ruoyi.staff.pojo.StaffLeave; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; public interface StaffLeaveService extends IService<StaffLeave> { src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
@@ -31,7 +31,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
@@ -28,7 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import jakarta.annotation.Resource; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java
@@ -21,7 +21,7 @@ import com.ruoyi.staff.pojo.StaffLeave; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; import java.util.stream.Collectors; src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -36,7 +36,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.io.*; import java.nio.charset.StandardCharsets; import java.time.Instant; src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java
@@ -17,7 +17,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; import jakarta.annotation.Resource; import java.math.BigDecimal; import java.time.Duration; src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
@@ -13,7 +13,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
@@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java
@@ -13,7 +13,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
@@ -12,7 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; /** * <p> src/main/java/com/ruoyi/stock/pojo/StockInventory.java
@@ -10,7 +10,7 @@ import lombok.Setter; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; src/main/java/com/ruoyi/stock/service/StockInRecordService.java
@@ -6,7 +6,7 @@ import com.ruoyi.stock.dto.StockInRecordDto; import com.ruoyi.stock.pojo.StockInRecord; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; public interface StockInRecordService extends IService<StockInRecord> { src/main/java/com/ruoyi/stock/service/StockInventoryService.java
@@ -9,7 +9,7 @@ import com.ruoyi.stock.pojo.StockInventory; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; /** * <p> src/main/java/com/ruoyi/stock/service/StockOutRecordService.java
@@ -6,7 +6,7 @@ import com.ruoyi.stock.dto.StockOutRecordDto; import com.ruoyi.stock.pojo.StockOutRecord; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
@@ -7,7 +7,7 @@ import com.ruoyi.stock.dto.StockUninventoryDto; import com.ruoyi.stock.pojo.StockUninventory; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; /** * <p> src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -26,7 +26,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @Service src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -28,7 +28,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -26,7 +26,7 @@ import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -20,7 +20,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/technology/controller/TechnologyBomController.java
@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; @RestController src/main/java/com/ruoyi/technology/service/TechnologyBomService.java
@@ -9,7 +9,7 @@ import com.ruoyi.technology.pojo.TechnologyBom; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; public interface TechnologyBomService extends IService<TechnologyBom> { src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java
@@ -30,7 +30,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java
@@ -22,7 +22,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.time.LocalDateTime; import java.util.List; src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java
@@ -17,7 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.List; import java.util.Map; src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java
@@ -9,7 +9,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import jakarta.annotation.Resource; import java.util.List; /** src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java
@@ -4,7 +4,7 @@ import com.ruoyi.framework.aspectj.lang.annotation.Excel; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.time.LocalDateTime; public class ReturnExportDto { src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java
@@ -11,7 +11,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank; import java.io.Serializable; import java.time.LocalDateTime; src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java
@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.warehouse.pojo.DocumentationReturnManagement; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/java/com/ruoyi/warehouse/service/DocumentationService.java
@@ -6,7 +6,7 @@ import com.ruoyi.warehouse.pojo.Documentation; import com.baomidou.mybatisplus.extension.service.IService; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java
@@ -19,7 +19,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java
@@ -13,7 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; import java.util.stream.Collectors; src/main/java/com/ruoyi/waterrecord/controller/WaterRecordController.java
@@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** src/main/resources/application-dev-pro.yml
@@ -68,13 +68,15 @@ # Springé ç½® spring: main: allow-circular-references: true # å 许循ç¯ä¾èµ datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: # ä¸»åºæ°æ®æº master: url: jdbc:mysql://192.168.1.35:3307/product-inventory-management-new-pro?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://localhost:3306/product-inventory-management-new-pro?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: 123456 # ä»åºæ°æ®æº @@ -198,8 +200,8 @@ token: # 令çèªå®ä¹æ è¯ header: Authorization # 令çå¯é¥ secret: abcdefghijklmnopqrstuvwxyz # 令çå¯é¥ æ°çjwtå¯é¥é¿åº¦å¿ é¡»64ä½ä»¥ä¸ secret: xpAVjhCjQDaDB7mjPAzMDSbQWXNu2zYkTdDNUsPMS5Xx8QMmQVYN7n74eZrYJxDJ # ä»¤çæææï¼é»è®¤30åéï¼ expireTime: 450 @@ -254,3 +256,8 @@ file: temp-dir: D:/ruoyi/temp/uploads # 临æ¶ç®å½ upload-dir: D:/ruoyi/prod/uploads # æ£å¼ç®å½ path: C:/Users/12631/Desktop/download/uploads # ä¸ä¼ ç®å½ urlPrefix: /common # 龿¥åç¼ domain: http://127.0.0.1:7003 # åååç¼ expired: 120 # è¿ææ¶é´(åä½:åé) useLimit: 10 # ä½¿ç¨æ¬¡æ° src/main/resources/vm/java/controller.java.vm
@@ -1,7 +1,7 @@ package ${packageName}.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping;