Commit 4941ad5f by zhangxingmin

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

parents 798f9978 85895940
...@@ -7,6 +7,6 @@ RUN mkdir -p /home/app ...@@ -7,6 +7,6 @@ RUN mkdir -p /home/app
# 拷贝项目jar - 使用可执行的 fat JAR # 拷贝项目jar - 使用可执行的 fat JAR
COPY target/yd-csf-api-1.0-SNAPSHOT-exec.jar /home/app/yd-csf-api.jar COPY target/yd-csf-api-1.0-SNAPSHOT-exec.jar /home/app/yd-csf-api.jar
# 执行命令启动jar,并设置JVM内存参数 # 执行命令启动jar,并设置JVM内存参数
ENTRYPOINT ["java", "-Xmx256m", "-Xms128m", "-jar", "/home/app/yd-csf-api.jar"] ENTRYPOINT ["java", "-Duser.timezone=Asia/Shanghai", "-Xmx256m", "-Xms128m", "-jar", "/home/app/yd-csf-api.jar"]
# 暴露端口 # 暴露端口
EXPOSE 9202 EXPOSE 9202
...@@ -12,9 +12,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; ...@@ -12,9 +12,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication(scanBasePackages = "com.yd") @SpringBootApplication(scanBasePackages = "com.yd")
@MapperScan("com.yd.**.dao") @MapperScan("com.yd.**.dao")
@EnableFeignClients(basePackages = "com.yd") @EnableFeignClients(basePackages = "com.yd")
@ComponentScan(basePackages = { @ComponentScan(basePackages = {"com.yd.auth.core", "com.yd.csf.service.config"})
"com.yd.auth.core" // 包含认证模块的包路径
})
public class CsfApiApplication { public class CsfApiApplication {
public static void main(String[] args) { public static void main(String[] args) {
......
package com.yd.csf.api.async; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component; 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 @Slf4j
@Component @Component
public class ApiExpectedFortuneAsyncService { 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();
}
}
} }
...@@ -30,6 +30,8 @@ import org.redisson.api.RedissonClient; ...@@ -30,6 +30,8 @@ import org.redisson.api.RedissonClient;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate; import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -151,26 +153,28 @@ public class ApiCommissionController { ...@@ -151,26 +153,28 @@ public class ApiCommissionController {
// 数据处理 // 数据处理
List<Commission> entities = processData(dataList, loginUserId, reconciliationYearMonth); List<Commission> entities = processData(dataList, loginUserId, reconciliationYearMonth);
transactionTemplate.execute(status -> { // 1. 先保存主数据
// 保存来佣数据
commissionService.saveBatch(entities); commissionService.saveBatch(entities);
return null;
});
// // 转换为 VO // // 转换为 VO
// List<CommissionVO> commissionVOList = commissionService.getCommissionList(entities); // List<CommissionVO> commissionVOList = commissionService.getCommissionList(entities);
// 开启新事务,比对数据
transactionTemplate.execute(status -> { // 2. 事务提交后执行比对
TransactionSynchronizationManager.registerSynchronization(
new TransactionSynchronization() {
@Override
public void afterCommit() {
try { try {
// 这里会开启新事务执行更新
commissionAsyncService.commissionCompareBatch(entities); commissionAsyncService.commissionCompareBatch(entities);
} catch (Exception e) { } catch (Exception e) {
// 比对失败不影响主事务,记录日志即可
e.printStackTrace();
log.error("批量导入, 比对操作执行失败, error: {}", e.getMessage()); log.error("批量导入, 比对操作执行失败, error: {}", e.getMessage());
// 可以发送告警或记录失败任务
}
}
} }
return null; );
});
return Result.success(true); return Result.success(true);
} }
......
...@@ -34,6 +34,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -34,6 +34,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -247,13 +248,20 @@ public class ApiCommissionExpectedController { ...@@ -247,13 +248,20 @@ public class ApiCommissionExpectedController {
if (policy == null) { if (policy == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "保单不存在"); 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( commissionExpectedService.getExpectedCommissionByProductlaunchId(
policy, policy,
request.getProductLaunchBizId(), request.getProductLaunchBizId(),
request.getInsuranceCompanyBizId(), request.getInsuranceCompanyBizId(),
request.getReconciliationCompany(), request.getReconciliationCompany(),
request.getReconciliationCompanyCode(), request.getReconciliationCompanyCode(),
request.getReconciliationCompanyBizId()); request.getReconciliationCompanyBizId(),
policyFollow.getProfessionalInvestor());
return Result.success(true); return Result.success(true);
} }
...@@ -283,7 +291,7 @@ public class ApiCommissionExpectedController { ...@@ -283,7 +291,7 @@ public class ApiCommissionExpectedController {
if (!CollectionUtils.isEmpty(allExpectedIdList)) { if (!CollectionUtils.isEmpty(allExpectedIdList)) {
receivableReportPage = commissionExpectedService.receivableReportPage(reportPage, allExpectedIdList); receivableReportPage = commissionExpectedService.receivableReportPage(reportPage, allExpectedIdList);
} }
enrichReceivableReportWithCompanyName(receivableReportPage); // enrichReceivableReportWithCompanyName(receivableReportPage);
receivableReportPage = convertProductName(receivableReportPage); receivableReportPage = convertProductName(receivableReportPage);
// 组装返回结果 // 组装返回结果
ReceivableReportResponse response = new ReceivableReportResponse(); ReceivableReportResponse response = new ReceivableReportResponse();
...@@ -389,4 +397,21 @@ public class ApiCommissionExpectedController { ...@@ -389,4 +397,21 @@ public class ApiCommissionExpectedController {
} }
return Collections.emptyList(); return Collections.emptyList();
} }
@GetMapping("/test_expected_commission")
@Operation(summary = "测试佣金匹配")
public Result<Boolean> testExpectedCommission(@RequestParam("policyNo") String policyNo,
@RequestParam("effectiveDate") String effectiveDate,
@RequestParam("coolingOffEndDate") String coolingOffEndDate) {
if (StringUtils.isBlank(policyNo)) {
return Result.fail(ResultCode.NULL_ERROR.getCode(), "policyNo不能为空");
}
try {
commissionExpectedService.testExpectedCommission(policyNo, effectiveDate, coolingOffEndDate);
} catch (IOException e) {
return Result.fail(ResultCode.FAIL.getCode(), "读取文件失败");
}
return Result.success(true);
}
} }
...@@ -23,6 +23,7 @@ import io.swagger.v3.oas.annotations.Operation; ...@@ -23,6 +23,7 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -58,7 +59,7 @@ public class ApiCustomerController { ...@@ -58,7 +59,7 @@ public class ApiCustomerController {
*/ */
@Operation(summary = "创建客户") @Operation(summary = "创建客户")
@PostMapping("/add") @PostMapping("/add")
public Result<Map<String, Object>> addCustomer(@RequestBody CustomerAddRequest customerAddRequest, HttpServletRequest request) { public Result<Map<String, Object>> addCustomer(@Validated @RequestBody CustomerAddRequest customerAddRequest, HttpServletRequest request) {
if (customerAddRequest == null) { if (customerAddRequest == null) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), ResultCode.PARAMS_ERROR.getMessage()); return Result.fail(ResultCode.PARAMS_ERROR.getCode(), ResultCode.PARAMS_ERROR.getMessage());
} }
...@@ -134,7 +135,7 @@ public class ApiCustomerController { ...@@ -134,7 +135,7 @@ public class ApiCustomerController {
*/ */
@PostMapping("/update") @PostMapping("/update")
@Operation(summary = "更新客户信息") @Operation(summary = "更新客户信息")
public Result<Boolean> updateCustomer(@RequestBody CustomerUpdateRequest customerUpdateRequest) { public Result<Boolean> updateCustomer(@Validated @RequestBody CustomerUpdateRequest customerUpdateRequest) {
String customerBizId = customerUpdateRequest.getCustomerBizId(); String customerBizId = customerUpdateRequest.getCustomerBizId();
if (ObjectUtils.isEmpty(customerBizId)) { if (ObjectUtils.isEmpty(customerBizId)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "customerBizId不能为空"); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "customerBizId不能为空");
......
...@@ -37,10 +37,7 @@ import javax.annotation.Resource; ...@@ -37,10 +37,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -529,7 +526,7 @@ public class ApiFortuneController { ...@@ -529,7 +526,7 @@ public class ApiFortuneController {
// 查询列表数据 // 查询列表数据
QueryWrapper<Fortune> queryWrapper = new QueryWrapper<>(); QueryWrapper<Fortune> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("expected_fortune_biz_id", fortuneQueryRequest.getExpectedFortuneBizId()); queryWrapper.eq("expected_fortune_biz_id", fortuneQueryRequest.getExpectedFortuneBizId());
queryWrapper.eq("status", FortuneStatusEnum.SENT.getItemValue()); queryWrapper.in("status", Arrays.asList(FortuneStatusEnum.CHECKED.getItemValue(), FortuneStatusEnum.SENT.getItemValue()));
Page<Fortune> fortunePage = fortuneService.page(new Page<>(current, size), Page<Fortune> fortunePage = fortuneService.page(new Page<>(current, size),
queryWrapper); queryWrapper);
// 组装返回值 // 组装返回值
......
package com.yd.csf.api.controller; package com.yd.csf.api.controller;
import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader; import com.alibaba.excel.ExcelReader;
...@@ -17,10 +18,12 @@ import com.yd.common.enums.ResultCode; ...@@ -17,10 +18,12 @@ import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException; import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator; 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.CommissionExcelDTO;
import com.yd.csf.api.dto.PolicyExcelDTO; import com.yd.csf.api.dto.PolicyExcelDTO;
import com.yd.csf.api.dto.PolicyFollowDTO; import com.yd.csf.api.dto.PolicyFollowDTO;
import com.yd.csf.api.listener.PolicyDataListener; import com.yd.csf.api.listener.PolicyDataListener;
import com.yd.csf.api.service.ApiCommissionConditionService;
import com.yd.csf.api.service.ApiExpectedFortuneService; import com.yd.csf.api.service.ApiExpectedFortuneService;
import com.yd.csf.api.service.ApiPolicyFollowService; import com.yd.csf.api.service.ApiPolicyFollowService;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest; import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
...@@ -50,6 +53,7 @@ import org.apache.commons.lang3.StringUtils; ...@@ -50,6 +53,7 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -92,14 +96,19 @@ public class ApiPolicyFollowController { ...@@ -92,14 +96,19 @@ public class ApiPolicyFollowController {
private ApiInsuranceReconciliationCompanyFeignClient apiInsuranceReconciliationCompanyFeignClient; private ApiInsuranceReconciliationCompanyFeignClient apiInsuranceReconciliationCompanyFeignClient;
@Resource @Resource
private CommissionExpectedService commissionExpectedService; private CommissionExpectedService commissionExpectedService;
@Resource // @Resource
private ApiPolicyFollowService apiPolicyFollowService; // private ApiPolicyFollowService apiPolicyFollowService;
@Resource // @Resource
private ApiExpectedFortuneService apiExpectedFortuneService; // private ApiExpectedFortuneService apiExpectedFortuneService;
@Resource @Resource
private ApiAnnouncementCommissionRatioFeignClient apiAnnouncementCommissionRatioFeignClient; private ApiAnnouncementCommissionRatioFeignClient apiAnnouncementCommissionRatioFeignClient;
@Resource @Resource
private FeignResultHelper feignResultHelper; private FeignResultHelper feignResultHelper;
@Resource
private ApiExpectedFortuneAsyncService apiExpectedFortuneAsyncService;
@Autowired
private ApiCommissionConditionService apiCommissionConditionService;
@PostMapping("/upload/excel") @PostMapping("/upload/excel")
...@@ -544,24 +553,26 @@ public class ApiPolicyFollowController { ...@@ -544,24 +553,26 @@ public class ApiPolicyFollowController {
if (!hasCommissionInfo) { if (!hasCommissionInfo) {
return Result.fail(ResultCode.NULL_ERROR.getCode(), "产品未维护发佣信息"); return Result.fail(ResultCode.NULL_ERROR.getCode(), "产品未维护发佣信息");
} }
//查询产品发佣配置,获取结算币种 //查询产品发佣配置,获取结算币种
ApiAnnouncementCommissionRatioListRequest announcementRatioListRequest = new ApiAnnouncementCommissionRatioListRequest(); ApiAnnouncementCommissionRatioListRequest announcementRatioListRequest = new ApiAnnouncementCommissionRatioListRequest();
announcementRatioListRequest.setProductLaunchBizId(productLaunchBizId); announcementRatioListRequest.setProductLaunchBizId(productLaunchBizId);
announcementRatioListRequest.setEffectiveDate(changePolicyFollowStatusRequest.getEffectiveDate()); announcementRatioListRequest.setEffectiveDate(changePolicyFollowStatusRequest.getEffectiveDate());
announcementRatioListRequest.setPaymentTerm(String.valueOf(policyFollow.getIssueNumber())); announcementRatioListRequest.setPaymentTerm(String.valueOf(policyFollow.getIssueNumber()));
try { try {
feignResultHelper.extractListData( apiCommissionConditionService.getCommissionRatioList(policyFollow.getPolicyNo(),changePolicyFollowStatusRequest.getEffectiveDate());
apiAnnouncementCommissionRatioFeignClient.list(announcementRatioListRequest), // feignResultHelper.extractListData(
ApiAnnouncementCommissionRatioListResponse.class // apiAnnouncementCommissionRatioFeignClient.list(announcementRatioListRequest),
); // ApiAnnouncementCommissionRatioListResponse.class
// );
} catch (BusinessException e) { } catch (BusinessException e) {
log.info("===== 进入BusinessException catch块 ====="); log.info("===== 进入BusinessException catch块 =====");
log.info("查询结算币种->保单号:{},入参request:{}", policyFollow.getPolicyNo(), JSON.toJSONString(announcementRatioListRequest)); log.info("查询结算币种->保单号:{},入参request:{}", policyFollow.getPolicyNo(), JSON.toJSONString(announcementRatioListRequest));
return Result.fail("查询产品发佣配置,获取结算币种失败," + e.getMessage()); return Result.fail("未查询到产品发佣配置,查询条件:" + transferMsg(announcementRatioListRequest, policyFollow));
} catch (Exception e) { } catch (Exception e) {
log.info("===== 进入Exception catch块 ====="); log.info("===== 进入Exception catch块 =====");
log.info("查询结算币种->保单号:{},入参request:{}", policyFollow.getPolicyNo(), JSON.toJSONString(announcementRatioListRequest)); log.info("查询结算币种->保单号:{},入参request:{}", policyFollow.getPolicyNo(), JSON.toJSONString(announcementRatioListRequest));
return Result.fail("查询产品发佣配置,获取结算币种失败," + e.getMessage()); return Result.fail("未查询到产品发佣配置,查询条件:" + transferMsg(announcementRatioListRequest, policyFollow));
} }
} }
...@@ -572,29 +583,39 @@ public class ApiPolicyFollowController { ...@@ -572,29 +583,39 @@ public class ApiPolicyFollowController {
if (PolicyFollowStatusEnum.EFFECTIVE.equals(currentStatusEnum)) { if (PolicyFollowStatusEnum.EFFECTIVE.equals(currentStatusEnum)) {
// 获取Token // 获取Token
String token = request.getHeader("Authorization"); 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); return Result.success(true);
} }
/** private String transferMsg(ApiAnnouncementCommissionRatioListRequest announcementRatioListRequest, PolicyFollow policyFollow) {
* 异步处理 return String.format("保单生效日: %s, 供款年期: %s, 产品名称: %s, ",
* DateUtil.format(announcementRatioListRequest.getEffectiveDate(), DatePattern.NORM_DATE_PATTERN),
* @return policyFollow.getIssueNumber(),
*/ policyFollow.getProductName());
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); // * @return
if (result != null && result.getCode() == 200) { // */
log.info("新单跟进-同步生成预计出账记录成功:保单号={}", policyNo); // public Result execute(String token, String policyNo) {
} // // 调用 ApiExpectedFortuneService 的 generateSyncWithLogAndRedis(同步版本,包含日志和Redis处理)
return Result.success(); // 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();
// }
/** /**
* 新单跟进状态列表查询 * 新单跟进状态列表查询
......
...@@ -16,6 +16,11 @@ import java.util.List; ...@@ -16,6 +16,11 @@ import java.util.List;
public class GenerateExpectedFortuneDto { public class GenerateExpectedFortuneDto {
/** /**
* 来源 1-销售佣金 2-非销售佣金
*/
private Integer source;
/**
* 保单发佣批次ID * 保单发佣批次ID
*/ */
private String batchBizId; private String batchBizId;
...@@ -31,6 +36,16 @@ public class GenerateExpectedFortuneDto { ...@@ -31,6 +36,16 @@ public class GenerateExpectedFortuneDto {
private String policyNo; private String policyNo;
/** /**
* 产品业务id
*/
private String productLaunchBizId;
/**
* 保险公司业务id
*/
private String insuranceCompanyBizId;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年) * 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/ */
private Integer fortunePeriod; private Integer fortunePeriod;
......
package com.yd.csf.api.service;
import com.yd.common.result.Result;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioListResponse;
import java.util.Date;
import java.util.List;
public interface ApiCommissionConditionService {
Result<List<ApiAnnouncementCommissionRatioListResponse>> getCommissionRatioList(String policyNo, Date effectiveDate);
}
...@@ -31,9 +31,6 @@ public interface ApiPremiumReconciliationService { ...@@ -31,9 +31,6 @@ public interface ApiPremiumReconciliationService {
Result editResult(ApiPremiumReconciliationResultEditRequest request); Result editResult(ApiPremiumReconciliationResultEditRequest request);
@Async("commonAsyncExecutor")
void execute(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest,String token);
Result<Boolean> checkReconciliationComplete(String policyNo); Result<Boolean> checkReconciliationComplete(String policyNo);
Result<PremiumReconciliation> checkPremiumReconciliationIsExist(String expectedCommissionRatioBizId); Result<PremiumReconciliation> checkPremiumReconciliationIsExist(String expectedCommissionRatioBizId);
......
...@@ -81,6 +81,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService { ...@@ -81,6 +81,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto) { public Result add(ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto) {
List<ApiProductPlanAdditionalInfoDto> list = new ArrayList<>(); List<ApiProductPlanAdditionalInfoDto> list = new ArrayList<>();
list.add(apiProductPlanAdditionalInfoDto); list.add(apiProductPlanAdditionalInfoDto);
...@@ -100,6 +101,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService { ...@@ -100,6 +101,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto) { public Result edit(ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto) {
//编辑预约入参字段校验 - 产品计划信息字段校验 - 编辑产品附加险信息单个对象字段校验 //编辑预约入参字段校验 - 产品计划信息字段校验 - 编辑产品附加险信息单个对象字段校验
apiAppointmentCheckService.checkEditApiProductPlanAdditionalInfoDto(apiProductPlanAdditionalInfoDto); apiAppointmentCheckService.checkEditApiProductPlanAdditionalInfoDto(apiProductPlanAdditionalInfoDto);
...@@ -134,6 +136,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService { ...@@ -134,6 +136,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result del(String additionalBizId) { public Result del(String additionalBizId) {
//校验附加险信息是否存在 //校验附加险信息是否存在
Result<Additional> result = checkAdditionalIsExist(additionalBizId); Result<Additional> result = checkAdditionalIsExist(additionalBizId);
...@@ -183,6 +186,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService { ...@@ -183,6 +186,7 @@ public class ApiAdditionalServiceImpl implements ApiAdditionalService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result batchEditAdditionalData(ApiProductPlanInfoDto productPlanInfoDto, String planBizId) { public Result batchEditAdditionalData(ApiProductPlanInfoDto productPlanInfoDto, String planBizId) {
if (Objects.isNull(productPlanInfoDto) if (Objects.isNull(productPlanInfoDto)
|| ( !Objects.isNull(productPlanInfoDto) || ( !Objects.isNull(productPlanInfoDto)
......
...@@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -35,6 +36,7 @@ public class ApiAgentDetailFycServiceImpl implements ApiAgentDetailFycService { ...@@ -35,6 +36,7 @@ public class ApiAgentDetailFycServiceImpl implements ApiAgentDetailFycService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result saveAgentDetailFyc(GenerateAgentDetailFycDto dto) { public Result saveAgentDetailFyc(GenerateAgentDetailFycDto dto) {
List<AlgorithmResDto> algorithmResDtoList = dto.getAlgorithmResDtoList(); List<AlgorithmResDto> algorithmResDtoList = dto.getAlgorithmResDtoList();
List<AgentDetailFyc> agentDetailFycList = new ArrayList<>(); List<AgentDetailFyc> agentDetailFycList = new ArrayList<>();
......
...@@ -9,6 +9,7 @@ import com.yd.csf.service.model.AgentReferralRelation; ...@@ -9,6 +9,7 @@ import com.yd.csf.service.model.AgentReferralRelation;
import com.yd.csf.service.service.IAgentReferralRelationService; import com.yd.csf.service.service.IAgentReferralRelationService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -25,6 +26,7 @@ public class ApiAgentReferralRelationServiceImpl implements ApiAgentReferralRela ...@@ -25,6 +26,7 @@ public class ApiAgentReferralRelationServiceImpl implements ApiAgentReferralRela
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result save(ApiAgentReferralRelationSaveRequest request) { public Result save(ApiAgentReferralRelationSaveRequest request) {
//先删后新增 //先删后新增
iAgentReferralRelationService.del(request.getAgentIdList(), request.getReferrerId()); iAgentReferralRelationService.del(request.getAgentIdList(), request.getReferrerId());
......
...@@ -8,6 +8,7 @@ import com.yd.auth.core.utils.SecurityUtil; ...@@ -8,6 +8,7 @@ import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.constant.RedisConstants; import com.yd.common.constant.RedisConstants;
import com.yd.common.enums.CommonEnum; import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.DictTypeEnum; import com.yd.common.enums.DictTypeEnum;
import com.yd.common.enums.ProjectEnum;
import com.yd.common.exception.BusinessException; import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.common.utils.*; import com.yd.common.utils.*;
...@@ -46,6 +47,7 @@ import org.apache.commons.lang3.StringUtils; ...@@ -46,6 +47,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.*; import java.util.*;
...@@ -137,6 +139,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService ...@@ -137,6 +139,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiAppointmentFileAddRequest request) { public Result add(ApiAppointmentFileAddRequest request) {
//获取Security上下文当前用户的登录信息 //获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser(); AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
...@@ -154,6 +157,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService ...@@ -154,6 +157,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiAppointmentFileEditRequest request) { public Result edit(ApiAppointmentFileEditRequest request) {
Result<AppointmentFile> result = checkAppointmentFileIsExist(request.getAppointmentFileBizId()); Result<AppointmentFile> result = checkAppointmentFileIsExist(request.getAppointmentFileBizId());
AppointmentFile appointmentFile = result.getData(); AppointmentFile appointmentFile = result.getData();
...@@ -168,6 +172,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService ...@@ -168,6 +172,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result del(String appointmentFileBizId) { public Result del(String appointmentFileBizId) {
Result<AppointmentFile> result = checkAppointmentFileIsExist(appointmentFileBizId); Result<AppointmentFile> result = checkAppointmentFileIsExist(appointmentFileBizId);
AppointmentFile appointmentFile = result.getData(); AppointmentFile appointmentFile = result.getData();
...@@ -181,6 +186,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService ...@@ -181,6 +186,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result download(String appointmentFileBizId) { public Result download(String appointmentFileBizId) {
return null; return null;
} }
...@@ -191,6 +197,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService ...@@ -191,6 +197,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result<String> itineraryPdf(String appointmentBizId) { public Result<String> itineraryPdf(String appointmentBizId) {
String url = ""; String url = "";
//查询redis缓存的字典列表信息 //查询redis缓存的字典列表信息
...@@ -206,6 +213,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService ...@@ -206,6 +213,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
request.setDataObject(itineraryDto); request.setDataObject(itineraryDto);
request.setObjectId(appointmentBizId); request.setObjectId(appointmentBizId);
request.setTemplateType(TemplateTypeEnum.XCD.getItemValue()); request.setTemplateType(TemplateTypeEnum.XCD.getItemValue());
request.setProjectBizId(ProjectEnum.CSF_PC.getProjectBizId());
if (StringUtils.isNotBlank(itineraryDto.getName()) && if (StringUtils.isNotBlank(itineraryDto.getName()) &&
StringUtils.isNotBlank(itineraryDto.getArrivalTime())) { StringUtils.isNotBlank(itineraryDto.getArrivalTime())) {
//咨询人和集合日(签单日)都不为空,文件名 = 咨询人 + 集合日(20260103) //咨询人和集合日(签单日)都不为空,文件名 = 咨询人 + 集合日(20260103)
...@@ -236,6 +244,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService ...@@ -236,6 +244,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result<ApiAppointmentExportExcelResponse> appointmentExportExcel(String appointmentBizId) { public Result<ApiAppointmentExportExcelResponse> appointmentExportExcel(String appointmentBizId) {
Map<String, Object> data = new HashMap<>(); Map<String, Object> data = new HashMap<>();
try { try {
...@@ -342,6 +351,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService ...@@ -342,6 +351,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
excelRequest.setAppointmentBizId(appointmentBizId); excelRequest.setAppointmentBizId(appointmentBizId);
excelRequest.setData(data); excelRequest.setData(data);
excelRequest.setTemplateType(TemplateTypeEnum.YYD.getItemValue()); excelRequest.setTemplateType(TemplateTypeEnum.YYD.getItemValue());
excelRequest.setProjectBizId(ProjectEnum.CSF_PC.getProjectBizId());
Result<ApiOssExportAppointmentExcelResponse> result1 = apiExcelFeignClient.exportAppointment(excelRequest); Result<ApiOssExportAppointmentExcelResponse> result1 = apiExcelFeignClient.exportAppointment(excelRequest);
ApiOssExportAppointmentExcelResponse excelResponse = result1.getData(); ApiOssExportAppointmentExcelResponse excelResponse = result1.getData();
ApiAppointmentExportExcelResponse response = new ApiAppointmentExportExcelResponse(); ApiAppointmentExportExcelResponse response = new ApiAppointmentExportExcelResponse();
...@@ -362,6 +372,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService ...@@ -362,6 +372,7 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result<ApiAppointmentImportExcelResponse> appointmentImportExcel(MultipartFile file, public Result<ApiAppointmentImportExcelResponse> appointmentImportExcel(MultipartFile file,
ApiAppointmentImportExcelRequest request) { ApiAppointmentImportExcelRequest request) {
......
...@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service @Service
@Slf4j @Slf4j
...@@ -25,6 +26,7 @@ public class ApiAppointmentLogServiceImpl implements ApiAppointmentLogService { ...@@ -25,6 +26,7 @@ public class ApiAppointmentLogServiceImpl implements ApiAppointmentLogService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result<String> saveAppointmentLog(Appointment appointment) { public Result<String> saveAppointmentLog(Appointment appointment) {
AppointmentLog appointmentLog = new AppointmentLog(); AppointmentLog appointmentLog = new AppointmentLog();
BeanUtils.copyProperties(appointment,appointmentLog); BeanUtils.copyProperties(appointment,appointmentLog);
......
...@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -29,6 +30,7 @@ public class ApiAppointmentReferrerLogServiceImpl implements ApiAppointmentRefer ...@@ -29,6 +30,7 @@ public class ApiAppointmentReferrerLogServiceImpl implements ApiAppointmentRefer
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result saveAppointmentReferrerLogList(List<ApiAppointmentReferrerDto> referrerDtoList, public Result saveAppointmentReferrerLogList(List<ApiAppointmentReferrerDto> referrerDtoList,
String appointmentLogBizId) { String appointmentLogBizId) {
if (CollectionUtils.isEmpty(referrerDtoList)) { if (CollectionUtils.isEmpty(referrerDtoList)) {
......
...@@ -18,6 +18,7 @@ import com.yd.csf.feign.dto.appointment.*; ...@@ -18,6 +18,7 @@ import com.yd.csf.feign.dto.appointment.*;
import com.yd.csf.feign.dto.appointmentfile.ApiAppointmentFileDto; import com.yd.csf.feign.dto.appointmentfile.ApiAppointmentFileDto;
import com.yd.csf.feign.request.appointment.*; import com.yd.csf.feign.request.appointment.*;
import com.yd.csf.feign.response.appointment.*; import com.yd.csf.feign.response.appointment.*;
import com.yd.csf.service.dao.AppointmentMapper;
import com.yd.csf.service.dto.PolicySigner; import com.yd.csf.service.dto.PolicySigner;
import com.yd.csf.service.enums.AppointmentStatusEnum; import com.yd.csf.service.enums.AppointmentStatusEnum;
import com.yd.csf.service.enums.FnaStatusEnum; import com.yd.csf.service.enums.FnaStatusEnum;
...@@ -141,6 +142,8 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService { ...@@ -141,6 +142,8 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
private PolicyBrokerService policyBrokerService; private PolicyBrokerService policyBrokerService;
@Resource @Resource
private PolicyAppointmentFileService policyAppointmentFileService; private PolicyAppointmentFileService policyAppointmentFileService;
@Resource
private AppointmentMapper appointmentMapper;
/** /**
* 预约分页查询 * 预约分页查询
...@@ -277,6 +280,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService { ...@@ -277,6 +280,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
* @param appointmentBizId * @param appointmentBizId
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class)
public Result addRelObjectMaterialList(String appointmentBizId, public Result addRelObjectMaterialList(String appointmentBizId,
List<ApiAppointmentMaterialDto> dtoList) { List<ApiAppointmentMaterialDto> dtoList) {
//添加-单个对象和材料列表关系信息 //添加-单个对象和材料列表关系信息
...@@ -494,6 +498,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService { ...@@ -494,6 +498,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
* 更新关联的FNA状态为"待签单" * 更新关联的FNA状态为"待签单"
* @param fnaBizId FNA业务ID * @param fnaBizId FNA业务ID
*/ */
@Transactional(rollbackFor = Exception.class)
private void updateFnaStatusToPendingSignature(String fnaBizId) { private void updateFnaStatusToPendingSignature(String fnaBizId) {
if (StringUtils.isBlank(fnaBizId)) { if (StringUtils.isBlank(fnaBizId)) {
return; return;
...@@ -511,6 +516,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService { ...@@ -511,6 +516,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result editStorage(ApiAppointmentEditStorageRequest request) { public Result editStorage(ApiAppointmentEditStorageRequest request) {
//校验预约信息-客户和fna入参 //校验预约信息-客户和fna入参
apiAppointmentCheckService.checkCustomerAndFna(request.getApiAppointmentInfoDto(), "预约信息-"); apiAppointmentCheckService.checkCustomerAndFna(request.getApiAppointmentInfoDto(), "预约信息-");
...@@ -676,13 +682,13 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService { ...@@ -676,13 +682,13 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
// 保單持有人 // 保單持有人
if (apiPolicyholderInfoDto != null) { if (apiPolicyholderInfoDto != null) {
follow.setPolicyHolder(apiPolicyholderInfoDto.getNameCn()); follow.setPolicyHolder(StringUtils.isNotBlank(apiPolicyholderInfoDto.getNameCn()) ? apiPolicyholderInfoDto.getNameCn() : apiPolicyholderInfoDto.getNamePyEn());
} }
// 受保人信息 // 受保人信息
if (!Objects.isNull(apiInsurantInfoDto)) { if (!Objects.isNull(apiInsurantInfoDto)) {
// 受保人 // 受保人
follow.setInsured(apiInsurantInfoDto.getNameCn()); follow.setInsured(StringUtils.isNotBlank(apiInsurantInfoDto.getNameCn()) ? apiInsurantInfoDto.getNameCn() : apiInsurantInfoDto.getNamePyEn());
// 受保人业务id // 受保人业务id
follow.setInsuredBizId(apiInsurantInfoDto.getInsurantBizId()); follow.setInsuredBizId(apiInsurantInfoDto.getInsurantBizId());
// 受保人与保單持有人关系 // 受保人与保單持有人关系
...@@ -1172,6 +1178,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService { ...@@ -1172,6 +1178,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result editStatus(ApiAppointmentEditStatusRequest request) { public Result editStatus(ApiAppointmentEditStatusRequest request) {
//校验预约信息是否存在 //校验预约信息是否存在
Result<Appointment> result = checkAppointmentIsExist(request.getAppointmentBizId()); Result<Appointment> result = checkAppointmentIsExist(request.getAppointmentBizId());
...@@ -1193,6 +1200,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService { ...@@ -1193,6 +1200,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
* 取消预约-更新新单跟进状态为取消预约 * 取消预约-更新新单跟进状态为取消预约
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class)
public Result editFollowStatus(String appointmentBizId) { public Result editFollowStatus(String appointmentBizId) {
List<PolicyFollow> followList = policyFollowService.queryListByAppointmentBizId(appointmentBizId); List<PolicyFollow> followList = policyFollowService.queryListByAppointmentBizId(appointmentBizId);
if (!CollectionUtils.isEmpty(followList)) { if (!CollectionUtils.isEmpty(followList)) {
......
...@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -29,6 +30,7 @@ public class ApiAppointmentUserSignLogServiceImpl implements ApiAppointmentUserS ...@@ -29,6 +30,7 @@ public class ApiAppointmentUserSignLogServiceImpl implements ApiAppointmentUserS
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result saveAppointmentUserSignLogList(List<ApiAppointmentUserSignDto> userSignDtoList, public Result saveAppointmentUserSignLogList(List<ApiAppointmentUserSignDto> userSignDtoList,
String appointmentLogBizId) { String appointmentLogBizId) {
if (CollectionUtils.isEmpty(userSignDtoList)) { if (CollectionUtils.isEmpty(userSignDtoList)) {
......
...@@ -83,6 +83,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService { ...@@ -83,6 +83,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) { public Result add(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) {
List<ApiBeneficiaryInfoDto> list = new ArrayList<>(); List<ApiBeneficiaryInfoDto> list = new ArrayList<>();
list.add(apiBeneficiaryInfoDto); list.add(apiBeneficiaryInfoDto);
...@@ -99,6 +100,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService { ...@@ -99,6 +100,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) { public Result edit(ApiBeneficiaryInfoDto apiBeneficiaryInfoDto) {
//编辑预约入参字段校验 - 编辑单个受益人信息字段校验 //编辑预约入参字段校验 - 编辑单个受益人信息字段校验
apiAppointmentCheckService.checkEditApiBeneficiaryInfoDto(apiBeneficiaryInfoDto); apiAppointmentCheckService.checkEditApiBeneficiaryInfoDto(apiBeneficiaryInfoDto);
...@@ -118,6 +120,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService { ...@@ -118,6 +120,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result batchEdit(ApiBatchEditBeneficiaryRequest request) { public Result batchEdit(ApiBatchEditBeneficiaryRequest request) {
apiAppointmentCheckService.checkEditApiBeneficiaryInfoDtoList(request.getApiBeneficiaryInfoDtoList()); apiAppointmentCheckService.checkEditApiBeneficiaryInfoDtoList(request.getApiBeneficiaryInfoDtoList());
//批量编辑受益人信息表数据 //批量编辑受益人信息表数据
...@@ -131,6 +134,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService { ...@@ -131,6 +134,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result del(String beneficiaryBizId) { public Result del(String beneficiaryBizId) {
//校验受益人信息是否存在 //校验受益人信息是否存在
Result<Beneficiary> result = checkBeneficiaryIsExist(beneficiaryBizId); Result<Beneficiary> result = checkBeneficiaryIsExist(beneficiaryBizId);
...@@ -177,6 +181,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService { ...@@ -177,6 +181,7 @@ public class ApiBeneficiaryServiceImpl implements ApiBeneficiaryService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result batchEditBeneficiaryData(List<ApiBeneficiaryInfoDto> list,String appointmentBizId) { public Result batchEditBeneficiaryData(List<ApiBeneficiaryInfoDto> list,String appointmentBizId) {
if (CollectionUtils.isEmpty(list)){ if (CollectionUtils.isEmpty(list)){
//为空放行 //为空放行
......
package com.yd.csf.api.service.impl;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiCommissionConditionService;
import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.model.PolicyPolicyholder;
import com.yd.csf.service.service.PolicyFollowService;
import com.yd.csf.service.service.PolicyPolicyholderService;
import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignClient;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioListRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioListResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 佣金条件服务类
*/
@Slf4j
@Service
public class ApiCommissionConditionServiceImpl implements ApiCommissionConditionService {
@Autowired
private ApiAnnouncementCommissionRatioFeignClient ratioFeignClient;
@Autowired
private PolicyFollowService policyFollowService;
@Autowired
private PolicyPolicyholderService policyPolicyholderService;
/**
* 根据保单号查询保单所参与过滤产品发佣率数据筛选的字段列表数据
* @param policyNo
* @return
*/
@Override
public Result<List<ApiAnnouncementCommissionRatioListResponse>> getCommissionRatioList(String policyNo, Date effectiveDate) {
//根据保单号查询保单跟进表数据
PolicyFollow policyFollow = policyFollowService.queryOneByPolicyNo(policyNo);
if (policyFollow == null) {
throw new BusinessException("新单跟进表信息不存在");
}
//列出固定几个需要参与发佣率筛选数据的保单字段
//供款年期(数字)
String paymentTerm = policyFollow.getIssueNumber().toString();
//投保年龄(区间值)查询保单投保人表数据 0-64 64-
PolicyPolicyholder policyPolicyholder = policyPolicyholderService.queryOne(policyFollow.getPolicyBizId());
String age = "";
if (policyPolicyholder != null) {
age = policyPolicyholder.getAge();
}
//期缴保费(区间值)例:0-10000 10000-
BigDecimal eachIssuePremium = policyFollow.getEachIssuePremium();
//专业投资者(Yes/No)(选项)
String professionalInvestor = policyFollow.getProfessionalInvestor();
//保单币种(选项)
String policyCurrency = policyFollow.getPolicyCurrency();
//保障年期(数字)
String guaranteePeriod = policyFollow.getGuaranteePeriod();
ApiAnnouncementCommissionRatioListRequest ratioListRequest = new ApiAnnouncementCommissionRatioListRequest();
ratioListRequest.setProductLaunchBizId(policyFollow.getProductLaunchBizId());
ratioListRequest.setEffectiveDate(effectiveDate !=null ? effectiveDate:policyFollow.getEffectiveDate());
ratioListRequest.setPaymentTerm(paymentTerm);
ratioListRequest.setAge(age);
ratioListRequest.setEachIssuePremium(eachIssuePremium);
ratioListRequest.setGuaranteePeriod(guaranteePeriod);
ratioListRequest.setPolicyCurrency(policyCurrency);
ratioListRequest.setProfessionalInvestor(professionalInvestor);
Result<List<ApiAnnouncementCommissionRatioListResponse>> result = ratioFeignClient.list(ratioListRequest);
return result;
}
}
...@@ -21,6 +21,7 @@ import com.yd.csf.service.service.ICommissionRuleConfigService; ...@@ -21,6 +21,7 @@ import com.yd.csf.service.service.ICommissionRuleConfigService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
...@@ -65,6 +66,7 @@ public class ApiCommissionRuleConfigServiceImpl implements ApiCommissionRuleConf ...@@ -65,6 +66,7 @@ public class ApiCommissionRuleConfigServiceImpl implements ApiCommissionRuleConf
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiCommissionRuleConfigAddRequest request) { public Result add(ApiCommissionRuleConfigAddRequest request) {
//校验基本法名称的唯一性 //校验基本法名称的唯一性
List<CommissionRuleConfig> list = iCommissionRuleConfigService.queryList(CommissionRuleConfigDto.builder() List<CommissionRuleConfig> list = iCommissionRuleConfigService.queryList(CommissionRuleConfigDto.builder()
...@@ -88,6 +90,7 @@ public class ApiCommissionRuleConfigServiceImpl implements ApiCommissionRuleConf ...@@ -88,6 +90,7 @@ public class ApiCommissionRuleConfigServiceImpl implements ApiCommissionRuleConf
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiCommissionRuleConfigEditRequest request) { public Result edit(ApiCommissionRuleConfigEditRequest request) {
//校验基本法配置信息是否存在 //校验基本法配置信息是否存在
Result<CommissionRuleConfig> result = checkCommissionRuleConfigIsExist(request.getRuleBizId()); Result<CommissionRuleConfig> result = checkCommissionRuleConfigIsExist(request.getRuleBizId());
...@@ -113,6 +116,7 @@ public class ApiCommissionRuleConfigServiceImpl implements ApiCommissionRuleConf ...@@ -113,6 +116,7 @@ public class ApiCommissionRuleConfigServiceImpl implements ApiCommissionRuleConf
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result del(String ruleBizId) { public Result del(String ruleBizId) {
return null; return null;
} }
......
...@@ -23,6 +23,7 @@ import com.yd.csf.service.service.IConditionTypeService; ...@@ -23,6 +23,7 @@ import com.yd.csf.service.service.IConditionTypeService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -72,6 +73,7 @@ public class ApiConditionConfigServiceImpl implements ApiConditionConfigService ...@@ -72,6 +73,7 @@ public class ApiConditionConfigServiceImpl implements ApiConditionConfigService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiConditionConfigAddRequest request) { public Result add(ApiConditionConfigAddRequest request) {
//校验条件名称唯一性 //校验条件名称唯一性
List<ConditionConfig> conditionConfigList = iConditionConfigService.queryList(ConditionConfigDto.builder() List<ConditionConfig> conditionConfigList = iConditionConfigService.queryList(ConditionConfigDto.builder()
...@@ -96,6 +98,7 @@ public class ApiConditionConfigServiceImpl implements ApiConditionConfigService ...@@ -96,6 +98,7 @@ public class ApiConditionConfigServiceImpl implements ApiConditionConfigService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiConditionConfigEditRequest request) { public Result edit(ApiConditionConfigEditRequest request) {
Result<ConditionConfig> result = checkConditionConfigIsExist(request.getConditionBizId()); Result<ConditionConfig> result = checkConditionConfigIsExist(request.getConditionBizId());
ConditionConfig conditionConfig = result.getData(); ConditionConfig conditionConfig = result.getData();
...@@ -120,6 +123,7 @@ public class ApiConditionConfigServiceImpl implements ApiConditionConfigService ...@@ -120,6 +123,7 @@ public class ApiConditionConfigServiceImpl implements ApiConditionConfigService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result del(String conditionBizId) { public Result del(String conditionBizId) {
return null; return null;
} }
......
...@@ -21,6 +21,7 @@ import com.yd.csf.service.service.IConditionTypeService; ...@@ -21,6 +21,7 @@ import com.yd.csf.service.service.IConditionTypeService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -63,6 +64,7 @@ public class ApiConditionTypeServiceImpl implements ApiConditionTypeService { ...@@ -63,6 +64,7 @@ public class ApiConditionTypeServiceImpl implements ApiConditionTypeService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiConditionTypeAddRequest request) { public Result add(ApiConditionTypeAddRequest request) {
//校验条件类型名称唯一性 //校验条件类型名称唯一性
List<ConditionType> conditionTypeList = iConditionTypeService.queryList(ConditionTypeDto.builder() List<ConditionType> conditionTypeList = iConditionTypeService.queryList(ConditionTypeDto.builder()
...@@ -86,6 +88,7 @@ public class ApiConditionTypeServiceImpl implements ApiConditionTypeService { ...@@ -86,6 +88,7 @@ public class ApiConditionTypeServiceImpl implements ApiConditionTypeService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiConditionTypeEditRequest request) { public Result edit(ApiConditionTypeEditRequest request) {
Result<ConditionType> result = checkConditionTypeIsExist(request.getConditionTypeBizId()); Result<ConditionType> result = checkConditionTypeIsExist(request.getConditionTypeBizId());
ConditionType conditionType = result.getData(); ConditionType conditionType = result.getData();
...@@ -109,6 +112,7 @@ public class ApiConditionTypeServiceImpl implements ApiConditionTypeService { ...@@ -109,6 +112,7 @@ public class ApiConditionTypeServiceImpl implements ApiConditionTypeService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result del(String conditionTypeBizId) { public Result del(String conditionTypeBizId) {
return null; return null;
} }
......
...@@ -229,16 +229,26 @@ public class ApiCsfCommonServiceImpl implements ApiCsfCommonService { ...@@ -229,16 +229,26 @@ public class ApiCsfCommonServiceImpl implements ApiCsfCommonService {
LocalDate currentDate = LocalDate.now(); LocalDate currentDate = LocalDate.now();
if (birthDate.isAfter(currentDate)) { if (birthDate.isAfter(currentDate)) {
throw new IllegalArgumentException("生日日期不能于当前日期"); throw new IllegalArgumentException("生日日期不能于当前日期");
} }
Period period = Period.between(birthDate, currentDate); Period period = Period.between(birthDate, currentDate);
return String.valueOf(period.getYears()); return String.valueOf(period.getYears());
} catch (Exception e) { } catch (Exception e) {
throw new IllegalArgumentException("生日格式不正确,应为yyyy-MM-dd格式"); // throw new IllegalArgumentException("生日格式不正确,应为yyyy-MM-dd格式");
throw new IllegalArgumentException(e.getMessage());
} }
} }
public static void main(String[] args) {
ApiCsfCommonServiceImpl commonService = new ApiCsfCommonServiceImpl();
ApiCsfCalculateRequest request = new ApiCsfCalculateRequest();
request.setRequestValue("310111202603191111");
request.setCalculateType(6);
Result<List<ApiCsfCalculateResponse>> result = commonService.calculate(request);
System.out.println(result);
}
/** /**
* 身高和体重计算BMI指数 * 身高和体重计算BMI指数
* @param requestValueList * @param requestValueList
...@@ -283,18 +293,31 @@ public class ApiCsfCommonServiceImpl implements ApiCsfCommonService { ...@@ -283,18 +293,31 @@ public class ApiCsfCommonServiceImpl implements ApiCsfCommonService {
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
StringBuilder pinyin = new StringBuilder(); StringBuilder pinyin = new StringBuilder();
boolean lastIsChinese = false; // 标记上一个字符是否为汉字,用于控制空格添加
for (char c : chinese.toCharArray()) { for (char c : chinese.toCharArray()) {
if (Character.toString(c).matches("[\\u4E00-\\u9FA5]")) { if (Character.toString(c).matches("[\\u4E00-\\u9FA5]")) {
try { try {
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format); String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
if (pinyinArray != null && pinyinArray.length > 0) { if (pinyinArray != null && pinyinArray.length > 0) {
// 如果上一个字符是汉字且当前也是汉字,则先加空格(避免开头空格)
if (lastIsChinese) {
pinyin.append(' ');
}
pinyin.append(pinyinArray[0]); pinyin.append(pinyinArray[0]);
lastIsChinese = true;
} else {
// 如果没有拼音,原样追加
pinyin.append(c);
lastIsChinese = false;
} }
} catch (BadHanyuPinyinOutputFormatCombination e) { } catch (BadHanyuPinyinOutputFormatCombination e) {
pinyin.append(c); pinyin.append(c);
lastIsChinese = false;
} }
} else { } else {
pinyin.append(c); pinyin.append(c);
lastIsChinese = false;
} }
} }
return pinyin.toString(); return pinyin.toString();
......
...@@ -20,6 +20,7 @@ import com.yd.common.utils.RandomStringGenerator; ...@@ -20,6 +20,7 @@ import com.yd.common.utils.RandomStringGenerator;
import com.yd.common.utils.RedisUtil; import com.yd.common.utils.RedisUtil;
import com.yd.csf.api.dto.*; import com.yd.csf.api.dto.*;
import com.yd.csf.api.service.ApiBasicLawCalculateService; import com.yd.csf.api.service.ApiBasicLawCalculateService;
import com.yd.csf.api.service.ApiCommissionConditionService;
import com.yd.csf.api.service.ApiExpectedFortuneLogService; import com.yd.csf.api.service.ApiExpectedFortuneLogService;
import com.yd.csf.api.service.ApiExpectedFortuneService; import com.yd.csf.api.service.ApiExpectedFortuneService;
import com.yd.csf.feign.request.expectedfortune.*; import com.yd.csf.feign.request.expectedfortune.*;
...@@ -28,6 +29,7 @@ import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneRespo ...@@ -28,6 +29,7 @@ import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneRespo
import com.yd.csf.service.dto.CommissionRuleBindingDto; import com.yd.csf.service.dto.CommissionRuleBindingDto;
import com.yd.csf.service.dto.QueryPolicyAndBrokerDto; import com.yd.csf.service.dto.QueryPolicyAndBrokerDto;
import com.yd.csf.service.dto.QueryPolicyBrokerDto; import com.yd.csf.service.dto.QueryPolicyBrokerDto;
import com.yd.csf.service.enums.CurrencyEnum;
import com.yd.csf.service.enums.FortuneStatusEnum; import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.helper.FeignResultHelper; import com.yd.csf.service.helper.FeignResultHelper;
import com.yd.csf.service.model.*; import com.yd.csf.service.model.*;
...@@ -53,8 +55,11 @@ import org.springframework.stereotype.Service; ...@@ -53,8 +55,11 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionTemplate; import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.util.CollectionUtils; 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.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
...@@ -106,6 +111,11 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -106,6 +111,11 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
private ApiAnnouncementCommissionRatioFeignClient apiAnnouncementCommissionRatioFeignClient; private ApiAnnouncementCommissionRatioFeignClient apiAnnouncementCommissionRatioFeignClient;
@Resource @Resource
private FeignResultHelper feignResultHelper; private FeignResultHelper feignResultHelper;
@Resource
private ApiAnnouncementCommissionRatioFeignClient ratioFeignClient;
@Autowired
private ApiCommissionConditionService apiCommissionConditionService;
/** /**
* 生成预计发佣 * 生成预计发佣
...@@ -114,6 +124,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -114,6 +124,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result<ApiGenerateExpectedFortuneResponse> generate(ApiGenerateExpectedFortuneRequest request) { public Result<ApiGenerateExpectedFortuneResponse> generate(ApiGenerateExpectedFortuneRequest request) {
//查询当前保单号是否正在执行预计发佣的缓存,有值就说明正在执行,无值说明执行完毕或者没有执行。 //查询当前保单号是否正在执行预计发佣的缓存,有值就说明正在执行,无值说明执行完毕或者没有执行。
String value = redisUtil.getCacheObject(RedisConstants.EXPECTED_FORTUNE + request.getPolicyNo()); String value = redisUtil.getCacheObject(RedisConstants.EXPECTED_FORTUNE + request.getPolicyNo());
...@@ -163,7 +174,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -163,7 +174,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
} catch (Exception e) { } catch (Exception e) {
log.info("查询结算币种->保单号:{},入参request:{}", request.getPolicyNo(), JSON.toJSONString(announcementRatioListRequest)); log.info("查询结算币种->保单号:{},入参request:{}", request.getPolicyNo(), JSON.toJSONString(announcementRatioListRequest));
throw new BusinessException("查询产品发佣配置,获取结算币种失败," + e.getMessage()); throw new BusinessException("未查询到产品发佣配置,查询条件:" + JSON.toJSONString(announcementRatioListRequest));
} }
//遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表 //遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表
...@@ -179,6 +190,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -179,6 +190,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
* @param request * @param request
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class)
public Result<ApiGenerateExpectedFortuneResponse> generateSync(ApiGenerateExpectedFortuneRequest request) { public Result<ApiGenerateExpectedFortuneResponse> generateSync(ApiGenerateExpectedFortuneRequest request) {
//查询当前保单号是否正在执行预计发佣的缓存,有值就说明正在执行,无值说明执行完毕或者没有执行。 //查询当前保单号是否正在执行预计发佣的缓存,有值就说明正在执行,无值说明执行完毕或者没有执行。
String value = redisUtil.getCacheObject(RedisConstants.EXPECTED_FORTUNE + request.getPolicyNo()); String value = redisUtil.getCacheObject(RedisConstants.EXPECTED_FORTUNE + request.getPolicyNo());
...@@ -212,26 +224,80 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -212,26 +224,80 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
// throw new BusinessException("绑定基本法数据不存在"); // throw new BusinessException("绑定基本法数据不存在");
// } // }
//查询产品发佣配置,获取结算币种 Integer paymentTerm = 0;
QueryPolicyAndBrokerDto queryPolicyAndBrokerDto = queryPolicyAndBrokerDtoList.get(0); List<ApiAnnouncementCommissionRatioListResponse> announcementRatioList = new ArrayList<>();
ApiAnnouncementCommissionRatioListRequest announcementRatioListRequest = new ApiAnnouncementCommissionRatioListRequest(); Result<List<ApiAnnouncementCommissionRatioListResponse>> listResult = apiCommissionConditionService.getCommissionRatioList(request.getPolicyNo(),null);
announcementRatioListRequest.setProductLaunchBizId(queryPolicyAndBrokerDto.getPlanBizId()); if (listResult != null && !CollectionUtils.isEmpty(listResult.getData())) {
announcementRatioListRequest.setEffectiveDate(Date.from(queryPolicyAndBrokerDto.getEffectiveDate().atStartOfDay(ZoneId.systemDefault()).toInstant())); announcementRatioList = listResult.getData();
announcementRatioListRequest.setPaymentTerm(String.valueOf(queryPolicyAndBrokerDto.getPaymentTerm())); //取 endPeriod 的最大值作为总期数
paymentTerm = listResult.getData().stream()
List<ApiAnnouncementCommissionRatioListResponse> announcementRatioList; .map(item -> {
try { try {
announcementRatioList = feignResultHelper.extractListData( return Integer.parseInt(item.getEndPeriod());
apiAnnouncementCommissionRatioFeignClient.list(announcementRatioListRequest), } catch (NumberFormatException e) {
ApiAnnouncementCommissionRatioListResponse.class log.warn("endPeriod 格式错误: {}", item.getEndPeriod());
); return 0;
} catch (Exception e) { }
log.info("查询结算币种->保单号:{},入参request:{}", request.getPolicyNo(), JSON.toJSONString(announcementRatioListRequest)); })
throw new BusinessException("查询产品发佣配置,获取结算币种失败," + e.getMessage()); .max(Integer::compareTo)
.orElse(0);
} }
log.info("查询产品发佣配置,获取结算币种==========>,{}",JSON.toJSONString(announcementRatioList));
//查询产品发佣配置,获取结算币种
// QueryPolicyAndBrokerDto queryPolicyAndBrokerDto = queryPolicyAndBrokerDtoList.get(0);
// ApiAnnouncementCommissionRatioListRequest announcementRatioListRequest = new ApiAnnouncementCommissionRatioListRequest();
// announcementRatioListRequest.setProductLaunchBizId(queryPolicyAndBrokerDto.getPlanBizId());
// 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(
// apiAnnouncementCommissionRatioFeignClient.list(announcementRatioListRequest),
// ApiAnnouncementCommissionRatioListResponse.class
// );
// } catch (Exception e) {
// log.info("查询结算币种->保单号:{},入参request:{}", request.getPolicyNo(), JSON.toJSONString(announcementRatioListRequest));
// throw new BusinessException("未查询到产品发佣配置,查询条件:" + JSON.toJSONString(announcementRatioListRequest));
// }
// Integer paymentTerm = 0;
// PolicyFollow policyFollow = policyFollowService.queryOneByPolicyNo(request.getPolicyNo());
// if (policyFollow != null) {
// ApiAnnouncementCommissionRatioListRequest ratioListRequest = new ApiAnnouncementCommissionRatioListRequest();
// ratioListRequest.setEffectiveDate(policyFollow.getEffectiveDate());
// ratioListRequest.setPaymentTerm(policyFollow.getIssueNumber().toString()); // 保留原有过滤条件(可根据业务决定是否需要)
// ratioListRequest.setProductLaunchBizId(policyFollow.getProductLaunchBizId());
// Result<List<ApiAnnouncementCommissionRatioListResponse>> listResult = ratioFeignClient.list(ratioListRequest);
// if (listResult != null && !CollectionUtils.isEmpty(listResult.getData())) {
// // 取 endPeriod 的最大值作为总期数
// paymentTerm = listResult.getData().stream()
// .map(item -> {
// try {
// return Integer.parseInt(item.getEndPeriod()); // 将字符串转为整数
// } catch (NumberFormatException e) {
// // 若转换失败,记录日志并返回0,避免影响最大值计算
// log.warn("endPeriod 格式错误: {}", item.getEndPeriod());
// return 0;
// }
// })
// .max(Integer::compareTo)
// .orElse(0); // 若无有效值,默认0
// }
// }
//遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表(同步执行) //遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表(同步执行)
executeSync(queryPolicyAndBrokerDtoList, request.getPolicyNo(), announcementRatioList); executeSync(queryPolicyAndBrokerDtoList, request.getPolicyNo(), announcementRatioList,paymentTerm);
return Result.success(null, "生成预计发佣成功"); return Result.success(null, "生成预计发佣成功");
} }
...@@ -244,6 +310,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -244,6 +310,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result<ApiGenerateExpectedFortuneResponse> generateWithLogAndRedis(ApiGenerateExpectedFortuneRequest request) { public Result<ApiGenerateExpectedFortuneResponse> generateWithLogAndRedis(ApiGenerateExpectedFortuneRequest request) {
try { try {
Result<ApiGenerateExpectedFortuneResponse> result = generate(request); Result<ApiGenerateExpectedFortuneResponse> result = generate(request);
...@@ -284,6 +351,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -284,6 +351,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result<ApiGenerateExpectedFortuneResponse> generateSyncWithLogAndRedis(ApiGenerateExpectedFortuneRequest request) { public Result<ApiGenerateExpectedFortuneResponse> generateSyncWithLogAndRedis(ApiGenerateExpectedFortuneRequest request) {
try { try {
Result<ApiGenerateExpectedFortuneResponse> result = generateSync(request); Result<ApiGenerateExpectedFortuneResponse> result = generateSync(request);
...@@ -325,6 +393,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -325,6 +393,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
*/ */
@Override @Override
@Async("commonAsyncExecutor") @Async("commonAsyncExecutor")
@Transactional(rollbackFor = Exception.class)
public Result execute(List<QueryPolicyAndBrokerDto> queryPolicyAndBrokerDtoList, public Result execute(List<QueryPolicyAndBrokerDto> queryPolicyAndBrokerDtoList,
List<CommissionRuleBinding> commissionRuleBindingList, List<CommissionRuleBinding> commissionRuleBindingList,
String policyNo, String policyNo,
...@@ -390,6 +459,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -390,6 +459,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
}); });
} }
@Transactional(rollbackFor = Exception.class)
private void updateHkdAmountBatch(List<ExpectedFortune> expectedFortuneList, String policyCurrency, List<ApiAnnouncementCommissionRatioListResponse> announcementRatioList) { private void updateHkdAmountBatch(List<ExpectedFortune> expectedFortuneList, String policyCurrency, List<ApiAnnouncementCommissionRatioListResponse> announcementRatioList) {
log.info("------------------------开始计算默认结算汇率、港币金额----------------------"); log.info("------------------------开始计算默认结算汇率、港币金额----------------------");
...@@ -411,6 +481,11 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -411,6 +481,11 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
expectedFortune.setDefaultExchangeRate(exchangeRate); expectedFortune.setDefaultExchangeRate(exchangeRate);
//设置港币金额(标准发佣金额 * 默认结算汇率) //设置港币金额(标准发佣金额 * 默认结算汇率)
expectedFortune.setHkdAmount(expectedFortune.getAmount().multiply(exchangeRate)); expectedFortune.setHkdAmount(expectedFortune.getAmount().multiply(exchangeRate));
//默认值
expectedFortune.setPaidAmount(BigDecimal.ZERO);
expectedFortune.setPaidRatio(BigDecimal.ZERO);
expectedFortune.setUnpaidAmount(expectedFortune.getHkdAmount());
expectedFortune.setUnpaidRatio(BigDecimal.valueOf(100));
iExpectedFortuneService.updateById(expectedFortune); iExpectedFortuneService.updateById(expectedFortune);
} }
...@@ -429,16 +504,25 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -429,16 +504,25 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
* @param policyNo * @param policyNo
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class)
public Result executeSync(List<QueryPolicyAndBrokerDto> queryPolicyAndBrokerDtoList, public Result executeSync(List<QueryPolicyAndBrokerDto> queryPolicyAndBrokerDtoList,
String policyNo, List<ApiAnnouncementCommissionRatioListResponse> announcementRatioList) { String policyNo, List<ApiAnnouncementCommissionRatioListResponse> announcementRatioList,Integer paymentTerm) {
log.info("同步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表->入参queryPolicyAndBrokerDtoList:{}",JSON.toJSONString(queryPolicyAndBrokerDtoList)); log.info("同步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表->入参queryPolicyAndBrokerDtoList:{}",JSON.toJSONString(queryPolicyAndBrokerDtoList));
log.info("同步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表->入参policyNo:{}",policyNo); log.info("同步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表->入参policyNo:{}",policyNo);
HttpServletRequest request1 = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request1.getHeader("Authorization");
log.info("同步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表 token==============,{}",token);
// 使用编程式事务,确保方法内的事务一致性 // 使用编程式事务,确保方法内的事务一致性
return transactionTemplate.execute(status -> { return transactionTemplate.execute(status -> {
try { try {
HttpServletRequest request2 = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token2 = request2.getHeader("Authorization");
log.info("使用编程式事务,确保方法内的事务一致性 token==============,{}",token2);
for (QueryPolicyAndBrokerDto brokerDto : queryPolicyAndBrokerDtoList) { for (QueryPolicyAndBrokerDto brokerDto : queryPolicyAndBrokerDtoList) {
Integer paymentTerm = brokerDto.getPaymentTerm(); // Integer paymentTerm = brokerDto.getPaymentTerm();
if (Objects.isNull(paymentTerm)) { if (paymentTerm == null || paymentTerm == 0) {
throw new BusinessException("保单的供款年期不存在"); throw new BusinessException("保单的供款年期不存在");
} }
...@@ -513,6 +597,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -513,6 +597,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
return commissionRuleBindingList; return commissionRuleBindingList;
} }
@Transactional(rollbackFor = Exception.class)
private List<ExpectedFortune> updatePayableNoBatch(String policyNo) { private List<ExpectedFortune> updatePayableNoBatch(String policyNo) {
// 查询最新一条有 payableNo 记录 // 查询最新一条有 payableNo 记录
ExpectedFortune latest = iExpectedFortuneService.getOne( ExpectedFortune latest = iExpectedFortuneService.getOne(
...@@ -600,10 +685,15 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -600,10 +685,15 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
.status(FortuneStatusEnum.WAIT.getItemValue()) .status(FortuneStatusEnum.WAIT.getItemValue())
//期交保费 //期交保费
.paymentPremium(brokerDto.getPaymentPremium()) .paymentPremium(brokerDto.getPaymentPremium())
//所属团队 TODO //所属团队
// .team() .team(brokerDto.getTeam())
//所属团队业务ID TODO //所属团队业务ID
// .teamBizId() .teamBizId(brokerDto.getTeamBizId())
//产品业务id
.productLaunchBizId(brokerDto.getPlanBizId())
//保险公司业务id
.insuranceCompanyBizId(brokerDto.getInsuranceCompanyBizId())
.source(2)
.build()); .build());
return Result.success(); return Result.success();
...@@ -670,10 +760,15 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -670,10 +760,15 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
.status(FortuneStatusEnum.WAIT.getItemValue()) .status(FortuneStatusEnum.WAIT.getItemValue())
//期交保费 //期交保费
.paymentPremium(brokerDto.getPaymentPremium()) .paymentPremium(brokerDto.getPaymentPremium())
//所属团队 TODO //所属团队
// .team() .team(brokerDto.getTeam())
//所属团队业务ID TODO //所属团队业务ID
// .teamBizId() .teamBizId(brokerDto.getTeamBizId())
//产品业务id
.productLaunchBizId(brokerDto.getPlanBizId())
//保险公司业务id
.insuranceCompanyBizId(brokerDto.getInsuranceCompanyBizId())
.source(1)
.build()); .build());
return Result.success(); return Result.success();
...@@ -691,8 +786,9 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -691,8 +786,9 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
if (!CollectionUtils.isEmpty(fortuneDto.getAlgorithmResDtoList())) { if (!CollectionUtils.isEmpty(fortuneDto.getAlgorithmResDtoList())) {
//获得积分业务员绑定的基本法列表对应计算值结果集合 //获得积分业务员绑定的基本法列表对应计算值结果集合
for (AlgorithmResDto algorithmResDto : fortuneDto.getAlgorithmResDtoList()) { for (AlgorithmResDto algorithmResDto : fortuneDto.getAlgorithmResDtoList()) {
if (Objects.isNull(algorithmResDto.getCalculatedValue()) if (fortuneDto.getSource() == 2 && (Objects.isNull(algorithmResDto.getCalculatedValue())
|| algorithmResDto.getCalculatedValue().compareTo(BigDecimal.ZERO) == 0) { || algorithmResDto.getCalculatedValue().compareTo(BigDecimal.ZERO) == 0)) {
//2-非销售佣金并且计算金额为0,走这里
//判空判0 //判空判0
continue; continue;
} }
...@@ -713,6 +809,14 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -713,6 +809,14 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
fortune.setBroker(fortuneDto.getBroker()); fortune.setBroker(fortuneDto.getBroker());
//转介人业务ID (获得积分的业务员) //转介人业务ID (获得积分的业务员)
fortune.setBrokerBizId(fortuneDto.getBrokerBizId()); fortune.setBrokerBizId(fortuneDto.getBrokerBizId());
//所属团队
fortune.setTeam(fortuneDto.getTeam());
//所属团队业务ID
fortune.setTeamBizId(fortuneDto.getTeamBizId());
//产品业务id
fortune.setProductLaunchBizId(fortuneDto.getProductLaunchBizId());
//保险公司业务id
fortune.setInsuranceCompanyBizId(fortuneDto.getInsuranceCompanyBizId());
//出账项目名称 -> 基本法项目名称 //出账项目名称 -> 基本法项目名称
fortune.setFortuneName(algorithmResDto.getItemName()); fortune.setFortuneName(algorithmResDto.getItemName());
//保单预计发佣业务id //保单预计发佣业务id
...@@ -787,6 +891,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -787,6 +891,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean add(List<ExpectedFortuneAddRequest> fortuneAddRequestList) { public Boolean add(List<ExpectedFortuneAddRequest> fortuneAddRequestList) {
if (CollectionUtils.isEmpty(fortuneAddRequestList)) { if (CollectionUtils.isEmpty(fortuneAddRequestList)) {
return true; return true;
...@@ -884,6 +989,9 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -884,6 +989,9 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
* @return 汇率 * @return 汇率
*/ */
private BigDecimal queryExchangeRateByFeign(String policyCurrency, String currency) { 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)) { if (policyCurrency.equalsIgnoreCase(currency)) {
return BigDecimal.ONE; return BigDecimal.ONE;
} }
...@@ -907,6 +1015,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -907,6 +1015,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void exportExpectedFortune(ApiExpectedFortunePageRequest request, HttpServletResponse response) { public void exportExpectedFortune(ApiExpectedFortunePageRequest request, HttpServletResponse response) {
// 查询数据 // 查询数据
QueryWrapper<ExpectedFortune> queryWrapper = this.getQueryWrapper(request); QueryWrapper<ExpectedFortune> queryWrapper = this.getQueryWrapper(request);
...@@ -974,8 +1083,10 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -974,8 +1083,10 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
List<PayableReportVO> voList = payableReportPage.getRecords().stream().map(vo -> { List<PayableReportVO> voList = payableReportPage.getRecords().stream().map(vo -> {
Policy policy = policyMap.get(vo.getPolicyNo()); Policy policy = policyMap.get(vo.getPolicyNo());
PolicyFollow policyFollow= policyFollowMap.get(vo.getPolicyNo()); PolicyFollow policyFollow= policyFollowMap.get(vo.getPolicyNo());
vo.setCurrency(CurrencyEnum.toLabel(vo.getCurrency()));
if (policy != null) { if (policy != null) {
vo.setPolicyCurrency(policy.getCurrency()); vo.setPolicyCurrency(CurrencyEnum.toLabel(policy.getCurrency()));
} }
if (policyFollow != null) { if (policyFollow != null) {
vo.setProductName(policyFollow.getProductName()); vo.setProductName(policyFollow.getProductName());
...@@ -1049,8 +1160,8 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -1049,8 +1160,8 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
// 按保单号模糊查询 // 按保单号模糊查询
queryWrapper.eq(ObjectUtils.isNotEmpty(payableNo), "payable_no", payableNo); queryWrapper.eq(ObjectUtils.isNotEmpty(payableNo), "payable_no", payableNo);
queryWrapper.like(StringUtils.isNotBlank(policyNo), "policy_no", policyNo); queryWrapper.like(StringUtils.isNotBlank(policyNo), "policy_no", policyNo);
queryWrapper.gt(ObjectUtils.isNotEmpty(payoutDateStart), "payout_date", payoutDateStart); queryWrapper.ge(ObjectUtils.isNotEmpty(payoutDateStart), "payout_date", payoutDateStart);
queryWrapper.lt(ObjectUtils.isNotEmpty(payoutDateEnd), "payout_date", payoutDateEnd); queryWrapper.le(ObjectUtils.isNotEmpty(payoutDateEnd), "payout_date", payoutDateEnd);
queryWrapper.in(ObjectUtils.isNotEmpty(statusList), "status", statusList); queryWrapper.in(ObjectUtils.isNotEmpty(statusList), "status", statusList);
queryWrapper.eq(ObjectUtils.isNotEmpty(fortunePeriod), "fortune_period", fortunePeriod); queryWrapper.eq(ObjectUtils.isNotEmpty(fortunePeriod), "fortune_period", fortunePeriod);
queryWrapper.eq(StringUtils.isNotBlank(fortuneType), "fortune_type", fortuneType); queryWrapper.eq(StringUtils.isNotBlank(fortuneType), "fortune_type", fortuneType);
......
...@@ -23,6 +23,7 @@ import com.yd.csf.service.service.IFormulaConfigService; ...@@ -23,6 +23,7 @@ import com.yd.csf.service.service.IFormulaConfigService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -69,6 +70,7 @@ public class ApiFormulaConfigServiceImpl implements ApiFormulaConfigService { ...@@ -69,6 +70,7 @@ public class ApiFormulaConfigServiceImpl implements ApiFormulaConfigService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiFormulaConfigAddRequest request) { public Result add(ApiFormulaConfigAddRequest request) {
//校验公式名称唯一性 //校验公式名称唯一性
List<FormulaConfig> formulaConfigList = iFormulaConfigService.queryList(FormulaConfigDto.builder() List<FormulaConfig> formulaConfigList = iFormulaConfigService.queryList(FormulaConfigDto.builder()
...@@ -94,6 +96,7 @@ public class ApiFormulaConfigServiceImpl implements ApiFormulaConfigService { ...@@ -94,6 +96,7 @@ public class ApiFormulaConfigServiceImpl implements ApiFormulaConfigService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiFormulaConfigEditRequest request) { public Result edit(ApiFormulaConfigEditRequest request) {
Result<FormulaConfig> result = checkFormulaConfigIsExist(request.getFormulaBizId()); Result<FormulaConfig> result = checkFormulaConfigIsExist(request.getFormulaBizId());
FormulaConfig formulaConfig = result.getData(); FormulaConfig formulaConfig = result.getData();
...@@ -119,6 +122,7 @@ public class ApiFormulaConfigServiceImpl implements ApiFormulaConfigService { ...@@ -119,6 +122,7 @@ public class ApiFormulaConfigServiceImpl implements ApiFormulaConfigService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result del(String formulaBizId) { public Result del(String formulaBizId) {
return null; return null;
} }
......
package com.yd.csf.api.service.impl; package com.yd.csf.api.service.impl;
import com.alibaba.fastjson.JSON;
import com.yd.base.feign.client.relobjectcertificate.ApiRelObjectCertificateFeignClient; import com.yd.base.feign.client.relobjectcertificate.ApiRelObjectCertificateFeignClient;
import com.yd.base.feign.dto.ApiCertificateDto; import com.yd.base.feign.dto.ApiCertificateDto;
import com.yd.base.feign.request.relobjectcertificate.ApiRelObjectCertificateListAddRequest; import com.yd.base.feign.request.relobjectcertificate.ApiRelObjectCertificateListAddRequest;
...@@ -108,6 +109,7 @@ public class ApiInsurantServiceImpl implements ApiInsurantService { ...@@ -108,6 +109,7 @@ public class ApiInsurantServiceImpl implements ApiInsurantService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiInsurantInfoDto apiInsurantInfoDto) { public Result edit(ApiInsurantInfoDto apiInsurantInfoDto) {
//编辑预约入参字段校验 - 受保人信息字段校验 //编辑预约入参字段校验 - 受保人信息字段校验
apiAppointmentCheckService.checkEditApiInsurantInfoDto(apiInsurantInfoDto); apiAppointmentCheckService.checkEditApiInsurantInfoDto(apiInsurantInfoDto);
...@@ -224,6 +226,7 @@ public class ApiInsurantServiceImpl implements ApiInsurantService { ...@@ -224,6 +226,7 @@ public class ApiInsurantServiceImpl implements ApiInsurantService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result<Insurant> editInsurantData(ApiInsurantInfoDto dto, String appointmentBizId) { public Result<Insurant> editInsurantData(ApiInsurantInfoDto dto, String appointmentBizId) {
if (Objects.isNull(dto)){ if (Objects.isNull(dto)){
//受保人信息对象不能为空 //受保人信息对象不能为空
...@@ -235,15 +238,19 @@ public class ApiInsurantServiceImpl implements ApiInsurantService { ...@@ -235,15 +238,19 @@ public class ApiInsurantServiceImpl implements ApiInsurantService {
Result<Insurant> result = checkInsurantIsExist(dto.getInsurantBizId()); Result<Insurant> result = checkInsurantIsExist(dto.getInsurantBizId());
//受保人信息信息 //受保人信息信息
Insurant insurant = result.getData(); Insurant insurant = result.getData();
Long insurantId = insurant.getId();
//与投保人关系 //与投保人关系
if (RelTypeEnum.MYSELF.getItemValue().equals(dto.getPolicyholderRel())) { if (RelTypeEnum.MYSELF.getItemValue().equals(dto.getPolicyholderRel())) {
//与投保人关系如果是本人,直接查询投保人信息表更新数据到受保人信息表中 //与投保人关系如果是本人,直接查询投保人信息表更新数据到受保人信息表中
Policyholder policyholder = iPolicyholderService.queryOne(appointmentBizId,""); Policyholder policyholder = iPolicyholderService.queryOne(appointmentBizId,"");
if (!Objects.isNull(policyholder)) { if (!Objects.isNull(policyholder)) {
log.info("与投保人关系如果是本人,直接查询投保人信息表更新数据到受保人信息表中之前result.getData(),{}", JSON.toJSONString(result));
log.info("与投保人关系如果是本人,直接查询投保人信息表更新数据到受保人信息表中之前,{}", JSON.toJSONString(insurant));
BeanUtils.copyProperties(policyholder,insurant); BeanUtils.copyProperties(policyholder,insurant);
insurant.setId(result.getData().getId()); insurant.setId(insurantId);
insurant.setAppointmentBizId(appointmentBizId); insurant.setAppointmentBizId(appointmentBizId);
log.info("与投保人关系如果是本人,直接查询投保人信息表更新数据到受保人信息表中之后,{}", JSON.toJSONString(insurant));
iInsurantService.saveOrUpdate(insurant); iInsurantService.saveOrUpdate(insurant);
//查询投保人税务列表信息 //查询投保人税务列表信息
......
...@@ -21,6 +21,7 @@ import org.apache.commons.lang3.StringUtils; ...@@ -21,6 +21,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -79,6 +80,7 @@ public class ApiPolicyReceiptServiceImpl implements ApiPolicyReceiptService { ...@@ -79,6 +80,7 @@ public class ApiPolicyReceiptServiceImpl implements ApiPolicyReceiptService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiPolicyReceiptAddRequest request) { public Result add(ApiPolicyReceiptAddRequest request) {
//校验保单信息是否存在 //校验保单信息是否存在
Policy policy = policyService.queryOne(request.getPolicyNo()); Policy policy = policyService.queryOne(request.getPolicyNo());
...@@ -101,6 +103,7 @@ public class ApiPolicyReceiptServiceImpl implements ApiPolicyReceiptService { ...@@ -101,6 +103,7 @@ public class ApiPolicyReceiptServiceImpl implements ApiPolicyReceiptService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiPolicyReceiptEditRequest request) { public Result edit(ApiPolicyReceiptEditRequest request) {
//校验保单回执信息是否存在 //校验保单回执信息是否存在
PolicyReceipt policyReceipt = iPolicyReceiptService.queryOne(request.getPolicyReceiptBizId()); PolicyReceipt policyReceipt = iPolicyReceiptService.queryOne(request.getPolicyReceiptBizId());
...@@ -127,6 +130,7 @@ public class ApiPolicyReceiptServiceImpl implements ApiPolicyReceiptService { ...@@ -127,6 +130,7 @@ public class ApiPolicyReceiptServiceImpl implements ApiPolicyReceiptService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result editReceiptStatus(String policyReceiptBizId, String receiptStatus) { public Result editReceiptStatus(String policyReceiptBizId, String receiptStatus) {
PolicyReceipt policyReceipt = iPolicyReceiptService.queryOne(policyReceiptBizId); PolicyReceipt policyReceipt = iPolicyReceiptService.queryOne(policyReceiptBizId);
if (Objects.isNull(policyReceipt)) { if (Objects.isNull(policyReceipt)) {
......
...@@ -101,6 +101,7 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService { ...@@ -101,6 +101,7 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiPolicyholderInfoDto apiPolicyholderInfoDto) { public Result edit(ApiPolicyholderInfoDto apiPolicyholderInfoDto) {
//编辑预约入参字段校验 - 投保人信息字段校验 //编辑预约入参字段校验 - 投保人信息字段校验
apiAppointmentCheckService.checkEditApiPolicyholderInfoDto(apiPolicyholderInfoDto); apiAppointmentCheckService.checkEditApiPolicyholderInfoDto(apiPolicyholderInfoDto);
...@@ -165,6 +166,7 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService { ...@@ -165,6 +166,7 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService {
* @param apiCertificateDtoList * @param apiCertificateDtoList
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class)
public Result addRelObjectCertificateList(String objectBizId, public Result addRelObjectCertificateList(String objectBizId,
String objectType, String objectType,
String objectTableName, String objectTableName,
...@@ -187,6 +189,7 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService { ...@@ -187,6 +189,7 @@ public class ApiPolicyholderServiceImpl implements ApiPolicyholderService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result<Policyholder> editPolicyholderData(ApiPolicyholderInfoDto dto, String appointmentBizId) { public Result<Policyholder> editPolicyholderData(ApiPolicyholderInfoDto dto, String appointmentBizId) {
if (Objects.isNull(dto)) { if (Objects.isNull(dto)) {
//投保人信息对象不能为空 //投保人信息对象不能为空
......
...@@ -15,6 +15,7 @@ import com.yd.common.enums.ResultCode; ...@@ -15,6 +15,7 @@ import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException; import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator; 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.ApiExpectedFortuneService;
import com.yd.csf.api.service.ApiPremiumReconciliationService; import com.yd.csf.api.service.ApiPremiumReconciliationService;
import com.yd.csf.api.service.ApiPremiumRemittanceService; import com.yd.csf.api.service.ApiPremiumRemittanceService;
...@@ -118,6 +119,9 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -118,6 +119,9 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
return applicationContext.getBean(ApiPremiumReconciliationService.class); return applicationContext.getBean(ApiPremiumReconciliationService.class);
} }
@Resource
private ApiExpectedFortuneAsyncService apiExpectedFortuneAsyncService;
/** /**
* 分页列表查询-保费对账记录信息 * 分页列表查询-保费对账记录信息
* @param request * @param request
...@@ -720,6 +724,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -720,6 +724,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiPremiumReconciliationAddRequest request) { public Result add(ApiPremiumReconciliationAddRequest request) {
//根据当前Policy保单信息里面的生效日期、付款频率、缴费宽限期,校验当天是否在缴费期内,不在缴费期内不能保费对账 TODO 校验待定 //根据当前Policy保单信息里面的生效日期、付款频率、缴费宽限期,校验当天是否在缴费期内,不在缴费期内不能保费对账 TODO 校验待定
//保费对账信息 //保费对账信息
...@@ -812,6 +817,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -812,6 +817,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiPremiumReconciliationDto request) { public Result edit(ApiPremiumReconciliationDto request) {
if (StringUtils.isBlank(request.getPremiumReconciliationBizId())) { if (StringUtils.isBlank(request.getPremiumReconciliationBizId())) {
throw new BusinessException("保费对账记录表唯一业务ID不能为空"); throw new BusinessException("保费对账记录表唯一业务ID不能为空");
...@@ -1171,6 +1177,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -1171,6 +1177,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result editResult(ApiPremiumReconciliationResultEditRequest request) { public Result editResult(ApiPremiumReconciliationResultEditRequest request) {
log.info("设置认定结果-保费对账记录信息前effectiveDate生效日期:{}",request.getEffectiveDate());
// 通过 RequestContextHolder 获取 HttpServletRequest // 通过 RequestContextHolder 获取 HttpServletRequest
HttpServletRequest httpServletRequest = ((ServletRequestAttributes) HttpServletRequest httpServletRequest = ((ServletRequestAttributes)
RequestContextHolder.currentRequestAttributes()).getRequest(); RequestContextHolder.currentRequestAttributes()).getRequest();
...@@ -1212,6 +1219,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -1212,6 +1219,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
//遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表 //遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表
// 通过代理对象调用 // 通过代理对象调用
// getSelf().execute(statusRequest,token); // getSelf().execute(statusRequest,token);
log.info("changePolicyFollowStatus前effectiveDate生效日期:{}",statusRequest.getEffectiveDate());
Result<Boolean> result1 = changePolicyFollowStatus(statusRequest,token); Result<Boolean> result1 = changePolicyFollowStatus(statusRequest,token);
if (result1.getCode() != 200) { if (result1.getCode() != 200) {
throw new BusinessException(result1.getMsg()); throw new BusinessException(result1.getMsg());
...@@ -1229,12 +1237,6 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -1229,12 +1237,6 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
return Result.success(); return Result.success();
} }
@Override
@Async("commonAsyncExecutor")
public void execute(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest,String token) {
changePolicyFollowStatus(changePolicyFollowStatusRequest,token);
}
/** /**
* 修改跟进状态 * 修改跟进状态
* *
...@@ -1245,7 +1247,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -1245,7 +1247,7 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
public Result<Boolean> changePolicyFollowStatus(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest,String token) { public Result<Boolean> changePolicyFollowStatus(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest,String token) {
// 设置ThreadLocal Token // 设置ThreadLocal Token
FeignTokenInterceptor.setThreadLocalToken(token); // FeignTokenInterceptor.setThreadLocalToken(token);
if (changePolicyFollowStatusRequest == null || StringUtils.isBlank(changePolicyFollowStatusRequest.getPolicyBizId())) { if (changePolicyFollowStatusRequest == null || StringUtils.isBlank(changePolicyFollowStatusRequest.getPolicyBizId())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "policyBizId不能为空"); return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "policyBizId不能为空");
...@@ -1289,27 +1291,27 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia ...@@ -1289,27 +1291,27 @@ public class ApiPremiumReconciliationServiceImpl implements ApiPremiumReconcilia
if (PolicyFollowStatusEnum.EFFECTIVE.equals(currentStatusEnum)) { if (PolicyFollowStatusEnum.EFFECTIVE.equals(currentStatusEnum)) {
log.info("修改跟进状态获取token:{}", token); log.info("修改跟进状态获取token:{}", token);
// 同步:根据保单生成预计出账记录 // 同步:根据保单生成预计出账记录
generateExpectedFortuneSync(token, policyFollow.getPolicyNo()); apiExpectedFortuneAsyncService.execute(policyFollow.getPolicyNo(),token);
} }
return Result.success(true); return Result.success(true);
} }
/** // /**
* 同步生成预计出账记录 // * 同步生成预计出账记录
* // *
* @param token 认证Token // * @param token 认证Token
* @param policyNo 保单号 // * @param policyNo 保单号
*/ // */
private void generateExpectedFortuneSync(String token, String policyNo) { // private void generateExpectedFortuneSync(String token, String policyNo) {
// 调用 ApiExpectedFortuneService 的 generateSyncWithLogAndRedis(同步版本,包含日志和Redis处理) // // 调用 ApiExpectedFortuneService 的 generateSyncWithLogAndRedis(同步版本,包含日志和Redis处理)
ApiGenerateExpectedFortuneRequest generateExpectedFortuneRequest = new ApiGenerateExpectedFortuneRequest(); // ApiGenerateExpectedFortuneRequest generateExpectedFortuneRequest = new ApiGenerateExpectedFortuneRequest();
generateExpectedFortuneRequest.setPolicyNo(policyNo); // generateExpectedFortuneRequest.setPolicyNo(policyNo);
log.info("生成预计发佣generateSyncWithLogAndRedis——>PolicyNo:{}", policyNo); // log.info("生成预计发佣generateSyncWithLogAndRedis——>PolicyNo:{}", policyNo);
Result<ApiGenerateExpectedFortuneResponse> result = apiExpectedFortuneService.generateSyncWithLogAndRedis(generateExpectedFortuneRequest); // Result<ApiGenerateExpectedFortuneResponse> result = apiExpectedFortuneService.generateSyncWithLogAndRedis(generateExpectedFortuneRequest);
if (result != null && result.getCode() == 200) { // if (result != null && result.getCode() == 200) {
log.info("新单跟进-同步生成预计出账记录成功:保单号={}", policyNo); // log.info("新单跟进-同步生成预计出账记录成功:保单号={}", policyNo);
} // }
} // }
/** /**
* 校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了) * 校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了)
......
...@@ -17,6 +17,7 @@ import org.apache.commons.lang3.StringUtils; ...@@ -17,6 +17,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -48,6 +49,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance ...@@ -48,6 +49,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiPremiumRemittanceFileDto request) { public Result add(ApiPremiumRemittanceFileDto request) {
if (StringUtils.isBlank(request.getPremiumRemittanceBizId())) { if (StringUtils.isBlank(request.getPremiumRemittanceBizId())) {
throw new BusinessException("保费对账-汇款记录表唯一业务ID不能为空"); throw new BusinessException("保费对账-汇款记录表唯一业务ID不能为空");
...@@ -66,6 +68,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance ...@@ -66,6 +68,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiPremiumRemittanceFileDto request) { public Result edit(ApiPremiumRemittanceFileDto request) {
if (StringUtils.isBlank(request.getPremiumRemittanceBizId())) { if (StringUtils.isBlank(request.getPremiumRemittanceBizId())) {
throw new BusinessException("保费对账-汇款记录表唯一业务ID不能为空"); throw new BusinessException("保费对账-汇款记录表唯一业务ID不能为空");
...@@ -86,6 +89,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance ...@@ -86,6 +89,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result del(String premiumRemittanceFileBizId) { public Result del(String premiumRemittanceFileBizId) {
Result<PremiumRemittanceFile> result = checkPremiumRemittanceFileIsExist(premiumRemittanceFileBizId); Result<PremiumRemittanceFile> result = checkPremiumRemittanceFileIsExist(premiumRemittanceFileBizId);
PremiumRemittanceFile file = result.getData(); PremiumRemittanceFile file = result.getData();
...@@ -100,6 +104,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance ...@@ -100,6 +104,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result addPremiumRemittanceFileList(List<ApiPremiumRemittanceFileDto> apiPremiumRemittanceFileDtoList, public Result addPremiumRemittanceFileList(List<ApiPremiumRemittanceFileDto> apiPremiumRemittanceFileDtoList,
String premiumRemittanceBizId) { String premiumRemittanceBizId) {
if (CollectionUtils.isEmpty(apiPremiumRemittanceFileDtoList)) { if (CollectionUtils.isEmpty(apiPremiumRemittanceFileDtoList)) {
...@@ -124,6 +129,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance ...@@ -124,6 +129,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result savePremiumRemittanceFileList(List<ApiPremiumRemittanceFileDto> apiPremiumRemittanceFileDtoList, public Result savePremiumRemittanceFileList(List<ApiPremiumRemittanceFileDto> apiPremiumRemittanceFileDtoList,
String premiumRemittanceBizId) { String premiumRemittanceBizId) {
//先删后新增 //先删后新增
...@@ -149,6 +155,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance ...@@ -149,6 +155,7 @@ public class ApiPremiumRemittanceFileServiceImpl implements ApiPremiumRemittance
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result delByPremiumRemittanceBizId(String premiumRemittanceBizId) { public Result delByPremiumRemittanceBizId(String premiumRemittanceBizId) {
iPremiumRemittanceFileService.delByPremiumRemittanceBizId(premiumRemittanceBizId); iPremiumRemittanceFileService.delByPremiumRemittanceBizId(premiumRemittanceBizId);
return Result.success(); return Result.success();
......
...@@ -20,6 +20,7 @@ import org.apache.commons.lang3.StringUtils; ...@@ -20,6 +20,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
...@@ -55,6 +56,7 @@ public class ApiPremiumRemittanceServiceImpl implements ApiPremiumRemittanceServ ...@@ -55,6 +56,7 @@ public class ApiPremiumRemittanceServiceImpl implements ApiPremiumRemittanceServ
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiPremiumRemittanceDto request) { public Result add(ApiPremiumRemittanceDto request) {
if (StringUtils.isBlank(request.getPremiumReconciliationBizId())) { if (StringUtils.isBlank(request.getPremiumReconciliationBizId())) {
throw new BusinessException("保费对账记录表唯一业务ID不能为空"); throw new BusinessException("保费对账记录表唯一业务ID不能为空");
...@@ -72,6 +74,7 @@ public class ApiPremiumRemittanceServiceImpl implements ApiPremiumRemittanceServ ...@@ -72,6 +74,7 @@ public class ApiPremiumRemittanceServiceImpl implements ApiPremiumRemittanceServ
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiPremiumRemittanceDto request) { public Result edit(ApiPremiumRemittanceDto request) {
if (StringUtils.isBlank(request.getPremiumRemittanceBizId())) { if (StringUtils.isBlank(request.getPremiumRemittanceBizId())) {
throw new BusinessException("保费对账-汇款记录表唯一业务ID不能为空"); throw new BusinessException("保费对账-汇款记录表唯一业务ID不能为空");
...@@ -112,6 +115,7 @@ public class ApiPremiumRemittanceServiceImpl implements ApiPremiumRemittanceServ ...@@ -112,6 +115,7 @@ public class ApiPremiumRemittanceServiceImpl implements ApiPremiumRemittanceServ
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result del(String premiumRemittanceBizId) { public Result del(String premiumRemittanceBizId) {
checkPremiumRemittanceIsExist(premiumRemittanceBizId); checkPremiumRemittanceIsExist(premiumRemittanceBizId);
//删除保费对账汇款记录附件列表 //删除保费对账汇款记录附件列表
...@@ -128,6 +132,7 @@ public class ApiPremiumRemittanceServiceImpl implements ApiPremiumRemittanceServ ...@@ -128,6 +132,7 @@ public class ApiPremiumRemittanceServiceImpl implements ApiPremiumRemittanceServ
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result addPremiumRemittanceList(List<ApiPremiumRemittanceDto> apiPremiumRemittanceDtoList, public Result addPremiumRemittanceList(List<ApiPremiumRemittanceDto> apiPremiumRemittanceDtoList,
String premiumReconciliationBizId) { String premiumReconciliationBizId) {
if (CollectionUtils.isEmpty(apiPremiumRemittanceDtoList)) { if (CollectionUtils.isEmpty(apiPremiumRemittanceDtoList)) {
......
...@@ -81,6 +81,7 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService { ...@@ -81,6 +81,7 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result<String> edit(ApiProductPlanMainInfoDto apiProductPlanMainInfoDto) { public Result<String> edit(ApiProductPlanMainInfoDto apiProductPlanMainInfoDto) {
//编辑预约入参字段校验 - 产品计划信息字段校验 - 产品计划主信息字段校验 //编辑预约入参字段校验 - 产品计划信息字段校验 - 产品计划主信息字段校验
...@@ -102,6 +103,7 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService { ...@@ -102,6 +103,7 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result editPlan(ApiProductPlanInfoDto apiProductPlanInfoDto) { public Result editPlan(ApiProductPlanInfoDto apiProductPlanInfoDto) {
//编辑产品计划主体信息 //编辑产品计划主体信息
Result<String> result = edit(apiProductPlanInfoDto.getApiProductPlanMainInfoDto()); Result<String> result = edit(apiProductPlanInfoDto.getApiProductPlanMainInfoDto());
...@@ -146,6 +148,7 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService { ...@@ -146,6 +148,7 @@ public class ApiProductPlanServiceImpl implements ApiProductPlanService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result<ProductPlan> editProductPlanData(ApiProductPlanInfoDto productPlanInfoDto, String appointmentBizId) { public Result<ProductPlan> editProductPlanData(ApiProductPlanInfoDto productPlanInfoDto, String appointmentBizId) {
if (Objects.isNull(productPlanInfoDto) if (Objects.isNull(productPlanInfoDto)
|| ( !Objects.isNull(productPlanInfoDto) && Objects.isNull(productPlanInfoDto.getApiProductPlanMainInfoDto()))){ || ( !Objects.isNull(productPlanInfoDto) && Objects.isNull(productPlanInfoDto.getApiProductPlanMainInfoDto()))){
......
...@@ -12,6 +12,7 @@ import com.yd.csf.service.service.IRelObjectConditionService; ...@@ -12,6 +12,7 @@ import com.yd.csf.service.service.IRelObjectConditionService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -32,6 +33,7 @@ public class ApiRelObjectConditionServiceImpl implements ApiRelObjectConditionSe ...@@ -32,6 +33,7 @@ public class ApiRelObjectConditionServiceImpl implements ApiRelObjectConditionSe
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result saveRelList(ApiRelObjectConditionDto dto) { public Result saveRelList(ApiRelObjectConditionDto dto) {
//先删后新增 //先删后新增
iRelObjectConditionService.del(dto); iRelObjectConditionService.del(dto);
......
...@@ -13,6 +13,7 @@ import com.yd.csf.service.service.IRelObjectFormulaService; ...@@ -13,6 +13,7 @@ import com.yd.csf.service.service.IRelObjectFormulaService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -60,6 +61,7 @@ public class ApiRelObjectFormulaServiceImpl implements ApiRelObjectFormulaServic ...@@ -60,6 +61,7 @@ public class ApiRelObjectFormulaServiceImpl implements ApiRelObjectFormulaServic
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result saveRelList(ApiRelObjectFormulaDto dto) { public Result saveRelList(ApiRelObjectFormulaDto dto) {
//先删后新增 //先删后新增
RelObjectFormulaDto relObjectFormulaDto = new RelObjectFormulaDto(); RelObjectFormulaDto relObjectFormulaDto = new RelObjectFormulaDto();
...@@ -86,6 +88,7 @@ public class ApiRelObjectFormulaServiceImpl implements ApiRelObjectFormulaServic ...@@ -86,6 +88,7 @@ public class ApiRelObjectFormulaServiceImpl implements ApiRelObjectFormulaServic
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result saveObjectList(List<ApiRelObjectFormulaDto> objectList, String formulaBizId) { public Result saveObjectList(List<ApiRelObjectFormulaDto> objectList, String formulaBizId) {
//先删后新增 //先删后新增
iRelObjectFormulaService.delObjectList(formulaBizId); iRelObjectFormulaService.delObjectList(formulaBizId);
......
...@@ -13,6 +13,7 @@ import com.yd.csf.service.service.IRelObjectSqlService; ...@@ -13,6 +13,7 @@ import com.yd.csf.service.service.IRelObjectSqlService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -28,6 +29,7 @@ public class ApiRelObjectSqlServiceImpl implements ApiRelObjectSqlService { ...@@ -28,6 +29,7 @@ public class ApiRelObjectSqlServiceImpl implements ApiRelObjectSqlService {
private ICommissionSqlTemplateService iCommissionSqlTemplateService; private ICommissionSqlTemplateService iCommissionSqlTemplateService;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result saveRelList(ApiRelObjectSqlDto dto) { public Result saveRelList(ApiRelObjectSqlDto dto) {
//先删后新增 //先删后新增
RelObjectSqlDto relObjectSqlDto = new RelObjectSqlDto(); RelObjectSqlDto relObjectSqlDto = new RelObjectSqlDto();
......
...@@ -24,6 +24,7 @@ import com.yd.csf.service.service.IRuleItemConfigService; ...@@ -24,6 +24,7 @@ import com.yd.csf.service.service.IRuleItemConfigService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -79,6 +80,7 @@ public class ApiRuleItemConfigServiceImpl implements ApiRuleItemConfigService { ...@@ -79,6 +80,7 @@ public class ApiRuleItemConfigServiceImpl implements ApiRuleItemConfigService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiRuleItemConfigAddRequest request) { public Result add(ApiRuleItemConfigAddRequest request) {
//校验基本法项目名称的唯一性 //校验基本法项目名称的唯一性
List<RuleItemConfig> list = iRuleItemConfigService.queryList(RuleItemConfigDto.builder() List<RuleItemConfig> list = iRuleItemConfigService.queryList(RuleItemConfigDto.builder()
...@@ -115,6 +117,7 @@ public class ApiRuleItemConfigServiceImpl implements ApiRuleItemConfigService { ...@@ -115,6 +117,7 @@ public class ApiRuleItemConfigServiceImpl implements ApiRuleItemConfigService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiRuleItemConfigEditRequest request) { public Result edit(ApiRuleItemConfigEditRequest request) {
Result<RuleItemConfig> result = checkRuleItemConfigIsExist(request.getRuleItemBizId()); Result<RuleItemConfig> result = checkRuleItemConfigIsExist(request.getRuleItemBizId());
RuleItemConfig ruleItemConfig = result.getData(); RuleItemConfig ruleItemConfig = result.getData();
...@@ -150,6 +153,7 @@ public class ApiRuleItemConfigServiceImpl implements ApiRuleItemConfigService { ...@@ -150,6 +153,7 @@ public class ApiRuleItemConfigServiceImpl implements ApiRuleItemConfigService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result del(String ruleItemBizId) { public Result del(String ruleItemBizId) {
return null; return null;
} }
......
...@@ -55,6 +55,7 @@ public class ApiSecondHolderServiceImpl implements ApiSecondHolderService { ...@@ -55,6 +55,7 @@ public class ApiSecondHolderServiceImpl implements ApiSecondHolderService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiSecondHolderInfoDto apiSecondHolderInfoDto) { public Result edit(ApiSecondHolderInfoDto apiSecondHolderInfoDto) {
//编辑预约入参字段校验 - 第二持有人信息字段校验 //编辑预约入参字段校验 - 第二持有人信息字段校验
apiAppointmentCheckService.checkEditApiSecondHolderInfoDto(apiSecondHolderInfoDto); apiAppointmentCheckService.checkEditApiSecondHolderInfoDto(apiSecondHolderInfoDto);
...@@ -97,6 +98,7 @@ public class ApiSecondHolderServiceImpl implements ApiSecondHolderService { ...@@ -97,6 +98,7 @@ public class ApiSecondHolderServiceImpl implements ApiSecondHolderService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result<SecondHolder> editSecondHolderData(ApiSecondHolderInfoDto dto, String appointmentBizId) { public Result<SecondHolder> editSecondHolderData(ApiSecondHolderInfoDto dto, String appointmentBizId) {
if (Objects.isNull(dto)){ if (Objects.isNull(dto)){
//为空 //为空
......
...@@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -32,6 +33,7 @@ public class ApiTaxationServiceImpl implements ApiTaxationService { ...@@ -32,6 +33,7 @@ public class ApiTaxationServiceImpl implements ApiTaxationService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result saveTaxationList(ApiObjectTaxationDto dto) { public Result saveTaxationList(ApiObjectTaxationDto dto) {
//先删后新增 //先删后新增
iTaxationService.delByObjectBizId(dto.getObjectBizId()); iTaxationService.delByObjectBizId(dto.getObjectBizId());
......
...@@ -30,6 +30,7 @@ import org.apache.commons.lang3.StringUtils; ...@@ -30,6 +30,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -93,6 +94,7 @@ public class ApiVariableServiceImpl implements ApiVariableService { ...@@ -93,6 +94,7 @@ public class ApiVariableServiceImpl implements ApiVariableService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result add(ApiVariableAddRequest request) { public Result add(ApiVariableAddRequest request) {
//校验变量中文名唯一性 //校验变量中文名唯一性
List<Variable> variableList = iVariableService.queryList(VariableDto.builder() List<Variable> variableList = iVariableService.queryList(VariableDto.builder()
...@@ -150,6 +152,7 @@ public class ApiVariableServiceImpl implements ApiVariableService { ...@@ -150,6 +152,7 @@ public class ApiVariableServiceImpl implements ApiVariableService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result edit(ApiVariableEditRequest request) { public Result edit(ApiVariableEditRequest request) {
//校验变量信息是否存在 //校验变量信息是否存在
Result<Variable> result = checkVariableIsExist(request.getVariableBizId()); Result<Variable> result = checkVariableIsExist(request.getVariableBizId());
...@@ -209,6 +212,7 @@ public class ApiVariableServiceImpl implements ApiVariableService { ...@@ -209,6 +212,7 @@ public class ApiVariableServiceImpl implements ApiVariableService {
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Result del(String variableBizId) { public Result del(String variableBizId) {
return null; return null;
} }
......
...@@ -68,19 +68,19 @@ public class ApiAppointmentInfoDto { ...@@ -68,19 +68,19 @@ public class ApiAppointmentInfoDto {
* 签单日 * 签单日
*/ */
@NotNull(message = "签约信息-签单日不能为空") @NotNull(message = "签约信息-签单日不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime signDate; private LocalDateTime signDate;
/** /**
* 到港时间 * 到港时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime arrivalTime; private LocalDateTime arrivalTime;
/** /**
* 离港时间 * 离港时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime departureTime; private LocalDateTime departureTime;
/** /**
...@@ -126,13 +126,13 @@ public class ApiAppointmentInfoDto { ...@@ -126,13 +126,13 @@ public class ApiAppointmentInfoDto {
/** /**
* 开户时间段(开始) * 开户时间段(开始)
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime openAccountStartTime; private LocalDateTime openAccountStartTime;
/** /**
* 开户时间段(结束) * 开户时间段(结束)
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime openAccountEndTime; private LocalDateTime openAccountEndTime;
/** /**
......
...@@ -59,7 +59,7 @@ public class ApiBeneficiaryInfoDto { ...@@ -59,7 +59,7 @@ public class ApiBeneficiaryInfoDto {
/** /**
* 出生日期(生日,如果是身份证,自动获取性别和生日) * 出生日期(生日,如果是身份证,自动获取性别和生日)
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime birthday; private LocalDateTime birthday;
/** /**
......
...@@ -49,8 +49,8 @@ public class ApiInsurantInfoDto { ...@@ -49,8 +49,8 @@ public class ApiInsurantInfoDto {
/** /**
* 姓名-中文 * 姓名-中文
*/ */
@NotBlank(message = "受保人-姓名(中文)不能为空", groups = GroupValid.NotSelf.class) // @NotBlank(message = "受保人-姓名(中文)不能为空", groups = GroupValid.NotSelf.class)
@Pattern(regexp = "^[\u4e00-\u9fa5]{2,6}$", message = "受保人-姓名(中文)必须为2-6位汉字", groups = GroupValid.NotSelf.class) @Pattern(regexp = "^(|[\u4e00-\u9fa5]{2,6})$", message = "受保人-姓名(中文)必须为2-6位汉字", groups = GroupValid.NotSelf.class)
private String nameCn; private String nameCn;
/** /**
...@@ -79,19 +79,19 @@ public class ApiInsurantInfoDto { ...@@ -79,19 +79,19 @@ public class ApiInsurantInfoDto {
* 出生日期(生日,如果是身份证,自动获取性别和生日) * 出生日期(生日,如果是身份证,自动获取性别和生日)
*/ */
@NotNull(message = "受保人-生日不能为空", groups = GroupValid.NotSelf.class) @NotNull(message = "受保人-生日不能为空", groups = GroupValid.NotSelf.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime birthday; private LocalDateTime birthday;
@AssertTrue(message = "受保人-必须大于18周岁", groups = GroupValid.NotSelf.class) // @AssertTrue(message = "受保人-必须大于18周岁", groups = GroupValid.NotSelf.class)
public boolean isBirthdayValid() { // public boolean isBirthdayValid() {
if (birthday == null) { // if (birthday == null) {
// @NotNull 会处理空值 // // @NotNull 会处理空值
return true; // return true;
} // }
LocalDateTime now = LocalDateTime.now(); // LocalDateTime now = LocalDateTime.now();
// 计算年龄 // // 计算年龄
int age = Period.between(birthday.toLocalDate(), now.toLocalDate()).getYears(); // int age = Period.between(birthday.toLocalDate(), now.toLocalDate()).getYears();
return age > 18; // return age > 18;
} // }
/** /**
* 年龄(通过生日自动获取年龄) * 年龄(通过生日自动获取年龄)
......
...@@ -42,8 +42,8 @@ public class ApiPolicyholderInfoDto { ...@@ -42,8 +42,8 @@ public class ApiPolicyholderInfoDto {
/** /**
* 姓名-中文 * 姓名-中文
*/ */
@NotBlank(message = "投保人-姓名(中文)不能为空") // @NotBlank(message = "投保人-姓名(中文)不能为空")
@Pattern(regexp = "^[\u4e00-\u9fa5]{2,6}$", message = "投保人-姓名(中文)必须为2-6位汉字") @Pattern(regexp = "^(|[\u4e00-\u9fa5]{2,6})$",message = "投保人-姓名(中文)必须为2-6位汉字")
private String nameCn; private String nameCn;
/** /**
...@@ -72,7 +72,7 @@ public class ApiPolicyholderInfoDto { ...@@ -72,7 +72,7 @@ public class ApiPolicyholderInfoDto {
* 出生日期(生日,如果是身份证,自动获取性别和生日) * 出生日期(生日,如果是身份证,自动获取性别和生日)
*/ */
@NotNull(message = "投保人-生日不能为空") @NotNull(message = "投保人-生日不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime birthday; private LocalDateTime birthday;
@AssertTrue(message = "投保人-必须大于18周岁") @AssertTrue(message = "投保人-必须大于18周岁")
public boolean isBirthdayValid() { public boolean isBirthdayValid() {
......
...@@ -127,7 +127,7 @@ public class ApiProductPlanMainInfoDto { ...@@ -127,7 +127,7 @@ public class ApiProductPlanMainInfoDto {
/** /**
* 回溯日期 * 回溯日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime backtrackDate; private LocalDateTime backtrackDate;
/** /**
......
...@@ -48,6 +48,6 @@ public class ApiSecondHolderInfoDto { ...@@ -48,6 +48,6 @@ public class ApiSecondHolderInfoDto {
/** /**
* 出生日期(生日,如果是身份证,自动获取性别和生日) * 出生日期(生日,如果是身份证,自动获取性别和生日)
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime birthday; private LocalDateTime birthday;
} }
...@@ -19,6 +19,6 @@ public class ApiAppointmentEditConfirmTimeRequest { ...@@ -19,6 +19,6 @@ public class ApiAppointmentEditConfirmTimeRequest {
* 确定预约时间 * 确定预约时间
*/ */
@NotNull(message = "确定预约时间不能为空") @NotNull(message = "确定预约时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime confirmAppointmentTime; private LocalDateTime confirmAppointmentTime;
} }
...@@ -39,12 +39,12 @@ public class ApiAppointmentPageRequest extends PageDto { ...@@ -39,12 +39,12 @@ public class ApiAppointmentPageRequest extends PageDto {
/** /**
* 确定预约开始时间 * 确定预约开始时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime startTime; private LocalDateTime startTime;
/** /**
* 确定预约结束时间 * 确定预约结束时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime endTime; private LocalDateTime endTime;
} }
...@@ -24,13 +24,13 @@ public class ApiCommissionRuleConfigAddRequest { ...@@ -24,13 +24,13 @@ public class ApiCommissionRuleConfigAddRequest {
/** /**
* 生效开始日期 * 生效开始日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime effectiveStart; private LocalDateTime effectiveStart;
/** /**
* 生效结束日期 * 生效结束日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime effectiveEnd; private LocalDateTime effectiveEnd;
/** /**
......
...@@ -29,13 +29,13 @@ public class ApiCommissionRuleConfigEditRequest { ...@@ -29,13 +29,13 @@ public class ApiCommissionRuleConfigEditRequest {
/** /**
* 生效开始日期 * 生效开始日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime effectiveStart; private LocalDateTime effectiveStart;
/** /**
* 生效结束日期 * 生效结束日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime effectiveEnd; private LocalDateTime effectiveEnd;
/** /**
......
...@@ -21,7 +21,7 @@ public class ApiPolicyReceiptAddRequest { ...@@ -21,7 +21,7 @@ public class ApiPolicyReceiptAddRequest {
* 回执日期 * 回执日期
*/ */
@NotNull(message = "回执日期不能为空") @NotNull(message = "回执日期不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime receiptDate; private LocalDateTime receiptDate;
/** /**
......
...@@ -27,7 +27,7 @@ public class ApiPolicyReceiptEditRequest { ...@@ -27,7 +27,7 @@ public class ApiPolicyReceiptEditRequest {
* 回执日期 * 回执日期
*/ */
@NotNull(message = "回执日期不能为空") @NotNull(message = "回执日期不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime receiptDate; private LocalDateTime receiptDate;
/** /**
......
...@@ -46,13 +46,13 @@ public class ApiPremiumReconciliationResultEditRequest { ...@@ -46,13 +46,13 @@ public class ApiPremiumReconciliationResultEditRequest {
/** /**
* 生效日期(保单生效日) * 生效日期(保单生效日)
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date effectiveDate; private Date effectiveDate;
/** /**
* 保单核保日 * 保单核保日
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date underwritingDate; private Date underwritingDate;
/** /**
...@@ -63,13 +63,13 @@ public class ApiPremiumReconciliationResultEditRequest { ...@@ -63,13 +63,13 @@ public class ApiPremiumReconciliationResultEditRequest {
/** /**
* 冷静期结束日期 * 冷静期结束日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date coolingOffEndDate; private Date coolingOffEndDate;
/** /**
* 保单截止日期 * 保单截止日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date policyExpirationDate; private Date policyExpirationDate;
} }
...@@ -18,6 +18,7 @@ import org.apache.commons.collections4.CollectionUtils; ...@@ -18,6 +18,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -40,7 +41,7 @@ public class CommissionAsyncService { ...@@ -40,7 +41,7 @@ public class CommissionAsyncService {
private CommissionCompareRecordService commissionCompareRecordService; private CommissionCompareRecordService commissionCompareRecordService;
// @Async("commonAsyncExecutor") // @Async("commonAsyncExecutor")
@Transactional(rollbackFor = Exception.class) @Transactional(propagation = Propagation.REQUIRES_NEW)
public void commissionCompareBatch(List<Commission> entities) { public void commissionCompareBatch(List<Commission> entities) {
// 根据是否关联保单号,来区分比对方式 // 根据是否关联保单号,来区分比对方式
List<Commission> hasPolicyNoList = new ArrayList<>(); List<Commission> hasPolicyNoList = new ArrayList<>();
......
...@@ -4,6 +4,8 @@ import org.springframework.context.annotation.Bean; ...@@ -4,6 +4,8 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 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.Executor;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
...@@ -37,20 +39,53 @@ public class AsyncConfig { ...@@ -37,20 +39,53 @@ public class AsyncConfig {
return executor; 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") @Bean(name = "commonAsyncExecutor")
public Executor commonAsyncExecutor() { public ThreadPoolTaskExecutor commonAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5); // 设置核心线程数、最大线程数、队列容量等参数...
executor.setMaxPoolSize(10); executor.setCorePoolSize(10);
executor.setQueueCapacity(50); executor.setMaxPoolSize(20);
executor.setQueueCapacity(100);
executor.setThreadNamePrefix("common-async-"); executor.setThreadNamePrefix("common-async-");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.setWaitForTasksToCompleteOnShutdown(true); // 设置 TaskDecorator,用于传递 RequestAttributes
executor.setAwaitTerminationSeconds(30); executor.setTaskDecorator(runnable -> {
executor.setKeepAliveSeconds(30); // 获取当前线程的 RequestAttributes
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
return () -> {
try {
// 将 RequestAttributes 设置到子线程中
RequestContextHolder.setRequestAttributes(attributes);
runnable.run();
} finally {
// 任务完成后清空,避免内存泄漏
RequestContextHolder.resetRequestAttributes();
}
};
});
executor.initialize(); executor.initialize();
return executor; return executor;
} }
......
package com.yd.csf.service.config; package com.yd.csf.service.config;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Slf4j
@Configuration @Configuration
public class CsfMybatisPlusConfig { public class CsfMybatisPlusConfig {
...@@ -25,21 +31,45 @@ public class CsfMybatisPlusConfig { ...@@ -25,21 +31,45 @@ public class CsfMybatisPlusConfig {
} }
/** /**
* 自动填充字段配置(如创建时间、更新时间 * 自动填充字段配置(如创建人、更新人等
*/ */
@Bean @Bean
@Primary
public MetaObjectHandler metaObjectHandler() { public MetaObjectHandler metaObjectHandler() {
log.info("MetaObjectHandler Bean 正在创建...","MetaObjectHandler Bean 正在创建==========");
return new MetaObjectHandler() { return new MetaObjectHandler() {
@Override @Override
public void insertFill(MetaObject metaObject) { public void insertFill(MetaObject metaObject) {
//获取Security上下文当前用户的登录信息
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); 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) {
//自动注入创建人和创建用户名
this.strictInsertFill(metaObject, "creatorId", String.class, authUserDto.getUserBizId());
this.strictInsertFill(metaObject, "creatorName", String.class, authUserDto.getUsername());
}
} }
@Override @Override
public void updateFill(MetaObject metaObject) { public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); //获取Security上下文当前用户的登录信息
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) {
//自动注入更新人和更新用户名
this.strictUpdateFill(metaObject, "updaterId", String.class, authUserDto.getUserBizId());
this.strictUpdateFill(metaObject, "updaterName", String.class, authUserDto.getUsername());
}
} }
}; };
} }
......
package com.yd.csf.service.dto; package com.yd.csf.service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.common.dto.PageDto; import com.yd.common.dto.PageDto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -32,15 +32,13 @@ public class CommissionExpectedQueryRequest extends PageDto { ...@@ -32,15 +32,13 @@ public class CommissionExpectedQueryRequest extends PageDto {
* 预计入账日期开始 格式:yyyy-MM-dd * 预计入账日期开始 格式:yyyy-MM-dd
*/ */
@Schema(description = "预计入账日期开始 格式:yyyy-MM-dd") @Schema(description = "预计入账日期开始 格式:yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private LocalDate commissionDateStart;
private Date commissionDateStart;
/** /**
* 预计入账日期结束 格式:yyyy-MM-dd * 预计入账日期结束 格式:yyyy-MM-dd
*/ */
@Schema(description = "预计入账日期结束 格式:yyyy-MM-dd") @Schema(description = "预计入账日期结束 格式:yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private LocalDate commissionDateEnd;
private Date commissionDateEnd;
/** /**
* 入账期数 * 入账期数
......
...@@ -5,6 +5,7 @@ import com.yd.csf.service.vo.AddressVO; ...@@ -5,6 +5,7 @@ import com.yd.csf.service.vo.AddressVO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Pattern;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
...@@ -22,9 +23,15 @@ public class CustomerAddRequest implements Serializable { ...@@ -22,9 +23,15 @@ public class CustomerAddRequest implements Serializable {
private String fnaBizId; private String fnaBizId;
/** /**
* 客户ID
*/
private String customerBizId;
/**
* 姓名-中文 * 姓名-中文
*/ */
@Schema(description = "姓名-中文") @Schema(description = "姓名-中文")
@Pattern(regexp = "^(|[\u4e00-\u9fa5]{2,6})$",message = "投保人-姓名(中文)必须为2-6位汉字")
private String nameCn; private String nameCn;
/** /**
......
...@@ -5,6 +5,7 @@ import com.yd.csf.service.vo.AddressVO; ...@@ -5,6 +5,7 @@ import com.yd.csf.service.vo.AddressVO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Pattern;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
...@@ -32,6 +33,7 @@ public class CustomerUpdateRequest implements Serializable { ...@@ -32,6 +33,7 @@ public class CustomerUpdateRequest implements Serializable {
* 姓名-中文 * 姓名-中文
*/ */
@Schema(description = "姓名-中文") @Schema(description = "姓名-中文")
@Pattern(regexp = "^(|[\u4e00-\u9fa5]{2,6})$",message = "投保人-姓名(中文)必须为2-6位汉字")
private String nameCn; private String nameCn;
/** /**
......
...@@ -17,9 +17,13 @@ public class FortuneAccountExportDTO implements Serializable { ...@@ -17,9 +17,13 @@ public class FortuneAccountExportDTO implements Serializable {
@ExcelProperty("转介人") @ExcelProperty("转介人")
private String broker; private String broker;
private String brokerBizId;
@ExcelProperty("所属团队") @ExcelProperty("所属团队")
private String team; private String team;
private String teamBizId;
@ExcelProperty("出账币种") @ExcelProperty("出账币种")
private String currency; private String currency;
......
...@@ -150,7 +150,7 @@ public class PolicyFollowDto implements Serializable { ...@@ -150,7 +150,7 @@ public class PolicyFollowDto implements Serializable {
private String insuranceCompanyBizId; private String insuranceCompanyBizId;
@Schema(description = "对账公司") @Schema(description = "对账公司")
private String reconciliationCompanyName; private String reconciliationCompany;
@Schema(description = "对账公司编码") @Schema(description = "对账公司编码")
private String reconciliationCode; private String reconciliationCode;
...@@ -239,4 +239,7 @@ public class PolicyFollowDto implements Serializable { ...@@ -239,4 +239,7 @@ public class PolicyFollowDto implements Serializable {
@Schema(description = "保单类型: 1-电子, 2-纸质") @Schema(description = "保单类型: 1-电子, 2-纸质")
private String policyType; private String policyType;
@Schema(description = "专业投资者: Yes/No")
private String professionalInvestor;
} }
...@@ -53,8 +53,7 @@ public class PolicyFollowQueryRequest extends PageDto implements Serializable { ...@@ -53,8 +53,7 @@ public class PolicyFollowQueryRequest extends PageDto implements Serializable {
* 最晚缴费日期 * 最晚缴费日期
*/ */
@Schema(description = "最晚缴费日期 格式: yyyy-MM-dd", example = "2023-01-01", format = "yyyy-MM-dd") @Schema(description = "最晚缴费日期 格式: yyyy-MM-dd", example = "2023-01-01", format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private String latestPaymentDate;
private Date latestPaymentDate;
/** /**
* 投保人业务id列表 * 投保人业务id列表
...@@ -84,7 +83,7 @@ public class PolicyFollowQueryRequest extends PageDto implements Serializable { ...@@ -84,7 +83,7 @@ public class PolicyFollowQueryRequest extends PageDto implements Serializable {
* 缴费年期 * 缴费年期
*/ */
@Schema(description = "缴费年期") @Schema(description = "缴费年期")
private String issueNumber; private Integer issueNumber;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }
\ No newline at end of file
...@@ -35,6 +35,11 @@ public class QueryPolicyAndBrokerDto { ...@@ -35,6 +35,11 @@ public class QueryPolicyAndBrokerDto {
private String productCode; private String productCode;
/** /**
* 保险公司业务id
*/
private String insuranceCompanyBizId;
/**
* 供款年期(字典) * 供款年期(字典)
*/ */
private Integer paymentTerm; private Integer paymentTerm;
......
...@@ -30,4 +30,13 @@ public enum CommissionStatusEnum { ...@@ -30,4 +30,13 @@ public enum CommissionStatusEnum {
public String getItemValue() { public String getItemValue() {
return itemValue; return itemValue;
} }
public static String toLabel(String itemValue) {
for (CommissionStatusEnum anEnum : CommissionStatusEnum.values()) {
if (anEnum.itemValue.equals(itemValue)) {
return anEnum.getItemLabel();
}
}
return "";
}
} }
...@@ -17,8 +17,8 @@ import org.apache.commons.lang3.ObjectUtils; ...@@ -17,8 +17,8 @@ import org.apache.commons.lang3.ObjectUtils;
public enum CurrencyEnum { public enum CurrencyEnum {
// 货币枚举 // 货币枚举
USD("美元", "USD"), USD("美元", "USD"),
CNY("人民", "CNY"), CNY("人民", "CNY"),
HKD("港", "HKD"), HKD("港", "HKD"),
AUD("澳元", "AUD"), AUD("澳元", "AUD"),
JPY("日元", "JPY"), JPY("日元", "JPY"),
CAD("加元", "CAD"), CAD("加元", "CAD"),
...@@ -65,4 +65,13 @@ public enum CurrencyEnum { ...@@ -65,4 +65,13 @@ public enum CurrencyEnum {
public String getItemValue() { public String getItemValue() {
return itemValue; return itemValue;
} }
public static String toLabel(String itemValue) {
for (CurrencyEnum anEnum : CurrencyEnum.values()) {
if (anEnum.itemValue.equalsIgnoreCase(itemValue)) {
return anEnum.getItemLabel();
}
}
return "";
}
} }
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("-", -1);
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 "GUARANTEE_PERIOD":
return "保障年期";
default:
return typeCode;
}
}
}
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -134,13 +131,13 @@ public class Additional implements Serializable { ...@@ -134,13 +131,13 @@ public class Additional implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
...@@ -88,13 +86,13 @@ public class AgentAccumulatedFyc implements Serializable { ...@@ -88,13 +86,13 @@ public class AgentAccumulatedFyc implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
...@@ -118,13 +116,13 @@ public class AgentDetailFyc implements Serializable { ...@@ -118,13 +116,13 @@ public class AgentDetailFyc implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 管理关系表((团队的形成来自这张表,谁在最高级就是团长)) * 管理关系表((团队的形成来自这张表,谁在最高级就是团长))
...@@ -87,13 +85,13 @@ public class AgentManageRelation implements Serializable { ...@@ -87,13 +85,13 @@ public class AgentManageRelation implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 推荐关系表 * 推荐关系表
...@@ -99,13 +97,13 @@ public class AgentReferralRelation implements Serializable { ...@@ -99,13 +97,13 @@ public class AgentReferralRelation implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 辅导关系表 * 辅导关系表
...@@ -93,13 +91,13 @@ public class AgentTutoringRelation implements Serializable { ...@@ -93,13 +91,13 @@ public class AgentTutoringRelation implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -342,19 +339,19 @@ public class Appointment implements Serializable { ...@@ -342,19 +339,19 @@ public class Appointment implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 创建人用户名 * 创建人用户名
*/ */
@TableField("creator_name") @TableField(value = "creator_name", fill = FieldFill.INSERT)
private String creatorName; private String creatorName;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 预约附件信息表 * 预约附件信息表
...@@ -72,19 +70,19 @@ public class AppointmentFile implements Serializable { ...@@ -72,19 +70,19 @@ public class AppointmentFile implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 创建人名称 * 创建人名称
*/ */
@TableField("creator_name") @TableField(value = "creator_name", fill = FieldFill.INSERT)
private String creatorName; private String creatorName;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 预约信息日志表(快照表) * 预约信息日志表(快照表)
...@@ -306,19 +304,19 @@ public class AppointmentLog implements Serializable { ...@@ -306,19 +304,19 @@ public class AppointmentLog implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 创建人用户名 * 创建人用户名
*/ */
@TableField("creator_name") @TableField(value = "creator_name", fill = FieldFill.INSERT)
private String creatorName; private String creatorName;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 预约-转介人信息表 * 预约-转介人信息表
...@@ -84,13 +82,13 @@ public class AppointmentReferrer implements Serializable { ...@@ -84,13 +82,13 @@ public class AppointmentReferrer implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 预约-转介人信息日志表(快照表) * 预约-转介人信息日志表(快照表)
...@@ -84,13 +82,13 @@ public class AppointmentReferrerLog implements Serializable { ...@@ -84,13 +82,13 @@ public class AppointmentReferrerLog implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 预约-签单员信息表 * 预约-签单员信息表
...@@ -114,13 +112,13 @@ public class AppointmentUserSign implements Serializable { ...@@ -114,13 +112,13 @@ public class AppointmentUserSign implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 预约-签单员信息日志表(快照表) * 预约-签单员信息日志表(快照表)
...@@ -114,13 +112,13 @@ public class AppointmentUserSignLog implements Serializable { ...@@ -114,13 +112,13 @@ public class AppointmentUserSignLog implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
...@@ -88,13 +86,13 @@ public class BatchPolicy implements Serializable { ...@@ -88,13 +86,13 @@ public class BatchPolicy implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -110,13 +107,13 @@ public class Beneficiary implements Serializable { ...@@ -110,13 +107,13 @@ public class Beneficiary implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 车辆预约申请表 * 车辆预约申请表
...@@ -141,13 +139,13 @@ public class CarApply implements Serializable { ...@@ -141,13 +139,13 @@ public class CarApply implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 客户端角色表 * 客户端角色表
...@@ -87,13 +85,13 @@ public class ClientRole implements Serializable { ...@@ -87,13 +85,13 @@ public class ClientRole implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 保单来佣表 * 保单来佣表
* *
......
...@@ -4,15 +4,15 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,15 +4,15 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; 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.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/** /**
* 来佣比对记录表 * 来佣比对记录表
* @TableName commission_compare_record * @TableName commission_compare_record
......
...@@ -4,13 +4,13 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,13 +4,13 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/** /**
* 来佣修改记录表 * 来佣修改记录表
* @TableName commission_edit_record * @TableName commission_edit_record
......
...@@ -4,13 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,13 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 预计来佣表 * 预计来佣表
* *
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
...@@ -94,13 +92,13 @@ public class CommissionResult implements Serializable { ...@@ -94,13 +92,13 @@ public class CommissionResult implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 基本法绑定表 - 存储基本法与业务员或团队的绑定关系,支持灵活的权限分配 * 基本法绑定表 - 存储基本法与业务员或团队的绑定关系,支持灵活的权限分配
...@@ -105,13 +103,13 @@ public class CommissionRuleBinding implements Serializable { ...@@ -105,13 +103,13 @@ public class CommissionRuleBinding implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 基本法配置表 * 基本法配置表
...@@ -105,13 +103,13 @@ public class CommissionRuleConfig implements Serializable { ...@@ -105,13 +103,13 @@ public class CommissionRuleConfig implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* SQL模板表 - 存储所有佣金计算相关的动态SQL模板,支持灵活配置和参数化查询,实现业务逻辑与代码解耦 * SQL模板表 - 存储所有佣金计算相关的动态SQL模板,支持灵活配置和参数化查询,实现业务逻辑与代码解耦
...@@ -111,13 +109,13 @@ public class CommissionSqlTemplate implements Serializable { ...@@ -111,13 +109,13 @@ public class CommissionSqlTemplate implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
...@@ -136,13 +134,13 @@ public class ConditionConfig implements Serializable { ...@@ -136,13 +134,13 @@ public class ConditionConfig implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 条件类型表 * 条件类型表
...@@ -81,13 +79,13 @@ public class ConditionType implements Serializable { ...@@ -81,13 +79,13 @@ public class ConditionType implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
...@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 客户信息表 * 客户信息表
......
...@@ -4,13 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,13 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* CSF客户信息扩展表 * CSF客户信息扩展表
* *
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
* 预计发佣表 * 预计发佣表
...@@ -265,13 +261,13 @@ public class ExpectedFortune implements Serializable { ...@@ -265,13 +261,13 @@ public class ExpectedFortune implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 生成预计发佣日志记录表 * 生成预计发佣日志记录表
...@@ -63,13 +61,13 @@ public class ExpectedFortuneLog implements Serializable { ...@@ -63,13 +61,13 @@ public class ExpectedFortuneLog implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.TableField; ...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* fna表 * fna表
......
...@@ -4,13 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,13 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 客户信息表 * 客户信息表
* *
......
...@@ -4,13 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,13 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; 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表单表 * fna表单表
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 公式配置表 * 公式配置表
...@@ -111,13 +109,13 @@ public class FormulaConfig implements Serializable { ...@@ -111,13 +109,13 @@ public class FormulaConfig implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 保单出账表 * 保单出账表
* *
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import lombok.Data;
/** /**
* 出账记录表 * 出账记录表
* *
...@@ -34,11 +33,21 @@ public class FortuneAccount implements Serializable { ...@@ -34,11 +33,21 @@ public class FortuneAccount implements Serializable {
private String broker; private String broker;
/** /**
* 转介人业务id
*/
private String brokerBizId;
/**
* 所属团队 * 所属团队
*/ */
private String team; private String team;
/** /**
* 所属团队业务id
*/
private String teamBizId;
/**
* 出账币种 * 出账币种
*/ */
private String currency; private String currency;
......
...@@ -4,12 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,12 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/** /**
* 薪资修订记录表 * 薪资修订记录表
* @TableName fortune_account_edit_record * @TableName fortune_account_edit_record
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 业务员积分任务表 - 定时跑批业务员绑定的基本法计算点,算出当前业务员所得的积分(一级管理奖、二级管理奖、辅导津贴奖、终身推荐奖等月末计算,季度结算等) * 业务员积分任务表 - 定时跑批业务员绑定的基本法计算点,算出当前业务员所得的积分(一级管理奖、二级管理奖、辅导津贴奖、终身推荐奖等月末计算,季度结算等)
...@@ -87,13 +85,13 @@ public class FycTask implements Serializable { ...@@ -87,13 +85,13 @@ public class FycTask implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -386,13 +383,13 @@ public class Insurant implements Serializable { ...@@ -386,13 +383,13 @@ public class Insurant implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
...@@ -88,13 +86,13 @@ public class Interests implements Serializable { ...@@ -88,13 +86,13 @@ public class Interests implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 邀请码表 * 邀请码表
...@@ -93,13 +91,13 @@ public class Invitation implements Serializable { ...@@ -93,13 +91,13 @@ public class Invitation implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 会员表 * 会员表
...@@ -111,13 +109,13 @@ public class Member implements Serializable { ...@@ -111,13 +109,13 @@ public class Member implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
...@@ -106,13 +104,13 @@ public class MemberGradeConfig implements Serializable { ...@@ -106,13 +104,13 @@ public class MemberGradeConfig implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
...@@ -118,13 +116,13 @@ public class PayoutBatch implements Serializable { ...@@ -118,13 +116,13 @@ public class PayoutBatch implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
...@@ -4,18 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,18 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date; 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; ...@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 保单附加险信息表 * 保单附加险信息表
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 保单业务员关联表 - 存储保单与业务员的关联关系及佣金分配信息 * 保单业务员关联表 - 存储保单与业务员的关联关系及佣金分配信息
...@@ -69,13 +67,13 @@ public class PolicyAgentRelation implements Serializable { ...@@ -69,13 +67,13 @@ public class PolicyAgentRelation implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 新单跟进预约附件信息表 * 新单跟进预约附件信息表
......
...@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 受益人信息表 * 受益人信息表
......
...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 保单转介人表 * 保单转介人表
...@@ -37,7 +38,7 @@ public class PolicyBroker implements Serializable { ...@@ -37,7 +38,7 @@ public class PolicyBroker implements Serializable {
private String brokerName; private String brokerName;
/** /**
* 转介人业务ID(客户端用户表唯一业务ID) * 转介人业务ID
*/ */
private String brokerBizId; private String brokerBizId;
......
...@@ -4,17 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,17 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date; 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 { ...@@ -355,6 +350,11 @@ public class PolicyFollow implements Serializable {
private String deliveryNo; private String deliveryNo;
/** /**
* 专业投资者: Yes/No
*/
private String professionalInvestor;
/**
* 邮寄物品 * 邮寄物品
*/ */
private String mailingItem; private String mailingItem;
......
...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 新单跟进附件信息表 * 新单跟进附件信息表
......
...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 新单跟进记录表 * 新单跟进记录表
......
...@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 保单受保人信息表 * 保单受保人信息表
......
...@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 保单投保人信息表 * 保单投保人信息表
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 保单回执表 * 保单回执表
...@@ -76,13 +73,13 @@ public class PolicyReceipt implements Serializable { ...@@ -76,13 +73,13 @@ public class PolicyReceipt implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 第二持有人信息表 * 第二持有人信息表
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
...@@ -379,13 +377,13 @@ public class Policyholder implements Serializable { ...@@ -379,13 +377,13 @@ public class Policyholder implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
...@@ -124,13 +122,13 @@ public class PremiumReconciliation implements Serializable { ...@@ -124,13 +122,13 @@ public class PremiumReconciliation implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
...@@ -118,13 +116,13 @@ public class PremiumRemittance implements Serializable { ...@@ -118,13 +116,13 @@ public class PremiumRemittance implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 保费对账-汇款记录附件表 * 保费对账-汇款记录附件表
...@@ -75,19 +73,19 @@ public class PremiumRemittanceFile implements Serializable { ...@@ -75,19 +73,19 @@ public class PremiumRemittanceFile implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 创建人名 * 创建人名
*/ */
@TableField("creator_name") @TableField(value = "creator_name", fill = FieldFill.INSERT)
private String creatorName; private String creatorName;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -209,13 +206,13 @@ public class ProductPlan implements Serializable { ...@@ -209,13 +206,13 @@ public class ProductPlan implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import lombok.Data;
/** /**
* 对账公司表 * 对账公司表
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 业务员和客户关联表 * 业务员和客户关联表
...@@ -69,13 +67,13 @@ public class RelAgentCustomer implements Serializable { ...@@ -69,13 +67,13 @@ public class RelAgentCustomer implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 权益表 * 权益表
...@@ -81,13 +79,13 @@ public class RelCustomerInterests implements Serializable { ...@@ -81,13 +79,13 @@ public class RelCustomerInterests implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 会员等级和服务关系表 * 会员等级和服务关系表
...@@ -87,13 +85,13 @@ public class RelGradeService implements Serializable { ...@@ -87,13 +85,13 @@ public class RelGradeService implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 客户端角色表 * 客户端角色表
...@@ -75,13 +73,13 @@ public class RelMemberRole implements Serializable { ...@@ -75,13 +73,13 @@ public class RelMemberRole implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 对象和条件配置关系表 * 对象和条件配置关系表
...@@ -93,13 +91,13 @@ public class RelObjectCondition implements Serializable { ...@@ -93,13 +91,13 @@ public class RelObjectCondition implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 对象和公式配置关系表 * 对象和公式配置关系表
...@@ -87,13 +85,13 @@ public class RelObjectFormula implements Serializable { ...@@ -87,13 +85,13 @@ public class RelObjectFormula implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 对象和SQL模板配置关系表 * 对象和SQL模板配置关系表
...@@ -87,13 +85,13 @@ public class RelObjectSql implements Serializable { ...@@ -87,13 +85,13 @@ public class RelObjectSql implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 服务权益关系表 * 服务权益关系表
...@@ -87,13 +85,13 @@ public class RelServiceInterests implements Serializable { ...@@ -87,13 +85,13 @@ public class RelServiceInterests implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 团队和会员关系表 * 团队和会员关系表
...@@ -75,13 +73,13 @@ public class RelTeamMember implements Serializable { ...@@ -75,13 +73,13 @@ public class RelTeamMember implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 租户-项目-保险预约关系表 * 租户-项目-保险预约关系表
...@@ -66,13 +64,13 @@ public class RelTenantProjectAppointment implements Serializable { ...@@ -66,13 +64,13 @@ public class RelTenantProjectAppointment implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField; import lombok.Getter;
import com.baomidou.mybatisplus.annotation.TableId; import lombok.Setter;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
...@@ -154,13 +152,13 @@ public class RuleConditionConfig implements Serializable { ...@@ -154,13 +152,13 @@ public class RuleConditionConfig implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 基本法项目配置表 * 基本法项目配置表
...@@ -105,13 +103,13 @@ public class RuleItemConfig implements Serializable { ...@@ -105,13 +103,13 @@ public class RuleItemConfig implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -97,13 +94,13 @@ public class SecondHolder implements Serializable { ...@@ -97,13 +94,13 @@ public class SecondHolder implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 服务配置表 * 服务配置表
...@@ -75,13 +73,13 @@ public class ServiceConfig implements Serializable { ...@@ -75,13 +73,13 @@ public class ServiceConfig implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; 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; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 税务信息表 * 税务信息表
...@@ -84,13 +82,13 @@ public class Taxation implements Serializable { ...@@ -84,13 +82,13 @@ public class Taxation implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -112,13 +109,13 @@ public class Team implements Serializable { ...@@ -112,13 +109,13 @@ public class Team implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
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 lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 变量表 * 变量表
...@@ -99,13 +97,13 @@ public class Variable implements Serializable { ...@@ -99,13 +97,13 @@ public class Variable implements Serializable {
/** /**
* 创建人ID * 创建人ID
*/ */
@TableField("creator_id") @TableField(value = "creator_id", fill = FieldFill.INSERT)
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField(value = "updater_id", fill = FieldFill.UPDATE)
private String updaterId; private String updaterId;
/** /**
......
...@@ -14,6 +14,7 @@ import com.yd.csf.service.vo.CommissionExpectedVO; ...@@ -14,6 +14,7 @@ import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.ReceivableReportVO; import com.yd.csf.service.vo.ReceivableReportVO;
import com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse; import com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse;
import java.io.IOException;
import java.util.List; import java.util.List;
/** /**
...@@ -59,7 +60,7 @@ public interface CommissionExpectedService extends IService<CommissionExpected> ...@@ -59,7 +60,7 @@ public interface CommissionExpectedService extends IService<CommissionExpected>
CommissionExpected getByBizId(String commissionExpectedBizId); 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); List<ApiExpectedSpeciesListResponse> queryExpectedSpeciesByFeign(String productLaunchBizId);
...@@ -78,4 +79,6 @@ public interface CommissionExpectedService extends IService<CommissionExpected> ...@@ -78,4 +79,6 @@ public interface CommissionExpectedService extends IService<CommissionExpected>
* @return 应收款报表VO分页列表 * @return 应收款报表VO分页列表
*/ */
IPage<ReceivableReportVO> receivableReportPage(Page<ReceivableReportVO> page, List<Long> expectedIds); IPage<ReceivableReportVO> receivableReportPage(Page<ReceivableReportVO> page, List<Long> expectedIds);
void testExpectedCommission(String policyNo,String effectiveDate,String coolingOffEndDate) throws IOException;
} }
...@@ -34,4 +34,6 @@ public interface CustomerService extends IService<Customer> { ...@@ -34,4 +34,6 @@ public interface CustomerService extends IService<Customer> {
Boolean updateCustomer(CustomerUpdateRequest customerUpdateRequest); Boolean updateCustomer(CustomerUpdateRequest customerUpdateRequest);
void queryDependentsNum(Customer customer); void queryDependentsNum(Customer customer);
Customer queryOneByCustomerBizId(String customerBizId);
} }
...@@ -18,4 +18,5 @@ public interface PolicyPolicyholderService extends IService<PolicyPolicyholder> ...@@ -18,4 +18,5 @@ public interface PolicyPolicyholderService extends IService<PolicyPolicyholder>
*/ */
boolean update(PolicyPolicyholderUpdateRequest policyPolicyholderUpdateRequest); boolean update(PolicyPolicyholderUpdateRequest policyPolicyholderUpdateRequest);
PolicyPolicyholder queryOne(String policyBizId);
} }
package com.yd.csf.service.service.impl; package com.yd.csf.service.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
...@@ -20,12 +24,12 @@ import com.yd.common.utils.RedisUtil; ...@@ -20,12 +24,12 @@ import com.yd.common.utils.RedisUtil;
import com.yd.csf.service.component.ReceivableService; import com.yd.csf.service.component.ReceivableService;
import com.yd.csf.service.dto.*; import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.CommissionExpectedStatusEnum; import com.yd.csf.service.enums.CommissionExpectedStatusEnum;
import com.yd.csf.service.model.Commission; import com.yd.csf.service.enums.PolicyStatusEnum;
import com.yd.csf.service.model.CommissionExpected; import com.yd.csf.service.model.*;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.service.*; import com.yd.csf.service.service.*;
import com.yd.csf.service.dao.CommissionExpectedMapper; 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.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.CommissionExpectedVO; import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.ReceivableReportVO; import com.yd.csf.service.vo.ReceivableReportVO;
...@@ -36,21 +40,22 @@ import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCo ...@@ -36,21 +40,22 @@ import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCo
import com.yd.product.feign.client.expectedspecies.ApiExpectedSpeciesFeignClient; import com.yd.product.feign.client.expectedspecies.ApiExpectedSpeciesFeignClient;
import com.yd.product.feign.request.expectedspecies.ApiExpectedSpeciesListRequest; import com.yd.product.feign.request.expectedspecies.ApiExpectedSpeciesListRequest;
import com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse; 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 com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StreamUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.nio.charset.StandardCharsets;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
...@@ -76,8 +81,6 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -76,8 +81,6 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
private CommissionService commissionService; private CommissionService commissionService;
@Resource @Resource
private ReceivableService receivableService; private ReceivableService receivableService;
@Autowired
private ApiSysDictFeignClient apiSysDictFeignClient;
@Resource @Resource
private ApiExpectedSpeciesFeignClient apiExpectedSpeciesFeignClient; private ApiExpectedSpeciesFeignClient apiExpectedSpeciesFeignClient;
@Resource @Resource
...@@ -88,6 +91,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -88,6 +91,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
private ApiExchangeRateFeignClient apiExchangeRateFeignClient; private ApiExchangeRateFeignClient apiExchangeRateFeignClient;
@Resource @Resource
private ApiInsuranceReconciliationCompanyFeignClient companyFeignClient; private ApiInsuranceReconciliationCompanyFeignClient companyFeignClient;
@Resource
private CustomerService customerService;
// 用于对象转换的ObjectMapper // 用于对象转换的ObjectMapper
private static final ObjectMapper objectMapper = new ObjectMapper(); private static final ObjectMapper objectMapper = new ObjectMapper();
...@@ -131,7 +136,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -131,7 +136,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
commissionExpectedVO.setReconciliationCompany(policy.getReconciliationCompany()); commissionExpectedVO.setReconciliationCompany(policy.getReconciliationCompany());
commissionExpectedVO.setPolicyCurrency(policy.getCurrency()); commissionExpectedVO.setPolicyCurrency(policy.getCurrency());
} }
PolicyFollow policyFollow= policyFollowMap.get(commissionExpected.getPolicyNo()); PolicyFollow policyFollow = policyFollowMap.get(commissionExpected.getPolicyNo());
if (policyFollow != null) { if (policyFollow != null) {
commissionExpectedVO.setProductName(policyFollow.getProductName()); commissionExpectedVO.setProductName(policyFollow.getProductName());
commissionExpectedVO.setProductLaunchBizId(policyFollow.getProductLaunchBizId()); commissionExpectedVO.setProductLaunchBizId(policyFollow.getProductLaunchBizId());
...@@ -197,7 +202,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -197,7 +202,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
Object data = result.getData(); Object data = result.getData();
try { try {
// 将 data 转为 JSON 字符串再解析为 Map,以便提取 records // 将 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"); Object recordsObj = dataMap.get("records");
if (recordsObj instanceof List) { if (recordsObj instanceof List) {
List<?> recordsList = (List<?>) recordsObj; List<?> recordsList = (List<?>) recordsObj;
...@@ -297,8 +303,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -297,8 +303,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
List<String> insurerCompanyBizIdList = commissionExpectedQueryRequest.getInsurerCompanyBizIdList(); List<String> insurerCompanyBizIdList = commissionExpectedQueryRequest.getInsurerCompanyBizIdList();
List<String> reconciliationCompanyBizIdList = commissionExpectedQueryRequest.getReconciliationCompanyBizIdList(); List<String> reconciliationCompanyBizIdList = commissionExpectedQueryRequest.getReconciliationCompanyBizIdList();
List<String> statusList = commissionExpectedQueryRequest.getStatusList(); List<String> statusList = commissionExpectedQueryRequest.getStatusList();
Date commissionDateStart = commissionExpectedQueryRequest.getCommissionDateStart(); LocalDate commissionDateStart = commissionExpectedQueryRequest.getCommissionDateStart();
Date commissionDateEnd = commissionExpectedQueryRequest.getCommissionDateEnd(); LocalDate commissionDateEnd = commissionExpectedQueryRequest.getCommissionDateEnd();
Integer commissionPeriod = commissionExpectedQueryRequest.getCommissionPeriod(); Integer commissionPeriod = commissionExpectedQueryRequest.getCommissionPeriod();
String productLaunchBizId = commissionExpectedQueryRequest.getProductLaunchBizId(); String productLaunchBizId = commissionExpectedQueryRequest.getProductLaunchBizId();
String commissionBizType = commissionExpectedQueryRequest.getCommissionBizType(); String commissionBizType = commissionExpectedQueryRequest.getCommissionBizType();
...@@ -314,8 +320,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -314,8 +320,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
queryWrapper.eq(ObjectUtils.isNotEmpty(commissionBizType), "commission_biz_type", commissionBizType); queryWrapper.eq(ObjectUtils.isNotEmpty(commissionBizType), "commission_biz_type", commissionBizType);
queryWrapper.in(ObjectUtils.isNotEmpty(statusList), "status", statusList); queryWrapper.in(ObjectUtils.isNotEmpty(statusList), "status", statusList);
// 范围查询 // 范围查询
queryWrapper.gt(ObjectUtils.isNotEmpty(commissionDateStart), "commission_date", commissionDateStart); queryWrapper.ge(ObjectUtils.isNotEmpty(commissionDateStart), "commission_date", commissionDateStart);
queryWrapper.lt(ObjectUtils.isNotEmpty(commissionDateEnd), "commission_date", commissionDateEnd); queryWrapper.le(ObjectUtils.isNotEmpty(commissionDateEnd), "commission_date", commissionDateEnd);
// 转介人所属团队业务ID 关联保单表查询 // 转介人所属团队业务ID 关联保单表查询
if (StringUtils.isNotBlank(teamBizId)) { if (StringUtils.isNotBlank(teamBizId)) {
queryWrapper.apply("EXISTS (SELECT 1 FROM policy_broker pb WHERE pb.policy_no = commission_expected.policy_no AND pb.team_biz_id = {0})", queryWrapper.apply("EXISTS (SELECT 1 FROM policy_broker pb WHERE pb.policy_no = commission_expected.policy_no AND pb.team_biz_id = {0})",
...@@ -545,11 +551,37 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -545,11 +551,37 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
expectedStatisticsVO.setPendingPaidAmount(BigDecimal.ZERO); expectedStatisticsVO.setPendingPaidAmount(BigDecimal.ZERO);
expectedStatisticsVO.setPaidAmountRatio(BigDecimal.ZERO); expectedStatisticsVO.setPaidAmountRatio(BigDecimal.ZERO);
expectedStatisticsVO.setTotalPolicyCount(0); expectedStatisticsVO.setTotalPolicyCount(0);
expectedStatisticsVO.setTotalPremium(BigDecimal.ZERO);
return expectedStatisticsVO; return expectedStatisticsVO;
} }
// 自定义统计数据 // 自定义统计数据
CommissionExpectedStatisticsVO commissionStatistics = baseMapper.getExpectedStatistics(expectedIds); CommissionExpectedStatisticsVO commissionStatistics = baseMapper.getExpectedStatistics(expectedIds);
// 计算总保费
String policyNos = commissionStatistics.getPolicyNos();
if (ObjectUtils.isNotEmpty(policyNos)) {
List<CommissionExpected> commissionExpectedList = this.listByIds(expectedIds);
Map<String, BigDecimal> exchangeRateMap = new HashMap<>();
for (CommissionExpected commissionExpected : commissionExpectedList) {
exchangeRateMap.put(commissionExpected.getPolicyNo(), commissionExpected.getDefaultExchangeRate());
}
Set<String> policyNoSet = commissionExpectedList.stream().map(CommissionExpected::getPolicyNo).collect(Collectors.toSet());
// 查询总保费
List<Policy> policyList = policyService.lambdaQuery().in(Policy::getPolicyNo, policyNoSet).list();
BigDecimal totalPremium = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(policyList)) {
for (Policy policy : policyList) {
BigDecimal exchangeRate = exchangeRateMap.getOrDefault(policy.getPolicyNo(), BigDecimal.ONE);
totalPremium = totalPremium.add(policy.getTotalPaymentPremium().multiply(exchangeRate));
}
commissionStatistics.setTotalPremium(totalPremium);
}
} else {
commissionStatistics.setTotalPremium(BigDecimal.ZERO);
}
BigDecimal totalAmount = commissionStatistics.getTotalAmount(); BigDecimal totalAmount = commissionStatistics.getTotalAmount();
BigDecimal totalPaidAmount = commissionStatistics.getTotalPaidAmount(); BigDecimal totalPaidAmount = commissionStatistics.getTotalPaidAmount();
// 计算待入账金额 // 计算待入账金额
...@@ -572,7 +604,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -572,7 +604,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void getExpectedCommissionByProductlaunchId(Policy policy, String productLaunchBizId, 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(); String policyNo = policy.getPolicyNo();
if (ObjectUtils.isEmpty(policyNo)) { if (ObjectUtils.isEmpty(policyNo)) {
throw new BusinessException("保单号不能为空"); throw new BusinessException("保单号不能为空");
...@@ -586,6 +618,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -586,6 +618,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
throw new BusinessException("保單持有人年齡不能为空"); throw new BusinessException("保單持有人年齡不能为空");
} }
Date effectiveDate = policy.getEffectiveDate(); Date effectiveDate = policy.getEffectiveDate();
log.info("getExpectedCommissionByProductlaunchId的effectiveDate生效日期:{}", effectiveDate);
if (effectiveDate == null) { if (effectiveDate == null) {
throw new BusinessException("保单生效日期不能为空"); throw new BusinessException("保单生效日期不能为空");
} }
...@@ -606,14 +639,15 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -606,14 +639,15 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
List<CommissionExpected> commissionExpectedList = new ArrayList<>(); List<CommissionExpected> commissionExpectedList = new ArrayList<>();
if (CollUtil.isNotEmpty(expectedSpeciesList)) { if (CollUtil.isNotEmpty(expectedSpeciesList)) {
// 匹配规格并获取不匹配的条件 // 匹配规格并获取不匹配的条件
MatchResult matchResult = matchExpectedSpecies( MatchResult matchResult = matchExpectedSpecies(expectedSpeciesList, policy, professionalInvestor);
expectedSpeciesList, paymentTerm, reconciliationCompanyBizId,
policyHolderAge, paymentPremium, effectiveDate);
if (matchResult.getMatchedList().isEmpty()) { if (matchResult.getMatchedList().isEmpty()) {
String errorMsg = matchResult.getUnmatchedConditions().isEmpty() String errorMsg = matchResult.getUnmatchedConditions().isEmpty()
? "未查询到对应供款年期的佣金规格" ? "未查询到预计来佣规格"
: "未查询到对应供款年期的佣金规格,不匹配条件:" + String.join("、", matchResult.getUnmatchedConditions()); : "未查询到预计来佣规格,不匹配条件:" + String.join("、", matchResult.getUnmatchedConditions());
log.info("未查询到预计来佣规格,产品id:{},当前规格:{}", productLaunchBizId, JSONUtil.toJsonStr(expectedSpeciesList));
throw new BusinessException(ResultCode.FAIL.getCode(), errorMsg); throw new BusinessException(ResultCode.FAIL.getCode(), errorMsg);
} }
...@@ -698,58 +732,138 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -698,58 +732,138 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
* 匹配预计规格并返回不匹配的条件 * 匹配预计规格并返回不匹配的条件
* *
* @param expectedSpeciesList 预计规格列表 * @param expectedSpeciesList 预计规格列表
* @param paymentTerm 供款年期 * @param policy 保单对象
* @param reconciliationCompanyId 对账公司ID
* @param policyHolderAge 保单持有人年龄
* @param paymentPremium 年缴保费
* @return 匹配结果 * @return 匹配结果
*/ */
private MatchResult matchExpectedSpecies(List<ApiExpectedSpeciesListResponse> expectedSpeciesList, private MatchResult matchExpectedSpecies(
String paymentTerm, String reconciliationCompanyId, List<ApiExpectedSpeciesListResponse> expectedSpeciesList,
Integer policyHolderAge, BigDecimal paymentPremium, Date effectiveDate) { Policy policy,
String professionalInvestor) {
List<String> unmatchedConditions = new ArrayList<>(); List<String> unmatchedConditions = new ArrayList<>();
List<ApiExpectedSpeciesListResponse> currentList = expectedSpeciesList;
// 检查供款年期 // 1. 生效日期独立验证(第一步)
currentList = filterAndCheck(currentList, Date effectiveDate = policy.getEffectiveDate();
i -> paymentTerm.equals(i.getPaymentTerm()), List<ApiExpectedSpeciesListResponse> validDateList = filterAndCheck(
unmatchedConditions, "供款年期[" + paymentTerm + "]"); expectedSpeciesList,
if (unmatchedConditions.size() > 0) { i -> isEffective(i.getEffectiveStart(), i.getEffectiveEnd(), effectiveDate),
unmatchedConditions,
"生效日期[" + DateUtil.format(effectiveDate, "yyyy-MM-dd") + "]");
if (!unmatchedConditions.isEmpty()) {
return new MatchResult(Collections.emptyList(), unmatchedConditions); return new MatchResult(Collections.emptyList(), unmatchedConditions);
} }
// 检查对账公司 if (validDateList.isEmpty()) {
currentList = filterAndCheck(currentList, return new MatchResult(Collections.emptyList(), Collections.emptyList());
i -> reconciliationCompanyId.equals(i.getReconciliationCompany()),
unmatchedConditions, "对账公司[" + reconciliationCompanyId + "]");
if (unmatchedConditions.size() > 0) {
return new MatchResult(Collections.emptyList(), unmatchedConditions);
} }
// 检查年龄 // 2. 获取第一个规格的条件模板
currentList = filterAndCheck(currentList, String firstSpeciesJson = validDateList.get(0).getSpeciesJson();
i -> containsValue(i.getSpeciesJson(), "AGE", Convert.toStr(policyHolderAge)), List<SpeciesCondition> conditionTemplates = parseSpeciesJson(firstSpeciesJson);
unmatchedConditions, "年龄[" + policyHolderAge + "]");
if (unmatchedConditions.size() > 0) { log.info("当前佣金匹配条件: {}", JSONUtil.toJsonStr(conditionTemplates));
return new MatchResult(Collections.emptyList(), unmatchedConditions);
if (conditionTemplates.isEmpty()) {
// 没有配置任何条件,返回所有日期验证通过的规格
return new MatchResult(validDateList, Collections.emptyList());
} }
// 检查保费 // 4. 构建实际值映射
currentList = filterAndCheck(currentList, Map<String, Object> actualValues = buildActualValuesMap(policy, professionalInvestor);
i -> containsValue(i.getSpeciesJson(), "PREMIUM", Convert.toStr(paymentPremium)),
unmatchedConditions, "保费[" + paymentPremium + "]");
// 检查生效日期 // 5. 逐个条件类型进行过滤
currentList = filterAndCheck(currentList, List<ApiExpectedSpeciesListResponse> currentList = validDateList;
i -> isEffective(i.getEffectiveStart(), i.getEffectiveEnd(), effectiveDate),
unmatchedConditions, "生效日期[" + effectiveDate + "]"); for (SpeciesCondition conditionTemplate : conditionTemplates) {
if (unmatchedConditions.size() > 0) { 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(Collections.emptyList(), unmatchedConditions);
} }
}
return new MatchResult(currentList, 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", calculateInitialPremiumInHkd(policy.getPaymentPremium(), policy.getCurrency()));
map.put("PROFESSIONAL", professionalInvestor);
map.put("POLICY_CURRENCY", policy.getCurrency());
map.put("GUARANTEE_PERIOD", policy.getGuaranteePeriod());
map.put("PROTECTION_PLAN", policy.getProductName());
return map;
}
// 匹配来佣规格 - 计算期交保费港币金额
private BigDecimal calculateInitialPremiumInHkd(BigDecimal paymentPremium, String policyCurrency) {
// 查汇率
BigDecimal exchangeRate = queryExchangeRateByFeign(policyCurrency, "HKD");
return paymentPremium.multiply(exchangeRate);
}
/**
* 根据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) { private boolean isEffective(LocalDateTime effectiveStart, LocalDateTime effectiveEnd, Date effectiveDate) {
LocalDateTime effectiveDateLocal = effectiveDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); LocalDateTime effectiveDateLocal = effectiveDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
return effectiveDateLocal.isAfter(effectiveStart) && effectiveDateLocal.isBefore(effectiveEnd); return effectiveDateLocal.isAfter(effectiveStart) && effectiveDateLocal.isBefore(effectiveEnd);
...@@ -777,55 +891,12 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -777,55 +891,12 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
return filtered; 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 @Override
public List<ApiExpectedSpeciesListResponse> queryExpectedSpeciesByFeign(String productLaunchBizId) { public List<ApiExpectedSpeciesListResponse> queryExpectedSpeciesByFeign(String productLaunchBizId) {
ApiExpectedSpeciesListRequest apiExpectedSpeciesListRequest = new ApiExpectedSpeciesListRequest(); ApiExpectedSpeciesListRequest apiExpectedSpeciesListRequest = new ApiExpectedSpeciesListRequest();
apiExpectedSpeciesListRequest.setProductLaunchBizId(productLaunchBizId); apiExpectedSpeciesListRequest.setProductLaunchBizId(productLaunchBizId);
Result<List<ApiExpectedSpeciesListResponse>> result = apiExpectedSpeciesFeignClient.list(apiExpectedSpeciesListRequest); Result<List<ApiExpectedSpeciesListResponse>> result = apiExpectedSpeciesFeignClient.list(apiExpectedSpeciesListRequest);
log.info("查询预计出佣规格queryExpectedSpeciesByFeign==========>,{}",JSON.toJSONString(result));
if (result != null && result.getCode() == 200) { if (result != null && result.getCode() == 200) {
return result.getData(); return result.getData();
} else { } else {
...@@ -845,6 +916,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -845,6 +916,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
/** /**
* 计算预计来佣港币金额 * 计算预计来佣港币金额
*
* @param premium 保费 * @param premium 保费
* @param commissionRatio 佣金比例 * @param commissionRatio 佣金比例
* @param commissionBizType 佣金业务类型 * @param commissionBizType 佣金业务类型
...@@ -881,6 +953,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -881,6 +953,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
/** /**
* 保单币种对预计来佣的结算币种的默认汇率 * 保单币种对预计来佣的结算币种的默认汇率
*
* @param policyCurrency 保单币种 * @param policyCurrency 保单币种
* @param currency 预计来佣的结算币种 * @param currency 预计来佣的结算币种
* @return 汇率 * @return 汇率
...@@ -899,6 +972,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -899,6 +972,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
/** /**
* 根据保单生效日和佣金期数计算预计来佣日期,首期为生效日的1个月,后续期数为首期的次年 * 根据保单生效日和佣金期数计算预计来佣日期,首期为生效日的1个月,后续期数为首期的次年
*
* @param endPeriod 佣金期数 * @param endPeriod 佣金期数
* @param effectiveDate 保单生效日 * @param effectiveDate 保单生效日
* @return 预计来佣日期 * @return 预计来佣日期
...@@ -930,6 +1004,89 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -930,6 +1004,89 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
return baseMapper.receivableReportPage(page, expectedIds); return baseMapper.receivableReportPage(page, expectedIds);
} }
@Override
public void testExpectedCommission(String policyNo,String effectiveDate,String coolingOffEndDate) throws IOException {
PolicyFollow policyFollow = policyFollowService.queryOneByPolicyNo(policyNo);
String productLaunchBizId = policyFollow.getProductLaunchBizId();
if (StringUtils.isNotBlank(productLaunchBizId)) {
Policy policy = convertPolicy(policyFollow,effectiveDate,coolingOffEndDate);
String professionalInvestor = policyFollow.getProfessionalInvestor();
// List<ApiExpectedSpeciesListResponse> expectedSpeciesList = queryExpectedSpeciesByFeign(productLaunchBizId);
List<ApiExpectedSpeciesListResponse> expectedSpeciesList = new ArrayList<>();
// 读取text
try {
ClassPathResource resource = new ClassPathResource("TestExpectedSpecies.txt");
String text = StreamUtils.copyToString(resource.getInputStream(), StandardCharsets.UTF_8);
expectedSpeciesList = JSONUtil.toList(text, ApiExpectedSpeciesListResponse.class);
} catch (IOException e) {
throw new RuntimeException("初始化预期来佣规格列表失败", e);
}
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);
}
}
}
}
private Policy convertPolicy(PolicyFollow policyFollow,String effectiveDate,String coolingOffEndDate) {
Policy policy = new Policy();
BeanUtil.copyProperties(policyFollow, policy);
policy.setPolicyNo(policyFollow.getPolicyNo());
policy.setPolicyHolderAge(calculatePolicyHolderAge(policyFollow.getCustomerBizId()));
policy.setCoolingOffEndDate(policyFollow.getCoolingOffEndDate());
policy.setReconciliationCompanyBizId(policyFollow.getReconciliationCompanyBizId());
policy.setReconciliationCompanyCode(policyFollow.getReconciliationCompanyCode());
policy.setReconciliationCompany(policyFollow.getReconciliationCompany());
policy.setInsuranceCompanyBizId(policyFollow.getInsuranceCompanyBizId());
policy.setInsuranceCompany(policyFollow.getInsuranceCompany());
policy.setProductName(policyFollow.getProductName());
// 更新保单状态为生效
policy.setStatus(PolicyStatusEnum.INFORCE.getItemValue());
// 手动映射不同名的字段
policy.setPaymentPremium(policyFollow.getInitialPremium());
policy.setCurrency(policyFollow.getPolicyCurrency());
policy.setPaymentTerm(policyFollow.getIssueNumber());
log.info("effectiveDate:{}",DateUtil.parse(effectiveDate, DatePattern.NORM_DATE_PATTERN));
policy.setEffectiveDate(DateUtil.parse(effectiveDate, DatePattern.NORM_DATE_PATTERN));
//冷静期结束日期
log.info("coolingOffEndDate:{}",DateUtil.parse(coolingOffEndDate, DatePattern.NORM_DATE_PATTERN));
policy.setCoolingOffEndDate(DateUtil.parse(coolingOffEndDate, DatePattern.NORM_DATE_PATTERN));
return policy;
}
private Integer calculatePolicyHolderAge(String customerBizId) {
Customer customer = customerService.getByCustomerBizId(customerBizId);
if (customer == null) {
throw new BusinessException("客户不存在");
}
if (customer.getBirthday() == null) {
throw new BusinessException("客户生日不能为空");
}
// 根据生日计算年龄
return DateUtil.ageOfNow(customer.getBirthday());
}
} }
......
...@@ -169,7 +169,11 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -169,7 +169,11 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
if (commissionExpected.getCommissionRatio() != null) { if (commissionExpected.getCommissionRatio() != null) {
BigDecimal paidRatio = commissionExpected.getPaidRatio() != null ? commissionExpected.getPaidRatio() : BigDecimal.ZERO; BigDecimal paidRatio = commissionExpected.getPaidRatio() != null ? commissionExpected.getPaidRatio() : BigDecimal.ZERO;
commissionVO.setPaidRatio(paidRatio); commissionVO.setPaidRatio(paidRatio);
commissionVO.setPendingRatio(commissionExpected.getCommissionRatio().subtract(paidRatio)); commissionVO.setPendingRatio(
BigDecimal.ONE
.subtract(paidRatio.divide(commissionExpected.getCommissionRatio(), 4, RoundingMode.HALF_UP))
.multiply(BigDecimal.valueOf(100))
);
} }
commissionVO.setCommissionExpectedStatus(commissionExpected.getStatus()); commissionVO.setCommissionExpectedStatus(commissionExpected.getStatus());
} }
...@@ -865,23 +869,24 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -865,23 +869,24 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commissionList.add(commission); commissionList.add(commission);
} }
// 提交事务,保存数据 // 1. 先保存主数据
transactionTemplate.execute(status -> {
saveOrUpdateBatch(commissionList); saveOrUpdateBatch(commissionList);
return null;
});
// 开启新事务,比对数据 // 2. 事务提交后执行比对
transactionTemplate.execute(status -> { TransactionSynchronizationManager.registerSynchronization(
new TransactionSynchronization() {
@Override
public void afterCommit() {
try { try {
// 这里会开启新事务执行更新
commissionAsyncService.commissionCompareBatch(commissionList); commissionAsyncService.commissionCompareBatch(commissionList);
} catch (Exception e) { } catch (Exception e) {
// 比对失败不影响主事务,记录日志即可 log.error("比对更新失败", e);
e.printStackTrace(); // 可以发送告警或记录失败任务
log.error("批量新增, 比对操作执行失败, error: {}", e.getMessage());
} }
return null; }
}); }
);
return commissionList; return commissionList;
} }
...@@ -949,6 +954,9 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -949,6 +954,9 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
if (ObjectUtils.isEmpty(request.getAmount())) { if (ObjectUtils.isEmpty(request.getAmount())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "入账金额不能为空"); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "入账金额不能为空");
} }
if (ObjectUtils.isEmpty(request.getExchangeRate())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "结算汇率不能为空");
}
if ("R".equals(request.getCommissionBizType())) { if ("R".equals(request.getCommissionBizType())) {
// 校验保单号是否存在 // 校验保单号是否存在
if (ObjectUtils.isEmpty(request.getExchangeRate())) { if (ObjectUtils.isEmpty(request.getExchangeRate())) {
......
...@@ -104,11 +104,21 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> ...@@ -104,11 +104,21 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer>
if (ValidateUtil.isAllFieldsNull(customerAddRequest)) { if (ValidateUtil.isAllFieldsNull(customerAddRequest)) {
throw new BusinessException(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage()); throw new BusinessException(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
} }
String customerBizId = customerAddRequest.getCustomerBizId();
Customer customer = null;
if (StringUtils.isNotBlank(customerAddRequest.getCustomerBizId())) {
customer = customerService.queryOneByCustomerBizId(customerAddRequest.getCustomerBizId());
}
if (customer == null) {
// 检查字段 certificate_list,根据证件类型、证件号码查询客户是否存在 // 检查字段 certificate_list,根据证件类型、证件号码查询客户是否存在
Customer customer = queryByCertificate(customerAddRequest.getApiCertificateDtoList()); customer = queryByCertificate(customerAddRequest.getApiCertificateDtoList());
if (customer == null) { if (customer == null) {
customer = new Customer(); customer = new Customer();
// 客户主表业务唯一id
customerBizId = RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_CUSTOMER.getCode());
}else {
customerBizId = customer.getCustomerBizId();
}
} }
// 客户主表信息 // 客户主表信息
...@@ -128,8 +138,7 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> ...@@ -128,8 +138,7 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer>
// 校验客户主表信息 // 校验客户主表信息
validCustomer(customer); validCustomer(customer);
// 客户主表业务唯一id customer.setCustomerBizId(customerBizId);
customer.setCustomerBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_CUSTOMER.getCode()));
boolean result = customerService.saveOrUpdate(customer); boolean result = customerService.saveOrUpdate(customer);
if (!result) { if (!result) {
throw new BusinessException(ErrorCode.OPERATION_ERROR.getCode(), ErrorCode.OPERATION_ERROR.getMessage()); throw new BusinessException(ErrorCode.OPERATION_ERROR.getCode(), ErrorCode.OPERATION_ERROR.getMessage());
...@@ -269,6 +278,12 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> ...@@ -269,6 +278,12 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer>
} }
} }
@Override
public Customer queryOneByCustomerBizId(String customerBizId) {
return this.baseMapper.selectOne(new LambdaQueryWrapper<Customer>()
.eq(Customer::getCustomerBizId,customerBizId).last(" limit 1 "));
}
} }
......
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest; import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse; import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.service.enums.CurrencyEnum;
import com.yd.csf.service.model.ExpectedFortune; import com.yd.csf.service.model.ExpectedFortune;
import com.yd.csf.service.dao.ExpectedFortuneMapper; import com.yd.csf.service.dao.ExpectedFortuneMapper;
import com.yd.csf.service.model.Policy; import com.yd.csf.service.model.Policy;
...@@ -133,6 +134,8 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe ...@@ -133,6 +134,8 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe
ApiExpectedFortunePageResponse vo = new ApiExpectedFortunePageResponse(); ApiExpectedFortunePageResponse vo = new ApiExpectedFortunePageResponse();
BeanUtils.copyProperties(ef, vo); BeanUtils.copyProperties(ef, vo);
vo.setCurrency(CurrencyEnum.toLabel(ef.getCurrency()));
String ratio = finalBrokerRatioMap.get(ef.getBrokerBizId()); String ratio = finalBrokerRatioMap.get(ef.getBrokerBizId());
vo.setCommissionRatio(ratio); vo.setCommissionRatio(ratio);
......
...@@ -123,7 +123,9 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -123,7 +123,9 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
FortuneAccount fortuneAccount = new FortuneAccount(); FortuneAccount fortuneAccount = new FortuneAccount();
fortuneAccount.setFortuneAccountBizId(RandomStringGenerator.generateBizId16("fortune_account")); fortuneAccount.setFortuneAccountBizId(RandomStringGenerator.generateBizId16("fortune_account"));
fortuneAccount.setBroker(accountExportDTO.getBroker()); fortuneAccount.setBroker(accountExportDTO.getBroker());
fortuneAccount.setBrokerBizId(accountExportDTO.getBrokerBizId());
fortuneAccount.setTeam(accountExportDTO.getTeam()); fortuneAccount.setTeam(accountExportDTO.getTeam());
fortuneAccount.setTeamBizId(accountExportDTO.getTeamBizId());
fortuneAccount.setCurrency(accountExportDTO.getCurrency()); fortuneAccount.setCurrency(accountExportDTO.getCurrency());
fortuneAccount.setHkdAmount(accountExportDTO.getAmount()); fortuneAccount.setHkdAmount(accountExportDTO.getAmount());
fortuneAccount.setFortuneAccountDate(currentDate); fortuneAccount.setFortuneAccountDate(currentDate);
...@@ -162,6 +164,11 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -162,6 +164,11 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
updateFortune.setId(item.getId()); updateFortune.setId(item.getId());
updateFortune.setFortuneAccountBizId(fortuneAccountBizId); updateFortune.setFortuneAccountBizId(fortuneAccountBizId);
updateFortune.setStatus(FortuneStatusEnum.CHECKED.getItemValue()); updateFortune.setStatus(FortuneStatusEnum.CHECKED.getItemValue());
// 处理金额字段
updateFortune.setCurrentPaymentHkdAmount(item.getCurrentPaymentHkdAmount());
updateFortune.setCurrentPaymentRatio(item.getCurrentPaymentHkdAmount()
.divide(item.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
updateFortune.setReconciliationOperator(currentLoginUser.getUsername());
updateFortuneList.add(updateFortune); updateFortuneList.add(updateFortune);
} }
} }
...@@ -284,6 +291,10 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -284,6 +291,10 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
.list(); .list();
if (CollectionUtils.isNotEmpty(fortunes)) { if (CollectionUtils.isNotEmpty(fortunes)) {
fortunes.forEach(f -> { fortunes.forEach(f -> {
if (f.getCurrentPaymentHkdAmount() == null) {
f.setCurrentPaymentHkdAmount(f.getHkdAmount());
f.setCurrentPaymentRatio(BigDecimal.valueOf(100));
}
f.setStatus(FortuneStatusEnum.SENT.getItemValue()); f.setStatus(FortuneStatusEnum.SENT.getItemValue());
f.setActualPayoutDate(new Date()); f.setActualPayoutDate(new Date());
f.setUpdaterId(loginUserId.toString()); f.setUpdaterId(loginUserId.toString());
...@@ -307,20 +318,20 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -307,20 +318,20 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
.last("FOR UPDATE") .last("FOR UPDATE")
.list(); .list();
// 4.3 全量汇总:把同一 expected_fortune 下所有 fortune 的 current_payment_amount 求和 // 4.3 全量汇总:把同一 expected_fortune 下所有 fortune 的 current_payment_hkd_amount 求和
Map<String, BigDecimal> paidMap = fortuneService.lambdaQuery() Map<String, BigDecimal> paidMap = fortuneService.lambdaQuery()
.in(Fortune::getExpectedFortuneBizId, expectedIds) .in(Fortune::getExpectedFortuneBizId, expectedIds)
.eq(Fortune::getStatus, FortuneStatusEnum.SENT.getItemValue()) .eq(Fortune::getStatus, FortuneStatusEnum.SENT.getItemValue())
.list() .list()
.stream() .stream()
.collect(Collectors.groupingBy(Fortune::getExpectedFortuneBizId, .collect(Collectors.groupingBy(Fortune::getExpectedFortuneBizId,
Collectors.mapping(Fortune::getCurrentPaymentAmount, Collectors.mapping(Fortune::getCurrentPaymentHkdAmount,
Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)))); Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
// 4.4 反写 expected_fortune // 4.4 反写 expected_fortune
expectedList.forEach(ef -> { expectedList.forEach(ef -> {
BigDecimal totalPaid = paidMap.getOrDefault(ef.getExpectedFortuneBizId(), BigDecimal.ZERO); BigDecimal totalPaid = paidMap.getOrDefault(ef.getExpectedFortuneBizId(), BigDecimal.ZERO);
BigDecimal totalAmount = ef.getAmount(); BigDecimal totalAmount = ef.getHkdAmount();
BigDecimal unpaid = totalAmount.subtract(totalPaid); BigDecimal unpaid = totalAmount.subtract(totalPaid);
String newStatus; String newStatus;
...@@ -340,6 +351,7 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -340,6 +351,7 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
.set(ExpectedFortune::getUnpaidRatio, .set(ExpectedFortune::getUnpaidRatio,
unpaid.divide(totalAmount, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100))) unpaid.divide(totalAmount, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)))
.set(ExpectedFortune::getStatus, newStatus) .set(ExpectedFortune::getStatus, newStatus)
.set(ExpectedFortune::getActualPayoutDate, new Date())
.set(ExpectedFortune::getUpdaterId, loginUserId.toString()) .set(ExpectedFortune::getUpdaterId, loginUserId.toString())
.set(ExpectedFortune::getUpdateTime, LocalDateTime.now()) .set(ExpectedFortune::getUpdateTime, LocalDateTime.now())
.eq(ExpectedFortune::getId, ef.getId()) .eq(ExpectedFortune::getId, ef.getId())
......
...@@ -2,7 +2,6 @@ package com.yd.csf.service.service.impl; ...@@ -2,7 +2,6 @@ package com.yd.csf.service.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
...@@ -12,6 +11,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -12,6 +11,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.yd.auth.core.dto.AuthUserDto; import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil; 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.constant.RedisConstants;
import com.yd.common.enums.CommonEnum; import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode; import com.yd.common.enums.ResultCode;
...@@ -69,6 +69,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -69,6 +69,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
private ApiSysDictFeignClient apiSysDictFeignClient; private ApiSysDictFeignClient apiSysDictFeignClient;
@Resource @Resource
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Resource
private ApiExchangeRateFeignClient apiExchangeRateFeignClient;
@Override @Override
public Wrapper<Fortune> getQueryWrapper(FortuneQueryRequest fortuneQueryRequest) { public Wrapper<Fortune> getQueryWrapper(FortuneQueryRequest fortuneQueryRequest) {
...@@ -187,15 +189,6 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -187,15 +189,6 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "出账港币金额不能大于应付款港币金额"); 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(); AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
...@@ -215,10 +208,14 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -215,10 +208,14 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
} }
private void totalFortune(Fortune fortune, ExpectedFortune expectedFortune, String loginUserId, FortuneUpdateRequest fortuneUpdateRequest) { private void totalFortune(Fortune fortune, ExpectedFortune expectedFortune, String loginUserId, FortuneUpdateRequest fortuneUpdateRequest) {
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
// 1. 更新fortune记录为全额发放状态 // 1. 更新fortune记录为全额发放状态
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount()); fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
fortune.setCurrentPaymentRatio(BigDecimal.valueOf(100)); fortune.setCurrentPaymentRatio(BigDecimal.valueOf(100));
fortune.setStatus(FortuneStatusEnum.CHECKED.getItemValue()); fortune.setStatus(FortuneStatusEnum.CHECKED.getItemValue());
fortune.setReconciliationOperator(currentLoginUser.getUsername());
fortune.setUpdaterId(loginUserId); fortune.setUpdaterId(loginUserId);
fortune.setUpdateTime(new Date()); fortune.setUpdateTime(new Date());
...@@ -230,30 +227,30 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -230,30 +227,30 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
// 2. 更新expected_fortune记录为已全额发放状态 // 2. 更新expected_fortune记录为已全额发放状态
// 统一使用港币金额 // 统一使用港币金额
expectedFortune.setPaidAmount(expectedFortune.getHkdAmount()); // expectedFortune.setPaidAmount(expectedFortune.getHkdAmount());
expectedFortune.setUnpaidAmount(BigDecimal.ZERO); // expectedFortune.setUnpaidAmount(BigDecimal.ZERO);
expectedFortune.setPaidRatio(BigDecimal.valueOf(100)); // expectedFortune.setPaidRatio(BigDecimal.valueOf(100));
expectedFortune.setUnpaidRatio(BigDecimal.ZERO); // expectedFortune.setUnpaidRatio(BigDecimal.ZERO);
expectedFortune.setStatus("6"); // 全额发放完成状态 // expectedFortune.setStatus("6"); // 全额发放完成状态
expectedFortune.setActualPayoutDate(LocalDate.now()); // expectedFortune.setActualPayoutDate(LocalDate.now());
//
expectedFortuneService.updateById(expectedFortune); // 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; return BigDecimal.ONE;
} }
if ("HKD".equalsIgnoreCase(currency)) { // 调用Feign客户端查询汇率
return BigDecimal.valueOf(1); Result<BigDecimal> result = apiExchangeRateFeignClient.getExchangeRate(policyCurrency, currency, "");
} if (result != null && result.getData() != null) {
Result<List<GetDictItemListByDictTypeResponse>> result = apiSysDictFeignClient.getDictItemListByDictType("csf_exchange_rate_hkd"); return result.getData();
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());
}
}
} }
return BigDecimal.ONE; return BigDecimal.ONE;
} }
...@@ -271,18 +268,19 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -271,18 +268,19 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
if (currentPaymentHkdAmount.compareTo(main.getCurrentPaymentHkdAmount()) > 0) if (currentPaymentHkdAmount.compareTo(main.getCurrentPaymentHkdAmount()) > 0)
throw new BusinessException("本次发放金额不能大于可出账金额"); throw new BusinessException("本次发放金额不能大于可出账金额");
// 获取当前登录用户的ID
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
// 1. 更新主行 = 本次发放金额 // 1. 更新主行 = 本次发放金额
main.setCurrentPaymentAmount(null); main.setCurrentPaymentAmount(null);
main.setCurrentPaymentHkdAmount(currentPaymentHkdAmount); main.setCurrentPaymentHkdAmount(currentPaymentHkdAmount);
main.setCurrentPaymentRatio(currentPaymentHkdAmount main.setCurrentPaymentRatio(currentPaymentHkdAmount
.divide(expectedFortune.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100))); .divide(expectedFortune.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
main.setStatus(FortuneStatusEnum.CHECKED.getItemValue()); main.setStatus(FortuneStatusEnum.CHECKED.getItemValue());
main.setReconciliationOperator(currentLoginUser.getUsername());
main.setUpdaterId(loginUserId); main.setUpdaterId(loginUserId);
main.setUpdateTime(new Date()); main.setUpdateTime(new Date());
// 其他字段更新
if (StringUtils.isNotBlank(fortuneUpdateRequest.getCurrency())) {
main.setCurrency(fortuneUpdateRequest.getCurrency());
}
this.updateById(main); this.updateById(main);
// 2. 剩余金额生成新行 // 2. 剩余金额生成新行
...@@ -295,9 +293,10 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -295,9 +293,10 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
part.setCurrentPaymentHkdAmount(leftAmount); part.setCurrentPaymentHkdAmount(leftAmount);
part.setCurrentPaymentRatio(leftAmount part.setCurrentPaymentRatio(leftAmount
.divide(expectedFortune.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100))); .divide(expectedFortune.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
part.setStatus(FortuneStatusEnum.WAIT.getItemValue()); part.setStatus(FortuneStatusEnum.RESERVED.getItemValue());
part.setIsPart(1); part.setIsPart(1);
part.setPayoutDate(LocalDate.now().plusMonths(1)); // 次月 part.setPayoutDate(LocalDate.now().plusMonths(1)); // 次月
part.setReconciliationOperator(currentLoginUser.getUsername());
part.setCreatorId(loginUserId); part.setCreatorId(loginUserId);
part.setCreateTime(new Date()); part.setCreateTime(new Date());
this.save(part); this.save(part);
...@@ -305,20 +304,20 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -305,20 +304,20 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
// 3. 同步 expected_fortune // 3. 同步 expected_fortune
// 统一使用港币金额 // 统一使用港币金额
BigDecimal newPaid = expectedFortune.getPaidAmount() == null ? BigDecimal.ZERO : expectedFortune.getPaidAmount().add(currentPaymentHkdAmount); // BigDecimal newPaid = expectedFortune.getPaidAmount() == null ? BigDecimal.ZERO : expectedFortune.getPaidAmount().add(currentPaymentHkdAmount);
BigDecimal newUnpaid = expectedFortune.getHkdAmount().subtract(newPaid); // BigDecimal newUnpaid = expectedFortune.getHkdAmount().subtract(newPaid);
String newStatus = newUnpaid.compareTo(BigDecimal.ZERO) == 0 ? "6" : "3"; // String newStatus = newUnpaid.compareTo(BigDecimal.ZERO) == 0 ? "6" : "3";
//
expectedFortuneService.lambdaUpdate() // expectedFortuneService.lambdaUpdate()
.set(ExpectedFortune::getPaidAmount, newPaid) // .set(ExpectedFortune::getPaidAmount, newPaid)
.set(ExpectedFortune::getUnpaidAmount, newUnpaid) // .set(ExpectedFortune::getUnpaidAmount, newUnpaid)
.set(ExpectedFortune::getPaidRatio, // .set(ExpectedFortune::getPaidRatio,
newPaid.divide(expectedFortune.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100))) // newPaid.divide(expectedFortune.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)))
.set(ExpectedFortune::getUnpaidRatio, // .set(ExpectedFortune::getUnpaidRatio,
newUnpaid.divide(expectedFortune.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100))) // newUnpaid.divide(expectedFortune.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)))
.set(ExpectedFortune::getStatus, newStatus) // .set(ExpectedFortune::getStatus, newStatus)
.eq(ExpectedFortune::getId, expectedFortune.getId()) // .eq(ExpectedFortune::getId, expectedFortune.getId())
.update(); // .update();
} }
@Override @Override
...@@ -359,9 +358,9 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -359,9 +358,9 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
// 校验发佣记录状态 // 校验发佣记录状态
StringBuilder validateMsg = new StringBuilder(); StringBuilder validateMsg = new StringBuilder();
for (Fortune fortune : fortuneList) { for (Fortune fortune : fortuneList) {
// if (StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.CAN_SEND.getItemValue())) { if (!StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.CHECKED.getItemValue())) {
// validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("当前未检核,请检核后再生成出账记录; "); validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("当前状态不是'可出账, 已检核',不能生成出账记录; ");
// } }
if (StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.SENT.getItemValue())) { if (StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.SENT.getItemValue())) {
validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("已完成出账,不能生成出账记录; "); validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("已完成出账,不能生成出账记录; ");
} }
...@@ -391,11 +390,13 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -391,11 +390,13 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
FortuneAccountExportDTO accountDTO = new FortuneAccountExportDTO(); FortuneAccountExportDTO accountDTO = new FortuneAccountExportDTO();
accountDTO.setBroker(broker); accountDTO.setBroker(broker);
accountDTO.setBrokerBizId(brokerFortunes.get(0).getBrokerBizId());
accountDTO.setFortuneList(brokerFortunes); accountDTO.setFortuneList(brokerFortunes);
// 设置团队、币种(取第一个记录) // 设置团队、币种(取第一个记录)
if (CollUtil.isNotEmpty(brokerFortunes)) { if (CollUtil.isNotEmpty(brokerFortunes)) {
accountDTO.setTeam(brokerFortunes.get(0).getTeam()); accountDTO.setTeam(brokerFortunes.get(0).getTeam());
accountDTO.setTeamBizId(brokerFortunes.get(0).getTeamBizId());
accountDTO.setCurrency(currency); accountDTO.setCurrency(currency);
} }
...@@ -535,8 +536,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -535,8 +536,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount()); fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
fortune.setPayoutDate(expectedFortune.getPayoutDate()); fortune.setPayoutDate(expectedFortune.getPayoutDate());
} else { } else {
fortune.setExchangeRate(queryDefaultExchangeRate(fortuneAddRequest.getCurrency())); fortune.setExchangeRate(BigDecimal.ONE);
fortune.setHkdAmount(fortuneAddRequest.getAmount().multiply(fortune.getExchangeRate())); fortune.setHkdAmount(fortuneAddRequest.getAmount());
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount()); fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
} }
...@@ -747,8 +748,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -747,8 +748,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
fortune.setRemark("未找到当前预计发佣对应的来佣"); fortune.setRemark("未找到当前预计发佣对应的来佣");
} }
} else { } else {
fortune.setExchangeRate(queryDefaultExchangeRate(fortuneAddRequest.getCurrency())); fortune.setExchangeRate(BigDecimal.ONE);
fortune.setHkdAmount(fortuneAddRequest.getAmount().multiply(fortune.getExchangeRate())); fortune.setHkdAmount(fortuneAddRequest.getAmount());
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount()); fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
} }
......
...@@ -113,17 +113,17 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -113,17 +113,17 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
String appointmentNo = policyFollowQueryRequest.getAppointmentNo(); String appointmentNo = policyFollowQueryRequest.getAppointmentNo();
Date signDateStart = policyFollowQueryRequest.getSignDateStart(); Date signDateStart = policyFollowQueryRequest.getSignDateStart();
Date signDateEnd = policyFollowQueryRequest.getSignDateEnd(); Date signDateEnd = policyFollowQueryRequest.getSignDateEnd();
Date latestPaymentDate = policyFollowQueryRequest.getLatestPaymentDate(); String latestPaymentDate = policyFollowQueryRequest.getLatestPaymentDate();
List<String> insuranceCompanyBizIdList = policyFollowQueryRequest.getInsuranceCompanyBizIdList(); List<String> insuranceCompanyBizIdList = policyFollowQueryRequest.getInsuranceCompanyBizIdList();
List<String> productLaunchBizIdList = policyFollowQueryRequest.getProductLaunchBizIdList(); List<String> productLaunchBizIdList = policyFollowQueryRequest.getProductLaunchBizIdList();
String issueNumber = policyFollowQueryRequest.getIssueNumber(); Integer issueNumber = policyFollowQueryRequest.getIssueNumber();
queryWrapper.like(ObjectUtils.isNotEmpty(policyNo), "policy_no", policyNo); queryWrapper.like(ObjectUtils.isNotEmpty(policyNo), "policy_no", policyNo);
queryWrapper.eq(ObjectUtils.isNotEmpty(status), "status", status); queryWrapper.eq(ObjectUtils.isNotEmpty(status), "status", status);
queryWrapper.eq(ObjectUtils.isNotEmpty(appointmentNo), "appointment_no", appointmentNo); queryWrapper.eq(ObjectUtils.isNotEmpty(appointmentNo), "appointment_no", appointmentNo);
queryWrapper.ge(ObjectUtils.isNotEmpty(signDateStart), "sign_date", signDateStart); queryWrapper.ge(ObjectUtils.isNotEmpty(signDateStart), "sign_date", signDateStart);
queryWrapper.le(ObjectUtils.isNotEmpty(signDateEnd), "sign_date", signDateEnd); queryWrapper.le(ObjectUtils.isNotEmpty(signDateEnd), "sign_date", signDateEnd);
queryWrapper.ge(ObjectUtils.isNotEmpty(latestPaymentDate), "latest_payment_date", latestPaymentDate); queryWrapper.eq(ObjectUtils.isNotEmpty(latestPaymentDate), "latest_payment_date", latestPaymentDate);
if (CollectionUtils.isNotEmpty(insuranceCompanyBizIdList)) { if (CollectionUtils.isNotEmpty(insuranceCompanyBizIdList)) {
queryWrapper.in("insurance_company_biz_id", insuranceCompanyBizIdList); queryWrapper.in("insurance_company_biz_id", insuranceCompanyBizIdList);
...@@ -207,9 +207,6 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -207,9 +207,6 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
if (StringUtils.isNotBlank(policyFollowDto.getReconciliationCode())) { if (StringUtils.isNotBlank(policyFollowDto.getReconciliationCode())) {
policyFollow.setReconciliationCompanyCode(policyFollowDto.getReconciliationCode()); policyFollow.setReconciliationCompanyCode(policyFollowDto.getReconciliationCode());
} }
if (StringUtils.isNotBlank(policyFollowDto.getReconciliationCompanyName())) {
policyFollow.setReconciliationCompany(policyFollowDto.getReconciliationCompanyName());
}
// 检查保单号是否从空变为有值 // 检查保单号是否从空变为有值
String oldPolicyNo = policyFollow.getPolicyNo(); String oldPolicyNo = policyFollow.getPolicyNo();
...@@ -217,9 +214,9 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -217,9 +214,9 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
boolean isPolicyNoUpdated = StringUtils.isBlank(oldPolicyNo) && StringUtils.isNotBlank(newPolicyNo); boolean isPolicyNoUpdated = StringUtils.isBlank(oldPolicyNo) && StringUtils.isNotBlank(newPolicyNo);
// 计算冷却期结束日期 // 计算冷却期结束日期
if (policyFollowDto.getCoolingOffDays() != null && policyFollowDto.getEffectiveDate() != null) { // if (policyFollowDto.getCoolingOffDays() != null && policyFollowDto.getEffectiveDate() != null) {
policyFollow.setCoolingOffEndDate(DateUtil.offset(policyFollowDto.getEffectiveDate(), DateField.DAY_OF_MONTH, policyFollowDto.getCoolingOffDays())); // policyFollow.setCoolingOffEndDate(DateUtil.offset(policyFollowDto.getEffectiveDate(), DateField.DAY_OF_MONTH, policyFollowDto.getCoolingOffDays()));
} // }
// 获取当前登录用户 // 获取当前登录用户
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser(); AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
...@@ -503,20 +500,21 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -503,20 +500,21 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
if (policy == null) { if (policy == null) {
throw new BusinessException(ErrorCode.NOT_FOUND_ERROR.getCode(), "policy不存在"); throw new BusinessException(ErrorCode.NOT_FOUND_ERROR.getCode(), "policy不存在");
} }
BigDecimal paymentPremium = policy.getPaymentPremium(); // 新单跟进,校验 policy 数据
if (paymentPremium == null) { policyFollowChangeStatusValidPolicy(policy);
throw new BusinessException("期交保费不能为空");
} // 新单跟进,校验 policyFollow 数据
Object paymentTerm = policy.getPaymentTerm(); policyFollowChangeStatusValidPolicyFollow(policyFollow);
if (paymentTerm == null) {
throw new BusinessException("供款期数不能为空");
}
policy.setPolicyNo(policyFollow.getPolicyNo()); policy.setPolicyNo(policyFollow.getPolicyNo());
policy.setPolicyHolderAge(calculatePolicyHolderAge(policyFollow.getCustomerBizId())); policy.setPolicyHolderAge(calculatePolicyHolderAge(policyFollow.getCustomerBizId()));
policy.setCoolingOffEndDate(policyFollow.getCoolingOffEndDate()); policy.setCoolingOffEndDate(policyFollow.getCoolingOffEndDate());
policy.setReconciliationCompanyBizId(policyFollow.getReconciliationCompanyBizId()); policy.setReconciliationCompanyBizId(policyFollow.getReconciliationCompanyBizId());
policy.setReconciliationCompanyCode(policyFollow.getReconciliationCompanyCode()); policy.setReconciliationCompanyCode(policyFollow.getReconciliationCompanyCode());
policy.setReconciliationCompany(policyFollow.getReconciliationCompany()); policy.setReconciliationCompany(policyFollow.getReconciliationCompany());
policy.setInsuranceCompanyBizId(policyFollow.getInsuranceCompanyBizId());
policy.setInsuranceCompany(policyFollow.getInsuranceCompany());
policy.setProductName(policyFollow.getProductName());
// 更新保单状态为生效 // 更新保单状态为生效
policy.setStatus(PolicyStatusEnum.INFORCE.getItemValue()); policy.setStatus(PolicyStatusEnum.INFORCE.getItemValue());
// 手动映射不同名的字段 // 手动映射不同名的字段
...@@ -529,21 +527,6 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -529,21 +527,6 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
//冷静期结束日期 //冷静期结束日期
policy.setCoolingOffEndDate(changePolicyFollowStatusRequest.getCoolingOffEndDate() != null ? changePolicyFollowStatusRequest.getCoolingOffEndDate() : policy.getCoolingOffEndDate()); policy.setCoolingOffEndDate(changePolicyFollowStatusRequest.getCoolingOffEndDate() != null ? changePolicyFollowStatusRequest.getCoolingOffEndDate() : policy.getCoolingOffEndDate());
if (ObjectUtils.isEmpty(policy.getInsuranceCompany()) || ObjectUtils.isEmpty(policy.getInsuranceCompany())) {
// 获取保单产品信息,填充对账公司相关字段
PolicyProductInfo productInfo = getPolicyProductInfo(policyFollow.getProductLaunchBizId());
if (productInfo != null) {
policy.setInsuranceCompany(productInfo.getInsuranceCompany());
policy.setInsuranceCompanyBizId(productInfo.getInsuranceCompanyBizId());
if (ObjectUtils.isEmpty(policy.getReconciliationCompany())) {
policy.setReconciliationCompany(productInfo.getReconciliationCompany());
}
if (ObjectUtils.isEmpty(policy.getReconciliationCompanyBizId())) {
policy.setReconciliationCompanyBizId(productInfo.getReconciliationCompanyBizId());
}
}
}
// 保存保单 // 保存保单
policyService.updateById(policy); policyService.updateById(policy);
...@@ -551,6 +534,7 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -551,6 +534,7 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
updatePolicyBrokerPolicyNo(policyBizId, policy.getPolicyNo()); updatePolicyBrokerPolicyNo(policyBizId, policy.getPolicyNo());
// 根据保单生成预计入账记录 // 根据保单生成预计入账记录
log.info("根据保单生成预计入账记录前effectiveDate生效日期:{}",policy.getEffectiveDate());
generateExpectedCommission(policyFollow, policy); generateExpectedCommission(policyFollow, policy);
// 更新FNA状态为 "签单完成" // 更新FNA状态为 "签单完成"
...@@ -573,6 +557,41 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -573,6 +557,41 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
return true; return true;
} }
private void policyFollowChangeStatusValidPolicyFollow(PolicyFollow policyFollow) {
if (ObjectUtils.isEmpty(policyFollow.getReconciliationCompanyBizId())) {
throw new BusinessException("新单跟进-基础数据,reconciliationCompanyBizId 不能为空");
}
if (ObjectUtils.isEmpty(policyFollow.getReconciliationCompanyCode())) {
throw new BusinessException("新单跟进-基础数据,reconciliationCompanyCode 不能为空");
}
if (ObjectUtils.isEmpty(policyFollow.getReconciliationCompany())) {
throw new BusinessException("新单跟进-基础数据,reconciliationCompany 不能为空");
}
if (ObjectUtils.isEmpty(policyFollow.getInsuranceCompanyBizId())) {
throw new BusinessException("新单跟进-基础数据,insuranceCompanyBizId 不能为空");
}
if (ObjectUtils.isEmpty(policyFollow.getInsuranceCompany())) {
throw new BusinessException("新单跟进-基础数据,insuranceCompany 不能为空");
}
if (ObjectUtils.isEmpty(policyFollow.getProductName())) {
throw new BusinessException("新单跟进-基础数据,productName 不能为空");
}
if (ObjectUtils.isEmpty(policyFollow.getProductLaunchBizId())) {
throw new BusinessException("新单跟进-基础数据,productLaunchBizId 不能为空");
}
}
private void policyFollowChangeStatusValidPolicy(Policy policy) {
BigDecimal paymentPremium = policy.getPaymentPremium();
if (paymentPremium == null) {
throw new BusinessException("期交保费不能为空");
}
Object paymentTerm = policy.getPaymentTerm();
if (paymentTerm == null) {
throw new BusinessException("供款期数不能为空");
}
}
private BigDecimal calculateTotalPaymentPremium(Policy policy) { private BigDecimal calculateTotalPaymentPremium(Policy policy) {
BigDecimal paymentPremium = policy.getPaymentPremium(); BigDecimal paymentPremium = policy.getPaymentPremium();
Object paymentTerm = policy.getPaymentTerm(); Object paymentTerm = policy.getPaymentTerm();
...@@ -667,9 +686,11 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -667,9 +686,11 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
currency = "USD"; currency = "USD";
break; break;
case "人民幣": case "人民幣":
case "人民币":
currency = "CNY"; currency = "CNY";
break; break;
case "港幣": case "港幣":
case "港币":
currency = "HKD"; currency = "HKD";
break; break;
case "澳元": case "澳元":
...@@ -682,6 +703,7 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -682,6 +703,7 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
currency = "EUR"; currency = "EUR";
break; break;
case "英鎊": case "英鎊":
case "英镑":
currency = "GBP"; currency = "GBP";
break; break;
case "新加坡元": case "新加坡元":
...@@ -972,7 +994,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -972,7 +994,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
insuranceCompanyBizId, insuranceCompanyBizId,
reconciliationCompany, reconciliationCompany,
reconciliationCompanyCode, reconciliationCompanyCode,
reconciliationCompanyBizId reconciliationCompanyBizId,
policyFollow.getProfessionalInvestor()
); );
} }
......
package com.yd.csf.service.service.impl; package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.common.enums.ResultCode; import com.yd.common.enums.ResultCode;
...@@ -41,6 +42,12 @@ public class PolicyPolicyholderServiceImpl extends ServiceImpl<PolicyPolicyholde ...@@ -41,6 +42,12 @@ public class PolicyPolicyholderServiceImpl extends ServiceImpl<PolicyPolicyholde
policyPolicyholder.setUpdateTime(new Date()); policyPolicyholder.setUpdateTime(new Date());
return this.updateById(policyPolicyholder); return this.updateById(policyPolicyholder);
} }
@Override
public PolicyPolicyholder queryOne(String policyBizId) {
return this.baseMapper.selectOne(new LambdaQueryWrapper<PolicyPolicyholder>()
.eq(PolicyPolicyholder::getPolicyBizId,policyBizId).last(" limit 1 "));
}
} }
......
package com.yd.csf.service.vo; package com.yd.csf.service.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -39,4 +40,13 @@ public class CommissionExpectedStatisticsVO { ...@@ -39,4 +40,13 @@ public class CommissionExpectedStatisticsVO {
*/ */
@Schema(description = "总保单数") @Schema(description = "总保单数")
private Integer totalPolicyCount; private Integer totalPolicyCount;
/**
* 总保费(HKD)
*/
@Schema(description = "总保费(HKD)")
private BigDecimal totalPremium;
@JsonIgnore
private String policyNos;
} }
package com.yd.csf.service.vo; package com.yd.csf.service.vo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.csf.service.enums.CommissionStatusEnum;
import com.yd.csf.service.model.Commission; import com.yd.csf.service.model.Commission;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -153,9 +154,9 @@ public class CommissionVO implements Serializable { ...@@ -153,9 +154,9 @@ public class CommissionVO implements Serializable {
private Date commissionDate; private Date commissionDate;
/** /**
* 当前来佣比例 * 当前来佣比例 (实佣率=实际入账金额/结算汇率/每期保费)
*/ */
@Schema(description = "当前来佣比例") @Schema(description = "当前来佣比例 (实佣率=实际入账金额/结算汇率/每期保费)")
private BigDecimal currentCommissionRatio; private BigDecimal currentCommissionRatio;
/** /**
...@@ -165,6 +166,12 @@ public class CommissionVO implements Serializable { ...@@ -165,6 +166,12 @@ public class CommissionVO implements Serializable {
private String commissionStatus; private String commissionStatus;
/** /**
* 比对状态名称
*/
@Schema(description = "比对状态 0=未比对 1=比对成功 2=比对失败 3=未匹配到预计入账记录 字典值: csf_commission_status")
private String commissionStatusName;
/**
* 预计来佣业务id * 预计来佣业务id
*/ */
@Schema(description = "预计来佣业务id") @Schema(description = "预计来佣业务id")
...@@ -189,9 +196,9 @@ public class CommissionVO implements Serializable { ...@@ -189,9 +196,9 @@ public class CommissionVO implements Serializable {
private BigDecimal paidRatio; private BigDecimal paidRatio;
/** /**
* 待入账比例 * 达成率缺口= 1 - 本期实佣率/产品本期来佣率
*/ */
@Schema(description = "待入账比例") @Schema(description = "达成率缺口= 1 - 累积实佣率/产品本期来佣率")
private BigDecimal pendingRatio; private BigDecimal pendingRatio;
/** /**
...@@ -246,7 +253,9 @@ public class CommissionVO implements Serializable { ...@@ -246,7 +253,9 @@ public class CommissionVO implements Serializable {
} }
CommissionVO commissionVO = new CommissionVO(); CommissionVO commissionVO = new CommissionVO();
BeanUtils.copyProperties(commission, commissionVO); BeanUtils.copyProperties(commission, commissionVO);
commissionVO.setCommissionStatus(commission.getStatus()); commissionVO.setCommissionStatus(commission.getStatus());
commissionVO.setCommissionStatusName(CommissionStatusEnum.toLabel(commission.getStatus()));
return commissionVO; return commissionVO;
} }
} }
package com.yd.csf.service.vo; package com.yd.csf.service.vo;
import cn.hutool.core.collection.CollUtil;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.yd.base.feign.dto.ApiCertificateDto; import com.yd.base.feign.dto.ApiCertificateDto;
import com.yd.csf.service.dto.TaxCountry; import com.yd.csf.service.dto.TaxCountry;
...@@ -8,6 +9,7 @@ import com.yd.csf.service.utils.GSONUtil; ...@@ -8,6 +9,7 @@ import com.yd.csf.service.utils.GSONUtil;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import java.io.Serializable; import java.io.Serializable;
...@@ -397,20 +399,31 @@ public class CustomerVO implements Serializable { ...@@ -397,20 +399,31 @@ public class CustomerVO implements Serializable {
} }
CustomerVO customerVO = new CustomerVO(); CustomerVO customerVO = new CustomerVO();
BeanUtils.copyProperties(customer, customerVO); BeanUtils.copyProperties(customer, customerVO);
// 解析地址列表(保持不变)
if (ObjectUtils.isNotEmpty(customer.getAddressList())) { if (ObjectUtils.isNotEmpty(customer.getAddressList())) {
List<AddressVO> addressList = GSONUtil.fromJson(customer.getAddressList(), new TypeToken<List<AddressVO>>() { List<AddressVO> addressList = GSONUtil.fromJson(customer.getAddressList(), new TypeToken<List<AddressVO>>() {}.getType());
}.getType());
customerVO.setAddressList(addressList); customerVO.setAddressList(addressList);
} }
// 解析税务列表(保持不变)
if (ObjectUtils.isNotEmpty(customer.getTaxList())) { if (ObjectUtils.isNotEmpty(customer.getTaxList())) {
List<TaxCountry> taxList = GSONUtil.fromJson((String) customer.getTaxList(), new TypeToken<List<TaxCountry>>() { List<TaxCountry> taxList = GSONUtil.fromJson((String) customer.getTaxList(), new TypeToken<List<TaxCountry>>() {}.getType());
}.getType());
customerVO.setApiTaxationDtoList(taxList); customerVO.setApiTaxationDtoList(taxList);
} }
// 解析证件列表
if (ObjectUtils.isNotEmpty(customer.getCertificateList())) { if (ObjectUtils.isNotEmpty(customer.getCertificateList())) {
List<ApiCertificateDto> certificateList = GSONUtil.fromJson((String) customer.getCertificateList(), new TypeToken<List<ApiCertificateDto>>() { List<ApiCertificateDto> certificateList = GSONUtil.fromJson((String) customer.getCertificateList(), new TypeToken<List<ApiCertificateDto>>() {}.getType());
}.getType());
customerVO.setApiCertificateDtoList(certificateList); 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; return customerVO;
......
package com.yd.csf.service.vo; package com.yd.csf.service.vo;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.csf.service.model.ExpectedFortune; import com.yd.csf.service.enums.CurrencyEnum;
import com.yd.csf.service.model.Fortune; import com.yd.csf.service.model.Fortune;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -9,7 +11,6 @@ import org.springframework.beans.BeanUtils; ...@@ -9,7 +11,6 @@ import org.springframework.beans.BeanUtils;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date; import java.util.Date;
...@@ -232,7 +233,7 @@ public class FortuneVO implements Serializable { ...@@ -232,7 +233,7 @@ public class FortuneVO implements Serializable {
*/ */
@Schema(description = "出账日(实)") @Schema(description = "出账日(实)")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private LocalDate actualPayoutDate; private Date actualPayoutDate;
/** /**
* 是否含税 0=No, 1=Yes * 是否含税 0=No, 1=Yes
...@@ -328,12 +329,16 @@ public class FortuneVO implements Serializable { ...@@ -328,12 +329,16 @@ public class FortuneVO implements Serializable {
} }
FortuneVO fortuneVO = new FortuneVO(); FortuneVO fortuneVO = new FortuneVO();
BeanUtils.copyProperties(fortune, fortuneVO); BeanUtils.copyProperties(fortune, fortuneVO);
// 待出账比例 // 计算待出账比例
if (fortuneVO.getCurrentPaymentRatio() != null) { BigDecimal currentPaymentRatio = ObjectUtil.defaultIfNull(fortuneVO.getCurrentPaymentRatio(), BigDecimal.ZERO);
fortuneVO.setFortuneUnpaidRatio(BigDecimal.valueOf(100).subtract(fortuneVO.getCurrentPaymentRatio())); fortuneVO.setCurrentPaymentRatio(currentPaymentRatio);
} else { fortuneVO.setFortuneUnpaidRatio(BigDecimal.valueOf(100).subtract(currentPaymentRatio));
fortuneVO.setFortuneUnpaidRatio(BigDecimal.valueOf(100));
} fortuneVO.setFortunePaidAmount(fortune.getCurrentPaymentHkdAmount());
fortuneVO.setFortuneUnpaidAmount(NumberUtil.sub(fortune.getHkdAmount(), fortune.getCurrentPaymentHkdAmount()));
fortuneVO.setCurrency(CurrencyEnum.toLabel(fortune.getCurrency()));
fortuneVO.setPolicyCurrency((CurrencyEnum.toLabel(fortune.getPolicyCurrency())));
return fortuneVO; return fortuneVO;
} }
......
...@@ -176,7 +176,7 @@ public class PolicyFollowDetailVO implements Serializable { ...@@ -176,7 +176,7 @@ public class PolicyFollowDetailVO implements Serializable {
* 保障期限 * 保障期限
*/ */
@Schema(description = "保障期限") @Schema(description = "保障期限")
private Integer guaranteePeriod; private String guaranteePeriod;
/** /**
* 保额(重疾险) * 保额(重疾险)
...@@ -514,6 +514,12 @@ public class PolicyFollowDetailVO implements Serializable { ...@@ -514,6 +514,12 @@ public class PolicyFollowDetailVO implements Serializable {
@Schema(description = "保单类型: 1-电子, 2-纸质") @Schema(description = "保单类型: 1-电子, 2-纸质")
private String policyType; private String policyType;
/**
* 专业投资者: Yes/No
*/
@Schema(description = "专业投资者: Yes/No")
private String professionalInvestor;
@TableField(exist = false) @TableField(exist = false)
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
...@@ -141,6 +141,12 @@ public class PolicyFollowVO implements Serializable { ...@@ -141,6 +141,12 @@ public class PolicyFollowVO implements Serializable {
private String policyType; private String policyType;
/** /**
* 专业投资者: Yes/No
*/
@Schema(description = "专业投资者: Yes/No")
private String professionalInvestor;
/**
* 邮寄物品 * 邮寄物品
*/ */
@Schema(description = "邮寄物品") @Schema(description = "邮寄物品")
......
...@@ -53,9 +53,10 @@ ...@@ -53,9 +53,10 @@
SELECT SELECT
IFNULL(SUM(expected_amount),0) AS totalAmount, IFNULL(SUM(expected_amount),0) AS totalAmount,
IFNULL(SUM(paid_amount),0) AS totalPaidAmount, IFNULL(SUM(paid_amount),0) AS totalPaidAmount,
COUNT(DISTINCT policy_no) AS totalPolicyCount COUNT(DISTINCT policy_no) AS totalPolicyCount,
GROUP_CONCAT(DISTINCT policy_no) AS policyNos
FROM FROM
commission_expected commission_expected ce
<where> <where>
<if test="expectedIds != null and expectedIds.size > 0"> <if test="expectedIds != null and expectedIds.size > 0">
id IN id IN
...@@ -74,7 +75,7 @@ ...@@ -74,7 +75,7 @@
MAX(ce.reconciliation_company_biz_id) as reconciliationCompanyBizId, MAX(ce.reconciliation_company_biz_id) as reconciliationCompanyBizId,
ce.commission_period as commissionPeriod, ce.commission_period as commissionPeriod,
MAX(ce.total_period) as totalPeriod, MAX(ce.total_period) as totalPeriod,
DATE_ADD(DATE_ADD(MAX(p.effective_date), INTERVAL 2 MONTH), INTERVAL (ce.commission_period - 1) YEAR) as commissionDate, MAX(ce.commission_date) as commissionDate,
ifnull(avg(ce.commission_ratio), 0) as commissionRatio, ifnull(avg(ce.commission_ratio), 0) as commissionRatio,
ifnull(sum(ce.amount), 0) as amount, ifnull(sum(ce.amount), 0) as amount,
MAX(ce.currency) as currency, MAX(ce.currency) as currency,
......
...@@ -107,7 +107,7 @@ ...@@ -107,7 +107,7 @@
) as expectePaidAmount, ) as expectePaidAmount,
COUNT(DISTINCT c.policy_no) as totalPolicyCount, COUNT(DISTINCT c.policy_no) as totalPolicyCount,
COALESCE(p.total_payment_premium * e.default_exchange_rate, 0) AS totalPremium, COALESCE(p.total_payment_premium * e.default_exchange_rate, 0) AS totalPremium,
COUNT(DISTINCT c.reconciliation_company) as reconciliationCompanyCount, COUNT(DISTINCT c.reconciliation_company_code) as reconciliationCompanyCount,
COUNT(DISTINCT c.id) as totalCompareCommissionCount, COUNT(DISTINCT c.id) as totalCompareCommissionCount,
SUM(CASE WHEN c.status = '1' THEN 1 ELSE 0 END) as successCompareCommissionCount, SUM(CASE WHEN c.status = '1' THEN 1 ELSE 0 END) as successCompareCommissionCount,
SUM(CASE WHEN c.status = '2' THEN 1 ELSE 0 END) as failedCompareCommissionCount SUM(CASE WHEN c.status = '2' THEN 1 ELSE 0 END) as failedCompareCommissionCount
......
...@@ -29,14 +29,10 @@ ...@@ -29,14 +29,10 @@
ifnull(sum(ef.hkd_amount),0) as totalExpectedAmount, ifnull(sum(ef.hkd_amount),0) as totalExpectedAmount,
ifnull(sum(ef.paid_amount),0) as totalPaidAmount, ifnull(sum(ef.paid_amount),0) as totalPaidAmount,
ifnull(sum(ef.unpaid_amount),0) as totalUnpaidAmount, ifnull(sum(ef.unpaid_amount),0) as totalUnpaidAmount,
MAX(e.total_payment_premium) * MAX(ef.default_exchange_rate) as totalPremiumAmount, MAX(p.total_payment_premium) * MAX(ef.default_exchange_rate) as totalPremiumAmount,
count(distinct ef.policy_no) as totalPolicyCount count(distinct ef.policy_no) as totalPolicyCount
from expected_fortune ef from expected_fortune ef
LEFT JOIN ( LEFT JOIN policy p ON ef.policy_no = p.policy_no
SELECT p.policy_no, p.total_payment_premium
FROM policy p
GROUP BY policy_no
) e ON ef.policy_no = e.policy_no
<where> <where>
<if test="expectedFortuneIds != null and expectedFortuneIds.size > 0"> <if test="expectedFortuneIds != null and expectedFortuneIds.size > 0">
ef.id in ef.id in
......
...@@ -8,6 +8,9 @@ ...@@ -8,6 +8,9 @@
<id property="id" column="id" /> <id property="id" column="id" />
<result property="fortuneAccountBizId" column="fortune_account_biz_id" /> <result property="fortuneAccountBizId" column="fortune_account_biz_id" />
<result property="broker" column="broker" /> <result property="broker" column="broker" />
<result property="brokerBizId" column="broker_biz_id" />
<result property="team" column="team" />
<result property="teamBizId" column="team_biz_id" />
<result property="currency" column="currency" /> <result property="currency" column="currency" />
<result property="amount" column="amount" /> <result property="amount" column="amount" />
<result property="hkdAmount" column="hkd_amount" /> <result property="hkdAmount" column="hkd_amount" />
...@@ -23,7 +26,8 @@ ...@@ -23,7 +26,8 @@
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id,fortune_account_biz_id,broker,currency,amount,hkd_amount,status,fortune_account_date,content,remark, id,fortune_account_biz_id,broker,broker_biz_id,team,team_biz_id,
currency,amount,hkd_amount,status,fortune_account_date,content,remark,
is_deleted,creator_id,updater_id,create_time,update_time is_deleted,creator_id,updater_id,create_time,update_time
</sql> </sql>
</mapper> </mapper>
...@@ -75,6 +75,7 @@ ...@@ -75,6 +75,7 @@
<result property="brokerSignDate" column="broker_sign_date" /> <result property="brokerSignDate" column="broker_sign_date" />
<result property="insurerMailingDate" column="insurer_mailing_date" /> <result property="insurerMailingDate" column="insurer_mailing_date" />
<result property="customerSignDate" column="customer_sign_date" /> <result property="customerSignDate" column="customer_sign_date" />
<result property="professionalInvestor" column="professional_investor" />
<result property="attachments" column="attachments" /> <result property="attachments" column="attachments" />
<result property="remark" column="remark" /> <result property="remark" column="remark" />
<result property="isDeleted" column="is_deleted" /> <result property="isDeleted" column="is_deleted" />
...@@ -82,6 +83,7 @@ ...@@ -82,6 +83,7 @@
<result property="updaterId" column="updater_id" /> <result property="updaterId" column="updater_id" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="policyType" column="policy_type" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
...@@ -98,8 +100,8 @@ ...@@ -98,8 +100,8 @@
initial_premium,initial_premium_total,initial_payment_status,initial_premium_discount, initial_premium,initial_premium_total,initial_payment_status,initial_premium_discount,
mailing_method,renewal_payment_method,dividend_distribution_method,delivery_no, mailing_method,renewal_payment_method,dividend_distribution_method,delivery_no,
policy_levy,initial_premium_paid,initial_premium_due,latest_payment_date,broker_sign_date, policy_levy,initial_premium_paid,initial_premium_due,latest_payment_date,broker_sign_date,
insurer_mailing_date,customer_sign_date,attachments,remark,is_deleted, insurer_mailing_date,customer_sign_date,professional_investor,attachments,remark,is_deleted,
creator_id,updater_id,create_time,update_time creator_id,updater_id,create_time,update_time,policy_type,is_join
</sql> </sql>
<select id="queryPolicyReportData" resultType="com.yd.csf.service.dto.PolicyReportData"> <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