This commit is contained in:
Kane Wang 2021-06-23 11:40:48 +08:00
parent a1e6e71ebc
commit 3b45aea501
16 changed files with 196 additions and 53 deletions

View File

@ -9,13 +9,12 @@
<root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/commons-logging-1.2.jar!/" /> <root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/commons-logging-1.2.jar!/" />
<root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/junit-4.12.jar!/" /> <root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/junit-4.12.jar!/" />
<root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/log4j-1.2.17.jar!/" /> <root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/log4j-1.2.17.jar!/" />
<root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/ojdbc5.jar!/" />
<root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/ojdbc6.jar!/" />
<root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/poi-3.15.jar!/" /> <root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/poi-3.15.jar!/" />
<root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/poi-excelant-3.15.jar!/" /> <root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/poi-excelant-3.15.jar!/" />
<root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/poi-ooxml-3.15.jar!/" /> <root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/poi-ooxml-3.15.jar!/" />
<root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/poi-ooxml-schemas-3.15.jar!/" /> <root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/poi-ooxml-schemas-3.15.jar!/" />
<root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/poi-scratchpad-3.15.jar!/" /> <root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/poi-scratchpad-3.15.jar!/" />
<root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/ojdbc8.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC> <JAVADOC>
<root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/commons-compress-1.12-javadoc.jar!/" /> <root url="jar://$PROJECT_DIR$/web/WEB-INF/lib/commons-compress-1.12-javadoc.jar!/" />

View File

@ -7,6 +7,7 @@ package com.cpic.telsale.DataImport;
import java.io.*; import java.io.*;
import java.sql.*; import java.sql.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.usermodel.*;
import com.cpic.telsale.TelsalePolicyRecord; import com.cpic.telsale.TelsalePolicyRecord;
@ -412,10 +413,123 @@ public class DataImport
String userName, String userName,
String password, String password,
ArrayList<TelsalePolicyRecord> policyList ) ArrayList<TelsalePolicyRecord> policyList )
{ throws NullPointerException,
Connection conn = null; TesalePolicyDataSaveToOracleException,
CallableStatement statement = null; SQLException
{
Connection conn = null;
CallableStatement callStmt = null;
String callProcedureSql = "{call telsale_policy_check_pkg.save_policy(?,?,?,?,?,?,?,?,?,?,?,?,?)}";
String errorMessage = "写入oracle数据库错误请按照提示修正后重新上传<br>\n";
//用来记录异常记录的数量
int errorCount = 0;
if ( policyList == null )
{
throw new NullPointerException( "policyList参数为Null" );
}
try
{
Class.forName( "oracle.jdbc.driver.OracleDriver" );
conn = DriverManager.getConnection( dbURL, userName, password );
callStmt = conn.prepareCall( callProcedureSql );
conn.setAutoCommit( false );
for ( TelsalePolicyRecord recordIterator : policyList )
{
callStmt.setString( 1, recordIterator.getPolicyNo() );
callStmt.setString( 2, recordIterator.getOperatorCode() );
callStmt.registerOutParameter( 3, Types.VARCHAR );
callStmt.registerOutParameter( 4, Types.VARCHAR );
callStmt.registerOutParameter( 5, Types.VARCHAR );
callStmt.registerOutParameter( 6, Types.VARCHAR );
callStmt.registerOutParameter( 7, Types.VARCHAR );
callStmt.setString( 8, recordIterator.getEntryStaffCode() );
callStmt.registerOutParameter( 9, Types.VARCHAR );
callStmt.registerOutParameter( 10, Types.VARCHAR );
callStmt.registerOutParameter( 11, Types.VARCHAR );
callStmt.registerOutParameter( 12, Types.VARCHAR );
callStmt.registerOutParameter( 13, Types.VARCHAR );
try
{
callStmt.execute();
recordIterator.setOperatorName( callStmt.getString( 3 ) );
recordIterator.setOperatorSectionOfficeCode( callStmt.getString( 4 ) );
recordIterator.setOperatorSectionOfficeName( callStmt.getString( 5 ) );
recordIterator.setOperatorDepartmentCode( callStmt.getString( 6 ) );
recordIterator.setOperatorDepartmentName( callStmt.getString( 7 ) );
recordIterator.setEntryStaffName( callStmt.getString( 9 ) );
recordIterator.setEntryStaffSectionOfficeCode( callStmt.getString( 10 ) );
recordIterator.setEntryStaffSectionOfficeName( callStmt.getString( 11 ) );
recordIterator.setEntryStaffDepartmentCode( callStmt.getString( 12 ) );
recordIterator.setEntryStaffDepartmentName( callStmt.getString( 13 ) );
}
catch ( SQLException error )
{
//写入时发生错误记录下错误
switch ( error.getErrorCode() )
{
case -20001:
{
errorMessage += "保单号" +
recordIterator.getPolicyNo() +
",已存在,如需修改数据请联系信息技术部。<br> \n";
}
default:
{
errorMessage += "保单号" +
recordIterator.getPolicyNo() +
"保存失败,错误提示:" +
error.getMessage() + "<br>\n";
}
}
errorCount++;
}
}
}
catch ( SQLException error )
{
throw error;
}
catch ( ClassNotFoundException error )
{
error.printStackTrace();
}
finally
{
//关闭连接
try
{
if ( errorCount == 0 )
{
conn.commit();
}
else
{
conn.rollback();
}
conn.close();
}
catch ( SQLException error )
{
//不处理了
}
}
//根据错误数量判断是否抛出异常
if ( errorCount > 0 )
{
throw new TesalePolicyDataSaveToOracleException( errorMessage );
}
} }
} }

View File

@ -0,0 +1,15 @@
package com.cpic.telsale.DataImport;
/**
* @program: 2018版电销管理系统
* @description: 保存电销数据至oracle数据库错误
* @author: Kane Wang
* @create: 2021-06-23 11:29
**/
public class TesalePolicyDataSaveToOracleException extends Exception
{
public TesalePolicyDataSaveToOracleException( String message )
{
super( message );
}
}

View File

@ -9,8 +9,8 @@ public class TelsalePolicyRecord
{ {
/** /**
* @Description: 构造函数 * @Description: 构造函数
* @Param: policyNo * @Param: policyNo 保单号
* @Param: operatorCode * @Param: operatorCode 经办人工号
* @return: * @return:
* @Author: 王炜 * @Author: 王炜
* @Date: 2021/6/21 */ * @Date: 2021/6/21 */
@ -70,24 +70,24 @@ public class TelsalePolicyRecord
this.operatorSectionOfficeName = operatorSectionOfficeName; this.operatorSectionOfficeName = operatorSectionOfficeName;
} }
public String getOperatorSectionDepartmentCode() public String getOperatorDepartmentCode()
{ {
return operatorSectionDepartmentCode; return operatorDepartmentCode;
} }
public void setOperatorSectionDepartmentCode( String operatorSectionDepartmentCode ) public void setOperatorDepartmentCode( String operatorDepartmentCode )
{ {
this.operatorSectionDepartmentCode = operatorSectionDepartmentCode; this.operatorDepartmentCode = operatorDepartmentCode;
} }
public String getOperatorSectionDepartmentName() public String getOperatorDepartmentName()
{ {
return operatorSectionDepartmentName; return operatorDepartmentName;
} }
public void setOperatorSectionDepartmentName( String operatorSectionDepartmentName ) public void setOperatorDepartmentName( String operatorDepartmentName )
{ {
this.operatorSectionDepartmentName = operatorSectionDepartmentName; this.operatorDepartmentName = operatorDepartmentName;
} }
public String getEntryStaffCode() public String getEntryStaffCode()
@ -130,24 +130,24 @@ public class TelsalePolicyRecord
this.entryStaffSectionOfficeName = entryStaffSectionOfficeName; this.entryStaffSectionOfficeName = entryStaffSectionOfficeName;
} }
public String getEntryStaffSectionDepartmentCode() public String getEntryStaffDepartmentCode()
{ {
return entryStaffSectionDepartmentCode; return entryStaffDepartmentCode;
} }
public void setEntryStaffSectionDepartmentCode( String entryStaffSectionDepartmentCode ) public void setEntryStaffDepartmentCode( String entryStaffDepartmentCode )
{ {
this.entryStaffSectionDepartmentCode = entryStaffSectionDepartmentCode; this.entryStaffDepartmentCode = entryStaffDepartmentCode;
} }
public String getEntryStaffSectionDepartmentName() public String getEntryStaffDepartmentName()
{ {
return entryStaffSectionDepartmentName; return entryStaffDepartmentName;
} }
public void setEntryStaffSectionDepartmentName( String entryStaffSectionDepartmentName ) public void setEntryStaffDepartmentName( String entryStaffDepartmentName )
{ {
this.entryStaffSectionDepartmentName = entryStaffSectionDepartmentName; this.entryStaffDepartmentName = entryStaffDepartmentName;
} }
private String policyNo; private String policyNo;
@ -156,13 +156,13 @@ public class TelsalePolicyRecord
private String operatorName; private String operatorName;
private String operatorSectionOfficeCode; private String operatorSectionOfficeCode;
private String operatorSectionOfficeName; private String operatorSectionOfficeName;
private String operatorSectionDepartmentCode; private String operatorDepartmentCode;
private String operatorSectionDepartmentName; private String operatorDepartmentName;
//录入人 //录入人
private String entryStaffCode; private String entryStaffCode;
private String entryStaffName; private String entryStaffName;
private String entryStaffSectionOfficeCode; private String entryStaffSectionOfficeCode;
private String entryStaffSectionOfficeName; private String entryStaffSectionOfficeName;
private String entryStaffSectionDepartmentCode; private String entryStaffDepartmentCode;
private String entryStaffSectionDepartmentName; private String entryStaffDepartmentName;
} }

View File

@ -17,6 +17,8 @@ import java.util.*;
import com.cpic.telsale.DataImport.*; import com.cpic.telsale.DataImport.*;
import static com.cpic.telsale.DataImport.DataImport.saveTelsalePolicyDataToOracle;
public class uploadDataProcessor extends HttpServlet public class uploadDataProcessor extends HttpServlet
{ {
private String tempPathRoot; //临时文件目录 private String tempPathRoot; //临时文件目录
@ -75,10 +77,15 @@ public class uploadDataProcessor extends HttpServlet
//测试 //测试
policyRecordList = DataImport.readTelsalePolicyDataFromXlsx( upLoadedFileName, 0 ); policyRecordList = DataImport.readTelsalePolicyDataFromXlsx( upLoadedFileName, 0 );
saveTelsalePolicyDataToOracle( oracleURL,
oracleUserName,
oraclePassword,
policyRecordList );
// importMessage = DataImport.importTelsalePolicyDataFromXlsx( upLoadedFileName, // importMessage = DataImport.importTelsalePolicyDataFromXlsx( upLoadedFileName,
// telsalePolicyOperatorListTableName, // telsalePolicyOperatorListTableName,
// informixURL ); // informixURL );
} }
} }
} }
@ -92,6 +99,11 @@ public class uploadDataProcessor extends HttpServlet
//文件格式异常 //文件格式异常
importMessage = error.getMessage(); importMessage = error.getMessage();
} }
catch ( TesalePolicyDataSaveToOracleException error )
{
//保存到oracle异常
importMessage = error.getMessage();
}
catch ( IOException error ) catch ( IOException error )
{ {
//包装一下重新抛出 //包装一下重新抛出

Binary file not shown.

Binary file not shown.

View File

@ -21,7 +21,7 @@
</context-param> </context-param>
<context-param> <context-param>
<param-name>oracleURL</param-name> <param-name>oracleURL</param-name>
<param-value>jdbc:oracle:thin:@10.39.0.86:1521:xmcx1</param-value> <param-value>jdbc:oracle:thin:@10.39.0.85:1521:dev01</param-value>
</context-param> </context-param>
<context-param> <context-param>
<param-name>oracleUserName</param-name> <param-name>oracleUserName</param-name>
@ -29,7 +29,7 @@
</context-param> </context-param>
<context-param> <context-param>
<param-name>oraclePassword</param-name> <param-name>oraclePassword</param-name>
<param-value>cpic123456</param-value> <param-value>Cpic#1234</param-value>
</context-param> </context-param>
<context-param> <context-param>
<param-name>informixURL</param-name> <param-name>informixURL</param-name>

View File

@ -148,35 +148,38 @@ CREATE OR REPLACE PACKAGE BODY telsale_policy_check_pkg IS
END; END;
--验证录入人是否存在 --验证录入人是否存在
BEGIN IF a_entry_staff_code IS NOT NULL
SELECT ry.staff_name, THEN
ksh.section_office_code, BEGIN
ksh.section_office_name, SELECT ry.staff_name,
bm.department_code, ksh.section_office_code,
bm.department_name ksh.section_office_name,
INTO a_entry_staff_name, bm.department_code,
a_entry_staff_sectionoffice_code, bm.department_name
a_entry_staff_sectionoffice_name, INTO a_entry_staff_name,
a_entry_staff_department_code, a_entry_staff_sectionoffice_code,
a_entry_staff_department_name a_entry_staff_sectionoffice_name,
FROM idst0.rydm_t@xmcx1.cpicxm ry, a_entry_staff_department_code,
idst0.ks_t@xmcx1.cpicxm ksh, a_entry_staff_department_name
idst0.bm_t@xmcx1.cpicxm bm FROM idst0.rydm_t@xmcx1.cpicxm ry,
WHERE ry.section_office_code = ksh.section_office_code idst0.ks_t@xmcx1.cpicxm ksh,
AND ry.department_code = bm.department_code idst0.bm_t@xmcx1.cpicxm bm
AND ry.staff_code = a_entry_staff_code; WHERE ry.section_office_code = ksh.section_office_code
EXCEPTION AND ry.department_code = bm.department_code
WHEN NO_DATA_FOUND THEN AND ry.staff_code = a_entry_staff_code;
raise_application_error(OPERATOE_CODE_NOT_EXIST_EXCEPT_CODE, EXCEPTION
OPERATOE_CODE_NOT_EXIST_EXCEPT_TEXT); WHEN NO_DATA_FOUND THEN
END; raise_application_error(OPERATOE_CODE_NOT_EXIST_EXCEPT_CODE,
OPERATOE_CODE_NOT_EXIST_EXCEPT_TEXT);
END;
END IF;
--判断保单归属和经办人所在部门是否匹配,不匹配视为错误 --判断保单归属和经办人所在部门是否匹配,不匹配视为错误
IF l_policy_sectionoffice_code != a_operator_sectionoffice_code OR IF l_policy_sectionoffice_code != a_operator_sectionoffice_code OR
l_policy_department_code != a_operator_department_code l_policy_department_code != a_operator_department_code
THEN THEN
raise_application_error(OPERATOE_CODE_NOT_MATCH_EXCEPT_CODE, raise_application_error(ENTRY_STAFF_CODE_NOT_EXIST_EXCEPT_CODE,
OPERATOE_CODE_NOT_MATCH_EXCEPT_TEXT); ENTRY_STAFF_CODE_NOT_EXIST_EXCEPT_TEXT);
END IF; END IF;
--没错误后,保存记录 --没错误后,保存记录

Binary file not shown.