完成bi报表导入的controller。

This commit is contained in:
Kane Wang 2023-10-13 18:33:33 +08:00
parent 3c807a6efa
commit cb1c08fff4
6 changed files with 407 additions and 79 deletions

View File

@ -2,7 +2,7 @@
* @Author: Kane
* @Date: 2023-10-08 15:02:15
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/utils/data/TelsalerArchievementData.java
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/utils/data/ImportBIData.java
* @Description: 坐席业绩相关的数据操作方法
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
@ -26,9 +26,9 @@ import com.cpic.xim.utils.poi.MyPOIUtils;
/**
* 坐席业绩相关的数据操作方法
*/
public class ImportBIData
public class ImportBIExcelData
{
private static Logger logger = LoggerFactory.getLogger( ImportBIData.class );
private static Logger logger = LoggerFactory.getLogger( ImportBIExcelData.class );
/**
* 从excel文件读取坐席的车非渗透率数据
@ -39,7 +39,7 @@ public class ImportBIData
* @throws InvalidFormatException excel单元格格式错误时抛出
*/
public static ArrayList<BITelsalerAttachingRateRecord> importBITelsalerAttachingRateRecordFromXlsx(
String filePath, LocalDate summaryDate, boolean hasCaptionRow )
String filePath, int SheetIndex, boolean hasCaptionRow )
throws IOException, InvalidFormatException
{
ArrayList<BITelsalerAttachingRateRecord> records = new ArrayList<>( 200 );
@ -50,7 +50,7 @@ public class ImportBIData
try
{
wb = WorkbookFactory.create( new File( filePath ) );
sheet = wb.getSheet( "经办" );
sheet = wb.getSheetAt(SheetIndex);
for ( Row row : sheet )
{
@ -95,7 +95,7 @@ public class ImportBIData
MyPOIUtils.getNumbericCellValue( row, 10 );
BITelsalerAttachingRateRecord record = new BITelsalerAttachingRateRecord(
summaryDate, name, motoPremium, nomotoPremium, motoPremiumProPortion,
LocalDate.now(), name, motoPremium, nomotoPremium, motoPremiumProPortion,
attachingRate, attachingRateChange, customerHandleRateCell,
customerHandleRateChangeCell, noMotoPremiumPerCustomerCell,
noMotoPremiumPerCustomerChangeCell );
@ -143,7 +143,7 @@ public class ImportBIData
* @return
*/
public static ArrayList<BITelsalerRenewalRateRecord> importBITelsalerRenewalRateFromXlsx(
String filePath, String sheetName, boolean hasCaptionRow, LocalDate summaryDate )
String filePath, int sheetIndex, boolean hasCaptionRow, LocalDate summaryDate )
throws IOException
{
ArrayList<BITelsalerRenewalRateRecord> records = new ArrayList<>( 200 );
@ -154,7 +154,7 @@ public class ImportBIData
try
{
wb = WorkbookFactory.create( new File( filePath ) );
sheet = wb.getSheet( sheetName );
sheet = wb.getSheetAt( sheetIndex );
int rowIndex = 0;
for ( Row row : sheet )
@ -215,7 +215,7 @@ public class ImportBIData
}
public static ArrayList<BIDepartmentArchievementRecord> importBIDepartmentArchievementRecords(
String filePath, String sheetName, boolean hasCaptionRow ) throws IOException
String filePath, int sheetIndex, boolean hasCaptionRow ) throws IOException
{
ArrayList<BIDepartmentArchievementRecord> records = new ArrayList<>( 5 );
@ -225,7 +225,7 @@ public class ImportBIData
{
wb = WorkbookFactory.create( new File( filePath ) );
Sheet sheet = wb.getSheet( sheetName );
Sheet sheet = wb.getSheetAt( sheetIndex );
int rowIndex = 0;
for ( Row row : sheet )

View File

@ -1,65 +0,0 @@
/*
* @Author: Kane
* @Date: 2023-10-12 00:34:39
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/TelsalerArchievement/ImportTelsalerArchievementController.java
* @Description:
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
package com.cpic.xim.web.controllers.dataimport.TelsalerArchievement;
import java.io.IOException;
import java.util.ArrayList;
import org.apache.ibatis.session.SqlSession;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.cpic.xim.mybatis.mapper.ImportBIArchievementDataMapper;
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
import com.cpic.xim.mybatis.utils.MybatisUtils;
import com.cpic.xim.utils.data.ImportBIData;
@Controller
@RequestMapping(method=RequestMethod.POST, path="/import_telsaler_archievement")
public class ImportTelsalerArchievementController
{
void importTelsalerAttachingRate()
{
String filePath = "D:\\develop\\cpicxim\\desktop_task_schedule\\数据\\测试用\\坐席车非渗透.xlsx";
SqlSession session = null;
try
{
ArrayList<BITelsalerAttachingRateRecord> records = ImportBIData.importBITelsalerAttachingRateRecordFromXlsx( filePath, null,
true );
session = MybatisUtils.getSqlSessionBatch();
ImportBIArchievementDataMapper mapper = session.getMapper( ImportBIArchievementDataMapper.class );
for ( BITelsalerAttachingRateRecord record : records )
{
mapper.insertTelsalerAttachingRateDataToDB(record);
}
session.commit();
assert( true );
}
catch ( IOException error )
{
assert (false);
}
catch ( InvalidFormatException error )
{
assert (false);
}
catch (Exception error)
{
if ( session != null)
{
session.rollback();
}
}
}
}

View File

@ -0,0 +1,188 @@
/*
* @Author: Kane
* @Date: 2023-10-12 00:34:39
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataController.java
* @Description:
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
package com.cpic.xim.web.controllers.dataimport.bi;
import java.io.IOException;
import java.time.LocalDate;
import java.util.ArrayList;
import org.apache.ibatis.exceptions.PersistenceException;
import org.apache.ibatis.session.SqlSession;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
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.BITelsalerAttachingRateRecord;
import com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord;
import com.cpic.xim.mybatis.utils.MybatisUtils;
import com.cpic.xim.utils.data.ImportBIExcelData;
import com.cpic.xim.web.controllers.dataimport.bi.ImportBIDataRequest.ReportType;
@Controller
@RequestMapping( method = RequestMethod.POST, path = "/import_bi_data" )
public class ImportBIDataController
{
private static Logger logger = LoggerFactory.getLogger( ImportBIDataRequest.class );
@RequestMapping( method = RequestMethod.POST, path = "" )
@ResponseBody
public static ImportBIDataResponse importBIData( @RequestParam ImportBIDataRequest request )
{
ImportBIDataResponse response = new ImportBIDataResponse();
String filePath = request.getFilePath();
ReportType type = request.getReportType();
boolean hasCaption = request.isHasCaption();
int sheetIndex = request.getSheetIndex();
try
{
if ( type == ReportType.TelsalerAttachingRateReport )
{
importBITelsalerAttachingRate( filePath, sheetIndex, hasCaption );
}
else if ( type == ReportType.TelsalerRenewalRateReport )
{
importBITeslsalerRenewalRate( filePath, sheetIndex, hasCaption );
}
else if ( type == ReportType.DepartmentAttachingRenewalRateReport )
{
importBIDepartmentArchievement( filePath, sheetIndex, hasCaption );
}
}
catch ( IOException error )
{
String message = "";
response.setSuccess( false );
response.setMessage( message );
}
catch ( InvalidFormatException error )
{
String message = "";
response.setSuccess( false );
response.setMessage( message );
}
catch ( PersistenceException error )
{
String message = "";
response.setSuccess( false );
response.setMessage( message );
}
return response;
}
private static void importBITelsalerAttachingRate( String filePath, int sheetIndex,
boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException
{
SqlSession session = null;
try
{
ArrayList<BITelsalerAttachingRateRecord> records =
ImportBIExcelData.importBITelsalerAttachingRateRecordFromXlsx( filePath,
sheetIndex, hasCaption );
session = MybatisUtils.getSqlSessionBatch();
ImportBIArchievementDataMapper mapper =
session.getMapper( ImportBIArchievementDataMapper.class );
mapper.cleanTelsalerAttachingRateData();
for ( BITelsalerAttachingRateRecord record : records )
{
mapper.insertTelsalerAttachingRateDataToDB( record );
}
session.commit();
}
catch ( Exception error )
{
if ( session != null )
{
session.rollback();
}
throw error;
}
}
private static void importBITeslsalerRenewalRate( String filePath, int sheetIndex,
boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException
{
ArrayList<BITelsalerRenewalRateRecord> records = null;
SqlSession session = null;
ImportBIArchievementDataMapper mapper = null;
try
{
records = ImportBIExcelData.importBITelsalerRenewalRateFromXlsx( filePath, sheetIndex,
hasCaption, LocalDate.now() );
session = MybatisUtils.getSqlSessionBatch();
mapper = session.getMapper( ImportBIArchievementDataMapper.class );
// 清理数据
mapper.cleanTelsalerRenewalRateData();
for ( BITelsalerRenewalRateRecord record : records )
{
mapper.insertTelsalerRenewalRateDataToDB( record );
}
session.commit();
}
catch ( Exception error )
{
if ( session != null )
{
session.rollback();
}
throw error;
}
}
private static void importBIDepartmentArchievement( String filePath, int sheetIndex,
boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException
{
ArrayList<BIDepartmentArchievementRecord> records = null;
SqlSession session = null;
ImportBIArchievementDataMapper mapper = null;
try
{
records = ImportBIExcelData.importBIDepartmentArchievementRecords( filePath, sheetIndex,
hasCaption );
session = MybatisUtils.getSqlSessionBatch();
mapper = session.getMapper( ImportBIArchievementDataMapper.class );
mapper.cleanDepartmentAttachingRenewalRateData();
for ( BIDepartmentArchievementRecord record : records )
{
mapper.insertDepartmentAttachingRenewalRateDataToDB( record );
}
session.commit();
}
catch ( Exception error )
{
if ( session != null )
{
session.rollback();
}
}
}
}

View File

@ -0,0 +1,127 @@
/*
* @Author: Kane
* @Date: 2023-10-13 14:39:06
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataRequest.java
* @Description:
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
package com.cpic.xim.web.controllers.dataimport.bi;
import org.springframework.stereotype.Controller;
import com.fasterxml.jackson.annotation.JsonProperty;
@Controller
public class ImportBIDataRequest
{
public enum ReportType {
TelsalerAttachingRateReport, TelsalerRenewalRateReport, DepartmentAttachingRenewalRateReport
};
// 导入文件的路径
@JsonProperty( "filePath" )
private String filePath;
// 报表名称
@JsonProperty( "reportType" )
private ReportType reportType;
// 是否有标题行
@JsonProperty( "hasCaption" )
private boolean hasCaption;
// sheet索引
@JsonProperty( "sheetIndex" )
private int sheetIndex;
public ImportBIDataRequest()
{}
public boolean isHasCaption()
{
return hasCaption;
}
public void setHasCaption( boolean hasCaption )
{
this.hasCaption = hasCaption;
}
public int getSheetIndex()
{
return sheetIndex;
}
public void setSheetIndex( int sheetIndex )
{
this.sheetIndex = sheetIndex;
}
public String getFilePath()
{
return filePath;
}
public void setFilePath( String filePath )
{
this.filePath = filePath;
}
public ReportType getReportType()
{
return reportType;
}
public void setReportType( ReportType reportType )
{
this.reportType = reportType;
}
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + ((filePath == null) ? 0 : filePath.hashCode());
result = prime * result + ((reportType == null) ? 0 : reportType.hashCode());
result = prime * result + (hasCaption ? 1231 : 1237);
result = prime * result + sheetIndex;
return result;
}
@Override
public boolean equals( Object obj )
{
if ( this == obj )
return true;
if ( obj == null )
return false;
if ( getClass() != obj.getClass() )
return false;
ImportBIDataRequest other = (ImportBIDataRequest) obj;
if ( filePath == null )
{
if ( other.filePath != null )
return false;
}
else if ( !filePath.equals( other.filePath ) )
return false;
if ( reportType != other.reportType )
return false;
if ( hasCaption != other.hasCaption )
return false;
if ( sheetIndex != other.sheetIndex )
return false;
return true;
}
@Override
public String toString()
{
return "ImportBIDataRequest [filePath=" + filePath + ", reportType=" + reportType
+ ", hasCaption=" + hasCaption + ", sheetIndex=" + sheetIndex + "]";
}
}

View File

@ -0,0 +1,78 @@
/*
* @Author: Kane
* @Date: 2023-10-13 14:39:58
* @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataResponse.java
* @Description:
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
package com.cpic.xim.web.controllers.dataimport.bi;
import com.cpic.xim.web.controllers.QueryResponse;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ImportBIDataResponse extends QueryResponse
{
// 导入数量
@JsonProperty( "importedCount" )
int importedCount;
public ImportBIDataResponse()
{
super();
importedCount = 0;
}
public ImportBIDataResponse( boolean success, String message, int importedCount )
{
super( success, message );
this.importedCount = importedCount;
}
public ImportBIDataResponse( int importedCount )
{
this.importedCount = importedCount;
}
@Override
public String toString()
{
return "ImportBIDataResponse [importedCount=" + importedCount + "]";
}
@Override
public int hashCode()
{
final int prime = 31;
int result = super.hashCode();
result = prime * result + importedCount;
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;
ImportBIDataResponse other = (ImportBIDataResponse) obj;
if ( importedCount != other.importedCount )
return false;
return true;
}
public int getImportedCount()
{
return importedCount;
}
public void setImportedCount( int importedCount )
{
this.importedCount = importedCount;
}
}

View File

@ -15,7 +15,7 @@ import org.junit.Test;
import com.cpic.xim.mybatis.mapper.ImportBIArchievementDataMapper;
import com.cpic.xim.mybatis.pojo.*;
import com.cpic.xim.mybatis.utils.MybatisUtils;
import com.cpic.xim.utils.data.ImportBIData;
import com.cpic.xim.utils.data.ImportBIExcelData;
import java.util.ArrayList;
public class BatchInsertTest
@ -30,7 +30,7 @@ public class BatchInsertTest
try
{
records = ImportBIData.importBITelsalerAttachingRateRecordFromXlsx( filePath, null,
records = ImportBIExcelData.importBITelsalerAttachingRateRecordFromXlsx( filePath, 0,
true );
session = MybatisUtils.getSqlSessionBatch();
mapper = session.getMapper( ImportBIArchievementDataMapper.class );
@ -73,7 +73,7 @@ public class BatchInsertTest
try
{
records = ImportBIData.importBITelsalerRenewalRateFromXlsx( filePath, sheetName, true,
records = ImportBIExcelData.importBITelsalerRenewalRateFromXlsx( filePath, 0, true,
null );
session = MybatisUtils.getSqlSessionBatch();
@ -116,7 +116,7 @@ public class BatchInsertTest
try
{
records =
ImportBIData.importBIDepartmentArchievementRecords( filePath, sheetName, true );
ImportBIExcelData.importBIDepartmentArchievementRecords( filePath, 0, true );
session = MybatisUtils.getSqlSessionBatch();
mapper = session.getMapper( ImportBIArchievementDataMapper.class );