Commit 3221e6a3 by jianan

来佣接口18

parent 5d63093d
...@@ -8,9 +8,7 @@ import com.yd.common.exception.BusinessException; ...@@ -8,9 +8,7 @@ import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.csf.api.dto.CommissionExcelDTO; import com.yd.csf.api.dto.CommissionExcelDTO;
import com.yd.csf.service.common.ErrorCode; import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.CommissionQueryRequest; import com.yd.csf.service.dto.*;
import com.yd.csf.service.dto.CommissionUpdateRequest;
import com.yd.csf.service.dto.GenerateFortuneRequest;
import com.yd.csf.service.enums.CommissionExpectedStatusEnum; import com.yd.csf.service.enums.CommissionExpectedStatusEnum;
import com.yd.csf.service.enums.CommissionStatusEnum; import com.yd.csf.service.enums.CommissionStatusEnum;
import com.yd.csf.service.model.Commission; import com.yd.csf.service.model.Commission;
...@@ -21,6 +19,7 @@ import com.yd.csf.service.vo.CommissionVO; ...@@ -21,6 +19,7 @@ import com.yd.csf.service.vo.CommissionVO;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -33,6 +32,7 @@ import java.io.IOException; ...@@ -33,6 +32,7 @@ import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -161,42 +161,49 @@ public class ApiCommissionController { ...@@ -161,42 +161,49 @@ public class ApiCommissionController {
* @param request * @param request
* @return * @return
*/ */
// @Operation(summary = "创建保单来佣") @Operation(summary = "创建保单来佣")
// @PostMapping("/add") @PostMapping("/add")
// @Transactional(rollbackFor = Exception.class) public Result<Map<String, Object>> addCommission(@RequestBody CommissionAddRequest customerAddRequest, HttpServletRequest request) {
// public Result<Map<String, Object>> addCustomer(@RequestBody CustomerAddRequest customerAddRequest, HttpServletRequest request) { if (customerAddRequest == null) {
// if (customerAddRequest == null) { return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
// return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage()); }
// } return Result.success(commissionService.addCommission(customerAddRequest));
// return Result.success(policyFollowService.addCustomer(customerAddRequest)); }
// }
/** /**
* 删除fna * 删除来佣
* *
* @param deleteRequest * @param deleteRequest
* @param request * @param request
* @return * @return
*/ */
// @PostMapping("/delete") @PostMapping("/delete")
// public Result<Boolean> deleteFna(@RequestBody DeleteRequest deleteRequest, HttpServletRequest request) { public Result<Boolean> deleteCommission(@RequestBody CommissionDeleteRequest deleteRequest, HttpServletRequest request) {
// if (deleteRequest == null || deleteRequest.getId() <= 0) { if (StringUtils.isBlank(deleteRequest.getCommissionBizId())) {
// throw new BusinessException(ErrorCode.PARAMS_ERROR); return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
// } }
// User user = userService.getLoginUser(request); String commissionBizId = deleteRequest.getCommissionBizId();
// long id = deleteRequest.getId();
// // 判断是否存在 // 获取当前登录用户的ID
// Customer oldFna = policyFollowService.getById(id); AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
// ThrowUtils.throwIf(oldFna == null, ErrorCode.NOT_FOUND_ERROR); String loginUserId = currentLoginUser.getId().toString();
// // 仅本人或管理员可删除
// if (!oldFna.getUserId().equals(user.getId()) && !userService.isAdmin(request)) { // 判断是否存在
Commission oldCommission = commissionService.getByCommissionBizId(commissionBizId);
if (oldCommission == null) {
return Result.fail(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
}
// 仅本人或管理员可删除
// if (!oldCommission.getUserId().equals(loginUserId) && !userService.isAdmin(request)) {
// throw new BusinessException(ErrorCode.NO_AUTH_ERROR); // throw new BusinessException(ErrorCode.NO_AUTH_ERROR);
// } // }
// // 操作数据库 // 操作数据库
// boolean result = policyFollowService.removeById(id); boolean result = commissionService.removeById(oldCommission.getId());
// ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR); if (!result) {
// return Result.success(true); return Result.fail(ErrorCode.OPERATION_ERROR.getCode(), ErrorCode.OPERATION_ERROR.getMessage());
// } }
return Result.success(result);
}
/** /**
* 更新保单来佣 * 更新保单来佣
......
...@@ -184,31 +184,92 @@ public class ApiFortuneController { ...@@ -184,31 +184,92 @@ public class ApiFortuneController {
} }
/** /**
* 删除fna * 创建出账
*
* @param fortuneAccountAddRequest
* @param request
* @return
*/
@Operation(summary = "创建出账")
@PostMapping("/add/fortuneAccount")
public Result<Map<String, Object>> addFortuneAccount(@RequestBody FortuneAccountAddRequest fortuneAccountAddRequest, HttpServletRequest request) {
if (fortuneAccountAddRequest == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
}
return Result.success(fortuneAccountService.addFortuneAccount(fortuneAccountAddRequest));
}
/**
* 删除出账
* *
* @param deleteRequest * @param deleteRequest
* @param request * @param request
* @return * @return
*/ */
// @PostMapping("/delete") @PostMapping("/delete/fortuneAccount")
// public Result<Boolean> deleteFna(@RequestBody DeleteRequest deleteRequest, HttpServletRequest request) { @Operation(summary = "删除出账")
// if (deleteRequest == null || deleteRequest.getId() <= 0) { public Result<Boolean> deleteFortuneAccount(@RequestBody FortuneAccountDeleteRequest deleteRequest, HttpServletRequest request) {
// throw new BusinessException(ErrorCode.PARAMS_ERROR); if (StringUtils.isBlank(deleteRequest.getFortuneAccountBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
}
String fortuneAccountBizId = deleteRequest.getFortuneAccountBizId();
// 获取当前登录用户的ID
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
String loginUserId = currentLoginUser.getId().toString();
// 判断是否存在
FortuneAccount oldFortuneAccount = fortuneAccountService.getByFortuneAccountBizId(fortuneAccountBizId);
if (oldFortuneAccount == null) {
return Result.fail(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
}
// 仅本人或管理员可删除
// if (!oldFna.getUserId().equals(loginUserId) && !userService.isAdmin(request)) {
// return Result.fail(ErrorCode.NO_AUTH_ERROR.getCode(), ErrorCode.NO_AUTH_ERROR.getMessage());
// } // }
// User user = userService.getLoginUser(request); // 操作数据库
// long id = deleteRequest.getId(); boolean result = fortuneService.removeById(oldFortuneAccount);
// // 判断是否存在 if (!result) {
// Customer oldFna = policyFollowService.getById(id); return Result.fail(ErrorCode.OPERATION_ERROR.getCode(), ErrorCode.OPERATION_ERROR.getMessage());
// ThrowUtils.throwIf(oldFna == null, ErrorCode.NOT_FOUND_ERROR); }
// // 仅本人或管理员可删除 return Result.success(result);
// if (!oldFna.getUserId().equals(user.getId()) && !userService.isAdmin(request)) { }
// throw new BusinessException(ErrorCode.NO_AUTH_ERROR);
/**
* 删除发佣
*
* @param deleteRequest
* @param request
* @return
*/
@PostMapping("/delete")
@Operation(summary = "删除发佣")
public Result<Boolean> deleteFortune(@RequestBody FortuneDeleteRequest deleteRequest, HttpServletRequest request) {
if (StringUtils.isBlank(deleteRequest.getFortuneBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
}
String fortuneBizId = deleteRequest.getFortuneBizId();
// 获取当前登录用户的ID
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
String loginUserId = currentLoginUser.getId().toString();
// 判断是否存在
Fortune oldFortune = fortuneService.getByFortuneBizId(fortuneBizId);
if (oldFortune == null) {
return Result.fail(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
}
// 仅本人或管理员可删除
// if (!oldFna.getUserId().equals(loginUserId) && !userService.isAdmin(request)) {
// return Result.fail(ErrorCode.NO_AUTH_ERROR.getCode(), ErrorCode.NO_AUTH_ERROR.getMessage());
// } // }
// // 操作数据库 // 操作数据库
// boolean result = policyFollowService.removeById(id); boolean result = fortuneService.removeById(oldFortune);
// ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR); if (!result) {
// return Result.success(true); return Result.fail(ErrorCode.OPERATION_ERROR.getCode(), ErrorCode.OPERATION_ERROR.getMessage());
// } }
return Result.success(result);
}
/** /**
* 更新保单发佣 * 更新保单发佣
......
...@@ -16,6 +16,8 @@ import com.yd.csf.api.dto.PolicyExcelDTO; ...@@ -16,6 +16,8 @@ import com.yd.csf.api.dto.PolicyExcelDTO;
import com.yd.csf.api.dto.PolicyFollowDTO; import com.yd.csf.api.dto.PolicyFollowDTO;
import com.yd.csf.api.listener.PolicyDataListener; import com.yd.csf.api.listener.PolicyDataListener;
import com.yd.csf.service.common.ErrorCode; import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.PolicyFollowAddRequest;
import com.yd.csf.service.dto.PolicyFollowDeleteRequest;
import com.yd.csf.service.dto.PolicyFollowQueryRequest; import com.yd.csf.service.dto.PolicyFollowQueryRequest;
import com.yd.csf.service.dto.PolicyFollowUpdateRequest; import com.yd.csf.service.dto.PolicyFollowUpdateRequest;
import com.yd.csf.service.model.*; import com.yd.csf.service.model.*;
...@@ -239,46 +241,54 @@ public class ApiPolicyFollowController { ...@@ -239,46 +241,54 @@ public class ApiPolicyFollowController {
/** /**
* 创建新单跟进 * 创建新单跟进
* *
* @param customerAddRequest * @param policyFollowAddRequest
* @param request * @param request
* @return * @return
*/ */
// @Operation(summary = "创建新单跟进") @Operation(summary = "创建新单跟进")
// @PostMapping("/add") @PostMapping("/add")
// @Transactional(rollbackFor = Exception.class) public Result<Map<String, Object>> addPolicyFollow(@RequestBody PolicyFollowAddRequest policyFollowAddRequest, HttpServletRequest request) {
// public Result<Map<String, Object>> addCustomer(@RequestBody CustomerAddRequest customerAddRequest, HttpServletRequest request) { if (policyFollowAddRequest == null) {
// if (customerAddRequest == null) { return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
// return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage()); }
// } return Result.success(policyFollowService.addPolicyFollow(policyFollowAddRequest));
// return Result.success(policyFollowService.addCustomer(customerAddRequest)); }
// }
/** /**
* 删除fna * 删除新单跟进
* *
* @param deleteRequest * @param deleteRequest
* @param request * @param request
* @return * @return
*/ */
// @PostMapping("/delete") @Operation(summary = "删除新单跟进")
// public Result<Boolean> deleteFna(@RequestBody DeleteRequest deleteRequest, HttpServletRequest request) { @PostMapping("/delete")
// if (deleteRequest == null || deleteRequest.getId() <= 0) { public Result<Boolean> deletePolicyFollow(@RequestBody PolicyFollowDeleteRequest deleteRequest, HttpServletRequest request) {
// throw new BusinessException(ErrorCode.PARAMS_ERROR); if (StringUtils.isBlank(deleteRequest.getPolicyBizId())) {
// } return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
// User user = userService.getLoginUser(request); }
// long id = deleteRequest.getId(); String policyBizId = deleteRequest.getPolicyBizId();
// // 判断是否存在
// Customer oldFna = policyFollowService.getById(id); // 获取当前登录用户
// ThrowUtils.throwIf(oldFna == null, ErrorCode.NOT_FOUND_ERROR); AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
// // 仅本人或管理员可删除 String loginUserId = currentLoginUser.getId().toString();
// if (!oldFna.getUserId().equals(user.getId()) && !userService.isAdmin(request)) {
// 判断是否存在
PolicyFollow oldFna = policyFollowService.getByPolicyBizId(policyBizId);
if (oldFna == null) {
return Result.fail(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
}
// 仅本人或管理员可删除
// if (!oldFna.getUserId().equals(loginUserId) && !userService.isAdmin(request)) {
// throw new BusinessException(ErrorCode.NO_AUTH_ERROR); // throw new BusinessException(ErrorCode.NO_AUTH_ERROR);
// } // }
// // 操作数据库 // 操作数据库
// boolean result = policyFollowService.removeById(id); boolean result = policyFollowService.removeById(oldFna.getId());
// ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR); if (!result) {
// return Result.success(true); return Result.fail(ErrorCode.OPERATION_ERROR.getCode(), ErrorCode.OPERATION_ERROR.getMessage());
// } }
return Result.success(result);
}
/** /**
* 更新新单跟进 * 更新新单跟进
......
...@@ -14,7 +14,7 @@ import java.util.Date; ...@@ -14,7 +14,7 @@ import java.util.Date;
@Data @Data
public class FortuneImportDTO { public class FortuneImportDTO {
@ExcelProperty("发佣数据业务Id") @ExcelProperty("发佣数据业务id")
private String fortuneBizId; private String fortuneBizId;
@ExcelProperty("保单号") @ExcelProperty("保单号")
......
...@@ -17,6 +17,12 @@ public class PolicyDataListener extends AnalysisEventListener<PolicyExcelDTO> { ...@@ -17,6 +17,12 @@ public class PolicyDataListener extends AnalysisEventListener<PolicyExcelDTO> {
@Override @Override
public void invoke(PolicyExcelDTO policy, AnalysisContext context) { public void invoke(PolicyExcelDTO policy, AnalysisContext context) {
// 校验保单数据是否完整
if (policy.getPolicyNo() == null) {
log.warn("第 {} 行数据校验失败,保单数据不完整", context.readRowHolder().getRowIndex());
return;
}
list.add(policy); list.add(policy);
} }
......
package com.yd.csf.service.dto;
import lombok.Data;
@Data
public class CommissionAddRequest {
// TODO 入参格式
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class CommissionDeleteRequest implements Serializable {
/**
* 来佣业务ID
*/
@Schema(description = "来佣业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String commissionBizId;
private static final long serialVersionUID = 1L;
}
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;
@Data
public class FortuneAccountAddRequest implements Serializable {
/**
* 转介人
*/
@Schema(description = "转介人", requiredMode = Schema.RequiredMode.REQUIRED)
private String broker;
/**
* 所属团队
*/
@Schema(description = "所属团队", requiredMode = Schema.RequiredMode.REQUIRED)
private String team;
/**
* 出账币种
*/
@Schema(description = "出账币种", requiredMode = Schema.RequiredMode.REQUIRED)
private String currency;
/**
* 出账总额
*/
@Schema(description = "出账总额", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal amount;
/**
* 出账状态 0-可出账、1-待出账、2-已出账
*/
@Schema(description = "出账状态 0-可出账、1-待出账、2-已出账", requiredMode = Schema.RequiredMode.REQUIRED)
private String status;
/**
* 出账日期
*/
@Schema(description = "出账日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2025-09-19", format = "date")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date fortuneAccountDate;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
private static final long serialVersionUID = 1L;
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class FortuneAccountDeleteRequest implements Serializable {
/**
* 出账业务ID
*/
@Schema(description = "出账业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String fortuneAccountBizId;
private static final long serialVersionUID = 1L;
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class FortuneDeleteRequest implements Serializable {
/**
* 发佣业务ID
*/
@Schema(description = "发佣业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String fortuneBizId;
private static final long serialVersionUID = 1L;
}
package com.yd.csf.service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.csf.service.model.PolicyBroker;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
public class PolicyFollowAddRequest implements Serializable {
/**
* 保单号
*/
@Schema(description = "保单号")
private String policyNo;
/**
* 签单日期
*/
@Schema(description = "签单日期")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date signDate;
/**
* 签单人
*/
@Schema(description = "签单人")
private String signer;
/**
* 供款年期
*/
@Schema(description = "供款年期")
private Integer paymentTerm;
/**
* 是否预缴: 0-否, 1-是
*/
@Schema(description = "是否预缴: 0-否, 1-是")
private Integer isPrepaid;
/**
* 预缴年期
*/
@Schema(description = "预缴年期")
private Integer prepaidTerm;
/**
* 产品名称
*/
@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 reconciliationCompany;
/**
* 对账公司业务id
*/
@Schema(description = "对账公司业务id")
private String reconciliationCompanyBizId;
/**
* 新单跟进状态
*/
@Schema(description = "新单跟进状态 'CHECKING'-'审核中','UNDERWRITING'-'承保中','FINISHED'-'已完成','DECLINED'-'已拒绝','CANCELLED'-'已取消', 字典值: policy_follow_status")
private String status;
/**
* 保單持有人
*/
@Schema(description = "保單持有人")
private String policyHolder;
/**
* 受保人
*/
@Schema(description = "受保人")
private String insured;
/**
* 币种
*/
@Schema(description = "币种")
private String currency;
/**
* 首期保费(不含徽费,预缴保费)
*/
@Schema(description = "首期保费(不含徽费,预缴保费)")
private Object initialPremium;
/**
* 转介人
*/
@Schema(description = "转介人")
private List<PolicyBroker> brokerList;
private static final long serialVersionUID = 1L;
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@Data
public class PolicyFollowDeleteRequest implements Serializable {
/**
* 新单跟进bizId
*/
@Schema(description = "新单跟进bizId", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBizId;
private static final long serialVersionUID = 1L;
}
package com.yd.csf.service.enums;
/**
* 新单跟进状态枚举 'CHECKING'-'审核中','UNDERWRITING'-'承保中','FINISHED'-'已完成','DECLINED'-'已拒绝','CANCELLED'-'已取消'
*/
public enum PolicyFollowStatusEnum {
CHECKING("审核中", "CHECKING"),
UNDERWRITING("承保中", "UNDERWRITING"),
FINISHED("已完成", "FINISHED"),
DECLINED("已拒绝", "DECLINED"),
CANCELLED("已取消", "CANCELLED"),
;
//字典项标签(名称)
private String itemLabel;
//字典项值
private String itemValue;
//构造函数
PolicyFollowStatusEnum(String itemLabel, String itemValue) {
this.itemLabel = itemLabel;
this.itemValue = itemValue;
}
public String getItemLabel() {
return itemLabel;
}
public String getItemValue() {
return itemValue;
}
}
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
...@@ -90,6 +88,7 @@ public class Commission implements Serializable { ...@@ -90,6 +88,7 @@ public class Commission implements Serializable {
/** /**
* 删除标识: 0-正常, 1-删除 * 删除标识: 0-正常, 1-删除
*/ */
@TableLogic
private Integer isDeleted; private Integer isDeleted;
/** /**
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
...@@ -145,6 +143,7 @@ public class Fortune implements Serializable { ...@@ -145,6 +143,7 @@ public class Fortune implements Serializable {
/** /**
* 删除标识: 0-正常, 1-删除 * 删除标识: 0-正常, 1-删除
*/ */
@TableLogic
private Integer isDeleted; private Integer isDeleted;
/** /**
......
...@@ -48,7 +48,7 @@ public class Policy implements Serializable { ...@@ -48,7 +48,7 @@ public class Policy implements Serializable {
private String productName; private String productName;
/** /**
* 产品险种 * 产品类别
*/ */
private String productCate; private String productCate;
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
/** /**
...@@ -73,10 +73,25 @@ public class PolicyFollow implements Serializable { ...@@ -73,10 +73,25 @@ public class PolicyFollow implements Serializable {
private BigDecimal paymentPremium; private BigDecimal paymentPremium;
/** /**
* 是否预缴: 0-否, 1-是
*/
private Integer isPrepaid;
/**
* 预缴年期
*/
private Integer prepaidTerm;
/**
* 产品名称 * 产品名称
*/ */
private String productName; private String productName;
/**
* 产品类别
*/
private String productCate;
/** /**
* 保险公司 * 保险公司
*/ */
...@@ -130,6 +145,7 @@ public class PolicyFollow implements Serializable { ...@@ -130,6 +145,7 @@ public class PolicyFollow implements Serializable {
/** /**
* 删除标识: 0-正常, 1-删除 * 删除标识: 0-正常, 1-删除
*/ */
@TableLogic
private Integer isDeleted; private Integer isDeleted;
/** /**
......
...@@ -3,6 +3,7 @@ package com.yd.csf.service.service; ...@@ -3,6 +3,7 @@ package com.yd.csf.service.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.dto.CommissionAddRequest;
import com.yd.csf.service.dto.CommissionQueryRequest; import com.yd.csf.service.dto.CommissionQueryRequest;
import com.yd.csf.service.dto.CommissionUpdateRequest; import com.yd.csf.service.dto.CommissionUpdateRequest;
import com.yd.csf.service.dto.GenerateFortuneRequest; import com.yd.csf.service.dto.GenerateFortuneRequest;
...@@ -10,6 +11,8 @@ import com.yd.csf.service.model.Commission; ...@@ -10,6 +11,8 @@ import com.yd.csf.service.model.Commission;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.CommissionVO; import com.yd.csf.service.vo.CommissionVO;
import java.util.Map;
/** /**
* @author Zhang Jianan * @author Zhang Jianan
* @description 针对表【commission(保单来佣表)】的数据库操作Service * @description 针对表【commission(保单来佣表)】的数据库操作Service
...@@ -24,4 +27,8 @@ public interface CommissionService extends IService<Commission> { ...@@ -24,4 +27,8 @@ public interface CommissionService extends IService<Commission> {
Boolean updateCommission(CommissionUpdateRequest commissionUpdateRequest); Boolean updateCommission(CommissionUpdateRequest commissionUpdateRequest);
Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest); Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest);
Map<String, Object> addCommission(CommissionAddRequest commissionAddRequest);
Commission getByCommissionBizId(String commissionBizId);
} }
...@@ -2,6 +2,7 @@ package com.yd.csf.service.service; ...@@ -2,6 +2,7 @@ package com.yd.csf.service.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.dto.FortuneAccountAddRequest;
import com.yd.csf.service.dto.FortuneAccountExportDTO; import com.yd.csf.service.dto.FortuneAccountExportDTO;
import com.yd.csf.service.dto.FortuneAccountQueryRequest; import com.yd.csf.service.dto.FortuneAccountQueryRequest;
import com.yd.csf.service.model.FortuneAccount; import com.yd.csf.service.model.FortuneAccount;
...@@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.FortuneAccountVO; import com.yd.csf.service.vo.FortuneAccountVO;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author Zhang Jianan * @author Zhang Jianan
...@@ -22,4 +24,8 @@ public interface FortuneAccountService extends IService<FortuneAccount> { ...@@ -22,4 +24,8 @@ public interface FortuneAccountService extends IService<FortuneAccount> {
Page<FortuneAccountVO> getFortuneAccountVOPage(Page<FortuneAccount> fortunePage); Page<FortuneAccountVO> getFortuneAccountVOPage(Page<FortuneAccount> fortunePage);
void saveFortuneAccount(List<FortuneAccountExportDTO> accountExportDTOList); void saveFortuneAccount(List<FortuneAccountExportDTO> accountExportDTOList);
FortuneAccount getByFortuneAccountBizId(String fortuneAccountBizId);
Map<String, Object> addFortuneAccount(FortuneAccountAddRequest fortuneAccountAddRequest);
} }
...@@ -32,4 +32,6 @@ public interface FortuneService extends IService<Fortune> { ...@@ -32,4 +32,6 @@ public interface FortuneService extends IService<Fortune> {
void downloadAccount(FortuneDownloadRequest fortuneDownloadRequest, HttpServletResponse response) throws UnsupportedEncodingException; void downloadAccount(FortuneDownloadRequest fortuneDownloadRequest, HttpServletResponse response) throws UnsupportedEncodingException;
Boolean updateFortuneStatus(FortuneStatusUpdateRequest fortuneStatusUpdateRequest); Boolean updateFortuneStatus(FortuneStatusUpdateRequest fortuneStatusUpdateRequest);
Fortune getByFortuneBizId(String fortuneBizId);
} }
...@@ -3,11 +3,14 @@ package com.yd.csf.service.service; ...@@ -3,11 +3,14 @@ package com.yd.csf.service.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.dto.PolicyFollowAddRequest;
import com.yd.csf.service.dto.PolicyFollowQueryRequest; import com.yd.csf.service.dto.PolicyFollowQueryRequest;
import com.yd.csf.service.dto.PolicyFollowUpdateRequest; import com.yd.csf.service.dto.PolicyFollowUpdateRequest;
import com.yd.csf.service.model.PolicyFollow; import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.vo.PolicyFollowVO; import com.yd.csf.service.vo.PolicyFollowVO;
import java.util.Map;
/** /**
* @author Zhang Jianan * @author Zhang Jianan
* @description 针对表【policy_follow(新单跟进表)】的数据库操作Service * @description 针对表【policy_follow(新单跟进表)】的数据库操作Service
...@@ -24,4 +27,6 @@ public interface PolicyFollowService extends IService<PolicyFollow> { ...@@ -24,4 +27,6 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
Boolean updatePolicyFollow(PolicyFollowUpdateRequest policyFollowUpdateRequest); Boolean updatePolicyFollow(PolicyFollowUpdateRequest policyFollowUpdateRequest);
PolicyFollowVO getPolicyFollowVO(PolicyFollow policyFollow); PolicyFollowVO getPolicyFollowVO(PolicyFollow policyFollow);
Map<String, Object> addPolicyFollow(PolicyFollowAddRequest policyFollowAddRequest);
} }
...@@ -10,6 +10,7 @@ import com.yd.common.enums.CommonEnum; ...@@ -10,6 +10,7 @@ import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode; import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException; import com.yd.common.exception.BusinessException;
import com.yd.common.utils.RandomStringGenerator; import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.dto.CommissionAddRequest;
import com.yd.csf.service.dto.CommissionQueryRequest; import com.yd.csf.service.dto.CommissionQueryRequest;
import com.yd.csf.service.dto.CommissionUpdateRequest; import com.yd.csf.service.dto.CommissionUpdateRequest;
import com.yd.csf.service.dto.GenerateFortuneRequest; import com.yd.csf.service.dto.GenerateFortuneRequest;
...@@ -170,6 +171,25 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -170,6 +171,25 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
} }
return true; return true;
} }
@Override
public Map<String, Object> addCommission(CommissionAddRequest commissionAddRequest) {
Commission commission = new Commission();
BeanUtils.copyProperties(commissionAddRequest, commission);
// 生成新单编号
String commissionBizId = RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode());
commission.setCommissionBizId(commissionBizId);
// 保存来佣记录
this.save(commission);
// 返回新单跟进唯一业务ID
return Collections.singletonMap("commissionBizId", commissionBizId);
}
@Override
public Commission getByCommissionBizId(String commissionBizId) {
return this.getOne(new QueryWrapper<Commission>().eq("commission_biz_id", commissionBizId));
}
} }
......
...@@ -9,6 +9,7 @@ import com.yd.auth.core.dto.AuthUserDto; ...@@ -9,6 +9,7 @@ import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil; import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum; import com.yd.common.enums.CommonEnum;
import com.yd.common.utils.RandomStringGenerator; import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.dto.FortuneAccountAddRequest;
import com.yd.csf.service.dto.FortuneAccountExportDTO; import com.yd.csf.service.dto.FortuneAccountExportDTO;
import com.yd.csf.service.dto.FortuneAccountQueryRequest; import com.yd.csf.service.dto.FortuneAccountQueryRequest;
import com.yd.csf.service.enums.FortuneAccountStatusEnum; import com.yd.csf.service.enums.FortuneAccountStatusEnum;
...@@ -113,6 +114,35 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -113,6 +114,35 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
this.saveBatch(fortuneAccountList); this.saveBatch(fortuneAccountList);
} }
@Override
public FortuneAccount getByFortuneAccountBizId(String fortuneAccountBizId) {
return this.getOne(new QueryWrapper<FortuneAccount>().eq("fortune_account_biz_id", fortuneAccountBizId));
}
@Override
public Map<String, Object> addFortuneAccount(FortuneAccountAddRequest fortuneAccountAddRequest) {
// 当前登录用户
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
Long loginUserId = currentLoginUser.getId();
FortuneAccount fortuneAccount = new FortuneAccount();
fortuneAccount.setFortuneAccountBizId(RandomStringGenerator.generateBizId16("fortune_account"));
fortuneAccount.setBroker(fortuneAccountAddRequest.getBroker());
fortuneAccount.setTeam(fortuneAccountAddRequest.getTeam());
fortuneAccount.setCurrency(fortuneAccountAddRequest.getCurrency());
fortuneAccount.setAmount(fortuneAccountAddRequest.getAmount());
fortuneAccount.setFortuneAccountDate(fortuneAccountAddRequest.getFortuneAccountDate());
fortuneAccount.setStatus(fortuneAccountAddRequest.getStatus());
fortuneAccount.setRemark(fortuneAccountAddRequest.getRemark());
fortuneAccount.setCreatorId(loginUserId.toString());
fortuneAccount.setUpdaterId(loginUserId.toString());
fortuneAccount.setCreateTime(new Date());
fortuneAccount.setUpdateTime(new Date());
this.save(fortuneAccount);
return Collections.singletonMap("fortuneAccountBizId", fortuneAccount.getFortuneAccountBizId());
}
} }
......
...@@ -116,7 +116,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -116,7 +116,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
// 导出 // 导出
try { try {
EasyExcel.write(response.getOutputStream(), FortuneExportDTO.class).sheet("保单发佣").doWrite(exportDTOList); EasyExcel.write(response.getOutputStream(), FortuneExportDTO.class).sheet("发佣").doWrite(exportDTOList);
} catch (IOException e) { } catch (IOException e) {
log.error("导出保单发佣数据失败", e); log.error("导出保单发佣数据失败", e);
throw new BusinessException(ResultCode.FAIL.getCode(), "导出失败"); throw new BusinessException(ResultCode.FAIL.getCode(), "导出失败");
...@@ -253,6 +253,11 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -253,6 +253,11 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
return this.updateBatchById(updateList); return this.updateBatchById(updateList);
} }
@Override
public Fortune getByFortuneBizId(String fortuneBizId) {
return this.getOne(new QueryWrapper<Fortune>().eq("fortune_biz_id", fortuneBizId));
}
} }
......
...@@ -5,21 +5,28 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -5,21 +5,28 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.common.enums.CommonEnum;
import com.yd.common.exception.BusinessException; import com.yd.common.exception.BusinessException;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.common.ErrorCode; import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.PolicyFollowAddRequest;
import com.yd.csf.service.dto.PolicyFollowQueryRequest; import com.yd.csf.service.dto.PolicyFollowQueryRequest;
import com.yd.csf.service.dto.PolicyFollowUpdateRequest; import com.yd.csf.service.dto.PolicyFollowUpdateRequest;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyBroker; import com.yd.csf.service.model.PolicyBroker;
import com.yd.csf.service.model.PolicyFollow; import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.service.PolicyBrokerService; import com.yd.csf.service.service.PolicyBrokerService;
import com.yd.csf.service.service.PolicyFollowService; import com.yd.csf.service.service.PolicyFollowService;
import com.yd.csf.service.dao.PolicyFollowMapper; import com.yd.csf.service.dao.PolicyFollowMapper;
import com.yd.csf.service.service.PolicyService;
import com.yd.csf.service.vo.PolicyFollowVO; import com.yd.csf.service.vo.PolicyFollowVO;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -36,10 +43,12 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -36,10 +43,12 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
@Resource @Resource
private PolicyBrokerService policyBrokerService; private PolicyBrokerService policyBrokerService;
@Resource
private PolicyService policyService;
@Override @Override
public PolicyFollow getByPolicyBizId(String policyBizId) { public PolicyFollow getByPolicyBizId(String policyBizId) {
return baseMapper.selectOne(new LambdaQueryWrapper<PolicyFollow>().eq(PolicyFollow::getPolicyBizId, policyBizId)); return this.getOne(new QueryWrapper<PolicyFollow>().eq("policy_biz_id", policyBizId));
} }
@Override @Override
...@@ -128,6 +137,34 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -128,6 +137,34 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
return policyFollowVO; return policyFollowVO;
} }
@Override
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> addPolicyFollow(PolicyFollowAddRequest policyFollowAddRequest) {
PolicyFollow policyFollow = new PolicyFollow();
BeanUtils.copyProperties(policyFollowAddRequest, policyFollow);
// 生成新单编号
String policyBizId = RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_POLICY.getCode());
policyFollow.setPolicyBizId(policyBizId);
// 创建 Policy对象
Policy policy = new Policy();
BeanUtils.copyProperties(policyFollowAddRequest, policy);
policy.setPolicyBizId(policyBizId);
// 保存转介人
List<PolicyBroker> policyBrokerList = policyFollowAddRequest.getBrokerList();
if (CollUtil.isNotEmpty(policyBrokerList)) {
policyBrokerList.forEach(policyBroker -> {
policyBroker.setPolicyBizId(policyBizId);
});
}
this.save(policyFollow);
policyService.save(policy);
policyBrokerService.saveBatch(policyBrokerList);
// 返回新单跟进唯一业务ID
return Collections.singletonMap("policyBizId", policyBizId);
}
} }
......
...@@ -43,9 +43,9 @@ public class PolicyVO { ...@@ -43,9 +43,9 @@ public class PolicyVO {
private String productName; private String productName;
/** /**
* 产品险种 * 产品类别
*/ */
@Schema(description = "产品险种") @Schema(description = "产品类别")
private String productCate; private String productCate;
/** /**
......
...@@ -17,7 +17,10 @@ ...@@ -17,7 +17,10 @@
<result property="renewalDate" column="renewal_date" /> <result property="renewalDate" column="renewal_date" />
<result property="paymentTerm" column="payment_term" /> <result property="paymentTerm" column="payment_term" />
<result property="paymentPremium" column="payment_premium" /> <result property="paymentPremium" column="payment_premium" />
<result property="isPrepaid" column="is_prepaid" />
<result property="prepaidTerm" column="prepaid_term" />
<result property="productName" column="product_name" /> <result property="productName" column="product_name" />
<result property="productCate" column="product_cate" />
<result property="insurer" column="insurer" /> <result property="insurer" column="insurer" />
<result property="insurerBizId" column="insurer_biz_id" /> <result property="insurerBizId" column="insurer_biz_id" />
<result property="reconciliationCompany" column="reconciliation_company" /> <result property="reconciliationCompany" column="reconciliation_company" />
...@@ -37,7 +40,7 @@ ...@@ -37,7 +40,7 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id,policy_biz_id,policy_no,user_biz_id,customer_biz_id,customer_name,sign_date,signer, id,policy_biz_id,policy_no,user_biz_id,customer_biz_id,customer_name,sign_date,signer,
effective_date,renewal_date,payment_term,payment_premium,product_name, effective_date,renewal_date,payment_term,payment_premium,is_prepaid,prepaid_term,product_name,product_cate,
insurer,insurer_biz_id,reconciliation_company,reconciliation_company_biz_id,status, insurer,insurer_biz_id,reconciliation_company,reconciliation_company_biz_id,status,
policy_holder,insured,currency,initial_premium,remark, policy_holder,insured,currency,initial_premium,remark,
is_deleted,creator_id,updater_id,create_time,update_time is_deleted,creator_id,updater_id,create_time,update_time
......
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