Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-oss
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-oss
Commits
96e71469
Commit
96e71469
authored
Jan 27, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/test' into prod
parents
48491bf2
23a33fef
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
77 changed files
with
2100 additions
and
273 deletions
+2100
-273
yd-oss-api/Dockerfile
+3
-1
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiExcelController.java
+2
-2
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiMaterialController.java
+50
-0
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiOssController.java
+23
-2
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiOssFileController.java
+49
-0
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiRelObjectMaterialController.java
+70
-0
yd-oss-api/src/main/java/com/yd/oss/api/controller/OssFileController.java
+0
-18
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiExcelService.java
+1
-1
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiMaterialService.java
+15
-0
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiOssFileService.java
+21
-0
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiOssService.java
+13
-1
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiRelObjectMaterialService.java
+18
-0
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiExcelServiceImpl.java
+2
-2
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiMaterialServiceImpl.java
+80
-0
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssFileServiceImpl.java
+134
-0
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssServiceImpl.java
+47
-9
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiPdfServiceImpl.java
+1
-1
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiRelObjectMaterialServiceImpl.java
+132
-0
yd-oss-api/yd-oss-api.iml
+1
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiExcelFeignClient.java
+3
-1
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiMaterialFeignClient.java
+36
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiOssFeignClient.java
+24
-8
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiOssFileFeignClient.java
+38
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiRelObjectMaterialFeignClient.java
+53
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/dto/ApiMaterialDto.java
+24
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/dto/ApiRelMaterialDto.java
+19
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiExcelFeignFallbackFactory.java
+1
-2
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiMaterialFeignFallbackFactory.java
+34
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiOssFeignFallbackFactory.java
+10
-1
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiOssFileFeignFallbackFactory.java
+32
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiRelObjectMaterialFeignFallbackFactory.java
+42
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiGeneratePdfRequest.java
+5
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiMaterialDownloadRequest.java
+25
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiMaterialListRequest.java
+12
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiOssFileListRequest.java
+20
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiRelObjectMaterialListAddRequest.java
+36
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiRelObjectMaterialPageRequest.java
+28
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiRelObjectMaterialUploadSubmitRequest.java
+20
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiUploadFileRequest.java
+30
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiBatchUploadResponse.java
+54
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiMaterialDownloadResponse.java
+12
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiMaterialListResponse.java
+42
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiOssFileListResponse.java
+79
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiRelObjectMaterialPageResponse.java
+49
-0
yd-oss-feign/yd-oss-feign.iml
+2
-0
yd-oss-service/src/main/java/com/yd/oss/service/dao/MaterialMapper.java
+4
-4
yd-oss-service/src/main/java/com/yd/oss/service/dao/OssFileMapper.java
+4
-0
yd-oss-service/src/main/java/com/yd/oss/service/dao/RelObjectMaterialMapper.java
+23
-0
yd-oss-service/src/main/java/com/yd/oss/service/dto/MaterialDto.java
+19
-0
yd-oss-service/src/main/java/com/yd/oss/service/dto/OssFileDto.java
+24
-0
yd-oss-service/src/main/java/com/yd/oss/service/dto/OssUploadFileReqDto.java
+42
-0
yd-oss-service/src/main/java/com/yd/oss/service/dto/OssUploadFileResDto.java
+22
-1
yd-oss-service/src/main/java/com/yd/oss/service/handler/StringToListTypeHandler.java
+52
-0
yd-oss-service/src/main/java/com/yd/oss/service/model/Material.java
+28
-26
yd-oss-service/src/main/java/com/yd/oss/service/model/OssFile.java
+31
-1
yd-oss-service/src/main/java/com/yd/oss/service/model/RelObjectMaterial.java
+110
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/CompressedFileService.java
+9
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/ExcelImportService.java
+1
-1
yd-oss-service/src/main/java/com/yd/oss/service/service/IMaterialService.java
+20
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/IOssFileService.java
+8
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/IRelObjectMaterialService.java
+30
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/OssService.java
+12
-2
yd-oss-service/src/main/java/com/yd/oss/service/service/PdfService.java
+1
-1
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AliYunOssServiceImpl.java
+0
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/CompressedFileServiceImpl.java
+0
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/ExcelExportServiceImpl.java
+2
-2
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/ExcelImportServiceImpl.java
+69
-34
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/FileUploadService.java
+0
-144
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/MaterialServiceImpl.java
+30
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/OssFileServiceImpl.java
+32
-2
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/PdfServiceImpl.java
+10
-2
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/RelObjectMaterialServiceImpl.java
+48
-0
yd-oss-service/src/main/java/com/yd/oss/service/utils/MyBatisPlusCodeGenerator.java
+4
-4
yd-oss-service/src/main/resources/mappers/MaterialMapper.xml
+5
-0
yd-oss-service/src/main/resources/mappers/OssFileMapper.xml
+18
-0
yd-oss-service/src/main/resources/mappers/RelObjectMaterialMapper.xml
+49
-0
yd-oss-service/yd-oss-service.iml
+1
-0
No files found.
yd-oss-api/Dockerfile
View file @
96e71469
...
@@ -35,5 +35,6 @@ FROM base-builder
...
@@ -35,5 +35,6 @@ FROM base-builder
# 只拷贝jar包
# 只拷贝jar包
COPY
target/yd-oss-api-1.0-SNAPSHOT-exec.jar /home/app/yd-oss-api.jar
COPY
target/yd-oss-api-1.0-SNAPSHOT-exec.jar /home/app/yd-oss-api.jar
ENTRYPOINT
["java", "-jar", "/home/app/yd-oss-api.jar"]
# 执行命令启动jar,并设置JVM内存参数
ENTRYPOINT
["java", "-Xmx256m", "-Xms128m", "-jar", "/home/app/yd-oss-api.jar"]
EXPOSE
9106
EXPOSE
9106
\ No newline at end of file
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiExcelController.java
View file @
96e71469
...
@@ -70,8 +70,8 @@ public class ApiExcelController implements ApiExcelFeignClient {
...
@@ -70,8 +70,8 @@ public class ApiExcelController implements ApiExcelFeignClient {
*/
*/
@Override
@Override
public
Result
<
ImportResult
>
importExcel
(
MultipartFile
file
,
Integer
headerRow
,
public
Result
<
ImportResult
>
importExcel
(
MultipartFile
file
,
Integer
headerRow
,
Integer
dataStartRow
,
String
requiredFields
)
{
Integer
dataStartRow
,
String
requiredFields
,
Integer
checkStartRow
)
{
return
apiExcelService
.
importExcel
(
file
,
headerRow
,
dataStartRow
,
requiredFields
);
return
apiExcelService
.
importExcel
(
file
,
headerRow
,
dataStartRow
,
requiredFields
,
checkStartRow
);
}
}
/**
/**
...
...
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiMaterialController.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
api
.
controller
;
import
com.yd.common.result.Result
;
import
com.yd.oss.api.service.ApiMaterialService
;
import
com.yd.oss.feign.client.ApiMaterialFeignClient
;
import
com.yd.oss.feign.request.ApiMaterialDownloadRequest
;
import
com.yd.oss.feign.request.ApiMaterialListRequest
;
import
com.yd.oss.feign.response.ApiMaterialDownloadResponse
;
import
com.yd.oss.feign.response.ApiMaterialListResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
/**
* 材料基础信息
*
* @author zxm
* @since 2025-12-17
*/
@RestController
@RequestMapping
(
"/material"
)
@Validated
public
class
ApiMaterialController
implements
ApiMaterialFeignClient
{
@Autowired
private
ApiMaterialService
apiMaterialService
;
/**
* 列表查询-材料基础信息
* @param request
* @return
*/
@Override
public
Result
<
List
<
ApiMaterialListResponse
>>
list
(
ApiMaterialListRequest
request
)
{
return
apiMaterialService
.
list
(
request
);
}
/**
* 下载-材料列表压缩包
* @param request
* @return
*/
@Override
public
Result
<
ApiMaterialDownloadResponse
>
downloadCompressedFile
(
ApiMaterialDownloadRequest
request
)
{
return
apiMaterialService
.
downloadCompressedFile
(
request
);
}
}
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiOssController.java
View file @
96e71469
...
@@ -3,6 +3,8 @@ package com.yd.oss.api.controller;
...
@@ -3,6 +3,8 @@ package com.yd.oss.api.controller;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.oss.api.service.ApiOssService
;
import
com.yd.oss.api.service.ApiOssService
;
import
com.yd.oss.feign.client.ApiOssFeignClient
;
import
com.yd.oss.feign.client.ApiOssFeignClient
;
import
com.yd.oss.feign.request.ApiUploadFileRequest
;
import
com.yd.oss.feign.response.ApiBatchUploadResponse
;
import
com.yd.oss.feign.response.ApiFileMetadataResponse
;
import
com.yd.oss.feign.response.ApiFileMetadataResponse
;
import
com.yd.oss.feign.response.ApiUploadResponse
;
import
com.yd.oss.feign.response.ApiUploadResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -11,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
...
@@ -11,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.List
;
/**
/**
* OSS接口信息
* OSS接口信息
*
*
...
@@ -36,6 +40,17 @@ public class ApiOssController implements ApiOssFeignClient {
...
@@ -36,6 +40,17 @@ public class ApiOssController implements ApiOssFeignClient {
}
}
/**
/**
* 上传文件 - body入参方式(新,推荐)
* @param file
* @param request
* @return
*/
@Override
public
Result
<
ApiUploadResponse
>
uploadFileBody
(
MultipartFile
file
,
ApiUploadFileRequest
request
)
{
return
apiOssService
.
uploadFileBody
(
file
,
request
);
}
/**
* 下载文件
* 下载文件
* @param fileKey 文件唯一标识
* @param fileKey 文件唯一标识
* @return
* @return
...
@@ -97,8 +112,14 @@ public class ApiOssController implements ApiOssFeignClient {
...
@@ -97,8 +112,14 @@ public class ApiOssController implements ApiOssFeignClient {
return
apiOssService
.
getFileMetadata
(
fileKey
,
""
,
""
);
return
apiOssService
.
getFileMetadata
(
fileKey
,
""
,
""
);
}
}
/**
* 批量上传文件 - body入参方式
* @param files 上传的文件列表
* @param request 批量上传请求参数
* @return 批量上传响应
*/
@Override
@Override
public
Result
uploadBatchFile
(
)
{
public
Result
<
ApiBatchUploadResponse
>
batchUploadFiles
(
List
<
MultipartFile
>
files
,
ApiUploadFileRequest
request
)
{
return
apiOssService
.
uploadBatchFile
(
);
return
apiOssService
.
batchUploadFiles
(
files
,
request
);
}
}
}
}
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiOssFileController.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
api
.
controller
;
import
com.yd.common.result.Result
;
import
com.yd.oss.api.service.ApiOssFileService
;
import
com.yd.oss.feign.client.ApiOssFileFeignClient
;
import
com.yd.oss.feign.request.ApiOssFileListRequest
;
import
com.yd.oss.feign.response.ApiOssFileListResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.validation.constraints.NotBlank
;
import
java.util.List
;
/**
* 文件元数据信息
*
* @author zxm
* @since 2025-08-22
*/
@RestController
@RequestMapping
(
"/ossFile"
)
@Validated
public
class
ApiOssFileController
implements
ApiOssFileFeignClient
{
@Autowired
private
ApiOssFileService
apiOssFileService
;
/**
* 列表查询-文件元数据信息
* @param request
* @return
*/
@Override
public
Result
<
List
<
ApiOssFileListResponse
>>
list
(
ApiOssFileListRequest
request
)
{
return
apiOssFileService
.
list
(
request
);
}
/**
* 删除-文件元数据信息
* @param fileBizId
* @return
*/
@Override
public
Result
del
(
String
fileBizId
)
{
return
apiOssFileService
.
del
(
fileBizId
);
}
}
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiRelObjectMaterialController.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
api
.
controller
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.yd.common.result.Result
;
import
com.yd.oss.api.service.ApiRelObjectMaterialService
;
import
com.yd.oss.feign.client.ApiRelObjectMaterialFeignClient
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialListAddRequest
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialPageRequest
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialUploadSubmitRequest
;
import
com.yd.oss.feign.response.ApiRelObjectMaterialPageResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 对象材料关系表信息
*
* @author zxm
* @since 2025-12-17
*/
@RestController
@RequestMapping
(
"/relObjectMaterial"
)
@Validated
public
class
ApiRelObjectMaterialController
implements
ApiRelObjectMaterialFeignClient
{
@Autowired
private
ApiRelObjectMaterialService
apiRelObjectMaterialService
;
/**
* 分页列表查询-对象材料关系表信息
* @param request
* @return
*/
@Override
public
Result
<
IPage
<
ApiRelObjectMaterialPageResponse
>>
page
(
ApiRelObjectMaterialPageRequest
request
)
{
return
apiRelObjectMaterialService
.
page
(
request
);
}
/**
* 删除-对象材料关系表信息
* @param relObjectMaterialBizId
* @return
*/
@Override
public
Result
del
(
String
relObjectMaterialBizId
)
{
return
apiRelObjectMaterialService
.
del
(
relObjectMaterialBizId
);
}
/**
* 添加-单个对象和材料列表关系信息
* @param request
* @return
*/
@Override
public
Result
addRelObjectMaterialList
(
ApiRelObjectMaterialListAddRequest
request
)
{
return
apiRelObjectMaterialService
.
addRelObjectMaterialList
(
request
);
}
/**
* 上传-提交
* @param request
* @return
*/
@Override
public
Result
submit
(
ApiRelObjectMaterialUploadSubmitRequest
request
)
{
return
apiRelObjectMaterialService
.
submit
(
request
);
}
}
yd-oss-api/src/main/java/com/yd/oss/api/controller/OssFileController.java
deleted
100644 → 0
View file @
48491bf2
package
com
.
yd
.
oss
.
api
.
controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 文件元数据表 前端控制器
* </p>
*
* @author zxm
* @since 2025-08-22
*/
@RestController
@RequestMapping
(
"/ossFile"
)
public
class
OssFileController
{
}
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiExcelService.java
View file @
96e71469
...
@@ -21,7 +21,7 @@ public interface ApiExcelService {
...
@@ -21,7 +21,7 @@ public interface ApiExcelService {
Result
<
ExportResult
>
export
(
List
<?>
dataList
,
ExportParam
exportParam
,
Class
<?>
entityClass
);
Result
<
ExportResult
>
export
(
List
<?>
dataList
,
ExportParam
exportParam
,
Class
<?>
entityClass
);
Result
<
ImportResult
>
importExcel
(
MultipartFile
file
,
Integer
headerRow
,
Result
<
ImportResult
>
importExcel
(
MultipartFile
file
,
Integer
headerRow
,
Integer
dataStartRow
,
String
requiredFields
);
Integer
dataStartRow
,
String
requiredFields
,
Integer
checkStartRow
);
Result
<
ImportResult
>
simpleImport
(
MultipartFile
file
);
Result
<
ImportResult
>
simpleImport
(
MultipartFile
file
);
}
}
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiMaterialService.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
api
.
service
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.request.ApiMaterialDownloadRequest
;
import
com.yd.oss.feign.request.ApiMaterialListRequest
;
import
com.yd.oss.feign.response.ApiMaterialDownloadResponse
;
import
com.yd.oss.feign.response.ApiMaterialListResponse
;
import
java.util.List
;
public
interface
ApiMaterialService
{
Result
<
List
<
ApiMaterialListResponse
>>
list
(
ApiMaterialListRequest
request
);
Result
<
ApiMaterialDownloadResponse
>
downloadCompressedFile
(
ApiMaterialDownloadRequest
request
);
}
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiOssFileService.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
api
.
service
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.dto.ApiRelMaterialDto
;
import
com.yd.oss.feign.request.ApiOssFileListRequest
;
import
com.yd.oss.feign.response.ApiOssFileListResponse
;
import
com.yd.oss.service.model.RelObjectMaterial
;
import
java.util.List
;
public
interface
ApiOssFileService
{
Result
<
List
<
ApiOssFileListResponse
>>
list
(
ApiOssFileListRequest
request
);
Result
del
(
String
fileBizId
);
Result
updateByMaterial
(
List
<
RelObjectMaterial
>
relObjectMaterialList
,
List
<
ApiRelMaterialDto
>
materialDtoList
);
Result
updateByMaterial
(
String
relObjectMaterialBizId
,
List
<
String
>
fileBizIdList
);
}
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiOssService.java
View file @
96e71469
package
com
.
yd
.
oss
.
api
.
service
;
package
com
.
yd
.
oss
.
api
.
service
;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.request.ApiUploadFileRequest
;
import
com.yd.oss.feign.response.ApiBatchUploadResponse
;
import
com.yd.oss.feign.response.ApiFileMetadataResponse
;
import
com.yd.oss.feign.response.ApiFileMetadataResponse
;
import
com.yd.oss.feign.response.ApiUploadResponse
;
import
com.yd.oss.feign.response.ApiUploadResponse
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.List
;
public
interface
ApiOssService
{
public
interface
ApiOssService
{
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
,
String
bucket
,
String
provider
,
String
uploadUser
);
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
,
String
bucket
,
String
provider
,
String
uploadUser
);
Result
<
ApiUploadResponse
>
uploadFileBody
(
MultipartFile
file
,
ApiUploadFileRequest
request
);
void
downloadFile
(
String
fileKey
,
String
bucket
,
String
provider
,
HttpServletResponse
response
);
void
downloadFile
(
String
fileKey
,
String
bucket
,
String
provider
,
HttpServletResponse
response
);
Result
<
Boolean
>
deleteFile
(
String
fileKey
,
String
bucket
,
String
provider
,
String
operator
);
Result
<
Boolean
>
deleteFile
(
String
fileKey
,
String
bucket
,
String
provider
,
String
operator
);
...
@@ -22,5 +27,12 @@ public interface ApiOssService {
...
@@ -22,5 +27,12 @@ public interface ApiOssService {
Result
<
ApiFileMetadataResponse
>
getFileMetadata
(
String
fileKey
,
String
bucket
,
String
provider
);
Result
<
ApiFileMetadataResponse
>
getFileMetadata
(
String
fileKey
,
String
bucket
,
String
provider
);
Result
uploadBatchFile
();
/**
* 批量上传文件
* @param files 文件列表
* @param request 批量上传请求参数
* @return 批量上传响应
*/
Result
<
ApiBatchUploadResponse
>
batchUploadFiles
(
List
<
MultipartFile
>
files
,
ApiUploadFileRequest
request
);
}
}
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiRelObjectMaterialService.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
api
.
service
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialListAddRequest
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialPageRequest
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialUploadSubmitRequest
;
import
com.yd.oss.feign.response.ApiRelObjectMaterialPageResponse
;
public
interface
ApiRelObjectMaterialService
{
Result
<
IPage
<
ApiRelObjectMaterialPageResponse
>>
page
(
ApiRelObjectMaterialPageRequest
request
);
Result
del
(
String
relObjectMaterialBizId
);
Result
addRelObjectMaterialList
(
ApiRelObjectMaterialListAddRequest
request
);
Result
submit
(
ApiRelObjectMaterialUploadSubmitRequest
request
);
}
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiExcelServiceImpl.java
View file @
96e71469
...
@@ -107,13 +107,13 @@ public class ApiExcelServiceImpl implements ApiExcelService {
...
@@ -107,13 +107,13 @@ public class ApiExcelServiceImpl implements ApiExcelService {
*/
*/
@Override
@Override
public
Result
<
ImportResult
>
importExcel
(
MultipartFile
file
,
Integer
headerRow
,
public
Result
<
ImportResult
>
importExcel
(
MultipartFile
file
,
Integer
headerRow
,
Integer
dataStartRow
,
String
requiredFields
)
{
Integer
dataStartRow
,
String
requiredFields
,
Integer
checkStartRow
)
{
List
<
String
>
requiredFieldList
=
null
;
List
<
String
>
requiredFieldList
=
null
;
if
(
requiredFields
!=
null
&&
!
requiredFields
.
isEmpty
())
{
if
(
requiredFields
!=
null
&&
!
requiredFields
.
isEmpty
())
{
requiredFieldList
=
Arrays
.
asList
(
requiredFields
.
split
(
","
));
requiredFieldList
=
Arrays
.
asList
(
requiredFields
.
split
(
","
));
}
}
ImportResult
importResult
=
excelImportService
.
genericImport
(
file
,
headerRow
,
dataStartRow
,
requiredFieldList
);
ImportResult
importResult
=
excelImportService
.
genericImport
(
file
,
headerRow
,
dataStartRow
,
requiredFieldList
,
checkStartRow
);
return
Result
.
success
(
importResult
);
return
Result
.
success
(
importResult
);
}
}
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiMaterialServiceImpl.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
api
.
service
.
impl
;
import
com.yd.common.result.Result
;
import
com.yd.oss.api.service.ApiMaterialService
;
import
com.yd.oss.feign.dto.ApiMaterialDto
;
import
com.yd.oss.feign.request.ApiMaterialDownloadRequest
;
import
com.yd.oss.feign.request.ApiMaterialListRequest
;
import
com.yd.oss.feign.response.ApiMaterialDownloadResponse
;
import
com.yd.oss.feign.response.ApiMaterialListResponse
;
import
com.yd.oss.service.dto.MaterialDto
;
import
com.yd.oss.service.model.Material
;
import
com.yd.oss.service.model.RelObjectMaterial
;
import
com.yd.oss.service.service.CompressedFileService
;
import
com.yd.oss.service.service.IMaterialService
;
import
com.yd.oss.service.service.IRelObjectMaterialService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
public
class
ApiMaterialServiceImpl
implements
ApiMaterialService
{
@Autowired
private
IMaterialService
iMaterialService
;
@Autowired
private
CompressedFileService
compressedFileService
;
@Autowired
private
IRelObjectMaterialService
iRelObjectMaterialService
;
/**
* 列表查询-材料基础信息
* @param request
* @return
*/
@Override
public
Result
<
List
<
ApiMaterialListResponse
>>
list
(
ApiMaterialListRequest
request
)
{
List
<
Material
>
materialList
=
iMaterialService
.
queryList
(
MaterialDto
.
builder
().
objectType
(
request
.
getObjectType
()).
build
());
if
(!
CollectionUtils
.
isEmpty
(
materialList
))
{
List
<
ApiMaterialListResponse
>
responses
=
materialList
.
stream
().
map
(
dto
->
{
ApiMaterialListResponse
response
=
new
ApiMaterialListResponse
();
BeanUtils
.
copyProperties
(
dto
,
response
);
return
response
;
}).
collect
(
Collectors
.
toList
());
return
Result
.
success
(
responses
);
}
return
Result
.
success
();
}
/**
* 下载-材料列表压缩包
* @param request
* @return
*/
@Override
public
Result
<
ApiMaterialDownloadResponse
>
downloadCompressedFile
(
ApiMaterialDownloadRequest
request
)
{
// if (StringUtils.isNotBlank(request.getObjectBizId())) {
// List<ApiMaterialDto> apiMaterialDtoList = new ArrayList<>();
// List<RelObjectMaterial> relObjectMaterialList = iRelObjectMaterialService.queryList(request.getObjectBizId());
// if (!CollectionUtils.isEmpty(relObjectMaterialList)) {
// List<String> materialBizIdList = relObjectMaterialList.stream().map(RelObjectMaterial::getMaterialBizId).collect(Collectors.toList());
//
// for (RelObjectMaterial relObjectMaterial : relObjectMaterialList) {
//
// }
// }
// }
return
compressedFileService
.
downloadCompressedFile
(
request
);
}
}
\ No newline at end of file
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssFileServiceImpl.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
api
.
service
.
impl
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.enums.ResultCode
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.oss.api.service.ApiOssFileService
;
import
com.yd.oss.feign.dto.ApiRelMaterialDto
;
import
com.yd.oss.feign.request.ApiOssFileListRequest
;
import
com.yd.oss.feign.response.ApiOssFileListResponse
;
import
com.yd.oss.service.dto.OssFileDto
;
import
com.yd.oss.service.model.OssFile
;
import
com.yd.oss.service.model.RelObjectMaterial
;
import
com.yd.oss.service.service.IOssFileService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
public
class
ApiOssFileServiceImpl
implements
ApiOssFileService
{
@Autowired
private
IOssFileService
iOssFileService
;
/**
* 列表查询-文件元数据信息
* @param request
* @return
*/
@Override
public
Result
<
List
<
ApiOssFileListResponse
>>
list
(
ApiOssFileListRequest
request
)
{
List
<
ApiOssFileListResponse
>
list
=
iOssFileService
.
list
(
request
.
getObjectBizId
(),
request
.
getObjectBizIdList
());
return
Result
.
success
(
list
);
}
/**
* 删除-文件元数据信息
* @param fileBizId
* @return
*/
@Override
public
Result
del
(
String
fileBizId
)
{
Result
<
OssFile
>
result
=
checkOssFileIsExist
(
fileBizId
);
OssFile
ossFile
=
result
.
getData
();
iOssFileService
.
removeById
(
ossFile
.
getId
());
return
Result
.
success
();
}
/**
* 更新-材料
* @param relObjectMaterialList
* @param materialDtoList
* @return
*/
@Override
public
Result
updateByMaterial
(
List
<
RelObjectMaterial
>
relObjectMaterialList
,
List
<
ApiRelMaterialDto
>
materialDtoList
)
{
if
(!
CollectionUtils
.
isEmpty
(
materialDtoList
))
{
for
(
ApiRelMaterialDto
dto
:
materialDtoList
)
{
if
(!
CollectionUtils
.
isEmpty
(
relObjectMaterialList
))
{
List
<
RelObjectMaterial
>
materials
=
relObjectMaterialList
.
stream
().
filter
(
d
->
d
.
getMaterialBizId
().
equals
(
dto
.
getMaterialBizId
())).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
materials
))
{
RelObjectMaterial
relObjectMaterial
=
materials
.
get
(
0
);
if
(!
CollectionUtils
.
isEmpty
(
dto
.
getFileBizIdList
()))
{
List
<
OssFile
>
ossFileList
=
iOssFileService
.
queryList
(
OssFileDto
.
builder
().
fileBizIdList
(
dto
.
getFileBizIdList
()).
build
());
if
(!
CollectionUtils
.
isEmpty
(
ossFileList
))
{
ossFileList
=
ossFileList
.
stream
().
map
(
file
->
{
file
.
setObjectType
(
CommonEnum
.
UID_TYPE_REL_OBJECT_MATERIAL
.
getCode
());
file
.
setObjectTableName
(
CommonEnum
.
UID_TYPE_REL_OBJECT_MATERIAL
.
getName
());
file
.
setObjectTableName
(
CommonEnum
.
UID_TYPE_REL_OBJECT_MATERIAL
.
getCode
());
file
.
setObjectBizId
(
relObjectMaterial
.
getRelObjectMaterialBizId
());
return
file
;
}).
collect
(
Collectors
.
toList
());
iOssFileService
.
saveOrUpdateBatch
(
ossFileList
);
}
}
}
}
}
}
return
Result
.
success
();
}
@Override
public
Result
updateByMaterial
(
String
relObjectMaterialBizId
,
List
<
String
>
fileBizIdList
)
{
//objectId查询列表,置为空字符串
List
<
OssFile
>
ossFiles
=
iOssFileService
.
queryList
(
OssFileDto
.
builder
().
objectBizId
(
relObjectMaterialBizId
).
build
());
if
(!
CollectionUtils
.
isEmpty
(
ossFiles
))
{
ossFiles
=
ossFiles
.
stream
().
map
(
file
->
{
file
.
setObjectType
(
""
);
file
.
setObjectTableName
(
""
);
file
.
setObjectTableName
(
""
);
file
.
setObjectBizId
(
""
);
return
file
;
}).
collect
(
Collectors
.
toList
());
iOssFileService
.
saveOrUpdateBatch
(
ossFiles
);
}
//再更新
List
<
OssFile
>
ossFileList
=
iOssFileService
.
queryList
(
OssFileDto
.
builder
().
fileBizIdList
(
fileBizIdList
).
build
());
if
(!
CollectionUtils
.
isEmpty
(
ossFileList
))
{
ossFileList
=
ossFileList
.
stream
().
map
(
file
->
{
file
.
setObjectType
(
CommonEnum
.
UID_TYPE_REL_OBJECT_MATERIAL
.
getCode
());
file
.
setObjectTableName
(
CommonEnum
.
UID_TYPE_REL_OBJECT_MATERIAL
.
getName
());
file
.
setObjectTableName
(
CommonEnum
.
UID_TYPE_REL_OBJECT_MATERIAL
.
getCode
());
file
.
setObjectBizId
(
relObjectMaterialBizId
);
return
file
;
}).
collect
(
Collectors
.
toList
());
iOssFileService
.
saveOrUpdateBatch
(
ossFileList
);
}
return
Result
.
success
();
}
/**
* 校验文件元数据信息是否存在
* @param fileBizId
* @return
*/
public
Result
<
OssFile
>
checkOssFileIsExist
(
String
fileBizId
)
{
OssFile
ossFile
=
iOssFileService
.
queryOne
(
fileBizId
);
if
(
Objects
.
isNull
(
ossFile
))
{
//数据不存在
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
ResultCode
.
NULL_ERROR
.
getMessage
());
}
return
Result
.
success
(
ossFile
);
}
}
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssServiceImpl.java
View file @
96e71469
...
@@ -3,13 +3,15 @@ package com.yd.oss.api.service.impl;
...
@@ -3,13 +3,15 @@ package com.yd.oss.api.service.impl;
import
com.alibaba.cloud.commons.lang.StringUtils
;
import
com.alibaba.cloud.commons.lang.StringUtils
;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.oss.api.service.ApiOssService
;
import
com.yd.oss.api.service.ApiOssService
;
import
com.yd.oss.feign.request.ApiUploadFileRequest
;
import
com.yd.oss.feign.response.ApiBatchUploadResponse
;
import
com.yd.oss.feign.response.ApiFileMetadataResponse
;
import
com.yd.oss.feign.response.ApiFileMetadataResponse
;
import
com.yd.oss.feign.response.ApiUploadResponse
;
import
com.yd.oss.feign.response.ApiUploadResponse
;
import
com.yd.oss.service.dto.FileMetadata
;
import
com.yd.oss.service.dto.FileMetadata
;
import
com.yd.oss.service.dto.OssUploadFileDto
;
import
com.yd.oss.service.dto.OssUploadFileReqDto
;
import
com.yd.oss.service.dto.OssUploadFileResDto
;
import
com.yd.oss.service.dto.UploadResult
;
import
com.yd.oss.service.dto.UploadResult
;
import
com.yd.oss.service.service.OssService
;
import
com.yd.oss.service.service.OssService
;
import
com.yd.oss.service.service.impl.FileUploadService
;
import
com.yd.oss.service.utils.FileUtil
;
import
com.yd.oss.service.utils.FileUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.io.IOUtils
;
import
org.apache.commons.io.IOUtils
;
...
@@ -21,6 +23,8 @@ import javax.servlet.http.HttpServletResponse;
...
@@ -21,6 +23,8 @@ import javax.servlet.http.HttpServletResponse;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.InputStream
;
import
java.time.Duration
;
import
java.time.Duration
;
import
java.util.List
;
import
java.util.Objects
;
@Slf4j
@Slf4j
@Service
@Service
...
@@ -29,9 +33,6 @@ public class ApiOssServiceImpl implements ApiOssService {
...
@@ -29,9 +33,6 @@ public class ApiOssServiceImpl implements ApiOssService {
@Autowired
@Autowired
private
OssService
ossService
;
private
OssService
ossService
;
@Autowired
private
FileUploadService
fileUploadService
;
/**
/**
* 上传文件
* 上传文件
* @param file 上传的文件
* @param file 上传的文件
...
@@ -50,7 +51,7 @@ public class ApiOssServiceImpl implements ApiOssService {
...
@@ -50,7 +51,7 @@ public class ApiOssServiceImpl implements ApiOssService {
}
}
// 上传文件
// 上传文件
OssUploadFileDto
ossUploadFileDto
=
ossService
.
uploadFile
(
file
.
getInputStream
(),
file
.
getOriginalFilename
(),
OssUploadFile
Res
Dto
ossUploadFileDto
=
ossService
.
uploadFile
(
file
.
getInputStream
(),
file
.
getOriginalFilename
(),
bucket
,
uploadUser
,
FileUtil
.
getFileType
(
file
.
getOriginalFilename
()));
bucket
,
uploadUser
,
FileUtil
.
getFileType
(
file
.
getOriginalFilename
()));
// 获取上传结果(包含文件信息和访问URL)
// 获取上传结果(包含文件信息和访问URL)
...
@@ -67,6 +68,25 @@ public class ApiOssServiceImpl implements ApiOssService {
...
@@ -67,6 +68,25 @@ public class ApiOssServiceImpl implements ApiOssService {
}
}
/**
/**
* 上传文件 - body入参方式(新,推荐)
* @param file
* @param request
* @return
*/
@Override
public
Result
<
ApiUploadResponse
>
uploadFileBody
(
MultipartFile
file
,
ApiUploadFileRequest
request
)
{
ApiUploadResponse
response
=
null
;
OssUploadFileReqDto
reqDto
=
new
OssUploadFileReqDto
();
BeanUtils
.
copyProperties
(
request
,
reqDto
);
OssUploadFileResDto
fileResDto
=
ossService
.
uploadFileBody
(
file
,
reqDto
);
if
(!
Objects
.
isNull
(
fileResDto
))
{
response
=
new
ApiUploadResponse
();
BeanUtils
.
copyProperties
(
fileResDto
,
response
);
}
return
Result
.
success
(
response
);
}
/**
* 下载文件
* 下载文件
* @param fileKey 文件唯一标识
* @param fileKey 文件唯一标识
* @param bucket oss桶(不传值使用默认的oss的桶)
* @param bucket oss桶(不传值使用默认的oss的桶)
...
@@ -218,9 +238,27 @@ public class ApiOssServiceImpl implements ApiOssService {
...
@@ -218,9 +238,27 @@ public class ApiOssServiceImpl implements ApiOssService {
}
}
}
}
/**
* 批量上传文件
* @param files 文件列表
* @param request 批量上传请求参数
* @return 批量上传响应
*/
@Override
@Override
public
Result
uploadBatchFile
()
{
public
Result
<
ApiBatchUploadResponse
>
batchUploadFiles
(
List
<
MultipartFile
>
files
,
ApiUploadFileRequest
request
)
{
fileUploadService
.
batchProcessUrls
();
try
{
return
Result
.
success
();
// 转换请求参数
OssUploadFileReqDto
reqDto
=
new
OssUploadFileReqDto
();
BeanUtils
.
copyProperties
(
request
,
reqDto
);
// 调用服务层批量上传方法
ApiBatchUploadResponse
response
=
ossService
.
batchUploadFiles
(
files
,
reqDto
);
return
Result
.
success
(
response
);
}
catch
(
Exception
e
)
{
log
.
error
(
"批量上传文件失败"
,
e
);
return
Result
.
fail
(
"批量上传文件失败: "
+
e
.
getMessage
());
}
}
}
}
}
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiPdfServiceImpl.java
View file @
96e71469
...
@@ -27,7 +27,7 @@ public class ApiPdfServiceImpl implements ApiPdfService {
...
@@ -27,7 +27,7 @@ public class ApiPdfServiceImpl implements ApiPdfService {
public
Result
<
ApiGeneratePdfResponse
>
generatePDF
(
ApiGeneratePdfRequest
request
)
{
public
Result
<
ApiGeneratePdfResponse
>
generatePDF
(
ApiGeneratePdfRequest
request
)
{
ApiGeneratePdfResponse
response
=
new
ApiGeneratePdfResponse
();
ApiGeneratePdfResponse
response
=
new
ApiGeneratePdfResponse
();
try
{
try
{
String
url
=
pdfService
.
generatePDF
(
request
.
getDataObject
(),
request
.
getObjectId
(),
request
.
getTemplateType
());
String
url
=
pdfService
.
generatePDF
(
request
.
getDataObject
(),
request
.
getObjectId
(),
request
.
getTemplateType
()
,
request
.
getCustomFileName
()
);
response
.
setUrl
(
url
);
response
.
setUrl
(
url
);
return
Result
.
success
(
response
);
return
Result
.
success
(
response
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiRelObjectMaterialServiceImpl.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
api
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.enums.ResultCode
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.oss.api.service.ApiOssFileService
;
import
com.yd.oss.api.service.ApiRelObjectMaterialService
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialListAddRequest
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialPageRequest
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialUploadSubmitRequest
;
import
com.yd.oss.feign.response.ApiRelObjectMaterialPageResponse
;
import
com.yd.oss.service.model.RelObjectMaterial
;
import
com.yd.oss.service.service.IRelObjectMaterialService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
@Service
@Slf4j
public
class
ApiRelObjectMaterialServiceImpl
implements
ApiRelObjectMaterialService
{
@Autowired
private
IRelObjectMaterialService
iRelObjectMaterialService
;
@Autowired
private
ApiOssFileService
apiOssFileService
;
/**
* 分页列表查询-对象材料关系表信息
* @param request
* @return
*/
@Override
public
Result
<
IPage
<
ApiRelObjectMaterialPageResponse
>>
page
(
ApiRelObjectMaterialPageRequest
request
)
{
Page
<
ApiRelObjectMaterialPageResponse
>
page
=
new
Page
<>(
request
.
getPageNo
(),
request
.
getPageSize
());
IPage
<
ApiRelObjectMaterialPageResponse
>
iPage
=
iRelObjectMaterialService
.
page
(
page
,
request
);
return
Result
.
success
(
iPage
);
}
/**
* 删除-对象材料关系表信息
* @param relObjectMaterialBizId
* @return
*/
@Override
public
Result
del
(
String
relObjectMaterialBizId
)
{
//校验对象材料关系表信息是否存在
Result
<
RelObjectMaterial
>
result
=
checkRelObjectMaterialIsExist
(
relObjectMaterialBizId
);
RelObjectMaterial
relObjectMaterial
=
result
.
getData
();
iRelObjectMaterialService
.
removeById
(
relObjectMaterial
.
getId
());
return
Result
.
success
();
}
/**
* 添加-单个对象和材料列表关系信息
* @param request
* @return
*/
@Override
public
Result
addRelObjectMaterialList
(
ApiRelObjectMaterialListAddRequest
request
)
{
//先删后新增
iRelObjectMaterialService
.
delByObjectBizId
(
request
.
getObjectBizId
());
if
(!
CollectionUtils
.
isEmpty
(
request
.
getMaterialDtoList
()))
{
List
<
RelObjectMaterial
>
saveList
=
request
.
getMaterialDtoList
().
stream
().
map
(
dto
->
{
RelObjectMaterial
relObjectMaterial
=
new
RelObjectMaterial
();
BeanUtils
.
copyProperties
(
request
,
relObjectMaterial
);
relObjectMaterial
.
setMaterialBizId
(
dto
.
getMaterialBizId
());
relObjectMaterial
.
setRelObjectMaterialBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_REL_OBJECT_MATERIAL
.
getCode
()));
if
(!
CollectionUtils
.
isEmpty
(
dto
.
getFileBizIdList
()))
{
//附件不为空, 已上传
relObjectMaterial
.
setStatus
(
"YSC"
);
}
else
{
//附件为空, 未上传
relObjectMaterial
.
setStatus
(
"WSC"
);
}
return
relObjectMaterial
;
}).
collect
(
Collectors
.
toList
());
iRelObjectMaterialService
.
saveOrUpdateBatch
(
saveList
);
//更新保存文件元数据列表
apiOssFileService
.
updateByMaterial
(
saveList
,
request
.
getMaterialDtoList
());
}
return
Result
.
success
();
}
/**
* 上传-提交
* @param request
* @return
*/
@Override
public
Result
submit
(
ApiRelObjectMaterialUploadSubmitRequest
request
)
{
Result
<
RelObjectMaterial
>
result
=
checkRelObjectMaterialIsExist
(
request
.
getRelObjectMaterialBizId
());
RelObjectMaterial
relObjectMaterial
=
result
.
getData
();
if
(!
CollectionUtils
.
isEmpty
(
request
.
getFileBizIdList
()))
{
relObjectMaterial
.
setStatus
(
"YSC"
);
}
else
{
relObjectMaterial
.
setStatus
(
"WSC"
);
}
iRelObjectMaterialService
.
saveOrUpdate
(
relObjectMaterial
);
//更新保存文件元数据列表
apiOssFileService
.
updateByMaterial
(
relObjectMaterial
.
getRelObjectMaterialBizId
(),
request
.
getFileBizIdList
());
return
Result
.
success
();
}
/**
* 校验对象材料关系表信息是否存在
* @param relObjectMaterialBizId
* @return
*/
public
Result
<
RelObjectMaterial
>
checkRelObjectMaterialIsExist
(
String
relObjectMaterialBizId
)
{
RelObjectMaterial
relObjectMaterial
=
iRelObjectMaterialService
.
queryOne
(
relObjectMaterialBizId
);
if
(
Objects
.
isNull
(
relObjectMaterial
))
{
//数据不存在
throw
new
BusinessException
(
ResultCode
.
NULL_ERROR
.
getCode
(),
ResultCode
.
NULL_ERROR
.
getMessage
());
}
return
Result
.
success
(
relObjectMaterial
);
}
}
yd-oss-api/yd-oss-api.iml
View file @
96e71469
...
@@ -126,6 +126,7 @@
...
@@ -126,6 +126,7 @@
<orderEntry
type=
"library"
name=
"Maven: com.ibm.icu:icu4j:73.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.ibm.icu:icu4j:73.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-csf-feign:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-csf-feign:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-question-feign:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-question-feign:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-base-feign:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-auth-core:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-auth-core:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.github.xiaoymin:knife4j-openapi3-spring-boot-starter:4.3.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.github.xiaoymin:knife4j-openapi3-spring-boot-starter:4.3.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.github.xiaoymin:knife4j-core:4.3.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.github.xiaoymin:knife4j-core:4.3.0"
level=
"project"
/>
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiExcelFeignClient.java
View file @
96e71469
...
@@ -62,7 +62,9 @@ public interface ApiExcelFeignClient {
...
@@ -62,7 +62,9 @@ public interface ApiExcelFeignClient {
@RequestPart
(
"file"
)
MultipartFile
file
,
@RequestPart
(
"file"
)
MultipartFile
file
,
@RequestParam
(
value
=
"headerRow"
,
required
=
false
)
Integer
headerRow
,
@RequestParam
(
value
=
"headerRow"
,
required
=
false
)
Integer
headerRow
,
@RequestParam
(
value
=
"dataStartRow"
,
required
=
false
)
Integer
dataStartRow
,
@RequestParam
(
value
=
"dataStartRow"
,
required
=
false
)
Integer
dataStartRow
,
@RequestParam
(
value
=
"requiredFields"
,
required
=
false
)
String
requiredFields
);
@RequestParam
(
value
=
"requiredFields"
,
required
=
false
)
String
requiredFields
,
@RequestParam
(
value
=
"checkStartRow"
,
required
=
false
)
Integer
checkStartRow
);
/**
/**
* 简化导入接口
* 简化导入接口
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiMaterialFeignClient.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
client
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.fallback.ApiMaterialFeignFallbackFactory
;
import
com.yd.oss.feign.request.ApiMaterialDownloadRequest
;
import
com.yd.oss.feign.request.ApiMaterialListRequest
;
import
com.yd.oss.feign.response.ApiMaterialDownloadResponse
;
import
com.yd.oss.feign.response.ApiMaterialListResponse
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
java.util.List
;
/**
* 材料基础信息Feign客户端
*/
@FeignClient
(
name
=
"yd-oss-api"
,
path
=
"/oss/api/material"
,
fallbackFactory
=
ApiMaterialFeignFallbackFactory
.
class
)
public
interface
ApiMaterialFeignClient
{
/**
* 列表查询-材料基础信息
* @param request
* @return
*/
@PostMapping
(
"/list"
)
Result
<
List
<
ApiMaterialListResponse
>>
list
(
@RequestBody
ApiMaterialListRequest
request
);
/**
* 下载-材料列表压缩包
* @param request
* @return
*/
@PostMapping
(
"/download/compressed/file"
)
Result
<
ApiMaterialDownloadResponse
>
downloadCompressedFile
(
@Validated
@RequestBody
ApiMaterialDownloadRequest
request
);
}
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiOssFeignClient.java
View file @
96e71469
...
@@ -2,15 +2,17 @@ package com.yd.oss.feign.client;
...
@@ -2,15 +2,17 @@ package com.yd.oss.feign.client;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.fallback.ApiOssFeignFallbackFactory
;
import
com.yd.oss.feign.fallback.ApiOssFeignFallbackFactory
;
import
com.yd.oss.feign.request.ApiUploadFileRequest
;
import
com.yd.oss.feign.response.ApiBatchUploadResponse
;
import
com.yd.oss.feign.response.ApiFileMetadataResponse
;
import
com.yd.oss.feign.response.ApiFileMetadataResponse
;
import
com.yd.oss.feign.response.ApiUploadResponse
;
import
com.yd.oss.feign.response.ApiUploadResponse
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.http.MediaType
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.List
;
/**
/**
* OSS服务信息Feign客户端
* OSS服务信息Feign客户端
*/
*/
...
@@ -26,6 +28,15 @@ public interface ApiOssFeignClient {
...
@@ -26,6 +28,15 @@ public interface ApiOssFeignClient {
Result
<
ApiUploadResponse
>
uploadFile
(
@RequestParam
(
"file"
)
MultipartFile
file
);
Result
<
ApiUploadResponse
>
uploadFile
(
@RequestParam
(
"file"
)
MultipartFile
file
);
/**
/**
* 上传文件 - body入参方式(新,推荐)
* @param file
* @param request
* @return
*/
@PostMapping
(
value
=
"/upload/body"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
Result
<
ApiUploadResponse
>
uploadFileBody
(
@RequestPart
(
"file"
)
MultipartFile
file
,
ApiUploadFileRequest
request
);
/**
* 下载文件
* 下载文件
* @param fileKey 文件唯一标识
* @param fileKey 文件唯一标识
* @return
* @return
...
@@ -76,9 +87,14 @@ public interface ApiOssFeignClient {
...
@@ -76,9 +87,14 @@ public interface ApiOssFeignClient {
Result
<
ApiFileMetadataResponse
>
getFileMetadata
(
@RequestParam
(
"fileKey"
)
String
fileKey
);
Result
<
ApiFileMetadataResponse
>
getFileMetadata
(
@RequestParam
(
"fileKey"
)
String
fileKey
);
/**
/**
* 批量上传文件
* 批量上传文件 - body入参方式
* @return
* @param files 上传的文件列表
* @param request 批量上传请求参数
* @return 批量上传响应
*/
*/
@GetMapping
(
"/upload/batch/file"
)
@PostMapping
(
value
=
"/batch/upload"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
Result
uploadBatchFile
();
Result
<
ApiBatchUploadResponse
>
batchUploadFiles
(
@RequestPart
(
"files"
)
List
<
MultipartFile
>
files
,
ApiUploadFileRequest
request
);
}
}
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiOssFileFeignClient.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
client
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.fallback.ApiOssFileFeignFallbackFactory
;
import
com.yd.oss.feign.request.ApiOssFileListRequest
;
import
com.yd.oss.feign.response.ApiOssFileListResponse
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
javax.validation.constraints.NotBlank
;
import
java.util.List
;
/**
* 文件元数据信息Feign客户端
*/
@FeignClient
(
name
=
"yd-oss-api"
,
path
=
"/oss/api/ossFile"
,
fallbackFactory
=
ApiOssFileFeignFallbackFactory
.
class
)
public
interface
ApiOssFileFeignClient
{
/**
* 列表查询-文件元数据信息
* @param request
* @return
*/
@PostMapping
(
"/list"
)
Result
<
List
<
ApiOssFileListResponse
>>
list
(
@Validated
@RequestBody
ApiOssFileListRequest
request
);
/**
* 删除-文件元数据信息
* @param fileBizId
* @return
*/
@DeleteMapping
(
"/del"
)
Result
del
(
@NotBlank
(
message
=
"文件元数据表唯一业务ID不能为空"
)
@RequestParam
(
value
=
"fileBizId"
)
String
fileBizId
);
}
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiRelObjectMaterialFeignClient.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
client
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.fallback.ApiRelObjectMaterialFeignFallbackFactory
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialListAddRequest
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialPageRequest
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialUploadSubmitRequest
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
javax.validation.constraints.NotBlank
;
/**
* 对象材料关系表信息Feign客户端
*/
@FeignClient
(
name
=
"yd-oss-api"
,
path
=
"/oss/api/relObjectMaterial"
,
fallbackFactory
=
ApiRelObjectMaterialFeignFallbackFactory
.
class
)
public
interface
ApiRelObjectMaterialFeignClient
{
/**
* 分页列表查询-对象材料关系表信息
* @param request
* @return
*/
@PostMapping
(
"/page"
)
Result
page
(
@RequestBody
ApiRelObjectMaterialPageRequest
request
);
/**
* 删除-对象材料关系表信息
* @param relObjectMaterialBizId
* @return
*/
@DeleteMapping
(
"/del"
)
Result
del
(
@NotBlank
(
message
=
"对象材料关系表唯一业务ID不能为空"
)
@RequestParam
(
value
=
"relObjectMaterialBizId"
)
String
relObjectMaterialBizId
);
/**
* 添加-单个对象和材料列表关系信息
* @param request
* @return
*/
@PostMapping
(
"/add/relObjectMaterialList"
)
Result
addRelObjectMaterialList
(
@Validated
@RequestBody
ApiRelObjectMaterialListAddRequest
request
);
/**
* 上传-提交
* @param request
* @return
*/
@PostMapping
(
"/upload/submit"
)
Result
submit
(
@Validated
@RequestBody
ApiRelObjectMaterialUploadSubmitRequest
request
);
}
yd-oss-feign/src/main/java/com/yd/oss/feign/dto/ApiMaterialDto.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
dto
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
ApiMaterialDto
{
/**
* 资料人(字典)
*/
private
String
dataPerson
;
/**
* 资料类型(字典)
*/
private
String
dataType
;
/**
* 文件URL列表
*/
private
List
<
String
>
fileUrlList
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/dto/ApiRelMaterialDto.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
dto
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
ApiRelMaterialDto
{
/**
* 材料信息表唯一业务ID
*/
private
String
materialBizId
;
/**
* 文件元数据表唯一业务ID列表
*/
private
List
<
String
>
fileBizIdList
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiExcelFeignFallbackFactory.java
View file @
96e71469
...
@@ -40,8 +40,7 @@ public class ApiExcelFeignFallbackFactory implements FallbackFactory<ApiExcelFei
...
@@ -40,8 +40,7 @@ public class ApiExcelFeignFallbackFactory implements FallbackFactory<ApiExcelFei
}
}
@Override
@Override
public
Result
<
ImportResult
>
importExcel
(
MultipartFile
file
,
Integer
headerRow
,
public
Result
<
ImportResult
>
importExcel
(
MultipartFile
file
,
Integer
headerRow
,
Integer
dataStartRow
,
String
requiredFields
,
Integer
checkStartRow
)
{
Integer
dataStartRow
,
String
requiredFields
)
{
return
null
;
return
null
;
}
}
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiMaterialFeignFallbackFactory.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
fallback
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.client.ApiMaterialFeignClient
;
import
com.yd.oss.feign.request.ApiMaterialDownloadRequest
;
import
com.yd.oss.feign.request.ApiMaterialListRequest
;
import
com.yd.oss.feign.response.ApiMaterialListResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.cloud.openfeign.FallbackFactory
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
/**
* 材料基础信息Feign降级处理
*/
@Slf4j
@Component
public
class
ApiMaterialFeignFallbackFactory
implements
FallbackFactory
<
ApiMaterialFeignClient
>
{
@Override
public
ApiMaterialFeignClient
create
(
Throwable
cause
)
{
return
new
ApiMaterialFeignClient
()
{
@Override
public
Result
<
List
<
ApiMaterialListResponse
>>
list
(
ApiMaterialListRequest
request
)
{
return
null
;
}
@Override
public
Result
downloadCompressedFile
(
ApiMaterialDownloadRequest
request
)
{
return
null
;
}
};
}
}
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiOssFeignFallbackFactory.java
View file @
96e71469
...
@@ -2,6 +2,8 @@ package com.yd.oss.feign.fallback;
...
@@ -2,6 +2,8 @@ package com.yd.oss.feign.fallback;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.client.ApiOssFeignClient
;
import
com.yd.oss.feign.client.ApiOssFeignClient
;
import
com.yd.oss.feign.request.ApiUploadFileRequest
;
import
com.yd.oss.feign.response.ApiBatchUploadResponse
;
import
com.yd.oss.feign.response.ApiFileMetadataResponse
;
import
com.yd.oss.feign.response.ApiFileMetadataResponse
;
import
com.yd.oss.feign.response.ApiUploadResponse
;
import
com.yd.oss.feign.response.ApiUploadResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -9,6 +11,8 @@ import org.springframework.cloud.openfeign.FallbackFactory;
...
@@ -9,6 +11,8 @@ import org.springframework.cloud.openfeign.FallbackFactory;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.List
;
/**
/**
* OSS服务信息Feign降级处理
* OSS服务信息Feign降级处理
*/
*/
...
@@ -24,6 +28,11 @@ public class ApiOssFeignFallbackFactory implements FallbackFactory<ApiOssFeignCl
...
@@ -24,6 +28,11 @@ public class ApiOssFeignFallbackFactory implements FallbackFactory<ApiOssFeignCl
}
}
@Override
@Override
public
Result
<
ApiUploadResponse
>
uploadFileBody
(
MultipartFile
file
,
ApiUploadFileRequest
request
)
{
return
null
;
}
@Override
public
Result
downloadFile
(
String
fileKey
)
{
public
Result
downloadFile
(
String
fileKey
)
{
return
null
;
return
null
;
}
}
...
@@ -54,7 +63,7 @@ public class ApiOssFeignFallbackFactory implements FallbackFactory<ApiOssFeignCl
...
@@ -54,7 +63,7 @@ public class ApiOssFeignFallbackFactory implements FallbackFactory<ApiOssFeignCl
}
}
@Override
@Override
public
Result
uploadBatchFile
(
)
{
public
Result
<
ApiBatchUploadResponse
>
batchUploadFiles
(
List
<
MultipartFile
>
files
,
ApiUploadFileRequest
request
)
{
return
null
;
return
null
;
}
}
};
};
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiOssFileFeignFallbackFactory.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
fallback
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.client.ApiOssFileFeignClient
;
import
com.yd.oss.feign.request.ApiOssFileListRequest
;
import
com.yd.oss.feign.response.ApiOssFileListResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.cloud.openfeign.FallbackFactory
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
/**
* 文件元数据信息Feign降级处理
*/
@Slf4j
@Component
public
class
ApiOssFileFeignFallbackFactory
implements
FallbackFactory
<
ApiOssFileFeignClient
>
{
@Override
public
ApiOssFileFeignClient
create
(
Throwable
cause
)
{
return
new
ApiOssFileFeignClient
()
{
@Override
public
Result
<
List
<
ApiOssFileListResponse
>>
list
(
ApiOssFileListRequest
request
)
{
return
null
;
}
@Override
public
Result
del
(
String
fileBizId
)
{
return
null
;
}
};
}
}
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiRelObjectMaterialFeignFallbackFactory.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
fallback
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.client.ApiRelObjectMaterialFeignClient
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialListAddRequest
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialPageRequest
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialUploadSubmitRequest
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.cloud.openfeign.FallbackFactory
;
import
org.springframework.stereotype.Component
;
/**
* 对象材料关系表信息Feign降级处理
*/
@Slf4j
@Component
public
class
ApiRelObjectMaterialFeignFallbackFactory
implements
FallbackFactory
<
ApiRelObjectMaterialFeignClient
>
{
@Override
public
ApiRelObjectMaterialFeignClient
create
(
Throwable
cause
)
{
return
new
ApiRelObjectMaterialFeignClient
()
{
@Override
public
Result
page
(
ApiRelObjectMaterialPageRequest
request
)
{
return
null
;
}
@Override
public
Result
del
(
String
relObjectMaterialBizId
)
{
return
null
;
}
@Override
public
Result
addRelObjectMaterialList
(
ApiRelObjectMaterialListAddRequest
request
)
{
return
null
;
}
@Override
public
Result
submit
(
ApiRelObjectMaterialUploadSubmitRequest
request
)
{
return
null
;
}
};
}
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiGeneratePdfRequest.java
View file @
96e71469
...
@@ -19,4 +19,9 @@ public class ApiGeneratePdfRequest<T> {
...
@@ -19,4 +19,9 @@ public class ApiGeneratePdfRequest<T> {
* 生成文件的模板类型
* 生成文件的模板类型
*/
*/
private
String
templateType
;
private
String
templateType
;
/**
* 自定义文件名(有值用自定义文件名上传,无值用默认生成的规则文件名)
*/
private
String
customFileName
;
}
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiMaterialDownloadRequest.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
request
;
import
com.yd.oss.feign.dto.ApiMaterialDto
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
ApiMaterialDownloadRequest
{
/**
* 对象名(包名)
*/
private
String
objectName
;
/**
* 对象业务ID
*/
private
String
objectBizId
;
/**
* 材料列表
*/
private
List
<
ApiMaterialDto
>
apiMaterialDtoList
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiMaterialListRequest.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
request
;
import
lombok.Data
;
@Data
public
class
ApiMaterialListRequest
{
/**
* 对象类型(字典)
*/
private
String
objectType
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiOssFileListRequest.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
request
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.util.List
;
@Data
public
class
ApiOssFileListRequest
{
/**
* 对象业务ID
*/
private
String
objectBizId
;
/**
* 对象业务ID列表
*/
private
List
<
String
>
objectBizIdList
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiRelObjectMaterialListAddRequest.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
request
;
import
com.yd.oss.feign.dto.ApiRelMaterialDto
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.util.List
;
@Data
public
class
ApiRelObjectMaterialListAddRequest
{
/**
* 对象类型
*/
private
String
objectType
;
/**
* 对象所属表名(预约表、新单跟进表等)
*/
private
String
objectTableName
;
/**
* 对象名
*/
private
String
objectName
;
/**
* 对象业务ID
*/
@NotBlank
(
message
=
"对象业务ID不能为空"
)
private
String
objectBizId
;
/**
* 材料列表
*/
private
List
<
ApiRelMaterialDto
>
materialDtoList
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiRelObjectMaterialPageRequest.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
request
;
import
com.yd.common.dto.PageDto
;
import
lombok.Data
;
@Data
public
class
ApiRelObjectMaterialPageRequest
extends
PageDto
{
/**
* 对象类型
*/
private
String
objectType
;
/**
* 对象所属表名(预约表、新单跟进表等)
*/
private
String
objectTableName
;
/**
* 对象名
*/
private
String
objectName
;
/**
* 对象业务ID
*/
private
String
objectBizId
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiRelObjectMaterialUploadSubmitRequest.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
request
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
ApiRelObjectMaterialUploadSubmitRequest
{
/**
* 对象材料关系表唯一业务ID
*/
private
String
relObjectMaterialBizId
;
/**
* 文件元数据表唯一业务ID列表
*/
private
List
<
String
>
fileBizIdList
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiUploadFileRequest.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
request
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
@Data
public
class
ApiUploadFileRequest
{
/**
* 对象类型
*/
private
String
objectType
;
/**
* 对象所属表名(预约表、新单跟进表等)
*/
private
String
objectTableName
;
/**
* 对象名
*/
private
String
objectName
;
/**
* 对象业务ID
*/
@NotBlank
(
message
=
"对象业务ID不能为空"
)
private
String
objectBizId
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiBatchUploadResponse.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
response
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
/**
* 批量文件上传响应
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
ApiBatchUploadResponse
{
/**
* 成功上传的文件列表
*/
private
List
<
ApiUploadResponse
>
successFiles
;
/**
* 失败的文件列表
*/
private
List
<
FailedFile
>
failedFiles
;
/**
* 成功数量
*/
private
Integer
successCount
;
/**
* 失败数量
*/
private
Integer
failedCount
;
/**
* 失败的文件信息
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
static
class
FailedFile
{
/**
* 原始文件名
*/
private
String
fileName
;
/**
* 失败原因
*/
private
String
reason
;
}
}
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiMaterialDownloadResponse.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
response
;
import
lombok.Data
;
@Data
public
class
ApiMaterialDownloadResponse
{
/**
* OSS文件URL
*/
private
String
url
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiMaterialListResponse.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
response
;
import
lombok.Data
;
@Data
public
class
ApiMaterialListResponse
{
/**
* 材料信息表主键ID
*/
private
Long
id
;
/**
* 材料信息表唯一业务ID
*/
private
String
materialBizId
;
/**
* 对象类型(字典)
*/
private
String
objectType
;
/**
* 资料人(字典)
*/
private
String
dataPerson
;
/**
* 资料类型(字典)
*/
private
String
dataType
;
/**
* 注意事项
*/
private
String
precautions
;
/**
* 状态:0-禁用,1-启用
*/
private
Integer
status
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiOssFileListResponse.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
response
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
@Data
public
class
ApiOssFileListResponse
{
/**
* 文件元数据表主键ID
*/
private
Long
id
;
/**
* 对象类型
*/
private
String
objectType
;
/**
* 对象所属表名(预约表、新单跟进表等)
*/
private
String
objectTableName
;
/**
* 对象名
*/
private
String
objectName
;
/**
* 对象业务ID
*/
private
String
objectBizId
;
/**
* 文件元数据表唯一业务ID
*/
private
String
fileBizId
;
/**
* 文件唯一标识
*/
private
String
fileKey
;
/**
* 原始文件名
*/
private
String
originalName
;
/**
* 文件大小(字节)
*/
private
Long
fileSize
;
/**
* 文件类型
*/
private
String
fileType
;
/**
* 完整文件路径
*/
private
String
fileUrl
;
/**
* 创建时间
*/
private
LocalDateTime
createTime
;
/**
* 创建人ID
*/
private
String
creatorId
;
/**
* 创建人名
*/
private
String
creatorName
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiRelObjectMaterialPageResponse.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
feign
.
response
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
ApiRelObjectMaterialPageResponse
{
/**
* 对象材料关系表主键ID
*/
private
Long
id
;
/**
* 对象材料关系表唯一业务ID
*/
private
String
relObjectMaterialBizId
;
/**
* 材料信息表唯一业务ID
*/
private
String
materialBizId
;
/**
* 状态: YSC-已上传 WSC-未上传 DSC-待上传
*/
private
String
status
;
/**
* 资料人(字典)
*/
private
String
dataPerson
;
/**
* 资料类型(字典)
*/
private
String
dataType
;
/**
* 注意事项
*/
private
String
precautions
;
/**
* 文件URL列表(完整路径)
*/
private
List
<
String
>
fileUrlList
;
}
yd-oss-feign/yd-oss-feign.iml
View file @
96e71469
...
@@ -109,5 +109,6 @@
...
@@ -109,5 +109,6 @@
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-databind:2.13.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-databind:2.13.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-core:2.13.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-core:2.13.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-user-feign:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-user-feign:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-base-feign:1.0-SNAPSHOT"
level=
"project"
/>
</component>
</component>
</module>
</module>
\ No newline at end of file
yd-oss-service/src/main/java/com/yd/oss/service/dao/
ProductFile
Mapper.java
→
yd-oss-service/src/main/java/com/yd/oss/service/dao/
Material
Mapper.java
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
dao
;
package
com
.
yd
.
oss
.
service
.
dao
;
import
com.yd.oss.service.model.Material
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yd.oss.service.model.ProductFile
;
/**
/**
* <p>
* <p>
*
产品文件关系表
Mapper 接口
*
材料基础信息
Mapper 接口
* </p>
* </p>
*
*
* @author zxm
* @author zxm
* @since 2025-1
0
-17
* @since 2025-1
2
-17
*/
*/
public
interface
ProductFileMapper
extends
BaseMapper
<
ProductFile
>
{
public
interface
MaterialMapper
extends
BaseMapper
<
Material
>
{
}
}
yd-oss-service/src/main/java/com/yd/oss/service/dao/OssFileMapper.java
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
dao
;
package
com
.
yd
.
oss
.
service
.
dao
;
import
com.yd.oss.feign.response.ApiOssFileListResponse
;
import
com.yd.oss.service.model.OssFile
;
import
com.yd.oss.service.model.OssFile
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
...
@@ -37,4 +38,7 @@ public interface OssFileMapper extends BaseMapper<OssFile> {
...
@@ -37,4 +38,7 @@ public interface OssFileMapper extends BaseMapper<OssFile> {
// 标记文件为已删除
// 标记文件为已删除
@Update
(
"UPDATE oss_file SET is_deleted = true, deleted_time = NOW() WHERE file_key = #{fileKey}"
)
@Update
(
"UPDATE oss_file SET is_deleted = true, deleted_time = NOW() WHERE file_key = #{fileKey}"
)
int
markAsDeleted
(
@Param
(
"fileKey"
)
String
fileKey
);
int
markAsDeleted
(
@Param
(
"fileKey"
)
String
fileKey
);
List
<
ApiOssFileListResponse
>
list
(
@Param
(
"objectBizId"
)
String
objectBizId
,
@Param
(
"objectBizIdList"
)
List
<
String
>
objectBizIdList
);
}
}
yd-oss-service/src/main/java/com/yd/oss/service/dao/RelObjectMaterialMapper.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
dao
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialPageRequest
;
import
com.yd.oss.feign.response.ApiRelObjectMaterialPageResponse
;
import
com.yd.oss.service.model.RelObjectMaterial
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
/**
* <p>
* 对象材料关系表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-12-17
*/
public
interface
RelObjectMaterialMapper
extends
BaseMapper
<
RelObjectMaterial
>
{
IPage
<
ApiRelObjectMaterialPageResponse
>
page
(
@Param
(
"page"
)
Page
<
ApiRelObjectMaterialPageResponse
>
page
,
@Param
(
"request"
)
ApiRelObjectMaterialPageRequest
request
);
}
yd-oss-service/src/main/java/com/yd/oss/service/dto/MaterialDto.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
dto
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
MaterialDto
{
/**
* 对象类型(字典)
*/
private
String
objectType
;
}
yd-oss-service/src/main/java/com/yd/oss/service/dto/OssFileDto.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
OssFileDto
{
/**
* 对象业务ID
*/
private
String
objectBizId
;
/**
* 文件元数据表唯一业务ID列表
*/
private
List
<
String
>
fileBizIdList
;
}
yd-oss-service/src/main/java/com/yd/oss/service/dto/OssUploadFileReqDto.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* 提供OSS上传文件请求的DTO
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
OssUploadFileReqDto
{
/**
* 对象类型
*/
private
String
objectType
;
/**
* 对象所属表名(预约表、新单跟进表等)
*/
private
String
objectTableName
;
/**
* 对象名
*/
private
String
objectName
;
/**
* 对象业务ID
*/
private
String
objectBizId
;
/**
* 上传用户业务id
*/
private
String
uploadUser
;
}
yd-oss-service/src/main/java/com/yd/oss/service/dto/OssUploadFileDto.java
→
yd-oss-service/src/main/java/com/yd/oss/service/dto/OssUploadFile
Res
Dto.java
View file @
96e71469
...
@@ -2,11 +2,13 @@ package com.yd.oss.service.dto;
...
@@ -2,11 +2,13 @@ package com.yd.oss.service.dto;
import
lombok.Data
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
/**
/**
* 提供OSS上传文件返回的DTO
* 提供OSS上传文件返回的DTO
*/
*/
@Data
@Data
public
class
OssUploadFileDto
{
public
class
OssUploadFile
Res
Dto
{
/**
/**
* 文件元数据表业务ID唯一标识
* 文件元数据表业务ID唯一标识
...
@@ -28,4 +30,23 @@ public class OssUploadFileDto {
...
@@ -28,4 +30,23 @@ public class OssUploadFileDto {
*/
*/
private
String
url
;
private
String
url
;
/**
* 访问URL(带过期时间签名URL)
*/
private
String
accessUrl
;
/**
* 文件大小
*/
private
Long
fileSize
;
/**
* 文件类型
*/
private
String
fileType
;
/**
* 上传时间
*/
private
LocalDateTime
uploadTime
;
}
}
yd-oss-service/src/main/java/com/yd/oss/service/handler/StringToListTypeHandler.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
handler
;
import
org.apache.ibatis.type.BaseTypeHandler
;
import
org.apache.ibatis.type.JdbcType
;
import
org.apache.ibatis.type.MappedTypes
;
import
java.sql.CallableStatement
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@MappedTypes
(
List
.
class
)
public
class
StringToListTypeHandler
extends
BaseTypeHandler
<
List
<
String
>>
{
@Override
public
void
setNonNullParameter
(
PreparedStatement
ps
,
int
i
,
List
<
String
>
parameter
,
JdbcType
jdbcType
)
throws
SQLException
{
ps
.
setString
(
i
,
String
.
join
(
";"
,
parameter
));
}
@Override
public
List
<
String
>
getNullableResult
(
ResultSet
rs
,
String
columnName
)
throws
SQLException
{
String
value
=
rs
.
getString
(
columnName
);
return
convertStringToList
(
value
);
}
@Override
public
List
<
String
>
getNullableResult
(
ResultSet
rs
,
int
columnIndex
)
throws
SQLException
{
String
value
=
rs
.
getString
(
columnIndex
);
return
convertStringToList
(
value
);
}
@Override
public
List
<
String
>
getNullableResult
(
CallableStatement
cs
,
int
columnIndex
)
throws
SQLException
{
String
value
=
cs
.
getString
(
columnIndex
);
return
convertStringToList
(
value
);
}
private
List
<
String
>
convertStringToList
(
String
value
)
{
if
(
value
==
null
||
value
.
trim
().
isEmpty
())
{
return
Collections
.
emptyList
();
}
return
Arrays
.
stream
(
value
.
split
(
";"
))
.
map
(
String:
:
trim
)
.
filter
(
s
->
!
s
.
isEmpty
())
.
collect
(
Collectors
.
toList
());
}
}
\ No newline at end of file
yd-oss-service/src/main/java/com/yd/oss/service/model/
ProductFile
.java
→
yd-oss-service/src/main/java/com/yd/oss/service/model/
Material
.java
View file @
96e71469
...
@@ -4,62 +4,64 @@ import com.baomidou.mybatisplus.annotation.IdType;
...
@@ -4,62 +4,64 @@ import com.baomidou.mybatisplus.annotation.IdType;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
/**
/**
* <p>
* <p>
*
产品文件关系表
*
材料基础信息
* </p>
* </p>
*
*
* @author zxm
* @author zxm
* @since 2025-1
0
-17
* @since 2025-1
2
-17
*/
*/
@Getter
@Getter
@Setter
@Setter
@TableName
(
"
product_file
"
)
@TableName
(
"
material
"
)
public
class
ProductFile
implements
Serializable
{
public
class
Material
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键ID
*/
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
private
Long
id
;
/**
/**
* 未知ID
* 材料信息表唯一业务ID
*/
@TableField
(
"material_biz_id"
)
private
String
materialBizId
;
/**
* 对象类型(字典)
*/
*/
@TableField
(
"
biz_id
"
)
@TableField
(
"
object_type
"
)
private
String
bizId
;
private
String
objectType
;
/**
/**
*
产品业务ID
*
资料人(字典)
*/
*/
@TableField
(
"
product_biz_id
"
)
@TableField
(
"
data_person
"
)
private
String
productBizId
;
private
String
dataPerson
;
/**
/**
*
文件名称
*
资料类型(字典)
*/
*/
@TableField
(
"
file_nam
e"
)
@TableField
(
"
data_typ
e"
)
private
String
fileNam
e
;
private
String
dataTyp
e
;
/**
/**
*
原文件URL
*
注意事项
*/
*/
@TableField
(
"
old_file_url
"
)
@TableField
(
"
precautions
"
)
private
String
oldFileUrl
;
private
String
precautions
;
/**
/**
*
新文件URL
*
状态:0-禁用,1-启用
*/
*/
@TableField
(
"
new_file_url
"
)
@TableField
(
"
status
"
)
private
String
newFileUrl
;
private
Integer
status
;
/**
/**
* 通用备注
* 通用备注
...
@@ -71,7 +73,7 @@ public class ProductFile implements Serializable {
...
@@ -71,7 +73,7 @@ public class ProductFile implements Serializable {
* 删除标识: 0-正常, 1-删除
* 删除标识: 0-正常, 1-删除
*/
*/
@TableField
(
"is_deleted"
)
@TableField
(
"is_deleted"
)
private
Boolean
isDeleted
;
private
Integer
isDeleted
;
/**
/**
* 创建人ID
* 创建人ID
...
...
yd-oss-service/src/main/java/com/yd/oss/service/model/OssFile.java
View file @
96e71469
...
@@ -28,7 +28,31 @@ public class OssFile implements Serializable {
...
@@ -28,7 +28,31 @@ public class OssFile implements Serializable {
private
Long
id
;
private
Long
id
;
/**
/**
* 业务ID唯一标识
* 对象类型
*/
@TableField
(
"object_type"
)
private
String
objectType
;
/**
* 对象所属表名(对象材料关系表、预约表、新单跟进表等)
*/
@TableField
(
"object_table_name"
)
private
String
objectTableName
;
/**
* 对象名
*/
@TableField
(
"object_name"
)
private
String
objectName
;
/**
* 对象业务ID
*/
@TableField
(
"object_biz_id"
)
private
String
objectBizId
;
/**
* 文件元数据表唯一业务ID
*/
*/
@TableField
(
"file_biz_id"
)
@TableField
(
"file_biz_id"
)
private
String
fileBizId
;
private
String
fileBizId
;
...
@@ -100,6 +124,12 @@ public class OssFile implements Serializable {
...
@@ -100,6 +124,12 @@ public class OssFile implements Serializable {
private
String
creatorId
;
private
String
creatorId
;
/**
/**
* 创建人名
*/
@TableField
(
"creator_name"
)
private
String
creatorName
;
/**
* 更新人ID
* 更新人ID
*/
*/
@TableField
(
"updater_id"
)
@TableField
(
"updater_id"
)
...
...
yd-oss-service/src/main/java/com/yd/oss/service/model/RelObjectMaterial.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
model
;
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.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
/**
* <p>
* 对象材料关系表
* </p>
*
* @author zxm
* @since 2025-12-17
*/
@Getter
@Setter
@TableName
(
"rel_object_material"
)
public
class
RelObjectMaterial
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键ID
*/
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 对象材料关系表唯一业务ID
*/
@TableField
(
"rel_object_material_biz_id"
)
private
String
relObjectMaterialBizId
;
/**
* 对象类型
*/
@TableField
(
"object_type"
)
private
String
objectType
;
/**
* 对象所属表名(预约表、新单跟进表等)
*/
@TableField
(
"object_table_name"
)
private
String
objectTableName
;
/**
* 对象名
*/
@TableField
(
"object_name"
)
private
String
objectName
;
/**
* 对象业务ID
*/
@TableField
(
"object_biz_id"
)
private
String
objectBizId
;
/**
* 材料信息表唯一业务ID
*/
@TableField
(
"material_biz_id"
)
private
String
materialBizId
;
/**
* 状态: YSC-已上传 WSC-未上传 DSC-待上传
*/
@TableField
(
"status"
)
private
String
status
;
/**
* 通用备注
*/
@TableField
(
"remark"
)
private
String
remark
;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField
(
"is_deleted"
)
private
Integer
isDeleted
;
/**
* 创建人ID
*/
@TableField
(
"creator_id"
)
private
String
creatorId
;
/**
* 更新人ID
*/
@TableField
(
"updater_id"
)
private
String
updaterId
;
/**
* 创建时间
*/
@TableField
(
"create_time"
)
private
LocalDateTime
createTime
;
/**
* 更新时间
*/
@TableField
(
"update_time"
)
private
LocalDateTime
updateTime
;
}
yd-oss-service/src/main/java/com/yd/oss/service/service/CompressedFileService.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
service
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.request.ApiMaterialDownloadRequest
;
import
com.yd.oss.feign.response.ApiMaterialDownloadResponse
;
public
interface
CompressedFileService
{
Result
<
ApiMaterialDownloadResponse
>
downloadCompressedFile
(
ApiMaterialDownloadRequest
request
);
}
yd-oss-service/src/main/java/com/yd/oss/service/service/ExcelImportService.java
View file @
96e71469
...
@@ -12,7 +12,7 @@ public interface ExcelImportService {
...
@@ -12,7 +12,7 @@ public interface ExcelImportService {
MultipartFile
file
,
MultipartFile
file
,
Integer
headerRow
,
Integer
headerRow
,
Integer
dataStartRow
,
Integer
dataStartRow
,
List
<
String
>
requiredFields
);
List
<
String
>
requiredFields
,
Integer
checkStartRow
);
ImportResult
simpleImport
(
MultipartFile
file
);
ImportResult
simpleImport
(
MultipartFile
file
);
}
}
yd-oss-service/src/main/java/com/yd/oss/service/service/IMaterialService.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
service
;
import
com.yd.oss.service.dto.MaterialDto
;
import
com.yd.oss.service.model.Material
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
/**
* <p>
* 材料基础信息 服务类
* </p>
*
* @author zxm
* @since 2025-12-17
*/
public
interface
IMaterialService
extends
IService
<
Material
>
{
List
<
Material
>
queryList
(
MaterialDto
dto
);
}
yd-oss-service/src/main/java/com/yd/oss/service/service/IOssFileService.java
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
service
;
package
com
.
yd
.
oss
.
service
.
service
;
import
com.yd.oss.feign.response.ApiOssFileListResponse
;
import
com.yd.oss.service.dto.OssFileDto
;
import
com.yd.oss.service.model.OssFile
;
import
com.yd.oss.service.model.OssFile
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yd.oss.service.model.OssOperationLog
;
import
com.yd.oss.service.model.OssOperationLog
;
...
@@ -31,4 +33,10 @@ public interface IOssFileService extends IService<OssFile> {
...
@@ -31,4 +33,10 @@ public interface IOssFileService extends IService<OssFile> {
List
<
OssFile
>
getProviderFiles
(
Long
providerId
);
List
<
OssFile
>
getProviderFiles
(
Long
providerId
);
List
<
OssOperationLog
>
getOperationLogsByFileId
(
Long
fileId
);
List
<
OssOperationLog
>
getOperationLogsByFileId
(
Long
fileId
);
List
<
OssFile
>
queryList
(
OssFileDto
dto
);
OssFile
queryOne
(
String
fileBizId
);
List
<
ApiOssFileListResponse
>
list
(
String
objectBizId
,
List
<
String
>
objectBizIdList
);
}
}
yd-oss-service/src/main/java/com/yd/oss/service/service/IRelObjectMaterialService.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
service
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialPageRequest
;
import
com.yd.oss.feign.response.ApiRelObjectMaterialPageResponse
;
import
com.yd.oss.service.model.RelObjectMaterial
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
/**
* <p>
* 对象材料关系表 服务类
* </p>
*
* @author zxm
* @since 2025-12-17
*/
public
interface
IRelObjectMaterialService
extends
IService
<
RelObjectMaterial
>
{
IPage
<
ApiRelObjectMaterialPageResponse
>
page
(
Page
<
ApiRelObjectMaterialPageResponse
>
page
,
ApiRelObjectMaterialPageRequest
request
);
RelObjectMaterial
queryOne
(
String
relObjectMaterialBizId
);
Boolean
delByObjectBizId
(
String
objectBizId
);
List
<
RelObjectMaterial
>
queryList
(
String
objectBizId
);
}
yd-oss-service/src/main/java/com/yd/oss/service/service/OssService.java
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
service
;
package
com
.
yd
.
oss
.
service
.
service
;
import
com.yd.oss.feign.request.ApiUploadFileRequest
;
import
com.yd.oss.service.dto.FileMetadata
;
import
com.yd.oss.service.dto.FileMetadata
;
import
com.yd.oss.service.dto.OssUploadFileDto
;
import
com.yd.oss.service.dto.OssUploadFileReqDto
;
import
com.yd.oss.service.dto.OssUploadFileResDto
;
import
com.yd.oss.service.dto.UploadResult
;
import
com.yd.oss.service.dto.UploadResult
;
import
com.yd.oss.service.model.OssProvider
;
import
com.yd.oss.service.model.OssProvider
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.InputStream
;
import
java.io.InputStream
;
import
java.time.Duration
;
import
java.time.Duration
;
...
@@ -13,7 +16,9 @@ import java.time.Duration;
...
@@ -13,7 +16,9 @@ import java.time.Duration;
public
interface
OssService
{
public
interface
OssService
{
// 上传文件
// 上传文件
OssUploadFileDto
uploadFile
(
InputStream
inputStream
,
String
fileName
,
String
bucketName
,
String
uploadUser
,
String
type
);
OssUploadFileResDto
uploadFile
(
InputStream
inputStream
,
String
fileName
,
String
bucketName
,
String
uploadUser
,
String
type
);
OssUploadFileResDto
uploadFileBody
(
MultipartFile
file
,
OssUploadFileReqDto
reqDto
);
// 上传文件(使用默认存储桶)
// 上传文件(使用默认存储桶)
String
uploadFile
(
InputStream
inputStream
,
String
fileName
,
String
uploadUser
);
String
uploadFile
(
InputStream
inputStream
,
String
fileName
,
String
uploadUser
);
...
@@ -69,5 +74,10 @@ public interface OssService {
...
@@ -69,5 +74,10 @@ public interface OssService {
String
upload
(
byte
[]
content
,
String
fileName
);
String
upload
(
byte
[]
content
,
String
fileName
);
String
upload
(
InputStream
inputStream
,
String
fileName
);
String
upload
(
InputStream
inputStream
,
String
fileName
);
// 批量上传文件
com
.
yd
.
oss
.
feign
.
response
.
ApiBatchUploadResponse
batchUploadFiles
(
java
.
util
.
List
<
org
.
springframework
.
web
.
multipart
.
MultipartFile
>
files
,
com
.
yd
.
oss
.
service
.
dto
.
OssUploadFileReqDto
reqDto
);
}
}
yd-oss-service/src/main/java/com/yd/oss/service/service/PdfService.java
View file @
96e71469
...
@@ -4,5 +4,5 @@ import java.io.IOException;
...
@@ -4,5 +4,5 @@ import java.io.IOException;
public
interface
PdfService
<
T
>
{
public
interface
PdfService
<
T
>
{
String
generatePDF
(
T
dataObject
,
String
objectId
,
String
templateType
)
throws
IOException
;
String
generatePDF
(
T
dataObject
,
String
objectId
,
String
templateType
,
String
customFileName
)
throws
IOException
;
}
}
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AliYunOssServiceImpl.java
View file @
96e71469
This diff is collapsed.
Click to expand it.
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/CompressedFileServiceImpl.java
0 → 100644
View file @
96e71469
This diff is collapsed.
Click to expand it.
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/ExcelExportServiceImpl.java
View file @
96e71469
...
@@ -6,7 +6,7 @@ import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
...
@@ -6,7 +6,7 @@ import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import
cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity
;
import
cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity
;
import
com.yd.oss.feign.dto.ExportParam
;
import
com.yd.oss.feign.dto.ExportParam
;
import
com.yd.oss.feign.dto.ExportResult
;
import
com.yd.oss.feign.dto.ExportResult
;
import
com.yd.oss.service.dto.OssUploadFileDto
;
import
com.yd.oss.service.dto.OssUploadFile
Res
Dto
;
import
com.yd.oss.service.service.ExcelExportService
;
import
com.yd.oss.service.service.ExcelExportService
;
import
com.yd.oss.service.service.OssService
;
import
com.yd.oss.service.service.OssService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -110,7 +110,7 @@ public class ExcelExportServiceImpl implements ExcelExportService {
...
@@ -110,7 +110,7 @@ public class ExcelExportServiceImpl implements ExcelExportService {
String
fileName
=
generateExcelFileName
(
exportParam
.
getFileName
());
String
fileName
=
generateExcelFileName
(
exportParam
.
getFileName
());
// 调用OSS服务上传文件到云端存储
// 调用OSS服务上传文件到云端存储
OssUploadFileDto
uploadResult
=
ossService
.
uploadFile
(
OssUploadFile
Res
Dto
uploadResult
=
ossService
.
uploadFile
(
inputStream
,
// Excel文件输入流
inputStream
,
// Excel文件输入流
fileName
,
// 生成的文件名
fileName
,
// 生成的文件名
""
,
// 存储桶名称(空字符串表示使用默认存储桶)
""
,
// 存储桶名称(空字符串表示使用默认存储桶)
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/ExcelImportServiceImpl.java
View file @
96e71469
...
@@ -33,34 +33,40 @@ public class ExcelImportServiceImpl implements ExcelImportService {
...
@@ -33,34 +33,40 @@ public class ExcelImportServiceImpl implements ExcelImportService {
public
ImportResult
genericImport
(
MultipartFile
file
,
public
ImportResult
genericImport
(
MultipartFile
file
,
Integer
headerRow
,
Integer
headerRow
,
Integer
dataStartRow
,
Integer
dataStartRow
,
List
<
String
>
requiredFields
)
{
List
<
String
>
requiredFields
,
Integer
checkStartRow
)
{
ImportResult
result
=
new
ImportResult
();
ImportResult
result
=
new
ImportResult
();
log
.
info
(
"开始导入Excel,文件名:{},headerRow:{},dataStartRow:{}"
,
file
.
getOriginalFilename
(),
headerRow
,
dataStartRow
);
try
{
try
{
// 参数默认值处理
// 参数默认值处理
int
headerRowNum
=
headerRow
!=
null
?
headerRow
:
0
;
int
headerRowNum
=
headerRow
!=
null
?
headerRow
:
0
;
int
dataStartRowNum
=
dataStartRow
!=
null
?
dataStartRow
:
1
;
int
dataStartRowNum
=
dataStartRow
!=
null
?
dataStartRow
:
1
;
log
.
info
(
"实际参数:headerRowNum={}, dataStartRowNum={}"
,
headerRowNum
,
dataStartRowNum
);
// 1. 获取表头信息
// 1. 获取表头信息
List
<
String
>
headers
=
getExcelHeaders
(
file
,
headerRowNum
);
List
<
String
>
headers
=
getExcelHeaders
(
file
,
headerRowNum
);
log
.
info
(
"获取到表头:{}"
,
headers
);
result
.
setHeaders
(
headers
);
result
.
setHeaders
(
headers
);
// 2. 导入Excel数据
// 2. 导入Excel数据
ExcelImportResult
<
Map
<
String
,
Object
>>
importResult
=
ExcelImportResult
<
Map
<
String
,
Object
>>
importResult
=
importExcel
(
file
,
headerRowNum
,
dataStartRowNum
);
importExcel
(
file
,
headerRowNum
,
dataStartRowNum
);
System
.
out
.
println
(
JSON
.
toJSONString
(
importResult
.
getList
()));
// 3. 处理导入结果
// 3. 处理导入结果
List
<
Map
<
String
,
Object
>>
data
=
List
<
Map
<
String
,
Object
>>
data
=
processImportResult
(
importResult
,
headers
);
processImportResult
(
importResult
,
headers
);
log
.
info
(
"处理后数据行数:{}"
,
data
.
size
());
result
.
setData
(
data
);
result
.
setData
(
data
);
result
.
setTotalCount
(
data
.
size
());
result
.
setTotalCount
(
data
.
size
());
// 4. 数据验证
// 4. 数据验证
if
(
requiredFields
!=
null
&&
!
requiredFields
.
isEmpty
())
{
if
(
requiredFields
!=
null
&&
!
requiredFields
.
isEmpty
())
{
ValidationResult
validationResult
=
ValidationResult
validationResult
=
validateData
(
data
,
requiredFields
);
validateData
(
data
,
requiredFields
,
dataStartRowNum
,
checkStartRow
);
// 传入dataStartRowNum
result
.
setValid
(
validationResult
.
isValid
());
result
.
setValid
(
validationResult
.
isValid
());
result
.
setErrorMessages
(
validationResult
.
getErrors
());
result
.
setErrorMessages
(
validationResult
.
getErrors
());
}
else
{
}
else
{
...
@@ -71,8 +77,13 @@ public class ExcelImportServiceImpl implements ExcelImportService {
...
@@ -71,8 +77,13 @@ public class ExcelImportServiceImpl implements ExcelImportService {
result
.
setMessage
(
"导入成功,共导入"
+
data
.
size
()
+
"条数据"
);
result
.
setMessage
(
"导入成功,共导入"
+
data
.
size
()
+
"条数据"
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"Excel导入失败"
,
e
);
result
.
setSuccess
(
false
);
result
.
setSuccess
(
false
);
result
.
setMessage
(
"导入失败:"
+
e
.
getMessage
());
String
errorMsg
=
e
.
getMessage
();
if
(
errorMsg
==
null
||
errorMsg
.
isEmpty
())
{
errorMsg
=
e
.
getClass
().
getSimpleName
();
}
result
.
setMessage
(
"导入失败:"
+
errorMsg
);
}
}
return
result
;
return
result
;
...
@@ -85,7 +96,7 @@ public class ExcelImportServiceImpl implements ExcelImportService {
...
@@ -85,7 +96,7 @@ public class ExcelImportServiceImpl implements ExcelImportService {
*/
*/
@Override
@Override
public
ImportResult
simpleImport
(
MultipartFile
file
)
{
public
ImportResult
simpleImport
(
MultipartFile
file
)
{
return
genericImport
(
file
,
0
,
1
,
null
);
return
genericImport
(
file
,
0
,
1
,
null
,
null
);
}
}
/**
/**
...
@@ -100,22 +111,35 @@ public class ExcelImportServiceImpl implements ExcelImportService {
...
@@ -100,22 +111,35 @@ public class ExcelImportServiceImpl implements ExcelImportService {
int
headerRowNum
,
int
headerRowNum
,
int
dataStartRowNum
)
throws
Exception
{
int
dataStartRowNum
)
throws
Exception
{
ImportParams
params
=
new
ImportParams
();
// 检查文件是否为空
params
.
setHeadRows
(
headerRowNum
+
1
);
// 表头行数(从1开始计数)
if
(
file
==
null
||
file
.
isEmpty
())
{
throw
new
IllegalArgumentException
(
"文件不能为空"
);
}
// EasyPOI的startRows是从0开始计数,但表示的是跳过多少行
// 检查文件格式
// 如果要从第2行开始(索引1),需要设置为1,但这样会跳过第2行
String
originalFilename
=
file
.
getOriginalFilename
();
// 正确的做法:如果要读取从dataStartRowNum开始的行,应该设置为dataStartRowNum
if
(
originalFilename
==
null
||
params
.
setStartRows
(
dataStartRowNum
);
(!
originalFilename
.
endsWith
(
".xlsx"
)
&&
!
originalFilename
.
endsWith
(
".xls"
)))
{
throw
new
IllegalArgumentException
(
"仅支持Excel文件(.xlsx, .xls)"
);
}
params
.
setNeedVerify
(
true
);
ImportParams
params
=
new
ImportParams
();
params
.
setHeadRows
(
headerRowNum
+
1
);
// 表头行数
params
.
setStartRows
(
0
);
// 数据开始行
params
.
setNeedVerify
(
true
);
// 需要校验
try
{
// 使用Map接收数据
// 使用Map接收数据
return
ExcelImportUtil
.
importExcelMore
(
return
ExcelImportUtil
.
importExcelMore
(
file
.
getInputStream
(),
file
.
getInputStream
(),
Map
.
class
,
Map
.
class
,
params
params
);
);
}
catch
(
Exception
e
)
{
log
.
error
(
"Excel导入失败,文件:{},headerRow:{},dataStartRow:{}"
,
originalFilename
,
headerRowNum
,
dataStartRowNum
,
e
);
throw
new
RuntimeException
(
"Excel解析失败:"
+
e
.
getMessage
(),
e
);
}
}
}
/**
/**
...
@@ -202,37 +226,48 @@ public class ExcelImportServiceImpl implements ExcelImportService {
...
@@ -202,37 +226,48 @@ public class ExcelImportServiceImpl implements ExcelImportService {
}
}
/**
/**
* 判断一行数据是否为空行
* 判断一行数据是否为空行(更严格的条件)
* @param rowData 行数据
* @param headers 表头列表
* @return true-空行, false-非空行
*/
*/
private
static
boolean
isEmptyRow
(
Map
<
String
,
Object
>
rowData
,
List
<
String
>
headers
)
{
private
static
boolean
isEmptyRow
(
Map
<
String
,
Object
>
rowData
,
List
<
String
>
headers
)
{
if
(
rowData
==
null
||
rowData
.
isEmpty
())
{
if
(
rowData
==
null
||
rowData
.
isEmpty
())
{
return
true
;
return
true
;
}
}
//
检查所有业务字段是否都为空(排除excelRowNum等系统字段)
//
方法1:检查所有业务字段是否都为空
for
(
String
header
:
headers
)
{
for
(
String
header
:
headers
)
{
Object
value
=
rowData
.
get
(
header
);
Object
value
=
rowData
.
get
(
header
);
if
(
value
!=
null
&&
!
value
.
toString
().
trim
().
isEmpty
())
{
if
(
value
!=
null
)
{
return
false
;
// 发现非空值,不是空行
String
strValue
=
value
.
toString
().
trim
();
// 排除常见的空值表示
if
(!
strValue
.
isEmpty
()
&&
!
strValue
.
equals
(
"-"
)
&&
!
strValue
.
equals
(
"null"
)
&&
!
strValue
.
equals
(
"NULL"
))
{
return
false
;
}
}
}
}
}
// 方法2:检查所有键值对(包括系统字段)
int
validCount
=
0
;
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
rowData
.
entrySet
())
{
String
key
=
entry
.
getKey
();
Object
value
=
entry
.
getValue
();
// 额外检查:如果只有系统字段有值,也算空行
// 跳过系统字段
boolean
hasOnlySystemFields
=
true
;
if
(
key
.
equals
(
"excelRowNum"
)
||
key
.
startsWith
(
"_"
))
{
for
(
String
key
:
rowData
.
keySet
())
{
continue
;
if
(!
key
.
equals
(
"excelRowNum"
)
&&
!
key
.
startsWith
(
"_"
))
{
}
Object
value
=
rowData
.
get
(
key
);
if
(
value
!=
null
&&
!
value
.
toString
().
trim
().
isEmpty
())
{
if
(
value
!=
null
)
{
hasOnlySystemFields
=
false
;
String
strValue
=
value
.
toString
().
trim
();
break
;
if
(!
strValue
.
isEmpty
())
{
validCount
++;
}
}
}
}
}
}
return
hasOnlySystemFields
;
return
validCount
==
0
;
}
}
/**
/**
...
@@ -241,25 +276,25 @@ public class ExcelImportServiceImpl implements ExcelImportService {
...
@@ -241,25 +276,25 @@ public class ExcelImportServiceImpl implements ExcelImportService {
* @param requiredFields 必填字段
* @param requiredFields 必填字段
* @return 验证结果
* @return 验证结果
*/
*/
public
static
ValidationResult
validateData
(
List
<
Map
<
String
,
Object
>>
data
,
List
<
String
>
requiredFields
)
{
public
static
ValidationResult
validateData
(
List
<
Map
<
String
,
Object
>>
data
,
List
<
String
>
requiredFields
,
int
dataStartRow
,
Integer
checkStartRow
)
{
// 新增参数
ValidationResult
result
=
new
ValidationResult
();
ValidationResult
result
=
new
ValidationResult
();
result
.
setValid
(
true
);
result
.
setValid
(
true
);
for
(
int
i
=
0
;
i
<
data
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
data
.
size
();
i
++)
{
Map
<
String
,
Object
>
row
=
data
.
get
(
i
);
Map
<
String
,
Object
>
row
=
data
.
get
(
i
);
int
rowNum
=
i
+
1
;
// 实际行号(从1开始)
// int excelRowNum = dataStartRow + i + 1; // 计算Excel中的实际行号
Integer
excelRowNum
=
checkStartRow
+
i
-
1
;
// 计算Excel中的实际行号
// 检查必填字段
// 检查必填字段
for
(
String
field
:
requiredFields
)
{
for
(
String
field
:
requiredFields
)
{
Object
value
=
row
.
get
(
field
);
Object
value
=
row
.
get
(
field
);
if
(
value
==
null
||
value
.
toString
().
trim
().
isEmpty
())
{
if
(
value
==
null
||
value
.
toString
().
trim
().
isEmpty
())
{
result
.
setValid
(
false
);
result
.
setValid
(
false
);
result
.
getErrors
().
add
(
"第"
+
r
owNum
+
"行,字段["
+
field
+
"]不能为空"
);
result
.
getErrors
().
add
(
"第"
+
excelR
owNum
+
"行,字段["
+
field
+
"]不能为空"
);
}
}
}
}
// 这里可以添加更多的验证规则
// 例如:数据类型验证、格式验证等
}
}
return
result
;
return
result
;
}
}
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/FileUploadService.java
deleted
100644 → 0
View file @
48491bf2
package
com
.
yd
.
oss
.
service
.
service
.
impl
;
import
com.aliyun.oss.OSS
;
import
com.aliyun.oss.model.PutObjectRequest
;
import
com.yd.oss.service.dao.ProductFileMapper
;
import
com.yd.oss.service.model.ProductFile
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.compress.utils.IOUtils
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.io.ByteArrayInputStream
;
import
java.io.InputStream
;
import
java.net.URL
;
import
java.util.List
;
import
java.util.UUID
;
@Service
@Slf4j
public
class
FileUploadService
{
@Autowired
private
OSS
ossClient
;
@Autowired
private
ProductFileMapper
productFileMapper
;
@Autowired
private
String
defaultBucket
;
// 从配置注入默认存储桶
@Autowired
private
String
defaultEndpoint
;
// 注入默认服务端点
/**
* 批量处理URL上传
*/
public
void
batchProcessUrls
()
{
List
<
ProductFile
>
productFileList
=
productFileMapper
.
selectList
(
null
);
for
(
ProductFile
productFile
:
productFileList
)
{
try
{
// 处理单个URL
processSingleUrl
(
productFile
);
}
catch
(
Exception
e
)
{
log
.
error
(
"处理URL失败: {}, 错误: {}"
,
productFile
.
getOldFileUrl
(),
e
.
getMessage
());
}
}
}
/**
* 处理单个URL
*/
private
void
processSingleUrl
(
ProductFile
productFile
)
throws
Exception
{
// 1. 下载文件
byte
[]
fileContent
=
downloadFile
(
productFile
.
getOldFileUrl
());
// 2. 生成OSS文件名(使用原始URL路径)
String
ossFileName
=
generateOssFileName
(
productFile
.
getOldFileUrl
(),
""
);
// 3. 上传到阿里云OSS
String
ossUrl
=
uploadToAliOss
(
fileContent
,
ossFileName
);
// 4. 更新数据库
productFile
.
setNewFileUrl
(
ossUrl
);
productFileMapper
.
updateById
(
productFile
);
log
.
info
(
"文件上传成功: {} -> {}"
,
productFile
.
getFileName
(),
ossUrl
);
}
/**
* 下载文件
*/
private
byte
[]
downloadFile
(
String
fileUrl
)
throws
Exception
{
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
HttpGet
httpGet
=
new
HttpGet
(
fileUrl
);
try
(
CloseableHttpResponse
response
=
httpClient
.
execute
(
httpGet
);
InputStream
inputStream
=
response
.
getEntity
().
getContent
())
{
return
IOUtils
.
toByteArray
(
inputStream
);
}
finally
{
httpClient
.
close
();
}
}
/**
* 生成OSS文件名 - 保留原始URL路径结构
*/
private
String
generateOssFileName
(
String
originalUrl
,
String
originalFileName
)
{
try
{
// 解析原始URL,提取路径部分
URL
url
=
new
URL
(
originalUrl
);
String
path
=
url
.
getPath
();
// 得到类似:/wslucky/product/2024/12/27/9ba093ee-be9a-4291-aa86-d6a1995e16f9.pdf
// 移除开头的斜杠(如果有)
if
(
path
.
startsWith
(
"/"
))
{
path
=
path
.
substring
(
1
);
}
// 如果路径为空,使用备选方案
if
(
path
.
isEmpty
())
{
return
generateFallbackFileName
(
originalFileName
);
}
return
path
;
}
catch
(
Exception
e
)
{
log
.
warn
(
"解析URL路径失败: {}, 使用备选方案"
,
originalUrl
,
e
);
return
generateFallbackFileName
(
originalFileName
);
}
}
/**
* 备选文件名生成方案
*/
private
String
generateFallbackFileName
(
String
originalFileName
)
{
String
fileExtension
=
originalFileName
.
substring
(
originalFileName
.
lastIndexOf
(
"."
));
String
timestamp
=
String
.
valueOf
(
System
.
currentTimeMillis
());
String
randomStr
=
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
).
substring
(
0
,
8
);
return
"insurance/"
+
timestamp
+
"_"
+
randomStr
+
fileExtension
;
}
/**
* 上传到阿里云OSS
*/
private
String
uploadToAliOss
(
byte
[]
fileContent
,
String
ossFileName
)
{
// 创建上传请求
PutObjectRequest
putObjectRequest
=
new
PutObjectRequest
(
defaultBucket
,
ossFileName
,
new
ByteArrayInputStream
(
fileContent
));
// 上传文件
ossClient
.
putObject
(
putObjectRequest
);
// 生成访问URL
return
String
.
format
(
"https://%s.%s/%s"
,
defaultBucket
,
defaultEndpoint
,
ossFileName
);
}
}
\ No newline at end of file
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/MaterialServiceImpl.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yd.oss.service.dto.MaterialDto
;
import
com.yd.oss.service.model.Material
;
import
com.yd.oss.service.dao.MaterialMapper
;
import
com.yd.oss.service.service.IMaterialService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* <p>
* 材料基础信息 服务实现类
* </p>
*
* @author zxm
* @since 2025-12-17
*/
@Service
public
class
MaterialServiceImpl
extends
ServiceImpl
<
MaterialMapper
,
Material
>
implements
IMaterialService
{
@Override
public
List
<
Material
>
queryList
(
MaterialDto
dto
)
{
return
this
.
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
Material
>()
.
eq
(
Material:
:
getObjectType
,
dto
.
getObjectType
()));
}
}
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/OssFileServiceImpl.java
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
service
.
impl
;
package
com
.
yd
.
oss
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.oss.feign.response.ApiOssFileListResponse
;
import
com.yd.oss.service.dao.OssOperationLogMapper
;
import
com.yd.oss.service.dao.OssOperationLogMapper
;
import
com.yd.oss.service.dto.OssFileDto
;
import
com.yd.oss.service.model.OssFile
;
import
com.yd.oss.service.model.OssFile
;
import
com.yd.oss.service.dao.OssFileMapper
;
import
com.yd.oss.service.dao.OssFileMapper
;
import
com.yd.oss.service.model.OssOperationLog
;
import
com.yd.oss.service.model.OssOperationLog
;
import
com.yd.oss.service.service.IOssFileService
;
import
com.yd.oss.service.service.IOssFileService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
...
@@ -30,10 +36,10 @@ import java.util.List;
...
@@ -30,10 +36,10 @@ import java.util.List;
@Service
@Service
public
class
OssFileServiceImpl
extends
ServiceImpl
<
OssFileMapper
,
OssFile
>
implements
IOssFileService
{
public
class
OssFileServiceImpl
extends
ServiceImpl
<
OssFileMapper
,
OssFile
>
implements
IOssFileService
{
@
Autowired
@
Resource
private
OssFileMapper
ossFileMapper
;
private
OssFileMapper
ossFileMapper
;
@
Autowired
@
Resource
private
OssOperationLogMapper
ossOperationLogMapper
;
private
OssOperationLogMapper
ossOperationLogMapper
;
/**
/**
...
@@ -128,5 +134,29 @@ public class OssFileServiceImpl extends ServiceImpl<OssFileMapper, OssFile> impl
...
@@ -128,5 +134,29 @@ public class OssFileServiceImpl extends ServiceImpl<OssFileMapper, OssFile> impl
return
ossOperationLogMapper
.
selectByFileId
(
fileId
);
return
ossOperationLogMapper
.
selectByFileId
(
fileId
);
}
}
/**
* 查询列表
* @param dto
* @return
*/
@Override
public
List
<
OssFile
>
queryList
(
OssFileDto
dto
)
{
List
<
OssFile
>
list
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
OssFile
>()
.
eq
(
StringUtils
.
isNotBlank
(
dto
.
getObjectBizId
()),
OssFile:
:
getObjectBizId
,
dto
.
getObjectBizId
())
.
in
(!
CollectionUtils
.
isEmpty
(
dto
.
getFileBizIdList
()),
OssFile:
:
getFileBizId
,
dto
.
getFileBizIdList
())
);
return
list
;
}
@Override
public
OssFile
queryOne
(
String
fileBizId
)
{
return
this
.
getOne
(
new
LambdaQueryWrapper
<
OssFile
>().
eq
(
OssFile:
:
getFileBizId
,
fileBizId
));
}
@Override
public
List
<
ApiOssFileListResponse
>
list
(
String
objectBizId
,
List
<
String
>
objectBizIdList
)
{
return
this
.
baseMapper
.
list
(
objectBizId
,
objectBizIdList
);
}
}
}
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/PdfServiceImpl.java
View file @
96e71469
...
@@ -9,6 +9,7 @@ import com.yd.oss.service.dto.FileProdDto;
...
@@ -9,6 +9,7 @@ import com.yd.oss.service.dto.FileProdDto;
import
com.yd.oss.service.service.*
;
import
com.yd.oss.service.service.*
;
import
com.yd.oss.service.utils.PdfUtil
;
import
com.yd.oss.service.utils.PdfUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.xwpf.usermodel.*
;
import
org.apache.poi.xwpf.usermodel.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.context.annotation.Primary
;
...
@@ -45,10 +46,11 @@ public class PdfServiceImpl<T> implements PdfService<T> {
...
@@ -45,10 +46,11 @@ public class PdfServiceImpl<T> implements PdfService<T> {
* @param dataObject
* @param dataObject
* @param objectId
* @param objectId
* @param templateType
* @param templateType
* @param customFileName 自定义文件名
* @return
* @return
* @throws IOException
* @throws IOException
*/
*/
public
String
generatePDF
(
T
dataObject
,
String
objectId
,
String
templateType
)
throws
IOException
{
public
String
generatePDF
(
T
dataObject
,
String
objectId
,
String
templateType
,
String
customFileName
)
throws
IOException
{
// 获取模板信息
// 获取模板信息
FileProdDto
fileProdDto
=
iFileTemplateService
.
getFileProd
(
""
,
templateType
);
FileProdDto
fileProdDto
=
iFileTemplateService
.
getFileProd
(
""
,
templateType
);
...
@@ -68,7 +70,13 @@ public class PdfServiceImpl<T> implements PdfService<T> {
...
@@ -68,7 +70,13 @@ public class PdfServiceImpl<T> implements PdfService<T> {
convertWordToPdf
(
tempInputFile
,
tempPdfFile
,
dataObject
,
fileProdDto
);
convertWordToPdf
(
tempInputFile
,
tempPdfFile
,
dataObject
,
fileProdDto
);
// 上传到OSS
// 上传到OSS
String
objectName
=
"insurance_schedules/"
+
objectId
+
"_"
+
System
.
currentTimeMillis
()
+
".pdf"
;
String
objectName
=
""
;
if
(
StringUtils
.
isNotBlank
(
customFileName
))
{
objectName
=
"insurance_schedules/"
+
System
.
currentTimeMillis
()
+
"/"
+
customFileName
+
".pdf"
;
}
else
{
objectName
=
"insurance_schedules/"
+
objectId
+
"_"
+
System
.
currentTimeMillis
()
+
".pdf"
;
}
uploadToOSS
(
tempPdfFile
,
fileProdDto
.
getBucketName
(),
objectName
);
uploadToOSS
(
tempPdfFile
,
fileProdDto
.
getBucketName
(),
objectName
);
// 生成访问URL
// 生成访问URL
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/RelObjectMaterialServiceImpl.java
0 → 100644
View file @
96e71469
package
com
.
yd
.
oss
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.oss.feign.request.ApiRelObjectMaterialPageRequest
;
import
com.yd.oss.feign.response.ApiRelObjectMaterialPageResponse
;
import
com.yd.oss.service.model.RelObjectMaterial
;
import
com.yd.oss.service.dao.RelObjectMaterialMapper
;
import
com.yd.oss.service.service.IRelObjectMaterialService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* <p>
* 对象材料关系表 服务实现类
* </p>
*
* @author zxm
* @since 2025-12-17
*/
@Service
public
class
RelObjectMaterialServiceImpl
extends
ServiceImpl
<
RelObjectMaterialMapper
,
RelObjectMaterial
>
implements
IRelObjectMaterialService
{
@Override
public
IPage
<
ApiRelObjectMaterialPageResponse
>
page
(
Page
<
ApiRelObjectMaterialPageResponse
>
page
,
ApiRelObjectMaterialPageRequest
request
)
{
return
baseMapper
.
page
(
page
,
request
);
}
@Override
public
RelObjectMaterial
queryOne
(
String
relObjectMaterialBizId
)
{
return
this
.
getOne
(
new
LambdaQueryWrapper
<
RelObjectMaterial
>()
.
eq
(
RelObjectMaterial:
:
getRelObjectMaterialBizId
,
relObjectMaterialBizId
));
}
@Override
public
Boolean
delByObjectBizId
(
String
objectBizId
)
{
return
this
.
remove
(
new
LambdaQueryWrapper
<
RelObjectMaterial
>().
eq
(
RelObjectMaterial:
:
getObjectBizId
,
objectBizId
));
}
@Override
public
List
<
RelObjectMaterial
>
queryList
(
String
objectBizId
)
{
return
this
.
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
RelObjectMaterial
>().
eq
(
RelObjectMaterial:
:
getObjectBizId
,
objectBizId
));
}
}
yd-oss-service/src/main/java/com/yd/oss/service/utils/MyBatisPlusCodeGenerator.java
View file @
96e71469
...
@@ -5,11 +5,11 @@ import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
...
@@ -5,11 +5,11 @@ import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
public
class
MyBatisPlusCodeGenerator
{
public
class
MyBatisPlusCodeGenerator
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
FastAutoGenerator
.
create
(
"jdbc:mysql://
localhost:3306/test?serverTimezone=GMT%2B8"
,
"root"
,
"123456
"
)
FastAutoGenerator
.
create
(
"jdbc:mysql://
139.224.145.34:3308/yd_oss?serverTimezone=GMT%2B8"
,
"root"
,
"Zxm7320017
"
)
.
globalConfig
(
builder
->
{
.
globalConfig
(
builder
->
{
builder
.
author
(
"zxm"
)
builder
.
author
(
"zxm"
)
.
outputDir
(
"src/main/java/com/yd/oss/service"
);
//
.outputDir("src/main/java/com/yd/oss/service");
//
.outputDir("D:/soft/ideaproject/v2/yd-oss/yd-oss-service/src/main/java");
.
outputDir
(
"D:/soft/ideaproject/v2/yd-oss/yd-oss-service/src/main/java"
);
})
})
.
packageConfig
(
builder
->
{
.
packageConfig
(
builder
->
{
builder
.
parent
(
"com.yd.oss.service"
)
builder
.
parent
(
"com.yd.oss.service"
)
...
@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator {
...
@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator {
})
})
.
strategyConfig
(
builder
->
{
.
strategyConfig
(
builder
->
{
builder
.
addInclude
(
builder
.
addInclude
(
"
product_file
"
"
material"
,
"rel_object_material
"
)
)
.
entityBuilder
()
.
entityBuilder
()
.
enableLombok
()
.
enableLombok
()
...
...
yd-oss-service/src/main/resources/mappers/MaterialMapper.xml
0 → 100644
View file @
96e71469
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yd.oss.service.dao.MaterialMapper"
>
</mapper>
yd-oss-service/src/main/resources/mappers/OssFileMapper.xml
View file @
96e71469
...
@@ -2,4 +2,22 @@
...
@@ -2,4 +2,22 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yd.oss.service.dao.OssFileMapper"
>
<mapper
namespace=
"com.yd.oss.service.dao.OssFileMapper"
>
<select
id=
"list"
resultType=
"com.yd.oss.feign.response.ApiOssFileListResponse"
>
select o.*,
concat('https://', op.bucket_name, '.', op.endpoint, '/', o.file_key) as fileUrl
from oss_file o
left join oss_provider op on op.provider_biz_id = o.provider_biz_id and op.is_deleted = 0
<where>
<if
test=
"objectBizId != null and objectBizId != ''"
>
and o.object_biz_id = #{objectBizId}
</if>
<if
test=
"objectBizIdList != null and objectBizIdList.size > 0"
>
and o.object_biz_id in
<foreach
collection=
"objectBizIdList"
item=
"item"
index=
"index"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
</if>
and o.is_deleted = 0
</where>
</select>
</mapper>
</mapper>
yd-oss-service/src/main/resources/mappers/RelObjectMaterialMapper.xml
0 → 100644
View file @
96e71469
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yd.oss.service.dao.RelObjectMaterialMapper"
>
<!-- 结果映射 -->
<resultMap
id=
"RelObjectMaterialResponseMap"
type=
"com.yd.oss.feign.response.ApiRelObjectMaterialPageResponse"
>
<id
property=
"id"
column=
"id"
/>
<result
property=
"relObjectMaterialBizId"
column=
"rel_object_material_biz_id"
/>
<result
property=
"materialBizId"
column=
"material_biz_id"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"dataPerson"
column=
"data_person"
/>
<result
property=
"dataType"
column=
"data_type"
/>
<result
property=
"precautions"
column=
"precautions"
/>
<!-- 使用类型处理器将分号分隔的字符串转换为List -->
<result
property=
"fileUrlList"
column=
"file_urls"
typeHandler=
"com.yd.oss.service.handler.StringToListTypeHandler"
/>
</resultMap>
<select
id=
"page"
resultMap=
"RelObjectMaterialResponseMap"
>
SELECT
rom.id,
rom.rel_object_material_biz_id,
rom.material_biz_id,
rom.status,
m.data_person,
m.data_type,
m.precautions,
GROUP_CONCAT(
CONCAT('https://', f.bucket_name, '.', p.endpoint, '/', f.file_key)
SEPARATOR ';'
) as file_urls
FROM rel_object_material rom
LEFT JOIN material m ON m.material_biz_id = rom.material_biz_id AND m.is_deleted = 0
LEFT JOIN oss_file f ON f.object_biz_id = rom.rel_object_material_biz_id
AND f.object_table_name = 'rel_object_material'
AND f.is_deleted = 0
LEFT JOIN oss_provider p ON p.provider_biz_id = f.provider_biz_id
AND p.is_active = 1
AND p.is_deleted = 0
<where>
<if
test=
"request.objectBizId != null and request.objectBizId != ''"
>
AND rom.object_biz_id = #{request.objectBizId}
</if>
AND rom.is_deleted = 0
</where>
GROUP BY rom.id
</select>
</mapper>
yd-oss-service/yd-oss-service.iml
View file @
96e71469
...
@@ -68,6 +68,7 @@
...
@@ -68,6 +68,7 @@
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-csf-feign:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-csf-feign:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-question-feign:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-question-feign:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-base-feign:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-auth-core:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yd:yd-auth-core:1.0-SNAPSHOT"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.github.xiaoymin:knife4j-openapi3-spring-boot-starter:4.3.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.github.xiaoymin:knife4j-openapi3-spring-boot-starter:4.3.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.github.xiaoymin:knife4j-core:4.3.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.github.xiaoymin:knife4j-core:4.3.0"
level=
"project"
/>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment