This commit is contained in:
Kane Wang 2021-06-21 17:45:41 +08:00
parent 10c07f669c
commit 83c26ecec9
1 changed files with 119 additions and 95 deletions

View File

@ -1,19 +1,15 @@
package com.cpic.telsale.DataImport;
/**
* Created by Kane on 2017/3/28.
*/
package com.cpic.telsale.DataImport;
import java.io.*;
import java.sql.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.ArrayList;
import org.apache.poi.hssf.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.CellType;
import com.cpic.telsale.TelsalePolicyRecord;
import com.cpic.util.staff.*;
public class DataImport
@ -22,6 +18,58 @@ public class DataImport
{
}
/**
* @Description: 从xlsx文件读取电销转介绍保单记录保存在一个ArrayList中并返回
* @Param: fileName xlsx文件的路径
* @return: java.util.ArrayList<com.cpic.telsale.TelsalePolicyRecord>
* @Author: 王炜
* @Date: 2021/6/21
*/
public static ArrayList<TelsalePolicyRecord> readTelsalePolicyDataFromXlsx(String fileName, int sheetIndex) throws
IOException,
SQLException,
XlsFileFormatException
{
ArrayList<TelsalePolicyRecord> policyList = new ArrayList<TelsalePolicyRecord>();
TelsalePolicyRecord record = null;
FileInputStream xlsxFile = null;
HSSFWorkbook workBook = null;
HSSFSheet sheet = null;
HSSFRow row = null;
int rowIndex = 0;
int rowCount = 0;
try {
xlsxFile = new FileInputStream(fileName);
workBook = new HSSFWorkbook(xlsxFile);
sheet = workBook.getSheetAt(sheetIndex);
rowIndex = sheet.getFirstRowNum() + 1;
rowCount = sheet.getLastRowNum();
row = sheet.getRow(rowIndex);
while (rowIndex <= rowCount) {
//用第一个单元格判断是不是空行如果cell为null视为空行
HSSFCell cell = row.getCell(0);
if (cell == null) {
rowIndex++;
continue;
}
String policyNo = cell.getStringCellValue();
String operatorCode = getStringValueFromHSSFCell(row.getCell(1));
}
} catch (IOException error) {
}
return policyList;
}
/**
* 读取xls表格插入数据要么全部成功要么全部失败
*
@ -55,16 +103,14 @@ public class DataImport
HSSFSheet sheet = null;
HSSFRow row = null;
try
{
try {
xlsFileIn = new FileInputStream(fileName);
xlsFile = new HSSFWorkbook(xlsFileIn);
sheet = xlsFile.getSheetAt(0); //第一个sheet
rowIndex = sheet.getFirstRowNum() + 1;
rowCount = sheet.getLastRowNum();
row = sheet.getRow(rowIndex);
}
catch( IOException error ) //有文件格式错误的可能
} catch (IOException error) //有文件格式错误的可能
{
xlsFile.close();
xlsFileIn.close();
@ -118,13 +164,11 @@ public class DataImport
StaffInfo staff = null;
boolean isSuccess = true; //标志位用来指示在保存过程中是否出现错误
while ( rowIndex <= rowCount )
{
while (rowIndex <= rowCount) {
//用来判断是不是空行
HSSFCell cell = row.getCell(0);
if ( cell == null)
{
if (cell == null) {
rowIndex++;
continue;
}
@ -133,16 +177,14 @@ public class DataImport
operatorCode = getStringValueFromHSSFCell(row.getCell(1));
//判断一下是不是空的单元格
if ( policyNo.length() == 0 || operatorCode.length() == 0 )
{
if (policyNo.length() == 0 || operatorCode.length() == 0) {
importResult = importResult + "" + rowIndex + "行数据为空。<br>";
//isSuccess = false;
}
else //不是空单元格进行处理
{
try
{
try {
//取得经办人信息
staff = new StaffInfo(operatorCode);
@ -164,9 +206,7 @@ public class DataImport
importResult = importResult + "" + rowIndex + "行,保单号" + policyNo + ",转介绍信息入成功!<br>";
successCount++;
}
catch( StaffCodeNotExistException error )
{
} catch (StaffCodeNotExistException error) {
//经办人不存在
importResult = importResult + "" + rowIndex + "行,保单号" + policyNo + ",经办人" + operatorCode + "不存在。<br>";
@ -175,9 +215,7 @@ public class DataImport
//计数
failCount++;
}
catch( OracleConnectionException error )
{
} catch (OracleConnectionException error) {
//查询工号失败
importResult = importResult + "" + rowIndex + "行,保单号" + policyNo + ",经办人" + operatorCode + ",查询工号失败。<br>";
@ -186,19 +224,17 @@ public class DataImport
//计数
failCount++;
}
catch( SQLException error )
{
} catch (SQLException error) {
int errorCode = error.getErrorCode();
switch ( errorCode )
{
switch (errorCode) {
case -268: //保单号重复
importResult = importResult + "" + rowIndex + "行,保单号" + policyNo + ",已录入过转介绍信息!" + error.getCause() + "。<br>";
break;
default: //写入错误
importResult = importResult + "" + rowIndex + "行,保单号" + policyNo + ",数据库写入错误,错误信息:" + error.getCause() + "。<br>";
importResult = importResult + "" + rowIndex + "行,保单号" + policyNo + ",数据库写入错误,错误信息:" + error
.getCause() + "。<br>";
break;
}
@ -207,9 +243,7 @@ public class DataImport
//计数
failCount++;
}
catch( Exception error )
{
} catch (Exception error) {
//写入错误
importResult = importResult + "" + rowIndex + "行,保单号" + policyNo + ",数据库写入错误,错误信息:" + error.getMessage() + "。<br>";
@ -218,9 +252,7 @@ public class DataImport
//计数
failCount++;
}
finally
{
} finally {
ifxConn.commit();
}
}
@ -270,41 +302,33 @@ public class DataImport
{
String value = null;
if ( cell == null )
{
if (cell == null) {
return "";
}
switch ( cell.getCellType() )
{
case HSSFCell.CELL_TYPE_NUMERIC:
{
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC: {
//判断是不是整数
double dValue = cell.getNumericCellValue();
if ( dValue == ( int )dValue )
{
if (dValue == (int) dValue) {
value = String.valueOf((int) dValue);
}
else
{
else {
value = String.valueOf(dValue);
}
break;
}
case HSSFCell.CELL_TYPE_STRING:
{
case HSSFCell.CELL_TYPE_STRING: {
value = cell.getStringCellValue();
break;
}
case HSSFCell.CELL_TYPE_BLANK:
{
case HSSFCell.CELL_TYPE_BLANK: {
value = "";
break;
}
default:
{
default: {
value = "";
break;
}