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
eba11680
Commit
eba11680
authored
Oct 13, 2025
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
9ae33511
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
106 additions
and
20 deletions
+106
-20
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiAppointmentFileController.java
+4
-3
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiAppointmentFileServiceImpl.java
+41
-14
yd-csf-feign/src/main/java/com/yd/csf/feign/client/appointmentfile/ApiAppointmentFileFeignClient.java
+3
-3
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/excel/ApiExcelImportAppointmentDto.java
+58
-0
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiAppointmentFileController.java
View file @
eba11680
...
...
@@ -14,6 +14,8 @@ import com.yd.csf.feign.response.appointmentfile.ApiAppointmentImportExcelRespon
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.RequestParam
;
import
org.springframework.web.bind.annotation.RequestPart
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -108,9 +110,8 @@ public class ApiAppointmentFileController implements ApiAppointmentFileFeignClie
* @return
*/
@Override
public
Result
<
ApiAppointmentImportExcelResponse
>
appointmentImportExcel
(
MultipartFile
file
,
ApiAppointmentImportExcelRequest
request
)
{
return
apiAppointmentFileService
.
appointmentImportExcel
(
file
,
request
);
public
Result
<
ApiAppointmentImportExcelResponse
>
appointmentImportExcel
(
MultipartFile
file
,
ApiAppointmentImportExcelRequest
request
)
{
return
apiAppointmentFileService
.
appointmentImportExcel
(
file
,
request
);
}
...
...
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiAppointmentFileServiceImpl.java
View file @
eba11680
...
...
@@ -2,6 +2,7 @@ package com.yd.csf.api.service.impl;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.yd.auth.core.dto.AuthUserDto
;
import
com.yd.auth.core.utils.SecurityUtil
;
import
com.yd.common.constant.RedisConstants
;
...
...
@@ -13,6 +14,8 @@ import com.yd.common.utils.RandomStringGenerator;
import
com.yd.common.utils.RedisUtil
;
import
com.yd.csf.api.service.ApiAppointmentFileService
;
import
com.yd.csf.api.service.ApiAppointmentService
;
import
com.yd.csf.feign.dto.appointment.ApiAppointmentInfoDto
;
import
com.yd.csf.feign.dto.appointment.ApiProductPlanMainInfoDto
;
import
com.yd.csf.feign.dto.appointmentfile.ApiAppointmentFileDto
;
import
com.yd.csf.feign.dto.excel.*
;
import
com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileAddRequest
;
...
...
@@ -31,6 +34,7 @@ import com.yd.oss.feign.client.ApiExcelFeignClient;
import
com.yd.oss.feign.client.ApiPdfFeignClient
;
import
com.yd.oss.feign.enums.TemplateTypeEnum
;
import
com.yd.oss.feign.request.ApiGeneratePdfRequest
;
import
com.yd.oss.feign.request.ApiOssExcelParseRequest
;
import
com.yd.oss.feign.request.ApiOssExportAppointmentExcelRequest
;
import
com.yd.oss.feign.response.ApiGeneratePdfResponse
;
import
com.yd.oss.feign.response.ApiOssExcelParseResponse
;
...
...
@@ -332,13 +336,10 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
Result
<
Appointment
>
appointmentResult
=
apiAppointmentService
.
checkAppointmentIsExist
(
request
.
getAppointmentBizId
());
Appointment
appointment
=
appointmentResult
.
getData
();
//需要解析的excel对象
String
[]
s
=
new
String
[]{
"com.yd.csf.feign.dto.excel.ApiExcelImportAppointmentDto"
,
"com.yd.csf.feign.dto.excel.ApiExcelImportHealthDto"
};
String
s
=
"com.yd.csf.feign.dto.excel.ApiExcelImportAppointmentDto,com.yd.csf.feign.dto.excel.ApiExcelImportHealthDto"
;
//Feign调用-oss服务,通用-Excel解析(支持多sheet页解析)
Result
<
ApiOssExcelParseResponse
>
result
=
apiExcelFeignClient
.
parse
(
file
,
s
);
Result
<
ApiOssExcelParseResponse
>
result
=
apiExcelFeignClient
.
parse
(
file
,
s
);
if
(
Objects
.
isNull
(
result
.
getData
())
||
(!
Objects
.
isNull
(
result
.
getData
())
&&
Objects
.
isNull
(
result
.
getData
().
getMap
()))){
throw
new
BusinessException
(
"导入数据不能为空!"
);
...
...
@@ -346,17 +347,43 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
//Excel解析出的信息
Map
<
Integer
,
Object
>
data
=
(
Map
<
Integer
,
Object
>)
result
.
getData
().
getMap
();
// 获取第一个Sheet页的解析结果
ApiExcelImportAppointmentDto
appointmentDto
=
(
ApiExcelImportAppointmentDto
)
data
.
get
(
0
);
// 获取第二个Sheet页的解析结果
ApiExcelImportHealthDto
healthDto
=
(
ApiExcelImportHealthDto
)
data
.
get
(
1
);
//校验Excel解析的字段
ObjectMapper
objectMapper
=
new
ObjectMapper
();
//更新或者新增表数据
//更新预约主信息数据
try
{
//查询redis缓存的字典列表信息
List
<
GetDictItemListByDictTypeResponse
>
dictTypeResponses
=
redisUtil
.
getCacheObject
(
RedisConstants
.
DICT_LIST
);
// 获取第一个Sheet页的解析结果并转换为 DTO
LinkedHashMap
<
String
,
Object
>
appointmentData
=
(
LinkedHashMap
<
String
,
Object
>)
data
.
get
(
0
);
ApiExcelImportAppointmentDto
appointmentDto
=
objectMapper
.
convertValue
(
appointmentData
,
ApiExcelImportAppointmentDto
.
class
);
// 获取第二个Sheet页的解析结果并转换为 DTO
// LinkedHashMap<String, Object> healthData = (LinkedHashMap<String, Object>) data.get(1);
// ApiExcelImportHealthDto healthDto = objectMapper.convertValue(healthData, ApiExcelImportHealthDto.class);
//编辑更新预约主体信息
ApiAppointmentInfoDto
apiAppointmentInfoDto
=
new
ApiAppointmentInfoDto
();
BeanUtils
.
copyProperties
(
appointment
,
apiAppointmentInfoDto
);
apiAppointmentInfoDto
=
ApiExcelImportAppointmentDto
.
buildApiAppointmentInfoDto
(
appointmentDto
,
apiAppointmentInfoDto
,
dictTypeResponses
);
BeanUtils
.
copyProperties
(
apiAppointmentInfoDto
,
appointment
);
iAppointmentService
.
saveOrUpdate
(
appointment
);
//编辑更新产品计划主信息
//查询产品计划主信息
ProductPlan
productPlan
=
iProductPlanService
.
queryOne
(
request
.
getAppointmentBizId
(),
""
);
ApiProductPlanMainInfoDto
apiProductPlanMainInfoDto
=
new
ApiProductPlanMainInfoDto
();
if
(!
Objects
.
isNull
(
productPlan
))
{
BeanUtils
.
copyProperties
(
productPlan
,
apiProductPlanMainInfoDto
);
return
null
;
}
return
Result
.
success
();
}
catch
(
Exception
e
)
{
log
.
error
(
"Excel数据转换异常"
,
e
);
throw
new
BusinessException
(
"Excel数据格式错误,请检查模板是否正确"
);
}
}
...
...
yd-csf-feign/src/main/java/com/yd/csf/feign/client/appointmentfile/ApiAppointmentFileFeignClient.java
View file @
eba11680
...
...
@@ -81,8 +81,8 @@ public interface ApiAppointmentFileFeignClient {
* Excel导入-预约信息
* @return
*/
@PostMapping
(
value
=
"/excel/import/appointment"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
@PostMapping
(
value
=
"/excel/import/appointment"
)
Result
<
ApiAppointmentImportExcelResponse
>
appointmentImportExcel
(
@RequestPar
t
(
"file"
)
MultipartFile
file
,
@RequestPart
(
"request"
)
ApiAppointmentImportExcelRequest
request
);
@RequestPar
am
(
"file"
)
MultipartFile
file
,
ApiAppointmentImportExcelRequest
request
);
}
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/excel/ApiExcelImportAppointmentDto.java
View file @
eba11680
package
com
.
yd
.
csf
.
feign
.
dto
.
excel
;
import
com.yd.common.enums.DictTypeEnum
;
import
com.yd.common.utils.DateUtil
;
import
com.yd.common.utils.StringUtil
;
import
com.yd.csf.feign.dto.appointment.ApiAppointmentInfoDto
;
import
com.yd.csf.feign.dto.appointment.ApiProductPlanMainInfoDto
;
import
com.yd.oss.feign.annotation.ExcelCollection
;
import
com.yd.oss.feign.annotation.ExcelField
;
import
com.yd.oss.feign.annotation.ExcelSheet
;
import
com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.List
;
...
...
@@ -467,4 +473,56 @@ public class ApiExcelImportAppointmentDto {
*/
@ExcelCollection
(
type
=
ApiExcelImportAdditionalDto
.
class
,
startRow
=
20
)
private
List
<
ApiExcelImportAdditionalDto
>
additionalDtoList
;
/**
* 构造预约主体信息
* @param dto
* @param infoDto
* @return
*/
public
static
ApiAppointmentInfoDto
buildApiAppointmentInfoDto
(
ApiExcelImportAppointmentDto
dto
,
ApiAppointmentInfoDto
infoDto
,
List
<
GetDictItemListByDictTypeResponse
>
dictTypeResponses
)
{
//到港时间
infoDto
.
setArrivalTime
(
DateUtil
.
getLocalDateTime
(
dto
.
getHkArrivalTime
()));
//业务编号->介绍人编号 TODO
infoDto
.
setBusinessNo
(
dto
.
getMainReferrerId
());
//确定预约时间->预约日期 (西元 年/月/日) + 預約時間
infoDto
.
setConfirmAppointmentTime
(
DateUtil
.
getLocalDateTime
(
dto
.
getMainIntentionAppointmentDate
()
+
" "
+
dto
.
getMainIntentionAppointmentTime
()));
//离港时间->离港(澳)日期及时间(离港时间)(预约信息主表)
infoDto
.
setDepartureTime
(
DateUtil
.
getLocalDateTime
(
dto
.
getHkDepartureTime
()));
//客户在港期间联络电话->客户在港期间联络电话(预约信息主表)区号+号码
infoDto
.
setHkMobileCode
(
StringUtil
.
getSplitStr
(
dto
.
getHkHkMobile
(),
"-"
,
0
));
infoDto
.
setHkMobile
(
StringUtil
.
getSplitStr
(
dto
.
getHkHkMobile
(),
"-"
,
1
));
//是否体检
infoDto
.
setIsTj
(
Integer
.
valueOf
(
GetDictItemListByDictTypeResponse
.
getItemValue
(
dictTypeResponses
,
DictTypeEnum
.
SYS_NO_YES
.
getItemValue
(),
dto
.
getMainIsTj
())));
//会面地点
infoDto
.
setMeetingPoint
(
dto
.
getHkMeetingPoint
());
//转保声明选项 TODO
// infoDto.setPolicyTransfer();
return
infoDto
;
}
/**
* 构造产品计划主信息
* @param dto
* @param infoDto
* @return
*/
public
static
ApiProductPlanMainInfoDto
buildApiAppointmentInfoDto
(
ApiExcelImportAppointmentDto
dto
,
ApiProductPlanMainInfoDto
infoDto
,
List
<
GetDictItemListByDictTypeResponse
>
dictTypeResponses
)
{
//保险公司名称
infoDto
.
setCompanyName
(
dto
.
getPlanCompanyName
());
//货币(字典)
infoDto
.
setCurrency
(
dto
.
getPlanCurrency
());
//预付额 TODO
// infoDto.setDeductibles();
//红利分配方式(字典)
infoDto
.
setDividendDistributionMethod
(
GetDictItemListByDictTypeResponse
.
getItemValue
(
dictTypeResponses
,
DictTypeEnum
.
CSF_AP_DIVIDEND
.
getItemValue
(),
dto
.
getPlanDividendDistributionMethod
()));
return
infoDto
;
}
}
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