Commit e68c02c4 by zhangxingmin

预约相关接口

parent b04e93a7
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.ApiAdditionalService;
import com.yd.csf.feign.client.additional.ApiAdditionalFeignClient;
import com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto;
import com.yd.csf.feign.request.additional.ApiAdditionalPageRequest;
import com.yd.csf.feign.response.additional.ApiAdditionalPageResponse;
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-09-01
*/
@RestController
@RequestMapping("/additional")
@Validated
public class ApiAdditionalController implements ApiAdditionalFeignClient {
@Autowired
private ApiAdditionalService apiAdditionalService;
/**
* 附加险分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiAdditionalPageResponse>> page(ApiAdditionalPageRequest request) {
return apiAdditionalService.page(request);
}
/**
* 新增单个附加险信息
* @param apiProductPlanAdditionalInfoDto
* @return
*/
@Override
public Result add(ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto) {
return apiAdditionalService.add(apiProductPlanAdditionalInfoDto);
}
/**
* 编辑单个附加险信息
* @param apiProductPlanAdditionalInfoDto
* @return
*/
@Override
public Result edit(ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto) {
return apiAdditionalService.edit(apiProductPlanAdditionalInfoDto);
}
/**
* 单个附加险信息详情
* @param additionalBizId
* @return
*/
@Override
public Result<ApiProductPlanAdditionalInfoDto> detail(String additionalBizId) {
return apiAdditionalService.detail(additionalBizId);
}
/**
* 删除单个附加险信息
* @param additionalBizId
* @return
*/
@Override
public Result del(String additionalBizId) {
return apiAdditionalService.del(additionalBizId);
}
}
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.ApiAppointmentService;
import com.yd.csf.feign.client.appointment.ApiAppointmentFeignClient;
import com.yd.csf.feign.dto.appointment.ApiAppointmentInfoDto;
import com.yd.csf.feign.request.appointment.*;
import com.yd.csf.feign.response.appointment.ApiAppointmentDetailResponse;
import com.yd.csf.feign.response.appointment.ApiAppointmentPageResponse;
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-09-01
*/
@RestController
@RequestMapping("/appointment")
@Validated
public class ApiAppointmentController implements ApiAppointmentFeignClient {
@Autowired
private ApiAppointmentService apiAppointmentService;
/**
* 预约分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiAppointmentPageResponse>> page(ApiAppointmentPageRequest request) {
return apiAppointmentService.page(request);
}
/**
* 预约详情(聚合信息详情)
* @param appointmentBizId
* @return
*/
@Override
public Result<ApiAppointmentDetailResponse> detail(String appointmentBizId) {
return apiAppointmentService.detail(appointmentBizId);
}
/**
* 预约主体信息详情(单个对象详情)
* @param appointmentBizId
* @return
*/
@Override
public Result<ApiAppointmentInfoDto> mainDetail(String appointmentBizId) {
return apiAppointmentService.mainDetail(appointmentBizId);
}
/**
* 新增预约提交 (聚合信息新增预约提交)
* @param request
* @return
*/
@Override
public Result add(ApiAppointmentAddRequest request) {
return apiAppointmentService.add(request);
}
/**
* 新增预约暂存
* @param request
* @return
*/
@Override
public Result addStorage(ApiAppointmentAddStorageRequest request) {
return apiAppointmentService.addStorage(request);
}
/**
* 编辑预约提交 (聚合信息编辑预约提交)
* @param request
* @return
*/
@Override
public Result edit(ApiAppointmentEditRequest request) {
return apiAppointmentService.edit(request);
}
/**
* 确定预约时间提交 (流程流转到新单跟进)
* @param request
* @return
*/
@Override
public Result editConfirmTime(ApiAppointmentEditConfirmTimeRequest request) {
return apiAppointmentService.editConfirmTime(request);
}
/**
* 单个对象编辑-编辑预约主体信息
* @param apiAppointmentInfoDto
* @return
*/
@Override
public Result singleEdit(ApiAppointmentInfoDto apiAppointmentInfoDto) {
return apiAppointmentService.singleEdit(apiAppointmentInfoDto);
}
/**
* 预约编辑关联FNA
* @param request
* @return
*/
@Override
public Result editFna(ApiAppointmentEditFnaRequest request) {
return apiAppointmentService.editFna(request);
}
/**
* 预约解除关联FNA
* @param request
* @return
*/
@Override
public Result removeFna(ApiAppointmentRemoveFnaRequest request) {
return apiAppointmentService.removeFna(request);
}
/**
* 预约编辑关联计划书
* @param request
* @return
*/
@Override
public Result editProposal(ApiAppointmentEditProposalRequest request) {
return apiAppointmentService.editProposal(request);
}
/**
* 预约解除关联计划书
* @param request
* @return
*/
@Override
public Result removeProposal(ApiAppointmentRemoveProposalRequest request) {
return apiAppointmentService.removeProposal(request);
}
}
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.ApiAppointmentFileService;
import com.yd.csf.feign.client.appointmentfile.ApiAppointmentFileFeignClient;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileAddRequest;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileEditRequest;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFilePageRequest;
import com.yd.csf.feign.response.appointmentfile.ApiAppointmentFilePageResponse;
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-09-01
*/
@RestController
@RequestMapping("/appointmentFile")
@Validated
public class ApiAppointmentFileController implements ApiAppointmentFileFeignClient {
@Autowired
private ApiAppointmentFileService apiAppointmentFileService;
/**
* 预约附件信息分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiAppointmentFilePageResponse>> page(ApiAppointmentFilePageRequest request) {
return apiAppointmentFileService.page(request);
}
/**
* 新增预约附件信息
* @param request
* @return
*/
@Override
public Result add(ApiAppointmentFileAddRequest request) {
return apiAppointmentFileService.add(request);
}
/**
* 编辑预约附件信息
* @param request
* @return
*/
@Override
public Result edit(ApiAppointmentFileEditRequest request) {
return apiAppointmentFileService.edit(request);
}
/**
* 删除预约附件
* @param appointmentFileBizId
* @return
*/
@Override
public Result del(String appointmentFileBizId) {
return apiAppointmentFileService.del(appointmentFileBizId);
}
/**
* 下载预约附件
* @param appointmentFileBizId
* @return
*/
@Override
public Result download(String appointmentFileBizId) {
return apiAppointmentFileService.download(appointmentFileBizId);
}
}
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.ApiBeneficiaryService;
import com.yd.csf.feign.client.beneficiary.ApiBeneficiaryFeignClient;
import com.yd.csf.feign.dto.appointment.ApiBeneficiaryInfoDto;
import com.yd.csf.feign.dto.appointment.ApiInsurantInfoDto;
import com.yd.csf.feign.request.beneficiary.ApiBeneficiaryPageRequest;
import com.yd.csf.feign.response.beneficiary.ApiBeneficiaryPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 预约-受益人信息
*
* @author zxm
* @since 2025-09-01
*/
@RestController
@RequestMapping("/beneficiary")
public class ApiBeneficiaryController implements ApiBeneficiaryFeignClient {
@Autowired
private ApiBeneficiaryService apiBeneficiaryService;
/**
* 受益人信息分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiBeneficiaryPageResponse>> page(ApiBeneficiaryPageRequest request) {
return null;
}
/**
* 受益人信息列表查询
* @param appointmentBizId
* @return
*/
@Override
public Result<List<ApiBeneficiaryInfoDto>> list(String appointmentBizId) {
return apiBeneficiaryService.list(appointmentBizId);
}
/**
* 新增单个受益人信息
* @param apiBeneficiaryInfoDto
* @return
*/
@Override
public Result add(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) {
return apiBeneficiaryService.add(apiBeneficiaryInfoDto);
}
/**
* 编辑单个受益人信息
* @param apiBeneficiaryInfoDto
* @return
*/
@Override
public Result edit(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) {
return apiBeneficiaryService.edit(apiBeneficiaryInfoDto);
}
/**
* 删除单个受益人信息
* @param beneficiaryBizId
* @return
*/
@Override
public Result del(String beneficiaryBizId) {
return apiBeneficiaryService.del(beneficiaryBizId);
}
}
package com.yd.csf.api.controller;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiInsurantService;
import com.yd.csf.feign.client.insurant.ApiInsurantFeignClient;
import com.yd.csf.feign.dto.appointment.ApiInsurantInfoDto;
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-09-01
*/
@RestController
@RequestMapping("/insurant")
@Validated
public class ApiInsurantController implements ApiInsurantFeignClient {
@Autowired
private ApiInsurantService apiInsurantService;
/**
* 编辑受保人信息
* @param apiInsurantInfoDto
* @return
*/
@Override
public Result edit(ApiInsurantInfoDto apiInsurantInfoDto) {
return apiInsurantService.edit(apiInsurantInfoDto);
}
/**
* 受保人信息详情
* @param appointmentBizId 预约信息主表唯一业务ID
* @param insurantBizId 受保人信息表唯一业务ID
* @return
*/
@Override
public Result<ApiInsurantInfoDto> detail(String appointmentBizId, String insurantBizId) {
return apiInsurantService.detail(appointmentBizId,insurantBizId);
}
}
package com.yd.csf.api.controller;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiPolicyholderService;
import com.yd.csf.feign.client.policyholder.ApiPolicyholderFeignClient;
import com.yd.csf.feign.dto.appointment.ApiPolicyholderInfoDto;
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-09-01
*/
@RestController
@RequestMapping("/policyholder")
@Validated
public class ApiPolicyholderController implements ApiPolicyholderFeignClient {
@Autowired
private ApiPolicyholderService apiPolicyholderService;
/**
* 编辑投保人信息
* @param apiPolicyholderInfoDto
* @return
*/
@Override
public Result edit(ApiPolicyholderInfoDto apiPolicyholderInfoDto) {
return apiPolicyholderService.edit(apiPolicyholderInfoDto);
}
/**
* 投保人信息详情
* @param appointmentBizId 预约信息主表唯一业务ID
* @param policyholderBizId 投保人信息表唯一业务ID
* @return
*/
@Override
public Result<ApiPolicyholderInfoDto> detail(String appointmentBizId,
String policyholderBizId) {
return apiPolicyholderService.detail(appointmentBizId,policyholderBizId);
}
}
package com.yd.csf.api.controller;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiProductPlanService;
import com.yd.csf.feign.client.productplan.ApiProductPlanFeignClient;
import com.yd.csf.feign.dto.appointment.ApiProductPlanInfoDto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanMainInfoDto;
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-09-01
*/
@RestController
@RequestMapping("/productPlan")
@Validated
public class ApiProductPlanController implements ApiProductPlanFeignClient {
@Autowired
private ApiProductPlanService apiProductPlanService;
/**
* 编辑产品计划主体信息
* @param apiProductPlanMainInfoDto
* @return
*/
@Override
public Result edit(ApiProductPlanMainInfoDto apiProductPlanMainInfoDto) {
return apiProductPlanService.edit(apiProductPlanMainInfoDto);
}
/**
* 产品计划详情
* @param planBizId
* @return
*/
@Override
public Result<ApiProductPlanInfoDto> detail(String appointmentBizId, String planBizId) {
return apiProductPlanService.detail(appointmentBizId,planBizId);
}
}
package com.yd.csf.api.controller;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiSecondHolderService;
import com.yd.csf.feign.client.secondholder.ApiSecondHolderFeignClient;
import com.yd.csf.feign.dto.appointment.ApiSecondHolderInfoDto;
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-09-01
*/
@RestController
@RequestMapping("/secondHolder")
@Validated
public class ApiSecondHolderController implements ApiSecondHolderFeignClient {
@Autowired
private ApiSecondHolderService apiSecondHolderService;
/**
* 编辑第二持有人信息
* @param apiSecondHolderInfoDto
* @return
*/
@Override
public Result edit(ApiSecondHolderInfoDto apiSecondHolderInfoDto) {
return apiSecondHolderService.edit(apiSecondHolderInfoDto);
}
/**
* 第二持有人信息详情
* @param appointmentBizId 预约信息主表唯一业务ID
* @param secondHolderBizId 第二持有人信息表唯一业务ID
* @return
*/
@Override
public Result<ApiSecondHolderInfoDto> detail(String appointmentBizId, String secondHolderBizId) {
return apiSecondHolderService.detail(appointmentBizId,secondHolderBizId);
}
}
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-09-01
*/
@RestController
@RequestMapping("/relTenantProjectAppointment")
public class RelTenantProjectAppointmentController {
}
package com.yd.csf.api.dto;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 校验客户类型为公司类型的公共参数字段
*/
@Data
public class CustomerTypeCompanyCheckCommonDto {
/**
* 公司名称
*/
private String companyName;
/**
* 公司名称(英文)
*/
private String companyNameEn;
/**
* 公司商业登记号码
*/
private String companyBusinessNo;
/**
* 公司注册日期
*/
private LocalDateTime companyRegisterTime;
/**
* 公司注册地区(字典)
*/
private String companyRegisterRegion;
/**
* 公司电话区号
*/
private String companyMobileCode;
/**
* 公司电话
*/
private String companyMobile;
}
package com.yd.csf.api.dto;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 校验客户类型为个人类型的公共参数字段
*/
@Data
public class CustomerTypeIndividualCheckCommonDto {
/**
* 名字
*/
private String name;
/**
* 名字-英文
*/
private String nameEn;
/**
* 性别(字典)
*/
private String gender;
}
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.appointment.ApiProductPlanAdditionalInfoDto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanInfoDto;
import com.yd.csf.feign.request.additional.ApiAdditionalPageRequest;
import com.yd.csf.feign.response.additional.ApiAdditionalPageResponse;
import java.util.List;
public interface ApiAdditionalService {
Result<IPage<ApiAdditionalPageResponse>> page(ApiAdditionalPageRequest request);
Result<List<ApiProductPlanAdditionalInfoDto>> list(String planBizId);
Result add(ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto);
Result edit(ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto);
Result<ApiProductPlanAdditionalInfoDto> detail(String additionalBizId);
Result del(String additionalBizId);
Result batchAddAdditionalData(ApiProductPlanInfoDto dto, String planBizId);
Result batchEditAdditionalData(ApiProductPlanInfoDto dto, String planBizId);
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.*;
import com.yd.csf.feign.request.appointment.ApiAppointmentAddRequest;
import com.yd.csf.feign.request.appointment.ApiAppointmentEditRequest;
import java.util.List;
public interface ApiAppointmentCheckService {
Result checkAddRequest(ApiAppointmentAddRequest request);
Result checkEditRequest(ApiAppointmentEditRequest request);
Result checkCustomerAndFna(ApiAppointmentInfoDto dto, String tipStr);
Result checkEditApiAppointmentInfoDto(ApiAppointmentInfoDto dto);
Result checkEditApiProductPlanMainInfoDto(ApiProductPlanMainInfoDto dto);
Result checkAddApiProductPlanAdditionalInfoDtoList(List<ApiProductPlanAdditionalInfoDto> list);
Result checkEditApiPolicyholderInfoDto(ApiPolicyholderInfoDto dto);
Result checkEditApiInsurantInfoDto(ApiInsurantInfoDto dto);
Result checkAddApiBeneficiaryInfoDtoList(List<ApiBeneficiaryInfoDto> list);
Result checkEditApiSecondHolderInfoDto(ApiSecondHolderInfoDto dto);
Result checkEditApiProductPlanAdditionalInfoDto(ApiProductPlanAdditionalInfoDto dto);
Result checkEditApiBeneficiaryInfoDto(ApiBeneficiaryInfoDto 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.dto.appointmentfile.ApiAppointmentFileDto;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileAddRequest;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileEditRequest;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFilePageRequest;
import com.yd.csf.feign.response.appointmentfile.ApiAppointmentFilePageResponse;
import java.util.List;
public interface ApiAppointmentFileService {
Result<IPage<ApiAppointmentFilePageResponse>> page(ApiAppointmentFilePageRequest request);
Result<List<ApiAppointmentFileDto>> list(String appointmentBizId);
Result add(ApiAppointmentFileAddRequest request);
Result edit(ApiAppointmentFileEditRequest request);
Result del(String appointmentFileBizId);
Result download(String appointmentFileBizId);
}
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.appointment.ApiAppointmentInfoDto;
import com.yd.csf.feign.request.appointment.*;
import com.yd.csf.feign.response.appointment.ApiAppointmentDetailResponse;
import com.yd.csf.feign.response.appointment.ApiAppointmentPageResponse;
public interface ApiAppointmentService {
Result<IPage<ApiAppointmentPageResponse>> page(ApiAppointmentPageRequest request);
Result<ApiAppointmentDetailResponse> detail(String appointmentBizId);
Result<ApiAppointmentInfoDto> mainDetail(String appointmentBizId);
Result add(ApiAppointmentAddRequest request);
Result addStorage(ApiAppointmentAddStorageRequest request);
Result edit(ApiAppointmentEditRequest request);
Result editConfirmTime(ApiAppointmentEditConfirmTimeRequest request);
Result singleEdit(ApiAppointmentInfoDto apiAppointmentInfoDto);
Result editFna(ApiAppointmentEditFnaRequest request);
Result removeFna(ApiAppointmentRemoveFnaRequest request);
Result editProposal(ApiAppointmentEditProposalRequest request);
Result removeProposal(ApiAppointmentRemoveProposalRequest request);
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiBeneficiaryInfoDto;
import java.util.List;
public interface ApiBeneficiaryService {
Result<List<ApiBeneficiaryInfoDto>> list(String appointmentBizId);
Result add(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto);
Result edit(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto);
Result del(String beneficiaryBizId);
Result batchAddBeneficiaryData(List<ApiBeneficiaryInfoDto> apiBeneficiaryInfoDtoList,
String appointmentBizId);
Result batchEditBeneficiaryData(List<ApiBeneficiaryInfoDto> apiBeneficiaryInfoDtoList,
String appointmentBizId);
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiInsurantInfoDto;
import com.yd.csf.service.model.Insurant;
public interface ApiInsurantService {
Result<ApiInsurantInfoDto> detail(String appointmentBizId, String insurantBizId);
Result edit(ApiInsurantInfoDto apiInsurantInfoDto);
Result<Insurant> addInsurantData(ApiInsurantInfoDto dto, String appointmentBizId);
Result<Insurant> editInsurantData(ApiInsurantInfoDto dto, String appointmentBizId);
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiPolicyholderInfoDto;
import com.yd.csf.service.model.Policyholder;
public interface ApiPolicyholderService {
Result<ApiPolicyholderInfoDto> detail(String appointmentBizId,
String policyholderBizId);
Result edit(ApiPolicyholderInfoDto apiPolicyholderInfoDto);
Result<Policyholder> addPolicyholderData(ApiPolicyholderInfoDto dto, String appointmentBizId);
Result<Policyholder> editPolicyholderData(ApiPolicyholderInfoDto dto, String appointmentBizId);
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiProductPlanInfoDto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanMainInfoDto;
import com.yd.csf.service.model.ProductPlan;
public interface ApiProductPlanService {
Result<ApiProductPlanInfoDto> detail(String appointmentBizId,String planBizId);
Result<ApiProductPlanMainInfoDto> mainDetail(String appointmentBizId,String planBizId);
Result edit(ApiProductPlanMainInfoDto apiProductPlanMainInfoDto);
Result<ProductPlan> addProductPlanData(ApiProductPlanInfoDto dto, String appointmentBizId);
Result<ProductPlan> editProductPlanData(ApiProductPlanInfoDto dto,String appointmentBizId);
}
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiSecondHolderInfoDto;
import com.yd.csf.service.model.SecondHolder;
public interface ApiSecondHolderService {
Result<ApiSecondHolderInfoDto> detail(String appointmentBizId, String secondHolderBizId);
Result edit(ApiSecondHolderInfoDto apiSecondHolderInfoDto);
Result<SecondHolder> addSecondHolderData(ApiSecondHolderInfoDto dto, String appointmentBizId);
Result<SecondHolder> editSecondHolderData(ApiSecondHolderInfoDto dto, String appointmentBizId);
}
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.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAppointmentFileService;
import com.yd.csf.feign.dto.appointmentfile.ApiAppointmentFileDto;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileAddRequest;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileEditRequest;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFilePageRequest;
import com.yd.csf.feign.response.appointmentfile.ApiAppointmentFilePageResponse;
import com.yd.csf.service.model.AppointmentFile;
import com.yd.csf.service.model.Policyholder;
import com.yd.csf.service.service.IAppointmentFileService;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
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 ApiAppointmentFileServiceImpl implements ApiAppointmentFileService {
@Autowired
private IAppointmentFileService iAppointmentFileService;
/**
* 预约附件信息分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiAppointmentFilePageResponse>> page(ApiAppointmentFilePageRequest request) {
Page<ApiAppointmentFilePageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiAppointmentFilePageResponse> iPage = iAppointmentFileService.page(page, request);
return Result.success(iPage);
}
/**
* 根据预约业务id获取附件列表信息
* @param appointmentBizId
* @return
*/
@Override
public Result<List<ApiAppointmentFileDto>> list(String appointmentBizId) {
List<ApiAppointmentFileDto> dtoList = new ArrayList<>();
List<AppointmentFile> list = iAppointmentFileService.queryList(appointmentBizId);
if (!CollectionUtils.isEmpty(list)) {
dtoList = list.stream().map(dto -> {
ApiAppointmentFileDto fileDto = new ApiAppointmentFileDto();
BeanUtils.copyProperties(dto,fileDto);
return fileDto;
}).collect(Collectors.toList());
}
return Result.success(dtoList);
}
/**
* 新增预约附件信息
* @param request
* @return
*/
@Override
public Result add(ApiAppointmentFileAddRequest request) {
AppointmentFile appointmentFile = new AppointmentFile();
BeanUtils.copyProperties(request,appointmentFile);
appointmentFile.setAppointmentFileBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_APPOINTMENT_FILE.getCode()));
iAppointmentFileService.saveOrUpdate(appointmentFile);
return Result.success();
}
/**
* 编辑预约附件信息
* @param request
* @return
*/
@Override
public Result edit(ApiAppointmentFileEditRequest request) {
Result<AppointmentFile> result = checkAppointmentFileIsExist(request.getAppointmentFileBizId());
AppointmentFile appointmentFile = result.getData();
appointmentFile.setFileName(request.getFileName());
iAppointmentFileService.saveOrUpdate(appointmentFile);
return Result.success();
}
/**
* 删除预约附件
* @param appointmentFileBizId
* @return
*/
@Override
public Result del(String appointmentFileBizId) {
Result<AppointmentFile> result = checkAppointmentFileIsExist(appointmentFileBizId);
AppointmentFile appointmentFile = result.getData();
iAppointmentFileService.removeById(appointmentFile.getId());
return Result.success();
}
/**
* 下载预约附件
* @param appointmentFileBizId
* @return
*/
@Override
public Result download(String appointmentFileBizId) {
return null;
}
/**
* 校验预约附件信息是否存在
* @param appointmentFileBizId
* @return
*/
public Result<AppointmentFile> checkAppointmentFileIsExist(String appointmentFileBizId) {
AppointmentFile appointmentFile = iAppointmentFileService.queryOne(appointmentFileBizId);
if (Objects.isNull(appointmentFile)) {
//数据不存在
throw new BusinessException("预约附件信息不存在");
}
return Result.success(appointmentFile);
}
}
package com.yd.csf.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.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.service.dto.BeneficiaryDto;
import com.yd.csf.service.model.Beneficiary;
import com.yd.csf.service.model.Insurant;
import com.yd.csf.service.service.IBeneficiaryService;
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.Set;
import java.util.stream.Collectors;
/**
* 受益人信息业务实现类
*/
@Slf4j
@Service
public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
@Autowired
private IBeneficiaryService iBeneficiaryService;
@Autowired
private ApiAppointmentCheckService apiAppointmentCheckService;
/**
* 受益人信息列表查询
* @param appointmentBizId
* @return
*/
@Override
public Result<List<ApiBeneficiaryInfoDto>> list(String appointmentBizId) {
List<ApiBeneficiaryInfoDto> dtoList = new ArrayList<>();
List<Beneficiary> list = iBeneficiaryService.queryList(BeneficiaryDto.builder()
.appointmentBizId(appointmentBizId)
.build());
if (!CollectionUtils.isEmpty(list)) {
dtoList = list.stream().map(dto -> {
ApiBeneficiaryInfoDto infoDto = new ApiBeneficiaryInfoDto();
BeanUtils.copyProperties(dto,infoDto);
return infoDto;
}).collect(Collectors.toList());
}
return Result.success(dtoList);
}
/**
* 新增单个受益人信息
* @param apiBeneficiaryInfoDto
* @return
*/
@Override
public Result add(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) {
List<ApiBeneficiaryInfoDto> list = new ArrayList<>();
list.add(apiBeneficiaryInfoDto);
apiAppointmentCheckService.checkAddApiBeneficiaryInfoDtoList(list);
//批量添加受益人信息表数据
batchAddBeneficiaryData(list,apiBeneficiaryInfoDto.getAppointmentBizId());
return Result.success();
}
/**
* 编辑单个受益人信息
* @param apiBeneficiaryInfoDto
* @return
*/
@Override
public Result edit(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) {
//编辑预约入参字段校验 - 编辑单个受益人信息字段校验
apiAppointmentCheckService.checkEditApiBeneficiaryInfoDto(apiBeneficiaryInfoDto);
List<ApiBeneficiaryInfoDto> list = new ArrayList<>();
list.add(apiBeneficiaryInfoDto);
//批量编辑受益人信息表数据
batchEditBeneficiaryData(list,apiBeneficiaryInfoDto.getAppointmentBizId());
return Result.success();
}
/**
* 删除单个受益人信息
* @param beneficiaryBizId
* @return
*/
@Override
public Result del(String beneficiaryBizId) {
//校验受益人信息是否存在
Result<Beneficiary> result = checkBeneficiaryIsExist(beneficiaryBizId);
Beneficiary beneficiary = result.getData();
iBeneficiaryService.removeById(beneficiary.getId());
return Result.success();
}
/**
* 批量添加受益人信息表数据
* @param apiBeneficiaryInfoDtoList
* @param appointmentBizId
* @return
*/
@Override
public Result batchAddBeneficiaryData(List<ApiBeneficiaryInfoDto> apiBeneficiaryInfoDtoList,
String appointmentBizId) {
if (CollectionUtils.isEmpty(apiBeneficiaryInfoDtoList)){
//为空放行
return Result.success();
}
//构造需要新增数据的对象集合
List<Beneficiary> beneficiaryList = apiBeneficiaryInfoDtoList.stream().map(dto -> {
Beneficiary beneficiary = new Beneficiary();
BeanUtils.copyProperties(dto,beneficiary);
//生成受益人信息表唯一业务ID
beneficiary.setBeneficiaryBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_BENEFICIARY.getCode()));
//预约信息主表唯一业务ID
beneficiary.setAppointmentBizId(appointmentBizId);
return beneficiary;
}).collect(Collectors.toList());
iBeneficiaryService.saveOrUpdateBatch(beneficiaryList);
return Result.success();
}
/**
* 批量编辑受益人信息表数据
* @param list
* @param appointmentBizId
* @return
*/
@Override
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));
}
}
//构造需要新增或者更新数据的对象集合
List<Beneficiary> updateList = list.stream().map(dto -> {
Beneficiary beneficiary = new Beneficiary();
BeanUtils.copyProperties(dto,beneficiary);
beneficiary.setAppointmentBizId(appointmentBizId);
if (StringUtils.isBlank(dto.getBeneficiaryBizId())) {
//为空表示新增数据
//生成受益人信息表唯一业务ID
beneficiary.setBeneficiaryBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_BENEFICIARY.getCode()));
}
return beneficiary;
}).collect(Collectors.toList());
//批量新增或者更新
iBeneficiaryService.saveOrUpdateBatch(updateList);
return Result.success();
}
/**
* 校验受益人信息是否存在
* @param beneficiaryBizId
* @return
*/
public Result<Beneficiary> checkBeneficiaryIsExist(String beneficiaryBizId) {
Beneficiary beneficiary = iBeneficiaryService.queryOne(beneficiaryBizId);
if (Objects.isNull(beneficiary)) {
//数据不存在
throw new BusinessException(ResultCode.NULL_ERROR.getCode(),ResultCode.NULL_ERROR.getMessage());
}
return Result.success(beneficiary);
}
}
package com.yd.csf.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAppointmentCheckService;
import com.yd.csf.api.service.ApiInsurantService;
import com.yd.csf.feign.dto.appointment.ApiInsurantInfoDto;
import com.yd.csf.service.model.Insurant;
import com.yd.csf.service.model.Policyholder;
import com.yd.csf.service.service.IInsurantService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* 受保人信息业务实现类
*/
@Slf4j
@Service
public class ApiInsurantServiceImpl implements ApiInsurantService {
@Autowired
private IInsurantService iInsurantService;
@Autowired
private ApiAppointmentCheckService apiAppointmentCheckService;
/**
* 受保人信息详情
* @param appointmentBizId 预约信息主表唯一业务ID
* @param insurantBizId 受保人信息表唯一业务ID
* @return
*/
@Override
public Result<ApiInsurantInfoDto> detail(String appointmentBizId, String insurantBizId) {
Insurant insurant = iInsurantService.queryOne(appointmentBizId,insurantBizId);
ApiInsurantInfoDto dto = null;
if (!Objects.isNull(insurant)) {
dto = new ApiInsurantInfoDto();
BeanUtils.copyProperties(insurant,dto);
}
return Result.success(dto);
}
/**
* 编辑受保人信息
* @param apiInsurantInfoDto
* @return
*/
@Override
public Result edit(ApiInsurantInfoDto apiInsurantInfoDto) {
//编辑预约入参字段校验 - 受保人信息字段校验
apiAppointmentCheckService.checkEditApiInsurantInfoDto(apiInsurantInfoDto);
//编辑受保人信息表数据
editInsurantData(apiInsurantInfoDto,apiInsurantInfoDto.getAppointmentBizId());
return Result.success();
}
/**
* 添加受保人信息表数据
* @param dto
* @param appointmentBizId
* @return
*/
@Override
public Result<Insurant> addInsurantData(ApiInsurantInfoDto dto, String appointmentBizId) {
if (Objects.isNull(dto)){
//为空设置,方便新建暂存公用方法
dto = new ApiInsurantInfoDto();
}
//受保人信息信息
Insurant insurant = new Insurant();
BeanUtils.copyProperties(dto,insurant);
//生成受保人信息表唯一业务ID
insurant.setInsurantBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_INSURANT.getCode()));
//预约信息主表唯一业务ID
insurant.setAppointmentBizId(appointmentBizId);
iInsurantService.saveOrUpdate(insurant);
return Result.success(insurant);
}
/**
* 编辑受保人信息表数据
* @param dto
* @param appointmentBizId
* @return
*/
@Override
public Result<Insurant> editInsurantData(ApiInsurantInfoDto dto, String appointmentBizId) {
if (Objects.isNull(dto)){
//受保人信息对象不能为空
throw new BusinessException("受保人信息不能为空");
}
Result<Insurant> result = checkInsurantIsExist(dto.getInsurantBizId());
//受保人信息信息
Insurant insurant = result.getData();
BeanUtils.copyProperties(dto,insurant);
//预约信息主表唯一业务ID
insurant.setAppointmentBizId(appointmentBizId);
iInsurantService.saveOrUpdate(insurant);
return Result.success(insurant);
}
/**
* 校验受保人信息是否存在
* @param insurantBizId
* @return
*/
public Result<Insurant> checkInsurantIsExist(String insurantBizId) {
Insurant insurant = iInsurantService.queryOne(insurantBizId);
if (Objects.isNull(insurant)) {
//数据不存在
throw new BusinessException(ResultCode.NULL_ERROR.getCode(),ResultCode.NULL_ERROR.getMessage());
}
return Result.success(insurant);
}
}
package com.yd.csf.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAppointmentCheckService;
import com.yd.csf.api.service.ApiPolicyholderService;
import com.yd.csf.feign.dto.appointment.ApiPolicyholderInfoDto;
import com.yd.csf.service.model.Policyholder;
import com.yd.csf.service.service.IPolicyholderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* 投保人信息业务实现类
*/
@Slf4j
@Service
public class ApiPolicyholderServiceImpl implements ApiPolicyholderService {
@Autowired
private IPolicyholderService iPolicyholderService;
@Autowired
private ApiAppointmentCheckService apiAppointmentCheckService;
/**
* 投保人信息详情
* @param appointmentBizId 预约信息主表唯一业务ID
* @param policyholderBizId 投保人信息表唯一业务ID
* @return
*/
@Override
public Result<ApiPolicyholderInfoDto> detail(String appointmentBizId,
String policyholderBizId) {
Policyholder policyholder = iPolicyholderService.queryOne(appointmentBizId,policyholderBizId);
ApiPolicyholderInfoDto dto = null;
if (!Objects.isNull(policyholder)) {
dto = new ApiPolicyholderInfoDto();
BeanUtils.copyProperties(policyholder,dto);
}
return Result.success(dto);
}
/**
* 编辑投保人信息
* @param apiPolicyholderInfoDto
* @return
*/
@Override
public Result edit(ApiPolicyholderInfoDto apiPolicyholderInfoDto) {
//编辑预约入参字段校验 - 投保人信息字段校验
apiAppointmentCheckService.checkEditApiPolicyholderInfoDto(apiPolicyholderInfoDto);
//编辑投保人信息表数据
editPolicyholderData(apiPolicyholderInfoDto,apiPolicyholderInfoDto.getAppointmentBizId());
return Result.success();
}
/**
* 添加投保人信息表数据
* @param dto
* @param appointmentBizId
* @return
*/
@Override
public Result<Policyholder> addPolicyholderData(ApiPolicyholderInfoDto dto, String appointmentBizId) {
if (Objects.isNull(dto)){
//为空设置,方便新建暂存公用方法
dto = new ApiPolicyholderInfoDto();
}
//投保人信息信息
Policyholder policyholder = new Policyholder();
BeanUtils.copyProperties(dto,policyholder);
//生成投保人信息表唯一业务ID
policyholder.setPolicyholderBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_POLICYHOLDER.getCode()));
//预约信息主表唯一业务ID
policyholder.setAppointmentBizId(appointmentBizId);
iPolicyholderService.saveOrUpdate(policyholder);
return Result.success(policyholder);
}
/**
* 编辑投保人信息表数据
* @param dto
* @param appointmentBizId
* @return
*/
@Override
public Result<Policyholder> editPolicyholderData(ApiPolicyholderInfoDto dto, String appointmentBizId) {
if (Objects.isNull(dto)) {
//投保人信息对象不能为空
throw new BusinessException("投保人信息对象不能为空");
}
//校验投保人信息是否存在
Result<Policyholder> result = checkPolicyholderIsExist(dto.getPolicyholderBizId());
Policyholder policyholder = result.getData();
BeanUtils.copyProperties(dto,policyholder);
policyholder.setAppointmentBizId(appointmentBizId);
iPolicyholderService.saveOrUpdate(policyholder);
return Result.success(policyholder);
}
/**
* 校验投保人信息是否存在
* @param policyholderBizId
* @return
*/
public Result<Policyholder> checkPolicyholderIsExist(String policyholderBizId) {
Policyholder policyholder = iPolicyholderService.queryOne(policyholderBizId);
if (Objects.isNull(policyholder)) {
//数据不存在
throw new BusinessException(ResultCode.NULL_ERROR.getCode(),ResultCode.NULL_ERROR.getMessage());
}
return Result.success(policyholder);
}
}
package com.yd.csf.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAdditionalService;
import com.yd.csf.api.service.ApiAppointmentCheckService;
import com.yd.csf.api.service.ApiProductPlanService;
import com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanInfoDto;
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.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* 产品计划业务实现类
*/
@Slf4j
@Service
public class ApiProductPlanServiceImpl implements ApiProductPlanService {
@Autowired
private IProductPlanService iProductPlanService;
@Autowired
private ApiAppointmentCheckService apiAppointmentCheckService;
@Autowired
private ApiAdditionalService apiAdditionalService;
/**
* 产品计划详情
* @param planBizId
* @return
*/
@Override
public Result<ApiProductPlanInfoDto> detail(String appointmentBizId,String planBizId) {
//产品计划主体详情
ApiProductPlanInfoDto apiProductPlanInfoDto = new ApiProductPlanInfoDto();
Result<ApiProductPlanMainInfoDto> result = mainDetail(appointmentBizId,planBizId);
apiProductPlanInfoDto.setApiProductPlanMainInfoDto(result.getData());
//附加险列表
if (!Objects.isNull(result.getData())) {
Result<List<ApiProductPlanAdditionalInfoDto>> result1 = apiAdditionalService.list(result.getData().getPlanBizId());
apiProductPlanInfoDto.setApiProductPlanAdditionalInfoDtoList(result1.getData());
}
return Result.success(apiProductPlanInfoDto);
}
/**
* 产品计划主体详情
* @param planBizId
* @return
*/
@Override
public Result<ApiProductPlanMainInfoDto> mainDetail(String appointmentBizId,String planBizId) {
ProductPlan productPlan = iProductPlanService.queryOne(appointmentBizId,planBizId);
ApiProductPlanMainInfoDto dto = null;
if (!Objects.isNull(productPlan)) {
dto = new ApiProductPlanMainInfoDto();
BeanUtils.copyProperties(productPlan,dto);
}
return Result.success(dto);
}
/**
* 编辑产品计划主体信息
* @param apiProductPlanMainInfoDto
* @return
*/
@Override
public Result edit(ApiProductPlanMainInfoDto apiProductPlanMainInfoDto) {
//编辑预约入参字段校验 - 产品计划信息字段校验 - 产品计划主信息字段校验
apiAppointmentCheckService.checkEditApiProductPlanMainInfoDto(apiProductPlanMainInfoDto);
ApiProductPlanInfoDto productPlanInfoDto = new ApiProductPlanInfoDto();
productPlanInfoDto.setApiProductPlanMainInfoDto(apiProductPlanMainInfoDto);
editProductPlanData(productPlanInfoDto,apiProductPlanMainInfoDto.getAppointmentBizId());
return Result.success();
}
/**
* 添加产品计划信息表数据
* @param productPlanInfoDto
* @param appointmentBizId
* @return
*/
public Result<ProductPlan> addProductPlanData(ApiProductPlanInfoDto productPlanInfoDto,String appointmentBizId) {
if (Objects.isNull(productPlanInfoDto)) {
//为空设置,方便新建暂存公用方法
productPlanInfoDto = new ApiProductPlanInfoDto();
}
if (Objects.isNull(productPlanInfoDto.getApiProductPlanMainInfoDto())){
//为空设置,方便新建暂存公用方法
productPlanInfoDto.setApiProductPlanMainInfoDto(new ApiProductPlanMainInfoDto());
}
//产品计划主信息
ApiProductPlanMainInfoDto dto = productPlanInfoDto.getApiProductPlanMainInfoDto();
ProductPlan productPlan = new ProductPlan();
BeanUtils.copyProperties(dto,productPlan);
//生成产品计划信息表唯一业务ID
productPlan.setPlanBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_PRODUCT_PLAN.getCode()));
//预约信息主表唯一业务ID
productPlan.setAppointmentBizId(appointmentBizId);
iProductPlanService.saveOrUpdate(productPlan);
return Result.success(productPlan);
}
/**
* 编辑产品计划信息表数据
* @param productPlanInfoDto
* @param appointmentBizId
* @return
*/
@Override
public Result<ProductPlan> editProductPlanData(ApiProductPlanInfoDto productPlanInfoDto, String appointmentBizId) {
if (Objects.isNull(productPlanInfoDto)
|| ( !Objects.isNull(productPlanInfoDto) && Objects.isNull(productPlanInfoDto.getApiProductPlanMainInfoDto()))){
//不能为空
throw new BusinessException("产品计划主信息对象不能为空");
}
//产品计划主信息
ApiProductPlanMainInfoDto dto = productPlanInfoDto.getApiProductPlanMainInfoDto();
Result<ProductPlan> result = checkProductPlanIsExist(dto.getPlanBizId());
ProductPlan productPlan = result.getData();
BeanUtils.copyProperties(dto,productPlan);
//预约信息主表唯一业务ID
productPlan.setAppointmentBizId(appointmentBizId);
iProductPlanService.saveOrUpdate(productPlan);
return Result.success(productPlan);
}
/**
* 校验产品计划信息是否存在
* @param planBizId
* @return
*/
public Result<ProductPlan> checkProductPlanIsExist(String planBizId) {
ProductPlan productPlan = iProductPlanService.queryOne(planBizId);
if (Objects.isNull(productPlan)) {
//数据不存在
throw new BusinessException(ResultCode.NULL_ERROR.getCode(),ResultCode.NULL_ERROR.getMessage());
}
return Result.success(productPlan);
}
}
package com.yd.csf.api.service.impl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiAppointmentCheckService;
import com.yd.csf.api.service.ApiSecondHolderService;
import com.yd.csf.feign.dto.appointment.ApiSecondHolderInfoDto;
import com.yd.csf.service.model.SecondHolder;
import com.yd.csf.service.service.ISecondHolderService;
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 java.util.Objects;
/**
* 第二持有人信息业务实现类
*/
@Slf4j
@Service
public class ApiSecondHolderServiceImpl implements ApiSecondHolderService {
@Autowired
private ISecondHolderService iSecondHolderService;
@Autowired
private ApiAppointmentCheckService apiAppointmentCheckService;
/**
* 第二持有人信息详情
* @param appointmentBizId 预约信息主表唯一业务ID
* @param secondHolderBizId 第二持有人信息表唯一业务ID
* @return
*/
@Override
public Result<ApiSecondHolderInfoDto> detail(String appointmentBizId, String secondHolderBizId) {
SecondHolder secondHolder = iSecondHolderService.queryOne(appointmentBizId,secondHolderBizId);
ApiSecondHolderInfoDto dto = null;
if (!Objects.isNull(secondHolder)) {
dto = new ApiSecondHolderInfoDto();
BeanUtils.copyProperties(secondHolder,dto);
}
return Result.success(dto);
}
/**
* 编辑第二持有人信息
* @param apiSecondHolderInfoDto
* @return
*/
@Override
public Result edit(ApiSecondHolderInfoDto apiSecondHolderInfoDto) {
//编辑预约入参字段校验 - 第二持有人信息字段校验
apiAppointmentCheckService.checkEditApiSecondHolderInfoDto(apiSecondHolderInfoDto);
if (Objects.isNull(apiSecondHolderInfoDto)) {
apiSecondHolderInfoDto = new ApiSecondHolderInfoDto();
}
editSecondHolderData(apiSecondHolderInfoDto,apiSecondHolderInfoDto.getAppointmentBizId());
return Result.success();
}
/**
* 添加第二持有人信息表数据
* @param dto
* @param appointmentBizId
* @return
*/
@Override
public Result<SecondHolder> addSecondHolderData(ApiSecondHolderInfoDto dto, String appointmentBizId) {
if (Objects.isNull(dto)){
//为空设置,方便新建暂存公用方法
dto = new ApiSecondHolderInfoDto();
}
//投保人信息信息
SecondHolder secondHolder = new SecondHolder();
BeanUtils.copyProperties(dto,secondHolder);
//第二持有人信息表唯一业务ID
secondHolder.setSecondHolderBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_SECOND_HOLDER.getCode()));
//预约信息主表唯一业务ID
secondHolder.setAppointmentBizId(appointmentBizId);
iSecondHolderService.saveOrUpdate(secondHolder);
return Result.success(secondHolder);
}
/**
* 编辑第二持有人信息表数据
* @param dto
* @param appointmentBizId
* @return
*/
@Override
public Result<SecondHolder> editSecondHolderData(ApiSecondHolderInfoDto dto, String appointmentBizId) {
if (Objects.isNull(dto)){
//为空
dto = new ApiSecondHolderInfoDto();
}
if (StringUtils.isBlank(dto.getSecondHolderBizId())) {
//为空新增(因为首次发起新增预约,第二持有人没有填写为空的,第二次编辑做了修改这种情况是新增操作)
return addSecondHolderData(dto,appointmentBizId);
}else {
//校验第二持有人信息是否存在
Result<SecondHolder> result = checkSecondHolderIsExist(dto.getSecondHolderBizId());
//第二持有人信息
SecondHolder secondHolder = result.getData();
BeanUtils.copyProperties(dto,secondHolder);
//预约信息主表唯一业务ID
secondHolder.setAppointmentBizId(appointmentBizId);
iSecondHolderService.saveOrUpdate(secondHolder);
return Result.success(secondHolder);
}
}
/**
* 校验第二持有人信息是否存在
* @param secondHolderBizId
* @return
*/
public Result<SecondHolder> checkSecondHolderIsExist(String secondHolderBizId) {
SecondHolder secondHolder = iSecondHolderService.queryOne(secondHolderBizId);
if (Objects.isNull(secondHolder)) {
//数据不存在
throw new BusinessException(ResultCode.NULL_ERROR.getCode(),ResultCode.NULL_ERROR.getMessage());
}
return Result.success(secondHolder);
}
}
package com.yd.csf.feign.client.additional;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto;
import com.yd.csf.feign.fallback.additional.ApiAdditionalFeignFallbackFactory;
import com.yd.csf.feign.request.additional.ApiAdditionalPageRequest;
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 = ApiAdditionalFeignFallbackFactory.class)
public interface ApiAdditionalFeignClient {
/**
* 附加险分页查询
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiAdditionalPageRequest request);
/**
* 新增单个附加险信息
* @param apiProductPlanAdditionalInfoDto
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto);
/**
* 编辑单个附加险信息
* @param apiProductPlanAdditionalInfoDto
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto);
/**
* 单个附加险信息详情
* @param additionalBizId
* @return
*/
@GetMapping("/detail")
Result<ApiProductPlanAdditionalInfoDto> detail(@NotBlank(message = "附加险信息表唯一业务ID不能为空") @RequestParam(value = "additionalBizId") String additionalBizId);
/**
* 删除单个附加险信息
* @param additionalBizId
* @return
*/
@DeleteMapping("/del")
Result del(@NotBlank(message = "附加险信息表唯一业务ID不能为空") @RequestParam(value = "additionalBizId") String additionalBizId);
}
package com.yd.csf.feign.client.appointment;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiAppointmentInfoDto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto;
import com.yd.csf.feign.fallback.appointment.ApiAppointmentFeignFallbackFactory;
import com.yd.csf.feign.request.appointment.*;
import com.yd.csf.feign.response.appointment.ApiAppointmentDetailResponse;
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 = ApiAppointmentFeignFallbackFactory.class)
public interface ApiAppointmentFeignClient {
/**
* 预约分页查询
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiAppointmentPageRequest request);
/**
* 预约详情(聚合信息详情)
* @param appointmentBizId
* @return
*/
@GetMapping("/detail")
Result<ApiAppointmentDetailResponse> detail(@NotBlank(message = "预约信息主表唯一业务ID不能为空") @RequestParam(value = "appointmentBizId") String appointmentBizId);
/**
* 预约主体信息详情(单个对象详情)
* @param appointmentBizId
* @return
*/
@GetMapping("/main/detail")
Result<ApiAppointmentInfoDto> mainDetail(@NotBlank(message = "预约信息主表唯一业务ID不能为空") @RequestParam(value = "appointmentBizId") String appointmentBizId);
/**
* 新增预约提交 (聚合信息新增预约提交)
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiAppointmentAddRequest request);
/**
* 新增预约暂存 (聚合信息新增预约暂存)
* @param request
* @return
*/
@PostMapping("/add/storage")
Result addStorage(@Validated @RequestBody ApiAppointmentAddStorageRequest request);
/**
* 编辑预约提交 (聚合信息编辑预约提交)
* @param request
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiAppointmentEditRequest request);
/**
* 确定预约时间提交 (流程流转到新单跟进)
* @param request
* @return
*/
@PutMapping("/edit/confirm/time")
Result editConfirmTime(@Validated @RequestBody ApiAppointmentEditConfirmTimeRequest request);
/**
* 单个对象编辑-编辑预约主体信息
* @param apiAppointmentInfoDto
* @return
*/
@PutMapping("/single/edit")
Result singleEdit(@Validated @RequestBody ApiAppointmentInfoDto apiAppointmentInfoDto);
/**
* 预约编辑关联FNA
* @param request
* @return
*/
@PutMapping("/edit/fna")
Result editFna(@Validated @RequestBody ApiAppointmentEditFnaRequest request);
/**
* 预约解除关联FNA
* @param request
* @return
*/
@PutMapping("/remove/fna")
Result removeFna(@Validated @RequestBody ApiAppointmentRemoveFnaRequest request);
/**
* 预约编辑关联计划书
* @param request
* @return
*/
@PutMapping("/edit/proposal")
Result editProposal(@Validated @RequestBody ApiAppointmentEditProposalRequest request);
/**
* 预约解除关联计划书
* @param request
* @return
*/
@PutMapping@PostMapping("/remove/proposal")
Result removeProposal(@Validated @RequestBody ApiAppointmentRemoveProposalRequest request);
}
package com.yd.csf.feign.client.appointmentfile;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.appointmentfile.ApiAppointmentFileFeignFallbackFactory;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileAddRequest;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileEditRequest;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFilePageRequest;
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 = ApiAppointmentFileFeignFallbackFactory.class)
public interface ApiAppointmentFileFeignClient {
/**
* 预约附件信息分页查询
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiAppointmentFilePageRequest request);
/**
* 新增预约附件信息
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiAppointmentFileAddRequest request);
/**
* 编辑预约附件信息
* @param request
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiAppointmentFileEditRequest request);
/**
* 删除预约附件
* @param appointmentFileBizId
* @return
*/
@DeleteMapping("/del")
Result del(@NotBlank(message = "预约附件信息表唯一业务ID不能为空") @RequestParam(value = "appointmentFileBizId") String appointmentFileBizId);
/**
* 下载预约附件
* @param appointmentFileBizId
* @return
*/
@GetMapping("/download")
Result download(@NotBlank(message = "预约附件信息表唯一业务ID不能为空") @RequestParam(value = "appointmentFileBizId") String appointmentFileBizId);
}
package com.yd.csf.feign.client.beneficiary;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiBeneficiaryInfoDto;
import com.yd.csf.feign.fallback.beneficiary.ApiBeneficiaryFeignFallbackFactory;
import com.yd.csf.feign.request.beneficiary.ApiBeneficiaryPageRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 香港保险服务-受益人信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiBeneficiaryFeignFallbackFactory.class)
public interface ApiBeneficiaryFeignClient {
/**
* 受益人信息分页查询
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiBeneficiaryPageRequest request);
/**
* 受益人信息列表查询
* @param appointmentBizId
* @return
*/
@GetMapping("/list")
Result<List<ApiBeneficiaryInfoDto>> list(@NotBlank(message = "预约信息主表唯一业务ID不能为空") @RequestParam(value = "appointmentBizId") String appointmentBizId);
/**
* 新增单个受益人信息
* @param apiBeneficiaryInfoDto
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiBeneficiaryInfoDto apiBeneficiaryInfoDto);
/**
* 编辑单个受益人信息
* @param apiBeneficiaryInfoDto
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiBeneficiaryInfoDto apiBeneficiaryInfoDto);
/**
* 删除单个受益人信息
* @param beneficiaryBizId
* @return
*/
@DeleteMapping("/del")
Result del(@NotBlank(message = "受益人信息表唯一业务ID不能为空") @RequestParam(value = "beneficiaryBizId") String beneficiaryBizId);
}
package com.yd.csf.feign.client.insurant;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiInsurantInfoDto;
import com.yd.csf.feign.dto.appointment.ApiPolicyholderInfoDto;
import com.yd.csf.feign.fallback.insurant.ApiInsurantFeignFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-受保人信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiInsurantFeignFallbackFactory.class)
public interface ApiInsurantFeignClient {
/**
* 编辑受保人信息
* @param apiInsurantInfoDto
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiInsurantInfoDto apiInsurantInfoDto);
/**
* 受保人信息详情
* @param appointmentBizId 预约信息主表唯一业务ID
* @param insurantBizId 受保人信息表唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiInsurantInfoDto> detail(
@RequestParam(value = "appointmentBizId") String appointmentBizId,
@RequestParam(value = "insurantBizId") String insurantBizId);
}
package com.yd.csf.feign.client.policyholder;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiPolicyholderInfoDto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanInfoDto;
import com.yd.csf.feign.fallback.policyholder.ApiPolicyholderFeignFallbackFactory;
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 = ApiPolicyholderFeignFallbackFactory.class)
public interface ApiPolicyholderFeignClient {
/**
* 编辑投保人信息
* @param apiPolicyholderInfoDto
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiPolicyholderInfoDto apiPolicyholderInfoDto);
/**
* 投保人信息详情
* @param appointmentBizId 预约信息主表唯一业务ID
* @param policyholderBizId 投保人信息表唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiPolicyholderInfoDto> detail(
@RequestParam(value = "appointmentBizId") String appointmentBizId,
@RequestParam(value = "policyholderBizId") String policyholderBizId);
}
package com.yd.csf.feign.client.productplan;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiProductPlanInfoDto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanMainInfoDto;
import com.yd.csf.feign.fallback.productplan.ApiProductPlanFeignFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
/**
* 香港保险服务-产品计划信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiProductPlanFeignFallbackFactory.class)
public interface ApiProductPlanFeignClient {
/**
* 编辑产品计划主体信息
* @param apiProductPlanMainInfoDto
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiProductPlanMainInfoDto apiProductPlanMainInfoDto);
/**
* 产品计划详情-根据产品计划信息表唯一业务ID查询
* @param appointmentBizId 预约信息主表唯一业务ID
* @param planBizId 产品计划信息表唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiProductPlanInfoDto> detail(@RequestParam(value = "appointmentBizId") String appointmentBizId,
@RequestParam(value = "planBizId") String planBizId);
}
package com.yd.csf.feign.client.secondholder;
import com.yd.common.result.Result;
import com.yd.csf.feign.dto.appointment.ApiSecondHolderInfoDto;
import com.yd.csf.feign.fallback.secondholder.ApiSecondHolderFeignFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-第二持有人信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiSecondHolderFeignFallbackFactory.class)
public interface ApiSecondHolderFeignClient {
/**
* 编辑第二持有人信息
* @param apiSecondHolderInfoDto
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiSecondHolderInfoDto apiSecondHolderInfoDto);
/**
* 第二持有人信息详情
* @param appointmentBizId 预约信息主表唯一业务ID
* @param secondHolderBizId 第二持有人信息表唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiSecondHolderInfoDto> detail(
@RequestParam(value = "appointmentBizId") String appointmentBizId,
@RequestParam(value = "secondHolderBizId") String secondHolderBizId);
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ApiAppointmentBriefInfoDto {
/**
* 预约信息主表主键id
*/
private Long id;
/**
* 预约信息主表唯一业务ID
*/
private String appointmentBizId;
/**
* 预约编号
*/
private String appointmentNo;
/**
* 关联客户信息表唯一业务ID(冗余字段)
*/
private String customerBizId;
/**
* 关联客户编号(和客户信息表唯一业务ID是一对,唯一,冗余字段)
*/
private String customerNo;
/**
* 客户姓名
*/
private String customerName;
/**
* 保险产品名称(中台保险产品名称,冗余)
*/
private String productName;
/**
* 供款年期(字典)
*/
private String paymentTerm;
/**
* 每期保费
*/
private BigDecimal eachIssuePremium;
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 预约信息
*/
@Data
public class ApiAppointmentInfoDto {
/**
* 预约信息表主键id(新增不需要传值,修改需要传值)
*/
private Long id;
/**
* 预约信息主表唯一业务ID(新增不需要传值,修改需要传值)
*/
private String appointmentBizId;
/**
* 预约编号(和预约信息主表唯一业务ID是一对,唯一,冗余字段)
*/
private String appointmentNo;
/**
* 关联客户信息表唯一业务ID(冗余字段)
*/
private String customerBizId;
/**
* 关联客户编号(和客户信息表唯一业务ID是一对,唯一,冗余字段)
*/
private String customerNo;
/**
* 关联FNA信息表唯一业务ID(冗余字段)
*/
private String fnaBizId;
/**
* 关联FNA编号(和FNA信息表唯一业务ID是一对,唯一,冗余字段)
*/
private String fnaNo;
/**
* 关联计划书信息表唯一业务ID(冗余字段)
*/
private String proposalBizId;
/**
* 关联计划书编号(和计划书信息表唯一业务ID是一对,唯一,冗余字段)
*/
private String proposalNo;
/**
* 申请类型(字典)
*/
// @NotBlank(message = "申请类型不能为空")
private String applyType;
/**
* 业务编号
*/
private String businessNo;
/**
* 意向预约时间
*/
// @NotNull(message = "意向预约时间不能为空")
private LocalDateTime intentionAppointmentTime;
/**
* 顾问是否陪同: 0-否, 1-是(字典)
*/
private Integer isAccompany;
/**
* 陪同顾问姓名(FNA Form有填写,可带入)
*/
private String accompanyName;
/**
* 陪同顾问手机区号
*/
private String accompanyMobileCode;
/**
* 陪同顾问手机
*/
private String accompanyMobile;
/**
* 陪同顾问邮箱
*/
private String accompanyEmail;
/**
* 到港时间
*/
private LocalDateTime arrivalTime;
/**
* 离港时间
*/
private LocalDateTime departureTime;
/**
* 会面地点(字典)
*/
private String meetingPoint;
/**
* 签单地址
*/
private String signingAddress;
/**
* 客户在港期间联络电话区号
*/
private String hkMobileCode;
/**
* 客户在港期间联络电话
*/
private String hkMobile;
/**
* 是否开户: 0-否, 1-是(字典)
*/
private Integer isOpenAccount;
/**
* 开户行名称
*/
private String bankName;
/**
* 开户行支行(分行)
*/
private String bankBranchName;
/**
* 开户时间段(开始)
*/
private LocalDateTime openAccountStartTime;
/**
* 开户时间段(结束)
*/
private LocalDateTime openAccountEndTime;
/**
* 开户地点
*/
private String openAccountLocation;
/**
* 开户须知
*/
private String openAccountNotice;
/**
* 是否体检: 0-否, 1-是(字典)
*/
private Integer isTj;
/**
* 是否购买过香港保险: 0-否, 1-是(字典)
*/
private Integer isBuy;
/**
* 业务代表1账号
*/
private String businessRepresentAccount1;
/**
* 业务代表1姓名
*/
private String businessRepresentName1;
/**
* 业务代表1电话号码区号
*/
private String businessRepresentMobile1Code;
/**
* 业务代表1电话号码
*/
private String businessRepresentMobile1;
/**
* 业务代表1邮箱
*/
private String businessRepresentEmail1;
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 受益人信息
*/
@Data
public class ApiBeneficiaryInfoDto {
/**
* 受益人信息主键id(新增不需要传值,修改需要传值)
*/
private Long id;
/**
* 预约信息主表唯一业务ID(新增不需要传值,修改需要传值)
*/
private String appointmentBizId;
/**
* 受益人信息表唯一业务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 gender;
/**
* 证件类型(字典)
*/
private String documentType;
/**
* 证件号码
*/
private String idNumber;
/**
* 护照号码
*/
private String passportNumber;
/**
* 出生日期
*/
private LocalDateTime birthTime;
/**
* 公司名称
*/
private String companyName;
/**
* 公司名称(英文)
*/
private String companyNameEn;
/**
* 公司商业登记号码
*/
private String companyBusinessNo;
/**
* 公司注册日期
*/
private LocalDateTime companyRegisterTime;
/**
* 公司注册地区(字典)
*/
private String companyRegisterRegion;
/**
* 公司电话区号
*/
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;
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 受保人信息入参
*/
@Data
public class ApiInsurantInfoDto {
/**
* 受保人信息表主键id(新增不需要传值,修改需要传值)
*/
private Long id;
/**
* 预约信息主表唯一业务ID(新增不需要传值,修改需要传值)
*/
private String appointmentBizId;
/**
* 受保人信息表唯一业务ID(新增不需要传值,修改需要传值)
*/
private String insurantBizId;
/**
* 客户类型(字典)
*/
// @NotBlank(message = "客户类型不能为空")
private String customerType;
/**
* 关联客户信息表唯一业务ID(冗余字段)
*/
private String customerBizId;
/**
* 关联客户编号(和客户信息表唯一业务ID是一对,唯一,冗余字段)
*/
private String customerNo;
/**
* 与投保人关系(字典)
*/
// @NotBlank(message = "与投保人关系不能为空")
private String policyholderRel;
/**
* 名字
*/
private String name;
/**
* 名字-英文
*/
private String nameEn;
/**
* 性别(字典)
*/
private String gender;
/**
* 证件类型(字典)
*/
private String documentType;
/**
* 证件号码
*/
private String idNumber;
/**
* 出生日期
*/
private LocalDateTime birthday;
/**
* 年龄
*/
private String age;
/**
* 居住地址
*/
private String residentialAddress;
/**
* 移动电话区号
*/
private String mobileCode;
/**
* 移动电话
*/
private String mobile;
/**
* 邮箱
*/
private String email;
/**
* 行业
*/
private String industry;
/**
* 职位
*/
private String position;
/**
* 风险偏好(字典)
*/
private String riskAppetite;
/**
* 是否VIP: 0-否, 1-是(字典)
*/
private Integer isVip;
/**
* vip备注
*/
private String vipRemark;
/**
* 称谓(字典)
*/
private String appellation;
/**
* 是否区分吸烟(字典)
*/
private String smokingAllowed;
/**
* 吸烟量(支/天)
*/
private String smokingVolume;
/**
* 出生地(省市)
*/
private String birthplace;
/**
* 国籍
*/
private String nationality;
/**
* 护照号码
*/
private String passportNo;
/**
* 通行证号码
*/
private String passNo;
/**
* 身高
*/
private String height;
/**
* 体重
*/
private String weight;
/**
* BMI
*/
private String bmi;
/**
* 受雇于现职年期
*/
private BigDecimal currentTenure;
/**
* 总负债额
*/
private BigDecimal totalDebt;
/**
* 受供养人数目
*/
private Integer dependentsNum;
/**
* 婚姻状况(字典)
*/
private String maritalStatus;
/**
* 教育程度(字典)
*/
private String educationLevel;
/**
* 总工作年期
*/
private BigDecimal totalWorkingYears;
/**
* 货币(字典)
*/
private String currency;
/**
* 现时每月收入
*/
private BigDecimal currentMonthlyIncome;
/**
* 固定电话
*/
private String landline;
/**
* 过往一年是否所属国家以外地区居住超过182日: 0-否, 1-是(字典)
*/
private Integer isExceed;
/**
* 是否拥有其他国家公民身份(如美国、日本等): 0-否, 1-是(字典)
*/
private Integer isOtherCountry;
/**
* 旅行(字典)
*/
private String travel;
/**
* 运动(字典)
*/
private String exercise;
/**
* 游戏(字典)
*/
private String game;
/**
* 电影/戏剧(字典)
*/
private String movieDrama;
/**
* 美食(字典)
*/
private String delicacy;
/**
* 公司名称
*/
private String companyName;
/**
* 公司地址
*/
private String companyAddress;
/**
* 公司电话区号
*/
private String companyMobileCode;
/**
* 公司电话
*/
private String companyMobile;
/**
* 公司名称(英文)
*/
private String companyNameEn;
/**
* 公司商业登记号码
*/
private String companyBusinessNo;
/**
* 公司注册日期
*/
private LocalDateTime companyRegisterTime;
/**
* 公司注册地区(字典)
*/
private String companyRegisterRegion;
/**
* 公司邮箱
*/
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 String otherMobile;
/**
* 是否接受推广信息: 0-否, 1-是(字典)
*/
private Integer isPromotion;
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 投保人信息
*/
@Data
public class ApiPolicyholderInfoDto {
/**
* 投保人信息主键id(新增不需要传值,修改需要传值)
*/
private Long id;
/**
* 预约信息主表唯一业务ID(新增不需要传值,修改需要传值)
*/
private String appointmentBizId;
/**
* 投保人信息表唯一业务ID(新增不需要传值,修改需要传值)
*/
private String policyholderBizId;
/**
* 客户类型(字典)
*/
// @NotBlank(message = "客户类型不能为空")
private String customerType;
/**
* 关联客户信息表唯一业务ID(冗余字段)
*/
private String customerBizId;
/**
* 关联客户编号(和客户信息表唯一业务ID是一对,唯一,冗余字段)
*/
private String customerNo;
/**
* 名字
*/
private String name;
/**
* 名字-英文
*/
private String nameEn;
/**
* 性别(字典)
*/
private String gender;
/**
* 证件类型(字典)
*/
private String documentType;
/**
* 证件号码
*/
private String idNumber;
/**
* 出生日期
*/
private LocalDateTime birthday;
/**
* 年龄
*/
private String age;
/**
* 居住地址
*/
private String residentialAddress;
/**
* 移动电话区号
*/
private String mobileCode;
/**
* 移动电话
*/
private String mobile;
/**
* 邮箱
*/
private String email;
/**
* 行业
*/
private String industry;
/**
* 职位
*/
private String position;
/**
* 风险偏好(字典)
*/
private String riskAppetite;
/**
* 是否VIP: 0-否, 1-是(字典)
*/
private Integer isVip;
/**
* vip备注
*/
private String vipRemark;
/**
* 称谓(字典)
*/
private String appellation;
/**
* 是否区分吸烟(字典)
*/
private String smokingAllowed;
/**
* 吸烟量(支/天)
*/
private String smokingVolume;
/**
* 出生地(省市)
*/
private String birthplace;
/**
* 国籍
*/
private String nationality;
/**
* 护照号码
*/
private String passportNo;
/**
* 通行证号码
*/
private String passNo;
/**
* 身高
*/
private String height;
/**
* 体重
*/
private String weight;
/**
* BMI
*/
private String bmi;
/**
* 货币(字典)
*/
private String currency;
/**
* 平均每月支出
*/
private BigDecimal monthExpenditure;
/**
* 平均每月收入
*/
private BigDecimal monthIncome;
/**
* 受雇于现职年期
*/
private BigDecimal currentTenure;
/**
* 总流动资产
*/
private BigDecimal totalCurrentAssets;
/**
* 总负债额
*/
private BigDecimal totalDebt;
/**
* 受供养人数目
*/
private Integer dependentsNum;
/**
* 婚姻状况(字典)
*/
private String maritalStatus;
/**
* 教育程度(字典)
*/
private String educationLevel;
/**
* 总工作年期
*/
private BigDecimal totalWorkingYears;
/**
* 现时每月收入
*/
private BigDecimal currentMonthlyIncome;
/**
* 固定电话
*/
private String landline;
/**
* 过往一年是否所属国家以外地区居住超过182日: 0-否, 1-是(字典)
*/
private Integer isExceed;
/**
* 是否拥有其他国家公民身份(如美国、日本等): 0-否, 1-是(字典)
*/
private Integer isOtherCountry;
/**
* 投保人邮政编码
*/
private String postalCode;
/**
* 旅行(字典)
*/
private String travel;
/**
* 运动(字典)
*/
private String exercise;
/**
* 游戏(字典)
*/
private String game;
/**
* 电影/戏剧(字典)
*/
private String movieDrama;
/**
* 美食(字典)
*/
private String delicacy;
/**
* 公司名称
*/
private String companyName;
/**
* 公司地址
*/
private String companyAddress;
/**
* 公司电话区号
*/
private String companyMobileCode;
/**
* 公司电话
*/
private String companyMobile;
/**
* 公司名称(英文)
*/
private String companyNameEn;
/**
* 公司商业登记号码
*/
private String companyBusinessNo;
/**
* 公司注册日期
*/
private LocalDateTime companyRegisterTime;
/**
* 公司注册地区(字典)
*/
private String companyRegisterRegion;
/**
* 公司邮箱
*/
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 String otherMobile;
/**
* 是否接受推广信息: 0-否, 1-是(字典)
*/
private Integer isPromotion;
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import java.math.BigDecimal;
/**
* 产品计划-附加险列表
*/
@Data
public class ApiProductPlanAdditionalInfoDto {
/**
* 产品计划-附加险信息表主键id(新增不需要传值,编辑需要传值)
*/
private Long id;
/**
* 附加险信息表唯一业务ID(新增不需要传值,编辑需要传值)
*/
private String additionalBizId;
/**
* 产品计划信息表唯一业务ID(新增不需要传值,编辑需要传值)
*/
private String planBizId;
/**
* 保险附加产品唯一业务ID(中台保险附加产品业务id,冗余)
*/
// @NotBlank(message = "保险附加产品唯一业务ID不能为空")
private String additionalProductBizId;
/**
* 保险附加产品名称(中台保险附加产品名称,冗余)
*/
// @NotBlank(message = "保险附加产品名称不能为空")
private String productName;
/**
* 货币(字典)
*/
// @NotBlank(message = "货币不能为空")
private String currency;
/**
* 保费
*/
// @NotNull(message = "保费不能为空")
private BigDecimal premium;
/**
* 保额
*/
// @NotNull(message = "保额不能为空")
private BigDecimal sumInsured;
/**
* 保障地区(字典)
*/
private String guaranteeRegion;
/**
* 等级(字典)
*/
private String level;
/**
* 自付额(字典)
*/
private String deductibles;
/**
* 附加保障(json串)
*/
private String additionalSafeguards;
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import java.util.List;
/**
* 产品计划
*/
@Data
public class ApiProductPlanInfoDto {
/**
* 产品计划主信息
*/
private ApiProductPlanMainInfoDto apiProductPlanMainInfoDto;
/**
* 附加险列表
*/
private List<ApiProductPlanAdditionalInfoDto> apiProductPlanAdditionalInfoDtoList;
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 产品计划主信息
*/
@Data
public class ApiProductPlanMainInfoDto {
/**
* 产品计划表主键id(新增不需要传值,编辑需要传值)
*/
private Long id;
/**
* 预约信息主表唯一业务ID(新增不需要传值,编辑需要传值)
*/
private String appointmentBizId;
/**
* 产品计划信息表唯一业务ID(新增不需要传值,编辑需要传值)
*/
private String planBizId;
/**
* 保险产品唯一业务ID(中台保险产品业务id,冗余)
*/
// @NotBlank(message = "保险产品唯一业务ID不能为空")
private String productBizId;
/**
* 保险产品名称(中台保险产品名称,冗余)
*/
// @NotBlank(message = "保险产品名称不能为空")
private String productName;
/**
* 保险公司名称(冗余字段)
*/
private String companyName;
/**
* 地区
*/
private String region;
/**
* 货币(字典)
*/
// @NotBlank(message = "货币不能为空")
private String currency;
/**
* 供款年期(字典)
*/
// @NotBlank(message = "供款年期不能为空")
private String paymentTerm;
/**
* 付款频率(字典)
*/
// @NotBlank(message = "付款频率不能为空")
private String paymentFrequency;
/**
* 每期保费
*/
// @NotNull(message = "每期保费不能为空")
private BigDecimal eachIssuePremium;
/**
* 保额
*/
// @NotNull(message = "保额不能为空")
private BigDecimal sumInsured;
/**
* 是否预缴保费: 0-否, 1-是(字典)
*/
// @NotNull(message = "是否预缴保费不能为空")
private Integer isPrepay;
/**
* 预付额
*/
private BigDecimal deductibles;
/**
* 首期付款方式(字典)
*/
private String initialPaymentMethod;
/**
* 续期付款方式(字典)
*/
private String renewalPaymentMethod;
/**
* 红利分配方式(字典)
*/
private String dividendDistributionMethod;
/**
* 保单日期回溯: 0-否, 1-是(字典)
*/
private Integer isBacktrack;
/**
* 保单生效日
*/
private LocalDateTime policyEffectiveDate;
/**
* 是否参加递增保障权益: 0-否, 1-是(字典)
*/
private Integer isJoin;
}
package com.yd.csf.feign.dto.appointment;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 第二持有人信息
*/
@Data
public class ApiSecondHolderInfoDto {
/**
* 第二持有人信息表主键id(新增不需要传值,修改需要传值)
*/
private Long id;
/**
* 预约信息主表唯一业务ID(新增不需要传值,修改需要传值)
*/
private String appointmentBizId;
/**
* 第二持有人信息表唯一业务ID(新增不需要传值,修改需要传值)
*/
private String secondHolderBizId;
/**
* 与受保人关系(字典)
*/
private String insurantRel;
/**
* 名字
*/
private String name;
/**
* 名字-英文
*/
private String nameEn;
/**
* 性别(字典)
*/
private String gender;
/**
* 证件类型(字典)
*/
private String documentType;
/**
* 证件号码
*/
private String idNumber;
/**
* 护照号码
*/
private String passportNumber;
/**
* 出生日期
*/
private LocalDateTime birthTime;
/**
* 年龄
*/
private String age;
}
package com.yd.csf.feign.dto.appointmentfile;
import lombok.Data;
@Data
public class ApiAppointmentFileDto {
/**
* 预约附件信息表主键id
*/
private Long id;
/**
* 预约信息主表唯一业务ID
*/
private String appointmentBizId;
/**
* 中台文件元数据表唯一业务ID
*/
private String ossFileBizId;
/**
* 预约附件信息表唯一业务ID
*/
private String appointmentFileBizId;
/**
* 文件名
*/
private String fileName;
/**
* 文件访问路径
*/
private String fileUrl;
}
package com.yd.csf.feign.fallback.additional;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.additional.ApiAdditionalFeignClient;
import com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto;
import com.yd.csf.feign.request.additional.ApiAdditionalPageRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-产品计划-附加险信息Feign降级处理
*/
@Slf4j
@Component
public class ApiAdditionalFeignFallbackFactory implements FallbackFactory<ApiAdditionalFeignClient> {
@Override
public ApiAdditionalFeignClient create(Throwable cause) {
return new ApiAdditionalFeignClient() {
@Override
public Result page(ApiAdditionalPageRequest request) {
return null;
}
@Override
public Result add(ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto) {
return null;
}
@Override
public Result edit(ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto) {
return null;
}
@Override
public Result<ApiProductPlanAdditionalInfoDto> detail(String additionalBizId) {
return null;
}
@Override
public Result del(String additionalBizId) {
return null;
}
};
}
}
package com.yd.csf.feign.fallback.appointment;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.appointment.ApiAppointmentFeignClient;
import com.yd.csf.feign.dto.appointment.ApiAppointmentInfoDto;
import com.yd.csf.feign.request.appointment.*;
import com.yd.csf.feign.response.appointment.ApiAppointmentDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-预约信息Feign降级处理
*/
@Slf4j
@Component
public class ApiAppointmentFeignFallbackFactory implements FallbackFactory<ApiAppointmentFeignClient> {
@Override
public ApiAppointmentFeignClient create(Throwable cause) {
return new ApiAppointmentFeignClient() {
@Override
public Result page(ApiAppointmentPageRequest request) {
return null;
}
@Override
public Result<ApiAppointmentDetailResponse> detail(String appointmentBizId) {
return null;
}
@Override
public Result<ApiAppointmentInfoDto> mainDetail(String appointmentBizId) {
return null;
}
@Override
public Result add(ApiAppointmentAddRequest request) {
return null;
}
@Override
public Result addStorage(ApiAppointmentAddStorageRequest request) {
return null;
}
@Override
public Result singleEdit(ApiAppointmentInfoDto apiAppointmentInfoDto) {
return null;
}
@Override
public Result edit(ApiAppointmentEditRequest request) {
return null;
}
@Override
public Result editConfirmTime(ApiAppointmentEditConfirmTimeRequest request) {
return null;
}
@Override
public Result editFna(ApiAppointmentEditFnaRequest request) {
return null;
}
@Override
public Result removeFna(ApiAppointmentRemoveFnaRequest request) {
return null;
}
@Override
public Result editProposal(ApiAppointmentEditProposalRequest request) {
return null;
}
@Override
public Result removeProposal(ApiAppointmentRemoveProposalRequest request) {
return null;
}
};
}
}
package com.yd.csf.feign.fallback.appointmentfile;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.appointmentfile.ApiAppointmentFileFeignClient;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileAddRequest;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileEditRequest;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFilePageRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 香港保险服务-预约附件信息Feign降级处理
*/
@Slf4j
@Component
public class ApiAppointmentFileFeignFallbackFactory implements FallbackFactory<ApiAppointmentFileFeignClient> {
@Override
public ApiAppointmentFileFeignClient create(Throwable cause) {
return new ApiAppointmentFileFeignClient() {
@Override
public Result page(ApiAppointmentFilePageRequest request) {
return null;
}
@Override
public Result add(ApiAppointmentFileAddRequest request) {
return null;
}
@Override
public Result edit(ApiAppointmentFileEditRequest request) {
return null;
}
@Override
public Result del(String appointmentFileBizId) {
return null;
}
@Override
public Result download(String appointmentFileBizId) {
return null;
}
};
}
}
package com.yd.csf.feign.fallback.beneficiary;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.beneficiary.ApiBeneficiaryFeignClient;
import com.yd.csf.feign.dto.appointment.ApiBeneficiaryInfoDto;
import com.yd.csf.feign.dto.appointment.ApiInsurantInfoDto;
import com.yd.csf.feign.request.beneficiary.ApiBeneficiaryPageRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 香港保险服务-受益人信息Feign降级处理
*/
@Slf4j
@Component
public class ApiBeneficiaryFeignFallbackFactory implements FallbackFactory<ApiBeneficiaryFeignClient> {
@Override
public ApiBeneficiaryFeignClient create(Throwable cause) {
return new ApiBeneficiaryFeignClient() {
@Override
public Result page(ApiBeneficiaryPageRequest request) {
return null;
}
@Override
public Result<List<ApiBeneficiaryInfoDto>> list(String appointmentBizId) {
return null;
}
@Override
public Result add(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) {
return null;
}
@Override
public Result edit(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) {
return null;
}
@Override
public Result del(String beneficiaryBizId) {
return null;
}
};
}
}
package com.yd.csf.feign.fallback.insurant;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.insurant.ApiInsurantFeignClient;
import com.yd.csf.feign.dto.appointment.ApiInsurantInfoDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-受保人信息Feign降级处理
*/
@Slf4j
@Component
public class ApiInsurantFeignFallbackFactory implements FallbackFactory<ApiInsurantFeignClient> {
@Override
public ApiInsurantFeignClient create(Throwable cause) {
return new ApiInsurantFeignClient() {
@Override
public Result edit(ApiInsurantInfoDto apiInsurantInfoDto) {
return null;
}
@Override
public Result<ApiInsurantInfoDto> detail(String appointmentBizId, String insurantBizId) {
return null;
}
};
}
}
package com.yd.csf.feign.fallback.policyholder;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.policyholder.ApiPolicyholderFeignClient;
import com.yd.csf.feign.dto.appointment.ApiPolicyholderInfoDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-投保人信息Feign降级处理
*/
@Slf4j
@Component
public class ApiPolicyholderFeignFallbackFactory implements FallbackFactory<ApiPolicyholderFeignClient> {
@Override
public ApiPolicyholderFeignClient create(Throwable cause) {
return new ApiPolicyholderFeignClient() {
@Override
public Result edit(ApiPolicyholderInfoDto apiPolicyholderInfoDto) {
return null;
}
@Override
public Result<ApiPolicyholderInfoDto> detail(String appointmentBizId, String policyholderBizId) {
return null;
}
};
}
}
package com.yd.csf.feign.fallback.productplan;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.productplan.ApiProductPlanFeignClient;
import com.yd.csf.feign.dto.appointment.ApiProductPlanInfoDto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanMainInfoDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-产品计划信息Feign降级处理
*/
@Slf4j
@Component
public class ApiProductPlanFeignFallbackFactory implements FallbackFactory<ApiProductPlanFeignClient> {
@Override
public ApiProductPlanFeignClient create(Throwable cause) {
return new ApiProductPlanFeignClient() {
@Override
public Result edit(ApiProductPlanMainInfoDto apiProductPlanMainInfoDto) {
return null;
}
@Override
public Result<ApiProductPlanInfoDto> detail(String appointmentBizId, String planBizId) {
return null;
}
};
}
}
package com.yd.csf.feign.fallback.secondholder;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.secondholder.ApiSecondHolderFeignClient;
import com.yd.csf.feign.dto.appointment.ApiSecondHolderInfoDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-第二持有人信息Feign降级处理
*/
@Slf4j
@Component
public class ApiSecondHolderFeignFallbackFactory implements FallbackFactory<ApiSecondHolderFeignClient> {
@Override
public ApiSecondHolderFeignClient create(Throwable cause) {
return new ApiSecondHolderFeignClient() {
@Override
public Result edit(ApiSecondHolderInfoDto apiSecondHolderInfoDto) {
return null;
}
@Override
public Result<ApiSecondHolderInfoDto> detail(String appointmentBizId, String secondHolderBizId) {
return null;
}
};
}
}
package com.yd.csf.feign.request.additional;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiAdditionalPageRequest extends PageDto {
/**
* 产品计划信息表唯一业务ID
*/
@NotBlank(message = "产品计划信息表唯一业务ID不能为空")
private String planBizId;
/**
* 保险附加产品名称(中台保险附加产品名称,冗余)
*/
private String productName;
}
package com.yd.csf.feign.request.appointment;
import com.yd.csf.feign.dto.appointment.*;
import lombok.Data;
import java.util.List;
/**
* 新增预约入参
*/
@Data
public class ApiAppointmentAddRequest {
/**
* 预约信息
*/
private ApiAppointmentInfoDto apiAppointmentInfoDto;
/**
* 产品计划信息
*/
private ApiProductPlanInfoDto apiProductPlanInfoDto;
/**
* 投保人信息
*/
private ApiPolicyholderInfoDto apiPolicyholderInfoDto;
/**
* 受保人信息
*/
private ApiInsurantInfoDto apiInsurantInfoDto;
/**
* 受益人列表信息
*/
private List<ApiBeneficiaryInfoDto> apiBeneficiaryInfoDtoList;
/**
* 第二持有人信息
*/
private ApiSecondHolderInfoDto apiSecondHolderInfoDto;
}
package com.yd.csf.feign.request.appointment;
import com.yd.csf.feign.dto.appointment.*;
import lombok.Data;
import java.util.List;
/**
* 新增预约暂存入参
*/
@Data
public class ApiAppointmentAddStorageRequest {
/**
* 预约信息
*/
private ApiAppointmentInfoDto apiAppointmentInfoDto;
/**
* 产品计划信息
*/
private ApiProductPlanInfoDto apiProductPlanInfoDto;
/**
* 投保人信息
*/
private ApiPolicyholderInfoDto apiPolicyholderInfoDto;
/**
* 受保人信息
*/
private ApiInsurantInfoDto apiInsurantInfoDto;
/**
* 受益人列表信息
*/
private List<ApiBeneficiaryInfoDto> apiBeneficiaryInfoDtoList;
/**
* 第二持有人信息
*/
private ApiSecondHolderInfoDto apiSecondHolderInfoDto;
}
package com.yd.csf.feign.request.appointment;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
@Data
public class ApiAppointmentEditConfirmTimeRequest {
/**
* 预约信息主表唯一业务ID
*/
@NotBlank(message = "预约信息主表唯一业务ID不能为空")
private String appointmentBizId;
/**
* 确定预约时间
*/
@NotNull(message = "确定预约时间不能为空")
private LocalDateTime confirmAppointmentTime;
}
package com.yd.csf.feign.request.appointment;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 预约编辑关联FNA入参
*/
@Data
public class ApiAppointmentEditFnaRequest {
/**
* 预约信息主表唯一业务ID
*/
@NotBlank(message = "预约信息主表唯一业务ID不能为空")
private String appointmentBizId;
/**
* FNA表的业务id(FNA编号)
*/
@NotBlank(message = "FNA表的业务id不能为空")
private String fnaBizId;
/**
* FNA编号(和FNA信息表唯一业务ID是一对,唯一,冗余字段)
*/
@NotBlank(message = "FNA编号id不能为空")
private String fnaNo;
}
package com.yd.csf.feign.request.appointment;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 预约编辑关联计划书入参
*/
@Data
public class ApiAppointmentEditProposalRequest {
/**
* 预约信息主表唯一业务ID
*/
@NotBlank(message = "预约信息主表唯一业务ID不能为空")
private String appointmentBizId;
/**
* 计划书信息表唯一业务ID(冗余字段)
*/
@NotBlank(message = "计划书信息表唯一业务ID不能为空")
private String proposalBizId;
/**
* 计划书编号(和计划书信息表唯一业务ID是一对,唯一,冗余字段)
*/
@NotBlank(message = "计划书编号不能为空")
private String proposalNo;
}
package com.yd.csf.feign.request.appointment;
import com.yd.csf.feign.dto.appointment.*;
import lombok.Data;
import java.util.List;
/**
* 编辑预约入参
*/
@Data
public class ApiAppointmentEditRequest {
/**
* 预约信息
*/
private ApiAppointmentInfoDto apiAppointmentInfoDto;
/**
* 产品计划信息
*/
private ApiProductPlanInfoDto apiProductPlanInfoDto;
/**
* 投保人信息
*/
private ApiPolicyholderInfoDto apiPolicyholderInfoDto;
/**
* 受保人信息
*/
private ApiInsurantInfoDto apiInsurantInfoDto;
/**
* 受益人列表信息
*/
private List<ApiBeneficiaryInfoDto> apiBeneficiaryInfoDtoList;
/**
* 第二持有人信息
*/
private ApiSecondHolderInfoDto apiSecondHolderInfoDto;
//健康信息
}
package com.yd.csf.feign.request.appointment;
import com.yd.common.dto.PageDto;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 预约分页查询入参
*/
@Data
public class ApiAppointmentPageRequest extends PageDto {
/**
* 预约状态: 0-暂存 1-待预约, 2-待签署 3-已签署 4-已取消(字典)
*/
private Integer status;
/**
* 预约编号
*/
private String appointmentNo;
/**
* 客户姓名(客户表的姓名) TODO
*/
private String customerName;
/**
* 客户编号(客户表的客户编号)
*/
private String customerNo;
/**
* 保险产品唯一业务ID
*/
private String productBizId;
/**
* 确定预约开始时间
*/
private LocalDateTime startTime;
/**
* 确定预约结束时间
*/
private LocalDateTime endTime;
}
package com.yd.csf.feign.request.appointment;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiAppointmentRemoveFnaRequest {
/**
* 预约信息主表唯一业务ID
*/
@NotBlank(message = "预约信息主表唯一业务ID不能为空")
private String appointmentBizId;
// /**
// * FNA表的业务id(FNA编号)
// */
// @NotBlank(message = "FNA表的业务id不能为空")
// private String fnaBizId;
//
// /**
// * FNA编号(和FNA信息表唯一业务ID是一对,唯一,冗余字段)
// */
// @NotBlank(message = "FNA编号id不能为空")
// private String fnaNo;
}
package com.yd.csf.feign.request.appointment;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 预约解除关联计划书
*/
@Data
public class ApiAppointmentRemoveProposalRequest {
/**
* 预约信息主表唯一业务ID
*/
@NotBlank(message = "预约信息主表唯一业务ID不能为空")
private String appointmentBizId;
/**
* 计划书信息表唯一业务ID(冗余字段)
*/
@NotBlank(message = "计划书信息表唯一业务ID不能为空")
private String proposalBizId;
/**
* 计划书编号(和计划书信息表唯一业务ID是一对,唯一,冗余字段)
*/
@NotBlank(message = "计划书编号不能为空")
private String proposalNo;
}
package com.yd.csf.feign.request.appointmentfile;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 新增预约附件信息入参
*/
@Data
public class ApiAppointmentFileAddRequest {
/**
* 预约信息主表唯一业务ID
*/
@NotBlank(message = "预约信息主表唯一业务ID不能为空")
private String appointmentBizId;
/**
* 中台文件元数据表唯一业务ID
*/
@NotBlank(message = "中台文件元数据表唯一业务ID不能为空")
private String ossFileBizId;
/**
* 文件名
*/
@NotBlank(message = "文件名不能为空")
private String fileName;
/**
* 文件访问路径
*/
@NotBlank(message = "文件访问路径为空")
private String fileUrl;
}
package com.yd.csf.feign.request.appointmentfile;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 编辑预约附件信息入参
*/
@Data
public class ApiAppointmentFileEditRequest {
/**
* 预约附件信息表唯一业务ID
*/
@NotBlank(message = "预约附件信息表唯一业务ID不能为空")
private String appointmentFileBizId;
/**
* 文件名
*/
@NotBlank(message = "文件名不能为空")
private String fileName;
}
package com.yd.csf.feign.request.appointmentfile;
import com.yd.common.dto.PageDto;
import lombok.Data;
/**
* 预约附件信息分页查询入参
*/
@Data
public class ApiAppointmentFilePageRequest extends PageDto {
/**
* 文件名
*/
private String fileName;
}
package com.yd.csf.feign.request.beneficiary;
import com.yd.common.dto.PageDto;
import lombok.Data;
@Data
public class ApiBeneficiaryPageRequest extends PageDto {
}
package com.yd.csf.feign.response.additional;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ApiAdditionalPageResponse {
/**
* 附加险信息表主键id
*/
private Long id;
/**
* 附加险信息表唯一业务ID
*/
private String additionalBizId;
/**
* 产品计划信息表唯一业务ID
*/
private String planBizId;
/**
* 保险附加产品唯一业务ID(中台保险附加产品业务id,冗余)
*/
private String additionalProductBizId;
/**
* 保险附加产品名称(中台保险附加产品名称,冗余)
*/
private String productName;
/**
* 货币(字典)
*/
private String currency;
/**
* 保费
*/
private BigDecimal premium;
/**
* 保额
*/
private BigDecimal sumInsured;
/**
* 保障地区(字典)
*/
private String guaranteeRegion;
/**
* 等级(字典)
*/
private String level;
/**
* 自付额(字典)
*/
private String deductibles;
/**
* 附加保障(json串)
*/
private String additionalSafeguards;
}
package com.yd.csf.feign.response.appointment;
import com.yd.csf.feign.dto.appointment.*;
import com.yd.csf.feign.dto.appointmentfile.ApiAppointmentFileDto;
import lombok.Data;
import java.util.List;
@Data
public class ApiAppointmentDetailResponse {
/**
* 预约简要信息
*/
private ApiAppointmentBriefInfoDto apiAppointmentBriefInfoDto;
/**
* 预约信息
*/
private ApiAppointmentInfoDto apiAppointmentInfoDto;
/**
* 产品计划信息
*/
private ApiProductPlanInfoDto apiProductPlanInfoDto;
/**
* 投保人信息
*/
private ApiPolicyholderInfoDto apiPolicyholderInfoDto;
/**
* 受保人信息
*/
private ApiInsurantInfoDto apiInsurantInfoDto;
/**
* 受益人列表信息
*/
private List<ApiBeneficiaryInfoDto> apiBeneficiaryInfoDtoList;
/**
* 第二持有人信息
*/
private ApiSecondHolderInfoDto apiSecondHolderInfoDto;
/**
* 预约附件信息列表
*/
private List<ApiAppointmentFileDto> apiAppointmentFileDtoList;
}
package com.yd.csf.feign.response.appointment;
import lombok.Data;
import java.math.BigDecimal;
/**
* 预约分页查询出参
*/
@Data
public class ApiAppointmentPageResponse {
/**
* 预约编号
*/
private String appointmentNo;
/**
* 用户(租户名称)
*/
private String tenantName;
/**
* 产品名称(显示内容-产品计划表:产品图标(中台产品表)+产品名称(供款年期)(产品计划表))(冗余的产品id就可以查询到)
*/
private String productName;
/**
* 保险公司(显示内容-产品计划表:产品所属保险公司(中台产品表)+产品所属公司的所在地(中台产品表))(冗余的产品id就可以查询到)
*/
private String companyName;
/**
* 投保人(显示内容:投保人表的名字+名字英文)
*/
private String policyholder;
/**
* 受保人(显示内容:受保人表的名字+名字英文)
*/
private String insurant;
/**
* 供款年期(字典)(显示内容-产品计划表:供款年期,单位年)
*/
private String paymentTerm;
/**
* 预约状态: 0-暂存 1-待预约, 2-待签署 3-已签署 4-已取消(字典)
*/
private Integer status;
/**
* 每期保费(显示内容-产品计划表:每期保费)
*/
private BigDecimal eachIssuePremium;
/**
* 货币(字典)(显示内容-产品计划表:货币)
*/
private String currency;
/**
* 时间(显示-预约信息表:意向预约时间+业务代表1 姓名+业务代表1 电话号码+签单地址) TODO
*/
private String time;
}
package com.yd.csf.feign.response.appointmentfile;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 预约附件信息分页查询出参
*/
@Data
public class ApiAppointmentFilePageResponse {
/**
* 预约附件信息表主键id
*/
private Long id;
/**
* 预约信息主表唯一业务ID
*/
private String appointmentBizId;
/**
* 中台文件元数据表唯一业务ID
*/
private String ossFileBizId;
/**
* 预约附件信息表唯一业务ID
*/
private String appointmentFileBizId;
/**
* 文件名
*/
private String fileName;
/**
* 文件访问路径
*/
private String fileUrl;
/**
* 创建时间
*/
private LocalDateTime createTime;
}
package com.yd.csf.feign.response.beneficiary;
import lombok.Data;
@Data
public class ApiBeneficiaryPageResponse {
}
package com.yd.csf.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.additional.ApiAdditionalPageRequest;
import com.yd.csf.feign.response.additional.ApiAdditionalPageResponse;
import com.yd.csf.service.model.Additional;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 产品计划-附加险信息表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-01
*/
public interface AdditionalMapper extends BaseMapper<Additional> {
IPage<ApiAdditionalPageResponse> page(@Param("page") Page<ApiAdditionalPageResponse> page,
@Param("request") ApiAdditionalPageRequest request);
}
package com.yd.csf.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFilePageRequest;
import com.yd.csf.feign.response.appointmentfile.ApiAppointmentFilePageResponse;
import com.yd.csf.service.model.AppointmentFile;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 预约附件信息表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-01
*/
public interface AppointmentFileMapper extends BaseMapper<AppointmentFile> {
IPage<ApiAppointmentFilePageResponse> page(@Param("page") Page<ApiAppointmentFilePageResponse> page,
@Param("request") ApiAppointmentFilePageRequest request);
}
package com.yd.csf.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.appointment.ApiAppointmentPageRequest;
import com.yd.csf.feign.response.appointment.ApiAppointmentPageResponse;
import com.yd.csf.service.model.Appointment;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 预约信息主表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-01
*/
public interface AppointmentMapper extends BaseMapper<Appointment> {
IPage<ApiAppointmentPageResponse> page(@Param("page") Page<ApiAppointmentPageResponse> page,
@Param("request") ApiAppointmentPageRequest request);
}
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