commit 937fb96cea87fbe64cf1d0f23d626485b1e50f7e Author: dulei <907367559@qq.com> Date: Fri Jan 17 14:59:03 2025 +0800 门架汇总程序 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/artifacts/GANTRY_PASS_ALL_jar.xml b/.idea/artifacts/GANTRY_PASS_ALL_jar.xml new file mode 100644 index 0000000..afa2cb7 --- /dev/null +++ b/.idea/artifacts/GANTRY_PASS_ALL_jar.xml @@ -0,0 +1,21 @@ + + + $PROJECT_DIR$/out/artifacts/GANTRY_PASS_ALL_jar + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/libraries/lib.xml b/.idea/libraries/lib.xml new file mode 100644 index 0000000..20ae51b --- /dev/null +++ b/.idea/libraries/lib.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..e208459 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..965f951 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..45cf85c --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.svn/entries b/.svn/entries new file mode 100644 index 0000000..48082f7 --- /dev/null +++ b/.svn/entries @@ -0,0 +1 @@ +12 diff --git a/.svn/format b/.svn/format new file mode 100644 index 0000000..48082f7 --- /dev/null +++ b/.svn/format @@ -0,0 +1 @@ +12 diff --git a/.svn/pristine/08/08ee7b4a08576759a1ddeae3eefcdf29f227b4ff.svn-base b/.svn/pristine/08/08ee7b4a08576759a1ddeae3eefcdf29f227b4ff.svn-base new file mode 100644 index 0000000..bf97dd1 Binary files /dev/null and b/.svn/pristine/08/08ee7b4a08576759a1ddeae3eefcdf29f227b4ff.svn-base differ diff --git a/.svn/pristine/09/090e0ba73a0de940b98d5c73a87bbdf4af3f2c21.svn-base b/.svn/pristine/09/090e0ba73a0de940b98d5c73a87bbdf4af3f2c21.svn-base new file mode 100644 index 0000000..b8a2f4f --- /dev/null +++ b/.svn/pristine/09/090e0ba73a0de940b98d5c73a87bbdf4af3f2c21.svn-base @@ -0,0 +1,563 @@ + + + + + + + + + + + + + + + + axlecount + vehi + VEHICLETYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1638777038918 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 20 + + + file://$PROJECT_DIR$/src/GPA/startGPA.java + 109 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 183 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 285 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 340 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 735 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 738 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 157 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 157 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 384 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 210 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 124 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1216 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 200 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 495 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1645 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1739 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1709 + + + file://$PROJECT_DIR$/src/GPA/GetGantryStat.java + 22 + + + file://$PROJECT_DIR$/src/GPA/GMAIN_TEST.java + 34 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1895 + + + + + + + + + + + + + + + + + + + + + GANTRY_PASS_ALL:jar + + + + + + + + No facets are configured + + + + + + + + + + + + + + + 1.8 + + + + + + + + GANTRY_PASS_ALL + + + + + + + + lib + + + + + + + + \ No newline at end of file diff --git a/.svn/pristine/09/0925e61e572a51585115ca304d7be45e2958b425.svn-base b/.svn/pristine/09/0925e61e572a51585115ca304d7be45e2958b425.svn-base new file mode 100644 index 0000000..5a6f025 Binary files /dev/null and b/.svn/pristine/09/0925e61e572a51585115ca304d7be45e2958b425.svn-base differ diff --git a/.svn/pristine/0d/0d2772b4ce86bde28bf94bf75a11bd4091ca16ba.svn-base b/.svn/pristine/0d/0d2772b4ce86bde28bf94bf75a11bd4091ca16ba.svn-base new file mode 100644 index 0000000..47d4abd Binary files /dev/null and b/.svn/pristine/0d/0d2772b4ce86bde28bf94bf75a11bd4091ca16ba.svn-base differ diff --git a/.svn/pristine/16/1692f0bbfc2a08bad9f68983502c9a06db2a202d.svn-base b/.svn/pristine/16/1692f0bbfc2a08bad9f68983502c9a06db2a202d.svn-base new file mode 100644 index 0000000..e208459 --- /dev/null +++ b/.svn/pristine/16/1692f0bbfc2a08bad9f68983502c9a06db2a202d.svn-base @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.svn/pristine/1b/1b27beedeb67ea5b2249f73fe6f7985c387bee94.svn-base b/.svn/pristine/1b/1b27beedeb67ea5b2249f73fe6f7985c387bee94.svn-base new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.svn/pristine/1b/1b27beedeb67ea5b2249f73fe6f7985c387bee94.svn-base @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.svn/pristine/1c/1c21820c1f225598f1e771b493d345ce9db479cd.svn-base b/.svn/pristine/1c/1c21820c1f225598f1e771b493d345ce9db479cd.svn-base new file mode 100644 index 0000000..e5f9641 Binary files /dev/null and b/.svn/pristine/1c/1c21820c1f225598f1e771b493d345ce9db479cd.svn-base differ diff --git a/.svn/pristine/20/20e24db1d0d46e6d90dcce7cd9544f239f12a685.svn-base b/.svn/pristine/20/20e24db1d0d46e6d90dcce7cd9544f239f12a685.svn-base new file mode 100644 index 0000000..dcc2807 --- /dev/null +++ b/.svn/pristine/20/20e24db1d0d46e6d90dcce7cd9544f239f12a685.svn-base @@ -0,0 +1,57 @@ + +package com.trkf.feemoduleservice; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebResult; +import javax.jws.WebService; +import javax.xml.bind.annotation.XmlSeeAlso; +import javax.xml.ws.Action; +import javax.xml.ws.RequestWrapper; +import javax.xml.ws.ResponseWrapper; + + +/** + * This class was generated by the JAX-WS RI. + * JAX-WS RI 2.2.9-b130926.1035 + * Generated source version: 2.2 + * + */ +@WebService(name = "FeeModuleService", targetNamespace = "http://FeeModuleService.trkf.com/") +@XmlSeeAlso({ + ObjectFactory.class +}) +public interface FeeModuleService { + + + /** + * + * @param arg0 + * @return + * returns java.lang.String + */ + @WebMethod + @WebResult(targetNamespace = "") + @RequestWrapper(localName = "getFee", targetNamespace = "http://FeeModuleService.trkf.com/", className = "com.trkf.feemoduleservice.GetFee") + @ResponseWrapper(localName = "getFeeResponse", targetNamespace = "http://FeeModuleService.trkf.com/", className = "com.trkf.feemoduleservice.GetFeeResponse") + @Action(input = "http://FeeModuleService.trkf.com/FeeModuleService/getFeeRequest", output = "http://FeeModuleService.trkf.com/FeeModuleService/getFeeResponse") + public String getFee( + @WebParam(name = "arg0", targetNamespace = "") + String arg0); + + /** + * + * @param arg0 + * @return + * returns java.lang.String + */ + @WebMethod(operationName = "GetStaFee") + @WebResult(targetNamespace = "") + @RequestWrapper(localName = "GetStaFee", targetNamespace = "http://FeeModuleService.trkf.com/", className = "com.trkf.feemoduleservice.GetStaFee") + @ResponseWrapper(localName = "GetStaFeeResponse", targetNamespace = "http://FeeModuleService.trkf.com/", className = "com.trkf.feemoduleservice.GetStaFeeResponse") + @Action(input = "http://FeeModuleService.trkf.com/FeeModuleService/GetStaFeeRequest", output = "http://FeeModuleService.trkf.com/FeeModuleService/GetStaFeeResponse") + public String getStaFee( + @WebParam(name = "arg0", targetNamespace = "") + String arg0); + +} diff --git a/.svn/pristine/22/22254ac617c653c0098a0c9b20989e0135ff4a9b.svn-base b/.svn/pristine/22/22254ac617c653c0098a0c9b20989e0135ff4a9b.svn-base new file mode 100644 index 0000000..20ae51b --- /dev/null +++ b/.svn/pristine/22/22254ac617c653c0098a0c9b20989e0135ff4a9b.svn-base @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.svn/pristine/24/2407f97a63fd48764e5e14f32b2b60770d228006.svn-base b/.svn/pristine/24/2407f97a63fd48764e5e14f32b2b60770d228006.svn-base new file mode 100644 index 0000000..8a2968f Binary files /dev/null and b/.svn/pristine/24/2407f97a63fd48764e5e14f32b2b60770d228006.svn-base differ diff --git a/.svn/pristine/28/28c203ba0a5be156829271831f85f3032eb9e32f.svn-base b/.svn/pristine/28/28c203ba0a5be156829271831f85f3032eb9e32f.svn-base new file mode 100644 index 0000000..deb56e6 --- /dev/null +++ b/.svn/pristine/28/28c203ba0a5be156829271831f85f3032eb9e32f.svn-base @@ -0,0 +1,3 @@ +[2022-06-20 10:52:23.946] DL 日志 +[2022-06-20 10:52:23.946] 1插入汇总结果用时:25,当前线程共1数据,处理至1条数据,还剩2,PASSID:011301200123000531805520220609093902,出口匹配类型:省内出口,出口ID:G006515003001320010,门架数据自动匹配完成,门架数据自动审计完成 +[2022-06-20 10:55:20.394] 1插入汇总结果用时:19,当前线程共1数据,处理至1条数据,还剩2,PASSID:011301200123000531805520220609093902,出口匹配类型:省内出口,出口ID:G006515003001320010,门架数据自动匹配完成,门架数据自动审计完成 diff --git a/.svn/pristine/2a/2a565afbb8e9937128ba68cbdedbcb2e5aabb150.svn-base b/.svn/pristine/2a/2a565afbb8e9937128ba68cbdedbcb2e5aabb150.svn-base new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.svn/pristine/2a/2a565afbb8e9937128ba68cbdedbcb2e5aabb150.svn-base @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.svn/pristine/34/349af3c4df5b2b9da3ae3b211055db1c44b873cc.svn-base b/.svn/pristine/34/349af3c4df5b2b9da3ae3b211055db1c44b873cc.svn-base new file mode 100644 index 0000000..50d3b2e --- /dev/null +++ b/.svn/pristine/34/349af3c4df5b2b9da3ae3b211055db1c44b873cc.svn-base @@ -0,0 +1,62 @@ + +package com.trkf.feemoduleservice; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

getFeeResponse complex type Java ࡣ + * + *

ģʽƬָڴеԤݡ + * + *

+ * <complexType name="getFeeResponse">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="return" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "getFeeResponse", propOrder = { + "_return" +}) +public class GetFeeResponse { + + @XmlElement(name = "return") + protected String _return; + + /** + * ȡreturnԵֵ + * + * @return + * possible object is + * {@link String } + * + */ + public String getReturn() { + return _return; + } + + /** + * returnԵֵ + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setReturn(String value) { + this._return = value; + } + +} diff --git a/.svn/pristine/35/351e9d663067759218fde99a59a4996e0779f43e.svn-base b/.svn/pristine/35/351e9d663067759218fde99a59a4996e0779f43e.svn-base new file mode 100644 index 0000000..e9c0580 --- /dev/null +++ b/.svn/pristine/35/351e9d663067759218fde99a59a4996e0779f43e.svn-base @@ -0,0 +1,2 @@ +[2022-06-24 10:57:04.164] DL 日志 +[2022-06-24 10:57:04.164] 1passid查询用时:10,查询结果:1条 diff --git a/.svn/pristine/37/3768773fbc78c3425f59ab6c5e684f1bf39bc528.svn-base b/.svn/pristine/37/3768773fbc78c3425f59ab6c5e684f1bf39bc528.svn-base new file mode 100644 index 0000000..1c85dab Binary files /dev/null and b/.svn/pristine/37/3768773fbc78c3425f59ab6c5e684f1bf39bc528.svn-base differ diff --git a/.svn/pristine/3e/3e9ceb4e745c04382845dfc952881cfe641ac181.svn-base b/.svn/pristine/3e/3e9ceb4e745c04382845dfc952881cfe641ac181.svn-base new file mode 100644 index 0000000..b6a74a0 Binary files /dev/null and b/.svn/pristine/3e/3e9ceb4e745c04382845dfc952881cfe641ac181.svn-base differ diff --git a/.svn/pristine/43/4395462f0e020bf3a5d810d011b945b7f19873a0.svn-base b/.svn/pristine/43/4395462f0e020bf3a5d810d011b945b7f19873a0.svn-base new file mode 100644 index 0000000..145fe41 Binary files /dev/null and b/.svn/pristine/43/4395462f0e020bf3a5d810d011b945b7f19873a0.svn-base differ diff --git a/.svn/pristine/48/486bf7f9c368f621e616b9a3532253f23665a104.svn-base b/.svn/pristine/48/486bf7f9c368f621e616b9a3532253f23665a104.svn-base new file mode 100644 index 0000000..1ef5c52 Binary files /dev/null and b/.svn/pristine/48/486bf7f9c368f621e616b9a3532253f23665a104.svn-base differ diff --git a/.svn/pristine/4b/4bcd51fd9c18a045dffe0c43303b05ae89d8d4d7.svn-base b/.svn/pristine/4b/4bcd51fd9c18a045dffe0c43303b05ae89d8d4d7.svn-base new file mode 100644 index 0000000..7cc1ffa --- /dev/null +++ b/.svn/pristine/4b/4bcd51fd9c18a045dffe0c43303b05ae89d8d4d7.svn-base @@ -0,0 +1,18 @@ +url=jdbc:oracle:oci:@//10.15.100.5:1521/torcl +#ȱʡģurlԶʶ +driverClassName=oracle.jdbc.driver.OracleDriver +username=nmgmpayadmin +password=nmgh90[] + +##ʼĬ0 +initialSize=16 +#Ĭ8 +maxActive=32 +#С +minIdle=1 +#ȡӵȴʱ䣬λ +maxWait=10000 +#PreparedStatementĬfalse +poolPreparedStatements=true +#PreparedStatementĬ-1棩0ʱԶPreparedStatementԿʡһ +maxOpenPreparedStatements=20 \ No newline at end of file diff --git a/.svn/pristine/4d/4dac32f42172c79a34d3025bd61fcf2aa01d63cd.svn-base b/.svn/pristine/4d/4dac32f42172c79a34d3025bd61fcf2aa01d63cd.svn-base new file mode 100644 index 0000000..aa932e0 Binary files /dev/null and b/.svn/pristine/4d/4dac32f42172c79a34d3025bd61fcf2aa01d63cd.svn-base differ diff --git a/.svn/pristine/50/508647cd6b88c2e410b025b07604ffb2fee64cf9.svn-base b/.svn/pristine/50/508647cd6b88c2e410b025b07604ffb2fee64cf9.svn-base new file mode 100644 index 0000000..c112237 --- /dev/null +++ b/.svn/pristine/50/508647cd6b88c2e410b025b07604ffb2fee64cf9.svn-base @@ -0,0 +1,133 @@ +package GPA; + +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +public class LogClass { + private static String log_path = new LogClass().getBasePath()+File.separator+"LogFile"+File.separator+new SimpleDateFormat("yyyy-MM-dd").format(new Date()); // 日志保存路径 + private static String log_name = "gantry_pass_all_log";// 日志文件名(前部分) + private static boolean console_out = true;// 日志是否输出到控制台 + /* + * yyyy-MM: 每个月更新一个log日志 yyyy-ww: 每个星期更新一个log日志 yyyy-MM-dd: 每天更新一个log日志 + * yyyy-MM-dd-a: 每天的午夜和正午更新一个log日志 yyyy-MM-dd-HH: 每小时更新一个log日志 + * yyyy-MM-dd-HH-mm: 每分钟更新一个log日志 + */ + private static String update_hz = "yyyy-MM-dd-HH";// 更新日志的频率,每小时更新一次 + private static long max_log_size = 1024 * 1024 * 10;// 单个日志文件最大大小 10M + + public static void debug(String msg) { + runWrite(msg, log_path, log_name + "_debug"); + } + + public static void info(String msg) { + runWrite(msg, log_path, log_name + "_info"); + } + + public static void error(String msg) { + runWrite(msg, log_path, log_name + "_error"); + } + + public static void delete(String msg) { + runWrite(msg, log_path, log_name + "_delete"); + } + + public static void test(String msg) { + runWrite(msg, log_path, log_name + "_test"); + } + public static void exception(Exception e) { + String errorMessage = e.getMessage() + ""; + StackTraceElement[] eArray = e.getCause().getStackTrace(); + for (int i = 0; i < eArray.length; i++) { + String className = e.getCause().getStackTrace()[i].getClassName(); + String MethodName = e.getCause().getStackTrace()[i].getMethodName(); + int LineNumber = e.getCause().getStackTrace()[i].getLineNumber(); + errorMessage = errorMessage + "\n\t---" + className + "." + MethodName + ",\tline:" + LineNumber; + } + logResult(errorMessage, log_path, log_name + "_exception"); + } + + /** + * 日志根目录 + * + * @return + */ + public String getBasePath() { + //String s = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); + if (System.getProperty("os.name").contains("dows")) { + path = path.substring(1, path.length()); + } + if (path.contains("jar")) { + path = path.substring(0, path.lastIndexOf(".")); + return path.substring(0, path.lastIndexOf("/")); + } + return path; + } + + /** + * 写日志 + * + * @param sWord + * 要写入日志里的文本内容 + */ + public static void logResult(String sWord) { + runWrite(sWord, log_path, log_name); + } + + public static void logResult(String sWord, String logPath, String logName) { + logPath=new LogClass().getBasePath()+File.separator+"LogFile"+File.separator+new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + FileWriter writer = null; + Lock lck=new ReentrantLock(); + lck.lock(); + try { + File dir = new File(logPath); + if (!dir.exists()) { + dir.mkdirs(); + } + String dt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()); + File f = new File(logPath+File.separator + logName + "_" + new SimpleDateFormat(update_hz).format(new Date()) + ".txt"); + if (!f.exists()) { + f.createNewFile(); + sWord = "DL 日志\r\n" + "[" + dt + "]\t" + sWord; + } else { + long logSize = f.length(); + // 文件大小超过10M,备份 + if (logSize >= max_log_size) { + String backLogName = logPath + logName + + new SimpleDateFormat("_yyyy-MM-dd.HHmmss.SSS").format(new Date()) + ".txt"; + f.renameTo(new File(backLogName)); + } + } + writer = new FileWriter(f, true); + writer.write("[" + dt + "]\t" + sWord + "\r\n"); + if (console_out) { + System.out.println("[" + dt + "]\t" + sWord); + } + } catch (Exception e) { + System.out.println("记录日志异常:" + e.toString()); + lck.unlock(); + e.printStackTrace(); + + } finally { + if (writer != null) { + try { + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + lck.unlock(); + } + } + public static void runWrite(final String sWord,final String logPath,final String logName) { + new Thread() { + public void run() { + logResult(sWord, logPath, logName); + } + }.start();; + } +} \ No newline at end of file diff --git a/.svn/pristine/54/54a5c0567fd2fc77970832af5f6bb49cdb34c14d.svn-base b/.svn/pristine/54/54a5c0567fd2fc77970832af5f6bb49cdb34c14d.svn-base new file mode 100644 index 0000000..3c879ce Binary files /dev/null and b/.svn/pristine/54/54a5c0567fd2fc77970832af5f6bb49cdb34c14d.svn-base differ diff --git a/.svn/pristine/56/56d31b1d043578acaf512d459e70f80c43a02110.svn-base b/.svn/pristine/56/56d31b1d043578acaf512d459e70f80c43a02110.svn-base new file mode 100644 index 0000000..346aeb2 Binary files /dev/null and b/.svn/pristine/56/56d31b1d043578acaf512d459e70f80c43a02110.svn-base differ diff --git a/.svn/pristine/57/57d92619f9498eb64f338a8b1ca615d777e947ea.svn-base b/.svn/pristine/57/57d92619f9498eb64f338a8b1ca615d777e947ea.svn-base new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.svn/pristine/57/57d92619f9498eb64f338a8b1ca615d777e947ea.svn-base @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.svn/pristine/58/58dddb59811e89617612709765c87bd5ee0f38ce.svn-base b/.svn/pristine/58/58dddb59811e89617612709765c87bd5ee0f38ce.svn-base new file mode 100644 index 0000000..bac9153 --- /dev/null +++ b/.svn/pristine/58/58dddb59811e89617612709765c87bd5ee0f38ce.svn-base @@ -0,0 +1,172 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +import java.util.ArrayList; +import java.util.List; + +public class GAMIN { + public static void main(String[] args) throws Exception { + + List list=new startGPA().startUp(); + + + + } + + private List Main_void(String dbType) throws Exception { + boolean flag=true; + List stop_list=new ArrayList<>(); + List state_list=new ArrayList<>(); + boolean runAble=true; + startGPA s=new startGPA(); + stop_list.clear(); + try { + JdbcTemplate jdbcTemplate=new JdbcTemplate(new DBUtil().Hikar_DataSource()); + + List list_PARTICIPANT = CommonHelp.getListBySql("select * from TB_PARTICIPANT",jdbcTemplate); + + List list_LINE_TABLE=CommonHelp.getListBySql("select LINENAME,GBLINEID from line_table",jdbcTemplate); + + List list_FEEUNIT_TABLE=CommonHelp.getListBySql("select ID,NAME FROM FEEUNIT_TABLE",jdbcTemplate); + + List list_GANTRY_TABLE=CommonHelp.getListBySql("select * from gantry_table",jdbcTemplate); + + int GPA_THREAD_COUNT_1=7; + //正常数据处理线程,4个 + + if (dbType.equals("1")) {//oracle + for (int i = 0; i < GPA_THREAD_COUNT_1; i++) { + String sql="select * from gantry_pass_center where ishandle=0 and isout=1 and issecond=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut") + " and ora_hash(passid,"+(GPA_THREAD_COUNT_1-1)+")="+i; + + Thread thread=new GetAllData((i+11),0,sql,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + } else if (dbType.equals("2")) {//DM + for (int i = 0; i < GPA_THREAD_COUNT_1; i++) { + String sql="select * from gantry_pass_center where ishandle=0 and isout=1 and issecond=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut") + " and DM_HASH(passid)%"+GPA_THREAD_COUNT_1+"="+i+" and rownum<=1500"; + + Thread thread=new GetAllData((i+11),0,sql,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + } + //超时数据处理线程,3个 + + if (dbType.equals("1")) {//oracle + //超时第一种情况--有出口但是累计金额不相等的 + String sql2_1_1 = "select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + + List listTemp=new ArrayList<>(); + listTemp.add(sql2_1_1); + listTemp.add(sql2_2_1); + listTemp.add(sql2_3_1); + + for (int i = 0; i < listTemp.size(); i++) { + + Thread thread=new GetAllData((21+i),1,listTemp.get(i).toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + + } else if (dbType.equals("2")) {//DM + + //超时第一种情况--有出口但是累计金额不相等的技巧口诀图解 + String sql2_1_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + + List listTemp=new ArrayList<>(); + listTemp.add(sql2_1_1); + listTemp.add(sql2_2_1); + listTemp.add(sql2_3_1); + + for (int i = 0; i < listTemp.size(); i++) { + + Thread thread=new GetAllData((21+i),1,listTemp.get(i).toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + } + //二次数据上传处理线程,1个 + String sql3_1 = ""; + if (dbType.equals("1")) {//oracle + sql3_1 = "select * from gantry_pass_center where ishandle=1 and issecond=1 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut"); + + Thread thread3_1=new GetAllData(31,0,sql3_1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread3_1.start(); + + stop_list.add(thread3_1); + startGPA.State state3_1=new startGPA.State(); + state3_1.ThreadId=thread3_1.getId(); + state3_1.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state3_1); + } else if (dbType.equals("2")) {//DM + sql3_1 = "select * from gantry_pass_center where ishandle=1 and issecond=1 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut"); + + Thread thread3_1=new GetAllData(31,0,sql3_1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s);; + thread3_1.start(); + } + //删除中间表数据线程,1个 + if (dbType.equals("1")) { + String sql4_1 = "delete gantry_pass_center where ROUND(TO_NUMBER(sysdate - handletime))>25"; + deleteCenter deleteC=new deleteCenter(jdbcTemplate,sql4_1,runAble,s); + Thread thread=new Thread(deleteC); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + //预分账线程,7个 + int THREAD_GANTRY_STAT_COUNT=7; + for (int i = 0; i < THREAD_GANTRY_STAT_COUNT; i++) { + String sql="select * from gantry_pass_stat_temp where ora_hash(tradeid,"+(THREAD_GANTRY_STAT_COUNT-1)+")="+i+" and rownum<=1000"; + GetGantryStat getGantryStat=new GetGantryStat(jdbcTemplate,sql,runAble,s); + Thread thread=new Thread(getGantryStat); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + } + catch (Exception e){ + flag=false; + e.printStackTrace(); + LogClass.debug(e.toString()); + } + finally { + return stop_list; + } + + } +} diff --git a/.svn/pristine/5b/5b371965872f89ed74702ceec901b12f0074081e.svn-base b/.svn/pristine/5b/5b371965872f89ed74702ceec901b12f0074081e.svn-base new file mode 100644 index 0000000..8240f40 Binary files /dev/null and b/.svn/pristine/5b/5b371965872f89ed74702ceec901b12f0074081e.svn-base differ diff --git a/.svn/pristine/5d/5dc6924f8efe66aa4f03411c2846e79c4b089d69.svn-base b/.svn/pristine/5d/5dc6924f8efe66aa4f03411c2846e79c4b089d69.svn-base new file mode 100644 index 0000000..d64bcdf Binary files /dev/null and b/.svn/pristine/5d/5dc6924f8efe66aa4f03411c2846e79c4b089d69.svn-base differ diff --git a/.svn/pristine/5e/5e28dec64023960b0f584d21f0eb641c042db154.svn-base b/.svn/pristine/5e/5e28dec64023960b0f584d21f0eb641c042db154.svn-base new file mode 100644 index 0000000..2f3eae7 Binary files /dev/null and b/.svn/pristine/5e/5e28dec64023960b0f584d21f0eb641c042db154.svn-base differ diff --git a/.svn/pristine/60/60b7283c2d64a45877ed476a5b41edda658d577b.svn-base b/.svn/pristine/60/60b7283c2d64a45877ed476a5b41edda658d577b.svn-base new file mode 100644 index 0000000..aa0e509 Binary files /dev/null and b/.svn/pristine/60/60b7283c2d64a45877ed476a5b41edda658d577b.svn-base differ diff --git a/.svn/pristine/61/6172ddb767ab95b9a475c5c9447b92eff7818f9f.svn-base b/.svn/pristine/61/6172ddb767ab95b9a475c5c9447b92eff7818f9f.svn-base new file mode 100644 index 0000000..390e490 --- /dev/null +++ b/.svn/pristine/61/6172ddb767ab95b9a475c5c9447b92eff7818f9f.svn-base @@ -0,0 +1,95 @@ + +package com.trkf.feemoduleservice; + +import java.net.MalformedURLException; +import java.net.URL; +import javax.xml.namespace.QName; +import javax.xml.ws.Service; +import javax.xml.ws.WebEndpoint; +import javax.xml.ws.WebServiceClient; +import javax.xml.ws.WebServiceException; +import javax.xml.ws.WebServiceFeature; + + +/** + * This class was generated by the JAX-WS RI. + * JAX-WS RI 2.2.9-b130926.1035 + * Generated source version: 2.2 + * + */ +@WebServiceClient(name = "FeeModuleServiceService", targetNamespace = "http://FeeModuleService.trkf.com/", wsdlLocation = "http://10.15.99.78:8081/FeeModuleService/FeeModuleService?wsdl") +public class FeeModuleServiceService + extends Service +{ + + private final static URL FEEMODULESERVICESERVICE_WSDL_LOCATION; + private final static WebServiceException FEEMODULESERVICESERVICE_EXCEPTION; + private final static QName FEEMODULESERVICESERVICE_QNAME = new QName("http://FeeModuleService.trkf.com/", "FeeModuleServiceService"); + + static { + URL url = null; + WebServiceException e = null; + try { + url = new URL("http://10.15.99.78:8080/FeeModuleService/FeeModuleService?wsdl"); + //url = new URL("http://10.15.99.78:8081/FeeModuleService/FeeModuleService?wsdl"); + } catch (MalformedURLException ex) { + e = new WebServiceException(ex); + } + FEEMODULESERVICESERVICE_WSDL_LOCATION = url; + FEEMODULESERVICESERVICE_EXCEPTION = e; + } + + public FeeModuleServiceService() { + super(__getWsdlLocation(), FEEMODULESERVICESERVICE_QNAME); + } + + public FeeModuleServiceService(WebServiceFeature... features) { + super(__getWsdlLocation(), FEEMODULESERVICESERVICE_QNAME, features); + } + + public FeeModuleServiceService(URL wsdlLocation) { + super(wsdlLocation, FEEMODULESERVICESERVICE_QNAME); + } + + public FeeModuleServiceService(URL wsdlLocation, WebServiceFeature... features) { + super(wsdlLocation, FEEMODULESERVICESERVICE_QNAME, features); + } + + public FeeModuleServiceService(URL wsdlLocation, QName serviceName) { + super(wsdlLocation, serviceName); + } + + public FeeModuleServiceService(URL wsdlLocation, QName serviceName, WebServiceFeature... features) { + super(wsdlLocation, serviceName, features); + } + + /** + * + * @return + * returns FeeModuleService + */ + @WebEndpoint(name = "FeeModuleServicePort") + public FeeModuleService getFeeModuleServicePort() { + return super.getPort(new QName("http://FeeModuleService.trkf.com/", "FeeModuleServicePort"), FeeModuleService.class); + } + + /** + * + * @param features + * A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the features parameter will have their default values. + * @return + * returns FeeModuleService + */ + @WebEndpoint(name = "FeeModuleServicePort") + public FeeModuleService getFeeModuleServicePort(WebServiceFeature... features) { + return super.getPort(new QName("http://FeeModuleService.trkf.com/", "FeeModuleServicePort"), FeeModuleService.class, features); + } + + private static URL __getWsdlLocation() { + if (FEEMODULESERVICESERVICE_EXCEPTION!= null) { + throw FEEMODULESERVICESERVICE_EXCEPTION; + } + return FEEMODULESERVICESERVICE_WSDL_LOCATION; + } + +} diff --git a/.svn/pristine/62/62c03a069082c61fe3ce26142bd146b2d04f6091.svn-base b/.svn/pristine/62/62c03a069082c61fe3ce26142bd146b2d04f6091.svn-base new file mode 100644 index 0000000..08f95ce --- /dev/null +++ b/.svn/pristine/62/62c03a069082c61fe3ce26142bd146b2d04f6091.svn-base @@ -0,0 +1,140 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +import java.util.List; +import java.util.Map; + +public class GetGantryStat implements Runnable{ + private JdbcTemplate jdbcTemplate; + private String sql; + private boolean runAble; + private startGPA s; + public GetGantryStat(JdbcTemplate jdbcTemplate,String sql,boolean runAble,startGPA s){ + this.jdbcTemplate=jdbcTemplate; + this.sql=sql; + this.runAble=runAble; + this.s=s; + } + @Override + public void run() { + while (runAble){ + try { + s.UpdateState(Thread.currentThread().getId()); + List list=jdbcTemplate.queryForList(sql); + String tollIntervalsId=""; + String stano=""; + String roadno=""; + StringBuilder delete_tradeid=new StringBuilder(); + if (list.size()>0){ + for (int i = 0; i < list.size(); i++) { + try { + Map map=(Map) list.get(i); + String[] tollIntervalsId_temp=map.get("TOLLINTERVALID")==null?null:map.get("TOLLINTERVALID").toString().split("\\|"); + String[] feeGroup_temp=map.get("FEEGROUP")==null?null:map.get("FEEGROUP").toString().split("\\|"); + String[] payfeeGroup_temp=map.get("PAYFEEGROUP")==null?null:map.get("PAYFEEGROUP").toString().split("\\|"); + String[] specialtype_temp=null; + if (map.get("SPECIALTYPE")!=null){ + if (map.get("SPECIALTYPE").toString().replace(" ","").length()>0){ + specialtype_temp=map.get("SPECIALTYPE").toString().split("\\|"); + } + } + + String is_have_gantry_trade_sql="SELECT * FROM gantry_trade_mass where gantryid='" +map.get("GANTRYID").toString() + "' and classdate=TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " +map.get("MEDIATYPE") + " AND VEHICLETYPE = " +map.get("FEEVEHICLETYPE"); + List list_trade_ishave=jdbcTemplate.queryForList(is_have_gantry_trade_sql); + + String boundarytype_sql = "select boundarytype from gantry_table where id='" + map.get("GANTRYID").toString() + "'"; + + List boundary=jdbcTemplate.queryForList(boundarytype_sql); + if (boundary.size()>0){ + int boundarytype=Integer.valueOf(((Map) boundary.get(0)).get("BOUNDARYTYPE").toString()); + if (list_trade_ishave.size()>0){ + int feesuccnum=0; + int feefailenum=0; + if (map.get("FEECALCRESULT").toString().equals("0") && map.get("TRADERESULT").toString().equals("0")){ + feesuccnum = 1; + } + else { + feefailenum = 1; + } +// JSONObject temp=new JSONObject(((Map) list_trade_ishave.get(0)).get("SPECIALTYPE").toString()); +// if (specialtype_temp!=null){ +// for (int j = 0; j < specialtype_temp.length; j++) { +// String special_value=""; +// if (specil_list.contains(Integer.valueOf(specialtype_temp[j]))){ +// +// } +// } +// } + + String update_gantry_trade = "update gantry_trade_mass set boundarytype = " + boundarytype + ", feesuccnum = feesuccnum+" + feesuccnum + ", feefailenum = feefailenum+" + feefailenum + ", specialtype = '' where gantryid = '" + map.get("GANTRYID").toString() + "' and classdate = TO_DATE('" +map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') and mediatype = " + map.get("MEDIATYPE") + " and vehicletype = " + map.get("FEEVEHICLETYPE"); + jdbcTemplate.update(update_gantry_trade); + + } + else { + String insert_gantry_trade= "insert into gantry_trade_mass (gantryid, classdate, mediatype, vehicletype, boundarytype, feesuccnum, feefailenum, specialtype, feelostnum) values ('" +map.get("GANTRYID").toString() + "', TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd'), " +map.get("MEDIATYPE") + ", " + map.get("FEEVEHICLETYPE") + ", " + boundarytype + ", 0, 0, '{}', 0) "; + jdbcTemplate.update(insert_gantry_trade); + } + + if (tollIntervalsId_temp!=null && feeGroup_temp!=null && payfeeGroup_temp!=null){ + if (tollIntervalsId_temp.length== feeGroup_temp.length && feeGroup_temp.length==payfeeGroup_temp.length){ + for (int j = 0; j < tollIntervalsId_temp.length; j++) { + if (tollIntervalsId_temp[j].length()>=16){ + tollIntervalsId=tollIntervalsId_temp[j].substring(0,16); + String stano_roadno_sql = "select ostano,oroadno from feeunit_table where id='" + tollIntervalsId + "'"; + List stano_roadno_list=jdbcTemplate.queryForList(stano_roadno_sql); + if (stano_roadno_list.size()>0){ + stano=((Map)stano_roadno_list.get(0)).get("OSTANO").toString(); + roadno=((Map)stano_roadno_list.get(0)).get("OROADNO").toString(); + } + else { + stano="0"; + roadno="0"; + } + + String is_have_sql = "SELECT 1 FROM DUAL WHERE EXISTS (SELECT * FROM gantry_stat where FEEUNITID='" + tollIntervalsId + "' and classdate=TO_DATE('" +map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " +map.get("MEDIATYPE") + " AND VEHTYPE = " +map.get("FEEVEHICLETYPE") + " AND ROADNO = " + roadno + " and STANO=" + stano + ")"; + List list_ishave=jdbcTemplate.queryForList(is_have_sql); + if (list_ishave.size()>0){ + String update_sql = "UPDATE GANTRY_STAT SET VEHCOUNT = VEHCOUNT + 1, CASH = TO_NUMBER(CASH) +TO_NUMBER(" + (payfeeGroup_temp[j].replace(" ","").length() == 0 ? "0" : payfeeGroup_temp[j]) + "), INCASH = TO_NUMBER(INCASH) +TO_NUMBER(" + (feeGroup_temp[j].replace(" ","").length() == 0 ? "0" : feeGroup_temp[j]) + ") where FEEUNITID='" + tollIntervalsId + "' and classdate=TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " + map.get("MEDIATYPE") + " AND VEHTYPE = " + map.get("FEEVEHICLETYPE") + " AND ROADNO = " + roadno; + jdbcTemplate.update(update_sql); + } + else { + String insert_sql = "INSERT INTO GANTRY_STAT(ROADNO,STANO,CLASSDATE,FEEUNITID,MEDIATYPE, VEHTYPE,VEHCLASS,SPECIALTYPE,AXLECOUNT,VEHCOUNT,TRADERESULT,HOLIDAYSTATE,VALIDSTATUS,CASH,INCASH,FEESUMLOCALAFTER,BACKUP1,BACKUP2,BACKUP3,BACKUP4,DATEMARK) VALUES(" + roadno + ", " + stano + ", TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd'), '" + tollIntervalsId + "', " + map.get("MEDIATYPE") + "," + map.get("FEEVEHICLETYPE") + ", 0, 0, 2, 1, 0, 0, 0," + (payfeeGroup_temp[j].replace(" ","").length() == 0 ? "0" : payfeeGroup_temp[j]) + ", " + (feeGroup_temp[j].replace(" ","").length() == 0 ? "0" : feeGroup_temp[j]) + ", 0, 0, 0, '0','0', SYSDATE)"; + jdbcTemplate.update(insert_sql); + } + } + } + + } + + } + + + String delete_sql="delete gantry_pass_stat_temp where tradeid='" +map.get("TRADEID") + "' "; + jdbcTemplate.update(delete_sql); + } + else { + LogClass.error("预分账错误日志:门架ID不存在,"+((Map) list.get(i)).get("TRADEID")); + } + + + + + } + catch (Exception e){ + LogClass.error("预分账错误日志:"+e.toString()+","+((Map) list.get(i)).get("TRADEID")); + } + } + } + + Thread.sleep(1000*30); + + } + catch (Exception e){ + LogClass.error("预拆分错误"+e.toString()); + } + + + } + } +} diff --git a/.svn/pristine/65/65ffe38cc25853e4b3f1f719a5fe3e8fb760c220.svn-base b/.svn/pristine/65/65ffe38cc25853e4b3f1f719a5fe3e8fb760c220.svn-base new file mode 100644 index 0000000..2f6d612 --- /dev/null +++ b/.svn/pristine/65/65ffe38cc25853e4b3f1f719a5fe3e8fb760c220.svn-base @@ -0,0 +1,341 @@ +package GPA; + + +import org.springframework.jdbc.core.JdbcTemplate; + +import java.text.SimpleDateFormat; +import java.util.*; + +public class startGPA { + private final int MAX_ERROR_MSG=1000; + private List stop_list; + private List state_list; + private List ErrorMsg_list; + { + stop_list=new ArrayList<>(); + state_list=new ArrayList<>(); + ErrorMsg_list=new ArrayList<>(); + } + + + public static class State{ + long ThreadId; + long StateUpdateTime; + } + + public synchronized void UpdateState(long ThreadId){ + for (int i = 0; i < state_list.size(); i++) { + State s=state_list.get(i); + if (s.ThreadId==ThreadId){ + s.StateUpdateTime=System.currentTimeMillis(); + state_list.set(i,s); + } + } + } + public synchronized Date GetRunState(){ + long minTime=0; + for (int i = 0; i < state_list.size(); i++) { + State s=state_list.get(i); + if (s.StateUpdateTime < minTime || minTime==0){ + minTime=s.StateUpdateTime; + } + } + return new Date(minTime); + } + + public void WriteLog(String info){ + + } + public synchronized boolean init(String jarPath){ + WriteLog("软件启动"); + return true; + } + + boolean runAble=true; + + + public synchronized void stop(){ + runAble=false; + for (int i = 0; i < stop_list.size(); i++) { + Thread thread=stop_list.get(i); + try { + LogClass.debug("开始停止"+thread); + thread.join(1000); + LogClass.debug("已停止"+thread); + } + catch (Exception e){ + WriteLog("停止线程错误:"+e.getMessage()); + LogClass.debug("程序停止异常"+e.getMessage()); + } + } + stop_list.clear(); + state_list.clear(); + WriteLog("线程停止"); + } + + public synchronized String[] GetErrorLog(){ + int MsgCount=ErrorMsg_list.size(); + if (MsgCount>MAX_ERROR_MSG){ + MsgCount=MAX_ERROR_MSG; + } + String[] ErrorLogs=new String[MsgCount]; + for (int i = 0; i < MsgCount; i++) { + ErrorLogs[i]=ErrorMsg_list.get(i); + } + for (int i = 0; i < MsgCount; i++) { + ErrorMsg_list.remove(0); + } + return ErrorLogs; + } + + public synchronized void SetErrorLog(int Type,int MsgCode,String info){ + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String ErrorInfo="{\"TYPE\":"+String.valueOf(Type)+",\"MSGCODE\":"+String.valueOf(MsgCode)+",\"MSG\":"+String.valueOf(info)+",\"DT\":\""+sdf.format(new Date())+"\"}"; + ErrorMsg_list.add(ErrorInfo); + while (ErrorMsg_list.size()>MAX_ERROR_MSG){ + ErrorMsg_list.remove(0); + } + } + + public synchronized void exit(){ + WriteLog("软件退出"); + } + + public synchronized List startUp() throws Exception { + return Main_void("1"); + } + + private List Main_voidTest(String dbType) throws Exception { + try { + JdbcTemplate jdbcTemplate=new JdbcTemplate(new DBUtil().Hikar_DataSource()); + String sql4_1 = "delete gantry_pass_center where ROUND(TO_NUMBER(sysdate - handletime))>25"; + + deleteCenter deleteC=new deleteCenter(jdbcTemplate,sql4_1,runAble,this); + Thread thread=new Thread(deleteC); + thread.start();//true + + + stop_list.add(thread);//false + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + + + for (int i = 0; i < stop_list.size(); i++) { + LogClass.error("线程ID:"+stop_list.get(i).getId()+"线程状态:"+stop_list.get(i).isAlive()); + } + } + catch (Exception e){ + e.printStackTrace(); + } + finally { + return stop_list; + } + + + + } + private JdbcTemplate jdbcTemplate; + { + try { + jdbcTemplate = new JdbcTemplate(new DBUtil().Hikar_DataSource()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private List Main_void(String dbType) throws Exception { + boolean flag=true; + //List starup_list=new ArrayList<>(); + stop_list.clear(); + runAble=true; + try { + + + + List list_PARTICIPANT = CommonHelp.getListBySql("select * from TB_PARTICIPANT",jdbcTemplate); + + List list_LINE_TABLE=CommonHelp.getListBySql("select LINENAME,GBLINEID from line_table",jdbcTemplate); + + List list_FEEUNIT_TABLE=CommonHelp.getListBySql("select ID,NAME FROM FEEUNIT_TABLE",jdbcTemplate); + + List list_GANTRY_TABLE=CommonHelp.getListBySql("select * from gantry_table",jdbcTemplate); + + int GPA_THREAD_COUNT_1=7; + //正常数据处理线程,4个 + + if (dbType.equals("1")) {//oracle + for (int i = 0; i < GPA_THREAD_COUNT_1; i++) { + String sql="select * from gantry_pass_center where ishandle=0 and isout=1 and issecond=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut") + " and ora_hash(passid,"+(GPA_THREAD_COUNT_1-1)+")="+i; + Thread thread=new GetAllData((i+11),0,sql,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + } else if (dbType.equals("2")) {//DM + for (int i = 0; i < GPA_THREAD_COUNT_1; i++) { + String sql="select * from gantry_pass_center where ishandle=0 and isout=1 and issecond=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut") + " and DM_HASH(passid)%"+GPA_THREAD_COUNT_1+"="+i+" and rownum<=1500"; + Thread thread=new GetAllData((i+11),0,sql,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + } + //超时数据处理线程,3个 + + if (dbType.equals("1")) {//oracle + //超时第一种情况--有出口但是累计金额不相等的 + + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + + + List> listTemp=new ArrayList<>(); + + for (int i = 0; i <= 6; i++) { + String sql2_1_1 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)="+i; + Map map=new HashMap(); + map.put("sql",sql2_1_1); + map.put("threadid",20+i+1); + listTemp.add(map); + } + Map map1=new HashMap(); + map1.put("sql",sql2_2_1); + map1.put("threadid",28); + listTemp.add(map1); + + Map map2=new HashMap(); + map2.put("sql",sql2_3_1); + map2.put("threadid",29); + listTemp.add(map2); + + for (int i = 0; i < listTemp.size(); i++) { + Map map=listTemp.get(i); + Thread thread=new GetAllData(21+i,1,map.get("sql").toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + + + +// //超时第一种情况--有出口但是累计金额不相等的 +// String sql2_1_1 = "select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); +// //超时第二种情况--累计金额相等但是没有出口的 +// String sql2_2_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); +// //超时第三种情况--没有出口累计金额也不相等的 +// String sql2_3_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); +// +// List listTemp=new ArrayList<>(); +// listTemp.add(sql2_1_1); +// listTemp.add(sql2_2_1); +// listTemp.add(sql2_3_1); +// +// for (int i = 0; i < listTemp.size(); i++) { +// +// Thread thread=new GetAllData((21+i),1,listTemp.get(i).toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); +// thread.start(); +// stop_list.add(thread); +// State state=new State(); +// state.ThreadId=thread.getId(); +// state.StateUpdateTime=System.currentTimeMillis(); +// state_list.add(state); +// } + + + } else if (dbType.equals("2")) {//DM + + //超时第一种情况--有出口但是累计金额不相等的技巧口诀图解 + String sql2_1_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + + List listTemp=new ArrayList<>(); + listTemp.add(sql2_1_1); + listTemp.add(sql2_2_1); + listTemp.add(sql2_3_1); + + for (int i = 0; i < listTemp.size(); i++) { + Thread thread=new GetAllData((21+i),1,listTemp.get(i).toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + } + //二次数据上传处理线程,1个 + String sql3_1 = ""; + if (dbType.equals("1")) {//oracle + sql3_1 = "select * from gantry_pass_center where ishandle=1 and issecond=1 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut"); + + Thread thread3_1=new GetAllData(31,0,sql3_1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread3_1.start(); + + stop_list.add(thread3_1); + State state3_1=new State(); + state3_1.ThreadId=thread3_1.getId(); + state3_1.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state3_1); + } else if (dbType.equals("2")) {//DM + sql3_1 = "select * from gantry_pass_center where ishandle=1 and issecond=1 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut"); + + Thread thread3_1= new GetAllData(31,0,sql3_1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread3_1.start(); + } + //删除中间表数据线程,1个 + if (dbType.equals("1")) { + String sql4_1 = "delete gantry_pass_center where ROUND(TO_NUMBER(sysdate - handletime))>25"; + deleteCenter deleteC=new deleteCenter(jdbcTemplate,sql4_1,runAble,this); + Thread thread=new Thread(deleteC); + thread.start(); +// stop_list.add(thread); +// State state=new State(); +// state.ThreadId=thread.getId(); +// state.StateUpdateTime=System.currentTimeMillis(); +// state_list.add(state); + } + //预分账线程,7个 + int THREAD_GANTRY_STAT_COUNT=7; + for (int i = 0; i < THREAD_GANTRY_STAT_COUNT; i++) { + String sql="select * from gantry_pass_stat_temp where ora_hash(tradeid,"+(THREAD_GANTRY_STAT_COUNT-1)+")="+i+" and rownum<=1000"; + GetGantryStat getGantryStat=new GetGantryStat(jdbcTemplate,sql,runAble,this); + Thread thread=new Thread(getGantryStat); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + } + catch (Exception e){ + flag=false; + e.printStackTrace(); + LogClass.debug(e.toString()); + } + finally { + return stop_list; + } + + } + +} diff --git a/.svn/pristine/6d/6d7f98e2edc909a4f5343898d447e94a8b685a0c.svn-base b/.svn/pristine/6d/6d7f98e2edc909a4f5343898d447e94a8b685a0c.svn-base new file mode 100644 index 0000000..aa9fc9f Binary files /dev/null and b/.svn/pristine/6d/6d7f98e2edc909a4f5343898d447e94a8b685a0c.svn-base differ diff --git a/.svn/pristine/75/75158a4179dc0779f503ab03e67a9b8965ad599e.svn-base b/.svn/pristine/75/75158a4179dc0779f503ab03e67a9b8965ad599e.svn-base new file mode 100644 index 0000000..b9553e7 Binary files /dev/null and b/.svn/pristine/75/75158a4179dc0779f503ab03e67a9b8965ad599e.svn-base differ diff --git a/.svn/pristine/75/75f7e9df118643ba160a326d2bdc04addcc209d5.svn-base b/.svn/pristine/75/75f7e9df118643ba160a326d2bdc04addcc209d5.svn-base new file mode 100644 index 0000000..03e9786 --- /dev/null +++ b/.svn/pristine/75/75f7e9df118643ba160a326d2bdc04addcc209d5.svn-base @@ -0,0 +1,35 @@ + + + + a.OBUISSUEID,a.GANTRYID,a.FEEPROVBEGINHEX,a.ENTOLLSTATIONHEX,a.PASSID,a.ENTIME,a.PAYFEE,a.FEE,a.DISCOUNTFEE,a.CPUCARDTYPE,a.CPUCARDID,a.OBUSIGN,a.VEHICLEPLATE,a.TOLLINTERVALID,a.PAYFEEGROUP,a.FEEGROUP,a.VEHICLESIGN,a.FEEVEHICLETYPE,a.VEHICLETYPE,a.DISCOUNTTYPE,a.PROVINCEDISCOUNTFEE,a.ORIGINFEE,a.TRANSTIME,a.OBUSN,b.NAME,a.OBUPROVPAYFEESUMAFTER,a.OBUPROVFEESUMAFTER,a.FEESPARE1,a.OBUVEHICLEPLATE,a.CPUVEHICLEPLATE,a.FEESUMLOCALAFTER,a.CPUNETID,a.OBUPROVTRADESUCCNUMAFTER,a.TRADEID,a.VEHICLEUSERTYPE,a.AXLECOUNT,a.LASTGANTRYHEX,a.MEDIATYPE,a.FEECALCRESULT, a.GANTRYTYPE,'' "GANTRYKEY",'' "GANTRYVERIFY",a.OBUFEESUMAFTER,a.OBUTOTALTRADESUCCNUMAFTER,a.NOCARDTIMESAFTER,a.CARDFEESUMAFTER,a.PROVINCENUMAFTER,a.TOTALWEIGHT,a.IDENTIFYVEHICLETYPE,a.VEHICLECLASS,a.TAC,a.TRANSFEE,a.TERMINALTRANSNO,a.TRANSTYPE,a.TERMINALNO,a.ALGORITHMIDENTIFIER,a.RATEVERSION,a.VEHICLEPICID,'' "DECRIPTION",a.OBUMAC,a.KEYVERSION,to_number(substr(a.gantryOrderNum,0,1)) "DIRECTION",a.OBUELECTRICAL,b.GANTRYHEX,a.FEEINFO1,a.FEEINFO2,a.FEEINFO3,a.CPUISSUEID,a.TRADERESULT,a.OBUTRADERESULT,a.VEHICLESEAT + + G001215001000220010|G001215001000220020|S002715001002610010|S002715001002610020|G002515001000610010|G002515001000610020|G002515001000220010|G002515001000220020|G001015003000220010|G001015003000220020|G181715005000810010|G181715005000810020|G004515004001210010|G004515004001210020|G001615004000220010|G001615004000220020|G251115002000220010|G251115002000220020|G006515003001410010|G006515003001410020|G000615001000220010|G000615001000220020|G000715001000220010|G000715001000220020|G005515004010810010|G005515004010810020|G005915001001410010|G005915001001410020|G000615010001410010|G000615010001410020|G000715003004210010|G000715003004210020|G001815001000220010|G001815001000220020|G004515001000220010|G004515001000220020|S003115004001010010|S003115004001010020 + + G001215001000210010|G001215001000210020|S002715001002620010|S002715001002620020|G002515001000210010|G002515001000210020|G002515001000620010|G002515001000620020|G001015003000210010|G001015003000210020|G181715005000820010|G181715005000820020|G001615004000210010|G001615004000210020|G004515004001220010|G004515004001220020|G251115002000210010|G251115002000210020|G000615001000210010|G000615001000210020|G000715001000210010|G000715001000210020|G006515003001420010|G006515003001420020|G005515004010820010|G005515004010820020|G005915001001420010|G005915001001420020|G000615010001420010|G000615010001420020|G000715003004220010|G000715003004220020|G001815001000210010|G001815001000210020|G004515001000210010|G004515001000210020|S003115004001020010|S003115004001020020 + + [{"GANTRYHEX":"160302","GANTRYNAME":"蒙冀界-兴和东","ENSTAHEX":"13000000"},{"GANTRYHEX":"160802","GANTRYNAME":"蒙黑界-阿荣旗南","ENSTAHEX":"23000000"},{"GANTRYHEX":"160B02","GANTRYNAME":"蒙吉界-白音乌苏","ENSTAHEX":"22000000"},{"GANTRYHEX":"160E3E","GANTRYNAME":"平庄主线-平庄","ENSTAHEX":"21000000"},{"GANTRYHEX":"161024","GANTRYNAME":"清水河界-十七沟","ENSTAHEX":"14000000"},{"GANTRYHEX":"161302","GANTRYNAME":"那木斯-金宝屯","ENSTAHEX":"22000000"},{"GANTRYHEX":"161402","GANTRYNAME":"好力堡-甘旗卡","ENSTAHEX":"21000000"},{"GANTRYHEX":"161602","GANTRYNAME":"欧里主线-巴彦塔拉","ENSTAHEX":"22000000"},{"GANTRYHEX":"1703BA","GANTRYNAME":"蒙宁界-乌斯太","ENSTAHEX":"64000000"},{"GANTRYHEX":"17057A","GANTRYNAME":"黑鹰山主线-黑鹰山","ENSTAHEX":"62000000"},{"GANTRYHEX":"1709E2","GANTRYNAME":"三号地-贡宝拉格","ENSTAHEX":"13000000"},{"GANTRYHEX":"1712C8","GANTRYNAME":"巴润别立主线-长流水","ENSTAHEX":"64000000"},{"GANTRYHEX":"171306","GANTRYNAME":"布敦花-查日苏","ENSTAHEX":"21000000"},{"GANTRYHEX":"17163E","GANTRYNAME":"内蒙茅荆坝-美林","ENSTAHEX":"13000000"},{"GANTRYHEX":"171994","GANTRYNAME":"蒙晋界-丰镇","ENSTAHEX":"14000000"},{"GANTRYHEX":"171C2E","GANTRYNAME":"和林格尔主线-新店子互通","ENSTAHEX":"14000000"},{"GANTRYHEX":"171E2C","GANTRYNAME":"蒙陕界-兰家梁","ENSTAHEX":"61000000"},{"GANTRYHEX":"172844","GANTRYNAME":"龙口界-龙口","ENSTAHEX":"14000000"},{"GANTRYHEX":"161328","GANTRYNAME":"化德东至化德界门架","ENSTAHEX":"13000000"},{"GANTRYHEX":"171328","GANTRYNAME":"化德界至化德东门架","ENSTAHEX":"13000000"},{"GANTRYHEX":"160516","GANTRYNAME":"韩家营-兴和南","ENSTAHEX":"13000000"}] + + 0 + + ^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z挂学警港澳领试超外0-9]{3,9}_(0|1|2|3|4|5|6|7|11|12)$|^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-Z0-9][A-Z0-9]{4}应急_(0|1|2|3|4|5|6|7|11|12)$ + + 150201 + + 4080 + + 0 + + 30 + + 1 + + jdbc:oracle:thin:@//10.15.100.5:1521/torcl + nmgmpayadmin + nmgh90[] + + jdbc:dm://10.115.255.4:5236/NMGGJT + NMGGJT + 1234567890 + + http://10.15.99.78:8081/FeeModuleService/FeeModuleService + \ No newline at end of file diff --git a/.svn/pristine/7a/7a7bc6b1903b36872368d94f175ac8729eaa0018.svn-base b/.svn/pristine/7a/7a7bc6b1903b36872368d94f175ac8729eaa0018.svn-base new file mode 100644 index 0000000..97f94af --- /dev/null +++ b/.svn/pristine/7a/7a7bc6b1903b36872368d94f175ac8729eaa0018.svn-base @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.svn/pristine/7c/7c75f73162073a0481017e84045f083c66c7119d.svn-base b/.svn/pristine/7c/7c75f73162073a0481017e84045f083c66c7119d.svn-base new file mode 100644 index 0000000..5dc344f --- /dev/null +++ b/.svn/pristine/7c/7c75f73162073a0481017e84045f083c66c7119d.svn-base @@ -0,0 +1,3 @@ +[2022-06-20 10:49:20.530] DL 日志 +[2022-06-20 10:49:20.530] 测试数据 +[2022-06-20 10:52:32.239] 测试数据 diff --git a/.svn/pristine/7c/7c8ce5f1f712b23233b5c126f8dd222c94431065.svn-base b/.svn/pristine/7c/7c8ce5f1f712b23233b5c126f8dd222c94431065.svn-base new file mode 100644 index 0000000..40dc420 Binary files /dev/null and b/.svn/pristine/7c/7c8ce5f1f712b23233b5c126f8dd222c94431065.svn-base differ diff --git a/.svn/pristine/7e/7ebe47a35437fb44eb79311651a79ae7bf2e2793.svn-base b/.svn/pristine/7e/7ebe47a35437fb44eb79311651a79ae7bf2e2793.svn-base new file mode 100644 index 0000000..87f942f Binary files /dev/null and b/.svn/pristine/7e/7ebe47a35437fb44eb79311651a79ae7bf2e2793.svn-base differ diff --git a/.svn/pristine/85/850738179f6764af0dcfd25e8d7e369f72782241.svn-base b/.svn/pristine/85/850738179f6764af0dcfd25e8d7e369f72782241.svn-base new file mode 100644 index 0000000..49e670d --- /dev/null +++ b/.svn/pristine/85/850738179f6764af0dcfd25e8d7e369f72782241.svn-base @@ -0,0 +1,197 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class GAMIN { + public static void main(String[] args) throws Exception { + + List list=new startGPA().startUp(); + } + + private List Main_void(String dbType) throws Exception { + boolean flag=true; + List stop_list=new ArrayList<>(); + List state_list=new ArrayList<>(); + boolean runAble=true; + startGPA s=new startGPA(); + stop_list.clear(); + try { + JdbcTemplate jdbcTemplate=new JdbcTemplate(new DBUtil().Hikar_DataSource()); + + List list_PARTICIPANT = CommonHelp.getListBySql("select * from TB_PARTICIPANT",jdbcTemplate); + + List list_LINE_TABLE=CommonHelp.getListBySql("select LINENAME,GBLINEID from line_table",jdbcTemplate); + + List list_FEEUNIT_TABLE=CommonHelp.getListBySql("select ID,NAME FROM FEEUNIT_TABLE",jdbcTemplate); + + List list_GANTRY_TABLE=CommonHelp.getListBySql("select * from gantry_table",jdbcTemplate); + + int GPA_THREAD_COUNT_1=7; + //正常数据处理线程,4个 + + if (dbType.equals("1")) {//oracle + for (int i = 0; i < GPA_THREAD_COUNT_1; i++) { + String sql="select * from gantry_pass_center where ishandle=0 and isout=1 and issecond=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut") + " and ora_hash(passid,"+(GPA_THREAD_COUNT_1-1)+")="+i; + + Thread thread=new GetAllData((i+11),0,sql,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + } else if (dbType.equals("2")) {//DM + for (int i = 0; i < GPA_THREAD_COUNT_1; i++) { + String sql="select * from gantry_pass_center where ishandle=0 and isout=1 and issecond=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut") + " and DM_HASH(passid)%"+GPA_THREAD_COUNT_1+"="+i+" and rownum<=1500"; + + Thread thread=new GetAllData((i+11),0,sql,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + } + //超时数据处理线程,3个 + + if (dbType.equals("1")) {//oracle + //超时第一种情况--有出口但是累计金额不相等的 + + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + + + List> listTemp=new ArrayList<>(); + + for (int i = 0; i <= 6; i++) { + String sql2_1_1 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)="+i; + Map map=new HashMap(); + map.put("sql",sql2_1_1); + map.put("threadid",20+i+1); + listTemp.add(map); + } + Map map1=new HashMap(); + map1.put("sql",sql2_2_1); + map1.put("threadid",28); + listTemp.add(map1); + + Map map2=new HashMap(); + map2.put("sql",sql2_3_1); + map2.put("threadid",29); + listTemp.add(map2); + + + for (Map stringIntegerMap : listTemp) { + Thread thread=new GetAllData(Integer.parseInt(stringIntegerMap.get("threadid").toString()),1,stringIntegerMap.get("sql").toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + +// for (int i = 0; i < listTemp.size(); i++) { +// +// Thread thread=new GetAllData((21+i),1,listTemp.get(i).toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); +// thread.start(); +// stop_list.add(thread); +// startGPA.State state=new startGPA.State(); +// state.ThreadId=thread.getId(); +// state.StateUpdateTime=System.currentTimeMillis(); +// state_list.add(state); +// } + + + } else if (dbType.equals("2")) {//DM + + //超时第一种情况--有出口但是累计金额不相等的技巧口诀图解 + String sql2_1_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + + List listTemp=new ArrayList<>(); + listTemp.add(sql2_1_1); + listTemp.add(sql2_2_1); + listTemp.add(sql2_3_1); + + for (int i = 0; i < listTemp.size(); i++) { + + Thread thread=new GetAllData((21+i),1,listTemp.get(i).toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + } + //二次数据上传处理线程,1个 + String sql3_1 = ""; + if (dbType.equals("1")) {//oracle + sql3_1 = "select * from gantry_pass_center where ishandle=1 and issecond=1 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut"); + + Thread thread3_1=new GetAllData(31,0,sql3_1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread3_1.start(); + + stop_list.add(thread3_1); + startGPA.State state3_1=new startGPA.State(); + state3_1.ThreadId=thread3_1.getId(); + state3_1.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state3_1); + } else if (dbType.equals("2")) {//DM + sql3_1 = "select * from gantry_pass_center where ishandle=1 and issecond=1 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut"); + + Thread thread3_1=new GetAllData(31,0,sql3_1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s);; + thread3_1.start(); + } + //删除中间表数据线程,1个 + if (dbType.equals("1")) { + String sql4_1 = "delete gantry_pass_center where ROUND(TO_NUMBER(sysdate - handletime))>25"; + deleteCenter deleteC=new deleteCenter(jdbcTemplate,sql4_1,runAble,s); + Thread thread=new Thread(deleteC); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + //预分账线程,7个 + int THREAD_GANTRY_STAT_COUNT=7; + for (int i = 0; i < THREAD_GANTRY_STAT_COUNT; i++) { + String sql="select * from gantry_pass_stat_temp where ora_hash(tradeid,"+(THREAD_GANTRY_STAT_COUNT-1)+")="+i+" and rownum<=1000"; + GetGantryStat getGantryStat=new GetGantryStat(jdbcTemplate,sql,runAble,s); + Thread thread=new Thread(getGantryStat); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + } + catch (Exception e){ + flag=false; + e.printStackTrace(); + LogClass.debug(e.toString()); + } + finally { + return stop_list; + } + + } +} diff --git a/.svn/pristine/86/86752084083ad16e2b2993fd56717dc398efe9cd.svn-base b/.svn/pristine/86/86752084083ad16e2b2993fd56717dc398efe9cd.svn-base new file mode 100644 index 0000000..7c4a959 --- /dev/null +++ b/.svn/pristine/86/86752084083ad16e2b2993fd56717dc398efe9cd.svn-base @@ -0,0 +1,58 @@ +package GPA; + +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; + +import javax.sql.DataSource; +import java.io.InputStream; +import java.sql.*; +import java.time.OffsetDateTime; +import java.util.Properties; + +public class DBUtil { + + + public DataSource Hikar_DataSource() throws Exception {//这个是今天改的 + HikariConfig config=new HikariConfig(); + try { + String dbType=CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")){ + + config.setDriverClassName("oracle.jdbc.driver.OracleDriver"); + config.setJdbcUrl("jdbc:oracle:thin:@//10.15.100.5:1521/torcl"); + config.setUsername("nmgmpayadmin"); + config.setPoolName("100.5mpay"); + config.setPassword("nmgh90[]"); + config.addDataSourceProperty("v$session.osuser","DL"); + config.addDataSourceProperty("v$session.machine","10.15.99.66"); + config.addDataSourceProperty("v$session.program","gantry_pass_all"); + + config.setMaximumPoolSize(16); + config.setMinimumIdle(8); + config.setConnectionTestQuery("select 1 from dual"); + config.setAutoCommit(true); + } + else if (dbType.equals("2")){ + config.setDriverClassName("dm.jdbc.driver.DmDriver"); + config.setJdbcUrl(CommonHelp.GetConfigValue("JDBCDM_url")); + config.setUsername(CommonHelp.GetConfigValue("JDBCDM_user")); + config.setPassword(CommonHelp.GetConfigValue("JDBCDM_password")); + config.setPoolName("GT"); + config.setMaximumPoolSize(32); + config.setMinimumIdle(16); + config.setConnectionTestQuery("select 1 from dual"); + config.setAutoCommit(true); + } + + + } + catch (Exception e){ + System.out.println("连接池错误:"+e.toString()); + } + DataSource ds=new HikariDataSource(config); + + return ds; + } + + +} diff --git a/.svn/pristine/87/87e05f5d3a4ab7246940ecb6b234d363b54d1517.svn-base b/.svn/pristine/87/87e05f5d3a4ab7246940ecb6b234d363b54d1517.svn-base new file mode 100644 index 0000000..dba9493 Binary files /dev/null and b/.svn/pristine/87/87e05f5d3a4ab7246940ecb6b234d363b54d1517.svn-base differ diff --git a/.svn/pristine/8a/8a8b002649b9a5e7b5c92fdfb5c1c7003db18dd7.svn-base b/.svn/pristine/8a/8a8b002649b9a5e7b5c92fdfb5c1c7003db18dd7.svn-base new file mode 100644 index 0000000..1ed02e7 Binary files /dev/null and b/.svn/pristine/8a/8a8b002649b9a5e7b5c92fdfb5c1c7003db18dd7.svn-base differ diff --git a/.svn/pristine/8b/8b6477051a09d419baf797f906183571a65b9b82.svn-base b/.svn/pristine/8b/8b6477051a09d419baf797f906183571a65b9b82.svn-base new file mode 100644 index 0000000..45cf85c --- /dev/null +++ b/.svn/pristine/8b/8b6477051a09d419baf797f906183571a65b9b82.svn-base @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.svn/pristine/8d/8dacf9514f0c707cbbcdd6fd699e8940d42fb54e.svn-base b/.svn/pristine/8d/8dacf9514f0c707cbbcdd6fd699e8940d42fb54e.svn-base new file mode 100644 index 0000000..a7260f3 Binary files /dev/null and b/.svn/pristine/8d/8dacf9514f0c707cbbcdd6fd699e8940d42fb54e.svn-base differ diff --git a/.svn/pristine/8e/8ea61c0c6891af239ffecc60c076065984ffd527.svn-base b/.svn/pristine/8e/8ea61c0c6891af239ffecc60c076065984ffd527.svn-base new file mode 100644 index 0000000..83a1736 --- /dev/null +++ b/.svn/pristine/8e/8ea61c0c6891af239ffecc60c076065984ffd527.svn-base @@ -0,0 +1,2 @@ +[2022-06-24 10:57:00.262] DL 日志 +[2022-06-24 10:57:00.262] 测试数据 diff --git a/.svn/pristine/93/9358228c4c7c0c09bdb9614876b44d60758046e1.svn-base b/.svn/pristine/93/9358228c4c7c0c09bdb9614876b44d60758046e1.svn-base new file mode 100644 index 0000000..6429f00 Binary files /dev/null and b/.svn/pristine/93/9358228c4c7c0c09bdb9614876b44d60758046e1.svn-base differ diff --git a/.svn/pristine/94/941cd7776d1cd1db445333a85cdfb9e6c1a6519f.svn-base b/.svn/pristine/94/941cd7776d1cd1db445333a85cdfb9e6c1a6519f.svn-base new file mode 100644 index 0000000..a5035f0 --- /dev/null +++ b/.svn/pristine/94/941cd7776d1cd1db445333a85cdfb9e6c1a6519f.svn-base @@ -0,0 +1,18 @@ +package GPA; + + +import javax.sql.DataSource; +import java.io.InputStream; +import java.sql.Connection; +import java.sql.DriverManager; +import java.util.Properties; + +public class CommonCon { + + + public Connection getDMCon() throws Exception { + Class.forName("dm.jdbc.driver.DmDriver"); + Connection connection=DriverManager.getConnection(CommonHelp.GetConfigValue("JDBCDM_url"),CommonHelp.GetConfigValue("JDBCDM_user"),CommonHelp.GetConfigValue("JDBCDM_password")); + return connection; + } +} diff --git a/.svn/pristine/94/9462c540a6d17a543f10c06882276e6253955e17.svn-base b/.svn/pristine/94/9462c540a6d17a543f10c06882276e6253955e17.svn-base new file mode 100644 index 0000000..03b2291 --- /dev/null +++ b/.svn/pristine/94/9462c540a6d17a543f10c06882276e6253955e17.svn-base @@ -0,0 +1,60 @@ + +package com.trkf.feemoduleservice; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

getFee complex type Java ࡣ + * + *

ģʽƬָڴеԤݡ + * + *

+ * <complexType name="getFee">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="arg0" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "getFee", propOrder = { + "arg0" +}) +public class GetFee { + + protected String arg0; + + /** + * ȡarg0Եֵ + * + * @return + * possible object is + * {@link String } + * + */ + public String getArg0() { + return arg0; + } + + /** + * arg0Եֵ + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setArg0(String value) { + this.arg0 = value; + } + +} diff --git a/.svn/pristine/94/946d5a434161db90e07e9bf8f3816f6a579ca614.svn-base b/.svn/pristine/94/946d5a434161db90e07e9bf8f3816f6a579ca614.svn-base new file mode 100644 index 0000000..74f1ceb Binary files /dev/null and b/.svn/pristine/94/946d5a434161db90e07e9bf8f3816f6a579ca614.svn-base differ diff --git a/.svn/pristine/96/96f67b5488a1dfb458c3286b94c573df78685baa.svn-base b/.svn/pristine/96/96f67b5488a1dfb458c3286b94c573df78685baa.svn-base new file mode 100644 index 0000000..fb8e866 --- /dev/null +++ b/.svn/pristine/96/96f67b5488a1dfb458c3286b94c573df78685baa.svn-base @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.svn/pristine/97/9755cec21917b0de15ed3179ffea7e61810c0e79.svn-base b/.svn/pristine/97/9755cec21917b0de15ed3179ffea7e61810c0e79.svn-base new file mode 100644 index 0000000..f2dac63 --- /dev/null +++ b/.svn/pristine/97/9755cec21917b0de15ed3179ffea7e61810c0e79.svn-base @@ -0,0 +1,761 @@ +package GPA; + + +import com.alibaba.fastjson.JSONObject; +import org.springframework.jdbc.core.JdbcTemplate; + +import java.text.SimpleDateFormat; +import java.util.*; + +public class GPA_DATA { + + public GPA_DATA() throws Exception { + + } + + + public void GetAllETCData(String sql, int isTimeOut, int threadId, JdbcTemplate jdbcTemplate, + List list_PARTICIPANT, List list_LINE_TABLE, List list_FEEUNIT_TABLE,List list_GANTRY_TABLE) { + + //LogClass log=new LogClass(); + long startTime = 0; + long endTime = 0; + + try { + + startTime = System.currentTimeMillis(); + List list_passid = CommonHelp.getListBySql(sql, jdbcTemplate); + endTime = System.currentTimeMillis(); + if (list_passid.size() > 0) { + LogClass.debug(threadId + "passid查询用时:" + (endTime - startTime) + ",查询结果:" + list_passid.size() + "条"); + + StringBuilder sb_delete = new StringBuilder(); + + + for (int i = 0; i < list_passid.size(); i++) { + try { + + Map map_passid = (Map) list_passid.get(i); + System.out.println("进程ID:" + threadId + ",开始处理当前查询结果第" + (i + 1) + "条,PASSID:" + (map_passid.get("PASSID") == null ? "" : map_passid.get("PASSID").toString())); + sb_delete.append("'" + (map_passid.get("PASSID") == null ? "" : + map_passid.get("PASSID").toString()) + "',"); + String columns = CommonHelp.GetConfigValue("columns"); + + String searchType = (map_passid.get("PASSID") == null || map_passid.get("PASSID").toString().length()<=1) ? "" : + map_passid.get("PASSID").toString().substring(1, 2); + + String sql_gantry_pass = ""; + if (searchType.equals("1")) { + + if (map_passid.get("BACKUP3").toString().equals("OUT")) { + sql_gantry_pass = "select * from (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/" + + " " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left " + + "join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a" + + ".obutraderesult=0 and a.passid='" + (map_passid.get("PASSID") == null ? "" + : map_passid.get("PASSID").toString()) + "' and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " order by a.obuprovtradesuccnumafter,a.transtime ) t union all (select /*+rule(gantry_pass_out UX_GANTRY_PASS_OUT_PASSID)*/ " + columns + ",'gantry_pass_out' datasrc,paytype from gantry_pass_out a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a.obutraderesult=0 and a.passid='" + map_passid.get("PASSID").toString() + "' and a.provincenumafter>0 and rownum<=1)"; + } else { + sql_gantry_pass = "select * from (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/" + + " " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left " + + "join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a" + + ".obutraderesult=0 and a.passid='" + (map_passid.get("PASSID") == null ? "" + : map_passid.get("PASSID").toString()) + "' and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " order by a.obuprovtradesuccnumafter,a.transtime ) t union all (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/ " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and b.boundarytype=2 and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " and a.passid='" + (map_passid.get("PASSID") == null ? "" : map_passid.get("PASSID").toString()) + "' and instr(a.specialtype,'154')=0 ) union all (select /*+rule(gantry_pass_out UX_GANTRY_PASS_OUT_PASSID)*/ " + columns + ",'gantry_pass_out' datasrc,paytype from gantry_pass_out a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a.obutraderesult=0 and a.passid='" + map_passid.get("PASSID").toString() + "' and a.provincenumafter=" + map_passid.get("PROVINCENUMAFTER").toString() + " and a.provincenumafter>0 and rownum<=1)"; + } + + + } else if (searchType.equals("2")) { + if (map_passid.get("BACKUP3").toString().equals("OUT")) { + sql_gantry_pass = "select * from (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/" + + " " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left " + + "join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a" + + ".traderesult=0 and a.passid='" + (map_passid.get("PASSID") == null ? "" : + map_passid.get("PASSID").toString()) + "' and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " order by a.obuprovtradesuccnumafter,a.transtime) t union all (select /*+rule(gantry_pass_out UX_GANTRY_PASS_OUT_PASSID)*/ " + columns + ",'gantry_pass_out' datasrc,paytype from gantry_pass_out a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a.traderesult=0 and a.passid='" + map_passid.get("PASSID").toString() + "' and a.provincenumafter>0 and rownum<=1)"; + } else { + sql_gantry_pass = "select * from (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/" + + " " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left " + + "join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a" + + ".traderesult=0 and a.passid='" + (map_passid.get("PASSID") == null ? "" : + map_passid.get("PASSID").toString()) + "' and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " order by a.obuprovtradesuccnumafter,a.transtime) t union all (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/ " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and b.boundarytype=2 and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " and a.passid='" + (map_passid.get("PASSID") == null ? "" : map_passid.get("PASSID").toString()) + "' and instr(a.specialtype,'154')=0 ) union all (select /*+rule(gantry_pass_out UX_GANTRY_PASS_OUT_PASSID)*/ " + columns + ",'gantry_pass_out' datasrc,paytype from gantry_pass_out a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a.traderesult=0 and a.passid='" + map_passid.get("PASSID").toString() + "' and a.provincenumafter=" + map_passid.get("PROVINCENUMAFTER").toString() + " and a.provincenumafter>0 and rownum<=1)"; + } + + } else { + if (map_passid.get("BACKUP3").toString().equals("OUT")) { + sql_gantry_pass = "select * from (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/" + + " " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left " + + "join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a" + + ".traderesult=0 and a.passid='" + (map_passid.get("PASSID") == null ? "" : + map_passid.get("PASSID").toString()) + "' and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " order by a.obuprovtradesuccnumafter,a.transtime) t union all (select /*+rule(gantry_pass_out UX_GANTRY_PASS_OUT_PASSID)*/ " + columns + ",'gantry_pass_out' datasrc,paytype from gantry_pass_out a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a.traderesult=0 and a.passid='" + map_passid.get("PASSID").toString() + "' and a.provincenumafter>0 and rownum<=1)"; + } else { + sql_gantry_pass = "select * from (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/" + + " " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left " + + "join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a" + + ".traderesult=0 and a.passid='" + (map_passid.get("PASSID") == null ? "" : + map_passid.get("PASSID").toString()) + "' and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " order by a.obuprovtradesuccnumafter,a.transtime) t union all (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/ " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and b.boundarytype=2 and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " and a.passid='" + (map_passid.get("PASSID") == null ? "" : map_passid.get("PASSID").toString()) + "' and instr(a.specialtype,'154')=0 ) union all (select /*+rule(gantry_pass_out UX_GANTRY_PASS_OUT_PASSID)*/ " + columns + ",'gantry_pass_out' datasrc,paytype from gantry_pass_out a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a.traderesult=0 and a.passid='" + map_passid.get("PASSID").toString() + "' and a.provincenumafter=" + map_passid.get("PROVINCENUMAFTER").toString() + " and a.provincenumafter>0 and rownum<=1)"; + } + + } + + + //startTime=System.currentTimeMillis(); + List list_gantry_pass = CommonHelp.getListBySql(sql_gantry_pass, jdbcTemplate); + + if (list_gantry_pass.size() == 1 && ((Map) list_gantry_pass.get(0)).get("DATASRC").toString().equals("gantry_pass_out")) { + if (searchType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replaceAll("and a.obutraderesult=0", " and (instr(a" + + ".specialtype,'154')=0 or a.specialtype is null)"); + } else if (searchType.equals("2")) { + sql_gantry_pass = sql_gantry_pass.replaceAll("and a.traderesult=0", " and (instr(a" + + ".specialtype,'154')=0 or a.specialtype is null)"); + } else { + sql_gantry_pass = sql_gantry_pass.replaceAll("and a.traderesult=0", " and (instr(a" + + ".specialtype,'154')=0 or a.specialtype is null)"); + } + list_gantry_pass = CommonHelp.getListBySql(sql_gantry_pass, jdbcTemplate); + } + + + //endTime=System.currentTimeMillis(); + + //LogClass.info(threadId + "单条PASSID查询用时:" + (endTime - startTime) + ",PASSID:"+map_passid + // .get("PASSID").toString()); + + if (list_gantry_pass.size() > 0) { + + //startTime=System.currentTimeMillis(); + //去除掉出口后的交易数据 + list_gantry_pass = CommonHelp.delete_gantry_pass_out(list_gantry_pass); + //去除掉查询结果中重复交易的数据 + list_gantry_pass = CommonHelp.delete_repeat(list_gantry_pass); + + //处理计费单元ID,如果有空值则根据门架ID填写计费单元ID + list_gantry_pass = CommonHelp.handle_tollinterval(list_gantry_pass, jdbcTemplate); + + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第一步处理用时:" + (endTime - startTime) + ",PASSID:"+map_passid.get + // ("PASSID").toString()); + + //startTime=System.currentTimeMillis(); + int DEALCOUNT = 0; + int FEECALC = 0; + for (int j = 0; j < list_gantry_pass.size(); j++) { + Map map = (Map) list_gantry_pass.get(j); + if (map.get("TRADERESULT") == null ? false : + map.get("TRADERESULT").toString().equals("0")) { + DEALCOUNT++; + } + if (map.get("FEECALCRESULT") == null ? false : + map.get("FEECALCRESULT").toString().equals("0")) { + FEECALC++; + } + } + + //处理省界门架 + if (CommonHelp.GetConfigValue("boundaryOut").toString().indexOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("GANTRYID") == null ? "" : ((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("GANTRYID").toString()) != -1 && (((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)) == null ? false : ((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("OBUPROVTRADESUCCNUMAFTER").toString().equals("0"))) { + Map map = (Map) list_gantry_pass.get(list_gantry_pass.size() - 1); + map.put("OBUPROVTRADESUCCNUMAFTER", list_gantry_pass.size()); + list_gantry_pass.set(list_gantry_pass.size() - 1, map); + } + + if (list_gantry_pass.size() > 1) { + list_gantry_pass = CommonHelp.console_Result_DataTable((list_gantry_pass)); + } + + if (((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("DATASRC").toString().equals("gantry_pass_out")) { + if (list_gantry_pass.size() > 1) { + if (list_gantry_pass.size() > 1) { + + Map map = (Map) list_gantry_pass.get(list_gantry_pass.size() - 1); + map.put("OBUPROVTRADESUCCNUMAFTER", + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("OBUPROVTRADESUCCNUMAFTER").toString()) + 1); + list_gantry_pass.set(list_gantry_pass.size() - 1, map); + } else { + Map map = (Map) list_gantry_pass.get(list_gantry_pass.size() - 1); + map.put("OBUPROVTRADESUCCNUMAFTER", 1); + list_gantry_pass.set(list_gantry_pass.size() - 1, map); + } + } else { + + Map map = (Map) list_gantry_pass.get(list_gantry_pass.size() - 1); + map.put("OBUPROVTRADESUCCNUMAFTER", 1); + list_gantry_pass.set(list_gantry_pass.size() - 1, map); + } + } + + + int mediaType = -1; + if (map_passid.get("MEDIATYPE") == null ? true : + map_passid.get("MEDIATYPE").toString().length() == 0) { + mediaType = Integer.valueOf(map_passid.get("PASSID").toString().substring(1, 2)); + } else { + mediaType = Integer.valueOf(map_passid.get("MEDIATYPE").toString()); + } + + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第二步处理用时:" + (endTime - startTime) + ",PASSID:"+map_passid.get + // ("PASSID").toString()); + + if (list_gantry_pass != null) { + if (list_gantry_pass.size() > 0) { + //startTime=System.currentTimeMillis(); + int obuprovfeesumafter = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("OBUPROVFEESUMAFTER").toString()); + list_gantry_pass = CommonHelp.GetLibDataTable(list_gantry_pass, threadId, + map_passid.get("PASSID").toString(), sql_gantry_pass, jdbcTemplate); + + String enPointId = "";//计费起始点编号 + String enTollStationName = "";//计费起点名称 + + String exPointId = "";//计费终点编号 + String exTollStationName = "";//计费终点名称 + + enPointId = ((Map) list_gantry_pass.get(0)).get("GANTRYID").toString(); + enTollStationName = ((Map) list_gantry_pass.get(0)).get("NAME").toString(); + + exPointId = ((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get( + "GANTRYID").toString(); + exTollStationName = + ((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("NAME").toString(); + + String id = ""; + boolean isneedHZ = true;//默认汇总 + + if (CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUNETID").equals( + "0501")) { + isneedHZ = false; + } + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第三步处理用时:" + (endTime - startTime) + ", + // PASSID:"+map_passid.get("PASSID").toString()); + + if (isneedHZ) { + + //startTime=System.currentTimeMillis(); + String serProvinceId = CommonHelp.GetConfigValue("serProvinceId"); + String issuerId = ""; + String cpuissuerId = ""; + + + if (mediaType == 1 || mediaType == 2) { + List list_participant_temp = new ArrayList(); + String provincebcdname = + CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "OBUISSUEID" + ).length() < 8 ? "B9ABC2B7" : + CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "OBUISSUEID").substring(0, 8); + boolean issuerId_isSub = true; + for (int j = 0; j < list_PARTICIPANT.size(); j++) { + Map map = (Map) list_PARTICIPANT.get(j); + if (map.get("PROVINCEBCDNAME").equals(provincebcdname)) { + issuerId = map.get("BACKUP2").toString(); + issuerId_isSub = false; + break; + } + + } + + if (issuerId_isSub) { + String cpunetid = CommonHelp.GetRightCPUNETID(list_gantry_pass); + if (cpunetid.length() == 4 && !cpunetid.equals("0000")) { + issuerId = cpunetid.substring(0, 2) + "01" + cpunetid.substring(2 + , 4); + } else { + issuerId = + CommonHelp.GetOUBissueID(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "OBUISSUEID"), jdbcTemplate); + + } + } + + + } else { + cpuissuerId = ""; + } + String tollIntervalId = ""; + String tollIntervalFee = ""; + + tollIntervalId = CommonHelp.GetTollIntervalGroup(list_gantry_pass, + jdbcTemplate);//收费单元编号组合 + + tollIntervalFee = CommonHelp.GetFeeGroup(list_gantry_pass);//交易金额组合 + + String payfee_group = CommonHelp.GetPayFeegroup(list_gantry_pass); + + + int payFee = 0; + int fee = 0; + int discountFee = 0; + + payFee = CommonHelp.GetArrSum(payfee_group); + fee = CommonHelp.GetArrSum(tollIntervalFee); + discountFee = payFee - fee; + + int vehicleType = CommonHelp.GetRightvehicleType(list_gantry_pass); + + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第四步处理用时:" + (endTime - startTime) + ", + // PASSID:"+map_passid.get("PASSID").toString()); + + //startTime=System.currentTimeMillis(); + String enTollStationHex = ((Map) list_gantry_pass.get(0)).get( + "ENTOLLSTATIONHEX").toString();//入口 + if (fee != obuprovfeesumafter || ((Map) list_gantry_pass.get(0)).get("DATASRC").toString().equals("gantry_pass_out")) { + if (((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get( + "DATASRC").toString().equals("gantry_pass_out")) { + if (list_gantry_pass.size() > 1) { + String lastGantryHex = + ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("GANTRYHEX").toString(); + String stationHex_sql = "select b.STATIONHEX from gantry_pass_out" + + " a left join name_table b on a.gbstationid=b.gbstationid" + + " where passid='" + map_passid.get("PASSID").toString() + "'"; + String curTollGantry = + ((Map) CommonHelp.getListBySql(stationHex_sql, + jdbcTemplate).get(0)).get("STATIONHEX").toString(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = + sdf.parse(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("TRANSTIME").toString()); + String curPassTime = + new SimpleDateFormat("yyyy-MM-dd").format(date) + "T" + new SimpleDateFormat("HH:mm:ss").format(date); + + int totalWeight = Integer.valueOf(((Map) list_gantry_pass.get(0)).get("TOTALWEIGHT").toString()); + int enaxlecount = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("AXLECOUNT").toString()); + int vehicleUserType = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("VEHICLEUSERTYPE").toString()); + int obuprovfeesumafter_1 = 0; + int obuprovpayfeesumafter_1 = 0; + if (mediaType == 1) { + obuprovpayfeesumafter_1 = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("OBUPROVPAYFEESUMAFTER").toString().length() == 0 ? "0" : ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("OBUPROVPAYFEESUMAFTER").toString());//payFeeSumLocal + obuprovfeesumafter_1 = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("OBUPROVFEESUMAFTER").toString().length() == 0 ? "0" : ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("OBUPROVFEESUMAFTER").toString());//realFeeSumLocal + + } else if (mediaType == 2) { + obuprovpayfeesumafter_1 = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("FEESUMLOCALAFTER").toString().length() == 0 ? "0" : ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("FEESUMLOCALAFTER").toString());//payFeeSumLocal + + obuprovfeesumafter_1 = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("FEESPARE1").toString().length() == 0 ? "0" : ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("FEESPARE1").toString());//realFeeSumLocal + } + list_gantry_pass = CommonHelp.lastGantryToOut(list_gantry_pass, + ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("GANTRYHEX").toString(), curTollGantry, curPassTime, vehicleType, enaxlecount, vehicleUserType, ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("GANTRYID").toString(), ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("NAME").toString(), mediaType, obuprovpayfeesumafter_1, obuprovfeesumafter_1, sql_gantry_pass, map_passid.get("PASSID").toString(), totalWeight, jdbcTemplate); + + } else if (((Map) list_gantry_pass.get(0)).get("DATASRC").toString().equals("gantry_pass_out")) { + String lastGantryHex = ((Map) list_gantry_pass.get(0)).get("LASTGANTRYHEX")==null?"":((Map) list_gantry_pass.get(0)).get("LASTGANTRYHEX").toString(); + + String feeProvBeginHex = ((Map) list_gantry_pass.get(0)).get("FEEPROVBEGINHEX") == null ? "" : ((Map) list_gantry_pass.get(0)).get("FEEPROVBEGINHEX").toString(); + String curTollGantry = ((Map) list_gantry_pass.get(0)).get( + "GANTRYID").toString(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = sdf.parse(((Map) list_gantry_pass.get(0)).get( + "TRANSTIME").toString()); + String curPassTime = + new SimpleDateFormat("yyyy-MM-dd").format(date) + "T" + new SimpleDateFormat("HH:mm:ss").format(date); + + + int totalWeight = Integer.valueOf(((Map) list_gantry_pass.get(0)).get("TOTALWEIGHT").toString()); + int enaxlecount = + Integer.valueOf(((Map) list_gantry_pass.get(0)).get( + "AXLECOUNT").toString());//入口轴数 + int vehicleUserType = + Integer.valueOf(((Map) list_gantry_pass.get(0)).get( + "VEHICLEUSERTYPE").toString());// + int obuprovpayfeesumafter_1 = 0; + + int obuprovfeesumafter_1 = 0; + + list_gantry_pass = CommonHelp.firstGantryToOut(list_gantry_pass, + enTollStationHex, curTollGantry, curPassTime, vehicleType + , enaxlecount, vehicleUserType, mediaType, + obuprovpayfeesumafter_1, obuprovfeesumafter_1, "", "", + sql_gantry_pass, map_passid.get("PASSID").toString(), feeProvBeginHex, totalWeight, + jdbcTemplate,list_GANTRY_TABLE,lastGantryHex); + } + } + } + + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第五步处理用时:" + (endTime - startTime) + ", + // PASSID:"+map_passid.get("PASSID").toString()); + + //startTime=System.currentTimeMillis(); + id = map_passid.get("PASSID").toString() + "-" + enPointId + "-" + CommonHelp.idTime(((Map) list_gantry_pass.get(0)).get("TRANSTIME").toString()); + + payfee_group = CommonHelp.GetPayFeegroup(list_gantry_pass); + tollIntervalId = CommonHelp.GetTollIntervalGroup(list_gantry_pass, + jdbcTemplate); + + if (CommonHelp.tollIntervalId_repeat(tollIntervalId)) {//有重复交易的计费单元 + list_gantry_pass = + CommonHelp.remove_repeat_tollIntervalId(list_gantry_pass, + jdbcTemplate); + tollIntervalId = CommonHelp.GetTollIntervalGroup(list_gantry_pass, + jdbcTemplate); + } + + + tollIntervalFee = CommonHelp.GetFeeGroup(list_gantry_pass); + payFee = CommonHelp.GetArrSum(payfee_group); + fee = CommonHelp.GetArrSum(tollIntervalFee); + discountFee = payFee - fee; + + String passid = map_passid.get("PASSID").toString(); + int count = list_gantry_pass.size(); + String exTime = CommonHelp.GetMaxTranstime(list_gantry_pass); + String enTime = CommonHelp.longTime(((Map) list_gantry_pass.get(0)).get( + "TRANSTIME").toString()); + + String enStationTime = + CommonHelp.longTime(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "ENTIME")); + String cpucardid = ""; + if (mediaType == 1) { + cpucardid = CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "CPUCARDID"); + } else { + cpucardid = ""; + } + int ENPOINTTYPE = 0;//0 默认,1路段门架,2省界门架,3出口门架 + if (CommonHelp.GetConfigValue("boundaryIn").indexOf(((Map) list_gantry_pass.get(0)).get("GANTRYID").toString()) != -1) { + ENPOINTTYPE = 2; + } else { + ENPOINTTYPE = 1; + } + int EXPOINTTYPE = 0;//0默认,1路段门架,2省界门架,3出口门架 + if (((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("DATASRC").toString().equals("gantry_pass_out")) { + EXPOINTTYPE = 3; + } else if (CommonHelp.GetConfigValue("boundaryOut").indexOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("GANTRYID").toString()) != -1) { + EXPOINTTYPE = 2; + } else if (CommonHelp.GetConfigValue("DbType").equals("2")) { + if ((((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get( + "GANTRYID").toString().equals("G551115002020820010") || ((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("GANTRYID").toString().equals("G551115002020610010")) && isTimeOut == 1) { + EXPOINTTYPE = 2; + } + } else { + EXPOINTTYPE = 1; + } + + int UTURN = 0;//U转次数 + int LOSTUNIT = 0;//丢失门架数量 + int NOCARD = CommonHelp.GetMaxNocardtimes(list_gantry_pass);//无卡交易次数 + + for (int j = 0; j < list_gantry_pass.size(); j++) { + Map map = (Map) list_gantry_pass.get(j); + String feeinfo_temp = ((map.get("FEEINFO1") == null) ? "" : map.get + ("FEEINFO1").toString()) + ((map.get("FEEINFO2") == null) ? "" : map.get + ("FEEINFO2").toString()) + ((map.get("FEEINFO3") == null) ? "" : map.get + ("FEEINFO3").toString()); + if (feeinfo_temp.length() > 0) { + if (feeinfo_temp.substring(feeinfo_temp.length() - 1, feeinfo_temp + .length()).equals("}")) { + JSONObject feeInfo_temo_json = JSONObject.parseObject(feeinfo_temp); + if (feeInfo_temo_json.getIntValue("errorCode") == -28) { + UTURN++; + } + if (feeInfo_temo_json.getString("gantryIDs").length() > 6) { + LOSTUNIT += (feeInfo_temo_json.getString("gantryIDs") + .length() - 6) / 6; + } + } + } + } + + String UTURN_PATH=""; + if (UTURN>0){ + UTURN_PATH=CommonHelp.UTURN_PATH(tollIntervalId,list_FEEUNIT_TABLE); + + } + + + int etcCardType = 0; + if (CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUCARDTYPE").length() == 0 || CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUCARDTYPE").equals("0")) { + etcCardType = 2; + } else { + etcCardType = + Integer.valueOf(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUCARDTYPE")); + } + //etc卡编号 + String etcCardId = CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "CPUCARDID").length() == 20 ? + CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUCARDID") : + (issuerId.length() == 0 ? "" : + issuerId.substring(0, 4) + CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUCARDID")); + //OBU编号 + String obuId = CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "OBUSN"); + + int obuSign = CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "OBUSIGN").length() == 0 ? 0 : + Integer.valueOf(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "OBUSIGN")); + + String vehicleSeat = CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "VEHICLESEAT"); + if (vehicleSeat == null || vehicleSeat.length() == 0) { + vehicleSeat = "0"; + } + String OBUVEHICLEPLATE = + CommonHelp.Get_9Plate(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "OBUVEHICLEPLATE")); + String CPUVehiclePlate = + CommonHelp.Get_9Plate(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUVEHICLEPLATE")); + String VEHICLEPLATE = + CommonHelp.Get_9Plate(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "VEHICLEPLATE")); + String vehicleId = CommonHelp.RegexCard(OBUVEHICLEPLATE, CPUVehiclePlate, + VEHICLEPLATE);//实际收费车牌 + String sectionId = CommonHelp.GetSectinoidGroup(tollIntervalId);//收费路段编号组合 + String sectionName = CommonHelp.GetSectionNameGroup(tollIntervalId, + list_LINE_TABLE);//收费路段名称组合 + String tollIntervalName = CommonHelp.GetTollIntervalNameGroup(tollIntervalId, + list_FEEUNIT_TABLE);//收费单元名称组合 + String vehicleSign = + CommonHelp.GetRightvehicleSign(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "VEHICLESIGN"));//车辆识别标识 + String discountType = ""; + discountType = CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "DISCOUNTTYPE"); + if (discountType.equals("0") || discountType.length() == 0) { + discountType = "null"; + } + int provinceDiscountFee = 0; + int originFee = 0; + + if (discountType.equals("5")) { + provinceDiscountFee = + CommonHelp.GetprovinceDiscountFeeSum(list_gantry_pass); + } else { + provinceDiscountFee = 0; + originFee = 0; + } + String transaction = ""; + + transaction = CommonHelp.DataTableToJson(list_gantry_pass, exTime, + jdbcTemplate); + transaction = CommonHelp.StringToClob(transaction); + + int outType = 0;//0未知,1省内出口,2省界出口 + int payType = -1; + if (((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("DATASRC").toString().equals("gantry_pass_out")) { + outType = 1; + if (((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get( + "PAYTYPE").toString().length() > 0) { + payType = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("PAYTYPE").toString()); + } + } else if (CommonHelp.GetConfigValue("boundaryOut").indexOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("GANTRYID").toString()) != -1) { + outType = 2; + } else { + outType = 0; + } + int multiprovince = -1; + if (CommonHelp.GetConfigValue("boundaryOut").indexOf(enPointId) != -1) { + multiprovince = 1; + } else { + multiprovince = 0; + } + String tb_gantryid = ""; + if (list_gantry_pass.size() > 1) { + if (mediaType == 1) { + for (int m = 0; m < list_gantry_pass.size(); m++) { + int feeSum = 0; + for (int n = 0; n <= m; n++) { + feeSum += Integer.valueOf(((Map) list_gantry_pass.get(n)).get("FEE").toString()); + } + if (feeSum != Integer.valueOf(((Map) list_gantry_pass.get(m)).get("OBUPROVFEESUMAFTER").toString())) { + if (m == 0) { + tb_gantryid = ((Map) list_gantry_pass.get(0)).get( + "GANTRYID").toString(); + } else { + tb_gantryid = ((Map) list_gantry_pass.get(m - 1)).get( + "GANTRYID").toString(); + } + break; + } + } + } else if (mediaType == 2) { + for (int m = 0; m < list_gantry_pass.size(); m++) { + int feeSum = 0; + for (int n = 0; n <= m; n++) { + feeSum += Integer.valueOf(((Map) list_gantry_pass.get(n)).get("FEE").toString()); + } + if (feeSum != Integer.valueOf(((Map) list_gantry_pass.get(m)).get("FEESUMLOCALAFTER").toString())) { + if (m == 0) { + tb_gantryid = ((Map) list_gantry_pass.get(0)).get( + "GANTRYID").toString(); + } else { + tb_gantryid = ((Map) list_gantry_pass.get(m - 1)).get( + "GANTRYID").toString(); + } + break; + } + } + } + } + + + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第六步处理用时:" + (endTime - startTime) + ", + // PASSID:"+map_passid.get("PASSID").toString()); + + //startTime=System.currentTimeMillis(); + int transNum = 1; + String sql_transNum = + "select TRANSNUM from gantry_pass_all where id='" + id + "'"; + + List list_transNum = CommonHelp.getListBySql(sql_transNum, jdbcTemplate); + if (list_transNum.size() == 0) { + transNum = 1; + } else if (list_transNum.size() > 0) { + boolean dr_transNum_2 = false; + for (int j = 0; j < list_transNum.size(); j++) { + Map map = (Map) list_transNum.get(j); + if (map.get("TRANSNUM").toString().equals("2")) { + dr_transNum_2 = true; + break; + } + } + if (dr_transNum_2) { + String delete_bcenter_2 = + "delete gantry_pass_all_bcenter where id='" + id + "' and " + + "TRANSNUM=2"; + int delete_center_result_2 = jdbcTemplate.update(delete_bcenter_2); + //int delete_center_result_2=CommonHelp.excuteSql(delete_bcenter_2); + //int delete_center_result_2=new DBUtil().update(delete_bcenter_2); + if (delete_center_result_2 > 0) { + transNum = 2; + } else { + transNum = 2; + } + } else { + boolean dr_transNum_1 = false; + for (int j = 0; j < list_transNum.size(); j++) { + Map map = (Map) list_transNum.get(j); + if (map.get("TRANSNUM").toString().equals("1")) { + dr_transNum_1 = true; + break; + } + } + if (dr_transNum_1) { + String delete_bcenter_1 = "delete gantry_pass_all_bcenter where " + + "id='" + id + "' and TRANSNUM=1"; + //int delete_center_result_1=CommonHelp.excuteSql(delete_bcenter_1); + //int delete_center_result_1=new DBUtil().update(delete_bcenter_1); + int delete_center_result_1 = jdbcTemplate.update(delete_bcenter_1); + if (delete_center_result_1 > 0) { + transNum = 1; + } else { + transNum = 2; + } + } else { + transNum = 1; + } + } + + String delete_repeat = "delete gantry_pass_all where id='" + id + "' and " + + "TRANSNUM=" + transNum; + //CommonHelp.excuteSql(delete_repeat); + //new DBUtil().update(delete_repeat); + jdbcTemplate.update(delete_repeat); + + String update_lis="update gantry_pass_all set bak5=0 where passid='" + passid + "' and PROVINCENUMAFTER="+map_passid.get("PROVINCENUMAFTER").toString()+" and TRANSNUM!=" + transNum; + jdbcTemplate.update(update_lis); + + } + + + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第一七步处理用时:" + (endTime - startTime) + ", + // PASSID:"+map_passid.get("PASSID").toString()); + + startTime = System.currentTimeMillis(); + String insert_sql = "INSERT INTO gantry_pass_all (SERPROVINCEID, ISSUERID, " + + "ID, PASSID, COUNT, PAYFEE, FEE, DISCOUNTFEE, ENPOINTID, EXPOINTID, " + + "ENTOLLSTATIONNAME, EXTOLLSTATIONNAME, ENTIME, EXTIME, ETCCARDTYPE, " + + "ETCCARDID, OBUID, OBUSIGN, VEHICLETYPE, VEHICLEID, SECTIONID, " + + "SECTIONNAME, TOLLINTERVALID, TOLLINTERVALNAME, TOLLINTERVALFEE, " + + "VEHICLESIGN, DISCOUNTTYPE, PROVINCEDISCOUNTFEE, ORIGINFEE, TRANSNUM," + + " TRANSACTION,HAND_FEEUNIT,HAND_GANTRYID,HAND_FEE,MEDIATYPE,OUTTYPE," + + "ISTIMEOUT,PAYTYPE,multiprovince,ENTOLLSTATIONHEX,ENSTATIONTIME," + + "OBUISSUEID,OBUSN,OBUVEHICLEPLATE,CPUISSUEID,CPUCARDID," + + "CPUVEHICLEPLATE,ENPOINTTYPE,EXPOINTTYPE,UTURN,DEALCOUNT,FEECALC," + + "LOSTUNIT,NOCARD,TB_GANTRYID,VEHICLESEAT,UTURN_PATH,PROVINCENUMAFTER,BAK5) VALUES ('" + serProvinceId + "', '" + issuerId + "', '" + id + "', '" + passid + "', " + list_gantry_pass.size() + ", " + payFee + ", " + fee + ", " + discountFee + ", '" + enPointId + "', '" + exPointId + "', '" + enTollStationName + "', '" + exTollStationName + "', to_date('" + enTime + "','yyyy-MM-dd HH24:mi:ss'), to_date('" + exTime + "','yyyy-MM-dd HH24:mi:ss'), " + etcCardType + ", '" + etcCardId + "', '" + obuId + "', " + obuSign + ", " + vehicleType + ", '" + vehicleId + "', " + CommonHelp.StringToClob(sectionId) + ", " + CommonHelp.StringToClob(sectionName) + ", " + CommonHelp.StringToClob(tollIntervalId) + ", " + CommonHelp.StringToClob(tollIntervalName) + ", " + CommonHelp.StringToClob(tollIntervalFee) + ", '" + vehicleSign + "', " + discountType + ", " + provinceDiscountFee + ", " + originFee + ", " + transNum + ", " + transaction + ",'','',0," + mediaType + "," + outType + "," + isTimeOut + "," + payType + "," + multiprovince + ",'" + enTollStationHex + "',to_date('" + enStationTime + "','yyyy-MM-dd HH24:mi:ss'),'" + issuerId + "','" + obuId + "','" + OBUVEHICLEPLATE + "','" + cpuissuerId + "','" + cpucardid + "','" + CPUVehiclePlate + "'," + ENPOINTTYPE + "," + EXPOINTTYPE + "," + UTURN + "," + DEALCOUNT + "," + FEECALC + "," + LOSTUNIT + "," + NOCARD + ",'" + tb_gantryid + "'," + vehicleSeat + ","+CommonHelp.StringToClob(UTURN_PATH)+","+map_passid.get("PROVINCENUMAFTER").toString()+",1)"; + + + Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(exTime); + Calendar cal = Calendar.getInstance(); + cal.setTime(date); +// String delete_fenyue = +// "delete gantry_pass_all_" + (cal.get(Calendar.MONTH) + 1) + " where " + +// "id='" + id + "'"; +// //CommonHelp.excuteSql(delete_fenyue); +// //new DBUtil().update(delete_fenyue); +// jdbcTemplate.update(delete_fenyue); + + endTime = System.currentTimeMillis(); + //LogClass.info(threadId + "删除分月表用时:" + (endTime - startTime) + ", + // 当前线程共"+list_passid.size()+"数据,处理至"+(i+1)+"条数据,还剩"+(list_passid.size()-i+1) + // +",PASSID:"+map_passid.get("PASSID").toString()); + + startTime = System.currentTimeMillis(); + //int insert_result=CommonHelfirstGantryToOutp.excuteSql(insert_sql); + //int insert_result=new DBUtil().update(insert_sql); + int insert_result = jdbcTemplate.update(insert_sql); + if (!(insert_result > 0)) { + LogClass.error("汇总数据插入失败:PASSID:" + map_passid.get("PASSID")); + } + + endTime = System.currentTimeMillis(); + LogClass.info(threadId + "插入汇总结果用时:" + (endTime - startTime) + + ",当前线程共" + list_passid.size() + "数据,处理至" + (i + 1) + "条数据,还剩" + (list_passid.size() - i + 1) + ",PASSID:" + map_passid.get("PASSID").toString() + ",出口匹配类型:" + (outType == 1 ? "省内出口" : "省外出口") + ",出口ID:" + exPointId + ",门架数据自动匹配完成,门架数据自动审计完成"); + + startTime = System.currentTimeMillis(); + String update_gantry_pass_center = "update /*+rule(gantry_pass_center " + + "INDEX_GANTRY_PASS_CENTER)*/ gantry_pass_center set ishandle=1," + + "Issecond=0,TRANSNUM=" + transNum + ",handletime=to_date('" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime()) + "','yyyy-MM-dd HH24:mi:ss') where passid='" + map_passid.get("PASSID").toString() + "' and provincenumafter=" + map_passid.get("PROVINCENUMAFTER").toString(); + + //CommonHelp.excuteSql(update_gantry_pass_center); + //new DBUtil().update(update_gantry_pass_center); + jdbcTemplate.update(update_gantry_pass_center); + endTime = System.currentTimeMillis(); +// LogClass.info(threadId + "更新中间表用时:" + (endTime - startTime) + +// "当前线程共"+list_passid.size()+"数据,处理至"+(i+1)+"条数据,还剩"+(list_passid +// .size()-i+1)+",PASSID:"+map_passid.get("PASSID").toString()); + + + } else { + String update_gantry_pass_center = "update /*+rule(gantry_pass_center " + + "INDEX_GANTRY_PASS_CENTER)*/ gantry_pass_center set ishandle=1," + + "Issecond=0,handletime=to_date('" + new SimpleDateFormat("yyyy-MM-dd " + + "HH:mm:ss").format(Calendar.getInstance().getTime()) + "','yyyy-MM-dd" + + " HH24:mi:ss') where passid='" + map_passid.get("PASSID").toString() + "' and provincenumafter=" + map_passid.get("PROVINCENUMAFTER").toString(); + //CommonHelp.excuteSql(update_gantry_pass_center); + //new DBUtil().update(update_gantry_pass_center); + jdbcTemplate.update(update_gantry_pass_center); + } + + + } + } + + + } else { + String update = "update /*+rule*/ gantry_pass_center set ISHANDLE=1,Issecond=0," + + "ISTIMEOUT=" + isTimeOut + " where passid='" + map_passid.get("PASSID").toString() + "' and provincenumafter=" + map_passid.get("PROVINCENUMAFTER").toString(); + //CommonHelp.excuteSql(update); + //new DBUtil().update(update); + jdbcTemplate.update(update); + } + } catch (Exception e) { + + LogClass.error("汇总程序异常:PASSID:" + ((Map) list_passid.get(i)).get("PASSID").toString() + "," + + "错误信息:" + e.toString()); + } + + } + +// sb_delete.delete(sb_delete.length()-1, sb_delete.length()); +// String sql_delete="delete gantry_pass_all_repeat where passid in("+sb_delete.toString()+")"; +// CommonHelp.excuteSql(sql_delete); +// sb_delete.delete(0,sb_delete.length()); + } + } catch (Exception e) { + + LogClass.error("系统异常:" + e.toString()); + } + + + } +} diff --git a/.svn/pristine/99/995df9ea18b45bb25fe4f43bd235b9fd3652dcf2.svn-base b/.svn/pristine/99/995df9ea18b45bb25fe4f43bd235b9fd3652dcf2.svn-base new file mode 100644 index 0000000..2eb1c76 --- /dev/null +++ b/.svn/pristine/99/995df9ea18b45bb25fe4f43bd235b9fd3652dcf2.svn-base @@ -0,0 +1,144 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class GMAIN_TEST { + public static void main(String[] args) throws Exception { + + LogClass.delete("测试数据"); + JdbcTemplate jdbcTemplate=new JdbcTemplate(new DBUtil().Hikar_DataSource()); + + List list_PARTICIPANT = CommonHelp.getListBySql("select * from TB_PARTICIPANT",jdbcTemplate); + + List list_LINE_TABLE=CommonHelp.getListBySql("select LINENAME,GBLINEID from line_table",jdbcTemplate); + + List list_FEEUNIT_TABLE=CommonHelp.getListBySql("select ID,NAME FROM FEEUNIT_TABLE",jdbcTemplate); + + List list_GANTRY_TABLE=CommonHelp.getListBySql("select * from gantry_table",jdbcTemplate); + String sql="select * from gantry_pass_center where passid='014101203823180302389420220616114637'"; + //011301200123000511468020220418120750 + //020000140102070009234220220422172438 + GPA_DATA gpa_data=new GPA_DATA(); + gpa_data.GetAllETCData(sql,0,1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE); + +// startGPA s=new startGPA(); +// String sql_stat="select * from gantry_pass_stat_temp where tradeid='G0065150030002100102022051613200037'"; +// statTest(jdbcTemplate,sql_stat); + } + public static void statTest(JdbcTemplate jdbcTemplate,String sql){ + try { + //s.UpdateState(Thread.currentThread().getId()); + List list=jdbcTemplate.queryForList(sql); + String tollIntervalsId=""; + String stano=""; + String roadno=""; + StringBuilder delete_tradeid=new StringBuilder(); + if (list.size()>0){ + for (int i = 0; i < list.size(); i++) { + try { + Map map=(Map) list.get(i); + String[] tollIntervalsId_temp=map.get("TOLLINTERVALID")==null?null:map.get("TOLLINTERVALID").toString().split("\\|"); + String[] feeGroup_temp=map.get("FEEGROUP")==null?null:map.get("FEEGROUP").toString().split("\\|"); + String[] payfeeGroup_temp=map.get("PAYFEEGROUP")==null?null:map.get("PAYFEEGROUP").toString().split("\\|"); + String[] specialtype_temp=null; + if (map.get("SPECIALTYPE")!=null){ + if (map.get("SPECIALTYPE").toString().replace(" ","").length()>0){ + specialtype_temp=map.get("SPECIALTYPE").toString().split("\\|"); + } + } + + String is_have_gantry_trade_sql="SELECT * FROM gantry_trade_mass where gantryid='" +map.get("GANTRYID").toString() + "' and classdate=TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " +map.get("MEDIATYPE") + " AND VEHICLETYPE = " +map.get("VEHICLETYPE"); + List list_trade_ishave=jdbcTemplate.queryForList(is_have_gantry_trade_sql); + + String boundarytype_sql = "select boundarytype from gantry_table where id='" + map.get("GANTRYID").toString() + "'"; + List boundary=jdbcTemplate.queryForList(boundarytype_sql); + if (boundary.size()>0){ + + } + int boundarytype=Integer.valueOf(((Map) jdbcTemplate.queryForList(boundarytype_sql).get(0)).get("BOUNDARYTYPE").toString()); + if (list_trade_ishave.size()>0){ + int feesuccnum=0; + int feefailenum=0; + if (map.get("FEECALCRESULT").toString().equals("0") && map.get("TRADERESULT").toString().equals("0")){ + feesuccnum = 1; + } + else { + feefailenum = 1; + } +// JSONObject temp=new JSONObject(((Map) list_trade_ishave.get(0)).get("SPECIALTYPE").toString()); +// if (specialtype_temp!=null){ +// for (int j = 0; j < specialtype_temp.length; j++) { +// String special_value=""; +// if (specil_list.contains(Integer.valueOf(specialtype_temp[j]))){ +// +// } +// } +// } + + String update_gantry_trade = "update gantry_trade_mass set boundarytype = " + boundarytype + ", feesuccnum = feesuccnum+" + feesuccnum + ", feefailenum = feefailenum+" + feefailenum + ", specialtype = '' where gantryid = '" + map.get("GANTRYID").toString() + "' and classdate = TO_DATE('" +map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') and mediatype = " + map.get("MEDIATYPE") + " and vehicletype = " + map.get("VEHICLETYPE"); + jdbcTemplate.update(update_gantry_trade); + + } + else { + String insert_gantry_trade= "insert into gantry_trade_mass (gantryid, classdate, mediatype, vehicletype, boundarytype, feesuccnum, feefailenum, specialtype, feelostnum) values ('" +map.get("GANTRYID").toString() + "', TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd'), " +map.get("MEDIATYPE") + ", " + map.get("VEHICLETYPE") + ", " + boundarytype + ", 0, 0, '{}', 0) "; + jdbcTemplate.update(insert_gantry_trade); + } + + if (tollIntervalsId_temp!=null && feeGroup_temp!=null && payfeeGroup_temp!=null){ + if (tollIntervalsId_temp.length== feeGroup_temp.length && feeGroup_temp.length==payfeeGroup_temp.length){ + for (int j = 0; j < tollIntervalsId_temp.length; j++) { + if (tollIntervalsId_temp[j].length()>=16){ + tollIntervalsId=tollIntervalsId_temp[j].substring(0,16); + String stano_roadno_sql = "select ostano,oroadno from feeunit_table where id='" + tollIntervalsId + "'"; + List stano_roadno_list=jdbcTemplate.queryForList(stano_roadno_sql); + if (stano_roadno_list.size()>0){ + stano=((Map)stano_roadno_list.get(0)).get("OSTANO").toString(); + roadno=((Map)stano_roadno_list.get(0)).get("OROADNO").toString(); + } + else { + stano="0"; + roadno="0"; + } + + String is_have_sql = "SELECT 1 FROM DUAL WHERE EXISTS (SELECT * FROM gantry_stat where FEEUNITID='" + tollIntervalsId + "' and classdate=TO_DATE('" +map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " +map.get("MEDIATYPE") + " AND VEHTYPE = " +map.get("VEHICLETYPE") + " AND ROADNO = " + roadno + " and STANO=" + stano + ")"; + List list_ishave=jdbcTemplate.queryForList(is_have_sql); + if (list_ishave.size()>0){ + String update_sql = "UPDATE GANTRY_STAT SET VEHCOUNT = VEHCOUNT + 1, CASH = TO_NUMBER(CASH) +TO_NUMBER(" + (payfeeGroup_temp[j].replace(" ","").length() == 0 ? "0" : payfeeGroup_temp[j]) + "), INCASH = TO_NUMBER(INCASH) +TO_NUMBER(" + (feeGroup_temp[j].replace(" ","").length() == 0 ? "0" : feeGroup_temp[j]) + ") where FEEUNITID='" + tollIntervalsId + "' and classdate=TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " + map.get("MEDIATYPE") + " AND VEHTYPE = " + map.get("VEHICLETYPE") + " AND ROADNO = " + roadno; + jdbcTemplate.update(update_sql); + } + else { + String insert_sql = "INSERT INTO GANTRY_STAT(ROADNO,STANO,CLASSDATE,FEEUNITID,MEDIATYPE, VEHTYPE,VEHCLASS,SPECIALTYPE,AXLECOUNT,VEHCOUNT,TRADERESULT,HOLIDAYSTATE,VALIDSTATUS,CASH,INCASH,FEESUMLOCALAFTER,BACKUP1,BACKUP2,BACKUP3,BACKUP4,DATEMARK) VALUES(" + roadno + ", " + stano + ", TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd'), '" + tollIntervalsId + "', " + map.get("MEDIATYPE") + "," + map.get("VEHICLETYPE") + ", 0, 0, 2, 1, 0, 0, 0," + (payfeeGroup_temp[j].replace(" ","").length() == 0 ? "0" : payfeeGroup_temp[j]) + ", " + (feeGroup_temp[j].replace(" ","").length() == 0 ? "0" : feeGroup_temp[j]) + ", 0, 0, 0, '0','0', SYSDATE)"; + jdbcTemplate.update(insert_sql); + } + } + } + + } + + } + + + String delete_sql="delete gantry_pass_stat_temp where tradeid='" +map.get("TRADEID") + "' "; + jdbcTemplate.update(delete_sql); + + + } + catch (Exception e){ + LogClass.error("预分账错误日志:"+e.toString()+","+((Map) list.get(i)).get("TRADEID")); + } + } + } + + Thread.sleep(1000*30); + + } + catch (Exception e){ + LogClass.error("预拆分错误"+e.toString()); + } + } + +} diff --git a/.svn/pristine/99/99f500dce7c18f86781e003b1ced7691004bc09e.svn-base b/.svn/pristine/99/99f500dce7c18f86781e003b1ced7691004bc09e.svn-base new file mode 100644 index 0000000..5b1adb3 --- /dev/null +++ b/.svn/pristine/99/99f500dce7c18f86781e003b1ced7691004bc09e.svn-base @@ -0,0 +1,2 @@ +[2022-06-24 11:01:39.107] DL 日志 +[2022-06-24 11:01:39.107] 1插入汇总结果用时:25,当前线程共1数据,处理至1条数据,还剩2,PASSID:014101203823180302389420220616114637,出口匹配类型:省内出口,出口ID:G001815001000720010,门架数据自动匹配完成,门架数据自动审计完成 diff --git a/.svn/pristine/9d/9d2209f2b4ba1ebf303ef147c33d7af790a2bf60.svn-base b/.svn/pristine/9d/9d2209f2b4ba1ebf303ef147c33d7af790a2bf60.svn-base new file mode 100644 index 0000000..33e6965 --- /dev/null +++ b/.svn/pristine/9d/9d2209f2b4ba1ebf303ef147c33d7af790a2bf60.svn-base @@ -0,0 +1,60 @@ + +package com.trkf.feemoduleservice; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

GetStaFee complex type Java ࡣ + * + *

ģʽƬָڴеԤݡ + * + *

+ * <complexType name="GetStaFee">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="arg0" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "GetStaFee", propOrder = { + "arg0" +}) +public class GetStaFee { + + protected String arg0; + + /** + * ȡarg0Եֵ + * + * @return + * possible object is + * {@link String } + * + */ + public String getArg0() { + return arg0; + } + + /** + * arg0Եֵ + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setArg0(String value) { + this.arg0 = value; + } + +} diff --git a/.svn/pristine/9e/9ee94951bc107d382519975d04bc950b6c6ab297.svn-base b/.svn/pristine/9e/9ee94951bc107d382519975d04bc950b6c6ab297.svn-base new file mode 100644 index 0000000..fd843ae Binary files /dev/null and b/.svn/pristine/9e/9ee94951bc107d382519975d04bc950b6c6ab297.svn-base differ diff --git a/.svn/pristine/a3/a386ed8c0606196531fc511ede9c6834ed44a407.svn-base b/.svn/pristine/a3/a386ed8c0606196531fc511ede9c6834ed44a407.svn-base new file mode 100644 index 0000000..031a07a --- /dev/null +++ b/.svn/pristine/a3/a386ed8c0606196531fc511ede9c6834ed44a407.svn-base @@ -0,0 +1,2078 @@ +package GPA; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.sun.javafx.collections.MappingChange; +import com.trkf.feemoduleservice.FeeModuleServiceService; +import org.dom4j.Document; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; +import org.springframework.jdbc.core.JdbcTemplate; +import sun.management.snmp.jvmmib.EnumJvmRTBootClassPathSupport; + +import javax.xml.transform.sax.SAXTransformerFactory; +import java.io.File; +import java.io.PushbackInputStream; +import java.sql.*; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.Date; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + + +public class CommonHelp { + + + public static List converToList(ResultSet rs) { + + List list = new ArrayList(); + ResultSetMetaData rsmd = null; + try { + rsmd = rs.getMetaData(); + while (rs.next()) { + Map map = new HashMap(); + for (int i = 1; i <= rsmd.getColumnCount(); i++) { + map.put(rsmd.getColumnName(i), rs.getObject(i)); + } + + list.add(map); + } + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + return list; + } + + public static String GetConfigValue(String key) throws Exception { + String result = ""; + //LogClass.debug(CommonHelp.getPath()+File.separator+"Config"+File.separator+"Config.xml"); + try { + SAXReader saxReader = new SAXReader(); + Document doc = + saxReader.read(new File(CommonHelp.getPath() + File.separator + "Config" + File.separator + + "Config.xml")); + Element root = doc.getRootElement(); + Element result_e = root.element(key); + result = result_e.getStringValue(); + //LogClass.debug(result); + } catch (Exception e) { + LogClass.debug(e.toString()); + } finally { + return result; + } + + + } + + public static String getPath() { + String path = CommonHelp.class.getProtectionDomain().getCodeSource().getLocation().getPath(); + if (System.getProperty("os.name").contains("dows")) { + path = path.substring(1, path.length()); + } + if (path.contains("jar")) { + path = path.substring(0, path.lastIndexOf(".")); + return path.substring(0, path.lastIndexOf("/")); + } + return path.replace("target/classes/", ""); + } + + + public static List getListBySql(String sql, JdbcTemplate jdbcTemplate) throws Exception { + +// String dbType = GetConfigValue("DbType"); +// +// Connection con = null; +// if (dbType.equals("1")) { +// con = new CommonCon().getOraCon(); +// } else if (dbType.equals("2")) { +// con = new CommonCon().getDMCon(); +// } +// Statement st = con.createStatement(); +// ResultSet set = st.executeQuery(sql); + + +// ResultSet set=new DBUtil().Query(sql); +// +// List resultList = converToList(set); + +// if (set != null) { +// set.close(); +// } +// if (st != null) { +// st.close(); +// } +// if (con != null) { +// con.close(); +// } + //JdbcTemplate jdbcTemplate=new JdbcTemplate(new DBUtil().getDataSource()); + + List> resultList = jdbcTemplate.queryForList(sql); + return resultList; + } + + //删除出口交易后的数据 + public static List delete_gantry_pass_out(List list) throws ParseException { + String last_dataSrc = ((Map) list.get(list.size() - 1)).get("DATASRC").toString(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (last_dataSrc.equals("gantry_pass_out")) { + List list_temp = new ArrayList(); + Date out = sdf.parse(((Map) list.get(list.size() - 1)).get("TRANSTIME").toString()); + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + Date this_trans = sdf.parse(map.get("TRANSTIME").toString()); + if (this_trans.getTime() <= out.getTime()) { + list_temp.add(map); + } + } + return list_temp; + } else { + return list; + } + } + + //删除重复交易数据 + public static List delete_repeat(List list) { + List list_temp = new ArrayList(); + if (list.size() == 1) { + return list; + } else { + Map map_temp = null; + map_temp = (Map) list.get(0); + list_temp.add(map_temp); + for (int i = 1; i < list.size(); i++) { + map_temp = (Map) list.get(i); + if (map_temp.get("GANTRYHEX")!=null){ + if (!map_temp.get("GANTRYHEX").toString().equals(((Map) list.get(i - 1)).get("GANTRYHEX"))) { + list_temp.add(map_temp); + } + } + else { + list_temp.add(map_temp); + } + + } + + return list_temp; + } + } + + //处理计费单元为空的情况 + public static List handle_tollinterval(List list, JdbcTemplate jdbcTemplate) throws Exception { + List list_temp = new ArrayList(); + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (map.get("TOLLINTERVALID") == null ? true : + map.get("TOLLINTERVALID").toString().replaceAll(" ", "").length() == 0) { + if (map.get("PAYFEEGROUP").toString().replaceAll(" ", "").length() == 0) { + map.put("PAYFEEGROUP", "0"); + } + if (map.get("FEEGROUP").toString().replaceAll(" ", "").length() == 0) { + map.put("FEEGROUP", "0"); + } + String sql_tollintervalid = + "select ID from feeunit_table where gantryid1='" + map.get("GANTRYID").toString() + "'"; + List list_tollinterval = getListBySql(sql_tollintervalid, jdbcTemplate); + if (list_tollinterval.size() > 0) { + map.put("TOLLINTERVALID", ((Map) list_tollinterval.get(0)).get("ID").toString()); + } else { + LogClass.error("计费单元查询有误" + map.get("PASSID")); + } + list_temp.add(map); + } else { + list_temp.add(map); + } + } + return list_temp; + } + + public static List console_Result_DataTable(List list) { + + int allFee = GetFeeSum(list); + int obuProFee = Integer.valueOf(((Map) list.get(list.size() - 1)).get("OBUPROVFEESUMAFTER").toString()); + if (allFee == obuProFee) { + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + map.put("OBUPROVTRADESUCCNUMAFTER", (i + 1)); + + list.set(i, map); + } + return list; + } else { + List list_temp = new ArrayList(); + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (map.get("OBUPROVTRADESUCCNUMAFTER").toString().equals("0")) { + list_temp.add(map); + } + } + if (list_temp.size() == list.size()) { + return list; + } else { + String OBUISSUEID = ""; + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (map.get("OBUISSUEID").toString().length() == 16) { + OBUISSUEID = map.get("OBUISSUEID").toString(); + break; + } + } + + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (!map.get("OBUPROVTRADESUCCNUMAFTER").toString().equals("0")) { + map.put("OBUISSUEID", OBUISSUEID); + list_temp.add(map); + } + } + return list_temp; + + } + } + } + + //获取list集合中的fee之和 + public static int GetFeeSum(List list) { + int result = 0; + Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); + for (int i = 0; i < list.size(); i++) { + //int fee=0; + Map map = (Map) list.get(i); + + if (pattern.matcher(map.get("FEE").toString()).matches()) { + result += Integer.valueOf(map.get("FEE").toString()); + } + + } + return result; + } + + //拼接字符串 + public static String StringToClob(String text) { + int content_length = text.length(); + StringBuilder sb_temp = new StringBuilder(); + int n = 1; + int max = content_length / 1999 + 1; + while (n < max) { + String temp = ""; + temp = text.substring((n - 1) * 1999, n * 1999); + sb_temp.append("to_clob('" + temp + "')||"); + n++; + } + sb_temp.append("to_clob('" + text.substring((n - 1) * 1999, content_length) + "')"); + return sb_temp.toString(); + } + + //获取数组之和 + public static int GetArrSum(String strGroup) { + int result = 0; + if (strGroup.length() > 0) { + String[] arr = strGroup.split("\\|"); + for (int i = 0; i < arr.length; i++) { + result += Integer.valueOf(arr[i]); + } + return result; + } else { + return result; + } + } + + //根据传过来的列名,获取第一个不为空的列 + public static String GetGantryPassColumsValue(List list, String columsName) { + String result = ""; + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (map.get(columsName) != null) { + if (map.get(columsName).toString().length() > 0) { + result = map.get(columsName).toString(); + break; + } + } + + } + return result; + } + + //获取正确的CPUNETID不包含字母 + public static String GetRightCPUNETID(List list) { + int i = 0; + String CPUNETID = ""; + String regex = ".*[a-zA-Z]+.*"; + while (i < list.size()) { + if (((Map) list.get(i)).get("CPUNETID") != null) { + Matcher m = Pattern.compile(regex).matcher(((Map) list.get(i)).get("CPUNETID").toString()); + if (!m.matches()) { + CPUNETID = ((Map) list.get(i)).get("CPUNETID").toString(); + break; + } + + } + i++; + + } + return CPUNETID; + } + + //获取发行方机构ID + public static String GetOUBissueID(String FACTOR, JdbcTemplate jdbcTemplate) throws Exception { + String result = ""; + if (FACTOR.length() > 8) { + FACTOR = FACTOR.substring(0, 8); + String sql = "SELECT ISSUERID FROM TB_PARTICIPANT WHERE PROVINCEBCDNAME='" + FACTOR + "'"; + List list = getListBySql(sql, jdbcTemplate); + + if (list.size() > 0) { + result = ((Map) list.get(0)).get("ISSUERID").toString().substring(8, 12) + "01"; + } + } else { + result = ""; + } + return result; + } + + //获取查询结果中收费单元的组合 + public static String GetTollIntervalGroup(List list, JdbcTemplate jdbcTemplate) throws Exception { + return GetRightTollintervalID(list, jdbcTemplate); + } + + //组合出完整正确的tollIntervalId + public static String GetRightTollintervalID(List list, JdbcTemplate jdbcTemplate) throws Exception { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + String[] temp = map.get("TOLLINTERVALID").toString().split("\\|"); + for (int j = 0; j < temp.length; j++) { + if (temp[j].length() >= 16) { + sb.append(temp[j].substring(0, 16) + "|"); + } else if (temp[j].length() > 0) { + sb.append(GetTollIntervalID(map.get("GANTRYID").toString(), temp[j], jdbcTemplate) + "|"); + } + } + } + sb.delete(sb.length() - 1, sb.length()); + return sb.toString(); + + + } + + //若收费单元ID补全,则根据当前gantryid和部分tollintervalid查询出完整的ID + public static String GetTollIntervalID(String gantryid, String tollintervalid, JdbcTemplate jdbcTemplate) throws Exception { + String result = ""; + String sql = + "select ID from feeunit_table where gantryid1='" + gantryid + "' and id like '%" + tollintervalid + + "%'"; + List list = getListBySql(sql, jdbcTemplate); + if (list.size() > 0) { + result = ((Map) list.get(0)).get("ID").toString(); + } else { + result = "0000000000000000"; + } + return result; + } + + //根据查询结果获取交易金额组合fee + public static String GetFeeGroup(List list) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + + if (i == list.size() - 1) { + if (map.get("FEEGROUP").toString().length() > 0) { + sb.append(map.get("FEEGROUP").toString()); + } else { + String[] temp = map.get("TOLLINTERVALID").toString().split("\\|"); + StringBuilder sb_temp = new StringBuilder(); + for (int j = 0; j < temp.length; j++) { + if (j == temp.length - 1) { + sb_temp.append("0"); + } else { + sb_temp.append("0|"); + } + } + sb.append(sb_temp.toString()); + } + } else { + if (map.get("FEEGROUP").toString().length() > 0) { + sb.append(map.get("FEEGROUP").toString() + "|"); + } else { + String[] temp = map.get("TOLLINTERVALID").toString().split("\\|"); + StringBuilder sb_temp = new StringBuilder(); + for (int j = 0; j < temp.length; j++) { + if (j == temp.length - 1) { + sb_temp.append("0"); + } else { + sb_temp.append("0|"); + } + } + sb.append(sb_temp.toString() + "|"); + } + } + } + + + return GetRightFeeGroup(sb.toString()); + + } + + //处理feegroup中存在负数的情况 + private static String GetRightFeeGroup(String feeGroup) { + int all = GetArrSum(feeGroup); + if (all >= 0) { + if (!(feeGroup.indexOf("-") == -1)) { + String[] temp = feeGroup.split("\\|"); + String result = ""; + if (temp.length > 1) { + for (int i = 0; i < temp.length; i++) { + if (Integer.valueOf(temp[i]) < 0) { + temp[i - 1] = String.valueOf(Integer.valueOf(temp[i - 1]) + Integer.valueOf(temp[i])); + temp[i] = "0"; + } + } + for (int i = 0; i < temp.length; i++) { + if (i == temp.length - 1) { + result += temp[i]; + + } else { + result += temp[i] + "|"; + } + } + return GetRightFeeGroup(result); + } else { + return feeGroup; + } + + } else { + return feeGroup; + } + } else { + return feeGroup; + } + + } + + //获取查询结果交易金额组合payfee + public static String GetPayFeegroup(List list) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (i == list.size() - 1) { + if (map.get("PAYFEEGROUP").toString().length() > 0) { + sb.append(map.get("PAYFEEGROUP").toString()); + } else { + String[] temp = map.get("TOLLINTERVALID").toString().split("\\|"); + StringBuilder sb_temp = new StringBuilder(); + + for (int j = 0; j < temp.length; j++) { + if (j == temp.length - 1) { + sb_temp.append("0"); + } else { + sb_temp.append("0|"); + } + } + sb.append(sb_temp.toString()); + } + } else { + if ((map.get("PAYFEEGROUP") == null ? false : map.get("PAYFEEGROUP").toString().length() > 0)) { + sb.append(map.get("PAYFEEGROUP").toString() + "|"); + } else { + String[] temp = map.get("TOLLINTERVALID").toString().split("\\|"); + StringBuilder sb_temp = new StringBuilder(); + + for (int j = 0; j < temp.length; j++) { + if (j == temp.length - 1) { + sb_temp.append("0"); + } else { + sb_temp.append("0|"); + } + } + sb.append(sb_temp.toString() + "|"); + } + } + } + return sb.toString(); + } + + //获取正确的车型 + public static int GetRightvehicleType(List list) { + int vehicleType = 0; + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (Integer.valueOf(map.get("FEEVEHICLETYPE").toString()) >= 1 && Integer.valueOf(map.get("FEEVEHICLETYPE" + ).toString()) <= 26) { + vehicleType = Integer.valueOf(map.get("FEEVEHICLETYPE").toString()); + break; + } + } + return vehicleType; + } + + //出入表中最大的交易时间 + public static String GetMaxTranstime(List list) throws Exception { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date1 = sdf.parse(((Map) list.get(0)).get("TRANSTIME").toString()); + for (int i = 1; i < list.size(); i++) { + Map map = (Map) list.get(i); + Date date2 = sdf.parse(map.get("TRANSTIME").toString()); + if (date2.getTime() > date1.getTime()) { + date1 = date2; + } + } + return sdf.format(date1); + } + + //获取最大无卡交易次数 + public static int GetMaxNocardtimes(List list) { + int nocard1 = Integer.valueOf(((Map) list.get(0)).get("NOCARDTIMESAFTER").toString()); + for (int i = 1; i < list.size(); i++) { + Map map = (Map) list.get(i); + int nocard2 = Integer.valueOf(map.get("NOCARDTIMESAFTER").toString()); + if (nocard2 > nocard1) { + nocard1 = nocard2; + } + } + return nocard1; + } + + //处理——9结尾车牌 + public static String Get_9Plate(String vehicleid) { + String result = ""; + String[] temp = vehicleid.split("_"); + if (temp.length > 1) { + if (temp[1].equals("9")) { + result = temp[0] + "_7"; + } else { + result = vehicleid; + } + } else { + result = vehicleid; + } + return result; + } + + //处理车牌 + public static String RegexCard(String OBUVehiclePlate, String CPUVehiclePlate, String vehiclePlate) throws Exception { + String result = ""; + String regstr = GetConfigValue("RegexStr"); + Matcher m1 = Pattern.compile(regstr).matcher(OBUVehiclePlate); + Matcher m2 = Pattern.compile(regstr).matcher(CPUVehiclePlate); + Matcher m3 = Pattern.compile(regstr).matcher(vehiclePlate); + if (!m1.matches()) { + if (!m2.matches()) { + if (!m3.matches()) { + result = "蒙X00000_1"; + } else { + result = vehiclePlate; + } + } else { + result = CPUVehiclePlate; + } + } else { + result = OBUVehiclePlate; + } + + return result; + + + } + + //获取查询结果中的收费路段组合 + public static String GetSectinoidGroup(String tollIntervalID) { + StringBuilder result = new StringBuilder(); + String[] temp = tollIntervalID.split("\\|"); + for (int i = 0; i < temp.length; i++) { + if (i == temp.length - 1) { + if (temp[i].length() > 0) { + result.append(temp[i].substring(0, 11)); + } else { + result.append(""); + } + } else { + if (temp[i].length() > 0) { + result.append(temp[i].substring(0, 11) + "|"); + } else { + result.append("|"); + } + } + } + return result.toString(); + } + + //获取查询结果中收费单元名称组合 + public static String GetTollIntervalNameGroup(String tollIntervalID, List list_FEEUNIT_TABLE) throws Exception { + StringBuilder result = new StringBuilder(); + String[] temp = tollIntervalID.split("\\|"); + for (int i = 0; i < temp.length; i++) { + if (i == temp.length - 1) { + if (temp[i].length() > 0) { + result.append(GetTollIntervalName(temp[i], list_FEEUNIT_TABLE)); + } else { + result.append(""); + } + } else { + if (temp[i].length() > 0) { + result.append(GetTollIntervalName(temp[i], list_FEEUNIT_TABLE) + "|"); + } else { + result.append("|"); + } + } + } + return result.toString(); + } + + //根据收费单元编号获取收费单元名称 + public static String GetTollIntervalName(String id, List list_FEEUNIT_TABLE) throws Exception { + String result = ""; + if (id.length() >= 16) { + if (list_FEEUNIT_TABLE.size() > 0) { + for (int i = 0; i < list_FEEUNIT_TABLE.size(); i++) { + Map map = (Map) list_FEEUNIT_TABLE.get(i); + if (map.get("ID").equals(id)) { + result = map.get("NAME").toString(); + break; + } + } + if (result.length() == 0 || result.equals("")) { + result = "计费单元ID不存在"; + } + } + } else { + result = "计费单元ID不存在"; + } +// if (id.length() >= 16) { +// id = id.substring(0, 16); +// String sql = "select NAME from feeunit_table where id='" + id + "'"; +// List list = getListBySql(sql); +// if (list.size() > 0) { +// result = ((Map) list.get(0)).get("NAME").toString(); +// } else { +// result = "计费单元ID不存在"; +// } +// } else { +// result = "计费单元ID不存在"; +// } + return result; + } + + //获取查询结果中收费路段名称组合 + public static String GetSectionNameGroup(String tollIntervalID, List list_line_table) throws Exception { + StringBuilder result = new StringBuilder(); + String[] temp = tollIntervalID.split("\\|"); + for (int i = 0; i < temp.length; i++) { + if (i == temp.length - 1) { + if (temp[i].length() > 0) { + result.append(GetSectionName(temp[i].substring(0, 11), list_line_table)); + } else { + result.append(""); + } + } else { + if (temp[i].length() > 0) { + result.append(GetSectionName(temp[i].substring(0, 11), list_line_table) + "|"); + } else { + result.append("|"); + } + } + } + return result.toString(); + } + + //根据路段编号获取路段名称 + public static String GetSectionName(String GBID, List list_line_table) throws Exception { + String result = ""; + + if (list_line_table.size() > 0) { + for (int i = 0; i < list_line_table.size(); i++) { + Map map = (Map) list_line_table.get(i); + if (map.get("GBLINEID").toString().equals(GBID)) { + result = map.get("LINENAME").toString(); + break; + } + } + } + +// if (GBID.length()>=11){ +// GBID=GBID.substring(0,11); +// String sql="select LINENAME from line_table where GBLINEID='" + GBID + "'"; +// List list=getListBySql(sql); +// if (list.size()>0){ +// result=((Map) list.get(0)).get("LINENAME").toString(); +// } +// else { +// result=""; +// } +// } +// else { +// result=""; +// } + return result; + } + + //处理vehiclesign + public static String GetRightvehicleSign(String vehicleSign) { + String[] vehicleSign_temp = {"0x00", "0x01", "0x02", "0x03", "0x04", "0xff"}; + for (int i = 0; i < vehicleSign_temp.length; i++) { + if (vehicleSign_temp[i].equals(vehicleSign)) { + return vehicleSign; + } + } + return "0xff"; + } + + //获取查询结果中生活纵向优惠金额总和 + public static int GetprovinceDiscountFeeSum(List list) { + int result = 0; + for (int i = 0; i < list.size(); i++) { + int PROVINCEDISCOUNTFEE = 0; + PROVINCEDISCOUNTFEE = Integer.parseInt(((Map) list.get(i)).get("PROVINCEDISCOUNTFEE").toString()); + result += PROVINCEDISCOUNTFEE; + } + return result; + } + + //把结果转换为json字符串 + public static String DataTableToJson(List list, String exTime, JdbcTemplate jdbcTemplate) throws Exception { + StringBuilder sb = new StringBuilder(); + sb.append("["); + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + sb.append("{"); + + sb.append("\"id\":\"" + (map.get("TRADEID") == null ? "" : map.get("TRADEID").toString()) + "\","); + sb.append("\"tollGantryId\":\"" + (map.get("GANTRYID") == null ? "" : map.get("GANTRYID").toString()) + + "\","); + String gantryType = ""; + if (map.get("GANTRYTYPE") == null || map.get("GANTRYTYPE").toString().length() == 0) { + gantryType = String.valueOf(GetGantryType(map.get("GANTRYID").toString(), jdbcTemplate)); + } else { + gantryType = map.get("GANTRYTYPE").toString(); + } + sb.append("\"gantryType\":" + (gantryType.equals("0") ? "2" : gantryType) + ","); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date t_Dis = sdf.parse("2020-05-06 00:00:00"); + Date t_en = sdf.parse(map.get("ENTIME").toString()); + int payFee = 0; + if (isInteger(map.get("PAYFEE").toString())) { + payFee = Integer.valueOf(map.get("PAYFEE").toString()); + } + sb.append("\"payFee\":" + payFee + ","); + int fee = 0; + if (t_en.getTime() < t_Dis.getTime()) { + fee = 0; + sb.append("\"fee\":" + fee + ","); + } else { + if (isInteger(map.get("FEE").toString())) { + fee = Integer.valueOf(map.get("FEE").toString()); + } + sb.append("\"fee\":" + fee + ","); + } + + int discountfee = 0; + if (t_en.getTime() < t_Dis.getTime()) { + discountfee = payFee; + sb.append("\"discountFee\":" + discountfee + ","); + } else { + if (isInteger(map.get("DISCOUNTFEE").toString())) { + discountfee = Integer.valueOf(map.get("DISCOUNTFEE").toString()); + } + sb.append("\"discountFee\":" + discountfee + ","); + } + + int obuProvinceFee = 0; + if (isInteger(map.get("OBUPROVFEESUMAFTER").toString())) { + obuProvinceFee = Integer.valueOf(map.get("OBUPROVFEESUMAFTER").toString()); + } + sb.append("\"obuProvinceFee\":" + (obuProvinceFee < 0 ? 0 : obuProvinceFee) + ","); + + int obuTotalAmount = 0; + if (isInteger(map.get("OBUFEESUMAFTER").toString())) { + obuTotalAmount = Integer.valueOf(map.get("OBUFEESUMAFTER").toString()); + } + sb.append("\"obuTotalAmount\":" + (obuTotalAmount < 0 ? 0 : obuTotalAmount) + ","); + + int provTransCount = 0; + if (isInteger(map.get("OBUPROVTRADESUCCNUMAFTER").toString())) { + provTransCount = Integer.valueOf(map.get("OBUPROVTRADESUCCNUMAFTER").toString()); + } + sb.append("\"provTransCount\":" + provTransCount + ","); + + int totalCount = 0; + if (isInteger(map.get("OBUTOTALTRADESUCCNUMAFTER").toString())) { + totalCount = Integer.valueOf(map.get("OBUTOTALTRADESUCCNUMAFTER").toString()); + } + sb.append("\"totalCount\":" + (totalCount < 0 ? 0 : totalCount) + ","); + + int noCardCount = 0; + if (isInteger(map.get("NOCARDTIMESAFTER").toString())) { + noCardCount = Integer.valueOf(map.get("NOCARDTIMESAFTER").toString()); + } + sb.append("\"noCardCount\":" + (noCardCount < 0 ? 0 : noCardCount) + ","); + + int provinceCount = 0; + if (isInteger(map.get("PROVINCENUMAFTER").toString())) { + provinceCount = Integer.valueOf(map.get("PROVINCENUMAFTER").toString()); + } + sb.append("\"provinceCount\":" + (provinceCount > 0 ? provinceCount : 1) + ","); + + sb.append("\"enTollLaneId\":\"" + map.get("ENTOLLSTATIONHEX").toString() + "\","); + //sb.append("\"enTime\":\"" + sdf.format(sdf.parse(map.get("ENTIME").toString())) + "\","); + sb.append("\"enTime\":\"" + new SimpleDateFormat("yyyy-MM-dd").format(sdf.parse(map.get("ENTIME").toString())) + "T" + new SimpleDateFormat("HH:mm:ss").format(sdf.parse(map.get("ENTIME").toString())) + "\","); + if (i == list.size() - 1) { + + Date date = sdf.parse(exTime); + sb.append("\"transTime\":\"" + new SimpleDateFormat("yyyy-MM-dd").format(date) + "T" + new SimpleDateFormat("HH:mm:ss").format(date) + "\","); + } else { + Date date = sdf.parse(map.get("TRANSTIME").toString()); + + sb.append("\"transTime\":\"" + new SimpleDateFormat("yyyy-MM-dd").format(date) + "T" + new SimpleDateFormat("HH:mm:ss").format(date) + "\","); + } + + int vehicleType = 0; + if (isInteger(map.get("FEEVEHICLETYPE").toString())) { + vehicleType = Integer.valueOf(map.get("FEEVEHICLETYPE").toString()); + } + sb.append("\"vehicleType\":" + GetRightvehicleType(String.valueOf(vehicleType), + map.get("VEHICLETYPE").toString()) + ","); + + int vehicleClass = 0; + sb.append("\"vehicleClass\":" + vehicleClass + ","); + sb.append("\"passId\":\"" + map.get("PASSID").toString() + "\","); + sb.append("\"vehicleSign\":\"" + GetRightvehicleSign(map.get("VEHICLESIGN").toString()) + "\","); + + if (map.get("FEECALCRESULT").toString().equals("0")) { + int cardTotalAmount = 0; + if (isInteger(map.get("CARDFEESUMAFTER").toString())) { + cardTotalAmount = Integer.valueOf(map.get("CARDFEESUMAFTER").toString()); + } + sb.append("\"cardTotalAmount\":" + (cardTotalAmount < 0 ? 0 : cardTotalAmount) + ","); + + String TAC = ""; + if ((map.get("TAC") == null ? true : map.get("TAC").toString().length() <= 1)) { + TAC = "00000000"; + } else { + TAC = map.get("TAC").toString(); + } + + sb.append("\"TAC\":\"" + TAC + "\","); + + sb.append("\"terminalTransNo\":\"" + (map.get("TERMINALTRANSNO") == null ? "" : map.get( + "TERMINALTRANSNO").toString()) + "\","); + sb.append("\"transType\":\"" + map.get("TRANSTYPE").toString() + "\","); + + } + + int vehicleType1 = 0; + if (isInteger(map.get("VEHICLETYPE").toString())) { + vehicleType1 = Integer.valueOf(map.get("VEHICLETYPE").toString()); + } + if (vehicleType1 >= 10) { + int enAxleCount = 0; + if (isInteger(map.get("AXLECOUNT").toString())) { + enAxleCount = Integer.valueOf(map.get("AXLECOUNT").toString()); + } + if (enAxleCount > 30) { + switch (vehicleType1) { + case 11: + enAxleCount = 2; + break; + case 12: + enAxleCount = 2; + break; + case 13: + enAxleCount = 3; + break; + case 14: + enAxleCount = 4; + break; + case 15: + enAxleCount = 5; + break; + case 16: + enAxleCount = 6; + break; + default: + enAxleCount = 2; + break; + } + } + + sb.append("\"enAxleCount\":" + enAxleCount + ","); + int enWeight = 0; + if (isInteger(map.get("TOTALWEIGHT").toString())) { + enWeight = Integer.valueOf(map.get("TOTALWEIGHT").toString()); + } + sb.append("\"enWeight\":" + enWeight + ","); + + } + if (map.get("RATEVERSION").toString().length() > 0) { + sb.append("\"rateVersion\":\"" + map.get("RATEVERSION").toString() + "\","); + } + if (map.get("OBUMAC").toString().length() > 0) { + sb.append("\"OBUMAC\":\"" + map.get("OBUMAC").toString() + "\","); + } + if (map.get("OBUSN").toString().length() > 0) { + sb.append("\"OBUSN\":\"" + map.get("OBUSN").toString() + "\","); + } + + if (map.get("OBUSIGN").toString().equals("1")) { + int electricalPercentage = 0; + if (isInteger(map.get("OBUELECTRICAL").toString())) { + electricalPercentage = Integer.valueOf(map.get("OBUELECTRICAL").toString()); + } + sb.append("\"electricalPercentage\":" + electricalPercentage + ","); + } + + int discountType = 0; + if (t_en.getTime() < t_Dis.getTime()) { + discountType = 5; + sb.append("\"discountType\":" + discountType + ","); + } else { + if (map.get("DISCOUNTTYPE") == null ? false : isInteger(map.get("DISCOUNTTYPE").toString())) { + discountType = Integer.valueOf(map.get("DISCOUNTTYPE").toString()); + } + if (discountType == 0) { + sb.append("\"discountType\":null,"); + } else { + sb.append("\"discountType\":" + discountType + ","); + } + } + + if (map.get("DISCOUNTTYPE") == null ? false : map.get("DISCOUNTTYPE").toString().equals("5")) { + int provinceDiscountFee = 0; + if (isInteger(map.get("PROVINCEDISCOUNTFEE").toString())) { + provinceDiscountFee = Integer.valueOf(map.get("PROVINCEDISCOUNTFEE").toString()); + } + sb.append("\"provinceDiscountFee\":" + provinceDiscountFee + ","); + } else { + sb.append("\"provinceDiscountFee\":0,"); + sb.append("\"originFee\":0,"); + } + + sb.delete(sb.length() - 1, sb.length()); + sb.append("},"); + + + } + + sb.delete(sb.length() - 1, sb.length()); + sb.append("]"); + return sb.toString(); + } + + //处理vehicletype + public static String GetRightvehicleType(String vehicleType, String vehicletype1) { + String[] vehicleType_temp = {"1", "2", "3", "4", "11", "12", "13", "14", "15", "16", "21", "22", "23", "24", + "25", "26"}; + for (int i = 0; i < vehicleType_temp.length; i++) { + if (vehicleType_temp[i].equals(vehicleType)) { + return vehicleType; + } + } + return vehicletype1; + + } + + //通过gantryID获取gantryTYpe + public static int GetGantryType(String Gantryid, JdbcTemplate jdbcTemplate) throws Exception { + String sql = "select TYPE from gantry_table where id='" + Gantryid + "'"; + List list = getListBySql(sql, jdbcTemplate); + if (list.size() > 0) { + return Integer.valueOf(((Map) list.get(0)).get("TYPE").toString()); + } else { + return 0; + } + } + + //格式化时间 + public static String shortTime(String dateTime) throws ParseException { + + SimpleDateFormat format_Date = new SimpleDateFormat("yyyy-MM-dd"); + return format_Date.format(format_Date.parse(dateTime)); + } + + public static String longTime(String dateTime) throws ParseException { + SimpleDateFormat format_Time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return format_Time.format(format_Time.parse(dateTime)); + } + + public static String idTime(String dateTime) throws ParseException { + SimpleDateFormat format_Time = new SimpleDateFormat("yyyyMMddHHmmss"); + SimpleDateFormat format_Time1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return format_Time.format(format_Time1.parse(dateTime)); + } + + //判断是否位数字 + public static boolean isInteger(String str) { + boolean result = false; + Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); + + long str_temp = Long.valueOf(str); + if (str_temp > Integer.MAX_VALUE) { + result = false; + } else { + result = pattern.matcher(str).matches(); + } + + + return result; + } + + //判断计费单元组合中是否有重复交易的计费单元 + public static boolean tollIntervalId_repeat(String tollIntervalid) { + boolean result = false; + String[] temp = tollIntervalid.split("\\|"); + if (temp.length > 1) { + Set setTemp = new HashSet(); + for (int i = 0; i < temp.length; i++) { + setTemp.add(temp[i]); + } + if (temp.length == setTemp.size()) { + result = false; + } else { + result = true; + } + } else { + result = false; + } + return result; + } + + //处理List中重复的计费单元 + public static List remove_repeat_tollIntervalId(List list, JdbcTemplate jdbcTemplate) throws Exception { + + List tempList = new ArrayList(); + if (list.size() > 1) { + + tempList.add(list.get(0)); + String tollintervalid_temp = ""; + for (int i = 1; i < list.size(); i++) { + Map map = (Map) list.get(i); + Map map_temp = (Map) tempList.get(tempList.size() - 1); + + //if (map.get("OBUTRADERESULT").toString().equals("1") || map.get("TRADERESULT").toString().equals("1")){ + tollintervalid_temp += GetRightTollintervalID(tempList, jdbcTemplate);//临时表里的计费单元组合 + + + String[] tollid_map = map.get("TOLLINTERVALID").toString().split("\\|"); + String[] feegroup_map = map.get("FEEGROUP").toString().split("\\|"); + String[] payfeegroup_map = map.get("PAYFEEGROUP").toString().split("\\|"); + String tollintervalid_use = ""; + String feegroup_use = ""; + String payfeegroup_use = ""; + for (int j = 0; j < tollid_map.length; j++) { + if (tollintervalid_temp.indexOf(tollid_map[j]) < 0) { + tollintervalid_use += tollid_map[j] + "|"; + feegroup_use += feegroup_map[j] + "|"; + payfeegroup_use += payfeegroup_map[j] + "|"; + } + + } + if (tollintervalid_use.length() > 0) { + tollintervalid_use = tollintervalid_use.substring(0, tollintervalid_use.length() - 1); + feegroup_use = feegroup_use.substring(0, feegroup_use.length() - 1); + payfeegroup_use = payfeegroup_use.substring(0, payfeegroup_use.length() - 1); + + map.put("TOLLINTERVALID", tollintervalid_use); + map.put("FEEGROUP", feegroup_use); + map.put("PAYFEEGROUP", payfeegroup_use); + tempList.add(map); + } + //} + //else { + //tempList.add(map); + //} + + + } + } + + return tempList; + } + + //判断list查询结果中是否有丢门架情况 + public static boolean isListLostGantry(List list) { + boolean result = false; + if (list.size() > 1) { + + if (!((Map) list.get(0)).get("OBUPROVTRADESUCCNUMAFTER").toString().equals("1")) { + result = true; + } else { + for (int i = 0; i < list.size() - 1; i++) { + Map map = (Map) list.get(i); + Map map1 = (Map) list.get(i + 1); + if (Integer.valueOf(map1.get("OBUPROVTRADESUCCNUMAFTER").toString()) - Integer.valueOf(map.get("OBUPROVTRADESUCCNUMAFTER").toString()) > 1) { + result = true; + break; + } + + } + } + + } else { + + if (!((Map) list.get(0)).get("OBUPROVTRADESUCCNUMAFTER").toString().equals("1")) { + result = true; + } + } + + + return result; + + } + + //U转路径 + public static String UTURN_PATH(String tollIntervalid, List list_FEEUNIT_TABLE) throws Exception { + String[] temp = tollIntervalid.split("\\|"); + List list = new ArrayList(); + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < temp.length; i++) { + if (list.size() > 0) { + if (list.contains(temp[i].substring(0, temp[i].length() - 2))) { + sb.append(":" + temp[i]); + list.clear(); + list.add(temp[i].substring(0, temp[i].length() - 2)); + } else { + sb.append("|" + temp[i]); + list.add(temp[i].substring(0, temp[i].length() - 2)); + } + } else { + sb.append("|" + temp[i]); + list.add(temp[i].substring(0, temp[i].length() - 2)); + } + + } + + sb.delete(0, 1); + String[] temp_result = sb.toString().split(":"); + + StringBuilder result = new StringBuilder(); + for (int i = 0; i < temp_result.length; i++) {//循环结果,偶数正序,奇数倒序 + + if ((i & 1) == 1) {//奇数,倒序 + String[] temp1 = temp_result[i].split("\\|"); + for (int j = temp1.length - 1; j >= 0; j--) { + result.append(GetTollIntervalName(temp1[j], list_FEEUNIT_TABLE) + "|"); + } + } else {//偶数,正序 + + String[] temp1 = temp_result[i].split("\\|"); + for (int j = 0; j < temp1.length; j++) { + result.append(GetTollIntervalName(temp1[j], list_FEEUNIT_TABLE) + "|"); + } + } + result.delete(result.length() - 1, result.length()); + result.append(":"); + } + result.delete(result.length() - 1, result.length()); + return result.toString(); + } + + //根据gantryhex获取gantryID + public static String getGantryIDByGantryHex(String gantryHex, List list) { + String result = ""; + if (list.size() > 0) { + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (map.get("GANTRYHEX").toString().equals(gantryHex)) { + result = map.get("ID").toString(); + break; + } + } + } + return result; + } + + //根据补费结果更新门架交易质量数据 +// public static void updateGantryTrade_mass(String tollintervals, int vehicleType, int mediaType, String +// classdate) throws Exception { +// String[] tollintervals_temp = null; +// if (tollintervals.length() > 0) { +// tollintervals_temp = tollintervals.split("\\|"); +// } +// if (tollintervals_temp != null) { +// for (int i = 0; i < tollintervals_temp.length; i++) { +// String gantryid_sql = +// "select GANTRYID1 from feeunit_table where id='" + tollintervals_temp[i].toString() +// .substring(0, 16) + "'"; +// List list = getListBySql(gantryid_sql); +// if (list.size() > 0) { +// Map map = (Map) list.get(0); +// String update_gantry_trade_sql = "update gantry_trade_mass set feelostnum=feelostnum+1 where +// " + +// "gantryid = '" + (map.get("GANTRYID1") == null ? "" : map.get("GANTRYID1").toString()) + +// "' and classdate = TO_DATE('" + shortTime(classdate) + "', 'yyyy/mm/dd') and " + +// "mediatype = " + mediaType + " and vehicletype = " + vehicleType; +// } +// } +// } +// } + + //补费程序1,补入口到门架,门架之间,门架到出口,常规情况 + public static List GetLibDataTable(List list, int threadId, String passid, String sql_gantry_pass, + JdbcTemplate jdbcTemplate) { + + int mediaType = 0; + if (((Map) list.get(0)).get("MEDIATYPE").toString().length() > 0) { + mediaType = Integer.valueOf(((Map) list.get(0)).get("MEDIATYPE").toString()); + } else { + mediaType = Integer.valueOf(((Map) list.get(0)).get("PASSID").toString().substring(1, 2)); + } + + + //if (Integer.valueOf(((Map) list.get(list.size() - 1)).get("OBUPROVTRADESUCCNUMAFTER").toString()) > list.size()) { + if (isListLostGantry(list)) { + try { + StringBuilder sb_json = new StringBuilder(); + StringBuilder sb = new StringBuilder(); + + int totalWeight = Integer.valueOf(((Map) list.get(0)).get("TOTALWEIGHT").toString()); + + List list_temp = new ArrayList(); + if (((Map) list.get(0)).get("OBUPROVTRADESUCCNUMAFTER").toString().equals("1")) { + + Map map = (Map) list.get(0); + list_temp.add(map); + if (list.size() > 1) { + for (int i = 0; i < list.size() - 1; i++) { + map = (Map) list.get(i); + if (Integer.valueOf(((Map) list.get(i + 1)).get("OBUPROVTRADESUCCNUMAFTER").toString()) - Integer.valueOf(map.get("OBUPROVTRADESUCCNUMAFTER").toString()) > 1) { + String feeinfo = + (((Map) list.get(i + 1)).get("FEEINFO1") == null ? "" : + ((Map) list.get(i + 1)).get("FEEINFO1").toString()) + (((Map) list.get(i + 1)).get("FEEINFO2") == null ? "" : ((Map) list.get(i + 1)).get("FEEINFO2").toString()) + (((Map) list.get(i + 1)).get("FEEINFO3") == null ? "" : ((Map) list.get(i + 1)).get("FEEINFO3").toString()); + JSONObject temp_feeinfo = JSON.parseObject(feeinfo); + + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = sdf.parse(((Map) list.get(i + 1)).get("TRANSTIME").toString()); + + sb_json.append("{"); + + + sb_json.append("\"enTollStationHex\":\"" + temp_feeinfo.getString("enStaHex").toString() + "\","); + sb_json.append("\"curTollGantry\":\"" + ((Map) list.get(i + 1)).get("GANTRYID").toString() + "\","); + sb_json.append("\"curPassTime\":\"" + new SimpleDateFormat("yyyy-MM-dd").format(date) + "T" + new SimpleDateFormat("HH:mm:ss").format(date) + "\","); + sb_json.append("\"vehicleType\":" + temp_feeinfo.getInteger("vehType") + ","); + sb_json.append("\"enAxleCount\":" + temp_feeinfo.getInteger("enAlxeCount") + ","); + sb_json.append("\"totalWeight\":" + totalWeight + ","); + sb_json.append("\"lastGantryHex\":\"" + map.get("GANTRYHEX").toString() + "\","); + //sb_json.Append("\"lastGantryHex\":\"\","); + sb_json.append("\"tagType\":" + mediaType + ","); + if (mediaType == 1) { + sb_json.append("\"payFeeSumLocal\":" + Integer.valueOf((map.get( + "OBUPROVPAYFEESUMAFTER") == null || map.get( + "OBUPROVPAYFEESUMAFTER").toString().length() == 0) ? "0" : map.get( + "OBUPROVPAYFEESUMAFTER").toString()) + ","); + sb_json.append("\"realFeeSumLocal\":" + Integer.valueOf((map.get( + "OBUPROVFEESUMAFTER") == null || map.get( + "OBUPROVFEESUMAFTER").toString().length() == 0) ? "0" : map.get( + "OBUPROVFEESUMAFTER").toString())); + } else if (mediaType == 2) { + sb_json.append("\"payFeeSumLocal\":" + Integer.valueOf((map.get("FEESUMLOCALAFTER" + ) == null || map.get("FEESUMLOCALAFTER").toString().length() == 0) ? "0" : + map.get("FEESUMLOCALAFTER").toString()) + ","); + sb_json.append("\"realFeeSumLocal\":" + Integer.valueOf((map.get("FEESPARE1") == null || map.get("FEESPARE1").toString().length() == 0) ? "0" : map.get("FEESPARE1").toString())); + + } + + sb_json.append("}"); + + FeeModuleServiceService factory = new FeeModuleServiceService(); + com.trkf.feemoduleservice.FeeModuleService service = factory.getFeeModuleServicePort(); + + String result_json = service.getFee(sb_json.toString()); + sb_json.delete(0, sb_json.length()); + + JSONObject temp_json = JSON.parseObject(result_json); + + int result = temp_json.getInteger("errorCode"); + if (result != 0) { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result " + + "where " + + "passid='" + passid + "')) then into gantry_libfee_result (passid, " + + "libresult, gantrysql, libmethod, feestart, feestop, " + + "entollstationhex_u, " + + "lastgantryhex_u, curtollgantry_u, lanestatus_u, vehicletype_u, " + + "vehicleusertype_u, enaxlecount_u, mediatype_u, cardtype_u, " + + "payfeesumlocal_u, realfeesumlocal_u) values ('" + passid + "', " + result + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + temp_feeinfo.getString("enStaHex") + "', '" + map.get("GANTRYHEX").toString() + "', '" + temp_feeinfo.getString("enStaHex") + "', '', '" + map.get("GANTRYHEX").toString() + "', 3, " + temp_feeinfo.getInteger("feeVehicleType") + ", " + temp_feeinfo.getInteger("vehUserType") + ", " + temp_feeinfo.getInteger("enAlxeCount") + ", " + mediaType + ", 23, " + Integer.valueOf(((Map) list.get(i + 1)).get("OBUPROVPAYFEESUMAFTER").toString()) + ", " + Integer.valueOf(((Map) list.get(i + 1)).get("OBUPROVFEESUMAFTER").toString()) + ") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + + map = (Map) list.get(i + 1); + list_temp.add(map); + + } + if (result == 0) { + if (temp_json.getString("tollIntervalIDs").length() > 0) { + +// updateGantryTrade_mass(temp_json.getString("tollIntervalIDs"), +// temp_json.getInt("feeVehicleType"), mediaType, +// ((Map) list.get(i + 1)).get( +// "TRANSTIME").toString()); + + map = (Map) list.get(i + 1); + map.put("PAYFEE", GetArrSum(temp_json.getString("payFeeGroup"))); + map.put("FEE", GetArrSum(temp_json.getString("feeGroup"))); + map.put("DISCOUNTFEE", + GetArrSum(temp_json.getString("payFeeGroup")) - GetArrSum(temp_json.getString("feeGroup"))); + map.put("FEEGROUP", temp_json.getString("feeGroup")); + map.put("PAYFEEGROUP", temp_json.getString("payFeeGroup")); + + map.put("TOLLINTERVALID", temp_json.getString("tollIntervalIDs")); + list_temp.add(map); + } else { + map = (Map) list.get(i + 1); + list_temp.add(map); + } + } + } else { + map = (Map) list.get(i + 1); + list_temp.add(map); + } + + } + } + + + } else { + //从入口就一直丢数据,从入口开始补 + String feeinfo_no_in = (((Map) list.get(0)).get("FEEINFO1") == null ? "" : + ((Map) list.get(0)).get("FEEINFO1").toString()) + (((Map) list.get(0)).get( + "FEEINFO2") == null ? "" : ((Map) list.get(0)).get( + "FEEINFO2").toString()) + (((Map) list.get(0)).get("FEEINFO3") == null ? "" : + ((Map) list.get(0)).get("FEEINFO3").toString()); + + JSONObject temp_feeinfo_no_in = JSON.parseObject(feeinfo_no_in); + + SimpleDateFormat sdf_no_in = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date_no_in = sdf_no_in.parse(((Map) list.get(0)).get("TRANSTIME").toString()); + + String FEEPROVBEGINHEX = CommonHelp.GetGantryPassColumsValue(list, "FEEPROVBEGINHEX"); + + boolean FEEPROVBEGINHEX_ishave = false; + sb_json.append("{"); + + if (FEEPROVBEGINHEX.length() > 2) { + if (FEEPROVBEGINHEX.substring(0, 2).equals("16") || FEEPROVBEGINHEX.substring(0, 2).equals("17")) { + JSONArray jsonArray = JSON.parseArray(CommonHelp.GetConfigValue("boundarySta")); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i)); + if (jsonObject.getString("GANTRYHEX").equals(FEEPROVBEGINHEX)) { + FEEPROVBEGINHEX_ishave = true; + sb_json.append("\"enTollStationHex\":\"" + jsonObject.getString("ENSTAHEX") + "\","); + break; + } + } + } + } + if (!FEEPROVBEGINHEX_ishave) { + sb_json.append("\"enTollStationHex\":\"" + temp_feeinfo_no_in.getString("enStaHex") + "\","); + } + + + sb_json.append("\"curTollGantry\":\"" + ((Map) list.get(0)).get("GANTRYID").toString() + "\","); + sb_json.append("\"curPassTime\":\"" + new SimpleDateFormat("yyyy-MM-dd").format(date_no_in) + "T" + new SimpleDateFormat("HH:mm:ss").format(date_no_in) + "\","); + sb_json.append("\"vehicleType\":" + temp_feeinfo_no_in.getInteger("vehType") + ","); + sb_json.append("\"enAxleCount\":" + temp_feeinfo_no_in.getInteger("enAlxeCount") + ","); + sb_json.append("\"totalWeight\":" + totalWeight + ","); + sb_json.append("\"lastGantryHex\":\"\","); + sb_json.append("\"tagType\":" + mediaType + ","); + sb_json.append("\"payFeeSumLocal\":0,"); + sb_json.append("\"realFeeSumLocal\":0"); + sb_json.append("}"); + + FeeModuleServiceService factory_no_in = new FeeModuleServiceService(); + com.trkf.feemoduleservice.FeeModuleService service_no_in = factory_no_in.getFeeModuleServicePort(); + + String result_json_no_in = service_no_in.getFee(sb_json.toString()); + + sb_json.delete(0, sb_json.length()); + + JSONObject temp_json_no_in = JSON.parseObject(result_json_no_in); + int result_no_in = temp_json_no_in.getInteger("errorCode"); + if (result_no_in != 0) { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = + "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + "')) then into gantry_libfee_result (passid, libresult, gantrysql, libmethod, feestart, feestop, entollstationhex_u, lastgantryhex_u, curtollgantry_u, lanestatus_u, vehicletype_u, vehicleusertype_u, enaxlecount_u, mediatype_u, cardtype_u, payfeesumlocal_u, realfeesumlocal_u) values ('" + passid + "', " + result_no_in + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + temp_feeinfo_no_in.getString("enStaHex") + "', '" + ((Map) list.get(0)).get("GANTRYHEX").toString() + "', '" + temp_feeinfo_no_in.getString("enStaHex") + "', '', '" + ((Map) list.get(0)).get("GANTRYHEX").toString() + "', 3, " + temp_feeinfo_no_in.getInteger("vehType") + ", " + temp_feeinfo_no_in.getInteger("vehUserType") + ", " + temp_feeinfo_no_in.getInteger("enAlxeCount") + ", " + mediaType + ", 23, " + Integer.valueOf(((Map) list.get(0)).get("OBUPROVPAYFEESUMAFTER").toString()) + ", " + Integer.valueOf(((Map) list.get(0)).get("OBUPROVFEESUMAFTER").toString()) + ") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + Map map = (Map) list.get(0); + list_temp.add(map); + + } + if (result_no_in == 0) { +// updateGantryTrade_mass(temp_json_no_in.getString("tollIntervalIDs"), temp_feeinfo_no_in +// .getInt( +// "vehType"), mediaType, ((Map) list.get(0)).get("TRANSTIME").toString()); + if (temp_json_no_in.getString("tollIntervalIDs").length() > 0) { + Map map = (Map) list.get(0); + map.put("PAYFEE", GetArrSum(temp_json_no_in.getString("payFeeGroup"))); + map.put("FEE", GetArrSum(temp_json_no_in.getString("feeGroup"))); + map.put("DISCOUNTFEE", + GetArrSum(temp_json_no_in.getString("payFeeGroup")) - GetArrSum(temp_json_no_in.getString("feeGroup"))); + map.put("TOLLINTERVALID", temp_json_no_in.getString("tollIntervalIDs")); + map.put("FEEGROUP", temp_json_no_in.getString("feeGroup")); + map.put("PAYFEEGROUP", temp_json_no_in.getString("payFeeGroup")); + + list_temp.add(map); + + } else { + Map map = (Map) list.get(0); + list_temp.add(map); + } + + } + + for (int i = 0; i < list.size() - 1; i++) { + + if (Integer.valueOf(((Map) list.get(i + 1)).get("OBUPROVTRADESUCCNUMAFTER").toString()) - Integer.valueOf(((Map) list.get(i)).get("OBUPROVTRADESUCCNUMAFTER").toString()) > 1) { + String feeinfo = + (((Map) list.get(i + 1)).get("FEEINFO1") == null ? "" : + ((Map) list.get(i + 1)).get("FEEINFO1").toString()) + (((Map) list.get(i + 1)).get( + "FEEINFO2") == null ? "" : ((Map) list.get(i + 1)).get( + "FEEINFO2").toString()) + (((Map) list.get(i + 1)).get("FEEINFO3") == null ? "" : ((Map) list.get(i + 1)).get("FEEINFO3").toString()); + JSONObject temp_feeinfo = JSON.parseObject(feeinfo); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = sdf.parse(((Map) list.get(i + 1)).get("TRANSTIME").toString()); + + sb_json.append("{"); + sb_json.append("\"enTollStationHex\":\"" + temp_feeinfo.getString("enStaHex") + "\","); + sb_json.append("\"curTollGantry\":\"" + ((Map) list.get(i + 1)).get("GANTRYID").toString() + "\","); + sb_json.append("\"curPassTime\":\"" + new SimpleDateFormat("yyyy-MM-dd").format(date) + + "T" + new SimpleDateFormat("HH:mm:ss").format(date) + "\","); + sb_json.append("\"vehicleType\":" + temp_feeinfo.getInteger("vehType") + ","); + sb_json.append("\"enAxleCount\":" + temp_feeinfo.getInteger("enAlxeCount") + ","); + sb_json.append("\"lastGantryHex\":\"" + ((Map) list.get(i)).get("GANTRYHEX").toString() + "\","); + //sb_json.Append("\"lastGantryHex\":\"\","); + sb_json.append("\"tagType\":" + mediaType + ","); + if (mediaType == 1) { + sb_json.append("\"payFeeSumLocal\":" + Integer.valueOf((((Map) list.get(i)).get( + "OBUPROVPAYFEESUMAFTER") == null || ((Map) list.get(i)).get( + "OBUPROVPAYFEESUMAFTER").toString().length() == 0) ? "0" : + ((Map) list.get(i)).get("OBUPROVPAYFEESUMAFTER").toString()) + ","); + sb_json.append("\"realFeeSumLocal\":" + Integer.valueOf((((Map) list.get(i)).get( + "OBUPROVFEESUMAFTER") == null || ((Map) list.get(i)).get( + "OBUPROVFEESUMAFTER").toString().length() == 0) ? "0" : + ((Map) list.get(i)).get("OBUPROVFEESUMAFTER").toString())); + } else if (mediaType == 2) { + sb_json.append("\"payFeeSumLocal\":" + Integer.valueOf((((Map) list.get(i)).get( + "FEESUMLOCALAFTER") == null || ((Map) list.get(i)).get( + "FEESUMLOCALAFTER").toString().length() == 0) ? "0" : ((Map) list.get(i)).get( + "FEESUMLOCALAFTER").toString()) + ","); + sb_json.append("\"realFeeSumLocal\":" + Integer.valueOf((((Map) list.get(i)).get( + "FEESPARE1") == null || ((Map) list.get(i)).get( + "FEESPARE1").toString().length() == 0) ? "0" : ((Map) list.get(i)).get( + "FEESPARE1").toString())); + } + + sb_json.append("}"); + + FeeModuleServiceService factory = new FeeModuleServiceService(); + com.trkf.feemoduleservice.FeeModuleService service = factory.getFeeModuleServicePort(); + String result_json = service.getFee(sb_json.toString()); + sb_json.delete(0, sb_json.length()); + JSONObject temp_json = JSON.parseObject(result_json); + + int result = temp_json.getInteger("errorCode"); + + if (result != 0) { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result where " + + "passid='" + passid + "')) then into gantry_libfee_result (passid, " + + "libresult," + + " gantrysql, libmethod, feestart, feestop, entollstationhex_u, " + + "lastgantryhex_u, curtollgantry_u, lanestatus_u, vehicletype_u, " + + "vehicleusertype_u, enaxlecount_u, mediatype_u, cardtype_u, " + + "payfeesumlocal_u," + + " realfeesumlocal_u) values ('" + passid + "', " + result + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + temp_feeinfo.getString("enStaHex") + "', '" + ((Map) list.get(0)).get("GANTRYHEX").toString() + "', '" + temp_feeinfo.getString("enStaHex") + "', '', '" + ((Map) list.get(0)).get("GANTRYHEX").toString() + "', 3, " + temp_feeinfo.getInteger("vehType") + ", " + temp_feeinfo.getInteger("vehUserType") + ", " + temp_feeinfo.getInteger("enAlxeCount") + ", " + mediaType + ", 23, " + Integer.valueOf(((Map) list.get(0)).get("OBUPROVPAYFEESUMAFTER").toString()) + ", " + Integer.valueOf(((Map) list.get(0)).get("OBUPROVFEESUMAFTER").toString()) + ") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + Map map = (Map) list.get(i + 1); + list_temp.add(map); + + } + if (result == 0) { + if (temp_json.getString("tollIntervalIDs").length() > 0) { +// updateGantryTrade_mass(temp_json.getString("tollIntervalIDs"), temp_feeinfo +// .getInt( +// "vehType"), mediaType, +// ((Map) list.get(i + 1)).get("TRANSTIME").toString()); + Map map = (Map) list.get(i + 1); + map.put("PAYFEE", GetArrSum(temp_json.getString("payFeeGroup"))); + map.put("FEE", GetArrSum(temp_json.getString("feeGroup"))); + map.put("DISCOUNTFEE", + GetArrSum(temp_json.getString("payFeeGroup")) - GetArrSum(temp_json.getString("feeGroup"))); + map.put("TOLLINTERVALID", temp_json.getString("tollIntervalIDs")); + map.put("FEEGROUP", temp_json.getString("feeGroup")); + map.put("PAYFEEGROUP", temp_json.getString("payFeeGroup")); + + list_temp.add(map); + } else { + Map map = (Map) list.get(i + 1); + list_temp.add(map); + } + } + + } else { + Map map = (Map) list.get(i + 1); + list_temp.add(map); + } + + } + + + } + + + return list_temp; + + + } catch (Exception e) { + + LogClass.error("常规补费错误信息:" + e.toString() + "--PASSID:" + passid); + return list; + } + + } else { + return list; + } + + + } + + + //补最后出口到门架之间的信息 + public static List lastGantryToOut(List list, String enTollStationHex, String curTollGantry, String curPassTime, + int vehicleType, + int enaxlecount, int userType, String gantryId, String gantryName, + int mediaType, int obuprovpayfeesumafter, int obuprovfeesumafter, + String sql_gantry_pass, String passid, int totalWeight, JdbcTemplate jdbcTemplate) { + try { + String result_fee = ""; + StringBuilder sb_json = new StringBuilder(); + sb_json.append("{"); + sb_json.append("\"curTollGantry\":\"" + curTollGantry + "\","); + sb_json.append("\"curPassTime\":\"" + curPassTime + "\","); + sb_json.append("\"vehicleType\":" + vehicleType + ","); + sb_json.append("\"lastGantryHex\":\"" + enTollStationHex + "\","); + sb_json.append("\"enTollStationHex\":\"\","); + sb_json.append("\"enAxleCount\":" + enaxlecount + ","); + sb_json.append("\"payFeeSumLocal\":" + obuprovpayfeesumafter + ","); + sb_json.append("\"realFeeSumLocal\":" + obuprovfeesumafter + ","); + sb_json.append("\"totalWeight\":" + totalWeight + ","); + sb_json.append("\"tagType\":" + mediaType); + sb_json.append("}"); + FeeModuleServiceService factory = new FeeModuleServiceService(); + com.trkf.feemoduleservice.FeeModuleService service = factory.getFeeModuleServicePort(); + String result_json = service.getStaFee(sb_json.toString()); + + JSONObject temp_json = JSON.parseObject(result_json); + + int result = temp_json.getInteger("errorCode"); + if (result != 0) { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + + "')) " + + "then into gantry_libfee_result (passid, libresult, gantrysql, libmethod, feestart, " + + "feestop, " + + "entollstationhex_u, lastgantryhex_u, curtollgantry_u, lanestatus_u, vehicletype_u, " + + "vehicleusertype_u, enaxlecount_u, mediatype_u, cardtype_u, payfeesumlocal_u, " + + "realfeesumlocal_u) values ('" + passid + "', " + result + ", " + StringToClob(sql_gantry_pass) + ",'getStaFee', '" + enTollStationHex + "', '" + curTollGantry + "', '" + enTollStationHex + "', '" + enTollStationHex + "', '" + curTollGantry + "', 3, " + vehicleType + ", " + userType + ", " + enaxlecount + ", " + mediaType + ", 23, " + obuprovpayfeesumafter + ", " + obuprovfeesumafter + ") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + } + + int maxIndex = list.size() - 1; + if (result == 0) { + if (temp_json.getString("tollIntervalIDs").length() > 0) { +// updateGantryTrade_mass(temp_json.getString("tollIntervalIDs"), vehicleType, mediaType, +// ((Map) list.get(maxIndex)).get("TRANSTIME").toString()); + + Map map = (Map) list.get(maxIndex); + String payFeeGroup_u = temp_json.getString("payFeeGroup"); + String feeGroup_u = temp_json.getString("feeGroup"); + String tollIntervalIDs_u = temp_json.getString("tollIntervalIDs"); + + map.put("PAYFEE", GetArrSum(temp_json.getString("payFeeGroup"))); + map.put("FEE", GetArrSum(temp_json.getString("feeGroup"))); + map.put("DISCOUNTFEE", + GetArrSum(temp_json.getString("payFeeGroup")) - GetArrSum(temp_json.getString("feeGroup"))); + map.put("TOLLINTERVALID", temp_json.getString("tollIntervalIDs")); + map.put("FEEGROUP", temp_json.getString("feeGroup")); + map.put("PAYFEEGROUP", temp_json.getString("payFeeGroup")); + + list.set(maxIndex, map); + + } + } + return list; + + + } catch (Exception e) { + + LogClass.error("最后门架到出口补费错误,PASSID:" + passid + ",错误信息:" + e.toString()); + return list; + } + } + + //补就一条出口门架的数据 + public static List firstGantryToOut(List list, String enTollStationHex, String curTollGantry, String curPassTime, + int vehicleType, + int enaxlecount, int userType, int mediaType, int obuprovpayfeesumafter, + int obuprovfeesumafter, String gantryId, String gantryName, + String sql_gantry_pass, String passid, String FEEPROVBEGINHEX, int totalWeight, JdbcTemplate jdbcTemplate, List list_GANTRY_TABLE,String lastGantryHex) throws Exception { + try { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String vehicleplate = ((Map) list.get(0)).get("VEHICLEPLATE").toString(); + String startTime = sdf.format(sdf.parse(((Map) list.get(0)).get("ENTIME").toString())); + String endTime = sdf.format(sdf.parse(((Map) list.get(list.size() - 1)).get("TRANSTIME").toString())); + + FeeModuleServiceService factory = new FeeModuleServiceService(); + com.trkf.feemoduleservice.FeeModuleService service = factory.getFeeModuleServicePort(); + + String result_fee = ""; + + + String sql_gantry_plate_pass = "select * from(select row_number() over(partition by a.gantryhex order by rownum) as rn, a.* from gantry_plate_pass_temp a where pictime>=to_date('" + startTime + "','yyyy-mm-dd hh24:mi:ss') and pictime<=to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss') and vehicleplate='" + vehicleplate + "') t where t.rn=1 order by pictime"; + + if (enTollStationHex.substring(0, 2).equals("15")) {//本省,直接用入口补费 + StringBuilder sb_json = new StringBuilder(); + sb_json.append("{"); + sb_json.append("\"curTollGantry\":\"" + curTollGantry + "\","); + sb_json.append("\"curPassTime\":\"" + curPassTime + "\","); + sb_json.append("\"vehicleType\":" + vehicleType + ","); + sb_json.append("\"lastGantryHex\":\"\","); + sb_json.append("\"enTollStationHex\":\"" + enTollStationHex + "\","); + sb_json.append("\"enAxleCount\":" + enaxlecount + ","); + sb_json.append("\"payFeeSumLocal\":" + obuprovpayfeesumafter + ","); + sb_json.append("\"realFeeSumLocal\":" + obuprovfeesumafter + ","); + sb_json.append("\"totalWeight\":" + totalWeight + ","); + sb_json.append("\"tagType\":" + mediaType); + sb_json.append("}"); + + + String result_json = service.getFee(sb_json.toString()); + JSONObject temp_json = JSON.parseObject(result_json); + + int result = Integer.valueOf(temp_json.getInteger("errorCode")); + if (result == 0) { + if (temp_json.getString("tollIntervalIDs").replaceAll(" ", "").length() > 0) { + Map map = (Map) list.get(0); + map.put("PAYFEE", GetArrSum(temp_json.getString("payFeeGroup"))); + map.put("FEE", GetArrSum(temp_json.getString("feeGroup"))); + map.put("DISCOUNTFEE", + GetArrSum(temp_json.getString("payFeeGroup")) - GetArrSum(temp_json.getString("feeGroup"))); + map.put("TOLLINTERVALID", temp_json.getString("tollIntervalIDs")); + map.put("FEEGROUP", temp_json.getString("feeGroup")); + map.put("PAYFEEGROUP", temp_json.getString("payFeeGroup")); + list.set(0, map); + } + } else { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + + "')) then into gantry_libfee_result (passid, libresult, " + + "gantrysql, libmethod, feestart, feestop, entollstationhex_u, lastgantryhex_u, " + + "curtollgantry_u, lanestatus_u, vehicletype_u, vehicleusertype_u, enaxlecount_u, " + + "mediatype_u," + + " cardtype_u, payfeesumlocal_u, realfeesumlocal_u) values " + + " " + + " ('" + passid + "', " + result + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + enTollStationHex + "', '" + curTollGantry + "', '" + enTollStationHex + "', '', '" + curTollGantry + "', 3, " + vehicleType + ", " + userType + ", " + enaxlecount + ", " + mediaType + ", 23, " + obuprovpayfeesumafter + ", " + obuprovfeesumafter + ") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + } + + } else {//跨省,分为两种情况,一种知道省界门架,一种不知道省界门架 + if (FEEPROVBEGINHEX.length() < 6 || (!FEEPROVBEGINHEX.substring(0, 2).equals("16") && !FEEPROVBEGINHEX.substring(0, 2).equals("17"))) {//不知道省界门架 + List list_gantry_plate = jdbcTemplate.queryForList(sql_gantry_plate_pass); + if (list_gantry_plate.size() > 0) { + Map map = (Map) list_gantry_plate.get(0); + String gantryHex = map.get("GANTRYHEX").toString().toUpperCase(); + if (gantryHex.substring(0, 2).equals("16") || gantryHex.substring(0, 2).equals("17")) { + JSONArray jsonArray = JSON.parseArray(CommonHelp.GetConfigValue("boundarySta")); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i)); + if (jsonObject.getString("GANTRYHEX").equals(gantryHex)) { + enTollStationHex = jsonObject.getString("ENSTAHEX"); + FEEPROVBEGINHEX = gantryHex; + break; + } + } + } + } + } + + + if (FEEPROVBEGINHEX.length()>2 && (FEEPROVBEGINHEX.substring(0, 2).equals("16") || FEEPROVBEGINHEX.substring(0, 2).equals("17"))) {//明确省界 + String curTollGantry_1 = getGantryIDByGantryHex(FEEPROVBEGINHEX, list_GANTRY_TABLE); + JSONArray jsonArray = JSON.parseArray(CommonHelp.GetConfigValue("boundarySta")); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i)); + if (jsonObject.getString("GANTRYHEX").equals(FEEPROVBEGINHEX)) { + enTollStationHex = jsonObject.getString("ENSTAHEX"); + break; + } + } + StringBuilder sb_json_1 = new StringBuilder(); + sb_json_1.append("{"); + sb_json_1.append("\"enTollStationHex\":\"" + enTollStationHex + "\","); + sb_json_1.append("\"curTollGantry\":\"" + curTollGantry_1 + "\","); + sb_json_1.append("\"curPassTime\":\"" + curPassTime + "\","); + sb_json_1.append("\"vehicleType\":" + vehicleType + ","); + sb_json_1.append("\"enAxleCount\":" + enaxlecount + ","); + sb_json_1.append("\"totalWeight\":" + totalWeight + ","); + sb_json_1.append("\"lastGantryHex\":\"\","); + //sb_json.Append("\"lastGantryHex\":\"\","); + sb_json_1.append("\"tagType\":" + mediaType + ","); + if (mediaType == 1) { + sb_json_1.append("\"payFeeSumLocal\":0,"); + sb_json_1.append("\"realFeeSumLocal\":0"); + } else if (mediaType == 2) { + sb_json_1.append("\"payFeeSumLocal\":0,"); + sb_json_1.append("\"realFeeSumLocal\":0"); + + } + + sb_json_1.append("}"); + + String result_json_1 = service.getFee(sb_json_1.toString()); + JSONObject temp_json_1 = JSON.parseObject(result_json_1); + + int result_1 = Integer.valueOf(temp_json_1.getInteger("errorCode")); + String feegroup_1 = ""; + String payfeegroup_1 = ""; + String tollintervalid_1 = ""; + + if (result_1 == 0) { + if (temp_json_1.getString("tollIntervalIDs").replaceAll(" ", "").length() > 0) { + feegroup_1 = temp_json_1.getString("feeGroup"); + payfeegroup_1 = temp_json_1.getString("payFeeGroup"); + tollintervalid_1 = temp_json_1.getString("tollIntervalIDs"); + } + } else { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + + "')) then into gantry_libfee_result (passid, libresult, " + + "gantrysql, libmethod, feestart, feestop, entollstationhex_u, lastgantryhex_u, " + + "curtollgantry_u, lanestatus_u, vehicletype_u, vehicleusertype_u, enaxlecount_u, " + + "mediatype_u," + + " cardtype_u, payfeesumlocal_u, realfeesumlocal_u) values " + + " " + + " ('" + passid + "', " + result_1 + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + enTollStationHex + "', '" + curTollGantry + "', '" + enTollStationHex + "', '', '" + curTollGantry + "', 3, " + vehicleType + ", " + userType + ", " + enaxlecount + ", " + mediaType + ", 23, " + obuprovpayfeesumafter + ", " + obuprovfeesumafter + ") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + } + + StringBuilder sb_json_2 = new StringBuilder(); + + sb_json_2.append("{"); + sb_json_2.append("\"enTollStationHex\":\"" + enTollStationHex + "\","); + sb_json_2.append("\"curTollGantry\":\"" + curTollGantry + "\","); + sb_json_2.append("\"curPassTime\":\"" + curPassTime + "\","); + sb_json_2.append("\"vehicleType\":" + vehicleType + ","); + sb_json_2.append("\"enAxleCount\":" + enaxlecount + ","); + sb_json_2.append("\"totalWeight\":" + totalWeight + ","); + sb_json_2.append("\"lastGantryHex\":\"" + FEEPROVBEGINHEX + "\","); + //sb_json.Append("\"lastGantryHex\":\"\","); + sb_json_2.append("\"tagType\":" + mediaType + ","); + if (mediaType == 1) { + sb_json_2.append("\"payFeeSumLocal\":"+GetArrSum(payfeegroup_1)+","); + sb_json_2.append("\"realFeeSumLocal\":"+GetArrSum(feegroup_1)+""); + } else if (mediaType == 2) { + sb_json_2.append("\"payFeeSumLocal\":"+GetArrSum(payfeegroup_1)+","); + sb_json_2.append("\"realFeeSumLocal\":"+GetArrSum(feegroup_1)+""); + + } + + sb_json_2.append("}"); + + String result_json_2 = service.getFee(sb_json_2.toString()); + JSONObject temp_json_2 = JSON.parseObject(result_json_2); + int result_2 = Integer.valueOf(temp_json_2.getInteger("errorCode")); + String feegroup_2 = ""; + String payfeegroup_2 = ""; + String tollintervalid_2 = ""; + + if (result_2 == 0) { + if (temp_json_2.getString("tollIntervalIDs").replaceAll(" ", "").length() > 0) { + feegroup_2 = temp_json_2.getString("feeGroup"); + payfeegroup_2 = temp_json_2.getString("payFeeGroup"); + tollintervalid_2 = temp_json_2.getString("tollIntervalIDs"); + } + } else { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + + "')) then into gantry_libfee_result (passid, libresult, " + + "gantrysql, libmethod, feestart, feestop, entollstationhex_u, lastgantryhex_u, " + + "curtollgantry_u, lanestatus_u, vehicletype_u, vehicleusertype_u, enaxlecount_u, " + + "mediatype_u," + + " cardtype_u, payfeesumlocal_u, realfeesumlocal_u) values " + + " " + + " ('" + passid + "', " + result_2 + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + enTollStationHex + "', '" + curTollGantry + "', '" + enTollStationHex + "', '', '" + curTollGantry + "', 3, " + vehicleType + ", " + userType + ", " + enaxlecount + ", " + mediaType + ", 23, " + obuprovpayfeesumafter + ", " + obuprovfeesumafter + ") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + } + String tollintervalid = ""; + String payfeegroup = ""; + String feegroup = ""; + if (tollintervalid_1.replaceAll(" ", "").length() > 0 && tollintervalid_2.replaceAll(" ", "").length() > 0) { + + tollintervalid = tollintervalid_1 + "|" + tollintervalid_2; + payfeegroup = payfeegroup_1 + "|" + payfeegroup_2; + feegroup = feegroup_1 + "|" + feegroup_2; + + + } else if (tollintervalid_1.replaceAll(" ", "").length() > 0 && tollintervalid_2.replaceAll(" ", "").length() == 0) { + tollintervalid = tollintervalid_1; + payfeegroup = payfeegroup_1; + feegroup = feegroup_1; + } else if (tollintervalid_1.replaceAll(" ", "").length() == 0 && tollintervalid_2.replaceAll(" ", "").length() > 0) { + tollintervalid = tollintervalid_2; + payfeegroup = payfeegroup_2; + feegroup = feegroup_2; + } + if (result_1 == 0 || result_2 == 0) { + Map map = (Map) list.get(0); + map.put("PAYFEE", GetArrSum(payfeegroup)); + map.put("FEE", GetArrSum(feegroup)); + map.put("DISCOUNTFEE", + GetArrSum(payfeegroup) - GetArrSum(feegroup)); + map.put("TOLLINTERVALID", tollintervalid); + map.put("FEEGROUP", feegroup); + map.put("PAYFEEGROUP", payfeegroup); + list.set(0, map); + } + } else {//跨省不明确省界门架,通过抓拍也无法确定时 + if (lastGantryHex.length()>0){ + if (lastGantryHex.substring(0,2).equals("14") || + lastGantryHex.substring(0,2).equals("15") || + lastGantryHex.substring(0,2).equals("16") || + lastGantryHex.substring(0,2).equals("17")){ + lastGantryHex=""; + } + } + + StringBuilder sb_json = new StringBuilder(); + sb_json.append("{"); + sb_json.append("\"curTollGantry\":\"" + curTollGantry + "\","); + sb_json.append("\"curPassTime\":\"" + curPassTime + "\","); + sb_json.append("\"vehicleType\":" + vehicleType + ","); + sb_json.append("\"lastGantryHex\":\""+lastGantryHex+"\","); + sb_json.append("\"enTollStationHex\":\"" + enTollStationHex + "\","); + sb_json.append("\"enAxleCount\":" + enaxlecount + ","); + sb_json.append("\"payFeeSumLocal\":" + obuprovpayfeesumafter + ","); + sb_json.append("\"realFeeSumLocal\":" + obuprovfeesumafter + ","); + sb_json.append("\"totalWeight\":" + totalWeight + ","); + sb_json.append("\"tagType\":" + mediaType); + sb_json.append("}"); + + String result_json = service.getFee(sb_json.toString()); + JSONObject temp_json = JSON.parseObject(result_json); + + int result = Integer.valueOf(temp_json.getInteger("errorCode")); + if (result == 0) { + if (temp_json.getString("tollIntervalIDs").replaceAll(" ", "").length() > 0) { + Map map = (Map) list.get(0); + map.put("PAYFEE", GetArrSum(temp_json.getString("payFeeGroup"))); + map.put("FEE", GetArrSum(temp_json.getString("feeGroup"))); + map.put("DISCOUNTFEE", + GetArrSum(temp_json.getString("payFeeGroup")) - GetArrSum(temp_json.getString("feeGroup"))); + map.put("TOLLINTERVALID", temp_json.getString("tollIntervalIDs")); + map.put("FEEGROUP", temp_json.getString("feeGroup")); + map.put("PAYFEEGROUP", temp_json.getString("payFeeGroup")); + list.set(0, map); + } + } else { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + + "')) then into gantry_libfee_result (passid, libresult, " + + "gantrysql, libmethod, feestart, feestop, entollstationhex_u, lastgantryhex_u, " + + "curtollgantry_u, lanestatus_u, vehicletype_u, vehicleusertype_u, enaxlecount_u, " + + "mediatype_u," + + " cardtype_u, payfeesumlocal_u, realfeesumlocal_u) values " + + " " + + " ('" + passid + "', " + result + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + enTollStationHex + "', '" + curTollGantry + "', '" + enTollStationHex + "', '', '" + curTollGantry + "', 3, " + vehicleType + ", " + userType + ", " + enaxlecount + ", " + mediaType + ", 23, " + obuprovpayfeesumafter + ", " + obuprovfeesumafter + ") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + } + + } + + + } + +// if (enTollStationHex != null && enTollStationHex.length() > 2) { +// if (!enTollStationHex.substring(0, 2).equals("15")) {//跨省 +// if (FEEPROVBEGINHEX.length() > 2) { +// if (FEEPROVBEGINHEX.substring(0, 2).equals("16") || FEEPROVBEGINHEX.substring(0, 2).equals("17")) {//知道省界 +// JSONArray jsonArray = JSON.parseArray(CommonHelp.GetConfigValue("boundarySta")); +// for (int i = 0; i < jsonArray.size(); i++) { +// JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i)); +// if (jsonObject.getString("GANTRYHEX").equals(FEEPROVBEGINHEX)) { +// enTollStationHex = jsonObject.getString("ENSTAHEX"); +// break; +// } +// } +// } else {//不知道省界 +// +// List list_gantry_plate = jdbcTemplate.queryForList(sql_gantry_plate_pass); +// if (list_gantry_plate.size() > 0) { +// Map map = (Map) list_gantry_plate.get(0); +// String gantryHex = map.get("GANTRYHEX").toString().toUpperCase(); +// if (gantryHex.substring(0, 2).equals("16") || gantryHex.substring(0, 2).equals("17")) { +// JSONArray jsonArray = JSON.parseArray(CommonHelp.GetConfigValue("boundarySta")); +// for (int i = 0; i < jsonArray.size(); i++) { +// JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i)); +// if (jsonObject.getString("GANTRYHEX").equals(gantryHex)) { +// enTollStationHex = jsonObject.getString("ENSTAHEX"); +// FEEPROVBEGINHEX = gantryHex; +// break; +// } +// } +// } +// } +// } +// } else {//不知道省界 +// +// List list_gantry_plate = jdbcTemplate.queryForList(sql_gantry_plate_pass); +// if (list_gantry_plate.size() > 0) { +// Map map = (Map) list_gantry_plate.get(0); +// String gantryHex = map.get("GANTRYHEX").toString().toUpperCase(); +// if (gantryHex.substring(0, 2).equals("16") || gantryHex.substring(0, 2).equals("17")) { +// JSONArray jsonArray = JSON.parseArray(CommonHelp.GetConfigValue("boundarySta")); +// for (int i = 0; i < jsonArray.size(); i++) { +// JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i)); +// if (jsonObject.getString("GANTRYHEX").equals(gantryHex)) { +// enTollStationHex = jsonObject.getString("ENSTAHEX"); +// FEEPROVBEGINHEX = gantryHex; +// break; +// } +// } +// } +// } +// } +// } +// } + + +// if (FEEPROVBEGINHEX.length() == 6 && (FEEPROVBEGINHEX.substring(0, 2).equals("16") || FEEPROVBEGINHEX.substring(0, 2).equals("17"))) { +// +// sb_json.append("{"); +// sb_json.append("\"enTollStationHex\":\"" + enTollStationHex + "\","); +// sb_json.append("\"curTollGantry\":\"" + curTollGantry + "\","); +// sb_json.append("\"curPassTime\":\"" + curPassTime + "\","); +// sb_json.append("\"vehicleType\":" + vehicleType + ","); +// sb_json.append("\"enAxleCount\":" + enaxlecount + ","); +// sb_json.append("\"totalWeight\":" + totalWeight + ","); +// sb_json.append("\"lastGantryHex\":\"" + FEEPROVBEGINHEX + "\","); +// //sb_json.Append("\"lastGantryHex\":\"\","); +// sb_json.append("\"tagType\":" + mediaType + ","); +// if (mediaType == 1) { +// sb_json.append("\"payFeeSumLocal\"0,"); +// sb_json.append("\"realFeeSumLocal\":0"); +// } else if (mediaType == 2) { +// sb_json.append("\"payFeeSumLocal\":0,"); +// sb_json.append("\"realFeeSumLocal\":0"); +// +// } +// +// sb_json.append("}"); +// +// } else { +// sb_json.append("{"); +// sb_json.append("\"curTollGantry\":\"" + curTollGantry + "\","); +// sb_json.append("\"curPassTime\":\"" + curPassTime + "\","); +// sb_json.append("\"vehicleType\":" + vehicleType + ","); +// sb_json.append("\"lastGantryHex\":\"\","); +// sb_json.append("\"enTollStationHex\":\"" + enTollStationHex + "\","); +// sb_json.append("\"enAxleCount\":" + enaxlecount + ","); +// sb_json.append("\"payFeeSumLocal\":" + obuprovpayfeesumafter + ","); +// sb_json.append("\"realFeeSumLocal\":" + obuprovfeesumafter + ","); +// sb_json.append("\"totalWeight\":" + totalWeight + ","); +// sb_json.append("\"tagType\":" + mediaType); +// sb_json.append("}"); +// +// } +// +// +// FeeModuleServiceService factory = new FeeModuleServiceService(); +// com.trkf.feemoduleservice.FeeModuleService service = factory.getFeeModuleServicePort(); +// String result_json = service.getFee(sb_json.toString()); +// JSONObject temp_json = JSON.parseObject(result_json); +// +// int result = Integer.valueOf(temp_json.getInteger("errorCode")); +// if (result == 0) { +// if (temp_json.getString("tollIntervalIDs").replaceAll(" ", "").length() > 0) { +// Map map = (Map) list.get(0); +// map.put("PAYFEE", GetArrSum(temp_json.getString("payFeeGroup"))); +// map.put("FEE", GetArrSum(temp_json.getString("feeGroup"))); +// map.put("DISCOUNTFEE", +// GetArrSum(temp_json.getString("payFeeGroup")) - GetArrSum(temp_json.getString("feeGroup"))); +// map.put("TOLLINTERVALID", temp_json.getString("tollIntervalIDs")); +// map.put("FEEGROUP", temp_json.getString("feeGroup")); +// map.put("PAYFEEGROUP", temp_json.getString("payFeeGroup")); +// list.set(0, map); +// } +// } else { +// String dbType = CommonHelp.GetConfigValue("DbType"); +// if (dbType.equals("1")) { +// sql_gantry_pass = sql_gantry_pass.replace("'", "''"); +// String sql = "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + +// "')) then into gantry_libfee_result (passid, libresult, " + +// "gantrysql, libmethod, feestart, feestop, entollstationhex_u, lastgantryhex_u, " + +// "curtollgantry_u, lanestatus_u, vehicletype_u, vehicleusertype_u, enaxlecount_u, " + +// "mediatype_u," + +// " cardtype_u, payfeesumlocal_u, realfeesumlocal_u) values " + +// " " + +// " ('" + passid + "', " + result + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + enTollStationHex + "', '" + curTollGantry + "', '" + enTollStationHex + "', '', '" + curTollGantry + "', 3, " + vehicleType + ", " + userType + ", " + enaxlecount + ", " + mediaType + ", 23, " + obuprovpayfeesumafter + ", " + obuprovfeesumafter + ") select 1 from dual"; +// //excuteSql(sql); +// //new DBUtil().update(sql); +// jdbcTemplate.update(sql); +// } +// } + return list; + } catch (Exception e) { + LogClass.error("只有出口补费出错,passid:" + passid + "错误信息:" + e.toString()); + return list; + } + + } + + +} diff --git a/.svn/pristine/a6/a619c4c1890c951a0caa9fe474d568375a122bcd.svn-base b/.svn/pristine/a6/a619c4c1890c951a0caa9fe474d568375a122bcd.svn-base new file mode 100644 index 0000000..0728f18 --- /dev/null +++ b/.svn/pristine/a6/a619c4c1890c951a0caa9fe474d568375a122bcd.svn-base @@ -0,0 +1,62 @@ + +package com.trkf.feemoduleservice; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

GetStaFeeResponse complex type Java ࡣ + * + *

ģʽƬָڴеԤݡ + * + *

+ * <complexType name="GetStaFeeResponse">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="return" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "GetStaFeeResponse", propOrder = { + "_return" +}) +public class GetStaFeeResponse { + + @XmlElement(name = "return") + protected String _return; + + /** + * ȡreturnԵֵ + * + * @return + * possible object is + * {@link String } + * + */ + public String getReturn() { + return _return; + } + + /** + * returnԵֵ + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setReturn(String value) { + this._return = value; + } + +} diff --git a/.svn/pristine/a6/a61ef2b80e42d937f7f7a0465c13d72b7426eefc.svn-base b/.svn/pristine/a6/a61ef2b80e42d937f7f7a0465c13d72b7426eefc.svn-base new file mode 100644 index 0000000..85cc578 Binary files /dev/null and b/.svn/pristine/a6/a61ef2b80e42d937f7f7a0465c13d72b7426eefc.svn-base differ diff --git a/.svn/pristine/a7/a7590d107af6b653e69c2c59548f5328f5385f33.svn-base b/.svn/pristine/a7/a7590d107af6b653e69c2c59548f5328f5385f33.svn-base new file mode 100644 index 0000000..3ca0f14 Binary files /dev/null and b/.svn/pristine/a7/a7590d107af6b653e69c2c59548f5328f5385f33.svn-base differ diff --git a/.svn/pristine/a8/a8f99f852ef932d08391bd5d46000092fd5a5c9b.svn-base b/.svn/pristine/a8/a8f99f852ef932d08391bd5d46000092fd5a5c9b.svn-base new file mode 100644 index 0000000..0c937bb --- /dev/null +++ b/.svn/pristine/a8/a8f99f852ef932d08391bd5d46000092fd5a5c9b.svn-base @@ -0,0 +1,19 @@ + + + $PROJECT_DIR$/out/artifacts/GANTRY_PASS_ALL_jar + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.svn/pristine/b2/b2420625d3df8e97632bdfc3457c6bb312facf91.svn-base b/.svn/pristine/b2/b2420625d3df8e97632bdfc3457c6bb312facf91.svn-base new file mode 100644 index 0000000..19e5b38 --- /dev/null +++ b/.svn/pristine/b2/b2420625d3df8e97632bdfc3457c6bb312facf91.svn-base @@ -0,0 +1,583 @@ + + + + + + + + + + + + + + + + axlecount + vehi + VEHICLETYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + C:\Users\90736\AppData\Roaming\Subversion + + + + + 1638777038918 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 20 + + + file://$PROJECT_DIR$/src/GPA/startGPA.java + 109 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 183 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 285 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 340 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 735 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 738 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 157 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 157 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 384 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 210 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 124 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1216 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 200 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 495 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1645 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1739 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1709 + + + file://$PROJECT_DIR$/src/GPA/GetGantryStat.java + 22 + + + file://$PROJECT_DIR$/src/GPA/GMAIN_TEST.java + 34 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1895 + + + + + + + + + + + + + + + + + + + + + GANTRY_PASS_ALL:jar + + + + + + + + No facets are configured + + + + + + + + + + + + + + + 1.8 + + + + + + + + GANTRY_PASS_ALL + + + + + + + + lib + + + + + + + + \ No newline at end of file diff --git a/.svn/pristine/b7/b7c6bfc2004993308d14326b339c3dc2527ca9ca.svn-base b/.svn/pristine/b7/b7c6bfc2004993308d14326b339c3dc2527ca9ca.svn-base new file mode 100644 index 0000000..79e2bc3 Binary files /dev/null and b/.svn/pristine/b7/b7c6bfc2004993308d14326b339c3dc2527ca9ca.svn-base differ diff --git a/.svn/pristine/b8/b8c4083b30bab8aa25e5b286992f30f7b1ce2efa.svn-base b/.svn/pristine/b8/b8c4083b30bab8aa25e5b286992f30f7b1ce2efa.svn-base new file mode 100644 index 0000000..1782aa7 --- /dev/null +++ b/.svn/pristine/b8/b8c4083b30bab8aa25e5b286992f30f7b1ce2efa.svn-base @@ -0,0 +1,2 @@ +@javax.xml.bind.annotation.XmlSchema(namespace = "http://FeeModuleService.trkf.com/") +package com.trkf.feemoduleservice; diff --git a/.svn/pristine/bb/bb447db60818ecfdbb1b99e7bd096ba7a252d91a.svn-base b/.svn/pristine/bb/bb447db60818ecfdbb1b99e7bd096ba7a252d91a.svn-base new file mode 100644 index 0000000..476e0c0 Binary files /dev/null and b/.svn/pristine/bb/bb447db60818ecfdbb1b99e7bd096ba7a252d91a.svn-base differ diff --git a/.svn/pristine/bf/bf1361fb5b49a1f89c0e19d3bb86514718620076.svn-base b/.svn/pristine/bf/bf1361fb5b49a1f89c0e19d3bb86514718620076.svn-base new file mode 100644 index 0000000..bcbe86e --- /dev/null +++ b/.svn/pristine/bf/bf1361fb5b49a1f89c0e19d3bb86514718620076.svn-base @@ -0,0 +1,602 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + C:\Users\90736\AppData\Roaming\Subversion + 125 + + + + + + + + + 1638777038918 + + + 1656919222519 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 20 + + + file://$PROJECT_DIR$/src/GPA/startGPA.java + 109 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 183 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 285 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 340 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 735 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 738 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 157 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 157 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 384 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 210 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 124 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1216 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 200 + + + file://$PROJECT_DIR$/src/GPA/GPA_DATA.java + 495 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1645 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1739 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1709 + + + file://$PROJECT_DIR$/src/GPA/GetGantryStat.java + 22 + + + file://$PROJECT_DIR$/src/GPA/GMAIN_TEST.java + 70 + + + file://$PROJECT_DIR$/src/GPA/CommonHelp.java + 1895 + + + + + + + + + + + + + + + + + + + + + + GANTRY_PASS_ALL:jar + + + + + + + + No facets are configured + + + + + + + + + + + + + + + 1.8 + + + + + + + + GANTRY_PASS_ALL + + + + + + + + lib + + + + + + + + \ No newline at end of file diff --git a/.svn/pristine/c2/c25ee587452e0466ce11902c9b420970db4098d0.svn-base b/.svn/pristine/c2/c25ee587452e0466ce11902c9b420970db4098d0.svn-base new file mode 100644 index 0000000..286d008 Binary files /dev/null and b/.svn/pristine/c2/c25ee587452e0466ce11902c9b420970db4098d0.svn-base differ diff --git a/.svn/pristine/c8/c8290a1868e8e266ccb5e12728d6a5f8b1876d51.svn-base b/.svn/pristine/c8/c8290a1868e8e266ccb5e12728d6a5f8b1876d51.svn-base new file mode 100644 index 0000000..acaa0af Binary files /dev/null and b/.svn/pristine/c8/c8290a1868e8e266ccb5e12728d6a5f8b1876d51.svn-base differ diff --git a/.svn/pristine/c9/c9f47b7b5ec13057053db9a514c6c9a9d7bf3a6e.svn-base b/.svn/pristine/c9/c9f47b7b5ec13057053db9a514c6c9a9d7bf3a6e.svn-base new file mode 100644 index 0000000..402686b Binary files /dev/null and b/.svn/pristine/c9/c9f47b7b5ec13057053db9a514c6c9a9d7bf3a6e.svn-base differ diff --git a/.svn/pristine/cd/cd621d23571a6ef40f5c3d3933b7f259ff6e4cf6.svn-base b/.svn/pristine/cd/cd621d23571a6ef40f5c3d3933b7f259ff6e4cf6.svn-base new file mode 100644 index 0000000..e8790cd Binary files /dev/null and b/.svn/pristine/cd/cd621d23571a6ef40f5c3d3933b7f259ff6e4cf6.svn-base differ diff --git a/.svn/pristine/d5/d5dd1bc2ff87d3ac0fe1161c22e43072de2c8f39.svn-base b/.svn/pristine/d5/d5dd1bc2ff87d3ac0fe1161c22e43072de2c8f39.svn-base new file mode 100644 index 0000000..965f951 --- /dev/null +++ b/.svn/pristine/d5/d5dd1bc2ff87d3ac0fe1161c22e43072de2c8f39.svn-base @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.svn/pristine/d7/d77fb987458797680ddd29be8354c790026b45e0.svn-base b/.svn/pristine/d7/d77fb987458797680ddd29be8354c790026b45e0.svn-base new file mode 100644 index 0000000..d0880af --- /dev/null +++ b/.svn/pristine/d7/d77fb987458797680ddd29be8354c790026b45e0.svn-base @@ -0,0 +1,3 @@ +[2022-06-20 10:49:24.940] DL 日志 +[2022-06-20 10:49:24.940] 1passid查询用时:15,查询结果:1条 +[2022-06-20 10:52:35.524] 1passid查询用时:7,查询结果:1条 diff --git a/.svn/pristine/da/da76ca59f6a57ee3102f8f9bd9cee742973efa8a.svn-base b/.svn/pristine/da/da76ca59f6a57ee3102f8f9bd9cee742973efa8a.svn-base new file mode 100644 index 0000000..0143c09 Binary files /dev/null and b/.svn/pristine/da/da76ca59f6a57ee3102f8f9bd9cee742973efa8a.svn-base differ diff --git a/.svn/pristine/dc/dc75d26485d658bb984d409f737097ac053a7fb0.svn-base b/.svn/pristine/dc/dc75d26485d658bb984d409f737097ac053a7fb0.svn-base new file mode 100644 index 0000000..6b4f3f8 --- /dev/null +++ b/.svn/pristine/dc/dc75d26485d658bb984d409f737097ac053a7fb0.svn-base @@ -0,0 +1,300 @@ +package GPA; + + +import org.springframework.jdbc.core.JdbcTemplate; + +import java.text.SimpleDateFormat; +import java.util.*; + +public class startGPA { + private final int MAX_ERROR_MSG=1000; + private List stop_list; + private List state_list; + private List ErrorMsg_list; + { + stop_list=new ArrayList<>(); + state_list=new ArrayList<>(); + ErrorMsg_list=new ArrayList<>(); + } + + + public static class State{ + long ThreadId; + long StateUpdateTime; + } + + public synchronized void UpdateState(long ThreadId){ + for (int i = 0; i < state_list.size(); i++) { + State s=state_list.get(i); + if (s.ThreadId==ThreadId){ + s.StateUpdateTime=System.currentTimeMillis(); + state_list.set(i,s); + } + } + } + public synchronized Date GetRunState(){ + long minTime=0; + for (int i = 0; i < state_list.size(); i++) { + State s=state_list.get(i); + if (s.StateUpdateTime < minTime || minTime==0){ + minTime=s.StateUpdateTime; + } + } + return new Date(minTime); + } + + public void WriteLog(String info){ + + } + public synchronized boolean init(String jarPath){ + WriteLog("软件启动"); + return true; + } + + boolean runAble=true; + + + public synchronized void stop(){ + runAble=false; + for (int i = 0; i < stop_list.size(); i++) { + Thread thread=stop_list.get(i); + try { + LogClass.debug("开始停止"+thread); + thread.join(1000); + LogClass.debug("已停止"+thread); + } + catch (Exception e){ + WriteLog("停止线程错误:"+e.getMessage()); + LogClass.debug("程序停止异常"+e.getMessage()); + } + } + stop_list.clear(); + state_list.clear(); + WriteLog("线程停止"); + } + + public synchronized String[] GetErrorLog(){ + int MsgCount=ErrorMsg_list.size(); + if (MsgCount>MAX_ERROR_MSG){ + MsgCount=MAX_ERROR_MSG; + } + String[] ErrorLogs=new String[MsgCount]; + for (int i = 0; i < MsgCount; i++) { + ErrorLogs[i]=ErrorMsg_list.get(i); + } + for (int i = 0; i < MsgCount; i++) { + ErrorMsg_list.remove(0); + } + return ErrorLogs; + } + + public synchronized void SetErrorLog(int Type,int MsgCode,String info){ + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String ErrorInfo="{\"TYPE\":"+String.valueOf(Type)+",\"MSGCODE\":"+String.valueOf(MsgCode)+",\"MSG\":"+String.valueOf(info)+",\"DT\":\""+sdf.format(new Date())+"\"}"; + ErrorMsg_list.add(ErrorInfo); + while (ErrorMsg_list.size()>MAX_ERROR_MSG){ + ErrorMsg_list.remove(0); + } + } + + public synchronized void exit(){ + WriteLog("软件退出"); + } + + public synchronized List startUp() throws Exception { + return Main_void("1"); + } + + private List Main_voidTest(String dbType) throws Exception { + try { + JdbcTemplate jdbcTemplate=new JdbcTemplate(new DBUtil().Hikar_DataSource()); + String sql4_1 = "delete gantry_pass_center where ROUND(TO_NUMBER(sysdate - handletime))>25"; + + deleteCenter deleteC=new deleteCenter(jdbcTemplate,sql4_1,runAble,this); + Thread thread=new Thread(deleteC); + thread.start();//true + + + stop_list.add(thread);//false + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + + + for (int i = 0; i < stop_list.size(); i++) { + LogClass.error("线程ID:"+stop_list.get(i).getId()+"线程状态:"+stop_list.get(i).isAlive()); + } + } + catch (Exception e){ + e.printStackTrace(); + } + finally { + return stop_list; + } + + + + } + private JdbcTemplate jdbcTemplate; + { + try { + jdbcTemplate = new JdbcTemplate(new DBUtil().Hikar_DataSource()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private List Main_void(String dbType) throws Exception { + boolean flag=true; + //List starup_list=new ArrayList<>(); + stop_list.clear(); + runAble=true; + try { + + + + List list_PARTICIPANT = CommonHelp.getListBySql("select * from TB_PARTICIPANT",jdbcTemplate); + + List list_LINE_TABLE=CommonHelp.getListBySql("select LINENAME,GBLINEID from line_table",jdbcTemplate); + + List list_FEEUNIT_TABLE=CommonHelp.getListBySql("select ID,NAME FROM FEEUNIT_TABLE",jdbcTemplate); + + List list_GANTRY_TABLE=CommonHelp.getListBySql("select * from gantry_table",jdbcTemplate); + + int GPA_THREAD_COUNT_1=7; + //正常数据处理线程,4个 + + if (dbType.equals("1")) {//oracle + for (int i = 0; i < GPA_THREAD_COUNT_1; i++) { + String sql="select * from gantry_pass_center where ishandle=0 and isout=1 and issecond=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut") + " and ora_hash(passid,"+(GPA_THREAD_COUNT_1-1)+")="+i; + Thread thread=new GetAllData((i+11),0,sql,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + } else if (dbType.equals("2")) {//DM + for (int i = 0; i < GPA_THREAD_COUNT_1; i++) { + String sql="select * from gantry_pass_center where ishandle=0 and isout=1 and issecond=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut") + " and DM_HASH(passid)%"+GPA_THREAD_COUNT_1+"="+i+" and rownum<=1500"; + Thread thread=new GetAllData((i+11),0,sql,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + } + //超时数据处理线程,3个 + + if (dbType.equals("1")) {//oracle + //超时第一种情况--有出口但是累计金额不相等的 + String sql2_1_1 = "select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + + List listTemp=new ArrayList<>(); + listTemp.add(sql2_1_1); + listTemp.add(sql2_2_1); + listTemp.add(sql2_3_1); + + for (int i = 0; i < listTemp.size(); i++) { + + Thread thread=new GetAllData((21+i),1,listTemp.get(i).toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + + } else if (dbType.equals("2")) {//DM + + //超时第一种情况--有出口但是累计金额不相等的技巧口诀图解 + String sql2_1_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + + List listTemp=new ArrayList<>(); + listTemp.add(sql2_1_1); + listTemp.add(sql2_2_1); + listTemp.add(sql2_3_1); + + for (int i = 0; i < listTemp.size(); i++) { + Thread thread=new GetAllData((21+i),1,listTemp.get(i).toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + } + //二次数据上传处理线程,1个 + String sql3_1 = ""; + if (dbType.equals("1")) {//oracle + sql3_1 = "select * from gantry_pass_center where ishandle=1 and issecond=1 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut"); + + Thread thread3_1=new GetAllData(31,0,sql3_1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread3_1.start(); + + stop_list.add(thread3_1); + State state3_1=new State(); + state3_1.ThreadId=thread3_1.getId(); + state3_1.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state3_1); + } else if (dbType.equals("2")) {//DM + sql3_1 = "select * from gantry_pass_center where ishandle=1 and issecond=1 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut"); + + Thread thread3_1= new GetAllData(31,0,sql3_1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread3_1.start(); + } + //删除中间表数据线程,1个 + if (dbType.equals("1")) { + String sql4_1 = "delete gantry_pass_center where ROUND(TO_NUMBER(sysdate - handletime))>25"; + deleteCenter deleteC=new deleteCenter(jdbcTemplate,sql4_1,runAble,this); + Thread thread=new Thread(deleteC); + thread.start(); +// stop_list.add(thread); +// State state=new State(); +// state.ThreadId=thread.getId(); +// state.StateUpdateTime=System.currentTimeMillis(); +// state_list.add(state); + } + //预分账线程,7个 + int THREAD_GANTRY_STAT_COUNT=7; + for (int i = 0; i < THREAD_GANTRY_STAT_COUNT; i++) { + String sql="select * from gantry_pass_stat_temp where ora_hash(tradeid,"+(THREAD_GANTRY_STAT_COUNT-1)+")="+i+" and rownum<=1000"; + GetGantryStat getGantryStat=new GetGantryStat(jdbcTemplate,sql,runAble,this); + Thread thread=new Thread(getGantryStat); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + } + catch (Exception e){ + flag=false; + e.printStackTrace(); + LogClass.debug(e.toString()); + } + finally { + return stop_list; + } + + } + +} diff --git a/.svn/pristine/dd/ddaabffc55830626d7b8e1eb28390a0977df2a59.svn-base b/.svn/pristine/dd/ddaabffc55830626d7b8e1eb28390a0977df2a59.svn-base new file mode 100644 index 0000000..60948f8 --- /dev/null +++ b/.svn/pristine/dd/ddaabffc55830626d7b8e1eb28390a0977df2a59.svn-base @@ -0,0 +1,180 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +import javax.sound.midi.Soundbank; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class GMAIN_TEST { + public static void main(String[] args) throws Exception { + +// LogClass.delete("测试数据"); +// JdbcTemplate jdbcTemplate=new JdbcTemplate(new DBUtil().Hikar_DataSource()); +// +// List list_PARTICIPANT = CommonHelp.getListBySql("select * from TB_PARTICIPANT",jdbcTemplate); +// +// List list_LINE_TABLE=CommonHelp.getListBySql("select LINENAME,GBLINEID from line_table",jdbcTemplate); +// +// List list_FEEUNIT_TABLE=CommonHelp.getListBySql("select ID,NAME FROM FEEUNIT_TABLE",jdbcTemplate); +// +// List list_GANTRY_TABLE=CommonHelp.getListBySql("select * from gantry_table",jdbcTemplate); +// String sql="select * from gantry_pass_center where passid='014101203823180302389420220616114637'"; +// //011301200123000511468020220418120750 +// //020000140102070009234220220422172438 +// GPA_DATA gpa_data=new GPA_DATA(); +// gpa_data.GetAllETCData(sql,0,1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE); +// +//// startGPA s=new startGPA(); +//// String sql_stat="select * from gantry_pass_stat_temp where tradeid='G0065150030002100102022051613200037'"; +//// statTest(jdbcTemplate,sql_stat); + + + + //超时第一种情况--有出口但是累计金额不相等的 + List> listTemp=new ArrayList<>(); + for (int i = 0; i <= 6; i++) { + String sql2_1_1 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)="+i; + Map map=new HashMap(); + map.put("sql",sql2_1_1); + map.put("threadid",20+i+1); + listTemp.add(map); + } + + for (Map stringStringMap : listTemp) { + System.out.println(stringStringMap.get("sql")+":"+stringStringMap.get("threadid")); + } + + String sql2_1_1 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)=0"; + String sql2_1_2 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)=1"; + String sql2_1_3 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)=2"; + String sql2_1_4 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)=3"; + String sql2_1_5 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)=4"; + String sql2_1_6 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)=5"; + String sql2_1_7 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)=6"; + + + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + + + + + } + public static void statTest(JdbcTemplate jdbcTemplate,String sql){ + try { + //s.UpdateState(Thread.currentThread().getId()); + List list=jdbcTemplate.queryForList(sql); + String tollIntervalsId=""; + String stano=""; + String roadno=""; + StringBuilder delete_tradeid=new StringBuilder(); + if (list.size()>0){ + for (int i = 0; i < list.size(); i++) { + try { + Map map=(Map) list.get(i); + String[] tollIntervalsId_temp=map.get("TOLLINTERVALID")==null?null:map.get("TOLLINTERVALID").toString().split("\\|"); + String[] feeGroup_temp=map.get("FEEGROUP")==null?null:map.get("FEEGROUP").toString().split("\\|"); + String[] payfeeGroup_temp=map.get("PAYFEEGROUP")==null?null:map.get("PAYFEEGROUP").toString().split("\\|"); + String[] specialtype_temp=null; + if (map.get("SPECIALTYPE")!=null){ + if (map.get("SPECIALTYPE").toString().replace(" ","").length()>0){ + specialtype_temp=map.get("SPECIALTYPE").toString().split("\\|"); + } + } + + String is_have_gantry_trade_sql="SELECT * FROM gantry_trade_mass where gantryid='" +map.get("GANTRYID").toString() + "' and classdate=TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " +map.get("MEDIATYPE") + " AND VEHICLETYPE = " +map.get("VEHICLETYPE"); + List list_trade_ishave=jdbcTemplate.queryForList(is_have_gantry_trade_sql); + + String boundarytype_sql = "select boundarytype from gantry_table where id='" + map.get("GANTRYID").toString() + "'"; + List boundary=jdbcTemplate.queryForList(boundarytype_sql); + if (boundary.size()>0){ + + } + int boundarytype=Integer.valueOf(((Map) jdbcTemplate.queryForList(boundarytype_sql).get(0)).get("BOUNDARYTYPE").toString()); + if (list_trade_ishave.size()>0){ + int feesuccnum=0; + int feefailenum=0; + if (map.get("FEECALCRESULT").toString().equals("0") && map.get("TRADERESULT").toString().equals("0")){ + feesuccnum = 1; + } + else { + feefailenum = 1; + } +// JSONObject temp=new JSONObject(((Map) list_trade_ishave.get(0)).get("SPECIALTYPE").toString()); +// if (specialtype_temp!=null){ +// for (int j = 0; j < specialtype_temp.length; j++) { +// String special_value=""; +// if (specil_list.contains(Integer.valueOf(specialtype_temp[j]))){ +// +// } +// } +// } + + String update_gantry_trade = "update gantry_trade_mass set boundarytype = " + boundarytype + ", feesuccnum = feesuccnum+" + feesuccnum + ", feefailenum = feefailenum+" + feefailenum + ", specialtype = '' where gantryid = '" + map.get("GANTRYID").toString() + "' and classdate = TO_DATE('" +map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') and mediatype = " + map.get("MEDIATYPE") + " and vehicletype = " + map.get("VEHICLETYPE"); + jdbcTemplate.update(update_gantry_trade); + + } + else { + String insert_gantry_trade= "insert into gantry_trade_mass (gantryid, classdate, mediatype, vehicletype, boundarytype, feesuccnum, feefailenum, specialtype, feelostnum) values ('" +map.get("GANTRYID").toString() + "', TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd'), " +map.get("MEDIATYPE") + ", " + map.get("VEHICLETYPE") + ", " + boundarytype + ", 0, 0, '{}', 0) "; + jdbcTemplate.update(insert_gantry_trade); + } + + if (tollIntervalsId_temp!=null && feeGroup_temp!=null && payfeeGroup_temp!=null){ + if (tollIntervalsId_temp.length== feeGroup_temp.length && feeGroup_temp.length==payfeeGroup_temp.length){ + for (int j = 0; j < tollIntervalsId_temp.length; j++) { + if (tollIntervalsId_temp[j].length()>=16){ + tollIntervalsId=tollIntervalsId_temp[j].substring(0,16); + String stano_roadno_sql = "select ostano,oroadno from feeunit_table where id='" + tollIntervalsId + "'"; + List stano_roadno_list=jdbcTemplate.queryForList(stano_roadno_sql); + if (stano_roadno_list.size()>0){ + stano=((Map)stano_roadno_list.get(0)).get("OSTANO").toString(); + roadno=((Map)stano_roadno_list.get(0)).get("OROADNO").toString(); + } + else { + stano="0"; + roadno="0"; + } + + String is_have_sql = "SELECT 1 FROM DUAL WHERE EXISTS (SELECT * FROM gantry_stat where FEEUNITID='" + tollIntervalsId + "' and classdate=TO_DATE('" +map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " +map.get("MEDIATYPE") + " AND VEHTYPE = " +map.get("VEHICLETYPE") + " AND ROADNO = " + roadno + " and STANO=" + stano + ")"; + List list_ishave=jdbcTemplate.queryForList(is_have_sql); + if (list_ishave.size()>0){ + String update_sql = "UPDATE GANTRY_STAT SET VEHCOUNT = VEHCOUNT + 1, CASH = TO_NUMBER(CASH) +TO_NUMBER(" + (payfeeGroup_temp[j].replace(" ","").length() == 0 ? "0" : payfeeGroup_temp[j]) + "), INCASH = TO_NUMBER(INCASH) +TO_NUMBER(" + (feeGroup_temp[j].replace(" ","").length() == 0 ? "0" : feeGroup_temp[j]) + ") where FEEUNITID='" + tollIntervalsId + "' and classdate=TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " + map.get("MEDIATYPE") + " AND VEHTYPE = " + map.get("VEHICLETYPE") + " AND ROADNO = " + roadno; + jdbcTemplate.update(update_sql); + } + else { + String insert_sql = "INSERT INTO GANTRY_STAT(ROADNO,STANO,CLASSDATE,FEEUNITID,MEDIATYPE, VEHTYPE,VEHCLASS,SPECIALTYPE,AXLECOUNT,VEHCOUNT,TRADERESULT,HOLIDAYSTATE,VALIDSTATUS,CASH,INCASH,FEESUMLOCALAFTER,BACKUP1,BACKUP2,BACKUP3,BACKUP4,DATEMARK) VALUES(" + roadno + ", " + stano + ", TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd'), '" + tollIntervalsId + "', " + map.get("MEDIATYPE") + "," + map.get("VEHICLETYPE") + ", 0, 0, 2, 1, 0, 0, 0," + (payfeeGroup_temp[j].replace(" ","").length() == 0 ? "0" : payfeeGroup_temp[j]) + ", " + (feeGroup_temp[j].replace(" ","").length() == 0 ? "0" : feeGroup_temp[j]) + ", 0, 0, 0, '0','0', SYSDATE)"; + jdbcTemplate.update(insert_sql); + } + } + } + + } + + } + + + String delete_sql="delete gantry_pass_stat_temp where tradeid='" +map.get("TRADEID") + "' "; + jdbcTemplate.update(delete_sql); + + + } + catch (Exception e){ + LogClass.error("预分账错误日志:"+e.toString()+","+((Map) list.get(i)).get("TRADEID")); + } + } + } + + Thread.sleep(1000*30); + + } + catch (Exception e){ + LogClass.error("预拆分错误"+e.toString()); + } + } + +} diff --git a/.svn/pristine/df/df325595dda25fb878d8cd9b399404481e5eae9e.svn-base b/.svn/pristine/df/df325595dda25fb878d8cd9b399404481e5eae9e.svn-base new file mode 100644 index 0000000..2517568 Binary files /dev/null and b/.svn/pristine/df/df325595dda25fb878d8cd9b399404481e5eae9e.svn-base differ diff --git a/.svn/pristine/e6/e6fc29d9a75d2266b1b007bc63b92f1f4aba8dc4.svn-base b/.svn/pristine/e6/e6fc29d9a75d2266b1b007bc63b92f1f4aba8dc4.svn-base new file mode 100644 index 0000000..7410049 Binary files /dev/null and b/.svn/pristine/e6/e6fc29d9a75d2266b1b007bc63b92f1f4aba8dc4.svn-base differ diff --git a/.svn/pristine/e7/e7841388cfd3fd5975089df7d6df0000e63c8c43.svn-base b/.svn/pristine/e7/e7841388cfd3fd5975089df7d6df0000e63c8c43.svn-base new file mode 100644 index 0000000..e5d663c Binary files /dev/null and b/.svn/pristine/e7/e7841388cfd3fd5975089df7d6df0000e63c8c43.svn-base differ diff --git a/.svn/pristine/e9/e930b417a401de6a22c5c34df0aa2739a0846c2c.svn-base b/.svn/pristine/e9/e930b417a401de6a22c5c34df0aa2739a0846c2c.svn-base new file mode 100644 index 0000000..dc2441c Binary files /dev/null and b/.svn/pristine/e9/e930b417a401de6a22c5c34df0aa2739a0846c2c.svn-base differ diff --git a/.svn/pristine/f3/f3b94bacacd1ac1f0b934b7e41debe71e4790ccb.svn-base b/.svn/pristine/f3/f3b94bacacd1ac1f0b934b7e41debe71e4790ccb.svn-base new file mode 100644 index 0000000..a33408e --- /dev/null +++ b/.svn/pristine/f3/f3b94bacacd1ac1f0b934b7e41debe71e4790ccb.svn-base @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: GPA.GAMIN + diff --git a/.svn/pristine/f4/f4eb282db958a2f7ecea9c5a66edb73d0c7f4c0e.svn-base b/.svn/pristine/f4/f4eb282db958a2f7ecea9c5a66edb73d0c7f4c0e.svn-base new file mode 100644 index 0000000..d9426c7 Binary files /dev/null and b/.svn/pristine/f4/f4eb282db958a2f7ecea9c5a66edb73d0c7f4c0e.svn-base differ diff --git a/.svn/pristine/f7/f7bc0b319b4fa96b2d440ae93034dd69d97ccc99.svn-base b/.svn/pristine/f7/f7bc0b319b4fa96b2d440ae93034dd69d97ccc99.svn-base new file mode 100644 index 0000000..a11bd29 --- /dev/null +++ b/.svn/pristine/f7/f7bc0b319b4fa96b2d440ae93034dd69d97ccc99.svn-base @@ -0,0 +1,29 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +public class deleteCenter implements Runnable{ + private JdbcTemplate jdbcTemplate; + private String sql; + private boolean runAble; + private startGPA s; + public deleteCenter(JdbcTemplate jdbcTemplate,String sql,boolean runAble,startGPA s){ + this.jdbcTemplate=jdbcTemplate; + this.sql=sql; + this.runAble=runAble; + this.s=s; + } + public deleteCenter(){} + @Override + public void run() { + while (runAble){ + try { +// s.UpdateState(Thread.currentThread().getId()); + jdbcTemplate.update(sql); + Thread.sleep(1000*60*60*24); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } +} diff --git a/.svn/pristine/f7/f7ee3a9c241eed61257da0c47e7dd82364be5312.svn-base b/.svn/pristine/f7/f7ee3a9c241eed61257da0c47e7dd82364be5312.svn-base new file mode 100644 index 0000000..6ba92ab Binary files /dev/null and b/.svn/pristine/f7/f7ee3a9c241eed61257da0c47e7dd82364be5312.svn-base differ diff --git a/.svn/pristine/f8/f80925d4d46c8e3880b1c026e9faa6156bd60f36.svn-base b/.svn/pristine/f8/f80925d4d46c8e3880b1c026e9faa6156bd60f36.svn-base new file mode 100644 index 0000000..f061a2f --- /dev/null +++ b/.svn/pristine/f8/f80925d4d46c8e3880b1c026e9faa6156bd60f36.svn-base @@ -0,0 +1,62 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +import java.util.List; + +public class GetAllData extends Thread { + + private int threadId;//线程ID + private int isTimeOut; + private String sql;//sql语句 + private JdbcTemplate jdbcTemplate;//连接池 + private List list_PARTICIPANT; + private List list_LINE_TABLE; + private List list_FEEUNIT_TABLE; + private List list_GANTRY_TABLE; + private startGPA s; + private boolean runAble; + + + private static boolean flag = true; + + public GetAllData(int threadId, int isTimeOut, String sql, JdbcTemplate jdbcTemplate,List list_PARTICIPANT,List list_LINE_TABLE,List list_FEEUNIT_TABLE,List list_GANTRY_TABLE,boolean runAble,startGPA s){ + this.threadId=threadId; + this.sql=sql; + this.isTimeOut=isTimeOut; + this.jdbcTemplate=jdbcTemplate; + this.list_PARTICIPANT=list_PARTICIPANT; + this.list_LINE_TABLE=list_LINE_TABLE; + this.list_FEEUNIT_TABLE=list_FEEUNIT_TABLE; + this.list_GANTRY_TABLE=list_GANTRY_TABLE; + this.s=s; + this.runAble=runAble; + } + + public static void setStop(){ + System.out.println("停止线程。。。。"); + flag=false; + } + + @Override + public void run() { + while (runAble){ + + try { + s.UpdateState(Thread.currentThread().getId()); + GPA_DATA gpaData= new GPA_DATA(); + gpaData.GetAllETCData(sql,isTimeOut,threadId,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE); + + Thread.sleep(50); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + + + + + } +} diff --git a/.svn/pristine/fd/fd3eee058cb470bcb4c9377c70ed9e2f0ae22fcd.svn-base b/.svn/pristine/fd/fd3eee058cb470bcb4c9377c70ed9e2f0ae22fcd.svn-base new file mode 100644 index 0000000..653ede1 --- /dev/null +++ b/.svn/pristine/fd/fd3eee058cb470bcb4c9377c70ed9e2f0ae22fcd.svn-base @@ -0,0 +1,53 @@ +package GPA; + +import java.io.File; +import java.io.RandomAccessFile; +import java.nio.channels.FileChannel; +import java.nio.channels.FileLock; + +public class SingleApplication { + public static void makeSingle(String singleId) { + + RandomAccessFile raf = null; + + FileChannel channel = null; + + FileLock lock = null; + + + try { + + // 在临时文件夹创建一个临时文件,锁住这个文件用来保证应用程序只有一个实例被创建. + + File sf = new File(System.getProperty("java.io.tmpdir") + singleId + ".single"); + + sf.deleteOnExit(); + + sf.createNewFile(); + + + raf = new RandomAccessFile(sf, "rw"); + + channel = raf.getChannel(); + + lock = channel.tryLock(); + + + if (lock == null) { + + // 如果没有得到锁,则程序退出. + + // 没有必要手动释放锁和关闭流,当程序退出时,他们会被关闭的. + + throw new Error("An instance of the application is running."); + + } + + } catch (Exception e) { + + e.printStackTrace(); + + } + + } +} diff --git a/.svn/pristine/ff/fff976079242c9761131865d215b8724c9762445.svn-base b/.svn/pristine/ff/fff976079242c9761131865d215b8724c9762445.svn-base new file mode 100644 index 0000000..f3631df --- /dev/null +++ b/.svn/pristine/ff/fff976079242c9761131865d215b8724c9762445.svn-base @@ -0,0 +1,107 @@ + +package com.trkf.feemoduleservice; + +import javax.xml.bind.JAXBElement; +import javax.xml.bind.annotation.XmlElementDecl; +import javax.xml.bind.annotation.XmlRegistry; +import javax.xml.namespace.QName; + + +/** + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the com.trkf.feemoduleservice package. + *

An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. + * + */ +@XmlRegistry +public class ObjectFactory { + + private final static QName _GetFeeResponse_QNAME = new QName("http://FeeModuleService.trkf.com/", "getFeeResponse"); + private final static QName _GetStaFeeResponse_QNAME = new QName("http://FeeModuleService.trkf.com/", "GetStaFeeResponse"); + private final static QName _GetFee_QNAME = new QName("http://FeeModuleService.trkf.com/", "getFee"); + private final static QName _GetStaFee_QNAME = new QName("http://FeeModuleService.trkf.com/", "GetStaFee"); + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: com.trkf.feemoduleservice + * + */ + public ObjectFactory() { + } + + /** + * Create an instance of {@link GetFeeResponse } + * + */ + public GetFeeResponse createGetFeeResponse() { + return new GetFeeResponse(); + } + + /** + * Create an instance of {@link GetFee } + * + */ + public GetFee createGetFee() { + return new GetFee(); + } + + /** + * Create an instance of {@link GetStaFee } + * + */ + public GetStaFee createGetStaFee() { + return new GetStaFee(); + } + + /** + * Create an instance of {@link GetStaFeeResponse } + * + */ + public GetStaFeeResponse createGetStaFeeResponse() { + return new GetStaFeeResponse(); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link GetFeeResponse }{@code >}} + * + */ + @XmlElementDecl(namespace = "http://FeeModuleService.trkf.com/", name = "getFeeResponse") + public JAXBElement createGetFeeResponse(GetFeeResponse value) { + return new JAXBElement(_GetFeeResponse_QNAME, GetFeeResponse.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link GetStaFeeResponse }{@code >}} + * + */ + @XmlElementDecl(namespace = "http://FeeModuleService.trkf.com/", name = "GetStaFeeResponse") + public JAXBElement createGetStaFeeResponse(GetStaFeeResponse value) { + return new JAXBElement(_GetStaFeeResponse_QNAME, GetStaFeeResponse.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link GetFee }{@code >}} + * + */ + @XmlElementDecl(namespace = "http://FeeModuleService.trkf.com/", name = "getFee") + public JAXBElement createGetFee(GetFee value) { + return new JAXBElement(_GetFee_QNAME, GetFee.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link GetStaFee }{@code >}} + * + */ + @XmlElementDecl(namespace = "http://FeeModuleService.trkf.com/", name = "GetStaFee") + public JAXBElement createGetStaFee(GetStaFee value) { + return new JAXBElement(_GetStaFee_QNAME, GetStaFee.class, null, value); + } + +} diff --git a/.svn/wc.db b/.svn/wc.db new file mode 100644 index 0000000..51aeb06 Binary files /dev/null and b/.svn/wc.db differ diff --git a/.svn/wc.db-journal b/.svn/wc.db-journal new file mode 100644 index 0000000..e69de29 diff --git a/GANTRY_PASS_ALL.iml b/GANTRY_PASS_ALL.iml new file mode 100644 index 0000000..5e3b34c --- /dev/null +++ b/GANTRY_PASS_ALL.iml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/out/artifacts/GANTRY_PASS_ALL_jar/GANTRY_PASS_ALL.jar b/out/artifacts/GANTRY_PASS_ALL_jar/GANTRY_PASS_ALL.jar new file mode 100644 index 0000000..fa802d5 Binary files /dev/null and b/out/artifacts/GANTRY_PASS_ALL_jar/GANTRY_PASS_ALL.jar differ diff --git a/out/production/GANTRY_PASS_ALL/Config/Config.xml b/out/production/GANTRY_PASS_ALL/Config/Config.xml new file mode 100644 index 0000000..95aab27 --- /dev/null +++ b/out/production/GANTRY_PASS_ALL/Config/Config.xml @@ -0,0 +1,35 @@ + + + + a.OBUISSUEID,a.GANTRYID,a.FEEPROVBEGINHEX,a.ENTOLLSTATIONHEX,a.PASSID,a.ENTIME,a.PAYFEE,a.FEE,a.DISCOUNTFEE,a.CPUCARDTYPE,a.CPUCARDID,a.OBUSIGN,a.VEHICLEPLATE,a.TOLLINTERVALID,a.PAYFEEGROUP,a.FEEGROUP,a.VEHICLESIGN,a.FEEVEHICLETYPE,a.VEHICLETYPE,a.DISCOUNTTYPE,a.PROVINCEDISCOUNTFEE,a.ORIGINFEE,a.TRANSTIME,a.OBUSN,b.NAME,a.OBUPROVPAYFEESUMAFTER,a.OBUPROVFEESUMAFTER,a.FEESPARE1,a.OBUVEHICLEPLATE,a.CPUVEHICLEPLATE,a.FEESUMLOCALAFTER,a.CPUNETID,a.OBUPROVTRADESUCCNUMAFTER,a.TRADEID,a.VEHICLEUSERTYPE,a.AXLECOUNT,a.LASTGANTRYHEX,a.MEDIATYPE,a.FEECALCRESULT, a.GANTRYTYPE,'' "GANTRYKEY",'' "GANTRYVERIFY",a.OBUFEESUMAFTER,a.OBUTOTALTRADESUCCNUMAFTER,a.NOCARDTIMESAFTER,a.CARDFEESUMAFTER,a.PROVINCENUMAFTER,a.TOTALWEIGHT,a.IDENTIFYVEHICLETYPE,a.VEHICLECLASS,a.TAC,a.TRANSFEE,a.TERMINALTRANSNO,a.TRANSTYPE,a.TERMINALNO,a.ALGORITHMIDENTIFIER,a.RATEVERSION,a.VEHICLEPICID,'' "DECRIPTION",a.OBUMAC,a.KEYVERSION,to_number(substr(a.gantryOrderNum,0,1)) "DIRECTION",a.OBUELECTRICAL,b.GANTRYHEX,a.FEEINFO1,a.FEEINFO2,a.FEEINFO3,a.CPUISSUEID,a.TRADERESULT,a.OBUTRADERESULT,a.VEHICLESEAT + + G001215001000220010|G001215001000220020|S002715001002610010|S002715001002610020|G002515001000610010|G002515001000610020|G002515001000220010|G002515001000220020|G001015003000220010|G001015003000220020|G181715005000810010|G181715005000810020|G004515004001210010|G004515004001210020|G001615004000220010|G001615004000220020|G251115002000220010|G251115002000220020|G006515003001410010|G006515003001410020|G000615001000220010|G000615001000220020|G000715001000220010|G000715001000220020|G005515004010810010|G005515004010810020|G005915001001410010|G005915001001410020|G000615010001410010|G000615010001410020|G000715003004210010|G000715003004210020|G001815001000220010|G001815001000220020|G004515001000220010|G004515001000220020|S003115004001010010|S003115004001010020|G451315001000410010|G451315001000410020 + + G001215001000210010|G001215001000210020|S002715001002620010|S002715001002620020|G002515001000210010|G002515001000210020|G002515001000620010|G002515001000620020|G001015003000210010|G001015003000210020|G181715005000820010|G181715005000820020|G001615004000210010|G001615004000210020|G004515004001220010|G004515004001220020|G251115002000210010|G251115002000210020|G000615001000210010|G000615001000210020|G000715001000210010|G000715001000210020|G006515003001420010|G006515003001420020|G005515004010820010|G005515004010820020|G005915001001420010|G005915001001420020|G000615010001420010|G000615010001420020|G000715003004220010|G000715003004220020|G001815001000210010|G001815001000210020|G004515001000210010|G004515001000210020|S003115004001020010|S003115004001020020|G451315001000420010|G451315001000420020 + + [{"GANTRYHEX":"160302","GANTRYNAME":"蒙冀界-兴和东","ENSTAHEX":"13000000"},{"GANTRYHEX":"160802","GANTRYNAME":"蒙黑界-阿荣旗南","ENSTAHEX":"23000000"},{"GANTRYHEX":"160B02","GANTRYNAME":"蒙吉界-白音乌苏","ENSTAHEX":"22000000"},{"GANTRYHEX":"160E3E","GANTRYNAME":"平庄主线-平庄","ENSTAHEX":"21000000"},{"GANTRYHEX":"161024","GANTRYNAME":"清水河界-十七沟","ENSTAHEX":"14000000"},{"GANTRYHEX":"161302","GANTRYNAME":"那木斯-金宝屯","ENSTAHEX":"22000000"},{"GANTRYHEX":"161402","GANTRYNAME":"好力堡-甘旗卡","ENSTAHEX":"21000000"},{"GANTRYHEX":"161602","GANTRYNAME":"欧里主线-巴彦塔拉","ENSTAHEX":"22000000"},{"GANTRYHEX":"1703BA","GANTRYNAME":"蒙宁界-乌斯太","ENSTAHEX":"64000000"},{"GANTRYHEX":"17057A","GANTRYNAME":"黑鹰山主线-黑鹰山","ENSTAHEX":"62000000"},{"GANTRYHEX":"1709E2","GANTRYNAME":"三号地-贡宝拉格","ENSTAHEX":"13000000"},{"GANTRYHEX":"1712C8","GANTRYNAME":"巴润别立主线-长流水","ENSTAHEX":"64000000"},{"GANTRYHEX":"171306","GANTRYNAME":"布敦花-查日苏","ENSTAHEX":"21000000"},{"GANTRYHEX":"17163E","GANTRYNAME":"内蒙茅荆坝-美林","ENSTAHEX":"13000000"},{"GANTRYHEX":"171994","GANTRYNAME":"蒙晋界-丰镇","ENSTAHEX":"14000000"},{"GANTRYHEX":"171C2E","GANTRYNAME":"和林格尔主线-新店子互通","ENSTAHEX":"14000000"},{"GANTRYHEX":"171E2C","GANTRYNAME":"蒙陕界-兰家梁","ENSTAHEX":"61000000"},{"GANTRYHEX":"172844","GANTRYNAME":"龙口界-龙口","ENSTAHEX":"14000000"},{"GANTRYHEX":"161328","GANTRYNAME":"化德东至化德界门架","ENSTAHEX":"13000000"},{"GANTRYHEX":"171328","GANTRYNAME":"化德界至化德东门架","ENSTAHEX":"13000000"},{"GANTRYHEX":"160516","GANTRYNAME":"韩家营-兴和南","ENSTAHEX":"13000000"}] + + 0 + + ^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z挂学警港澳领试超外0-9]{3,9}_(0|1|2|3|4|5|6|7|11|12)$|^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-Z0-9][A-Z0-9]{4}应急_(0|1|2|3|4|5|6|7|11|12)$ + + 150201 + + 4080 + + 0 + + 30 + + 1 + + jdbc:oracle:thin:@//10.15.100.5:1521/torcl + nmgmpayadmin + nmgh90[] + + jdbc:dm://10.115.255.4:5236/NMGGJT + NMGGJT + 1234567890 + + http://10.15.99.78:8081/FeeModuleService/FeeModuleService + \ No newline at end of file diff --git a/out/production/GANTRY_PASS_ALL/GPA/CommonCon.class b/out/production/GANTRY_PASS_ALL/GPA/CommonCon.class new file mode 100644 index 0000000..d9426c7 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/CommonCon.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/CommonHelp.class b/out/production/GANTRY_PASS_ALL/GPA/CommonHelp.class new file mode 100644 index 0000000..c0ef5df Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/CommonHelp.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/DBUtil.class b/out/production/GANTRY_PASS_ALL/GPA/DBUtil.class new file mode 100644 index 0000000..7e55a72 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/DBUtil.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/GAMIN.class b/out/production/GANTRY_PASS_ALL/GPA/GAMIN.class new file mode 100644 index 0000000..8af02d5 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/GAMIN.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/GMAIN_TEST.class b/out/production/GANTRY_PASS_ALL/GPA/GMAIN_TEST.class new file mode 100644 index 0000000..52f8a13 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/GMAIN_TEST.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/GPA_DATA.class b/out/production/GANTRY_PASS_ALL/GPA/GPA_DATA.class new file mode 100644 index 0000000..e812d6f Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/GPA_DATA.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/GetAllData.class b/out/production/GANTRY_PASS_ALL/GPA/GetAllData.class new file mode 100644 index 0000000..bf97dd1 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/GetAllData.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/GetGantryStat.class b/out/production/GANTRY_PASS_ALL/GPA/GetGantryStat.class new file mode 100644 index 0000000..145fe41 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/GetGantryStat.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/LogClass$1.class b/out/production/GANTRY_PASS_ALL/GPA/LogClass$1.class new file mode 100644 index 0000000..e5f9641 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/LogClass$1.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/LogClass.class b/out/production/GANTRY_PASS_ALL/GPA/LogClass.class new file mode 100644 index 0000000..d64bcdf Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/LogClass.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/SingleApplication.class b/out/production/GANTRY_PASS_ALL/GPA/SingleApplication.class new file mode 100644 index 0000000..b6a74a0 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/SingleApplication.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/XNY_GPA.class b/out/production/GANTRY_PASS_ALL/GPA/XNY_GPA.class new file mode 100644 index 0000000..c761e51 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/XNY_GPA.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/deleteCenter.class b/out/production/GANTRY_PASS_ALL/GPA/deleteCenter.class new file mode 100644 index 0000000..286d008 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/deleteCenter.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/startGPA$State.class b/out/production/GANTRY_PASS_ALL/GPA/startGPA$State.class new file mode 100644 index 0000000..6ba92ab Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/startGPA$State.class differ diff --git a/out/production/GANTRY_PASS_ALL/GPA/startGPA.class b/out/production/GANTRY_PASS_ALL/GPA/startGPA.class new file mode 100644 index 0000000..a630bfe Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/GPA/startGPA.class differ diff --git a/out/production/GANTRY_PASS_ALL/LogFile/2025-01-07/gantry_pass_all_log_debug_2025-01-07-14.txt b/out/production/GANTRY_PASS_ALL/LogFile/2025-01-07/gantry_pass_all_log_debug_2025-01-07-14.txt new file mode 100644 index 0000000..1f34b64 --- /dev/null +++ b/out/production/GANTRY_PASS_ALL/LogFile/2025-01-07/gantry_pass_all_log_debug_2025-01-07-14.txt @@ -0,0 +1,3 @@ +[2025-01-07 14:26:55.568] DL 日志 +[2025-01-07 14:26:55.568] 1passid查询用时:1463,查询结果:1条 +[2025-01-07 14:31:05.441] 1passid查询用时:14,查询结果:1条 diff --git a/out/production/GANTRY_PASS_ALL/LogFile/2025-01-07/gantry_pass_all_log_info_2025-01-07-14.txt b/out/production/GANTRY_PASS_ALL/LogFile/2025-01-07/gantry_pass_all_log_info_2025-01-07-14.txt new file mode 100644 index 0000000..e0b67d2 --- /dev/null +++ b/out/production/GANTRY_PASS_ALL/LogFile/2025-01-07/gantry_pass_all_log_info_2025-01-07-14.txt @@ -0,0 +1,2 @@ +[2025-01-07 14:31:52.909] DL 日志 +[2025-01-07 14:31:52.909] 1插入汇总结果用时:9904,当前线程共1数据,处理至1条数据,还剩2,PASSID:011501193723011407123920241231062338,出口匹配类型:省内出口,出口ID:G551115018003020010,门架数据自动匹配完成,门架数据自动审计完成 diff --git a/out/production/GANTRY_PASS_ALL/LogFile/2025-01-16/gantry_pass_all_log_debug_2025-01-16-17.txt b/out/production/GANTRY_PASS_ALL/LogFile/2025-01-16/gantry_pass_all_log_debug_2025-01-16-17.txt new file mode 100644 index 0000000..908f2b1 --- /dev/null +++ b/out/production/GANTRY_PASS_ALL/LogFile/2025-01-16/gantry_pass_all_log_debug_2025-01-16-17.txt @@ -0,0 +1,5 @@ +[2025-01-16 17:33:16.403] DL 日志 +[2025-01-16 17:33:16.403] 1passid查询用时:9,查询结果:1条 +[2025-01-16 17:43:27.447] 1passid查询用时:8,查询结果:1条 +[2025-01-16 17:52:27.053] 1passid查询用时:9,查询结果:1条 +[2025-01-16 17:55:27.053] 1passid查询用时:7,查询结果:1条 diff --git a/out/production/GANTRY_PASS_ALL/LogFile/2025-01-16/gantry_pass_all_log_delete_2025-01-16-17.txt b/out/production/GANTRY_PASS_ALL/LogFile/2025-01-16/gantry_pass_all_log_delete_2025-01-16-17.txt new file mode 100644 index 0000000..4007fd6 --- /dev/null +++ b/out/production/GANTRY_PASS_ALL/LogFile/2025-01-16/gantry_pass_all_log_delete_2025-01-16-17.txt @@ -0,0 +1,6 @@ +[2025-01-16 17:33:14.029] DL 日志 +[2025-01-16 17:33:14.029] 测试数据 +[2025-01-16 17:43:25.210] 测试数据 +[2025-01-16 17:52:24.876] 测试数据 +[2025-01-16 17:55:13.411] 测试数据 +[2025-01-16 17:55:24.934] 测试数据 diff --git a/out/production/GANTRY_PASS_ALL/LogFile/2025-01-17/gantry_pass_all_log_delete_2025-01-17-09.txt b/out/production/GANTRY_PASS_ALL/LogFile/2025-01-17/gantry_pass_all_log_delete_2025-01-17-09.txt new file mode 100644 index 0000000..e092026 --- /dev/null +++ b/out/production/GANTRY_PASS_ALL/LogFile/2025-01-17/gantry_pass_all_log_delete_2025-01-17-09.txt @@ -0,0 +1,2 @@ +[2025-01-17 09:39:17.280] DL 日志 +[2025-01-17 09:39:17.280] 测试数据 diff --git a/out/production/GANTRY_PASS_ALL/META-INF/MANIFEST.MF b/out/production/GANTRY_PASS_ALL/META-INF/MANIFEST.MF new file mode 100644 index 0000000..a33408e --- /dev/null +++ b/out/production/GANTRY_PASS_ALL/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: GPA.GAMIN + diff --git a/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/FeeModuleService.class b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/FeeModuleService.class new file mode 100644 index 0000000..47d4abd Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/FeeModuleService.class differ diff --git a/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/FeeModuleService.wsdl b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/FeeModuleService.wsdl new file mode 100644 index 0000000..97f94af --- /dev/null +++ b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/FeeModuleService.wsdl @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/FeeModuleServiceService.class b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/FeeModuleServiceService.class new file mode 100644 index 0000000..8a2968f Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/FeeModuleServiceService.class differ diff --git a/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/GetFee.class b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/GetFee.class new file mode 100644 index 0000000..dc2441c Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/GetFee.class differ diff --git a/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/GetFeeResponse.class b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/GetFeeResponse.class new file mode 100644 index 0000000..aa9fc9f Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/GetFeeResponse.class differ diff --git a/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/GetStaFee.class b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/GetStaFee.class new file mode 100644 index 0000000..e5d663c Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/GetStaFee.class differ diff --git a/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/GetStaFeeResponse.class b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/GetStaFeeResponse.class new file mode 100644 index 0000000..1ed02e7 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/GetStaFeeResponse.class differ diff --git a/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/ObjectFactory.class b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/ObjectFactory.class new file mode 100644 index 0000000..dba9493 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/ObjectFactory.class differ diff --git a/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/package-info.class b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/package-info.class new file mode 100644 index 0000000..b9553e7 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/com/trkf/feemoduleservice/package-info.class differ diff --git a/out/production/GANTRY_PASS_ALL/druid.properties b/out/production/GANTRY_PASS_ALL/druid.properties new file mode 100644 index 0000000..7cc1ffa --- /dev/null +++ b/out/production/GANTRY_PASS_ALL/druid.properties @@ -0,0 +1,18 @@ +url=jdbc:oracle:oci:@//10.15.100.5:1521/torcl +#ȱʡģurlԶʶ +driverClassName=oracle.jdbc.driver.OracleDriver +username=nmgmpayadmin +password=nmgh90[] + +##ʼĬ0 +initialSize=16 +#Ĭ8 +maxActive=32 +#С +minIdle=1 +#ȡӵȴʱ䣬λ +maxWait=10000 +#PreparedStatementĬfalse +poolPreparedStatements=true +#PreparedStatementĬ-1棩0ʱԶPreparedStatementԿʡһ +maxOpenPreparedStatements=20 \ No newline at end of file diff --git a/out/production/GANTRY_PASS_ALL/lib/HikariCP-3.3.1.jar b/out/production/GANTRY_PASS_ALL/lib/HikariCP-3.3.1.jar new file mode 100644 index 0000000..476e0c0 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/lib/HikariCP-3.3.1.jar differ diff --git a/out/production/GANTRY_PASS_ALL/lib/dom4j-2.0.3.jar b/out/production/GANTRY_PASS_ALL/lib/dom4j-2.0.3.jar new file mode 100644 index 0000000..1ef5c52 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/lib/dom4j-2.0.3.jar differ diff --git a/out/production/GANTRY_PASS_ALL/lib/fastjson-1.2.83.jar b/out/production/GANTRY_PASS_ALL/lib/fastjson-1.2.83.jar new file mode 100644 index 0000000..fd843ae Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/lib/fastjson-1.2.83.jar differ diff --git a/out/production/GANTRY_PASS_ALL/lib/ojdbc6.jar b/out/production/GANTRY_PASS_ALL/lib/ojdbc6.jar new file mode 100644 index 0000000..8240f40 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/lib/ojdbc6.jar differ diff --git a/out/production/GANTRY_PASS_ALL/lib/slf4j-api-1.7.25.jar b/out/production/GANTRY_PASS_ALL/lib/slf4j-api-1.7.25.jar new file mode 100644 index 0000000..0143c09 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/lib/slf4j-api-1.7.25.jar differ diff --git a/out/production/GANTRY_PASS_ALL/lib/slf4j-simple-1.7.25.jar b/out/production/GANTRY_PASS_ALL/lib/slf4j-simple-1.7.25.jar new file mode 100644 index 0000000..a7260f3 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/lib/slf4j-simple-1.7.25.jar differ diff --git a/out/production/GANTRY_PASS_ALL/lib/spring-beans-5.2.16.RELEASE.jar b/out/production/GANTRY_PASS_ALL/lib/spring-beans-5.2.16.RELEASE.jar new file mode 100644 index 0000000..40dc420 Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/lib/spring-beans-5.2.16.RELEASE.jar differ diff --git a/out/production/GANTRY_PASS_ALL/lib/spring-core-5.2.16.RELEASE.jar b/out/production/GANTRY_PASS_ALL/lib/spring-core-5.2.16.RELEASE.jar new file mode 100644 index 0000000..74f1ceb Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/lib/spring-core-5.2.16.RELEASE.jar differ diff --git a/out/production/GANTRY_PASS_ALL/lib/spring-jcl-5.2.16.RELEASE.jar b/out/production/GANTRY_PASS_ALL/lib/spring-jcl-5.2.16.RELEASE.jar new file mode 100644 index 0000000..1c85dab Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/lib/spring-jcl-5.2.16.RELEASE.jar differ diff --git a/out/production/GANTRY_PASS_ALL/lib/spring-jdbc-5.2.16.RELEASE.jar b/out/production/GANTRY_PASS_ALL/lib/spring-jdbc-5.2.16.RELEASE.jar new file mode 100644 index 0000000..acaa0af Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/lib/spring-jdbc-5.2.16.RELEASE.jar differ diff --git a/out/production/GANTRY_PASS_ALL/lib/spring-tx-5.2.16.RELEASE.jar b/out/production/GANTRY_PASS_ALL/lib/spring-tx-5.2.16.RELEASE.jar new file mode 100644 index 0000000..3c879ce Binary files /dev/null and b/out/production/GANTRY_PASS_ALL/lib/spring-tx-5.2.16.RELEASE.jar differ diff --git a/src/Config/Config.xml b/src/Config/Config.xml new file mode 100644 index 0000000..95aab27 --- /dev/null +++ b/src/Config/Config.xml @@ -0,0 +1,35 @@ + + + + a.OBUISSUEID,a.GANTRYID,a.FEEPROVBEGINHEX,a.ENTOLLSTATIONHEX,a.PASSID,a.ENTIME,a.PAYFEE,a.FEE,a.DISCOUNTFEE,a.CPUCARDTYPE,a.CPUCARDID,a.OBUSIGN,a.VEHICLEPLATE,a.TOLLINTERVALID,a.PAYFEEGROUP,a.FEEGROUP,a.VEHICLESIGN,a.FEEVEHICLETYPE,a.VEHICLETYPE,a.DISCOUNTTYPE,a.PROVINCEDISCOUNTFEE,a.ORIGINFEE,a.TRANSTIME,a.OBUSN,b.NAME,a.OBUPROVPAYFEESUMAFTER,a.OBUPROVFEESUMAFTER,a.FEESPARE1,a.OBUVEHICLEPLATE,a.CPUVEHICLEPLATE,a.FEESUMLOCALAFTER,a.CPUNETID,a.OBUPROVTRADESUCCNUMAFTER,a.TRADEID,a.VEHICLEUSERTYPE,a.AXLECOUNT,a.LASTGANTRYHEX,a.MEDIATYPE,a.FEECALCRESULT, a.GANTRYTYPE,'' "GANTRYKEY",'' "GANTRYVERIFY",a.OBUFEESUMAFTER,a.OBUTOTALTRADESUCCNUMAFTER,a.NOCARDTIMESAFTER,a.CARDFEESUMAFTER,a.PROVINCENUMAFTER,a.TOTALWEIGHT,a.IDENTIFYVEHICLETYPE,a.VEHICLECLASS,a.TAC,a.TRANSFEE,a.TERMINALTRANSNO,a.TRANSTYPE,a.TERMINALNO,a.ALGORITHMIDENTIFIER,a.RATEVERSION,a.VEHICLEPICID,'' "DECRIPTION",a.OBUMAC,a.KEYVERSION,to_number(substr(a.gantryOrderNum,0,1)) "DIRECTION",a.OBUELECTRICAL,b.GANTRYHEX,a.FEEINFO1,a.FEEINFO2,a.FEEINFO3,a.CPUISSUEID,a.TRADERESULT,a.OBUTRADERESULT,a.VEHICLESEAT + + G001215001000220010|G001215001000220020|S002715001002610010|S002715001002610020|G002515001000610010|G002515001000610020|G002515001000220010|G002515001000220020|G001015003000220010|G001015003000220020|G181715005000810010|G181715005000810020|G004515004001210010|G004515004001210020|G001615004000220010|G001615004000220020|G251115002000220010|G251115002000220020|G006515003001410010|G006515003001410020|G000615001000220010|G000615001000220020|G000715001000220010|G000715001000220020|G005515004010810010|G005515004010810020|G005915001001410010|G005915001001410020|G000615010001410010|G000615010001410020|G000715003004210010|G000715003004210020|G001815001000220010|G001815001000220020|G004515001000220010|G004515001000220020|S003115004001010010|S003115004001010020|G451315001000410010|G451315001000410020 + + G001215001000210010|G001215001000210020|S002715001002620010|S002715001002620020|G002515001000210010|G002515001000210020|G002515001000620010|G002515001000620020|G001015003000210010|G001015003000210020|G181715005000820010|G181715005000820020|G001615004000210010|G001615004000210020|G004515004001220010|G004515004001220020|G251115002000210010|G251115002000210020|G000615001000210010|G000615001000210020|G000715001000210010|G000715001000210020|G006515003001420010|G006515003001420020|G005515004010820010|G005515004010820020|G005915001001420010|G005915001001420020|G000615010001420010|G000615010001420020|G000715003004220010|G000715003004220020|G001815001000210010|G001815001000210020|G004515001000210010|G004515001000210020|S003115004001020010|S003115004001020020|G451315001000420010|G451315001000420020 + + [{"GANTRYHEX":"160302","GANTRYNAME":"蒙冀界-兴和东","ENSTAHEX":"13000000"},{"GANTRYHEX":"160802","GANTRYNAME":"蒙黑界-阿荣旗南","ENSTAHEX":"23000000"},{"GANTRYHEX":"160B02","GANTRYNAME":"蒙吉界-白音乌苏","ENSTAHEX":"22000000"},{"GANTRYHEX":"160E3E","GANTRYNAME":"平庄主线-平庄","ENSTAHEX":"21000000"},{"GANTRYHEX":"161024","GANTRYNAME":"清水河界-十七沟","ENSTAHEX":"14000000"},{"GANTRYHEX":"161302","GANTRYNAME":"那木斯-金宝屯","ENSTAHEX":"22000000"},{"GANTRYHEX":"161402","GANTRYNAME":"好力堡-甘旗卡","ENSTAHEX":"21000000"},{"GANTRYHEX":"161602","GANTRYNAME":"欧里主线-巴彦塔拉","ENSTAHEX":"22000000"},{"GANTRYHEX":"1703BA","GANTRYNAME":"蒙宁界-乌斯太","ENSTAHEX":"64000000"},{"GANTRYHEX":"17057A","GANTRYNAME":"黑鹰山主线-黑鹰山","ENSTAHEX":"62000000"},{"GANTRYHEX":"1709E2","GANTRYNAME":"三号地-贡宝拉格","ENSTAHEX":"13000000"},{"GANTRYHEX":"1712C8","GANTRYNAME":"巴润别立主线-长流水","ENSTAHEX":"64000000"},{"GANTRYHEX":"171306","GANTRYNAME":"布敦花-查日苏","ENSTAHEX":"21000000"},{"GANTRYHEX":"17163E","GANTRYNAME":"内蒙茅荆坝-美林","ENSTAHEX":"13000000"},{"GANTRYHEX":"171994","GANTRYNAME":"蒙晋界-丰镇","ENSTAHEX":"14000000"},{"GANTRYHEX":"171C2E","GANTRYNAME":"和林格尔主线-新店子互通","ENSTAHEX":"14000000"},{"GANTRYHEX":"171E2C","GANTRYNAME":"蒙陕界-兰家梁","ENSTAHEX":"61000000"},{"GANTRYHEX":"172844","GANTRYNAME":"龙口界-龙口","ENSTAHEX":"14000000"},{"GANTRYHEX":"161328","GANTRYNAME":"化德东至化德界门架","ENSTAHEX":"13000000"},{"GANTRYHEX":"171328","GANTRYNAME":"化德界至化德东门架","ENSTAHEX":"13000000"},{"GANTRYHEX":"160516","GANTRYNAME":"韩家营-兴和南","ENSTAHEX":"13000000"}] + + 0 + + ^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z挂学警港澳领试超外0-9]{3,9}_(0|1|2|3|4|5|6|7|11|12)$|^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-Z0-9][A-Z0-9]{4}应急_(0|1|2|3|4|5|6|7|11|12)$ + + 150201 + + 4080 + + 0 + + 30 + + 1 + + jdbc:oracle:thin:@//10.15.100.5:1521/torcl + nmgmpayadmin + nmgh90[] + + jdbc:dm://10.115.255.4:5236/NMGGJT + NMGGJT + 1234567890 + + http://10.15.99.78:8081/FeeModuleService/FeeModuleService + \ No newline at end of file diff --git a/src/GPA/CommonCon.java b/src/GPA/CommonCon.java new file mode 100644 index 0000000..a5035f0 --- /dev/null +++ b/src/GPA/CommonCon.java @@ -0,0 +1,18 @@ +package GPA; + + +import javax.sql.DataSource; +import java.io.InputStream; +import java.sql.Connection; +import java.sql.DriverManager; +import java.util.Properties; + +public class CommonCon { + + + public Connection getDMCon() throws Exception { + Class.forName("dm.jdbc.driver.DmDriver"); + Connection connection=DriverManager.getConnection(CommonHelp.GetConfigValue("JDBCDM_url"),CommonHelp.GetConfigValue("JDBCDM_user"),CommonHelp.GetConfigValue("JDBCDM_password")); + return connection; + } +} diff --git a/src/GPA/CommonHelp.java b/src/GPA/CommonHelp.java new file mode 100644 index 0000000..96b2117 --- /dev/null +++ b/src/GPA/CommonHelp.java @@ -0,0 +1,2395 @@ +package GPA; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.sun.javafx.collections.MappingChange; +import com.trkf.feemoduleservice.FeeModuleServiceService; +import org.dom4j.Document; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; +import org.junit.Test; +import org.springframework.jdbc.core.JdbcTemplate; +import sun.management.snmp.jvmmib.EnumJvmRTBootClassPathSupport; + +import javax.xml.transform.sax.SAXTransformerFactory; +import java.io.File; +import java.io.PushbackInputStream; +import java.io.UnsupportedEncodingException; +import java.sql.*; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.Date; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + + +public class CommonHelp { + + + public static List converToList(ResultSet rs) { + + List list = new ArrayList(); + ResultSetMetaData rsmd = null; + try { + rsmd = rs.getMetaData(); + while (rs.next()) { + Map map = new HashMap(); + for (int i = 1; i <= rsmd.getColumnCount(); i++) { + map.put(rsmd.getColumnName(i), rs.getObject(i)); + } + + list.add(map); + } + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + return list; + } + + public static String GetConfigValue(String key) throws Exception { + String result = ""; + //LogClass.debug(CommonHelp.getPath()+File.separator+"Config"+File.separator+"Config.xml"); + try { + SAXReader saxReader = new SAXReader(); + Document doc = + saxReader.read(new File(CommonHelp.getPath() + File.separator + "Config" + File.separator + + "Config.xml")); + Element root = doc.getRootElement(); + Element result_e = root.element(key); + result = result_e.getStringValue(); + //LogClass.debug(result); + } catch (Exception e) { + LogClass.debug(e.toString()); + } finally { + return result; + } + + + } + + public static String getPath() { + String path = CommonHelp.class.getProtectionDomain().getCodeSource().getLocation().getPath(); + if (System.getProperty("os.name").contains("dows")) { + path = path.substring(1, path.length()); + } + if (path.contains("jar")) { + path = path.substring(0, path.lastIndexOf(".")); + return path.substring(0, path.lastIndexOf("/")); + } + return path.replace("target/classes/", ""); + } + + + public static List getListBySql(String sql, JdbcTemplate jdbcTemplate) throws Exception { + +// String dbType = GetConfigValue("DbType"); +// +// Connection con = null; +// if (dbType.equals("1")) { +// con = new CommonCon().getOraCon(); +// } else if (dbType.equals("2")) { +// con = new CommonCon().getDMCon(); +// } +// Statement st = con.createStatement(); +// ResultSet set = st.executeQuery(sql); + + +// ResultSet set=new DBUtil().Query(sql); +// +// List resultList = converToList(set); + +// if (set != null) { +// set.close(); +// } +// if (st != null) { +// st.close(); +// } +// if (con != null) { +// con.close(); +// } + //JdbcTemplate jdbcTemplate=new JdbcTemplate(new DBUtil().getDataSource()); + + List> resultList = jdbcTemplate.queryForList(sql); + return resultList; + } + + //删除出口交易后的数据 + public static List delete_gantry_pass_out(List list) throws ParseException { + String last_dataSrc = ((Map) list.get(list.size() - 1)).get("DATASRC").toString(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (last_dataSrc.equals("gantry_pass_out")) { + List list_temp = new ArrayList(); + Date out = sdf.parse(((Map) list.get(list.size() - 1)).get("TRANSTIME").toString()); + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + Date this_trans = sdf.parse(map.get("TRANSTIME").toString()); + if (this_trans.getTime() <= out.getTime()) { + list_temp.add(map); + } + } + return list_temp; + } else { + return list; + } + } + + //删除重复交易数据 + public static List delete_repeat(List list) { + List list_temp = new ArrayList(); + if (list.size() == 1) { + return list; + } else { + Map map_temp = null; + map_temp = (Map) list.get(0); + list_temp.add(map_temp); + for (int i = 1; i < list.size(); i++) { + map_temp = (Map) list.get(i); + if (map_temp.get("GANTRYHEX") != null) { + if (!map_temp.get("GANTRYHEX").toString().equals(((Map) list.get(i - 1)).get("GANTRYHEX"))) { + list_temp.add(map_temp); + } + } else { + list_temp.add(map_temp); + } + + } + + return list_temp; + } + } + //删除重复的tradeid记录 + public static List delete_repeat_tradeid(List list){ + List list_temp = new ArrayList(); + if (list.size() == 1) { + return list; + } + else { + HashSet strings = new HashSet<>(); + for (int i = 0; i < list.size(); i++) { + Map map1=(Map) list.get(i); + strings.add(map1.get("TRADEID").toString()); + } + + Map map_temp = null; + map_temp = (Map) list.get(0); + list_temp.add(map_temp); + for (int i = 1; i < list.size(); i++) { + map_temp = (Map) list.get(i); + String tradeid=map_temp.get("TRADEID").toString(); + if (!iscontains(list_temp,tradeid)){ + list_temp.add(map_temp); + } + } + + return list_temp; + } + } + //删除相同tradeid数据时判断临时list中是否已存在这个tradeid + public static boolean iscontains(List list,String tradeid){ + boolean result=false; + + for (int i = 0; i < list.size(); i++) { + Map map1=(Map) list.get(i); + String tradeid_listHas=map1.get("TRADEID").toString(); + if (tradeid_listHas.equals(tradeid)){ + result=true; + break; + } + } + + return result; + } + + //处理计费单元为空的情况 + public static List handle_tollinterval(List list, JdbcTemplate jdbcTemplate) throws Exception { + List list_temp = new ArrayList(); + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (map.get("TOLLINTERVALID") == null ? true : + map.get("TOLLINTERVALID").toString().replaceAll(" ", "").length() == 0) { + if (map.get("PAYFEEGROUP").toString().replaceAll(" ", "").length() == 0) { + map.put("PAYFEEGROUP", "0"); + } + if (map.get("FEEGROUP").toString().replaceAll(" ", "").length() == 0) { + map.put("FEEGROUP", "0"); + } + String sql_tollintervalid = + "select ID from feeunit_table where gantryid1='" + map.get("GANTRYID").toString() + "'"; + List list_tollinterval = getListBySql(sql_tollintervalid, jdbcTemplate); + if (list_tollinterval.size() > 0) { + map.put("TOLLINTERVALID", ((Map) list_tollinterval.get(0)).get("ID").toString()); + } else { + LogClass.error("计费单元查询有误" + map.get("PASSID")); + } + list_temp.add(map); + } else { + list_temp.add(map); + } + } + return list_temp; + } + + public static List console_Result_DataTable(List list) { + + int allFee = GetFeeSum(list); + int obuProFee = Integer.valueOf(((Map) list.get(list.size() - 1)).get("OBUPROVFEESUMAFTER").toString()); + if (allFee == obuProFee) { + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + map.put("OBUPROVTRADESUCCNUMAFTER", (i + 1)); + + list.set(i, map); + } + return list; + } else { + List list_temp = new ArrayList(); + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (map.get("OBUPROVTRADESUCCNUMAFTER").toString().equals("0")) { + list_temp.add(map); + } + } + if (list_temp.size() == list.size()) { + return list; + } else { + String OBUISSUEID = ""; + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (map.get("OBUISSUEID").toString().length() == 16) { + OBUISSUEID = map.get("OBUISSUEID").toString(); + break; + } + } + + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (!map.get("OBUPROVTRADESUCCNUMAFTER").toString().equals("0")) { + map.put("OBUISSUEID", OBUISSUEID); + list_temp.add(map); + } + } + return list_temp; + + } + } + } + + //获取list集合中的fee之和 + public static int GetFeeSum(List list) { + int result = 0; + Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); + for (int i = 0; i < list.size(); i++) { + //int fee=0; + Map map = (Map) list.get(i); + + if (pattern.matcher(map.get("FEE").toString()).matches()) { + result += Integer.valueOf(map.get("FEE").toString()); + } + + } + return result; + } + + //拼接字符串 + public static String StringToClob(String text) { + int content_length = text.length(); + StringBuilder sb_temp = new StringBuilder(); + int n = 1; + int max = content_length / 1999 + 1; + while (n < max) { + String temp = ""; + temp = text.substring((n - 1) * 1999, n * 1999); + sb_temp.append("to_clob('" + temp + "')||"); + n++; + } + sb_temp.append("to_clob('" + text.substring((n - 1) * 1999, content_length) + "')"); + return sb_temp.toString(); + } + + //获取数组之和 + public static int GetArrSum(String strGroup) { + int result = 0; + if (strGroup.length() > 0) { + String[] arr = strGroup.split("\\|"); + for (int i = 0; i < arr.length; i++) { + result += Integer.valueOf(arr[i]); + } + return result; + } else { + return result; + } + } + + //根据传过来的列名,获取第一个不为空的列 + public static String GetGantryPassColumsValue(List list, String columsName) { + String result = ""; + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (map.get(columsName) != null) { + if (map.get(columsName).toString().length() > 0) { + result = map.get(columsName).toString(); + break; + } + } + + } + return result; + } + + //获取正确的CPUNETID不包含字母 + public static String GetRightCPUNETID(List list) { + int i = 0; + String CPUNETID = ""; + String regex = ".*[a-zA-Z]+.*"; + while (i < list.size()) { + if (((Map) list.get(i)).get("CPUNETID") != null) { + Matcher m = Pattern.compile(regex).matcher(((Map) list.get(i)).get("CPUNETID").toString()); + if (!m.matches()) { + CPUNETID = ((Map) list.get(i)).get("CPUNETID").toString(); + break; + } + + } + i++; + + } + return CPUNETID; + } + + //获取发行方机构ID + public static String GetOUBissueID(String FACTOR, JdbcTemplate jdbcTemplate) throws Exception { + String result = ""; + if (FACTOR.length() > 8) { + FACTOR = FACTOR.substring(0, 8); + String sql = "SELECT ISSUERID FROM TB_PARTICIPANT WHERE PROVINCEBCDNAME='" + FACTOR + "'"; + List list = getListBySql(sql, jdbcTemplate); + + if (list.size() > 0) { + result = ((Map) list.get(0)).get("ISSUERID").toString().substring(8, 12) + "01"; + } + } else { + result = ""; + } + return result; + } + + //获取查询结果中收费单元的组合 + public static String GetTollIntervalGroup(List list, JdbcTemplate jdbcTemplate) throws Exception { + return GetRightTollintervalID(list, jdbcTemplate); + } + + //组合出完整正确的tollIntervalId + public static String GetRightTollintervalID(List list, JdbcTemplate jdbcTemplate) throws Exception { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + String[] temp = map.get("TOLLINTERVALID").toString().split("\\|"); + for (int j = 0; j < temp.length; j++) { + if (temp[j].length() >= 16) { + sb.append(temp[j].substring(0, 16) + "|"); + } else if (temp[j].length() > 0) { + sb.append(GetTollIntervalID(map.get("GANTRYID").toString(), temp[j], jdbcTemplate) + "|"); + } + } + } + sb.delete(sb.length() - 1, sb.length()); + return sb.toString(); + + + } + + //若收费单元ID补全,则根据当前gantryid和部分tollintervalid查询出完整的ID + public static String GetTollIntervalID(String gantryid, String tollintervalid, JdbcTemplate jdbcTemplate) throws Exception { + String result = ""; + String sql = + "select ID from feeunit_table where gantryid1='" + gantryid + "' and id like '%" + tollintervalid + + "%'"; + List list = getListBySql(sql, jdbcTemplate); + if (list.size() > 0) { + result = ((Map) list.get(0)).get("ID").toString(); + } else { + result = "0000000000000000"; + } + return result; + } + + //根据查询结果获取交易金额组合fee + public static String GetFeeGroup(List list) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + + if (i == list.size() - 1) { + if (map.get("FEEGROUP").toString().length() > 0) { + sb.append(map.get("FEEGROUP").toString()); + } else { + String[] temp = map.get("TOLLINTERVALID").toString().split("\\|"); + StringBuilder sb_temp = new StringBuilder(); + for (int j = 0; j < temp.length; j++) { + if (j == temp.length - 1) { + sb_temp.append("0"); + } else { + sb_temp.append("0|"); + } + } + sb.append(sb_temp.toString()); + } + } else { + if (map.get("FEEGROUP").toString().length() > 0) { + sb.append(map.get("FEEGROUP").toString() + "|"); + } else { + String[] temp = map.get("TOLLINTERVALID").toString().split("\\|"); + StringBuilder sb_temp = new StringBuilder(); + for (int j = 0; j < temp.length; j++) { + if (j == temp.length - 1) { + sb_temp.append("0"); + } else { + sb_temp.append("0|"); + } + } + sb.append(sb_temp.toString() + "|"); + } + } + } + + + return GetRightFeeGroup(sb.toString()); + + } + + //处理feegroup中存在负数的情况 + private static String GetRightFeeGroup(String feeGroup) { + int all = GetArrSum(feeGroup); + if (all >= 0) { + if (!(feeGroup.indexOf("-") == -1)) { + String[] temp = feeGroup.split("\\|"); + String result = ""; + if (temp.length > 1) { + for (int i = 0; i < temp.length; i++) { + if (Integer.valueOf(temp[i]) < 0) { + temp[i - 1] = String.valueOf(Integer.valueOf(temp[i - 1]) + Integer.valueOf(temp[i])); + temp[i] = "0"; + } + } + for (int i = 0; i < temp.length; i++) { + if (i == temp.length - 1) { + result += temp[i]; + + } else { + result += temp[i] + "|"; + } + } + return GetRightFeeGroup(result); + } else { + return feeGroup; + } + + } else { + return feeGroup; + } + } else { + return feeGroup; + } + + } + + //获取查询结果交易金额组合payfee + public static String GetPayFeegroup(List list) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (i == list.size() - 1) { + if (map.get("PAYFEEGROUP").toString().length() > 0) { + sb.append(map.get("PAYFEEGROUP").toString()); + } else { + String[] temp = map.get("TOLLINTERVALID").toString().split("\\|"); + StringBuilder sb_temp = new StringBuilder(); + + for (int j = 0; j < temp.length; j++) { + if (j == temp.length - 1) { + sb_temp.append("0"); + } else { + sb_temp.append("0|"); + } + } + sb.append(sb_temp.toString()); + } + } else { + if ((map.get("PAYFEEGROUP") == null ? false : map.get("PAYFEEGROUP").toString().length() > 0)) { + sb.append(map.get("PAYFEEGROUP").toString() + "|"); + } else { + String[] temp = map.get("TOLLINTERVALID").toString().split("\\|"); + StringBuilder sb_temp = new StringBuilder(); + + for (int j = 0; j < temp.length; j++) { + if (j == temp.length - 1) { + sb_temp.append("0"); + } else { + sb_temp.append("0|"); + } + } + sb.append(sb_temp.toString() + "|"); + } + } + } + return sb.toString(); + } + + //获取正确的车型 + public static int GetRightvehicleType(List list) { + int vehicleType = 0; + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (Integer.valueOf(map.get("FEEVEHICLETYPE").toString()) >= 1 && Integer.valueOf(map.get("FEEVEHICLETYPE" + ).toString()) <= 26) { + vehicleType = Integer.valueOf(map.get("FEEVEHICLETYPE").toString()); + break; + } + } + return vehicleType; + } + + //出入表中最大的交易时间 + public static String GetMaxTranstime(List list) throws Exception { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date1 = sdf.parse(((Map) list.get(0)).get("TRANSTIME").toString()); + for (int i = 1; i < list.size(); i++) { + Map map = (Map) list.get(i); + Date date2 = sdf.parse(map.get("TRANSTIME").toString()); + if (date2.getTime() > date1.getTime()) { + date1 = date2; + } + } + return sdf.format(date1); + } + + //获取最大无卡交易次数 + public static int GetMaxNocardtimes(List list) { + int nocard1 = Integer.valueOf(((Map) list.get(0)).get("NOCARDTIMESAFTER").toString()); + for (int i = 1; i < list.size(); i++) { + Map map = (Map) list.get(i); + int nocard2 = Integer.valueOf(map.get("NOCARDTIMESAFTER").toString()); + if (nocard2 > nocard1) { + nocard1 = nocard2; + } + } + return nocard1; + } + + //处理——9结尾车牌 + public static String Get_9Plate(String vehicleid) { + String result = ""; + String[] temp = vehicleid.split("_"); + if (temp.length > 1) { + if (temp[1].equals("9")) { + result = temp[0] + "_7"; + } else { + result = vehicleid; + } + } else { + result = vehicleid; + } + return result; + } + + //处理车牌 + public static String RegexCard(String OBUVehiclePlate, String CPUVehiclePlate, String vehiclePlate) throws Exception { + String result = ""; +// String regstr = GetConfigValue("RegexStr"); +// Matcher m1 = Pattern.compile(regstr).matcher(OBUVehiclePlate); +// Matcher m2 = Pattern.compile(regstr).matcher(CPUVehiclePlate); +// Matcher m3 = Pattern.compile(regstr).matcher(vehiclePlate); +// if (!m1.matches()) { +// if (!m2.matches()) { +// if (!m3.matches()) { +// result = "蒙X00000_1"; +// } else { +// result = vehiclePlate; +// } +// } else { +// result = CPUVehiclePlate; +// } +// } else { +// result = OBUVehiclePlate; +// } + + //String carnumRegex = "([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}(([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9 挂学警港澳]{1})"; + + String carnumRegex="^(京|津|沪|渝|冀|豫|云|辽|黑|湘|皖|鲁|新|苏|浙|赣|鄂|桂|甘|晋|蒙|陕|吉|闽|贵|粤|青|藏|川|宁|琼|使|领|[A-Z0-9]){1}[A-Z0-9]{1}(京|津|沪|渝|桂|蒙|宁|新|藏|冀|晋|辽|吉|黑|苏|浙|皖|赣|闽|鲁|粤|鄂|湘|豫|川|云|贵|陕|甘|青|琼){0,1}[A-NP-Z0-9]{1}[A-NP-Z0-9]{3}([A-NP-Z0-9]{1}|(挂|学|警|港|澳|领|试|超|外){1}|应急)([A-NP-Z0-9]|外){0,1}|([A-Z0-9]{7})|(默A00000)|(应急(京|津|沪|渝|冀|豫|云|辽|黑|湘|皖|鲁|新|苏|浙|赣|鄂|桂|甘|晋|蒙|陕|吉|闽|贵|粤|青|藏|川|宁|琼|使|领|[A-Z0-9]){1}[A-NP-Z0-9]{3,4})&"; + //String carnumRegex="^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[a-zA-Z](([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼ABCDEFGHJK]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[ABCDEFGHJK]))|[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z0-9]{1}[A-Z0-9]{1}[A-Z0-9应]{4,5}[A-Z0-9挂学警港澳领使急]{1})$"; + String[] temp1 = OBUVehiclePlate.split("_"); + String[] temp2 = CPUVehiclePlate.split("_"); + String[] temp3 = vehiclePlate.split("_"); + boolean m1=false; + boolean m2=false; + boolean m3=false; + if (temp1.length>1){ + m1=temp1[0].matches(carnumRegex); + + } + if (temp2.length>1){ + m2=temp2[0].matches(carnumRegex); + + } + if (temp3.length>0){ + m3=temp3[0].matches(carnumRegex); + } + if (!m1){ + if (!m2){ + if(!m3){ + result="蒙X00000_1"; + } + else { + result=vehiclePlate; + } + } + else { + result=CPUVehiclePlate; + } + } + else { + result =OBUVehiclePlate; + } + + + return result; + + + } + + //获取查询结果中的收费路段组合 + public static String GetSectinoidGroup(String tollIntervalID) { + StringBuilder result = new StringBuilder(); + String[] temp = tollIntervalID.split("\\|"); + for (int i = 0; i < temp.length; i++) { + if (i == temp.length - 1) { + if (temp[i].length() > 0) { + result.append(temp[i].substring(0, 11)); + } else { + result.append(""); + } + } else { + if (temp[i].length() > 0) { + result.append(temp[i].substring(0, 11) + "|"); + } else { + result.append("|"); + } + } + } + return result.toString(); + } + + //获取查询结果中收费单元名称组合 + public static String GetTollIntervalNameGroup(String tollIntervalID, List list_FEEUNIT_TABLE) throws Exception { + StringBuilder result = new StringBuilder(); + String[] temp = tollIntervalID.split("\\|"); + for (int i = 0; i < temp.length; i++) { + if (i == temp.length - 1) { + if (temp[i].length() > 0) { + result.append(GetTollIntervalName(temp[i], list_FEEUNIT_TABLE)); + } else { + result.append(""); + } + } else { + if (temp[i].length() > 0) { + result.append(GetTollIntervalName(temp[i], list_FEEUNIT_TABLE) + "|"); + } else { + result.append("|"); + } + } + } + return result.toString(); + } + + //根据收费单元编号获取收费单元名称 + public static String GetTollIntervalName(String id, List list_FEEUNIT_TABLE) throws Exception { + String result = ""; + if (id.length() >= 16) { + if (list_FEEUNIT_TABLE.size() > 0) { + for (int i = 0; i < list_FEEUNIT_TABLE.size(); i++) { + Map map = (Map) list_FEEUNIT_TABLE.get(i); + if (map.get("ID").equals(id)) { + result = map.get("NAME").toString(); + break; + } + } + if (result.length() == 0 || result.equals("")) { + result = "计费单元ID不存在"; + } + } + } else { + result = "计费单元ID不存在"; + } +// if (id.length() >= 16) { +// id = id.substring(0, 16); +// String sql = "select NAME from feeunit_table where id='" + id + "'"; +// List list = getListBySql(sql); +// if (list.size() > 0) { +// result = ((Map) list.get(0)).get("NAME").toString(); +// } else { +// result = "计费单元ID不存在"; +// } +// } else { +// result = "计费单元ID不存在"; +// } + return result; + } + + //获取查询结果中收费路段名称组合 + public static String GetSectionNameGroup(String tollIntervalID, List list_line_table) throws Exception { + StringBuilder result = new StringBuilder(); + String[] temp = tollIntervalID.split("\\|"); + for (int i = 0; i < temp.length; i++) { + if (i == temp.length - 1) { + if (temp[i].length() > 0) { + result.append(GetSectionName(temp[i].substring(0, 11), list_line_table)); + } else { + result.append(""); + } + } else { + if (temp[i].length() > 0) { + result.append(GetSectionName(temp[i].substring(0, 11), list_line_table) + "|"); + } else { + result.append("|"); + } + } + } + return result.toString(); + } + + //根据路段编号获取路段名称 + public static String GetSectionName(String GBID, List list_line_table) throws Exception { + String result = ""; + + if (list_line_table.size() > 0) { + for (int i = 0; i < list_line_table.size(); i++) { + Map map = (Map) list_line_table.get(i); + if (map.get("GBLINEID").toString().equals(GBID)) { + result = map.get("LINENAME").toString(); + break; + } + } + } + +// if (GBID.length()>=11){ +// GBID=GBID.substring(0,11); +// String sql="select LINENAME from line_table where GBLINEID='" + GBID + "'"; +// List list=getListBySql(sql); +// if (list.size()>0){ +// result=((Map) list.get(0)).get("LINENAME").toString(); +// } +// else { +// result=""; +// } +// } +// else { +// result=""; +// } + return result; + } + + //处理vehiclesign + public static String GetRightvehicleSign(String vehicleSign) { + String[] vehicleSign_temp = {"0x00", "0x01", "0x02", "0x03", "0x04", "0xff"}; + for (int i = 0; i < vehicleSign_temp.length; i++) { + if (vehicleSign_temp[i].equals(vehicleSign)) { + return vehicleSign; + } + } + return "0xff"; + } + + //获取查询结果中生活纵向优惠金额总和 + public static int GetprovinceDiscountFeeSum(List list) { + int result = 0; + for (int i = 0; i < list.size(); i++) { + int PROVINCEDISCOUNTFEE = 0; + PROVINCEDISCOUNTFEE = Integer.parseInt(((Map) list.get(i)).get("PROVINCEDISCOUNTFEE").toString()); + result += PROVINCEDISCOUNTFEE; + } + return result; + } + + //把结果转换为json字符串 + public static String DataTableToJson(List list, String exTime, JdbcTemplate jdbcTemplate) throws Exception { + StringBuilder sb = new StringBuilder(); + sb.append("["); + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + sb.append("{"); + + sb.append("\"id\":\"" + (map.get("TRADEID") == null ? "" : map.get("TRADEID").toString()) + "\","); + sb.append("\"tollGantryId\":\"" + (map.get("GANTRYID") == null ? "" : map.get("GANTRYID").toString()) + + "\","); + String gantryType = ""; + if (map.get("GANTRYTYPE") == null || map.get("GANTRYTYPE").toString().length() == 0) { + gantryType = String.valueOf(GetGantryType(map.get("GANTRYID").toString(), jdbcTemplate)); + } else { + gantryType = map.get("GANTRYTYPE").toString(); + } + sb.append("\"gantryType\":" + (gantryType.equals("0") ? "2" : gantryType) + ","); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date t_Dis = sdf.parse("2020-05-06 00:00:00"); + Date t_en = sdf.parse(map.get("ENTIME").toString()); + int payFee = 0; + if (isInteger(map.get("PAYFEE").toString())) { + payFee = Integer.valueOf(map.get("PAYFEE").toString()); + } + sb.append("\"payFee\":" + payFee + ","); + int fee = 0; + if (t_en.getTime() < t_Dis.getTime()) { + fee = 0; + sb.append("\"fee\":" + fee + ","); + } else { + if (isInteger(map.get("FEE").toString())) { + fee = Integer.valueOf(map.get("FEE").toString()); + } + sb.append("\"fee\":" + fee + ","); + } + + int discountfee = 0; + if (t_en.getTime() < t_Dis.getTime()) { + discountfee = payFee; + sb.append("\"discountFee\":" + discountfee + ","); + } else { + if (isInteger(map.get("DISCOUNTFEE").toString())) { + discountfee = Integer.valueOf(map.get("DISCOUNTFEE").toString()); + } + sb.append("\"discountFee\":" + discountfee + ","); + } + + int obuProvinceFee = 0; + if (isInteger(map.get("OBUPROVFEESUMAFTER").toString())) { + obuProvinceFee = Integer.valueOf(map.get("OBUPROVFEESUMAFTER").toString()); + } + sb.append("\"obuProvinceFee\":" + (obuProvinceFee < 0 ? 0 : obuProvinceFee) + ","); + + int obuTotalAmount = 0; + if (isInteger(map.get("OBUFEESUMAFTER").toString())) { + obuTotalAmount = Integer.valueOf(map.get("OBUFEESUMAFTER").toString()); + } + sb.append("\"obuTotalAmount\":" + (obuTotalAmount < 0 ? 0 : obuTotalAmount) + ","); + + int provTransCount = 0; + if (isInteger(map.get("OBUPROVTRADESUCCNUMAFTER").toString())) { + provTransCount = Integer.valueOf(map.get("OBUPROVTRADESUCCNUMAFTER").toString()); + } + sb.append("\"provTransCount\":" + provTransCount + ","); + + int totalCount = 0; + if (isInteger(map.get("OBUTOTALTRADESUCCNUMAFTER").toString())) { + totalCount = Integer.valueOf(map.get("OBUTOTALTRADESUCCNUMAFTER").toString()); + } + sb.append("\"totalCount\":" + (totalCount < 0 ? 0 : totalCount) + ","); + + int noCardCount = 0; + if (isInteger(map.get("NOCARDTIMESAFTER").toString())) { + noCardCount = Integer.valueOf(map.get("NOCARDTIMESAFTER").toString()); + } + sb.append("\"noCardCount\":" + (noCardCount < 0 ? 0 : noCardCount) + ","); + + int provinceCount = 0; + if (isInteger(map.get("PROVINCENUMAFTER").toString())) { + provinceCount = Integer.valueOf(map.get("PROVINCENUMAFTER").toString()); + } + sb.append("\"provinceCount\":" + (provinceCount > 0 ? provinceCount : 1) + ","); + + sb.append("\"enTollLaneId\":\"" + map.get("ENTOLLSTATIONHEX").toString() + "\","); + //sb.append("\"enTime\":\"" + sdf.format(sdf.parse(map.get("ENTIME").toString())) + "\","); + sb.append("\"enTime\":\"" + new SimpleDateFormat("yyyy-MM-dd").format(sdf.parse(map.get("ENTIME").toString())) + "T" + new SimpleDateFormat("HH:mm:ss").format(sdf.parse(map.get("ENTIME").toString())) + "\","); + if (i == list.size() - 1) { + + Date date = sdf.parse(exTime); + sb.append("\"transTime\":\"" + new SimpleDateFormat("yyyy-MM-dd").format(date) + "T" + new SimpleDateFormat("HH:mm:ss").format(date) + "\","); + } else { + Date date = sdf.parse(map.get("TRANSTIME").toString()); + + sb.append("\"transTime\":\"" + new SimpleDateFormat("yyyy-MM-dd").format(date) + "T" + new SimpleDateFormat("HH:mm:ss").format(date) + "\","); + } + + int vehicleType = 0; + if (isInteger(map.get("FEEVEHICLETYPE").toString())) { + vehicleType = Integer.valueOf(map.get("FEEVEHICLETYPE").toString()); + } + sb.append("\"vehicleType\":" + GetRightvehicleType(String.valueOf(vehicleType), + map.get("VEHICLETYPE").toString()) + ","); + + int vehicleClass = 0; + sb.append("\"vehicleClass\":" + vehicleClass + ","); + sb.append("\"passId\":\"" + map.get("PASSID").toString() + "\","); + sb.append("\"vehicleSign\":\"" + GetRightvehicleSign(map.get("VEHICLESIGN").toString()) + "\","); + + if (map.get("FEECALCRESULT").toString().equals("0")) { + int cardTotalAmount = 0; + if (isInteger(map.get("CARDFEESUMAFTER").toString())) { + cardTotalAmount = Integer.valueOf(map.get("CARDFEESUMAFTER").toString()); + } + sb.append("\"cardTotalAmount\":" + (cardTotalAmount < 0 ? 0 : cardTotalAmount) + ","); + + String TAC = ""; + if ((map.get("TAC") == null ? true : map.get("TAC").toString().length() <= 1)) { + TAC = "00000000"; + } else { + TAC = map.get("TAC").toString(); + } + + sb.append("\"TAC\":\"" + TAC + "\","); + + sb.append("\"terminalTransNo\":\"" + (map.get("TERMINALTRANSNO") == null ? "" : map.get( + "TERMINALTRANSNO").toString()) + "\","); + sb.append("\"transType\":\"" + map.get("TRANSTYPE").toString() + "\","); + + } + + int vehicleType1 = 0; + if (isInteger(map.get("VEHICLETYPE").toString())) { + vehicleType1 = Integer.valueOf(map.get("VEHICLETYPE").toString()); + } + if (vehicleType1 >= 10) { + int enAxleCount = 0; + if (isInteger(map.get("AXLECOUNT").toString())) { + enAxleCount = Integer.valueOf(map.get("AXLECOUNT").toString()); + } + if (enAxleCount > 30) { + switch (vehicleType1) { + case 11: + enAxleCount = 2; + break; + case 12: + enAxleCount = 2; + break; + case 13: + enAxleCount = 3; + break; + case 14: + enAxleCount = 4; + break; + case 15: + enAxleCount = 5; + break; + case 16: + enAxleCount = 6; + break; + default: + enAxleCount = 2; + break; + } + } + + sb.append("\"enAxleCount\":" + enAxleCount + ","); + int enWeight = 0; + if (isInteger(map.get("TOTALWEIGHT").toString())) { + enWeight = Integer.valueOf(map.get("TOTALWEIGHT").toString()); + } + sb.append("\"enWeight\":" + enWeight + ","); + + } + if (map.get("RATEVERSION").toString().length() > 0) { + sb.append("\"rateVersion\":\"" + map.get("RATEVERSION").toString() + "\","); + } + if (map.get("OBUMAC").toString().length() > 0) { + sb.append("\"OBUMAC\":\"" + map.get("OBUMAC").toString() + "\","); + } + if (map.get("OBUSN").toString().length() > 0) { + sb.append("\"OBUSN\":\"" + map.get("OBUSN").toString() + "\","); + } + + if (map.get("OBUSIGN").toString().equals("1")) { + int electricalPercentage = 0; + if (isInteger(map.get("OBUELECTRICAL").toString())) { + electricalPercentage = Integer.valueOf(map.get("OBUELECTRICAL").toString()); + } + sb.append("\"electricalPercentage\":" + electricalPercentage + ","); + } + + int discountType = 0; + if (t_en.getTime() < t_Dis.getTime()) { + discountType = 5; + sb.append("\"discountType\":" + discountType + ","); + } else { + if (map.get("DISCOUNTTYPE") == null ? false : isInteger(map.get("DISCOUNTTYPE").toString())) { + + discountType = Integer.valueOf(map.get("DISCOUNTTYPE").toString()) > 5 ? 0 : Integer.valueOf(map.get("DISCOUNTTYPE").toString()); + } + if (discountType == 0 || discountType > 5) { + sb.append("\"discountType\":null,"); + } else { + sb.append("\"discountType\":" + discountType + ","); + } + } + + if (map.get("DISCOUNTTYPE") == null ? false : map.get("DISCOUNTTYPE").toString().equals("5")) { + int provinceDiscountFee = 0; + if (isInteger(map.get("PROVINCEDISCOUNTFEE").toString())) { + provinceDiscountFee = Integer.valueOf(map.get("PROVINCEDISCOUNTFEE").toString()); + } + sb.append("\"provinceDiscountFee\":" + provinceDiscountFee + ","); + } else { + sb.append("\"provinceDiscountFee\":0,"); + sb.append("\"originFee\":0,"); + } + + sb.delete(sb.length() - 1, sb.length()); + sb.append("},"); + + + } + + sb.delete(sb.length() - 1, sb.length()); + sb.append("]"); + return sb.toString(); + } + + //处理vehicletype + public static String GetRightvehicleType(String vehicleType, String vehicletype1) { + String[] vehicleType_temp = {"1", "2", "3", "4", "11", "12", "13", "14", "15", "16", "21", "22", "23", "24", + "25", "26"}; + for (int i = 0; i < vehicleType_temp.length; i++) { + if (vehicleType_temp[i].equals(vehicleType)) { + return vehicleType; + } + } + return vehicletype1; + + } + + //通过gantryID获取gantryTYpe + public static int GetGantryType(String Gantryid, JdbcTemplate jdbcTemplate) throws Exception { + String sql = "select TYPE from gantry_table where id='" + Gantryid + "'"; + List list = getListBySql(sql, jdbcTemplate); + if (list.size() > 0) { + return Integer.valueOf(((Map) list.get(0)).get("TYPE").toString()); + } else { + return 0; + } + } + + //格式化时间 + public static String shortTime(String dateTime) throws ParseException { + + SimpleDateFormat format_Date = new SimpleDateFormat("yyyy-MM-dd"); + return format_Date.format(format_Date.parse(dateTime)); + } + + public static String longTime(String dateTime) throws ParseException { + SimpleDateFormat format_Time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (dateTime.length()==0){ + LocalDateTime now=LocalDateTime.now(); + return now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + } + else { + return format_Time.format(format_Time.parse(dateTime)); + } + + } + + public static String idTime(String dateTime) throws ParseException { + SimpleDateFormat format_Time = new SimpleDateFormat("yyyyMMddHHmmss"); + SimpleDateFormat format_Time1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return format_Time.format(format_Time1.parse(dateTime)); + } + + //判断是否位数字 + public static boolean isInteger(String str) { + boolean result = false; + Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); + + long str_temp = Long.valueOf(str); + if (str_temp > Integer.MAX_VALUE) { + result = false; + } else { + result = pattern.matcher(str).matches(); + } + + + return result; + } + + //判断计费单元组合中是否有重复交易的计费单元 + public static boolean tollIntervalId_repeat(String tollIntervalid) { + boolean result = false; + String[] temp = tollIntervalid.split("\\|"); + if (temp.length > 1) { + Set setTemp = new HashSet(); + for (int i = 0; i < temp.length; i++) { + setTemp.add(temp[i]); + } + if (temp.length == setTemp.size()) { + result = false; + } else { + result = true; + } + } else { + result = false; + } + return result; + } + + //根据后一门架是否包含前一门架的计费单元判断是否重复交易 2022-11-14 + public static boolean tollIntervalId_repeat(List list_gantry_pass) { + boolean result = false; + if (list_gantry_pass.size() > 0) { + for (int i = 0; i < list_gantry_pass.size() - 1; i++) { + Map map1 = (Map) list_gantry_pass.get(i); + Map map2 = (Map) list_gantry_pass.get(i + 1); + String tollIntervalid1 = map1.get("TOLLINTERVALID").toString(); + String tollINtervalid2 = map2.get("TOLLINTERVALID").toString(); + if (tollINtervalid2.indexOf(tollIntervalid1) == 0) { + result = true; + break; + } + } + } + return false; + } + + + //处理List中重复的计费单元 + public static List remove_repeat_tollIntervalId(List list, JdbcTemplate jdbcTemplate) throws Exception { + + List tempList = new ArrayList(); + if (list.size() > 1) { + + tempList.add(list.get(0)); + + for (int i = 0; i < list.size() - 1; i++) { + Map map1 = (Map) list.get(i); + Map map2 = (Map) list.get(i + 1); + String tollIntervalid1 = map1.get("TOLLINTERVALID").toString(); + String tollINtervalid2 = map2.get("TOLLINTERVALID").toString(); + if (tollINtervalid2.indexOf(tollIntervalid1) == 0) {//后一门架重复计费前一门架费用 + int tollid1Length = map1.get("TOLLINTERVALID").toString().split("\\|").length; + String[] tollid_map2 = map2.get("TOLLINTERVALID").toString().split("\\|"); + String[] feegroup_map2 = map2.get("FEEGROUP").toString().split("\\|"); + String[] payfeegroup_map2 = map2.get("PAYFEEGROUP").toString().split("\\|"); + + String tollintervalid_use = ""; + String feegroup_use = ""; + String payfeegroup_use = ""; + + for (int j = tollid1Length; j < tollid_map2.length; j++) { + + tollintervalid_use += tollid_map2[j] + "|"; + feegroup_use += feegroup_map2[j] + "|"; + payfeegroup_use += payfeegroup_map2[j] + "|"; + + } + if (tollintervalid_use.length() > 0) { + tollintervalid_use = tollintervalid_use.substring(0, tollintervalid_use.length() - 1); + feegroup_use = feegroup_use.substring(0, feegroup_use.length() - 1); + payfeegroup_use = payfeegroup_use.substring(0, payfeegroup_use.length() - 1); + + map2.put("TOLLINTERVALID", tollintervalid_use); + map2.put("FEEGROUP", feegroup_use); + map2.put("PAYFEEGROUP", payfeegroup_use); + tempList.add(map2); + } + + + } else { + tempList.add(map2); + } + } + } + else { + tempList=list; + } + + return tempList; + } + + //判断list查询结果中是否有丢门架情况 + public static boolean isListLostGantry(List list) { + boolean result = false; + if (list.size() > 1) { + + if (!((Map) list.get(0)).get("OBUPROVTRADESUCCNUMAFTER").toString().equals("1")) { + result = true; + } else { + for (int i = 0; i < list.size() - 1; i++) { + Map map = (Map) list.get(i); + Map map1 = (Map) list.get(i + 1); + if (Integer.valueOf(map1.get("OBUPROVTRADESUCCNUMAFTER").toString()) - Integer.valueOf(map.get("OBUPROVTRADESUCCNUMAFTER").toString()) > 1) { + result = true; + break; + } + + } + } + + } else { + + if (!((Map) list.get(0)).get("OBUPROVTRADESUCCNUMAFTER").toString().equals("1")) { + result = true; + } + } + + + return result; + + } + + //U转路径 + public static String UTURN_PATH(String tollIntervalid, List list_FEEUNIT_TABLE) throws Exception { + String[] temp = tollIntervalid.split("\\|"); + List list = new ArrayList(); + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < temp.length; i++) { + if (list.size() > 0) { + if (list.contains(temp[i].substring(0, temp[i].length() - 2))) { + sb.append(":" + temp[i]); + list.clear(); + list.add(temp[i].substring(0, temp[i].length() - 2)); + } else { + sb.append("|" + temp[i]); + list.add(temp[i].substring(0, temp[i].length() - 2)); + } + } else { + sb.append("|" + temp[i]); + list.add(temp[i].substring(0, temp[i].length() - 2)); + } + + } + + sb.delete(0, 1); + String[] temp_result = sb.toString().split(":"); + + StringBuilder result = new StringBuilder(); + for (int i = 0; i < temp_result.length; i++) {//循环结果,偶数正序,奇数倒序 + + if ((i & 1) == 1) {//奇数,倒序 + String[] temp1 = temp_result[i].split("\\|"); + for (int j = temp1.length - 1; j >= 0; j--) { + result.append(GetTollIntervalName(temp1[j], list_FEEUNIT_TABLE) + "|"); + } + } else {//偶数,正序 + + String[] temp1 = temp_result[i].split("\\|"); + for (int j = 0; j < temp1.length; j++) { + result.append(GetTollIntervalName(temp1[j], list_FEEUNIT_TABLE) + "|"); + } + } + result.delete(result.length() - 1, result.length()); + result.append(":"); + } + result.delete(result.length() - 1, result.length()); + return result.toString(); + } + + //根据gantryhex获取gantryID + public static String getGantryIDByGantryHex(String gantryHex, List list) { + String result = ""; + if (list.size() > 0) { + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if (map.get("GANTRYHEX").toString().equals(gantryHex)) { + result = map.get("ID").toString(); + break; + } + } + } + return result; + } + + public static String numberAfterFillZero(String str, int length) { + StringBuffer buffer = new StringBuffer(str); + if (buffer.length() >= length) { + return buffer.toString(); + } else { + while (buffer.length() < length) { + buffer.append("0"); + } + } + return buffer.toString(); + } + + + public static String str2HexStr(String str) throws UnsupportedEncodingException { + char[] chars = "0123456789ABCDEF".toCharArray(); + StringBuilder sb = new StringBuilder(""); + byte[] bs = str.getBytes("GB2312"); + int bit; + for (int i = 0; i < bs.length; i++) { + bit = (bs[i] & 0x0f0) >> 4; + sb.append(chars[bit]); + bit = bs[i] & 0x0f; + sb.append(chars[bit]); + // sb.append(' '); + } + return sb.toString().trim(); + } + public static String GetPlateColor(String str){ + String result=""; + switch (str){ + case "0": + result="0x00"; + break; + case "1": + result="0x01"; + break; + case "2": + result="0x02"; + break; + case "3": + result="0x03"; + break; + case "4": + result="0x04"; + break; + case "5": + result="0x05"; + break; + case "6": + result="0x06"; + break; + default: + result="9"; + } + return result; + } + //根据补费结果更新门架交易质量数据 +// public static void updateGantryTrade_mass(String tollintervals, int vehicleType, int mediaType, String +// classdate) throws Exception { +// String[] tollintervals_temp = null; +// if (tollintervals.length() > 0) { +// tollintervals_temp = tollintervals.split("\\|"); +// } +// if (tollintervals_temp != null) { +// for (int i = 0; i < tollintervals_temp.length; i++) { +// String gantryid_sql = +// "select GANTRYID1 from feeunit_table where id='" + tollintervals_temp[i].toString() +// .substring(0, 16) + "'"; +// List list = getListBySql(gantryid_sql); +// if (list.size() > 0) { +// Map map = (Map) list.get(0); +// String update_gantry_trade_sql = "update gantry_trade_mass set feelostnum=feelostnum+1 where +// " + +// "gantryid = '" + (map.get("GANTRYID1") == null ? "" : map.get("GANTRYID1").toString()) + +// "' and classdate = TO_DATE('" + shortTime(classdate) + "', 'yyyy/mm/dd') and " + +// "mediatype = " + mediaType + " and vehicletype = " + vehicleType; +// } +// } +// } +// } + + + + //记录被拟合计费单元次数 + public static void Set_Gantry_lib_stat(String this_feeunitid,String tollintervalids,int mediatype,JdbcTemplate jdbcTemplate){ + String sql="merge into GANTRY_PASS_LIB_STAT t1 using(select :FEEUNITID as FEEUNITID,to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd') as classdate,:mediatype as mediatype from dual) t2" + + " on(t1.FEEUNITID=t2.FEEUNITID and t1.classdate=t2.classdate and t1.mediatype=t2.mediatype) when matched then update set t1.num=t1.num+1 when not matched then" + + " insert(FEEUNITID,classdate,num,mediatype) values(t2.FEEUNITID,t2.classdate,1,t2.mediatype)"; + //String this_feeunitid=map.get("TOLLINTERVALS").toString(); + String[] feeunit_arr=tollintervalids.split("\\|"); + String[] this_feeunit_arr=this_feeunitid.split("\\|"); + if (feeunit_arr.length>0){ + ArrayList objects = new ArrayList<>(); + for (int i = 0; i < feeunit_arr.length; i++) { + String feeunit_temp=feeunit_arr[i]; + if (feeunit_temp.length()>=16){ + feeunit_temp=feeunit_temp.substring(0,16); + } + if (!Arrays.asList(this_feeunit_arr).contains(feeunit_temp)){ + Object[] objects_feeunit=new Object[]{feeunit_temp,mediatype}; + objects.add(objects_feeunit); + } + + } + jdbcTemplate.batchUpdate(sql,objects); + } + + } + + //补费程序1,补入口到门架,门架之间,门架到出口,常规情况 + public static List GetLibDataTable(List list, int threadId, String passid, String sql_gantry_pass, + JdbcTemplate jdbcTemplate,String vehicleid) { + + int mediaType = 0; + if (((Map) list.get(0)).get("MEDIATYPE").toString().length() > 0) { + mediaType = Integer.valueOf(((Map) list.get(0)).get("MEDIATYPE").toString()); + } else { + mediaType = Integer.valueOf(((Map) list.get(0)).get("PASSID").toString().substring(1, 2)); + } + + + //if (Integer.valueOf(((Map) list.get(list.size() - 1)).get("OBUPROVTRADESUCCNUMAFTER").toString()) > list.size()) { + if (isListLostGantry(list)) { + try { + StringBuilder sb_json = new StringBuilder(); + StringBuilder sb = new StringBuilder(); + + int totalWeight = Integer.valueOf(((Map) list.get(0)).get("TOTALWEIGHT").toString()); + String[] temp_vehicleid=vehicleid.split("_"); + String plateHex=""; + String plateColor=""; + if (temp_vehicleid.length>1){ + plateHex=numberAfterFillZero(str2HexStr(temp_vehicleid[0]),25) ; + plateColor=temp_vehicleid[1]; + } + else { + plateHex=numberAfterFillZero(str2HexStr("蒙X00000"),25) ; + plateColor="9"; + } + + List list_temp = new ArrayList(); + if (((Map) list.get(0)).get("OBUPROVTRADESUCCNUMAFTER").toString().equals("1")) { + + Map map = (Map) list.get(0); + list_temp.add(map); + if (list.size() > 1) { + for (int i = 0; i < list.size() - 1; i++) { + map = (Map) list.get(i); + if (Integer.valueOf(((Map) list.get(i + 1)).get("OBUPROVTRADESUCCNUMAFTER").toString()) - Integer.valueOf(map.get("OBUPROVTRADESUCCNUMAFTER").toString()) > 1) { + String feeinfo = + (((Map) list.get(i + 1)).get("FEEINFO1") == null ? "" : + ((Map) list.get(i + 1)).get("FEEINFO1").toString()) + (((Map) list.get(i + 1)).get("FEEINFO2") == null ? "" : ((Map) list.get(i + 1)).get("FEEINFO2").toString()) + (((Map) list.get(i + 1)).get("FEEINFO3") == null ? "" : ((Map) list.get(i + 1)).get("FEEINFO3").toString()); + JSONObject temp_feeinfo = JSON.parseObject(feeinfo); + + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = sdf.parse(((Map) list.get(i + 1)).get("TRANSTIME").toString()); + + sb_json.append("{"); + + + sb_json.append("\"enTollStationHex\":\"" + temp_feeinfo.getString("enStaHex").toString() + "\","); + sb_json.append("\"curTollGantry\":\"" + ((Map) list.get(i + 1)).get("GANTRYID").toString() + "\","); + sb_json.append("\"curPassTime\":\"" + new SimpleDateFormat("yyyy-MM-dd").format(date) + "T" + new SimpleDateFormat("HH:mm:ss").format(date) + "\","); + sb_json.append("\"vehicleType\":" + temp_feeinfo.getInteger("vehType") + ","); + sb_json.append("\"enAxleCount\":" + temp_feeinfo.getInteger("enAxleCount") + ","); + sb_json.append("\"totalWeight\":" + totalWeight + ","); + sb_json.append("\"plateHex\":\"" + plateHex + "\",");//新增传入车牌 + sb_json.append("\"plateColor\":" + plateColor + ",");//新增传入车牌颜色 + sb_json.append("\"lastGantryHex\":\"" + map.get("GANTRYHEX").toString() + "\","); + //sb_json.Append("\"lastGantryHex\":\"\","); + sb_json.append("\"tagType\":" + mediaType + ","); + if (mediaType == 1) { + sb_json.append("\"payFeeSumLocal\":" + Integer.valueOf((map.get( + "OBUPROVPAYFEESUMAFTER") == null || map.get( + "OBUPROVPAYFEESUMAFTER").toString().length() == 0) ? "0" : map.get( + "OBUPROVPAYFEESUMAFTER").toString()) + ","); + sb_json.append("\"realFeeSumLocal\":" + Integer.valueOf((map.get( + "OBUPROVFEESUMAFTER") == null || map.get( + "OBUPROVFEESUMAFTER").toString().length() == 0) ? "0" : map.get( + "OBUPROVFEESUMAFTER").toString())); + } else if (mediaType == 2) { + sb_json.append("\"payFeeSumLocal\":" + Integer.valueOf((map.get("FEESUMLOCALAFTER" + ) == null || map.get("FEESUMLOCALAFTER").toString().length() == 0) ? "0" : + map.get("FEESUMLOCALAFTER").toString()) + ","); + sb_json.append("\"realFeeSumLocal\":" + Integer.valueOf((map.get("FEESPARE1") == null || map.get("FEESPARE1").toString().length() == 0) ? "0" : map.get("FEESPARE1").toString())); + + } + + sb_json.append("}"); + + FeeModuleServiceService factory = new FeeModuleServiceService(); + com.trkf.feemoduleservice.FeeModuleService service = factory.getFeeModuleServicePort(); + + String result_json = service.getFee(sb_json.toString()); + sb_json.delete(0, sb_json.length()); + + JSONObject temp_json = JSON.parseObject(result_json); + + int result = temp_json.getInteger("errorCode"); + if (result != 0) { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result " + + "where " + + "passid='" + passid + "')) then into gantry_libfee_result (passid, " + + "libresult, gantrysql, libmethod, feestart, feestop, " + + "entollstationhex_u, " + + "lastgantryhex_u, curtollgantry_u, lanestatus_u, vehicletype_u, " + + "vehicleusertype_u, enaxlecount_u, mediatype_u, cardtype_u, " + + "payfeesumlocal_u, realfeesumlocal_u,sbjson,resultjson) values ('" + passid + "', " + result + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + temp_feeinfo.getString("enStaHex") + "', '" + map.get("GANTRYHEX").toString() + "', '" + temp_feeinfo.getString("enStaHex") + "', '', '" + map.get("GANTRYHEX").toString() + "', 3, " + temp_feeinfo.getInteger("feeVehicleType") + ", " + temp_feeinfo.getInteger("vehUserType") + ", " + temp_feeinfo.getInteger("enAlxeCount") + ", " + mediaType + ", 23, " + Integer.valueOf(((Map) list.get(i + 1)).get("OBUPROVPAYFEESUMAFTER").toString()) + ", " + Integer.valueOf(((Map) list.get(i + 1)).get("OBUPROVFEESUMAFTER").toString()) + ","+StringToClob(sb_json.toString())+","+StringToClob(result_json)+") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + + map = (Map) list.get(i + 1); + list_temp.add(map); + + } + if (result == 0) { + if (temp_json.getString("tollIntervalIDs").length() > 0) { + +// updateGantryTrade_mass(temp_json.getString("tollIntervalIDs"), +// temp_json.getInt("feeVehicleType"), mediaType, +// ((Map) list.get(i + 1)).get( +// "TRANSTIME").toString()); + + map = (Map) list.get(i + 1); + String this_feeunitid=""; + if (map.get("TOLLINTERVALID")!=null){ + this_feeunitid=map.get("TOLLINTERVALID").toString(); + } + if (this_feeunitid.trim().length()>0){ + Set_Gantry_lib_stat(this_feeunitid,temp_json.getString("tollIntervalIDs"),mediaType,jdbcTemplate); + } + + + + map.put("PAYFEE", GetArrSum(temp_json.getString("payFeeGroup"))); + map.put("FEE", GetArrSum(temp_json.getString("feeGroup"))); + map.put("DISCOUNTFEE", + GetArrSum(temp_json.getString("payFeeGroup")) - GetArrSum(temp_json.getString("feeGroup"))); + map.put("FEEGROUP", temp_json.getString("feeGroup")); + map.put("PAYFEEGROUP", temp_json.getString("payFeeGroup")); + + map.put("TOLLINTERVALID", temp_json.getString("tollIntervalIDs")); + list_temp.add(map); + } else { + map = (Map) list.get(i + 1); + list_temp.add(map); + } + } + } else { + map = (Map) list.get(i + 1); + list_temp.add(map); + } + + } + } + + + } else { + //从入口就一直丢数据,从入口开始补 + String feeinfo_no_in = (((Map) list.get(0)).get("FEEINFO1") == null ? "" : + ((Map) list.get(0)).get("FEEINFO1").toString()) + (((Map) list.get(0)).get( + "FEEINFO2") == null ? "" : ((Map) list.get(0)).get( + "FEEINFO2").toString()) + (((Map) list.get(0)).get("FEEINFO3") == null ? "" : + ((Map) list.get(0)).get("FEEINFO3").toString()); + + JSONObject temp_feeinfo_no_in = JSON.parseObject(feeinfo_no_in); + + SimpleDateFormat sdf_no_in = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date_no_in = sdf_no_in.parse(((Map) list.get(0)).get("TRANSTIME").toString()); + + String FEEPROVBEGINHEX = CommonHelp.GetGantryPassColumsValue(list, "FEEPROVBEGINHEX"); + + boolean FEEPROVBEGINHEX_ishave = false; + sb_json.append("{"); + + if (FEEPROVBEGINHEX.length() > 2) { + if (FEEPROVBEGINHEX.substring(0, 2).equals("16") || FEEPROVBEGINHEX.substring(0, 2).equals("17")) { + JSONArray jsonArray = JSON.parseArray(CommonHelp.GetConfigValue("boundarySta")); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i)); + if (jsonObject.getString("GANTRYHEX").equals(FEEPROVBEGINHEX)) { + FEEPROVBEGINHEX_ishave = true; + sb_json.append("\"enTollStationHex\":\"" + jsonObject.getString("ENSTAHEX") + "\","); + break; + } + } + } + } + if (!FEEPROVBEGINHEX_ishave) { + sb_json.append("\"enTollStationHex\":\"" + temp_feeinfo_no_in.getString("enStaHex") + "\","); + } + + + sb_json.append("\"curTollGantry\":\"" + ((Map) list.get(0)).get("GANTRYID").toString() + "\","); + sb_json.append("\"curPassTime\":\"" + new SimpleDateFormat("yyyy-MM-dd").format(date_no_in) + "T" + new SimpleDateFormat("HH:mm:ss").format(date_no_in) + "\","); + sb_json.append("\"vehicleType\":" + temp_feeinfo_no_in.getInteger("vehType") + ","); + sb_json.append("\"enAxleCount\":" + temp_feeinfo_no_in.getInteger("enAlxeCount") + ","); + sb_json.append("\"totalWeight\":" + totalWeight + ","); + sb_json.append("\"lastGantryHex\":\"\","); + sb_json.append("\"tagType\":" + mediaType + ","); + sb_json.append("\"plateHex\":\"" + plateHex + "\",");//新增传入车牌 + sb_json.append("\"plateColor\":" + plateColor + ",");//新增传入车牌颜色 + sb_json.append("\"payFeeSumLocal\":0,"); + sb_json.append("\"realFeeSumLocal\":0"); + sb_json.append("}"); + + FeeModuleServiceService factory_no_in = new FeeModuleServiceService(); + com.trkf.feemoduleservice.FeeModuleService service_no_in = factory_no_in.getFeeModuleServicePort(); + + String result_json_no_in = service_no_in.getFee(sb_json.toString()); + + sb_json.delete(0, sb_json.length()); + + JSONObject temp_json_no_in = JSON.parseObject(result_json_no_in); + int result_no_in = temp_json_no_in.getInteger("errorCode"); + if (result_no_in != 0) { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = + "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + "')) then into gantry_libfee_result (passid, libresult, gantrysql, libmethod, feestart, feestop, entollstationhex_u, lastgantryhex_u, curtollgantry_u, lanestatus_u, vehicletype_u, vehicleusertype_u, enaxlecount_u, mediatype_u, cardtype_u, payfeesumlocal_u, realfeesumlocal_u,sbjson,resultjson) values ('" + passid + "', " + result_no_in + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + temp_feeinfo_no_in.getString("enStaHex") + "', '" + ((Map) list.get(0)).get("GANTRYHEX").toString() + "', '" + temp_feeinfo_no_in.getString("enStaHex") + "', '', '" + ((Map) list.get(0)).get("GANTRYHEX").toString() + "', 3, " + temp_feeinfo_no_in.getInteger("vehType") + ", " + temp_feeinfo_no_in.getInteger("vehUserType") + ", " + temp_feeinfo_no_in.getInteger("enAlxeCount") + ", " + mediaType + ", 23, " + Integer.valueOf(((Map) list.get(0)).get("OBUPROVPAYFEESUMAFTER").toString()) + ", " + Integer.valueOf(((Map) list.get(0)).get("OBUPROVFEESUMAFTER").toString()) + ","+StringToClob(sb_json.toString())+","+StringToClob(result_json_no_in)+") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + Map map = (Map) list.get(0); + list_temp.add(map); + + } + if (result_no_in == 0) { +// updateGantryTrade_mass(temp_json_no_in.getString("tollIntervalIDs"), temp_feeinfo_no_in +// .getInt( +// "vehType"), mediaType, ((Map) list.get(0)).get("TRANSTIME").toString()); + if (temp_json_no_in.getString("tollIntervalIDs").length() > 0) { + Map map = (Map) list.get(0); + + String this_feeunitid=""; + if (map.get("TOLLINTERVALID")!=null){ + this_feeunitid=map.get("TOLLINTERVALID").toString(); + } + if (this_feeunitid.trim().length()>0){ + Set_Gantry_lib_stat(this_feeunitid,temp_json_no_in.getString("tollIntervalIDs"),mediaType,jdbcTemplate); + } + + + map.put("PAYFEE", GetArrSum(temp_json_no_in.getString("payFeeGroup"))); + map.put("FEE", GetArrSum(temp_json_no_in.getString("feeGroup"))); + map.put("DISCOUNTFEE", + GetArrSum(temp_json_no_in.getString("payFeeGroup")) - GetArrSum(temp_json_no_in.getString("feeGroup"))); + map.put("TOLLINTERVALID", temp_json_no_in.getString("tollIntervalIDs")); + map.put("FEEGROUP", temp_json_no_in.getString("feeGroup")); + map.put("PAYFEEGROUP", temp_json_no_in.getString("payFeeGroup")); + + list_temp.add(map); + + } else { + Map map = (Map) list.get(0); + list_temp.add(map); + } + + } + + for (int i = 0; i < list.size() - 1; i++) { + + if (Integer.valueOf(((Map) list.get(i + 1)).get("OBUPROVTRADESUCCNUMAFTER").toString()) - Integer.valueOf(((Map) list.get(i)).get("OBUPROVTRADESUCCNUMAFTER").toString()) > 1) { + String feeinfo = + (((Map) list.get(i + 1)).get("FEEINFO1") == null ? "" : + ((Map) list.get(i + 1)).get("FEEINFO1").toString()) + (((Map) list.get(i + 1)).get( + "FEEINFO2") == null ? "" : ((Map) list.get(i + 1)).get( + "FEEINFO2").toString()) + (((Map) list.get(i + 1)).get("FEEINFO3") == null ? "" : ((Map) list.get(i + 1)).get("FEEINFO3").toString()); + JSONObject temp_feeinfo = JSON.parseObject(feeinfo); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = sdf.parse(((Map) list.get(i + 1)).get("TRANSTIME").toString()); + + sb_json.append("{"); + sb_json.append("\"enTollStationHex\":\"" + temp_feeinfo.getString("enStaHex") + "\","); + sb_json.append("\"curTollGantry\":\"" + ((Map) list.get(i + 1)).get("GANTRYID").toString() + "\","); + sb_json.append("\"curPassTime\":\"" + new SimpleDateFormat("yyyy-MM-dd").format(date) + + "T" + new SimpleDateFormat("HH:mm:ss").format(date) + "\","); + sb_json.append("\"vehicleType\":" + temp_feeinfo.getInteger("vehType") + ","); + sb_json.append("\"enAxleCount\":" + temp_feeinfo.getInteger("enAlxeCount") + ","); + sb_json.append("\"plateHex\":\"" + plateHex + "\",");//新增传入车牌 + sb_json.append("\"plateColor\":" + plateColor + ",");//新增传入车牌颜色 + sb_json.append("\"lastGantryHex\":\"" + ((Map) list.get(i)).get("GANTRYHEX").toString() + "\","); + //sb_json.Append("\"lastGantryHex\":\"\","); + sb_json.append("\"tagType\":" + mediaType + ","); + if (mediaType == 1) { + sb_json.append("\"payFeeSumLocal\":" + Integer.valueOf((((Map) list.get(i)).get( + "OBUPROVPAYFEESUMAFTER") == null || ((Map) list.get(i)).get( + "OBUPROVPAYFEESUMAFTER").toString().length() == 0) ? "0" : + ((Map) list.get(i)).get("OBUPROVPAYFEESUMAFTER").toString()) + ","); + sb_json.append("\"realFeeSumLocal\":" + Integer.valueOf((((Map) list.get(i)).get( + "OBUPROVFEESUMAFTER") == null || ((Map) list.get(i)).get( + "OBUPROVFEESUMAFTER").toString().length() == 0) ? "0" : + ((Map) list.get(i)).get("OBUPROVFEESUMAFTER").toString())); + } else if (mediaType == 2) { + sb_json.append("\"payFeeSumLocal\":" + Integer.valueOf((((Map) list.get(i)).get( + "FEESUMLOCALAFTER") == null || ((Map) list.get(i)).get( + "FEESUMLOCALAFTER").toString().length() == 0) ? "0" : ((Map) list.get(i)).get( + "FEESUMLOCALAFTER").toString()) + ","); + sb_json.append("\"realFeeSumLocal\":" + Integer.valueOf((((Map) list.get(i)).get( + "FEESPARE1") == null || ((Map) list.get(i)).get( + "FEESPARE1").toString().length() == 0) ? "0" : ((Map) list.get(i)).get( + "FEESPARE1").toString())); + } + + sb_json.append("}"); + + FeeModuleServiceService factory = new FeeModuleServiceService(); + com.trkf.feemoduleservice.FeeModuleService service = factory.getFeeModuleServicePort(); + String result_json = service.getFee(sb_json.toString()); + sb_json.delete(0, sb_json.length()); + JSONObject temp_json = JSON.parseObject(result_json); + + int result = temp_json.getInteger("errorCode"); + + if (result != 0) { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result where " + + "passid='" + passid + "')) then into gantry_libfee_result (passid, " + + "libresult," + + " gantrysql, libmethod, feestart, feestop, entollstationhex_u, " + + "lastgantryhex_u, curtollgantry_u, lanestatus_u, vehicletype_u, " + + "vehicleusertype_u, enaxlecount_u, mediatype_u, cardtype_u, " + + "payfeesumlocal_u," + + " realfeesumlocal_u,sbjson,resultjson) values ('" + passid + "', " + result + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + temp_feeinfo.getString("enStaHex") + "', '" + ((Map) list.get(0)).get("GANTRYHEX").toString() + "', '" + temp_feeinfo.getString("enStaHex") + "', '', '" + ((Map) list.get(0)).get("GANTRYHEX").toString() + "', 3, " + temp_feeinfo.getInteger("vehType") + ", " + temp_feeinfo.getInteger("vehUserType") + ", " + temp_feeinfo.getInteger("enAlxeCount") + ", " + mediaType + ", 23, " + Integer.valueOf(((Map) list.get(0)).get("OBUPROVPAYFEESUMAFTER").toString()) + ", " + Integer.valueOf(((Map) list.get(0)).get("OBUPROVFEESUMAFTER").toString()) + ","+StringToClob(sb_json.toString())+","+StringToClob(result_json)+") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + Map map = (Map) list.get(i + 1); + list_temp.add(map); + + } + if (result == 0) { + if (temp_json.getString("tollIntervalIDs").length() > 0) { +// updateGantryTrade_mass(temp_json.getString("tollIntervalIDs"), temp_feeinfo +// .getInt( +// "vehType"), mediaType, +// ((Map) list.get(i + 1)).get("TRANSTIME").toString()); + Map map = (Map) list.get(i + 1); + + String this_feeunitid=""; + if (map.get("TOLLINTERVALID")!=null){ + this_feeunitid=map.get("TOLLINTERVALID").toString(); + } + if (this_feeunitid.trim().length()>0){ + Set_Gantry_lib_stat(this_feeunitid,temp_json.getString("tollIntervalIDs"),mediaType,jdbcTemplate); + } + + map.put("PAYFEE", GetArrSum(temp_json.getString("payFeeGroup"))); + map.put("FEE", GetArrSum(temp_json.getString("feeGroup"))); + map.put("DISCOUNTFEE", + GetArrSum(temp_json.getString("payFeeGroup")) - GetArrSum(temp_json.getString("feeGroup"))); + map.put("TOLLINTERVALID", temp_json.getString("tollIntervalIDs")); + map.put("FEEGROUP", temp_json.getString("feeGroup")); + map.put("PAYFEEGROUP", temp_json.getString("payFeeGroup")); + + list_temp.add(map); + } else { + Map map = (Map) list.get(i + 1); + list_temp.add(map); + } + } + + } else { + Map map = (Map) list.get(i + 1); + list_temp.add(map); + } + + } + + + } + + + return list_temp; + + + } catch (Exception e) { + + LogClass.error("常规补费错误信息:" + e.toString() + "--PASSID:" + passid); + return list; + } + + } else { + return list; + } + + + } + + + //补最后出口到门架之间的信息 + public static List lastGantryToOut(List list, String enTollStationHex, String curTollGantry, String curPassTime, + int vehicleType, + int enaxlecount, int userType, String gantryId, String gantryName, + int mediaType, int obuprovpayfeesumafter, int obuprovfeesumafter, + String sql_gantry_pass, String passid, int totalWeight, JdbcTemplate jdbcTemplate,String vehicleid) { + try { + String[] temp_vehicleid=vehicleid.split("_"); + String plateHex=""; + String plateColor=""; + if (temp_vehicleid.length>1){ + plateHex=numberAfterFillZero(str2HexStr(temp_vehicleid[0]),25) ; + plateColor=temp_vehicleid[1]; + } + else { + plateHex=numberAfterFillZero(str2HexStr("蒙X00000"),25) ; + plateColor="9"; + } + + + String result_fee = ""; + StringBuilder sb_json = new StringBuilder(); + sb_json.append("{"); + sb_json.append("\"curTollGantry\":\"" + curTollGantry + "\","); + sb_json.append("\"curPassTime\":\"" + curPassTime + "\","); + sb_json.append("\"vehicleType\":" + vehicleType + ","); + sb_json.append("\"lastGantryHex\":\"" + enTollStationHex + "\","); + sb_json.append("\"enTollStationHex\":\"\","); + sb_json.append("\"enAxleCount\":" + enaxlecount + ","); + sb_json.append("\"payFeeSumLocal\":" + obuprovpayfeesumafter + ","); + sb_json.append("\"realFeeSumLocal\":" + obuprovfeesumafter + ","); + sb_json.append("\"plateHex\":\"" + plateHex + "\",");//新增传入车牌 + sb_json.append("\"plateColor\":" + plateColor + ",");//新增传入车牌颜色 + sb_json.append("\"totalWeight\":" + totalWeight + ","); + sb_json.append("\"tagType\":" + mediaType); + sb_json.append("}"); + FeeModuleServiceService factory = new FeeModuleServiceService(); + com.trkf.feemoduleservice.FeeModuleService service = factory.getFeeModuleServicePort(); + + String result_json = service.getStaFee(sb_json.toString()); + + JSONObject temp_json = JSON.parseObject(result_json); + + int result = temp_json.getInteger("errorCode"); + if (result != 0) { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + + "')) " + + "then into gantry_libfee_result (passid, libresult, gantrysql, libmethod, feestart, " + + "feestop, " + + "entollstationhex_u, lastgantryhex_u, curtollgantry_u, lanestatus_u, vehicletype_u, " + + "vehicleusertype_u, enaxlecount_u, mediatype_u, cardtype_u, payfeesumlocal_u, " + + "realfeesumlocal_u,sbjson,resultjson) values ('" + passid + "', " + result + ", " + StringToClob(sql_gantry_pass) + ",'getStaFee', '" + enTollStationHex + "', '" + curTollGantry + "', '" + enTollStationHex + "', '" + enTollStationHex + "', '" + curTollGantry + "', 3, " + vehicleType + ", " + userType + ", " + enaxlecount + ", " + mediaType + ", 23, " + obuprovpayfeesumafter + ", " + obuprovfeesumafter + ","+StringToClob(sb_json.toString())+","+StringToClob(result_json)+") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + } + + int maxIndex = list.size() - 1; + if (result == 0) { + if (temp_json.getString("tollIntervalIDs").length() > 0) { +// updateGantryTrade_mass(temp_json.getString("tollIntervalIDs"), vehicleType, mediaType, +// ((Map) list.get(maxIndex)).get("TRANSTIME").toString()); + + Map map = (Map) list.get(maxIndex); + String payFeeGroup_u = temp_json.getString("payFeeGroup"); + String feeGroup_u = temp_json.getString("feeGroup"); + String tollIntervalIDs_u = temp_json.getString("tollIntervalIDs"); + + String this_feeunitid=""; + if (map.get("TOLLINTERVALID")!=null){ + this_feeunitid=map.get("TOLLINTERVALID").toString(); + } + if (this_feeunitid.trim().length()>0){ + Set_Gantry_lib_stat(this_feeunitid,temp_json.getString("tollIntervalIDs"),mediaType,jdbcTemplate); + } + + + map.put("PAYFEE", GetArrSum(temp_json.getString("payFeeGroup"))); + map.put("FEE", GetArrSum(temp_json.getString("feeGroup"))); + map.put("DISCOUNTFEE", + GetArrSum(temp_json.getString("payFeeGroup")) - GetArrSum(temp_json.getString("feeGroup"))); + map.put("TOLLINTERVALID", temp_json.getString("tollIntervalIDs")); + map.put("FEEGROUP", temp_json.getString("feeGroup")); + map.put("PAYFEEGROUP", temp_json.getString("payFeeGroup")); + + list.set(maxIndex, map); + + } + } + return list; + + + } catch (Exception e) { + + LogClass.error("最后门架到出口补费错误,PASSID:" + passid + ",错误信息:" + e.toString()); + return list; + } + } + + //补就一条出口门架的数据 + public static List firstGantryToOut(List list, String enTollStationHex, String curTollGantry, String curPassTime, + int vehicleType, + int enaxlecount, int userType, int mediaType, int obuprovpayfeesumafter, + int obuprovfeesumafter, String gantryId, String gantryName, + String sql_gantry_pass, String passid, String FEEPROVBEGINHEX, int totalWeight, JdbcTemplate jdbcTemplate, List list_GANTRY_TABLE, String lastGantryHex,String vehicleid) throws Exception { + try { + + + String[] temp_vehicleid=vehicleid.split("_"); + String plateHex=""; + String plateColor=""; + if (temp_vehicleid.length>1){ + plateHex=numberAfterFillZero(str2HexStr(temp_vehicleid[0]),25) ; + plateColor=temp_vehicleid[1]; + } + else { + plateHex=numberAfterFillZero(str2HexStr("蒙X00000"),25) ; + plateColor="9"; + } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String vehicleplate = ((Map) list.get(0)).get("VEHICLEPLATE").toString(); + String startTime = sdf.format(sdf.parse(((Map) list.get(0)).get("ENTIME").toString())); + String endTime = sdf.format(sdf.parse(((Map) list.get(list.size() - 1)).get("TRANSTIME").toString())); + + FeeModuleServiceService factory = new FeeModuleServiceService(); + com.trkf.feemoduleservice.FeeModuleService service = factory.getFeeModuleServicePort(); + + String result_fee = ""; + + + String sql_gantry_plate_pass = "select * from(select row_number() over(partition by a.gantryhex order by rownum) as rn, a.* from gantry_plate_pass_temp a where pictime>=to_date('" + startTime + "','yyyy-mm-dd hh24:mi:ss') and pictime<=to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss') and vehicleplate='" + vehicleplate + "') t where t.rn=1 order by pictime"; + + if (enTollStationHex.substring(0, 2).equals("15")) {//本省,直接用入口补费 + StringBuilder sb_json = new StringBuilder(); + sb_json.append("{"); + sb_json.append("\"curTollGantry\":\"" + curTollGantry + "\","); + sb_json.append("\"curPassTime\":\"" + curPassTime + "\","); + sb_json.append("\"vehicleType\":" + vehicleType + ","); + sb_json.append("\"lastGantryHex\":\"\","); + sb_json.append("\"enTollStationHex\":\"" + enTollStationHex + "\","); + sb_json.append("\"enAxleCount\":" + enaxlecount + ","); + sb_json.append("\"payFeeSumLocal\":" + obuprovpayfeesumafter + ","); + sb_json.append("\"realFeeSumLocal\":" + obuprovfeesumafter + ","); + sb_json.append("\"plateHex\":\"" + plateHex + "\",");//新增传入车牌 + sb_json.append("\"plateColor\":" + plateColor + ",");//新增传入车牌颜色 + sb_json.append("\"totalWeight\":" + totalWeight + ","); + sb_json.append("\"tagType\":" + mediaType); + sb_json.append("}"); + + + String result_json = service.getFee(sb_json.toString()); + JSONObject temp_json = JSON.parseObject(result_json); + + int result = Integer.valueOf(temp_json.getInteger("errorCode")); + if (result == 0) { + if (temp_json.getString("tollIntervalIDs").replaceAll(" ", "").length() > 0) { + Map map = (Map) list.get(0); + + String this_feeunitid=""; + if (map.get("TOLLINTERVALID")!=null){ + this_feeunitid=map.get("TOLLINTERVALID").toString(); + } + if (this_feeunitid.trim().length()>0){ + Set_Gantry_lib_stat(this_feeunitid,temp_json.getString("tollIntervalIDs"),mediaType,jdbcTemplate); + } + + + map.put("PAYFEE", GetArrSum(temp_json.getString("payFeeGroup"))); + map.put("FEE", GetArrSum(temp_json.getString("feeGroup"))); + map.put("DISCOUNTFEE", + GetArrSum(temp_json.getString("payFeeGroup")) - GetArrSum(temp_json.getString("feeGroup"))); + map.put("TOLLINTERVALID", temp_json.getString("tollIntervalIDs")); + map.put("FEEGROUP", temp_json.getString("feeGroup")); + map.put("PAYFEEGROUP", temp_json.getString("payFeeGroup")); + list.set(0, map); + } + } else { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + + "')) then into gantry_libfee_result (passid, libresult, " + + "gantrysql, libmethod, feestart, feestop, entollstationhex_u, lastgantryhex_u, " + + "curtollgantry_u, lanestatus_u, vehicletype_u, vehicleusertype_u, enaxlecount_u, " + + "mediatype_u," + + " cardtype_u, payfeesumlocal_u, realfeesumlocal_u,sbjson,resultjson) values " + + " " + + " ('" + passid + "', " + result + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + enTollStationHex + "', '" + curTollGantry + "', '" + enTollStationHex + "', '', '" + curTollGantry + "', 3, " + vehicleType + ", " + userType + ", " + enaxlecount + ", " + mediaType + ", 23, " + obuprovpayfeesumafter + ", " + obuprovfeesumafter + ","+StringToClob(sb_json.toString())+","+StringToClob(result_json)+") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + } + + } else {//跨省,分为两种情况,一种知道省界门架,一种不知道省界门架 + if (FEEPROVBEGINHEX.length() < 6 || (!FEEPROVBEGINHEX.substring(0, 2).equals("16") && !FEEPROVBEGINHEX.substring(0, 2).equals("17"))) {//不知道省界门架 + List list_gantry_plate = jdbcTemplate.queryForList(sql_gantry_plate_pass); + if (list_gantry_plate.size() > 0) { + Map map = (Map) list_gantry_plate.get(0); + String gantryHex = map.get("GANTRYHEX").toString().toUpperCase(); + if (gantryHex.substring(0, 2).equals("16") || gantryHex.substring(0, 2).equals("17")) { + JSONArray jsonArray = JSON.parseArray(CommonHelp.GetConfigValue("boundarySta")); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i)); + if (jsonObject.getString("GANTRYHEX").equals(gantryHex)) { + enTollStationHex = jsonObject.getString("ENSTAHEX"); + FEEPROVBEGINHEX = gantryHex; + break; + } + } + } + } + } + + + if (FEEPROVBEGINHEX.length() > 2 && (FEEPROVBEGINHEX.substring(0, 2).equals("16") || FEEPROVBEGINHEX.substring(0, 2).equals("17"))) {//明确省界 + String curTollGantry_1 = getGantryIDByGantryHex(FEEPROVBEGINHEX, list_GANTRY_TABLE); + JSONArray jsonArray = JSON.parseArray(CommonHelp.GetConfigValue("boundarySta")); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i)); + if (jsonObject.getString("GANTRYHEX").equals(FEEPROVBEGINHEX)) { + enTollStationHex = jsonObject.getString("ENSTAHEX"); + break; + } + } + StringBuilder sb_json_1 = new StringBuilder(); + sb_json_1.append("{"); + sb_json_1.append("\"enTollStationHex\":\"" + enTollStationHex + "\","); + sb_json_1.append("\"curTollGantry\":\"" + curTollGantry_1 + "\","); + sb_json_1.append("\"curPassTime\":\"" + curPassTime + "\","); + sb_json_1.append("\"vehicleType\":" + vehicleType + ","); + sb_json_1.append("\"enAxleCount\":" + enaxlecount + ","); + sb_json_1.append("\"totalWeight\":" + totalWeight + ","); + sb_json_1.append("\"plateHex\":\"" + plateHex + "\",");//新增传入车牌 + sb_json_1.append("\"plateColor\":" + plateColor + ",");//新增传入车牌颜色 + sb_json_1.append("\"lastGantryHex\":\"\","); + //sb_json.Append("\"lastGantryHex\":\"\","); + sb_json_1.append("\"tagType\":" + mediaType + ","); + if (mediaType == 1) { + sb_json_1.append("\"payFeeSumLocal\":0,"); + sb_json_1.append("\"realFeeSumLocal\":0"); + } else if (mediaType == 2) { + sb_json_1.append("\"payFeeSumLocal\":0,"); + sb_json_1.append("\"realFeeSumLocal\":0"); + + } + + sb_json_1.append("}"); + + String result_json_1 = service.getFee(sb_json_1.toString()); + JSONObject temp_json_1 = JSON.parseObject(result_json_1); + + int result_1 = Integer.valueOf(temp_json_1.getInteger("errorCode")); + String feegroup_1 = ""; + String payfeegroup_1 = ""; + String tollintervalid_1 = ""; + + if (result_1 == 0) { + if (temp_json_1.getString("tollIntervalIDs").replaceAll(" ", "").length() > 0) { + feegroup_1 = temp_json_1.getString("feeGroup"); + payfeegroup_1 = temp_json_1.getString("payFeeGroup"); + tollintervalid_1 = temp_json_1.getString("tollIntervalIDs"); + } + } else { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + + "')) then into gantry_libfee_result (passid, libresult, " + + "gantrysql, libmethod, feestart, feestop, entollstationhex_u, lastgantryhex_u, " + + "curtollgantry_u, lanestatus_u, vehicletype_u, vehicleusertype_u, enaxlecount_u, " + + "mediatype_u," + + " cardtype_u, payfeesumlocal_u, realfeesumlocal_u,sbjson,resultjson) values " + + " " + + " ('" + passid + "', " + result_1 + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + enTollStationHex + "', '" + curTollGantry + "', '" + enTollStationHex + "', '', '" + curTollGantry + "', 3, " + vehicleType + ", " + userType + ", " + enaxlecount + ", " + mediaType + ", 23, " + obuprovpayfeesumafter + ", " + obuprovfeesumafter + ","+StringToClob(sb_json_1.toString())+","+StringToClob(result_json_1)+") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + } + + StringBuilder sb_json_2 = new StringBuilder(); + + sb_json_2.append("{"); + sb_json_2.append("\"enTollStationHex\":\"" + enTollStationHex + "\","); + sb_json_2.append("\"curTollGantry\":\"" + curTollGantry + "\","); + sb_json_2.append("\"curPassTime\":\"" + curPassTime + "\","); + sb_json_2.append("\"vehicleType\":" + vehicleType + ","); + sb_json_2.append("\"enAxleCount\":" + enaxlecount + ","); + sb_json_2.append("\"totalWeight\":" + totalWeight + ","); + sb_json_2.append("\"plateHex\":\"" + plateHex + "\",");//新增传入车牌 + sb_json_2.append("\"plateColor\":" + plateColor + ",");//新增传入车牌颜色 + sb_json_2.append("\"lastGantryHex\":\"" + FEEPROVBEGINHEX + "\","); + //sb_json.Append("\"lastGantryHex\":\"\","); + sb_json_2.append("\"tagType\":" + mediaType + ","); + if (mediaType == 1) { + sb_json_2.append("\"payFeeSumLocal\":" + GetArrSum(payfeegroup_1) + ","); + sb_json_2.append("\"realFeeSumLocal\":" + GetArrSum(feegroup_1) + ""); + } else if (mediaType == 2) { + sb_json_2.append("\"payFeeSumLocal\":" + GetArrSum(payfeegroup_1) + ","); + sb_json_2.append("\"realFeeSumLocal\":" + GetArrSum(feegroup_1) + ""); + + } + + sb_json_2.append("}"); + + String result_json_2 = service.getFee(sb_json_2.toString()); + JSONObject temp_json_2 = JSON.parseObject(result_json_2); + int result_2 = Integer.valueOf(temp_json_2.getInteger("errorCode")); + String feegroup_2 = ""; + String payfeegroup_2 = ""; + String tollintervalid_2 = ""; + + if (result_2 == 0) { + if (temp_json_2.getString("tollIntervalIDs").replaceAll(" ", "").length() > 0) { + feegroup_2 = temp_json_2.getString("feeGroup"); + payfeegroup_2 = temp_json_2.getString("payFeeGroup"); + tollintervalid_2 = temp_json_2.getString("tollIntervalIDs"); + } + } else { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + + "')) then into gantry_libfee_result (passid, libresult, " + + "gantrysql, libmethod, feestart, feestop, entollstationhex_u, lastgantryhex_u, " + + "curtollgantry_u, lanestatus_u, vehicletype_u, vehicleusertype_u, enaxlecount_u, " + + "mediatype_u," + + " cardtype_u, payfeesumlocal_u, realfeesumlocal_u,sbjson,resultjson) values " + + " " + + " ('" + passid + "', " + result_2 + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + enTollStationHex + "', '" + curTollGantry + "', '" + enTollStationHex + "', '', '" + curTollGantry + "', 3, " + vehicleType + ", " + userType + ", " + enaxlecount + ", " + mediaType + ", 23, " + obuprovpayfeesumafter + ", " + obuprovfeesumafter + ","+StringToClob(sb_json_2.toString())+","+StringToClob(result_json_2)+") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + } + String tollintervalid = ""; + String payfeegroup = ""; + String feegroup = ""; + if (tollintervalid_1.replaceAll(" ", "").length() > 0 && tollintervalid_2.replaceAll(" ", "").length() > 0) { + + tollintervalid = tollintervalid_1 + "|" + tollintervalid_2; + payfeegroup = payfeegroup_1 + "|" + payfeegroup_2; + feegroup = feegroup_1 + "|" + feegroup_2; + + + } else if (tollintervalid_1.replaceAll(" ", "").length() > 0 && tollintervalid_2.replaceAll(" ", "").length() == 0) { + tollintervalid = tollintervalid_1; + payfeegroup = payfeegroup_1; + feegroup = feegroup_1; + } else if (tollintervalid_1.replaceAll(" ", "").length() == 0 && tollintervalid_2.replaceAll(" ", "").length() > 0) { + tollintervalid = tollintervalid_2; + payfeegroup = payfeegroup_2; + feegroup = feegroup_2; + } + if (result_1 == 0 || result_2 == 0) { + Map map = (Map) list.get(0); + + String this_feeunitid=""; + if (map.get("TOLLINTERVALID")!=null){ + this_feeunitid=map.get("TOLLINTERVALID").toString(); + } + if (this_feeunitid.trim().length()>0){ + Set_Gantry_lib_stat(this_feeunitid,tollintervalid,mediaType,jdbcTemplate); + } + + map.put("PAYFEE", GetArrSum(payfeegroup)); + map.put("FEE", GetArrSum(feegroup)); + map.put("DISCOUNTFEE", + GetArrSum(payfeegroup) - GetArrSum(feegroup)); + map.put("TOLLINTERVALID", tollintervalid); + map.put("FEEGROUP", feegroup); + map.put("PAYFEEGROUP", payfeegroup); + list.set(0, map); + } + } else {//跨省不明确省界门架,通过抓拍也无法确定时 + if (lastGantryHex.trim().length() > 0) {//lastGantryHex有空格的数据 + if (lastGantryHex.substring(0, 2).equals("14") || + lastGantryHex.substring(0, 2).equals("15") || + lastGantryHex.substring(0, 2).equals("16") || + lastGantryHex.substring(0, 2).equals("17")) { + lastGantryHex = ""; + } + } + + StringBuilder sb_json = new StringBuilder(); + sb_json.append("{"); + sb_json.append("\"curTollGantry\":\"" + curTollGantry + "\","); + sb_json.append("\"curPassTime\":\"" + curPassTime + "\","); + sb_json.append("\"vehicleType\":" + vehicleType + ","); + sb_json.append("\"lastGantryHex\":\"" + lastGantryHex + "\","); + sb_json.append("\"enTollStationHex\":\"" + enTollStationHex + "\","); + sb_json.append("\"enAxleCount\":" + enaxlecount + ","); + sb_json.append("\"payFeeSumLocal\":" + obuprovpayfeesumafter + ","); + sb_json.append("\"realFeeSumLocal\":" + obuprovfeesumafter + ","); + sb_json.append("\"totalWeight\":" + totalWeight + ","); + sb_json.append("\"plateHex\":\"" + plateHex + "\",");//新增传入车牌 + sb_json.append("\"plateColor\":" + plateColor + ",");//新增传入车牌颜色 + sb_json.append("\"tagType\":" + mediaType); + sb_json.append("}"); + + String result_json = service.getFee(sb_json.toString()); + JSONObject temp_json = JSON.parseObject(result_json); + + int result = Integer.valueOf(temp_json.getInteger("errorCode")); + if (result == 0) { + if (temp_json.getString("tollIntervalIDs").replaceAll(" ", "").length() > 0) { + Map map = (Map) list.get(0); + + String this_feeunitid=""; + if (map.get("TOLLINTERVALID")!=null){ + this_feeunitid=map.get("TOLLINTERVALID").toString(); + } + if (this_feeunitid.trim().length()>0){ + Set_Gantry_lib_stat(this_feeunitid,temp_json.getString("tollIntervalIDs"),mediaType,jdbcTemplate); + } + + map.put("PAYFEE", GetArrSum(temp_json.getString("payFeeGroup"))); + map.put("FEE", GetArrSum(temp_json.getString("feeGroup"))); + map.put("DISCOUNTFEE", + GetArrSum(temp_json.getString("payFeeGroup")) - GetArrSum(temp_json.getString("feeGroup"))); + map.put("TOLLINTERVALID", temp_json.getString("tollIntervalIDs")); + map.put("FEEGROUP", temp_json.getString("feeGroup")); + map.put("PAYFEEGROUP", temp_json.getString("payFeeGroup")); + list.set(0, map); + } + } else { + String dbType = CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replace("'", "''"); + String sql = "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + + "')) then into gantry_libfee_result (passid, libresult, " + + "gantrysql, libmethod, feestart, feestop, entollstationhex_u, lastgantryhex_u, " + + "curtollgantry_u, lanestatus_u, vehicletype_u, vehicleusertype_u, enaxlecount_u, " + + "mediatype_u," + + " cardtype_u, payfeesumlocal_u, realfeesumlocal_u,sbjson,resultjson) values " + + " " + + " ('" + passid + "', " + result + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + enTollStationHex + "', '" + curTollGantry + "', '" + enTollStationHex + "', '', '" + curTollGantry + "', 3, " + vehicleType + ", " + userType + ", " + enaxlecount + ", " + mediaType + ", 23, " + obuprovpayfeesumafter + ", " + obuprovfeesumafter + ","+StringToClob(sb_json.toString())+","+StringToClob(result_json)+") select 1 from dual"; + //excuteSql(sql); + //new DBUtil().update(sql); + jdbcTemplate.update(sql); + } + } + + } + + + } + +// if (enTollStationHex != null && enTollStationHex.length() > 2) { +// if (!enTollStationHex.substring(0, 2).equals("15")) {//跨省 +// if (FEEPROVBEGINHEX.length() > 2) { +// if (FEEPROVBEGINHEX.substring(0, 2).equals("16") || FEEPROVBEGINHEX.substring(0, 2).equals("17")) {//知道省界 +// JSONArray jsonArray = JSON.parseArray(CommonHelp.GetConfigValue("boundarySta")); +// for (int i = 0; i < jsonArray.size(); i++) { +// JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i)); +// if (jsonObject.getString("GANTRYHEX").equals(FEEPROVBEGINHEX)) { +// enTollStationHex = jsonObject.getString("ENSTAHEX"); +// break; +// } +// } +// } else {//不知道省界 +// +// List list_gantry_plate = jdbcTemplate.queryForList(sql_gantry_plate_pass); +// if (list_gantry_plate.size() > 0) { +// Map map = (Map) list_gantry_plate.get(0); +// String gantryHex = map.get("GANTRYHEX").toString().toUpperCase(); +// if (gantryHex.substring(0, 2).equals("16") || gantryHex.substring(0, 2).equals("17")) { +// JSONArray jsonArray = JSON.parseArray(CommonHelp.GetConfigValue("boundarySta")); +// for (int i = 0; i < jsonArray.size(); i++) { +// JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i)); +// if (jsonObject.getString("GANTRYHEX").equals(gantryHex)) { +// enTollStationHex = jsonObject.getString("ENSTAHEX"); +// FEEPROVBEGINHEX = gantryHex; +// break; +// } +// } +// } +// } +// } +// } else {//不知道省界 +// +// List list_gantry_plate = jdbcTemplate.queryForList(sql_gantry_plate_pass); +// if (list_gantry_plate.size() > 0) { +// Map map = (Map) list_gantry_plate.get(0); +// String gantryHex = map.get("GANTRYHEX").toString().toUpperCase(); +// if (gantryHex.substring(0, 2).equals("16") || gantryHex.substring(0, 2).equals("17")) { +// JSONArray jsonArray = JSON.parseArray(CommonHelp.GetConfigValue("boundarySta")); +// for (int i = 0; i < jsonArray.size(); i++) { +// JSONObject jsonObject = JSON.parseObject(jsonArray.getString(i)); +// if (jsonObject.getString("GANTRYHEX").equals(gantryHex)) { +// enTollStationHex = jsonObject.getString("ENSTAHEX"); +// FEEPROVBEGINHEX = gantryHex; +// break; +// } +// } +// } +// } +// } +// } +// } + + +// if (FEEPROVBEGINHEX.length() == 6 && (FEEPROVBEGINHEX.substring(0, 2).equals("16") || FEEPROVBEGINHEX.substring(0, 2).equals("17"))) { +// +// sb_json.append("{"); +// sb_json.append("\"enTollStationHex\":\"" + enTollStationHex + "\","); +// sb_json.append("\"curTollGantry\":\"" + curTollGantry + "\","); +// sb_json.append("\"curPassTime\":\"" + curPassTime + "\","); +// sb_json.append("\"vehicleType\":" + vehicleType + ","); +// sb_json.append("\"enAxleCount\":" + enaxlecount + ","); +// sb_json.append("\"totalWeight\":" + totalWeight + ","); +// sb_json.append("\"lastGantryHex\":\"" + FEEPROVBEGINHEX + "\","); +// //sb_json.Append("\"lastGantryHex\":\"\","); +// sb_json.append("\"tagType\":" + mediaType + ","); +// if (mediaType == 1) { +// sb_json.append("\"payFeeSumLocal\"0,"); +// sb_json.append("\"realFeeSumLocal\":0"); +// } else if (mediaType == 2) { +// sb_json.append("\"payFeeSumLocal\":0,"); +// sb_json.append("\"realFeeSumLocal\":0"); +// +// } +// +// sb_json.append("}"); +// +// } else { +// sb_json.append("{"); +// sb_json.append("\"curTollGantry\":\"" + curTollGantry + "\","); +// sb_json.append("\"curPassTime\":\"" + curPassTime + "\","); +// sb_json.append("\"vehicleType\":" + vehicleType + ","); +// sb_json.append("\"lastGantryHex\":\"\","); +// sb_json.append("\"enTollStationHex\":\"" + enTollStationHex + "\","); +// sb_json.append("\"enAxleCount\":" + enaxlecount + ","); +// sb_json.append("\"payFeeSumLocal\":" + obuprovpayfeesumafter + ","); +// sb_json.append("\"realFeeSumLocal\":" + obuprovfeesumafter + ","); +// sb_json.append("\"totalWeight\":" + totalWeight + ","); +// sb_json.append("\"tagType\":" + mediaType); +// sb_json.append("}"); +// +// } +// +// +// FeeModuleServiceService factory = new FeeModuleServiceService(); +// com.trkf.feemoduleservice.FeeModuleService service = factory.getFeeModuleServicePort(); +// String result_json = service.getFee(sb_json.toString()); +// JSONObject temp_json = JSON.parseObject(result_json); +// +// int result = Integer.valueOf(temp_json.getInteger("errorCode")); +// if (result == 0) { +// if (temp_json.getString("tollIntervalIDs").replaceAll(" ", "").length() > 0) { +// Map map = (Map) list.get(0); +// map.put("PAYFEE", GetArrSum(temp_json.getString("payFeeGroup"))); +// map.put("FEE", GetArrSum(temp_json.getString("feeGroup"))); +// map.put("DISCOUNTFEE", +// GetArrSum(temp_json.getString("payFeeGroup")) - GetArrSum(temp_json.getString("feeGroup"))); +// map.put("TOLLINTERVALID", temp_json.getString("tollIntervalIDs")); +// map.put("FEEGROUP", temp_json.getString("feeGroup")); +// map.put("PAYFEEGROUP", temp_json.getString("payFeeGroup")); +// list.set(0, map); +// } +// } else { +// String dbType = CommonHelp.GetConfigValue("DbType"); +// if (dbType.equals("1")) { +// sql_gantry_pass = sql_gantry_pass.replace("'", "''"); +// String sql = "insert when (not exists (select 1 from gantry_libfee_result where passid='" + passid + +// "')) then into gantry_libfee_result (passid, libresult, " + +// "gantrysql, libmethod, feestart, feestop, entollstationhex_u, lastgantryhex_u, " + +// "curtollgantry_u, lanestatus_u, vehicletype_u, vehicleusertype_u, enaxlecount_u, " + +// "mediatype_u," + +// " cardtype_u, payfeesumlocal_u, realfeesumlocal_u) values " + +// " " + +// " ('" + passid + "', " + result + ", " + StringToClob(sql_gantry_pass) + ", 'getFee', '" + enTollStationHex + "', '" + curTollGantry + "', '" + enTollStationHex + "', '', '" + curTollGantry + "', 3, " + vehicleType + ", " + userType + ", " + enaxlecount + ", " + mediaType + ", 23, " + obuprovpayfeesumafter + ", " + obuprovfeesumafter + ") select 1 from dual"; +// //excuteSql(sql); +// //new DBUtil().update(sql); +// jdbcTemplate.update(sql); +// } +// } + return list; + } catch (Exception e) { + LogClass.error("只有出口补费出错,passid:" + passid + "错误信息:" + e.toString()); + return list; + } + + } + + +} diff --git a/src/GPA/DBUtil.java b/src/GPA/DBUtil.java new file mode 100644 index 0000000..6117d52 --- /dev/null +++ b/src/GPA/DBUtil.java @@ -0,0 +1,58 @@ +package GPA; + +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; + +import javax.sql.DataSource; +import java.io.InputStream; +import java.sql.*; +import java.time.OffsetDateTime; +import java.util.Properties; + +public class DBUtil { + + + public DataSource Hikar_DataSource() throws Exception {//这个是今天改的 + HikariConfig config=new HikariConfig(); + try { + String dbType=CommonHelp.GetConfigValue("DbType"); + if (dbType.equals("1")){ + + config.setDriverClassName("oracle.jdbc.driver.OracleDriver"); + config.setJdbcUrl("jdbc:oracle:thin:@//10.15.100.5:1521/torcl"); + config.setUsername("nmgmpayadmin"); + config.setPoolName("100.5mpay"); + config.setPassword("nmgh90[]"); + config.addDataSourceProperty("v$session.osuser","DL"); + config.addDataSourceProperty("v$session.machine","10.15.99.66"); + config.addDataSourceProperty("v$session.program","gantry_pass_all"); + + config.setMaximumPoolSize(36); + config.setMinimumIdle(8); + config.setConnectionTestQuery("select 1 from dual"); + config.setAutoCommit(true); + } + else if (dbType.equals("2")){ + config.setDriverClassName("dm.jdbc.driver.DmDriver"); + config.setJdbcUrl(CommonHelp.GetConfigValue("JDBCDM_url")); + config.setUsername(CommonHelp.GetConfigValue("JDBCDM_user")); + config.setPassword(CommonHelp.GetConfigValue("JDBCDM_password")); + config.setPoolName("GT"); + config.setMaximumPoolSize(32); + config.setMinimumIdle(16); + config.setConnectionTestQuery("select 1 from dual"); + config.setAutoCommit(true); + } + + + } + catch (Exception e){ + System.out.println("连接池错误:"+e.toString()); + } + DataSource ds=new HikariDataSource(config); + + return ds; + } + + +} diff --git a/src/GPA/GAMIN.java b/src/GPA/GAMIN.java new file mode 100644 index 0000000..7abdc19 --- /dev/null +++ b/src/GPA/GAMIN.java @@ -0,0 +1,212 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class GAMIN { + public static void main(String[] args) throws Exception { + + List list=new startGPA().startUp(); + } + + private List Main_void(String dbType) throws Exception { + boolean flag=true; + List stop_list=new ArrayList<>(); + List state_list=new ArrayList<>(); + boolean runAble=true; + startGPA s=new startGPA(); + stop_list.clear(); + try { + JdbcTemplate jdbcTemplate=new JdbcTemplate(new DBUtil().Hikar_DataSource()); + + List list_PARTICIPANT = CommonHelp.getListBySql("select * from TB_PARTICIPANT",jdbcTemplate); + + List list_LINE_TABLE=CommonHelp.getListBySql("select LINENAME,GBLINEID from line_table",jdbcTemplate); + + List list_FEEUNIT_TABLE=CommonHelp.getListBySql("select ID,NAME FROM FEEUNIT_TABLE",jdbcTemplate); + + List list_GANTRY_TABLE=CommonHelp.getListBySql("select * from gantry_table",jdbcTemplate); + + int GPA_THREAD_COUNT_1=7; + //正常数据处理线程,4个 + + if (dbType.equals("1")) {//oracle + for (int i = 0; i < GPA_THREAD_COUNT_1; i++) { + String sql="select * from gantry_pass_center where ishandle=0 and isout=1 and issecond=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut") + " and ora_hash(passid,"+(GPA_THREAD_COUNT_1-1)+")="+i+" order by transtime"; + + Thread thread=new GetAllData((i+11),0,sql,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + } else if (dbType.equals("2")) {//DM + for (int i = 0; i < GPA_THREAD_COUNT_1; i++) { + String sql="select * from gantry_pass_center where ishandle=0 and isout=1 and issecond=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut") + " and DM_HASH(passid)%"+GPA_THREAD_COUNT_1+"="+i+" and rownum<=1500"; + + Thread thread=new GetAllData((i+11),0,sql,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + } + //超时数据处理线程,3个 + + if (dbType.equals("1")) {//oracle + //超时第一种情况--有出口但是累计金额不相等的 + + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" order by transtime"; + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" order by transtime"; + + + List> listTemp=new ArrayList<>(); + + String sql2_1_1 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and payfee_all>0 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where rownum<=1000"; + Map map=new HashMap(); + map.put("sql",sql2_1_1); + map.put("threadid",201); + listTemp.add(map); + + String sql2_1_2 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and payfee_all=0 and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where rownum<=1000"; + Map map_1_2=new HashMap(); + map_1_2.put("sql",sql2_1_2); + map_1_2.put("threadid",202); + listTemp.add(map_1_2); + + + +// for (int i = 0; i <= 6; i++) { +// //String sql2_1_1 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)="+i; +// String sql2_1_1 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)="+i; +// Map map=new HashMap(); +// map.put("sql",sql2_1_1); +// map.put("threadid",20+i+1); +// listTemp.add(map); +// } + Map map1=new HashMap(); + map1.put("sql",sql2_2_1); + map1.put("threadid",203); + listTemp.add(map1); + + Map map2=new HashMap(); + map2.put("sql",sql2_3_1); + map2.put("threadid",204); + listTemp.add(map2); + + + for (Map stringIntegerMap : listTemp) { + Thread thread=new GetAllData(Integer.parseInt(stringIntegerMap.get("threadid").toString()),1,stringIntegerMap.get("sql").toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + +// for (int i = 0; i < listTemp.size(); i++) { +// +// Thread thread=new GetAllData((21+i),1,listTemp.get(i).toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); +// thread.start(); +// stop_list.add(thread); +// startGPA.State state=new startGPA.State(); +// state.ThreadId=thread.getId(); +// state.StateUpdateTime=System.currentTimeMillis(); +// state_list.add(state); +// } + + + } else if (dbType.equals("2")) {//DM + + //超时第一种情况--有出口但是累计金额不相等的技巧口诀图解 + String sql2_1_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + + List listTemp=new ArrayList<>(); + listTemp.add(sql2_1_1); + listTemp.add(sql2_2_1); + listTemp.add(sql2_3_1); + + for (int i = 0; i < listTemp.size(); i++) { + + Thread thread=new GetAllData((21+i),1,listTemp.get(i).toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + } + //二次数据上传处理线程,1个 + String sql3_1 = ""; + if (dbType.equals("1")) {//oracle + sql3_1 = "select * from gantry_pass_center where ishandle=1 and issecond=1 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut"); + + Thread thread3_1=new GetAllData(31,0,sql3_1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s); + thread3_1.start(); + + stop_list.add(thread3_1); + startGPA.State state3_1=new startGPA.State(); + state3_1.ThreadId=thread3_1.getId(); + state3_1.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state3_1); + } else if (dbType.equals("2")) {//DM + sql3_1 = "select * from gantry_pass_center where ishandle=1 and issecond=1 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut"); + + Thread thread3_1=new GetAllData(31,0,sql3_1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,s);; + thread3_1.start(); + } + //删除中间表数据线程,1个 + if (dbType.equals("1")) { + String sql4_1 = "delete gantry_pass_center where ROUND(TO_NUMBER(sysdate - handletime))>25 or substr(passid,0,6)='000000'"; + deleteCenter deleteC=new deleteCenter(jdbcTemplate,sql4_1,runAble,s); + Thread thread=new Thread(deleteC); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + //预分账线程,7个 + int THREAD_GANTRY_STAT_COUNT=7; + for (int i = 0; i < THREAD_GANTRY_STAT_COUNT; i++) { + String sql="select * from gantry_pass_stat_temp where ora_hash(tradeid,"+(THREAD_GANTRY_STAT_COUNT-1)+")="+i+" and rownum<=1000"; + GetGantryStat getGantryStat=new GetGantryStat(jdbcTemplate,sql,runAble,s); + Thread thread=new Thread(getGantryStat); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + } + catch (Exception e){ + flag=false; + e.printStackTrace(); + LogClass.debug(e.toString()); + } + finally { + return stop_list; + } + + } +} diff --git a/src/GPA/GMAIN_TEST.java b/src/GPA/GMAIN_TEST.java new file mode 100644 index 0000000..cf630e0 --- /dev/null +++ b/src/GPA/GMAIN_TEST.java @@ -0,0 +1,150 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +import javax.sound.midi.Soundbank; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class GMAIN_TEST { + public static void main(String[] args) throws Exception { + + LogClass.delete("测试数据"); + JdbcTemplate jdbcTemplate=new JdbcTemplate(new DBUtil().Hikar_DataSource()); + + List list_PARTICIPANT = CommonHelp.getListBySql("select * from TB_PARTICIPANT",jdbcTemplate); + + List list_LINE_TABLE=CommonHelp.getListBySql("select LINENAME,GBLINEID from line_table",jdbcTemplate); + + List list_FEEUNIT_TABLE=CommonHelp.getListBySql("select ID,NAME FROM FEEUNIT_TABLE",jdbcTemplate); + + List list_GANTRY_TABLE=CommonHelp.getListBySql("select * from gantry_table",jdbcTemplate); + String sql="select * from gantry_pass_center where passid='013701210423224842873620250110021301'"; + //011301200123000511468020220418120750 + //020000140102070009234220220422172438 + GPA_DATA gpa_data=new GPA_DATA(); + gpa_data.GetAllETCData(sql,0,1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE); + +//// startGPA s=new startGPA(); +//// String sql_stat="select * from gantry_pass_stat_temp where tradeid='G0065150030002100102022051613200037'"; +//// statTest(jdbcTemplate,sql_stat); + + + + + } + public static void statTest(JdbcTemplate jdbcTemplate,String sql){ + try { + //s.UpdateState(Thread.currentThread().getId()); + List list=jdbcTemplate.queryForList(sql); + String tollIntervalsId=""; + String stano=""; + String roadno=""; + StringBuilder delete_tradeid=new StringBuilder(); + if (list.size()>0){ + for (int i = 0; i < list.size(); i++) { + try { + Map map=(Map) list.get(i); + String[] tollIntervalsId_temp=map.get("TOLLINTERVALID")==null?null:map.get("TOLLINTERVALID").toString().split("\\|"); + String[] feeGroup_temp=map.get("FEEGROUP")==null?null:map.get("FEEGROUP").toString().split("\\|"); + String[] payfeeGroup_temp=map.get("PAYFEEGROUP")==null?null:map.get("PAYFEEGROUP").toString().split("\\|"); + String[] specialtype_temp=null; + if (map.get("SPECIALTYPE")!=null){ + if (map.get("SPECIALTYPE").toString().replace(" ","").length()>0){ + specialtype_temp=map.get("SPECIALTYPE").toString().split("\\|"); + } + } + + String is_have_gantry_trade_sql="SELECT * FROM gantry_trade_mass where gantryid='" +map.get("GANTRYID").toString() + "' and classdate=TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " +map.get("MEDIATYPE") + " AND VEHICLETYPE = " +map.get("VEHICLETYPE"); + List list_trade_ishave=jdbcTemplate.queryForList(is_have_gantry_trade_sql); + + String boundarytype_sql = "select boundarytype from gantry_table where id='" + map.get("GANTRYID").toString() + "'"; + List boundary=jdbcTemplate.queryForList(boundarytype_sql); + if (boundary.size()>0){ + + } + int boundarytype=Integer.valueOf(((Map) jdbcTemplate.queryForList(boundarytype_sql).get(0)).get("BOUNDARYTYPE").toString()); + if (list_trade_ishave.size()>0){ + int feesuccnum=0; + int feefailenum=0; + if (map.get("FEECALCRESULT").toString().equals("0") && map.get("TRADERESULT").toString().equals("0")){ + feesuccnum = 1; + } + else { + feefailenum = 1; + } +// JSONObject temp=new JSONObject(((Map) list_trade_ishave.get(0)).get("SPECIALTYPE").toString()); +// if (specialtype_temp!=null){ +// for (int j = 0; j < specialtype_temp.length; j++) { +// String special_value=""; +// if (specil_list.contains(Integer.valueOf(specialtype_temp[j]))){ +// +// } +// } +// } + + String update_gantry_trade = "update gantry_trade_mass set boundarytype = " + boundarytype + ", feesuccnum = feesuccnum+" + feesuccnum + ", feefailenum = feefailenum+" + feefailenum + ", specialtype = '' where gantryid = '" + map.get("GANTRYID").toString() + "' and classdate = TO_DATE('" +map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') and mediatype = " + map.get("MEDIATYPE") + " and vehicletype = " + map.get("VEHICLETYPE"); + jdbcTemplate.update(update_gantry_trade); + + } + else { + String insert_gantry_trade= "insert into gantry_trade_mass (gantryid, classdate, mediatype, vehicletype, boundarytype, feesuccnum, feefailenum, specialtype, feelostnum) values ('" +map.get("GANTRYID").toString() + "', TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd'), " +map.get("MEDIATYPE") + ", " + map.get("VEHICLETYPE") + ", " + boundarytype + ", 0, 0, '{}', 0) "; + jdbcTemplate.update(insert_gantry_trade); + } + + if (tollIntervalsId_temp!=null && feeGroup_temp!=null && payfeeGroup_temp!=null){ + if (tollIntervalsId_temp.length== feeGroup_temp.length && feeGroup_temp.length==payfeeGroup_temp.length){ + for (int j = 0; j < tollIntervalsId_temp.length; j++) { + if (tollIntervalsId_temp[j].length()>=16){ + tollIntervalsId=tollIntervalsId_temp[j].substring(0,16); + String stano_roadno_sql = "select ostano,oroadno from feeunit_table where id='" + tollIntervalsId + "'"; + List stano_roadno_list=jdbcTemplate.queryForList(stano_roadno_sql); + if (stano_roadno_list.size()>0){ + stano=((Map)stano_roadno_list.get(0)).get("OSTANO").toString(); + roadno=((Map)stano_roadno_list.get(0)).get("OROADNO").toString(); + } + else { + stano="0"; + roadno="0"; + } + + String is_have_sql = "SELECT 1 FROM DUAL WHERE EXISTS (SELECT * FROM gantry_stat where FEEUNITID='" + tollIntervalsId + "' and classdate=TO_DATE('" +map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " +map.get("MEDIATYPE") + " AND VEHTYPE = " +map.get("VEHICLETYPE") + " AND ROADNO = " + roadno + " and STANO=" + stano + ")"; + List list_ishave=jdbcTemplate.queryForList(is_have_sql); + if (list_ishave.size()>0){ + String update_sql = "UPDATE GANTRY_STAT SET VEHCOUNT = VEHCOUNT + 1, CASH = TO_NUMBER(CASH) +TO_NUMBER(" + (payfeeGroup_temp[j].replace(" ","").length() == 0 ? "0" : payfeeGroup_temp[j]) + "), INCASH = TO_NUMBER(INCASH) +TO_NUMBER(" + (feeGroup_temp[j].replace(" ","").length() == 0 ? "0" : feeGroup_temp[j]) + ") where FEEUNITID='" + tollIntervalsId + "' and classdate=TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " + map.get("MEDIATYPE") + " AND VEHTYPE = " + map.get("VEHICLETYPE") + " AND ROADNO = " + roadno; + jdbcTemplate.update(update_sql); + } + else { + String insert_sql = "INSERT INTO GANTRY_STAT(ROADNO,STANO,CLASSDATE,FEEUNITID,MEDIATYPE, VEHTYPE,VEHCLASS,SPECIALTYPE,AXLECOUNT,VEHCOUNT,TRADERESULT,HOLIDAYSTATE,VALIDSTATUS,CASH,INCASH,FEESUMLOCALAFTER,BACKUP1,BACKUP2,BACKUP3,BACKUP4,DATEMARK) VALUES(" + roadno + ", " + stano + ", TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd'), '" + tollIntervalsId + "', " + map.get("MEDIATYPE") + "," + map.get("VEHICLETYPE") + ", 0, 0, 2, 1, 0, 0, 0," + (payfeeGroup_temp[j].replace(" ","").length() == 0 ? "0" : payfeeGroup_temp[j]) + ", " + (feeGroup_temp[j].replace(" ","").length() == 0 ? "0" : feeGroup_temp[j]) + ", 0, 0, 0, '0','0', SYSDATE)"; + jdbcTemplate.update(insert_sql); + } + } + } + + } + + } + + + String delete_sql="delete gantry_pass_stat_temp where tradeid='" +map.get("TRADEID") + "' "; + jdbcTemplate.update(delete_sql); + + + } + catch (Exception e){ + LogClass.error("预分账错误日志:"+e.toString()+","+((Map) list.get(i)).get("TRADEID")); + } + } + } + + Thread.sleep(1000*30); + + } + catch (Exception e){ + LogClass.error("预拆分错误"+e.toString()); + } + } + +} diff --git a/src/GPA/GPA_DATA.java b/src/GPA/GPA_DATA.java new file mode 100644 index 0000000..9756582 --- /dev/null +++ b/src/GPA/GPA_DATA.java @@ -0,0 +1,786 @@ +package GPA; + + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import org.springframework.jdbc.core.JdbcTemplate; + +import java.text.SimpleDateFormat; +import java.util.*; + +public class GPA_DATA { + + public GPA_DATA() throws Exception { + + } + + + public void GetAllETCData(String sql, int isTimeOut, int threadId, JdbcTemplate jdbcTemplate, + List list_PARTICIPANT, List list_LINE_TABLE, List list_FEEUNIT_TABLE,List list_GANTRY_TABLE) { + + //LogClass log=new LogClass(); + long startTime = 0; + long endTime = 0; + + try { + + startTime = System.currentTimeMillis(); + List list_passid = CommonHelp.getListBySql(sql, jdbcTemplate); + endTime = System.currentTimeMillis(); + if (list_passid.size() > 0) { + LogClass.debug(threadId + "passid查询用时:" + (endTime - startTime) + ",查询结果:" + list_passid.size() + "条"); + + StringBuilder sb_delete = new StringBuilder(); + + + for (int i = 0; i < list_passid.size(); i++) { + try { + + Map map_passid = (Map) list_passid.get(i); + System.out.println("进程ID:" + threadId + ",开始处理当前查询结果第" + (i + 1) + "条,PASSID:" + (map_passid.get("PASSID") == null ? "" : map_passid.get("PASSID").toString())); + sb_delete.append("'" + (map_passid.get("PASSID") == null ? "" : + map_passid.get("PASSID").toString()) + "',"); + String columns = CommonHelp.GetConfigValue("columns"); + + String searchType = (map_passid.get("PASSID") == null || map_passid.get("PASSID").toString().length()<=1) ? "" : + map_passid.get("PASSID").toString().substring(1, 2); + + String sql_gantry_pass = ""; + if (searchType.equals("1")) { + + if (map_passid.get("BACKUP3").toString().equals("OUT")) { + sql_gantry_pass = "select * from (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/" + + " " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left " + + "join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a" + + ".obutraderesult=0 and a.passid='" + (map_passid.get("PASSID") == null ? "" + : map_passid.get("PASSID").toString()) + "' and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " order by a.obuprovtradesuccnumafter,a.transtime ) t union all (select /*+rule(gantry_pass_out UX_GANTRY_PASS_OUT_PASSID)*/ " + columns + ",'gantry_pass_out' datasrc,paytype from gantry_pass_out a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a.obutraderesult=0 and a.passid='" + map_passid.get("PASSID").toString() + "' and a.provincenumafter>0 and rownum<=1)"; + } else { + sql_gantry_pass = "select * from (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/" + + " " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left " + + "join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a" + + ".obutraderesult=0 and a.passid='" + (map_passid.get("PASSID") == null ? "" + : map_passid.get("PASSID").toString()) + "' and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " order by a.obuprovtradesuccnumafter,a.transtime ) t union all (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/ " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and b.boundarytype=2 and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " and a.passid='" + (map_passid.get("PASSID") == null ? "" : map_passid.get("PASSID").toString()) + "' and instr(a.specialtype,'154')=0 ) union all (select /*+rule(gantry_pass_out UX_GANTRY_PASS_OUT_PASSID)*/ " + columns + ",'gantry_pass_out' datasrc,paytype from gantry_pass_out a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a.obutraderesult=0 and a.passid='" + map_passid.get("PASSID").toString() + "' and a.provincenumafter=" + map_passid.get("PROVINCENUMAFTER").toString() + " and a.provincenumafter>0 and rownum<=1)"; + } + + + } else if (searchType.equals("2")) { + if (map_passid.get("BACKUP3").toString().equals("OUT")) { + sql_gantry_pass = "select * from (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/" + + " " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left " + + "join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a" + + ".traderesult=0 and a.passid='" + (map_passid.get("PASSID") == null ? "" : + map_passid.get("PASSID").toString()) + "' and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " order by a.obuprovtradesuccnumafter,a.transtime) t union all (select /*+rule(gantry_pass_out UX_GANTRY_PASS_OUT_PASSID)*/ " + columns + ",'gantry_pass_out' datasrc,paytype from gantry_pass_out a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a.traderesult=0 and a.passid='" + map_passid.get("PASSID").toString() + "' and a.provincenumafter>0 and rownum<=1)"; + } else { + sql_gantry_pass = "select * from (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/" + + " " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left " + + "join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a" + + ".traderesult=0 and a.passid='" + (map_passid.get("PASSID") == null ? "" : + map_passid.get("PASSID").toString()) + "' and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " order by a.obuprovtradesuccnumafter,a.transtime) t union all (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/ " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and b.boundarytype=2 and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " and a.passid='" + (map_passid.get("PASSID") == null ? "" : map_passid.get("PASSID").toString()) + "' and instr(a.specialtype,'154')=0 ) union all (select /*+rule(gantry_pass_out UX_GANTRY_PASS_OUT_PASSID)*/ " + columns + ",'gantry_pass_out' datasrc,paytype from gantry_pass_out a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a.traderesult=0 and a.passid='" + map_passid.get("PASSID").toString() + "' and a.provincenumafter=" + map_passid.get("PROVINCENUMAFTER").toString() + " and a.provincenumafter>0 and rownum<=1)"; + } + + } else { + if (map_passid.get("BACKUP3").toString().equals("OUT")) { + sql_gantry_pass = "select * from (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/" + + " " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left " + + "join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a" + + ".traderesult=0 and a.passid='" + (map_passid.get("PASSID") == null ? "" : + map_passid.get("PASSID").toString()) + "' and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " order by a.obuprovtradesuccnumafter,a.transtime) t union all (select /*+rule(gantry_pass_out UX_GANTRY_PASS_OUT_PASSID)*/ " + columns + ",'gantry_pass_out' datasrc,paytype from gantry_pass_out a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a.traderesult=0 and a.passid='" + map_passid.get("PASSID").toString() + "' and a.provincenumafter>0 and rownum<=1)"; + } else { + sql_gantry_pass = "select * from (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/" + + " " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left " + + "join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a" + + ".traderesult=0 and a.passid='" + (map_passid.get("PASSID") == null ? "" : + map_passid.get("PASSID").toString()) + "' and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " order by a.obuprovtradesuccnumafter,a.transtime) t union all (select /*+rule(gantry_pass UX_GANTRY_PASS_PASSID)*/ " + columns + ",'gantry_pass' DATASRC,-1 PAYTYPE from gantry_pass a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and b.boundarytype=2 and a.provincenumafter=" + (map_passid.get("PROVINCENUMAFTER") == null ? "" : map_passid.get("PROVINCENUMAFTER").toString()) + " and a.passid='" + (map_passid.get("PASSID") == null ? "" : map_passid.get("PASSID").toString()) + "' and instr(a.specialtype,'154')=0 ) union all (select /*+rule(gantry_pass_out UX_GANTRY_PASS_OUT_PASSID)*/ " + columns + ",'gantry_pass_out' datasrc,paytype from gantry_pass_out a left join gantry_table b on a.gantryid=b.id where a.feecalcresult=0 and a.traderesult=0 and a.passid='" + map_passid.get("PASSID").toString() + "' and a.provincenumafter=" + map_passid.get("PROVINCENUMAFTER").toString() + " and a.provincenumafter>0 and rownum<=1)"; + } + + } + + + //startTime=System.currentTimeMillis(); + List list_gantry_pass = CommonHelp.getListBySql(sql_gantry_pass, jdbcTemplate); + + if (list_gantry_pass.size() == 1 && ((Map) list_gantry_pass.get(0)).get("DATASRC").toString().equals("gantry_pass_out")) { + if (searchType.equals("1")) { + sql_gantry_pass = sql_gantry_pass.replaceAll("and a.obutraderesult=0", " and (instr(a" + + ".specialtype,'154')=0 or a.specialtype is null)"); + } else if (searchType.equals("2")) { + sql_gantry_pass = sql_gantry_pass.replaceAll("and a.traderesult=0", " and (instr(a" + + ".specialtype,'154')=0 or a.specialtype is null)"); + } else { + sql_gantry_pass = sql_gantry_pass.replaceAll("and a.traderesult=0", " and (instr(a" + + ".specialtype,'154')=0 or a.specialtype is null)"); + } + list_gantry_pass = CommonHelp.getListBySql(sql_gantry_pass, jdbcTemplate); + } + + + //endTime=System.currentTimeMillis(); + + //LogClass.info(threadId + "单条PASSID查询用时:" + (endTime - startTime) + ",PASSID:"+map_passid + // .get("PASSID").toString()); + + if (list_gantry_pass.size() > 0) { + + //startTime=System.currentTimeMillis(); + //去除掉出口后的交易数据 + list_gantry_pass = CommonHelp.delete_gantry_pass_out(list_gantry_pass); + //去除掉查询结果中重复交易的数据 + list_gantry_pass = CommonHelp.delete_repeat(list_gantry_pass); + //删除tradeid重复的交易记录 + list_gantry_pass=CommonHelp.delete_repeat_tradeid(list_gantry_pass); + + //处理计费单元ID,如果有空值则根据门架ID填写计费单元ID + list_gantry_pass = CommonHelp.handle_tollinterval(list_gantry_pass, jdbcTemplate); + + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第一步处理用时:" + (endTime - startTime) + ",PASSID:"+map_passid.get + // ("PASSID").toString()); + + //startTime=System.currentTimeMillis(); + int DEALCOUNT = 0; + int FEECALC = 0; + for (int j = 0; j < list_gantry_pass.size(); j++) { + Map map = (Map) list_gantry_pass.get(j); + if (map.get("TRADERESULT") == null ? false : + map.get("TRADERESULT").toString().equals("0")) { + DEALCOUNT++; + } + if (map.get("FEECALCRESULT") == null ? false : + map.get("FEECALCRESULT").toString().equals("0")) { + FEECALC++; + } + } + + //处理省界门架 + if (CommonHelp.GetConfigValue("boundaryOut").toString().indexOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("GANTRYID") == null ? "" : ((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("GANTRYID").toString()) != -1 && (((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)) == null ? false : ((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("OBUPROVTRADESUCCNUMAFTER").toString().equals("0"))) { + Map map = (Map) list_gantry_pass.get(list_gantry_pass.size() - 1); + map.put("OBUPROVTRADESUCCNUMAFTER", list_gantry_pass.size()); + list_gantry_pass.set(list_gantry_pass.size() - 1, map); + } + + if (list_gantry_pass.size() > 1) { + list_gantry_pass = CommonHelp.console_Result_DataTable((list_gantry_pass)); + } + + if (((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("DATASRC").toString().equals("gantry_pass_out")) { + if (list_gantry_pass.size() > 1) { + if (list_gantry_pass.size() > 1) { + + Map map = (Map) list_gantry_pass.get(list_gantry_pass.size() - 1); + map.put("OBUPROVTRADESUCCNUMAFTER", + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("OBUPROVTRADESUCCNUMAFTER").toString()) + 1); + list_gantry_pass.set(list_gantry_pass.size() - 1, map); + } else { + Map map = (Map) list_gantry_pass.get(list_gantry_pass.size() - 1); + map.put("OBUPROVTRADESUCCNUMAFTER", 1); + list_gantry_pass.set(list_gantry_pass.size() - 1, map); + } + } else { + + Map map = (Map) list_gantry_pass.get(list_gantry_pass.size() - 1); + map.put("OBUPROVTRADESUCCNUMAFTER", 1); + list_gantry_pass.set(list_gantry_pass.size() - 1, map); + } + } + + + int mediaType = -1; + if (map_passid.get("MEDIATYPE") == null ? true : + map_passid.get("MEDIATYPE").toString().length() == 0) { + mediaType = Integer.valueOf(map_passid.get("PASSID").toString().substring(1, 2)); + } else { + mediaType = Integer.valueOf(map_passid.get("MEDIATYPE").toString()); + } + + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第二步处理用时:" + (endTime - startTime) + ",PASSID:"+map_passid.get + // ("PASSID").toString()); + + if (list_gantry_pass != null) { + if (list_gantry_pass.size() > 0) { + //startTime=System.currentTimeMillis(); + String OBUVEHICLEPLATE = + CommonHelp.Get_9Plate(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "OBUVEHICLEPLATE")); + String CPUVehiclePlate = + CommonHelp.Get_9Plate(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUVEHICLEPLATE")); + String VEHICLEPLATE = + CommonHelp.Get_9Plate(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "VEHICLEPLATE")); + String vehicleId = CommonHelp.RegexCard(OBUVEHICLEPLATE, CPUVehiclePlate, + VEHICLEPLATE);//实际收费车牌 + + int obuprovfeesumafter = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("OBUPROVFEESUMAFTER").toString()); + list_gantry_pass = CommonHelp.GetLibDataTable(list_gantry_pass, threadId, + map_passid.get("PASSID").toString(), sql_gantry_pass, jdbcTemplate,vehicleId); + + String enPointId = "";//计费起始点编号 + String enTollStationName = "";//计费起点名称 + + String exPointId = "";//计费终点编号 + String exTollStationName = "";//计费终点名称 + + enPointId = ((Map) list_gantry_pass.get(0)).get("GANTRYID").toString(); + enTollStationName = ((Map) list_gantry_pass.get(0)).get("NAME").toString(); + + exPointId = ((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get( + "GANTRYID").toString(); + exTollStationName = + ((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("NAME").toString(); + + String id = ""; + boolean isneedHZ = true;//默认汇总 + + if (CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUNETID").equals( + "0501")) { + isneedHZ = false; + } + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第三步处理用时:" + (endTime - startTime) + ", + // PASSID:"+map_passid.get("PASSID").toString()); + + if (isneedHZ) { + + //startTime=System.currentTimeMillis(); + String serProvinceId = CommonHelp.GetConfigValue("serProvinceId"); + String issuerId = ""; + String cpuissuerId = ""; + + + if (mediaType == 1 || mediaType == 2) { + List list_participant_temp = new ArrayList(); + String provincebcdname = + CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "OBUISSUEID" + ).length() < 8 ? "B9ABC2B7" : + CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "OBUISSUEID").substring(0, 8); + boolean issuerId_isSub = true; + for (int j = 0; j < list_PARTICIPANT.size(); j++) { + Map map = (Map) list_PARTICIPANT.get(j); + if (map.get("PROVINCEBCDNAME").equals(provincebcdname)) { + issuerId = map.get("BACKUP2").toString(); + issuerId_isSub = false; + break; + } + + } + + if (issuerId_isSub) { + String cpunetid = CommonHelp.GetRightCPUNETID(list_gantry_pass); + if (cpunetid.length() == 4 && !cpunetid.equals("0000")) { + issuerId = cpunetid.substring(0, 2) + "01" + cpunetid.substring(2 + , 4); + } else { + issuerId = + CommonHelp.GetOUBissueID(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "OBUISSUEID"), jdbcTemplate); + + } + } + + + } else { + cpuissuerId = ""; + } + String tollIntervalId = ""; + String tollIntervalFee = ""; + + tollIntervalId = CommonHelp.GetTollIntervalGroup(list_gantry_pass, + jdbcTemplate);//收费单元编号组合 + + tollIntervalFee = CommonHelp.GetFeeGroup(list_gantry_pass);//交易金额组合 + + String payfee_group = CommonHelp.GetPayFeegroup(list_gantry_pass); + + + int payFee = 0; + int fee = 0; + int discountFee = 0; + + payFee = CommonHelp.GetArrSum(payfee_group); + fee = CommonHelp.GetArrSum(tollIntervalFee); + discountFee = payFee - fee; + + int vehicleType = CommonHelp.GetRightvehicleType(list_gantry_pass); + + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第四步处理用时:" + (endTime - startTime) + ", + // PASSID:"+map_passid.get("PASSID").toString()); + + //startTime=System.currentTimeMillis(); + String enTollStationHex = ((Map) list_gantry_pass.get(0)).get( + "ENTOLLSTATIONHEX").toString();//入口 + if (fee != obuprovfeesumafter || ((Map) list_gantry_pass.get(0)).get("DATASRC").toString().equals("gantry_pass_out")) { + if (((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get( + "DATASRC").toString().equals("gantry_pass_out")) { + if (list_gantry_pass.size() > 1) { + String lastGantryHex = + ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("GANTRYHEX").toString(); + String stationHex_sql = "select b.STATIONHEX from gantry_pass_out" + + " a left join name_table b on a.gbstationid=b.gbstationid" + + " where passid='" + map_passid.get("PASSID").toString() + "'"; + String curTollGantry = + ((Map) CommonHelp.getListBySql(stationHex_sql, + jdbcTemplate).get(0)).get("STATIONHEX").toString(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = + sdf.parse(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("TRANSTIME").toString()); + String curPassTime = + new SimpleDateFormat("yyyy-MM-dd").format(date) + "T" + new SimpleDateFormat("HH:mm:ss").format(date); + + int totalWeight = Integer.valueOf(((Map) list_gantry_pass.get(0)).get("TOTALWEIGHT").toString()); + int enaxlecount = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("AXLECOUNT").toString()); + int vehicleUserType = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("VEHICLEUSERTYPE").toString()); + int obuprovfeesumafter_1 = 0; + int obuprovpayfeesumafter_1 = 0; + if (mediaType == 1) { + obuprovpayfeesumafter_1 = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("OBUPROVPAYFEESUMAFTER").toString().length() == 0 ? "0" : ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("OBUPROVPAYFEESUMAFTER").toString());//payFeeSumLocal + obuprovfeesumafter_1 = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("OBUPROVFEESUMAFTER").toString().length() == 0 ? "0" : ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("OBUPROVFEESUMAFTER").toString());//realFeeSumLocal + + } else if (mediaType == 2) { + obuprovpayfeesumafter_1 = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("FEESUMLOCALAFTER").toString().length() == 0 ? "0" : ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("FEESUMLOCALAFTER").toString());//payFeeSumLocal + + obuprovfeesumafter_1 = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("FEESPARE1").toString().length() == 0 ? "0" : ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("FEESPARE1").toString());//realFeeSumLocal + } + list_gantry_pass = CommonHelp.lastGantryToOut(list_gantry_pass, + ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("GANTRYHEX").toString(), curTollGantry, curPassTime, vehicleType, enaxlecount, vehicleUserType, ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("GANTRYID").toString(), ((Map) list_gantry_pass.get(list_gantry_pass.size() - 2)).get("NAME").toString(), mediaType, obuprovpayfeesumafter_1, obuprovfeesumafter_1, sql_gantry_pass, map_passid.get("PASSID").toString(), totalWeight, jdbcTemplate,vehicleId); + + } else if (((Map) list_gantry_pass.get(0)).get("DATASRC").toString().equals("gantry_pass_out")) { + String lastGantryHex = ((Map) list_gantry_pass.get(0)).get("LASTGANTRYHEX")==null?"":((Map) list_gantry_pass.get(0)).get("LASTGANTRYHEX").toString(); + + String feeProvBeginHex = ((Map) list_gantry_pass.get(0)).get("FEEPROVBEGINHEX") == null ? "" : ((Map) list_gantry_pass.get(0)).get("FEEPROVBEGINHEX").toString(); + String curTollGantry = ((Map) list_gantry_pass.get(0)).get( + "GANTRYID").toString(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = sdf.parse(((Map) list_gantry_pass.get(0)).get( + "TRANSTIME").toString()); + String curPassTime = + new SimpleDateFormat("yyyy-MM-dd").format(date) + "T" + new SimpleDateFormat("HH:mm:ss").format(date); + + + int totalWeight = Integer.valueOf(((Map) list_gantry_pass.get(0)).get("TOTALWEIGHT").toString()); + int enaxlecount = + Integer.valueOf(((Map) list_gantry_pass.get(0)).get( + "AXLECOUNT").toString());//入口轴数 + int vehicleUserType = + Integer.valueOf(((Map) list_gantry_pass.get(0)).get( + "VEHICLEUSERTYPE").toString());// + int obuprovpayfeesumafter_1 = 0; + + int obuprovfeesumafter_1 = 0; + + list_gantry_pass = CommonHelp.firstGantryToOut(list_gantry_pass, + enTollStationHex, curTollGantry, curPassTime, vehicleType + , enaxlecount, vehicleUserType, mediaType, + obuprovpayfeesumafter_1, obuprovfeesumafter_1, "", "", + sql_gantry_pass, map_passid.get("PASSID").toString(), feeProvBeginHex, totalWeight, + jdbcTemplate,list_GANTRY_TABLE,lastGantryHex,vehicleId); + } + } + } + + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第五步处理用时:" + (endTime - startTime) + ", + // PASSID:"+map_passid.get("PASSID").toString()); + + //startTime=System.currentTimeMillis(); + id = map_passid.get("PASSID").toString() + "-" + enPointId + "-" + CommonHelp.idTime(((Map) list_gantry_pass.get(0)).get("TRANSTIME").toString()); + + payfee_group = CommonHelp.GetPayFeegroup(list_gantry_pass); + tollIntervalId = CommonHelp.GetTollIntervalGroup(list_gantry_pass, + jdbcTemplate); + + list_gantry_pass = + CommonHelp.remove_repeat_tollIntervalId(list_gantry_pass, + jdbcTemplate);//去除重复交易的计费单元 + tollIntervalId = CommonHelp.GetTollIntervalGroup(list_gantry_pass, + jdbcTemplate); +// if (CommonHelp.tollIntervalId_repeat(tollIntervalId)) {//有重复交易的计费单元 +// list_gantry_pass = +// CommonHelp.remove_repeat_tollIntervalId(list_gantry_pass, +// jdbcTemplate); +// tollIntervalId = CommonHelp.GetTollIntervalGroup(list_gantry_pass, +// jdbcTemplate); +// } + + + tollIntervalFee = CommonHelp.GetFeeGroup(list_gantry_pass); + payFee = CommonHelp.GetArrSum(payfee_group); + fee = CommonHelp.GetArrSum(tollIntervalFee); + discountFee = payFee - fee; + + String passid = map_passid.get("PASSID").toString(); + int count = list_gantry_pass.size(); + String exTime = CommonHelp.GetMaxTranstime(list_gantry_pass); + String enTime = CommonHelp.longTime(((Map) list_gantry_pass.get(0)).get( + "TRANSTIME").toString()); + + String enStationTime = + CommonHelp.longTime(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "ENTIME")); + String cpucardid = ""; + if (mediaType == 1) { + cpucardid = CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "CPUCARDID"); + } else { + cpucardid = ""; + } + int ENPOINTTYPE = 0;//0 默认,1路段门架,2省界门架,3出口门架 + if (CommonHelp.GetConfigValue("boundaryIn").indexOf(((Map) list_gantry_pass.get(0)).get("GANTRYID").toString()) != -1) { + ENPOINTTYPE = 2; + } else { + ENPOINTTYPE = 1; + } + int EXPOINTTYPE = 0;//0默认,1路段门架,2省界门架,3出口门架 + if (((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("DATASRC").toString().equals("gantry_pass_out")) { + EXPOINTTYPE = 3; + } else if (CommonHelp.GetConfigValue("boundaryOut").indexOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("GANTRYID").toString()) != -1) { + EXPOINTTYPE = 2; + } else if (CommonHelp.GetConfigValue("DbType").equals("2")) { + if ((((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get( + "GANTRYID").toString().equals("G551115002020820010") || ((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("GANTRYID").toString().equals("G551115002020610010")) && isTimeOut == 1) { + EXPOINTTYPE = 2; + } + } else { + EXPOINTTYPE = 1; + } + + int UTURN = 0;//U转次数 + int LOSTUNIT = 0;//丢失门架数量 + int NOCARD = CommonHelp.GetMaxNocardtimes(list_gantry_pass);//无卡交易次数 + + for (int j = 0; j < list_gantry_pass.size(); j++) { + Map map = (Map) list_gantry_pass.get(j); + String feeinfo_temp = ((map.get("FEEINFO1") == null) ? "" : map.get + ("FEEINFO1").toString()) + ((map.get("FEEINFO2") == null) ? "" : map.get + ("FEEINFO2").toString()) + ((map.get("FEEINFO3") == null) ? "" : map.get + ("FEEINFO3").toString()); + + boolean feeinfo_temp_json=false; + try { + Object obj= JSON.parse(feeinfo_temp); + feeinfo_temp_json=true; + } + catch (Exception e){ + feeinfo_temp_json=false; + } + if (feeinfo_temp_json){ + if (feeinfo_temp.length() > 0) { + if (feeinfo_temp.substring(feeinfo_temp.length() - 1, feeinfo_temp + .length()).equals("}")) { + JSONObject feeInfo_temo_json = JSONObject.parseObject(feeinfo_temp); + if (feeInfo_temo_json.getIntValue("errorCode") == -28) { + UTURN++; + } + if (feeInfo_temo_json.getString("gantryIDs").length() > 6) { + LOSTUNIT += (feeInfo_temo_json.getString("gantryIDs") + .length() - 6) / 6; + } + } + } + } + + } + + String UTURN_PATH=""; + if (UTURN>0){ + UTURN_PATH=CommonHelp.UTURN_PATH(tollIntervalId,list_FEEUNIT_TABLE); + + } + + + int etcCardType = 0; + if (CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUCARDTYPE").length() == 0 || CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUCARDTYPE").equals("0")) { + etcCardType = 2; + } else { + etcCardType = + Integer.valueOf(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUCARDTYPE")); + } + //etc卡编号 + String etcCardId = CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "CPUCARDID").length() == 20 ? + CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUCARDID") : + (issuerId.length() == 0 ? "" : + issuerId.substring(0, 4) + CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "CPUCARDID")); + //OBU编号 + String obuId = CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "OBUSN"); + + int obuSign = CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "OBUSIGN").length() == 0 ? 0 : + Integer.valueOf(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "OBUSIGN")); + + String vehicleSeat = CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "VEHICLESEAT"); + if (vehicleSeat == null || vehicleSeat.length() == 0) { + vehicleSeat = "0"; + } + + String sectionId = CommonHelp.GetSectinoidGroup(tollIntervalId);//收费路段编号组合 + String sectionName = CommonHelp.GetSectionNameGroup(tollIntervalId, + list_LINE_TABLE);//收费路段名称组合 + String tollIntervalName = CommonHelp.GetTollIntervalNameGroup(tollIntervalId, + list_FEEUNIT_TABLE);//收费单元名称组合 + String vehicleSign = + CommonHelp.GetRightvehicleSign(CommonHelp.GetGantryPassColumsValue(list_gantry_pass, "VEHICLESIGN"));//车辆识别标识 + String discountType = ""; + discountType = CommonHelp.GetGantryPassColumsValue(list_gantry_pass, + "DISCOUNTTYPE"); + if (discountType.equals("0") || discountType.length() == 0 || Integer.valueOf(discountType)>5) { + discountType = "null"; + } + int provinceDiscountFee = 0; + int originFee = 0; + + if (discountType.equals("5")) { + provinceDiscountFee = + CommonHelp.GetprovinceDiscountFeeSum(list_gantry_pass); + } else { + provinceDiscountFee = 0; + originFee = 0; + } + String transaction = ""; + + transaction = CommonHelp.DataTableToJson(list_gantry_pass, exTime, + jdbcTemplate); + transaction = CommonHelp.StringToClob(transaction); + + int outType = 0;//0未知,1省内出口,2省界出口 + int payType = -1; + if (((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("DATASRC").toString().equals("gantry_pass_out")) { + outType = 1; + if (((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get( + "PAYTYPE").toString().length() > 0) { + payType = + Integer.valueOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("PAYTYPE").toString()); + payType=(payType)>99?99:payType; + + + } + } else if (CommonHelp.GetConfigValue("boundaryOut").indexOf(((Map) list_gantry_pass.get(list_gantry_pass.size() - 1)).get("GANTRYID").toString()) != -1) { + outType = 2; + } else { + outType = 0; + } + int multiprovince = -1; + if (CommonHelp.GetConfigValue("boundaryOut").indexOf(enPointId) != -1) { + multiprovince = 1; + } else { + multiprovince = 0; + } + String tb_gantryid = ""; + if (list_gantry_pass.size() > 1) { + if (mediaType == 1) { + for (int m = 0; m < list_gantry_pass.size(); m++) { + int feeSum = 0; + for (int n = 0; n <= m; n++) { + feeSum += Integer.valueOf(((Map) list_gantry_pass.get(n)).get("FEE").toString()); + } + if (feeSum != Integer.valueOf(((Map) list_gantry_pass.get(m)).get("OBUPROVFEESUMAFTER").toString())) { + if (m == 0) { + tb_gantryid = ((Map) list_gantry_pass.get(0)).get( + "GANTRYID").toString(); + } else { + tb_gantryid = ((Map) list_gantry_pass.get(m - 1)).get( + "GANTRYID").toString(); + } + break; + } + } + } else if (mediaType == 2) { + for (int m = 0; m < list_gantry_pass.size(); m++) { + int feeSum = 0; + for (int n = 0; n <= m; n++) { + feeSum += Integer.valueOf(((Map) list_gantry_pass.get(n)).get("FEE").toString()); + } + if (feeSum != Integer.valueOf(((Map) list_gantry_pass.get(m)).get("FEESUMLOCALAFTER").toString())) { + if (m == 0) { + tb_gantryid = ((Map) list_gantry_pass.get(0)).get( + "GANTRYID").toString(); + } else { + tb_gantryid = ((Map) list_gantry_pass.get(m - 1)).get( + "GANTRYID").toString(); + } + break; + } + } + } + } + + + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第六步处理用时:" + (endTime - startTime) + ", + // PASSID:"+map_passid.get("PASSID").toString()); + + //startTime=System.currentTimeMillis(); + int transNum = 1; + String sql_transNum = + "select TRANSNUM from gantry_pass_all where id='" + id + "'"; + + List list_transNum = CommonHelp.getListBySql(sql_transNum, jdbcTemplate); + if (list_transNum.size() == 0) { + transNum = 1; + } else if (list_transNum.size() > 0) { + boolean dr_transNum_2 = false; + for (int j = 0; j < list_transNum.size(); j++) { + Map map = (Map) list_transNum.get(j); + if (map.get("TRANSNUM").toString().equals("2")) { + dr_transNum_2 = true; + break; + } + } + if (dr_transNum_2) { + String delete_bcenter_2 = + "delete gantry_pass_all_bcenter where id='" + id + "' and " + + "TRANSNUM=2"; + int delete_center_result_2 = jdbcTemplate.update(delete_bcenter_2); + //int delete_center_result_2=CommonHelp.excuteSql(delete_bcenter_2); + //int delete_center_result_2=new DBUtil().update(delete_bcenter_2); + if (delete_center_result_2 > 0) { + transNum = 2; + } else { + transNum = 2; + } + } else { + boolean dr_transNum_1 = false; + for (int j = 0; j < list_transNum.size(); j++) { + Map map = (Map) list_transNum.get(j); + if (map.get("TRANSNUM").toString().equals("1")) { + dr_transNum_1 = true; + break; + } + } + if (dr_transNum_1) { + String delete_bcenter_1 = "delete gantry_pass_all_bcenter where " + + "id='" + id + "' and TRANSNUM=1"; + //int delete_center_result_1=CommonHelp.excuteSql(delete_bcenter_1); + //int delete_center_result_1=new DBUtil().update(delete_bcenter_1); + int delete_center_result_1 = jdbcTemplate.update(delete_bcenter_1); + if (delete_center_result_1 > 0) { + transNum = 1; + } else { + transNum = 2; + } + } else { + transNum = 1; + } + } + + String delete_repeat = "delete gantry_pass_all where id='" + id + "' and " + + "TRANSNUM=" + transNum; + //CommonHelp.excuteSql(delete_repeat); + //new DBUtil().update(delete_repeat); + jdbcTemplate.update(delete_repeat); + + String update_lis="update gantry_pass_all set bak5=0 where passid='" + passid + "' and PROVINCENUMAFTER="+map_passid.get("PROVINCENUMAFTER").toString()+" and TRANSNUM!=" + transNum; + jdbcTemplate.update(update_lis); + + } + + + //endTime=System.currentTimeMillis(); + //LogClass.info(threadId + "第一七步处理用时:" + (endTime - startTime) + ", + // PASSID:"+map_passid.get("PASSID").toString()); + + startTime = System.currentTimeMillis(); + String insert_sql = "INSERT INTO gantry_pass_all (SERPROVINCEID, ISSUERID, " + + "ID, PASSID, COUNT, PAYFEE, FEE, DISCOUNTFEE, ENPOINTID, EXPOINTID, " + + "ENTOLLSTATIONNAME, EXTOLLSTATIONNAME, ENTIME, EXTIME, ETCCARDTYPE, " + + "ETCCARDID, OBUID, OBUSIGN, VEHICLETYPE, VEHICLEID, SECTIONID, " + + "SECTIONNAME, TOLLINTERVALID, TOLLINTERVALNAME, TOLLINTERVALFEE, " + + "VEHICLESIGN, DISCOUNTTYPE, PROVINCEDISCOUNTFEE, ORIGINFEE, TRANSNUM," + + " TRANSACTION,HAND_FEEUNIT,HAND_GANTRYID,HAND_FEE,MEDIATYPE,OUTTYPE," + + "ISTIMEOUT,PAYTYPE,multiprovince,ENTOLLSTATIONHEX,ENSTATIONTIME," + + "OBUISSUEID,OBUSN,OBUVEHICLEPLATE,CPUISSUEID,CPUCARDID," + + "CPUVEHICLEPLATE,ENPOINTTYPE,EXPOINTTYPE,UTURN,DEALCOUNT,FEECALC," + + "LOSTUNIT,NOCARD,TB_GANTRYID,VEHICLESEAT,UTURN_PATH,PROVINCENUMAFTER,BAK5) VALUES ('" + serProvinceId + "', '" + issuerId + "', '" + id + "', '" + passid + "', " + list_gantry_pass.size() + ", " + payFee + ", " + fee + ", " + discountFee + ", '" + enPointId + "', '" + exPointId + "', '" + enTollStationName + "', '" + exTollStationName + "', to_date('" + enTime + "','yyyy-MM-dd HH24:mi:ss'), to_date('" + exTime + "','yyyy-MM-dd HH24:mi:ss'), " + etcCardType + ", '" + etcCardId + "', '" + obuId + "', " + obuSign + ", " + vehicleType + ", '" + vehicleId + "', " + CommonHelp.StringToClob(sectionId) + ", " + CommonHelp.StringToClob(sectionName) + ", " + CommonHelp.StringToClob(tollIntervalId) + ", " + CommonHelp.StringToClob(tollIntervalName) + ", " + CommonHelp.StringToClob(tollIntervalFee) + ", '" + vehicleSign + "', " + discountType + ", " + provinceDiscountFee + ", " + originFee + ", " + transNum + ", " + transaction + ",'','',"+map_passid.get("PROVINCENUMAFTER").toString()+"," + mediaType + "," + outType + "," + isTimeOut + "," + payType + "," + multiprovince + ",'" + enTollStationHex + "',to_date('" + enStationTime + "','yyyy-MM-dd HH24:mi:ss'),'" + issuerId + "','" + obuId + "','" + OBUVEHICLEPLATE + "','" + cpuissuerId + "','" + cpucardid + "','" + CPUVehiclePlate + "'," + ENPOINTTYPE + "," + EXPOINTTYPE + "," + UTURN + "," + DEALCOUNT + "," + FEECALC + "," + LOSTUNIT + "," + NOCARD + ",'" + tb_gantryid + "'," + vehicleSeat + ","+CommonHelp.StringToClob(UTURN_PATH)+","+map_passid.get("PROVINCENUMAFTER").toString()+",1)"; + + + Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(exTime); + Calendar cal = Calendar.getInstance(); + cal.setTime(date); +// String delete_fenyue = +// "delete gantry_pass_all_" + (cal.get(Calendar.MONTH) + 1) + " where " + +// "id='" + id + "'"; +// //CommonHelp.excuteSql(delete_fenyue); +// //new DBUtil().update(delete_fenyue); +// jdbcTemplate.update(delete_fenyue); + + endTime = System.currentTimeMillis(); + //LogClass.info(threadId + "删除分月表用时:" + (endTime - startTime) + ", + // 当前线程共"+list_passid.size()+"数据,处理至"+(i+1)+"条数据,还剩"+(list_passid.size()-i+1) + // +",PASSID:"+map_passid.get("PASSID").toString()); + + startTime = System.currentTimeMillis(); + //int insert_result=CommonHelfirstGantryToOutp.excuteSql(insert_sql); + //int insert_result=new DBUtil().update(insert_sql); + int insert_result = jdbcTemplate.update(insert_sql); + if (!(insert_result > 0)) { + LogClass.error("汇总数据插入失败:PASSID:" + map_passid.get("PASSID")); + } + + endTime = System.currentTimeMillis(); + LogClass.info(threadId + "插入汇总结果用时:" + (endTime - startTime) + + ",当前线程共" + list_passid.size() + "数据,处理至" + (i + 1) + "条数据,还剩" + (list_passid.size() - i + 1) + ",PASSID:" + map_passid.get("PASSID").toString() + ",出口匹配类型:" + (outType == 1 ? "省内出口" : "省外出口") + ",出口ID:" + exPointId + ",门架数据自动匹配完成,门架数据自动审计完成"); + + startTime = System.currentTimeMillis(); + String update_gantry_pass_center = "update /*+rule(gantry_pass_center " + + "INDEX_GANTRY_PASS_CENTER)*/ gantry_pass_center set ishandle=1," + + "Issecond=0,TRANSNUM=" + transNum + ",handletime=to_date('" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime()) + "','yyyy-MM-dd HH24:mi:ss') where passid='" + map_passid.get("PASSID").toString() + "' and provincenumafter=" + map_passid.get("PROVINCENUMAFTER").toString(); + + //CommonHelp.excuteSql(update_gantry_pass_center); + //new DBUtil().update(update_gantry_pass_center); + jdbcTemplate.update(update_gantry_pass_center); + endTime = System.currentTimeMillis(); +// LogClass.info(threadId + "更新中间表用时:" + (endTime - startTime) + +// "当前线程共"+list_passid.size()+"数据,处理至"+(i+1)+"条数据,还剩"+(list_passid +// .size()-i+1)+",PASSID:"+map_passid.get("PASSID").toString()); + + + } else { + String update_gantry_pass_center = "update /*+rule(gantry_pass_center " + + "INDEX_GANTRY_PASS_CENTER)*/ gantry_pass_center set ishandle=1," + + "Issecond=0,handletime=to_date('" + new SimpleDateFormat("yyyy-MM-dd " + + "HH:mm:ss").format(Calendar.getInstance().getTime()) + "','yyyy-MM-dd" + + " HH24:mi:ss') where passid='" + map_passid.get("PASSID").toString() + "' and provincenumafter=" + map_passid.get("PROVINCENUMAFTER").toString(); + //CommonHelp.excuteSql(update_gantry_pass_center); + //new DBUtil().update(update_gantry_pass_center); + jdbcTemplate.update(update_gantry_pass_center); + } + + + } + } + + + } else { + String update = "update /*+rule*/ gantry_pass_center set ISHANDLE=1,Issecond=0," + + "ISTIMEOUT=" + isTimeOut + " where passid='" + map_passid.get("PASSID").toString() + "' and provincenumafter=" + map_passid.get("PROVINCENUMAFTER").toString(); + //CommonHelp.excuteSql(update); + //new DBUtil().update(update); + jdbcTemplate.update(update); + } + } catch (Exception e) { + + LogClass.error("汇总程序异常:PASSID:" + ((Map) list_passid.get(i)).get("PASSID").toString() + "," + + "错误信息:" + e.toString()); + } + + } + +// sb_delete.delete(sb_delete.length()-1, sb_delete.length()); +// String sql_delete="delete gantry_pass_all_repeat where passid in("+sb_delete.toString()+")"; +// CommonHelp.excuteSql(sql_delete); +// sb_delete.delete(0,sb_delete.length()); + } + } catch (Exception e) { + + LogClass.error("系统异常:" + e.toString()); + } + + + } +} diff --git a/src/GPA/GetAllData.java b/src/GPA/GetAllData.java new file mode 100644 index 0000000..f061a2f --- /dev/null +++ b/src/GPA/GetAllData.java @@ -0,0 +1,62 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +import java.util.List; + +public class GetAllData extends Thread { + + private int threadId;//线程ID + private int isTimeOut; + private String sql;//sql语句 + private JdbcTemplate jdbcTemplate;//连接池 + private List list_PARTICIPANT; + private List list_LINE_TABLE; + private List list_FEEUNIT_TABLE; + private List list_GANTRY_TABLE; + private startGPA s; + private boolean runAble; + + + private static boolean flag = true; + + public GetAllData(int threadId, int isTimeOut, String sql, JdbcTemplate jdbcTemplate,List list_PARTICIPANT,List list_LINE_TABLE,List list_FEEUNIT_TABLE,List list_GANTRY_TABLE,boolean runAble,startGPA s){ + this.threadId=threadId; + this.sql=sql; + this.isTimeOut=isTimeOut; + this.jdbcTemplate=jdbcTemplate; + this.list_PARTICIPANT=list_PARTICIPANT; + this.list_LINE_TABLE=list_LINE_TABLE; + this.list_FEEUNIT_TABLE=list_FEEUNIT_TABLE; + this.list_GANTRY_TABLE=list_GANTRY_TABLE; + this.s=s; + this.runAble=runAble; + } + + public static void setStop(){ + System.out.println("停止线程。。。。"); + flag=false; + } + + @Override + public void run() { + while (runAble){ + + try { + s.UpdateState(Thread.currentThread().getId()); + GPA_DATA gpaData= new GPA_DATA(); + gpaData.GetAllETCData(sql,isTimeOut,threadId,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE); + + Thread.sleep(50); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + + + + + } +} diff --git a/src/GPA/GetGantryStat.java b/src/GPA/GetGantryStat.java new file mode 100644 index 0000000..08f95ce --- /dev/null +++ b/src/GPA/GetGantryStat.java @@ -0,0 +1,140 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +import java.util.List; +import java.util.Map; + +public class GetGantryStat implements Runnable{ + private JdbcTemplate jdbcTemplate; + private String sql; + private boolean runAble; + private startGPA s; + public GetGantryStat(JdbcTemplate jdbcTemplate,String sql,boolean runAble,startGPA s){ + this.jdbcTemplate=jdbcTemplate; + this.sql=sql; + this.runAble=runAble; + this.s=s; + } + @Override + public void run() { + while (runAble){ + try { + s.UpdateState(Thread.currentThread().getId()); + List list=jdbcTemplate.queryForList(sql); + String tollIntervalsId=""; + String stano=""; + String roadno=""; + StringBuilder delete_tradeid=new StringBuilder(); + if (list.size()>0){ + for (int i = 0; i < list.size(); i++) { + try { + Map map=(Map) list.get(i); + String[] tollIntervalsId_temp=map.get("TOLLINTERVALID")==null?null:map.get("TOLLINTERVALID").toString().split("\\|"); + String[] feeGroup_temp=map.get("FEEGROUP")==null?null:map.get("FEEGROUP").toString().split("\\|"); + String[] payfeeGroup_temp=map.get("PAYFEEGROUP")==null?null:map.get("PAYFEEGROUP").toString().split("\\|"); + String[] specialtype_temp=null; + if (map.get("SPECIALTYPE")!=null){ + if (map.get("SPECIALTYPE").toString().replace(" ","").length()>0){ + specialtype_temp=map.get("SPECIALTYPE").toString().split("\\|"); + } + } + + String is_have_gantry_trade_sql="SELECT * FROM gantry_trade_mass where gantryid='" +map.get("GANTRYID").toString() + "' and classdate=TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " +map.get("MEDIATYPE") + " AND VEHICLETYPE = " +map.get("FEEVEHICLETYPE"); + List list_trade_ishave=jdbcTemplate.queryForList(is_have_gantry_trade_sql); + + String boundarytype_sql = "select boundarytype from gantry_table where id='" + map.get("GANTRYID").toString() + "'"; + + List boundary=jdbcTemplate.queryForList(boundarytype_sql); + if (boundary.size()>0){ + int boundarytype=Integer.valueOf(((Map) boundary.get(0)).get("BOUNDARYTYPE").toString()); + if (list_trade_ishave.size()>0){ + int feesuccnum=0; + int feefailenum=0; + if (map.get("FEECALCRESULT").toString().equals("0") && map.get("TRADERESULT").toString().equals("0")){ + feesuccnum = 1; + } + else { + feefailenum = 1; + } +// JSONObject temp=new JSONObject(((Map) list_trade_ishave.get(0)).get("SPECIALTYPE").toString()); +// if (specialtype_temp!=null){ +// for (int j = 0; j < specialtype_temp.length; j++) { +// String special_value=""; +// if (specil_list.contains(Integer.valueOf(specialtype_temp[j]))){ +// +// } +// } +// } + + String update_gantry_trade = "update gantry_trade_mass set boundarytype = " + boundarytype + ", feesuccnum = feesuccnum+" + feesuccnum + ", feefailenum = feefailenum+" + feefailenum + ", specialtype = '' where gantryid = '" + map.get("GANTRYID").toString() + "' and classdate = TO_DATE('" +map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') and mediatype = " + map.get("MEDIATYPE") + " and vehicletype = " + map.get("FEEVEHICLETYPE"); + jdbcTemplate.update(update_gantry_trade); + + } + else { + String insert_gantry_trade= "insert into gantry_trade_mass (gantryid, classdate, mediatype, vehicletype, boundarytype, feesuccnum, feefailenum, specialtype, feelostnum) values ('" +map.get("GANTRYID").toString() + "', TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd'), " +map.get("MEDIATYPE") + ", " + map.get("FEEVEHICLETYPE") + ", " + boundarytype + ", 0, 0, '{}', 0) "; + jdbcTemplate.update(insert_gantry_trade); + } + + if (tollIntervalsId_temp!=null && feeGroup_temp!=null && payfeeGroup_temp!=null){ + if (tollIntervalsId_temp.length== feeGroup_temp.length && feeGroup_temp.length==payfeeGroup_temp.length){ + for (int j = 0; j < tollIntervalsId_temp.length; j++) { + if (tollIntervalsId_temp[j].length()>=16){ + tollIntervalsId=tollIntervalsId_temp[j].substring(0,16); + String stano_roadno_sql = "select ostano,oroadno from feeunit_table where id='" + tollIntervalsId + "'"; + List stano_roadno_list=jdbcTemplate.queryForList(stano_roadno_sql); + if (stano_roadno_list.size()>0){ + stano=((Map)stano_roadno_list.get(0)).get("OSTANO").toString(); + roadno=((Map)stano_roadno_list.get(0)).get("OROADNO").toString(); + } + else { + stano="0"; + roadno="0"; + } + + String is_have_sql = "SELECT 1 FROM DUAL WHERE EXISTS (SELECT * FROM gantry_stat where FEEUNITID='" + tollIntervalsId + "' and classdate=TO_DATE('" +map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " +map.get("MEDIATYPE") + " AND VEHTYPE = " +map.get("FEEVEHICLETYPE") + " AND ROADNO = " + roadno + " and STANO=" + stano + ")"; + List list_ishave=jdbcTemplate.queryForList(is_have_sql); + if (list_ishave.size()>0){ + String update_sql = "UPDATE GANTRY_STAT SET VEHCOUNT = VEHCOUNT + 1, CASH = TO_NUMBER(CASH) +TO_NUMBER(" + (payfeeGroup_temp[j].replace(" ","").length() == 0 ? "0" : payfeeGroup_temp[j]) + "), INCASH = TO_NUMBER(INCASH) +TO_NUMBER(" + (feeGroup_temp[j].replace(" ","").length() == 0 ? "0" : feeGroup_temp[j]) + ") where FEEUNITID='" + tollIntervalsId + "' and classdate=TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd') AND MEDIATYPE = " + map.get("MEDIATYPE") + " AND VEHTYPE = " + map.get("FEEVEHICLETYPE") + " AND ROADNO = " + roadno; + jdbcTemplate.update(update_sql); + } + else { + String insert_sql = "INSERT INTO GANTRY_STAT(ROADNO,STANO,CLASSDATE,FEEUNITID,MEDIATYPE, VEHTYPE,VEHCLASS,SPECIALTYPE,AXLECOUNT,VEHCOUNT,TRADERESULT,HOLIDAYSTATE,VALIDSTATUS,CASH,INCASH,FEESUMLOCALAFTER,BACKUP1,BACKUP2,BACKUP3,BACKUP4,DATEMARK) VALUES(" + roadno + ", " + stano + ", TO_DATE('" + map.get("TRANSTIME").toString().substring(0,10) + "', 'yyyy-mm-dd'), '" + tollIntervalsId + "', " + map.get("MEDIATYPE") + "," + map.get("FEEVEHICLETYPE") + ", 0, 0, 2, 1, 0, 0, 0," + (payfeeGroup_temp[j].replace(" ","").length() == 0 ? "0" : payfeeGroup_temp[j]) + ", " + (feeGroup_temp[j].replace(" ","").length() == 0 ? "0" : feeGroup_temp[j]) + ", 0, 0, 0, '0','0', SYSDATE)"; + jdbcTemplate.update(insert_sql); + } + } + } + + } + + } + + + String delete_sql="delete gantry_pass_stat_temp where tradeid='" +map.get("TRADEID") + "' "; + jdbcTemplate.update(delete_sql); + } + else { + LogClass.error("预分账错误日志:门架ID不存在,"+((Map) list.get(i)).get("TRADEID")); + } + + + + + } + catch (Exception e){ + LogClass.error("预分账错误日志:"+e.toString()+","+((Map) list.get(i)).get("TRADEID")); + } + } + } + + Thread.sleep(1000*30); + + } + catch (Exception e){ + LogClass.error("预拆分错误"+e.toString()); + } + + + } + } +} diff --git a/src/GPA/LogClass.java b/src/GPA/LogClass.java new file mode 100644 index 0000000..c112237 --- /dev/null +++ b/src/GPA/LogClass.java @@ -0,0 +1,133 @@ +package GPA; + +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +public class LogClass { + private static String log_path = new LogClass().getBasePath()+File.separator+"LogFile"+File.separator+new SimpleDateFormat("yyyy-MM-dd").format(new Date()); // 日志保存路径 + private static String log_name = "gantry_pass_all_log";// 日志文件名(前部分) + private static boolean console_out = true;// 日志是否输出到控制台 + /* + * yyyy-MM: 每个月更新一个log日志 yyyy-ww: 每个星期更新一个log日志 yyyy-MM-dd: 每天更新一个log日志 + * yyyy-MM-dd-a: 每天的午夜和正午更新一个log日志 yyyy-MM-dd-HH: 每小时更新一个log日志 + * yyyy-MM-dd-HH-mm: 每分钟更新一个log日志 + */ + private static String update_hz = "yyyy-MM-dd-HH";// 更新日志的频率,每小时更新一次 + private static long max_log_size = 1024 * 1024 * 10;// 单个日志文件最大大小 10M + + public static void debug(String msg) { + runWrite(msg, log_path, log_name + "_debug"); + } + + public static void info(String msg) { + runWrite(msg, log_path, log_name + "_info"); + } + + public static void error(String msg) { + runWrite(msg, log_path, log_name + "_error"); + } + + public static void delete(String msg) { + runWrite(msg, log_path, log_name + "_delete"); + } + + public static void test(String msg) { + runWrite(msg, log_path, log_name + "_test"); + } + public static void exception(Exception e) { + String errorMessage = e.getMessage() + ""; + StackTraceElement[] eArray = e.getCause().getStackTrace(); + for (int i = 0; i < eArray.length; i++) { + String className = e.getCause().getStackTrace()[i].getClassName(); + String MethodName = e.getCause().getStackTrace()[i].getMethodName(); + int LineNumber = e.getCause().getStackTrace()[i].getLineNumber(); + errorMessage = errorMessage + "\n\t---" + className + "." + MethodName + ",\tline:" + LineNumber; + } + logResult(errorMessage, log_path, log_name + "_exception"); + } + + /** + * 日志根目录 + * + * @return + */ + public String getBasePath() { + //String s = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); + if (System.getProperty("os.name").contains("dows")) { + path = path.substring(1, path.length()); + } + if (path.contains("jar")) { + path = path.substring(0, path.lastIndexOf(".")); + return path.substring(0, path.lastIndexOf("/")); + } + return path; + } + + /** + * 写日志 + * + * @param sWord + * 要写入日志里的文本内容 + */ + public static void logResult(String sWord) { + runWrite(sWord, log_path, log_name); + } + + public static void logResult(String sWord, String logPath, String logName) { + logPath=new LogClass().getBasePath()+File.separator+"LogFile"+File.separator+new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + FileWriter writer = null; + Lock lck=new ReentrantLock(); + lck.lock(); + try { + File dir = new File(logPath); + if (!dir.exists()) { + dir.mkdirs(); + } + String dt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()); + File f = new File(logPath+File.separator + logName + "_" + new SimpleDateFormat(update_hz).format(new Date()) + ".txt"); + if (!f.exists()) { + f.createNewFile(); + sWord = "DL 日志\r\n" + "[" + dt + "]\t" + sWord; + } else { + long logSize = f.length(); + // 文件大小超过10M,备份 + if (logSize >= max_log_size) { + String backLogName = logPath + logName + + new SimpleDateFormat("_yyyy-MM-dd.HHmmss.SSS").format(new Date()) + ".txt"; + f.renameTo(new File(backLogName)); + } + } + writer = new FileWriter(f, true); + writer.write("[" + dt + "]\t" + sWord + "\r\n"); + if (console_out) { + System.out.println("[" + dt + "]\t" + sWord); + } + } catch (Exception e) { + System.out.println("记录日志异常:" + e.toString()); + lck.unlock(); + e.printStackTrace(); + + } finally { + if (writer != null) { + try { + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + lck.unlock(); + } + } + public static void runWrite(final String sWord,final String logPath,final String logName) { + new Thread() { + public void run() { + logResult(sWord, logPath, logName); + } + }.start();; + } +} \ No newline at end of file diff --git a/src/GPA/SingleApplication.java b/src/GPA/SingleApplication.java new file mode 100644 index 0000000..653ede1 --- /dev/null +++ b/src/GPA/SingleApplication.java @@ -0,0 +1,53 @@ +package GPA; + +import java.io.File; +import java.io.RandomAccessFile; +import java.nio.channels.FileChannel; +import java.nio.channels.FileLock; + +public class SingleApplication { + public static void makeSingle(String singleId) { + + RandomAccessFile raf = null; + + FileChannel channel = null; + + FileLock lock = null; + + + try { + + // 在临时文件夹创建一个临时文件,锁住这个文件用来保证应用程序只有一个实例被创建. + + File sf = new File(System.getProperty("java.io.tmpdir") + singleId + ".single"); + + sf.deleteOnExit(); + + sf.createNewFile(); + + + raf = new RandomAccessFile(sf, "rw"); + + channel = raf.getChannel(); + + lock = channel.tryLock(); + + + if (lock == null) { + + // 如果没有得到锁,则程序退出. + + // 没有必要手动释放锁和关闭流,当程序退出时,他们会被关闭的. + + throw new Error("An instance of the application is running."); + + } + + } catch (Exception e) { + + e.printStackTrace(); + + } + + } +} diff --git a/src/GPA/XNY_GPA.java b/src/GPA/XNY_GPA.java new file mode 100644 index 0000000..667a92d --- /dev/null +++ b/src/GPA/XNY_GPA.java @@ -0,0 +1,27 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +import java.util.List; + +public class XNY_GPA { + public static void main(String[] args) throws Exception { + JdbcTemplate jdbcTemplate=new JdbcTemplate(new DBUtil().Hikar_DataSource()); + + boolean runAble=true; + List list_PARTICIPANT = CommonHelp.getListBySql("select * from TB_PARTICIPANT",jdbcTemplate); + + List list_LINE_TABLE=CommonHelp.getListBySql("select LINENAME,GBLINEID from line_table",jdbcTemplate); + + List list_FEEUNIT_TABLE=CommonHelp.getListBySql("select ID,NAME FROM FEEUNIT_TABLE",jdbcTemplate); + + List list_GANTRY_TABLE=CommonHelp.getListBySql("select * from gantry_table",jdbcTemplate); + + String sql="select * from gantry_pass_center where passid in (select passid from passid where rownum<=1)"; + GPA_DATA gpa_data=new GPA_DATA(); + gpa_data.GetAllETCData(sql,0,1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE); + + + + } +} diff --git a/src/GPA/deleteCenter.java b/src/GPA/deleteCenter.java new file mode 100644 index 0000000..a11bd29 --- /dev/null +++ b/src/GPA/deleteCenter.java @@ -0,0 +1,29 @@ +package GPA; + +import org.springframework.jdbc.core.JdbcTemplate; + +public class deleteCenter implements Runnable{ + private JdbcTemplate jdbcTemplate; + private String sql; + private boolean runAble; + private startGPA s; + public deleteCenter(JdbcTemplate jdbcTemplate,String sql,boolean runAble,startGPA s){ + this.jdbcTemplate=jdbcTemplate; + this.sql=sql; + this.runAble=runAble; + this.s=s; + } + public deleteCenter(){} + @Override + public void run() { + while (runAble){ + try { +// s.UpdateState(Thread.currentThread().getId()); + jdbcTemplate.update(sql); + Thread.sleep(1000*60*60*24); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/GPA/startGPA.java b/src/GPA/startGPA.java new file mode 100644 index 0000000..c29f29f --- /dev/null +++ b/src/GPA/startGPA.java @@ -0,0 +1,360 @@ +package GPA; + + +import org.springframework.jdbc.core.JdbcTemplate; + +import java.text.SimpleDateFormat; +import java.util.*; + +public class startGPA { + private final int MAX_ERROR_MSG=1000; + private List stop_list; + private List state_list; + private List ErrorMsg_list; + { + stop_list=new ArrayList<>(); + state_list=new ArrayList<>(); + ErrorMsg_list=new ArrayList<>(); + } + + + public static class State{ + long ThreadId; + long StateUpdateTime; + } + + public synchronized void UpdateState(long ThreadId){ + for (int i = 0; i < state_list.size(); i++) { + State s=state_list.get(i); + if (s.ThreadId==ThreadId){ + s.StateUpdateTime=System.currentTimeMillis(); + state_list.set(i,s); + } + } + } + public synchronized Date GetRunState(){ + long minTime=0; + for (int i = 0; i < state_list.size(); i++) { + State s=state_list.get(i); + if (s.StateUpdateTime < minTime || minTime==0){ + minTime=s.StateUpdateTime; + } + } + return new Date(minTime); + } + + public void WriteLog(String info){ + + } + public synchronized boolean init(String jarPath){ + WriteLog("软件启动"); + return true; + } + + boolean runAble=true; + + + public synchronized void stop(){ + runAble=false; + for (int i = 0; i < stop_list.size(); i++) { + Thread thread=stop_list.get(i); + try { + LogClass.debug("开始停止"+thread); + thread.join(1000); + LogClass.debug("已停止"+thread); + } + catch (Exception e){ + WriteLog("停止线程错误:"+e.getMessage()); + LogClass.debug("程序停止异常"+e.getMessage()); + } + } + stop_list.clear(); + state_list.clear(); + WriteLog("线程停止"); + } + + public synchronized String[] GetErrorLog(){ + int MsgCount=ErrorMsg_list.size(); + if (MsgCount>MAX_ERROR_MSG){ + MsgCount=MAX_ERROR_MSG; + } + String[] ErrorLogs=new String[MsgCount]; + for (int i = 0; i < MsgCount; i++) { + ErrorLogs[i]=ErrorMsg_list.get(i); + } + for (int i = 0; i < MsgCount; i++) { + ErrorMsg_list.remove(0); + } + return ErrorLogs; + } + + public synchronized void SetErrorLog(int Type,int MsgCode,String info){ + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String ErrorInfo="{\"TYPE\":"+String.valueOf(Type)+",\"MSGCODE\":"+String.valueOf(MsgCode)+",\"MSG\":"+String.valueOf(info)+",\"DT\":\""+sdf.format(new Date())+"\"}"; + ErrorMsg_list.add(ErrorInfo); + while (ErrorMsg_list.size()>MAX_ERROR_MSG){ + ErrorMsg_list.remove(0); + } + } + + public synchronized void exit(){ + WriteLog("软件退出"); + } + + public synchronized List startUp() throws Exception { + return Main_void("1"); + } + + private List Main_voidTest(String dbType) throws Exception { + try { + JdbcTemplate jdbcTemplate=new JdbcTemplate(new DBUtil().Hikar_DataSource()); + String sql4_1 = "delete gantry_pass_center where ROUND(TO_NUMBER(sysdate - handletime))>25"; + + deleteCenter deleteC=new deleteCenter(jdbcTemplate,sql4_1,runAble,this); + Thread thread=new Thread(deleteC); + thread.start();//true + + + stop_list.add(thread);//false + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + + + for (int i = 0; i < stop_list.size(); i++) { + LogClass.error("线程ID:"+stop_list.get(i).getId()+"线程状态:"+stop_list.get(i).isAlive()); + } + } + catch (Exception e){ + e.printStackTrace(); + } + finally { + return stop_list; + } + + + + } + private JdbcTemplate jdbcTemplate; + { + try { + jdbcTemplate = new JdbcTemplate(new DBUtil().Hikar_DataSource()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private List Main_void(String dbType) throws Exception { + boolean flag=true; + //List starup_list=new ArrayList<>(); + stop_list.clear(); + runAble=true; + try { + + + + List list_PARTICIPANT = CommonHelp.getListBySql("select * from TB_PARTICIPANT",jdbcTemplate); + + List list_LINE_TABLE=CommonHelp.getListBySql("select LINENAME,GBLINEID from line_table",jdbcTemplate); + + List list_FEEUNIT_TABLE=CommonHelp.getListBySql("select ID,NAME FROM FEEUNIT_TABLE",jdbcTemplate); + + List list_GANTRY_TABLE=CommonHelp.getListBySql("select * from gantry_table",jdbcTemplate); + + int GPA_THREAD_COUNT_1=13; + //正常数据处理线程,4个 + + if (dbType.equals("1")) {//oracle + for (int i = 0; i < GPA_THREAD_COUNT_1; i++) { + String sql="select * from gantry_pass_center where ishandle=0 and isout=1 and issecond=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut") + " and ora_hash(passid,"+(GPA_THREAD_COUNT_1-1)+")="+i+" order by transtime"; + Thread thread=new GetAllData((i+111),0,sql,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + } else if (dbType.equals("2")) {//DM + for (int i = 0; i < GPA_THREAD_COUNT_1; i++) { + String sql="select * from gantry_pass_center where ishandle=0 and isout=1 and issecond=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut") + " and DM_HASH(passid)%"+GPA_THREAD_COUNT_1+"="+i+" and rownum<=1500"; + Thread thread=new GetAllData((i+111),0,sql,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + } + //超时数据处理线程,3个 + + if (dbType.equals("1")) {//oracle + //超时第一种情况--有出口但是累计金额不相等的 + + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); + + + List> listTemp=new ArrayList<>(); + + //有出口有计费就直接汇总 + for (int i = 0; i <= 6; i++) { + String sql2_1_1 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and payfee_all>0 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)="+i; + Map map2_1_1=new HashMap(); + map2_1_1.put("sql",sql2_1_1); + map2_1_1.put("threadid",201); + listTemp.add(map2_1_1); + } + + + //有出口无计费则按照正常超时汇总逻辑汇总 + String sql2_1_2 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and payfee_all<=0 and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where rownum<=1000"; + Map map2_1_2=new HashMap(); + map2_1_2.put("sql",sql2_1_2); + map2_1_2.put("threadid",202); + listTemp.add(map2_1_2); + + + +// for (int i = 0; i <= 6; i++) { +// String sql2_1_1 = "select * from(select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+") t where ora_hash(passid,6)="+i; +// Map map=new HashMap(); +// map.put("sql",sql2_1_1); +// map.put("threadid",200+i+1); +// listTemp.add(map); +// } + Map map1=new HashMap(); + map1.put("sql",sql2_2_1); + map1.put("threadid",208); + listTemp.add(map1); + + Map map2=new HashMap(); + map2.put("sql",sql2_3_1); + map2.put("threadid",209); + listTemp.add(map2); + + for (int i = 0; i < listTemp.size(); i++) { + Map map=listTemp.get(i); + Thread thread=new GetAllData(Integer.valueOf(map.get("threadid").toString()),1,map.get("sql").toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread.start(); + stop_list.add(thread); + startGPA.State state=new startGPA.State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + + + +// //超时第一种情况--有出口但是累计金额不相等的 +// String sql2_1_1 = "select * from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); +// //超时第二种情况--累计金额相等但是没有出口的 +// String sql2_2_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); +// //超时第三种情况--没有出口累计金额也不相等的 +// String sql2_3_1 = "select * from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut"); +// +// List listTemp=new ArrayList<>(); +// listTemp.add(sql2_1_1); +// listTemp.add(sql2_2_1); +// listTemp.add(sql2_3_1); +// +// for (int i = 0; i < listTemp.size(); i++) { +// +// Thread thread=new GetAllData((21+i),1,listTemp.get(i).toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); +// thread.start(); +// stop_list.add(thread); +// State state=new State(); +// state.ThreadId=thread.getId(); +// state.StateUpdateTime=System.currentTimeMillis(); +// state_list.add(state); +// } + + + } else if (dbType.equals("2")) {//DM + + //超时第一种情况--有出口但是累计金额不相等的技巧口诀图解 + String sql2_1_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=1 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + //超时第二种情况--累计金额相等但是没有出口的 + String sql2_2_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=0 and payfee_all=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + //超时第三种情况--没有出口累计金额也不相等的 + String sql2_3_1 = "select PASSID,OUT_TRADEID,PAYFEE_ALL,FEE_ALL,OBUPROVPAYFEESUMAFTER,TRANSTIME,TRADEID,ISOUT,DISCOUNTFEE_ALL,OUT_GANTRYID,ISHANDLE,ID,FEEPROVBEGINHEX,FEEPROVBEGINTIME,HANDLETIME,EXPOINTID,EXPOINTNAME,MEDIATYPE,ISTIMEOUT,ISSECOND,UPDATETIME,ENTIME,TRANSNUM,PROVINCENUMAFTER,BACKUP3 from gantry_pass_center where ishandle=0 and isout=0 and payfee_all!=obuprovpayfeesumafter and ROUND(TO_NUMBER(sysdate - transtime) * 24 * 60)>" + CommonHelp.GetConfigValue("timeOut") + " and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60) > " + CommonHelp.GetConfigValue("lastTimeOut")+" and rownum<=1500"; + + List listTemp=new ArrayList<>(); + listTemp.add(sql2_1_1); + listTemp.add(sql2_2_1); + listTemp.add(sql2_3_1); + + for (int i = 0; i < listTemp.size(); i++) { + Thread thread=new GetAllData((21+i),1,listTemp.get(i).toString(),jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + } + //二次数据上传处理线程,1个 + String sql3_1 = ""; + if (dbType.equals("1")) {//oracle + sql3_1 = "select * from gantry_pass_center where ishandle=1 and issecond=1 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut"); + + Thread thread3_1=new GetAllData(301,0,sql3_1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread3_1.start(); + + stop_list.add(thread3_1); + State state3_1=new State(); + state3_1.ThreadId=thread3_1.getId(); + state3_1.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state3_1); + } else if (dbType.equals("2")) {//DM + sql3_1 = "select * from gantry_pass_center where ishandle=1 and issecond=1 and ROUND(TO_NUMBER(sysdate - updatetime) * 24 * 60)>" + CommonHelp.GetConfigValue("lastTimeOut"); + + Thread thread3_1= new GetAllData(301,0,sql3_1,jdbcTemplate,list_PARTICIPANT,list_LINE_TABLE,list_FEEUNIT_TABLE,list_GANTRY_TABLE,runAble,this); + thread3_1.start(); + } + //删除中间表数据线程,1个 + if (dbType.equals("1")) { + String sql4_1 = "delete gantry_pass_center where ROUND(TO_NUMBER(sysdate - handletime))>25"; + deleteCenter deleteC=new deleteCenter(jdbcTemplate,sql4_1,runAble,this); + Thread thread=new Thread(deleteC); + thread.start(); +// stop_list.add(thread); +// State state=new State(); +// state.ThreadId=thread.getId(); +// state.StateUpdateTime=System.currentTimeMillis(); +// state_list.add(state); + } + //预分账线程,7个 + int THREAD_GANTRY_STAT_COUNT=7; + for (int i = 0; i < THREAD_GANTRY_STAT_COUNT; i++) { + String sql="select * from gantry_pass_stat_temp where ora_hash(tradeid,"+(THREAD_GANTRY_STAT_COUNT-1)+")="+i+" and rownum<=1000"; + GetGantryStat getGantryStat=new GetGantryStat(jdbcTemplate,sql,runAble,this); + Thread thread=new Thread(getGantryStat); + thread.start(); + stop_list.add(thread); + State state=new State(); + state.ThreadId=thread.getId(); + state.StateUpdateTime=System.currentTimeMillis(); + state_list.add(state); + } + + } + catch (Exception e){ + flag=false; + e.printStackTrace(); + LogClass.debug(e.toString()); + } + finally { + return stop_list; + } + + } + +} diff --git a/src/META-INF/MANIFEST.MF b/src/META-INF/MANIFEST.MF new file mode 100644 index 0000000..a33408e --- /dev/null +++ b/src/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: GPA.GAMIN + diff --git a/src/com/trkf/feemoduleservice/FeeModuleService.class b/src/com/trkf/feemoduleservice/FeeModuleService.class new file mode 100644 index 0000000..47d4abd Binary files /dev/null and b/src/com/trkf/feemoduleservice/FeeModuleService.class differ diff --git a/src/com/trkf/feemoduleservice/FeeModuleService.java b/src/com/trkf/feemoduleservice/FeeModuleService.java new file mode 100644 index 0000000..dcc2807 --- /dev/null +++ b/src/com/trkf/feemoduleservice/FeeModuleService.java @@ -0,0 +1,57 @@ + +package com.trkf.feemoduleservice; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebResult; +import javax.jws.WebService; +import javax.xml.bind.annotation.XmlSeeAlso; +import javax.xml.ws.Action; +import javax.xml.ws.RequestWrapper; +import javax.xml.ws.ResponseWrapper; + + +/** + * This class was generated by the JAX-WS RI. + * JAX-WS RI 2.2.9-b130926.1035 + * Generated source version: 2.2 + * + */ +@WebService(name = "FeeModuleService", targetNamespace = "http://FeeModuleService.trkf.com/") +@XmlSeeAlso({ + ObjectFactory.class +}) +public interface FeeModuleService { + + + /** + * + * @param arg0 + * @return + * returns java.lang.String + */ + @WebMethod + @WebResult(targetNamespace = "") + @RequestWrapper(localName = "getFee", targetNamespace = "http://FeeModuleService.trkf.com/", className = "com.trkf.feemoduleservice.GetFee") + @ResponseWrapper(localName = "getFeeResponse", targetNamespace = "http://FeeModuleService.trkf.com/", className = "com.trkf.feemoduleservice.GetFeeResponse") + @Action(input = "http://FeeModuleService.trkf.com/FeeModuleService/getFeeRequest", output = "http://FeeModuleService.trkf.com/FeeModuleService/getFeeResponse") + public String getFee( + @WebParam(name = "arg0", targetNamespace = "") + String arg0); + + /** + * + * @param arg0 + * @return + * returns java.lang.String + */ + @WebMethod(operationName = "GetStaFee") + @WebResult(targetNamespace = "") + @RequestWrapper(localName = "GetStaFee", targetNamespace = "http://FeeModuleService.trkf.com/", className = "com.trkf.feemoduleservice.GetStaFee") + @ResponseWrapper(localName = "GetStaFeeResponse", targetNamespace = "http://FeeModuleService.trkf.com/", className = "com.trkf.feemoduleservice.GetStaFeeResponse") + @Action(input = "http://FeeModuleService.trkf.com/FeeModuleService/GetStaFeeRequest", output = "http://FeeModuleService.trkf.com/FeeModuleService/GetStaFeeResponse") + public String getStaFee( + @WebParam(name = "arg0", targetNamespace = "") + String arg0); + +} diff --git a/src/com/trkf/feemoduleservice/FeeModuleService.wsdl b/src/com/trkf/feemoduleservice/FeeModuleService.wsdl new file mode 100644 index 0000000..97f94af --- /dev/null +++ b/src/com/trkf/feemoduleservice/FeeModuleService.wsdl @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/com/trkf/feemoduleservice/FeeModuleServiceService.class b/src/com/trkf/feemoduleservice/FeeModuleServiceService.class new file mode 100644 index 0000000..6429f00 Binary files /dev/null and b/src/com/trkf/feemoduleservice/FeeModuleServiceService.class differ diff --git a/src/com/trkf/feemoduleservice/FeeModuleServiceService.java b/src/com/trkf/feemoduleservice/FeeModuleServiceService.java new file mode 100644 index 0000000..ace07f2 --- /dev/null +++ b/src/com/trkf/feemoduleservice/FeeModuleServiceService.java @@ -0,0 +1,95 @@ + +package com.trkf.feemoduleservice; + +import java.net.MalformedURLException; +import java.net.URL; +import javax.xml.namespace.QName; +import javax.xml.ws.Service; +import javax.xml.ws.WebEndpoint; +import javax.xml.ws.WebServiceClient; +import javax.xml.ws.WebServiceException; +import javax.xml.ws.WebServiceFeature; + + +/** + * This class was generated by the JAX-WS RI. + * JAX-WS RI 2.2.9-b130926.1035 + * Generated source version: 2.2 + * + */ +@WebServiceClient(name = "FeeModuleServiceService", targetNamespace = "http://FeeModuleService.trkf.com/", wsdlLocation = "http://10.15.99.78:8081/FeeModuleService/FeeModuleService?wsdl") +public class FeeModuleServiceService + extends Service +{ + + private final static URL FEEMODULESERVICESERVICE_WSDL_LOCATION; + private final static WebServiceException FEEMODULESERVICESERVICE_EXCEPTION; + private final static QName FEEMODULESERVICESERVICE_QNAME = new QName("http://FeeModuleService.trkf.com/", "FeeModuleServiceService"); + + static { + URL url = null; + WebServiceException e = null; + try { + url = new URL("http://10.15.99.78:8080/FeeModuleService/FeeModuleService?wsdl"); + //url = new URL("http://10.15.99.88:8080/FeeModuleService/FeeModuleService?wsdl"); + } catch (MalformedURLException ex) { + e = new WebServiceException(ex); + } + FEEMODULESERVICESERVICE_WSDL_LOCATION = url; + FEEMODULESERVICESERVICE_EXCEPTION = e; + } + + public FeeModuleServiceService() { + super(__getWsdlLocation(), FEEMODULESERVICESERVICE_QNAME); + } + + public FeeModuleServiceService(WebServiceFeature... features) { + super(__getWsdlLocation(), FEEMODULESERVICESERVICE_QNAME, features); + } + + public FeeModuleServiceService(URL wsdlLocation) { + super(wsdlLocation, FEEMODULESERVICESERVICE_QNAME); + } + + public FeeModuleServiceService(URL wsdlLocation, WebServiceFeature... features) { + super(wsdlLocation, FEEMODULESERVICESERVICE_QNAME, features); + } + + public FeeModuleServiceService(URL wsdlLocation, QName serviceName) { + super(wsdlLocation, serviceName); + } + + public FeeModuleServiceService(URL wsdlLocation, QName serviceName, WebServiceFeature... features) { + super(wsdlLocation, serviceName, features); + } + + /** + * + * @return + * returns FeeModuleService + */ + @WebEndpoint(name = "FeeModuleServicePort") + public FeeModuleService getFeeModuleServicePort() { + return super.getPort(new QName("http://FeeModuleService.trkf.com/", "FeeModuleServicePort"), FeeModuleService.class); + } + + /** + * + * @param features + * A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the features parameter will have their default values. + * @return + * returns FeeModuleService + */ + @WebEndpoint(name = "FeeModuleServicePort") + public FeeModuleService getFeeModuleServicePort(WebServiceFeature... features) { + return super.getPort(new QName("http://FeeModuleService.trkf.com/", "FeeModuleServicePort"), FeeModuleService.class, features); + } + + private static URL __getWsdlLocation() { + if (FEEMODULESERVICESERVICE_EXCEPTION!= null) { + throw FEEMODULESERVICESERVICE_EXCEPTION; + } + return FEEMODULESERVICESERVICE_WSDL_LOCATION; + } + +} diff --git a/src/com/trkf/feemoduleservice/GetFee.class b/src/com/trkf/feemoduleservice/GetFee.class new file mode 100644 index 0000000..79e2bc3 Binary files /dev/null and b/src/com/trkf/feemoduleservice/GetFee.class differ diff --git a/src/com/trkf/feemoduleservice/GetFee.java b/src/com/trkf/feemoduleservice/GetFee.java new file mode 100644 index 0000000..03b2291 --- /dev/null +++ b/src/com/trkf/feemoduleservice/GetFee.java @@ -0,0 +1,60 @@ + +package com.trkf.feemoduleservice; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

getFee complex type Java ࡣ + * + *

ģʽƬָڴеԤݡ + * + *

+ * <complexType name="getFee">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="arg0" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "getFee", propOrder = { + "arg0" +}) +public class GetFee { + + protected String arg0; + + /** + * ȡarg0Եֵ + * + * @return + * possible object is + * {@link String } + * + */ + public String getArg0() { + return arg0; + } + + /** + * arg0Եֵ + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setArg0(String value) { + this.arg0 = value; + } + +} diff --git a/src/com/trkf/feemoduleservice/GetFeeResponse.class b/src/com/trkf/feemoduleservice/GetFeeResponse.class new file mode 100644 index 0000000..5a6f025 Binary files /dev/null and b/src/com/trkf/feemoduleservice/GetFeeResponse.class differ diff --git a/src/com/trkf/feemoduleservice/GetFeeResponse.java b/src/com/trkf/feemoduleservice/GetFeeResponse.java new file mode 100644 index 0000000..50d3b2e --- /dev/null +++ b/src/com/trkf/feemoduleservice/GetFeeResponse.java @@ -0,0 +1,62 @@ + +package com.trkf.feemoduleservice; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

getFeeResponse complex type Java ࡣ + * + *

ģʽƬָڴеԤݡ + * + *

+ * <complexType name="getFeeResponse">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="return" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "getFeeResponse", propOrder = { + "_return" +}) +public class GetFeeResponse { + + @XmlElement(name = "return") + protected String _return; + + /** + * ȡreturnԵֵ + * + * @return + * possible object is + * {@link String } + * + */ + public String getReturn() { + return _return; + } + + /** + * returnԵֵ + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setReturn(String value) { + this._return = value; + } + +} diff --git a/src/com/trkf/feemoduleservice/GetStaFee.class b/src/com/trkf/feemoduleservice/GetStaFee.class new file mode 100644 index 0000000..2517568 Binary files /dev/null and b/src/com/trkf/feemoduleservice/GetStaFee.class differ diff --git a/src/com/trkf/feemoduleservice/GetStaFee.java b/src/com/trkf/feemoduleservice/GetStaFee.java new file mode 100644 index 0000000..33e6965 --- /dev/null +++ b/src/com/trkf/feemoduleservice/GetStaFee.java @@ -0,0 +1,60 @@ + +package com.trkf.feemoduleservice; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

GetStaFee complex type Java ࡣ + * + *

ģʽƬָڴеԤݡ + * + *

+ * <complexType name="GetStaFee">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="arg0" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "GetStaFee", propOrder = { + "arg0" +}) +public class GetStaFee { + + protected String arg0; + + /** + * ȡarg0Եֵ + * + * @return + * possible object is + * {@link String } + * + */ + public String getArg0() { + return arg0; + } + + /** + * arg0Եֵ + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setArg0(String value) { + this.arg0 = value; + } + +} diff --git a/src/com/trkf/feemoduleservice/GetStaFeeResponse.class b/src/com/trkf/feemoduleservice/GetStaFeeResponse.class new file mode 100644 index 0000000..7410049 Binary files /dev/null and b/src/com/trkf/feemoduleservice/GetStaFeeResponse.class differ diff --git a/src/com/trkf/feemoduleservice/GetStaFeeResponse.java b/src/com/trkf/feemoduleservice/GetStaFeeResponse.java new file mode 100644 index 0000000..0728f18 --- /dev/null +++ b/src/com/trkf/feemoduleservice/GetStaFeeResponse.java @@ -0,0 +1,62 @@ + +package com.trkf.feemoduleservice; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

GetStaFeeResponse complex type Java ࡣ + * + *

ģʽƬָڴеԤݡ + * + *

+ * <complexType name="GetStaFeeResponse">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="return" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "GetStaFeeResponse", propOrder = { + "_return" +}) +public class GetStaFeeResponse { + + @XmlElement(name = "return") + protected String _return; + + /** + * ȡreturnԵֵ + * + * @return + * possible object is + * {@link String } + * + */ + public String getReturn() { + return _return; + } + + /** + * returnԵֵ + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setReturn(String value) { + this._return = value; + } + +} diff --git a/src/com/trkf/feemoduleservice/ObjectFactory.class b/src/com/trkf/feemoduleservice/ObjectFactory.class new file mode 100644 index 0000000..346aeb2 Binary files /dev/null and b/src/com/trkf/feemoduleservice/ObjectFactory.class differ diff --git a/src/com/trkf/feemoduleservice/ObjectFactory.java b/src/com/trkf/feemoduleservice/ObjectFactory.java new file mode 100644 index 0000000..f3631df --- /dev/null +++ b/src/com/trkf/feemoduleservice/ObjectFactory.java @@ -0,0 +1,107 @@ + +package com.trkf.feemoduleservice; + +import javax.xml.bind.JAXBElement; +import javax.xml.bind.annotation.XmlElementDecl; +import javax.xml.bind.annotation.XmlRegistry; +import javax.xml.namespace.QName; + + +/** + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the com.trkf.feemoduleservice package. + *

An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. + * + */ +@XmlRegistry +public class ObjectFactory { + + private final static QName _GetFeeResponse_QNAME = new QName("http://FeeModuleService.trkf.com/", "getFeeResponse"); + private final static QName _GetStaFeeResponse_QNAME = new QName("http://FeeModuleService.trkf.com/", "GetStaFeeResponse"); + private final static QName _GetFee_QNAME = new QName("http://FeeModuleService.trkf.com/", "getFee"); + private final static QName _GetStaFee_QNAME = new QName("http://FeeModuleService.trkf.com/", "GetStaFee"); + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: com.trkf.feemoduleservice + * + */ + public ObjectFactory() { + } + + /** + * Create an instance of {@link GetFeeResponse } + * + */ + public GetFeeResponse createGetFeeResponse() { + return new GetFeeResponse(); + } + + /** + * Create an instance of {@link GetFee } + * + */ + public GetFee createGetFee() { + return new GetFee(); + } + + /** + * Create an instance of {@link GetStaFee } + * + */ + public GetStaFee createGetStaFee() { + return new GetStaFee(); + } + + /** + * Create an instance of {@link GetStaFeeResponse } + * + */ + public GetStaFeeResponse createGetStaFeeResponse() { + return new GetStaFeeResponse(); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link GetFeeResponse }{@code >}} + * + */ + @XmlElementDecl(namespace = "http://FeeModuleService.trkf.com/", name = "getFeeResponse") + public JAXBElement createGetFeeResponse(GetFeeResponse value) { + return new JAXBElement(_GetFeeResponse_QNAME, GetFeeResponse.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link GetStaFeeResponse }{@code >}} + * + */ + @XmlElementDecl(namespace = "http://FeeModuleService.trkf.com/", name = "GetStaFeeResponse") + public JAXBElement createGetStaFeeResponse(GetStaFeeResponse value) { + return new JAXBElement(_GetStaFeeResponse_QNAME, GetStaFeeResponse.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link GetFee }{@code >}} + * + */ + @XmlElementDecl(namespace = "http://FeeModuleService.trkf.com/", name = "getFee") + public JAXBElement createGetFee(GetFee value) { + return new JAXBElement(_GetFee_QNAME, GetFee.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link GetStaFee }{@code >}} + * + */ + @XmlElementDecl(namespace = "http://FeeModuleService.trkf.com/", name = "GetStaFee") + public JAXBElement createGetStaFee(GetStaFee value) { + return new JAXBElement(_GetStaFee_QNAME, GetStaFee.class, null, value); + } + +} diff --git a/src/com/trkf/feemoduleservice/package-info.class b/src/com/trkf/feemoduleservice/package-info.class new file mode 100644 index 0000000..b9553e7 Binary files /dev/null and b/src/com/trkf/feemoduleservice/package-info.class differ diff --git a/src/com/trkf/feemoduleservice/package-info.java b/src/com/trkf/feemoduleservice/package-info.java new file mode 100644 index 0000000..1782aa7 --- /dev/null +++ b/src/com/trkf/feemoduleservice/package-info.java @@ -0,0 +1,2 @@ +@javax.xml.bind.annotation.XmlSchema(namespace = "http://FeeModuleService.trkf.com/") +package com.trkf.feemoduleservice; diff --git a/src/druid.properties b/src/druid.properties new file mode 100644 index 0000000..7cc1ffa --- /dev/null +++ b/src/druid.properties @@ -0,0 +1,18 @@ +url=jdbc:oracle:oci:@//10.15.100.5:1521/torcl +#ȱʡģurlԶʶ +driverClassName=oracle.jdbc.driver.OracleDriver +username=nmgmpayadmin +password=nmgh90[] + +##ʼĬ0 +initialSize=16 +#Ĭ8 +maxActive=32 +#С +minIdle=1 +#ȡӵȴʱ䣬λ +maxWait=10000 +#PreparedStatementĬfalse +poolPreparedStatements=true +#PreparedStatementĬ-1棩0ʱԶPreparedStatementԿʡһ +maxOpenPreparedStatements=20 \ No newline at end of file diff --git a/src/lib/HikariCP-3.3.1.jar b/src/lib/HikariCP-3.3.1.jar new file mode 100644 index 0000000..476e0c0 Binary files /dev/null and b/src/lib/HikariCP-3.3.1.jar differ diff --git a/src/lib/dom4j-2.0.3.jar b/src/lib/dom4j-2.0.3.jar new file mode 100644 index 0000000..1ef5c52 Binary files /dev/null and b/src/lib/dom4j-2.0.3.jar differ diff --git a/src/lib/fastjson-1.2.83.jar b/src/lib/fastjson-1.2.83.jar new file mode 100644 index 0000000..fd843ae Binary files /dev/null and b/src/lib/fastjson-1.2.83.jar differ diff --git a/src/lib/ojdbc6.jar b/src/lib/ojdbc6.jar new file mode 100644 index 0000000..8240f40 Binary files /dev/null and b/src/lib/ojdbc6.jar differ diff --git a/src/lib/slf4j-api-1.7.25.jar b/src/lib/slf4j-api-1.7.25.jar new file mode 100644 index 0000000..0143c09 Binary files /dev/null and b/src/lib/slf4j-api-1.7.25.jar differ diff --git a/src/lib/slf4j-simple-1.7.25.jar b/src/lib/slf4j-simple-1.7.25.jar new file mode 100644 index 0000000..a7260f3 Binary files /dev/null and b/src/lib/slf4j-simple-1.7.25.jar differ diff --git a/src/lib/spring-beans-5.2.16.RELEASE.jar b/src/lib/spring-beans-5.2.16.RELEASE.jar new file mode 100644 index 0000000..40dc420 Binary files /dev/null and b/src/lib/spring-beans-5.2.16.RELEASE.jar differ diff --git a/src/lib/spring-core-5.2.16.RELEASE.jar b/src/lib/spring-core-5.2.16.RELEASE.jar new file mode 100644 index 0000000..74f1ceb Binary files /dev/null and b/src/lib/spring-core-5.2.16.RELEASE.jar differ diff --git a/src/lib/spring-jcl-5.2.16.RELEASE.jar b/src/lib/spring-jcl-5.2.16.RELEASE.jar new file mode 100644 index 0000000..1c85dab Binary files /dev/null and b/src/lib/spring-jcl-5.2.16.RELEASE.jar differ diff --git a/src/lib/spring-jdbc-5.2.16.RELEASE.jar b/src/lib/spring-jdbc-5.2.16.RELEASE.jar new file mode 100644 index 0000000..acaa0af Binary files /dev/null and b/src/lib/spring-jdbc-5.2.16.RELEASE.jar differ diff --git a/src/lib/spring-tx-5.2.16.RELEASE.jar b/src/lib/spring-tx-5.2.16.RELEASE.jar new file mode 100644 index 0000000..3c879ce Binary files /dev/null and b/src/lib/spring-tx-5.2.16.RELEASE.jar differ