Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-csf
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-csf
Commits
ec378a2e
Commit
ec378a2e
authored
Sep 23, 2025
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
来佣接口6
parent
eee772fa
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
214 additions
and
11 deletions
+214
-11
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiFortuneController.java
+34
-5
yd-csf-service/src/main/java/com/yd/csf/service/dto/FortuneAccountExportDTO.java
+33
-0
yd-csf-service/src/main/java/com/yd/csf/service/dto/FortuneStatusUpdateRequest.java
+21
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/FortuneService.java
+6
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FortuneServiceImpl.java
+120
-6
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiFortuneController.java
View file @
ec378a2e
...
...
@@ -11,16 +11,13 @@ import com.yd.csf.api.dto.FortuneImportDTO;
import
com.yd.csf.service.common.ErrorCode
;
import
com.yd.csf.service.dto.FortuneDownloadRequest
;
import
com.yd.csf.service.dto.FortuneQueryRequest
;
import
com.yd.csf.service.dto.FortuneStatusUpdateRequest
;
import
com.yd.csf.service.dto.FortuneUpdateRequest
;
import
com.yd.csf.service.model.Fortune
;
import
com.yd.csf.service.service.FortuneService
;
import
com.yd.csf.service.vo.FortuneVO
;
import
io.swagger.v3.oas.annotations.Operation
;
import
io.swagger.v3.oas.annotations.media.Content
;
import
io.swagger.v3.oas.annotations.responses.ApiResponse
;
import
io.swagger.v3.oas.annotations.servers.Server
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
io.swagger.v3.oas.models.annotations.OpenAPI30
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -99,7 +96,7 @@ public class ApiFortuneController {
* @return
*/
@Operation
(
summary
=
"下载选中的发佣数据"
)
@PostMapping
(
"/download"
)
@PostMapping
(
"/download
/raw
"
)
public
void
downloadFortune
(
@RequestBody
FortuneDownloadRequest
fortuneDownloadRequest
,
HttpServletResponse
response
)
throws
IOException
{
if
(
CollectionUtils
.
isEmpty
(
fortuneDownloadRequest
.
getFortuneBizIdList
()))
{
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"请选择要下载的发佣数据"
);
...
...
@@ -108,6 +105,22 @@ public class ApiFortuneController {
}
/**
* 生成出账清单(按人)
*
* @param fortuneDownloadRequest
* @param response
* @return
*/
@Operation
(
summary
=
"生成出账清单"
)
@PostMapping
(
"/download/account"
)
public
void
downloadAccount
(
@RequestBody
FortuneDownloadRequest
fortuneDownloadRequest
,
HttpServletResponse
response
)
throws
IOException
{
if
(
CollectionUtils
.
isEmpty
(
fortuneDownloadRequest
.
getFortuneBizIdList
()))
{
throw
new
BusinessException
(
ResultCode
.
PARAMS_ERROR
.
getCode
(),
"请选择要出账的发佣数据"
);
}
fortuneService
.
downloadAccount
(
fortuneDownloadRequest
,
response
);
}
/**
* 删除fna
*
* @param deleteRequest
...
...
@@ -150,6 +163,22 @@ public class ApiFortuneController {
}
/**
* 修改状态
*
* @param fortuneStatusUpdateRequest
* @return
*/
@PostMapping
(
"/update/status"
)
@Operation
(
summary
=
"修改保单发佣状态"
)
public
Result
<
Boolean
>
updateFortuneStatus
(
@RequestBody
FortuneStatusUpdateRequest
fortuneStatusUpdateRequest
)
{
if
(
fortuneStatusUpdateRequest
==
null
||
CollectionUtils
.
isEmpty
(
fortuneStatusUpdateRequest
.
getFortuneBizIdList
()))
{
return
Result
.
fail
(
ErrorCode
.
PARAMS_ERROR
.
getCode
(),
ErrorCode
.
PARAMS_ERROR
.
getMessage
());
}
return
Result
.
success
(
fortuneService
.
updateFortuneStatus
(
fortuneStatusUpdateRequest
));
}
/**
* 根据 fortuneBizId 获取保单发佣(封装类)
*
* @param fortuneBizId
...
...
yd-csf-service/src/main/java/com/yd/csf/service/dto/FortuneAccountExportDTO.java
0 → 100644
View file @
ec378a2e
package
com
.
yd
.
csf
.
service
.
dto
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.Map
;
@Data
public
class
FortuneAccountExportDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ExcelProperty
(
"转介人"
)
private
String
broker
;
@ExcelProperty
(
"所属团队"
)
private
String
team
;
// 动态字段,用于存储不同的fortune项目
private
Map
<
String
,
BigDecimal
>
fortuneAmounts
=
new
HashMap
<>();
// 添加fortune项目金额
public
void
addFortuneAmount
(
String
fortuneName
,
BigDecimal
amount
)
{
fortuneAmounts
.
put
(
fortuneName
,
amount
);
}
// 获取fortune项目金额
public
BigDecimal
getFortuneAmount
(
String
fortuneName
)
{
return
fortuneAmounts
.
getOrDefault
(
fortuneName
,
BigDecimal
.
ZERO
);
}
}
yd-csf-service/src/main/java/com/yd/csf/service/dto/FortuneStatusUpdateRequest.java
0 → 100644
View file @
ec378a2e
package
com
.
yd
.
csf
.
service
.
dto
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
@Data
public
class
FortuneStatusUpdateRequest
{
@Schema
(
description
=
"发佣数据业务Id列表"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
private
List
<
String
>
fortuneBizIdList
;
/**
* 发佣状态
*/
@Schema
(
description
=
"发佣状态 '0'-'暂不可发','1'-'可发放','2'-'已发并关账', 字典值: csf_fortune_status"
)
private
String
status
;
}
yd-csf-service/src/main/java/com/yd/csf/service/service/FortuneService.java
View file @
ec378a2e
...
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.csf.service.dto.FortuneDownloadRequest
;
import
com.yd.csf.service.dto.FortuneQueryRequest
;
import
com.yd.csf.service.dto.FortuneStatusUpdateRequest
;
import
com.yd.csf.service.dto.FortuneUpdateRequest
;
import
com.yd.csf.service.model.Fortune
;
import
com.baomidou.mybatisplus.extension.service.IService
;
...
...
@@ -11,6 +12,7 @@ import com.yd.csf.service.vo.FortuneVO;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.UnsupportedEncodingException
;
/**
* @author Zhang Jianan
...
...
@@ -26,4 +28,8 @@ public interface FortuneService extends IService<Fortune> {
Boolean
updateFortune
(
FortuneUpdateRequest
fortuneUpdateRequest
);
void
downloadFortune
(
FortuneDownloadRequest
fortuneDownloadRequest
,
HttpServletResponse
response
)
throws
IOException
;
void
downloadAccount
(
FortuneDownloadRequest
fortuneDownloadRequest
,
HttpServletResponse
response
)
throws
UnsupportedEncodingException
;
Boolean
updateFortuneStatus
(
FortuneStatusUpdateRequest
fortuneStatusUpdateRequest
);
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FortuneServiceImpl.java
View file @
ec378a2e
...
...
@@ -10,10 +10,7 @@ import com.yd.auth.core.dto.AuthUserDto;
import
com.yd.auth.core.utils.SecurityUtil
;
import
com.yd.common.enums.ResultCode
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.csf.service.dto.FortuneDownloadRequest
;
import
com.yd.csf.service.dto.FortuneExportDTO
;
import
com.yd.csf.service.dto.FortuneQueryRequest
;
import
com.yd.csf.service.dto.FortuneUpdateRequest
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.model.Fortune
;
import
com.yd.csf.service.service.FortuneService
;
import
com.yd.csf.service.dao.FortuneMapper
;
...
...
@@ -21,12 +18,15 @@ import com.yd.csf.service.vo.FortuneVO;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.UnsupportedEncodingException
;
import
java.math.BigDecimal
;
import
java.net.URLEncoder
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -119,6 +119,120 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
}
}
}
@Override
public
void
downloadAccount
(
FortuneDownloadRequest
fortuneDownloadRequest
,
HttpServletResponse
response
)
throws
UnsupportedEncodingException
{
List
<
String
>
fortuneBizIdList
=
fortuneDownloadRequest
.
getFortuneBizIdList
();
if
(
CollUtil
.
isNotEmpty
(
fortuneBizIdList
))
{
List
<
Fortune
>
fortuneList
=
this
.
list
(
new
QueryWrapper
<
Fortune
>().
in
(
"fortune_biz_id"
,
fortuneBizIdList
));
if
(
CollUtil
.
isNotEmpty
(
fortuneList
))
{
// 按人分组
Map
<
String
,
List
<
Fortune
>>
fortuneMap
=
fortuneList
.
stream
().
collect
(
Collectors
.
groupingBy
(
Fortune:
:
getBroker
));
// 创建按人分组的导出DTO列表
List
<
FortuneAccountExportDTO
>
accountExportDTOList
=
new
ArrayList
<>();
// 收集所有不同的fortune项目名称
Set
<
String
>
allFortuneNames
=
fortuneList
.
stream
()
.
map
(
Fortune:
:
getFortuneName
)
.
filter
(
StringUtils:
:
isNotBlank
)
.
collect
(
Collectors
.
toSet
());
// 处理每个人的数据
for
(
Map
.
Entry
<
String
,
List
<
Fortune
>>
entry
:
fortuneMap
.
entrySet
())
{
String
broker
=
entry
.
getKey
();
List
<
Fortune
>
brokerFortunes
=
entry
.
getValue
();
FortuneAccountExportDTO
accountDTO
=
new
FortuneAccountExportDTO
();
accountDTO
.
setBroker
(
broker
);
// 设置团队(取第一个记录的团队)
if
(
CollUtil
.
isNotEmpty
(
brokerFortunes
))
{
accountDTO
.
setTeam
(
brokerFortunes
.
get
(
0
).
getTeam
());
}
// 按fortune项目分组并累加金额
Map
<
String
,
BigDecimal
>
fortuneAmountMap
=
brokerFortunes
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
Fortune:
:
getFortuneName
,
Collectors
.
reducing
(
BigDecimal
.
ZERO
,
Fortune:
:
getAmount
,
BigDecimal:
:
add
)
));
// 设置各个fortune项目的金额
fortuneAmountMap
.
forEach
(
accountDTO:
:
addFortuneAmount
);
accountExportDTOList
.
add
(
accountDTO
);
}
// 设置响应头
response
.
setContentType
(
"application/vnd.ms-excel;charset=UTF-8"
);
response
.
setCharacterEncoding
(
"utf-8"
);
String
fileName
=
"fortune_account_"
+
System
.
currentTimeMillis
()
+
".xlsx"
;
response
.
setHeader
(
"Content-Disposition"
,
"attachment;filename="
+
fileName
);
// 创建动态表头
List
<
List
<
String
>>
head
=
new
ArrayList
<>();
head
.
add
(
Collections
.
singletonList
(
"转介人"
));
head
.
add
(
Collections
.
singletonList
(
"所属团队"
));
// 添加所有fortune项目作为表头
for
(
String
fortuneName
:
allFortuneNames
)
{
head
.
add
(
Collections
.
singletonList
(
fortuneName
+
"金额"
));
}
// 构建数据行
List
<
List
<
Object
>>
dataList
=
new
ArrayList
<>();
for
(
FortuneAccountExportDTO
dto
:
accountExportDTOList
)
{
List
<
Object
>
row
=
new
ArrayList
<>();
row
.
add
(
dto
.
getBroker
());
row
.
add
(
dto
.
getTeam
());
for
(
String
fortuneName
:
allFortuneNames
)
{
row
.
add
(
dto
.
getFortuneAmount
(
fortuneName
));
}
dataList
.
add
(
row
);
}
// 使用try-with-resources确保流正确关闭
try
(
ServletOutputStream
outputStream
=
response
.
getOutputStream
())
{
// 写入 Excel
EasyExcel
.
write
(
outputStream
)
.
head
(
head
)
.
sheet
(
"出账清单"
)
.
doWrite
(
dataList
);
outputStream
.
flush
();
}
catch
(
Exception
e
)
{
log
.
error
(
"导出失败"
,
e
);
throw
new
BusinessException
(
ResultCode
.
FAIL
.
getCode
(),
"导出失败"
);
}
}
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
updateFortuneStatus
(
FortuneStatusUpdateRequest
fortuneStatusUpdateRequest
)
{
List
<
String
>
fortuneBizIdList
=
fortuneStatusUpdateRequest
.
getFortuneBizIdList
();
List
<
Fortune
>
fortuneList
=
this
.
list
(
new
QueryWrapper
<
Fortune
>().
in
(
"fortune_biz_id"
,
fortuneBizIdList
));
// 获取当前登录用户
AuthUserDto
currentLoginUser
=
SecurityUtil
.
getCurrentLoginUser
();
String
loginUserId
=
currentLoginUser
.
getId
().
toString
();
Date
now
=
new
Date
();
List
<
Fortune
>
updateList
=
new
ArrayList
<>();
for
(
Fortune
fortune
:
fortuneList
)
{
Fortune
updateFortune
=
new
Fortune
();
updateFortune
.
setId
(
fortune
.
getId
());
updateFortune
.
setUpdaterId
(
loginUserId
);
updateFortune
.
setUpdateTime
(
now
);
updateFortune
.
setStatus
(
fortuneStatusUpdateRequest
.
getStatus
());
updateList
.
add
(
updateFortune
);
}
return
this
.
updateBatchById
(
updateList
);
}
}
...
...
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