Commit 33e77ec2 by zhangxingmin

Merge remote-tracking branch 'origin/test' into prod

parents aed6cb64 d75b431a
......@@ -6,7 +6,7 @@ LABEL maintainer="zxm<2060197959@qq.com>"
RUN mkdir -p /home/app
# 拷贝项目jar - 使用可执行的 fat JAR
COPY target/yd-csf-api-1.0-SNAPSHOT-exec.jar /home/app/yd-csf-api.jar
# 执行命令启动jar
ENTRYPOINT ["java", "-jar", "/home/app/yd-csf-api.jar"]
# 执行命令启动jar,并设置JVM内存参数
ENTRYPOINT ["java", "-Xmx256m", "-Xms128m", "-jar", "/home/app/yd-csf-api.jar"]
# 暴露端口
EXPOSE 9202
......@@ -97,6 +97,12 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 如果使用pinyin4j进行拼音转换 -->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
</dependency>
</dependencies>
<build>
......
......@@ -4,10 +4,17 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication(scanBasePackages = "com.yd")
@MapperScan("com.yd.**.dao")
@EnableFeignClients(basePackages = "com.yd")
@ComponentScan(basePackages = {
"com.yd.auth.core" // 包含认证模块的包路径
})
public class CsfApiApplication {
public static void main(String[] args) {
......
package com.yd.csf.api.async;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class ApiExpectedFortuneAsyncService {
}
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiAppointmentService;
import com.yd.csf.feign.client.appointment.ApiAppointmentFeignClient;
import com.yd.csf.feign.dto.appointment.ApiAppointmentInfoDto;
import com.yd.csf.feign.dto.appointment.ApiInsurantInfoDto;
import com.yd.csf.feign.request.appointment.*;
import com.yd.csf.feign.response.appointment.ApiAppointmentAddResponse;
import com.yd.csf.feign.response.appointment.ApiAppointmentDetailResponse;
import com.yd.csf.feign.response.appointment.ApiAppointmentPageResponse;
import com.yd.csf.feign.response.appointment.*;
import com.yd.csf.feign.valid.GroupValid;
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.ConstraintViolation;
import javax.validation.Validator;
import javax.validation.constraints.NotBlank;
import java.util.Objects;
import java.util.Set;
/**
* 预约信息
......@@ -30,6 +34,11 @@ public class ApiAppointmentController implements ApiAppointmentFeignClient {
@Autowired
private ApiAppointmentService apiAppointmentService;
private final Validator validator;
public ApiAppointmentController(Validator validator) {
this.validator = validator;
}
/**
* 预约分页查询
* @param request
......@@ -67,6 +76,10 @@ public class ApiAppointmentController implements ApiAppointmentFeignClient {
*/
@Override
public Result<ApiAppointmentAddResponse> add(ApiAppointmentAddRequest request) {
//手动校验受保人信息(因为它没有 @Valid 注解)
ApiInsurantInfoDto insurantInfo = request.getApiInsurantInfoDto();
validateInsurantInfo(insurantInfo);
return apiAppointmentService.add(request);
}
......@@ -87,10 +100,24 @@ public class ApiAppointmentController implements ApiAppointmentFeignClient {
*/
@Override
public Result edit(ApiAppointmentEditRequest request) {
//手动校验受保人信息(因为它没有 @Valid 注解)
ApiInsurantInfoDto insurantInfo = request.getApiInsurantInfoDto();
validateInsurantInfo(insurantInfo);
return apiAppointmentService.edit(request);
}
/**
* 编辑预约暂存 (聚合信息编辑预约暂存)
* @param request
* @return
*/
@Override
public Result editStorage(ApiAppointmentEditStorageRequest request) {
return apiAppointmentService.editStorage(request);
}
/**
* 确定预约时间提交 (流程流转到新单跟进)
* @param request
* @return
......@@ -161,6 +188,16 @@ public class ApiAppointmentController implements ApiAppointmentFeignClient {
}
/**
* 编辑预约状态
* @param request
* @return
*/
@Override
public Result editStatus(ApiAppointmentEditStatusRequest request) {
return apiAppointmentService.editStatus(request);
}
/**
* 删除预约信息
* @param appointmentBizId
* @return
......@@ -170,5 +207,54 @@ public class ApiAppointmentController implements ApiAppointmentFeignClient {
return apiAppointmentService.del(appointmentBizId);
}
/**
* 历史记录 - 签约信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiAppointmentLogPageResponse>> logPage(ApiAppointmentLogPageRequest request) {
return apiAppointmentService.logPage(request);
}
/**
* 历史记录 - 签约信息 - 详情
* @param appointmentLogBizId
* @return
*/
@Override
public Result<ApiAppointmentLogDetailResponse> logDetail(String appointmentLogBizId) {
return apiAppointmentService.logDetail(appointmentLogBizId);
}
/**
* 手动校验受保人信息
* @param insurantInfo
*/
private void validateInsurantInfo(ApiInsurantInfoDto insurantInfo) {
if (Objects.isNull(insurantInfo)) {
throw new BusinessException("受保人信息不能为空");
}
// 根据与投保人关系选择校验组
Class<?>[] groups;
if (insurantInfo.isSelf()) {
// 本人关系:只校验 Always 组
groups = new Class<?>[]{GroupValid.Always.class};
} else {
// 非本人关系:校验 Always 和 NotSelf 组
groups = new Class<?>[]{GroupValid.Always.class, GroupValid.NotSelf.class};
}
// 执行手动校验
Set<ConstraintViolation<ApiInsurantInfoDto>> violations =
validator.validate(insurantInfo, groups);
// 如果校验失败,抛出业务异常
if (!violations.isEmpty()) {
String errorMessage = violations.iterator().next().getMessage();
throw new BusinessException(errorMessage);
}
}
}
package com.yd.csf.api.controller;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiCsfCommonService;
import com.yd.csf.feign.client.common.ApiCsfCommonFeignClient;
import com.yd.csf.feign.request.common.ApiCsfCalculateRequest;
import com.yd.csf.feign.response.common.ApiCsfCalculateResponse;
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-18
*/
@RestController
@RequestMapping("/common")
@Validated
public class ApiCsfCommonController implements ApiCsfCommonFeignClient {
@Autowired
private ApiCsfCommonService apiCsfCommonService;
/**
* 计算-字段值
* @param request
* @return
*/
@Override
public Result<List<ApiCsfCalculateResponse>> calculate(ApiCsfCalculateRequest request) {
return apiCsfCommonService.calculate(request);
}
}
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.csf.service.common.ErrorCode;
......@@ -10,9 +11,7 @@ import com.yd.csf.service.dto.CustomerUpdateRequest;
import com.yd.csf.service.model.Customer;
import com.yd.csf.service.service.CustomerService;
import com.yd.csf.service.vo.CustomerVO;
import com.yd.user.feign.client.sysuser.ApiSysUserFeignClient;
import com.yd.csf.service.service.CustomerExpandService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.transaction.annotation.Transactional;
......@@ -105,13 +104,15 @@ public class ApiCustomerController {
@Operation(summary = "根据 customerBizId 获取客户详情")
public Result<CustomerVO> getCustomerVOByCustomerBizId(@RequestParam("customerBizId") String customerBizId, HttpServletRequest request) {
if (customerBizId == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "customerBizId 不能为空");
}
// 查询数据库
Customer customer = customerService.getByCustomerBizId(customerBizId);
if (customer == null) {
return Result.fail(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
return Result.fail(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage());
}
// 查询受供养人数量
customerService.queryDependentsNum(customer);
// 获取封装类
return Result.success(customerService.getCustomerVO(customer));
......
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.constant.RedisConstants;
import com.yd.common.result.Result;
import com.yd.common.utils.RedisUtil;
import com.yd.csf.api.dto.ApiExpectedFortuneLogDto;
import com.yd.csf.api.dto.ApiExpectedFortunePageResponseVO;
import com.yd.csf.api.dto.PayableReportResponse;
import com.yd.csf.api.service.ApiExpectedFortuneLogService;
import com.yd.csf.api.service.ApiExpectedFortuneService;
import com.yd.csf.feign.client.expectedfortune.ApiExpectedFortuneFeignClient;
import com.yd.csf.feign.request.expectedfortune.*;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse;
import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
/**
* 预计发佣信息
*
* @author zxm
* @since 2025-11-17
*/
@RestController
@RequestMapping("/expectedFortune")
@Tag(name = "预计发佣接口")
@Validated
public class ApiExpectedFortuneController implements ApiExpectedFortuneFeignClient {
@Autowired
private ApiExpectedFortuneService apiExpectedFortuneService;
@Autowired
private RedisUtil redisUtil;
@Autowired
private ApiExpectedFortuneLogService apiExpectedFortuneLogService;
/**
* 生成预计发佣
* @param request
* @return
*/
@Override
public Result<ApiGenerateExpectedFortuneResponse> generate(ApiGenerateExpectedFortuneRequest request) {
try {
Result<ApiGenerateExpectedFortuneResponse> result = apiExpectedFortuneService.generate(request);
//保存预计发佣日志记录
apiExpectedFortuneLogService.saveExpectedFortuneLog(ApiExpectedFortuneLogDto.builder()
.errorMsg(result.getMsg())
.policyNo(request.getPolicyNo())
.status(2)
.build());
return result;
}catch (Exception e) {
//抛出异常,销毁redis缓存
redisUtil.deleteObject(RedisConstants.EXPECTED_FORTUNE + request.getPolicyNo());
//保存预计发佣日志记录
apiExpectedFortuneLogService.saveExpectedFortuneLog(ApiExpectedFortuneLogDto.builder()
.errorMsg(e.getMessage())
.policyNo(request.getPolicyNo())
.status(1)
.build());
return Result.fail(e.getMessage());
}
}
/**
* 分页查询 - 预计发佣
* @param request
* @return
*/
@Override
@Operation(summary = "分页查询 - 预计发佣")
public Result<IPage<ApiExpectedFortunePageResponse>> page(ApiExpectedFortunePageRequest request) {
return apiExpectedFortuneService.page(request);
}
/**
* 分页查询 - 应付款管理列表(预计发佣列表)
* @param request
* @return
*/
@PostMapping("/list")
@Operation(summary = "分页查询 - 应付款管理列表(预计发佣列表)")
public Result<ApiExpectedFortunePageResponseVO> list(@RequestBody ApiExpectedFortunePageRequest request) {
return apiExpectedFortuneService.list(request);
}
/**
* 应付款报表
* @param request
* @return
*/
@PostMapping("/payable_report")
@Operation(summary = "应付款报表")
public Result<PayableReportResponse> payableReport(@RequestBody ApiExpectedFortunePageRequest request) {
return apiExpectedFortuneService.payableReport(request);
}
/**
* 计算统计数据 预计发佣金额 HKD、已出账金额 HKD、待出账金额 HKD、总保单数、总保费 HKD
*/
@PostMapping("/statistics")
@Operation(summary = "计算统计数据 预计发佣金额 HKD、已出账金额 HKD、待出账金额 HKD、总保单数、总保费 HKD")
public Result<ExpectedFortuneStatisticsVO> getStatistics(@RequestBody ExpectedFortuneStatisticsRequest commissionExpectedStatisticsRequest) {
if (commissionExpectedStatisticsRequest == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
}
return Result.success(apiExpectedFortuneService.getStatistics(commissionExpectedStatisticsRequest.getExpectedFortuneIds()));
}
/**
* 新增应付账款,可批量
*
* @param fortuneAddRequestList
* @return
*/
@PostMapping("/add")
@Operation(summary = "新增应付账款,可批量")
public Result<Boolean> add(@RequestBody List<ExpectedFortuneAddRequest> fortuneAddRequestList) {
if (fortuneAddRequestList == null || CollectionUtils.isEmpty(fortuneAddRequestList)) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "新增应付账款列表不能为空");
}
return Result.success(apiExpectedFortuneService.add(fortuneAddRequestList));
}
/**
* 修改出账
*
* @param request
* @return
*/
@PostMapping("/update")
@Operation(summary = "修改出账信息")
public Result<Boolean> update(@RequestBody ExpectedFortuneUpdateRequest request) {
if (request == null || request.getExpectedFortuneBizId() == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
}
return Result.success(apiExpectedFortuneService.update(request));
}
/**
* 应付款导出
*
* @param request
* @return
*/
@PostMapping("/export")
@Operation(summary = "应付款导出")
public void exportExpectedFortune(@RequestBody ApiExpectedFortunePageRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
if (request == null) {
throw new RuntimeException("查询参数不能为空");
}
// 设置响应头
String fileName = URLEncoder.encode("应付款管理数据", "UTF-8").replaceAll("\\+", "%20");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
apiExpectedFortuneService.exportExpectedFortune(request, response);
}
/**
* 查询保单是否生成过预计发佣
* @param policyNo
* @return
*/
@Override
public Result<Boolean> isGenerate(String policyNo) {
return apiExpectedFortuneService.isGenerate(policyNo);
}
/**
* 根据保单号批量删除预计发佣数据
* @param policyNo
* @return
*/
@Override
public Result batchDelByPolicyNo(String policyNo) {
return apiExpectedFortuneService.batchDelByPolicyNo(policyNo);
}
}
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiExpectedFortuneLogService;
import com.yd.csf.feign.client.expectedfortunelog.ApiExpectedFortuneLogFeignClient;
import com.yd.csf.feign.request.expectedfortunelog.ApiExpectedFortuneLogPageRequest;
import com.yd.csf.feign.response.expectedfortunelog.ApiExpectedFortuneLogPageResponse;
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-11-20
*/
@RestController
@RequestMapping("/expectedFortuneLog")
@Validated
public class ApiExpectedFortuneLogController implements ApiExpectedFortuneLogFeignClient {
@Autowired
private ApiExpectedFortuneLogService apiExpectedFortuneLogService;
/**
* 分页查询 - 生成预计发佣日志记录
* @param request
* @return
*/
@Override
public Result<IPage<ApiExpectedFortuneLogPageResponse>> page(ApiExpectedFortuneLogPageRequest request) {
return apiExpectedFortuneLogService.page(request);
}
}
......@@ -8,6 +8,7 @@ import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiAppointmentService;
import com.yd.csf.feign.dto.appointment.ApiAppointmentInfoDto;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.FnaStatusEnum;
import com.yd.csf.service.model.Fna;
import com.yd.csf.service.service.FnaService;
import com.yd.csf.service.vo.FnaVO;
......@@ -147,4 +148,40 @@ public class ApiFnaController {
}
return Result.success(fnaService.copyFna(fnaCopyRequest));
}
/**
* 更新FNA状态(手动修改状态,例如改为"已作废")
*
* @param fnaBizId FNA业务ID
* @param status 目标状态
* @return
*/
@PostMapping("/update/status")
@Operation(summary = "更新FNA状态")
public Result<Boolean> updateFnaStatus(
@RequestParam("fnaBizId") String fnaBizId,
@RequestParam("status") String status) {
if (StringUtils.isBlank(fnaBizId) || StringUtils.isBlank(status)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "fnaBizId和status不能为空");
}
// 验证状态是否有效
boolean isValidStatus = false;
for (FnaStatusEnum statusEnum : FnaStatusEnum.values()) {
if (statusEnum.getItemValue().equals(status)) {
isValidStatus = true;
break;
}
}
if (!isValidStatus) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "无效的状态值");
}
int rows = fnaService.updateFnaStatus(fnaBizId, status);
if (rows > 0) {
return Result.success(true);
} else {
return Result.fail(ResultCode.NULL_ERROR.getCode(), "FNA记录不存在");
}
}
}
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
......@@ -9,14 +10,18 @@ import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.dto.FnaFormAddRequest;
import com.yd.csf.service.dto.FnaFormUpdateRequest;
import com.yd.csf.service.enums.FnaStatusEnum;
import com.yd.csf.service.model.Fna;
import com.yd.csf.service.model.FnaForm;
import com.yd.csf.service.service.FnaFormService;
import com.yd.csf.service.service.FnaService;
import com.yd.csf.service.vo.FnaFormVO;
import com.yd.user.feign.client.sysuser.ApiSysUserFeignClient;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
......@@ -41,6 +46,9 @@ public class ApiFnaFormController {
@Resource
private ApiSysUserFeignClient apiSysUserFeignClient;
@Resource
private FnaService fnaService;
/**
* 创建 Fna表单
*
......@@ -49,6 +57,7 @@ public class ApiFnaFormController {
* @return
*/
@PostMapping("/add")
@Transactional(rollbackFor = Exception.class)
public Result<Map<String, Object>> addFnaForm(@RequestBody FnaFormAddRequest fnaFormAddRequest, HttpServletRequest request) {
if (fnaFormAddRequest == null) {
......@@ -58,13 +67,16 @@ public class ApiFnaFormController {
if (StringUtils.isBlank(saveType)) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "保存方式必传");
}
// 校验
fnaFormService.validFnaFormAdd(fnaFormAddRequest.getPersonalData(), saveType);
// 转换为数据库实体
FnaForm fnaForm = fnaFormService.getFnaForm(fnaFormAddRequest);
// 表单状态
fnaForm.setFnaFormStatus("save".equals(saveType)? "1" : "0");
// Fna 状态
fnaService.lambdaUpdate()
.set(Fna::getStatus, "save".equals(saveType)? FnaStatusEnum.APPOINTMENT_FILLING.getItemValue() : FnaStatusEnum.FNA_FILLING.getItemValue())
.eq(Fna::getFnaFormBizId, fnaForm.getFnaFormBizId())
.update();
// 获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
......@@ -123,6 +135,7 @@ public class ApiFnaFormController {
*/
@PostMapping("/update")
@Operation(summary = "更新 Fna表单")
@Transactional(rollbackFor = Exception.class)
public Result<Boolean> updateFnaForm(@RequestBody FnaFormUpdateRequest fnaUpdateRequest) {
if (fnaUpdateRequest == null || StringUtils.isBlank(fnaUpdateRequest.getFnaFormBizId())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), ResultCode.PARAMS_ERROR.getMessage());
......@@ -137,8 +150,7 @@ public class ApiFnaFormController {
if (oldFna == null) {
return Result.fail(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage());
}
// 校验
fnaFormService.validFnaFormAdd(fnaUpdateRequest.getPersonalData(), saveType);
// 转换为数据库实体
FnaForm fnaForm = fnaFormService.getFnaForm(fnaUpdateRequest);
BeanUtils.copyProperties(fnaForm, oldFna, "id", "fnaFormBizId", "userBizId", "agentBizId", "customerBizId", "creatorId", "updaterId");
......@@ -149,6 +161,13 @@ public class ApiFnaFormController {
if (!result) {
return Result.fail(ResultCode.FAIL.getCode(), ResultCode.FAIL.getMessage());
}
// 如果是保存(非暂存),则更新关联的FNA状态为"预约资料填写"
fnaService.lambdaUpdate()
.set(Fna::getStatus, "save".equals(saveType)? FnaStatusEnum.APPOINTMENT_FILLING.getItemValue() : FnaStatusEnum.FNA_FILLING.getItemValue())
.eq(Fna::getFnaFormBizId, fnaForm.getFnaFormBizId())
.update();
return Result.success(true);
}
......
......@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* policy接口
......@@ -211,4 +212,23 @@ public class ApiPolicyController {
return Result.success(commissionExpectedService.getCommissionExpectedVOPage(commissionExpectedPage));
}
/**
* 获取保单产品信息
*
* @param productLaunchBizId
* @return
*/
@GetMapping("/get_policy_product_info")
@Operation(summary = "获取保单产品信息")
public Result<List<PolicyProductInfo>> getPolicyProductInfo(@RequestParam("productLaunchBizId") List<String> productLaunchBizId) {
if (productLaunchBizId == null) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), ResultCode.PARAMS_ERROR.getMessage());
}
// 查询
List<PolicyProductInfo> productLaunchPageResponse = policyService.getPolicyProductInfo(productLaunchBizId);
// 获取封装类
return Result.success(productLaunchPageResponse);
}
}
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiPolicyReceiptService;
import com.yd.csf.feign.client.policyreceipt.ApiPolicyReceiptFeignClient;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptAddRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptEditRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptPageRequest;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptDetailResponse;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptPageResponse;
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-25
*/
@RestController
@RequestMapping("/policyReceipt")
@Validated
public class ApiPolicyReceiptController implements ApiPolicyReceiptFeignClient {
@Autowired
private ApiPolicyReceiptService apiPolicyReceiptService;
/**
* 分页列表查询-保单回执信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiPolicyReceiptPageResponse>> page(ApiPolicyReceiptPageRequest request) {
return apiPolicyReceiptService.page(request);
}
/**
* 详情-保单回执信息
* @param policyReceiptBizId 保单回执表唯一业务ID
* @return
*/
@Override
public Result<ApiPolicyReceiptDetailResponse> detail(String policyReceiptBizId) {
return apiPolicyReceiptService.detail(policyReceiptBizId);
}
/**
* 添加-保单回执信息
* @param request
* @return
*/
@Override
public Result add(ApiPolicyReceiptAddRequest request) {
return apiPolicyReceiptService.add(request);
}
/**
* 编辑-保单回执信息
* @param request
* @return
*/
@Override
public Result edit(ApiPolicyReceiptEditRequest request) {
return apiPolicyReceiptService.edit(request);
}
/**
* 编辑-回执状态
* @param policyReceiptBizId 保单回执信息表唯一标识(业务ID)
* @param receiptStatus 回执状态(CONFIRMED-已确认 UNCONFIRMED-未确认)
* @return
*/
@Override
public Result editReceiptStatus(String policyReceiptBizId, String receiptStatus) {
return apiPolicyReceiptService.editReceiptStatus(policyReceiptBizId,receiptStatus);
}
}
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiPremiumReconciliationService;
import com.yd.csf.feign.client.premiumreconciliation.ApiPremiumReconciliationFeignClient;
import com.yd.csf.feign.dto.premiumreconciliation.ApiPremiumReconciliationDto;
import com.yd.csf.feign.request.premiumreconciliation.ApiCalculateRemainingUnpaidAmountRequest;
import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationAddRequest;
import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationPageRequest;
import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationResultEditRequest;
import com.yd.csf.feign.response.premiumreconciliation.ApiCalculateRemainingUnpaidAmountResponse;
import com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationDetailResponse;
import com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationPageResponse;
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;
/**
* 保费对账记录信息
*
* @author zxm
* @since 2025-12-26
*/
@RestController
@RequestMapping("/premiumReconciliation")
@Validated
public class ApiPremiumReconciliationController implements ApiPremiumReconciliationFeignClient {
@Autowired
private ApiPremiumReconciliationService apiPremiumReconciliationService;
/**
* 分页列表查询-保费对账记录信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiPremiumReconciliationPageResponse>> page(ApiPremiumReconciliationPageRequest request) {
return apiPremiumReconciliationService.page(request);
}
/**
* 添加-保费对账记录信息(聚合信息添加)
* @param request
* @return
*/
@Override
public Result add(ApiPremiumReconciliationAddRequest request) {
return apiPremiumReconciliationService.add(request);
}
/**
* 编辑-单个保费对账记录信息
* @param request
* @return
*/
@Override
public Result edit(ApiPremiumReconciliationDto request) {
return apiPremiumReconciliationService.edit(request);
}
/**
* 详情-保费对账记录信息
* @param premiumReconciliationBizId 保费对账记录表唯一业务ID
* @return
*/
@Override
public Result<ApiPremiumReconciliationDetailResponse> detail(String premiumReconciliationBizId) {
return apiPremiumReconciliationService.detail(premiumReconciliationBizId);
}
/**
* 计算待付金额-保费对账记录信息
* @param request
* @return
*/
@Override
public Result<ApiCalculateRemainingUnpaidAmountResponse> calculateRemainingUnpaidAmount(ApiCalculateRemainingUnpaidAmountRequest request) {
return apiPremiumReconciliationService.calculateRemainingUnpaidAmount(request);
}
/**
* 设置认定结果-保费对账记录信息
* @param request
* @return
*/
@Override
public Result editResult(ApiPremiumReconciliationResultEditRequest request) {
return apiPremiumReconciliationService.editResult(request);
}
/**
* 校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了)
* @param policyNo
* @return
*/
@Override
public Result<Boolean> checkReconciliationComplete(String policyNo) {
return apiPremiumReconciliationService.checkReconciliationComplete(policyNo);
}
}
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiPremiumRemittanceService;
import com.yd.csf.feign.client.premiumremittance.ApiPremiumRemittanceFeignClient;
import com.yd.csf.feign.dto.premiumremittance.ApiPremiumRemittanceDto;
import com.yd.csf.feign.request.premiumremittance.ApiPremiumRemittancePageRequest;
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-26
*/
@RestController
@RequestMapping("/premiumRemittance")
@Validated
public class ApiPremiumRemittanceController implements ApiPremiumRemittanceFeignClient {
@Autowired
private ApiPremiumRemittanceService apiPremiumRemittanceService;
/**
* 分页列表查询-保费对账汇款记录信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiPremiumRemittanceDto>> page(ApiPremiumRemittancePageRequest request) {
return apiPremiumRemittanceService.page(request);
}
/**
* 添加-单个保费对账汇款记录信息
* @param request
* @return
*/
@Override
public Result add(ApiPremiumRemittanceDto request) {
return apiPremiumRemittanceService.add(request);
}
/**
* 编辑-单个保费对账汇款记录信息
* @param request
* @return
*/
@Override
public Result edit(ApiPremiumRemittanceDto request) {
return apiPremiumRemittanceService.edit(request);
}
/**
* 详情-保费对账汇款记录信息
* @param premiumRemittanceBizId 保费对账-汇款记录表唯一业务ID
* @return
*/
@Override
public Result<ApiPremiumRemittanceDto> detail(String premiumRemittanceBizId) {
return apiPremiumRemittanceService.detail(premiumRemittanceBizId);
}
/**
* 删除-单个保费对账汇款记录信息
* @param premiumRemittanceBizId
* @return
*/
@Override
public Result del(String premiumRemittanceBizId) {
return apiPremiumRemittanceService.del(premiumRemittanceBizId);
}
}
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiPremiumRemittanceFileService;
import com.yd.csf.feign.client.premiumremittancefile.ApiPremiumRemittanceFileFeignClient;
import com.yd.csf.feign.dto.premiumremittancefile.ApiPremiumRemittanceFileDto;
import com.yd.csf.feign.request.premiumremittancefile.ApiPremiumRemittanceFilePageRequest;
import com.yd.csf.feign.response.premiumremittancefile.ApiPremiumRemittanceFilePageResponse;
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-26
*/
@RestController
@RequestMapping("/premiumRemittanceFile")
@Validated
public class ApiPremiumRemittanceFileController implements ApiPremiumRemittanceFileFeignClient {
@Autowired
private ApiPremiumRemittanceFileService apiPremiumRemittanceFileService;
/**
* 分页列表查询-保费汇款记录附件信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiPremiumRemittanceFilePageResponse>> page(ApiPremiumRemittanceFilePageRequest request) {
return apiPremiumRemittanceFileService.page(request);
}
/**
* 添加-保费汇款记录附件信息
* @param request
* @return
*/
@Override
public Result add(ApiPremiumRemittanceFileDto request) {
return apiPremiumRemittanceFileService.add(request);
}
/**
* 编辑-保费汇款记录附件信息
* @param request
* @return
*/
@Override
public Result edit(ApiPremiumRemittanceFileDto request) {
return apiPremiumRemittanceFileService.edit(request);
}
/**
* 删除-保费汇款记录附件信息
* @param premiumRemittanceFileBizId
* @return
*/
@Override
public Result del(String premiumRemittanceFileBizId) {
return apiPremiumRemittanceFileService.del(premiumRemittanceFileBizId);
}
}
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiTeamService;
import com.yd.csf.feign.client.team.ApiTeamFeignClient;
import com.yd.csf.feign.request.team.ApiTeamListRequest;
import com.yd.csf.feign.request.team.ApiTeamPageRequest;
import com.yd.csf.feign.response.team.ApiTeamDetailResponse;
import com.yd.csf.feign.response.team.ApiTeamPageResponse;
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-10-15
*/
@RestController
@RequestMapping("/team")
@Validated
public class ApiTeamController implements ApiTeamFeignClient {
@Autowired
private ApiTeamService apiTeamService;
/**
* 分页列表查询-团队信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiTeamPageResponse>> page(ApiTeamPageRequest request) {
return apiTeamService.page(request);
}
/**
* 列表查询-团队信息
* @param request
* @return
*/
@Override
public Result<List<ApiTeamDetailResponse>> list(ApiTeamListRequest request) {
return apiTeamService.list(request);
}
}
......@@ -5,14 +5,14 @@ import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 团队表 前端控制器
* 预约信息日志表(快照表) 前端控制器
* </p>
*
* @author zxm
* @since 2025-10-15
* @since 2025-12-15
*/
@RestController
@RequestMapping("/team")
public class TeamController {
@RequestMapping("/appointmentLog")
public class AppointmentLogController {
}
package com.yd.csf.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 预约-转介人信息表 前端控制器
* </p>
*
* @author zxm
* @since 2025-12-15
*/
@RestController
@RequestMapping("/appointmentReferrer")
public class AppointmentReferrerController {
}
package com.yd.csf.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 预约-转介人信息日志表(快照表) 前端控制器
* </p>
*
* @author zxm
* @since 2025-12-15
*/
@RestController
@RequestMapping("/appointmentReferrerLog")
public class AppointmentReferrerLogController {
}
package com.yd.csf.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 预约-签单员信息表 前端控制器
* </p>
*
* @author zxm
* @since 2025-12-15
*/
@RestController
@RequestMapping("/appointmentUserSign")
public class AppointmentUserSignController {
}
package com.yd.csf.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 预约-签单员信息日志表(快照表) 前端控制器
* </p>
*
* @author zxm
* @since 2025-12-15
*/
@RestController
@RequestMapping("/appointmentUserSignLog")
public class AppointmentUserSignLogController {
}
package com.yd.csf.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 税务信息表 前端控制器
* </p>
*
* @author zxm
* @since 2025-12-17
*/
@RestController
@RequestMapping("/taxation")
public class TaxationController {
}
package com.yd.csf.api.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 生成预计发佣日志DTO
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ApiExpectedFortuneLogDto {
/**
* 保单号
*/
private String policyNo;
/**
* 错误信息
*/
private String errorMsg;
/**
* 状态: 0-成功, 1-失败, 2-进行中
*/
private Integer status;
}
package com.yd.csf.api.dto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class ApiExpectedFortunePageResponseVO {
@Schema(description = "预计出账统计信息")
private ExpectedFortuneStatisticsVO statisticsVO;
@Schema(description = "预计出账分页列表")
private IPage<ApiExpectedFortunePageResponse> page;
}
package com.yd.csf.api.dto;
import cn.hutool.core.convert.Convert;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yd.common.enums.CommonEnum;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.enums.CommissionStatusEnum;
import com.yd.csf.service.enums.CurrencyEnum;
import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.CommissionExpected;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
@Data
public class CommissionExcelDTO {
@ExcelProperty("应收账款编号")
private String receivableNo;
@ExcelProperty("保单号")
private String policyNo;
@ExcelProperty("对账公司")
private String reconciliationCompany;
@ExcelProperty("保费")
private String premium;
@ExcelProperty("当前来佣期数")
private Integer commissionPeriod;
......@@ -35,26 +40,87 @@ public class CommissionExcelDTO {
@ExcelProperty("来佣币种")
private String currency;
@ExcelProperty("结算汇率")
private String exchangeRate;
@ExcelProperty("来佣日期")
private Date commissionDate;
@ExcelProperty("备注")
private String remark;
@ExcelProperty("应收单类型")
private String commissionBizType;
@ExcelProperty("关联保单号")
private String policyNo2;
@ExcelProperty("佣金期数")
private Integer commissionPeriod2;
@ExcelProperty("入账日(实)")
private Date commissionDate2;
@ExcelProperty("入账金额")
private BigDecimal amount2;
@ExcelProperty("入账币种")
private String currency2;
@ExcelProperty("入账项目")
private String commissionName2;
@ExcelProperty("结算汇率(实)")
private BigDecimal exchangeRate2;
@ExcelProperty("对账公司")
private String reconciliationCompany2;
/**
* 数据转换
*/
public static Commission convertToEntityNew(CommissionExcelDTO data, String loginUserId) {
Commission entity = new Commission();
// 字段映射
String commissionBizType = data.getCommissionBizType();
if (StringUtils.isNotBlank(commissionBizType)) {
entity.setCommissionBizType("R".equals(commissionBizType) || "关联保单应收单".equalsIgnoreCase(commissionBizType) ? "R" : "U");
}
entity.setPolicyNo("U".equals(entity.getCommissionBizType()) ? null : data.getPolicyNo2());
entity.setCommissionPeriod(data.getCommissionPeriod2());
entity.setCommissionName(data.getCommissionName2());
entity.setAmount(data.getAmount2());
entity.setCurrency(CurrencyEnum.getEnumByItemLabel(data.getCurrency2()));
entity.setExchangeRate(data.getExchangeRate2());
entity.setCommissionDate(data.getCommissionDate2());
entity.setReconciliationCompany(data.getReconciliationCompany2());
entity.setRemark(data.getRemark());
entity.setStatus(null);
entity.setCreatorId(loginUserId);
entity.setUpdaterId(loginUserId);
entity.setCreateTime(new Date());
entity.setUpdateTime(new Date());
return entity;
}
/**
* 数据转换
*/
public static Commission convertToEntity(CommissionExcelDTO data, String loginUserId) {
Commission entity = new Commission();
// 字段映射
entity.setReceivableNo(data.getReceivableNo());
entity.setPolicyNo(data.getPolicyNo());
entity.setPremium(data.getPremium());
entity.setCommissionBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode()));
entity.setReconciliationCompany(data.getReconciliationCompany());
entity.setReconciliationCompany(data.getReconciliationCompany2());
entity.setCommissionPeriod(data.getCommissionPeriod());
entity.setTotalPeriod(data.getTotalPeriod());
entity.setCommissionName(data.getCommissionName());
entity.setAmount(data.getAmount());
entity.setCurrency(data.getCurrency());
entity.setExchangeRate(Convert.toBigDecimal(data.getExchangeRate()));
entity.setCommissionDate(data.getCommissionDate());
entity.setRemark(data.getRemark());
entity.setStatus(null);
......@@ -77,12 +143,13 @@ public class CommissionExcelDTO {
// 字段映射
entity.setPolicyNo(data.getPolicyNo());
entity.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected"));
entity.setReconciliationCompany(data.getReconciliationCompany());
entity.setReconciliationCompany(data.getReconciliationCompany2());
entity.setCommissionPeriod(data.getCommissionPeriod());
entity.setTotalPeriod(data.getTotalPeriod());
entity.setCommissionName(data.getCommissionName());
entity.setAmount(data.getAmount());
entity.setCommissionRatio(data.getAmount());
entity.setCurrency(data.getCurrency());
entity.setCommissionRatio(null);
entity.setCommissionDate(data.getCommissionDate());
entity.setRemark(data.getRemark());
entity.setStatus("0");
......
package com.yd.csf.api.dto;
import com.yd.csf.service.dto.CommissionBindPolicyBrokerDto;
import com.yd.csf.service.dto.QueryPolicyAndBrokerDto;
import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.CommissionRuleBinding;
import com.yd.csf.service.model.Policy;
......@@ -32,6 +33,16 @@ public class ExecuteBillingDto {
private String batchBizId;
/**
* 期数(数字代表第几年)
*/
private Integer issueNumber;
/**
* 保单和转介人信息
*/
private QueryPolicyAndBrokerDto policyAndBrokerDto;
/**
* 来佣绑定的保单和转介人(销售)信息封装
*/
private CommissionBindPolicyBrokerDto brokerDto;
......
package com.yd.csf.api.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GenerateExpectedFortuneDto {
/**
* 保单发佣批次ID
*/
private String batchBizId;
/**
* 保单发佣业务id
*/
private String fortuneBizId;
/**
* 保单号
*/
private String policyNo;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
private Integer fortunePeriod;
/**
* 发佣总期数
*/
private Integer fortuneTotalPeriod;
/**
* 转介人 (获得积分的业务员)
*/
private String broker;
/**
* 转介人业务ID (获得积分的业务员)
*/
private String brokerBizId;
/**
* 所属团队
*/
private String team;
/**
* 所属团队业务ID
*/
private String teamBizId;
/**
* 来佣名称
*/
private String fortuneName;
/**
* 发佣类型
*/
private String fortuneType;
/**
* 发佣金额
*/
private BigDecimal amount;
/**
* 发佣币种
*/
private String currency;
/**
* 佣金发放状态 0=待出账 1=可出账 2=已出账
*/
private String status;
/**
* 预计发佣日期
*/
private LocalDate payoutDate;
/**
* 基本法项目配置表唯一业务ID
*/
private String ruleItemBizId;
/**
* 期交保费
*/
private BigDecimal paymentPremium;
/**
* 获得积分业务员绑定的基本法列表对应计算值
*/
private List<AlgorithmResDto> algorithmResDtoList;
}
package com.yd.csf.api.dto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import com.yd.csf.service.vo.PayableReportVO;
import lombok.Data;
@Data
public class PayableReportResponse {
private ExpectedFortuneStatisticsVO statisticsVO;
/**
* 应付款报表分页列表 - 按保单号和期数维度统计
*/
private IPage<PayableReportVO> page;
}
......@@ -22,6 +22,9 @@ public class PolicyExcelDTO {
@ExcelProperty("生效日期")
private Date effectiveDate;
@ExcelProperty("冷静期天数")
private Integer coolingOffDays;
@ExcelProperty("续保日期")
private Date renewalDate;
......@@ -41,7 +44,7 @@ public class PolicyExcelDTO {
private String productCate;
@ExcelProperty("保险公司")
private String insurer;
private String insuranceCompany;
@ExcelProperty("对账公司")
private String reconciliationCompany;
......
package com.yd.csf.api.dto;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.CommissionExpectedVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "查询预计来佣分页响应")
public class QueryCommissionExpectedByPageResponse {
@Schema(description = "预计来佣统计信息")
private CommissionExpectedStatisticsVO expectedStatisticsVO;
@Schema(description = "预计来佣分页列表")
private Page<CommissionExpectedVO> page;
}
package com.yd.csf.api.dto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.ReceivableReportVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 应收款报表响应
*/
@Data
@Schema(description = "应收款报表响应")
public class ReceivableReportResponse {
@Schema(description = "应收款统计信息")
private CommissionExpectedStatisticsVO statisticsVO;
@Schema(description = "应收款报表分页列表 - 按保单号和期数维度统计")
private IPage<ReceivableReportVO> page;
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.service.model.Appointment;
public interface ApiAppointmentLogService {
Result<String> saveAppointmentLog(Appointment appointment);
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiAppointmentReferrerDto;
import java.util.List;
public interface ApiAppointmentReferrerLogService {
Result saveAppointmentReferrerLogList(List<ApiAppointmentReferrerDto> referrerDtoList,
String appointmentLogBizId);
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiAppointmentReferrerDto;
import java.util.List;
public interface ApiAppointmentReferrerService {
Result saveAppointmentReferrerList(List<ApiAppointmentReferrerDto> referrerDtoList,
String appointmentBizId);
List<ApiAppointmentReferrerDto> referrerDtoList(String appointmentBizId);
}
......@@ -4,9 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiAppointmentInfoDto;
import com.yd.csf.feign.request.appointment.*;
import com.yd.csf.feign.response.appointment.ApiAppointmentAddResponse;
import com.yd.csf.feign.response.appointment.ApiAppointmentDetailResponse;
import com.yd.csf.feign.response.appointment.ApiAppointmentPageResponse;
import com.yd.csf.feign.response.appointment.*;
import com.yd.csf.service.model.Appointment;
public interface ApiAppointmentService {
......@@ -22,6 +20,8 @@ public interface ApiAppointmentService {
Result edit(ApiAppointmentEditRequest request);
Result editStorage(ApiAppointmentEditStorageRequest request);
Result editConfirmTime(ApiAppointmentEditConfirmTimeRequest request);
Result singleEdit(ApiAppointmentInfoDto apiAppointmentInfoDto);
......@@ -36,7 +36,13 @@ public interface ApiAppointmentService {
Result editPolicyTransfer(ApiPolicyTransferRequest request);
Result editStatus(ApiAppointmentEditStatusRequest request);
Result del(String appointmentBizId);
Result<IPage<ApiAppointmentLogPageResponse>> logPage(ApiAppointmentLogPageRequest request);
Result<ApiAppointmentLogDetailResponse> logDetail(String appointmentLogBizId);
Result<Appointment> checkAppointmentIsExist(String appointmentBizId);
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiAppointmentUserSignDto;
import java.util.List;
public interface ApiAppointmentUserSignLogService {
Result saveAppointmentUserSignLogList(List<ApiAppointmentUserSignDto> userSignDtoList,
String appointmentLogBizId);
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiAppointmentUserSignDto;
import java.util.List;
public interface ApiAppointmentUserSignService {
Result saveAppointmentUserSignList(List<ApiAppointmentUserSignDto> userSignDtoList,
String appointmentBizId);
List<ApiAppointmentUserSignDto> userSignDtoList(String appointmentBizId);
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.api.dto.AlgorithmDto;
import com.yd.csf.api.dto.AlgorithmResDto;
import com.yd.csf.api.dto.ExecuteBillingDto;
import com.yd.csf.feign.request.basiclawcalculate.ApiGenerateBillingRequest;
import com.yd.csf.feign.response.basiclawcalculate.ApiGenerateBillingResponse;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
public interface ApiBasicLawCalculateService {
Result<ApiGenerateBillingResponse> generateBilling(ApiGenerateBillingRequest request);
Result<List<AlgorithmResDto>> policyBrokerAlgorithm(AlgorithmDto algorithmDto);
}
......@@ -2,6 +2,7 @@ package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiBeneficiaryInfoDto;
import com.yd.csf.feign.dto.appointment.ApiBeneficiaryInfoFzDto;
import com.yd.csf.feign.request.beneficiary.ApiBatchEditBeneficiaryRequest;
import java.util.List;
......
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.request.common.ApiCsfCalculateRequest;
import com.yd.csf.feign.response.common.ApiCsfCalculateResponse;
import java.util.List;
public interface ApiCsfCommonService {
Result<List<ApiCsfCalculateResponse>> calculate(ApiCsfCalculateRequest request);
}
package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.api.dto.ApiExpectedFortuneLogDto;
import com.yd.csf.feign.request.expectedfortunelog.ApiExpectedFortuneLogPageRequest;
import com.yd.csf.feign.response.expectedfortunelog.ApiExpectedFortuneLogPageResponse;
public interface ApiExpectedFortuneLogService {
Result<IPage<ApiExpectedFortuneLogPageResponse>> page(ApiExpectedFortuneLogPageRequest request);
Result saveExpectedFortuneLog(ApiExpectedFortuneLogDto dto);
}
package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.api.dto.ApiExpectedFortunePageResponseVO;
import com.yd.csf.api.dto.PayableReportResponse;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
import com.yd.csf.feign.request.expectedfortune.ExpectedFortuneAddRequest;
import com.yd.csf.feign.request.expectedfortune.ExpectedFortuneUpdateRequest;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse;
import com.yd.csf.service.dto.QueryPolicyAndBrokerDto;
import com.yd.csf.service.model.CommissionRuleBinding;
import com.yd.csf.service.model.ExpectedFortune;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import org.springframework.scheduling.annotation.Async;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
public interface ApiExpectedFortuneService {
Result<ApiGenerateExpectedFortuneResponse> generate(ApiGenerateExpectedFortuneRequest request);
/**
* 生成预计发佣(包含日志记录和Redis处理)
* 用于内部服务调用,会自动保存日志和异常时销毁Redis缓存
* @param request
* @return
*/
Result<ApiGenerateExpectedFortuneResponse> generateWithLogAndRedis(ApiGenerateExpectedFortuneRequest request);
Result<ApiGenerateExpectedFortuneResponse> generateSyncWithLogAndRedis(ApiGenerateExpectedFortuneRequest request);
@Async("asyncQueryExecutor")
Result execute(List<QueryPolicyAndBrokerDto> queryPolicyAndBrokerDtoList,
List<CommissionRuleBinding> commissionRuleBindingList,
String policyNo);
/**
* 同步执行预计发佣生成
* @param queryPolicyAndBrokerDtoList 保单和转介人列表
* @param commissionRuleBindingList 基本法绑定列表
* @param policyNo 保单号
* @return 执行结果
*/
Result executeSync(List<QueryPolicyAndBrokerDto> queryPolicyAndBrokerDtoList,
List<CommissionRuleBinding> commissionRuleBindingList,
String policyNo);
Result<IPage<ApiExpectedFortunePageResponse>> page(ApiExpectedFortunePageRequest request);
QueryWrapper<ExpectedFortune> getQueryWrapper(ApiExpectedFortunePageRequest request);
Result<Boolean> isGenerate(String policyNo);
Result batchDelByPolicyNo(String policyNo);
ExpectedFortuneStatisticsVO getStatistics(List<Long> expectedFortuneIds);
Boolean update(ExpectedFortuneUpdateRequest request);
Result<ApiExpectedFortunePageResponseVO> list(ApiExpectedFortunePageRequest request);
Boolean add(List<ExpectedFortuneAddRequest> request);
void exportExpectedFortune(ApiExpectedFortunePageRequest request, HttpServletResponse response);
Result<PayableReportResponse> payableReport(ApiExpectedFortunePageRequest request);
}
package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptAddRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptEditRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptPageRequest;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptDetailResponse;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptPageResponse;
public interface ApiPolicyReceiptService {
Result<IPage<ApiPolicyReceiptPageResponse>> page(ApiPolicyReceiptPageRequest request);
Result<ApiPolicyReceiptDetailResponse> detail(String policyReceiptBizId);
Result add(ApiPolicyReceiptAddRequest request);
Result edit(ApiPolicyReceiptEditRequest request);
Result editReceiptStatus(String policyReceiptBizId, String receiptStatus);
}
package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.premiumreconciliation.ApiPremiumReconciliationDto;
import com.yd.csf.feign.request.premiumreconciliation.ApiCalculateRemainingUnpaidAmountRequest;
import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationAddRequest;
import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationPageRequest;
import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationResultEditRequest;
import com.yd.csf.feign.response.premiumreconciliation.ApiCalculateRemainingUnpaidAmountResponse;
import com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationDetailResponse;
import com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationPageResponse;
import com.yd.csf.service.dto.ChangePolicyFollowStatusRequest;
import com.yd.csf.service.dto.QueryPolicyAndBrokerDto;
import com.yd.csf.service.model.CommissionRuleBinding;
import com.yd.csf.service.model.PremiumReconciliation;
import org.springframework.scheduling.annotation.Async;
import java.util.List;
public interface ApiPremiumReconciliationService {
Result<IPage<ApiPremiumReconciliationPageResponse>> page(ApiPremiumReconciliationPageRequest request);
Result add(ApiPremiumReconciliationAddRequest request);
Result edit(ApiPremiumReconciliationDto request);
Result<ApiPremiumReconciliationDetailResponse> detail(String premiumReconciliationBizId);
Result<ApiCalculateRemainingUnpaidAmountResponse> calculateRemainingUnpaidAmount(ApiCalculateRemainingUnpaidAmountRequest request);
Result editResult(ApiPremiumReconciliationResultEditRequest request);
@Async("commonAsyncExecutor")
void execute(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest);
Result<Boolean> checkReconciliationComplete(String policyNo);
Result<PremiumReconciliation> checkPremiumReconciliationIsExist(String expectedCommissionRatioBizId);
}
package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.premiumremittancefile.ApiPremiumRemittanceFileDto;
import com.yd.csf.feign.request.premiumremittancefile.ApiPremiumRemittanceFilePageRequest;
import com.yd.csf.feign.response.premiumremittancefile.ApiPremiumRemittanceFilePageResponse;
import com.yd.csf.service.model.PremiumRemittanceFile;
import java.util.List;
public interface ApiPremiumRemittanceFileService {
Result<IPage<ApiPremiumRemittanceFilePageResponse>> page(ApiPremiumRemittanceFilePageRequest request);
Result add(ApiPremiumRemittanceFileDto request);
Result edit(ApiPremiumRemittanceFileDto request);
Result del(String premiumRemittanceFileBizId);
Result addPremiumRemittanceFileList(List<ApiPremiumRemittanceFileDto> apiPremiumRemittanceFileDtoList,
String premiumRemittanceBizId);
Result savePremiumRemittanceFileList(List<ApiPremiumRemittanceFileDto> apiPremiumRemittanceFileDtoList,
String premiumRemittanceBizId);
Result delByPremiumRemittanceBizId(String premiumRemittanceBizId);
List<ApiPremiumRemittanceFileDto> apiPremiumRemittanceFileDtoList(String premiumRemittanceBizId);
Result<PremiumRemittanceFile> checkPremiumRemittanceFileIsExist(String premiumRemittanceFileBizId);
}
package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.premiumremittance.ApiPremiumRemittanceDto;
import com.yd.csf.feign.request.premiumremittance.ApiPremiumRemittancePageRequest;
import com.yd.csf.service.model.PremiumRemittance;
import java.util.List;
public interface ApiPremiumRemittanceService {
Result<IPage<ApiPremiumRemittanceDto>> page(ApiPremiumRemittancePageRequest request);
Result add(ApiPremiumRemittanceDto request);
Result edit(ApiPremiumRemittanceDto request);
Result<ApiPremiumRemittanceDto> detail(String premiumRemittanceBizId);
Result del(String premiumRemittanceBizId);
Result addPremiumRemittanceList(List<ApiPremiumRemittanceDto> apiPremiumRemittanceDtoList,
String premiumReconciliationBizId);
List<ApiPremiumRemittanceDto> apiPremiumRemittanceDtoList(String premiumReconciliationBizId);
Result<PremiumRemittance> checkPremiumRemittanceIsExist(String premiumRemittanceBizId);
List<ApiPremiumRemittanceDto> list(List<String> premiumReconciliationBizIdList);
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.taxation.ApiObjectTaxationDto;
import com.yd.csf.service.model.Taxation;
import java.util.List;
public interface ApiTaxationService {
Result saveTaxationList(ApiObjectTaxationDto dto);
Result<List<Taxation>> list(ApiObjectTaxationDto dto);
}
package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.feign.request.team.ApiTeamListRequest;
import com.yd.csf.feign.request.team.ApiTeamPageRequest;
import com.yd.csf.feign.response.team.ApiTeamDetailResponse;
import com.yd.csf.feign.response.team.ApiTeamPageResponse;
import java.util.List;
public interface ApiTeamService {
Result<IPage<ApiTeamPageResponse>> page(ApiTeamPageRequest request);
Result<List<ApiTeamDetailResponse>> list(ApiTeamListRequest request);
}
......@@ -89,7 +89,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService {
ApiProductPlanInfoDto productPlanInfoDto = new ApiProductPlanInfoDto();
productPlanInfoDto.setApiProductPlanAdditionalInfoDtoList(list);
//批量添加产品计划-附加险信息表数据
batchAddAdditionalData(productPlanInfoDto,apiProductPlanAdditionalInfoDto.getPlanBizId());
// batchAddAdditionalData(productPlanInfoDto,apiProductPlanAdditionalInfoDto.getPlanBizId());
return Result.success();
}
......@@ -108,7 +108,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService {
ApiProductPlanInfoDto productPlanInfoDto = new ApiProductPlanInfoDto();
productPlanInfoDto.setApiProductPlanAdditionalInfoDtoList(apiProductPlanAdditionalInfoDtoList);
//批量编辑产品计划-附加险信息表数据
batchEditAdditionalData(productPlanInfoDto,apiProductPlanAdditionalInfoDto.getPlanBizId());
// batchEditAdditionalData(productPlanInfoDto,apiProductPlanAdditionalInfoDto.getPlanBizId());
return Result.success();
}
......@@ -188,58 +188,18 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService {
//为空放行
return Result.success();
}
//先删后新增
iAdditionalService.delByPlanBizId(planBizId);
//入参的附加险列表信息
List<ApiProductPlanAdditionalInfoDto> list = productPlanInfoDto.getApiProductPlanAdditionalInfoDtoList();
//获取不为空的附加险信息表唯一业务ID列表
List<String> additionalBizIdList = list.stream()
.filter(dto -> StringUtils.isNotBlank(dto.getAdditionalBizId()))
.map(ApiProductPlanAdditionalInfoDto::getAdditionalBizId)
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(additionalBizIdList)) {
//入参的附加险业务id列表至少一个不为空就走表数据校验,全部为空是全部新增操作,不走表数据校验
//根据附加险信息表唯一业务ID列表查询表里面的列表信息
List<Additional> additionals = iAdditionalService.queryList(AdditionalDto.builder()
.additionalBizIdList(additionalBizIdList).build());
//过滤入参的附加险列表信息在表里不存在的集合,然后抛出这些不存在的列表信息
// 提取 existingAdditionalBizIds:从 additionals 中获取所有已存在的 additionalBizId 集合
Set<String> existingAdditionalBizIds = additionals.stream()
.map(Additional::getAdditionalBizId)
.collect(Collectors.toSet());
// 过滤 list:保留 additionalBizId 不在 existingAdditionalBizIds 中的对象
List<ApiProductPlanAdditionalInfoDto> filteredList = list.stream()
.filter(dto -> StringUtils.isNotBlank(dto.getAdditionalBizId()) && !existingAdditionalBizIds.contains(dto.getAdditionalBizId()))
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(filteredList)) {
//入参对象列表中有传值的业务id在库中不存在的对象,提示
List<String> additionalProductNameList = filteredList
.stream()
.map(ApiProductPlanAdditionalInfoDto::getAddProductName)
.collect(Collectors.toList());
throw new BusinessException("以下是在库里不存在的附加险数据的附加产品名称:"+String.join(" ;",additionalProductNameList));
}
}
//构造需要新增或者更新数据的对象集合
List<Additional> updateList = list.stream().map(dto -> {
//新增
List<Additional> saveList = productPlanInfoDto.getApiProductPlanAdditionalInfoDtoList().stream().map(dto -> {
Additional additional = new Additional();
BeanUtils.copyProperties(dto,additional);
additional.setPlanBizId(planBizId);
if (StringUtils.isBlank(dto.getAdditionalBizId())) {
//为空表示新增数据
//生成附加险信息表唯一业务ID
additional.setAdditionalBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_ADDITIONAL.getCode()));
}
return additional;
}).collect(Collectors.toList());
//批量新增或者更新
iAdditionalService.saveOrUpdateBatch(updateList);
iAdditionalService.saveOrUpdateBatch(saveList);
return Result.success();
}
......
......@@ -11,6 +11,7 @@ import com.yd.common.enums.DictTypeEnum;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.BeanMapUtils;
import com.yd.common.utils.DateUtil;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.common.utils.RedisUtil;
import com.yd.csf.api.service.ApiAppointmentFileService;
......@@ -40,6 +41,7 @@ import com.yd.oss.feign.response.ApiOssExcelParseResponse;
import com.yd.oss.feign.response.ApiOssExportAppointmentExcelResponse;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
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;
......@@ -197,6 +199,11 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
request.setDataObject(itineraryDto);
request.setObjectId(appointmentBizId);
request.setTemplateType(TemplateTypeEnum.XCD.getItemValue());
if (StringUtils.isNotBlank(itineraryDto.getName()) &&
StringUtils.isNotBlank(itineraryDto.getArrivalTime())) {
//咨询人和集合日(签单日)都不为空,文件名 = 咨询人 + 集合日(20260103)
request.setCustomFileName(itineraryDto.getName() + DateUtil.yyMMdd(itineraryDto.getArrivalTime()));
}
Result<ApiGeneratePdfResponse> result = apiPdfFeignClient.generatePDF(request);
if (!Objects.isNull(result.getData())) {
url = result.getData().getUrl();
......
package com.yd.csf.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAppointmentLogService;
import com.yd.csf.service.model.Appointment;
import com.yd.csf.service.model.AppointmentLog;
import com.yd.csf.service.service.IAppointmentLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class ApiAppointmentLogServiceImpl implements ApiAppointmentLogService {
@Autowired
private IAppointmentLogService iAppointmentLogService;
/**
* 保存预约日志信息
* @param appointment
* @return
*/
@Override
public Result<String> saveAppointmentLog(Appointment appointment) {
AppointmentLog appointmentLog = new AppointmentLog();
BeanUtils.copyProperties(appointment,appointmentLog);
appointmentLog.setAppointmentBizId(appointment.getAppointmentBizId());
appointmentLog.setAppointmentLogBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_APPOINTMENT_LOG.getCode()));
iAppointmentLogService.saveOrUpdate(appointmentLog);
return Result.success(appointmentLog.getAppointmentLogBizId());
}
}
package com.yd.csf.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAppointmentReferrerLogService;
import com.yd.csf.feign.dto.appointment.ApiAppointmentReferrerDto;
import com.yd.csf.service.model.AppointmentReferrerLog;
import com.yd.csf.service.service.IAppointmentReferrerLogService;
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.stream.Collectors;
@Slf4j
@Service
public class ApiAppointmentReferrerLogServiceImpl implements ApiAppointmentReferrerLogService {
@Autowired
private IAppointmentReferrerLogService iAppointmentReferrerLogService;
/**
* 保存预约-转介人信息日志信息
* @param referrerDtoList
* @param appointmentLogBizId
* @return
*/
@Override
public Result saveAppointmentReferrerLogList(List<ApiAppointmentReferrerDto> referrerDtoList,
String appointmentLogBizId) {
if (CollectionUtils.isEmpty(referrerDtoList)) {
return Result.success();
}
List<AppointmentReferrerLog> saveList = referrerDtoList.stream().map(dto -> {
AppointmentReferrerLog log = new AppointmentReferrerLog();
BeanUtils.copyProperties(dto,log);
log.setAppointmentLogBizId(appointmentLogBizId);
log.setAppointmentReferrerLogBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_APPOINTMENT_REFERRER_LOG.getCode()));
return log;
}).collect(Collectors.toList());
iAppointmentReferrerLogService.saveOrUpdateBatch(saveList);
return Result.success();
}
}
package com.yd.csf.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAppointmentReferrerService;
import com.yd.csf.feign.dto.appointment.ApiAppointmentReferrerDto;
import com.yd.csf.service.model.AppointmentReferrer;
import com.yd.csf.service.service.IAppointmentReferrerService;
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.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
public class ApiAppointmentReferrerServiceImpl implements ApiAppointmentReferrerService {
@Autowired
private IAppointmentReferrerService iAppointmentReferrerService;
/**
* 保存预约-转介人信息列表
* @param referrerDtoList
* @param appointmentBizId
* @return
*/
@Override
public Result saveAppointmentReferrerList(List<ApiAppointmentReferrerDto> referrerDtoList,
String appointmentBizId) {
if (CollectionUtils.isEmpty(referrerDtoList)) {
return Result.success();
}
//先删后新增
iAppointmentReferrerService.delByAppointmentBizId(appointmentBizId);
//新增
List<AppointmentReferrer> saveList = referrerDtoList.stream().map(dto -> {
AppointmentReferrer referrer = new AppointmentReferrer();
BeanUtils.copyProperties(dto,referrer);
referrer.setAppointmentBizId(appointmentBizId);
referrer.setAppointmentReferrerBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_APPOINTMENT_REFERRER.getCode()));
return referrer;
}).collect(Collectors.toList());
iAppointmentReferrerService.saveOrUpdateBatch(saveList);
return Result.success();
}
/**
* 查询-转介人信息列表
* @param appointmentBizId
* @return
*/
@Override
public List<ApiAppointmentReferrerDto> referrerDtoList(String appointmentBizId) {
List<AppointmentReferrer> appointmentReferrerList = iAppointmentReferrerService.queryList(appointmentBizId);
if (CollectionUtils.isEmpty(appointmentReferrerList)) {
return new ArrayList<>();
}
List<ApiAppointmentReferrerDto> list = appointmentReferrerList.stream().map(dto -> {
ApiAppointmentReferrerDto referrerDto = new ApiAppointmentReferrerDto();
BeanUtils.copyProperties(dto,referrerDto);
return referrerDto;
}).collect(Collectors.toList());
return list;
}
}
package com.yd.csf.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAppointmentUserSignLogService;
import com.yd.csf.feign.dto.appointment.ApiAppointmentUserSignDto;
import com.yd.csf.service.model.AppointmentUserSignLog;
import com.yd.csf.service.service.IAppointmentUserSignLogService;
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.stream.Collectors;
@Slf4j
@Service
public class ApiAppointmentUserSignLogServiceImpl implements ApiAppointmentUserSignLogService {
@Autowired
private IAppointmentUserSignLogService iAppointmentUserSignLogService;
/**
* 保存预约签单员列表日志
* @param userSignDtoList
* @param appointmentLogBizId
* @return
*/
@Override
public Result saveAppointmentUserSignLogList(List<ApiAppointmentUserSignDto> userSignDtoList,
String appointmentLogBizId) {
if (CollectionUtils.isEmpty(userSignDtoList)) {
return Result.success();
}
List<AppointmentUserSignLog> saveList = userSignDtoList.stream().map(dto -> {
AppointmentUserSignLog log = new AppointmentUserSignLog();
BeanUtils.copyProperties(dto,log);
log.setAppointmentLogBizId(appointmentLogBizId);
log.setAppointmentUserSignLogBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_APPOINTMENT_USER_SIGN_LOG.getCode()));
return log;
}).collect(Collectors.toList());
iAppointmentUserSignLogService.saveOrUpdateBatch(saveList);
return Result.success();
}
}
package com.yd.csf.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAppointmentUserSignService;
import com.yd.csf.feign.dto.appointment.ApiAppointmentReferrerDto;
import com.yd.csf.feign.dto.appointment.ApiAppointmentUserSignDto;
import com.yd.csf.service.model.AppointmentReferrer;
import com.yd.csf.service.model.AppointmentUserSign;
import com.yd.csf.service.service.IAppointmentUserSignService;
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.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
public class ApiAppointmentUserSignServiceImpl implements ApiAppointmentUserSignService {
@Autowired
private IAppointmentUserSignService iAppointmentUserSignService;
/**
* 保存签单员列表信息
* @param userSignDtoList
* @param appointmentBizId
* @return
*/
@Override
public Result saveAppointmentUserSignList(List<ApiAppointmentUserSignDto> userSignDtoList, String appointmentBizId) {
if (CollectionUtils.isEmpty(userSignDtoList)) {
return Result.success();
}
//先删后新增
iAppointmentUserSignService.delByAppointmentBizId(appointmentBizId);
//新增
List<AppointmentUserSign> saveList = userSignDtoList.stream().map(dto -> {
AppointmentUserSign userSign = new AppointmentUserSign();
BeanUtils.copyProperties(dto,userSign);
userSign.setAppointmentBizId(appointmentBizId);
userSign.setAppointmentUserSignBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_APPOINTMENT_USER_SIGN.getCode()));
return userSign;
}).collect(Collectors.toList());
iAppointmentUserSignService.saveOrUpdateBatch(saveList);
return Result.success();
}
@Override
public List<ApiAppointmentUserSignDto> userSignDtoList(String appointmentBizId) {
List<AppointmentUserSign> appointmentUserSignList = iAppointmentUserSignService.queryList(appointmentBizId);
if (CollectionUtils.isEmpty(appointmentUserSignList)) {
return new ArrayList<>();
}
List<ApiAppointmentUserSignDto> list = appointmentUserSignList.stream().map(dto -> {
ApiAppointmentUserSignDto appointmentUserSignDto = new ApiAppointmentUserSignDto();
BeanUtils.copyProperties(dto,appointmentUserSignDto);
return appointmentUserSignDto;
}).collect(Collectors.toList());
return list;
}
}
......@@ -366,6 +366,7 @@ public class ApiBasicLawCalculateServiceImpl implements ApiBasicLawCalculateServ
* @param algorithmDto
* @return
*/
@Override
public Result<List<AlgorithmResDto>> policyBrokerAlgorithm(AlgorithmDto algorithmDto) {
List<AlgorithmResDto> algorithmResDtoList = new ArrayList<>();
//校验 - 转介人业务ID(客户端用户表唯一业务ID)不能为空
......@@ -844,8 +845,8 @@ public class ApiBasicLawCalculateServiceImpl implements ApiBasicLawCalculateServ
paramMap.put("policyNo", sqlTemplateParamDto.getPolicyNo());
//产品代码
paramMap.put("productCode", sqlTemplateParamDto.getProductCode());
//保险产品唯一业务ID
paramMap.put("productBizId", sqlTemplateParamDto.getProductBizId());
//保险上架产品唯一业务ID
paramMap.put("productLaunchBizId", sqlTemplateParamDto.getProductBizId());
//供款年期(产品有5年期的有10年期等)(总期数)
paramMap.put("term", sqlTemplateParamDto.getTerm());
//期数(数字代表第几年)
......
......@@ -8,6 +8,7 @@ import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAppointmentCheckService;
import com.yd.csf.api.service.ApiBeneficiaryService;
import com.yd.csf.feign.dto.appointment.ApiBeneficiaryInfoDto;
import com.yd.csf.feign.dto.appointment.ApiBeneficiaryInfoFzDto;
import com.yd.csf.feign.request.beneficiary.ApiBatchEditBeneficiaryRequest;
import com.yd.csf.feign.utils.CommonUtil;
import com.yd.csf.service.dto.BeneficiaryDto;
......@@ -54,8 +55,6 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
dtoList = list.stream().map(dto -> {
ApiBeneficiaryInfoDto infoDto = new ApiBeneficiaryInfoDto();
BeanUtils.copyProperties(dto,infoDto);
//地址列表
infoDto.setAddressList(CommonUtil.getAddressList(dto.getAddressList()));
return infoDto;
}).collect(Collectors.toList());
}
......@@ -74,8 +73,6 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
Beneficiary beneficiary = result.getData();
ApiBeneficiaryInfoDto dto = new ApiBeneficiaryInfoDto();
BeanUtils.copyProperties(beneficiary,dto);
//地址列表
dto.setAddressList(CommonUtil.getAddressList(beneficiary.getAddressList()));
return Result.success(dto);
}
......@@ -88,7 +85,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
public Result add(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) {
List<ApiBeneficiaryInfoDto> list = new ArrayList<>();
list.add(apiBeneficiaryInfoDto);
apiAppointmentCheckService.checkAddApiBeneficiaryInfoDtoList(list);
// apiAppointmentCheckService.checkAddApiBeneficiaryInfoDtoList(list);
//批量添加受益人信息表数据
batchAddBeneficiaryData(list,apiBeneficiaryInfoDto.getAppointmentBizId());
......@@ -104,10 +101,13 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
public Result edit(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) {
//编辑预约入参字段校验 - 编辑单个受益人信息字段校验
apiAppointmentCheckService.checkEditApiBeneficiaryInfoDto(apiBeneficiaryInfoDto);
List<ApiBeneficiaryInfoDto> list = new ArrayList<>();
list.add(apiBeneficiaryInfoDto);
//批量编辑受益人信息表数据
batchEditBeneficiaryData(list,apiBeneficiaryInfoDto.getAppointmentBizId());
//校验受益人信息是否存在
Result<Beneficiary> result = checkBeneficiaryIsExist(apiBeneficiaryInfoDto.getBeneficiaryBizId());
Beneficiary beneficiary = result.getData();
BeanUtils.copyProperties(apiBeneficiaryInfoDto,beneficiary);
beneficiary.setId(result.getData().getId());
beneficiary.setAppointmentBizId(result.getData().getAppointmentBizId());
iBeneficiaryService.saveOrUpdate(beneficiary);
return Result.success();
}
......@@ -160,8 +160,6 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
beneficiary.setBeneficiaryBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_BENEFICIARY.getCode()));
//预约信息主表唯一业务ID
beneficiary.setAppointmentBizId(appointmentBizId);
//地址列表(json串)
beneficiary.setAddressList(CommonUtil.getAddressListJsonStr(dto.getAddressList()));
return beneficiary;
}).collect(Collectors.toList());
......@@ -177,68 +175,24 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
* @return
*/
@Override
public Result batchEditBeneficiaryData(List<ApiBeneficiaryInfoDto> list,
String appointmentBizId) {
public Result batchEditBeneficiaryData(List<ApiBeneficiaryInfoDto> list,String appointmentBizId) {
if (CollectionUtils.isEmpty(list)){
//为空放行
return Result.success();
}
// //获取不为空的受益人信息表唯一业务ID列表
// List<String> beneficiaryBizIdList = list.stream()
// .filter(dto -> StringUtils.isNotBlank(dto.getBeneficiaryBizId()))
// .map(ApiBeneficiaryInfoDto::getBeneficiaryBizId)
// .collect(Collectors.toList());
//
// if (!CollectionUtils.isEmpty(beneficiaryBizIdList)) {
// //入参的受益人业务id列表至少一个不为空就走表数据校验,全部为空是全部新增操作,不走表数据校验
//
// //根据受益人信息表唯一业务ID列表查询表里面的列表信息
// List<Beneficiary> beneficiarys = iBeneficiaryService.queryList(BeneficiaryDto.builder()
// .beneficiaryBizIdList(beneficiaryBizIdList).build());
//
// //过滤入参的受益人列表信息在表里不存在的集合,然后抛出这些不存在的列表信息
// // 提取 existingBeneficiaryBizIds:从 beneficiarys 中获取所有已存在的 beneficiaryBizId 集合
// Set<String> existingBeneficiaryBizIds = beneficiarys.stream()
// .map(Beneficiary::getBeneficiaryBizId)
// .collect(Collectors.toSet());
// // 过滤 list:保留 beneficiaryBizId 不在 existingBeneficiaryBizIds 中的对象
// List<ApiBeneficiaryInfoDto> filteredList = list.stream()
// .filter(dto -> StringUtils.isNotBlank(dto.getBeneficiaryBizId()) && !existingBeneficiaryBizIds.contains(dto.getBeneficiaryBizId()))
// .collect(Collectors.toList());
// if (!CollectionUtils.isEmpty(filteredList)) {
// //入参对象列表中有传值的业务id在库中不存在的对象,提示
// List<String> beneficiaryProductNameList = filteredList
// .stream()
// .map(ApiBeneficiaryInfoDto::getName)
// .collect(Collectors.toList());
// throw new BusinessException("以下是在库里不存在的受益人数据的名字:"+String.join(" ;",beneficiaryProductNameList));
// }
// }
//先删后增加
iBeneficiaryService.del(appointmentBizId);
//构造需要新增或者更新数据的对象集合
List<Beneficiary> updateList = list.stream().map(dto -> {
//新增
List<Beneficiary> saveList = list.stream().map(dto -> {
Beneficiary beneficiary = new Beneficiary();
BeanUtils.copyProperties(dto,beneficiary);
beneficiary.setId(null);
beneficiary.setAppointmentBizId(appointmentBizId);
if (StringUtils.isBlank(dto.getBeneficiaryBizId())) {
//为空表示新增数据
//生成受益人信息表唯一业务ID
beneficiary.setBeneficiaryBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_BENEFICIARY.getCode()));
}
//地址列表(json串)
beneficiary.setAddressList(CommonUtil.getAddressListJsonStr(dto.getAddressList()));
beneficiary.setId(null);
return beneficiary;
}).collect(Collectors.toList());
//批量新增或者更新
iBeneficiaryService.saveOrUpdateBatch(updateList);
//批量新增
iBeneficiaryService.saveOrUpdateBatch(saveList);
return Result.success();
}
......
package com.yd.csf.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.result.Result;
import com.yd.csf.api.dto.ApiExpectedFortuneLogDto;
import com.yd.csf.api.service.ApiExpectedFortuneLogService;
import com.yd.csf.feign.request.expectedfortunelog.ApiExpectedFortuneLogPageRequest;
import com.yd.csf.feign.response.expectedfortunelog.ApiExpectedFortuneLogPageResponse;
import com.yd.csf.service.model.ExpectedFortuneLog;
import com.yd.csf.service.service.IExpectedFortuneLogService;
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.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@Slf4j
@Service
public class ApiExpectedFortuneLogServiceImpl implements ApiExpectedFortuneLogService {
@Autowired
private IExpectedFortuneLogService iExpectedFortuneLogService;
/**
* 分页查询 - 生成预计发佣日志记录
* @param request
* @return
*/
@Override
public Result<IPage<ApiExpectedFortuneLogPageResponse>> page(ApiExpectedFortuneLogPageRequest request) {
Page<ApiExpectedFortuneLogPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiExpectedFortuneLogPageResponse> iPage = iExpectedFortuneLogService.page(page, request);
return Result.success(iPage);
}
/**
* 保存预计发佣日志记录
* @param dto
* @return
*/
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public Result saveExpectedFortuneLog(ApiExpectedFortuneLogDto dto) {
ExpectedFortuneLog expectedFortuneLog = new ExpectedFortuneLog();
BeanUtils.copyProperties(dto,expectedFortuneLog);
iExpectedFortuneLogService.saveOrUpdate(expectedFortuneLog);
return Result.success();
}
}
......@@ -7,16 +7,27 @@ import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAppointmentCheckService;
import com.yd.csf.api.service.ApiInsurantService;
import com.yd.csf.api.service.ApiTaxationService;
import com.yd.csf.feign.dto.appointment.ApiInsurantInfoDto;
import com.yd.csf.feign.dto.taxation.ApiObjectTaxationDto;
import com.yd.csf.feign.dto.taxation.ApiTaxationDto;
import com.yd.csf.feign.utils.CommonUtil;
import com.yd.csf.feign.enums.RelTypeEnum;
import com.yd.csf.service.model.Insurant;
import com.yd.csf.service.model.Policyholder;
import com.yd.csf.service.model.Taxation;
import com.yd.csf.service.service.IInsurantService;
import com.yd.csf.service.service.IPolicyholderService;
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;
/**
* 受保人信息业务实现类
......@@ -29,8 +40,14 @@ public class ApiInsurantServiceImpl implements ApiInsurantService {
private IInsurantService iInsurantService;
@Autowired
private IPolicyholderService iPolicyholderService;
@Autowired
private ApiAppointmentCheckService apiAppointmentCheckService;
@Autowired
private ApiTaxationService apiTaxationService;
/**
* 受保人信息详情
* @param appointmentBizId 预约信息主表唯一业务ID
......@@ -61,7 +78,7 @@ public class ApiInsurantServiceImpl implements ApiInsurantService {
apiAppointmentCheckService.checkEditApiInsurantInfoDto(apiInsurantInfoDto);
//编辑受保人信息表数据
editInsurantData(apiInsurantInfoDto,apiInsurantInfoDto.getAppointmentBizId());
// editInsurantData(apiInsurantInfoDto,apiInsurantInfoDto.getAppointmentBizId());
return Result.success();
}
......@@ -77,8 +94,41 @@ public class ApiInsurantServiceImpl implements ApiInsurantService {
//为空设置,方便新建暂存公用方法
dto = new ApiInsurantInfoDto();
}
//受保人信息信息
Insurant insurant = new Insurant();
//与投保人关系
if (RelTypeEnum.MYSELF.getItemValue().equals(dto.getPolicyholderRel())) {
//与投保人关系如果是本人,直接查询投保人信息表新增数据到受保人信息表中
Policyholder policyholder = iPolicyholderService.queryOne(appointmentBizId,"");
if (!Objects.isNull(policyholder)) {
BeanUtils.copyProperties(policyholder,insurant);
insurant.setId(null);
insurant.setAppointmentBizId(appointmentBizId);
insurant.setInsurantBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_INSURANT.getCode()));
insurant.setPolicyholderRel(dto.getPolicyholderRel());
iInsurantService.saveOrUpdate(insurant);
//查询投保人税务列表信息
Result<List<Taxation>> listResult = apiTaxationService.list(ApiObjectTaxationDto.builder().objectBizId(policyholder.getPolicyholderBizId()).build());
if (!CollectionUtils.isEmpty(listResult.getData())) {
List<ApiTaxationDto> apiTaxationDtoList = listResult.getData().stream().map(d -> {
ApiTaxationDto apiTaxationDto = new ApiTaxationDto();
apiTaxationDto.setTaxCountry(d.getTaxCountry());
apiTaxationDto.setTaxId(d.getTaxId());
return apiTaxationDto;
}).collect(Collectors.toList());
apiTaxationService.saveTaxationList(ApiObjectTaxationDto.builder()
.objectBizId(insurant.getInsurantBizId())
.objectName(CommonEnum.UID_TYPE_INSURANT.getName())
.objectTableName(CommonEnum.UID_TYPE_INSURANT.getCode())
.objectType(CommonEnum.UID_TYPE_INSURANT.getCode())
.apiTaxationDtoList(apiTaxationDtoList)
.build());
}
return Result.success(insurant);
}
}
//受保人信息信息
BeanUtils.copyProperties(dto,insurant);
//生成受保人信息表唯一业务ID
insurant.setInsurantBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_INSURANT.getCode()));
......@@ -87,6 +137,17 @@ public class ApiInsurantServiceImpl implements ApiInsurantService {
//地址列表(json串)
insurant.setAddressList(CommonUtil.getAddressListJsonStr(dto.getAddressList()));
iInsurantService.saveOrUpdate(insurant);
//添加受保人税务列表信息
if (!CollectionUtils.isEmpty(dto.getApiTaxationDtoList())) {
apiTaxationService.saveTaxationList(ApiObjectTaxationDto.builder()
.objectBizId(insurant.getInsurantBizId())
.objectName(CommonEnum.UID_TYPE_INSURANT.getName())
.objectTableName(CommonEnum.UID_TYPE_INSURANT.getCode())
.objectType(CommonEnum.UID_TYPE_INSURANT.getCode())
.apiTaxationDtoList(dto.getApiTaxationDtoList())
.build());
}
return Result.success(insurant);
}
......@@ -102,16 +163,61 @@ public class ApiInsurantServiceImpl implements ApiInsurantService {
//受保人信息对象不能为空
throw new BusinessException("受保人信息不能为空");
}
if (StringUtils.isBlank(dto.getInsurantBizId())) {
throw new BusinessException("受保人信息表唯一业务ID不能为空");
}
Result<Insurant> result = checkInsurantIsExist(dto.getInsurantBizId());
//受保人信息信息
Insurant insurant = result.getData();
//与投保人关系
if (RelTypeEnum.MYSELF.getItemValue().equals(dto.getPolicyholderRel())) {
//与投保人关系如果是本人,直接查询投保人信息表更新数据到受保人信息表中
Policyholder policyholder = iPolicyholderService.queryOne(appointmentBizId,"");
if (!Objects.isNull(policyholder)) {
BeanUtils.copyProperties(policyholder,insurant);
insurant.setId(result.getData().getId());
insurant.setAppointmentBizId(appointmentBizId);
iInsurantService.saveOrUpdate(insurant);
//查询投保人税务列表信息
Result<List<Taxation>> listResult = apiTaxationService.list(ApiObjectTaxationDto.builder().objectBizId(policyholder.getPolicyholderBizId()).build());
if (!CollectionUtils.isEmpty(listResult.getData())) {
List<ApiTaxationDto> apiTaxationDtoList = listResult.getData().stream().map(d -> {
ApiTaxationDto apiTaxationDto = new ApiTaxationDto();
apiTaxationDto.setTaxCountry(d.getTaxCountry());
apiTaxationDto.setTaxId(d.getTaxId());
return apiTaxationDto;
}).collect(Collectors.toList());
apiTaxationService.saveTaxationList(ApiObjectTaxationDto.builder()
.objectBizId(insurant.getInsurantBizId())
.objectName(CommonEnum.UID_TYPE_INSURANT.getName())
.objectTableName(CommonEnum.UID_TYPE_INSURANT.getCode())
.objectType(CommonEnum.UID_TYPE_INSURANT.getCode())
.apiTaxationDtoList(apiTaxationDtoList)
.build());
}
return Result.success(insurant);
}
}
BeanUtils.copyProperties(dto,insurant);
//预约信息主表唯一业务ID
insurant.setAppointmentBizId(appointmentBizId);
//地址列表(json串)
insurant.setAddressList(CommonUtil.getAddressListJsonStr(dto.getAddressList()));
iInsurantService.saveOrUpdate(insurant);
//添加受保人税务列表信息
if (!CollectionUtils.isEmpty(dto.getApiTaxationDtoList())) {
apiTaxationService.saveTaxationList(ApiObjectTaxationDto.builder()
.objectBizId(insurant.getInsurantBizId())
.objectName(CommonEnum.UID_TYPE_INSURANT.getName())
.objectTableName(CommonEnum.UID_TYPE_INSURANT.getCode())
.objectType(CommonEnum.UID_TYPE_INSURANT.getCode())
.apiTaxationDtoList(dto.getApiTaxationDtoList())
.build());
}
return Result.success(insurant);
}
......
package com.yd.csf.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.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiPolicyReceiptService;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptAddRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptEditRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptPageRequest;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptDetailResponse;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptPageResponse;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyReceipt;
import com.yd.csf.service.service.IPolicyReceiptService;
import com.yd.csf.service.service.PolicyService;
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.ArrayList;
import java.util.Arrays;
import java.util.Objects;
@Slf4j
@Service
public class ApiPolicyReceiptServiceImpl implements ApiPolicyReceiptService {
@Autowired
private IPolicyReceiptService iPolicyReceiptService;
@Autowired
private PolicyService policyService;
/**
* 分页列表查询-保单回执信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiPolicyReceiptPageResponse>> page(ApiPolicyReceiptPageRequest request) {
Page<ApiPolicyReceiptPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiPolicyReceiptPageResponse> iPage = iPolicyReceiptService.page(page, request);
return Result.success(iPage);
}
/**
* 详情-保单回执信息
* @param policyReceiptBizId 保单回执表唯一业务ID
* @return
*/
@Override
public Result<ApiPolicyReceiptDetailResponse> detail(String policyReceiptBizId) {
PolicyReceipt policyReceipt = iPolicyReceiptService.queryOne(policyReceiptBizId);
if (Objects.isNull(policyReceipt)) {
throw new BusinessException("回执信息不存在");
}
//校验保单信息是否存在
Policy policy = policyService.queryOne(policyReceipt.getPolicyNo());
if (Objects.isNull(policy)) {
throw new BusinessException("保单信息不存在");
}
ApiPolicyReceiptDetailResponse response = new ApiPolicyReceiptDetailResponse();
BeanUtils.copyProperties(policy,response);
BeanUtils.copyProperties(policyReceipt,response);
response.setPolicyHolderSignatureList(StringUtils.isNotBlank(policyReceipt.getPolicyHolderSignature()) ? Arrays.asList(policyReceipt.getPolicyHolderSignature().split(";").clone()) : new ArrayList<>());
response.setInsuranceCompany(policy.getInsuranceCompany());
return Result.success(response);
}
/**
* 添加-保单回执信息
* @param request
* @return
*/
@Override
public Result add(ApiPolicyReceiptAddRequest request) {
//校验保单信息是否存在
Policy policy = policyService.queryOne(request.getPolicyNo());
if (Objects.isNull(policy)) {
throw new BusinessException("保单信息不存在");
}
PolicyReceipt policyReceipt = new PolicyReceipt();
policyReceipt.setPolicyNo(request.getPolicyNo());
policyReceipt.setReceiptDate(request.getReceiptDate());
policyReceipt.setPolicyReceiptBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_POLICY_RECEIPT.getCode()));
policyReceipt.setReceiptStatus(request.getReceiptStatus());
policyReceipt.setPolicyHolderSignature(!CollectionUtils.isEmpty(request.getPolicyHolderSignatureList()) ? String.join(";", request.getPolicyHolderSignatureList()) : "");
iPolicyReceiptService.saveOrUpdate(policyReceipt);
return Result.success();
}
/**
* 编辑-保单回执信息
* @param request
* @return
*/
@Override
public Result edit(ApiPolicyReceiptEditRequest request) {
//校验保单回执信息是否存在
PolicyReceipt policyReceipt = iPolicyReceiptService.queryOne(request.getPolicyReceiptBizId());
if (Objects.isNull(policyReceipt)) {
throw new BusinessException("保单回执信息不存在");
}
//校验保单信息是否存在
Policy policy = policyService.queryOne(request.getPolicyNo());
if (Objects.isNull(policy)) {
throw new BusinessException("保单信息不存在");
}
policyReceipt.setPolicyNo(request.getPolicyNo());
policyReceipt.setReceiptDate(request.getReceiptDate());
policyReceipt.setReceiptStatus(request.getReceiptStatus());
policyReceipt.setPolicyHolderSignature(!CollectionUtils.isEmpty(request.getPolicyHolderSignatureList()) ? String.join(";", request.getPolicyHolderSignatureList()) : "");
iPolicyReceiptService.saveOrUpdate(policyReceipt);
return Result.success();
}
/**
* 编辑-回执状态
* @param policyReceiptBizId 保单回执信息表唯一标识(业务ID)
* @param receiptStatus 回执状态(CONFIRMED-已确认 UNCONFIRMED-未确认)
* @return
*/
@Override
public Result editReceiptStatus(String policyReceiptBizId, String receiptStatus) {
PolicyReceipt policyReceipt = iPolicyReceiptService.queryOne(policyReceiptBizId);
if (Objects.isNull(policyReceipt)) {
throw new BusinessException("回执信息不存在");
}
policyReceipt.setReceiptStatus(receiptStatus);
iPolicyReceiptService.saveOrUpdate(policyReceipt);
return Result.success();
}
}
......@@ -7,14 +7,19 @@ import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAppointmentCheckService;
import com.yd.csf.api.service.ApiPolicyholderService;
import com.yd.csf.api.service.ApiTaxationService;
import com.yd.csf.feign.dto.appointment.ApiPolicyholderInfoDto;
import com.yd.csf.feign.dto.taxation.ApiObjectTaxationDto;
import com.yd.csf.feign.utils.CommonUtil;
import com.yd.csf.service.model.Policyholder;
import com.yd.csf.service.service.IPolicyholderService;
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.Objects;
/**
......@@ -30,6 +35,9 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService {
@Autowired
private ApiAppointmentCheckService apiAppointmentCheckService;
@Autowired
private ApiTaxationService apiTaxationService;
/**
* 投保人信息详情
* @param appointmentBizId 预约信息主表唯一业务ID
......@@ -60,7 +68,7 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService {
//编辑预约入参字段校验 - 投保人信息字段校验
apiAppointmentCheckService.checkEditApiPolicyholderInfoDto(apiPolicyholderInfoDto);
//编辑投保人信息表数据
editPolicyholderData(apiPolicyholderInfoDto,apiPolicyholderInfoDto.getAppointmentBizId());
// editPolicyholderData(apiPolicyholderInfoDto,apiPolicyholderInfoDto.getAppointmentBizId());
return Result.success();
}
......@@ -86,6 +94,17 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService {
//地址信息(json串)
policyholder.setAddressList(CommonUtil.getAddressListJsonStr(dto.getAddressList()));
iPolicyholderService.saveOrUpdate(policyholder);
//添加投保人税务列表信息
if (!CollectionUtils.isEmpty(dto.getApiTaxationDtoList())) {
apiTaxationService.saveTaxationList(ApiObjectTaxationDto.builder()
.objectBizId(policyholder.getPolicyholderBizId())
.objectName(CommonEnum.UID_TYPE_POLICYHOLDER.getName())
.objectTableName(CommonEnum.UID_TYPE_POLICYHOLDER.getCode())
.objectType(CommonEnum.UID_TYPE_POLICYHOLDER.getCode())
.apiTaxationDtoList(dto.getApiTaxationDtoList())
.build());
}
return Result.success(policyholder);
}
......@@ -101,6 +120,9 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService {
//投保人信息对象不能为空
throw new BusinessException("投保人信息对象不能为空");
}
if (StringUtils.isBlank(dto.getPolicyholderBizId())) {
throw new BusinessException("投保人信息表唯一业务ID不能为空");
}
//校验投保人信息是否存在
Result<Policyholder> result = checkPolicyholderIsExist(dto.getPolicyholderBizId());
Policyholder policyholder = result.getData();
......@@ -110,6 +132,17 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService {
//地址信息(json串)
policyholder.setAddressList(CommonUtil.getAddressListJsonStr(dto.getAddressList()));
iPolicyholderService.saveOrUpdate(policyholder);
//添加税务信息列表信息
if (!CollectionUtils.isEmpty(dto.getApiTaxationDtoList())) {
apiTaxationService.saveTaxationList(ApiObjectTaxationDto.builder()
.objectBizId(policyholder.getPolicyholderBizId())
.objectName(CommonEnum.UID_TYPE_POLICYHOLDER.getName())
.objectTableName(CommonEnum.UID_TYPE_POLICYHOLDER.getCode())
.objectType(CommonEnum.UID_TYPE_POLICYHOLDER.getCode())
.apiTaxationDtoList(dto.getApiTaxationDtoList())
.build());
}
return Result.success(policyholder);
}
......
package com.yd.csf.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.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiPremiumRemittanceFileService;
import com.yd.csf.feign.dto.premiumremittancefile.ApiPremiumRemittanceFileDto;
import com.yd.csf.feign.request.premiumremittancefile.ApiPremiumRemittanceFilePageRequest;
import com.yd.csf.feign.response.premiumremittancefile.ApiPremiumRemittanceFilePageResponse;
import com.yd.csf.service.model.PremiumRemittanceFile;
import com.yd.csf.service.service.IPremiumRemittanceFileService;
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.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Slf4j
@Service
public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittanceFileService {
@Autowired
private IPremiumRemittanceFileService iPremiumRemittanceFileService;
/**
* 分页列表查询-保费汇款记录附件信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiPremiumRemittanceFilePageResponse>> page(ApiPremiumRemittanceFilePageRequest request) {
Page<ApiPremiumRemittanceFilePageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiPremiumRemittanceFilePageResponse> iPage = iPremiumRemittanceFileService.page(page, request);
return Result.success(iPage);
}
/**
* 添加-保费汇款记录附件信息
* @param request
* @return
*/
@Override
public Result add(ApiPremiumRemittanceFileDto request) {
if (StringUtils.isBlank(request.getPremiumRemittanceBizId())) {
throw new BusinessException("保费对账-汇款记录表唯一业务ID不能为空");
}
PremiumRemittanceFile premiumRemittanceFile = new PremiumRemittanceFile();
BeanUtils.copyProperties(request,premiumRemittanceFile);
premiumRemittanceFile.setPremiumRemittanceBizId(request.getPremiumRemittanceBizId());
premiumRemittanceFile.setPremiumRemittanceFileBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_PREMIUM_REMITTANCE_FILE.getCode()));
iPremiumRemittanceFileService.saveOrUpdate(premiumRemittanceFile);
return Result.success();
}
/**
* 编辑-保费汇款记录附件信息
* @param request
* @return
*/
@Override
public Result edit(ApiPremiumRemittanceFileDto request) {
if (StringUtils.isBlank(request.getPremiumRemittanceBizId())) {
throw new BusinessException("保费对账-汇款记录表唯一业务ID不能为空");
}
if (StringUtils.isBlank(request.getPremiumRemittanceFileBizId())) {
throw new BusinessException("保费汇款记录附件表唯一业务ID不能为空");
}
Result<PremiumRemittanceFile> result = checkPremiumRemittanceFileIsExist(request.getPremiumRemittanceFileBizId());
PremiumRemittanceFile file = result.getData();
BeanUtils.copyProperties(request,file);
iPremiumRemittanceFileService.saveOrUpdate(file);
return Result.success();
}
/**
* 删除-保费汇款记录附件信息
* @param premiumRemittanceFileBizId
* @return
*/
@Override
public Result del(String premiumRemittanceFileBizId) {
Result<PremiumRemittanceFile> result = checkPremiumRemittanceFileIsExist(premiumRemittanceFileBizId);
PremiumRemittanceFile file = result.getData();
iPremiumRemittanceFileService.removeById(file.getId());
return Result.success();
}
/**
* 添加-保费对账汇款记录附件列表
* @param apiPremiumRemittanceFileDtoList
* @param premiumRemittanceBizId
* @return
*/
@Override
public Result addPremiumRemittanceFileList(List<ApiPremiumRemittanceFileDto> apiPremiumRemittanceFileDtoList,
String premiumRemittanceBizId) {
if (CollectionUtils.isEmpty(apiPremiumRemittanceFileDtoList)) {
return Result.success();
}
List<PremiumRemittanceFile> addPremiumRemittanceFileList = apiPremiumRemittanceFileDtoList
.stream().map(dto -> {
PremiumRemittanceFile file = new PremiumRemittanceFile();
BeanUtils.copyProperties(dto,file);
file.setPremiumRemittanceBizId(premiumRemittanceBizId);
file.setPremiumRemittanceFileBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_PREMIUM_REMITTANCE_FILE.getCode()));
return file;
}).collect(Collectors.toList());
iPremiumRemittanceFileService.saveOrUpdateBatch(addPremiumRemittanceFileList);
return Result.success();
}
/**
* 保存-保费对账汇款记录附件列表
* @param apiPremiumRemittanceFileDtoList
* @param premiumRemittanceBizId
* @return
*/
@Override
public Result savePremiumRemittanceFileList(List<ApiPremiumRemittanceFileDto> apiPremiumRemittanceFileDtoList,
String premiumRemittanceBizId) {
//先删后新增
iPremiumRemittanceFileService.delByPremiumRemittanceBizId(premiumRemittanceBizId);
//新增
if (CollectionUtils.isEmpty(apiPremiumRemittanceFileDtoList)) {
return Result.success();
}
List<PremiumRemittanceFile> saveList = apiPremiumRemittanceFileDtoList.stream().map(dto -> {
PremiumRemittanceFile file = new PremiumRemittanceFile();
BeanUtils.copyProperties(dto,file);
file.setPremiumRemittanceBizId(premiumRemittanceBizId);
file.setPremiumRemittanceFileBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_PREMIUM_REMITTANCE_FILE.getCode()));
return file;
}).collect(Collectors.toList());
iPremiumRemittanceFileService.saveOrUpdateBatch(saveList);
return Result.success();
}
/**
* 根据保费对账-汇款记录表唯一业务ID删除
* @param premiumRemittanceBizId
* @return
*/
@Override
public Result delByPremiumRemittanceBizId(String premiumRemittanceBizId) {
iPremiumRemittanceFileService.delByPremiumRemittanceBizId(premiumRemittanceBizId);
return Result.success();
}
/**
* 根据保费对账-汇款记录表唯一业务ID查询保费汇款记录附件列表
* @param premiumRemittanceBizId
* @return
*/
@Override
public List<ApiPremiumRemittanceFileDto> apiPremiumRemittanceFileDtoList(String premiumRemittanceBizId) {
List<PremiumRemittanceFile> fileList = iPremiumRemittanceFileService.queryList(premiumRemittanceBizId);
if (CollectionUtils.isEmpty(fileList)) {
return new ArrayList<>();
}
List<ApiPremiumRemittanceFileDto> fileDtoList = fileList.stream().map(dto -> {
ApiPremiumRemittanceFileDto fileDto = new ApiPremiumRemittanceFileDto();
BeanUtils.copyProperties(dto,fileDto);
return fileDto;
}).collect(Collectors.toList());
return fileDtoList;
}
/**
* 校验保费汇款记录附件信息是否存在
* @param premiumRemittanceFileBizId
* @return
*/
@Override
public Result<PremiumRemittanceFile> checkPremiumRemittanceFileIsExist(String premiumRemittanceFileBizId) {
PremiumRemittanceFile premiumRemittanceFile = iPremiumRemittanceFileService.queryOne(premiumRemittanceFileBizId);
if (Objects.isNull(premiumRemittanceFile)) {
//数据不存在
throw new BusinessException("保费汇款记录附件信息不存在");
}
return Result.success(premiumRemittanceFile);
}
}
......@@ -14,6 +14,7 @@ import com.yd.csf.feign.dto.appointment.ApiProductPlanMainInfoDto;
import com.yd.csf.service.model.ProductPlan;
import com.yd.csf.service.service.IProductPlanService;
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;
......@@ -68,6 +69,7 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService {
if (!Objects.isNull(productPlan)) {
dto = new ApiProductPlanMainInfoDto();
BeanUtils.copyProperties(productPlan,dto);
dto.setProductLaunchMainName(productPlan.getProductLaunchName());
}
return Result.success(dto);
}
......@@ -85,11 +87,11 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService {
ApiProductPlanInfoDto productPlanInfoDto = new ApiProductPlanInfoDto();
productPlanInfoDto.setApiProductPlanMainInfoDto(apiProductPlanMainInfoDto);
Result<ProductPlan> result = editProductPlanData(productPlanInfoDto,apiProductPlanMainInfoDto.getAppointmentBizId());
// Result<ProductPlan> result = editProductPlanData(productPlanInfoDto,apiProductPlanMainInfoDto.getAppointmentBizId());
String planBizId = "";
if (!Objects.isNull(result.getData())) {
planBizId = result.getData().getPlanBizId();
}
// if (!Objects.isNull(result.getData())) {
// planBizId = result.getData().getPlanBizId();
// }
return Result.success(planBizId);
}
......@@ -130,6 +132,7 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService {
productPlan.setPlanBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_PRODUCT_PLAN.getCode()));
//预约信息主表唯一业务ID
productPlan.setAppointmentBizId(appointmentBizId);
productPlan.setProductLaunchName(dto.getProductLaunchMainName());
iProductPlanService.saveOrUpdate(productPlan);
return Result.success(productPlan);
}
......@@ -147,6 +150,12 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService {
//不能为空
throw new BusinessException("产品计划主信息对象不能为空");
}
if (!Objects.isNull(productPlanInfoDto)
&& !Objects.isNull(productPlanInfoDto.getApiProductPlanMainInfoDto())
&& StringUtils.isBlank(productPlanInfoDto.getApiProductPlanMainInfoDto().getPlanBizId())){
//不能为空
throw new BusinessException("产品计划信息表唯一业务ID不能为空");
}
//产品计划主信息
ApiProductPlanMainInfoDto dto = productPlanInfoDto.getApiProductPlanMainInfoDto();
Result<ProductPlan> result = checkProductPlanIsExist(dto.getPlanBizId());
......@@ -154,6 +163,7 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService {
BeanUtils.copyProperties(dto,productPlan);
//预约信息主表唯一业务ID
productPlan.setAppointmentBizId(appointmentBizId);
productPlan.setProductLaunchName(dto.getProductLaunchMainName());
iProductPlanService.saveOrUpdate(productPlan);
return Result.success(productPlan);
}
......
......@@ -60,7 +60,7 @@ public class ApiSecondHolderServiceImpl implements ApiSecondHolderService {
if (Objects.isNull(apiSecondHolderInfoDto)) {
apiSecondHolderInfoDto = new ApiSecondHolderInfoDto();
}
editSecondHolderData(apiSecondHolderInfoDto,apiSecondHolderInfoDto.getAppointmentBizId());
// editSecondHolderData(apiSecondHolderInfoDto,apiSecondHolderInfoDto.getAppointmentBizId());
return Result.success();
}
......
package com.yd.csf.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiTaxationService;
import com.yd.csf.feign.dto.taxation.ApiObjectTaxationDto;
import com.yd.csf.service.dto.TaxationDto;
import com.yd.csf.service.model.Taxation;
import com.yd.csf.service.service.ITaxationService;
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.stream.Collectors;
@Slf4j
@Service
public class ApiTaxationServiceImpl implements ApiTaxationService {
@Autowired
private ITaxationService iTaxationService;
/**
* 保存税务列表信息
* @param dto
* @return
*/
@Override
public Result saveTaxationList(ApiObjectTaxationDto dto) {
//先删后新增
iTaxationService.delByObjectBizId(dto.getObjectBizId());
//新增
if (!CollectionUtils.isEmpty(dto.getApiTaxationDtoList())) {
List<Taxation> saveList = dto.getApiTaxationDtoList().stream().map(d -> {
Taxation taxation = new Taxation();
BeanUtils.copyProperties(d,taxation);
taxation.setTaxId(d.getTaxId());
taxation.setTaxCountry(d.getTaxCountry());
taxation.setTaxationBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_TAXATION.getCode()));
return taxation;
}).collect(Collectors.toList());
iTaxationService.saveOrUpdateBatch(saveList);
}
return Result.success();
}
/**
* 查询列表
* @param dto
* @return
*/
@Override
public Result<List<Taxation>> list(ApiObjectTaxationDto dto) {
List<Taxation> list = iTaxationService.queryList(TaxationDto.builder().objectBizId(dto.getObjectBizId()).build());
return Result.success(list);
}
}
package com.yd.csf.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiTeamService;
import com.yd.csf.feign.request.team.ApiTeamListRequest;
import com.yd.csf.feign.request.team.ApiTeamPageRequest;
import com.yd.csf.feign.response.team.ApiTeamDetailResponse;
import com.yd.csf.feign.response.team.ApiTeamPageResponse;
import com.yd.csf.service.dto.TeamDto;
import com.yd.csf.service.model.Team;
import com.yd.csf.service.service.ITeamService;
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.stream.Collectors;
@Slf4j
@Service
public class ApiTeamServiceImpl implements ApiTeamService {
@Autowired
private ITeamService iTeamService;
/**
* 分页列表查询-团队信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiTeamPageResponse>> page(ApiTeamPageRequest request) {
Page<ApiTeamPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiTeamPageResponse> iPage = iTeamService.page(page, request);
return Result.success(iPage);
}
/**
* 列表查询-团队信息
* @param request
* @return
*/
@Override
public Result<List<ApiTeamDetailResponse>> list(ApiTeamListRequest request) {
List<Team> teamList = iTeamService.queryList(TeamDto.builder().teamName(request.getTeamName()).build());
if (CollectionUtils.isEmpty(teamList)) {
return Result.success();
}
List<ApiTeamDetailResponse> responses = teamList.stream().map(dto -> {
ApiTeamDetailResponse response = new ApiTeamDetailResponse();
BeanUtils.copyProperties(dto,response);
return response;
}).collect(Collectors.toList());
return Result.success(responses);
}
}
......@@ -41,5 +41,11 @@
<artifactId>yd-user-feign</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-base-feign</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
......@@ -7,6 +7,7 @@ import com.yd.csf.feign.fallback.appointment.ApiAppointmentFeignFallbackFactory;
import com.yd.csf.feign.request.appointment.*;
import com.yd.csf.feign.response.appointment.ApiAppointmentAddResponse;
import com.yd.csf.feign.response.appointment.ApiAppointmentDetailResponse;
import com.yd.csf.feign.response.appointment.ApiAppointmentLogDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -57,7 +58,7 @@ public interface ApiAppointmentFeignClient {
* @return
*/
@PostMapping("/add/storage")
Result addStorage(@Validated @RequestBody ApiAppointmentAddStorageRequest request);
Result addStorage(@RequestBody ApiAppointmentAddStorageRequest request);
/**
* 编辑预约提交 (聚合信息编辑预约提交)
......@@ -68,6 +69,14 @@ public interface ApiAppointmentFeignClient {
Result edit(@Validated @RequestBody ApiAppointmentEditRequest request);
/**
* 编辑预约暂存 (聚合信息编辑预约暂存)
* @param request
* @return
*/
@PutMapping("/edit/storage")
Result editStorage(@RequestBody ApiAppointmentEditStorageRequest request);
/**
* 确定预约时间提交 (流程流转到新单跟进)
* @param request
* @return
......@@ -124,10 +133,35 @@ public interface ApiAppointmentFeignClient {
Result editPolicyTransfer(@Validated @RequestBody ApiPolicyTransferRequest request);
/**
* 编辑预约状态
* @param request
* @return
*/
@PutMapping("/edit/status")
Result editStatus(@Validated @RequestBody ApiAppointmentEditStatusRequest request);
/**
* 删除预约信息
* @param appointmentBizId
* @return
*/
@DeleteMapping("/del")
Result del(@NotBlank(message = "预约信息主表唯一业务ID不能为空") @RequestParam(value = "appointmentBizId") String appointmentBizId);
/**
* 历史记录 - 签约信息
* @param request
* @return
*/
@PostMapping("/log/page")
Result logPage(@Validated @RequestBody ApiAppointmentLogPageRequest request);
/**
* 历史记录 - 签约信息 - 详情
* @param appointmentLogBizId
* @return
*/
@GetMapping("/log/detail")
Result<ApiAppointmentLogDetailResponse> logDetail(@NotBlank(message = "预约信息日志表唯一业务ID不能为空") @RequestParam(value = "appointmentLogBizId") String appointmentLogBizId);
}
package com.yd.csf.feign.client.common;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.common.ApiCsfCommonFeignFallbackFactory;
import com.yd.csf.feign.request.common.ApiCsfCalculateRequest;
import com.yd.csf.feign.response.common.ApiCsfCalculateResponse;
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-csf-api", fallbackFactory = ApiCsfCommonFeignFallbackFactory.class)
public interface ApiCsfCommonFeignClient {
/**
* 计算-字段值
* @param request
* @return
*/
@PostMapping("/calculate/fieldValue")
Result<List<ApiCsfCalculateResponse>> calculate(@Validated @RequestBody ApiCsfCalculateRequest request);
}
package com.yd.csf.feign.client.expectedfortune;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.expectedfortune.ApiExpectedFortuneFeignFallbackFactory;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-预计发佣信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiExpectedFortuneFeignFallbackFactory.class)
public interface ApiExpectedFortuneFeignClient {
/**
* 生成预计发佣
* @param request
* @return
*/
@PostMapping("/generate")
Result<ApiGenerateExpectedFortuneResponse> generate(@Validated @RequestBody ApiGenerateExpectedFortuneRequest request);
/**
* 分页查询 - 预计发佣
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiExpectedFortunePageRequest request);
/**
* 查询保单是否生成过预计发佣
* @param policyNo
* @return
*/
@GetMapping("/isGenerate")
Result<Boolean> isGenerate(@NotBlank(message = "保单号不能为空") @RequestParam(value = "policyNo") String policyNo);
/**
* 根据保单号批量删除预计发佣数据
* @param policyNo
* @return
*/
@DeleteMapping("/batch/del/policyNo")
Result batchDelByPolicyNo(@NotBlank(message = "保单号不能为空") @RequestParam(value = "policyNo") String policyNo);
}
package com.yd.csf.feign.client.expectedfortunelog;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.expectedfortunelog.ApiExpectedFortuneLogFeignFallbackFactory;
import com.yd.csf.feign.request.expectedfortunelog.ApiExpectedFortuneLogPageRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 香港保险服务-预计发佣日志记录信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiExpectedFortuneLogFeignFallbackFactory.class)
public interface ApiExpectedFortuneLogFeignClient {
/**
* 分页查询 - 生成预计发佣日志记录
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiExpectedFortuneLogPageRequest request);
}
package com.yd.csf.feign.client.policyreceipt;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.policyreceipt.ApiPolicyReceiptFeignFallbackFactory;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptAddRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptEditRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptPageRequest;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-保单回执信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiPolicyReceiptFeignFallbackFactory.class)
public interface ApiPolicyReceiptFeignClient {
/**
* 分页列表查询-保单回执信息
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiPolicyReceiptPageRequest request);
/**
* 详情-保单回执信息
* @param policyReceiptBizId 保单回执表唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiPolicyReceiptDetailResponse> detail(@NotBlank(message = "保单回执表唯一业务ID能为空") @RequestParam(value = "policyReceiptBizId") String policyReceiptBizId);
/**
* 添加-保单回执信息
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiPolicyReceiptAddRequest request);
/**
* 编辑-保单回执信息
* @param request
* @return
*/
@PostMapping("/edit")
Result edit(@Validated @RequestBody ApiPolicyReceiptEditRequest request);
/**
* 编辑-回执状态
* @param policyReceiptBizId 保单回执信息表唯一标识(业务ID)
* @param receiptStatus 回执状态(CONFIRMED-已确认 UNCONFIRMED-未确认)
* @return
*/
@PutMapping("/edit/receiptStatus")
Result editReceiptStatus(@NotBlank(message = "保单回执信息表唯一业务ID能为空") @RequestParam(value = "policyReceiptBizId") String policyReceiptBizId,
@NotBlank(message = "回执状态不能为空") @RequestParam(value = "receiptStatus") String receiptStatus);
}
package com.yd.csf.feign.client.premiumreconciliation;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.premiumreconciliation.ApiPremiumReconciliationDto;
import com.yd.csf.feign.fallback.premiumreconciliation.ApiPremiumReconciliationFeignFallbackFactory;
import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationAddRequest;
import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationPageRequest;
import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationResultEditRequest;
import com.yd.csf.feign.request.premiumreconciliation.ApiCalculateRemainingUnpaidAmountRequest;
import com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationDetailResponse;
import com.yd.csf.feign.response.premiumreconciliation.ApiCalculateRemainingUnpaidAmountResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-保费对账记录信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiPremiumReconciliationFeignFallbackFactory.class)
public interface ApiPremiumReconciliationFeignClient {
/**
* 分页列表查询-保费对账记录信息
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiPremiumReconciliationPageRequest request);
/**
* 添加-保费对账记录信息(聚合信息添加)
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiPremiumReconciliationAddRequest request);
/**
* 编辑-单个保费对账记录信息
* @param request
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiPremiumReconciliationDto request);
/**
* 详情-保费对账记录信息
* @param premiumReconciliationBizId 保费对账记录表唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiPremiumReconciliationDetailResponse> detail(@NotBlank(message = "保费对账记录表唯一业务ID能为空") @RequestParam(value = "premiumReconciliationBizId") String premiumReconciliationBizId);
/**
* 计算待付金额-保费对账记录信息
* @param request
* @return
*/
@PostMapping("/calculate/remainingUnpaidAmount")
Result<ApiCalculateRemainingUnpaidAmountResponse> calculateRemainingUnpaidAmount(@Validated @RequestBody ApiCalculateRemainingUnpaidAmountRequest request);
/**
* 设置认定结果-保费对账记录信息
* @param request
* @return
*/
@PutMapping("/edit/result")
Result editResult(@Validated @RequestBody ApiPremiumReconciliationResultEditRequest request);
/**
* 校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了)
* @param policyNo
* @return
*/
@GetMapping("/check/reconciliation/complete")
Result<Boolean> checkReconciliationComplete(@NotBlank(message = "保单号能为空") @RequestParam(value = "policyNo") String policyNo);
}
package com.yd.csf.feign.client.premiumremittance;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.premiumremittance.ApiPremiumRemittanceDto;
import com.yd.csf.feign.fallback.premiumremittance.ApiPremiumRemittanceFeignFallbackFactory;
import com.yd.csf.feign.request.premiumremittance.ApiPremiumRemittancePageRequest;
import com.yd.csf.feign.request.premiumremittancefile.ApiPremiumRemittanceFilePageRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-保费对账汇款记录信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiPremiumRemittanceFeignFallbackFactory.class)
public interface ApiPremiumRemittanceFeignClient {
/**
* 分页列表查询-保费对账汇款记录信息
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiPremiumRemittancePageRequest request);
/**
* 添加-单个保费对账汇款记录信息
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiPremiumRemittanceDto request);
/**
* 编辑-单个保费对账汇款记录信息
* @param request
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiPremiumRemittanceDto request);
/**
* 详情-保费对账汇款记录信息
* @param premiumRemittanceBizId 保费对账-汇款记录表唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiPremiumRemittanceDto> detail(@NotBlank(message = "保费对账-汇款记录表唯一业务ID能为空") @RequestParam(value = "premiumRemittanceBizId") String premiumRemittanceBizId);
/**
* 删除-单个保费对账汇款记录信息
* @param premiumRemittanceBizId
* @return
*/
@DeleteMapping("/del")
Result del(@NotBlank(message = "保费对账-汇款记录表唯一业务ID能为空") @RequestParam(value = "premiumRemittanceBizId") String premiumRemittanceBizId);
}
package com.yd.csf.feign.client.premiumremittancefile;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.premiumremittancefile.ApiPremiumRemittanceFileDto;
import com.yd.csf.feign.fallback.premiumremittancefile.ApiPremiumRemittanceFileFeignFallbackFactory;
import com.yd.csf.feign.request.premiumremittancefile.ApiPremiumRemittanceFilePageRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-保费汇款记录附件信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiPremiumRemittanceFileFeignFallbackFactory.class)
public interface ApiPremiumRemittanceFileFeignClient {
/**
* 分页列表查询-保费汇款记录附件信息
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiPremiumRemittanceFilePageRequest request);
/**
* 添加-保费汇款记录附件信息
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiPremiumRemittanceFileDto request);
/**
* 编辑-保费汇款记录附件信息
* @param request
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiPremiumRemittanceFileDto request);
/**
* 删除-保费汇款记录附件信息
* @param premiumRemittanceFileBizId
* @return
*/
@DeleteMapping("/del")
Result del(@NotBlank(message = "保费汇款记录附件表唯一业务ID能为空") @RequestParam(value = "premiumRemittanceFileBizId") String premiumRemittanceFileBizId);
}
package com.yd.csf.feign.client.team;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.team.ApiTeamFeignFallbackFactory;
import com.yd.csf.feign.request.team.ApiTeamListRequest;
import com.yd.csf.feign.request.team.ApiTeamPageRequest;
import com.yd.csf.feign.response.team.ApiTeamDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 香港保险服务-团队信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiTeamFeignFallbackFactory.class)
public interface ApiTeamFeignClient {
/**
* 分页列表查询-团队信息
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiTeamPageRequest request);
/**
* 列表查询-团队信息
* @param request
* @return
*/
@PostMapping("/list")
Result<List<ApiTeamDetailResponse>> list(@RequestBody ApiTeamListRequest request);
}
......@@ -2,7 +2,11 @@ package com.yd.csf.feign.dto.appointment;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;
/**
* 预约信息
......@@ -11,38 +15,37 @@ import java.time.LocalDateTime;
public class ApiAppointmentInfoDto {
/**
* 预约信息表主键id(新增不需要传值,修改需要传值)
*/
private Long id;
/**
* 预约信息主表唯一业务ID(新增不需要传值,修改需要传值)
*/
private String appointmentBizId;
/**
* 预约编号(和预约信息主表唯一业务ID是一对,唯一,冗余字段)
* 预约编号
*/
private String appointmentNo;
/**
* 关联客户信息表唯一业务ID(冗余字段)
*/
@NotBlank(message = "签约信息-关联客户信息表唯一业务ID不能为空")
private String customerBizId;
/**
* 关联客户编号(和客户信息表唯一业务ID是一对,唯一,冗余字段)
*/
// @NotBlank(message = "签约信息-关联客户编号不能为空")
private String customerNo;
/**
* 关联FNA信息表唯一业务ID(冗余字段)
*/
@NotBlank(message = "签约信息-关联FNA信息表唯一业务ID不能为空")
private String fnaBizId;
/**
* 关联FNA编号(和FNA信息表唯一业务ID是一对,唯一,冗余字段)
*/
@NotBlank(message = "签约信息-关联FNA编号不能为空")
private String fnaNo;
/**
......@@ -58,51 +61,15 @@ public class ApiAppointmentInfoDto {
/**
* 申请类型(字典)
*/
// @NotBlank(message = "申请类型不能为空")
@NotBlank(message = "签约信息-申请类型不能为空")
private String applyType;
/**
* 业务编号
*/
private String businessNo;
/**
* 确定预约时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime confirmAppointmentTime;
/**
* 意向预约时间
* 签单日
*/
// @NotNull(message = "意向预约时间不能为空")
@NotNull(message = "签约信息-签单日不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime intentionAppointmentTime;
/**
* 顾问是否陪同: 0-否, 1-是(字典)
*/
private Integer isAccompany;
/**
* 陪同顾问姓名(FNA Form有填写,可带入)
*/
private String accompanyName;
/**
* 陪同顾问手机区号
*/
private String accompanyMobileCode;
/**
* 陪同顾问手机
*/
private String accompanyMobile;
/**
* 陪同顾问邮箱
*/
private String accompanyEmail;
private LocalDateTime signDate;
/**
* 到港时间
......@@ -122,7 +89,7 @@ public class ApiAppointmentInfoDto {
private String meetingPoint;
/**
* 签单地址
* 签单地址(签单地点)
*/
private String signingAddress;
......@@ -147,6 +114,11 @@ public class ApiAppointmentInfoDto {
private String bankName;
/**
* 开户行ID
*/
private String bankId;
/**
* 开户行支行(分行)
*/
private String bankBranchName;
......@@ -174,6 +146,11 @@ public class ApiAppointmentInfoDto {
private String openAccountNotice;
/**
* 开户所需资料
*/
private String materials;
/**
* 是否体检: 0-否, 1-是(字典)
*/
private Integer isTj;
......@@ -189,37 +166,32 @@ public class ApiAppointmentInfoDto {
private String policyTransfer;
/**
* 业务代表1账号
*/
private String businessRepresentAccount1;
/**
* 业务代表1姓名
* 是否有用车服务:0-否, 1-是(字典)
*/
private String businessRepresentName1;
private Integer isUseCar;
/**
* 业务代表1电话号码区号
* 是否有第二持有人
*/
private String businessRepresentMobile1Code;
private Integer isSecond;
/**
* 业务代表1电话号码
* 转介人是否陪同
*/
private String businessRepresentMobile1;
private Integer isReferrerAccompany;
/**
* 业务代表1邮箱
* 创建人用户名
*/
private String businessRepresentEmail1;
private String creatorName;
/**
* 是否有用车服务:0-否, 1-是(字典)
* 陪同转介人信息列表
*/
private Integer isUseCar;
private List<ApiAppointmentReferrerDto> referrerDtoList;
/**
* 创建人用户名
* 签单员信息列表
*/
private String creatorName;
private List<ApiAppointmentUserSignDto> userSignDtoList;
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import java.util.List;
@Data
public class ApiAppointmentMaterialDto {
/**
* 材料信息表唯一业务ID
*/
private String materialBizId;
/**
* 文件元数据表唯一业务ID列表
*/
private List<String> fileBizIdList;
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
@Data
public class ApiAppointmentReferrerDto {
/**
* 预约-转介人信息表唯一业务ID
*/
private String appointmentReferrerBizId;
/**
* 系统用户-销售用户扩展表唯一业务ID(转介人,冗余)
*/
private String userSaleBizId;
/**
* 系统用户唯一业务ID(冗余)
*/
private String userBizId;
/**
* 姓名
*/
private String realName;
/**
* 手机号
*/
private String phone;
/**
* 邮箱
*/
private String email;
}
package com.yd.csf.feign.dto.appointment;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiAppointmentReferrerLogDto {
/**
* 预约-转介人信息日志表主键ID
*/
private Long id;
/**
* 预约-转介人信息日志表唯一业务ID
*/
private String appointmentReferrerLogBizId;
/**
* 预约信息日志表唯一业务ID
*/
private String appointmentLogBizId;
/**
* 系统用户-销售用户扩展表唯一业务ID(转介人,冗余)
*/
private String userSaleBizId;
/**
* 系统用户唯一业务ID(冗余)
*/
private String userBizId;
/**
* 姓名
*/
private String realName;
/**
* 手机号
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime updateTime;
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
@Data
public class ApiAppointmentUserSignDto {
/**
* 预约-签单员信息表唯一业务ID
*/
private String appointmentUserSignBizId;
/**
* 签单用户扩展唯一业务ID(冗余)
*/
private String userSignBizId;
/**
* 系统用户唯一业务ID(冗余)
*/
private String userBizId;
/**
* 姓名
*/
private String name;
/**
* 执业编码
*/
private String practiceCode;
/**
* 手机号
*/
private String phone;
/**
* 证件类型
*/
private String cardType;
/**
* 证件号码
*/
private String cardNo;
/**
* 邮箱
*/
private String email;
}
package com.yd.csf.feign.dto.appointment;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiAppointmentUserSignLogDto {
/**
* 预约-签单员信息日志表主键ID
*/
private Long id;
/**
* 预约-签单员信息日志表唯一业务ID
*/
private String appointmentUserSignLogBizId;
/**
* 预约信息日志表唯一业务ID
*/
private String appointmentLogBizId;
/**
* 签单用户扩展唯一业务ID(冗余)
*/
private String userSignBizId;
/**
* 系统用户唯一业务ID(冗余)
*/
private String userBizId;
/**
* 姓名
*/
private String realName;
/**
* 执业编码
*/
private String practiceCode;
/**
* 手机号
*/
private String phone;
/**
* 证件类型
*/
private String cardType;
/**
* 证件号码
*/
private String cardNo;
/**
* 邮箱
*/
private String email;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime updateTime;
}
package com.yd.csf.feign.dto.appointment;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.csf.feign.dto.AddressDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* 受益人信息
......@@ -16,54 +12,37 @@ import java.util.List;
public class ApiBeneficiaryInfoDto {
/**
* 受益人信息主键id(新增不需要传值,修改需要传值)
* 受益人信息表主键ID
*/
private Long id;
/**
* 预约信息主表唯一业务ID(新增不需要传值,修改需要传值)
* 预约信息主表唯一业务ID
*/
private String appointmentBizId;
/**
* 受益人信息表唯一业务ID(新增不需要传值,修改需要传值)
* 受益人信息表唯一业务ID
*/
private String beneficiaryBizId;
/**
* 客户类型(字典)(个人或者公司)
*/
// @NotBlank(message = "客户类型不能为空")
private String customerType;
/**
* 与受保人关系(字典)
*/
// @NotBlank(message = "与受保人关系不能为空")
private String insurantRel;
/**
* 受益比例
*/
private BigDecimal benefitRatio;
/**
* 名字
*/
private String name;
/**
* 名字-英文
* 姓名-中文
*/
private String nameEn;
private String nameCn;
/**
* 性别(字典
* 姓名-(拼音/英文,通过中文自动加载全部大写的拼音
*/
private String gender;
private String namePyEn;
/**
* 证件类型(字典)
* 证件类型(字典,下拉选择
*/
private String documentType;
......@@ -73,99 +52,24 @@ public class ApiBeneficiaryInfoDto {
private String idNumber;
/**
* 护照号码
*/
private String passportNumber;
/**
* 出生日期
* 性别(字典,如果是身份证,自动获取性别和生日)
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime birthTime;
/**
* 公司名称
*/
private String companyName;
/**
* 公司名称(英文)
*/
private String companyNameEn;
/**
* 公司商业登记号码
*/
private String companyBusinessNo;
private String gender;
/**
* 公司注册日期
* 出生日期(生日,如果是身份证,自动获取性别和生日)
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime companyRegisterTime;
private LocalDateTime birthday;
/**
* 公司注册地区(字典
* 国籍(下拉选择
*/
private String companyRegisterRegion;
private String nationality;
/**
* 公司电话区号
*/
private String companyMobileCode;
/**
* 公司电话
*/
private String companyMobile;
/**
* 公司邮箱
*/
private String companyEmail;
/**
* 公司登记地址
*/
private String companyEnterAddress;
/**
* 通讯地址
*/
private String mailingAddress;
/**
* 授权代表姓名中文-名字
*/
private String authNameCn;
/**
* 授权代表姓名英文-名字
*/
private String authNameEn;
/**
* 授权代表职称
*/
private String authProfessional;
/**
* 授权代表电话区号
*/
private String authMobileCode;
/**
* 授权代表电话
*/
private String authMobile;
/**
* 地址列表
* 受益比例
*/
private List<AddressDto> addressList;
private BigDecimal benefitRatio;
/**
* 备注
*/
private String remark;
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class ApiBeneficiaryInfoFzDto {
/**
* 是否法定受益人
*/
@NotNull(message = "受益人-是否法定受益人不能为空")
private Integer isLegalBeneficiary;
/**
* 受益人列表信息
*/
private List<ApiBeneficiaryInfoDto> apiBeneficiaryInfoDtoList;
}
......@@ -3,6 +3,7 @@ package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 产品计划-附加险列表
......@@ -11,59 +12,64 @@ import java.math.BigDecimal;
public class ApiProductPlanAdditionalInfoDto {
/**
* 产品计划-附加险信息表主键id(新增不需要传值,编辑需要传值)
* 附加险信息表唯一业务ID
*/
private Long id;
private String additionalBizId;
/**
* 附加险信息表唯一业务ID(新增不需要传值,编辑需要传值)
* 产品计划信息表唯一业务ID
*/
private String additionalBizId;
private String planBizId;
/**
* 产品计划信息表唯一业务ID(新增不需要传值,编辑需要传值)
* 产品上架信息表唯一业务ID
*/
private String planBizId;
private String productLaunchBizId;
/**
* 保险附加产品唯一业务ID(中台保险附加产品业务id,冗余
* 产品上架信息表名称(标题
*/
// @NotBlank(message = "保险附加产品唯一业务ID不能为空")
private String additionalProductBizId;
private String productLaunchName;
/**
* 保险附加产品名称(中台保险附加产品名称,冗余
* 付款频率(字典
*/
// @NotBlank(message = "保险附加产品名称不能为空")
private String addProductName;
private String paymentFrequency;
/**
* 货币(字典)
* 供款期数
*/
// @NotBlank(message = "货币不能为空")
private String currency;
private String issueNumber;
/**
* 保
* 保障年期
*/
// @NotNull(message = "保费不能为空")
private BigDecimal premium;
private String guaranteePeriod;
/**
* 保额
* 保单币种
*/
private String policyCurrency;
/**
* 保单额度(重疾)
*/
// @NotNull(message = "保额不能为空")
private BigDecimal sumInsured;
/**
* 保障地区(字典)
* 每期保费
*/
private String guaranteeRegion;
private BigDecimal eachIssuePremium;
/**
* 等级(字典)
* 保障级别
*/
private String level;
private String protectionLevel;
/**
* 保障地区(字典)
*/
private String guaranteeRegion;
/**
* 自付额(字典)
......@@ -74,4 +80,10 @@ public class ApiProductPlanAdditionalInfoDto {
* 附加保障(json串)
*/
private String additionalSafeguards;
/**
* 保单征费
*/
private BigDecimal policyLevy;
}
......@@ -2,6 +2,7 @@ package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import javax.validation.Valid;
import java.util.List;
/**
......@@ -13,6 +14,7 @@ public class ApiProductPlanInfoDto {
/**
* 产品计划主信息
*/
@Valid
private ApiProductPlanMainInfoDto apiProductPlanMainInfoDto;
/**
......
......@@ -2,6 +2,7 @@ package com.yd.csf.feign.dto.appointment;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;
......@@ -12,82 +13,76 @@ import java.time.LocalDateTime;
public class ApiProductPlanMainInfoDto {
/**
* 产品计划表主键id(新增不需要传值,编辑需要传值)
* 产品计划信息表唯一业务ID
*/
private Long id;
private String planBizId;
/**
* 预约信息主表唯一业务ID(新增不需要传值,编辑需要传值
* 保险公司ID(产品上架信息绑定的保险公司参数
*/
private String appointmentBizId;
private String companyId;
/**
* 产品计划信息表唯一业务ID(新增不需要传值,编辑需要传值)
* 保险公司名称
*/
private String planBizId;
private String companyName;
/**
* 保险产品唯一业务ID(中台保险产品业务id,冗余
* 保险险种ID(产品上架信息绑定的保险险种参数
*/
// @NotBlank(message = "保险产品唯一业务ID不能为空")
private String productBizId;
private String insuranceTypeId;
/**
* 保险产品名称(中台保险产品名称,冗余)
* 保险险种CODE
*/
// @NotBlank(message = "保险产品名称不能为空")
private String productName;
private String insuranceTypeCode;
/**
* 保险公司名称(冗余字段)
* 保险险种名称
*/
private String companyName;
private String insuranceTypeName;
/**
* 地区
* 产品上架信息表唯一业务ID
*/
private String region;
@NotBlank(message = "产品计划-基本计划-产品ID不能为空")
private String productLaunchBizId;
/**
* 货币(字典
* 产品上架信息表名称(标题
*/
// @NotBlank(message = "货币不能为空")
private String currency;
@NotBlank(message = "产品计划-基本计划-产品名称不能为空")
private String productLaunchMainName;
/**
* 供款年期(字典)
* 供款期数
*/
// @NotBlank(message = "供款年期不能为空")
private String paymentTerm;
private String issueNumber;
/**
* 付款频率(字典)
* 保障年期
*/
// @NotBlank(message = "付款频率不能为空")
private String paymentFrequency;
private String guaranteePeriod;
/**
* 每期保费
* 保单币种
*/
// @NotNull(message = "每期保费不能为空")
private BigDecimal eachIssuePremium;
private String policyCurrency;
/**
* 保
* 保单额度(重疾)
*/
// @NotNull(message = "保额不能为空")
private BigDecimal sumInsured;
/**
* 是否预缴保费: 0-否, 1-是(字典)
* 付款频率(字典)
*/
// @NotNull(message = "是否预缴保费不能为空")
private Integer isPrepay;
private String paymentFrequency;
/**
* 预付额
* 每期保费
*/
private BigDecimal deductibles;
private BigDecimal eachIssuePremium;
/**
* 首期付款方式(字典)
......@@ -95,28 +90,38 @@ public class ApiProductPlanMainInfoDto {
private String initialPaymentMethod;
/**
* 续期付款方式(字典)
* 保单征费
*/
private String renewalPaymentMethod;
private BigDecimal policyLevy;
/**
* 红利分配方式(字典)
* 是否预缴保费: 0-否, 1-是(字典)
*/
private String dividendDistributionMethod;
private Integer isPrepay;
/**
* 保单日期回溯: 0-否, 1-是(字典)
* 是否追溯: 0-否, 1-是(字典)
*/
private Integer isBacktrack;
private Integer isTraceable;
/**
* 保单生效日
* 回溯日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime policyEffectiveDate;
private LocalDateTime backtrackDate;
/**
* 是否参加递增保障权益: 0-否, 1-是(字典)
*/
private Integer isJoin;
/**
* 红利分配方式(字典)
*/
private String dividendDistributionMethod;
/**
* 续期付款方式(字典)
*/
private String renewalPaymentMethod;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment