diff --git a/代码/jsp/telsale_import/.idea/libraries/lib.xml b/代码/jsp/telsale_import/.idea/libraries/lib.xml
index b7ef0c0..b5fc087 100644
--- a/代码/jsp/telsale_import/.idea/libraries/lib.xml
+++ b/代码/jsp/telsale_import/.idea/libraries/lib.xml
@@ -9,13 +9,12 @@
-
-
+
diff --git a/代码/jsp/telsale_import/src/com/cpic/telsale/DataImport/DataImport.java b/代码/jsp/telsale_import/src/com/cpic/telsale/DataImport/DataImport.java
index cb8251f..674b078 100644
--- a/代码/jsp/telsale_import/src/com/cpic/telsale/DataImport/DataImport.java
+++ b/代码/jsp/telsale_import/src/com/cpic/telsale/DataImport/DataImport.java
@@ -7,6 +7,7 @@ package com.cpic.telsale.DataImport;
import java.io.*;
import java.sql.*;
import java.util.ArrayList;
+import java.util.Iterator;
import org.apache.poi.hssf.usermodel.*;
import com.cpic.telsale.TelsalePolicyRecord;
@@ -412,10 +413,123 @@ public class DataImport
String userName,
String password,
ArrayList policyList )
- {
- Connection conn = null;
- CallableStatement statement = null;
+ throws NullPointerException,
+ TesalePolicyDataSaveToOracleException,
+ SQLException
+ {
+ Connection conn = null;
+ CallableStatement callStmt = null;
+
+ String callProcedureSql = "{call telsale_policy_check_pkg.save_policy(?,?,?,?,?,?,?,?,?,?,?,?,?)}";
+ String errorMessage = "写入oracle数据库错误,请按照提示修正后重新上传!
\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() +
+ ",已存在,如需修改数据请联系信息技术部。
\n";
+ }
+ default:
+ {
+ errorMessage += "保单号" +
+ recordIterator.getPolicyNo() +
+ "保存失败,错误提示:" +
+ error.getMessage() + "
\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 );
+ }
}
}
diff --git a/代码/jsp/telsale_import/src/com/cpic/telsale/DataImport/TesalePolicyDataSaveToOracleException.java b/代码/jsp/telsale_import/src/com/cpic/telsale/DataImport/TesalePolicyDataSaveToOracleException.java
new file mode 100644
index 0000000..8a5e1d2
--- /dev/null
+++ b/代码/jsp/telsale_import/src/com/cpic/telsale/DataImport/TesalePolicyDataSaveToOracleException.java
@@ -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 );
+ }
+}
diff --git a/代码/jsp/telsale_import/src/com/cpic/telsale/TelsalePolicyRecord.java b/代码/jsp/telsale_import/src/com/cpic/telsale/TelsalePolicyRecord.java
index a04345d..72a5dc0 100644
--- a/代码/jsp/telsale_import/src/com/cpic/telsale/TelsalePolicyRecord.java
+++ b/代码/jsp/telsale_import/src/com/cpic/telsale/TelsalePolicyRecord.java
@@ -9,8 +9,8 @@ public class TelsalePolicyRecord
{
/**
* @Description: 构造函数
- * @Param: policyNo
- * @Param: operatorCode
+ * @Param: policyNo 保单号
+ * @Param: operatorCode 经办人工号
* @return:
* @Author: 王炜
* @Date: 2021/6/21 */
@@ -70,24 +70,24 @@ public class TelsalePolicyRecord
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()
@@ -130,24 +130,24 @@ public class TelsalePolicyRecord
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;
@@ -156,13 +156,13 @@ public class TelsalePolicyRecord
private String operatorName;
private String operatorSectionOfficeCode;
private String operatorSectionOfficeName;
- private String operatorSectionDepartmentCode;
- private String operatorSectionDepartmentName;
+ private String operatorDepartmentCode;
+ private String operatorDepartmentName;
//录入人
private String entryStaffCode;
private String entryStaffName;
private String entryStaffSectionOfficeCode;
private String entryStaffSectionOfficeName;
- private String entryStaffSectionDepartmentCode;
- private String entryStaffSectionDepartmentName;
+ private String entryStaffDepartmentCode;
+ private String entryStaffDepartmentName;
}
diff --git a/代码/jsp/telsale_import/src/com/cpic/telsale/uploadData/uploadDataProcessor.java b/代码/jsp/telsale_import/src/com/cpic/telsale/uploadData/uploadDataProcessor.java
index 4215eab..8519080 100644
--- a/代码/jsp/telsale_import/src/com/cpic/telsale/uploadData/uploadDataProcessor.java
+++ b/代码/jsp/telsale_import/src/com/cpic/telsale/uploadData/uploadDataProcessor.java
@@ -17,6 +17,8 @@ import java.util.*;
import com.cpic.telsale.DataImport.*;
+import static com.cpic.telsale.DataImport.DataImport.saveTelsalePolicyDataToOracle;
+
public class uploadDataProcessor extends HttpServlet
{
private String tempPathRoot; //临时文件目录
@@ -75,10 +77,15 @@ public class uploadDataProcessor extends HttpServlet
//测试
policyRecordList = DataImport.readTelsalePolicyDataFromXlsx( upLoadedFileName, 0 );
+ saveTelsalePolicyDataToOracle( oracleURL,
+ oracleUserName,
+ oraclePassword,
+ policyRecordList );
// importMessage = DataImport.importTelsalePolicyDataFromXlsx( upLoadedFileName,
// telsalePolicyOperatorListTableName,
// informixURL );
+
}
}
}
@@ -92,6 +99,11 @@ public class uploadDataProcessor extends HttpServlet
//文件格式异常
importMessage = error.getMessage();
}
+ catch ( TesalePolicyDataSaveToOracleException error )
+ {
+ //保存到oracle异常
+ importMessage = error.getMessage();
+ }
catch ( IOException error )
{
//包装一下重新抛出
diff --git a/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc5.jar b/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc5.jar
deleted file mode 100644
index 13d7feb..0000000
Binary files a/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc5.jar and /dev/null differ
diff --git a/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc6.jar b/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc6.jar
deleted file mode 100644
index 8240f40..0000000
Binary files a/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc6.jar and /dev/null differ
diff --git a/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc8.jar b/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc8.jar
new file mode 100644
index 0000000..b46608c
Binary files /dev/null and b/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc8.jar differ
diff --git a/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc8_g.jar b/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc8_g.jar
new file mode 100644
index 0000000..ef51d38
Binary files /dev/null and b/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc8_g.jar differ
diff --git a/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc8dms.jar b/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc8dms.jar
new file mode 100644
index 0000000..b38fe21
Binary files /dev/null and b/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc8dms.jar differ
diff --git a/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc8dms_g.jar b/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc8dms_g.jar
new file mode 100644
index 0000000..767b8d9
Binary files /dev/null and b/代码/jsp/telsale_import/web/WEB-INF/lib/ojdbc8dms_g.jar differ
diff --git a/代码/jsp/telsale_import/web/WEB-INF/web.xml b/代码/jsp/telsale_import/web/WEB-INF/web.xml
index 02c1d46..40eba87 100644
--- a/代码/jsp/telsale_import/web/WEB-INF/web.xml
+++ b/代码/jsp/telsale_import/web/WEB-INF/web.xml
@@ -21,7 +21,7 @@
oracleURL
- jdbc:oracle:thin:@10.39.0.86:1521:xmcx1
+ jdbc:oracle:thin:@10.39.0.85:1521:dev01
oracleUserName
@@ -29,7 +29,7 @@
oraclePassword
- cpic123456
+ Cpic#1234
informixURL
diff --git a/代码/oracle/项目/包/telsale_policy_check_pkg.pck b/代码/oracle/项目/包/telsale_policy_check_pkg.pck
index d772b37..30ffe8f 100644
--- a/代码/oracle/项目/包/telsale_policy_check_pkg.pck
+++ b/代码/oracle/项目/包/telsale_policy_check_pkg.pck
@@ -148,35 +148,38 @@ CREATE OR REPLACE PACKAGE BODY telsale_policy_check_pkg IS
END;
--֤¼Ƿ
- BEGIN
- SELECT ry.staff_name,
- ksh.section_office_code,
- ksh.section_office_name,
- bm.department_code,
- bm.department_name
- INTO a_entry_staff_name,
- a_entry_staff_sectionoffice_code,
- a_entry_staff_sectionoffice_name,
- a_entry_staff_department_code,
- a_entry_staff_department_name
- FROM idst0.rydm_t@xmcx1.cpicxm ry,
- idst0.ks_t@xmcx1.cpicxm ksh,
- idst0.bm_t@xmcx1.cpicxm bm
- WHERE ry.section_office_code = ksh.section_office_code
- AND ry.department_code = bm.department_code
- AND ry.staff_code = a_entry_staff_code;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- raise_application_error(OPERATOE_CODE_NOT_EXIST_EXCEPT_CODE,
- OPERATOE_CODE_NOT_EXIST_EXCEPT_TEXT);
- END;
+ IF a_entry_staff_code IS NOT NULL
+ THEN
+ BEGIN
+ SELECT ry.staff_name,
+ ksh.section_office_code,
+ ksh.section_office_name,
+ bm.department_code,
+ bm.department_name
+ INTO a_entry_staff_name,
+ a_entry_staff_sectionoffice_code,
+ a_entry_staff_sectionoffice_name,
+ a_entry_staff_department_code,
+ a_entry_staff_department_name
+ FROM idst0.rydm_t@xmcx1.cpicxm ry,
+ idst0.ks_t@xmcx1.cpicxm ksh,
+ idst0.bm_t@xmcx1.cpicxm bm
+ WHERE ry.section_office_code = ksh.section_office_code
+ AND ry.department_code = bm.department_code
+ AND ry.staff_code = a_entry_staff_code;
+ EXCEPTION
+ WHEN NO_DATA_FOUND THEN
+ 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
l_policy_department_code != a_operator_department_code
THEN
- raise_application_error(OPERATOE_CODE_NOT_MATCH_EXCEPT_CODE,
- OPERATOE_CODE_NOT_MATCH_EXCEPT_TEXT);
+ raise_application_error(ENTRY_STAFF_CODE_NOT_EXIST_EXCEPT_CODE,
+ ENTRY_STAFF_CODE_NOT_EXIST_EXCEPT_TEXT);
END IF;
--û¼
diff --git a/数据/测试数据/有空行,有保单号错误 - 副本.xls b/数据/测试数据/有空行,有保单号错误 - 副本.xls
new file mode 100644
index 0000000..1bcbc3c
Binary files /dev/null and b/数据/测试数据/有空行,有保单号错误 - 副本.xls differ
diff --git a/数据/测试数据/有空行,有保单号错误.xls b/数据/测试数据/有空行,有保单号错误.xls
index 892b9d2..1bcbc3c 100644
Binary files a/数据/测试数据/有空行,有保单号错误.xls and b/数据/测试数据/有空行,有保单号错误.xls differ
diff --git a/数据/测试数据/经办人错误.xls b/数据/测试数据/经办人错误.xls
new file mode 100644
index 0000000..c5062c6
Binary files /dev/null and b/数据/测试数据/经办人错误.xls differ