Commit f087e6d8 by jianan

新单跟进v2

parent ea3a0adc
......@@ -524,18 +524,6 @@ public class ApiPolicyFollowController {
return Result.success(policyFollowService.getPolicyFollowVO(policyFollow));
}
@GetMapping("/detail/{policyBizId}")
@Operation(summary = "根据 policyBizId 获取新单跟进聚合详情")
public Result<PolicyFollowAggregateDto> getPolicyFollowAggregate(@PathVariable String policyBizId) {
try {
PolicyFollowAggregateDto result = policyFollowService.getPolicyFollowAggregate(policyBizId);
return Result.success(result);
} catch (Exception e) {
log.error("获取新单跟进聚合详情失败, policyBizId: {}", policyBizId, e);
return Result.fail("查询失败: " + e.getMessage());
}
}
/**
* 分页获取新单跟进列表(仅管理员可用)
*
......@@ -679,4 +667,28 @@ public class ApiPolicyFollowController {
}
}
@PostMapping("/save_initial_payment")
@Operation(summary = "保存首期缴费信息")
public Result<Boolean> saveInitialPayment(@RequestBody InitialPaymentSaveRequest initialPaymentSaveRequest) {
log.info("保存首期缴费信息, policyBizId: {}", initialPaymentSaveRequest.getPolicyBizId());
Boolean result = policyFollowService.saveInitialPayment(initialPaymentSaveRequest);
return Result.success(result);
}
@PostMapping("/save_mailing_info")
@Operation(summary = "保存邮寄信息")
public Result<Boolean> saveMailingInfo(@RequestBody MailingInfoSaveRequest mailingInfoSaveRequest) {
log.info("保存邮寄信息, policyBizId: {}", mailingInfoSaveRequest.getPolicyBizId());
Boolean result = policyFollowService.saveMailingInfo(mailingInfoSaveRequest);
return Result.success(result);
}
@PostMapping("/batch_save_brokers")
@Operation(summary = "批量保存介绍人信息")
public Result<Boolean> batchSaveBrokers(@RequestBody BrokerBatchSaveRequest brokerBatchSaveRequest) {
log.info("批量保存介绍人信息, policyBizId: {}", brokerBatchSaveRequest.getPolicyBizId());
Boolean result = policyFollowService.batchSaveBrokers(brokerBatchSaveRequest);
return Result.success(result);
}
}
\ No newline at end of file
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 介绍人批量保存请求
*/
@Data
public class BrokerBatchSaveRequest implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "新单跟进唯一业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBizId;
@Schema(description = "介绍人列表")
private List<BrokerInfo> brokerList;
@Data
public static class BrokerInfo implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "介绍人姓名")
private String brokerName;
@Schema(description = "介绍人业务id")
private String brokerBizId;
@Schema(description = "性别")
private String gender;
@Schema(description = "内部编号")
private String internalCode;
@Schema(description = "所属团队")
private String team;
@Schema(description = "团队业务id")
private String teamBizId;
@Schema(description = "分配比例")
private String brokerRatio;
@Schema(description = "备注")
private String remark;
}
}
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 InitialPaymentSaveRequest implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "新单跟进唯一业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBizId;
@Schema(description = "首期保费(不含徽费,预缴保费)")
private BigDecimal initialPremium;
@Schema(description = "保单征费")
private String policyLevy;
@Schema(description = "首期付款方式(字典)")
private String initialPaymentMethod;
@Schema(description = "首期已缴保费")
private BigDecimal initialPremiumPaid;
@Schema(description = "首期待缴保费")
private BigDecimal initialPremiumDue;
@Schema(description = "首期缴费总额")
private BigDecimal initialPremiumTotal;
@Schema(description = "缴费状态")
private String initialPaymentStatus;
@Schema(description = "最晚缴费日期", format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date latestPaymentDate;
@Schema(description = "首期保费优惠金额")
private BigDecimal initialPremiumDiscount;
}
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 MailingInfoSaveRequest implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "新单跟进唯一业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyBizId;
@Schema(description = "寄送方式(字典值:1-自提 2-快递)")
private String mailingMethod;
@Schema(description = "快递单号")
private String deliveryNo;
@Schema(description = "经纪公司签收日期", format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date brokerSignDate;
@Schema(description = "客户签收日期", format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date customerSignDate;
}
......@@ -20,6 +20,18 @@ public class PolicyBrokerDto implements Serializable {
private String brokerBizId;
/**
* 性别
*/
@Schema(description = "性别")
private String gender;
/**
* 内部编号
*/
@Schema(description = "内部编号")
private String internalCode;
/**
* 所属团队
*/
@Schema(description = "所属团队")
......
......@@ -179,6 +179,22 @@ public class PolicyFollowDto implements Serializable {
@Schema(description = "首期保费(不含徽费,预缴保费)")
private BigDecimal initialPremium;
@Schema(description = "首期已缴保费")
private BigDecimal initialPremiumPaid;
@Schema(description = "首期待缴保费")
private BigDecimal initialPremiumDue;
@Schema(description = "首期缴费总额")
private BigDecimal initialPremiumTotal;
@Schema(description = "最晚缴费日期", format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date latestPaymentDate;
@Schema(description = "首期保费优惠金额")
private BigDecimal initialPremiumDiscount;
@Schema(description = "寄送方式(字典): 1-自提 2-快递")
private String mailingMethod;
......@@ -194,16 +210,6 @@ public class PolicyFollowDto implements Serializable {
@Schema(description = "保单征费")
private String policyLevy;
@Schema(description = "首期保费已付")
private String initialPremiumPaid;
@Schema(description = "首期保费应付")
private String initialPremiumDue;
@Schema(description = "最近付款日期", format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date latestPaymentDate;
@Schema(description = "经纪公司签收日期", format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date brokerSignDate;
......
......@@ -6,17 +6,17 @@ import org.apache.commons.lang3.ObjectUtils;
* 新单跟进状态枚举
*/
public enum PolicyFollowStatusEnum {
PENDING_SIGN("待签单", "PENDING_SIGN"),
SIGNED("已签单", "SIGNED"),
WAITING_PAYMENT("等待汇款", "WAITING_PAYMENT"),
PREMIUM_RECONCILING("首期保费对账中", "PREMIUM_RECONCILING"),
PREMIUM_RECONCILED_UNDERWRITING("保费对账成功,核保中", "PREMIUM_RECONCILED_UNDERWRITING"),
EFFECTIVE("生效", "EFFECTIVE"),
CANCELLED("取消投保", "CANCELLED"),
DECLINED("拒保", "DECLINED"),
DELAYED_UNDERWRITING("延缓承保", "DELAYED_UNDERWRITING"),
LAPSED("失效", "LAPSED"),
CLOSED("关闭", "CLOSED"),
PENDING_SIGN("待签单", "PENDING_SIGNATURE"),
SIGNED("已签单", "SIGNED_ORDER"),
WAITING_PAYMENT("等待汇款", "WAITING_REMITTANCE"),
PREMIUM_RECONCILING("首期保费对账中", "IN_RECONCILIATION"),
PREMIUM_RECONCILED_UNDERWRITING("保费对账成功,核保中", "UNDERWRITING_PROGRESS"),
EFFECTIVE("生效", "TAKE_EFFECT"),
CANCELLED("取消投保", "CANCEL_COVERAGE"),
DECLINED("拒保", "REJECTION_INSURANCE"),
DELAYED_UNDERWRITING("延缓承保", "DELAY_UNDERWRITING"),
LAPSED("失效", "FAILURE"),
CLOSED("关闭", "CLOSE"),
;
//字典项标签(名称)
......
......@@ -42,6 +42,16 @@ public class PolicyBroker implements Serializable {
private String brokerBizId;
/**
* 性别
*/
private String gender;
/**
* 内部编号
*/
private String internalCode;
/**
* 所属团队
*/
private String team;
......
......@@ -4,16 +4,19 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
* 新单跟进表
*
* @TableName policy_follow
*/
@TableName(value ="policy_follow")
@TableName(value = "policy_follow")
@Data
public class PolicyFollow implements Serializable {
/**
......@@ -278,6 +281,31 @@ public class PolicyFollow implements Serializable {
private BigDecimal initialPremium;
/**
* 首期已缴保费
*/
private BigDecimal initialPremiumPaid;
/**
* 首期待缴保费
*/
private BigDecimal initialPremiumDue;
/**
* 首期缴费总额
*/
private BigDecimal initialPremiumTotal;
/**
* 首期缴费状态
*/
private String initialPaymentStatus;
/**
* 首期保费优惠金额
*/
private BigDecimal initialPremiumDiscount;
/**
* 寄送方式 字典值:1-自提 2-快递
*/
private String mailingMethod;
......@@ -303,17 +331,7 @@ public class PolicyFollow implements Serializable {
private String policyLevy;
/**
*
*/
private String initialPremiumPaid;
/**
*
*/
private String initialPremiumDue;
/**
*
* 最晚缴费日期
*/
private Date latestPaymentDate;
......
......@@ -6,7 +6,6 @@ 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;
......@@ -49,13 +48,24 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
String getNextStatus(PolicyFollowStatusEnum policyFollowStatusEnum);
PolicyFollowAggregateDto getPolicyFollowAggregate(String policyBizId);
Page<PolicyFollowDetailVO> getPolicyFollowDetailVOList(Page<PolicyFollow> policyFollowPage);
String getCurrencyValue(String currency);
PolicyReportData queryPolicyReportData(String policyBizId);
PolicyFollow queryOneByPolicyNo(String policyNo);
/**
* 保存首期缴费信息
*/
Boolean saveInitialPayment(InitialPaymentSaveRequest initialPaymentSaveRequest);
/**
* 保存邮寄信息
*/
Boolean saveMailingInfo(MailingInfoSaveRequest mailingInfoSaveRequest);
/**
* 批量保存介绍人信息
*/
Boolean batchSaveBrokers(BrokerBatchSaveRequest brokerBatchSaveRequest);
}
......@@ -193,6 +193,26 @@ public class PolicyFollowDetailVO implements Serializable {
private Object initialPremium;
/**
* 首期已缴保费
*/
private Object initialPremiumPaid;
/**
* 首期待缴保费
*/
private Object initialPremiumDue;
/**
* 首期缴费总额
*/
private Object initialPremiumTotal;
/**
* 首期保费优惠金额
*/
private Object initialPremiumDiscount;
/**
* 寄送方式 1-自提, 2-快递
*/
private String mailingMethod;
......
......@@ -10,6 +10,8 @@
<result property="policyNo" column="policy_no" />
<result property="brokerName" column="broker_name" />
<result property="brokerBizId" column="broker_biz_id" />
<result property="gender" column="gender" />
<result property="internalCode" column="internal_code" />
<result property="team" column="team" />
<result property="teamBizId" column="team_biz_id" />
<result property="brokerRatio" column="broker_ratio" />
......@@ -22,8 +24,8 @@
</resultMap>
<sql id="Base_Column_List">
id,policy_biz_id,policy_no,broker_name,broker_biz_id,team,broker_ratio,
team_biz_id,remark,is_deleted,creator_id,updater_id,
id,policy_biz_id,policy_no,broker_name,broker_biz_id,gender,internal_code,
team,broker_ratio,team_biz_id,remark,is_deleted,creator_id,updater_id,
create_time,update_time
</sql>
</mapper>
......@@ -57,6 +57,9 @@
<result property="policyCurrency" column="policy_currency" />
<result property="initialPaymentMethod" column="initial_payment_method" />
<result property="initialPremium" column="initial_premium" />
<result property="initialPremiumTotal" column="initial_premium_total" />
<result property="initialPaymentStatus" column="initial_payment_status" />
<result property="initialPremiumDiscount" column="initial_premium_discount" />
<result property="mailingMethod" column="mailing_method" />
<result property="renewalPaymentMethod" column="renewal_payment_method" />
<result property="dividendPaymentMethod" column="dividend_payment_method" />
......@@ -88,7 +91,8 @@
product_name,product_cate,insurance_company,insurance_company_biz_id,reconciliation_company,
reconciliation_company_biz_id,status,next_status_list,policy_holder,insured,
insured_age,grace_period,is_join,policy_currency,initial_payment_method,
initial_premium,mailing_method,renewal_payment_method,dividend_payment_method,delivery_no,
initial_premium,initial_premium_total,initial_payment_status,initial_premium_discount,
mailing_method,renewal_payment_method,dividend_payment_method,delivery_no,
policy_levy,initial_premium_paid,initial_premium_due,latest_payment_date,broker_sign_date,
insurer_mailing_date,customer_sign_date,attachments,remark,is_deleted,
creator_id,updater_id,create_time,update_time
......
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