Compare commits
5 Commits
develop
...
7311ab5e2a
Author | SHA1 | Date | |
---|---|---|---|
7311ab5e2a | |||
0650227861 | |||
75a9c46c2e | |||
02ac5274e0 | |||
6f303eec03 |
@@ -31,6 +31,24 @@ interface ImportBIReportResponse
|
||||
importedCount: number,
|
||||
}
|
||||
|
||||
// BI坐席渗透率报表记录
|
||||
interface BITelsalerAttachingRateReportRecord
|
||||
{
|
||||
departmentName: string;
|
||||
telsalerName: string;
|
||||
motoPremium: number;
|
||||
nomotoPremium: number;
|
||||
attachingRatePresentMonth: number;
|
||||
attachingRateChange: number;
|
||||
}
|
||||
|
||||
interface QueryBITelsalerAttachingRateReportResponse
|
||||
{
|
||||
success: boolean,
|
||||
message: string,
|
||||
records: BITelsalerAttachingRateReportRecord[];
|
||||
}
|
||||
|
||||
type ImportBIReportResponseHandler = ( response: ImportBIReportResponse, error?: any ) => void;
|
||||
|
||||
/**
|
||||
@@ -75,5 +93,7 @@ export {
|
||||
type ImportBIReportRequest,
|
||||
type ImportBIReportResponse,
|
||||
type ImportBIReportResponseHandler,
|
||||
type BITelsalerAttachingRateReportRecord,
|
||||
type QueryBITelsalerAttachingRateReportResponse,
|
||||
importBIReport
|
||||
};
|
||||
|
@@ -9,36 +9,12 @@
|
||||
-->
|
||||
<template>
|
||||
<div class="data_management_wrapper">
|
||||
<!-- <div class="telsaler-dataupload-wrapper">
|
||||
<el-upload
|
||||
v-model="ui.fileList"
|
||||
drag
|
||||
action="http://localhost:8080/desktop_archievement_backend/file/file-upload.do"
|
||||
:on-preview="handlePreview"
|
||||
:on-remove="handleRemove"
|
||||
:on-success="handleUploadSuccess"
|
||||
:before-remove="beforeRemove"
|
||||
:limit="1"
|
||||
:on-exceed="handleExceed"
|
||||
:data="ui.uploadData"
|
||||
name="files"
|
||||
>
|
||||
<el-button type="primary">
|
||||
上传
|
||||
</el-button>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip">
|
||||
文件不能大于100MB。
|
||||
</div>
|
||||
</template>
|
||||
</el-upload>
|
||||
</div> -->
|
||||
<el-tabs>
|
||||
<el-tab-pane label="坐席车非渗透率">
|
||||
<TelsalerAttachingRateView />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="坐席续保率">
|
||||
坐席车非渗透率
|
||||
<TelsalerRenewalRateView />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="机构">
|
||||
坐席车非渗透率
|
||||
@@ -50,9 +26,10 @@
|
||||
import { ref, reactive } from "vue";
|
||||
import { ElMessage, ElMessageBox, type UploadFile, type UploadFiles, type UploadProps, type UploadUserFile } from "element-plus";
|
||||
import TelsalerAttachingRateView from "@/views/data/bi/TelsalerAttachingRateView.vue";
|
||||
import TelsalerRenewalRateView from "@/views/data/bi/TelsalerRenewalRateView.vue";
|
||||
export default {
|
||||
name: "DataManagement",
|
||||
components: { TelsalerAttachingRateView, },
|
||||
components: { TelsalerAttachingRateView, TelsalerRenewalRateView, },
|
||||
setup()
|
||||
{
|
||||
const ui = reactive({
|
||||
|
@@ -62,7 +62,7 @@
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
import { reactive, ref } from "vue";
|
||||
import { reactive, ref, onBeforeMount } from "vue";
|
||||
import {
|
||||
type BIReportType,
|
||||
type ImportBIReportRequest,
|
||||
@@ -92,10 +92,10 @@ export default {
|
||||
reportType: {
|
||||
type: Number,
|
||||
require: true,
|
||||
default: (): number => -9999,
|
||||
default: (): number => 0,
|
||||
},
|
||||
},
|
||||
setup()
|
||||
setup( props )
|
||||
{
|
||||
const ui: UI = reactive({
|
||||
showUI: false,
|
||||
@@ -214,6 +214,11 @@ export default {
|
||||
}
|
||||
};
|
||||
|
||||
onBeforeMount((): void =>
|
||||
{
|
||||
ui.selectedReportType = props.reportType;
|
||||
});
|
||||
|
||||
return {
|
||||
ui,
|
||||
onUploadSuccess,
|
||||
|
@@ -81,7 +81,7 @@
|
||||
:close-on-press-escape="false"
|
||||
:show-close="true"
|
||||
>
|
||||
<BiDataUploadView />
|
||||
<BiDataUploadView :report-type="0" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -1,30 +1,136 @@
|
||||
src/views/data/bi/TelsalerAttachingRateView.vue<!--
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2023-10-17 14:41:39
|
||||
* @Date: 2023-10-17 23:31:19
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /task_schedule/src/views/data/TelsalerAttachingRateView.vue
|
||||
* @FilePath: /task_schedule/src/views/data/bi/TelsalerRenewalRateView.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<div class="wrapper" />
|
||||
<div class="wrapper">
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="24">
|
||||
<el-button
|
||||
type="warning"
|
||||
icon="Upload"
|
||||
@click="showUploadFileDialog"
|
||||
>
|
||||
上传
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table
|
||||
border
|
||||
stripe
|
||||
style="width:100%;"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
label="部门"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
label="责任人"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
label="到期数-全月"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
label="个车续保率(序时)(%)"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
label="个车续保率(全月)(%)"
|
||||
align="center"
|
||||
/>
|
||||
</el-table>
|
||||
<div class="pagination_wrapper">
|
||||
<el-pagination
|
||||
v-model="ui.tableCurrentPageIndex"
|
||||
class="pull_left"
|
||||
size="small"
|
||||
background
|
||||
:page-size="ui.tablePageSize"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="0"
|
||||
@current-change="onCurrentPageIndexChange"
|
||||
@size-change="onTablePageSizeChange"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
class="upload-dialog-wrapper"
|
||||
>
|
||||
<el-dialog
|
||||
v-model="ui.showUploadDialog"
|
||||
title="上传报表"
|
||||
width="600px"
|
||||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
:show-close="true"
|
||||
>
|
||||
<BiDataUploadView :report-type="1" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
import { reactive } from "vue";
|
||||
import BiDataUploadView from "@/views/data/bi/BiDataUploadView.vue";
|
||||
|
||||
export default {
|
||||
name: "TelsalerAttachingRateView",
|
||||
components: { BiDataUploadView, },
|
||||
setup()
|
||||
{
|
||||
const ui = reactive({
|
||||
showUI: true,
|
||||
showUploadDialog: false,
|
||||
tableCurrentPageIndex: 1,
|
||||
tablePageSize: 10,
|
||||
});
|
||||
|
||||
const showUploadFileDialog = (): void =>
|
||||
{
|
||||
ui.showUploadDialog = true;
|
||||
};
|
||||
|
||||
const onCurrentPageIndexChange = ( index: number ): void =>
|
||||
{
|
||||
ui.tableCurrentPageIndex = index;
|
||||
};
|
||||
|
||||
const onTablePageSizeChange = ( pageSize: number ): void =>
|
||||
{
|
||||
ui.tablePageSize = pageSize;
|
||||
};
|
||||
|
||||
return {
|
||||
ui,
|
||||
showUploadFileDialog,
|
||||
onCurrentPageIndexChange,
|
||||
onTablePageSizeChange,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.wrapper {
|
||||
margin: 10px;
|
||||
|
||||
>*+* {
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.pagination_wrapper {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
</style>
|
||||
|
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-11-01 15:50:40
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/mapper/QueryBIArchievementDataMapper.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.mybatis.mapper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
|
||||
import com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord;
|
||||
|
||||
public interface QueryBIArchievementDataMapper
|
||||
{
|
||||
public ArrayList<BITelsalerAttachingRateRecord> queryBITelsalerAttachingRate();
|
||||
|
||||
public ArrayList<BITelsalerRenewalRateRecord> queryBITesalerRenewalRate();
|
||||
}
|
@@ -47,19 +47,19 @@ public class BITelsalerAttachingRateRecord
|
||||
private double attachingRateChange;
|
||||
|
||||
// 当月客户渗透率
|
||||
@JsonProperty( "customerHandleRateCell" )
|
||||
@JsonProperty( "customerHandleRate" )
|
||||
private double customerHandleRate;
|
||||
|
||||
// 客户渗透率环比上月
|
||||
@JsonProperty( "customerHandleRateChangeCell" )
|
||||
@JsonProperty( "customerHandleRateChange" )
|
||||
private double customerHandleRateChange;
|
||||
|
||||
// 当月车非客均保费
|
||||
@JsonProperty( "noMotoPremiumPerCustomerCell" )
|
||||
@JsonProperty( "noMotoPremiumPerCustomer" )
|
||||
private double noMotoPremiumPerCustomer;
|
||||
|
||||
// 客均保费环比上月
|
||||
@JsonProperty( "noMotoPremiumPerCustomerChangeCell" )
|
||||
@JsonProperty( "noMotoPremiumPerCustomerChange" )
|
||||
private double noMotoPremiumPerCustomerChange;
|
||||
|
||||
public BITelsalerAttachingRateRecord( String departmentName, LocalDate summaryDate,
|
||||
|
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2023-11-01 16:48:56
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/BIReportController.java
|
||||
* @Description: BI报表相关的controller
|
||||
*
|
||||
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.archievement.bi;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import org.apache.ibatis.exceptions.PersistenceException;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import com.cpic.xim.mybatis.mapper.QueryBIArchievementDataMapper;
|
||||
import com.cpic.xim.mybatis.pojo.BIDepartmentAttachingRateRecord;
|
||||
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
|
||||
import com.cpic.xim.mybatis.utils.MybatisUtils;
|
||||
|
||||
@Controller
|
||||
@RequestMapping( method = RequestMethod.POST, path = "/archievement" )
|
||||
public class BIReportController
|
||||
{
|
||||
private static Logger logger = LoggerFactory.getLogger( BIReportController.class );
|
||||
|
||||
@PostMapping( path = "/bi_telsaler_attachingrate.do" )
|
||||
@ResponseBody
|
||||
QueryTelsalerAttachingRateReportResponse queryTelsalerAttachingRateRepor()
|
||||
{
|
||||
QueryTelsalerAttachingRateReportResponse response =
|
||||
new QueryTelsalerAttachingRateReportResponse();
|
||||
SqlSession session = null;
|
||||
QueryBIArchievementDataMapper mapper = null;
|
||||
|
||||
try
|
||||
{
|
||||
session = MybatisUtils.getSqlSession();
|
||||
mapper = session.getMapper( QueryBIArchievementDataMapper.class );
|
||||
|
||||
ArrayList<BITelsalerAttachingRateRecord> records =
|
||||
mapper.queryBITelsalerAttachingRate();
|
||||
|
||||
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,82 @@
|
||||
/*
|
||||
* @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.web.controllers.QueryResponse;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class QueryTelsalerAttachingRateReportResponse extends QueryResponse
|
||||
{
|
||||
@JsonProperty("records")
|
||||
ArrayList<BITelsalerAttachingRateRecord> records;
|
||||
|
||||
public QueryTelsalerAttachingRateReportResponse( boolean success, String message,
|
||||
ArrayList<BITelsalerAttachingRateRecord> records )
|
||||
{
|
||||
super( success, message );
|
||||
this.records = records;
|
||||
}
|
||||
|
||||
public QueryTelsalerAttachingRateReportResponse()
|
||||
{
|
||||
super( false, "" );
|
||||
|
||||
this.records = null;
|
||||
}
|
||||
|
||||
public ArrayList<BITelsalerAttachingRateRecord> getRecords()
|
||||
{
|
||||
return records;
|
||||
}
|
||||
|
||||
public void setRecords( ArrayList<BITelsalerAttachingRateRecord> 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;
|
||||
QueryTelsalerAttachingRateReportResponse other =
|
||||
(QueryTelsalerAttachingRateReportResponse) obj;
|
||||
if ( records == null )
|
||||
{
|
||||
if ( other.records != null )
|
||||
return false;
|
||||
}
|
||||
else if ( !records.equals( other.records ) )
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.cpic.xim.mybatis.mapper.QueryBIArchievementDataMapper">
|
||||
|
||||
<!-- 查询坐席车非渗透率报表 -->
|
||||
<select id="queryBITelsalerAttachingRate" resultMap="BITelsalerAttachingRate">
|
||||
SELECT t.部门,
|
||||
t.经办,
|
||||
t."车险保费(万)" as 车险保费,
|
||||
t.车险保费占比,
|
||||
t."非车保费(万)" as 非车保费,
|
||||
t.当月保费渗透率,
|
||||
t.保费渗透率环比上月,
|
||||
t.当月客户渗透率,
|
||||
t.客户渗透率环比上月,
|
||||
t.当月车非客均保费,
|
||||
t.客均保费环比上月
|
||||
FROM BI电销坐席车非渗透率跟踪表 t
|
||||
ORDER BY t.部门
|
||||
</select>
|
||||
<!-- 坐席车非渗透率报表记录 -->
|
||||
<resultMap id="BITelsalerAttachingRate" type="com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord">
|
||||
<result property="departmentName" column="部门" javaType="String" jdbcType="VARCHAR" />
|
||||
<result property="telsalerName" column="经办" javaType="String" jdbcType="VARCHAR" />
|
||||
<result property="motoPremium" column="车险保费" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="motoPremiumProportion" column="车险保费占比" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="nomotoPremium" column="非车保费" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="attachingRate" column="当月保费渗透率" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="attachingRateChange" column="保费渗透率环比上月" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="customerHandleRate" column="当月客户渗透率" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="customerHandleRateChange" column="客户渗透率环比上月" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="noMotoPremiumPerCustomer" column="当月车非客均保费" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="noMotoPremiumPerCustomerChange" column="客均保费环比上月" javaType="double" jdbcType="DOUBLE" />
|
||||
</resultMap>
|
||||
|
||||
<select id="queryBITesalerRenewalRate" resultMap="BITelsalerRenewalRate">
|
||||
select t.责任部门,
|
||||
t.责任人,
|
||||
t."机构目标值1(%)" as 机构目标值,
|
||||
t."到期数-全月" as 到期数全月,
|
||||
t."序时到期数占比(%)" as 序时到期数占比,
|
||||
t."个车续保率(序时)(%)" as 个车续保率序时,
|
||||
t."个车续保率(全月)(%)" as 个车续保率全月,
|
||||
t."环比昨日(%)" as 环比昨日,
|
||||
t."环比上月(%)" as 环比上月,
|
||||
t.平均提前签单天数,
|
||||
t.环比
|
||||
from BI电销坐席续保率跟踪表 t
|
||||
</select>
|
||||
<resultMap id="BITelsalerRenewalRate" type="com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord">
|
||||
<result property="责任部门" column="责任部门" javaType="String" jdbcType="VARCHAR" />
|
||||
<result property="责任人" column="责任人" javaType="String" jdbcType="VARCHAR" />
|
||||
<result property="机构目标值" column="机构目标值" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="到期数全月" column="到期数全月" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="序时到期数占比" column="序时到期数占比" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="个车续保率序时" column="个车续保率序时" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="个车续保率全月" column="个车续保率全月" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="环比昨日" column="环比昨日" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="环比上月" column="环比上月" javaType="double" jdbcType="DOUBLE" />
|
||||
<result property="平均提前签单天数" column="平均提前签单天数" javaType="int" jdbcType="DOUBLE" />
|
||||
<result property="环比" column="环比" javaType="int" jdbcType="DOUBLE" />
|
||||
</resultMap>
|
||||
</mapper>
|
@@ -26,6 +26,7 @@
|
||||
<mapper resource="mybatis/mapper/ArchievementMapper.xml" />
|
||||
<mapper resource="mybatis/mapper/RankingListMapper.xml" />
|
||||
<mapper resource="mybatis/mapper/RewardsMapper.xml" />
|
||||
<mapper resource="mybatis/mapper/ImportBIArchievementDataMapper.xml" />
|
||||
<mapper resource="mybatis/mapper/ImportBIArchievementDataMapper.xml" />
|
||||
<mapper resource="mybatis/mapper/QueryBIArchievementDataMapper.xml" />
|
||||
</mappers>
|
||||
</configuration>
|
Reference in New Issue
Block a user