Commit 6d84d763 by zhangxingmin

保单回执

parent 3a47b15b
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiPolicyReceiptService;
import com.yd.csf.feign.client.policyreceipt.ApiPolicyReceiptFeignClient;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptAddRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptPageRequest;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptDetailResponse;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 保单回执信息
*
* @author zxm
* @since 2025-12-25
*/
@RestController
@RequestMapping("/policyReceipt")
@Validated
public class ApiPolicyReceiptController implements ApiPolicyReceiptFeignClient {
@Autowired
private ApiPolicyReceiptService apiPolicyReceiptService;
/**
* 分页列表查询-保单回执信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiPolicyReceiptPageResponse>> page(ApiPolicyReceiptPageRequest request) {
return apiPolicyReceiptService.page(request);
}
/**
* 详情-保单回执信息
* @param policyReceiptBizId 保单回执表唯一业务ID
* @return
*/
@Override
public Result<ApiPolicyReceiptDetailResponse> detail(String policyReceiptBizId) {
return apiPolicyReceiptService.detail(policyReceiptBizId);
}
/**
* 添加-保单回执信息
* @param request
* @return
*/
@Override
public Result add(ApiPolicyReceiptAddRequest request) {
return apiPolicyReceiptService.add(request);
}
/**
* 编辑-回执状态
* @param policyReceiptBizId 保单回执信息表唯一标识(业务ID)
* @param receiptStatus 回执状态(CONFIRMED-已确认 UNCONFIRMED-未确认)
* @return
*/
@Override
public Result editReceiptStatus(String policyReceiptBizId, String receiptStatus) {
return apiPolicyReceiptService.editReceiptStatus(policyReceiptBizId,receiptStatus);
}
}
package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptAddRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptPageRequest;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptDetailResponse;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptPageResponse;
public interface ApiPolicyReceiptService {
Result<IPage<ApiPolicyReceiptPageResponse>> page(ApiPolicyReceiptPageRequest request);
Result<ApiPolicyReceiptDetailResponse> detail(String policyReceiptBizId);
Result add(ApiPolicyReceiptAddRequest request);
Result editReceiptStatus(String policyReceiptBizId, String receiptStatus);
}
package com.yd.csf.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.CommonEnum;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.service.ApiPolicyReceiptService;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptAddRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptPageRequest;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptDetailResponse;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptPageResponse;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyReceipt;
import com.yd.csf.service.service.IPolicyReceiptService;
import com.yd.csf.service.service.PolicyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
@Slf4j
@Service
public class ApiPolicyReceiptServiceImpl implements ApiPolicyReceiptService {
@Autowired
private IPolicyReceiptService iPolicyReceiptService;
@Autowired
private PolicyService policyService;
/**
* 分页列表查询-保单回执信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiPolicyReceiptPageResponse>> page(ApiPolicyReceiptPageRequest request) {
Page<ApiPolicyReceiptPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiPolicyReceiptPageResponse> iPage = iPolicyReceiptService.page(page, request);
return Result.success(iPage);
}
/**
* 详情-保单回执信息
* @param policyReceiptBizId 保单回执表唯一业务ID
* @return
*/
@Override
public Result<ApiPolicyReceiptDetailResponse> detail(String policyReceiptBizId) {
PolicyReceipt policyReceipt = iPolicyReceiptService.queryOne(policyReceiptBizId);
if (Objects.isNull(policyReceipt)) {
throw new BusinessException("回执信息不存在");
}
//校验保单信息是否存在
Policy policy = policyService.queryOne(policyReceipt.getPolicyNo());
if (Objects.isNull(policy)) {
throw new BusinessException("保单信息不存在");
}
ApiPolicyReceiptDetailResponse response = new ApiPolicyReceiptDetailResponse();
BeanUtils.copyProperties(policy,response);
BeanUtils.copyProperties(policyReceipt,response);
return Result.success(response);
}
/**
* 添加-保单回执信息
* @param request
* @return
*/
@Override
public Result add(ApiPolicyReceiptAddRequest request) {
//校验保单信息是否存在
Policy policy = policyService.queryOne(request.getPolicyNo());
if (Objects.isNull(policy)) {
throw new BusinessException("保单信息不存在");
}
PolicyReceipt policyReceipt = new PolicyReceipt();
policyReceipt.setPolicyNo(request.getPolicyNo());
policyReceipt.setReceiptDate(request.getReceiptDate());
policyReceipt.setPolicyReceiptBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_POLICY_RECEIPT.getCode()));
iPolicyReceiptService.saveOrUpdate(policyReceipt);
return Result.success();
}
/**
* 编辑-回执状态
* @param policyReceiptBizId 保单回执信息表唯一标识(业务ID)
* @param receiptStatus 回执状态(CONFIRMED-已确认 UNCONFIRMED-未确认)
* @return
*/
@Override
public Result editReceiptStatus(String policyReceiptBizId, String receiptStatus) {
PolicyReceipt policyReceipt = iPolicyReceiptService.queryOne(policyReceiptBizId);
if (Objects.isNull(policyReceipt)) {
throw new BusinessException("回执信息不存在");
}
policyReceipt.setReceiptStatus(receiptStatus);
iPolicyReceiptService.saveOrUpdate(policyReceipt);
return Result.success();
}
}
package com.yd.csf.feign.client.policyreceipt;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.policyreceipt.ApiPolicyReceiptFeignFallbackFactory;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptAddRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptPageRequest;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
/**
* 香港保险服务-保单回执信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiPolicyReceiptFeignFallbackFactory.class)
public interface ApiPolicyReceiptFeignClient {
/**
* 分页列表查询-保单回执信息
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiPolicyReceiptPageRequest request);
/**
* 详情-保单回执信息
* @param policyReceiptBizId 保单回执表唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiPolicyReceiptDetailResponse> detail(@NotBlank(message = "保单回执表唯一业务ID能为空") @RequestParam(value = "policyReceiptBizId") String policyReceiptBizId);
/**
* 添加-保单回执信息
* @param request
* @return
*/
@PostMapping("/add")
Result add(@RequestBody ApiPolicyReceiptAddRequest request);
/**
* 编辑-回执状态
* @param policyReceiptBizId 保单回执信息表唯一标识(业务ID)
* @param receiptStatus 回执状态(CONFIRMED-已确认 UNCONFIRMED-未确认)
* @return
*/
@PutMapping("/edit/receiptStatus")
Result editReceiptStatus(@NotBlank(message = "保单回执信息表唯一业务ID能为空") @RequestParam(value = "policyReceiptBizId") String policyReceiptBizId,
@NotBlank(message = "回执状态不能为空") @RequestParam(value = "receiptStatus") String receiptStatus);
}
package com.yd.csf.feign.fallback.policyreceipt;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.policyreceipt.ApiPolicyReceiptFeignClient;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptAddRequest;
import com.yd.csf.feign.request.policyreceipt.ApiPolicyReceiptPageRequest;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 香港保险服务-保单回执信息Feign降级处理
*/
@Slf4j
@Component
public class ApiPolicyReceiptFeignFallbackFactory implements FallbackFactory<ApiPolicyReceiptFeignClient> {
@Override
public ApiPolicyReceiptFeignClient create(Throwable cause) {
return new ApiPolicyReceiptFeignClient() {
@Override
public Result page(ApiPolicyReceiptPageRequest request) {
return null;
}
@Override
public Result<ApiPolicyReceiptDetailResponse> detail(String policyReceiptBizId) {
return null;
}
@Override
public Result add(ApiPolicyReceiptAddRequest request) {
return null;
}
@Override
public Result editReceiptStatus(String policyReceiptBizId, String receiptStatus) {
return null;
}
};
}
}
package com.yd.csf.feign.request.policyreceipt;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
@Data
public class ApiPolicyReceiptAddRequest {
/**
* 保单号
*/
@NotBlank(message = "保单号不能为空")
private String policyNo;
/**
* 回执日期
*/
@NotNull(message = "回执日期不能为空")
private LocalDateTime receiptDate;
}
package com.yd.csf.feign.request.policyreceipt;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
@Data
public class ApiPolicyReceiptEditRequest {
/**
* 保单号
*/
@NotBlank(message = "保单号不能为空")
private String policyNo;
/**
* 回执日期
*/
@NotNull(message = "回执日期不能为空")
private LocalDateTime receiptDate;
}
package com.yd.csf.feign.request.policyreceipt;
import com.yd.common.dto.PageDto;
import lombok.Data;
@Data
public class ApiPolicyReceiptPageRequest extends PageDto {
/**
* 预约编号
*/
private String appointmentNo;
/**
* 保單持有人(投保人)
*/
private String policyHolder;
/**
* 保险公司(所属保司)
*/
private String insurer;
/**
* 回执状态(CONFIRMED-已确认 UNCONFIRMED-未确认)
*/
private String receiptStatus;
/**
* 保单号
*/
private String policyNo;
}
package com.yd.csf.feign.response.policyreceipt;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class ApiPolicyReceiptDetailResponse {
//以下回执信息
/**
* 主键ID
*/
private Long id;
/**
* 保单回执表唯一业务ID
*/
private String policyReceiptBizId;
/**
* 回执状态(CONFIRMED-已确认 UNCONFIRMED-未确认)
*/
private String receiptStatus;
/**
* 回执日期
*/
private LocalDateTime receiptDate;
/**
* 保单持有人签名(图片URL)
*/
private String policyHolderSignature;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
//以下保单信息
/**
* 保单号
*/
private String policyNo;
/**
* 保单受保人
*/
private String insured;
/**
* 保单持有人(投保人)
*/
private String policyHolder;
/**
* 保险公司名称
*/
private String insurer;
/**
* 产品名称
*/
private String productName;
/**
* 供款年期(字典)
*/
private Integer paymentTerm;
/**
* 期交保费
*/
private BigDecimal paymentPremium;
/**
* 保单币种
*/
private String currency;
}
package com.yd.csf.feign.response.policyreceipt;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiPolicyReceiptPageResponse {
/**
* 主键ID
*/
private Long id;
/**
* 保单回执表唯一业务ID
*/
private String policyReceiptBizId;
/**
* 保单号
*/
private String policyNo;
/**
* 保险公司名称
*/
private String insurer;
/**
* 保单持有人(投保人)
*/
private String policyHolder;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 回执日期
*/
private LocalDateTime receiptDate;
/**
* 回执状态(CONFIRMED-已确认 UNCONFIRMED-未确认)
*/
private String receiptStatus;
}
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.policyreceipt.ApiPolicyReceiptPageRequest;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptPageResponse;
import com.yd.csf.service.model.PolicyReceipt;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 保单回执表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-12-25
*/
public interface PolicyReceiptMapper extends BaseMapper<PolicyReceipt> {
IPage<ApiPolicyReceiptPageResponse> page(@Param("page") Page<ApiPolicyReceiptPageResponse> page,
@Param("request") ApiPolicyReceiptPageRequest request);
}
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 保单回执表
* </p>
*
* @author zxm
* @since 2025-12-25
*/
@Getter
@Setter
@TableName("policy_receipt")
public class PolicyReceipt implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 保单回执表唯一业务ID
*/
@TableField("policy_receipt_biz_id")
private String policyReceiptBizId;
/**
* 保单号
*/
@TableField("policy_no")
private String policyNo;
/**
* 回执状态(CONFIRMED-已确认 UNCONFIRMED-未确认)
*/
@TableField("receipt_status")
private String receiptStatus;
/**
* 回执日期
*/
@TableField("receipt_date")
private LocalDateTime receiptDate;
/**
* 保单持有人签名(图片URL)
*/
@TableField("policy_holder_signature")
private String policyHolderSignature;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@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.policyreceipt.ApiPolicyReceiptPageRequest;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptPageResponse;
import com.yd.csf.service.model.PolicyReceipt;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 保单回执表 服务类
* </p>
*
* @author zxm
* @since 2025-12-25
*/
public interface IPolicyReceiptService extends IService<PolicyReceipt> {
IPage<ApiPolicyReceiptPageResponse> page(Page<ApiPolicyReceiptPageResponse> page,
ApiPolicyReceiptPageRequest request);
PolicyReceipt queryOne(String policyReceiptBizId);
}
...@@ -23,8 +23,9 @@ public interface PolicyService extends IService<Policy> { ...@@ -23,8 +23,9 @@ public interface PolicyService extends IService<Policy> {
Boolean updatePolicy(PolicyUpdateRequest policyUpdateRequest); Boolean updatePolicy(PolicyUpdateRequest policyUpdateRequest);
List<Policy> queryList(QueryPolicyDto dto); List<Policy> queryList(QueryPolicyDto dto);
Policy queryOne(String policyNo);
List<QueryPolicyAndBrokerDto> queryPolicyBrokerList(String policyNo); List<QueryPolicyAndBrokerDto> queryPolicyBrokerList(String policyNo);
} }
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.policyreceipt.ApiPolicyReceiptPageRequest;
import com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptPageResponse;
import com.yd.csf.service.model.PolicyReceipt;
import com.yd.csf.service.dao.PolicyReceiptMapper;
import com.yd.csf.service.service.IPolicyReceiptService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 保单回执表 服务实现类
* </p>
*
* @author zxm
* @since 2025-12-25
*/
@Service
public class PolicyReceiptServiceImpl extends ServiceImpl<PolicyReceiptMapper, PolicyReceipt> implements IPolicyReceiptService {
@Override
public IPage<ApiPolicyReceiptPageResponse> page(Page<ApiPolicyReceiptPageResponse> page,
ApiPolicyReceiptPageRequest request) {
return baseMapper.page(page,request);
}
/**
* 查询单个对象
* @param policyReceiptBizId
* @return
*/
@Override
public PolicyReceipt queryOne(String policyReceiptBizId) {
return this.getOne(new LambdaQueryWrapper<PolicyReceipt>().eq(PolicyReceipt::getPolicyReceiptBizId,policyReceiptBizId).last(" limit 1 "));
}
}
...@@ -149,6 +149,16 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy> ...@@ -149,6 +149,16 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy>
return list; return list;
} }
/**
* 根据保单号查询单个对象
* @param policyNo
* @return
*/
@Override
public Policy queryOne(String policyNo) {
return this.getOne(new LambdaQueryWrapper<Policy>().eq(Policy::getPolicyNo,policyNo).last(" limit 1 "));
}
@Override @Override
public List<QueryPolicyAndBrokerDto> queryPolicyBrokerList(String policyNo) { public List<QueryPolicyAndBrokerDto> queryPolicyBrokerList(String policyNo) {
return baseMapper.queryPolicyBrokerList(policyNo); return baseMapper.queryPolicyBrokerList(policyNo);
......
...@@ -8,8 +8,8 @@ public class MyBatisPlusCodeGenerator { ...@@ -8,8 +8,8 @@ public class MyBatisPlusCodeGenerator {
FastAutoGenerator.create("jdbc:mysql://139.224.145.34:3308/yd_csf_v1?serverTimezone=GMT%2B8", "root", "Zxm7320017") FastAutoGenerator.create("jdbc:mysql://139.224.145.34:3308/yd_csf_v1?serverTimezone=GMT%2B8", "root", "Zxm7320017")
.globalConfig(builder -> { .globalConfig(builder -> {
builder.author("zxm") builder.author("zxm")
.outputDir("src/main/java/com/yd/csf/service"); // .outputDir("src/main/java/com/yd/csf/service");
// .outputDir("D:/soft/ideaproject/v2/yd-csf/yd-csf-service/src/main/java"); .outputDir("D:/soft/ideaproject/v2/yd-csf/yd-csf-service/src/main/java");
}) })
.packageConfig(builder -> { .packageConfig(builder -> {
builder.parent("com.yd.csf.service") builder.parent("com.yd.csf.service")
...@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator { ...@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator {
}) })
.strategyConfig(builder -> { .strategyConfig(builder -> {
builder.addInclude( builder.addInclude(
"team" "policy_receipt"
) )
.entityBuilder() .entityBuilder()
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.csf.service.dao.PolicyReceiptMapper">
<select id="page" resultType="com.yd.csf.feign.response.policyreceipt.ApiPolicyReceiptPageResponse">
select
pr.id,pr.policy_receipt_biz_id,pr.policy_no,
p.insurer,p.policy_holder,
pr.create_time,pr.receipt_date,pr.receipt_status
from policy_receipt pr
inner join policy p on p.policy_no = pr.policy_no and p.is_deleted = 0
inner join policy_follow pf on pf.policy_no = p.policy_no and pf.is_deleted = 0
<where>
<if test="request.appointmentNo != null and request.appointmentNo != ''">
and pf.appointment_no like concat('%', #{request.appointmentNo}, '%')
</if>
<if test="request.policyHolder != null and request.policyHolder != ''">
and p.policy_holder like concat('%', #{request.policyHolder}, '%')
</if>
<if test="request.insurer != null and request.insurer != ''">
and p.insurer = #{request.insurer}
</if>
<if test="request.receiptStatus != null and request.receiptStatus != ''">
and pr.receipt_status = #{request.receiptStatus}
</if>
<if test="request.policyNo != null and request.policyNo != ''">
and pr.policy_no = #{request.policyNo}
</if>
and pr.is_deleted = 0
</where>
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment