Commit 088170a8 by zhangxingmin

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

parents 99069997 e59b9174
package com.yd.csf.api.controller;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.auth.core.dto.AuthUserDto;
......@@ -11,12 +12,16 @@ import com.yd.common.result.Result;
import com.yd.csf.api.dto.CommissionExcelDTO;
import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.CommissionStatusEnum;
import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.CommissionCompareRecord;
import com.yd.csf.service.model.CommissionEditRecord;
import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.service.CommissionCompareRecordService;
import com.yd.csf.service.service.CommissionEditRecordService;
import com.yd.csf.service.service.CommissionExpectedService;
import com.yd.csf.service.service.CommissionService;
import com.yd.csf.service.vo.CommissionStatisticsVO;
import com.yd.csf.service.vo.CommissionVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.collections4.CollectionUtils;
......@@ -56,6 +61,13 @@ public class ApiCommissionController {
@Resource
private CommissionExpectedService commissionExpectedService;
@Resource
private CommissionEditRecordService commissionEditRecordService;
@Resource
private CommissionCompareRecordService commissionCompareRecordService;
@PostMapping("/upload/excel")
@Operation(summary = "上传保单来佣Excel文件")
......@@ -140,13 +152,17 @@ public class ApiCommissionController {
Integer commissionPeriod = commission.getCommissionPeriod();
String commissionName = commission.getCommissionName();
CommissionExpected expected = getCommissionExpected(expectedList, policyNo, commissionPeriod, commissionName);
if (expected != null) {
commissionService.compareWithExpected(commission, expected);
} else {
// 查询预计来佣
CommissionExpected commissionExpected;
try {
commissionExpected = commissionService.queryByCommission(commission);
// 对比预计来佣
commissionService.compareWithExpected(commission.getPremium(), commission, commissionExpected);
commissionExpectedService.updateById(commissionExpected);
} catch (Exception e) {
// 预计来佣不存在,来佣状态设置为 比对失败
commission.setStatus("2");
commission.setRemark("未找到当前来佣对应的预计来佣,比对失败");
commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue());
commission.setRemark(e.getMessage());
}
}
......@@ -183,7 +199,6 @@ public class ApiCommissionController {
return Result.success(commissionService.generateFortune(generateFortuneRequest));
}
/**
* 创建保单来佣
*
......@@ -201,6 +216,24 @@ public class ApiCommissionController {
}
/**
* 来佣比对记录列表
*/
@PostMapping("/compare/records")
@Operation(summary = "来佣比对记录列表")
public Result<Page<CommissionCompareRecord>> getCommissionCompareRecords(@RequestBody CommissionCompareRecordQueryRequest queryRequest) {
if (StringUtils.isBlank(queryRequest.getCommissionBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "commissionBizId不能为空");
}
// 查询来佣比对记录
Page<CommissionCompareRecord> page = commissionCompareRecordService.page(new Page<>(queryRequest.getPageNo(), queryRequest.getPageSize()),
new LambdaQueryWrapper<CommissionCompareRecord>()
.eq(CommissionCompareRecord::getCommissionBizId, queryRequest.getCommissionBizId())
.orderByAsc(CommissionCompareRecord::getCommissionPeriod));
return Result.success(page);
}
/**
* 删除来佣
*
* @param deleteRequest
......@@ -251,6 +284,25 @@ public class ApiCommissionController {
}
/**
* 来佣操作记录列表
*
* @param queryRequest
* @return
*/
@PostMapping("/edit/records")
@Operation(summary = "来佣操作记录列表")
public Result<Page<CommissionEditRecord>> getCommissionEditRecords(@RequestBody CommissionEditRecordQueryRequest queryRequest) {
if (StringUtils.isBlank(queryRequest.getCommissionBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "commissionBizId不能为空");
}
// 查询来佣操作记录
Page<CommissionEditRecord> page = commissionEditRecordService.page(new Page<>(queryRequest.getPageNo(), queryRequest.getPageSize()), new LambdaQueryWrapper<CommissionEditRecord>()
.eq(CommissionEditRecord::getCommissionBizId, queryRequest.getCommissionBizId())
.orderByAsc(CommissionEditRecord::getSeq));
return Result.success(page);
}
/**
* 计算统计数据 总金额、总入账金额、待入账金额、已入账比例(已入账金额/总金额)、总保单数
*/
@PostMapping("/statistics")
......
......@@ -113,6 +113,7 @@ public class ApiCommissionExpectedController {
}
long current = CommissionExpectedQueryRequest.getPageNo();
long size = CommissionExpectedQueryRequest.getPageSize();
// 查询数据库
Page<CommissionExpected> CommissionExpectedPage = CommissionExpectedService.page(new Page<>(current, size),
CommissionExpectedService.getQueryWrapper(CommissionExpectedQueryRequest));
......
package com.yd.csf.api.controller;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yd.auth.core.dto.AuthUserDto;
......@@ -15,10 +17,10 @@ import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.model.Fortune;
import com.yd.csf.service.model.FortuneAccount;
import com.yd.csf.service.model.FortuneAccountEditRecord;
import com.yd.csf.service.service.FortuneAccountEditRecordService;
import com.yd.csf.service.service.FortuneAccountService;
import com.yd.csf.service.service.FortuneService;
import com.yd.csf.service.vo.FortuneAccountVO;
import com.yd.csf.service.vo.FortuneVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.collections4.CollectionUtils;
......@@ -34,8 +36,8 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
......@@ -59,6 +61,9 @@ public class ApiFortuneController {
@Resource
private FortuneAccountService fortuneAccountService;
@Resource
private FortuneAccountEditRecordService fortuneAccountEditRecordService;
@PostMapping("/upload/excel")
@Operation(summary = "上传保单发佣Excel文件")
......@@ -187,7 +192,7 @@ public class ApiFortuneController {
Result<String> errorResult = Result.fail(
ResultCode.FAIL.getCode(),
"文件下载失败: " + e.getMessage()
e.getMessage()
);
response.getWriter().write(new ObjectMapper().writeValueAsString(errorResult));
......@@ -203,19 +208,43 @@ public class ApiFortuneController {
*/
@PostMapping("/list/page/fortuneAccount")
@Operation(summary = "分页获取出账列表")
public Result<Page<FortuneAccountVO>> listAccountByPage(@RequestBody FortuneAccountQueryRequest fortuneAccountQueryRequest,
public Result<Map<String, Object>> listAccountByPage(@RequestBody FortuneAccountQueryRequest fortuneAccountQueryRequest,
HttpServletRequest request) {
long current = fortuneAccountQueryRequest.getPageNo();
long size = fortuneAccountQueryRequest.getPageSize();
// 查询数据库
QueryWrapper<FortuneAccount> queryWrapper = fortuneAccountService.getQueryWrapper(fortuneAccountQueryRequest);
Page<FortuneAccount> fortunePage = fortuneAccountService.page(new Page<>(current, size),
fortuneAccountService.getQueryWrapper(fortuneAccountQueryRequest));
queryWrapper);
// 统计数据 总金额、总人数
List<FortuneAccount> fortuneAccountList = fortuneAccountService.list(queryWrapper);
FortuneAccountStatisticsVO statisticsVO = fortuneAccountService.getFortuneAccountStatistics(fortuneAccountList.stream()
.map(FortuneAccount::getId)
.collect(Collectors.toList()));
// 获取封装类
return Result.success(fortuneAccountService.getFortuneAccountVOPage(fortunePage));
Map<String, Object> result = new HashMap<>();
result.put("page", fortuneAccountService.getFortuneAccountVOPage(fortunePage));
result.put("statisticsVO", statisticsVO);
return Result.success(result);
}
/**
* 统计数据 总金额、总人数
*
* @param fortuneAccountQueryRequest
* @param request
* @return
*/
@PostMapping("/fortuneAccount/statistics")
@Operation(summary = "统计数据 总金额、总人数")
public Result<FortuneAccountStatisticsVO> getFortuneAccountStatistics(@RequestBody FortuneAccountStatisticsQueryRequest fortuneAccountQueryRequest,
HttpServletRequest request) {
return Result.success(fortuneAccountService.getFortuneAccountStatistics(fortuneAccountQueryRequest.getFortuneAccountIdList()));
}
/**
* 创建出账
*
* @param fortuneAccountAddRequest
......@@ -283,6 +312,24 @@ public class ApiFortuneController {
}
/**
* 修订记录
*
* @param queryRequest
* @return
*/
@PostMapping("/editRecords/fortuneAccount")
@Operation(summary = "修订记录")
public Result<Page<FortuneAccountEditRecord>> getFortuneAccountEditRecords(@RequestBody FortuneAccountEditRecordQueryRequest queryRequest) {
if (StringUtils.isBlank(queryRequest.getFortuneAccountBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "fortuneAccountBizId不能为空");
}
Page<FortuneAccountEditRecord> page = fortuneAccountEditRecordService.page(new Page<>(queryRequest.getPageNo(), queryRequest.getPageSize()),
new QueryWrapper<FortuneAccountEditRecord>()
.eq("fortune_account_biz_id", queryRequest.getFortuneAccountBizId()));
return Result.success(page);
}
/**
* 完成出账
*
* @param completeFortuneAccountRequest
......@@ -411,16 +458,37 @@ public class ApiFortuneController {
*/
@PostMapping("/list/page/vo")
@Operation(summary = "分页获取保单发佣列表")
public Result<Page<FortuneVO>> listFortuneByPage(@RequestBody FortuneQueryRequest fortuneQueryRequest,
public Result<Map<String, Object>> listFortuneByPage(@RequestBody FortuneQueryRequest fortuneQueryRequest,
HttpServletRequest request) {
long current = fortuneQueryRequest.getPageNo();
long size = fortuneQueryRequest.getPageSize();
// 查询数据库
// 查询条件
Wrapper<Fortune> queryWrapper = fortuneService.getQueryWrapper(fortuneQueryRequest);
// 分页查询
Page<Fortune> fortunePage = fortuneService.page(new Page<>(current, size),
fortuneService.getQueryWrapper(fortuneQueryRequest));
// 获取封装类
return Result.success(fortuneService.getFortuneVOPage(fortunePage));
queryWrapper);
// 查询统计数据
List<Fortune> fortuneList = fortuneService.list(queryWrapper);
FortuneStatisticsVO statisticsVO = fortuneService.getFortuneStatistics(fortuneList.stream().map(Fortune::getId).collect(Collectors.toList()));
// 组装返回结果
Map<String, Object> result = new HashMap<>();
result.put("statisticsVO", statisticsVO);
result.put("page", fortuneService.getFortuneVOPage(fortunePage));
return Result.success(result);
}
/**
* 计算统计数据 总出账金额、对应这些保单的总入账金额、总保单数
*/
@PostMapping("/statistics")
@Operation(summary = "计算统计数据 总出账金额、对应这些保单的总入账金额、总保单数")
public Result<FortuneStatisticsVO> getFortuneStatistics(@RequestBody FortuneStatisticsRequest statisticsRequest) {
if (CollectionUtils.isEmpty(statisticsRequest.getFortuneIdList())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "fortuneId列表不能为空");
}
return Result.success(fortuneService.getFortuneStatistics(statisticsRequest.getFortuneIdList()));
}
}
......@@ -27,6 +27,7 @@ import com.yd.csf.service.service.*;
import com.yd.csf.service.vo.PolicyFollowDetailVO;
import com.yd.csf.service.vo.PolicyFollowRecordVO;
import com.yd.csf.service.vo.PolicyFollowVO;
import com.yd.product.feign.client.expectedcommissionratio.ApiExpectedCommissionRatioFeignClient;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.collections4.CollectionUtils;
......@@ -42,7 +43,6 @@ import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.util.*;
......@@ -81,10 +81,10 @@ public class ApiPolicyFollowController {
private PolicyFollowRecordService policyFollowRecordService;
@Resource
private PolicyFollowFileService policyFollowFileService;
@Resource
private PolicyReportPdfService policyReportPdfService;
@Resource
private ApiExpectedCommissionRatioFeignClient apiExpectedCommissionRatioFeignClient;
@PostMapping("/upload/excel")
......@@ -159,14 +159,14 @@ public class ApiPolicyFollowController {
// 获取当前登录用户的ID
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
String loginUserId = currentLoginUser.getId().toString();
// 保存预计来佣
List<CommissionExpected> commissionExpectedList = new ArrayList<>();
for (CommissionExcelDTO commissionExcelDTO : dataList) {
CommissionExpected commissionExpected = CommissionExcelDTO.convertToCommissionExpectedObj(commissionExcelDTO, loginUserId);
commissionExpected.setReconciliationCompanyBizId(reconciliationCompanyMap.get(commissionExcelDTO.getReconciliationCompany()));
commissionExpectedList.add(commissionExpected);
}
commissionExpectedService.saveBatch(commissionExpectedList);
// todo 保存预计来佣, 查询产品获取预计来佣比例
// List<CommissionExpected> commissionExpectedList = new ArrayList<>();
// for (CommissionExcelDTO commissionExcelDTO : dataList) {
// CommissionExpected commissionExpected = CommissionExcelDTO.convertToCommissionExpectedObj(commissionExcelDTO, loginUserId);
// commissionExpected.setReconciliationCompanyBizId(reconciliationCompanyMap.get(commissionExcelDTO.getReconciliationCompany()));
// commissionExpectedList.add(commissionExpected);
// }
// commissionExpectedService.saveBatch(commissionExpectedList);
return Result.success(true);
}
......@@ -463,6 +463,27 @@ public class ApiPolicyFollowController {
if (policyFollow == null) {
return Result.fail(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
}
// 异步查询产品上架信息表
if (StringUtils.isNotBlank(policyFollow.getPolicyNo()) && StringUtils.isBlank(policyFollow.getProductLaunchBizId())) {
// 异步查询产品上架信息表
// ApiExpectedCommissionRatioPageRequest apiExpectedCommissionRatioPageRequest = new ApiExpectedCommissionRatioPageRequest();
// apiExpectedCommissionRatioPageRequest.setPageNo(1);
// apiExpectedCommissionRatioPageRequest.setPageSize(100);
// apiExpectedCommissionRatioPageRequest.setWarrantyPeriod(String.valueOf(policyFollow.getPaymentTerm()));
// Result<Page<ApiExpectedCommissionRatioPageResponse>> result = apiExpectedCommissionRatioFeignClient.page(apiExpectedCommissionRatioPageRequest);
// if (result != null && result.getData() != null) {
// List<ApiExpectedCommissionRatioPageResponse> records = (List<ApiExpectedCommissionRatioPageResponse>) result.getData();
// if (CollectionUtils.isNotEmpty(records)) {
// policyFollow.setProductLaunchBizId(records.get(0).getProductLaunchBizId());
// }
// }
PolicyFollow updatePolicyFollow = new PolicyFollow();
updatePolicyFollow.setId(policyFollow.getId());
updatePolicyFollow.setProductLaunchBizId("product_launch_kudwRqXsz1");
policyFollowService.updateById(updatePolicyFollow);
}
// 获取封装类
return Result.success(policyFollowService.getPolicyFollowVO(policyFollow));
......@@ -565,44 +586,26 @@ public class ApiPolicyFollowController {
public void previewPolicyReport(@RequestParam("policyBizId") String policyBizId,
HttpServletResponse response) {
PolicyFollow policyFollow = policyFollowService.getByPolicyBizId(policyBizId);
if (policyFollow == null) {
PolicyReportData reportData = policyFollowService.queryPolicyReportData(policyBizId);
if (reportData == null) {
throw new BusinessException(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
}
PolicyReportData reportData = new PolicyReportData();
// 填充数据
// reportData.setStartTime("2025-10-30");
// reportData.setEndTime("2025-10-30");
// reportData.setLocation("香港");
// reportData.setServiceManager("Vickie");
// reportData.setPolicyHolder(policyFollow.getPolicyHolder());
// reportData.setPolicyNumber(policyFollow.getPolicyNo());
// reportData.setInsuranceCompany(policyFollow.getInsurer());
// reportData.setInsuredPerson(policyFollow.getInsured());
// reportData.setInsurancePlan(policyFollow.getProductName());
// reportData.setInsuredAge(0);
// reportData.setCurrency(policyFollow.getCurrency());
// reportData.setPaymentPeriod((Integer) policyFollow.getPaymentTerm());
// reportData.setAnnualAmount(policyFollow.getPaymentPremium());
// reportData.setTotalPrepayment(BigDecimal.ZERO);
// reportData.setPremiumFee(BigDecimal.ZERO);
reportData.setStartTime("2025-10-30");
reportData.setEndTime("2025-10-30");
reportData.setLocation("香港");
reportData.setServiceManager("Vickie");
reportData.setPolicyHolder("policyHolder");
reportData.setPolicyNumber("B635379588");
reportData.setInsuranceCompany("友邦保险");
reportData.setInsuredPerson("insuredPerson");
reportData.setInsurancePlan("环宇盈活储蓄保险计划");
reportData.setInsuredAge(1);
reportData.setCurrency("HKD");
reportData.setPaymentPeriod(5);
reportData.setAnnualAmount(BigDecimal.valueOf(30000.08));
reportData.setTotalPrepayment(BigDecimal.valueOf(150064.70));
reportData.setPremiumFee(BigDecimal.valueOf(12.86));
// reportData.setPolicyHolder("policyHolder");
// reportData.setPolicyNumber("B635379588");
// reportData.setInsuranceCompany("友邦保险");
// reportData.setInsuredPerson("insuredPerson");
// reportData.setInsurancePlan("环宇盈活储蓄保险计划");
// reportData.setInsuredAge(1);
// reportData.setCurrency("HKD");
// reportData.setPaymentPeriod(5);
// reportData.setAnnualAmount(BigDecimal.valueOf(30000.08));
// reportData.setTotalPrepayment(BigDecimal.valueOf(150064.70));
// reportData.setPremiumFee(BigDecimal.valueOf(12.86));
try {
log.info("收到PDF生成请求: {}", reportData);
......
......@@ -17,6 +17,9 @@ public class CommissionExcelDTO {
@ExcelProperty("保单号")
private String policyNo;
@ExcelProperty("保费")
private String premium;
@ExcelProperty("对账公司")
private String reconciliationCompany;
......@@ -35,6 +38,9 @@ public class CommissionExcelDTO {
@ExcelProperty("来佣币种")
private String currency;
@ExcelProperty("结算汇率")
private String exchangeRate;
@ExcelProperty("来佣日期")
private Date commissionDate;
......@@ -48,6 +54,7 @@ public class CommissionExcelDTO {
Commission entity = new Commission();
// 字段映射
entity.setPolicyNo(data.getPolicyNo());
entity.setPremium(data.getPremium());
entity.setCommissionBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode()));
entity.setReconciliationCompany(data.getReconciliationCompany());
entity.setCommissionPeriod(data.getCommissionPeriod());
......@@ -55,6 +62,7 @@ public class CommissionExcelDTO {
entity.setCommissionName(data.getCommissionName());
entity.setAmount(data.getAmount());
entity.setCurrency(data.getCurrency());
entity.setExchangeRate(data.getExchangeRate());
entity.setCommissionDate(data.getCommissionDate());
entity.setRemark(data.getRemark());
entity.setStatus(null);
......@@ -81,8 +89,9 @@ public class CommissionExcelDTO {
entity.setCommissionPeriod(data.getCommissionPeriod());
entity.setTotalPeriod(data.getTotalPeriod());
entity.setCommissionName(data.getCommissionName());
entity.setAmount(data.getAmount());
entity.setCommissionRatio(data.getAmount());
entity.setCurrency(data.getCurrency());
entity.setCommissionRatio(null);
entity.setCommissionDate(data.getCommissionDate());
entity.setRemark(data.getRemark());
entity.setStatus("0");
......
......@@ -471,7 +471,7 @@ public class ApiAppointmentServiceImpl implements ApiAppointmentService {
}
//待跟进
follow.setStatus(PolicyFollowStatusEnum.FOLLOW_UP.getItemValue());
follow.setNextStatusList(policyFollowService.getNextStatus(PolicyFollowStatusEnum.CHECKING));
follow.setNextStatusList(policyFollowService.getNextStatus(PolicyFollowStatusEnum.FOLLOW_UP));
//TODO 保险公司业务id
// follow.setInsurerBizId();
//TODO 期交保费
......
......@@ -99,6 +99,12 @@
<artifactId>yd-oss-feign</artifactId>
<version>${project.version}</version>
</dependency>
<!-- yd-product-feign模块 -->
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-product-feign</artifactId>
<version>${project.version}</version>
</dependency>
<!-- 认证模块 -->
<dependency>
......
package com.yd.csf.service.dao;
import com.yd.csf.service.model.CommissionCompareRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Zhang Jianan
* @description 针对表【commission_compare_record(来佣比对记录表)】的数据库操作Mapper
* @createDate 2025-11-25 13:43:10
* @Entity generator.domain.CommissionCompareRecord
*/
public interface CommissionCompareRecordMapper extends BaseMapper<CommissionCompareRecord> {
}
package com.yd.csf.service.dao;
import com.yd.csf.service.model.CommissionEditRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Zhang Jianan
* @description 针对表【commission_edit_record(来佣修改记录表)】的数据库操作Mapper
* @createDate 2025-11-24 16:45:37
* @Entity generator.domain.CommissionEditRecord
*/
public interface CommissionEditRecordMapper extends BaseMapper<CommissionEditRecord> {
}
package com.yd.csf.service.dao;
import com.yd.csf.service.model.FortuneAccountEditRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Zhang Jianan
* @description 针对表【fortune_account_edit_record(薪资修订记录表)】的数据库操作Mapper
* @createDate 2025-11-25 11:14:20
* @Entity generator.domain.FortuneAccountEditRecord
*/
public interface FortuneAccountEditRecordMapper extends BaseMapper<FortuneAccountEditRecord> {
}
package com.yd.csf.service.dao;
import com.yd.csf.service.dto.FortuneStatisticsVO;
import com.yd.csf.service.model.Fortune;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author Zhang Jianan
......@@ -11,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface FortuneMapper extends BaseMapper<Fortune> {
FortuneStatisticsVO getFortuneStatistics(@Param("fortuneIdList") List<Long> fortuneIdList);
}
......
package com.yd.csf.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.csf.service.dto.PolicyReportData;
import com.yd.csf.service.model.PolicyFollow;
import org.apache.ibatis.annotations.Param;
/**
* @author Zhang Jianan
......@@ -11,6 +13,7 @@ import com.yd.csf.service.model.PolicyFollow;
*/
public interface PolicyFollowMapper extends BaseMapper<PolicyFollow> {
PolicyReportData queryPolicyReportData(@Param("policyBizId") String policyBizId);
}
......
......@@ -16,6 +16,12 @@ public class CommissionAddRequest implements Serializable {
@Schema(description = "保单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyNo;
/**
* 保费
*/
@Schema(description = "保费", requiredMode = Schema.RequiredMode.REQUIRED)
private String premium;
/**
* 对账公司
*/
......
package com.yd.csf.service.dto;
import com.yd.common.dto.PageDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class CommissionCompareRecordQueryRequest extends PageDto {
/**
* 来佣业务ID
*/
@Schema(description = "来佣业务ID")
private String commissionBizId;
}
package com.yd.csf.service.dto;
import com.yd.common.dto.PageDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class CommissionEditRecordQueryRequest extends PageDto {
/**
* 来佣业务ID
*/
@Schema(description = "来佣业务ID")
private String commissionBizId;
}
......@@ -63,10 +63,10 @@ public class CommissionExpectedAddDto {
private String commissionType;
/**
* 来佣金额
* 来佣比例 (%)
*/
@Schema(description = "来佣金额")
private BigDecimal amount;
@Schema(description = "来佣比例 (%)")
private BigDecimal commissionRatio;
/**
* 来佣币种
......
package com.yd.csf.service.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 编辑预计来佣请求
*
*/
@Data
public class CommissionExpectedEditRequest implements Serializable {
/**
* id
*/
private Long id;
/**
* 标题
*/
private String title;
/**
* 内容
*/
private String content;
/**
* 标签列表
*/
private List<String> tags;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -67,6 +67,17 @@ public class CommissionExpectedUpdateRequest implements Serializable {
@Schema(description = "来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionType;
/**
* 来佣比例
*/
@Schema(description = "来佣比例")
private BigDecimal commissionRatio;
/**
* 来佣比例
*/
private BigDecimal ratio;
/**
* 来佣金额
*/
......
......@@ -21,6 +21,12 @@ public class CommissionUpdateRequest implements Serializable {
@Schema(description = "保单号")
private String policyNo;
/**
* 保费
*/
@Schema(description = "保费")
private String premium;
/**
* 对账公司
*/
......
package com.yd.csf.service.dto;
import com.yd.common.dto.PageDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class FortuneAccountEditRecordQueryRequest extends PageDto {
/**
* 薪资记录业务ID
*/
@Schema(description = "薪资记录业务ID")
private String fortuneAccountBizId;
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class FortuneAccountStatisticsQueryRequest {
/**
* 薪资记录id列表
*/
@Schema(description = "薪资记录id列表")
private List<Long> fortuneAccountIdList;
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class FortuneAccountStatisticsVO {
/**
* 总金额
*/
@Schema(description = "总金额")
private BigDecimal totalAmount;
/**
* 总人数
*/
@Schema(description = "总人数")
private Object brokerCount;
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class FortuneStatisticsRequest {
/**
* fortuneId 列表
*/
@Schema(description = "fortuneId 列表")
private List<Long> fortuneIdList;
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class FortuneStatisticsVO {
/**
* 总出账金额
*/
@Schema(description = "总出账金额")
private BigDecimal totalOutAmount;
/**
* 总入账金额
*/
@Schema(description = "总入账金额")
private BigDecimal totalInAmount;
/**
* 总保单数
*/
@Schema(description = "总保单数")
private Long totalPolicyCount;
}
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
......@@ -30,6 +31,11 @@ public class Commission implements Serializable {
*/
private String policyNo;
/**
* 保费
*/
private String premium;
/**
* 对账公司
*/
......@@ -71,6 +77,26 @@ public class Commission implements Serializable {
private String currency;
/**
* 结算汇率
*/
private String exchangeRate;
/**
* 当前来佣比例
*/
private BigDecimal currentCommissionRatio;
/**
* 当期已入账来佣比例
*/
private BigDecimal periodPaidRatio;
/**
* 当期剩余来佣比例
*/
private BigDecimal periodPendingRatio;
/**
* 来佣日期
*/
private Date commissionDate;
......@@ -81,6 +107,26 @@ public class Commission implements Serializable {
private String status;
/**
* 预计来佣业务id
*/
private String commissionExpectedBizId;
/**
* 总金额
*/
private BigDecimal expectedAmount;
/**
* 已入账金额
*/
private BigDecimal paidAmount;
/**
* 待入账金额
*/
private BigDecimal pendingAmount;
/**
* 通用备注
*/
private String remark;
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 来佣比对记录表
* @TableName commission_compare_record
*/
@TableName(value ="commission_compare_record")
@Data
public class CommissionCompareRecord implements Serializable {
/**
* 主键
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 预计来佣业务id
*/
@Schema(description = "预计来佣业务id")
private String commissionExpectedBizId;
/**
* 保单来佣业务id
*/
@Schema(description = "保单来佣业务id")
private String commissionBizId;
/**
* 佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@Schema(description = "佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)")
private Integer commissionPeriod;
/**
* 总期数
*/
@Schema(description = "总期数")
private Integer totalPeriod;
/**
* 比对状态 1=比对成功 2=比对失败
*/
@Schema(description = "比对状态 1=比对成功 2=比对失败")
private String status;
/**
* 来佣币种
*/
@Schema(description = "来佣币种")
private String currency;
/**
* 比对时间
*/
@Schema(description = "比对时间")
private Date createTime;
/**
* 结算汇率
*/
@Schema(description = "结算汇率")
private String exchangeRate;
/**
* 入账金额
*/
@Schema(description = "入账金额")
private BigDecimal amount;
/**
* 通用备注
*/
@JsonIgnore
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@JsonIgnore
private Integer isDeleted;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 来佣修改记录表
* @TableName commission_edit_record
*/
@TableName(value ="commission_edit_record")
@Data
public class CommissionEditRecord implements Serializable {
/**
* 主键
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 保单来佣业务id
*/
@Schema(description = "保单来佣业务id")
private String commissionBizId;
/**
* 操作人userid
*/
@Schema(description = "操作人userid")
private String userBizId;
/**
* 操作人
*/
@Schema(description = "操作人")
private String userName;
/**
* 序号
*/
@Schema(description = "序号")
private Integer seq;
/**
* 变更字段
*/
@Schema(description = "变更字段")
private String field;
/**
* 变更前信息
*/
@Schema(description = "变更前信息")
private Object beforeChange;
/**
* 变更后信息
*/
@Schema(description = "变更后信息")
private Object afterChange;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建时间
*/
@Schema(description = "创建时间")
private Date createTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -66,9 +66,9 @@ public class CommissionExpected implements Serializable {
private String commissionType;
/**
* 来佣金额
* 来佣比例 (%)
*/
private BigDecimal amount;
private BigDecimal commissionRatio;
/**
* 来佣币种
......@@ -86,6 +86,26 @@ public class CommissionExpected implements Serializable {
private String status;
/**
* 默认结算汇率
*/
private BigDecimal defaultExchangeRate;
/**
* 预计来佣金额
*/
private BigDecimal expectedAmount;
/**
* 已入账来佣金额
*/
private BigDecimal paidAmount;
/**
* 已入账来佣比例
*/
private BigDecimal paidRatio;
/**
* 通用备注
*/
private String remark;
......
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 薪资修订记录表
* @TableName fortune_account_edit_record
*/
@TableName(value ="fortune_account_edit_record")
@Data
public class FortuneAccountEditRecord implements Serializable {
/**
* 主键
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 薪资记录业务id
*/
@Schema(description = "薪资记录业务id")
private String fortuneAccountBizId;
/**
* 修订人userid
*/
@Schema(description = "修订人userid")
private String userBizId;
/**
* 修订人
*/
@Schema(description = "修订人")
private String userName;
/**
* 修订内容
*/
@Schema(description = "修订内容")
private String editContent;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建时间
*/
@Schema(description = "创建时间")
private Date createTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -139,9 +139,9 @@ public class PolicyFollow implements Serializable {
private String paymentNumber;
/**
* 产品业务id
* 产品上架信息表唯一业务ID
*/
private String productBizId;
private String productLaunchBizId;
/**
* 产品名称
......
package com.yd.csf.service.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.model.CommissionCompareRecord;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @author Zhang Jianan
* @description 针对表【commission_compare_record(来佣比对记录表)】的数据库操作Service
* @createDate 2025-11-25 13:43:10
*/
public interface CommissionCompareRecordService extends IService<CommissionCompareRecord> {
}
package com.yd.csf.service.service;
import com.yd.csf.service.model.CommissionEditRecord;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author Zhang Jianan
* @description 针对表【commission_edit_record(来佣修改记录表)】的数据库操作Service
* @createDate 2025-11-24 16:45:37
*/
public interface CommissionEditRecordService extends IService<CommissionEditRecord> {
}
......@@ -32,11 +32,13 @@ public interface CommissionService extends IService<Commission> {
Commission getByCommissionBizId(String commissionBizId);
void compareWithExpected(Commission commission, CommissionExpected expected);
void compareWithExpected(String premium, Commission commission, CommissionExpected expected);
List<Commission> queryList(CommissionDto dto);
List<CommissionBindPolicyBrokerDto> queryCommissionBindPolicyBrokerList(CommissionDto dto);
CommissionStatisticsVO getCommissionStatistics(List<Long> commissionIds);
CommissionExpected queryByCommission(Commission commission);
}
package com.yd.csf.service.service;
import com.yd.csf.service.model.FortuneAccountEditRecord;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author Zhang Jianan
* @description 针对表【fortune_account_edit_record(薪资修订记录表)】的数据库操作Service
* @createDate 2025-11-25 11:14:20
*/
public interface FortuneAccountEditRecordService extends IService<FortuneAccountEditRecord> {
}
......@@ -30,4 +30,12 @@ public interface FortuneAccountService extends IService<FortuneAccount> {
Boolean updateFortuneAccount(FortuneAccountUpdateRequest fortuneAccountUpdateRequest);
Boolean completeFortuneAccount(CompleteFortuneAccountRequest completeFortuneAccountRequest);
/**
* 统计数据 总金额、总人数
*
* @param fortuneAccountIdList
* @return
*/
FortuneAccountStatisticsVO getFortuneAccountStatistics(List<Long> fortuneAccountIdList);
}
......@@ -10,6 +10,7 @@ import com.yd.csf.service.vo.FortuneVO;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
/**
* @author Zhang Jianan
......@@ -35,4 +36,6 @@ public interface FortuneService extends IService<Fortune> {
Boolean addFortune(FortuneAddRequest fortuneAddRequest);
Fortune queryOne(String fortuneBizId);
FortuneStatisticsVO getFortuneStatistics(List<Long> fortuneIdList);
}
......@@ -44,4 +44,6 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
Page<PolicyFollowDetailVO> getPolicyFollowDetailVOList(Page<PolicyFollow> policyFollowPage);
String getCurrencyValue(String currency);
PolicyReportData queryPolicyReportData(String policyBizId);
}
......@@ -69,7 +69,9 @@ public class PolicyReportPdfService {
addPolicyDetailFields(document, reportData);
// 7. 附加险表头
addAdditionalInsuranceHeader(document);
// 8. 详细信息下方水平线
// 8. 附加险详细信息表格
addAdditionalInsuranceDetail(document, reportData);
// 9. 详细信息下方水平线
addHorizontalLine(document, writer);
// 移除了原来的备注说明,因为现在备注已经整合到保单详细字段中
......@@ -82,6 +84,44 @@ public class PolicyReportPdfService {
}
/**
* 附加险详细信息表格
*/
private void addAdditionalInsuranceDetail(Document document, PolicyReportData reportData) throws DocumentException {
if (reportData.getAdditionalInsurances() == null || reportData.getAdditionalInsurances().isEmpty()) {
return;
}
PdfPTable table = new PdfPTable(4);
table.setWidthPercentage(100);
table.setWidths(new float[]{25, 25, 25, 25});
table.setSpacingBefore(0f);
table.setSpacingAfter(ROW_SPACING);
// 添加附加险数据行
for (PolicyReportData.AdditionalInsurance insurance : reportData.getAdditionalInsurances()) {
addTableCenterCellNoBorder(table, insurance.getName() != null ? insurance.getName() : "");
addTableCenterCellNoBorder(table, insurance.getPaymentTerm() != null ? String.valueOf(insurance.getPaymentTerm()) : "");
addTableCenterCellNoBorder(table, insurance.getCurrency() != null ? insurance.getCurrency() : "");
addTableCenterCellNoBorder(table, insurance.getFirstYearAmount() != null ? formatAmount(insurance.getFirstYearAmount()) : "");
}
document.add(table);
}
/**
* 添加居中对齐的无边框内容单元格
*/
private void addTableCenterCellNoBorder(PdfPTable table, String text) {
Paragraph para = new Paragraph(text, chineseFont);
com.lowagie.text.pdf.PdfPCell cell = new com.lowagie.text.pdf.PdfPCell(para);
cell.setBorder(com.lowagie.text.Rectangle.NO_BORDER);
cell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
cell.setVerticalAlignment(com.lowagie.text.Element.ALIGN_MIDDLE);
cell.setPadding(2f);
table.addCell(cell);
}
/**
* 主标题 - 放大并居中
*/
private void addMainTitle(Document document, String title) throws DocumentException {
......@@ -170,12 +210,12 @@ public class PolicyReportPdfService {
// 第一行:保單持有人 | 持有人值 | 保險公司 | 公司值
addTableHeaderCellNoBorder(table, "保單持有人");
addTableCellNoBorder(table, data.getPolicyHolder() != null ? data.getPolicyHolder() : "");
addTableHeaderCellNoBorder(table, "保險公司");
addTableCellNoBorder(table, data.getInsuranceCompany() != null ? data.getInsuranceCompany() : "");
// 第二行:保單受保人 | 受保人值 | 受保人年齡 | 年齡值
addTableHeaderCellNoBorder(table, "保單受保人");
addTableCellNoBorder(table, data.getInsuredPerson() != null ? data.getInsuredPerson() : "");
// 第二行:保單受保人 | 受保人值 | 受保人年齡 | 年齡值
addTableHeaderCellNoBorder(table, "保險公司");
addTableCellNoBorder(table, data.getInsuranceCompany() != null ? data.getInsuranceCompany() : "");
addTableHeaderCellNoBorder(table, "受保人年齡");
addTableCellNoBorder(table, data.getInsuredAge() != null ? String.valueOf(data.getInsuredAge()) : "");
......
package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.csf.service.model.CommissionCompareRecord;
import com.yd.csf.service.service.CommissionCompareRecordService;
import com.yd.csf.service.dao.CommissionCompareRecordMapper;
import org.springframework.stereotype.Service;
/**
* @author Zhang Jianan
* @description 针对表【commission_compare_record(来佣比对记录表)】的数据库操作Service实现
* @createDate 2025-11-25 13:43:10
*/
@Service
public class CommissionCompareRecordServiceImpl extends ServiceImpl<CommissionCompareRecordMapper, CommissionCompareRecord>
implements CommissionCompareRecordService{
}
package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.csf.service.model.CommissionEditRecord;
import com.yd.csf.service.service.CommissionEditRecordService;
import com.yd.csf.service.dao.CommissionEditRecordMapper;
import org.springframework.stereotype.Service;
/**
* @author Zhang Jianan
* @description 针对表【commission_edit_record(来佣修改记录表)】的数据库操作Service实现
* @createDate 2025-11-24 16:45:37
*/
@Service
public class CommissionEditRecordServiceImpl extends ServiceImpl<CommissionEditRecordMapper, CommissionEditRecord>
implements CommissionEditRecordService{
}
......@@ -14,8 +14,12 @@ import com.yd.csf.service.dto.CommissionExpectedQueryRequest;
import com.yd.csf.service.dto.CommissionExpectedUpdateRequest;
import com.yd.csf.service.enums.CommissionExpectedStatusEnum;
import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.service.CommissionExpectedService;
import com.yd.csf.service.dao.CommissionExpectedMapper;
import com.yd.csf.service.service.PolicyFollowService;
import com.yd.csf.service.service.PolicyService;
import com.yd.csf.service.vo.CommissionExpectedVO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
......@@ -24,7 +28,9 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
......@@ -37,6 +43,13 @@ import java.util.stream.Collectors;
public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpectedMapper, CommissionExpected>
implements CommissionExpectedService{
@Resource
private PolicyService policyService;
@Resource
private PolicyFollowService policyFollowService;
@Override
public Page<CommissionExpectedVO> getCommissionExpectedVOPage(Page<CommissionExpected> commissionExpectedPage) {
List<CommissionExpected> CommissionExpectedList = commissionExpectedPage.getRecords();
......@@ -45,8 +58,23 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
return CommissionExpectedVOPage;
}
// 关联查询保单信息
Set<String> policyNoSet = CommissionExpectedList.stream().map(CommissionExpected::getPolicyNo).collect(Collectors.toSet());
QueryWrapper<PolicyFollow> queryWrapper = new QueryWrapper<PolicyFollow>();
queryWrapper.select("policy_no", "payment_premium");
queryWrapper.in("policy_no", policyNoSet);
Map<String, PolicyFollow> policyMap = policyFollowService.list(queryWrapper)
.stream().collect(Collectors.toMap(PolicyFollow::getPolicyNo, a -> a, (oldValue, newValue) -> newValue));
// 填充信息
List<CommissionExpectedVO> CommissionExpectedVOList = CommissionExpectedList.stream().map(CommissionExpectedVO::objToVo).collect(Collectors.toList());
List<CommissionExpectedVO> CommissionExpectedVOList = CommissionExpectedList.stream().map(commissionExpected -> {
CommissionExpectedVO commissionExpectedVO = CommissionExpectedVO.objToVo(commissionExpected);
PolicyFollow policyFollow = policyMap.get(commissionExpected.getPolicyNo());
if (policyFollow != null) {
commissionExpectedVO.setPremium(policyFollow.getPaymentPremium());
}
return commissionExpectedVO;
}).collect(Collectors.toList());
CommissionExpectedVOPage.setRecords(CommissionExpectedVOList);
return CommissionExpectedVOPage;
}
......@@ -70,9 +98,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (StringUtils.isBlank(commissionName)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "来佣名称不能为空");
}
BigDecimal amount = commissionExpected.getAmount();
if (ObjectUtils.isEmpty(amount)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "来佣金额不能为空");
BigDecimal commissionRatio = commissionExpected.getCommissionRatio();
if (ObjectUtils.isEmpty(commissionRatio)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "来佣比例不能为空");
}
Integer commissionPeriod = commissionExpected.getCommissionPeriod();
if (ObjectUtils.isEmpty(commissionPeriod)) {
......@@ -144,12 +172,26 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (CollUtil.isEmpty(addDtoList)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "预计来佣列表不能为空");
}
// 查询保单信息
String policyNo = addDtoList.get(0).getPolicyNo();
Policy policy = policyService.getOne(new QueryWrapper<Policy>().eq("policy_no", policyNo));
List<CommissionExpected> addList = new ArrayList<>();
List<CommissionExpected> updateList = new ArrayList<>();
for (CommissionExpectedAddDto addDto : addDtoList) {
CommissionExpected commissionExpected = new CommissionExpected();
BeanUtils.copyProperties(addDto, commissionExpected);
// 默认结算汇率 7.8 美元对港币
commissionExpected.setDefaultExchangeRate(BigDecimal.valueOf(7.8));
// 预计总金额
if (policy != null) {
BigDecimal expectedAmount = policy.getPaymentPremium()
.multiply(commissionExpected.getCommissionRatio())
.multiply(commissionExpected.getDefaultExchangeRate())
.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
commissionExpected.setExpectedAmount(expectedAmount);
}
// 校验参数
validCommissionExpected(commissionExpected, true);
......@@ -166,13 +208,19 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
commissionExpected.setUpdateTime(new Date());
updateList.add(commissionExpected);
}
}
// 新增预计来佣
if (CollectionUtils.isNotEmpty(addList)) {
this.saveBatch(addList);
}
if (CollectionUtils.isNotEmpty(updateList)) {
List<String> bizIdList = updateList.stream().map(CommissionExpected::getCommissionExpectedBizId).collect(Collectors.toList());
List<CommissionExpected> list = this.list(new QueryWrapper<CommissionExpected>().in("commission_expected_biz_id", bizIdList));
Map<String, CommissionExpected> map = list.stream().collect(Collectors.toMap(CommissionExpected::getCommissionExpectedBizId, a -> a));
for (CommissionExpected update : updateList) {
CommissionExpected commissionExpectedFromDb = map.get(update.getCommissionExpectedBizId());
update.setId(commissionExpectedFromDb.getId());
}
this.updateBatchById(updateList);
}
return true;
......@@ -198,10 +246,22 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (commissionExpected == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "预计来佣不存在");
}
if (commissionExpected.getCommissionRatio() == null) {
if (commissionExpectedUpdateRequest.getRatio() != null) {
commissionExpected.setCommissionRatio(commissionExpectedUpdateRequest.getRatio());
} else {
commissionExpected.setCommissionRatio(commissionExpectedUpdateRequest.getCommissionRatio());
}
}
// 校验数据
validCommissionExpected(commissionExpected, false);
// 转换为实体类
BeanUtils.copyProperties(commissionExpectedUpdateRequest, commissionExpected);
if (commissionExpectedUpdateRequest.getRatio() != null) {
commissionExpected.setCommissionRatio(commissionExpectedUpdateRequest.getRatio());
} else {
commissionExpected.setCommissionRatio(commissionExpectedUpdateRequest.getCommissionRatio());
}
commissionExpected.setUpdateTime(new Date());
// 更新预计来佣
return this.updateById(commissionExpected);
......
......@@ -10,25 +10,20 @@ import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.yd.common.enums.CommonEnum;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dao.CustomerMapper;
import com.yd.csf.service.dto.CustomerAddRequest;
import com.yd.csf.service.dto.CustomerQueryRequest;
import com.yd.csf.service.dto.CustomerUpdateRequest;
import com.yd.csf.service.dto.FnaQueryRequest;
import com.yd.csf.service.model.Customer;
import com.yd.csf.service.model.CustomerExpand;
import com.yd.csf.service.model.Fna;
import com.yd.csf.service.service.CustomerExpandService;
import com.yd.csf.service.service.CustomerService;
import com.yd.csf.service.service.FnaService;
import com.yd.csf.service.utils.ValidateUtil;
import com.yd.csf.service.vo.AddressVO;
import com.yd.csf.service.vo.CustomerExpandVO;
import com.yd.csf.service.vo.CustomerVO;
import com.yd.csf.service.vo.FnaVO;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
......@@ -86,16 +81,20 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer>
String name = customerQueryRequest.getName();
String phone = customerQueryRequest.getPhone();
String email = customerQueryRequest.getEmail();
queryWrapper.lambda().like(StringUtils.isNotBlank(name), Customer::getName, name)
.like(StringUtils.isNotBlank(phone), Customer::getPhone, phone)
.like(StringUtils.isNotBlank(email), Customer::getEmail, email);
queryWrapper.like(StringUtils.isNotBlank(name), "name", name)
.or().like(StringUtils.isNotBlank(name), "first_name_pinyin", name);
queryWrapper.like(StringUtils.isNotBlank(phone), "phone", phone);
queryWrapper.like(StringUtils.isNotBlank(email), "email", email);
return queryWrapper;
}
@Override
public CustomerExpand getCustomerExpand(CustomerAddRequest customerAddRequest) {
CustomerExpand customerExpand = new CustomerExpand();
BeanUtils.copyProperties(customerAddRequest, customerExpand);
BeanUtils.copyProperties(customerAddRequest, customerExpand, "addressList");
List<AddressVO> addressList = customerAddRequest.getAddressList();
if (CollUtil.isNotEmpty(addressList)) {
customerExpand.setAddressList(GSON.toJson(addressList));
......
package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.csf.service.model.FortuneAccountEditRecord;
import com.yd.csf.service.service.FortuneAccountEditRecordService;
import com.yd.csf.service.dao.FortuneAccountEditRecordMapper;
import org.springframework.stereotype.Service;
/**
* @author Zhang Jianan
* @description 针对表【fortune_account_edit_record(薪资修订记录表)】的数据库操作Service实现
* @createDate 2025-11-25 11:14:20
*/
@Service
public class FortuneAccountEditRecordServiceImpl extends ServiceImpl<FortuneAccountEditRecordMapper, FortuneAccountEditRecord>
implements FortuneAccountEditRecordService{
}
package com.yd.csf.service.service.impl;
import java.util.Date;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -15,6 +16,8 @@ import com.yd.csf.service.enums.FortuneAccountStatusEnum;
import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.model.Fortune;
import com.yd.csf.service.model.FortuneAccount;
import com.yd.csf.service.model.FortuneAccountEditRecord;
import com.yd.csf.service.service.FortuneAccountEditRecordService;
import com.yd.csf.service.service.FortuneAccountService;
import com.yd.csf.service.dao.FortuneAccountMapper;
import com.yd.csf.service.service.FortuneService;
......@@ -41,6 +44,9 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
@Resource
private FortuneService fortuneService;
@Resource
private FortuneAccountEditRecordService fortuneAccountEditRecordService;
private final Gson GSON = new Gson();
@Override
......@@ -185,6 +191,8 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
if (fortuneAccount == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage());
}
// 保存修改记录
saveUpdateFortuneAccountRecord(fortuneAccount, fortuneAccountUpdateRequest);
fortuneAccount.setBroker(fortuneAccountUpdateRequest.getBroker());
fortuneAccount.setTeam(fortuneAccountUpdateRequest.getTeam());
......@@ -196,9 +204,40 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
fortuneAccount.setUpdateTime(new Date());
this.updateById(fortuneAccount);
return true;
}
private void saveUpdateFortuneAccountRecord(FortuneAccount fortuneAccount, FortuneAccountUpdateRequest fortuneAccountUpdateRequest) {
FortuneAccountEditRecord fortuneAccountEditRecord = new FortuneAccountEditRecord();
// 薪资记录业务id
fortuneAccountEditRecord.setFortuneAccountBizId(fortuneAccount.getFortuneAccountBizId());
fortuneAccountEditRecord.setIsDeleted(0);
fortuneAccountEditRecord.setCreateTime(new Date());
// 当前登录用户
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
Long loginUserId = currentLoginUser.getId();
fortuneAccountEditRecord.setUserBizId(loginUserId.toString());
fortuneAccountEditRecord.setUserName(currentLoginUser.getUsername());
// 构建修改内容
StringBuilder editContentBuilder = new StringBuilder();
editContentBuilder.append("修改了薪资记录:");
editContentBuilder.append("转介人:").append(fortuneAccountUpdateRequest.getBroker()).append(";");
editContentBuilder.append("团队:").append(fortuneAccountUpdateRequest.getTeam()).append(";");
editContentBuilder.append("出账金额:").append(fortuneAccountUpdateRequest.getAmount()).append(";");
editContentBuilder.append("出账币种:").append(fortuneAccountUpdateRequest.getCurrency()).append(";");
if (StringUtils.isNotBlank(fortuneAccountUpdateRequest.getRemark())) {
editContentBuilder.append("备注:").append(fortuneAccountUpdateRequest.getRemark()).append(";");
}
fortuneAccountEditRecord.setEditContent(editContentBuilder.toString());
fortuneAccountEditRecord.setRemark(fortuneAccountUpdateRequest.getRemark());
fortuneAccountEditRecordService.save(fortuneAccountEditRecord);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean completeFortuneAccount(CompleteFortuneAccountRequest completeFortuneAccountRequest) {
......@@ -235,6 +274,31 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
return true;
}
@Override
public FortuneAccountStatisticsVO getFortuneAccountStatistics(List<Long> fortuneAccountIdList) {
if (CollectionUtils.isEmpty(fortuneAccountIdList)) {
FortuneAccountStatisticsVO vo = new FortuneAccountStatisticsVO();
vo.setTotalAmount(BigDecimal.ZERO);
vo.setBrokerCount(0L);
return vo;
}
// 统计总金额和总人数
List<FortuneAccount> fortuneAccountList = this.baseMapper.selectBatchIds(fortuneAccountIdList);
BigDecimal totalAmount = fortuneAccountList.stream()
.map(FortuneAccount::getAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
int brokerCount = fortuneAccountList.stream()
.map(FortuneAccount::getBroker)
.collect(Collectors.toSet()).size();
FortuneAccountStatisticsVO vo = new FortuneAccountStatisticsVO();
vo.setTotalAmount(totalAmount);
vo.setBrokerCount(brokerCount);
return vo;
}
}
......
......@@ -16,11 +16,14 @@ import com.yd.common.exception.BusinessException;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.Fortune;
import com.yd.csf.service.service.CommissionService;
import com.yd.csf.service.service.FortuneAccountService;
import com.yd.csf.service.service.FortuneService;
import com.yd.csf.service.dao.FortuneMapper;
import com.yd.csf.service.vo.FortuneVO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
......@@ -48,6 +51,9 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
@Resource
private FortuneAccountService fortuneAccountService;
@Resource
private CommissionService commissionService;
@Override
public Wrapper<Fortune> getQueryWrapper(FortuneQueryRequest fortuneQueryRequest) {
QueryWrapper<Fortune> queryWrapper = new QueryWrapper<>();
......@@ -71,11 +77,14 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
return fortuneVOPage;
}
List<FortuneVO> fortuneVOList = fortuneList.stream().map(fortune -> {
FortuneVO fortuneVO = new FortuneVO();
BeanUtils.copyProperties(fortune, fortuneVO);
return fortuneVO;
}).collect(Collectors.toList());
List<FortuneVO> fortuneVOList = fortuneList.stream().map(FortuneVO::objToVo).collect(Collectors.toList());
// 关联查询已来佣金额
List<Commission> commissionList = commissionService.list(new QueryWrapper<Commission>().in("commission_biz_id", fortuneList.stream().map(Fortune::getCommissionBizId).collect(Collectors.toList())));
Map<String, BigDecimal> commissionAmountMap = commissionList.stream().collect(Collectors.toMap(Commission::getCommissionBizId, Commission::getAmount));
fortuneVOList.forEach(fortuneVO -> {
String commissionBizId = fortuneVO.getCommissionBizId();
fortuneVO.setCommissionAmount(commissionAmountMap.getOrDefault(commissionBizId, BigDecimal.ZERO));
});
fortuneVOPage.setRecords(fortuneVOList);
return fortuneVOPage;
......@@ -297,6 +306,19 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
return this.getOne(new LambdaQueryWrapper<Fortune>().eq(Fortune::getFortuneBizId,fortuneBizId));
}
@Override
public FortuneStatisticsVO getFortuneStatistics(List<Long> fortuneIdList) {
if (CollectionUtils.isEmpty(fortuneIdList)) {
FortuneStatisticsVO fortuneStatisticsVO = new FortuneStatisticsVO();
fortuneStatisticsVO.setTotalOutAmount(BigDecimal.ZERO);
fortuneStatisticsVO.setTotalInAmount(BigDecimal.ZERO);
fortuneStatisticsVO.setTotalPolicyCount(0L);
return fortuneStatisticsVO;
}
// 自定义查询
return this.baseMapper.getFortuneStatistics(fortuneIdList);
}
}
......
......@@ -11,7 +11,6 @@ import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.*;
......@@ -174,6 +173,7 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
// 修改转介人
List<PolicyBrokerDto> brokerList = policyFollowUpdateRequest.getBrokerList();
if (CollUtil.isNotEmpty(brokerList)) {
log.info("修改转介人,查看保单号: {}, 转介人数量: {}", policyFollow.getPolicyNo(), brokerList.size());
// 先删除原有的转介人
policyBrokerService.remove(new QueryWrapper<PolicyBroker>().eq("policy_biz_id", policyBizId));
......@@ -335,8 +335,6 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "已完成、已拒绝、已取消状态不能变更");
}
// 校验状态
validPolicyFollowStatus(currentStatusEnum, policyFollowStatusEnum);
String policyBizId = changePolicyFollowStatusRequest.getPolicyBizId();
......@@ -380,21 +378,9 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
@Override
public String getNextStatus(PolicyFollowStatusEnum policyFollowStatusEnum) {
switch (policyFollowStatusEnum) {
case FOLLOW_UP:
return PolicyFollowStatusEnum.CHECKING.getItemValue() + ","
+ PolicyFollowStatusEnum.DECLINED.getItemValue() + ","
+ PolicyFollowStatusEnum.CANCELLED.getItemValue();
case CHECKING:
return PolicyFollowStatusEnum.UNDERWRITING.getItemValue() + ","
+ PolicyFollowStatusEnum.CANCELLED.getItemValue();
case UNDERWRITING:
return PolicyFollowStatusEnum.FINISHED.getItemValue() + ","
+ PolicyFollowStatusEnum.DECLINED.getItemValue() + ","
+ PolicyFollowStatusEnum.CANCELLED.getItemValue();
default:
return null;
}
return PolicyFollowStatusEnum.FINISHED.getItemValue() + ","
+ PolicyFollowStatusEnum.DECLINED.getItemValue() + ","
+ PolicyFollowStatusEnum.CANCELLED.getItemValue();
}
/**
......@@ -568,6 +554,36 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
}
@Override
public PolicyReportData queryPolicyReportData(String policyBizId) {
// 查询主险信息
PolicyReportData policyReportData = this.baseMapper.queryPolicyReportData(policyBizId);
// 处理附加险信息
List<PolicyAdditional> additionalList= policyAdditionalService.list(new QueryWrapper<PolicyAdditional>().eq("policy_biz_id", policyBizId));
List<PolicyReportData.AdditionalInsurance> additionalInsurances = new ArrayList<>();
if (CollUtil.isNotEmpty(additionalList)) {
for (PolicyAdditional additional : additionalList) {
PolicyReportData.AdditionalInsurance additionalInsurance = new PolicyReportData.AdditionalInsurance();
additionalInsurance.setName(additional.getAddProductName());
additionalInsurance.setPaymentTerm(null);
additionalInsurance.setCurrency(getCurrencyValue(additional.getCurrency()));
additionalInsurance.setFirstYearAmount(additional.getPremium());
additionalInsurances.add(additionalInsurance);
}
}
// 处理附加险信息
policyReportData.setAdditionalInsurances(additionalInsurances);
// 处理服务经理
String signerList = policyReportData.getServiceManager();
if (StringUtils.isNotBlank(signerList)) {
PolicySigner[] signers = GSONUtil.fromJson(signerList, PolicySigner[].class);
policyReportData.setServiceManager(signers[0].getSigner());
}
// 处理位置
policyReportData.setLocation("香港");
return policyReportData;
}
@Override
public Boolean uploadAttachment(AttachmentUploadRequest attachmentUploadRequest) {
String policyBizId = attachmentUploadRequest.getPolicyBizId();
if (policyBizId == null) {
......
......@@ -15,6 +15,12 @@ import java.util.Date;
public class CommissionExpectedVO implements Serializable {
/**
* 预计来佣id
*/
@Schema(description = "预计来佣id")
private Long id;
/**
* 预计来佣业务id
*/
@Schema(description = "预计来佣业务id")
......@@ -27,6 +33,12 @@ public class CommissionExpectedVO implements Serializable {
private String policyNo;
/**
* 保费
*/
@Schema(description = "保费")
private Object premium;
/**
* 对账公司
*/
@Schema(description = "对账公司")
......@@ -57,6 +69,18 @@ public class CommissionExpectedVO implements Serializable {
private String commissionType;
/**
* 来佣比例 (%)
*/
@Schema(description = "来佣比例 (%)")
private BigDecimal commissionRatio;
/**
* 来佣比例 (%)
*/
@Schema(description = "来佣比例 (%)")
private BigDecimal ratio;
/**
* 来佣金额
*/
@Schema(description = "来佣金额")
......@@ -127,6 +151,8 @@ public class CommissionExpectedVO implements Serializable {
}
CommissionExpectedVO commissionVO = new CommissionExpectedVO();
BeanUtils.copyProperties(commissionExpected, commissionVO);
commissionVO.setRatio(commissionExpected.getCommissionRatio());
return commissionVO;
}
}
......@@ -32,6 +32,12 @@ public class CommissionVO implements Serializable {
private String policyNo;
/**
* 保费
*/
@Schema(description = "保费")
private String premium;
/**
* 对账公司
*/
@Schema(description = "对账公司")
......@@ -62,6 +68,12 @@ public class CommissionVO implements Serializable {
private String commissionType;
/**
* 当前结算汇率
*/
@Schema(description = "当前结算汇率")
private String exchangeRate;
/**
* 来佣金额
*/
@Schema(description = "来佣金额")
......@@ -81,12 +93,54 @@ public class CommissionVO implements Serializable {
private Date commissionDate;
/**
* 当前来佣比例
*/
@Schema(description = "当前来佣比例")
private BigDecimal currentCommissionRatio;
/**
* 当期已入账比例
*/
@Schema(description = "已入账来佣比例")
private BigDecimal periodPaidRatio;
/**
* 待入账来佣比例
*/
@Schema(description = "当期剩余来佣比例")
private BigDecimal periodPendingRatio;
/**
* 来佣状态
*/
@Schema(description = "来佣状态 0=未比对 1=比对成功 2=比对失败 字典值: csf_commission_status")
private String status;
/**
* 预计来佣业务id
*/
@Schema(description = "预计来佣业务id")
private String commissionExpectedBizId;
/**
* 总金额
*/
@Schema(description = "总金额")
private String expectedAmount;
/**
* 已入账金额
*/
@Schema(description = "已入账金额")
private String paidAmount;
/**
* 待入账金额
*/
@Schema(description = "待入账金额")
private String pendingAmount;
/**
* 通用备注
*/
@Schema(description = "备注")
......
......@@ -14,6 +14,12 @@ import java.util.Map;
@Data
public class FortuneAccountVO {
/**
* fortuneAccount id
*/
@Schema(description = "fortuneAccount id")
private Long id;
/**
* 出账记录业务id
*/
@Schema(description = "出账记录业务id")
......
......@@ -15,6 +15,12 @@ import java.util.Date;
public class FortuneVO implements Serializable {
/**
* fortune id
*/
@Schema(description = "fortune id")
private Long id;
/**
* 保单发佣业务id
*/
@Schema(description = "保单发佣业务id")
......@@ -27,6 +33,18 @@ public class FortuneVO implements Serializable {
private String policyNo;
/**
* 来佣业务id
*/
@Schema(description = "来佣业务id")
private String commissionBizId;
/**
* 本次已来佣金额
*/
@Schema(description = "本次已来佣金额")
private Object commissionAmount;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@Schema(description = "发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)")
......
......@@ -128,9 +128,9 @@ public class PolicyFollowDetailVO implements Serializable {
private String paymentNumber;
/**
* 产品业务id
* 产品上架信息表唯一业务ID
*/
private String productBizId;
private String productLaunchBizId;
/**
* 产品名称
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.csf.service.dao.CommissionCompareRecordMapper">
<resultMap id="BaseResultMap" type="com.yd.csf.service.model.CommissionCompareRecord">
<id property="id" column="id" />
<result property="commissionExpectedBizId" column="commission_expected_biz_id" />
<result property="commissionBizId" column="commission_biz_id" />
<result property="commissionPeriod" column="commission_period" />
<result property="totalPeriod" column="total_period" />
<result property="status" column="status" />
<result property="currency" column="currency" />
<result property="createTime" column="create_time" />
<result property="exchangeRate" column="exchange_rate" />
<result property="amount" column="amount" />
<result property="remark" column="remark" />
<result property="isDeleted" column="is_deleted" />
</resultMap>
<sql id="Base_Column_List">
id,commission_expected_biz_id,commission_biz_id,commission_period,total_period,status,
currency,create_time,exchange_rate,amount,remark,
is_deleted
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.csf.service.dao.CommissionEditRecordMapper">
<resultMap id="BaseResultMap" type="com.yd.csf.service.model.CommissionEditRecord">
<id property="id" column="id" />
<result property="commissionBizId" column="commission_biz_id" />
<result property="userBizId" column="user_biz_id" />
<result property="userName" column="user_name" />
<result property="seq" column="seq" />
<result property="field" column="field" />
<result property="beforeChange" column="before_change" />
<result property="afterChange" column="after_change" />
<result property="remark" column="remark" />
<result property="isDeleted" column="is_deleted" />
<result property="createTime" column="create_time" />
</resultMap>
<sql id="Base_Column_List">
id,commission_biz_id,user_biz_id,user_name,seq,field,before_change,
after_change,remark,is_deleted,create_time
</sql>
</mapper>
......@@ -14,10 +14,13 @@
<result property="totalPeriod" column="total_period" />
<result property="commissionName" column="commission_name" />
<result property="commissionType" column="commission_type" />
<result property="amount" column="amount" />
<result property="commissionRatio" column="commission_ratio" />
<result property="currency" column="currency" />
<result property="commissionDate" column="commission_date" />
<result property="status" column="status" />
<result property="defaultExchangeRate" column="default_exchange_rate" />
<result property="expectedAmount" column="expected_amount" />
<result property="paidAmount" column="paid_amount" />
<result property="remark" column="remark" />
<result property="isDeleted" column="is_deleted" />
<result property="creatorId" column="creator_id" />
......@@ -28,8 +31,8 @@
<sql id="Base_Column_List">
id,commission_expected_biz_id,policy_no,reconciliation_company,reconciliation_company_biz_id,commission_period,
total_period,commission_name,commission_type,amount,currency,
commission_date,status,remark,is_deleted,creator_id,
total_period,commission_name,commission_type,commission_ratio,currency,default_exchange_rate,expected_amount,
commission_date,status,paid_amount,remark,is_deleted,creator_id,
updater_id,create_time,update_time
</sql>
</mapper>
......@@ -8,15 +8,20 @@
<id property="id" column="id" />
<result property="commissionBizId" column="commission_biz_id" />
<result property="policyNo" column="policy_no" />
<result property="premium" column="premium" />
<result property="reconciliationCompany" column="reconciliation_company" />
<result property="reconciliationCompanyBizId" column="reconciliation_company_biz_id" />
<result property="commissionPeriod" column="commission_period" />
<result property="totalPeriod" column="total_period" />
<result property="commissionName" column="commission_name" />
<result property="commissionType" column="commission_type" />
<result property="exchangeRate" column="exchange_rate" />
<result property="amount" column="amount" />
<result property="currency" column="currency" />
<result property="commissionDate" column="commission_date" />
<result property="currentCommissionRatio" column="current_commission_ratio" />
<result property="periodPaidRatio" column="period_paid_ratio" />
<result property="periodPendingRatio" column="period_pending_ratio" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="isDeleted" column="is_deleted" />
......@@ -27,9 +32,9 @@
</resultMap>
<sql id="Base_Column_List">
id,commission_biz_id,policy_no,reconciliation_company,reconciliation_company_biz_id,commission_period,
total_period,commission_name,commission_type,amount,currency,
commission_date,status,remark,is_deleted,creator_id,
id,commission_biz_id,policy_no,premium,reconciliation_company,reconciliation_company_biz_id,commission_period,
total_period,commission_name,commission_type,exchange_rate,amount,currency,
commission_date,current_commission_ratio,period_paid_ratio,period_pending_ratio,status,remark,is_deleted,creator_id,
updater_id,create_time,update_time
</sql>
......@@ -61,7 +66,7 @@
COUNT(DISTINCT c.policy_no) as totalPolicyCount
FROM commission c
LEFT JOIN (
SELECT policy_no, SUM(amount) as amount
SELECT policy_no, SUM(expected_amount) as amount
FROM commission_expected
GROUP BY policy_no
) e ON c.policy_no = e.policy_no
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.csf.service.dao.FortuneAccountEditRecordMapper">
<resultMap id="BaseResultMap" type="com.yd.csf.service.model.FortuneAccountEditRecord">
<id property="id" column="id" />
<result property="fortuneAccountBizId" column="fortune_account_biz_id" />
<result property="userBizId" column="user_biz_id" />
<result property="userName" column="user_name" />
<result property="editContent" column="edit_content" />
<result property="remark" column="remark" />
<result property="isDeleted" column="is_deleted" />
<result property="createTime" column="create_time" />
</resultMap>
<sql id="Base_Column_List">
id,fortune_account_biz_id,user_biz_id,user_name,edit_content,remark,
is_deleted,create_time
</sql>
</mapper>
......@@ -44,4 +44,17 @@
calculation_formula,remark,is_deleted,creator_id,updater_id,
create_time,update_time
</sql>
<select id="getFortuneStatistics" resultType="com.yd.csf.service.dto.FortuneStatisticsVO">
select
ifnull(f.amount,0) as totalOutAmount,
ifnull(c.amount,0) as totalInAmount,
count(distinct f.policy_no) as totalPolicyCount
from fortune f
left join commission c on f.commission_biz_id = c.commission_biz_id
where f.id in
<foreach collection="fortuneIdList" item="fortuneId" open="(" close=")" separator=",">
#{fortuneId}
</foreach>
</select>
</mapper>
......@@ -29,7 +29,7 @@
<result property="prepaidAmountAfterDiscount" column="prepaid_amount_after_discount" />
<result property="policyExpirationDate" column="policy_expiration_date" />
<result property="paymentNumber" column="payment_number" />
<result property="productBizId" column="product_biz_id" />
<result property="productLaunchBizId" column="product_launch_biz_id" />
<result property="productName" column="product_name" />
<result property="productCate" column="product_cate" />
<result property="insurer" column="insurer" />
......@@ -65,11 +65,35 @@
customer_biz_id,submit_date,customer_name,sign_date,signer_list,
issue_date,effective_date,cooling_off_end_date,cooling_off_days,renewal_date,payment_term,payment_premium,
is_prepaid,prepaid_term,prepaid_amount,prepaid_amount_after_discount,policy_expiration_date,
payment_number,product_biz_id,product_name,product_cate,insurer,
payment_number,product_launch_biz_id,product_name,product_cate,insurer,
insurer_biz_id,reconciliation_company,reconciliation_company_biz_id,status,next_status_list,
policy_holder,insured,currency,initial_premium,initial_premium_paid,initial_premium_due,latest_payment_date,policy_levy,mailing_method,
delivery_no,broker_sign_date,insurer_mailing_date,customer_sign_date,attachments,
remark,is_deleted,creator_id,updater_id,create_time,
update_time
</sql>
<select id="queryPolicyReportData" resultType="com.yd.csf.service.dto.PolicyReportData">
select
t.id,
t.policy_biz_id,
t.policy_no as policyNumber,
t.insurer as insuranceCompany,
t.product_name as insurancePlan,
t.payment_term as paymentPeriod,
t.initial_premium as annualAmount,
t.prepaid_amount as totalPrepayment,
t.payment_premium as premiumFee,
t.sign_date as startTime,
t.sign_date as endTime,
t.signer_list as serviceManager,
t.policy_holder as policyHolder,
t.currency as currency,
ifnull(i.name, i.name_en) as insuredPerson,
i.age as insuredAge
from policy_follow t
left join policy_insurant i on t.policy_biz_id = i.policy_biz_id
where t.policy_biz_id = #{policyBizId}
</select>
</mapper>
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