保存进度!
This commit is contained in:
		@@ -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
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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 };
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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,
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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 );
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -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;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -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;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -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>
 | 
				
			||||||
		Reference in New Issue
	
	Block a user