Commit f92ec39e by zhangxingmin

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

# Conflicts:
#	yd-csf-api/Dockerfile
parents aef66dfa c99bb692
# 基础镜像
FROM openjdk:8
# 维护人
LABEL maintainer="zxm<2060197959@qq.com>"
# 创建目录(Alpine 命令相同)
# 创建目录
RUN mkdir -p /home/app
# 拷贝项目 jar
# 拷贝项目jar - 使用可执行的 fat JAR
COPY target/yd-csf-api-1.0-SNAPSHOT-exec.jar /home/app/yd-csf-api.jar
# 启动命令(内存参数可保留)
ENTRYPOINT ["java", "-Xmx256m", "-Xms128m", "-jar", "/home/app/yd-csf-api.jar"]
# 执行命令启动jar,并设置JVM内存参数
ENTRYPOINT ["java", "-Duser.timezone=Asia/Shanghai", "-Xmx256m", "-Xms128m", "-jar", "/home/app/yd-csf-api.jar"]
# 暴露端口
EXPOSE 9202
\ No newline at end of file
EXPOSE 9202
package com.yd.csf.api.async;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiExpectedFortuneService;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse;
import com.yd.feign.config.FeignTokenInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@Slf4j
@Component
public class ApiExpectedFortuneAsyncService {
@Resource
private ApiExpectedFortuneService apiExpectedFortuneService;
/**
* 异步处理
*
* @return
*/
@Async("commonAsyncExecutor")
public Result execute(String policyNo, String token) {
// 将 token 设置到 ThreadLocal 中,供 Feign 拦截器使用
FeignTokenInterceptor.setThreadLocalToken(token);
HttpServletRequest request1 = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token1 = request1.getHeader("Authorization");
log.info("异步处理 token==============,{}",token1);
try {
ApiGenerateExpectedFortuneRequest request = new ApiGenerateExpectedFortuneRequest();
request.setPolicyNo(policyNo);
log.info("生成预计发佣 generateSyncWithLogAndRedis ——> PolicyNo:{}", policyNo);
Result<ApiGenerateExpectedFortuneResponse> result =
apiExpectedFortuneService.generateSyncWithLogAndRedis(request);
if (result != null && result.getCode() == 200) {
log.info("新单跟进-同步生成预计出账记录成功: 保单号={}", policyNo);
}
return result;
} finally {
// 必须清理,防止内存泄漏
FeignTokenInterceptor.clearThreadLocalToken();
}
}
}
......@@ -247,13 +247,20 @@ public class ApiCommissionExpectedController {
if (policy == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "保单不存在");
}
PolicyFollow policyFollow = policyFollowService.lambdaQuery().eq(PolicyFollow::getPolicyNo, request.getPolicyNo()).one();
if (policyFollow == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "新单跟进不存在");
}
commissionExpectedService.getExpectedCommissionByProductlaunchId(
policy,
request.getProductLaunchBizId(),
request.getInsuranceCompanyBizId(),
request.getReconciliationCompany(),
request.getReconciliationCompanyCode(),
request.getReconciliationCompanyBizId());
request.getReconciliationCompanyBizId(),
policyFollow.getProfessionalInvestor());
return Result.success(true);
}
......@@ -389,4 +396,15 @@ public class ApiCommissionExpectedController {
}
return Collections.emptyList();
}
@GetMapping("/test_expected_commission")
@Operation(summary = "测试佣金匹配")
public Result<Boolean> testExpectedCommission(@RequestParam("policyNo") String policyNo) {
if (StringUtils.isBlank(policyNo)) {
return Result.fail(ResultCode.NULL_ERROR.getCode(), "policyNo不能为空");
}
commissionExpectedService.testExpectedCommission(policyNo);
return Result.success(true);
}
}
......@@ -18,6 +18,7 @@ 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.async.ApiExpectedFortuneAsyncService;
import com.yd.csf.api.dto.CommissionExcelDTO;
import com.yd.csf.api.dto.PolicyExcelDTO;
import com.yd.csf.api.dto.PolicyFollowDTO;
......@@ -93,14 +94,16 @@ public class ApiPolicyFollowController {
private ApiInsuranceReconciliationCompanyFeignClient apiInsuranceReconciliationCompanyFeignClient;
@Resource
private CommissionExpectedService commissionExpectedService;
@Resource
private ApiPolicyFollowService apiPolicyFollowService;
@Resource
private ApiExpectedFortuneService apiExpectedFortuneService;
// @Resource
// private ApiPolicyFollowService apiPolicyFollowService;
// @Resource
// private ApiExpectedFortuneService apiExpectedFortuneService;
@Resource
private ApiAnnouncementCommissionRatioFeignClient apiAnnouncementCommissionRatioFeignClient;
@Resource
private FeignResultHelper feignResultHelper;
@Resource
private ApiExpectedFortuneAsyncService apiExpectedFortuneAsyncService;
@PostMapping("/upload/excel")
......@@ -573,10 +576,13 @@ public class ApiPolicyFollowController {
if (PolicyFollowStatusEnum.EFFECTIVE.equals(currentStatusEnum)) {
// 获取Token
String token = request.getHeader("Authorization");
log.info("修改跟进状态获取token:{}", token);
log.info("修改跟进状态获取token=======================>:{}", token);
log.info("修改跟进状态调用异步开始:{}", "=======================>");
// 同步:根据保单生成预计出账记录
execute(token, policyFollow.getPolicyNo());
// execute(token, policyFollow.getPolicyNo());
apiExpectedFortuneAsyncService.execute(policyFollow.getPolicyNo(),token);
}
log.info("修改跟进状态直接结束:{}", "=======================>");
return Result.success(true);
}
......@@ -587,22 +593,22 @@ public class ApiPolicyFollowController {
policyFollow.getProductName());
}
/**
* 异步处理
*
* @return
*/
public Result execute(String token, String policyNo) {
// 调用 ApiExpectedFortuneService 的 generateSyncWithLogAndRedis(同步版本,包含日志和Redis处理)
ApiGenerateExpectedFortuneRequest generateExpectedFortuneRequest = new ApiGenerateExpectedFortuneRequest();
generateExpectedFortuneRequest.setPolicyNo(policyNo);
log.info("生成预计发佣generateSyncWithLogAndRedis——>PolicyNo:{}", policyNo);
Result<ApiGenerateExpectedFortuneResponse> result = apiExpectedFortuneService.generateSyncWithLogAndRedis(generateExpectedFortuneRequest);
if (result != null && result.getCode() == 200) {
log.info("新单跟进-同步生成预计出账记录成功:保单号={}", policyNo);
}
return Result.success();
}
// /**
// * 异步处理
// *
// * @return
// */
// public Result execute(String token, String policyNo) {
// // 调用 ApiExpectedFortuneService 的 generateSyncWithLogAndRedis(同步版本,包含日志和Redis处理)
// ApiGenerateExpectedFortuneRequest generateExpectedFortuneRequest = new ApiGenerateExpectedFortuneRequest();
// generateExpectedFortuneRequest.setPolicyNo(policyNo);
// log.info("生成预计发佣generateSyncWithLogAndRedis——>PolicyNo:{}", policyNo);
// Result<ApiGenerateExpectedFortuneResponse> result = apiExpectedFortuneService.generateSyncWithLogAndRedis(generateExpectedFortuneRequest);
// if (result != null && result.getCode() == 200) {
// log.info("新单跟进-同步生成预计出账记录成功:保单号={}", policyNo);
// }
// return Result.success();
// }
/**
* 新单跟进状态列表查询
......
......@@ -31,9 +31,6 @@ public interface ApiPremiumReconciliationService {
Result editResult(ApiPremiumReconciliationResultEditRequest request);
@Async("commonAsyncExecutor")
void execute(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest,String token);
Result<Boolean> checkReconciliationComplete(String policyNo);
Result<PremiumReconciliation> checkPremiumReconciliationIsExist(String expectedCommissionRatioBizId);
......
......@@ -81,6 +81,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto) {
List<ApiProductPlanAdditionalInfoDto> list = new ArrayList<>();
list.add(apiProductPlanAdditionalInfoDto);
......@@ -100,6 +101,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto) {
//编辑预约入参字段校验 - 产品计划信息字段校验 - 编辑产品附加险信息单个对象字段校验
apiAppointmentCheckService.checkEditApiProductPlanAdditionalInfoDto(apiProductPlanAdditionalInfoDto);
......@@ -134,6 +136,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result del(String additionalBizId) {
//校验附加险信息是否存在
Result<Additional> result = checkAdditionalIsExist(additionalBizId);
......@@ -183,6 +186,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result batchEditAdditionalData(ApiProductPlanInfoDto productPlanInfoDto, String planBizId) {
if (Objects.isNull(productPlanInfoDto)
|| ( !Objects.isNull(productPlanInfoDto)
......
......@@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
......@@ -35,6 +36,7 @@ public class ApiAgentDetailFycServiceImpl implements ApiAgentDetailFycService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result saveAgentDetailFyc(GenerateAgentDetailFycDto dto) {
List<AlgorithmResDto> algorithmResDtoList = dto.getAlgorithmResDtoList();
List<AgentDetailFyc> agentDetailFycList = new ArrayList<>();
......
......@@ -9,6 +9,7 @@ import com.yd.csf.service.model.AgentReferralRelation;
import com.yd.csf.service.service.IAgentReferralRelationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
......@@ -25,6 +26,7 @@ public class ApiAgentReferralRelationServiceImpl implements ApiAgentReferralRela
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result save(ApiAgentReferralRelationSaveRequest request) {
//先删后新增
iAgentReferralRelationService.del(request.getAgentIdList(), request.getReferrerId());
......
......@@ -8,6 +8,7 @@ import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.constant.RedisConstants;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.DictTypeEnum;
import com.yd.common.enums.ProjectEnum;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.*;
......@@ -46,6 +47,7 @@ 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.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.util.*;
......@@ -137,6 +139,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiAppointmentFileAddRequest request) {
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
......@@ -154,6 +157,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiAppointmentFileEditRequest request) {
Result<AppointmentFile> result = checkAppointmentFileIsExist(request.getAppointmentFileBizId());
AppointmentFile appointmentFile = result.getData();
......@@ -168,6 +172,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result del(String appointmentFileBizId) {
Result<AppointmentFile> result = checkAppointmentFileIsExist(appointmentFileBizId);
AppointmentFile appointmentFile = result.getData();
......@@ -181,6 +186,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result download(String appointmentFileBizId) {
return null;
}
......@@ -191,6 +197,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<String> itineraryPdf(String appointmentBizId) {
String url = "";
//查询redis缓存的字典列表信息
......@@ -206,6 +213,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
request.setDataObject(itineraryDto);
request.setObjectId(appointmentBizId);
request.setTemplateType(TemplateTypeEnum.XCD.getItemValue());
request.setProjectBizId(ProjectEnum.CSF_PC.getProjectBizId());
if (StringUtils.isNotBlank(itineraryDto.getName()) &&
StringUtils.isNotBlank(itineraryDto.getArrivalTime())) {
//咨询人和集合日(签单日)都不为空,文件名 = 咨询人 + 集合日(20260103)
......@@ -236,6 +244,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<ApiAppointmentExportExcelResponse> appointmentExportExcel(String appointmentBizId) {
Map<String, Object> data = new HashMap<>();
try {
......@@ -342,6 +351,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
excelRequest.setAppointmentBizId(appointmentBizId);
excelRequest.setData(data);
excelRequest.setTemplateType(TemplateTypeEnum.YYD.getItemValue());
excelRequest.setProjectBizId(ProjectEnum.CSF_PC.getProjectBizId());
Result<ApiOssExportAppointmentExcelResponse> result1 = apiExcelFeignClient.exportAppointment(excelRequest);
ApiOssExportAppointmentExcelResponse excelResponse = result1.getData();
ApiAppointmentExportExcelResponse response = new ApiAppointmentExportExcelResponse();
......@@ -362,6 +372,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<ApiAppointmentImportExcelResponse> appointmentImportExcel(MultipartFile file,
ApiAppointmentImportExcelRequest request) {
......
......@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Slf4j
......@@ -25,6 +26,7 @@ public class ApiAppointmentLogServiceImpl implements ApiAppointmentLogService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<String> saveAppointmentLog(Appointment appointment) {
AppointmentLog appointmentLog = new AppointmentLog();
BeanUtils.copyProperties(appointment,appointmentLog);
......
......@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.stream.Collectors;
......@@ -29,6 +30,7 @@ public class ApiAppointmentReferrerLogServiceImpl implements ApiAppointmentRefer
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result saveAppointmentReferrerLogList(List<ApiAppointmentReferrerDto> referrerDtoList,
String appointmentLogBizId) {
if (CollectionUtils.isEmpty(referrerDtoList)) {
......
......@@ -280,6 +280,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
* @param appointmentBizId
* @return
*/
@Transactional(rollbackFor = Exception.class)
public Result addRelObjectMaterialList(String appointmentBizId,
List<ApiAppointmentMaterialDto> dtoList) {
//添加-单个对象和材料列表关系信息
......@@ -497,6 +498,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
* 更新关联的FNA状态为"待签单"
* @param fnaBizId FNA业务ID
*/
@Transactional(rollbackFor = Exception.class)
private void updateFnaStatusToPendingSignature(String fnaBizId) {
if (StringUtils.isBlank(fnaBizId)) {
return;
......@@ -514,6 +516,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result editStorage(ApiAppointmentEditStorageRequest request) {
//校验预约信息-客户和fna入参
apiAppointmentCheckService.checkCustomerAndFna(request.getApiAppointmentInfoDto(), "预约信息-");
......@@ -1175,6 +1178,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result editStatus(ApiAppointmentEditStatusRequest request) {
//校验预约信息是否存在
Result<Appointment> result = checkAppointmentIsExist(request.getAppointmentBizId());
......@@ -1196,6 +1200,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
* 取消预约-更新新单跟进状态为取消预约
* @return
*/
@Transactional(rollbackFor = Exception.class)
public Result editFollowStatus(String appointmentBizId) {
List<PolicyFollow> followList = policyFollowService.queryListByAppointmentBizId(appointmentBizId);
if (!CollectionUtils.isEmpty(followList)) {
......
......@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.stream.Collectors;
......@@ -29,6 +30,7 @@ public class ApiAppointmentUserSignLogServiceImpl implements ApiAppointmentUserS
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result saveAppointmentUserSignLogList(List<ApiAppointmentUserSignDto> userSignDtoList,
String appointmentLogBizId) {
if (CollectionUtils.isEmpty(userSignDtoList)) {
......
......@@ -83,6 +83,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) {
List<ApiBeneficiaryInfoDto> list = new ArrayList<>();
list.add(apiBeneficiaryInfoDto);
......@@ -99,6 +100,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) {
//编辑预约入参字段校验 - 编辑单个受益人信息字段校验
apiAppointmentCheckService.checkEditApiBeneficiaryInfoDto(apiBeneficiaryInfoDto);
......@@ -118,6 +120,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result batchEdit(ApiBatchEditBeneficiaryRequest request) {
apiAppointmentCheckService.checkEditApiBeneficiaryInfoDtoList(request.getApiBeneficiaryInfoDtoList());
//批量编辑受益人信息表数据
......@@ -131,6 +134,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result del(String beneficiaryBizId) {
//校验受益人信息是否存在
Result<Beneficiary> result = checkBeneficiaryIsExist(beneficiaryBizId);
......@@ -177,6 +181,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result batchEditBeneficiaryData(List<ApiBeneficiaryInfoDto> list,String appointmentBizId) {
if (CollectionUtils.isEmpty(list)){
//为空放行
......
......@@ -21,6 +21,7 @@ import com.yd.csf.service.service.ICommissionRuleConfigService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
......@@ -65,6 +66,7 @@ public class ApiCommissionRuleConfigServiceImpl implements ApiCommissionRuleConf
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiCommissionRuleConfigAddRequest request) {
//校验基本法名称的唯一性
List<CommissionRuleConfig> list = iCommissionRuleConfigService.queryList(CommissionRuleConfigDto.builder()
......@@ -88,6 +90,7 @@ public class ApiCommissionRuleConfigServiceImpl implements ApiCommissionRuleConf
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiCommissionRuleConfigEditRequest request) {
//校验基本法配置信息是否存在
Result<CommissionRuleConfig> result = checkCommissionRuleConfigIsExist(request.getRuleBizId());
......@@ -113,6 +116,7 @@ public class ApiCommissionRuleConfigServiceImpl implements ApiCommissionRuleConf
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result del(String ruleBizId) {
return null;
}
......
......@@ -23,6 +23,7 @@ import com.yd.csf.service.service.IConditionTypeService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
......@@ -72,6 +73,7 @@ public class ApiConditionConfigServiceImpl implements ApiConditionConfigService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiConditionConfigAddRequest request) {
//校验条件名称唯一性
List<ConditionConfig> conditionConfigList = iConditionConfigService.queryList(ConditionConfigDto.builder()
......@@ -96,6 +98,7 @@ public class ApiConditionConfigServiceImpl implements ApiConditionConfigService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiConditionConfigEditRequest request) {
Result<ConditionConfig> result = checkConditionConfigIsExist(request.getConditionBizId());
ConditionConfig conditionConfig = result.getData();
......@@ -120,6 +123,7 @@ public class ApiConditionConfigServiceImpl implements ApiConditionConfigService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result del(String conditionBizId) {
return null;
}
......
......@@ -21,6 +21,7 @@ import com.yd.csf.service.service.IConditionTypeService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
......@@ -63,6 +64,7 @@ public class ApiConditionTypeServiceImpl implements ApiConditionTypeService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiConditionTypeAddRequest request) {
//校验条件类型名称唯一性
List<ConditionType> conditionTypeList = iConditionTypeService.queryList(ConditionTypeDto.builder()
......@@ -86,6 +88,7 @@ public class ApiConditionTypeServiceImpl implements ApiConditionTypeService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiConditionTypeEditRequest request) {
Result<ConditionType> result = checkConditionTypeIsExist(request.getConditionTypeBizId());
ConditionType conditionType = result.getData();
......@@ -109,6 +112,7 @@ public class ApiConditionTypeServiceImpl implements ApiConditionTypeService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result del(String conditionTypeBizId) {
return null;
}
......
......@@ -54,8 +54,11 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.util.CollectionUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.RoundingMode;
......@@ -117,6 +120,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<ApiGenerateExpectedFortuneResponse> generate(ApiGenerateExpectedFortuneRequest request) {
//查询当前保单号是否正在执行预计发佣的缓存,有值就说明正在执行,无值说明执行完毕或者没有执行。
String value = redisUtil.getCacheObject(RedisConstants.EXPECTED_FORTUNE + request.getPolicyNo());
......@@ -182,6 +186,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
* @param request
* @return
*/
@Transactional(rollbackFor = Exception.class)
public Result<ApiGenerateExpectedFortuneResponse> generateSync(ApiGenerateExpectedFortuneRequest request) {
//查询当前保单号是否正在执行预计发佣的缓存,有值就说明正在执行,无值说明执行完毕或者没有执行。
String value = redisUtil.getCacheObject(RedisConstants.EXPECTED_FORTUNE + request.getPolicyNo());
......@@ -222,6 +227,9 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
announcementRatioListRequest.setEffectiveDate(Date.from(queryPolicyAndBrokerDto.getEffectiveDate().atStartOfDay(ZoneId.systemDefault()).toInstant()));
announcementRatioListRequest.setPaymentTerm(String.valueOf(queryPolicyAndBrokerDto.getPaymentTerm()));
HttpServletRequest request1 = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request1.getHeader("Authorization");
log.info("HttpServletRequest token==============,{}",token);
List<ApiAnnouncementCommissionRatioListResponse> announcementRatioList;
try {
announcementRatioList = feignResultHelper.extractListData(
......@@ -233,6 +241,8 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
throw new BusinessException("未查询到产品发佣配置,查询条件:" + JSON.toJSONString(announcementRatioListRequest));
}
log.info("查询产品发佣配置,获取结算币种==========>,{}",JSON.toJSONString(announcementRatioList));
Integer paymentTerm = 0;
PolicyFollow policyFollow = policyFollowService.queryOneByPolicyNo(request.getPolicyNo());
if (policyFollow != null) {
......@@ -273,6 +283,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<ApiGenerateExpectedFortuneResponse> generateWithLogAndRedis(ApiGenerateExpectedFortuneRequest request) {
try {
Result<ApiGenerateExpectedFortuneResponse> result = generate(request);
......@@ -313,6 +324,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<ApiGenerateExpectedFortuneResponse> generateSyncWithLogAndRedis(ApiGenerateExpectedFortuneRequest request) {
try {
Result<ApiGenerateExpectedFortuneResponse> result = generateSync(request);
......@@ -354,6 +366,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
*/
@Override
@Async("commonAsyncExecutor")
@Transactional(rollbackFor = Exception.class)
public Result execute(List<QueryPolicyAndBrokerDto> queryPolicyAndBrokerDtoList,
List<CommissionRuleBinding> commissionRuleBindingList,
String policyNo,
......@@ -419,6 +432,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
});
}
@Transactional(rollbackFor = Exception.class)
private void updateHkdAmountBatch(List<ExpectedFortune> expectedFortuneList, String policyCurrency, List<ApiAnnouncementCommissionRatioListResponse> announcementRatioList) {
log.info("------------------------开始计算默认结算汇率、港币金额----------------------");
......@@ -463,13 +477,21 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
* @param policyNo
* @return
*/
@Transactional(rollbackFor = Exception.class)
public Result executeSync(List<QueryPolicyAndBrokerDto> queryPolicyAndBrokerDtoList,
String policyNo, List<ApiAnnouncementCommissionRatioListResponse> announcementRatioList,Integer paymentTerm) {
log.info("同步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表->入参queryPolicyAndBrokerDtoList:{}",JSON.toJSONString(queryPolicyAndBrokerDtoList));
log.info("同步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表->入参policyNo:{}",policyNo);
HttpServletRequest request1 = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request1.getHeader("Authorization");
log.info("同步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表 token==============,{}",token);
// 使用编程式事务,确保方法内的事务一致性
return transactionTemplate.execute(status -> {
try {
HttpServletRequest request2 = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token2 = request2.getHeader("Authorization");
log.info("使用编程式事务,确保方法内的事务一致性 token==============,{}",token2);
for (QueryPolicyAndBrokerDto brokerDto : queryPolicyAndBrokerDtoList) {
// Integer paymentTerm = brokerDto.getPaymentTerm();
......@@ -548,6 +570,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
return commissionRuleBindingList;
}
@Transactional(rollbackFor = Exception.class)
private List<ExpectedFortune> updatePayableNoBatch(String policyNo) {
// 查询最新一条有 payableNo 记录
ExpectedFortune latest = iExpectedFortuneService.getOne(
......@@ -841,6 +864,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean add(List<ExpectedFortuneAddRequest> fortuneAddRequestList) {
if (CollectionUtils.isEmpty(fortuneAddRequestList)) {
return true;
......@@ -938,6 +962,9 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
* @return 汇率
*/
private BigDecimal queryExchangeRateByFeign(String policyCurrency, String currency) {
HttpServletRequest request2 = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token2 = request2.getHeader("Authorization");
log.info("保单币种对预计来佣的结算币种的默认汇率 token==============,{}",token2);
if (policyCurrency.equalsIgnoreCase(currency)) {
return BigDecimal.ONE;
}
......@@ -961,6 +988,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
}
@Override
@Transactional(rollbackFor = Exception.class)
public void exportExpectedFortune(ApiExpectedFortunePageRequest request, HttpServletResponse response) {
// 查询数据
QueryWrapper<ExpectedFortune> queryWrapper = this.getQueryWrapper(request);
......
......@@ -23,6 +23,7 @@ import com.yd.csf.service.service.IFormulaConfigService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
......@@ -69,6 +70,7 @@ public class ApiFormulaConfigServiceImpl implements ApiFormulaConfigService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiFormulaConfigAddRequest request) {
//校验公式名称唯一性
List<FormulaConfig> formulaConfigList = iFormulaConfigService.queryList(FormulaConfigDto.builder()
......@@ -94,6 +96,7 @@ public class ApiFormulaConfigServiceImpl implements ApiFormulaConfigService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiFormulaConfigEditRequest request) {
Result<FormulaConfig> result = checkFormulaConfigIsExist(request.getFormulaBizId());
FormulaConfig formulaConfig = result.getData();
......@@ -119,6 +122,7 @@ public class ApiFormulaConfigServiceImpl implements ApiFormulaConfigService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result del(String formulaBizId) {
return null;
}
......
......@@ -109,6 +109,7 @@ public class ApiInsurantServiceImpl implements ApiInsurantService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiInsurantInfoDto apiInsurantInfoDto) {
//编辑预约入参字段校验 - 受保人信息字段校验
apiAppointmentCheckService.checkEditApiInsurantInfoDto(apiInsurantInfoDto);
......@@ -225,6 +226,7 @@ public class ApiInsurantServiceImpl implements ApiInsurantService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<Insurant> editInsurantData(ApiInsurantInfoDto dto, String appointmentBizId) {
if (Objects.isNull(dto)){
//受保人信息对象不能为空
......
......@@ -21,6 +21,7 @@ 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.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
......@@ -79,6 +80,7 @@ public class ApiPolicyReceiptServiceImpl implements ApiPolicyReceiptService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiPolicyReceiptAddRequest request) {
//校验保单信息是否存在
Policy policy = policyService.queryOne(request.getPolicyNo());
......@@ -101,6 +103,7 @@ public class ApiPolicyReceiptServiceImpl implements ApiPolicyReceiptService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiPolicyReceiptEditRequest request) {
//校验保单回执信息是否存在
PolicyReceipt policyReceipt = iPolicyReceiptService.queryOne(request.getPolicyReceiptBizId());
......@@ -127,6 +130,7 @@ public class ApiPolicyReceiptServiceImpl implements ApiPolicyReceiptService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result editReceiptStatus(String policyReceiptBizId, String receiptStatus) {
PolicyReceipt policyReceipt = iPolicyReceiptService.queryOne(policyReceiptBizId);
if (Objects.isNull(policyReceipt)) {
......
......@@ -101,6 +101,7 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiPolicyholderInfoDto apiPolicyholderInfoDto) {
//编辑预约入参字段校验 - 投保人信息字段校验
apiAppointmentCheckService.checkEditApiPolicyholderInfoDto(apiPolicyholderInfoDto);
......@@ -165,6 +166,7 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService {
* @param apiCertificateDtoList
* @return
*/
@Transactional(rollbackFor = Exception.class)
public Result addRelObjectCertificateList(String objectBizId,
String objectType,
String objectTableName,
......@@ -187,6 +189,7 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<Policyholder> editPolicyholderData(ApiPolicyholderInfoDto dto, String appointmentBizId) {
if (Objects.isNull(dto)) {
//投保人信息对象不能为空
......
......@@ -15,6 +15,7 @@ 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.async.ApiExpectedFortuneAsyncService;
import com.yd.csf.api.service.ApiExpectedFortuneService;
import com.yd.csf.api.service.ApiPremiumReconciliationService;
import com.yd.csf.api.service.ApiPremiumRemittanceService;
......@@ -118,6 +119,9 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
return applicationContext.getBean(ApiPremiumReconciliationService.class);
}
@Resource
private ApiExpectedFortuneAsyncService apiExpectedFortuneAsyncService;
/**
* 分页列表查询-保费对账记录信息
* @param request
......@@ -720,6 +724,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiPremiumReconciliationAddRequest request) {
//根据当前Policy保单信息里面的生效日期、付款频率、缴费宽限期,校验当天是否在缴费期内,不在缴费期内不能保费对账 TODO 校验待定
//保费对账信息
......@@ -812,6 +817,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiPremiumReconciliationDto request) {
if (StringUtils.isBlank(request.getPremiumReconciliationBizId())) {
throw new BusinessException("保费对账记录表唯一业务ID不能为空");
......@@ -1231,12 +1237,6 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
return Result.success();
}
@Override
@Async("commonAsyncExecutor")
public void execute(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest,String token) {
changePolicyFollowStatus(changePolicyFollowStatusRequest,token);
}
/**
* 修改跟进状态
*
......@@ -1247,7 +1247,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
public Result<Boolean> changePolicyFollowStatus(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest,String token) {
// 设置ThreadLocal Token
FeignTokenInterceptor.setThreadLocalToken(token);
// FeignTokenInterceptor.setThreadLocalToken(token);
if (changePolicyFollowStatusRequest == null || StringUtils.isBlank(changePolicyFollowStatusRequest.getPolicyBizId())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "policyBizId不能为空");
......@@ -1291,27 +1291,27 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
if (PolicyFollowStatusEnum.EFFECTIVE.equals(currentStatusEnum)) {
log.info("修改跟进状态获取token:{}", token);
// 同步:根据保单生成预计出账记录
generateExpectedFortuneSync(token, policyFollow.getPolicyNo());
apiExpectedFortuneAsyncService.execute(policyFollow.getPolicyNo(),token);
}
return Result.success(true);
}
/**
* 同步生成预计出账记录
*
* @param token 认证Token
* @param policyNo 保单号
*/
private void generateExpectedFortuneSync(String token, String policyNo) {
// 调用 ApiExpectedFortuneService 的 generateSyncWithLogAndRedis(同步版本,包含日志和Redis处理)
ApiGenerateExpectedFortuneRequest generateExpectedFortuneRequest = new ApiGenerateExpectedFortuneRequest();
generateExpectedFortuneRequest.setPolicyNo(policyNo);
log.info("生成预计发佣generateSyncWithLogAndRedis——>PolicyNo:{}", policyNo);
Result<ApiGenerateExpectedFortuneResponse> result = apiExpectedFortuneService.generateSyncWithLogAndRedis(generateExpectedFortuneRequest);
if (result != null && result.getCode() == 200) {
log.info("新单跟进-同步生成预计出账记录成功:保单号={}", policyNo);
}
}
// /**
// * 同步生成预计出账记录
// *
// * @param token 认证Token
// * @param policyNo 保单号
// */
// private void generateExpectedFortuneSync(String token, String policyNo) {
// // 调用 ApiExpectedFortuneService 的 generateSyncWithLogAndRedis(同步版本,包含日志和Redis处理)
// ApiGenerateExpectedFortuneRequest generateExpectedFortuneRequest = new ApiGenerateExpectedFortuneRequest();
// generateExpectedFortuneRequest.setPolicyNo(policyNo);
// log.info("生成预计发佣generateSyncWithLogAndRedis——>PolicyNo:{}", policyNo);
// Result<ApiGenerateExpectedFortuneResponse> result = apiExpectedFortuneService.generateSyncWithLogAndRedis(generateExpectedFortuneRequest);
// if (result != null && result.getCode() == 200) {
// log.info("新单跟进-同步生成预计出账记录成功:保单号={}", policyNo);
// }
// }
/**
* 校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了)
......
......@@ -17,6 +17,7 @@ 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.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
......@@ -48,6 +49,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiPremiumRemittanceFileDto request) {
if (StringUtils.isBlank(request.getPremiumRemittanceBizId())) {
throw new BusinessException("保费对账-汇款记录表唯一业务ID不能为空");
......@@ -66,6 +68,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiPremiumRemittanceFileDto request) {
if (StringUtils.isBlank(request.getPremiumRemittanceBizId())) {
throw new BusinessException("保费对账-汇款记录表唯一业务ID不能为空");
......@@ -86,6 +89,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result del(String premiumRemittanceFileBizId) {
Result<PremiumRemittanceFile> result = checkPremiumRemittanceFileIsExist(premiumRemittanceFileBizId);
PremiumRemittanceFile file = result.getData();
......@@ -100,6 +104,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result addPremiumRemittanceFileList(List<ApiPremiumRemittanceFileDto> apiPremiumRemittanceFileDtoList,
String premiumRemittanceBizId) {
if (CollectionUtils.isEmpty(apiPremiumRemittanceFileDtoList)) {
......@@ -124,6 +129,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result savePremiumRemittanceFileList(List<ApiPremiumRemittanceFileDto> apiPremiumRemittanceFileDtoList,
String premiumRemittanceBizId) {
//先删后新增
......@@ -149,6 +155,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result delByPremiumRemittanceBizId(String premiumRemittanceBizId) {
iPremiumRemittanceFileService.delByPremiumRemittanceBizId(premiumRemittanceBizId);
return Result.success();
......
......@@ -20,6 +20,7 @@ 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.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -55,6 +56,7 @@ public class ApiPremiumRemittanceServiceImpl implements ApiPremiumRemittanceServ
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiPremiumRemittanceDto request) {
if (StringUtils.isBlank(request.getPremiumReconciliationBizId())) {
throw new BusinessException("保费对账记录表唯一业务ID不能为空");
......@@ -72,6 +74,7 @@ public class ApiPremiumRemittanceServiceImpl implements ApiPremiumRemittanceServ
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiPremiumRemittanceDto request) {
if (StringUtils.isBlank(request.getPremiumRemittanceBizId())) {
throw new BusinessException("保费对账-汇款记录表唯一业务ID不能为空");
......@@ -112,6 +115,7 @@ public class ApiPremiumRemittanceServiceImpl implements ApiPremiumRemittanceServ
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result del(String premiumRemittanceBizId) {
checkPremiumRemittanceIsExist(premiumRemittanceBizId);
//删除保费对账汇款记录附件列表
......@@ -128,6 +132,7 @@ public class ApiPremiumRemittanceServiceImpl implements ApiPremiumRemittanceServ
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result addPremiumRemittanceList(List<ApiPremiumRemittanceDto> apiPremiumRemittanceDtoList,
String premiumReconciliationBizId) {
if (CollectionUtils.isEmpty(apiPremiumRemittanceDtoList)) {
......
......@@ -81,6 +81,7 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<String> edit(ApiProductPlanMainInfoDto apiProductPlanMainInfoDto) {
//编辑预约入参字段校验 - 产品计划信息字段校验 - 产品计划主信息字段校验
......@@ -102,6 +103,7 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result editPlan(ApiProductPlanInfoDto apiProductPlanInfoDto) {
//编辑产品计划主体信息
Result<String> result = edit(apiProductPlanInfoDto.getApiProductPlanMainInfoDto());
......@@ -146,6 +148,7 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<ProductPlan> editProductPlanData(ApiProductPlanInfoDto productPlanInfoDto, String appointmentBizId) {
if (Objects.isNull(productPlanInfoDto)
|| ( !Objects.isNull(productPlanInfoDto) && Objects.isNull(productPlanInfoDto.getApiProductPlanMainInfoDto()))){
......
......@@ -12,6 +12,7 @@ import com.yd.csf.service.service.IRelObjectConditionService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
......@@ -32,6 +33,7 @@ public class ApiRelObjectConditionServiceImpl implements ApiRelObjectConditionSe
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result saveRelList(ApiRelObjectConditionDto dto) {
//先删后新增
iRelObjectConditionService.del(dto);
......
......@@ -13,6 +13,7 @@ import com.yd.csf.service.service.IRelObjectFormulaService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
......@@ -60,6 +61,7 @@ public class ApiRelObjectFormulaServiceImpl implements ApiRelObjectFormulaServic
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result saveRelList(ApiRelObjectFormulaDto dto) {
//先删后新增
RelObjectFormulaDto relObjectFormulaDto = new RelObjectFormulaDto();
......@@ -86,6 +88,7 @@ public class ApiRelObjectFormulaServiceImpl implements ApiRelObjectFormulaServic
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result saveObjectList(List<ApiRelObjectFormulaDto> objectList, String formulaBizId) {
//先删后新增
iRelObjectFormulaService.delObjectList(formulaBizId);
......
......@@ -13,6 +13,7 @@ import com.yd.csf.service.service.IRelObjectSqlService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
......@@ -28,6 +29,7 @@ public class ApiRelObjectSqlServiceImpl implements ApiRelObjectSqlService {
private ICommissionSqlTemplateService iCommissionSqlTemplateService;
@Override
@Transactional(rollbackFor = Exception.class)
public Result saveRelList(ApiRelObjectSqlDto dto) {
//先删后新增
RelObjectSqlDto relObjectSqlDto = new RelObjectSqlDto();
......
......@@ -24,6 +24,7 @@ import com.yd.csf.service.service.IRuleItemConfigService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
......@@ -79,6 +80,7 @@ public class ApiRuleItemConfigServiceImpl implements ApiRuleItemConfigService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiRuleItemConfigAddRequest request) {
//校验基本法项目名称的唯一性
List<RuleItemConfig> list = iRuleItemConfigService.queryList(RuleItemConfigDto.builder()
......@@ -115,6 +117,7 @@ public class ApiRuleItemConfigServiceImpl implements ApiRuleItemConfigService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiRuleItemConfigEditRequest request) {
Result<RuleItemConfig> result = checkRuleItemConfigIsExist(request.getRuleItemBizId());
RuleItemConfig ruleItemConfig = result.getData();
......@@ -150,6 +153,7 @@ public class ApiRuleItemConfigServiceImpl implements ApiRuleItemConfigService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result del(String ruleItemBizId) {
return null;
}
......
......@@ -55,6 +55,7 @@ public class ApiSecondHolderServiceImpl implements ApiSecondHolderService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiSecondHolderInfoDto apiSecondHolderInfoDto) {
//编辑预约入参字段校验 - 第二持有人信息字段校验
apiAppointmentCheckService.checkEditApiSecondHolderInfoDto(apiSecondHolderInfoDto);
......@@ -97,6 +98,7 @@ public class ApiSecondHolderServiceImpl implements ApiSecondHolderService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result<SecondHolder> editSecondHolderData(ApiSecondHolderInfoDto dto, String appointmentBizId) {
if (Objects.isNull(dto)){
//为空
......
......@@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
......@@ -32,6 +33,7 @@ public class ApiTaxationServiceImpl implements ApiTaxationService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result saveTaxationList(ApiObjectTaxationDto dto) {
//先删后新增
iTaxationService.delByObjectBizId(dto.getObjectBizId());
......
......@@ -30,6 +30,7 @@ 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.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
......@@ -93,6 +94,7 @@ public class ApiVariableServiceImpl implements ApiVariableService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiVariableAddRequest request) {
//校验变量中文名唯一性
List<Variable> variableList = iVariableService.queryList(VariableDto.builder()
......@@ -150,6 +152,7 @@ public class ApiVariableServiceImpl implements ApiVariableService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiVariableEditRequest request) {
//校验变量信息是否存在
Result<Variable> result = checkVariableIsExist(request.getVariableBizId());
......@@ -209,6 +212,7 @@ public class ApiVariableServiceImpl implements ApiVariableService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result del(String variableBizId) {
return null;
}
......
......@@ -4,6 +4,8 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
......@@ -37,20 +39,53 @@ public class AsyncConfig {
return executor;
}
// /**
// * 通用异步任务线程池
// */
// @Bean("commonAsyncExecutor")
// public Executor commonAsyncExecutor() {
// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
// executor.setCorePoolSize(5);
// executor.setMaxPoolSize(10);
// executor.setQueueCapacity(50);
// executor.setThreadNamePrefix("common-async-");
// executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
// executor.setWaitForTasksToCompleteOnShutdown(true);
// executor.setAwaitTerminationSeconds(30);
// executor.setKeepAliveSeconds(30);
// executor.initialize();
// return executor;
// }
/**
* 通用异步任务线程池
* @return
*/
@Bean("commonAsyncExecutor")
public Executor commonAsyncExecutor() {
@Bean(name = "commonAsyncExecutor")
public ThreadPoolTaskExecutor commonAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(50);
// 设置核心线程数、最大线程数、队列容量等参数...
executor.setCorePoolSize(10);
executor.setMaxPoolSize(20);
executor.setQueueCapacity(100);
executor.setThreadNamePrefix("common-async-");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.setWaitForTasksToCompleteOnShutdown(true);
executor.setAwaitTerminationSeconds(30);
executor.setKeepAliveSeconds(30);
// 设置 TaskDecorator,用于传递 RequestAttributes
executor.setTaskDecorator(runnable -> {
// 获取当前线程的 RequestAttributes
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
return () -> {
try {
// 将 RequestAttributes 设置到子线程中
RequestContextHolder.setRequestAttributes(attributes);
runnable.run();
} finally {
// 任务完成后清空,避免内存泄漏
RequestContextHolder.resetRequestAttributes();
}
};
});
executor.initialize();
return executor;
}
......
......@@ -41,7 +41,12 @@ public class CsfMybatisPlusConfig {
@Override
public void insertFill(MetaObject metaObject) {
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
AuthUserDto authUserDto = null;
try {
authUserDto = SecurityUtil.getCurrentLoginUser();
}catch (Exception e) {
log.info("获取Security上下文当前用户的登录信息失败,{}",e.getMessage());
}
log.info("metaObjectHandler=======insertFill自动填充获取用户信息:{}", JSON.toJSONString(authUserDto));
if (authUserDto != null) {
//自动注入创建人和创建用户名
......@@ -53,7 +58,12 @@ public class CsfMybatisPlusConfig {
@Override
public void updateFill(MetaObject metaObject) {
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
AuthUserDto authUserDto = null;
try {
authUserDto = SecurityUtil.getCurrentLoginUser();
}catch (Exception e) {
log.info("获取Security上下文当前用户的登录信息失败,{}",e.getMessage());
}
log.info("metaObjectHandler=======updateFill自动填充获取用户信息:{}", JSON.toJSONString(authUserDto));
if (authUserDto != null) {
//自动注入更新人和更新用户名
......
......@@ -239,4 +239,7 @@ public class PolicyFollowDto implements Serializable {
@Schema(description = "保单类型: 1-电子, 2-纸质")
private String policyType;
@Schema(description = "专业投资者: Yes/No")
private String professionalInvestor;
}
package com.yd.csf.service.helper;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;
/**
* 规格条件匹配器
*/
public class SpeciesConditionMatcher {
/**
* 判断条件是否匹配
* @param typeCode 条件类型代码
* @param conditionValue 配置的条件值
* @param actualValue 实际值
* @return true-匹配,false-不匹配
*/
public static boolean matches(String typeCode, String conditionValue, Object actualValue) {
if (StringUtils.isBlank(conditionValue) || actualValue == null) {
return false;
}
String actualValueStr = String.valueOf(actualValue);
// 范围匹配类型
if ("AGE".equals(typeCode) || "PREMIUM".equals(typeCode)) {
return matchesRange(conditionValue, actualValue);
}
// 精确匹配类型(包括专业投资者,不区分大小写)
if ("PROFESSIONAL".equals(typeCode)) {
return conditionValue.equalsIgnoreCase(actualValueStr);
}
// 其他类型精确匹配
return conditionValue.equals(actualValueStr);
}
/**
* 范围匹配
* 支持格式:
* - "0-10" 表示 [0, 10] 闭区间
* - "10-" 表示 >= 10
* - "-10" 表示 <= 10
* - "10" 表示等于 10
* - "0-64岁" 表示 [0, 64] 闭区间
*/
private static boolean matchesRange(String conditionValue, Object actualValue) {
try {
BigDecimal actual = toBigDecimal(actualValue);
// 解析范围表达式
String expression = conditionValue.replace("岁", "").trim();
if (!expression.contains("-")) {
// 单个值 "10"
BigDecimal value = new BigDecimal(expression);
return actual.compareTo(value) == 0;
}
String[] parts = expression.split("-");
if (parts.length != 2) {
return false;
}
String left = parts[0].trim();
String right = parts[1].trim();
if (left.isEmpty() && right.isEmpty()) {
// "-" 无效
return false;
} else if (left.isEmpty()) {
// "-10" 表示 <= 10
BigDecimal max = new BigDecimal(right);
return actual.compareTo(max) <= 0;
} else if (right.isEmpty()) {
// "10-" 表示 >= 10
BigDecimal min = new BigDecimal(left);
return actual.compareTo(min) >= 0;
} else {
// "0-10" 表示 [0, 10]
BigDecimal min = new BigDecimal(left);
BigDecimal max = new BigDecimal(right);
return actual.compareTo(min) >= 0 && actual.compareTo(max) <= 0;
}
} catch (Exception e) {
return false;
}
}
/**
* 将对象转换为 BigDecimal
*/
private static BigDecimal toBigDecimal(Object value) {
if (value instanceof BigDecimal) {
return (BigDecimal) value;
}
if (value instanceof Number) {
return new BigDecimal(value.toString());
}
// 处理 "0-64岁" 格式,提取第一个数字
String str = String.valueOf(value).replace("岁", "").trim();
if (str.contains("-")) {
str = str.split("-")[0];
}
return new BigDecimal(str);
}
/**
* 获取条件名称
*/
public static String getConditionName(String typeCode) {
switch (typeCode) {
case "PAYMENT_TERM":
return "供款年期";
case "RECONCILIATION_COMPANY":
return "出单经纪公司";
case "AGE":
return "投保年龄";
case "PREMIUM":
return "期缴保费";
case "PROFESSIONAL_INVESTOR":
return "专业投资者";
case "POLICY_CURRENCY":
return "保单币种";
case "PROTECTION_PERIOD":
return "保障年期";
default:
return typeCode;
}
}
}
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
......@@ -134,13 +131,13 @@ public class Additional implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -88,13 +86,13 @@ public class AgentAccumulatedFyc implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -118,13 +116,13 @@ public class AgentDetailFyc implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 管理关系表((团队的形成来自这张表,谁在最高级就是团长))
......@@ -87,13 +85,13 @@ public class AgentManageRelation implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 推荐关系表
......@@ -99,13 +97,13 @@ public class AgentReferralRelation implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 辅导关系表
......@@ -93,13 +91,13 @@ public class AgentTutoringRelation implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 预约附件信息表
......@@ -72,19 +70,19 @@ public class AppointmentFile implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 创建人名称
*/
@TableField("creator_name")
@TableField(value = "creator_name", fill = FieldFill.INSERT)
private String creatorName;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 预约信息日志表(快照表)
......@@ -306,19 +304,19 @@ public class AppointmentLog implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 创建人用户名
*/
@TableField("creator_name")
@TableField(value = "creator_name", fill = FieldFill.INSERT)
private String creatorName;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 预约-转介人信息表
......@@ -84,13 +82,13 @@ public class AppointmentReferrer implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 预约-转介人信息日志表(快照表)
......@@ -84,13 +82,13 @@ public class AppointmentReferrerLog implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 预约-签单员信息表
......@@ -114,13 +112,13 @@ public class AppointmentUserSign implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 预约-签单员信息日志表(快照表)
......@@ -114,13 +112,13 @@ public class AppointmentUserSignLog implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -88,13 +86,13 @@ public class BatchPolicy implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
......@@ -110,13 +107,13 @@ public class Beneficiary implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 车辆预约申请表
......@@ -141,13 +139,13 @@ public class CarApply implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 客户端角色表
......@@ -87,13 +85,13 @@ public class ClientRole implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import lombok.Data;
/**
* 保单来佣表
*
......
......@@ -4,15 +4,15 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 来佣比对记录表
* @TableName commission_compare_record
......
......@@ -4,13 +4,13 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 来佣修改记录表
* @TableName commission_edit_record
......
......@@ -4,13 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
* 预计来佣表
*
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -94,13 +92,13 @@ public class CommissionResult implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 基本法绑定表 - 存储基本法与业务员或团队的绑定关系,支持灵活的权限分配
......@@ -105,13 +103,13 @@ public class CommissionRuleBinding implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 基本法配置表
......@@ -105,13 +103,13 @@ public class CommissionRuleConfig implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* SQL模板表 - 存储所有佣金计算相关的动态SQL模板,支持灵活配置和参数化查询,实现业务逻辑与代码解耦
......@@ -111,13 +109,13 @@ public class CommissionSqlTemplate implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -136,13 +134,13 @@ public class ConditionConfig implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 条件类型表
......@@ -81,13 +79,13 @@ public class ConditionType implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
......@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
* 客户信息表
......
......@@ -4,13 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
* CSF客户信息扩展表
*
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 预计发佣表
......@@ -265,13 +261,13 @@ public class ExpectedFortune implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 生成预计发佣日志记录表
......@@ -63,13 +61,13 @@ public class ExpectedFortuneLog implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
......@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* fna表
......
......@@ -4,13 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
* 客户信息表
*
......
......@@ -4,13 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import com.yd.csf.service.dto.DependantData;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* fna表单表
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 公式配置表
......@@ -111,13 +109,13 @@ public class FormulaConfig implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import lombok.Data;
/**
* 保单出账表
*
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import lombok.Data;
/**
* 出账记录表
*
......
......@@ -4,12 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 薪资修订记录表
* @TableName fortune_account_edit_record
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 业务员积分任务表 - 定时跑批业务员绑定的基本法计算点,算出当前业务员所得的积分(一级管理奖、二级管理奖、辅导津贴奖、终身推荐奖等月末计算,季度结算等)
......@@ -87,13 +85,13 @@ public class FycTask implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
......@@ -386,13 +383,13 @@ public class Insurant implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -88,13 +86,13 @@ public class Interests implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 邀请码表
......@@ -93,13 +91,13 @@ public class Invitation implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 会员表
......@@ -111,13 +109,13 @@ public class Member implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -106,13 +104,13 @@ public class MemberGradeConfig implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -118,13 +116,13 @@ public class PayoutBatch implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
......@@ -4,18 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 保单表
*
......
......@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
* 保单附加险信息表
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 保单业务员关联表 - 存储保单与业务员的关联关系及佣金分配信息
......@@ -69,13 +67,13 @@ public class PolicyAgentRelation implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
......@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 新单跟进预约附件信息表
......
......@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
* 受益人信息表
......
......@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 保单转介人表
......
......@@ -4,17 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 新单跟进表
*
......@@ -355,6 +350,11 @@ public class PolicyFollow implements Serializable {
private String deliveryNo;
/**
* 专业投资者: Yes/No
*/
private String professionalInvestor;
/**
* 邮寄物品
*/
private String mailingItem;
......
......@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 新单跟进附件信息表
......
......@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 新单跟进记录表
......
......@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
* 保单受保人信息表
......
......@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
* 保单投保人信息表
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 保单回执表
......@@ -76,13 +73,13 @@ public class PolicyReceipt implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
......@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 第二持有人信息表
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -379,13 +377,13 @@ public class Policyholder implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -124,13 +122,13 @@ public class PremiumReconciliation implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -118,13 +116,13 @@ public class PremiumRemittance implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 保费对账-汇款记录附件表
......@@ -75,19 +73,19 @@ public class PremiumRemittanceFile implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 创建人名
*/
@TableField("creator_name")
@TableField(value = "creator_name", fill = FieldFill.INSERT)
private String creatorName;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
......@@ -209,13 +206,13 @@ public class ProductPlan implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
......@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 对账公司表
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 业务员和客户关联表
......@@ -69,13 +67,13 @@ public class RelAgentCustomer implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 权益表
......@@ -81,13 +79,13 @@ public class RelCustomerInterests implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 会员等级和服务关系表
......@@ -87,13 +85,13 @@ public class RelGradeService implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 客户端角色表
......@@ -75,13 +73,13 @@ public class RelMemberRole implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 对象和条件配置关系表
......@@ -93,13 +91,13 @@ public class RelObjectCondition implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 对象和公式配置关系表
......@@ -87,13 +85,13 @@ public class RelObjectFormula implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 对象和SQL模板配置关系表
......@@ -87,13 +85,13 @@ public class RelObjectSql implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 服务权益关系表
......@@ -87,13 +85,13 @@ public class RelServiceInterests implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 团队和会员关系表
......@@ -75,13 +73,13 @@ public class RelTeamMember implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 租户-项目-保险预约关系表
......@@ -66,13 +64,13 @@ public class RelTenantProjectAppointment implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -154,13 +152,13 @@ public class RuleConditionConfig implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 基本法项目配置表
......@@ -105,13 +103,13 @@ public class RuleItemConfig implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
......@@ -97,13 +94,13 @@ public class SecondHolder implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 服务配置表
......@@ -75,13 +73,13 @@ public class ServiceConfig implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 规格条件模型
*/
@Data
public class SpeciesCondition {
/**
* 规格类型业务ID
*/
@JsonProperty("speciesTypeBizId")
private String speciesTypeBizId;
/**
* 条件类型编码
*/
@JsonProperty("typeCode")
private String typeCode;
/**
* 条件类型名称
*/
@JsonProperty("typeName")
private String typeName;
/**
* 条件值
*/
@JsonProperty("value")
private String value;
/**
* 是否为演示
*/
@JsonProperty("isIllustration")
private String isIllustration;
/**
* 演示URL
*/
@JsonProperty("illustrationUrl")
private String illustrationUrl;
/**
* 是否为自定义条件
*/
@JsonProperty("isCustomize")
private String isCustomize;
}
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 税务信息表
......@@ -84,13 +82,13 @@ public class Taxation implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
......@@ -112,13 +109,13 @@ public class Team implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 变量表
......@@ -99,13 +97,13 @@ public class Variable implements Serializable {
/**
* 创建人ID
*/
@TableField("creator_id")
@TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId;
/**
......
......@@ -59,7 +59,7 @@ public interface CommissionExpectedService extends IService<CommissionExpected>
CommissionExpected getByBizId(String commissionExpectedBizId);
void getExpectedCommissionByProductlaunchId(Policy policy, String productLaunchBizId, String insuranceCompanyBizId, String reconciliationCompany, String reconciliationCompanyCode, String reconciliationCompanyBizId);
void getExpectedCommissionByProductlaunchId(Policy policy, String productLaunchBizId, String insuranceCompanyBizId, String reconciliationCompany, String reconciliationCompanyCode, String reconciliationCompanyBizId, String professionalInvestor);
List<ApiExpectedSpeciesListResponse> queryExpectedSpeciesByFeign(String productLaunchBizId);
......@@ -78,4 +78,6 @@ public interface CommissionExpectedService extends IService<CommissionExpected>
* @return 应收款报表VO分页列表
*/
IPage<ReceivableReportVO> receivableReportPage(Page<ReceivableReportVO> page, List<Long> expectedIds);
void testExpectedCommission(String policyNo);
}
......@@ -25,6 +25,8 @@ import com.yd.csf.service.enums.CommissionExpectedStatusEnum;
import com.yd.csf.service.model.*;
import com.yd.csf.service.service.*;
import com.yd.csf.service.dao.CommissionExpectedMapper;
import com.yd.csf.service.model.SpeciesCondition;
import com.yd.csf.service.helper.SpeciesConditionMatcher;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.ReceivableReportVO;
......@@ -35,14 +37,12 @@ import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCo
import com.yd.product.feign.client.expectedspecies.ApiExpectedSpeciesFeignClient;
import com.yd.product.feign.request.expectedspecies.ApiExpectedSpeciesListRequest;
import com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse;
import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
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.transaction.annotation.Transactional;
......@@ -75,8 +75,6 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
private CommissionService commissionService;
@Resource
private ReceivableService receivableService;
@Autowired
private ApiSysDictFeignClient apiSysDictFeignClient;
@Resource
private ApiExpectedSpeciesFeignClient apiExpectedSpeciesFeignClient;
@Resource
......@@ -130,7 +128,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
commissionExpectedVO.setReconciliationCompany(policy.getReconciliationCompany());
commissionExpectedVO.setPolicyCurrency(policy.getCurrency());
}
PolicyFollow policyFollow= policyFollowMap.get(commissionExpected.getPolicyNo());
PolicyFollow policyFollow = policyFollowMap.get(commissionExpected.getPolicyNo());
if (policyFollow != null) {
commissionExpectedVO.setProductName(policyFollow.getProductName());
commissionExpectedVO.setProductLaunchBizId(policyFollow.getProductLaunchBizId());
......@@ -196,7 +194,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
Object data = result.getData();
try {
// 将 data 转为 JSON 字符串再解析为 Map,以便提取 records
Map<String, Object> dataMap = JSON.parseObject(JSON.toJSONString(data), new com.alibaba.fastjson.TypeReference<Map<String, Object>>() {});
Map<String, Object> dataMap = JSON.parseObject(JSON.toJSONString(data), new com.alibaba.fastjson.TypeReference<Map<String, Object>>() {
});
Object recordsObj = dataMap.get("records");
if (recordsObj instanceof List) {
List<?> recordsList = (List<?>) recordsObj;
......@@ -597,7 +596,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
@Override
@Transactional(rollbackFor = Exception.class)
public void getExpectedCommissionByProductlaunchId(Policy policy, String productLaunchBizId,
String insuranceCompanyBizId, String reconciliationCompany, String reconciliationCompanyCode, String reconciliationCompanyBizId) {
String insuranceCompanyBizId, String reconciliationCompany, String reconciliationCompanyCode, String reconciliationCompanyBizId, String professionalInvestor) {
String policyNo = policy.getPolicyNo();
if (ObjectUtils.isEmpty(policyNo)) {
throw new BusinessException("保单号不能为空");
......@@ -611,7 +610,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
throw new BusinessException("保單持有人年齡不能为空");
}
Date effectiveDate = policy.getEffectiveDate();
log.info("getExpectedCommissionByProductlaunchId的effectiveDate生效日期:{}",effectiveDate);
log.info("getExpectedCommissionByProductlaunchId的effectiveDate生效日期:{}", effectiveDate);
if (effectiveDate == null) {
throw new BusinessException("保单生效日期不能为空");
}
......@@ -632,16 +631,14 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
List<CommissionExpected> commissionExpectedList = new ArrayList<>();
if (CollUtil.isNotEmpty(expectedSpeciesList)) {
// 匹配规格并获取不匹配的条件
MatchResult matchResult = matchExpectedSpecies(
expectedSpeciesList, paymentTerm, reconciliationCompanyBizId,
policyHolderAge, paymentPremium, effectiveDate, policy);
MatchResult matchResult = matchExpectedSpecies(expectedSpeciesList, policy, professionalInvestor);
if (matchResult.getMatchedList().isEmpty()) {
String errorMsg = matchResult.getUnmatchedConditions().isEmpty()
? "未查询到对应供款年期的佣金规格"
: "未查询到对应供款年期的佣金规格,不匹配条件:" + String.join("、", matchResult.getUnmatchedConditions());
? "未查询到预计来佣规格"
: "未查询到预计来佣规格,不匹配条件:" + String.join("、", matchResult.getUnmatchedConditions());
log.info("未查询到对应供款年期的佣金规格,当前规格:{}", JSONUtil.toJsonStr(expectedSpeciesList));
log.info("未查询到预计来佣规格,产品id:{},当前规格:{}", productLaunchBizId, JSONUtil.toJsonStr(expectedSpeciesList));
throw new BusinessException(ResultCode.FAIL.getCode(), errorMsg);
}
......@@ -726,62 +723,132 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
/**
* 匹配预计规格并返回不匹配的条件
*
* @param expectedSpeciesList 预计规格列表
* @param paymentTerm 供款年期
* @param reconciliationCompanyId 对账公司ID
* @param policyHolderAge 保单持有人年龄
* @param paymentPremium 年缴保费
* @param expectedSpeciesList 预计规格列表
* @param policy 保单对象
* @return 匹配结果
*/
private MatchResult matchExpectedSpecies(List<ApiExpectedSpeciesListResponse> expectedSpeciesList,
String paymentTerm, String reconciliationCompanyId,
Integer policyHolderAge, BigDecimal paymentPremium, Date effectiveDate, Policy policy) {
private MatchResult matchExpectedSpecies(
List<ApiExpectedSpeciesListResponse> expectedSpeciesList,
Policy policy,
String professionalInvestor) {
List<String> unmatchedConditions = new ArrayList<>();
List<ApiExpectedSpeciesListResponse> currentList = expectedSpeciesList;
// 检查供款年期
currentList = filterAndCheck(currentList,
i -> paymentTerm.equals(i.getPaymentTerm()),
unmatchedConditions, "供款年期[" + paymentTerm + "]");
if (unmatchedConditions.size() > 0) {
// 1. 生效日期独立验证(第一步)
Date effectiveDate = policy.getEffectiveDate();
List<ApiExpectedSpeciesListResponse> validDateList = filterAndCheck(
expectedSpeciesList,
i -> isEffective(i.getEffectiveStart(), i.getEffectiveEnd(), effectiveDate),
unmatchedConditions,
"生效日期[" + DateUtil.format(effectiveDate, "yyyy-MM-dd") + "]");
if (!unmatchedConditions.isEmpty()) {
return new MatchResult(Collections.emptyList(), unmatchedConditions);
}
// 检查对账公司
currentList = filterAndCheck(currentList,
i -> reconciliationCompanyId.equals(i.getReconciliationCompany()),
unmatchedConditions, "对账公司[" + policy.getReconciliationCompany() + "]");
if (unmatchedConditions.size() > 0) {
return new MatchResult(Collections.emptyList(), unmatchedConditions);
if (validDateList.isEmpty()) {
return new MatchResult(Collections.emptyList(), Collections.emptyList());
}
// 检查年龄
currentList = filterAndCheck(currentList,
i -> containsValue(i.getSpeciesJson(), "AGE", Convert.toStr(policyHolderAge)),
unmatchedConditions, "年龄[" + policyHolderAge + "]");
if (unmatchedConditions.size() > 0) {
return new MatchResult(Collections.emptyList(), unmatchedConditions);
// 2. 获取第一个规格的条件模板
String firstSpeciesJson = validDateList.get(0).getSpeciesJson();
List<SpeciesCondition> conditionTemplates = parseSpeciesJson(firstSpeciesJson);
log.info("当前佣金匹配条件: {}", JSONUtil.toJsonStr(conditionTemplates));
if (conditionTemplates.isEmpty()) {
// 没有配置任何条件,返回所有日期验证通过的规格
return new MatchResult(validDateList, Collections.emptyList());
}
// 检查保费
currentList = filterAndCheck(currentList,
i -> containsValue(i.getSpeciesJson(), "PREMIUM", Convert.toStr(paymentPremium)),
unmatchedConditions, "保费[" + paymentPremium + "]");
// 4. 构建实际值映射
Map<String, Object> actualValues = buildActualValuesMap(policy, professionalInvestor);
// 检查生效日期
log.info("检查生效日期的effectiveDate生效日期:{}",effectiveDate);
currentList = filterAndCheck(currentList,
i -> isEffective(i.getEffectiveStart(), i.getEffectiveEnd(), effectiveDate),
unmatchedConditions, "生效日期[" + DateUtil.format(effectiveDate, "yyyy-MM-dd") + "]");
log.info("检查生效日期的currentList:{}",JSON.toJSONString(currentList));
log.info("检查生效日期的unmatchedConditions:{}",JSON.toJSONString(unmatchedConditions));
if (unmatchedConditions.size() > 0) {
return new MatchResult(Collections.emptyList(), unmatchedConditions);
// 5. 逐个条件类型进行过滤
List<ApiExpectedSpeciesListResponse> currentList = validDateList;
for (SpeciesCondition conditionTemplate : conditionTemplates) {
String typeCode = conditionTemplate.getTypeCode();
Object actualValue = actualValues.get(typeCode);
String conditionDesc = String.format("%s[%s]",
SpeciesConditionMatcher.getConditionName(typeCode), actualValue);
currentList = filterBySpeciesCondition(
currentList,
typeCode,
actualValue,
unmatchedConditions,
conditionDesc);
if (!unmatchedConditions.isEmpty()) {
return new MatchResult(Collections.emptyList(), unmatchedConditions);
}
}
return new MatchResult(currentList, unmatchedConditions);
}
/**
* 解析speciesJson
*/
private List<SpeciesCondition> parseSpeciesJson(String speciesJson) {
if (speciesJson == null || speciesJson.trim().isEmpty()) {
return Collections.emptyList();
}
try {
return objectMapper.readValue(speciesJson,
new TypeReference<List<SpeciesCondition>>() {
});
} catch (IOException e) {
log.error("解析speciesJson失败: {}", speciesJson, e);
return Collections.emptyList();
}
}
/**
* 构建实际值映射
*/
private Map<String, Object> buildActualValuesMap(Policy policy, String professionalInvestor) {
Map<String, Object> map = new HashMap<>();
map.put("PAYMENT_TERM", policy.getPaymentTerm() != null ? String.valueOf(policy.getPaymentTerm()) : null);
map.put("RECONCILIATION_COMPANY", policy.getReconciliationCompanyBizId());
map.put("AGE", policy.getPolicyHolderAge());
map.put("PREMIUM", policy.getPaymentPremium());
map.put("PROFESSIONAL", professionalInvestor);
map.put("POLICY_CURRENCY", policy.getCurrency());
map.put("PROTECTION_PERIOD", policy.getGuaranteePeriod());
map.put("PROTECTION_PLAN", policy.getProductName());
return map;
}
/**
* 根据species条件过滤列表
*/
private List<ApiExpectedSpeciesListResponse> filterBySpeciesCondition(
List<ApiExpectedSpeciesListResponse> list,
String typeCode,
Object actualValue,
List<String> unmatchedConditions,
String conditionDesc) {
List<ApiExpectedSpeciesListResponse> filtered = list.stream()
.filter(item -> {
List<SpeciesCondition> conditions = parseSpeciesJson(item.getSpeciesJson());
if (conditions.isEmpty()) return false;
return conditions.stream()
.anyMatch(c -> typeCode.equals(c.getTypeCode())
&& SpeciesConditionMatcher.matches(
typeCode, c.getValue(), actualValue));
})
.collect(Collectors.toList());
if (filtered.isEmpty()) {
unmatchedConditions.add(conditionDesc);
}
return filtered;
}
private boolean isEffective(LocalDateTime effectiveStart, LocalDateTime effectiveEnd, Date effectiveDate) {
LocalDateTime effectiveDateLocal = effectiveDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
return effectiveDateLocal.isAfter(effectiveStart) && effectiveDateLocal.isBefore(effectiveEnd);
......@@ -790,10 +857,10 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
/**
* 过滤列表并检查是否为空
*
* @param list 待过滤的列表
* @param predicate 过滤条件
* @param list 待过滤的列表
* @param predicate 过滤条件
* @param unmatchedConditions 不匹配条件列表
* @param conditionDesc 条件描述
* @param conditionDesc 条件描述
* @return 过滤后的列表
*/
private List<ApiExpectedSpeciesListResponse> filterAndCheck(
......@@ -809,55 +876,12 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
return filtered;
}
private static boolean containsValue(String json, String targetKey, String targetValue) {
if (json == null || json.trim().isEmpty()) return false;
try {
List<Map<String, Object>> params = objectMapper.readValue(json, new TypeReference<List<Map<String, Object>>>() {});
// AGE 和 PREMIUM 使用最小值匹配(targetValue >= value)
if (targetKey.equals("AGE") || targetKey.equals("PREMIUM")) {
return params.stream().anyMatch(p -> {
Object value = p.get("value");
if (value == null) {
return false;
}
// 转换为 BigDecimal
BigDecimal threshold;
if (value instanceof BigDecimal) {
threshold = (BigDecimal) value;
} else if (value instanceof Number) {
threshold = BigDecimal.valueOf(((Number) value).doubleValue());
} else if (value instanceof String) {
try {
threshold = new BigDecimal((String) value);
} catch (NumberFormatException e) {
return false;
}
} else {
return false;
}
// 判断是否大于等于最小值
return new BigDecimal(targetValue).compareTo(threshold) >= 0;
});
}
// 其他字段使用等于匹配
else {
return params.stream().anyMatch(p -> targetValue.equals(p.get("value")));
}
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
@Override
public List<ApiExpectedSpeciesListResponse> queryExpectedSpeciesByFeign(String productLaunchBizId) {
ApiExpectedSpeciesListRequest apiExpectedSpeciesListRequest = new ApiExpectedSpeciesListRequest();
apiExpectedSpeciesListRequest.setProductLaunchBizId(productLaunchBizId);
Result<List<ApiExpectedSpeciesListResponse>> result = apiExpectedSpeciesFeignClient.list(apiExpectedSpeciesListRequest);
log.info("查询预计出佣规格queryExpectedSpeciesByFeign==========>,{}",JSON.toJSONString(result));
if (result != null && result.getCode() == 200) {
return result.getData();
} else {
......@@ -877,17 +901,18 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
/**
* 计算预计来佣港币金额
* @param premium 保费
* @param commissionRatio 佣金比例
* @param commissionBizType 佣金业务类型
* @param amount 金额
* @param currency 预计来佣的结算币种=产品绑定的来佣结算币种
* @param policyCurrency 保单币种
*
* @param premium 保费
* @param commissionRatio 佣金比例
* @param commissionBizType 佣金业务类型
* @param amount 金额
* @param currency 预计来佣的结算币种=产品绑定的来佣结算币种
* @param policyCurrency 保单币种
* @param defaultExchangeRate 默认结算汇率
* @return 预计来佣金额
*/
private BigDecimal calculateExpectedAmount(BigDecimal premium, BigDecimal commissionRatio, String commissionBizType,
BigDecimal amount, String currency, String policyCurrency, BigDecimal defaultExchangeRate) {
BigDecimal amount, String currency, String policyCurrency, BigDecimal defaultExchangeRate) {
if ("R".equals(commissionBizType)) {
// 关联保单应收单:保费 × 佣金比例 × 默认结算汇率 ÷ 100
BigDecimal exchangeRate = defaultExchangeRate;
......@@ -913,8 +938,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
/**
* 保单币种对预计来佣的结算币种的默认汇率
*
* @param policyCurrency 保单币种
* @param currency 预计来佣的结算币种
* @param currency 预计来佣的结算币种
* @return 汇率
*/
private BigDecimal queryExchangeRateByFeign(String policyCurrency, String currency) {
......@@ -931,7 +957,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
/**
* 根据保单生效日和佣金期数计算预计来佣日期,首期为生效日的1个月,后续期数为首期的次年
* @param endPeriod 佣金期数
*
* @param endPeriod 佣金期数
* @param effectiveDate 保单生效日
* @return 预计来佣日期
*/
......@@ -962,6 +989,34 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
return baseMapper.receivableReportPage(page, expectedIds);
}
@Override
public void testExpectedCommission(String policyNo) {
Policy policy = policyService.queryOne(policyNo);
String productLaunchBizId = policy.getProductLaunchBizId();
if (StringUtils.isNotBlank(productLaunchBizId)) {
PolicyFollow policyFollow = policyFollowService.queryOneByPolicyNo(policyNo);
String professionalInvestor = policyFollow.getProfessionalInvestor();
List<ApiExpectedSpeciesListResponse> expectedSpeciesList = queryExpectedSpeciesByFeign(productLaunchBizId);
if (CollUtil.isNotEmpty(expectedSpeciesList)) {
// 匹配规格并获取不匹配的条件
CommissionExpectedServiceImpl.MatchResult matchResult = matchExpectedSpecies(expectedSpeciesList, policy, professionalInvestor);
if (matchResult.getMatchedList().isEmpty()) {
String errorMsg = matchResult.getUnmatchedConditions().isEmpty()
? "未查询到预计来佣规格"
: "未查询到预计来佣规格,不匹配条件:" + String.join("、", matchResult.getUnmatchedConditions());
log.info("未查询到预计来佣规格,当前规格:{}", JSONUtil.toJsonStr(expectedSpeciesList));
throw new BusinessException(ResultCode.FAIL.getCode(), errorMsg);
}
}
}
}
}
......
......@@ -2,7 +2,6 @@ package com.yd.csf.service.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
......@@ -12,6 +11,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.base.Joiner;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.base.feign.client.exchangerate.ApiExchangeRateFeignClient;
import com.yd.common.constant.RedisConstants;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
......@@ -69,6 +69,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
private ApiSysDictFeignClient apiSysDictFeignClient;
@Resource
private RedisUtil redisUtil;
@Resource
private ApiExchangeRateFeignClient apiExchangeRateFeignClient;
@Override
public Wrapper<Fortune> getQueryWrapper(FortuneQueryRequest fortuneQueryRequest) {
......@@ -187,15 +189,6 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "出账港币金额不能大于应付款港币金额");
}
}
// 更新结算汇率
BigDecimal exchangeRate = ObjectUtils.isNotEmpty((fortuneUpdateRequest.getExchangeRate()))
? fortuneUpdateRequest.getExchangeRate()
: queryDefaultExchangeRate(fortuneUpdateRequest.getCurrency());
fortune.setExchangeRate(exchangeRate);
if (ObjectUtils.isEmpty(fortune.getHkdAmount())) {
fortune.setHkdAmount(fortune.getAmount().multiply(exchangeRate));
}
// 获取当前登录用户
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
......@@ -244,20 +237,20 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
// expectedFortuneService.updateById(expectedFortune);
}
private BigDecimal queryDefaultExchangeRate(String currency) {
if (StringUtils.isBlank(currency)) {
/**
* 保单币种对预计来佣的结算币种的默认汇率
* @param policyCurrency 保单币种
* @param currency 预计来佣的结算币种
* @return 汇率
*/
private BigDecimal queryExchangeRateByFeign(String policyCurrency, String currency) {
if (policyCurrency.equalsIgnoreCase(currency)) {
return BigDecimal.ONE;
}
if ("HKD".equalsIgnoreCase(currency)) {
return BigDecimal.valueOf(1);
}
Result<List<GetDictItemListByDictTypeResponse>> result = apiSysDictFeignClient.getDictItemListByDictType("csf_exchange_rate_hkd");
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(result.getData())) {
for (GetDictItemListByDictTypeResponse dictItem : result.getData()) {
if (StringUtils.equalsIgnoreCase(dictItem.getItemLabel(), currency)) {
return new BigDecimal(dictItem.getItemValue());
}
}
// 调用Feign客户端查询汇率
Result<BigDecimal> result = apiExchangeRateFeignClient.getExchangeRate(policyCurrency, currency, "");
if (result != null && result.getData() != null) {
return result.getData();
}
return BigDecimal.ONE;
}
......@@ -543,8 +536,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
fortune.setPayoutDate(expectedFortune.getPayoutDate());
} else {
fortune.setExchangeRate(queryDefaultExchangeRate(fortuneAddRequest.getCurrency()));
fortune.setHkdAmount(fortuneAddRequest.getAmount().multiply(fortune.getExchangeRate()));
fortune.setExchangeRate(BigDecimal.ONE);
fortune.setHkdAmount(fortuneAddRequest.getAmount());
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
}
......@@ -755,8 +748,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
fortune.setRemark("未找到当前预计发佣对应的来佣");
}
} else {
fortune.setExchangeRate(queryDefaultExchangeRate(fortuneAddRequest.getCurrency()));
fortune.setHkdAmount(fortuneAddRequest.getAmount().multiply(fortune.getExchangeRate()));
fortune.setExchangeRate(BigDecimal.ONE);
fortune.setHkdAmount(fortuneAddRequest.getAmount());
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
}
......
......@@ -527,25 +527,6 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
//冷静期结束日期
policy.setCoolingOffEndDate(changePolicyFollowStatusRequest.getCoolingOffEndDate() != null ? changePolicyFollowStatusRequest.getCoolingOffEndDate() : policy.getCoolingOffEndDate());
// if (ObjectUtils.isEmpty(policy.getInsuranceCompany()) || ObjectUtils.isEmpty(policy.getInsuranceCompanyBizId())) {
// // 获取保单产品信息,填充对账公司相关字段
// PolicyProductInfo productInfo = getPolicyProductInfo(policyFollow.getProductLaunchBizId());
// if (productInfo != null) {
// if (ObjectUtils.isNotEmpty(productInfo.getInsuranceCompany())) {
// policy.setInsuranceCompany(productInfo.getInsuranceCompany());
// }
// if (ObjectUtils.isNotEmpty(productInfo.getInsuranceCompanyBizId())) {
// policy.setInsuranceCompanyBizId(productInfo.getInsuranceCompanyBizId());
// }
// if (ObjectUtils.isNotEmpty(productInfo.getReconciliationCompanyBizId())) {
// policy.setReconciliationCompany(productInfo.getReconciliationCompany());
// }
// if (ObjectUtils.isNotEmpty(productInfo.getReconciliationCompanyBizId())) {
// policy.setReconciliationCompanyBizId(productInfo.getReconciliationCompanyBizId());
// }
// }
// }
// 保存保单
policyService.updateById(policy);
......@@ -1013,7 +994,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
insuranceCompanyBizId,
reconciliationCompany,
reconciliationCompanyCode,
reconciliationCompanyBizId
reconciliationCompanyBizId,
policyFollow.getProfessionalInvestor()
);
}
......
package com.yd.csf.service.vo;
import cn.hutool.core.collection.CollUtil;
import com.google.gson.reflect.TypeToken;
import com.yd.base.feign.dto.ApiCertificateDto;
import com.yd.csf.service.dto.TaxCountry;
......@@ -8,6 +9,7 @@ import com.yd.csf.service.utils.GSONUtil;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import java.io.Serializable;
......@@ -397,20 +399,31 @@ public class CustomerVO implements Serializable {
}
CustomerVO customerVO = new CustomerVO();
BeanUtils.copyProperties(customer, customerVO);
// 解析地址列表(保持不变)
if (ObjectUtils.isNotEmpty(customer.getAddressList())) {
List<AddressVO> addressList = GSONUtil.fromJson(customer.getAddressList(), new TypeToken<List<AddressVO>>() {
}.getType());
List<AddressVO> addressList = GSONUtil.fromJson(customer.getAddressList(), new TypeToken<List<AddressVO>>() {}.getType());
customerVO.setAddressList(addressList);
}
// 解析税务列表(保持不变)
if (ObjectUtils.isNotEmpty(customer.getTaxList())) {
List<TaxCountry> taxList = GSONUtil.fromJson((String) customer.getTaxList(), new TypeToken<List<TaxCountry>>() {
}.getType());
List<TaxCountry> taxList = GSONUtil.fromJson((String) customer.getTaxList(), new TypeToken<List<TaxCountry>>() {}.getType());
customerVO.setApiTaxationDtoList(taxList);
}
// 解析证件列表
if (ObjectUtils.isNotEmpty(customer.getCertificateList())) {
List<ApiCertificateDto> certificateList = GSONUtil.fromJson((String) customer.getCertificateList(), new TypeToken<List<ApiCertificateDto>>() {
}.getType());
List<ApiCertificateDto> certificateList = GSONUtil.fromJson((String) customer.getCertificateList(), new TypeToken<List<ApiCertificateDto>>() {}.getType());
customerVO.setApiCertificateDtoList(certificateList);
if (CollUtil.isNotEmpty(certificateList)) {
ApiCertificateDto firstCert = certificateList.get(0);
if (StringUtils.isBlank(customerVO.getDocumentType())) {
customerVO.setDocumentType(firstCert.getDocumentType());
}
if (StringUtils.isBlank(customerVO.getIdNumber())) {
customerVO.setIdNumber(firstCert.getIdNumber());
}
}
}
return customerVO;
......
......@@ -514,6 +514,12 @@ public class PolicyFollowDetailVO implements Serializable {
@Schema(description = "保单类型: 1-电子, 2-纸质")
private String policyType;
/**
* 专业投资者: Yes/No
*/
@Schema(description = "专业投资者: Yes/No")
private String professionalInvestor;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
......
......@@ -141,6 +141,12 @@ public class PolicyFollowVO implements Serializable {
private String policyType;
/**
* 专业投资者: Yes/No
*/
@Schema(description = "专业投资者: Yes/No")
private String professionalInvestor;
/**
* 邮寄物品
*/
@Schema(description = "邮寄物品")
......
......@@ -75,6 +75,7 @@
<result property="brokerSignDate" column="broker_sign_date" />
<result property="insurerMailingDate" column="insurer_mailing_date" />
<result property="customerSignDate" column="customer_sign_date" />
<result property="professionalInvestor" column="professional_investor" />
<result property="attachments" column="attachments" />
<result property="remark" column="remark" />
<result property="isDeleted" column="is_deleted" />
......@@ -99,8 +100,8 @@
initial_premium,initial_premium_total,initial_payment_status,initial_premium_discount,
mailing_method,renewal_payment_method,dividend_distribution_method,delivery_no,
policy_levy,initial_premium_paid,initial_premium_due,latest_payment_date,broker_sign_date,
insurer_mailing_date,customer_sign_date,attachments,remark,is_deleted,
creator_id,updater_id,create_time,update_time,policy_type
insurer_mailing_date,customer_sign_date,professional_investor,attachments,remark,is_deleted,
creator_id,updater_id,create_time,update_time,policy_type,is_join
</sql>
<select id="queryPolicyReportData" resultType="com.yd.csf.service.dto.PolicyReportData">
......
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