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