diff --git a/code/db/pkg/telsale_bi_utils.pck b/code/db/pkg/telsale_bi_utils.pck index 0527b8d..e5471c8 100644 --- a/code/db/pkg/telsale_bi_utils.pck +++ b/code/db/pkg/telsale_bi_utils.pck @@ -8,7 +8,9 @@ CREATE OR REPLACE PACKAGE telsale_bi_utils IS PROCEDURE 清理BI电销坐席续保率统计表; - PROCEDURE 清理BI部门业绩统计表; + PROCEDURE 清理BI部门渗透率跟踪表; + + PROCEDURE 清理BI部门续保率跟踪表; END telsale_bi_utils; / @@ -24,11 +26,16 @@ CREATE OR REPLACE PACKAGE BODY telsale_bi_utils IS EXECUTE IMMEDIATE 'truncate table BI坐席续保率统计表'; END; - PROCEDURE 清理BI部门业绩统计表 IS + PROCEDURE 清理BI部门渗透率跟踪表 IS BEGIN EXECUTE IMMEDIATE 'truncate table BI部门渗透率续保率统计表'; END; + PROCEDURE 清理BI部门续保率跟踪表 IS + BEGIN + EXECUTE IMMEDIATE 'truncate table BI机构当月个车续保率跟踪表'; + END; + BEGIN -- Initialization NULL; diff --git a/code/db/寤鸿〃/BI鏈烘瀯褰撴湀涓溅缁繚鐜囪窡韪〃.sql b/code/db/寤鸿〃/BI鏈烘瀯褰撴湀涓溅缁繚鐜囪窡韪〃.sql new file mode 100644 index 0000000..7ade541 --- /dev/null +++ b/code/db/寤鸿〃/BI鏈烘瀯褰撴湀涓溅缁繚鐜囪窡韪〃.sql @@ -0,0 +1,14 @@ +drop table BI机构当月个车续保率跟踪表; +create table BI机构当月个车续保率跟踪表 +( +"责任部门" varchar2(100), +"机构目标值1(%)" number, +"到期数-全月" integer, +"序时到期数占比(%)" number, +"个车续保率(序时)(%)" number, +"个车续保率(全月)(%)" number, +"环比昨日(%)" number, +"环比上月(%)" number, +"平均提前签单天数" integer, +"环比" number +); diff --git a/code/web/task_schedule/src/views/data/bi/BiDataUploadView.vue b/code/web/task_schedule/src/views/data/bi/BiDataUploadView.vue index 40b7de0..1bc4552 100644 --- a/code/web/task_schedule/src/views/data/bi/BiDataUploadView.vue +++ b/code/web/task_schedule/src/views/data/bi/BiDataUploadView.vue @@ -111,7 +111,11 @@ export default { }, { reportTypeCode: 2, - reportTypeName: "閮ㄩ棬杞﹂潪娓楅忕巼缁繚鐜", + reportTypeName: "閮ㄩ棬杞﹂潪娓楅忕巼", + }, + { + reportTypeCode: 3, + reportTypeName: "褰撴湀涓溅缁繚鐜囪窡韪姤琛ㄣ愭満鏋勩", },], sheetIndex: 0, firstRow: 2, diff --git a/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/mapper/ImportBIArchievementDataMapper.java b/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/mapper/ImportBIArchievementDataMapper.java index 4790398..d87f316 100644 --- a/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/mapper/ImportBIArchievementDataMapper.java +++ b/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/mapper/ImportBIArchievementDataMapper.java @@ -2,16 +2,17 @@ * @Author: Kane * @Date: 2023-10-11 16:47:59 * @LastEditors: Kane - * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/mapper/ImportArchievementDataMapper.java + * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/mapper/ImportBIArchievementDataMapper.java * @Description: * * Copyright (c) ${2023} by Kane, All Rights Reserved. */ package com.cpic.xim.mybatis.mapper; +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.BITelsalerRenewalRateRecord; -import com.cpic.xim.mybatis.pojo.BIDepartmentArchievementRecord; public interface ImportBIArchievementDataMapper { @@ -19,11 +20,15 @@ public interface ImportBIArchievementDataMapper public void insertTelsalerRenewalRateDataToDB( BITelsalerRenewalRateRecord record ); - public void insertDepartmentAttachingRenewalRateDataToDB(BIDepartmentArchievementRecord record); + public void insertDepartmentAttachingRateDataToDB(BIDepartmentAttachingRateRecord record); + public void insertDepartmentRenewalRateDataToDB(BIDepartmentRenewalRateRecord record); + public void cleanTelsalerAttachingRateData(); public void cleanTelsalerRenewalRateData(); - public void cleanDepartmentAttachingRenewalRateData(); + public void cleanDepartmentAttachingRateData(); + + public void cleanDepartmentRenewalRateData(); } \ No newline at end of file diff --git a/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/BIDepartmentArchievementRecord.java b/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/BIDepartmentAttachingRateRecord.java similarity index 97% rename from code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/BIDepartmentArchievementRecord.java rename to code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/BIDepartmentAttachingRateRecord.java index e8924f7..be5146c 100644 --- a/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/BIDepartmentArchievementRecord.java +++ b/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/BIDepartmentAttachingRateRecord.java @@ -9,7 +9,7 @@ */ package com.cpic.xim.mybatis.pojo; -public class BIDepartmentArchievementRecord +public class BIDepartmentAttachingRateRecord { // 閮ㄩ棬 private String departmentName; @@ -36,7 +36,7 @@ public class BIDepartmentArchievementRecord // 瀹㈠潎淇濊垂鐜瘮涓婃湀 private double premiumPerCustomerChange; - public BIDepartmentArchievementRecord( String departmentName, double departmentObject, + public BIDepartmentAttachingRateRecord( String departmentName, double departmentObject, double objectGap, double motoPremium, double motoPremiumProPortion, double nomotoPremium, double attachingRate, double attachingRateChange, double customerHandleRate, double customerHandleRateChange, double premiumPerCustomer, @@ -110,7 +110,7 @@ public class BIDepartmentArchievementRecord return false; if ( getClass() != obj.getClass() ) return false; - BIDepartmentArchievementRecord other = (BIDepartmentArchievementRecord) obj; + BIDepartmentAttachingRateRecord other = (BIDepartmentAttachingRateRecord) obj; if ( departmentName == null ) { if ( other.departmentName != null ) diff --git a/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/BIDepartmentRenewalRateRecord.java b/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/BIDepartmentRenewalRateRecord.java new file mode 100644 index 0000000..38f3a8c --- /dev/null +++ b/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/BIDepartmentRenewalRateRecord.java @@ -0,0 +1,214 @@ +/* + * @Author: Kane + * @Date: 2023-10-24 11:06:29 + * @LastEditors: Kane + * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/BIDepartmentRenewalRateRecord.java + * @Description: BI鏈烘瀯褰撴湀涓溅缁繚鐜囪窡韪〃璁板綍瀵硅薄 + * + * Copyright (c) ${2023} by Kane, All Rights Reserved. + */ +package com.cpic.xim.mybatis.pojo; + +public class BIDepartmentRenewalRateRecord +{ + private String 璐d换閮ㄩ棬; + private double 鏈烘瀯鐩爣鍊; + private int 鍒版湡鏁板叏鏈; + private double 搴忔椂鍒版湡鏁板崰姣; + private double 涓溅缁繚鐜囧簭鏃; + private double 涓溅缁繚鐜囧叏鏈; + private double 鐜瘮鏄ㄦ棩; + private double 鐜瘮涓婃湀; + private int 骞冲潎鎻愬墠绛惧崟澶╂暟; + private double 鐜瘮; + + public BIDepartmentRenewalRateRecord() {} + + public BIDepartmentRenewalRateRecord( String 璐d换閮ㄩ棬, double 鏈烘瀯鐩爣鍊, int 鍒版湡鏁板叏鏈, double 搴忔椂鍒版湡鏁板崰姣, + double 涓溅缁繚鐜囧簭鏃, double 涓溅缁繚鐜囧叏鏈, double 鐜瘮鏄ㄦ棩, double 鐜瘮涓婃湀, int 骞冲潎鎻愬墠绛惧崟澶╂暟, double 鐜瘮 ) + { + this.璐d换閮ㄩ棬 = 璐d换閮ㄩ棬; + this.鏈烘瀯鐩爣鍊 = 鏈烘瀯鐩爣鍊; + this.鍒版湡鏁板叏鏈 = 鍒版湡鏁板叏鏈; + this.搴忔椂鍒版湡鏁板崰姣 = 搴忔椂鍒版湡鏁板崰姣; + this.涓溅缁繚鐜囧簭鏃 = 涓溅缁繚鐜囧簭鏃; + this.涓溅缁繚鐜囧叏鏈 = 涓溅缁繚鐜囧叏鏈; + this.鐜瘮鏄ㄦ棩 = 鐜瘮鏄ㄦ棩; + this.鐜瘮涓婃湀 = 鐜瘮涓婃湀; + this.骞冲潎鎻愬墠绛惧崟澶╂暟 = 骞冲潎鎻愬墠绛惧崟澶╂暟; + this.鐜瘮 = 鐜瘮; + } + + public String get璐d换閮ㄩ棬() + { + return 璐d换閮ㄩ棬; + } + + public void set璐d换閮ㄩ棬( String 璐d换閮ㄩ棬 ) + { + this.璐d换閮ㄩ棬 = 璐d换閮ㄩ棬; + } + + public double get鏈烘瀯鐩爣鍊() + { + return 鏈烘瀯鐩爣鍊; + } + + public void set鏈烘瀯鐩爣鍊( double 鏈烘瀯鐩爣鍊 ) + { + this.鏈烘瀯鐩爣鍊 = 鏈烘瀯鐩爣鍊; + } + + public int get鍒版湡鏁板叏鏈() + { + return 鍒版湡鏁板叏鏈; + } + + public void set鍒版湡鏁板叏鏈( int 鍒版湡鏁板叏鏈 ) + { + this.鍒版湡鏁板叏鏈 = 鍒版湡鏁板叏鏈; + } + + public double get搴忔椂鍒版湡鏁板崰姣() + { + return 搴忔椂鍒版湡鏁板崰姣; + } + + public void set搴忔椂鍒版湡鏁板崰姣( double 搴忔椂鍒版湡鏁板崰姣 ) + { + this.搴忔椂鍒版湡鏁板崰姣 = 搴忔椂鍒版湡鏁板崰姣; + } + + public double get涓溅缁繚鐜囧簭鏃() + { + return 涓溅缁繚鐜囧簭鏃; + } + + public void set涓溅缁繚鐜囧簭鏃( double 涓溅缁繚鐜囧簭鏃 ) + { + this.涓溅缁繚鐜囧簭鏃 = 涓溅缁繚鐜囧簭鏃; + } + + public double get涓溅缁繚鐜囧叏鏈() + { + return 涓溅缁繚鐜囧叏鏈; + } + + public void set涓溅缁繚鐜囧叏鏈( double 涓溅缁繚鐜囧叏鏈 ) + { + this.涓溅缁繚鐜囧叏鏈 = 涓溅缁繚鐜囧叏鏈; + } + + public double get鐜瘮鏄ㄦ棩() + { + return 鐜瘮鏄ㄦ棩; + } + + public void set鐜瘮鏄ㄦ棩( double 鐜瘮鏄ㄦ棩 ) + { + this.鐜瘮鏄ㄦ棩 = 鐜瘮鏄ㄦ棩; + } + + public double get鐜瘮涓婃湀() + { + return 鐜瘮涓婃湀; + } + + public void set鐜瘮涓婃湀( double 鐜瘮涓婃湀 ) + { + this.鐜瘮涓婃湀 = 鐜瘮涓婃湀; + } + + public int get骞冲潎鎻愬墠绛惧崟澶╂暟() + { + return 骞冲潎鎻愬墠绛惧崟澶╂暟; + } + + public void set骞冲潎鎻愬墠绛惧崟澶╂暟( int 骞冲潎鎻愬墠绛惧崟澶╂暟 ) + { + this.骞冲潎鎻愬墠绛惧崟澶╂暟 = 骞冲潎鎻愬墠绛惧崟澶╂暟; + } + + public double get鐜瘮() + { + return 鐜瘮; + } + + public void set鐜瘮( double 鐜瘮 ) + { + this.鐜瘮 = 鐜瘮; + } + + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + result = prime * result + ((璐d换閮ㄩ棬 == null) ? 0 : 璐d换閮ㄩ棬.hashCode()); + long temp; + temp = Double.doubleToLongBits( 鏈烘瀯鐩爣鍊 ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + result = prime * result + 鍒版湡鏁板叏鏈; + temp = Double.doubleToLongBits( 搴忔椂鍒版湡鏁板崰姣 ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( 涓溅缁繚鐜囧簭鏃 ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( 涓溅缁繚鐜囧叏鏈 ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( 鐜瘮鏄ㄦ棩 ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( 鐜瘮涓婃湀 ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + result = prime * result + 骞冲潎鎻愬墠绛惧崟澶╂暟; + temp = Double.doubleToLongBits( 鐜瘮 ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + return result; + } + + @Override + public boolean equals( Object obj ) + { + if ( this == obj ) + return true; + if ( obj == null ) + return false; + if ( getClass() != obj.getClass() ) + return false; + BIDepartmentRenewalRateRecord other = (BIDepartmentRenewalRateRecord) obj; + if ( 璐d换閮ㄩ棬 == null ) + { + if ( other.璐d换閮ㄩ棬 != null ) + return false; + } + else if ( !璐d换閮ㄩ棬.equals( other.璐d换閮ㄩ棬 ) ) + return false; + if ( Double.doubleToLongBits( 鏈烘瀯鐩爣鍊 ) != Double.doubleToLongBits( other.鏈烘瀯鐩爣鍊 ) ) + return false; + if ( 鍒版湡鏁板叏鏈 != other.鍒版湡鏁板叏鏈 ) + return false; + if ( Double.doubleToLongBits( 搴忔椂鍒版湡鏁板崰姣 ) != Double.doubleToLongBits( other.搴忔椂鍒版湡鏁板崰姣 ) ) + return false; + if ( Double.doubleToLongBits( 涓溅缁繚鐜囧簭鏃 ) != Double.doubleToLongBits( other.涓溅缁繚鐜囧簭鏃 ) ) + return false; + if ( Double.doubleToLongBits( 涓溅缁繚鐜囧叏鏈 ) != Double.doubleToLongBits( other.涓溅缁繚鐜囧叏鏈 ) ) + return false; + if ( Double.doubleToLongBits( 鐜瘮鏄ㄦ棩 ) != Double.doubleToLongBits( other.鐜瘮鏄ㄦ棩 ) ) + return false; + if ( Double.doubleToLongBits( 鐜瘮涓婃湀 ) != Double.doubleToLongBits( other.鐜瘮涓婃湀 ) ) + return false; + if ( 骞冲潎鎻愬墠绛惧崟澶╂暟 != other.骞冲潎鎻愬墠绛惧崟澶╂暟 ) + return false; + if ( Double.doubleToLongBits( 鐜瘮 ) != Double.doubleToLongBits( other.鐜瘮 ) ) + return false; + return true; + } + + @Override + public String toString() + { + return "BIDepartmentRenewalRateRecord [璐d换閮ㄩ棬=" + 璐d换閮ㄩ棬 + ", 鏈烘瀯鐩爣鍊=" + 鏈烘瀯鐩爣鍊 + ", 鍒版湡鏁板叏鏈=" + + 鍒版湡鏁板叏鏈 + ", 搴忔椂鍒版湡鏁板崰姣=" + 搴忔椂鍒版湡鏁板崰姣 + ", 涓溅缁繚鐜囧簭鏃=" + 涓溅缁繚鐜囧簭鏃 + ", 涓溅缁繚鐜囧叏鏈=" + 涓溅缁繚鐜囧叏鏈 + + ", 鐜瘮鏄ㄦ棩=" + 鐜瘮鏄ㄦ棩 + ", 鐜瘮涓婃湀=" + 鐜瘮涓婃湀 + ", 骞冲潎鎻愬墠绛惧崟澶╂暟=" + 骞冲潎鎻愬墠绛惧崟澶╂暟 + ", 鐜瘮=" + 鐜瘮 + + "]"; + } +} diff --git a/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/utils/data/ImportBIExcelData.java b/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/utils/data/ImportBIExcelData.java index 4c0ecaf..2bd3894 100644 --- a/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/utils/data/ImportBIExcelData.java +++ b/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/utils/data/ImportBIExcelData.java @@ -21,7 +21,8 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.cpic.xim.mybatis.pojo.BIDepartmentArchievementRecord; +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.BITelsalerRenewalRateRecord; import com.cpic.xim.utils.poi.MyPOIUtils; @@ -41,10 +42,14 @@ public final class ImportBIExcelData { "璐d换浜", "鏈烘瀯鐩爣鍊1(%)", "鍒版湡鏁-鍏ㄦ湀", "搴忔椂鍒版湡鏁板崰姣(%)", "涓溅缁繚鐜囷紙搴忔椂锛(%)", "涓溅缁繚鐜囷紙鍏ㄦ湀锛(%)", "鐜瘮鏄ㄦ棩(%)", "鐜瘮涓婃湀(%)"}; - private static String[] DepartmentArchievementExcelTitle = new String[] + private static String[] DepartmentAttachingRateExcelTitle = new String[] { "閮ㄩ棬", "鐩爣鍊-鏈烘瀯", "鐩爣宸窛", "杞﹂櫓淇濊垂(涓)", "杞﹂櫓淇濊垂鍗犳瘮", "闈炶溅淇濊垂(涓)", "褰撴湀淇濊垂娓楅忕巼", "淇濊垂娓楅忕巼鐜瘮涓婃湀", "褰撴湀瀹㈡埛娓楅忕巼", "瀹㈡埛娓楅忕巼鐜瘮涓婃湀", "褰撴湀杞﹂潪瀹㈠潎淇濊垂", "瀹㈠潎淇濊垂鐜瘮涓婃湀"}; + private static String[] DepartmentRenewalRateExcelTitle = new String[] + { "璐d换閮ㄩ棬", "鏈烘瀯鐩爣鍊1(%)", "鍒版湡鏁-鍏ㄦ湀", "搴忔椂鍒版湡鏁板崰姣(%)", "涓溅缁繚鐜囷紙搴忔椂锛(%)", "涓溅缁繚鐜囷紙鍏ㄦ湀锛(%)", "鐜瘮鏄ㄦ棩(%)", + "鐜瘮涓婃湀(%)", "骞冲潎鎻愬墠绛惧崟澶╂暟", "鐜瘮",}; + /** * 鐢ㄤ簬閫氳繃瀵规瘮鏍囬琛屽垽鏂璭xcel鏂囦欢鏍煎紡鐨勫嚱鏁般 * @param sheet @@ -134,7 +139,7 @@ public final class ImportBIExcelData // 鍏堥獙璇佹牸寮忥紝涓嶅灏辨姏鍑洪敊璇 if ( !checkExcelFormat( sheet, null, 0, TelsalerAttachingRateExcelTitle, 0 ) ) { - throw new InvalidFormatException("Excel鏂囦欢鏍煎紡閿欒锛岃妫鏌ユ姤琛ㄥ唴瀹癸紒" ); + throw new InvalidFormatException( "Excel鏂囦欢鏍煎紡閿欒锛岃妫鏌ユ姤琛ㄥ唴瀹癸紒" ); } for ( Row row : sheet ) @@ -172,9 +177,11 @@ public final class ImportBIExcelData // 褰撴湀瀹㈡埛娓楅忕巼 double customerHandleRateCell = MyPOIUtils.getNumbericCellValue( row, 7 ) * 100; // 瀹㈡埛娓楅忕巼鐜瘮涓婃湀 - double customerHandleRateChangeCell = MyPOIUtils.getNumbericCellValue( row, 8 ) * 100; + double customerHandleRateChangeCell = + MyPOIUtils.getNumbericCellValue( row, 8 ) * 100; // 褰撴湀杞﹂潪瀹㈠潎淇濊垂 - double noMotoPremiumPerCustomerCell = MyPOIUtils.getNumbericCellValue( row, 9 ) * 100; + double noMotoPremiumPerCustomerCell = + MyPOIUtils.getNumbericCellValue( row, 9 ) * 100; // 瀹㈠潎淇濊垂鐜瘮涓婃湀 double noMotoPremiumPerCustomerChangeCell = MyPOIUtils.getNumbericCellValue( row, 10 ) * 100; @@ -242,9 +249,9 @@ public final class ImportBIExcelData sheet = wb.getSheetAt( sheetIndex ); int rowIndex = 0; - if (!checkExcelFormat( sheet, null, 0, TelSalerRenewalRateExcelTitle, 0 )) + if ( !checkExcelFormat( sheet, null, 0, TelSalerRenewalRateExcelTitle, 0 ) ) { - throw new InvalidFormatException("鏍煎紡閿欒锛岃妫鏌ユ姤琛ㄥ唴瀹癸紒"); + throw new InvalidFormatException( "鏍煎紡閿欒锛岃妫鏌ユ姤琛ㄥ唴瀹癸紒" ); } for ( Row row : sheet ) @@ -305,10 +312,20 @@ public final class ImportBIExcelData return records; } - public static ArrayList importBIDepartmentArchievementRecords( - String filePath, int sheetIndex, int firstRow ) throws IOException, InvalidFormatException + /** + * 璇诲彇BI鏈烘瀯褰撴湀涓溅缁繚鐜囪窡韪〃 + * @param filePath + * @param sheetIndex + * @param firstRow + * @return + * @throws IOException + * @throws InvalidFormatException + */ + public static ArrayList importBIDepartmentAttachingRateRecordsFromXlsx( + String filePath, int sheetIndex, int firstRow ) + throws IOException, InvalidFormatException { - ArrayList records = new ArrayList<>( 5 ); + ArrayList records = new ArrayList<>( 5 ); Workbook wb = null; @@ -319,9 +336,9 @@ public final class ImportBIExcelData Sheet sheet = wb.getSheetAt( sheetIndex ); int rowIndex = 0; - if (!checkExcelFormat( sheet, null, 0, DepartmentArchievementExcelTitle, 0 )) + if ( !checkExcelFormat( sheet, null, 0, DepartmentAttachingRateExcelTitle, 0 ) ) { - throw new InvalidFormatException("Excel鏂囦欢鏍煎紡閿欒锛岃妫鏌ユ姤琛ㄥ唴瀹癸紒"); + throw new InvalidFormatException( "Excel鏂囦欢鏍煎紡閿欒锛岃妫鏌ユ姤琛ㄥ唴瀹癸紒" ); } for ( Row row : sheet ) @@ -351,11 +368,13 @@ public final class ImportBIExcelData double attachingRate = MyPOIUtils.getNumbericCellValue( row, 6 ) * 100; double attachingRateChange = MyPOIUtils.getNumbericCellValue( row, 7 ) * 100; double customerHandleRate = MyPOIUtils.getNumbericCellValue( row, 8 ) * 100; - double customerHandleRateChange = MyPOIUtils.getNumbericCellValue( row, 9 ) * 100; + double customerHandleRateChange = + MyPOIUtils.getNumbericCellValue( row, 9 ) * 100; double premiumPerCustomer = MyPOIUtils.getNumbericCellValue( row, 10 ) * 100; - double premiumPerCustomerChange = MyPOIUtils.getNumbericCellValue( row, 11 ) * 100; + double premiumPerCustomerChange = + MyPOIUtils.getNumbericCellValue( row, 11 ) * 100; - BIDepartmentArchievementRecord record = new BIDepartmentArchievementRecord( + BIDepartmentAttachingRateRecord record = new BIDepartmentAttachingRateRecord( departmentName, departmentObject, objectGap, motoPremium, motoPremiumProPortion, nomotoPremium, attachingRate, attachingRateChange, customerHandleRate, customerHandleRateChange, @@ -390,4 +409,84 @@ public final class ImportBIExcelData return records; } + + public static ArrayList importBIDepartmentRenewalRateRecordsFromXlsx( + String filePath, int sheetIndex, int firstRow ) + throws IOException, InvalidFormatException + { + ArrayList records = new ArrayList<>( 20 ); + + Workbook wb = null; + + try + { + wb = WorkbookFactory.create( new File( filePath ) ); + + Sheet sheet = wb.getSheetAt( sheetIndex ); + int rowIndex = 0; + + if ( !checkExcelFormat( sheet, null, 0, DepartmentRenewalRateExcelTitle, 0 ) ) + { + throw new InvalidFormatException( "Excel鏂囦欢鏍煎紡閿欒锛岃妫鏌ユ姤琛ㄥ唴瀹癸紒" ); + } + + for ( Row row : sheet ) + { + rowIndex = row.getRowNum(); + + if ( rowIndex < firstRow ) + { + continue; + } + + try + { + String 璐d换閮ㄩ棬 = MyPOIUtils.getStringCellValue( row, 0 ); + + // 閮ㄩ棬涓虹┖鎴栬呮槸鍚堣琛岋紝灏辫烦杩 + if ( 璐d换閮ㄩ棬.isEmpty() || 璐d换閮ㄩ棬.equals( "鍚堣" ) ) + { + continue; + } + + double 鏈烘瀯鐩爣鍊 = MyPOIUtils.getNumbericCellValue( row, 1 ) * 100; + int 鍒版湡鏁板叏鏈 = (int) MyPOIUtils.getNumbericCellValue( row, 2 ); + double 搴忔椂鍒版湡鏁板崰姣 = MyPOIUtils.getNumbericCellValue( row, 3 ) * 100; + double 涓溅缁繚鐜囧簭鏃 = MyPOIUtils.getNumbericCellValue( row, 4 ) * 100; + double 涓溅缁繚鐜囧叏鏈 = MyPOIUtils.getNumbericCellValue( row, 5 ) * 100; + double 鐜瘮鏄ㄦ棩 = MyPOIUtils.getNumbericCellValue( row, 6 ) * 100; + double 鐜瘮涓婃湀 = MyPOIUtils.getNumbericCellValue( row, 7 ) * 100; + int 骞冲潎鎻愬墠绛惧崟澶╂暟 = (int) MyPOIUtils.getNumbericCellValue( row, 8 ); + double 鐜瘮 = MyPOIUtils.getNumbericCellValue( row, 9 ) * 100; + + BIDepartmentRenewalRateRecord record = new BIDepartmentRenewalRateRecord( 璐d换閮ㄩ棬, + 鏈烘瀯鐩爣鍊, 鍒版湡鏁板叏鏈, 搴忔椂鍒版湡鏁板崰姣, 涓溅缁繚鐜囧簭鏃, 涓溅缁繚鐜囧叏鏈, 鐜瘮鏄ㄦ棩, 鐜瘮涓婃湀, 骞冲潎鎻愬墠绛惧崟澶╂暟, 鐜瘮 ); + + records.add( record ); + } + catch ( NullPointerException error ) + { + String message = "绗" + String.valueOf( rowIndex ) + "琛屽嚭鐜癗ullPointerException寮傚父"; + + logger.error( message, error ); + } + } + } + finally + { + if ( wb != null ) + { + try + { + wb.close(); + } + catch ( Exception error ) + { + error.printStackTrace(); + } + } + } + + return records; + } } diff --git a/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataController.java b/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataController.java index e7d5312..dd3e180 100644 --- a/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataController.java +++ b/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataController.java @@ -23,7 +23,8 @@ 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.ImportBIArchievementDataMapper; -import com.cpic.xim.mybatis.pojo.BIDepartmentArchievementRecord; +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.BITelsalerRenewalRateRecord; import com.cpic.xim.mybatis.utils.MybatisUtils; @@ -57,14 +58,18 @@ public class ImportBIDataController { importedCount = importBITeslsalerRenewalRate( filePath, sheetIndex, firstRow ); } - else if ( type == ReportType.DepartmentAttachingRenewalRateReport ) + else if ( type == ReportType.DepartmentAttachingRateReport ) { - importedCount = importBIDepartmentArchievement( filePath, sheetIndex, firstRow ); + importedCount = importBIDepartmentAttachingRate( filePath, sheetIndex, firstRow ); + } + else if ( type == ReportType.DepartmentRenewalRateReport ) + { + importedCount = importBIDepartmentRenewalRate( filePath, sheetIndex, firstRow ); } - response.setImportedCount(importedCount); - response.setSuccess(true); - response.setMessage("瀵煎叆鎴愬姛"); + response.setImportedCount( importedCount ); + response.setSuccess( true ); + response.setMessage( "瀵煎叆鎴愬姛" ); } catch ( IOException error ) { @@ -103,9 +108,8 @@ public class ImportBIDataController try { - ArrayList records = - ImportBIExcelData.importBITelsalerAttachingRateRecordFromXlsx( filePath, - sheetIndex, firstRow ); + ArrayList records = ImportBIExcelData + .importBITelsalerAttachingRateRecordFromXlsx( filePath, sheetIndex, firstRow ); session = MybatisUtils.getSqlSessionBatch(); ImportBIArchievementDataMapper mapper = @@ -134,8 +138,8 @@ public class ImportBIDataController return importedCount; } - private static int importBITeslsalerRenewalRate( String filePath, int sheetIndex, - int firstRow ) throws PersistenceException, IOException, InvalidFormatException + private static int importBITeslsalerRenewalRate( String filePath, int sheetIndex, int firstRow ) + throws PersistenceException, IOException, InvalidFormatException { ArrayList records = null; SqlSession session = null; @@ -174,26 +178,26 @@ public class ImportBIDataController return importedCount; } - private static int importBIDepartmentArchievement( String filePath, int sheetIndex, + private static int importBIDepartmentAttachingRate( String filePath, int sheetIndex, int firstRow ) throws PersistenceException, IOException, InvalidFormatException { - ArrayList records = null; + ArrayList records = null; SqlSession session = null; ImportBIArchievementDataMapper mapper = null; int importedCount = 0; try { - records = ImportBIExcelData.importBIDepartmentArchievementRecords( filePath, sheetIndex, - firstRow ); + records = ImportBIExcelData.importBIDepartmentAttachingRateRecordsFromXlsx( filePath, + sheetIndex, firstRow ); session = MybatisUtils.getSqlSessionBatch(); mapper = session.getMapper( ImportBIArchievementDataMapper.class ); - mapper.cleanDepartmentAttachingRenewalRateData(); + mapper.cleanDepartmentAttachingRateData(); - for ( BIDepartmentArchievementRecord record : records ) + for ( BIDepartmentAttachingRateRecord record : records ) { - mapper.insertDepartmentAttachingRenewalRateDataToDB( record ); + mapper.insertDepartmentAttachingRateDataToDB( record ); importedCount++; } @@ -205,6 +209,47 @@ public class ImportBIDataController { session.rollback(); } + + throw error; + } + + return importedCount; + } + + private static int importBIDepartmentRenewalRate( String filePath, int sheetIndex, int firstRow ) + throws PersistenceException, IOException, InvalidFormatException + { + + ArrayList records = null; + SqlSession session = null; + ImportBIArchievementDataMapper mapper = null; + int importedCount = 0; + + try + { + records = ImportBIExcelData.importBIDepartmentRenewalRateRecordsFromXlsx(filePath, sheetIndex, firstRow); + session = MybatisUtils.getSqlSessionBatch(); + mapper = session.getMapper(ImportBIArchievementDataMapper.class); + + mapper.cleanDepartmentRenewalRateData(); + + for ( BIDepartmentRenewalRateRecord record : records ) + { + mapper.insertDepartmentRenewalRateDataToDB(record); + + importedCount++; + } + + session.commit(); + } + catch ( Exception error) + { + if ( session != null ) + { + session.rollback(); + } + + throw error; } return importedCount; diff --git a/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataRequest.java b/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataRequest.java index 538fea2..85d7322 100644 --- a/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataRequest.java +++ b/code/鍚庣/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataRequest.java @@ -16,7 +16,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class ImportBIDataRequest { public enum ReportType { - TelsalerAttachingRateReport, TelsalerRenewalRateReport, DepartmentAttachingRenewalRateReport + TelsalerAttachingRateReport, TelsalerRenewalRateReport, DepartmentAttachingRateReport, DepartmentRenewalRateReport }; // 瀵煎叆鏂囦欢鐨勮矾寰 diff --git a/code/鍚庣/desktop_archievement_backend/src/main/resources/mybatis/mapper/ImportBIArchievementDataMapper.xml b/code/鍚庣/desktop_archievement_backend/src/main/resources/mybatis/mapper/ImportBIArchievementDataMapper.xml index 48c820a..c3287cc 100644 --- a/code/鍚庣/desktop_archievement_backend/src/main/resources/mybatis/mapper/ImportBIArchievementDataMapper.xml +++ b/code/鍚庣/desktop_archievement_backend/src/main/resources/mybatis/mapper/ImportBIArchievementDataMapper.xml @@ -16,7 +16,7 @@ #{涓溅缁繚鐜囧簭鏃秨,#{涓溅缁繚鐜囧叏鏈坿,#{鐜瘮鏄ㄦ棩},#{鐜瘮涓婃湀}) - + insert into BI閮ㄩ棬娓楅忕巼缁繚鐜囩粺璁¤〃 ( 閮ㄩ棬,"鐩爣鍊-鏈烘瀯",鐩爣宸窛,"杞﹂櫓淇濊垂", 杞﹂櫓淇濊垂鍗犳瘮,"闈炶溅淇濊垂",褰撴湀淇濊垂娓楅忕巼,淇濊垂娓楅忕巼鐜瘮涓婃湀,褰撴湀瀹㈡埛娓楅忕巼, 瀹㈡埛娓楅忕巼鐜瘮涓婃湀,褰撴湀杞﹂潪瀹㈠潎淇濊垂,瀹㈠潎淇濊垂鐜瘮涓婃湀) @@ -25,13 +25,25 @@ #{customerHandleRate},#{customerHandleRateChange},#{premiumPerCustomer},#{premiumPerCustomerChange} ) + + insert into BI鏈烘瀯褰撴湀涓溅缁繚鐜囪窡韪〃( "璐d换閮ㄩ棬","鏈烘瀯鐩爣鍊1(%)","鍒版湡鏁-鍏ㄦ湀" ,"搴忔椂鍒版湡鏁板崰姣(%)","涓溅缁繚鐜囷紙搴忔椂锛(%)", + "涓溅缁繚鐜囷紙鍏ㄦ湀锛(%)","鐜瘮鏄ㄦ棩(%)","鐜瘮涓婃湀(%)","骞冲潎鎻愬墠绛惧崟澶╂暟","鐜瘮") + values (#{璐d换閮ㄩ棬},#{鏈烘瀯鐩爣鍊紏,#{鍒版湡鏁板叏鏈坿,#{搴忔椂鍒版湡鏁板崰姣攠, + #{涓溅缁繚鐜囧簭鏃秨,#{涓溅缁繚鐜囧叏鏈坿,#{鐜瘮鏄ㄦ棩},#{鐜瘮涓婃湀}, + #{骞冲潎鎻愬墠绛惧崟澶╂暟},#{鐜瘮}) + + - + call telsale_bi_utils.娓呯悊BI閮ㄩ棬娓楅忕巼璺熻釜琛() + + + \ No newline at end of file diff --git a/code/鍚庣/desktop_archievement_backend/src/test/java/com/cpic/xim/DesktopArchievement/test/BatchInsertTest.java b/code/鍚庣/desktop_archievement_backend/src/test/java/com/cpic/xim/DesktopArchievement/test/BatchInsertTest.java index 0eac61e..af1f4b2 100644 --- a/code/鍚庣/desktop_archievement_backend/src/test/java/com/cpic/xim/DesktopArchievement/test/BatchInsertTest.java +++ b/code/鍚庣/desktop_archievement_backend/src/test/java/com/cpic/xim/DesktopArchievement/test/BatchInsertTest.java @@ -109,22 +109,22 @@ public class BatchInsertTest String filePath = "D:/develop/cpicxim/deskop_task_schedule/鏁版嵁/娴嬭瘯鐢/BI閮ㄩ棬娓楅忕巼缁繚鐜.xlsx"; String sheetName = "閮ㄩ棬"; - ArrayList records = null; + ArrayList records = null; SqlSession session = null; ImportBIArchievementDataMapper mapper = null; try { records = - ImportBIExcelData.importBIDepartmentArchievementRecords( filePath, 0, 1 ); + ImportBIExcelData.importBIDepartmentAttachingRateRecordsFromXlsx( filePath, 0, 1 ); session = MybatisUtils.getSqlSessionBatch(); mapper = session.getMapper( ImportBIArchievementDataMapper.class ); - mapper.cleanDepartmentAttachingRenewalRateData(); + mapper.cleanDepartmentAttachingRateData(); - for ( BIDepartmentArchievementRecord record : records ) + for ( BIDepartmentAttachingRateRecord record : records ) { - mapper.insertDepartmentAttachingRenewalRateDataToDB( record ); + mapper.insertDepartmentAttachingRateDataToDB( record ); } session.commit(); diff --git a/鏁版嵁/娴嬭瘯鐢/褰撴湀涓溅缁繚鐜囪窡韪姤琛ㄣ愭満鏋勩.xlsx b/鏁版嵁/娴嬭瘯鐢/褰撴湀涓溅缁繚鐜囪窡韪姤琛ㄣ愭満鏋勩.xlsx new file mode 100644 index 0000000..4d5ae88 Binary files /dev/null and b/鏁版嵁/娴嬭瘯鐢/褰撴湀涓溅缁繚鐜囪窡韪姤琛ㄣ愭満鏋勩.xlsx differ