保存进度!

This commit is contained in:
Kane Wang 2023-11-06 19:16:38 +08:00
parent 4e74bff380
commit 484b8a78e9
11 changed files with 688 additions and 59 deletions

View File

@ -7,7 +7,7 @@
* *
* Copyright (c) ${2023} by Kane, All Rights Reserved. * Copyright (c) ${2023} by Kane, All Rights Reserved.
*/ */
import { service as instance } from "./api/request.js"; import { service as instance, service } from "./api/request.js";
import { API_URL } from "./api/config.js"; import { API_URL } from "./api/config.js";
import { type AxiosResponse } from "axios"; import { type AxiosResponse } from "axios";
interface BIReportType interface BIReportType
@ -16,6 +16,9 @@ interface BIReportType
reportTypeName: string; reportTypeName: string;
} }
/**
*
*/
interface ImportBIReportRequest interface ImportBIReportRequest
{ {
filePath: string, filePath: string,
@ -24,33 +27,59 @@ interface ImportBIReportRequest
sheetIndex: number, sheetIndex: number,
} }
/**
*
*/
interface ImportBIReportResponse interface ImportBIReportResponse
{ {
success: boolean, success: boolean, // 请求成功标志
message: string, message: string, // 请求结果说明
importedCount: number, importedCount: number, // 导入记录的数量
} }
// BI坐席渗透率报表记录 // BI坐席渗透率报表记录
interface BITelsalerAttachingRateReportRecord interface BITelsalerAttachingRateRecord
{ {
departmentName: string; departmentName: string; // 部门
telsalerName: string; telsalerName: string; // 经办人
motoPremium: number; motoPremium: number; // 车险保费
nomotoPremium: number; nomotoPremium: number; // 非车险保费
attachingRatePresentMonth: number; motoPremiumProportion: number; // 车险保费占比
attachingRateChange: number; attachingRate: number; // 保费渗透率
attachingRateChange: number; // 渗透率环比上月
customerHandleRate: number; // 当月客户渗透率
customerHandleRateChange: number; // 客户渗透率环比上月
noMotoPremiumPerCustomer: number; // 当月车非客均保费
noMotoPremiumPerCustomerChange: number; // 客均保费环比上月
} }
interface QueryBITelsalerAttachingRateReportResponse interface QueryBITelsalerAttachingRateReportResponse
{ {
success: boolean, success: boolean,
message: string, message: string,
records: BITelsalerAttachingRateReportRecord[]; records: BITelsalerAttachingRateRecord[];
} }
type ImportBIReportResponseHandler = ( response: ImportBIReportResponse, error?: any ) => void; /**
* BI坐席续保率报表记录
*/
interface BITelsalerRenewalRateRecord
{
责任部门: string;
责任人: string;
机构目标值: number;
到期数全月: number;
序时到期数占比: number;
个车续保率序时: number;
个车续保率全月: number;
环比昨日: number;
环比上月: number;
平均提前签单天数: number;
环比: number;
}
type ImportBIReportResponseHandler = ( response: ImportBIReportResponse, error: any ) => void;
type QueryBITelsalerAttachingRateDataHandler = ( response: QueryBITelsalerAttachingRateReportResponse, error: any ) => void;
/** /**
* *
* @param request * @param request
@ -88,12 +117,49 @@ function importBIReport( request: ImportBIReportRequest, handler: any ): void
}); });
} }
function queryBITelsalerAttachingRateData( handler: QueryBITelsalerAttachingRateDataHandler ): void
{
const queryResponse: QueryBITelsalerAttachingRateReportResponse = {
success: false,
message: "",
records: [],
};
instance.request({
url: API_URL.URL_BI_TELSALER_ATTACHINGRATE,
method: "post",
})
.then(( response: AxiosResponse<any, any> ): void =>
{
const data = response.data ?? {};
queryResponse.success = data.success ?? false;
queryResponse.message = data.message ?? "";
queryResponse.records = data.records ?? [];
console.log( "请求BI坐席渗透率数据", queryResponse );
handler( queryResponse, null );
})
.catch(( error ): void =>
{
queryResponse.message = "请求BI坐席渗漏率报表数据时出现错误请查看控制台消息";
queryResponse.success = false;
console.log( error );
handler( queryResponse, error );
});
}
export { export {
type BIReportType, type BIReportType,
type ImportBIReportRequest, type ImportBIReportRequest,
type ImportBIReportResponse, type ImportBIReportResponse,
type ImportBIReportResponseHandler, type ImportBIReportResponseHandler,
type BITelsalerAttachingRateReportRecord, type BITelsalerAttachingRateRecord,
type QueryBITelsalerAttachingRateReportResponse, type QueryBITelsalerAttachingRateReportResponse,
importBIReport type QueryBITelsalerAttachingRateDataHandler,
type BITelsalerRenewalRateRecord,
importBIReport,
queryBITelsalerAttachingRateData
}; };

View File

@ -50,6 +50,13 @@ const API_URL = {
// 导入报表 // 导入报表
URL_IMPORT_REPORT: "http://10.39.0.41:8081/desktop_archievement_backend/import_bi_data/excel.do", URL_IMPORT_REPORT: "http://10.39.0.41:8081/desktop_archievement_backend/import_bi_data/excel.do",
// URL_IMPORT_REPORT: "http://222.76.244.118:11101/desktop_archievement_backend/import_bi_data/excel.do", // URL_IMPORT_REPORT: "http://222.76.244.118:11101/desktop_archievement_backend/import_bi_data/excel.do",
// 请求BI报表数据
// URL_BI_TELSALER_ATTACHINGRATE: "http://localhost:8080/desktop_archievement_backend/archievement/bi_telsaler_attachingrate.do",
URL_BI_TELSALER_ATTACHINGRATE: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/bi_telsaler_attachingrate.do",
URL_BI_TELSALER_RENEWALRATE: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/bi_telsaler_renewalrate.do",
URL_BI_DEPARTMENT_ATTACHINGRATE: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/bi_department_attachingrate.do",
URL_BI_DEPARTMENT_RENEWALRATE: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/bi_department_renewalrate.do",
}; };
export { API_URL }; export { API_URL };

View File

@ -18,43 +18,71 @@
> >
上传 上传
</el-button> </el-button>
<el-button
type="primary"
icon="refresh"
@click="refresh"
>
刷新
</el-button>
</el-col> </el-col>
</el-row> </el-row>
<el-table <el-table
border border
stripe stripe
style="width:100%;" style="width:100%;"
:data="tableData"
> >
<el-table-column
type="selection"
align="center"
/>
<el-table-column <el-table-column
label="部门" label="部门"
align="center" align="center"
width="200" width="300"
/> >
<template #default="telsaler">
<span>{{ telsaler.row.departmentName }}</span>
</template>
</el-table-column>
<el-table-column <el-table-column
label="名称" label="名称"
align="center" align="center"
width="200" width="200"
/> >
<template #default="telsaler">
<span>{{ telsaler.row.telsalerName }}</span>
</template>
</el-table-column>
<el-table-column <el-table-column
label="车险保费(万)" label="车险保费"
align="center" align="center"
/> >
<template #default="telsaler">
<span>{{ Math.trunc( telsaler.row.motoPremium * 10000) }}</span>
</template>
</el-table-column>
<el-table-column <el-table-column
label="非车险保费(万)" label="非车险保费"
align="center" align="center"
/> >
<template #default="telsaler">
<span>{{ Math.trunc( telsaler.row.nomotoPremium * 10000) }}</span>
</template>
</el-table-column>
<el-table-column <el-table-column
label="当月保费渗透率" label="当月保费渗透率"
align="center" align="center"
/> >
<template #default="telsaler">
<span>{{ telsaler.row.attachingRate.toFixed(2) + "%" }}</span>
</template>
</el-table-column>
<el-table-column <el-table-column
label="渗透率环比上月" label="渗透率环比上月"
align="center" align="center"
/> >
<template #default="telsaler">
<span>{{ telsaler.row.attachingRateChange.toFixed(2) + "%" }}</span>
</template>
</el-table-column>
</el-table> </el-table>
<div class="pagination_wrapper"> <div class="pagination_wrapper">
<el-pagination <el-pagination
@ -65,7 +93,7 @@
:page-size="ui.tablePageSize" :page-size="ui.tablePageSize"
:page-sizes="[10, 20, 50, 100]" :page-sizes="[10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="0" :total="tableCount"
@current-change="onCurrentPageIndexChange" @current-change="onCurrentPageIndexChange"
@size-change="onTablePageSizeChange" @size-change="onTablePageSizeChange"
/> />
@ -87,19 +115,36 @@
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { reactive } from "vue"; import { reactive, onBeforeMount, computed } from "vue";
import {
type BITelsalerAttachingRateRecord,
type QueryBITelsalerAttachingRateReportResponse,
type QueryBITelsalerAttachingRateDataHandler,
queryBITelsalerAttachingRateData
} from "@/utils/BIReport.js";
import BiDataUploadView from "@/views/data/bi/BiDataUploadView.vue"; import BiDataUploadView from "@/views/data/bi/BiDataUploadView.vue";
import { ElMessageBox } from "element-plus";
interface UI
{
showUI: boolean,
showUploadDialog: boolean,
tableCurrentPageIndex: number,
tablePageSize: number,
BITelsalerAttachingRateData: BITelsalerAttachingRateRecord[],
}
export default { export default {
name: "TelsalerAttachingRateView", name: "TelsalerAttachingRateView",
components: { BiDataUploadView, }, components: { BiDataUploadView, },
setup() setup()
{ {
const ui = reactive({ const ui: UI = reactive({
showUI: true, showUI: true,
showUploadDialog: false, showUploadDialog: false,
tableCurrentPageIndex: 1, tableCurrentPageIndex: 1,
tablePageSize: 10, tablePageSize: 10,
BITelsalerAttachingRateData: [],
}); });
const showUploadFileDialog = (): void => const showUploadFileDialog = (): void =>
@ -110,6 +155,8 @@ export default {
const onCurrentPageIndexChange = ( index: number ): void => const onCurrentPageIndexChange = ( index: number ): void =>
{ {
ui.tableCurrentPageIndex = index; ui.tableCurrentPageIndex = index;
console.log( "表格数据", tableData );
}; };
const onTablePageSizeChange = ( pageSize: number ): void => const onTablePageSizeChange = ( pageSize: number ): void =>
@ -117,11 +164,71 @@ export default {
ui.tablePageSize = pageSize; ui.tablePageSize = pageSize;
}; };
/** 请求处理handler ********/
const queryBITelsalerAttachingRateDataHandler: QueryBITelsalerAttachingRateDataHandler = ( response: QueryBITelsalerAttachingRateReportResponse, error: any ): void =>
{
//
if ( response.success )
{
ui.BITelsalerAttachingRateData = response.records;
}
else
{
//
ElMessageBox.confirm(
response.message,
"请求BI坐席续保率数据错误",
{
confirmButtonText: "确定",
type: "warning",
center: true,
}
)
.then((): void => {})
.catch((): void => {});
if ( error !== null )
{
console.log( error );
}
}
};
const tableCount = computed((): number =>
{
return ui.BITelsalerAttachingRateData.length;
});
const tableData = computed((): BITelsalerAttachingRateRecord[] =>
{
const tableCount = ui.BITelsalerAttachingRateData.length;
const startIndex = ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 ) > tableCount ? tableCount - ui.tablePageSize : ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 );
const endIndex = ui.tablePageSize * ui.tableCurrentPageIndex;
return ui.BITelsalerAttachingRateData.slice( startIndex, endIndex );
});
onBeforeMount((): void =>
{
queryBITelsalerAttachingRateData( queryBITelsalerAttachingRateDataHandler );
});
const refresh = (): void =>
{
queryBITelsalerAttachingRateData( queryBITelsalerAttachingRateDataHandler );
};
return { return {
ui, ui,
showUploadFileDialog, showUploadFileDialog,
onCurrentPageIndexChange, onCurrentPageIndexChange,
onTablePageSizeChange, onTablePageSizeChange,
//
tableData,
tableCount,
//
queryBITelsalerAttachingRateDataHandler,
refresh,
}; };
}, },
}; };

View File

@ -10,6 +10,8 @@
package com.cpic.xim.mybatis.mapper; package com.cpic.xim.mybatis.mapper;
import java.util.ArrayList; import java.util.ArrayList;
import com.cpic.xim.mybatis.pojo.BIDepartmentAttachingRateRecord;
import com.cpic.xim.mybatis.pojo.BIDepartmentRenewalRateRecord;
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord; import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
import com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord; import com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord;
@ -18,4 +20,8 @@ public interface QueryBIArchievementDataMapper
public ArrayList<BITelsalerAttachingRateRecord> queryBITelsalerAttachingRate(); public ArrayList<BITelsalerAttachingRateRecord> queryBITelsalerAttachingRate();
public ArrayList<BITelsalerRenewalRateRecord> queryBITesalerRenewalRate(); public ArrayList<BITelsalerRenewalRateRecord> queryBITesalerRenewalRate();
public ArrayList<BIDepartmentAttachingRateRecord> queryBIDepartmentAttachingRate();
public ArrayList<BIDepartmentRenewalRateRecord> queryBIDepartmentRenewalRate();
} }

View File

@ -9,7 +9,6 @@
*/ */
package com.cpic.xim.mybatis.pojo; package com.cpic.xim.mybatis.pojo;
import java.time.LocalDate;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
public class BITelsalerAttachingRateRecord public class BITelsalerAttachingRateRecord
@ -18,10 +17,6 @@ public class BITelsalerAttachingRateRecord
@JsonProperty( "departmentName" ) @JsonProperty( "departmentName" )
private String departmentName; private String departmentName;
// 统计日期
@JsonProperty( "summaryDate" )
private LocalDate summaryDate;
// 坐席名称 // 坐席名称
@JsonProperty( "telsalerName" ) @JsonProperty( "telsalerName" )
private String telsalerName; private String telsalerName;
@ -62,14 +57,13 @@ public class BITelsalerAttachingRateRecord
@JsonProperty( "noMotoPremiumPerCustomerChange" ) @JsonProperty( "noMotoPremiumPerCustomerChange" )
private double noMotoPremiumPerCustomerChange; private double noMotoPremiumPerCustomerChange;
public BITelsalerAttachingRateRecord( String departmentName, LocalDate summaryDate, public BITelsalerAttachingRateRecord( String departmentName,
String telsalerName, double motoPremium, double nomotoPremium, String telsalerName, double motoPremium, double nomotoPremium,
double motoPremiumProportion, double attachingRate, double attachingRateChange, double motoPremiumProportion, double attachingRate, double attachingRateChange,
double customerHandleRate, double customerHandleRateChange, double customerHandleRate, double customerHandleRateChange,
double noMotoPremiumPerCustomer, double noMotoPremiumPerCustomerChange ) double noMotoPremiumPerCustomer, double noMotoPremiumPerCustomerChange )
{ {
this.departmentName = departmentName; this.departmentName = departmentName;
this.summaryDate = summaryDate;
this.telsalerName = telsalerName; this.telsalerName = telsalerName;
this.motoPremium = motoPremium; this.motoPremium = motoPremium;
this.nomotoPremium = nomotoPremium; this.nomotoPremium = nomotoPremium;
@ -129,7 +123,7 @@ public class BITelsalerAttachingRateRecord
public String toString() public String toString()
{ {
return "BITelsalerAttachingRateRecord [departmentName=" + departmentName + ", summaryDate=" return "BITelsalerAttachingRateRecord [departmentName=" + departmentName + ", summaryDate="
+ summaryDate + ", telsalerName=" + telsalerName + ", motoPremium=" + motoPremium + ", telsalerName=" + telsalerName + ", motoPremium=" + motoPremium
+ ", nomotoPremium=" + nomotoPremium + ", motoPremiumProportion=" + ", nomotoPremium=" + nomotoPremium + ", motoPremiumProportion="
+ motoPremiumProportion + ", attachingRate=" + attachingRate + motoPremiumProportion + ", attachingRate=" + attachingRate
+ ", attachingRateChange=" + attachingRateChange + ", customerHandleRate=" + ", attachingRateChange=" + attachingRateChange + ", customerHandleRate="
@ -144,7 +138,6 @@ public class BITelsalerAttachingRateRecord
final int prime = 31; final int prime = 31;
int result = 1; int result = 1;
result = prime * result + ((departmentName == null) ? 0 : departmentName.hashCode()); result = prime * result + ((departmentName == null) ? 0 : departmentName.hashCode());
result = prime * result + ((summaryDate == null) ? 0 : summaryDate.hashCode());
result = prime * result + ((telsalerName == null) ? 0 : telsalerName.hashCode()); result = prime * result + ((telsalerName == null) ? 0 : telsalerName.hashCode());
long temp; long temp;
temp = Double.doubleToLongBits( motoPremium ); temp = Double.doubleToLongBits( motoPremium );
@ -185,13 +178,6 @@ public class BITelsalerAttachingRateRecord
} }
else if ( !departmentName.equals( other.departmentName ) ) else if ( !departmentName.equals( other.departmentName ) )
return false; return false;
if ( summaryDate == null )
{
if ( other.summaryDate != null )
return false;
}
else if ( !summaryDate.equals( other.summaryDate ) )
return false;
if ( telsalerName == null ) if ( telsalerName == null )
{ {
if ( other.telsalerName != null ) if ( other.telsalerName != null )
@ -229,16 +215,6 @@ public class BITelsalerAttachingRateRecord
return true; return true;
} }
public LocalDate getSummaryDate()
{
return summaryDate;
}
public void setSummaryDate( LocalDate summaryDate )
{
this.summaryDate = summaryDate;
}
public String getTelsalerName() public String getTelsalerName()
{ {
return telsalerName; return telsalerName;

View File

@ -208,7 +208,7 @@ public final class ImportBIExcelData
MyPOIUtils.getNumbericCellValue( row, 10 ) * 100; MyPOIUtils.getNumbericCellValue( row, 10 ) * 100;
BITelsalerAttachingRateRecord record = new BITelsalerAttachingRateRecord( BITelsalerAttachingRateRecord record = new BITelsalerAttachingRateRecord(
departmentName, LocalDate.now(), name, motoPremium, nomotoPremium, departmentName, name, motoPremium, nomotoPremium,
motoPremiumProPortion, attachingRate, attachingRateChange, motoPremiumProPortion, attachingRate, attachingRateChange,
customerHandleRateCell, customerHandleRateChangeCell, customerHandleRateCell, customerHandleRateChangeCell,
noMotoPremiumPerCustomerCell, noMotoPremiumPerCustomerChangeCell ); noMotoPremiumPerCustomerCell, noMotoPremiumPerCustomerChangeCell );

View File

@ -22,7 +22,9 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.cpic.xim.mybatis.mapper.QueryBIArchievementDataMapper; import com.cpic.xim.mybatis.mapper.QueryBIArchievementDataMapper;
import com.cpic.xim.mybatis.pojo.BIDepartmentAttachingRateRecord; import com.cpic.xim.mybatis.pojo.BIDepartmentAttachingRateRecord;
import com.cpic.xim.mybatis.pojo.BIDepartmentRenewalRateRecord;
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord; import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
import com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord;
import com.cpic.xim.mybatis.utils.MybatisUtils; import com.cpic.xim.mybatis.utils.MybatisUtils;
@Controller @Controller
@ -33,7 +35,7 @@ public class BIReportController
@PostMapping( path = "/bi_telsaler_attachingrate.do" ) @PostMapping( path = "/bi_telsaler_attachingrate.do" )
@ResponseBody @ResponseBody
QueryTelsalerAttachingRateReportResponse queryTelsalerAttachingRateRepor() public QueryTelsalerAttachingRateReportResponse queryTelsalerAttachingRateRepor()
{ {
QueryTelsalerAttachingRateReportResponse response = QueryTelsalerAttachingRateReportResponse response =
new QueryTelsalerAttachingRateReportResponse(); new QueryTelsalerAttachingRateReportResponse();
@ -71,4 +73,125 @@ public class BIReportController
return response; return response;
} }
@PostMapping( path="/bi_telsaler_renewalrate.do" )
@ResponseBody
public QueryTelsalerRenewalRateReportResponse queryTelsalerRenewalRateReport()
{
QueryTelsalerRenewalRateReportResponse response = new QueryTelsalerRenewalRateReportResponse();
SqlSession session = null;
QueryBIArchievementDataMapper mapper = null;
try
{
session = MybatisUtils.getSqlSession();
mapper = session.getMapper(QueryBIArchievementDataMapper.class);
ArrayList<BITelsalerRenewalRateRecord> records = mapper.queryBITesalerRenewalRate();
response.setSuccess( true );
response.setMessage("查询成功");
response.setRecords(records);
}
catch ( IOException error )
{
logger.error("查询BI坐席续保率报表出现IOException异常异常内容", error);
response.setSuccess( false );
response.setMessage( "查询失败,原因" + error.getMessage() );
response.setRecords( null );
}
catch ( PersistenceException error )
{
logger.error("查询BI坐席续保率报表出现PersistenceException异常异常内容", error);
response.setSuccess( false );
response.setMessage( "查询失败,原因" + error.getMessage() );
response.setRecords( null );
}
return response;
}
@PostMapping( path = "/bi_department_attachingrate.do" )
@ResponseBody
public QueryDepartmentAttachingRateReportResponse queryDepartmentAttachingRateRepor()
{
QueryDepartmentAttachingRateReportResponse response =
new QueryDepartmentAttachingRateReportResponse();
SqlSession session = null;
QueryBIArchievementDataMapper mapper = null;
try
{
session = MybatisUtils.getSqlSession();
mapper = session.getMapper( QueryBIArchievementDataMapper.class );
ArrayList<BIDepartmentAttachingRateRecord> records =
mapper.queryBIDepartmentAttachingRate();
response.setSuccess( true );
response.setMessage( "查询成功" );
response.setRecords( records );
}
catch ( IOException error )
{
logger.error("查询BI机构渗透率报表出现IOException异常异常内容", error);
response.setSuccess( false );
response.setMessage( "查询失败,原因" + error.getMessage() );
response.setRecords( null );
}
catch ( PersistenceException error )
{
logger.error("查询BI机构渗透率报表出现PersistenceException异常异常内容", error);
response.setSuccess( false );
response.setMessage( "查询失败,原因" + error.getMessage() );
response.setRecords( null );
}
return response;
}
@PostMapping( path = "/bi_department_renewalrate.do" )
@ResponseBody
public QueryDepartmentRenewalRateReportResponse queryDepartmentRenewalRateRepor()
{
QueryDepartmentRenewalRateReportResponse response =
new QueryDepartmentRenewalRateReportResponse();
SqlSession session = null;
QueryBIArchievementDataMapper mapper = null;
try
{
session = MybatisUtils.getSqlSession();
mapper = session.getMapper( QueryBIArchievementDataMapper.class );
ArrayList<BIDepartmentRenewalRateRecord> records =
mapper.queryBIDepartmentRenewalRate();
response.setSuccess( true );
response.setMessage( "查询成功" );
response.setRecords( records );
}
catch ( IOException error )
{
logger.error("查询BI机构渗透率报表出现IOException异常异常内容", error);
response.setSuccess( false );
response.setMessage( "查询失败,原因" + error.getMessage() );
response.setRecords( null );
}
catch ( PersistenceException error )
{
logger.error("查询BI机构渗透率报表出现PersistenceException异常异常内容", error);
response.setSuccess( false );
response.setMessage( "查询失败,原因" + error.getMessage() );
response.setRecords( null );
}
return response;
}
} }

View File

@ -0,0 +1,91 @@
/*
* @Author: Kane
* @Date: 2023-11-02 11:21:03
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryDepartmentAttachingRateReportResponse.java
* @Description:
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
/*
* @Author: Kane
* @Date: 2023-11-01 16:51:53
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryTelsalerAttachingRateReportResponse.java
* @Description:
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
package com.cpic.xim.web.controllers.archievement.bi;
import java.util.ArrayList;
import com.cpic.xim.mybatis.pojo.*;
import com.cpic.xim.web.controllers.QueryResponse;
import com.fasterxml.jackson.annotation.JsonProperty;
public class QueryDepartmentAttachingRateReportResponse extends QueryResponse
{
@JsonProperty("records")
ArrayList<BIDepartmentAttachingRateRecord> records;
public QueryDepartmentAttachingRateReportResponse( boolean success, String message,
ArrayList<BIDepartmentAttachingRateRecord> records )
{
super( success, message );
this.records = records;
}
public QueryDepartmentAttachingRateReportResponse()
{
super( false, "" );
this.records = null;
}
public ArrayList<BIDepartmentAttachingRateRecord> getRecords()
{
return records;
}
public void setRecords( ArrayList<BIDepartmentAttachingRateRecord> records )
{
this.records = records;
}
@Override
public String toString()
{
return "QueryTelsalerAttachingRateReportResponse [records=" + records + "]";
}
@Override
public int hashCode()
{
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((records == null) ? 0 : records.hashCode());
return result;
}
@Override
public boolean equals( Object obj )
{
if ( this == obj )
return true;
if ( !super.equals( obj ) )
return false;
if ( getClass() != obj.getClass() )
return false;
QueryDepartmentAttachingRateReportResponse other =
(QueryDepartmentAttachingRateReportResponse) obj;
if ( records == null )
{
if ( other.records != null )
return false;
}
else if ( !records.equals( other.records ) )
return false;
return true;
}
}

View File

@ -0,0 +1,100 @@
/*
* @Author: Kane
* @Date: 2023-11-02 16:56:50
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryDepartmentRenewalRateReportResponse.java
* @Description:
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
/*
* @Author: Kane
* @Date: 2023-11-02 11:21:03
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryDepartmentAttachingRateReportResponse.java
* @Description:
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
/*
* @Author: Kane
* @Date: 2023-11-01 16:51:53
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryTelsalerAttachingRateReportResponse.java
* @Description:
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
package com.cpic.xim.web.controllers.archievement.bi;
import java.util.ArrayList;
import com.cpic.xim.mybatis.pojo.*;
import com.cpic.xim.web.controllers.QueryResponse;
import com.fasterxml.jackson.annotation.JsonProperty;
public class QueryDepartmentRenewalRateReportResponse extends QueryResponse
{
@JsonProperty("records")
ArrayList<BIDepartmentRenewalRateRecord> records;
public QueryDepartmentRenewalRateReportResponse( boolean success, String message,
ArrayList<BIDepartmentRenewalRateRecord> records )
{
super( success, message );
this.records = records;
}
public QueryDepartmentRenewalRateReportResponse()
{
super( false, "" );
this.records = null;
}
public ArrayList<BIDepartmentRenewalRateRecord> getRecords()
{
return records;
}
public void setRecords( ArrayList<BIDepartmentRenewalRateRecord> records )
{
this.records = records;
}
@Override
public String toString()
{
return "QueryTelsalerAttachingRateReportResponse [records=" + records + "]";
}
@Override
public int hashCode()
{
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((records == null) ? 0 : records.hashCode());
return result;
}
@Override
public boolean equals( Object obj )
{
if ( this == obj )
return true;
if ( !super.equals( obj ) )
return false;
if ( getClass() != obj.getClass() )
return false;
QueryDepartmentRenewalRateReportResponse other =
(QueryDepartmentRenewalRateReportResponse) obj;
if ( records == null )
{
if ( other.records != null )
return false;
}
else if ( !records.equals( other.records ) )
return false;
return true;
}
}

View File

@ -0,0 +1,92 @@
/*
* @Author: Kane
* @Date: 2023-11-02 16:54:42
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryTelsalerRenewalRateReportResponse.java
* @Description:
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
/*
* @Author: Kane
* @Date: 2023-11-01 16:51:53
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryTelsalerAttachingRateReportResponse.java
* @Description:
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
package com.cpic.xim.web.controllers.archievement.bi;
import java.util.ArrayList;
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
import com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord;
import com.cpic.xim.web.controllers.QueryResponse;
import com.fasterxml.jackson.annotation.JsonProperty;
public class QueryTelsalerRenewalRateReportResponse extends QueryResponse
{
@JsonProperty("records")
ArrayList<BITelsalerRenewalRateRecord> records;
public QueryTelsalerRenewalRateReportResponse( boolean success, String message,
ArrayList<BITelsalerRenewalRateRecord> records )
{
super( success, message );
this.records = records;
}
public QueryTelsalerRenewalRateReportResponse()
{
super( false, "" );
this.records = null;
}
public ArrayList<BITelsalerRenewalRateRecord> getRecords()
{
return records;
}
public void setRecords( ArrayList<BITelsalerRenewalRateRecord> records )
{
this.records = records;
}
@Override
public String toString()
{
return "QueryTelsalerAttachingRateReportResponse [records=" + records + "]";
}
@Override
public int hashCode()
{
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((records == null) ? 0 : records.hashCode());
return result;
}
@Override
public boolean equals( Object obj )
{
if ( this == obj )
return true;
if ( !super.equals( obj ) )
return false;
if ( getClass() != obj.getClass() )
return false;
QueryTelsalerRenewalRateReportResponse other =
(QueryTelsalerRenewalRateReportResponse) obj;
if ( records == null )
{
if ( other.records != null )
return false;
}
else if ( !records.equals( other.records ) )
return false;
return true;
}
}

View File

@ -33,6 +33,7 @@
<result property="noMotoPremiumPerCustomerChange" column="客均保费环比上月" javaType="double" jdbcType="DOUBLE" /> <result property="noMotoPremiumPerCustomerChange" column="客均保费环比上月" javaType="double" jdbcType="DOUBLE" />
</resultMap> </resultMap>
<!-- 坐席续保率 -->
<select id="queryBITesalerRenewalRate" resultMap="BITelsalerRenewalRate"> <select id="queryBITesalerRenewalRate" resultMap="BITelsalerRenewalRate">
select t.责任部门, select t.责任部门,
t.责任人, t.责任人,
@ -60,4 +61,64 @@
<result property="平均提前签单天数" column="平均提前签单天数" javaType="int" jdbcType="DOUBLE" /> <result property="平均提前签单天数" column="平均提前签单天数" javaType="int" jdbcType="DOUBLE" />
<result property="环比" column="环比" javaType="int" jdbcType="DOUBLE" /> <result property="环比" column="环比" javaType="int" jdbcType="DOUBLE" />
</resultMap> </resultMap>
<!-- 机构渗透率 -->
<select id="queryBIDepartmentAttachingRate" resultMap="BIDepartmentAttachingRate">
select t.部门,
t."目标值-机构" as 目标值机构,
t.目标差距,
t.车险保费,
t.车险保费占比,
t.非车保费,
t.当月保费渗透率,
t.保费渗透率环比上月,
t.当月客户渗透率,
t.客户渗透率环比上月,
t.当月车非客均保费,
t.客均保费环比上月,
t.车险客户数
from BI机构渗透率跟踪表 t
</select>
<resultMap id="BIDepartmentAttachingRate" type="com.cpic.xim.mybatis.pojo.BIDepartmentAttachingRateRecord">
<result column="部门" property="departmentName" jdbcType="VARCHAR" javaType="String" />
<result column="目标值机构" property="departmentObject" jdbcType="DOUBLE" javaType="double" />
<result column="目标差距" property="objectGap" jdbcType="DOUBLE" javaType="double" />
<result column="车险保费" property="motoPremium" jdbcType="DOUBLE" javaType="double" />
<result column="车险保费占比" property="motoPremiumProPortion" jdbcType="DOUBLE" javaType="double" />
<result column="非车保费" property="nomotoPremium" jdbcType="DOUBLE" javaType="double" />
<result column="当月保费渗透率" property="attachingRate" jdbcType="DOUBLE" javaType="double" />
<result column="保费渗透率环比上月" property="attachingRateChange" jdbcType="DOUBLE" javaType="double" />
<result column="当月客户渗透率" property="customerHandleRate" jdbcType="DOUBLE" javaType="double" />
<result column="客户渗透率环比上月" property="customerHandleRateChange" jdbcType="DOUBLE" javaType="double" />
<result column="当月车非客均保费" property="premiumPerCustomer" jdbcType="DOUBLE" javaType="double" />
<result column="客均保费环比上月" property="premiumPerCustomerChange" jdbcType="DOUBLE" javaType="double" />
<result column="车险客户数" property="motoInsuranceCustomerCount" jdbcType="INTEGER" javaType="int" />
</resultMap>
<!-- 机构续保率 -->
<select id="queryBIDepartmentRenewalRate" resultMap="BIDepartmentRenewalRate">
select t.责任部门,
t."机构目标值1(%)" as 机构目标值,
t."到期数-全月" as 到期数全月,
t."序时到期数占比(%)" as 序时到期数占比,
t."个车续保率(序时)(%)" as 个车续保率序时,
t."个车续保率(全月)(%)" as 个车续保率全月,
t."环比昨日(%)" as 环比昨日,
t."环比上月(%)" as 环比上月,
t.平均提前签单天数,
t.环比
from BI机构当月个车续保率跟踪表 t
</select>
<resultMap id="BIDepartmentRenewalRate" type="com.cpic.xim.mybatis.pojo.BIDepartmentRenewalRateRecord">
<result column="责任部门" property="责任部门" jdbcType="VARCHAR" javaType="String" />
<result column="机构目标值" property="机构目标值" jdbcType="DOUBLE" javaType="double" />
<result column="到期数全月" property="到期数全月" jdbcType="INTEGER" javaType="int" />
<result column="序时到期数占比" property="序时到期数占比" jdbcType="DOUBLE" javaType="double" />
<result column="个车续保率序时" property="个车续保率序时" jdbcType="DOUBLE" javaType="double" />
<result column="个车续保率全月" property="个车续保率全月" jdbcType="DOUBLE" javaType="double" />
<result column="环比昨日" property="环比昨日" jdbcType="DOUBLE" javaType="double" />
<result column="环比上月" property="环比上月" jdbcType="DOUBLE" javaType="double" />
<result column="平均提前签单天数" property="平均提前签单天数" jdbcType="INTEGER" javaType="int" />
<result column="环比" property="环比" jdbcType="DOUBLE" javaType="double" />
</resultMap>
</mapper> </mapper>