From be1a5ffb00659261b7a6799e249bd3fc54f0048b Mon Sep 17 00:00:00 2001 From: Kane Wang Date: Tue, 10 Oct 2023 19:05:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E4=B8=A4=E4=B8=AA=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E8=AF=BB=E5=8F=96=E5=87=BD=E6=95=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/DepartmentArchievementRecord.java | 275 ++++++++++++++++++ .../utils/data/TelsalerArchievementData.java | 87 +++++- 2 files changed, 359 insertions(+), 3 deletions(-) create mode 100644 code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/DepartmentArchievementRecord.java diff --git a/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/DepartmentArchievementRecord.java b/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/DepartmentArchievementRecord.java new file mode 100644 index 0000000..63f8a0a --- /dev/null +++ b/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/DepartmentArchievementRecord.java @@ -0,0 +1,275 @@ +/* + * @Author: Kane + * @Date: 2023-10-10 14:50:55 + * @LastEditors: Kane + * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/DepartmentArchievementRecord.java + * @Description: + * + * Copyright (c) ${2023} by Kane, All Rights Reserved. + */ +package com.cpic.xim.mybatis.pojo; + +public class DepartmentArchievementRecord +{ + // 部门 + private String departmentName; + // 目标值-机构 + private double departmentObject; + // 目标差距 + private double objectGap; + // 车险保费(万) + private double motoPremium; + // 车险保费占比 + private double motoPremiumProPortion; + // 非车保费(万) + private double nomotoPremium; + // 当月保费渗透率 + private double attachingRate; + // 保费渗透率环比上月 + private double attachingRateChange; + // 当月客户渗透率 + private double customerHandleRate; + // 客户渗透率环比上月 + private double customerHandleRateChange; + // 当月车非客均保费 + private double premiumPerCustomer; + // 客均保费环比上月 + private double premiumPerCustomerChange; + + public DepartmentArchievementRecord( String departmentName, double departmentObject, + double objectGap, double motoPremium, double motoPremiumProPortion, + double nomotoPremium, double attachingRate, double attachingRateChange, + double customerHandleRate, double customerHandleRateChange, double premiumPerCustomer, + double premiumPerCustomerChange ) + { + this.departmentName = departmentName; + this.departmentObject = departmentObject; + this.objectGap = objectGap; + this.motoPremium = motoPremium; + this.motoPremiumProPortion = motoPremiumProPortion; + this.nomotoPremium = nomotoPremium; + this.attachingRate = attachingRate; + this.attachingRateChange = attachingRateChange; + this.customerHandleRate = customerHandleRate; + this.customerHandleRateChange = customerHandleRateChange; + this.premiumPerCustomer = premiumPerCustomer; + this.premiumPerCustomerChange = premiumPerCustomerChange; + } + + @Override + public String toString() + { + return "DepartmentArchievementRecord [departmentName=" + departmentName + + ", departmentObject=" + departmentObject + ", objectGap=" + objectGap + + ", motoPremium=" + motoPremium + ", motoPremiumProPortion=" + + motoPremiumProPortion + ", nomotoPremium=" + nomotoPremium + ", attachingRate=" + + attachingRate + ", attachingRateChange=" + attachingRateChange + + ", customerHandleRate=" + customerHandleRate + ", customerHandleRateChange=" + + customerHandleRateChange + ", premiumPerCustomer=" + premiumPerCustomer + + ", premiumPerCustomerChange=" + premiumPerCustomerChange + "]"; + } + + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + result = prime * result + ((departmentName == null) ? 0 : departmentName.hashCode()); + long temp; + temp = Double.doubleToLongBits( departmentObject ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( objectGap ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( motoPremium ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( motoPremiumProPortion ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( nomotoPremium ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( attachingRate ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( attachingRateChange ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( customerHandleRate ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( customerHandleRateChange ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( premiumPerCustomer ); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits( premiumPerCustomerChange ); + 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; + DepartmentArchievementRecord other = (DepartmentArchievementRecord) obj; + if ( departmentName == null ) + { + if ( other.departmentName != null ) + return false; + } + else if ( !departmentName.equals( other.departmentName ) ) + return false; + if ( Double.doubleToLongBits( departmentObject ) != Double + .doubleToLongBits( other.departmentObject ) ) + return false; + if ( Double.doubleToLongBits( objectGap ) != Double.doubleToLongBits( other.objectGap ) ) + return false; + if ( Double.doubleToLongBits( motoPremium ) != Double + .doubleToLongBits( other.motoPremium ) ) + return false; + if ( Double.doubleToLongBits( motoPremiumProPortion ) != Double + .doubleToLongBits( other.motoPremiumProPortion ) ) + return false; + if ( Double.doubleToLongBits( nomotoPremium ) != Double + .doubleToLongBits( other.nomotoPremium ) ) + return false; + if ( Double.doubleToLongBits( attachingRate ) != Double + .doubleToLongBits( other.attachingRate ) ) + return false; + if ( Double.doubleToLongBits( attachingRateChange ) != Double + .doubleToLongBits( other.attachingRateChange ) ) + return false; + if ( Double.doubleToLongBits( customerHandleRate ) != Double + .doubleToLongBits( other.customerHandleRate ) ) + return false; + if ( Double.doubleToLongBits( customerHandleRateChange ) != Double + .doubleToLongBits( other.customerHandleRateChange ) ) + return false; + if ( Double.doubleToLongBits( premiumPerCustomer ) != Double + .doubleToLongBits( other.premiumPerCustomer ) ) + return false; + if ( Double.doubleToLongBits( premiumPerCustomerChange ) != Double + .doubleToLongBits( other.premiumPerCustomerChange ) ) + return false; + return true; + } + + public String getDepartmentName() + { + return departmentName; + } + + public void setDepartmentName( String departmentName ) + { + this.departmentName = departmentName; + } + + public double getDepartmentObject() + { + return departmentObject; + } + + public void setDepartmentObject( double departmentObject ) + { + this.departmentObject = departmentObject; + } + + public double getObjectGap() + { + return objectGap; + } + + public void setObjectGap( double objectGap ) + { + this.objectGap = objectGap; + } + + public double getMotoPremium() + { + return motoPremium; + } + + public void setMotoPremium( double motoPremium ) + { + this.motoPremium = motoPremium; + } + + public double getMotoPremiumProPortion() + { + return motoPremiumProPortion; + } + + public void setMotoPremiumProPortion( double motoPremiumProPortion ) + { + this.motoPremiumProPortion = motoPremiumProPortion; + } + + public double getNomotoPremium() + { + return nomotoPremium; + } + + public void setNomotoPremium( double nomotoPremium ) + { + this.nomotoPremium = nomotoPremium; + } + + public double getAttachingRate() + { + return attachingRate; + } + + public void setAttachingRate( double attachingRate ) + { + this.attachingRate = attachingRate; + } + + public double getAttachingRateChange() + { + return attachingRateChange; + } + + public void setAttachingRateChange( double attachingRateChange ) + { + this.attachingRateChange = attachingRateChange; + } + + public double getCustomerHandleRate() + { + return customerHandleRate; + } + + public void setCustomerHandleRate( double customerHandleRate ) + { + this.customerHandleRate = customerHandleRate; + } + + public double getCustomerHandleRateChange() + { + return customerHandleRateChange; + } + + public void setCustomerHandleRateChange( double customerHandleRateChange ) + { + this.customerHandleRateChange = customerHandleRateChange; + } + + public double getPremiumPerCustomer() + { + return premiumPerCustomer; + } + + public void setPremiumPerCustomer( double premiumPerCustomer ) + { + this.premiumPerCustomer = premiumPerCustomer; + } + + public double getPremiumPerCustomerChange() + { + return premiumPerCustomerChange; + } + + public void setPremiumPerCustomerChange( double premiumPerCustomerChange ) + { + this.premiumPerCustomerChange = premiumPerCustomerChange; + } +} diff --git a/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/utils/data/TelsalerArchievementData.java b/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/utils/data/TelsalerArchievementData.java index 8c7b360..cc4a02f 100644 --- a/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/utils/data/TelsalerArchievementData.java +++ b/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/utils/data/TelsalerArchievementData.java @@ -183,9 +183,10 @@ public class TelsalerArchievementData double 环比昨日 = MyPOIUtils.getNumbericCellValue( row, 6 ); double 环比上月 = MyPOIUtils.getNumbericCellValue( row, 7 ); - TelsalerRenewalRateRecord record = new TelsalerRenewalRateRecord(责任人, 机构目标值, 到期数全月, 序时到期数占比, 个车续保率序时, 个车续保率全月, 环比昨日, 环比上月); - - records.add(record); + TelsalerRenewalRateRecord record = new TelsalerRenewalRateRecord( 责任人, 机构目标值, + 到期数全月, 序时到期数占比, 个车续保率序时, 个车续保率全月, 环比昨日, 环比上月 ); + + records.add( record ); } catch ( NullPointerException error ) { @@ -212,4 +213,84 @@ public class TelsalerArchievementData return records; } + + public static ArrayList importDepartmentArchievementRecords( + String filePath, String sheetName, boolean hasCaptionRow ) throws IOException + { + ArrayList records = new ArrayList<>( 5 ); + + Workbook wb = null; + + try + { + wb = WorkbookFactory.create( new File( filePath ) ); + + Sheet sheet = wb.getSheet( sheetName ); + int rowIndex = 0; + + for ( Row row : sheet ) + { + rowIndex = row.getRowNum(); + + if ( hasCaptionRow == true && rowIndex == 0 ) + { + continue; + } + + try + { + String departmentName = MyPOIUtils.getStringCellValue( row, 0 ); + + if ( departmentName.isEmpty() ) + { + continue; + } + + double departmentObject = MyPOIUtils.getNumbericCellValue( row, 1 ); + double objectGap = MyPOIUtils.getNumbericCellValue( row, 1 ); + double motoPremium = MyPOIUtils.getNumbericCellValue( row, 1 ); + double motoPremiumProPortion = MyPOIUtils.getNumbericCellValue( row, 1 ); + double nomotoPremium = MyPOIUtils.getNumbericCellValue( row, 1 ); + double attachingRate = MyPOIUtils.getNumbericCellValue( row, 1 ); + double attachingRateChange = MyPOIUtils.getNumbericCellValue( row, 1 ); + double customerHandleRate = MyPOIUtils.getNumbericCellValue( row, 1 ); + double customerHandleRateChange = MyPOIUtils.getNumbericCellValue( row, 1 ); + double premiumPerCustomer = MyPOIUtils.getNumbericCellValue( row, 1 ); + double premiumPerCustomerChange = MyPOIUtils.getNumbericCellValue( row, 1 ); + + DepartmentArchievementRecord record = new DepartmentArchievementRecord( + departmentName, departmentObject, objectGap, motoPremium, + motoPremiumProPortion, nomotoPremium, attachingRate, + attachingRateChange, customerHandleRate, customerHandleRateChange, + premiumPerCustomer, premiumPerCustomerChange ); + + records.add( record ); + } + catch ( NullPointerException error ) + { + String message = "第" + String.valueOf( rowIndex ) + "行出现NullPointerException异常"; + + logger.error( message, error ); + } + } + } + finally + { + try + { + if ( wb != null ) + { + wb.close(); + } + } + catch ( Exception error ) + { + String message = "关闭" + filePath + "时出现异常!"; + + logger.error( message, error ); + } + } + + return records; + } }