Commit 4b9f0054 by zhangxingmin

push

parent 01a1bb96
......@@ -12,9 +12,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 生成预计发佣日志记录表 前端控制器
* </p>
* 生成预计发佣日志记录信息
*
* @author zxm
* @since 2025-11-20
......
......@@ -17,6 +17,8 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
/**
* 保费对账记录信息
*
......@@ -91,4 +93,14 @@ public class ApiPremiumReconciliationController implements ApiPremiumReconciliat
return apiPremiumReconciliationService.editResult(request);
}
/**
* 校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了)
* @param policyNo
* @return
*/
@Override
public Result<Boolean> checkReconciliationComplete(String policyNo) {
return apiPremiumReconciliationService.checkReconciliationComplete(policyNo);
}
}
......@@ -25,5 +25,7 @@ public interface ApiPremiumReconciliationService {
Result editResult(ApiPremiumReconciliationResultEditRequest request);
Result<Boolean> checkReconciliationComplete(String policyNo);
Result<PremiumReconciliation> checkPremiumReconciliationIsExist(String expectedCommissionRatioBizId);
}
......@@ -67,4 +67,12 @@ public interface ApiPremiumReconciliationFeignClient {
*/
@PutMapping("/edit/result")
Result editResult(@Validated @RequestBody ApiPremiumReconciliationResultEditRequest request);
/**
* 校验-保单所有期数的保费对账是否对账完成(全部对账完成就不能新增录入对账信息了)
* @param policyNo
* @return
*/
@GetMapping("/check/reconciliation/complete")
Result<Boolean> checkReconciliationComplete(@NotBlank(message = "保单号能为空") @RequestParam(value = "policyNo") String policyNo);
}
package com.yd.csf.feign.enums;
/**
* 付款频率枚举
*/
public enum PaymentFrequencyEnum {
MONTH("月缴","MONTH"),
SEASON("季缴","SEASON"),
YEAR("年缴","YEAR"),
FULL_PAYMENT("整付","FULL_PAYMENT"),
;
//字典项标签(名称)
private String itemLabel;
//字典项值
private String itemValue;
//构造函数
PaymentFrequencyEnum(String itemLabel, String itemValue) {
this.itemLabel = itemLabel;
this.itemValue = itemValue;
}
public String getItemLabel() {
return itemLabel;
}
public String getItemValue() {
return itemValue;
}
}
......@@ -13,6 +13,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-保费对账记录信息Feign降级处理
*/
......@@ -51,6 +53,11 @@ public class ApiPremiumReconciliationFeignFallbackFactory implements FallbackFac
public Result editResult(ApiPremiumReconciliationResultEditRequest request) {
return null;
}
@Override
public Result<Boolean> checkReconciliationComplete(String policyNo) {
return null;
}
};
}
}
package com.yd.csf.feign.request.premiumreconciliation;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
......@@ -9,6 +11,12 @@ import java.util.Date;
public class ApiPremiumReconciliationResultEditRequest {
/**
* 保费对账记录表唯一业务ID
*/
@NotBlank(message = "保费对账记录表唯一业务ID不能为空")
private String premiumReconciliationBizId;
/**
* 当次保司认定金额(客户当次缴纳的金额)
*/
@NotNull(message = "当次保司认定金额不能为空")
......@@ -44,9 +52,9 @@ public class ApiPremiumReconciliationResultEditRequest {
*/
private Date underwritingDate;
/**
* 保单状态
*/
private String status;
// /**
// * 保单状态
// */
// private String status;
}
package com.yd.csf.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationPageRequest;
import com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationPageResponse;
import com.yd.csf.service.model.PremiumReconciliation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
......@@ -13,4 +18,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface PremiumReconciliationMapper extends BaseMapper<PremiumReconciliation> {
IPage<ApiPremiumReconciliationPageResponse> page(@Param("page") Page<ApiPremiumReconciliationPageResponse> page,
@Param("request") ApiPremiumReconciliationPageRequest request);
}
......@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import lombok.Data;
......@@ -133,6 +134,11 @@ public class Policy implements Serializable {
private Date effectiveDate;
/**
* 核保日期
*/
private Date underwritingDate;
/**
* 冷却期结束日期
*/
private Date coolingOffEndDate;
......@@ -208,6 +214,11 @@ public class Policy implements Serializable {
private String policyLevy;
/**
* 缴费宽限期(每期缴费的最大宽限天数)
*/
private String gracePeriod;
/**
* 通用备注
*/
private String remark;
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
......@@ -84,6 +85,11 @@ public class PolicyFollow implements Serializable {
private Date effectiveDate;
/**
* 核保日期
*/
private Date underwritingDate;
/**
* 冷却期结束日期
*/
private Date coolingOffEndDate;
......
......@@ -138,4 +138,5 @@ public class PremiumReconciliation implements Serializable {
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.csf.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationPageRequest;
import com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationPageResponse;
import com.yd.csf.service.dto.PremiumReconciliationDto;
import com.yd.csf.service.model.PremiumReconciliation;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -16,7 +20,12 @@ import java.util.List;
*/
public interface IPremiumReconciliationService extends IService<PremiumReconciliation> {
IPage<ApiPremiumReconciliationPageResponse> page(Page<ApiPremiumReconciliationPageResponse> page,
ApiPremiumReconciliationPageRequest request);
PremiumReconciliation queryOne(String premiumReconciliationBizId);
List<PremiumReconciliation> queryList(PremiumReconciliationDto dto);
PremiumReconciliation queryLatestOneByPolicyNo(String policyNo);
}
......@@ -46,4 +46,6 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
String getCurrencyValue(String currency);
PolicyReportData queryPolicyReportData(String policyBizId);
PolicyFollow queryOneByPolicyNo(String policyNo);
}
......@@ -3,6 +3,7 @@ package com.yd.csf.service.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
......@@ -583,6 +584,19 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
return policyReportData;
}
/**
* 根据保单号查询保单跟进信息
* @param policyNo
* @return
*/
@Override
public PolicyFollow queryOneByPolicyNo(String policyNo) {
return this.getOne(new LambdaQueryWrapper<PolicyFollow>()
.eq(PolicyFollow::getPolicyNo,policyNo)
.last(" limit 1 ")
);
}
@Override
public Boolean uploadAttachment(AttachmentUploadRequest attachmentUploadRequest) {
String policyBizId = attachmentUploadRequest.getPolicyBizId();
......
package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.premiumreconciliation.ApiPremiumReconciliationPageRequest;
import com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationPageResponse;
import com.yd.csf.service.dto.PremiumReconciliationDto;
import com.yd.csf.service.model.PremiumReconciliation;
import com.yd.csf.service.dao.PremiumReconciliationMapper;
......@@ -24,6 +28,12 @@ import java.util.List;
public class PremiumReconciliationServiceImpl extends ServiceImpl<PremiumReconciliationMapper, PremiumReconciliation> implements IPremiumReconciliationService {
@Override
public IPage<ApiPremiumReconciliationPageResponse> page(Page<ApiPremiumReconciliationPageResponse> page,
ApiPremiumReconciliationPageRequest request) {
return baseMapper.page(page,request);
}
@Override
public PremiumReconciliation queryOne(String premiumReconciliationBizId) {
return this.getOne(new LambdaQueryWrapper<PremiumReconciliation>()
.eq(PremiumReconciliation::getPremiumReconciliationBizId,premiumReconciliationBizId).last(" limit 1 "));
......@@ -39,4 +49,18 @@ public class PremiumReconciliationServiceImpl extends ServiceImpl<PremiumReconci
return list;
}
/**
* 根据保单号查询最新创建时间的对账记录
* @param policyNo
* @return
*/
@Override
public PremiumReconciliation queryLatestOneByPolicyNo(String policyNo) {
return this.getOne(new LambdaQueryWrapper<PremiumReconciliation>()
.eq(PremiumReconciliation::getPolicyNo,policyNo)
.orderByDesc(PremiumReconciliation::getCreateTime)
.last(" limit 1 ")
);
}
}
......@@ -2,4 +2,36 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.csf.service.dao.PremiumReconciliationMapper">
<select id="page"
resultType="com.yd.csf.feign.response.premiumreconciliation.ApiPremiumReconciliationPageResponse">
SELECT
MAX(p.insurer) AS insurer,
pr.policy_no,
MAX(pf.status) AS policyFollowStatus,
MAX(pr.reconciliation_status) AS reconciliation_status,
MAX(p.status) AS policyStatus,
MAX(pr.remaining_unpaid_amount) AS remaining_unpaid_amount,
MAX(pr.remaining_unpaid_currency) AS remaining_unpaid_currency,
COALESCE(SUM(prm.payment_amount), 0) AS paymentAmount,
MAX(prm.payment_currency) AS paymentCurrency,
GROUP_CONCAT(DISTINCT prm.payment_method SEPARATOR ';') AS paymentMethod,
MAX(pr.recognized_amount) AS recognized_amount,
MAX(pr.recognized_currency) AS recognized_currency,
GROUP_CONCAT(DISTINCT prm.payer SEPARATOR ';') AS payer,
GROUP_CONCAT(DISTINCT prm.paying_bank SEPARATOR ';') AS paying_bank,
MAX(p.policy_holder) AS policy_holder,
MAX(p.insured) AS insured,
GROUP_CONCAT(DISTINCT pb.broker_name SEPARATOR ';') AS brokerName,
MAX(pr.create_time) AS create_time,
MAX(pr.update_time) AS update_time,
MAX(p.reconciliation_company) AS reconciliation_company
FROM premium_reconciliation pr
LEFT JOIN policy p ON p.policy_no = pr.policy_no AND p.is_deleted = 0
LEFT JOIN policy_follow pf ON pf.policy_no = pr.policy_no AND pf.is_deleted = 0
LEFT JOIN premium_remittance prm ON prm.premium_reconciliation_biz_id = pr.premium_reconciliation_biz_id AND prm.is_deleted = 0
LEFT JOIN policy_broker pb ON pb.policy_no = pr.policy_no AND pb.is_deleted = 0
WHERE pr.is_deleted = 0
GROUP BY pr.premium_reconciliation_biz_id, pr.policy_no
ORDER BY MAX(pr.create_time) DESC
</select>
</mapper>
\ No newline at end of file
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