2.14 团财批单查询(新增)

数据源:独立批单表 pi_endorse_bill(§2.4 审批后落地)+ 保单主表 car_main / no_car_main。
展示口径:批改导入文件里有的字段取批单表(批单号、承保日期、生效日期、业务员代码/姓名),
其余字段取样单主表(保险公司名称、地市级机构名称、投保人名称、被保人名称、产险类型)。
列表维度是「保单号 + 批单号」,一个批单下多个险种只展示一行。

Code
复制成功
POST /property_insurance/endorse/query
Content-Type: application/json
 
请求体:PolicyEndorseQueryCondition
{
"comCode": "00", // 省级分公司代码(可选,不传/传 01 看全部;其余按机构前缀过滤)
"codeName": "佰盈总部", // 省级分公司名称(可选,不参与过滤)
"comSubCode": "0001", // 地市级分公司代码(可选,精确匹配)
"comSubName": "北京分公司", // 地市级分公司名称(可选,不参与过滤)
"companyCode": "PICC", // 保险公司代码(可选,精确匹配)
"companyName": "人保财险", // 保险公司名称(可选,不参与过滤)
"acceptStartDate": "2026-05-01", // 承保开始日期(与 保单号/批单号 二者必录其一)
"acceptEndDate": "2026-05-31", // 承保结束日期
"policyNo": "PICC202605001", // 保单号(可选,精确匹配)
"endorseNo": "E001", // 批单号(可选,精确匹配)
"propertyType": "1", // 1=车险 / 2=非车 / 空=全部(已合表,无需并集)
"currentPage": 1,
"pageSize": 20
}

返回:Result,data 是 Spring PageImpl(与保单查询 §2.11 完全同构,读 content + totalElements)

JSON
复制成功
{
"code": "000000",
"msg": "查询成功",
"data": {
"content": [
{
"policyNo": "PICC202605001",
"endorseNo": "E001",
"acceptDate": "2026-05-12 00:00:00",
"generateDate": "2026-05-12 00:00:00",
"propertyType": "车险",
"companyName": "人保财险",
"comName": "上海分公司本部营业部",
"agentCode": "AGENT001",
"agentName": "张三",
"insureName": "XX 物流有限公司",
"insuredName": "XX 物流有限公司"
}
],
"totalElements": 152,
"totalPages": 8,
"size": 20,
"number": 0,
"first": true,
"last": false,
"numberOfElements": 20
}
}
code msg 说明
000000 查询成功
000003 查询条件不能为空 未传 body
000003 承保日期和保单号、批单号必录其一 两个条件都为空
000003 无记录 查询结果为空(此时 data 仍为 Page 对象,content 为空数组)
000001 系统查询异常! 后端异常,看服务日志

字段说明:

  • propertyType 返回中文「车险 / 非车」(不再是 1/2)。
  • comName 返回去掉「天安佰盈保险销售有限公司」前缀的简称(如「上海分公司本部营业部」)。
  • acceptDate / generateDate 是 Date 类型,全站无 jackson 日期配置,序列化为毫秒时间戳(如 1785513600000)。前端请自行格式化;直接 moment(毫秒数) 可用,但不要 moment("1785513600000") 字符串(会得到 Invalid date)。

调用示例:

JavaScript
复制成功
// api/propertyInsurance.js
export function endorseQuery(data) {
return request({ url: '/property_insurance/endorse/query', method: 'post', data });
}
 
// 页面
const res = await endorseQuery({ acceptStartDate, acceptEndDate, policyNo, endorseNo, currentPage: 1, pageSize: 20 });
if (res.data.code === '000000') {
const rows = res.data.data.content; // ← 不是 rows / list
const total = res.data.data.totalElements; // ← 不是 total
}

2.15 团财批单详情(新增)

返回结构与保单详情(§2.12 policyQuery/detail)完全一致,都是 PolicyDataDetailVo,
只是在保单基本信息之外多出两段:endorseBasicInfo(批单基本信息)、endorseRiskInfoList(批单险种信息)。
保单基本信息段直接取车主表/非车主表(与保单详情同逻辑)。

Code
复制成功
GET /property_insurance/endorse/detail?policyNo=...&endorseNo=...&propertyType=1
参数 必填 说明
policyNo 是 保单号
endorseNo 否 批单号;不传则取该保单下最新审批的一条批单
propertyType 否 已不再用于路由(产险类型由批单表自身判定),保留仅为兼容前端旧调用

返回:Result,data 是 PolicyDataDetailVo

JSON
复制成功
{
"code": "000000",
"msg": "查询成功",
"data": {
"policyBasicInfo": {
"policyNo": "PICC202605001",
"policyStatus": "有效",
"...": "…"
},
"carInfo": {
"...": "…(车险才有)"
},
"insureInfo": {
"...": "…"
},
"insuredInfoList": [
{
"...": "…"
}
],
"syInfoList": [
{
"...": "…"
}
],
"agentInfo": {
"...": "…"
},
"tciRiskInfo": {
"...": "…(车险才有)"
},
"vciRiskInfo": {
"...": "…(车险才有)"
},
"noCarRiskInfo": {
"...": "…(非车才有)"
},
"endorseBasicInfo": {
"endorseNo": "E001",
"endorseAcceptDate": "2026-05-12",
"endorseEffectDate": "2026-05-13",
"totalPremiumTax": 2000.5,
"totalPremiumNoTax": 1887.27,
"agentCode": "AGENT001",
"agentName": "张三"
},
"endorseRiskInfoList": [
{
"riskClass": "3-机动车辆保险",
"riskCode": "RK001",
"riskName": "机动车损失险",
"sumInsured": 100000,
"premiumTax": 1200.5,
"premiumNoTax": 1132.55,
"startDate": "2026-05-13",
"endDate": "2027-05-12",
"payType": "趸交",
"settleCommissionRate": null,
"settleCommissionBasis": null
}
]
}
}
code msg 说明
000000 查询成功
000003 保单号不能为空
000003 未查询到批单详情 该保单号下没有已审批的批单(data 为 null)
000001 系统查询异常!
  • endorseBasicInfo.totalPremiumTax / totalPremiumNoTax = 该批单下所有险种对应保费的合计(后端 SUM)。
  • 日期字段(endorseAcceptDate / endorseEffectDate / startDate / endDate)后端已格式化为 yyyy-MM-dd 字符串,前端可直接渲染。
  • settleCommissionRate / settleCommissionBasis 需求文档有这两列,但批改模板未提供,当前恒为 null,前端留空占位即可。

2.16 团财批单导出(新增)

入参、过滤逻辑、排序与 §2.14 完全一致(同一套 PolicyEndorseQueryCondition),只是不分页。
导出列与查询结果 11 列一致,「承保日期和保单号、批单号必录其一」的校验同样生效。

Code
复制成功
GET /property_insurance/endorse/export?
comCode=&codeName=&comSubCode=&comSubName=&companyCode=&companyName=
acceptStartDate=&acceptEndDate=&policyNo=&endorseNo=&propertyType=
 
响应:application/vnd.ms-excel;文件名"产险批单数据导出.xls"
导出列顺序 表头 VO 字段
1 保单号 policyNo
2 批单号 endorseNo
3 承保日期 acceptDate
4 生效日期 generateDate
5 产险类型 propertyType
6 保险公司名称 companyName
7 地市级机构名称 comName
8 业务员代码 agentCode
9 业务员姓名 agentName
10 投保人名称 insureName
11 被保人名称 insuredName

必须走整页跳转(window.location.href = ...)或 responseType: 'blob',不能走普通 ajax,否则拿不到二进制流。
条件不满足时后端抛 DataIntegrityViolationException(HTTP 500),前端请先复用 §2.14 的校验规则。

JavaScript
复制成功
export function exportEndorseUrl(params) {
const qs = Object.keys(params).filter(k => params[k] !== '' && params[k] != null)
.map(k => `${k}=${encodeURIComponent(params[k])}`).join('&');
return `/tabycore/property_insurance/endorse/export?${qs}`;
}
// 使用:window.location.href = exportEndorseUrl(form);

本页笔记

加载中…