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
3bac9d07
Commit
3bac9d07
authored
Mar 25, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into prod
parents
642f8f53
da8eadbc
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
137 additions
and
25 deletions
+137
-25
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiRelObjectMaterialServiceImpl.java
+73
-2
yd-oss-feign/src/main/java/com/yd/oss/feign/dto/OssFileInfo.java
+10
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiRelObjectMaterialPageResponse.java
+12
-1
yd-oss-service/src/main/java/com/yd/oss/service/handler/JsonToListTypeHandler.java
+27
-17
yd-oss-service/src/main/resources/mappers/RelObjectMaterialMapper.xml
+15
-5
No files found.
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiRelObjectMaterialServiceImpl.java
View file @
3bac9d07
...
@@ -15,6 +15,10 @@ import com.yd.oss.feign.request.ApiRelObjectMaterialUploadSubmitRequest;
...
@@ -15,6 +15,10 @@ import com.yd.oss.feign.request.ApiRelObjectMaterialUploadSubmitRequest;
import
com.yd.oss.feign.response.ApiRelObjectMaterialPageResponse
;
import
com.yd.oss.feign.response.ApiRelObjectMaterialPageResponse
;
import
com.yd.oss.service.model.RelObjectMaterial
;
import
com.yd.oss.service.model.RelObjectMaterial
;
import
com.yd.oss.service.service.IRelObjectMaterialService
;
import
com.yd.oss.service.service.IRelObjectMaterialService
;
import
com.yd.user.feign.client.sysdict.ApiSysDictFeignClient
;
import
com.yd.user.feign.request.sysdict.GetDictTypeListRequest
;
import
com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse
;
import
com.yd.user.feign.response.sysdict.GetDictTypeListResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
...
@@ -22,8 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -22,8 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
java.util.List
;
import
java.util.*
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Service
@Service
...
@@ -36,6 +39,9 @@ public class ApiRelObjectMaterialServiceImpl implements ApiRelObjectMaterialServ
...
@@ -36,6 +39,9 @@ public class ApiRelObjectMaterialServiceImpl implements ApiRelObjectMaterialServ
@Autowired
@Autowired
private
ApiOssFileService
apiOssFileService
;
private
ApiOssFileService
apiOssFileService
;
@Autowired
private
ApiSysDictFeignClient
apiSysDictFeignClient
;
/**
/**
* 分页列表查询-对象材料关系表信息
* 分页列表查询-对象材料关系表信息
* @param request
* @param request
...
@@ -45,6 +51,71 @@ public class ApiRelObjectMaterialServiceImpl implements ApiRelObjectMaterialServ
...
@@ -45,6 +51,71 @@ public class ApiRelObjectMaterialServiceImpl implements ApiRelObjectMaterialServ
public
Result
<
IPage
<
ApiRelObjectMaterialPageResponse
>>
page
(
ApiRelObjectMaterialPageRequest
request
)
{
public
Result
<
IPage
<
ApiRelObjectMaterialPageResponse
>>
page
(
ApiRelObjectMaterialPageRequest
request
)
{
Page
<
ApiRelObjectMaterialPageResponse
>
page
=
new
Page
<>(
request
.
getPageNo
(),
request
.
getPageSize
());
Page
<
ApiRelObjectMaterialPageResponse
>
page
=
new
Page
<>(
request
.
getPageNo
(),
request
.
getPageSize
());
IPage
<
ApiRelObjectMaterialPageResponse
>
iPage
=
iRelObjectMaterialService
.
page
(
page
,
request
);
IPage
<
ApiRelObjectMaterialPageResponse
>
iPage
=
iRelObjectMaterialService
.
page
(
page
,
request
);
// 如果没有数据,直接返回
if
(
iPage
==
null
||
CollectionUtils
.
isEmpty
(
iPage
.
getRecords
()))
{
return
Result
.
success
(
iPage
);
}
// 收集需要翻译的字典编码
Set
<
String
>
dataPersonSet
=
new
HashSet
<>();
Set
<
String
>
dataTypeSet
=
new
HashSet
<>();
for
(
ApiRelObjectMaterialPageResponse
record
:
iPage
.
getRecords
())
{
if
(
record
.
getDataPerson
()
!=
null
)
{
dataPersonSet
.
add
(
record
.
getDataPerson
());
}
if
(
record
.
getDataType
()
!=
null
)
{
dataTypeSet
.
add
(
record
.
getDataType
());
}
}
// 构建字典类型列表,批量查询
List
<
String
>
dictTypes
=
new
ArrayList
<>();
dictTypes
.
add
(
"oss_data_person"
);
dictTypes
.
add
(
"oss_data_type"
);
GetDictTypeListRequest
dictRequest
=
new
GetDictTypeListRequest
();
dictRequest
.
setTypeList
(
dictTypes
);
Result
<
List
<
GetDictTypeListResponse
>>
dictResult
=
apiSysDictFeignClient
.
getByDictTypeList
(
dictRequest
);
if
(
dictResult
==
null
||
dictResult
.
getCode
()
!=
200
||
CollectionUtils
.
isEmpty
(
dictResult
.
getData
()))
{
log
.
warn
(
"字典查询失败,无法翻译名称"
);
return
Result
.
success
(
iPage
);
}
// 构建字典映射:dictType -> (itemValue -> itemLabel)
Map
<
String
,
Map
<
String
,
String
>>
dictMapping
=
new
HashMap
<>();
for
(
GetDictTypeListResponse
dictTypeResp
:
dictResult
.
getData
())
{
String
dictType
=
dictTypeResp
.
getDictType
();
List
<
GetDictItemListByDictTypeResponse
>
itemList
=
dictTypeResp
.
getDictItemList
();
if
(
CollectionUtils
.
isEmpty
(
itemList
))
{
continue
;
}
Map
<
String
,
String
>
valueToLabel
=
itemList
.
stream
()
.
filter
(
item
->
item
.
getStatus
()
==
1
)
// 只取启用状态
.
collect
(
Collectors
.
toMap
(
GetDictItemListByDictTypeResponse:
:
getItemValue
,
GetDictItemListByDictTypeResponse:
:
getItemLabel
,
(
existing
,
replacement
)
->
existing
));
dictMapping
.
put
(
dictType
,
valueToLabel
);
}
// 获取两个字典的映射
Map
<
String
,
String
>
personMap
=
dictMapping
.
getOrDefault
(
"oss_data_person"
,
Collections
.
emptyMap
());
Map
<
String
,
String
>
typeMap
=
dictMapping
.
getOrDefault
(
"oss_data_type"
,
Collections
.
emptyMap
());
// 填充名称
for
(
ApiRelObjectMaterialPageResponse
record
:
iPage
.
getRecords
())
{
String
dataPerson
=
record
.
getDataPerson
();
if
(
dataPerson
!=
null
)
{
record
.
setDataPersonName
(
personMap
.
get
(
dataPerson
));
}
String
dataType
=
record
.
getDataType
();
if
(
dataType
!=
null
)
{
record
.
setDataTypeName
(
typeMap
.
get
(
dataType
));
}
}
return
Result
.
success
(
iPage
);
return
Result
.
success
(
iPage
);
}
}
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/dto/OssFileInfo.java
0 → 100644
View file @
3bac9d07
package
com
.
yd
.
oss
.
feign
.
dto
;
import
lombok.Data
;
@Data
public
class
OssFileInfo
{
private
String
fileUrl
;
private
String
fileName
;
}
\ No newline at end of file
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiRelObjectMaterialPageResponse.java
View file @
3bac9d07
package
com
.
yd
.
oss
.
feign
.
response
;
package
com
.
yd
.
oss
.
feign
.
response
;
import
com.yd.oss.feign.dto.OssFileInfo
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.List
;
import
java.util.List
;
...
@@ -32,11 +33,21 @@ public class ApiRelObjectMaterialPageResponse {
...
@@ -32,11 +33,21 @@ public class ApiRelObjectMaterialPageResponse {
private
String
dataPerson
;
private
String
dataPerson
;
/**
/**
* 资料人(字典)名称
*/
private
String
dataPersonName
;
/**
* 资料类型(字典)
* 资料类型(字典)
*/
*/
private
String
dataType
;
private
String
dataType
;
/**
/**
* 资料类型(字典)名称
*/
private
String
dataTypeName
;
/**
* 注意事项
* 注意事项
*/
*/
private
String
precautions
;
private
String
precautions
;
...
@@ -44,6 +55,6 @@ public class ApiRelObjectMaterialPageResponse {
...
@@ -44,6 +55,6 @@ public class ApiRelObjectMaterialPageResponse {
/**
/**
* 文件URL列表(完整路径)
* 文件URL列表(完整路径)
*/
*/
private
List
<
String
>
fileUrlList
;
private
List
<
OssFileInfo
>
fileUrlList
;
}
}
yd-oss-service/src/main/java/com/yd/oss/service/handler/
String
ToListTypeHandler.java
→
yd-oss-service/src/main/java/com/yd/oss/service/handler/
Json
ToListTypeHandler.java
View file @
3bac9d07
package
com
.
yd
.
oss
.
service
.
handler
;
package
com
.
yd
.
oss
.
service
.
handler
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.yd.oss.feign.dto.OssFileInfo
;
import
org.apache.ibatis.type.BaseTypeHandler
;
import
org.apache.ibatis.type.BaseTypeHandler
;
import
org.apache.ibatis.type.JdbcType
;
import
org.apache.ibatis.type.JdbcType
;
import
org.apache.ibatis.type.MappedTypes
;
import
org.apache.ibatis.type.MappedTypes
;
import
java.sql.CallableStatement
;
import
java.sql.CallableStatement
;
import
java.sql.PreparedStatement
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.sql.SQLException
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@MappedTypes
(
List
.
class
)
@MappedTypes
(
List
.
class
)
public
class
StringToListTypeHandler
extends
BaseTypeHandler
<
List
<
String
>>
{
public
class
JsonToListTypeHandler
extends
BaseTypeHandler
<
List
<
OssFileInfo
>>
{
private
static
final
ObjectMapper
objectMapper
=
new
ObjectMapper
();
@Override
@Override
public
void
setNonNullParameter
(
PreparedStatement
ps
,
int
i
,
List
<
String
>
parameter
,
JdbcType
jdbcType
)
throws
SQLException
{
public
void
setNonNullParameter
(
PreparedStatement
ps
,
int
i
,
List
<
OssFileInfo
>
parameter
,
JdbcType
jdbcType
)
throws
SQLException
{
ps
.
setString
(
i
,
String
.
join
(
";"
,
parameter
));
try
{
ps
.
setString
(
i
,
objectMapper
.
writeValueAsString
(
parameter
));
}
catch
(
JsonProcessingException
e
)
{
throw
new
SQLException
(
e
);
}
}
}
@Override
@Override
public
List
<
String
>
getNullableResult
(
ResultSet
rs
,
String
columnName
)
throws
SQLException
{
public
List
<
OssFileInfo
>
getNullableResult
(
ResultSet
rs
,
String
columnName
)
throws
SQLException
{
String
value
=
rs
.
getString
(
columnName
);
String
value
=
rs
.
getString
(
columnName
);
return
convertStringToList
(
value
);
return
parseJsonArray
(
value
);
}
}
@Override
@Override
public
List
<
String
>
getNullableResult
(
ResultSet
rs
,
int
columnIndex
)
throws
SQLException
{
public
List
<
OssFileInfo
>
getNullableResult
(
ResultSet
rs
,
int
columnIndex
)
throws
SQLException
{
String
value
=
rs
.
getString
(
columnIndex
);
String
value
=
rs
.
getString
(
columnIndex
);
return
convertStringToList
(
value
);
return
parseJsonArray
(
value
);
}
}
@Override
@Override
public
List
<
String
>
getNullableResult
(
CallableStatement
cs
,
int
columnIndex
)
throws
SQLException
{
public
List
<
OssFileInfo
>
getNullableResult
(
CallableStatement
cs
,
int
columnIndex
)
throws
SQLException
{
String
value
=
cs
.
getString
(
columnIndex
);
String
value
=
cs
.
getString
(
columnIndex
);
return
convertStringToList
(
value
);
return
parseJsonArray
(
value
);
}
}
private
List
<
String
>
convertStringToList
(
String
value
)
{
private
List
<
OssFileInfo
>
parseJsonArray
(
String
value
)
{
if
(
value
==
null
||
value
.
trim
().
isEmpty
())
{
if
(
value
==
null
||
value
.
trim
().
isEmpty
())
{
return
Collections
.
emptyList
();
return
Collections
.
emptyList
();
}
}
return
Arrays
.
stream
(
value
.
split
(
";"
))
try
{
.
map
(
String:
:
trim
)
return
objectMapper
.
readValue
(
value
,
new
TypeReference
<
List
<
OssFileInfo
>>()
{});
.
filter
(
s
->
!
s
.
isEmpty
())
}
catch
(
JsonProcessingException
e
)
{
.
collect
(
Collectors
.
toList
());
return
Collections
.
emptyList
();
}
}
}
}
}
\ No newline at end of file
yd-oss-service/src/main/resources/mappers/RelObjectMaterialMapper.xml
View file @
3bac9d07
...
@@ -11,8 +11,8 @@
...
@@ -11,8 +11,8 @@
<result
property=
"dataType"
column=
"data_type"
/>
<result
property=
"dataType"
column=
"data_type"
/>
<result
property=
"precautions"
column=
"precautions"
/>
<result
property=
"precautions"
column=
"precautions"
/>
<!-- 使用类型处理器将分号分隔的字符串转换为List -->
<!-- 使用类型处理器将分号分隔的字符串转换为List -->
<result
property=
"fileUrlList"
column=
"file_
url
s"
<result
property=
"fileUrlList"
column=
"file_
info
s"
typeHandler=
"com.yd.oss.service.handler.
String
ToListTypeHandler"
/>
typeHandler=
"com.yd.oss.service.handler.
Json
ToListTypeHandler"
/>
</resultMap>
</resultMap>
<select
id=
"page"
resultMap=
"RelObjectMaterialResponseMap"
>
<select
id=
"page"
resultMap=
"RelObjectMaterialResponseMap"
>
...
@@ -24,10 +24,20 @@
...
@@ -24,10 +24,20 @@
m.data_person,
m.data_person,
m.data_type,
m.data_type,
m.precautions,
m.precautions,
CONCAT(
'[',
GROUP_CONCAT(
GROUP_CONCAT(
CONCAT('https://', f.bucket_name, '.', p.endpoint, '/', f.file_key)
IF(f.id IS NOT NULL,
SEPARATOR ';'
JSON_OBJECT(
) as file_urls
'fileUrl', CONCAT('https://', f.bucket_name, '.', p.endpoint, '/', f.file_key),
'fileName', f.original_name
),
NULL
)
SEPARATOR ','
),
']'
) as file_infos
FROM rel_object_material rom
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 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
LEFT JOIN oss_file f ON f.object_biz_id = rom.rel_object_material_biz_id
...
...
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