Commit 3444eedd by zhangxingmin

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

# Conflicts:
#	yd-csf-service/src/main/java/com/yd/csf/service/service/CommissionService.java
#	yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionServiceImpl.java
#	yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyServiceImpl.java
parents a2d0c11b 58494099
......@@ -10,8 +10,6 @@ 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.CommissionExpectedStatusEnum;
import com.yd.csf.service.enums.CommissionStatusEnum;
import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.service.CommissionExpectedService;
......@@ -140,16 +138,11 @@ public class ApiCommissionController {
CommissionExpected expected = getCommissionExpected(expectedList, policyNo, commissionPeriod, commissionName);
if (expected != null) {
if (expected.getAmount().compareTo(commission.getAmount()) == 0) {
// 一致,来佣状态设置为 比对成功
commission.setStatus(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue());
// 预计来佣的状态设置为 已来佣
expected.setStatus(CommissionExpectedStatusEnum.COMPARED.getItemValue());
} else {
// 不一致,来佣状态设置为 比对失败
commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue());
expected.setStatus(CommissionExpectedStatusEnum.PARTIAL.getItemValue());
}
commissionService.compareWithExpected(commission, expected);
} else {
// 预计来佣不存在,来佣状态设置为 比对失败
commission.setStatus("2");
commission.setRemark("未找到当前来佣对应的预计来佣,比对失败");
}
}
......@@ -197,8 +190,8 @@ public class ApiCommissionController {
@Operation(summary = "创建保单来佣")
@PostMapping("/add")
public Result<Boolean> addCommission(@RequestBody CommissionAddRequest customerAddRequest, HttpServletRequest request) {
if (customerAddRequest == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
if (customerAddRequest == null || StringUtils.isBlank(customerAddRequest.getPolicyNo())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "保单号不能为空");
}
return Result.success(commissionService.addCommission(customerAddRequest));
}
......
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.ResultCode;
import com.yd.common.result.Result;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.service.CommissionExpectedService;
import com.yd.csf.service.vo.CommissionExpectedVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
* CommissionExpected接口
*
* @author jianan
* @since 2025-08-31
*/
@RestController
@RequestMapping("/CommissionExpected")
@Tag(name = "预计来佣接口")
public class ApiCommissionExpectedController {
@Resource
private CommissionExpectedService CommissionExpectedService;
/**
* 批量新增预计来佣
*
* @param commissionExpectedAddRequest
* @param request
* @return
*/
@PostMapping("/add")
@Operation(summary = "新增预计来佣")
public Result<Boolean> addCommissionExpected(@RequestBody CommissionExpectedAddRequest commissionExpectedAddRequest, HttpServletRequest request) {
if (commissionExpectedAddRequest == null) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), ResultCode.PARAMS_ERROR.getMessage());
}
return Result.success(CommissionExpectedService.addCommissionExpected(commissionExpectedAddRequest));
}
/**
* 删除预计来佣
*
* @param commissionExpectedBizId 预计来佣业务id
* @param request
* @return
*/
@DeleteMapping("/delete")
@Operation(summary = "删除预计来佣")
public Result<Boolean> deleteCommissionExpected(@RequestParam("commissionExpectedBizId") String commissionExpectedBizId, HttpServletRequest request) {
if (StringUtils.isBlank(commissionExpectedBizId)) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "预计来佣业务id不能为空");
}
return Result.success(CommissionExpectedService.deleteCommissionExpected(commissionExpectedBizId));
}
/**
* 更新预计来佣
*
* @param commissionExpectedUpdateRequest
* @return
*/
@PostMapping("/update")
@Operation(summary = "更新预计来佣")
public Result<Boolean> updateCommissionExpected(@RequestBody CommissionExpectedUpdateRequest commissionExpectedUpdateRequest) {
if (commissionExpectedUpdateRequest == null || StringUtils.isBlank(commissionExpectedUpdateRequest.getCommissionExpectedBizId())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "commissionExpectedBizId不能为空");
}
return Result.success(CommissionExpectedService.updateCommissionExpected(commissionExpectedUpdateRequest));
}
/**
* 根据 CommissionExpectedBizId 获取CommissionExpected(封装类)
*
* @param CommissionExpectedBizId
* @return
*/
// @GetMapping("/get/vo")
// @Operation(summary = "预计来佣详情")
// public Result<CommissionExpectedVO> getCommissionExpectedVOByBizId(String CommissionExpectedBizId, HttpServletRequest request) {
// if (StringUtils.isBlank(CommissionExpectedBizId)) {
// return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "CommissionExpectedBizId不能为空");
// }
// // 查询数据库
// CommissionExpected CommissionExpected = CommissionExpectedService.getByBizId(CommissionExpectedBizId);
// if (CommissionExpected == null) {
// return Result.fail(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage());
// }
//
// // 获取封装类
// return Result.success(CommissionExpectedService.getCommissionExpectedVO(CommissionExpected));
// }
/**
* 分页获取CommissionExpected列表(仅管理员可用)
*
* @param CommissionExpectedQueryRequest
* @return
*/
@PostMapping("/list/page")
@Operation(summary = "分页获取预计来佣列表", description = "可根据 reconciliation_company、commission_name、commission_period、amount 排序,默认按照佣金期数升序排序")
public Result<Page<CommissionExpectedVO>> listCommissionExpectedByPage(@RequestBody CommissionExpectedQueryRequest CommissionExpectedQueryRequest) {
// 校验参数
if (CommissionExpectedQueryRequest == null || CommissionExpectedQueryRequest.getPolicyNo() == null) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "保单号不能为空");
}
long current = CommissionExpectedQueryRequest.getPageNo();
long size = CommissionExpectedQueryRequest.getPageSize();
// 查询数据库
Page<CommissionExpected> CommissionExpectedPage = CommissionExpectedService.page(new Page<>(current, size),
CommissionExpectedService.getQueryWrapper(CommissionExpectedQueryRequest));
return Result.success(CommissionExpectedService.getCommissionExpectedVOPage(CommissionExpectedPage));
}
}
......@@ -2,6 +2,7 @@ package com.yd.csf.api.controller;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
......@@ -24,6 +25,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
......@@ -32,6 +34,7 @@ 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.List;
import java.util.Map;
......@@ -174,7 +177,21 @@ public class ApiFortuneController {
if (CollectionUtils.isEmpty(fortuneDownloadRequest.getFortuneBizIdList())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "请选择要出账的发佣数据");
}
fortuneService.downloadAccount(fortuneDownloadRequest, response);
try {
fortuneService.downloadAccount(fortuneDownloadRequest, response);
} catch (Exception e) {
// 设置响应类型为 JSON,而不是文件流
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
response.setCharacterEncoding("UTF-8");
Result<String> errorResult = Result.fail(
ResultCode.FAIL.getCode(),
"文件下载失败: " + e.getMessage()
);
response.getWriter().write(new ObjectMapper().writeValueAsString(errorResult));
}
}
/**
......
......@@ -47,22 +47,21 @@ public class ApiPolicyAdditionalController {
}
/**
* 删除保单附加险
* 根据 id 删除保单附加险
*
* @param policyAdditionalBizId
* @param id 保单附加险信息表主键id
* @param request
* @return
*/
@DeleteMapping("/delete")
@Operation(summary = "删除保单附加险")
public Result<Boolean> deletePolicyAdditional(@RequestParam("policyAdditionalBizId") String policyAdditionalBizId, HttpServletRequest request) {
if (policyAdditionalBizId == null || StringUtils.isBlank(policyAdditionalBizId)) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "policyAdditionalBizId不能为空");
@Operation(summary = "根据 id 删除保单附加险")
public Result<Boolean> deletePolicyAdditional(@RequestParam("id") Long id, HttpServletRequest request) {
if (id == null || id <= 0) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "id不能为空");
}
// User user = userService.getLoginUser(request);
// long id = deleteRequest.getId();
// 判断是否存在
PolicyAdditional policyAdditional = policyAdditionalService.getByBizId(policyAdditionalBizId);
PolicyAdditional policyAdditional = policyAdditionalService.getById(id);
if (policyAdditional == null) {
return Result.fail(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage());
}
......@@ -72,7 +71,7 @@ public class ApiPolicyAdditionalController {
// }
// 操作数据库
return Result.success(policyAdditionalService.removeById(policyAdditional.getId()));
return Result.success(policyAdditionalService.removeById(id));
}
/**
......
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.ResultCode;
import com.yd.common.result.Result;
import com.yd.csf.service.dto.PolicyBeneficiaryListUpdateRequest;
import com.yd.csf.service.dto.PolicyBeneficiaryQueryRequest;
import com.yd.csf.service.dto.PolicyBeneficiaryUpdateRequest;
import com.yd.csf.service.dto.PolicyBeneficiaryAddRequest;
import com.yd.csf.service.model.PolicyBeneficiary;
import com.yd.csf.service.service.PolicyBeneficiaryService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
* policy_beneficiary接口
*
* @author jianan
* @since 2025-09-20
*/
@RestController
@RequestMapping("/policy_beneficiary")
@Tag(name = "保单受益人接口")
public class ApiPolicyBeneficiaryController {
@Resource
private PolicyBeneficiaryService policyBeneficiaryService;
/**
* 创建保单受益人
*
* @param policyBeneficiaryAddRequest
* @param request
* @return
*/
@Operation(summary = "创建保单受益人")
@PostMapping("/add")
public Result<Map<String, Object>> addPolicyBeneficiary(@RequestBody PolicyBeneficiaryAddRequest policyBeneficiaryAddRequest, HttpServletRequest request) {
if (policyBeneficiaryAddRequest == null) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), ResultCode.PARAMS_ERROR.getMessage());
}
return Result.success(policyBeneficiaryService.addPolicyBeneficiary(policyBeneficiaryAddRequest));
}
/**
* 删除保单受益人
*
* @param policyBeneficiaryBizId
* @param request
* @return
*/
@DeleteMapping("/delete")
@Operation(summary = "删除保单受益人")
public Result<Boolean> deletePolicyBeneficiary(@RequestParam("policyBeneficiaryBizId") String policyBeneficiaryBizId, HttpServletRequest request) {
if (policyBeneficiaryBizId == null || StringUtils.isBlank(policyBeneficiaryBizId)) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "policyBeneficiaryBizId不能为空");
}
// User user = userService.getLoginUser(request);
// long id = deleteRequest.getId();
// 判断是否存在
PolicyBeneficiary policyBeneficiary = policyBeneficiaryService.getByBizId(policyBeneficiaryBizId);
if (policyBeneficiary == null) {
return Result.fail(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage());
}
// 仅本人或管理员可删除
// if (!oldFna.getUserId().equals(user.getId()) && !userService.isAdmin(request)) {
// throw new BusinessException(ErrorCode.NO_AUTH_ERROR);
// }
// 操作数据库
return Result.success(policyBeneficiaryService.removeById(policyBeneficiary.getId()));
}
/**
* 更新保单受益人(产品计划)
*
* @param policyUpdateRequest
* @return
*/
@PostMapping("/update")
@Operation(summary = "更新保单受益人信息")
public Result<Boolean> updatePolicyBeneficiary(@RequestBody PolicyBeneficiaryUpdateRequest policyUpdateRequest) {
if (policyUpdateRequest == null || StringUtils.isBlank(policyUpdateRequest.getPolicyBeneficiaryBizId())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "policyBeneficiaryBizId不能为空");
}
return Result.success(policyBeneficiaryService.updatePolicyBeneficiary(policyUpdateRequest));
}
/**
* 批量更新保单受益人
*
* @param policyBeneficiaryUpdateRequest
* @return
*/
@PostMapping("/update/list")
@Operation(summary = "批量更新保单受益人列表")
public Result<Boolean> updatePolicyBeneficiaryList(@RequestBody PolicyBeneficiaryListUpdateRequest policyBeneficiaryUpdateRequest) {
if (policyBeneficiaryUpdateRequest == null || StringUtils.isBlank(policyBeneficiaryUpdateRequest.getPolicyBizId())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "policyBizId不能为空");
}
return Result.success(policyBeneficiaryService.updatePolicyBeneficiaryList(policyBeneficiaryUpdateRequest));
}
/**
* 根据 policyBeneficiaryBizId 获取保单受益人(封装类)
*
* @param policyBeneficiaryBizId
* @return
*/
@GetMapping("/get/vo")
@Operation(summary = "根据 policyBeneficiaryBizId 获取保单受益人详情")
public Result<PolicyBeneficiary> getPolicyByPolicyBeneficiaryBizId(@RequestParam("policyBeneficiaryBizId") String policyBeneficiaryBizId, HttpServletRequest request) {
if (policyBeneficiaryBizId == null) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), ResultCode.PARAMS_ERROR.getMessage());
}
// 查询数据库
PolicyBeneficiary policyBeneficiary = policyBeneficiaryService.getByBizId(policyBeneficiaryBizId);
if (policyBeneficiary == null) {
return Result.fail(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage());
}
// 获取封装类
return Result.success(policyBeneficiary);
}
/**
* 分页获取保单受益人列表
*
* @param policyBeneficiaryQueryRequest
* @param request
* @return
*/
@PostMapping("/list")
@Operation(summary = "分页获取保单受益人列表")
public Result<Page<PolicyBeneficiary>> listPolicyByPage(@RequestBody PolicyBeneficiaryQueryRequest policyBeneficiaryQueryRequest,
HttpServletRequest request) {
long current = policyBeneficiaryQueryRequest.getPageNo();
long size = policyBeneficiaryQueryRequest.getPageSize();
// 查询数据库
QueryWrapper<PolicyBeneficiary> queryWrapper = new QueryWrapper<PolicyBeneficiary>();
queryWrapper.eq("policy_biz_id", policyBeneficiaryQueryRequest.getPolicyBizId());
queryWrapper.orderByAsc("id");
Page<PolicyBeneficiary> PolicyBeneficiaryPage = policyBeneficiaryService.page(new Page<>(current, size),
queryWrapper);
// 获取封装类
return Result.success(PolicyBeneficiaryPage);
}
}
......@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.ResultCode;
import com.yd.common.result.Result;
import com.yd.csf.service.dao.PolicyMapper;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.model.CommissionExpected;
......@@ -27,7 +26,7 @@ import javax.servlet.http.HttpServletRequest;
*/
@RestController
@RequestMapping("/policy")
@Tag(name = "保单接口")
@Tag(name = "保单(产品计划)接口")
public class ApiPolicyController {
@Resource
......@@ -38,6 +37,8 @@ public class ApiPolicyController {
private PolicyPolicyholderService policyPolicyholderService;
@Resource
private PolicyInsurantService policyInsurantService;
@Resource
private PolicySecondHolderService policySecondHolderService;
/**
* 创建保单
......@@ -128,6 +129,21 @@ public class ApiPolicyController {
return Result.success(policyInsurantService.update(policyInsurantUpdateRequest));
}
/**
* 更新第二持有人信息
*
* @param policySecondHolderUpdateRequest
* @return
*/
@PostMapping("/update_policy_second_holder")
@Operation(summary = "更新第二持有人信息")
public Result<Boolean> updatePolicySecondHolder(@RequestBody PolicySecondHolderUpdateRequest policySecondHolderUpdateRequest) {
if (policySecondHolderUpdateRequest == null || policySecondHolderUpdateRequest.getPolicySecondHolderBizId() == null) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "policySecondHolderBizId不能为空");
}
return Result.success(policySecondHolderService.updatePolicySecondHolder(policySecondHolderUpdateRequest));
}
/**
* 根据 policyBizId 获取保单(封装类)
*
......
......@@ -21,6 +21,7 @@ import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.PolicyFollowStatusEnum;
import com.yd.csf.service.model.*;
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 io.swagger.v3.oas.annotations.Operation;
......@@ -323,7 +324,7 @@ public class ApiPolicyFollowController {
if (CollectionUtils.isEmpty(addToPolicyRequest.getPolicyNoList())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "保单号列表不能为空");
}
return Result.success(policyFollowService.addToPolicy(addToPolicyRequest));
return Result.success(policyFollowService.addToPolicy(addToPolicyRequest.getPolicyNoList()));
}
/**
......@@ -488,16 +489,15 @@ public class ApiPolicyFollowController {
*/
@PostMapping("/list/page/vo")
@Operation(summary = "分页获取新单跟进列表")
public Result<Page<PolicyFollow>> listPolicyFollowByPage(@RequestBody PolicyFollowQueryRequest policyFollowQueryRequest,
HttpServletRequest request) {
public Result<Page<PolicyFollowDetailVO>> listPolicyFollowByPage(@RequestBody PolicyFollowQueryRequest policyFollowQueryRequest,
HttpServletRequest request) {
long current = policyFollowQueryRequest.getPageNo();
long size = policyFollowQueryRequest.getPageSize();
// 查询数据库
Page<PolicyFollow> policyFollowPage = policyFollowService.page(new Page<>(current, size),
policyFollowService.getQueryWrapper(policyFollowQueryRequest));
// 获取封装类
return Result.success(policyFollowPage);
return Result.success(policyFollowService.getPolicyFollowDetailVOList(policyFollowPage));
}
/**
......
......@@ -2,11 +2,15 @@ package com.yd.csf.feign.dto;
import lombok.Data;
import java.io.Serializable;
/**
* 地址DTO
*/
@Data
public class AddressDto{
public class AddressDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 地址类型 residenceAddress-居住地址、residentialAddress-住宅地址、mailingAddress-邮寄地址、companyAddress-公司地址
......
......@@ -3,6 +3,7 @@ package com.yd.csf.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.csf.service.model.Fna;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;
/**
* @author Zhang Jianan
......@@ -13,6 +14,8 @@ import org.apache.ibatis.annotations.Param;
public interface FnaMapper extends BaseMapper<Fna> {
boolean updateFnaNoById(@Param("fnaNo") String fnaNo, @Param("id") Long id);
int updateCustomerNameByCustomerBizId(@Param("firstNamePinyin") String firstNamePinyin, @Param("customerBizId") String customerBizId);
}
......
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class CommissionExpectedAddDto {
/**
* 预计来佣业务id
*/
@Schema(description = "预计来佣业务id")
private String commissionExpectedBizId;
/**
* 新单跟进业务id
*/
@Schema(description = "新单跟进业务id", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBizId;
/**
* 保单号
*/
@Schema(description = "保单号")
private String policyNo;
/**
* 对账公司
*/
@Schema(description = "对账公司")
private String reconciliationCompany;
/**
* 对账公司业务id
*/
@Schema(description = "对账公司业务id")
private String reconciliationCompanyBizId;
/**
* 佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@Schema(description = "佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)")
private Integer commissionPeriod;
/**
* 总来佣期数
*/
@Schema(description = "总来佣期数")
private Integer totalPeriod;
/**
* 来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
@Schema(description = "来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionName;
/**
* 来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
@Schema(description = "来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionType;
/**
* 来佣金额
*/
@Schema(description = "来佣金额")
private BigDecimal amount;
/**
* 来佣币种
*/
@Schema(description = "来佣币种")
private String currency;
/**
* 来佣日期
*/
@Schema(description = "来佣日期 format:yyyy-MM-dd")
private Date commissionDate;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
}
package com.yd.csf.service.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 创建预计来佣请求
*/
@Data
public class CommissionExpectedAddRequest implements Serializable {
private List<CommissionExpectedAddDto> commissionExpectedAddDtoList;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -5,10 +5,10 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class CommissionExpectedQueryRequest extends PageDto {
public class CommissionExpectedQueryRequest extends PageDto {
/**
* 保单号
*/
@Schema(description = "保单号", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "保单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyNo;
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 更新预计来佣请求
*
*/
@Data
public class CommissionExpectedUpdateRequest implements Serializable {
/**
* 预计来佣业务id
*/
@Schema(description = "预计来佣业务id")
private String commissionExpectedBizId;
/**
* 新单跟进业务id
*/
@Schema(description = "新单跟进业务id", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBizId;
/**
* 保单号
*/
@Schema(description = "保单号")
private String policyNo;
/**
* 对账公司
*/
@Schema(description = "对账公司")
private String reconciliationCompany;
/**
* 对账公司业务id
*/
@Schema(description = "对账公司业务id")
private String reconciliationCompanyBizId;
/**
* 佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@Schema(description = "佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)")
private Integer commissionPeriod;
/**
* 总来佣期数
*/
@Schema(description = "总来佣期数")
private Integer totalPeriod;
/**
* 来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
@Schema(description = "来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionName;
/**
* 来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
@Schema(description = "来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionType;
/**
* 来佣金额
*/
@Schema(description = "来佣金额")
private BigDecimal amount;
/**
* 来佣币种
*/
@Schema(description = "来佣币种")
private String currency;
/**
* 来佣日期
*/
@Schema(description = "来佣日期 format:yyyy-MM-dd")
private Date commissionDate;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.yd.csf.service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
public class PolicyBeneficiaryAddRequest {
/**
* 新单跟进业务ID
*/
@Schema(description = "新单跟进业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBizId;
/**
* 保单号
*/
@Schema(description = "保单号")
private String policyNo;
/**
* 客户类型(字典)(个人或者公司)
*/
@Schema(description = "客户类型(字典)(个人或者公司)")
private String customerType;
/**
* 与受保人关系(字典)
*/
@Schema(description = "与受保人关系(字典)")
private String insurantRel;
/**
* 受益比例
*/
@Schema(description = "受益比例")
private BigDecimal benefitRatio;
/**
* 名字
*/
@Schema(description = "名字")
private String name;
/**
* 名字-英文
*/
@Schema(description = "名字-英文")
private String nameEn;
/**
* 性别(字典)
*/
@Schema(description = "性别(字典)")
private String gender;
/**
* 证件类型(字典)
*/
@Schema(description = "证件类型(字典)")
private String documentType;
/**
* 证件号码
*/
@Schema(description = "证件号码")
private String idNumber;
/**
* 护照号码
*/
@Schema(description = "护照号码")
private String passportNumber;
/**
* 出生日期
*/
@Schema(description = "出生日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date birthTime;
/**
* 公司名称
*/
@Schema(description = "公司名称")
private String companyName;
/**
* 公司名称(英文)
*/
@Schema(description = "公司名称(英文)")
private String companyNameEn;
/**
* 公司商业登记号码
*/
@Schema(description = "公司商业登记号码")
private String companyBusinessNo;
/**
* 公司注册日期
*/
@Schema(description = "公司注册日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date companyRegisterTime;
/**
* 公司注册地区(字典)
*/
@Schema(description = "公司注册地区(字典)")
private String companyRegisterRegion;
/**
* 公司电话区号
*/
@Schema(description = "公司电话区号")
private String companyMobileCode;
/**
* 公司电话
*/
@Schema(description = "公司电话")
private String companyMobile;
/**
* 公司邮箱
*/
@Schema(description = "公司邮箱")
private String companyEmail;
/**
* 公司登记地址
*/
@Schema(description = "公司登记地址")
private String companyEnterAddress;
/**
* 通讯地址
*/
@Schema(description = "通讯地址")
private String mailingAddress;
/**
* 授权代表姓名中文-名字
*/
@Schema(description = "授权代表姓名中文-名字")
private String authNameCn;
/**
* 授权代表姓名英文-名字
*/
@Schema(description = "授权代表姓名英文-名字")
private String authNameEn;
/**
* 授权代表职称
*/
@Schema(description = "授权代表职称")
private String authProfessional;
/**
* 授权代表电话区号
*/
@Schema(description = "授权代表电话区号")
private String authMobileCode;
/**
* 授权代表电话
*/
@Schema(description = "授权代表电话")
private String authMobile;
/**
* 地址列表(json串)
*/
@Schema(description = "地址列表(json串)")
private Object addressList;
/**
* 通用备注
*/
@Schema(description = "通用备注")
private String remark;
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class PolicyBeneficiaryListUpdateRequest {
/**
* 保单BizId
*/
@Schema(description = "保单BizId", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBizId;
/**
* 保单受益人列表
*/
@Schema(description = "保单受益列表", requiredMode = Schema.RequiredMode.REQUIRED)
private List<PolicyBeneficiaryAddRequest> policyBeneficiaryList;
}
package com.yd.csf.service.dto;
import com.yd.common.dto.PageDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class PolicyBeneficiaryQueryRequest extends PageDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 保单业务ID
*/
@Schema(description = "保单业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBizId;
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class PolicyBeneficiaryUpdateRequest extends PolicyBeneficiaryAddRequest implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 受益人信息表业务ID
*/
@Schema(description = "受益人信息表业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBeneficiaryBizId;
}
......@@ -23,5 +23,5 @@ public class PolicyDto implements Serializable {
* 保单附加险列表
*/
@Schema(description = "保单附加险列表")
private List<ApiProductPlanAdditionalInfoDto> apiProductPlanAdditionalInfoDtoList;
private List<PolicyAdditional> apiProductPlanAdditionalInfoDtoList;
}
package com.yd.csf.service.dto;
import com.yd.csf.feign.dto.appointment.*;
import com.google.gson.reflect.TypeToken;
import com.yd.csf.service.model.*;
import com.yd.csf.service.utils.GSONUtil;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 新单跟进聚合查询结果DTO
......@@ -45,28 +45,25 @@ public class PolicyFollowAggregateDto implements Serializable {
* 保单投保人
*/
@Schema(description = "保单投保人")
private ApiPolicyholderInfoDto apiPolicyholderInfoDto;
private PolicyPolicyholder apiPolicyholderInfoDto;
/**
* 保单受保人
*/
@Schema(description = "保单受保人")
private ApiInsurantInfoDto apiInsurantInfoDto;
private PolicyInsurant apiInsurantInfoDto;
/**
* 保单受益人
*/
@Schema(description = "保单受益人")
private List<ApiBeneficiaryInfoDto> apiBeneficiaryInfoDtoList;
private List<PolicyBeneficiary> apiBeneficiaryInfoDtoList;
/**
* 保单第二持有人
*/
@Schema(description = "保单第二持有人")
private ApiSecondHolderInfoDto apiSecondHolderInfoDto;
// todo 健康问卷
// private Object policyholderInfo;
private PolicySecondHolder apiSecondHolderInfoDto;
// 错误信息(如果有查询失败的情况)
private String errorMessage;
......@@ -92,44 +89,29 @@ public class PolicyFollowAggregateDto implements Serializable {
apiProductPlanInfoDto.setApiProductPlanMainInfoDto(policy);
// 附加险列表
List<ApiProductPlanAdditionalInfoDto> apiProductPlanAdditionalInfoDtoList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(policyAdditionals)) {
policyAdditionals.forEach(policyAdditional -> {
ApiProductPlanAdditionalInfoDto apiProductPlanAdditionalInfoDto = new ApiProductPlanAdditionalInfoDto();
BeanUtils.copyProperties(policyAdditional, apiProductPlanAdditionalInfoDto);
apiProductPlanAdditionalInfoDtoList.add(apiProductPlanAdditionalInfoDto);
});
}
apiProductPlanInfoDto.setApiProductPlanAdditionalInfoDtoList(apiProductPlanAdditionalInfoDtoList);
apiProductPlanInfoDto.setApiProductPlanAdditionalInfoDtoList(policyAdditionals);
dto.setApiProductPlanInfoDto(apiProductPlanInfoDto);
}
// 设置保单投保人
if (ObjectUtils.isNotEmpty(policyPolicyholder)) {
ApiPolicyholderInfoDto apiPolicyholderInfoDto = new ApiPolicyholderInfoDto();
BeanUtils.copyProperties(policyPolicyholder, apiPolicyholderInfoDto);
dto.setApiPolicyholderInfoDto(apiPolicyholderInfoDto);
policyPolicyholder.setAddressList(GSONUtil.fromJson((String) policyPolicyholder.getAddressList(), new TypeToken<List<Map<String, Object>>>() {}.getType()));
dto.setApiPolicyholderInfoDto(policyPolicyholder);
}
// 设置保单受保人
if (ObjectUtils.isNotEmpty(policyInsurant)) {
ApiInsurantInfoDto apiInsurantInfoDto = new ApiInsurantInfoDto();
BeanUtils.copyProperties(policyInsurant, apiInsurantInfoDto);
dto.setApiInsurantInfoDto(apiInsurantInfoDto);
policyInsurant.setAddressList(GSONUtil.fromJson((String) policyInsurant.getAddressList(), new TypeToken<List<Map<String, Object>>>() {}.getType()));
dto.setApiInsurantInfoDto(policyInsurant);
}
// 设置保单受益人
if (CollectionUtils.isNotEmpty(beneficiaryList)) {
List<ApiBeneficiaryInfoDto> apiBeneficiaryInfoDtoList = new ArrayList<>();
beneficiaryList.forEach(beneficiary -> {
ApiBeneficiaryInfoDto apiBeneficiaryInfoDto = new ApiBeneficiaryInfoDto();
BeanUtils.copyProperties(beneficiary, apiBeneficiaryInfoDto);
apiBeneficiaryInfoDtoList.add(apiBeneficiaryInfoDto);
beneficiary.setAddressList(GSONUtil.fromJson((String) beneficiary.getAddressList(), new TypeToken<List<Map<String, Object>>>() {}.getType()));
});
dto.setApiBeneficiaryInfoDtoList(apiBeneficiaryInfoDtoList);
dto.setApiBeneficiaryInfoDtoList(beneficiaryList);
}
// 设置保单第二持有人
if (ObjectUtils.isNotEmpty(policySecondHolder)) {
ApiSecondHolderInfoDto apiSecondHolderInfoDto = new ApiSecondHolderInfoDto();
BeanUtils.copyProperties(policySecondHolder, apiSecondHolderInfoDto);
dto.setApiSecondHolderInfoDto(apiSecondHolderInfoDto);
dto.setApiSecondHolderInfoDto(policySecondHolder);
}
return dto;
......
package com.yd.csf.service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
public class PolicyInsurantUpdateRequest implements Serializable {
......@@ -80,6 +83,7 @@ public class PolicyInsurantUpdateRequest implements Serializable {
* 出生日期
*/
@Schema(description = "出生日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date birthday;
/**
......@@ -338,7 +342,7 @@ public class PolicyInsurantUpdateRequest implements Serializable {
* 地址列表(json串)
*/
@Schema(description = "地址列表(json串)")
private String addressList;
private List<Map<String, String>> addressList;
/**
* 备注
......
package com.yd.csf.service.dto;
import com.yd.csf.service.vo.AddressVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
public class PolicyPolicyholderUpdateRequest implements Serializable {
......@@ -358,7 +361,7 @@ public class PolicyPolicyholderUpdateRequest implements Serializable {
* 地址列表(json串)
*/
@Schema(description = "地址列表(json串)")
private String addressList;
private List<Map<String, Object>> addressList;
/**
* 吸烟量(支/天)
......
package com.yd.csf.service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class PolicySecondHolderUpdateRequest implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 第二持有人业务ID
*/
@Schema(description = "第二持有人业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String policySecondHolderBizId;
/**
* 保单号
*/
@Schema(description = "保单号")
private String policyNo;
/**
* 与受保人关系(字典)
*/
@Schema(description = "与受保人关系(字典)")
private String insurantRel;
/**
* 名字
*/
@Schema(description = "名字")
private String name;
/**
* 名字-英文
*/
@Schema(description = "名字-英文")
private String nameEn;
/**
* 性别(字典)
*/
@Schema(description = "性别(字典)")
private String gender;
/**
* 证件类型(字典)
*/
@Schema(description = "证件类型(字典)")
private String documentType;
/**
* 证件号码
*/
@Schema(description = "证件号码")
private String idNumber;
/**
* 护照号码
*/
@Schema(description = "护照号码")
private String passportNumber;
/**
* 出生日期
*/
@Schema(description = "出生日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date birthTime;
/**
* 年龄
*/
@Schema(description = "年龄")
private String age;
/**
* 通用备注
*/
@Schema(description = "通用备注")
private String remark;
}
package com.yd.csf.service.dto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto;
import com.yd.csf.service.model.Policy;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
public class PolicyUpdateRequest implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 新单跟进唯一业务ID
* 新单跟进业务ID
*/
@Schema(description = "新单跟进唯一业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "新单跟进业务ID")
private String policyBizId;
/**
* 保单号
* 产品计划(保单信息)
*/
@Schema(description = "保单号")
private String policyNo;
@Schema(description = "产品计划(保单信息)")
private Policy apiProductPlanMainInfoDto;
/**
* 产品业务id
* 保单附加险列表
*/
@Schema(description = "产品业务id")
private String planBizId;
/**
* 产品代码
*/
@Schema(description = "产品代码")
private String productCode;
/**
* 产品名称
*/
@Schema(description = "产品名称")
private String productName;
/**
* 产品险种
*/
@Schema(description = "产品险种")
private String productCate;
/**
* 保险公司
*/
@Schema(description = "保险公司")
private String insurer;
/**
* 保险公司业务id
*/
@Schema(description = "保险公司业务id")
private String insurerBizId;
/**
* 地区
*/
@Schema(description = "地区")
private String region;
/**
* 保單投保人业务id
*/
@Schema(description = "保單投保人业务id")
private String policyPolicyholderBizId;
/**
* 保單持有人名称
*/
@Schema(description = "保單持有人名称")
private String policyHolder;
/**
* 保单受保人业务id
*/
@Schema(description = "保单受保人业务id")
private String policyInsurantBizId;
/**
* 保单受保人名称
*/
@Schema(description = "保单受保人名称")
private String insured;
/**
* 供款年期(字典)
*/
@Schema(description = "供款年期(字典)")
private Integer paymentTerm;
/**
* 付款频率(字典)
*/
@Schema(description = "付款频率(字典)")
private String paymentFrequency;
/**
* 期交保费
*/
@Schema(description = "期交保费")
private BigDecimal paymentPremium;
/**
* 保单状态
*/
@Schema(description = "保单状态 字典值:csf_policy_status")
private String status;
/**
* 币种
*/
@Schema(description = "币种")
private String currency;
/**
* 首期保费(不含徽费,预缴保费)
*/
@Schema(description = "首期保费(不含徽费,预缴保费)")
private Integer initialPremium;
/**
* 签单日期
*/
@Schema(description = "签单日期 格式:yyyy-MM-dd")
private Date signDate;
/**
* 缮发日期
*/
@Schema(description = "缮发日期 格式:yyyy-MM-dd")
private Date issueDate;
/**
* 生效日期
*/
@Schema(description = "生效日期 格式:yyyy-MM-dd")
private Date effectiveDate;
/**
* 续保日期
*/
@Schema(description = "续保日期 格式:yyyy-MM-dd")
private Date renewalDate;
/**
* 是否预缴: 0-否, 1-是
*/
@Schema(description = "是否预缴: 0-否, 1-是")
private Integer isPrepaid;
/**
* 预付额
*/
@Schema(description = "预付额")
private String deductibles;
/**
* 预缴年期
*/
@Schema(description = "预缴年期")
private Integer prepaidTerm;
/**
* 首期付款方式(字典)
*/
@Schema(description = "首期付款方式(字典)")
private String initialPaymentMethod;
/**
* 续期付款方式(字典)
*/
@Schema(description = "续期付款方式(字典)")
private String renewalPaymentMethod;
/**
* 红利分配方式(字典)
*/
@Schema(description = "红利分配方式(字典)")
private String dividendDistributionMethod;
/**
* 保单日期回溯: 0-否, 1-是(字典)
*/
@Schema(description = "保单日期回溯: 0-否, 1-是(字典)")
private Integer isBacktrack;
/**
* 是否参加递增保障权益: 0-否, 1-是(字典)
*/
@Schema(description = "是否参加递增保障权益: 0-否, 1-是(字典)")
private Integer isJoin;
/**
* 对账公司
*/
@Schema(description = "对账公司")
private String reconciliationCompany;
/**
* 对账公司业务id
*/
@Schema(description = "对账公司业务id")
private String reconciliationCompanyBizId;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
@Schema(description = "保单附加险列表")
private List<ApiProductPlanAdditionalInfoDto> apiProductPlanAdditionalInfoDtoList;
}
......@@ -83,9 +83,14 @@ public class Policy implements Serializable {
private String insured;
/**
* 保额
*/
private Object sumInsured;
/**
* 供款年期(字典)
*/
private Integer paymentTerm;
private Object paymentTerm;
/**
* 付款频率(字典)
......@@ -110,7 +115,7 @@ public class Policy implements Serializable {
/**
* 首期保费(不含徽费,预缴保费)
*/
private Integer initialPremium;
private Object initialPremium;
/**
* 签单日期
......
......@@ -165,7 +165,7 @@ public class PolicyBeneficiary implements Serializable {
/**
* 地址列表(json串)
*/
private String addressList;
private Object addressList;
/**
* 通用备注
......
......@@ -90,7 +90,7 @@ public class PolicyFollow implements Serializable {
/**
* 供款年期
*/
private Integer paymentTerm;
private Object paymentTerm;
/**
* 期交保费
......@@ -170,7 +170,7 @@ public class PolicyFollow implements Serializable {
/**
* 下一步跟进状态列表
*/
private String nextStatusList;
private Object nextStatusList;
/**
* 保單持有人
......
......@@ -300,7 +300,7 @@ public class PolicyInsurant implements Serializable {
/**
* 地址列表(json串)
*/
private String addressList;
private Object addressList;
/**
* 通用备注
......
......@@ -315,7 +315,7 @@ public class PolicyPolicyholder implements Serializable {
/**
* 地址列表(json串)
*/
private String addressList;
private Object addressList;
/**
* 吸烟量(支/天)
......
package com.yd.csf.service.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.dto.CommissionExpectedAddRequest;
import com.yd.csf.service.dto.CommissionExpectedQueryRequest;
import com.yd.csf.service.dto.CommissionExpectedUpdateRequest;
import com.yd.csf.service.model.CommissionExpected;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.PolicyVO;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
* @author Zhang Jianan
......@@ -14,4 +20,34 @@ import com.yd.csf.service.vo.PolicyVO;
public interface CommissionExpectedService extends IService<CommissionExpected> {
Page<CommissionExpectedVO> getCommissionExpectedVOPage(Page<CommissionExpected> commissionExpectedPage);
/**
* 校验数据
*
* @param commissionExpected
* @param add 对创建的数据进行校验
*/
void validCommissionExpected(CommissionExpected commissionExpected, boolean add);
/**
* 获取查询条件
*
* @param commissionExpectedQueryRequest
* @return
*/
QueryWrapper<CommissionExpected> getQueryWrapper(CommissionExpectedQueryRequest commissionExpectedQueryRequest);
/**
* 获取预计来佣封装
*
* @param commissionExpected
* @return
*/
CommissionExpectedVO getCommissionExpectedVO(CommissionExpected commissionExpected);
Boolean addCommissionExpected(CommissionExpectedAddRequest commissionExpectedAddRequest);
Boolean deleteCommissionExpected(String commissionExpectedBizId);
Boolean updateCommissionExpected(CommissionExpectedUpdateRequest commissionExpectedUpdateRequest);
}
......@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.model.Commission;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.vo.CommissionVO;
import java.util.List;
......@@ -30,6 +31,8 @@ public interface CommissionService extends IService<Commission> {
Commission getByCommissionBizId(String commissionBizId);
void compareWithExpected(Commission commission, CommissionExpected expected);
List<Commission> queryList(CommissionDto dto);
List<CommissionBindPolicyBrokerDto> queryCommissionBindPolicyBrokerList(CommissionDto dto);
......
......@@ -53,4 +53,6 @@ public interface FnaService extends IService<Fna> {
Boolean updateFna(FnaUpdateRequest fnaUpdateRequest, String appointmentNo);
Map<String, Object> copyFna(FnaCopyRequest fnaCopyRequest);
int updateCustomerNameByCustomerBizId(String firstNamePinyin, String customerBizId);
}
package com.yd.csf.service.service;
import com.yd.csf.service.dto.PolicyBeneficiaryAddRequest;
import com.yd.csf.service.dto.PolicyBeneficiaryListUpdateRequest;
import com.yd.csf.service.dto.PolicyBeneficiaryUpdateRequest;
import com.yd.csf.service.model.PolicyBeneficiary;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;
/**
* @author Zhang Jianan
* @description 针对表【policy_beneficiary(受益人信息表)】的数据库操作Service
......@@ -10,4 +15,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface PolicyBeneficiaryService extends IService<PolicyBeneficiary> {
Map<String, Object> addPolicyBeneficiary(PolicyBeneficiaryAddRequest policyBeneficiaryAddRequest);
PolicyBeneficiary getByBizId(String policyBeneficiaryBizId);
Boolean updatePolicyBeneficiary(PolicyBeneficiaryUpdateRequest policyUpdateRequest);
Boolean updatePolicyBeneficiaryList(PolicyBeneficiaryListUpdateRequest policyBeneficiaryUpdateRequest);
}
......@@ -6,8 +6,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.PolicyFollowStatusEnum;
import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.vo.PolicyFollowDetailVO;
import com.yd.csf.service.vo.PolicyFollowVO;
import java.util.List;
import java.util.Map;
/**
......@@ -29,7 +31,7 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
Map<String, Object> addPolicyFollow(PolicyFollowAddRequest policyFollowAddRequest);
Boolean addToPolicy(AddToPolicyRequest addToPolicyRequest);
Boolean addToPolicy(List<String> policyNoList);
Boolean changePolicyFollowStatus(ChangePolicyFollowStatusRequest changePolicyFollowStatusRequest);
......@@ -38,4 +40,6 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
String getNextStatus(PolicyFollowStatusEnum policyFollowStatusEnum);
PolicyFollowAggregateDto getPolicyFollowAggregate(String policyBizId);
Page<PolicyFollowDetailVO> getPolicyFollowDetailVOList(Page<PolicyFollow> policyFollowPage);
}
package com.yd.csf.service.service;
import com.yd.csf.service.dto.PolicySecondHolderUpdateRequest;
import com.yd.csf.service.model.PolicySecondHolder;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -10,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface PolicySecondHolderService extends IService<PolicySecondHolder> {
Boolean updatePolicySecondHolder(PolicySecondHolderUpdateRequest policySecondHolderUpdateRequest);
}
package com.yd.csf.service.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.common.constant.CommonConstant;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.dto.CommissionExpectedAddDto;
import com.yd.csf.service.dto.CommissionExpectedAddRequest;
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.service.CommissionExpectedService;
import com.yd.csf.service.dao.CommissionExpectedMapper;
import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.CommissionExpectedVO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -36,6 +50,166 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
CommissionExpectedVOPage.setRecords(CommissionExpectedVOList);
return CommissionExpectedVOPage;
}
/**
* 校验数据
*
* @param commissionExpected
* @param add 对创建的数据进行校验
*/
@Override
public void validCommissionExpected(CommissionExpected commissionExpected, boolean add) {
if (commissionExpected == null) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "预计来佣对象不能为空");
}
String policyNo = commissionExpected.getPolicyNo();
if (StringUtils.isBlank(policyNo)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "保单号不能为空");
}
String commissionName = commissionExpected.getCommissionName();
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(), "来佣金额不能为空");
}
Integer commissionPeriod = commissionExpected.getCommissionPeriod();
if (ObjectUtils.isEmpty(commissionPeriod)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "佣金期数不能为空");
}
Integer totalPeriod = commissionExpected.getTotalPeriod();
if (ObjectUtils.isEmpty(totalPeriod)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "总来佣期数不能为空");
}
// 创建数据时,参数不能为空
if (add) {
// todo 补充校验规则
// ThrowUtils.throwIf(StringUtils.isBlank(title), ErrorCode.PARAMS_ERROR);
}
}
/**
* 获取查询条件
*
* @param commissionExpectedQueryRequest
* @return
*/
@Override
public QueryWrapper<CommissionExpected> getQueryWrapper(CommissionExpectedQueryRequest commissionExpectedQueryRequest) {
QueryWrapper<CommissionExpected> queryWrapper = new QueryWrapper<>();
if (commissionExpectedQueryRequest == null) {
return queryWrapper;
}
// 获取查询参数
String policyNo = commissionExpectedQueryRequest.getPolicyNo();
// 精确查询
queryWrapper.eq(ObjectUtils.isNotEmpty(policyNo), "policy_no", policyNo);
// 默认排序规则
queryWrapper.orderByAsc("commission_period");
// 排序字段
String sortField = commissionExpectedQueryRequest.getSortField();
String sortOrder = commissionExpectedQueryRequest.getSortOrder();
queryWrapper.orderBy(ObjectUtils.isNotEmpty(sortField) && sortField.equals("reconciliation_company"), sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
sortField);
queryWrapper.orderBy(ObjectUtils.isNotEmpty(sortField) && sortField.equals("commission_name"), sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
sortField);
queryWrapper.orderBy(ObjectUtils.isNotEmpty(sortField) && sortField.equals("commission_period"), sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
sortField);
queryWrapper.orderBy(ObjectUtils.isNotEmpty(sortField) && sortField.equals("amount"), sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
sortField);
return queryWrapper;
}
/**
* 获取预计来佣封装
*
* @param commissionExpected
* @return
*/
@Override
public CommissionExpectedVO getCommissionExpectedVO(CommissionExpected commissionExpected) {
// 对象转封装类
CommissionExpectedVO commissionExpectedVO = CommissionExpectedVO.objToVo(commissionExpected);
// todo 可以根据需要为封装对象补充值,不需要的内容可以删除
return commissionExpectedVO;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean addCommissionExpected(CommissionExpectedAddRequest commissionExpectedAddRequest) {
List<CommissionExpectedAddDto> addDtoList = commissionExpectedAddRequest.getCommissionExpectedAddDtoList();
if (CollUtil.isEmpty(addDtoList)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "预计来佣列表不能为空");
}
List<CommissionExpected> addList = new ArrayList<>();
List<CommissionExpected> updateList = new ArrayList<>();
for (CommissionExpectedAddDto addDto : addDtoList) {
CommissionExpected commissionExpected = new CommissionExpected();
BeanUtils.copyProperties(addDto, commissionExpected);
// 校验参数
validCommissionExpected(commissionExpected, true);
if (StringUtils.isBlank(addDto.getCommissionExpectedBizId())) {
// 生成新单编号
commissionExpected.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected"));
commissionExpected.setCreateTime(new Date());
commissionExpected.setUpdateTime(new Date());
// 设置默认状态
commissionExpected.setStatus(CommissionExpectedStatusEnum.PENDING.getItemValue());
addList.add(commissionExpected);
} else {
commissionExpected.setUpdateTime(new Date());
updateList.add(commissionExpected);
}
}
// 新增预计来佣
if (CollectionUtils.isNotEmpty(addList)) {
this.saveBatch(addList);
}
if (CollectionUtils.isNotEmpty(updateList)) {
this.updateBatchById(updateList);
}
return true;
}
@Override
public Boolean deleteCommissionExpected(String commissionExpectedBizId) {
if (StringUtils.isBlank(commissionExpectedBizId)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "预计来佣业务id不能为空");
}
// 校验预计来佣是否存在
CommissionExpected commissionExpected = getByBizId(commissionExpectedBizId);
if (commissionExpected == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "预计来佣不存在");
}
return this.removeById(commissionExpected.getId());
}
@Override
public Boolean updateCommissionExpected(CommissionExpectedUpdateRequest commissionExpectedUpdateRequest) {
// 校验预计来佣是否存在
CommissionExpected commissionExpected = getByBizId(commissionExpectedUpdateRequest.getCommissionExpectedBizId());
if (commissionExpected == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "预计来佣不存在");
}
// 校验数据
validCommissionExpected(commissionExpected, false);
// 转换为实体类
BeanUtils.copyProperties(commissionExpectedUpdateRequest, commissionExpected);
commissionExpected.setUpdateTime(new Date());
// 更新预计来佣
return this.updateById(commissionExpected);
}
private CommissionExpected getByBizId(String commissionExpectedBizId) {
return this.getOne(new QueryWrapper<CommissionExpected>().eq("commission_expected_biz_id", commissionExpectedBizId));
}
}
......
......@@ -12,6 +12,7 @@ import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.CommissionExpectedStatusEnum;
import com.yd.csf.service.enums.CommissionStatusEnum;
import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.model.*;
......@@ -39,12 +40,15 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
@Resource
private FortuneService fortuneService;
@Resource
private PolicyFollowService policyFollowService;
@Resource
private PolicyBrokerService policyBrokerService;
@Resource
private PolicyService policyService;
@Resource
private CommissionExpectedService commissionExpectedService;
@Override
public QueryWrapper<Commission> getQueryWrapper(CommissionQueryRequest commissionQueryRequest) {
......@@ -86,6 +90,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateCommission(CommissionUpdateRequest commissionUpdateRequest) {
String commissionBizId = commissionUpdateRequest.getCommissionBizId();
Commission commission = this.getOne(new QueryWrapper<Commission>().eq("commission_biz_id", commissionBizId));
......@@ -93,6 +98,18 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "未找到该来佣记录");
}
BeanUtils.copyProperties(commissionUpdateRequest, commission, "id", "commissionBizId");
// 查询预计来佣
CommissionExpected commissionExpected = queryByCommission(commission);
if (commissionExpected != null) {
// 对比预计来佣
compareWithExpected(commission, commissionExpected);
commissionExpectedService.updateById(commissionExpected);
} else {
// 预计来佣不存在,来佣状态设置为 比对失败
commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue());
commission.setRemark("未找到当前来佣对应的预计来佣,比对失败");
}
// 获取当前登录用户
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
String loginUserId = currentLoginUser.getId().toString();
......@@ -102,11 +119,26 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return this.updateById(commission);
}
private CommissionExpected queryByCommission(Commission commission) {
QueryWrapper<CommissionExpected> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("policy_no", commission.getPolicyNo());
queryWrapper.eq("commission_name", commission.getCommissionName());
queryWrapper.eq("commission_period", commission.getCommissionPeriod());
queryWrapper.eq("currency", commission.getCurrency());
return commissionExpectedService.getOne(queryWrapper);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest) {
List<String> commissionBizIdList = generateFortuneRequest.getCommissionBizIdList();
List<Commission> commissionList = this.list(new QueryWrapper<Commission>().in("commission_biz_id", commissionBizIdList));
// 校验来佣记录状态
for (Commission commission : commissionList) {
if (StringUtils.equals(commission.getStatus(), CommissionStatusEnum.WAIT.getItemValue())) {
throw new BusinessException(ResultCode.FAIL.getCode(), "来佣记录为未比对,不能生成出帐");
}
}
// 获取所有保单号
Set<String> policyNoSet = commissionList.stream().map(Commission::getPolicyNo).collect(Collectors.toSet());
......@@ -127,6 +159,9 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 2.根据保单号查询所有转介人
List<PolicyBroker> brokerList = policyBrokerService.list(new QueryWrapper<PolicyBroker>().in("policy_no", policyNoSet));
if (CollUtil.isEmpty(brokerList)) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "该保单不存在转介人,请先配置转介人");
}
// 构建保单号到转介人的映射
Map<String, List<PolicyBroker>> brokerMap = brokerList.stream().collect(Collectors.groupingBy(PolicyBroker::getPolicyNo));
......@@ -167,6 +202,14 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean addCommission(CommissionAddRequest commissionAddRequest) {
// 校验来佣所属保单是否存在
String policyNo = commissionAddRequest.getPolicyNo();
boolean exists = policyService.exists(new QueryWrapper<Policy>().eq("policy_no", policyNo));
// 校验来佣所属保单跟进是否存在
boolean policyFollowExists = policyFollowService.exists(new QueryWrapper<PolicyFollow>().eq("policy_no", policyNo));
if (!exists && !policyFollowExists) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "该保单号不存在,不能添加来佣");
}
// 获取当前登录用户
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
......@@ -177,8 +220,18 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 生成新单编号
String commissionBizId = RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode());
commission.setCommissionBizId(commissionBizId);
// 设置默认状态
commission.setStatus(CommissionStatusEnum.WAIT.getItemValue());
// 查询预计来佣
CommissionExpected commissionExpected = queryByCommission(commission);
if (commissionExpected != null) {
// 对比预计来佣
compareWithExpected(commission, commissionExpected);
commissionExpectedService.updateById(commissionExpected);
} else {
// 预计来佣不存在,来佣状态设置为 比对失败
commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue());
commission.setRemark("未找到当前来佣对应的预计来佣,比对失败");
}
commission.setCreatorId(loginUserId);
commission.setCreateTime(new Date());
commission.setUpdaterId(loginUserId);
......@@ -192,6 +245,22 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return this.getOne(new QueryWrapper<Commission>().eq("commission_biz_id", commissionBizId));
}
@Override
public void compareWithExpected(Commission commission, CommissionExpected expected) {
if (expected != null) {
if (expected.getAmount().compareTo(commission.getAmount()) == 0) {
// 一致,来佣状态设置为 比对成功
commission.setStatus(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue());
// 预计来佣的状态设置为 已来佣
expected.setStatus(CommissionExpectedStatusEnum.COMPARED.getItemValue());
} else {
// 不一致,来佣状态设置为 比对失败
commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue());
expected.setStatus(CommissionExpectedStatusEnum.PARTIAL.getItemValue());
}
}
}
/**
* 查询列表
* @param dto
......
......@@ -20,8 +20,10 @@ 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;
......@@ -54,6 +56,9 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer>
@Resource
private CustomerService customerService;
@Resource
private FnaService fnaService;
@Override
......@@ -241,6 +246,9 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer>
customerService.validCustomer(oldCustomer);
// 更新主表
boolean result = customerService.updateById(oldCustomer);
if (StringUtils.isNotBlank(customerUpdateRequest.getFirstNamePinyin())) {
fnaService.updateCustomerNameByCustomerBizId(customerUpdateRequest.getFirstNamePinyin(), customerBizId);
}
// 获取扩展表信息
CustomerExpand customerExpand = customerExpandService.getByCustomerBizId(customerBizId);
......
......@@ -356,6 +356,11 @@ public class FnaServiceImpl extends ServiceImpl<FnaMapper, Fna> implements FnaSe
return Collections.singletonMap("fnaBizId", newFna.getFnaBizId());
}
@Override
public int updateCustomerNameByCustomerBizId(String firstNamePinyin, String customerBizId) {
return baseMapper.updateCustomerNameByCustomerBizId(firstNamePinyin, customerBizId);
}
private String copyFnaForm(String oldFnaFormBizId, String userBizId) {
FnaForm fnaForm = fnaFormService.getByFnaFormBizId(oldFnaFormBizId);
if (fnaForm == null) {
......
......@@ -135,6 +135,17 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
List<String> fortuneBizIdList = fortuneDownloadRequest.getFortuneBizIdList();
if (CollUtil.isNotEmpty(fortuneBizIdList)) {
List<Fortune> fortuneList = this.list(new QueryWrapper<Fortune>().in("fortune_biz_id", fortuneBizIdList));
// 校验发佣记录状态
StringBuilder validateMsg = new StringBuilder();
for (Fortune fortune : fortuneList) {
if (StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.WAIT.getItemValue())) {
validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("为待出账,不能生成出账记录; ");
}
}
if (StringUtils.isNotBlank(validateMsg.toString())) {
throw new BusinessException(ResultCode.FAIL.getCode(), validateMsg.toString());
}
if (CollUtil.isNotEmpty(fortuneList)) {
// 按人和币种分组
Map<String, List<Fortune>> fortuneMap = fortuneList.stream().collect(Collectors.groupingBy(fortune -> fortune.getBroker() + "_" + fortune.getCurrency()));
......
package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.dto.PolicyBeneficiaryAddRequest;
import com.yd.csf.service.dto.PolicyBeneficiaryListUpdateRequest;
import com.yd.csf.service.dto.PolicyBeneficiaryUpdateRequest;
import com.yd.csf.service.model.PolicyBeneficiary;
import com.yd.csf.service.service.PolicyBeneficiaryService;
import com.yd.csf.service.dao.PolicyBeneficiaryMapper;
import com.yd.csf.service.utils.GSONUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
* @author Zhang Jianan
* @description 针对表【policy_beneficiary(受益人信息表)】的数据库操作Service实现
* @createDate 2025-10-31 11:43:16
*/
* @author Zhang Jianan
* @description 针对表【policy_beneficiary(受益人信息表)】的数据库操作Service实现
* @createDate 2025-10-31 11:43:16
*/
@Service
public class PolicyBeneficiaryServiceImpl extends ServiceImpl<PolicyBeneficiaryMapper, PolicyBeneficiary>
implements PolicyBeneficiaryService{
@Override
public Map<String, Object> addPolicyBeneficiary(PolicyBeneficiaryAddRequest policyBeneficiaryAddRequest) {
// 校验请求参数
if (policyBeneficiaryAddRequest == null) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), ResultCode.PARAMS_ERROR.getMessage());
}
// 转换为实体类
PolicyBeneficiary policyBeneficiary = new PolicyBeneficiary();
BeanUtils.copyProperties(policyBeneficiaryAddRequest, policyBeneficiary);
policyBeneficiary.setPolicyBeneficiaryBizId(RandomStringGenerator.generateBizId16("policy_beneficiary"));
Date now = new Date();
policyBeneficiary.setCreateTime(now);
policyBeneficiary.setUpdateTime(now);
// 保存到数据库
this.saveOrUpdate(policyBeneficiary);
// 返回结果
return Collections.singletonMap("policyBeneficiaryBizId", policyBeneficiary.getPolicyBeneficiaryBizId());
}
@Override
public PolicyBeneficiary getByBizId(String policyBeneficiaryBizId) {
return this.getOne(new QueryWrapper<PolicyBeneficiary>().eq("policy_beneficiary_biz_id", policyBeneficiaryBizId));
}
@Override
public Boolean updatePolicyBeneficiary(PolicyBeneficiaryUpdateRequest policyUpdateRequest) {
// 校验请求参数
if (policyUpdateRequest == null) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), ResultCode.PARAMS_ERROR.getMessage());
}
// 校验 policyBeneficiaryBizId 是否存在
PolicyBeneficiary policyBeneficiary = this.getByBizId(policyUpdateRequest.getPolicyBeneficiaryBizId());
if (policyBeneficiary == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage());
}
// 转换为实体类
BeanUtils.copyProperties(policyUpdateRequest, policyBeneficiary, "policyBeneficiaryBizId", "policyBizId", "id");
policyBeneficiary.setUpdateTime(new Date());
// 更新数据库
return this.updateById(policyBeneficiary);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updatePolicyBeneficiaryList(PolicyBeneficiaryListUpdateRequest policyBeneficiaryUpdateRequest) {
// 校验请求参数
if (policyBeneficiaryUpdateRequest == null || StringUtils.isEmpty(policyBeneficiaryUpdateRequest.getPolicyBizId())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), ResultCode.PARAMS_ERROR.getMessage());
}
// 先删除旧的受益人
this.remove(new QueryWrapper<PolicyBeneficiary>().eq("policy_biz_id", policyBeneficiaryUpdateRequest.getPolicyBizId()));
// 批量插入新的受益人
if (CollectionUtils.isNotEmpty(policyBeneficiaryUpdateRequest.getPolicyBeneficiaryList())) {
List<PolicyBeneficiary> beneficiaryList = new ArrayList<>();
for (PolicyBeneficiaryAddRequest beneficiaryAddRequest : policyBeneficiaryUpdateRequest.getPolicyBeneficiaryList()) {
PolicyBeneficiary beneficiary = new PolicyBeneficiary();
beneficiary.setPolicyBeneficiaryBizId(RandomStringGenerator.generateBizId16("policy_beneficiary"));
beneficiary.setPolicyBizId(policyBeneficiaryUpdateRequest.getPolicyBizId());
beneficiary.setPolicyNo(beneficiaryAddRequest.getPolicyNo());
beneficiary.setCustomerType(beneficiaryAddRequest.getCustomerType());
beneficiary.setInsurantRel(beneficiaryAddRequest.getInsurantRel());
beneficiary.setBenefitRatio(beneficiaryAddRequest.getBenefitRatio());
beneficiary.setName(beneficiaryAddRequest.getName());
beneficiary.setNameEn(beneficiaryAddRequest.getNameEn());
beneficiary.setGender(beneficiaryAddRequest.getGender());
beneficiary.setDocumentType(beneficiaryAddRequest.getDocumentType());
beneficiary.setIdNumber(beneficiaryAddRequest.getIdNumber());
beneficiary.setPassportNumber(beneficiaryAddRequest.getPassportNumber());
beneficiary.setBirthTime(beneficiaryAddRequest.getBirthTime());
beneficiary.setCompanyName(beneficiaryAddRequest.getCompanyName());
beneficiary.setCompanyNameEn(beneficiaryAddRequest.getCompanyNameEn());
beneficiary.setCompanyBusinessNo(beneficiaryAddRequest.getCompanyBusinessNo());
beneficiary.setCompanyRegisterTime(beneficiaryAddRequest.getCompanyRegisterTime());
beneficiary.setCompanyRegisterRegion(beneficiaryAddRequest.getCompanyRegisterRegion());
beneficiary.setCompanyMobileCode(beneficiaryAddRequest.getCompanyMobileCode());
beneficiary.setCompanyMobile(beneficiaryAddRequest.getCompanyMobile());
beneficiary.setCompanyEmail(beneficiaryAddRequest.getCompanyEmail());
beneficiary.setCompanyEnterAddress(beneficiaryAddRequest.getCompanyEnterAddress());
beneficiary.setMailingAddress(beneficiaryAddRequest.getMailingAddress());
beneficiary.setAuthNameCn(beneficiaryAddRequest.getAuthNameCn());
beneficiary.setAuthNameEn(beneficiaryAddRequest.getAuthNameEn());
beneficiary.setAuthProfessional(beneficiaryAddRequest.getAuthProfessional());
beneficiary.setAuthMobileCode(beneficiaryAddRequest.getAuthMobileCode());
beneficiary.setAuthMobile(beneficiaryAddRequest.getAuthMobile());
beneficiary.setRemark(beneficiaryAddRequest.getRemark());
if (beneficiaryAddRequest.getAddressList() != null) {
beneficiary.setAddressList(GSONUtil.toJson(beneficiaryAddRequest.getAddressList()));
}
beneficiary.setCreateTime(new Date());
beneficiary.setUpdateTime(new Date());
beneficiaryList.add(beneficiary);
}
this.saveBatch(beneficiaryList);
}
return true;
}
}
......
......@@ -8,6 +8,9 @@ import com.yd.csf.service.dto.PolicyInsurantUpdateRequest;
import com.yd.csf.service.model.PolicyInsurant;
import com.yd.csf.service.service.PolicyInsurantService;
import com.yd.csf.service.dao.PolicyInsurantMapper;
import com.yd.csf.service.utils.GSONUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
......@@ -24,14 +27,18 @@ public class PolicyInsurantServiceImpl extends ServiceImpl<PolicyInsurantMapper,
@Override
public boolean update(PolicyInsurantUpdateRequest policyInsurantUpdateRequest) {
if (policyInsurantUpdateRequest == null || policyInsurantUpdateRequest.getPolicyInsurantBizId() == null) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), ResultCode.PARAMS_ERROR.getMessage());
if (policyInsurantUpdateRequest == null || StringUtils.isBlank(policyInsurantUpdateRequest.getPolicyInsurantBizId())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "policyInsurantBizId不能为空");
}
PolicyInsurant policyInsurant = this.getOne(new QueryWrapper<PolicyInsurant>().eq("policy_insurant_biz_id", policyInsurantUpdateRequest.getPolicyInsurantBizId()));
if (policyInsurant == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage());
}
BeanUtils.copyProperties(policyInsurantUpdateRequest, policyInsurant, "policyBizId", "policyInsurantBizId", "id");
// 处理地址Json
if (CollectionUtils.isNotEmpty(policyInsurantUpdateRequest.getAddressList())) {
policyInsurant.setAddressList(GSONUtil.toJson(policyInsurantUpdateRequest.getAddressList()));
}
policyInsurant.setUpdateTime(new Date());
return this.updateById(policyInsurant);
}
......
......@@ -8,6 +8,8 @@ import com.yd.csf.service.dto.PolicyPolicyholderUpdateRequest;
import com.yd.csf.service.model.PolicyPolicyholder;
import com.yd.csf.service.service.PolicyPolicyholderService;
import com.yd.csf.service.dao.PolicyPolicyholderMapper;
import com.yd.csf.service.utils.GSONUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
......@@ -32,6 +34,10 @@ public class PolicyPolicyholderServiceImpl extends ServiceImpl<PolicyPolicyholde
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage());
}
BeanUtils.copyProperties(policyPolicyholderUpdateRequest, policyPolicyholder, "policyBizId", "policyPolicyholderBizId", "id");
// 处理地址Json
if (CollectionUtils.isNotEmpty(policyPolicyholderUpdateRequest.getAddressList())) {
policyPolicyholder.setAddressList(GSONUtil.toJson(policyPolicyholderUpdateRequest.getAddressList()));
}
policyPolicyholder.setUpdateTime(new Date());
return this.updateById(policyPolicyholder);
}
......
package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.csf.service.dto.PolicySecondHolderUpdateRequest;
import com.yd.csf.service.model.PolicySecondHolder;
import com.yd.csf.service.service.PolicySecondHolderService;
import com.yd.csf.service.dao.PolicySecondHolderMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* @author Zhang Jianan
* @description 针对表【policy_second_holder(第二持有人信息表)】的数据库操作Service实现
......@@ -15,6 +23,19 @@ import org.springframework.stereotype.Service;
public class PolicySecondHolderServiceImpl extends ServiceImpl<PolicySecondHolderMapper, PolicySecondHolder>
implements PolicySecondHolderService{
@Override
public Boolean updatePolicySecondHolder(PolicySecondHolderUpdateRequest policySecondHolderUpdateRequest) {
if (policySecondHolderUpdateRequest == null || StringUtils.isBlank(policySecondHolderUpdateRequest.getPolicySecondHolderBizId())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "policySecondHolderBizId不能为空");
}
PolicySecondHolder policySecondHolder = this.getOne(new QueryWrapper<PolicySecondHolder>().eq("policy_second_holder_biz_id", policySecondHolderUpdateRequest.getPolicySecondHolderBizId()));
if (policySecondHolder == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), ResultCode.NULL_ERROR.getMessage());
}
BeanUtils.copyProperties(policySecondHolderUpdateRequest, policySecondHolder, "policyBizId", "policySecondHolderBizId", "id");
policySecondHolder.setUpdateTime(new Date());
return this.updateById(policySecondHolder);
}
}
......
......@@ -7,12 +7,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto;
import com.yd.csf.service.dto.PolicyDto;
import com.yd.csf.service.dto.PolicyQueryRequest;
import com.yd.csf.service.dto.PolicyUpdateRequest;
import com.yd.csf.service.dto.QueryPolicyDto;
import com.yd.csf.service.model.AppointmentFile;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyAdditional;
import com.yd.csf.service.service.PolicyAdditionalService;
import com.yd.csf.service.service.PolicyPolicyholderService;
import com.yd.csf.service.service.PolicyService;
import com.yd.csf.service.dao.PolicyMapper;
......@@ -20,6 +23,7 @@ import com.yd.csf.service.vo.PolicyVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
......@@ -36,7 +40,7 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy>
implements PolicyService{
@Resource
private PolicyPolicyholderService policyPolicyholderService;
private PolicyAdditionalService policyAdditionalService;
@Override
public QueryWrapper<Policy> getQueryWrapper(PolicyQueryRequest policyQueryRequest) {
......@@ -86,6 +90,7 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy>
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updatePolicy(PolicyUpdateRequest policyUpdateRequest) {
String policyBizId = policyUpdateRequest.getPolicyBizId();
if (StringUtils.isBlank(policyBizId)) {
......@@ -95,9 +100,39 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy>
if (policy == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "保单不存在");
}
BeanUtils.copyProperties(policyUpdateRequest, policy, "policyBizId", "id");
policy.setUpdateTime(new Date());
return this.updateById(policy);
Date now = new Date();
// 保单信息
Policy apiProductPlanMainInfoDto = policyUpdateRequest.getApiProductPlanMainInfoDto();
if (apiProductPlanMainInfoDto != null) {
BeanUtils.copyProperties(apiProductPlanMainInfoDto, policy, "policyBizId", "id");
policy.setUpdateTime(now);
// 更新保单
this.updateById(policy);
}
String policyNo = policy.getPolicyNo();
// 先删除旧的附加险
policyAdditionalService.remove(new QueryWrapper<PolicyAdditional>().eq("policy_biz_id", policyBizId));
// 保单附加险列表
List<ApiProductPlanAdditionalInfoDto> apiProductPlanAdditionalInfoDtoList = policyUpdateRequest.getApiProductPlanAdditionalInfoDtoList();
if (CollUtil.isNotEmpty(apiProductPlanAdditionalInfoDtoList)) {
// 转换为实体类
List<PolicyAdditional> policyAdditionalList = apiProductPlanAdditionalInfoDtoList.stream().map(additionalDto -> {
PolicyAdditional policyAdditional = new PolicyAdditional();
BeanUtils.copyProperties(additionalDto, policyAdditional);
policyAdditional.setPolicyBizId(policyBizId);
policyAdditional.setPolicyNo(policyNo);
policyAdditional.setUpdateTime(now);
policyAdditional.setCreateTime(now);
return policyAdditional;
}).collect(Collectors.toList());
// 批量插入
policyAdditionalService.saveBatch(policyAdditionalList);
}
policy.setUpdateTime(now);
return true;
}
......
package com.yd.csf.service.utils;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
/**
* GSON工具类
*/
public class GSONUtil {
// 默认配置的Gson实例
private static final Gson DEFAULT_GSON = new GsonBuilder()
.setDateFormat("yyyy-MM-dd HH:mm:ss")
.disableHtmlEscaping()
.create();
// 支持null值的Gson实例
private static final Gson NULL_SAFE_GSON = new GsonBuilder()
.setDateFormat("yyyy-MM-dd HH:mm:ss")
.serializeNulls()
.disableHtmlEscaping()
.create();
// 美化输出的Gson实例
private static final Gson PRETTY_GSON = new GsonBuilder()
.setDateFormat("yyyy-MM-dd HH:mm:ss")
.setPrettyPrinting()
.disableHtmlEscaping()
.create();
/**
* 对象转JSON字符串(默认配置)
*/
public static String toJson(Object obj) {
return DEFAULT_GSON.toJson(obj);
}
/**
* 对象转JSON字符串(包含null值)
*/
public static String toJsonWithNulls(Object obj) {
return NULL_SAFE_GSON.toJson(obj);
}
/**
* 对象转格式化的JSON字符串
*/
public static String toPrettyJson(Object obj) {
return PRETTY_GSON.toJson(obj);
}
/**
* JSON字符串转对象
*/
public static <T> T fromJson(String json, Class<T> clazz) {
return DEFAULT_GSON.fromJson(json, clazz);
}
/**
* JSON字符串转对象(支持泛型)
*/
public static <T> T fromJson(String json, Type type) {
return DEFAULT_GSON.fromJson(json, type);
}
/**
* JSON字符串转List
*/
public static <T> List<T> fromJsonToList(String json, Class<T> clazz) {
Type type = TypeToken.getParameterized(List.class, clazz).getType();
return DEFAULT_GSON.fromJson(json, type);
}
/**
* JSON字符串转Map
*/
public static <K, V> Map<K, V> fromJsonToMap(String json, Class<K> keyClass, Class<V> valueClass) {
Type type = TypeToken.getParameterized(Map.class, keyClass, valueClass).getType();
return DEFAULT_GSON.fromJson(json, type);
}
/**
* 获取自定义配置的Gson实例
*/
public static Gson getCustomGson(GsonBuilder builder) {
return builder.create();
}
/**
* 向后兼容 - 保留原有的静态实例
*/
public static Gson gson = DEFAULT_GSON;
}
package com.yd.csf.service.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yd.csf.service.enums.PolicyFollowStatusEnum;
import com.yd.csf.service.model.PolicyBroker;
import com.yd.csf.service.model.PolicyFollow;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.*;
/**
* 新单跟进 DetailVO
*/
@Data
public class PolicyFollowDetailVO implements Serializable {
/**
* id
*/
private Long id;
/**
* 新单跟进唯一业务ID
*/
private String policyBizId;
/**
* 保单号
*/
private String policyNo;
/**
* 预约信息主表唯一业务ID
*/
private String appointmentBizId;
/**
* 预约编号
*/
private String appointmentNo;
/**
* 用户业务id
*/
private String userBizId;
/**
* 客户业务id
*/
private String customerBizId;
/**
* 客户名称
*/
private String customerName;
/**
* 递交日期
*/
private Date submitDate;
/**
* 签单日期
*/
private Date signDate;
/**
* 签单人
*/
private String signer;
/**
* 缮发日期
*/
private Date issueDate;
/**
* 生效日期
*/
private Date effectiveDate;
/**
* 续保日期
*/
private Date renewalDate;
/**
* 供款年期
*/
private Object paymentTerm;
/**
* 期交保费
*/
private BigDecimal paymentPremium;
/**
* 是否预缴: 0-否, 1-是
*/
private Integer isPrepaid;
/**
* 预缴年期
*/
private Integer prepaidTerm;
/**
* 预付额
*/
private String prepaidAmount;
/**
* 折扣后预付额
*/
private String prepaidAmountAfterDiscount;
/**
* 保单截止日期
*/
private Date policyExpirationDate;
/**
* 缴费编号
*/
private String paymentNumber;
/**
* 产品业务id
*/
private String productBizId;
/**
* 产品名称
*/
private String productName;
/**
* 产品类别
*/
private String productCate;
/**
* 保险公司
*/
private String insurer;
/**
* 保险公司业务id
*/
private String insurerBizId;
/**
* 对账公司
*/
private String reconciliationCompany;
/**
* 对账公司业务id
*/
private String reconciliationCompanyBizId;
/**
* 新单跟进状态
*/
private String status;
/**
* 下一步跟进状态列表
*/
private Object nextStatusList;
/**
* 保單持有人
*/
private String policyHolder;
/**
* 受保人
*/
private String insured;
/**
* 币种
*/
private String currency;
/**
* 首期保费(不含徽费,预缴保费)
*/
private Object initialPremium;
/**
* 寄送方式 1-自提, 2-快递
*/
private String mailingMethod;
/**
* 快递单号
*/
private String deliveryNo;
/**
* 经纪公司签收日期
*/
private String brokerSignDate;
/**
* 保险公司寄出日期
*/
private String insurerMailingDate;
/**
* 客户签收日期
*/
private String customerSignDate;
/**
* 附件列表
*/
private String attachments;
/**
* 转介人
*/
@Schema(description = "转介人")
private List<PolicyBroker> brokerList;
/**
* 备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField()
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/**
* 对象转封装类
*
* @param policyFollow
* @return
*/
public static PolicyFollowDetailVO objToVo(PolicyFollow policyFollow) {
if (policyFollow == null) {
return null;
}
PolicyFollowDetailVO PolicyFollowDetailVO = new PolicyFollowDetailVO();
PolicyFollowDetailVO.setPolicyBizId(policyFollow.getPolicyBizId());
// 转换PolicyFollow
BeanUtils.copyProperties(policyFollow, PolicyFollowDetailVO);
// 处理 nextStatusList 字段
Object nextStatusList = policyFollow.getNextStatusList();
if (nextStatusList != null && !nextStatusList.toString().isEmpty()) {
String[] statusArr = nextStatusList.toString().split(",");
List<Map<String, String>> statusMapList = new ArrayList<>();
for (String status : statusArr) {
Map<String, String> map = new HashMap<>();
map.put("itemLabel", PolicyFollowStatusEnum.getEnumByValue(status).getItemLabel());
map.put("itemValue", status);
statusMapList.add(map);
}
PolicyFollowDetailVO.setNextStatusList(statusMapList);
}
return PolicyFollowDetailVO;
}
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.yd.csf.service.vo;
import com.yd.csf.service.dto.PolicyFollowUpdateDto;
import com.yd.csf.service.dto.PolicyMailing;
import com.yd.csf.service.dto.VerifyPolicyInfo;
import com.yd.csf.service.enums.PolicyFollowStatusEnum;
import com.yd.csf.service.model.PolicyBroker;
import com.yd.csf.service.model.PolicyFollow;
import io.swagger.v3.oas.annotations.media.Schema;
......@@ -10,12 +11,10 @@ import lombok.Data;
import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.*;
/**
* 新单跟进视图
*
*/
@Data
public class PolicyFollowVO implements Serializable {
......@@ -28,11 +27,11 @@ public class PolicyFollowVO implements Serializable {
@Schema(description = "新单跟进唯一业务ID")
private String policyBizId;
/**
/**
* 下一步跟进状态列表
*/
@Schema(description = "下一步跟进状态列表, 下拉框")
private List<String> nextStatusList;
private Object nextStatusList;
/**
* 新单跟进Dto
......@@ -82,8 +81,18 @@ public class PolicyFollowVO implements Serializable {
BeanUtils.copyProperties(policyFollow, policyFollowUpdateDto);
policyFollowVO.setPolicyFollowUpdateDto(policyFollowUpdateDto);
if (policyFollow.getNextStatusList() != null) {
policyFollowVO.setNextStatusList(Arrays.asList(policyFollow.getNextStatusList().split(",")));
// 处理 nextStatusList 字段
Object nextStatusList = policyFollow.getNextStatusList();
if (nextStatusList != null && !nextStatusList.toString().isEmpty()) {
String[] statusArr = nextStatusList.toString().split(",");
List<Map<String, String>> statusMapList = new ArrayList<>();
for (String status : statusArr) {
Map<String, String> map = new HashMap<>();
map.put("itemLabel", PolicyFollowStatusEnum.getEnumByValue(status).getItemLabel());
map.put("itemValue", status);
statusMapList.add(map);
}
policyFollowVO.setNextStatusList(statusMapList);
}
VerifyPolicyInfo verifyPolicyInfo = new VerifyPolicyInfo();
......
......@@ -41,4 +41,8 @@
<update id="updateFnaNoById">
update fna set fna_no = #{fnaNo} where id = #{id}
</update>
<update id="updateCustomerNameByCustomerBizId">
update fna set customer_name = #{firstNamePinyin} where customer_biz_id = #{customerBizId}
</update>
</mapper>
......@@ -18,6 +18,7 @@
<result property="region" column="region" />
<result property="policyHolder" column="policy_holder" />
<result property="insured" column="insured" />
<result property="sumInsured" column="sum_insured" />
<result property="paymentTerm" column="payment_term" />
<result property="paymentFrequency" column="payment_frequency" />
<result property="paymentPremium" column="payment_premium" />
......@@ -50,7 +51,7 @@
<sql id="Base_Column_List">
id,policy_biz_id,policy_no,user_biz_id,plan_biz_id,product_code,
product_name,product_cate,insurer,insurer_biz_id,region,
policy_holder,insured,payment_term,payment_frequency,payment_premium,
policy_holder,insured,sum_insured,payment_term,payment_frequency,payment_premium,
status,currency,initial_premium,sign_date,issue_date,
effective_date,renewal_date,is_prepaid,deductibles,prepaid_term,
initial_payment_method,renewal_payment_method,dividend_distribution_method,is_backtrack,is_join,
......
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