Commit 5fbc5d5d7757e38bdfac036de89830612b500011

Authored by 王通
1 parent c456e24b

1.

Too many changes to show.

To preserve performance only 7 of 16 files are displayed.

1   -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2   - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3   -
4   - <modelVersion>4.0.0</modelVersion>
5   - <groupId>com.bsth</groupId>
6   - <artifactId>bsth_control</artifactId>
7   - <version>0.0.1-SNAPSHOT</version>
8   - <packaging>jar</packaging>
9   -
10   - <parent>
11   - <groupId>org.springframework.boot</groupId>
12   - <artifactId>spring-boot-starter-parent</artifactId>
13   - <version>1.3.3.RELEASE</version>
14   - </parent>
15   -
16   - <dependencies>
17   - <dependency>
18   - <groupId>org.springframework.boot</groupId>
19   - <artifactId>spring-boot-starter-web</artifactId>
20   - </dependency>
21   -
22   - <dependency>
23   - <groupId>org.springframework.boot</groupId>
24   - <artifactId>spring-boot-starter-tomcat</artifactId>
25   - <scope>provided</scope>
26   - </dependency>
27   - <dependency>
28   - <groupId>javax.servlet</groupId>
29   - <artifactId>javax.servlet-api</artifactId>
30   - <version>3.1.0</version>
31   - <scope>provided</scope>
32   - </dependency>
33   - <dependency>
34   - <groupId>org.springframework.boot</groupId>
35   - <artifactId>spring-boot-starter-security</artifactId>
36   - </dependency>
37   - <!-- <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId>
38   - </dependency> -->
39   - <dependency>
40   - <groupId>org.springframework.boot</groupId>
41   - <artifactId>spring-boot-starter-data-jpa</artifactId>
42   - </dependency>
43   - <dependency>
44   - <groupId>org.springframework.boot</groupId>
45   - <artifactId>spring-boot-starter-aop</artifactId>
46   - </dependency>
47   -
48   - <dependency>
49   - <groupId>org.springframework</groupId>
50   - <artifactId>spring-context-support</artifactId>
51   - </dependency>
52   - <dependency>
53   - <groupId>org.springframework.boot</groupId>
54   - <artifactId>spring-boot-starter-redis</artifactId>
55   - </dependency>
56   - <dependency>
57   - <groupId>org.springframework.boot</groupId>
58   - <artifactId>spring-boot-starter-websocket</artifactId>
59   - </dependency>
60   - <dependency>
61   - <groupId>mysql</groupId>
62   - <artifactId>mysql-connector-java</artifactId>
63   - </dependency>
64   -
65   - <dependency>
66   - <groupId>joda-time</groupId>
67   - <artifactId>joda-time</artifactId>
68   - </dependency>
69   - <dependency>
70   - <groupId>com.alibaba</groupId>
71   - <artifactId>fastjson</artifactId>
72   - <version>1.2.4</version>
73   - </dependency>
74   -
75   - <dependency>
76   - <groupId>org.apache.httpcomponents</groupId>
77   - <artifactId>httpclient</artifactId>
78   - </dependency>
79   -
80   - <dependency>
81   - <groupId>commons-dbcp</groupId>
82   - <artifactId>commons-dbcp</artifactId>
83   - </dependency>
84   - <dependency>
85   - <groupId>commons-lang</groupId>
86   - <artifactId>commons-lang</artifactId>
87   - <version>2.6</version>
88   - </dependency>
89   - <dependency>
90   - <groupId>org.apache.commons</groupId>
91   - <artifactId>commons-lang3</artifactId>
92   - <version>3.4</version>
93   - </dependency>
94   - <dependency>
95   - <groupId>commons-fileupload</groupId>
96   - <artifactId>commons-fileupload</artifactId>
97   - <version>1.2.2</version>
98   - </dependency>
99   - <dependency>
100   - <groupId>commons-io</groupId>
101   - <artifactId>commons-io</artifactId>
102   - <version>2.4</version>
103   - </dependency>
104   - <dependency>
105   - <groupId>org.codehaus.janino</groupId>
106   - <artifactId>janino</artifactId>
107   - </dependency>
108   -
109   - <dependency>
110   - <groupId>org.apache.poi</groupId>
111   - <artifactId>poi-ooxml</artifactId>
112   - <version>3.13</version>
113   - </dependency>
114   -
115   - <dependency>
116   - <groupId>com.google.guava</groupId>
117   - <artifactId>guava</artifactId>
118   - <version>19.0</version>
119   - </dependency>
120   - <!-- ftp文件上传包 -->
121   - <dependency>
122   - <groupId>commons-net</groupId>
123   - <artifactId>commons-net</artifactId>
124   - <version>3.5</version>
125   - </dependency>
126   - <dependency>
127   - <groupId>org.apache.commons</groupId>
128   - <artifactId>commons-compress</artifactId>
129   - <version>1.3</version>
130   - </dependency>
131   - <!-- drools 6依赖 -->
132   - <dependency>
133   - <groupId>org.kie</groupId>
134   - <artifactId>kie-api</artifactId>
135   - </dependency>
136   - <dependency>
137   - <groupId>org.drools</groupId>
138   - <artifactId>drools-compiler</artifactId>
139   - </dependency>
140   -
141   - <!-- springboot测试 -->
142   - <dependency>
143   - <groupId>org.springframework.boot</groupId>
144   - <artifactId>spring-boot-starter-test</artifactId>
145   - <scope>test</scope>
146   - </dependency>
147   -
148   - <dependency>
149   - <groupId>c3p0</groupId>
150   - <artifactId>c3p0</artifactId>
151   - <version>0.9.1.2</version>
152   - </dependency>
153   -
154   - <!-- 图表 -->
155   - <dependency>
156   - <groupId>com.google.code.gson</groupId>
157   - <artifactId>gson</artifactId>
158   - <version>2.2.4</version>
159   - </dependency>
160   - <dependency>
161   - <groupId>com.github.abel533</groupId>
162   - <artifactId>ECharts</artifactId>
163   - <version>2.1.8</version>
164   - </dependency>
165   -
166   - <dependency>
167   - <groupId>org.apache.tika</groupId>
168   - <artifactId>tika-core</artifactId>
169   - <version>1.7</version>
170   - </dependency>
171   -
172   - <!-- pentaho kettle 依赖 -->
173   - <dependency>
174   - <groupId>com.pentaho.kettle</groupId>
175   - <artifactId>kettle-core</artifactId>
176   - <version>6.0.1.0-386</version>
177   - </dependency>
178   - <dependency>
179   - <groupId>com.pentaho.kettle</groupId>
180   - <artifactId>kettle-engine</artifactId>
181   - <version>6.0.1.0-386</version>
182   - </dependency>
183   - <dependency>
184   - <groupId>com.pentaho.kettle</groupId>
185   - <artifactId>metastore</artifactId>
186   - <version>6.0.1.0-386</version>
187   - </dependency>
188   - <dependency>
189   - <groupId>com.pentaho.kettle</groupId>
190   - <artifactId>vfs2</artifactId>
191   - <version>2.1-20150824</version>
192   - </dependency>
193   - <dependency>
194   - <groupId>net.sourceforge.jexcelapi</groupId>
195   - <artifactId>jxl</artifactId>
196   - <version>2.6.12</version>
197   - <exclusions>
198   - <exclusion>
199   - <groupId>log4j</groupId>
200   - <artifactId>log4j</artifactId>
201   - </exclusion>
202   - </exclusions>
203   - </dependency>
204   - <dependency>
205   - <groupId>rhino</groupId>
206   - <artifactId>js</artifactId>
207   - <version>1.7R2</version>
208   - </dependency>
209   - <dependency>
210   - <groupId>javax.mail</groupId>
211   - <artifactId>mail</artifactId>
212   - <version>1.4.7</version>
213   - </dependency>
214   -
215   - <dependency>
216   - <groupId>com.github.axet</groupId>
217   - <artifactId>kaptcha</artifactId>
218   - <version>0.0.9</version>
219   - </dependency>
220   -
221   - <dependency>
222   - <groupId>commons-codec</groupId>
223   - <artifactId>commons-codec</artifactId>
224   - <version>1.4</version>
225   - <scope>compile</scope>
226   - </dependency>
227   - <dependency>
228   - <groupId>org.bouncycastle</groupId>
229   - <artifactId>bcprov-jdk15on</artifactId>
230   - <version>1.52</version>
231   - </dependency>
232   - <dependency>
233   - <groupId>axis</groupId>
234   - <artifactId>axis</artifactId>
235   - <version>1.4</version>
236   - </dependency>
237   - <dependency>
238   - <groupId>javax.xml</groupId>
239   - <artifactId>jaxrpc-api</artifactId>
240   - <version>1.1</version>
241   - </dependency>
242   -
243   - <dependency>
244   - <groupId>org.apache.axis2</groupId>
245   - <artifactId>axis2-adb</artifactId>
246   - <version>1.7.4</version>
247   - </dependency>
248   - <dependency>
249   - <groupId>org.apache.axis2</groupId>
250   - <artifactId>axis2-transport-local</artifactId>
251   - <version>1.7.4</version>
252   - </dependency>
253   - <dependency>
254   - <groupId>org.apache.axis2</groupId>
255   - <artifactId>axis2-transport-http</artifactId>
256   - <version>1.7.4</version>
257   - </dependency>
258   -
259   - <dependency>
260   - <groupId>org.dbunit</groupId>
261   - <artifactId>dbunit</artifactId>
262   - <version>2.4.9</version>
263   - <scope>test</scope>
264   -
265   - <exclusions>
266   - <exclusion>
267   - <groupId>org.slf4j</groupId>
268   - <artifactId>slf4j-api</artifactId>
269   - </exclusion>
270   - </exclusions>
271   - </dependency>
272   -
273   - <dependency>
274   - <groupId>com.h2database</groupId>
275   - <artifactId>h2</artifactId>
276   - <version>1.2.132</version>
277   - <scope>test</scope>
278   - </dependency>
279   -
280   -
281   - <dependency>
282   - <groupId>ojdbc</groupId>
283   - <artifactId>ojdbc</artifactId>
284   - <version>14</version>
285   - </dependency>
286   -
287   - <dependency>
288   - <groupId>org.apache.mina</groupId>
289   - <artifactId>mina-core</artifactId>
290   - <version>2.0.13</version>
291   - </dependency>
292   -
293   - <dependency>
294   - <groupId>com.google.protobuf</groupId>
295   - <artifactId>protobuf-java</artifactId>
296   - <version>3.3.0</version>
297   - </dependency>
298   -
299   - <dependency>
300   - <groupId>com.github.stuxuhai</groupId>
301   - <artifactId>jpinyin</artifactId>
302   - <version>1.1.8</version>
303   - </dependency>
304   -
305   - <!-- dubbo 需要的jar start -->
306   - <dependency>
307   - <groupId>com.alibaba</groupId>
308   - <artifactId>dubbo</artifactId>
309   - <!--<version>2.6.3</version>-->
310   - <version>2.5.3</version>
311   - <exclusions>
312   - <exclusion>
313   - <groupId>org.springframework</groupId>
314   - <artifactId>spring</artifactId>
315   - </exclusion>
316   - <exclusion>
317   - <groupId>log4j</groupId>
318   - <artifactId>log4j</artifactId>
319   - </exclusion>
320   - </exclusions>
321   - </dependency>
322   -
323   - <dependency>
324   - <groupId>org.apache.zookeeper</groupId>
325   - <artifactId>zookeeper</artifactId>
326   - <version>3.4.5</version>
327   - <exclusions>
328   - <exclusion>
329   - <groupId>log4j</groupId>
330   - <artifactId>log4j</artifactId>
331   - </exclusion>
332   - <exclusion>
333   - <groupId>org.slf4j</groupId>
334   - <artifactId>slf4j-log4j12</artifactId>
335   - </exclusion>
336   - </exclusions>
337   - </dependency>
338   -
339   - <dependency>
340   - <groupId>com.101tec</groupId>
341   - <artifactId>zkclient</artifactId>
342   - <version>0.3</version>
343   - <exclusions>
344   - <exclusion>
345   - <groupId>log4j</groupId>
346   - <artifactId>log4j</artifactId>
347   - </exclusion>
348   - </exclusions>
349   - </dependency>
350   -
351   - <!-- plan common工程依赖 -->
352   - <dependency>
353   - <groupId>com.bsth.control_v2</groupId>
354   - <artifactId>plan_module-common</artifactId>
355   - <version>1.0-SNAPSHOT</version>
356   - </dependency>
357   - <!-- plan common config 工程依赖 -->
358   - <dependency>
359   - <groupId>com.bsth.control_v2</groupId>
360   - <artifactId>plan_module-common-config</artifactId>
361   - <version>1.0-SNAPSHOT</version>
362   - </dependency>
363   - <!-- real common 依赖 -->
364   - <dependency>
365   - <groupId>com.bsth.control_v3</groupId>
366   - <artifactId>real_module-common</artifactId>
367   - <version>0.0.1-SNAPSHOT</version>
368   - </dependency>
369   - <dependency>
370   - <groupId>org.slf4j</groupId>
371   - <artifactId>slf4j-api</artifactId>
372   - <version>1.7.7</version>
373   - </dependency>
374   - <dependency>
375   - <groupId>ch.qos.logback</groupId>
376   - <artifactId>logback-classic</artifactId>
377   - <version>1.1.3</version>
378   - </dependency>
379   - <dependency>
380   - <groupId>org.slf4j</groupId>
381   - <artifactId>log4j-over-slf4j</artifactId>
382   - <version>1.7.7</version>
383   - </dependency>
384   -
385   - </dependencies>
386   -
387   - <dependencyManagement>
388   - <dependencies>
389   - <!-- drools 6依赖 -->
390   - <dependency>
391   - <groupId>org.drools</groupId>
392   - <artifactId>drools-bom</artifactId>
393   - <type>pom</type>
394   - <version>6.3.0.Final</version>
395   - <scope>import</scope>
396   - </dependency>
397   - </dependencies>
398   - </dependencyManagement>
399   -
400   - <build>
401   - <plugins>
402   - <plugin>
403   - <artifactId>maven-compiler-plugin</artifactId>
404   - <version>2.3.2</version><!--$NO-MVN-MAN-VER$ -->
405   - <configuration>
406   - <source>1.7</source>
407   - <target>1.7</target>
408   - </configuration>
409   - </plugin>
410   - <plugin>
411   - <artifactId>maven-war-plugin</artifactId>
412   - <version>2.2</version><!--$NO-MVN-MAN-VER$ -->
413   - <configuration>
414   - <failOnMissingWebXml>false</failOnMissingWebXml>
415   - </configuration>
416   - </plugin>
417   - <plugin>
418   - <groupId>org.springframework.boot</groupId>
419   - <artifactId>spring-boot-maven-plugin</artifactId>
420   - </plugin>
421   - </plugins>
422   - <resources>
423   - <resource>
424   - <directory>src/main/resources</directory>
425   - <filtering>false</filtering>
426   - </resource>
427   - </resources>
428   - </build>
429   - <repositories>
430   - <repository>
431   - <id>spring-snapshots</id>
432   - <url>http://repo.spring.io/snapshot</url>
433   - <snapshots>
434   - <enabled>true</enabled>
435   - </snapshots>
436   - </repository>
437   - <repository>
438   - <id>spring-milestones</id>
439   - <url>http://repo.spring.io/milestone</url>
440   - </repository>
441   - </repositories>
442   - <pluginRepositories>
443   - <pluginRepository>
444   - <id>spring-snapshots</id>
445   - <url>http://repo.spring.io/snapshot</url>
446   - </pluginRepository>
447   - <pluginRepository>
448   - <id>spring-milestones</id>
449   - <url>http://repo.spring.io/milestone</url>
450   - </pluginRepository>
451   - </pluginRepositories>
452   -
453   - <properties>
454   - <start-class>com.bsth.Application</start-class>
455   - </properties>
456   -</project>
  1 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3 +
  4 + <modelVersion>4.0.0</modelVersion>
  5 + <groupId>com.bsth</groupId>
  6 + <artifactId>bsth_control</artifactId>
  7 + <version>0.0.1-SNAPSHOT</version>
  8 + <packaging>war</packaging>
  9 +
  10 + <parent>
  11 + <groupId>org.springframework.boot</groupId>
  12 + <artifactId>spring-boot-starter-parent</artifactId>
  13 + <version>1.3.3.RELEASE</version>
  14 + </parent>
  15 +
  16 + <dependencies>
  17 + <dependency>
  18 + <groupId>org.springframework.boot</groupId>
  19 + <artifactId>spring-boot-starter-web</artifactId>
  20 + </dependency>
  21 +
  22 + <dependency>
  23 + <groupId>org.springframework.boot</groupId>
  24 + <artifactId>spring-boot-starter-tomcat</artifactId>
  25 + <scope>provided</scope>
  26 + </dependency>
  27 + <dependency>
  28 + <groupId>javax.servlet</groupId>
  29 + <artifactId>javax.servlet-api</artifactId>
  30 + <version>3.1.0</version>
  31 + <scope>provided</scope>
  32 + </dependency>
  33 + <dependency>
  34 + <groupId>org.springframework.boot</groupId>
  35 + <artifactId>spring-boot-starter-security</artifactId>
  36 + </dependency>
  37 + <!-- <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId>
  38 + </dependency> -->
  39 + <dependency>
  40 + <groupId>org.springframework.boot</groupId>
  41 + <artifactId>spring-boot-starter-data-jpa</artifactId>
  42 + </dependency>
  43 + <dependency>
  44 + <groupId>org.springframework.boot</groupId>
  45 + <artifactId>spring-boot-starter-aop</artifactId>
  46 + </dependency>
  47 +
  48 + <dependency>
  49 + <groupId>org.springframework</groupId>
  50 + <artifactId>spring-context-support</artifactId>
  51 + </dependency>
  52 + <dependency>
  53 + <groupId>org.springframework.boot</groupId>
  54 + <artifactId>spring-boot-starter-redis</artifactId>
  55 + </dependency>
  56 + <dependency>
  57 + <groupId>org.springframework.boot</groupId>
  58 + <artifactId>spring-boot-starter-websocket</artifactId>
  59 + </dependency>
  60 + <dependency>
  61 + <groupId>mysql</groupId>
  62 + <artifactId>mysql-connector-java</artifactId>
  63 + </dependency>
  64 +
  65 + <dependency>
  66 + <groupId>joda-time</groupId>
  67 + <artifactId>joda-time</artifactId>
  68 + </dependency>
  69 + <dependency>
  70 + <groupId>com.alibaba</groupId>
  71 + <artifactId>fastjson</artifactId>
  72 + <version>1.2.4</version>
  73 + </dependency>
  74 +
  75 + <dependency>
  76 + <groupId>org.apache.httpcomponents</groupId>
  77 + <artifactId>httpclient</artifactId>
  78 + </dependency>
  79 +
  80 + <dependency>
  81 + <groupId>commons-dbcp</groupId>
  82 + <artifactId>commons-dbcp</artifactId>
  83 + </dependency>
  84 + <dependency>
  85 + <groupId>commons-lang</groupId>
  86 + <artifactId>commons-lang</artifactId>
  87 + <version>2.6</version>
  88 + </dependency>
  89 + <dependency>
  90 + <groupId>org.apache.commons</groupId>
  91 + <artifactId>commons-lang3</artifactId>
  92 + <version>3.4</version>
  93 + </dependency>
  94 + <dependency>
  95 + <groupId>commons-fileupload</groupId>
  96 + <artifactId>commons-fileupload</artifactId>
  97 + <version>1.2.2</version>
  98 + </dependency>
  99 + <dependency>
  100 + <groupId>commons-io</groupId>
  101 + <artifactId>commons-io</artifactId>
  102 + <version>2.4</version>
  103 + </dependency>
  104 + <dependency>
  105 + <groupId>org.codehaus.janino</groupId>
  106 + <artifactId>janino</artifactId>
  107 + </dependency>
  108 +
  109 + <dependency>
  110 + <groupId>org.apache.poi</groupId>
  111 + <artifactId>poi-ooxml</artifactId>
  112 + <version>3.13</version>
  113 + </dependency>
  114 +
  115 + <dependency>
  116 + <groupId>com.google.guava</groupId>
  117 + <artifactId>guava</artifactId>
  118 + <version>19.0</version>
  119 + </dependency>
  120 + <!-- ftp文件上传包 -->
  121 + <dependency>
  122 + <groupId>commons-net</groupId>
  123 + <artifactId>commons-net</artifactId>
  124 + <version>3.5</version>
  125 + </dependency>
  126 + <dependency>
  127 + <groupId>org.apache.commons</groupId>
  128 + <artifactId>commons-compress</artifactId>
  129 + <version>1.3</version>
  130 + </dependency>
  131 + <!-- drools 6依赖 -->
  132 + <dependency>
  133 + <groupId>org.kie</groupId>
  134 + <artifactId>kie-api</artifactId>
  135 + </dependency>
  136 + <dependency>
  137 + <groupId>org.drools</groupId>
  138 + <artifactId>drools-compiler</artifactId>
  139 + </dependency>
  140 +
  141 + <!-- springboot测试 -->
  142 + <dependency>
  143 + <groupId>org.springframework.boot</groupId>
  144 + <artifactId>spring-boot-starter-test</artifactId>
  145 + <scope>test</scope>
  146 + </dependency>
  147 +
  148 + <dependency>
  149 + <groupId>c3p0</groupId>
  150 + <artifactId>c3p0</artifactId>
  151 + <version>0.9.1.2</version>
  152 + </dependency>
  153 +
  154 + <!-- 图表 -->
  155 + <dependency>
  156 + <groupId>com.google.code.gson</groupId>
  157 + <artifactId>gson</artifactId>
  158 + <version>2.2.4</version>
  159 + </dependency>
  160 + <dependency>
  161 + <groupId>com.github.abel533</groupId>
  162 + <artifactId>ECharts</artifactId>
  163 + <version>2.1.8</version>
  164 + </dependency>
  165 +
  166 + <dependency>
  167 + <groupId>org.apache.tika</groupId>
  168 + <artifactId>tika-core</artifactId>
  169 + <version>1.7</version>
  170 + </dependency>
  171 +
  172 + <!-- pentaho kettle 依赖 -->
  173 + <dependency>
  174 + <groupId>com.pentaho.kettle</groupId>
  175 + <artifactId>kettle-core</artifactId>
  176 + <version>6.0.1.0-386</version>
  177 + </dependency>
  178 + <dependency>
  179 + <groupId>com.pentaho.kettle</groupId>
  180 + <artifactId>kettle-engine</artifactId>
  181 + <version>6.0.1.0-386</version>
  182 + </dependency>
  183 + <dependency>
  184 + <groupId>com.pentaho.kettle</groupId>
  185 + <artifactId>metastore</artifactId>
  186 + <version>6.0.1.0-386</version>
  187 + </dependency>
  188 + <dependency>
  189 + <groupId>com.pentaho.kettle</groupId>
  190 + <artifactId>vfs2</artifactId>
  191 + <version>2.1-20150824</version>
  192 + </dependency>
  193 + <dependency>
  194 + <groupId>net.sourceforge.jexcelapi</groupId>
  195 + <artifactId>jxl</artifactId>
  196 + <version>2.6.12</version>
  197 + <exclusions>
  198 + <exclusion>
  199 + <groupId>log4j</groupId>
  200 + <artifactId>log4j</artifactId>
  201 + </exclusion>
  202 + </exclusions>
  203 + </dependency>
  204 + <dependency>
  205 + <groupId>rhino</groupId>
  206 + <artifactId>js</artifactId>
  207 + <version>1.7R2</version>
  208 + </dependency>
  209 + <dependency>
  210 + <groupId>javax.mail</groupId>
  211 + <artifactId>mail</artifactId>
  212 + <version>1.4.7</version>
  213 + </dependency>
  214 +
  215 + <dependency>
  216 + <groupId>com.github.axet</groupId>
  217 + <artifactId>kaptcha</artifactId>
  218 + <version>0.0.9</version>
  219 + </dependency>
  220 +
  221 + <dependency>
  222 + <groupId>commons-codec</groupId>
  223 + <artifactId>commons-codec</artifactId>
  224 + <version>1.4</version>
  225 + <scope>compile</scope>
  226 + </dependency>
  227 + <dependency>
  228 + <groupId>org.bouncycastle</groupId>
  229 + <artifactId>bcprov-jdk15on</artifactId>
  230 + <version>1.52</version>
  231 + </dependency>
  232 + <dependency>
  233 + <groupId>axis</groupId>
  234 + <artifactId>axis</artifactId>
  235 + <version>1.4</version>
  236 + </dependency>
  237 + <dependency>
  238 + <groupId>javax.xml</groupId>
  239 + <artifactId>jaxrpc-api</artifactId>
  240 + <version>1.1</version>
  241 + </dependency>
  242 +
  243 + <dependency>
  244 + <groupId>org.apache.axis2</groupId>
  245 + <artifactId>axis2-adb</artifactId>
  246 + <version>1.7.4</version>
  247 + </dependency>
  248 + <dependency>
  249 + <groupId>org.apache.axis2</groupId>
  250 + <artifactId>axis2-transport-local</artifactId>
  251 + <version>1.7.4</version>
  252 + </dependency>
  253 + <dependency>
  254 + <groupId>org.apache.axis2</groupId>
  255 + <artifactId>axis2-transport-http</artifactId>
  256 + <version>1.7.4</version>
  257 + </dependency>
  258 +
  259 + <dependency>
  260 + <groupId>org.dbunit</groupId>
  261 + <artifactId>dbunit</artifactId>
  262 + <version>2.4.9</version>
  263 + <scope>test</scope>
  264 +
  265 + <exclusions>
  266 + <exclusion>
  267 + <groupId>org.slf4j</groupId>
  268 + <artifactId>slf4j-api</artifactId>
  269 + </exclusion>
  270 + </exclusions>
  271 + </dependency>
  272 +
  273 + <dependency>
  274 + <groupId>com.h2database</groupId>
  275 + <artifactId>h2</artifactId>
  276 + <version>1.2.132</version>
  277 + <scope>test</scope>
  278 + </dependency>
  279 +
  280 +
  281 + <dependency>
  282 + <groupId>ojdbc</groupId>
  283 + <artifactId>ojdbc</artifactId>
  284 + <version>14</version>
  285 + </dependency>
  286 +
  287 + <dependency>
  288 + <groupId>org.apache.mina</groupId>
  289 + <artifactId>mina-core</artifactId>
  290 + <version>2.0.13</version>
  291 + </dependency>
  292 +
  293 + <dependency>
  294 + <groupId>com.google.protobuf</groupId>
  295 + <artifactId>protobuf-java</artifactId>
  296 + <version>3.3.0</version>
  297 + </dependency>
  298 +
  299 + <dependency>
  300 + <groupId>com.github.stuxuhai</groupId>
  301 + <artifactId>jpinyin</artifactId>
  302 + <version>1.1.8</version>
  303 + </dependency>
  304 +
  305 + <!-- dubbo 需要的jar start -->
  306 + <dependency>
  307 + <groupId>com.alibaba</groupId>
  308 + <artifactId>dubbo</artifactId>
  309 + <!--<version>2.6.3</version>-->
  310 + <version>2.5.3</version>
  311 + <exclusions>
  312 + <exclusion>
  313 + <groupId>org.springframework</groupId>
  314 + <artifactId>spring</artifactId>
  315 + </exclusion>
  316 + <exclusion>
  317 + <groupId>log4j</groupId>
  318 + <artifactId>log4j</artifactId>
  319 + </exclusion>
  320 + </exclusions>
  321 + </dependency>
  322 +
  323 + <dependency>
  324 + <groupId>org.apache.zookeeper</groupId>
  325 + <artifactId>zookeeper</artifactId>
  326 + <version>3.4.5</version>
  327 + <exclusions>
  328 + <exclusion>
  329 + <groupId>log4j</groupId>
  330 + <artifactId>log4j</artifactId>
  331 + </exclusion>
  332 + <exclusion>
  333 + <groupId>org.slf4j</groupId>
  334 + <artifactId>slf4j-log4j12</artifactId>
  335 + </exclusion>
  336 + </exclusions>
  337 + </dependency>
  338 +
  339 + <dependency>
  340 + <groupId>com.101tec</groupId>
  341 + <artifactId>zkclient</artifactId>
  342 + <version>0.3</version>
  343 + <exclusions>
  344 + <exclusion>
  345 + <groupId>log4j</groupId>
  346 + <artifactId>log4j</artifactId>
  347 + </exclusion>
  348 + </exclusions>
  349 + </dependency>
  350 +
  351 + <!-- plan common工程依赖 -->
  352 + <dependency>
  353 + <groupId>com.bsth.control_v2</groupId>
  354 + <artifactId>plan_module-common</artifactId>
  355 + <version>1.0-SNAPSHOT</version>
  356 + </dependency>
  357 + <!-- plan common config 工程依赖 -->
  358 + <dependency>
  359 + <groupId>com.bsth.control_v2</groupId>
  360 + <artifactId>plan_module-common-config</artifactId>
  361 + <version>1.0-SNAPSHOT</version>
  362 + </dependency>
  363 + <!-- real common 依赖 -->
  364 + <dependency>
  365 + <groupId>com.bsth.control_v3</groupId>
  366 + <artifactId>real_module-common</artifactId>
  367 + <version>0.0.1-SNAPSHOT</version>
  368 + </dependency>
  369 + <dependency>
  370 + <groupId>org.slf4j</groupId>
  371 + <artifactId>slf4j-api</artifactId>
  372 + <version>1.7.7</version>
  373 + </dependency>
  374 + <dependency>
  375 + <groupId>ch.qos.logback</groupId>
  376 + <artifactId>logback-classic</artifactId>
  377 + <version>1.1.3</version>
  378 + </dependency>
  379 + <dependency>
  380 + <groupId>org.slf4j</groupId>
  381 + <artifactId>log4j-over-slf4j</artifactId>
  382 + <version>1.7.7</version>
  383 + </dependency>
  384 +
  385 + </dependencies>
  386 +
  387 + <dependencyManagement>
  388 + <dependencies>
  389 + <!-- drools 6依赖 -->
  390 + <dependency>
  391 + <groupId>org.drools</groupId>
  392 + <artifactId>drools-bom</artifactId>
  393 + <type>pom</type>
  394 + <version>6.3.0.Final</version>
  395 + <scope>import</scope>
  396 + </dependency>
  397 + </dependencies>
  398 + </dependencyManagement>
  399 +
  400 + <build>
  401 + <plugins>
  402 + <plugin>
  403 + <artifactId>maven-compiler-plugin</artifactId>
  404 + <version>2.3.2</version><!--$NO-MVN-MAN-VER$ -->
  405 + <configuration>
  406 + <source>1.7</source>
  407 + <target>1.7</target>
  408 + </configuration>
  409 + </plugin>
  410 + <plugin>
  411 + <artifactId>maven-war-plugin</artifactId>
  412 + <version>2.2</version><!--$NO-MVN-MAN-VER$ -->
  413 + <configuration>
  414 + <failOnMissingWebXml>false</failOnMissingWebXml>
  415 + </configuration>
  416 + </plugin>
  417 + <plugin>
  418 + <groupId>org.springframework.boot</groupId>
  419 + <artifactId>spring-boot-maven-plugin</artifactId>
  420 + </plugin>
  421 + </plugins>
  422 + <resources>
  423 + <resource>
  424 + <directory>src/main/resources</directory>
  425 + <filtering>false</filtering>
  426 + </resource>
  427 + </resources>
  428 + </build>
  429 + <repositories>
  430 + <repository>
  431 + <id>spring-snapshots</id>
  432 + <url>http://repo.spring.io/snapshot</url>
  433 + <snapshots>
  434 + <enabled>true</enabled>
  435 + </snapshots>
  436 + </repository>
  437 + <repository>
  438 + <id>spring-milestones</id>
  439 + <url>http://repo.spring.io/milestone</url>
  440 + </repository>
  441 + </repositories>
  442 + <pluginRepositories>
  443 + <pluginRepository>
  444 + <id>spring-snapshots</id>
  445 + <url>http://repo.spring.io/snapshot</url>
  446 + </pluginRepository>
  447 + <pluginRepository>
  448 + <id>spring-milestones</id>
  449 + <url>http://repo.spring.io/milestone</url>
  450 + </pluginRepository>
  451 + </pluginRepositories>
  452 +
  453 + <properties>
  454 + <start-class>com.bsth.Application</start-class>
  455 + </properties>
  456 +</project>
... ...
src/main/resources/application-prod.properties
1   -server.port=9088
2   -management.port= 9001
3   -management.address= 127.0.0.1
4   -
5   -dubbo.use=false
6   -
7   -spring.jpa.hibernate.ddl-auto= none
8   -spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
9   -#DATABASE
10   -spring.jpa.database= MYSQL
11   -spring.jpa.show-sql= true
12   -spring.datasource.driver-class-name= com.mysql.jdbc.Driver
13   -spring.datasource.url= jdbc:mysql://112.64.148.30:54002/qp_control?useUnicode=true&characterEncoding=utf-8&useSSL=false
14   -spring.datasource.username= root
15   -spring.datasource.password= Aa123456
16   -#DATASOURCE
17   -spring.datasource.max-active=100
18   -spring.datasource.max-idle=8
19   -spring.datasource.min-idle=8
20   -spring.datasource.initial-size=5
21   -
22   -spring.datasource.test-on-borrow=true
23   -spring.datasource.test-on-connect=true
24   -spring.datasource.test-on-return=true
25   -spring.datasource.test-while-idle=true
26   -spring.datasource.validation-query=select 1
27   -
28   -## gateway real data
29   -http.gps.real.url= http://10.3.30.4:14004/transport_server/rtgps/
30   -## gateway send directive
31   -http.send.directive = http://10.3.30.4:14004/transport_server/message/
  1 +server.port=9088
  2 +management.port= 9001
  3 +management.address= 127.0.0.1
  4 +
  5 +dubbo.use=false
  6 +
  7 +spring.jpa.hibernate.ddl-auto= none
  8 +spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
  9 +#DATABASE
  10 +spring.jpa.database= MYSQL
  11 +spring.jpa.show-sql= true
  12 +spring.datasource.driver-class-name= com.mysql.jdbc.Driver
  13 +spring.datasource.url= jdbc:mysql://192.168.210.128/qp_control?useUnicode=true&characterEncoding=utf-8&useSSL=false
  14 +spring.datasource.username= root
  15 +spring.datasource.password= Aa123456
  16 +#DATASOURCE
  17 +spring.datasource.max-active=100
  18 +spring.datasource.max-idle=8
  19 +spring.datasource.min-idle=8
  20 +spring.datasource.initial-size=5
  21 +
  22 +spring.datasource.test-on-borrow=true
  23 +spring.datasource.test-on-connect=true
  24 +spring.datasource.test-on-return=true
  25 +spring.datasource.test-while-idle=true
  26 +spring.datasource.validation-query=select 1
  27 +
  28 +## gateway real data
  29 +http.gps.real.url= http://192.168.210.128:8080/transport_server/rtgps/
  30 +## gateway send directive
  31 +http.send.directive = http://192.168.210.128:8080/transport_server/message/
... ...
src/main/resources/datatools/config-prod.properties
1   -# 配置数据导入导出用到的配置信息
2   -
3   -# 1、kettle配置文件路径(类路径)
4   -datatools.kettle_properties=/datatools/kettle.properties
5   -# 2、ktr文件通用配置变量(数据库连接,根据不同的环境需要修正)
6   -
7   -#数据库ip地址
8   -datatools.kvars_dbip=112.64.148.30
9   -#数据库用户名
10   -datatools.kvars_dbuname=root
11   -#数据库密码
12   -datatools.kvars_dbpwd=Aa123456
13   -#数据库库名
14   -datatools.kvars_dbdname=qp_control
15   -
16   -# 3、上传数据配置信息
17   -# 上传文件目录配置(根据不同的环境需要修正)
18   -datatools.fileupload_dir=/home/bsth_control_u_d_files
19   -# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
20   -datatools.trans_errordir=/home/bsth_control_u_d_files/erroroutput
21   -# 临时输出文件目录
22   -datatools.trans_tempdir=/home/bsth_control_u_d_files/temp
23   -# 模版文件目录
24   -datatools.trans_templatedir=/home/bsth_control_u_d_files/template
25   -
26   -##---------------------------- 导入数据ktr ----------------------------##
27   -# 车辆信息导入ktr转换
28   -datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr
29   -# 人员信息导入
30   -datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr
31   -# 路牌信息导入
32   -datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr
33   -# 时刻表基础信息导入
34   -datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr
35   -# 时刻表明细信息导入(元数据)
36   -datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailDataInputMetaData.ktr
37   -# 时刻表明细编辑用数据
38   -datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr
39   -# 时刻表明细信息导入
40   -datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr
41   -# 时刻表明细信息导入2
42   -datatools.ttinfodetail_datainputktr2=/datatools/ktrs/ttinfodetailDataInput2.ktr
43   -# 时刻表明细信息导入2(版本化)
44   -datatools.ttinfodetail_datainputktr2version=/datatools/ktrs/ttinfodetailDataInput2_version.ktr
45   -# 时刻表明细信息导入2(版本化),使用生成时刻表格式
46   -datatools.ttinfodetail_datainputktr2version2=/datatools/ktrs/ttinfodetailDataInput2_version_2.ktr
47   -
48   -# 车辆配置信息导入
49   -datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
50   -# 人员配置信息导入
51   -datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr
52   -
53   -# 排版规则信息导入
54   -datatools.schedulerule_datainputktr=/datatools/ktrs/scheduleRuleDataInput.ktr
55   -
56   -# 4、数据导出配置信息
57   -# 导出数据文件目录配置(根据不同的环境需要修正)
58   -datatools.fileoutput_dir=/home/bsth_control_u_d_files
59   -
60   -##---------------------------- 导出数据ktr -----------------------------##
61   -# 车辆信息导出ktr转换
62   -datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr
63   -# 人员信息导出ktr转换
64   -datatools.employees_dataoutputktr=/datatools/ktrs/employeesDataOutput.ktr
65   -# 时刻表导出元数据ktr转换
66   -datatools.ttinfodetail_metaoutput=/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr
67   -# 时刻表导出数据ktr转换
68   -datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr
69   -# 排版规则导出数据ktr转换
70   -datatools.schedulerule_output=/datatools/ktrs/scheduleRuleDataOutput.ktr
71   -
72   -# 车辆配置信息导出ktr转换
73   -datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr
74   -# 人员配置信息导出ktr转换
75   -datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr
76   -
77   -# 路牌信息导出
78   -datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr
79   -
80   -# 用户登录日志导出
81   -datatools.usersign_dataoutputktr=/datatools/ktrs/userSignLogOutput.ktr
82   -
83   -# TODO:
  1 +# 配置数据导入导出用到的配置信息
  2 +
  3 +# 1、kettle配置文件路径(类路径)
  4 +datatools.kettle_properties=/datatools/kettle.properties
  5 +# 2、ktr文件通用配置变量(数据库连接,根据不同的环境需要修正)
  6 +
  7 +#数据库ip地址
  8 +datatools.kvars_dbip=192.168.210.128
  9 +#数据库用户名
  10 +datatools.kvars_dbuname=root
  11 +#数据库密码
  12 +datatools.kvars_dbpwd=Aa123456
  13 +#数据库库名
  14 +datatools.kvars_dbdname=qp_control
  15 +
  16 +# 3、上传数据配置信息
  17 +# 上传文件目录配置(根据不同的环境需要修正)
  18 +datatools.fileupload_dir=/home/bsth_control_u_d_files
  19 +# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
  20 +datatools.trans_errordir=/home/bsth_control_u_d_files/erroroutput
  21 +# 临时输出文件目录
  22 +datatools.trans_tempdir=/home/bsth_control_u_d_files/temp
  23 +# 模版文件目录
  24 +datatools.trans_templatedir=/home/bsth_control_u_d_files/template
  25 +
  26 +##---------------------------- 导入数据ktr ----------------------------##
  27 +# 车辆信息导入ktr转换
  28 +datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr
  29 +# 人员信息导入
  30 +datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr
  31 +# 路牌信息导入
  32 +datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr
  33 +# 时刻表基础信息导入
  34 +datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr
  35 +# 时刻表明细信息导入(元数据)
  36 +datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailDataInputMetaData.ktr
  37 +# 时刻表明细编辑用数据
  38 +datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr
  39 +# 时刻表明细信息导入
  40 +datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr
  41 +# 时刻表明细信息导入2
  42 +datatools.ttinfodetail_datainputktr2=/datatools/ktrs/ttinfodetailDataInput2.ktr
  43 +# 时刻表明细信息导入2(版本化)
  44 +datatools.ttinfodetail_datainputktr2version=/datatools/ktrs/ttinfodetailDataInput2_version.ktr
  45 +# 时刻表明细信息导入2(版本化),使用生成时刻表格式
  46 +datatools.ttinfodetail_datainputktr2version2=/datatools/ktrs/ttinfodetailDataInput2_version_2.ktr
  47 +
  48 +# 车辆配置信息导入
  49 +datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
  50 +# 人员配置信息导入
  51 +datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr
  52 +
  53 +# 排版规则信息导入
  54 +datatools.schedulerule_datainputktr=/datatools/ktrs/scheduleRuleDataInput.ktr
  55 +
  56 +# 4、数据导出配置信息
  57 +# 导出数据文件目录配置(根据不同的环境需要修正)
  58 +datatools.fileoutput_dir=/home/bsth_control_u_d_files
  59 +
  60 +##---------------------------- 导出数据ktr -----------------------------##
  61 +# 车辆信息导出ktr转换
  62 +datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr
  63 +# 人员信息导出ktr转换
  64 +datatools.employees_dataoutputktr=/datatools/ktrs/employeesDataOutput.ktr
  65 +# 时刻表导出元数据ktr转换
  66 +datatools.ttinfodetail_metaoutput=/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr
  67 +# 时刻表导出数据ktr转换
  68 +datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr
  69 +# 排版规则导出数据ktr转换
  70 +datatools.schedulerule_output=/datatools/ktrs/scheduleRuleDataOutput.ktr
  71 +
  72 +# 车辆配置信息导出ktr转换
  73 +datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr
  74 +# 人员配置信息导出ktr转换
  75 +datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr
  76 +
  77 +# 路牌信息导出
  78 +datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr
  79 +
  80 +# 用户登录日志导出
  81 +datatools.usersign_dataoutputktr=/datatools/ktrs/userSignLogOutput.ktr
  82 +
  83 +# TODO:
... ...
src/main/resources/logback.xml
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd"> -->
3   -<configuration>
4   -
5   - <!-- <property resource="application.properties" /> -->
6   - <property name="LOG_BASE" value="E:/bsth_control_logs" />
7   - <!-- 控制台输出 -->
8   - <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
9   -
10   - <layout class="ch.qos.logback.classic.PatternLayout">
11   - <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
12   - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%file:%line] %-5level-%msg%n
13   - </pattern>
14   - </layout>
15   - </appender>
16   -
17   - <!-- 主日志文件 -->
18   - <appender name="FILE"
19   - class="ch.qos.logback.core.rolling.RollingFileAppender">
20   - <file>${LOG_BASE}/main/main.log</file>
21   - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
22   - <fileNamePattern>${LOG_BASE}/main/main-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
23   - <timeBasedFileNamingAndTriggeringPolicy
24   - class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
25   - <maxFileSize>100MB</maxFileSize>
26   - </timeBasedFileNamingAndTriggeringPolicy>
27   - </rollingPolicy>
28   - <encoder>
29   - <pattern>%msg%n</pattern>
30   - </encoder>
31   -
32   - <layout class="ch.qos.logback.classic.PatternLayout">
33   - <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
34   - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%file:%line] %-5level-%msg%n
35   - </pattern>
36   - </layout>
37   - </appender>
38   -
39   - <!-- 访问日志 -->
40   - <appender name="ACCESS"
41   - class="ch.qos.logback.core.rolling.RollingFileAppender">
42   - <file>${LOG_BASE}/access/access.log</file>
43   - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
44   - <fileNamePattern>${LOG_BASE}/access/access-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
45   - <timeBasedFileNamingAndTriggeringPolicy
46   - class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
47   - <maxFileSize>100MB</maxFileSize>
48   - </timeBasedFileNamingAndTriggeringPolicy>
49   - </rollingPolicy>
50   -
51   - <layout class="ch.qos.logback.classic.PatternLayout">
52   - <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
53   - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level -%msg%n
54   - </pattern>
55   - </layout>
56   - </appender>
57   - <logger name="com.bsth.filter.AccessLogFilter" level="INFO"
58   - additivity="false">
59   - <appender-ref ref="ACCESS" />
60   - </logger>
61   -
62   - <!-- 和网关通讯日志日志 -->
63   - <appender name="GATEWAY"
64   - class="ch.qos.logback.core.rolling.RollingFileAppender">
65   - <file>${LOG_BASE}/gateway/gateway.log</file>
66   - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
67   - <fileNamePattern>${LOG_BASE}/gateway/gateway-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
68   - <timeBasedFileNamingAndTriggeringPolicy
69   - class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
70   - <maxFileSize>100MB</maxFileSize>
71   - </timeBasedFileNamingAndTriggeringPolicy>
72   - </rollingPolicy>
73   -
74   - <layout class="ch.qos.logback.classic.PatternLayout">
75   - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n
76   - </pattern>
77   - </layout>
78   - </appender>
79   - <logger name="com.bsth.service.directive.DirectiveServiceImpl"
80   - level="INFO" additivity="false">
81   - <appender-ref ref="GATEWAY" />
82   - </logger>
83   - <logger name="com.bsth.controller.directive.UpstreamEntrance"
84   - level="INFO" additivity="false">
85   - <appender-ref ref="GATEWAY" />
86   - </logger>
87   - <logger name="com.bsth.data.directive.GatewayHttpUtils" level="INFO"
88   - additivity="false">
89   - <appender-ref ref="GATEWAY" />
90   - </logger>
91   -
92   - <!-- 运管处接口日志 -->
93   - <appender name="TRAFFIC"
94   - class="ch.qos.logback.core.rolling.RollingFileAppender">
95   - <file>${LOG_BASE}/traffic/traffic.log</file>
96   - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
97   - <fileNamePattern>${LOG_BASE}/traffic/traffic-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
98   - <timeBasedFileNamingAndTriggeringPolicy
99   - class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
100   - <maxFileSize>100MB</maxFileSize>
101   - </timeBasedFileNamingAndTriggeringPolicy>
102   - </rollingPolicy>
103   -
104   - <layout class="ch.qos.logback.classic.PatternLayout">
105   - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n
106   - </pattern>
107   - </layout>
108   - </appender>
109   - <logger name="com.bsth.service.impl.TrafficManageServiceImpl"
110   - level="INFO" additivity="false">
111   - <appender-ref ref="TRAFFIC" />
112   - </logger>
113   -
114   - <!-- schedule 数据工具操作日志 -->
115   - <appender name="DATATOOLS"
116   - class="ch.qos.logback.core.rolling.RollingFileAppender">
117   - <file>${LOG_BASE}/schedule/datatools/datatools.log</file>
118   - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
119   - <fileNamePattern>${LOG_BASE}/schedule/datatools/datatools-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
120   - <timeBasedFileNamingAndTriggeringPolicy
121   - class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
122   - <maxFileSize>100MB</maxFileSize>
123   - </timeBasedFileNamingAndTriggeringPolicy>
124   - </rollingPolicy>
125   -
126   - <layout class="ch.qos.logback.classic.PatternLayout">
127   - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n
128   - </pattern>
129   - </layout>
130   - </appender>
131   - <!-- schedule 时刻表操作日志 -->
132   - <appender name="TIMETABLE"
133   - class="ch.qos.logback.core.rolling.RollingFileAppender">
134   - <file>${LOG_BASE}/schedule/timetable/timetable.log</file>
135   - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
136   - <fileNamePattern>${LOG_BASE}/schedule/timetable/timetable-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
137   - <timeBasedFileNamingAndTriggeringPolicy
138   - class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
139   - <maxFileSize>100MB</maxFileSize>
140   - </timeBasedFileNamingAndTriggeringPolicy>
141   - </rollingPolicy>
142   -
143   - <layout class="ch.qos.logback.classic.PatternLayout">
144   - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n
145   - </pattern>
146   - </layout>
147   - </appender>
148   - <logger name="com.bsth.service.schedule.impl.TTInfoServiceImpl"
149   - level="INFO" additivity="false">
150   - <appender-ref ref="TIMETABLE" />
151   - </logger>
152   - <logger name="com.bsth.service.schedule.impl.TTInfoDetailServiceImpl"
153   - level="INFO" additivity="false">
154   - <appender-ref ref="TIMETABLE" />
155   - </logger>
156   - <logger name="com.bsth.service.schedule.utils.DataToolsServiceImpl"
157   - level="INFO" additivity="false">
158   - <appender-ref ref="TIMETABLE" />
159   - <appender-ref ref="DATATOOLS" />
160   - </logger>
161   -
162   -
163   - <!-- gps -->
164   - <appender name="GPS_COUNT"
165   - class="ch.qos.logback.core.rolling.RollingFileAppender">
166   - <file>${LOG_BASE}/gps/count.log</file>
167   - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
168   - <fileNamePattern>${LOG_BASE}/gps/count-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
169   - <timeBasedFileNamingAndTriggeringPolicy
170   - class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
171   - <maxFileSize>100MB</maxFileSize>
172   - </timeBasedFileNamingAndTriggeringPolicy>
173   - </rollingPolicy>
174   -
175   - <layout class="ch.qos.logback.classic.PatternLayout">
176   - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n
177   - </pattern>
178   - </layout>
179   - </appender>
180   - <logger name="com.bsth.data.gpsdata_v2"
181   - level="INFO" additivity="false">
182   - <appender-ref ref="GPS_COUNT" />
183   - </logger>
184   -
185   - <!-- 设备状态指令 -->
186   - <appender name="GPS_STATUS_DIRECTIVE"
187   - class="ch.qos.logback.core.rolling.RollingFileAppender">
188   - <file>${LOG_BASE}/gps_state/state_directive.log</file>
189   - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
190   - <fileNamePattern>${LOG_BASE}/gps_state/state_directive-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
191   - <timeBasedFileNamingAndTriggeringPolicy
192   - class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
193   - <maxFileSize>100MB</maxFileSize>
194   - </timeBasedFileNamingAndTriggeringPolicy>
195   - </rollingPolicy>
196   -
197   - <layout class="ch.qos.logback.classic.PatternLayout">
198   - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n
199   - </pattern>
200   - </layout>
201   - </appender>
202   - <logger name="com.bsth.data.gpsdata.status_manager"
203   - level="INFO" additivity="false">
204   - <appender-ref ref="GPS_STATUS_DIRECTIVE" />
205   - </logger>
206   -
207   - <!-- 消息队列纪录 -->
208   - <appender name="QUEUE_WEB_SOCKET"
209   - class="ch.qos.logback.core.rolling.RollingFileAppender">
210   - <file>${LOG_BASE}/msg_queue/websocket.log</file>
211   - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
212   - <fileNamePattern>${LOG_BASE}/msg_queue/websocket-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
213   - <timeBasedFileNamingAndTriggeringPolicy
214   - class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
215   - <maxFileSize>100MB</maxFileSize>
216   - </timeBasedFileNamingAndTriggeringPolicy>
217   - </rollingPolicy>
218   -
219   - <layout class="ch.qos.logback.classic.PatternLayout">
220   - <pattern>%d{MM-dd HH:mm:ss.SSS} %-5level -%msg%n
221   - </pattern>
222   - </layout>
223   - </appender>
224   - <logger name="com.bsth.data.msg_queue.WebSocketPushQueue"
225   - level="INFO" additivity="false">
226   - <appender-ref ref="QUEUE_WEB_SOCKET" />
227   - </logger>
228   - <appender name="QUEUE_DIRECTIVE"
229   - class="ch.qos.logback.core.rolling.RollingFileAppender">
230   - <file>${LOG_BASE}/msg_queue/directive.log</file>
231   - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
232   - <fileNamePattern>${LOG_BASE}/msg_queue/directive-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
233   - <timeBasedFileNamingAndTriggeringPolicy
234   - class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
235   - <maxFileSize>100MB</maxFileSize>
236   - </timeBasedFileNamingAndTriggeringPolicy>
237   - </rollingPolicy>
238   -
239   - <layout class="ch.qos.logback.classic.PatternLayout">
240   - <pattern>%d{MM-dd HH:mm:ss.SSS} %-5level -%msg%n
241   - </pattern>
242   - </layout>
243   - </appender>
244   - <logger name="com.bsth.data.msg_queue.DirectivePushQueue"
245   - level="INFO" additivity="false">
246   - <appender-ref ref="QUEUE_DIRECTIVE" />
247   - </logger>
248   -
249   - <!--<logger name="org.hibernate.SQL" level="TRACE">-->
250   - <!--<appender-ref ref="STDOUT" />-->
251   - <!--</logger>-->
252   -
253   - <!-- 实际排班数据库更新日志 -->
254   - <!-- 消息队列纪录 -->
255   - <appender name="REAL_SCHEDULE_UPDATE"
256   - class="ch.qos.logback.core.rolling.RollingFileAppender">
257   - <file>${LOG_BASE}/real_sch_db/update.log</file>
258   - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
259   - <fileNamePattern>${LOG_BASE}/real_sch_db/update-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
260   - <timeBasedFileNamingAndTriggeringPolicy
261   - class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
262   - <maxFileSize>100MB</maxFileSize>
263   - </timeBasedFileNamingAndTriggeringPolicy>
264   - </rollingPolicy>
265   -
266   - <layout class="ch.qos.logback.classic.PatternLayout">
267   - <pattern>%d{MM-dd HH:mm:ss.SSS} %-5level -%msg%n
268   - </pattern>
269   - </layout>
270   - </appender>
271   - <logger name="com.bsth.data.schedule.thread.SchedulePstThread"
272   - level="INFO" additivity="false">
273   - <appender-ref ref="REAL_SCHEDULE_UPDATE" />
274   - </logger>
275   -
276   - <!--JdbcTemplate的日志输出器 -->
277   - <logger name="org.springframework.jdbc.core.StatementCreatorUtils"
278   - additivity="false" level="INFO">
279   - <appender-ref ref="STDOUT" />
280   - </logger>
281   - <logger name="org.springframework.jdbc.core" additivity="true">
282   - <level value="INFO" />
283   - <appender-ref ref="STDOUT" />
284   - </logger>
285   - <logger name="java.sql.Connection" additivity="true">
286   - <level value="INFO" />
287   - <appender-ref ref="STDOUT" />
288   - </logger>
289   - <logger name="java.sql.Statement" additivity="true">
290   - <level value="INFO" />
291   - <appender-ref ref="STDOUT" />
292   - </logger>
293   - <logger name="java.sql.PreparedStatement" additivity="true">
294   - <level value="INFO" />
295   - <appender-ref ref="STDOUT" />
296   - </logger>
297   - <logger name="java.sql.ResultSet" additivity="true">
298   - <level value="INFO" />
299   - <appender-ref ref="STDOUT" />
300   - </logger>
301   -
302   - <!-- 日志输出级别 -->
303   - <root level="info">
304   - <appender-ref ref="STDOUT" />
305   - <appender-ref ref="FILE" />
306   - </root>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd"> -->
  3 +<configuration>
  4 +
  5 + <!-- <property resource="application.properties" /> -->
  6 + <property name="LOG_BASE" value="D:/bsth_control_logs" />
  7 + <!-- 控制台输出 -->
  8 + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  9 +
  10 + <layout class="ch.qos.logback.classic.PatternLayout">
  11 + <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
  12 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%file:%line] %-5level-%msg%n
  13 + </pattern>
  14 + </layout>
  15 + </appender>
  16 +
  17 + <!-- 主日志文件 -->
  18 + <appender name="FILE"
  19 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  20 + <file>${LOG_BASE}/main/main.log</file>
  21 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  22 + <fileNamePattern>${LOG_BASE}/main/main-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  23 + <timeBasedFileNamingAndTriggeringPolicy
  24 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  25 + <maxFileSize>100MB</maxFileSize>
  26 + </timeBasedFileNamingAndTriggeringPolicy>
  27 + </rollingPolicy>
  28 + <encoder>
  29 + <pattern>%msg%n</pattern>
  30 + </encoder>
  31 +
  32 + <layout class="ch.qos.logback.classic.PatternLayout">
  33 + <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
  34 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%file:%line] %-5level-%msg%n
  35 + </pattern>
  36 + </layout>
  37 + </appender>
  38 +
  39 + <!-- 访问日志 -->
  40 + <appender name="ACCESS"
  41 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  42 + <file>${LOG_BASE}/access/access.log</file>
  43 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  44 + <fileNamePattern>${LOG_BASE}/access/access-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  45 + <timeBasedFileNamingAndTriggeringPolicy
  46 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  47 + <maxFileSize>100MB</maxFileSize>
  48 + </timeBasedFileNamingAndTriggeringPolicy>
  49 + </rollingPolicy>
  50 +
  51 + <layout class="ch.qos.logback.classic.PatternLayout">
  52 + <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
  53 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level -%msg%n
  54 + </pattern>
  55 + </layout>
  56 + </appender>
  57 + <logger name="com.bsth.filter.AccessLogFilter" level="INFO"
  58 + additivity="false">
  59 + <appender-ref ref="ACCESS" />
  60 + </logger>
  61 +
  62 + <!-- 和网关通讯日志日志 -->
  63 + <appender name="GATEWAY"
  64 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  65 + <file>${LOG_BASE}/gateway/gateway.log</file>
  66 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  67 + <fileNamePattern>${LOG_BASE}/gateway/gateway-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  68 + <timeBasedFileNamingAndTriggeringPolicy
  69 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  70 + <maxFileSize>100MB</maxFileSize>
  71 + </timeBasedFileNamingAndTriggeringPolicy>
  72 + </rollingPolicy>
  73 +
  74 + <layout class="ch.qos.logback.classic.PatternLayout">
  75 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n
  76 + </pattern>
  77 + </layout>
  78 + </appender>
  79 + <logger name="com.bsth.service.directive.DirectiveServiceImpl"
  80 + level="INFO" additivity="false">
  81 + <appender-ref ref="GATEWAY" />
  82 + </logger>
  83 + <logger name="com.bsth.controller.directive.UpstreamEntrance"
  84 + level="INFO" additivity="false">
  85 + <appender-ref ref="GATEWAY" />
  86 + </logger>
  87 + <logger name="com.bsth.data.directive.GatewayHttpUtils" level="INFO"
  88 + additivity="false">
  89 + <appender-ref ref="GATEWAY" />
  90 + </logger>
  91 +
  92 + <!-- 运管处接口日志 -->
  93 + <appender name="TRAFFIC"
  94 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  95 + <file>${LOG_BASE}/traffic/traffic.log</file>
  96 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  97 + <fileNamePattern>${LOG_BASE}/traffic/traffic-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  98 + <timeBasedFileNamingAndTriggeringPolicy
  99 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  100 + <maxFileSize>100MB</maxFileSize>
  101 + </timeBasedFileNamingAndTriggeringPolicy>
  102 + </rollingPolicy>
  103 +
  104 + <layout class="ch.qos.logback.classic.PatternLayout">
  105 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n
  106 + </pattern>
  107 + </layout>
  108 + </appender>
  109 + <logger name="com.bsth.service.impl.TrafficManageServiceImpl"
  110 + level="INFO" additivity="false">
  111 + <appender-ref ref="TRAFFIC" />
  112 + </logger>
  113 +
  114 + <!-- schedule 数据工具操作日志 -->
  115 + <appender name="DATATOOLS"
  116 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  117 + <file>${LOG_BASE}/schedule/datatools/datatools.log</file>
  118 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  119 + <fileNamePattern>${LOG_BASE}/schedule/datatools/datatools-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  120 + <timeBasedFileNamingAndTriggeringPolicy
  121 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  122 + <maxFileSize>100MB</maxFileSize>
  123 + </timeBasedFileNamingAndTriggeringPolicy>
  124 + </rollingPolicy>
  125 +
  126 + <layout class="ch.qos.logback.classic.PatternLayout">
  127 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n
  128 + </pattern>
  129 + </layout>
  130 + </appender>
  131 + <!-- schedule 时刻表操作日志 -->
  132 + <appender name="TIMETABLE"
  133 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  134 + <file>${LOG_BASE}/schedule/timetable/timetable.log</file>
  135 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  136 + <fileNamePattern>${LOG_BASE}/schedule/timetable/timetable-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  137 + <timeBasedFileNamingAndTriggeringPolicy
  138 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  139 + <maxFileSize>100MB</maxFileSize>
  140 + </timeBasedFileNamingAndTriggeringPolicy>
  141 + </rollingPolicy>
  142 +
  143 + <layout class="ch.qos.logback.classic.PatternLayout">
  144 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n
  145 + </pattern>
  146 + </layout>
  147 + </appender>
  148 + <logger name="com.bsth.service.schedule.impl.TTInfoServiceImpl"
  149 + level="INFO" additivity="false">
  150 + <appender-ref ref="TIMETABLE" />
  151 + </logger>
  152 + <logger name="com.bsth.service.schedule.impl.TTInfoDetailServiceImpl"
  153 + level="INFO" additivity="false">
  154 + <appender-ref ref="TIMETABLE" />
  155 + </logger>
  156 + <logger name="com.bsth.service.schedule.utils.DataToolsServiceImpl"
  157 + level="INFO" additivity="false">
  158 + <appender-ref ref="TIMETABLE" />
  159 + <appender-ref ref="DATATOOLS" />
  160 + </logger>
  161 +
  162 +
  163 + <!-- gps -->
  164 + <appender name="GPS_COUNT"
  165 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  166 + <file>${LOG_BASE}/gps/count.log</file>
  167 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  168 + <fileNamePattern>${LOG_BASE}/gps/count-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  169 + <timeBasedFileNamingAndTriggeringPolicy
  170 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  171 + <maxFileSize>100MB</maxFileSize>
  172 + </timeBasedFileNamingAndTriggeringPolicy>
  173 + </rollingPolicy>
  174 +
  175 + <layout class="ch.qos.logback.classic.PatternLayout">
  176 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n
  177 + </pattern>
  178 + </layout>
  179 + </appender>
  180 + <logger name="com.bsth.data.gpsdata_v2"
  181 + level="INFO" additivity="false">
  182 + <appender-ref ref="GPS_COUNT" />
  183 + </logger>
  184 +
  185 + <!-- 设备状态指令 -->
  186 + <appender name="GPS_STATUS_DIRECTIVE"
  187 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  188 + <file>${LOG_BASE}/gps_state/state_directive.log</file>
  189 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  190 + <fileNamePattern>${LOG_BASE}/gps_state/state_directive-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  191 + <timeBasedFileNamingAndTriggeringPolicy
  192 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  193 + <maxFileSize>100MB</maxFileSize>
  194 + </timeBasedFileNamingAndTriggeringPolicy>
  195 + </rollingPolicy>
  196 +
  197 + <layout class="ch.qos.logback.classic.PatternLayout">
  198 + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n
  199 + </pattern>
  200 + </layout>
  201 + </appender>
  202 + <logger name="com.bsth.data.gpsdata.status_manager"
  203 + level="INFO" additivity="false">
  204 + <appender-ref ref="GPS_STATUS_DIRECTIVE" />
  205 + </logger>
  206 +
  207 + <!-- 消息队列纪录 -->
  208 + <appender name="QUEUE_WEB_SOCKET"
  209 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  210 + <file>${LOG_BASE}/msg_queue/websocket.log</file>
  211 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  212 + <fileNamePattern>${LOG_BASE}/msg_queue/websocket-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  213 + <timeBasedFileNamingAndTriggeringPolicy
  214 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  215 + <maxFileSize>100MB</maxFileSize>
  216 + </timeBasedFileNamingAndTriggeringPolicy>
  217 + </rollingPolicy>
  218 +
  219 + <layout class="ch.qos.logback.classic.PatternLayout">
  220 + <pattern>%d{MM-dd HH:mm:ss.SSS} %-5level -%msg%n
  221 + </pattern>
  222 + </layout>
  223 + </appender>
  224 + <logger name="com.bsth.data.msg_queue.WebSocketPushQueue"
  225 + level="INFO" additivity="false">
  226 + <appender-ref ref="QUEUE_WEB_SOCKET" />
  227 + </logger>
  228 + <appender name="QUEUE_DIRECTIVE"
  229 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  230 + <file>${LOG_BASE}/msg_queue/directive.log</file>
  231 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  232 + <fileNamePattern>${LOG_BASE}/msg_queue/directive-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  233 + <timeBasedFileNamingAndTriggeringPolicy
  234 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  235 + <maxFileSize>100MB</maxFileSize>
  236 + </timeBasedFileNamingAndTriggeringPolicy>
  237 + </rollingPolicy>
  238 +
  239 + <layout class="ch.qos.logback.classic.PatternLayout">
  240 + <pattern>%d{MM-dd HH:mm:ss.SSS} %-5level -%msg%n
  241 + </pattern>
  242 + </layout>
  243 + </appender>
  244 + <logger name="com.bsth.data.msg_queue.DirectivePushQueue"
  245 + level="INFO" additivity="false">
  246 + <appender-ref ref="QUEUE_DIRECTIVE" />
  247 + </logger>
  248 +
  249 + <!--<logger name="org.hibernate.SQL" level="TRACE">-->
  250 + <!--<appender-ref ref="STDOUT" />-->
  251 + <!--</logger>-->
  252 +
  253 + <!-- 实际排班数据库更新日志 -->
  254 + <!-- 消息队列纪录 -->
  255 + <appender name="REAL_SCHEDULE_UPDATE"
  256 + class="ch.qos.logback.core.rolling.RollingFileAppender">
  257 + <file>${LOG_BASE}/real_sch_db/update.log</file>
  258 + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  259 + <fileNamePattern>${LOG_BASE}/real_sch_db/update-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  260 + <timeBasedFileNamingAndTriggeringPolicy
  261 + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  262 + <maxFileSize>100MB</maxFileSize>
  263 + </timeBasedFileNamingAndTriggeringPolicy>
  264 + </rollingPolicy>
  265 +
  266 + <layout class="ch.qos.logback.classic.PatternLayout">
  267 + <pattern>%d{MM-dd HH:mm:ss.SSS} %-5level -%msg%n
  268 + </pattern>
  269 + </layout>
  270 + </appender>
  271 + <logger name="com.bsth.data.schedule.thread.SchedulePstThread"
  272 + level="INFO" additivity="false">
  273 + <appender-ref ref="REAL_SCHEDULE_UPDATE" />
  274 + </logger>
  275 +
  276 + <!--JdbcTemplate的日志输出器 -->
  277 + <logger name="org.springframework.jdbc.core.StatementCreatorUtils"
  278 + additivity="false" level="INFO">
  279 + <appender-ref ref="STDOUT" />
  280 + </logger>
  281 + <logger name="org.springframework.jdbc.core" additivity="true">
  282 + <level value="INFO" />
  283 + <appender-ref ref="STDOUT" />
  284 + </logger>
  285 + <logger name="java.sql.Connection" additivity="true">
  286 + <level value="INFO" />
  287 + <appender-ref ref="STDOUT" />
  288 + </logger>
  289 + <logger name="java.sql.Statement" additivity="true">
  290 + <level value="INFO" />
  291 + <appender-ref ref="STDOUT" />
  292 + </logger>
  293 + <logger name="java.sql.PreparedStatement" additivity="true">
  294 + <level value="INFO" />
  295 + <appender-ref ref="STDOUT" />
  296 + </logger>
  297 + <logger name="java.sql.ResultSet" additivity="true">
  298 + <level value="INFO" />
  299 + <appender-ref ref="STDOUT" />
  300 + </logger>
  301 +
  302 + <!-- 日志输出级别 -->
  303 + <root level="info">
  304 + <appender-ref ref="STDOUT" />
  305 + <appender-ref ref="FILE" />
  306 + </root>
307 307 </configuration>
308 308 \ No newline at end of file
... ...
src/main/resources/ms-jdbc.properties
1   -#ms.mysql.driver= com.mysql.jdbc.Driver
2   -#ms.mysql.url= jdbc:mysql://192.168.168.201:3306/ms?useUnicode=true&characterEncoding=utf-8&useSSL=false
3   -#ms.mysql.username= root
4   -#ms.mysql.password= 123456
5   -
6   -ms.mysql.driver= com.mysql.jdbc.Driver
7   -ms.mysql.url= jdbc:mysql://112.64.148.30:54002/ms?useUnicode=true&characterEncoding=utf-8
8   -ms.mysql.username= root
9   -ms.mysql.password= Aa123456
  1 +#ms.mysql.driver= com.mysql.jdbc.Driver
  2 +#ms.mysql.url= jdbc:mysql://192.168.168.201:3306/ms?useUnicode=true&characterEncoding=utf-8&useSSL=false
  3 +#ms.mysql.username= root
  4 +#ms.mysql.password= 123456
  5 +
  6 +ms.mysql.driver= com.mysql.jdbc.Driver
  7 +ms.mysql.url= jdbc:mysql://192.168.210.128/ms?useUnicode=true&characterEncoding=utf-8
  8 +ms.mysql.username= root
  9 +ms.mysql.password= Aa123456
... ...
src/main/resources/static/index.html
1   -<!DOCTYPE html>
2   -<html lang="zh">
3   -<head>
4   - <meta name="renderer" content="webkit" />
5   - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
6   - <meta charset="UTF-8">
7   - <title>调度系统</title>
8   -
9   - <meta http-equiv="Pragma" content="no-cache">
10   - <meta http-equiv="Cache-control" content="no-cache">
11   - <meta http-equiv="Cache" content="no-cache">
12   -
13   - <!-- Font Awesome 图标字体 -->
14   - <link
15   - href="/metronic_v4.5.4/plugins/font-awesome/css/font-awesome.min.css"
16   - rel="stylesheet" type="text/css" />
17   - <!-- Bootstrap style -->
18   - <link href="/metronic_v4.5.4/plugins/bootstrap/css/bootstrap.min.css"
19   - rel="stylesheet" type="text/css" />
20   - <!-- jsTree 数插件 -->
21   - <link
22   - href="/metronic_v4.5.4/plugins/jstree/dist/themes/default/style.min.css"
23   - rel="stylesheet" type="text/css" />
24   - <!-- MULTI-select 多选下拉框美化 -->
25   - <link
26   - href="/metronic_v4.5.4/plugins/jquery-multi-select/css/multi-select.css"
27   - rel="stylesheet" type="text/css" />
28   -
29   - <!-- editable -->
30   - <link
31   - href="/metronic_v4.5.4/plugins/bootstrap-editable/bootstrap-editable/css/bootstrap-editable.css"
32   - rel="stylesheet" type="text/css" />
33   - <!-- METRONIC style -->
34   - <link href="/metronic_v4.5.4/layout4/css/themes/light.min.css"
35   - rel="stylesheet" type="text/css" id="style_color" />
36   - <link href="/metronic_v4.5.4/css/components.css" rel="stylesheet"
37   - type="text/css" />
38   - <link href="/metronic_v4.5.4/css/plugins.css" rel="stylesheet"
39   - type="text/css" />
40   - <link href="/metronic_v4.5.4/layout4/css/layout.min.css"
41   - rel="stylesheet" type="text/css" />
42   - <link href="/metronic_v4.5.4/layout4/css/custom.min.css"
43   - rel="stylesheet" type="text/css" />
44   - <!-- select2 下拉框插件 -->
45   - <link href="/metronic_v4.5.4/plugins/select2/css/select2.min.css"
46   - rel="stylesheet" type="text/css" />
47   - <link
48   - href="/metronic_v4.5.4/plugins/select2/css/select2-bootstrap.min.css"
49   - rel="stylesheet" type="text/css" />
50   - <!-- layer 弹层 插件 -->
51   - <link href="/assets/plugins/layer-v2.4/layer/skin/layer.css"
52   - rel="stylesheet" type="text/css" />
53   - <!-- fileinput 上传 插件 -->
54   - <link href="/assets/plugins/fileinput/css/fileinput.min.css"
55   - rel="stylesheet" type="text/css" />
56   - <!-- iCheck 单选框和复选框 -->
57   - <link href="/metronic_v4.5.4/plugins/icheck/skins/all.css"
58   - rel="stylesheet" type="text/css" />
59   - <!-- 日期控件 -->
60   - <link
61   - href="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.min.css"
62   - rel="stylesheet" type="text/css" />
63   - <!-- table 表格控件 -->
64   - <!--<link rel="stylesheet"-->
65   - <!--href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css"-->
66   - <!--type="text/css" />-->
67   - <link href="/metronic_v4.5.4/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css" rel="stylesheet" type="text/css"/>
68   - <!-- handsontable样式 -->
69   - <link rel="stylesheet"
70   - href="/assets/bower_components/handsontable/dist/handsontable.full.css" />
71   - <!-- sweetalert样式 -->
72   - <link rel="stylesheet"
73   - href="/assets/bower_components/sweetalert/dist/sweetalert.css" />
74   - <!-- schedule计划调度AngularJS模块主css -->
75   - <link rel="stylesheet" href="/pages/scheduleApp/module/common/main.css"
76   - type="text/css" />
77   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" merge="plugins"/>
78   -
79   - <!-- CSS动画 -->
80   - <link
81   - href="/metronic_v4.5.4/plugins/tipso/css/animate.css"
82   - rel="stylesheet" type="text/css" />
83   -
84   - <!-- 提示工具样式 -->
85   - <link
86   - href="/metronic_v4.5.4/plugins/tipso/css/tipso.css"
87   - rel="stylesheet" type="text/css" />
88   -
89   - <style type="text/css">
90   - .searchForm {
91   -
92   - }
93   -
94   - .searchForm .form-group .control-label {
95   - padding-right: 0px;
96   - text-align: right;
97   - margin-top: 7px;
98   - }
99   -
100   - .searchForm .form-group>div {
101   - padding-left: 10px;
102   - padding-right: 0px;
103   - }
104   -
105   - .searchForm .row>div {
106   - padding-left: 0px;
107   - padding-right: 0px;
108   - padding: 5px 0 5px 0;
109   - width: 270px;
110   - display: inline-block;
111   - }
112   -
113   - .searchForm .form-actions {
114   -
115   - }
116   -
117   - tr.row-active td {
118   - border-bottom: 1px solid blue !important;
119   - color: blue;
120   - }
121   -
122   - .ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection
123   - {
124   - font-size: 14px;
125   - }
126   -
127   - .ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection
128   - {
129   - padding: 6px 26px;
130   - }
131   -
132   - .ms-container .ms-list {
133   - height: 306px;
134   - }
135   -
136   - .ms-container .ms-selectable,.ms-container .ms-selection {
137   - width: 47%;
138   - }
139   -
140   - .ms-container {
141   - width: 470px;
142   - margin: auto;
143   - }
144   -
145   - .multi-custom-header-left {
146   - text-align: center;
147   - padding: 7px;
148   - color: #3B3F51;
149   - }
150   -
151   - .multi-custom-header-right {
152   - text-align: center;
153   - padding: 7px;
154   - font-weight: bold;
155   - color: #36C6D3;
156   - }
157   -
158   - .mt-element-list .list-simple.mt-list-container ul>.mt-list-item>.list-item-content
159   - {
160   - padding: 0 55px 0 0px;
161   - }
162   -
163   - .mt-element-list .list-simple.mt-list-container ul>.mt-list-item {
164   - padding: 3.3px 0;
165   - }
166   -
167   - #route-container {
168   - display: none;
169   - }
170   -
171   - .page-content.active {
172   - display: block !important;
173   - }
174   -
175   - .page-header.navbar .page-logo .logo-default {
176   - margin: 0;
177   - }
178   -
179   - .page-header.navbar .top-menu .navbar-nav>li.dropdown.open .dropdown-toggle
180   - {
181   - background-color: #284a99;
182   - }
183   -
184   - .page-header.navbar .page-logo {
185   - padding-right: 10px;
186   - }
187   -
188   - .page-logo .logo-default.logo-default-text {
189   - font-weight: 600;
190   - color: white !important;
191   - margin-top: 19px !important;
192   - font-size: 24px;
193   - text-decoration: none;
194   - }
195   -
196   - .page-logo .logo-default.logo-default-text:HOVER {
197   - color: #dedede !important;
198   - }
199   -
200   - body,.page-content-wrapper,#pjax-container{
201   - height: 100%;
202   - }
203   - html{
204   - height: 90%;
205   - }
206   - .page-container{
207   - height: 100%;
208   - }
209   - </style>
210   -
211   - <!-- ocLazyLoading载入文件的位置 -->
212   - <link id="ng_load_plugins_before" />
213   -
214   -</head>
215   -<body
216   - class="page-container-bg-solid page-header-fixed page-sidebar-closed-hide-logo page-sidebar-fixed">
217   -<div class="page-header navbar navbar-fixed-top"
218   - style="background: linear-gradient(to bottom, #124e78, #125688);">
219   - <div class="page-header-inner ">
220   - <!-- LOGO -->
221   - <div class="page-logo">
222   - <a href="index.html" class="logo-default logo-default-text">
223   - 调度系统 </a>
224   - <div class="menu-toggler sidebar-toggler"></div>
225   - </div>
226   - <!-- END LOGO -->
227   - <a href="javascript:;" class="menu-toggler responsive-toggler"
228   - data-toggle="collapse" data-target=".navbar-collapse"> </a>
229   - <div class="page-top">
230   - <div class="top-menu">
231   - <ul class="nav navbar-nav pull-right">
232   - <!-- 信息通知区 -->
233   - <li
234   - class="dropdown dropdown-extended dropdown-notification dropdown-dark"
235   - id="header_notification_bar"><a href="javascript:;"
236   - class="dropdown-toggle" data-toggle="dropdown"
237   - data-hover="dropdown" data-close-others="true"> <i
238   - class="fa fa-bell"></i> <span class="badge badge-success">
239   - 0 </span>
240   - </a>
241   - <ul class="dropdown-menu" style="max-width: 345px; width: 345px;">
242   - <li class="external">
243   - <h3>
244   - 今日 <span class="bold">0 条</span> 通知
245   - </h3> <a href="javascript:;">查看全部</a>
246   - </li>
247   - <li>
248   - <ul class="dropdown-menu-list scroller" style="height: 250px;"
249   - data-handle-color="#637283">
250   - </ul>
251   - </li>
252   - </ul></li>
253   - <li class="dropdown dropdown-user dropdown-dark"><a
254   - href="javascript:;" class="dropdown-toggle"
255   - data-toggle="dropdown" data-hover="dropdown"
256   - data-close-others="true"> <span id="indexTopUName"
257   - class="username username-hide-on-mobile"
258   - style="vertical-align: middle;"> <i class="fa fa-user"></i></span>
259   - </a>
260   - <ul class="dropdown-menu dropdown-menu-default">
261   - <li><a href="javascript:;"> <i class="fa fa-user"></i>
262   - 我的信息
263   - </a></li>
264   - <li><a href="javascript:;" id="changePWD"> <i
265   - class="fa fa-unlock-alt"></i> 修改密码
266   - </a></li>
267   - <li class="divider"></li>
268   - <li><a href="javascript:;"> <i class="fa fa-lock"></i>
269   - 锁屏
270   - </a></li>
271   - <li><a href="/logout"> <i class="fa fa-key"></i> 注销登陆
272   - </a></li>
273   - </ul></li>
274   - </ul>
275   - </div>
276   - </div>
277   - </div>
278   -</div>
279   -<div class="page-container">
280   - <div class="page-sidebar-wrapper">
281   - <div class="page-sidebar navbar-collapse collapse">
282   - <ul class="page-sidebar-menu page-sidebar-menu-fixed"
283   - data-keep-expanded="false" data-auto-scroll="true"
284   - data-slide-speed="200" id="leftMenuSidebar">
285   - </ul>
286   - </div>
287   - </div>
288   - <div class="page-content-wrapper">
289   - <div id="pjax-container" class="page-content"></div>
290   - <a name="xd_position"></a>
291   - <div id="route-container">
292   - <div ng-app="ScheduleApp">
293   - <div ng-controller="ScheduleAppController">
294   -
295   - <!-- loading widget -->
296   - <div id="loadingWidget" class="flyover mask" loading-widget>
297   - <div class="alert alert-info">
298   - <strong>载入中......</strong>
299   - </div>
300   - </div>
301   -
302   - <div ui-view class="uv"></div>
303   - </div>
304   - </div>
305   - </div>
306   - </div>
307   -</div>
308   -
309   -<script id="menu_list_temp" type="text/html">
310   - {{each list as group i}}
311   - <li class="heading">
312   - <h3 class="uppercase">{{group.name}}</h3>
313   - </li>
314   - {{each group.children as dir j}}
315   - <li class="nav-item">
316   - <a href="javascript:;" class="nav-link nav-toggle ">
317   - <i class="{{dir.icon}}"></i>
318   - <span class="title">{{dir.name}}</span>
319   - <span class="arrow"></span>
320   - </a>
321   - <ul class="sub-menu">
322   - {{each dir.children as module s}}
323   - <li class="nav-item ">
324   - {{if module.container=="pjax-container"}}
325   - <a href="/pages/{{module.path}}" class="nav-link " data-pjax>
326   - <span class="title">{{module.name}}</span>
327   - </a>
328   - {{else}}
329   - <a href="{{module.path}}" class="nav-link " data-angularjs>
330   - <span class="title">{{module.name}}</span>
331   - </a>
332   - {{/if}}
333   - </li>
334   - {{/each}}
335   - </ul>
336   - </li>
337   - {{/each}}
338   - {{/each}}
339   -
340   -</script>
341   -<script>
342   - delete window.require;
343   - delete window.exports;
344   - delete window.module;
345   -</script>
346   -<!-- jQuery -->
347   -<script src="/metronic_v4.5.4/plugins/jquery.min.js" data-exclude=1></script>
348   -<!-- bootstrap -->
349   -<script src="/metronic_v4.5.4/plugins/bootstrap/js/bootstrap.min.js"
350   - data-exclude=1></script>
351   -<script src="/pages/forms/statement/js/jquery.autocompleter.js"></script>
352   -<script src="/pages/forms/statement/js/jquery.PrintArea.js"></script>
353   -<!-- MTRONIC JS -->
354   -<script src="/metronic_v4.5.4/scripts/app.min.js" data-exclude=1></script>
355   -<script src="/metronic_v4.5.4/layout4/scripts/layout.min.js"
356   - data-exclude=1></script>
357   -<!-- 虚拟滚动条 -->
358   -<script
359   - src="/metronic_v4.5.4/plugins/jquery-slimscroll/jquery.slimscroll.min.js"></script>
360   -<!-- jsTree 树插件 -->
361   -<script src="/metronic_v4.5.4/plugins/jstree/dist/jstree.min.js"></script>
362   -<!-- bootstrap-hover-dropDown -->
363   -<script
364   - src="/metronic_v4.5.4/plugins/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js"></script>
365   -<!-- jquery.validate 表单验证 -->
366   -<script
367   - src="/metronic_v4.5.4/plugins/jquery-validation/js/jquery.validate.min.js"></script>
368   -<script
369   - src="/metronic_v4.5.4/plugins/jquery-validation/js/localization/messages_zh.js"></script>
370   -<!-- 向导式插件 -->
371   -<script
372   - src="/metronic_v4.5.4//plugins/bootstrap-wizard/jquery.bootstrap.wizard.min.js"></script>
373   -<!-- iCheck 单选框和复选框 -->
374   -<script src="/metronic_v4.5.4/plugins/icheck/icheck.min.js"></script>
375   -<!-- select2 下拉框 -->
376   -<script src="/metronic_v4.5.4/plugins/select2/js/select2.full.min.js"></script>
377   -<!-- MULTI SELECT 多选下拉框 -->
378   -<script
379   - src="/metronic_v4.5.4/plugins/jquery-multi-select/js/jquery.multi-select.js"></script>
380   -<!-- editable.js -->
381   -<script
382   - src="/metronic_v4.5.4/plugins/bootstrap-editable/bootstrap-editable/js/bootstrap-editable.min.js"></script>
383   -<!-- PJAX -->
384   -<script src="/assets/plugins/jquery.pjax.js"></script>
385   -<!-- layer 弹层 -->
386   -<script src="/assets/plugins/layer-v2.4/layer/layer.js" data-exclude=1></script>
387   -<!-- fileinput 上传 -->
388   -<script src="/assets/plugins/fileinput/canvas-to-blob.min.js"></script>
389   -<script src="/assets/plugins/fileinput/purify.min.js"></script>
390   -<script src="/assets/plugins/fileinput/sortable.min.js"></script>
391   -<script src="/assets/plugins/fileinput/fileinput.min.js"></script>
392   -<script src="/assets/plugins/fileinput/fileinput_locale_zh.js"></script>
393   -<!-- jquery.purl URL解析 -->
394   -<script src="/assets/plugins/purl.js"></script>
395   -<!-- jquery.serializejson JSON序列化插件 -->
396   -<script src="/assets/plugins/jquery.serializejson.js"></script>
397   -<!-- art-template 模版引擎 -->
398   -<script src="/assets/plugins/template.js"></script>
399   -<!-- jquery.pageinator 分页 -->
400   -<script src="/assets/plugins/jqPaginator.min.js"></script>
401   -<!-- moment.js 日期处理类库 -->
402   -<script src="/assets/plugins/moment-with-locales.js"></script>
403   -
404   -<script src="/assets/plugins/pinyin.js"></script>
405   -<!-- 日期控件 -->
406   -<script
407   - src="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/js/bootstrap-datetimepicker.min.js"></script>
408   -<!-- 表格控件 -->
409   -<script src="/metronic_v4.5.4/plugins/bootstrap-tagsinput/bootstrap-tagsinput.min.js"></script>
410   -<!-- 统计图控件 -->
411   -<!--<script src="/assets/global/getEchart.js"></script>
412   -<script src="/assets/global/echarts.js"></script> -->
413   -<script src="/assets/js/common.js"></script>
414   -<script src="/assets/js/dictionary.js"></script>
415   -<!-- tipso JS -->
416   -<script src="/metronic_v4.5.4/plugins/tipso/js/tipso.js"></script>
417   -<script data-exclude=1>
418   - //初始打开的片段地址
419   - var initFragment = "^_^initFragment^_^";
420   - //静态文件目录
421   - var dir = '/pages/';
422   - //片段容器
423   - var pjaxContainer = '#pjax-container'
424   - , angJsContainer = '#route-container';
425   -
426   - $(document).ajaxError(function (event, jqxhr, settings, thrownError) {
427   - if(jqxhr.status == 403){
428   - layer.closeAll();
429   - layer.alert(jqxhr.message?jqxhr.message:'访问被拒绝', {icon: 2, title: '操作失败'});
430   - }
431   - });
432   -
433   - $(function () {
434   - $.get('/user/currentUser', function (user) {
435   - $('#indexTopUName').text(user.userName);
436   - });
437   -
438   - //带 data-pjax 的链接由pjax加载
439   - $(document).pjax('a[data-pjax]', pjaxContainer);
440   -
441   - //pjax左菜单点击事件
442   - $(document).on('click', '#leftMenuSidebar a[data-pjax]', function () {
443   - setTitle(this);
444   -
445   - $('#leftMenuSidebar li.nav-item.active').removeClass('active');
446   - $(this).parent().addClass('active');
447   - showPjax();
448   - });
449   -
450   - //angularjs左菜单点击事件
451   - $(document).on('click', '#leftMenuSidebar a[data-angularjs]', function () {
452   - setTitle(this);
453   -
454   - $('#leftMenuSidebar li.nav-item.active').removeClass('active');
455   - $(this).parent().addClass('active');
456   - showAngJs();
457   - });
458   -
459   - //加载左菜单栏
460   - $get('/module/findByCurrentUser', null,
461   - function (ms) {
462   - var treeArray = createTreeData(ms);
463   - treeArray.sort(function (a, b) {
464   - return a.createDate - b.createDate;
465   - });
466   - var menuHtml = template('menu_list_temp', {list: treeArray});
467   - $('#leftMenuSidebar').html(menuHtml);
468   -
469   - //----------- 检查URL ----------------
470   - var h = location.hash;
471   - if (initFragment && initFragment != '') {
472   - showPjax();
473   - //普通片段
474   - loadPage(initFragment);
475   - //选中菜单
476   - $.each($('#leftMenuSidebar a'), function (i, item) {
477   - if (urlPattern($(item).attr('href'), initFragment)) {
478   - activeLeftMenu(item);
479   - }
480   - });
481   - } else if (h) {
482   - //angularjs片段
483   - showAngJs();
484   - //选中菜单
485   - $.each($('#leftMenuSidebar a'), function (i, item) {
486   - if ($(item).attr('href') == h) {
487   - activeLeftMenu(item);
488   - }
489   - });
490   - }
491   - else {
492   - //加载主页
493   - loadPage('/pages/home.html');
494   - }
495   - });
496   -
497   - //修改密码
498   - $('#changePWD').on('click', function () {
499   - $.get('/pages/permission/user/changePWD.html', function (content) {
500   - layer.open({
501   - type: 1,
502   - area: ['600px', '360px'],
503   - content: content,
504   - title: '修改密码',
505   - shift: 5,
506   - scrollbar: false,
507   - success: function () {
508   - }
509   - });
510   - });
511   - });
512   - });
513   -
514   - //modal关闭时销毁dom
515   - $(document).on('hidden.bs.modal', '.modal', function () {
516   - $(this).remove();
517   - });
518   -
519   - //pjax加载完成事件
520   - $(document).on('pjax:success', function () {
521   - var dicts = $(pjaxContainer).find('.nt-dictionary');
522   - dictionaryUtils.transformDom(dicts);
523   - });
524   -
525   - function loadPage(url) {
526   - $.pjax({url: url, container: pjaxContainer})
527   - }
528   -
529   - function urlPattern(a, b) {
530   - var r;
531   - try {
532   - r = a.substring(0, a.lastIndexOf('/')) == b.substring(0, b.lastIndexOf('/'));
533   - } catch (e) {
534   - r = false;
535   - }
536   - return r;
537   - }
538   -
539   - function showPjax() {
540   - $(angJsContainer).removeClass('page-content active').hide();
541   - $(pjaxContainer).addClass('page-content active');
542   - }
543   -
544   - function showAngJs() {
545   - $(pjaxContainer).html('').removeClass('page-content active').hide();
546   - $(angJsContainer).addClass('page-content active');
547   - }
548   -
549   - function activeLeftMenu(item) {
550   - $(item).parent('.nav-item').addClass('active').parent('.sub-menu').show().parent().addClass('open');
551   - setTitle(item);
552   - }
553   -
554   - function setTitle(menuItem){
555   - document.title = $('span.title', menuItem).text();
556   - }
557   -
558   -</script>
559   -<!-- d3 -->
560   -<script src="/assets/js/d3.min.js" data-exclude=1></script>
561   -<!-- webSocket JS -->
562   -<script src="/assets/js/sockjs.min.js"></script>
563   -
564   -<!-- TODO:angularJS相关库 -->
565   -
566   -<!-- angularJS相关库 -->
567   -<!-- 这个是基于angularjs 1.4.10修改的版本,主要是修改了history控制部分,用于兼容route和pjax的同时操作history的冲突 -->
568   -<script src="/assets/js/angular.js" data-autocephaly=1></script>
569   -<script src="/assets/bower_components/angular-i18n/angular-locale_zh-cn.js" data-autocephaly=1></script>
570   -<script
571   - src="/assets/bower_components/angular-resource/angular-resource.min.js"
572   - data-exclude=1></script>
573   -<script
574   - src="/assets/bower_components/angular-sanitize/angular-sanitize.min.js"
575   - data-exclude=1></script>
576   -<script
577   - src="/assets/bower_components/angular-animate/angular-animate.min.js"
578   - data-exclude=1></script>
579   -<script
580   - src="/assets/bower_components/angular-touch/angular-touch.min.js"
581   - data-exclude=1></script>
582   -<script
583   - src="/assets/bower_components/angular-ui-router/release/angular-ui-router.min.js"
584   - data-exclude=1></script>
585   -<script
586   - src="/assets/bower_components/oclazyload/dist/ocLazyLoad.min.js"
587   - data-exclude=1></script>
588   -<script
589   - src="/assets/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"
590   - data-exclude=1></script>
591   -<!-- handsontable相关js -->
592   -<script
593   - src="/assets/bower_components/handsontable/dist/handsontable.full.js"></script>
594   -<script
595   - src="/assets/bower_components/ngHandsontable/dist/ngHandsontable.js"></script>
596   -<!-- sweetalert相关js -->
597   -<script src="/assets/bower_components/sweetalert/dist/sweetalert.min.js"></script>
598   -<script src="/assets/bower_components/ng-sweet-alert/ng-sweet-alert.js"></script>
599   -
600   -<!-- schedule计划调度AngularJS模块主JS -->
601   -<script src="/pages/scheduleApp/module/common/main.js" data-exclude=1></script>
602   -<script
603   - src="/pages/scheduleApp/module/common/prj-common-globalservice.js"
604   - data-exclude=1></script>
605   -<script src="/pages/scheduleApp/module/common/prj-common-filter.js"
606   - data-exclude=1></script>
607   -<script src="/pages/scheduleApp/module/common/prj-common-directive.js"
608   - data-exclude=1></script>
609   -<script
610   - src="/pages/scheduleApp/module/common/prj-common-ui-route-state.js"
611   - data-exclude=1></script>
612   -
613   -<!-- 地图相关 -->
614   -<!-- 百度 -->
615   -<script
616   - src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"
617   - data-exclude=1></script>
618   -<script
619   - src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"
620   - data-exclude=1></script>
621   -<script type="text/javascript"
622   - src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"
623   - data-exclude=1></script>
624   -<script type="text/javascript"
625   - src="http://api.map.baidu.com/library/RichMarker/1.2/src/RichMarker_min.js "
626   - data-exclude=1></script>
627   -<script src="/assets/js/baidu/TextIconOverlay.js" data-exclude=1></script>
628   -<script src="/assets/js/baidu//MarkerClusterer.js" data-exclude=1></script>
629   -<!-- 高德 -->
630   -<script
631   - src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"
632   - data-exclude=1></script>
633   -<!-- echarts4 误删 -->
634   -<script src="/metronic_v4.5.4/plugins/echarts4/echarts.min.js"></script>
635   -<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" merge="plugins"></script>
636   -
637   -</body>
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +<head>
  4 + <meta name="renderer" content="webkit" />
  5 + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  6 + <meta charset="UTF-8">
  7 + <title>调度系统</title>
  8 +
  9 + <meta http-equiv="Pragma" content="no-cache">
  10 + <meta http-equiv="Cache-control" content="no-cache">
  11 + <meta http-equiv="Cache" content="no-cache">
  12 +
  13 + <!-- Font Awesome 图标字体 -->
  14 + <link
  15 + href="/metronic_v4.5.4/plugins/font-awesome/css/font-awesome.min.css"
  16 + rel="stylesheet" type="text/css" />
  17 + <!-- Bootstrap style -->
  18 + <link href="/metronic_v4.5.4/plugins/bootstrap/css/bootstrap.min.css"
  19 + rel="stylesheet" type="text/css" />
  20 + <!-- jsTree 数插件 -->
  21 + <link
  22 + href="/metronic_v4.5.4/plugins/jstree/dist/themes/default/style.min.css"
  23 + rel="stylesheet" type="text/css" />
  24 + <!-- MULTI-select 多选下拉框美化 -->
  25 + <link
  26 + href="/metronic_v4.5.4/plugins/jquery-multi-select/css/multi-select.css"
  27 + rel="stylesheet" type="text/css" />
  28 +
  29 + <!-- editable -->
  30 + <link
  31 + href="/metronic_v4.5.4/plugins/bootstrap-editable/bootstrap-editable/css/bootstrap-editable.css"
  32 + rel="stylesheet" type="text/css" />
  33 + <!-- METRONIC style -->
  34 + <link href="/metronic_v4.5.4/layout4/css/themes/light.min.css"
  35 + rel="stylesheet" type="text/css" id="style_color" />
  36 + <link href="/metronic_v4.5.4/css/components.css" rel="stylesheet"
  37 + type="text/css" />
  38 + <link href="/metronic_v4.5.4/css/plugins.css" rel="stylesheet"
  39 + type="text/css" />
  40 + <link href="/metronic_v4.5.4/layout4/css/layout.min.css"
  41 + rel="stylesheet" type="text/css" />
  42 + <link href="/metronic_v4.5.4/layout4/css/custom.min.css"
  43 + rel="stylesheet" type="text/css" />
  44 + <!-- select2 下拉框插件 -->
  45 + <link href="/metronic_v4.5.4/plugins/select2/css/select2.min.css"
  46 + rel="stylesheet" type="text/css" />
  47 + <link
  48 + href="/metronic_v4.5.4/plugins/select2/css/select2-bootstrap.min.css"
  49 + rel="stylesheet" type="text/css" />
  50 + <!-- layer 弹层 插件 -->
  51 + <link href="/assets/plugins/layer-v2.4/layer/skin/layer.css"
  52 + rel="stylesheet" type="text/css" />
  53 + <!-- fileinput 上传 插件 -->
  54 + <link href="/assets/plugins/fileinput/css/fileinput.min.css"
  55 + rel="stylesheet" type="text/css" />
  56 + <!-- iCheck 单选框和复选框 -->
  57 + <link href="/metronic_v4.5.4/plugins/icheck/skins/all.css"
  58 + rel="stylesheet" type="text/css" />
  59 + <!-- 日期控件 -->
  60 + <link
  61 + href="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.min.css"
  62 + rel="stylesheet" type="text/css" />
  63 + <!-- table 表格控件 -->
  64 + <!--<link rel="stylesheet"-->
  65 + <!--href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css"-->
  66 + <!--type="text/css" />-->
  67 + <link href="/metronic_v4.5.4/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css" rel="stylesheet" type="text/css"/>
  68 + <!-- handsontable样式 -->
  69 + <link rel="stylesheet"
  70 + href="/assets/bower_components/handsontable/dist/handsontable.full.css" />
  71 + <!-- sweetalert样式 -->
  72 + <link rel="stylesheet"
  73 + href="/assets/bower_components/sweetalert/dist/sweetalert.css" />
  74 + <!-- schedule计划调度AngularJS模块主css -->
  75 + <link rel="stylesheet" href="/pages/scheduleApp/module/common/main.css"
  76 + type="text/css" />
  77 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" merge="plugins"/>
  78 +
  79 + <!-- CSS动画 -->
  80 + <link
  81 + href="/metronic_v4.5.4/plugins/tipso/css/animate.css"
  82 + rel="stylesheet" type="text/css" />
  83 +
  84 + <!-- 提示工具样式 -->
  85 + <link
  86 + href="/metronic_v4.5.4/plugins/tipso/css/tipso.css"
  87 + rel="stylesheet" type="text/css" />
  88 +
  89 + <style type="text/css">
  90 + .searchForm {
  91 +
  92 + }
  93 +
  94 + .searchForm .form-group .control-label {
  95 + padding-right: 0px;
  96 + text-align: right;
  97 + margin-top: 7px;
  98 + }
  99 +
  100 + .searchForm .form-group>div {
  101 + padding-left: 10px;
  102 + padding-right: 0px;
  103 + }
  104 +
  105 + .searchForm .row>div {
  106 + padding-left: 0px;
  107 + padding-right: 0px;
  108 + padding: 5px 0 5px 0;
  109 + width: 270px;
  110 + display: inline-block;
  111 + }
  112 +
  113 + .searchForm .form-actions {
  114 +
  115 + }
  116 +
  117 + tr.row-active td {
  118 + border-bottom: 1px solid blue !important;
  119 + color: blue;
  120 + }
  121 +
  122 + .ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection
  123 + {
  124 + font-size: 14px;
  125 + }
  126 +
  127 + .ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection
  128 + {
  129 + padding: 6px 26px;
  130 + }
  131 +
  132 + .ms-container .ms-list {
  133 + height: 306px;
  134 + }
  135 +
  136 + .ms-container .ms-selectable,.ms-container .ms-selection {
  137 + width: 47%;
  138 + }
  139 +
  140 + .ms-container {
  141 + width: 470px;
  142 + margin: auto;
  143 + }
  144 +
  145 + .multi-custom-header-left {
  146 + text-align: center;
  147 + padding: 7px;
  148 + color: #3B3F51;
  149 + }
  150 +
  151 + .multi-custom-header-right {
  152 + text-align: center;
  153 + padding: 7px;
  154 + font-weight: bold;
  155 + color: #36C6D3;
  156 + }
  157 +
  158 + .mt-element-list .list-simple.mt-list-container ul>.mt-list-item>.list-item-content
  159 + {
  160 + padding: 0 55px 0 0px;
  161 + }
  162 +
  163 + .mt-element-list .list-simple.mt-list-container ul>.mt-list-item {
  164 + padding: 3.3px 0;
  165 + }
  166 +
  167 + #route-container {
  168 + display: none;
  169 + }
  170 +
  171 + .page-content.active {
  172 + display: block !important;
  173 + }
  174 +
  175 + .page-header.navbar .page-logo .logo-default {
  176 + margin: 0;
  177 + }
  178 +
  179 + .page-header.navbar .top-menu .navbar-nav>li.dropdown.open .dropdown-toggle
  180 + {
  181 + background-color: #ffffff;
  182 + }
  183 +
  184 + .page-header.navbar .page-logo {
  185 + padding-right: 10px;
  186 + background-color: #1a2127;
  187 + }
  188 +
  189 + .page-logo .logo-default.logo-default-text {
  190 + font-weight: 600;
  191 + color: white !important;
  192 + margin-top: 19px !important;
  193 + font-size: 24px;
  194 + text-decoration: none;
  195 + }
  196 +
  197 + .page-logo .logo-default.logo-default-text:HOVER {
  198 + color: #ededed !important;
  199 + }
  200 +
  201 + body,.page-content-wrapper,#pjax-container{
  202 + height: 100%;
  203 + }
  204 + html{
  205 + height: 90%;
  206 + }
  207 + .page-container{
  208 + height: 100%;
  209 + }
  210 + </style>
  211 +
  212 + <!-- ocLazyLoading载入文件的位置 -->
  213 + <link id="ng_load_plugins_before" />
  214 +
  215 +</head>
  216 +<body
  217 + class="page-container-bg-solid page-header-fixed page-sidebar-closed-hide-logo page-sidebar-fixed">
  218 +<div class="page-header navbar navbar-fixed-top"
  219 + style="background: linear-gradient(to bottom, #ffffff, #ffffff);">
  220 + <div class="page-header-inner ">
  221 + <!-- LOGO -->
  222 + <div class="page-logo">
  223 + <a href="index.html" class="logo-default logo-default-text">
  224 + 调度系统 </a>
  225 + <div class="menu-toggler sidebar-toggler"></div>
  226 + </div>
  227 + <!-- END LOGO -->
  228 + <a href="javascript:;" class="menu-toggler responsive-toggler"
  229 + data-toggle="collapse" data-target=".navbar-collapse"> </a>
  230 + <div class="page-top">
  231 + <div class="top-menu">
  232 + <ul class="nav navbar-nav pull-right">
  233 + <!-- 信息通知区 -->
  234 + <li
  235 + class="dropdown dropdown-extended dropdown-notification dropdown-dark"
  236 + id="header_notification_bar"><a href="javascript:;"
  237 + class="dropdown-toggle" data-toggle="dropdown"
  238 + data-hover="dropdown" data-close-others="true"> <i
  239 + class="fa fa-bell"></i> <span class="badge badge-success">
  240 + 0 </span>
  241 + </a>
  242 + <ul class="dropdown-menu" style="max-width: 345px; width: 345px;">
  243 + <li class="external">
  244 + <h3>
  245 + 今日 <span class="bold">0 条</span> 通知
  246 + </h3> <a href="javascript:;">查看全部</a>
  247 + </li>
  248 + <li>
  249 + <ul class="dropdown-menu-list scroller" style="height: 250px;"
  250 + data-handle-color="#637283">
  251 + </ul>
  252 + </li>
  253 + </ul></li>
  254 + <li class="dropdown dropdown-user dropdown-dark"><a
  255 + href="javascript:;" class="dropdown-toggle"
  256 + data-toggle="dropdown" data-hover="dropdown"
  257 + data-close-others="true"><i className="fa fa-user"></i><span id="indexTopUName"
  258 + class="username username-hide-on-mobile"
  259 + style="vertical-align: middle;color: #a2a2a2;"></span>
  260 + </a>
  261 + <ul class="dropdown-menu dropdown-menu-default">
  262 + <li><a href="javascript:;"> <i class="fa fa-user"></i>
  263 + 我的信息
  264 + </a></li>
  265 + <li><a href="javascript:;" id="changePWD"> <i
  266 + class="fa fa-unlock-alt"></i> 修改密码
  267 + </a></li>
  268 + <li class="divider"></li>
  269 + <li><a href="javascript:;"> <i class="fa fa-lock"></i>
  270 + 锁屏
  271 + </a></li>
  272 + <li><a href="/logout"> <i class="fa fa-key"></i> 注销登陆
  273 + </a></li>
  274 + </ul></li>
  275 + </ul>
  276 + </div>
  277 + </div>
  278 + </div>
  279 +</div>
  280 +<div class="page-container">
  281 + <div class="page-sidebar-wrapper">
  282 + <div class="page-sidebar navbar-collapse collapse" style="background-color: #2d343c;margin-top: -20px;margin-left: -20px;margin-bottom: -20px;width: 265px;">
  283 + <ul class="page-sidebar-menu page-sidebar-menu-fixed"
  284 + data-keep-expanded="false" data-auto-scroll="true"
  285 + data-slide-speed="200" id="leftMenuSidebar">
  286 + </ul>
  287 + </div>
  288 + </div>
  289 + <div class="page-content-wrapper">
  290 + <div id="pjax-container" class="page-content" style="margin-left: 20px;"></div>
  291 + <a name="xd_position"></a>
  292 + <div id="route-container">
  293 + <div ng-app="ScheduleApp">
  294 + <div ng-controller="ScheduleAppController">
  295 +
  296 + <!-- loading widget -->
  297 + <div id="loadingWidget" class="flyover mask" loading-widget>
  298 + <div class="alert alert-info">
  299 + <strong>载入中......</strong>
  300 + </div>
  301 + </div>
  302 +
  303 + <div ui-view class="uv"></div>
  304 + </div>
  305 + </div>
  306 + </div>
  307 + </div>
  308 +</div>
  309 +
  310 +<script id="menu_list_temp" type="text/html">
  311 + {{each list as group i}}
  312 + <li class="heading">
  313 + <h3 class="uppercase">{{group.name}}</h3>
  314 + </li>
  315 + {{each group.children as dir j}}
  316 + <li class="nav-item">
  317 + <a href="javascript:;" class="nav-link nav-toggle ">
  318 + <i class="{{dir.icon}}"></i>
  319 + <span class="title">{{dir.name}}</span>
  320 + <span class="arrow"></span>
  321 + </a>
  322 + <ul class="sub-menu">
  323 + {{each dir.children as module s}}
  324 + <li class="nav-item ">
  325 + {{if module.container=="pjax-container"}}
  326 + <a href="/pages/{{module.path}}" class="nav-link " data-pjax>
  327 + <span class="title">{{module.name}}</span>
  328 + </a>
  329 + {{else}}
  330 + <a href="{{module.path}}" class="nav-link " data-angularjs>
  331 + <span class="title">{{module.name}}</span>
  332 + </a>
  333 + {{/if}}
  334 + </li>
  335 + {{/each}}
  336 + </ul>
  337 + </li>
  338 + {{/each}}
  339 + {{/each}}
  340 +
  341 +</script>
  342 +<script>
  343 + delete window.require;
  344 + delete window.exports;
  345 + delete window.module;
  346 +</script>
  347 +<!-- jQuery -->
  348 +<script src="/metronic_v4.5.4/plugins/jquery.min.js" data-exclude=1></script>
  349 +<!-- bootstrap -->
  350 +<script src="/metronic_v4.5.4/plugins/bootstrap/js/bootstrap.min.js"
  351 + data-exclude=1></script>
  352 +<script src="/pages/forms/statement/js/jquery.autocompleter.js"></script>
  353 +<script src="/pages/forms/statement/js/jquery.PrintArea.js"></script>
  354 +<!-- MTRONIC JS -->
  355 +<script src="/metronic_v4.5.4/scripts/app.min.js" data-exclude=1></script>
  356 +<script src="/metronic_v4.5.4/layout4/scripts/layout.min.js"
  357 + data-exclude=1></script>
  358 +<!-- 虚拟滚动条 -->
  359 +<script
  360 + src="/metronic_v4.5.4/plugins/jquery-slimscroll/jquery.slimscroll.min.js"></script>
  361 +<!-- jsTree 树插件 -->
  362 +<script src="/metronic_v4.5.4/plugins/jstree/dist/jstree.min.js"></script>
  363 +<!-- bootstrap-hover-dropDown -->
  364 +<script
  365 + src="/metronic_v4.5.4/plugins/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js"></script>
  366 +<!-- jquery.validate 表单验证 -->
  367 +<script
  368 + src="/metronic_v4.5.4/plugins/jquery-validation/js/jquery.validate.min.js"></script>
  369 +<script
  370 + src="/metronic_v4.5.4/plugins/jquery-validation/js/localization/messages_zh.js"></script>
  371 +<!-- 向导式插件 -->
  372 +<script
  373 + src="/metronic_v4.5.4//plugins/bootstrap-wizard/jquery.bootstrap.wizard.min.js"></script>
  374 +<!-- iCheck 单选框和复选框 -->
  375 +<script src="/metronic_v4.5.4/plugins/icheck/icheck.min.js"></script>
  376 +<!-- select2 下拉框 -->
  377 +<script src="/metronic_v4.5.4/plugins/select2/js/select2.full.min.js"></script>
  378 +<!-- MULTI SELECT 多选下拉框 -->
  379 +<script
  380 + src="/metronic_v4.5.4/plugins/jquery-multi-select/js/jquery.multi-select.js"></script>
  381 +<!-- editable.js -->
  382 +<script
  383 + src="/metronic_v4.5.4/plugins/bootstrap-editable/bootstrap-editable/js/bootstrap-editable.min.js"></script>
  384 +<!-- PJAX -->
  385 +<script src="/assets/plugins/jquery.pjax.js"></script>
  386 +<!-- layer 弹层 -->
  387 +<script src="/assets/plugins/layer-v2.4/layer/layer.js" data-exclude=1></script>
  388 +<!-- fileinput 上传 -->
  389 +<script src="/assets/plugins/fileinput/canvas-to-blob.min.js"></script>
  390 +<script src="/assets/plugins/fileinput/purify.min.js"></script>
  391 +<script src="/assets/plugins/fileinput/sortable.min.js"></script>
  392 +<script src="/assets/plugins/fileinput/fileinput.min.js"></script>
  393 +<script src="/assets/plugins/fileinput/fileinput_locale_zh.js"></script>
  394 +<!-- jquery.purl URL解析 -->
  395 +<script src="/assets/plugins/purl.js"></script>
  396 +<!-- jquery.serializejson JSON序列化插件 -->
  397 +<script src="/assets/plugins/jquery.serializejson.js"></script>
  398 +<!-- art-template 模版引擎 -->
  399 +<script src="/assets/plugins/template.js"></script>
  400 +<!-- jquery.pageinator 分页 -->
  401 +<script src="/assets/plugins/jqPaginator.min.js"></script>
  402 +<!-- moment.js 日期处理类库 -->
  403 +<script src="/assets/plugins/moment-with-locales.js"></script>
  404 +
  405 +<script src="/assets/plugins/pinyin.js"></script>
  406 +<!-- 日期控件 -->
  407 +<script
  408 + src="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/js/bootstrap-datetimepicker.min.js"></script>
  409 +<!-- 表格控件 -->
  410 +<script src="/metronic_v4.5.4/plugins/bootstrap-tagsinput/bootstrap-tagsinput.min.js"></script>
  411 +<!-- 统计图控件 -->
  412 +<!--<script src="/assets/global/getEchart.js"></script>
  413 +<script src="/assets/global/echarts.js"></script> -->
  414 +<script src="/assets/js/common.js"></script>
  415 +<script src="/assets/js/dictionary.js"></script>
  416 +<!-- tipso JS -->
  417 +<script src="/metronic_v4.5.4/plugins/tipso/js/tipso.js"></script>
  418 +<script data-exclude=1>
  419 + //初始打开的片段地址
  420 + var initFragment = "^_^initFragment^_^";
  421 + //静态文件目录
  422 + var dir = '/pages/';
  423 + //片段容器
  424 + var pjaxContainer = '#pjax-container'
  425 + , angJsContainer = '#route-container';
  426 +
  427 + $(document).ajaxError(function (event, jqxhr, settings, thrownError) {
  428 + if(jqxhr.status == 403){
  429 + layer.closeAll();
  430 + layer.alert(jqxhr.message?jqxhr.message:'访问被拒绝', {icon: 2, title: '操作失败'});
  431 + }
  432 + });
  433 +
  434 + $(function () {
  435 + $.get('/user/currentUser', function (user) {
  436 + $('#indexTopUName').text(user.userName);
  437 + });
  438 +
  439 + //带 data-pjax 的链接由pjax加载
  440 + $(document).pjax('a[data-pjax]', pjaxContainer);
  441 +
  442 + //pjax左菜单点击事件
  443 + $(document).on('click', '#leftMenuSidebar a[data-pjax]', function () {
  444 + setTitle(this);
  445 +
  446 + $('#leftMenuSidebar li.nav-item.active').removeClass('active');
  447 + $(this).parent().addClass('active');
  448 + showPjax();
  449 + });
  450 +
  451 + //angularjs左菜单点击事件
  452 + $(document).on('click', '#leftMenuSidebar a[data-angularjs]', function () {
  453 + setTitle(this);
  454 +
  455 + $('#leftMenuSidebar li.nav-item.active').removeClass('active');
  456 + $(this).parent().addClass('active');
  457 + showAngJs();
  458 + });
  459 +
  460 + //加载左菜单栏
  461 + $get('/module/findByCurrentUser', null,
  462 + function (ms) {
  463 + var treeArray = createTreeData(ms);
  464 + treeArray.sort(function (a, b) {
  465 + return a.createDate - b.createDate;
  466 + });
  467 + var menuHtml = template('menu_list_temp', {list: treeArray});
  468 + $('#leftMenuSidebar').html(menuHtml);
  469 +
  470 + //----------- 检查URL ----------------
  471 + var h = location.hash;
  472 + if (initFragment && initFragment != '') {
  473 + showPjax();
  474 + //普通片段
  475 + loadPage(initFragment);
  476 + //选中菜单
  477 + $.each($('#leftMenuSidebar a'), function (i, item) {
  478 + if (urlPattern($(item).attr('href'), initFragment)) {
  479 + activeLeftMenu(item);
  480 + }
  481 + });
  482 + } else if (h) {
  483 + //angularjs片段
  484 + showAngJs();
  485 + //选中菜单
  486 + $.each($('#leftMenuSidebar a'), function (i, item) {
  487 + if ($(item).attr('href') == h) {
  488 + activeLeftMenu(item);
  489 + }
  490 + });
  491 + }
  492 + else {
  493 + //加载主页
  494 + loadPage('/pages/home.html');
  495 + }
  496 + });
  497 +
  498 + //修改密码
  499 + $('#changePWD').on('click', function () {
  500 + $.get('/pages/permission/user/changePWD.html', function (content) {
  501 + layer.open({
  502 + type: 1,
  503 + area: ['600px', '360px'],
  504 + content: content,
  505 + title: '修改密码',
  506 + shift: 5,
  507 + scrollbar: false,
  508 + success: function () {
  509 + }
  510 + });
  511 + });
  512 + });
  513 + });
  514 +
  515 + //modal关闭时销毁dom
  516 + $(document).on('hidden.bs.modal', '.modal', function () {
  517 + $(this).remove();
  518 + });
  519 +
  520 + //pjax加载完成事件
  521 + $(document).on('pjax:success', function () {
  522 + var dicts = $(pjaxContainer).find('.nt-dictionary');
  523 + dictionaryUtils.transformDom(dicts);
  524 + });
  525 +
  526 + function loadPage(url) {
  527 + $.pjax({url: url, container: pjaxContainer})
  528 + }
  529 +
  530 + function urlPattern(a, b) {
  531 + var r;
  532 + try {
  533 + r = a.substring(0, a.lastIndexOf('/')) == b.substring(0, b.lastIndexOf('/'));
  534 + } catch (e) {
  535 + r = false;
  536 + }
  537 + return r;
  538 + }
  539 +
  540 + function showPjax() {
  541 + $(angJsContainer).removeClass('page-content active').hide();
  542 + $(pjaxContainer).addClass('page-content active');
  543 + }
  544 +
  545 + function showAngJs() {
  546 + $(pjaxContainer).html('').removeClass('page-content active').hide();
  547 + $(angJsContainer).addClass('page-content active');
  548 + }
  549 +
  550 + function activeLeftMenu(item) {
  551 + $(item).parent('.nav-item').addClass('active').parent('.sub-menu').show().parent().addClass('open');
  552 + setTitle(item);
  553 + }
  554 +
  555 + function setTitle(menuItem){
  556 + document.title = $('span.title', menuItem).text();
  557 + }
  558 +
  559 +</script>
  560 +<!-- d3 -->
  561 +<script src="/assets/js/d3.min.js" data-exclude=1></script>
  562 +<!-- webSocket JS -->
  563 +<script src="/assets/js/sockjs.min.js"></script>
  564 +
  565 +<!-- TODO:angularJS相关库 -->
  566 +
  567 +<!-- angularJS相关库 -->
  568 +<!-- 这个是基于angularjs 1.4.10修改的版本,主要是修改了history控制部分,用于兼容route和pjax的同时操作history的冲突 -->
  569 +<script src="/assets/js/angular.js" data-autocephaly=1></script>
  570 +<script src="/assets/bower_components/angular-i18n/angular-locale_zh-cn.js" data-autocephaly=1></script>
  571 +<script
  572 + src="/assets/bower_components/angular-resource/angular-resource.min.js"
  573 + data-exclude=1></script>
  574 +<script
  575 + src="/assets/bower_components/angular-sanitize/angular-sanitize.min.js"
  576 + data-exclude=1></script>
  577 +<script
  578 + src="/assets/bower_components/angular-animate/angular-animate.min.js"
  579 + data-exclude=1></script>
  580 +<script
  581 + src="/assets/bower_components/angular-touch/angular-touch.min.js"
  582 + data-exclude=1></script>
  583 +<script
  584 + src="/assets/bower_components/angular-ui-router/release/angular-ui-router.min.js"
  585 + data-exclude=1></script>
  586 +<script
  587 + src="/assets/bower_components/oclazyload/dist/ocLazyLoad.min.js"
  588 + data-exclude=1></script>
  589 +<script
  590 + src="/assets/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"
  591 + data-exclude=1></script>
  592 +<!-- handsontable相关js -->
  593 +<script
  594 + src="/assets/bower_components/handsontable/dist/handsontable.full.js"></script>
  595 +<script
  596 + src="/assets/bower_components/ngHandsontable/dist/ngHandsontable.js"></script>
  597 +<!-- sweetalert相关js -->
  598 +<script src="/assets/bower_components/sweetalert/dist/sweetalert.min.js"></script>
  599 +<script src="/assets/bower_components/ng-sweet-alert/ng-sweet-alert.js"></script>
  600 +
  601 +<!-- schedule计划调度AngularJS模块主JS -->
  602 +<script src="/pages/scheduleApp/module/common/main.js" data-exclude=1></script>
  603 +<script
  604 + src="/pages/scheduleApp/module/common/prj-common-globalservice.js"
  605 + data-exclude=1></script>
  606 +<script src="/pages/scheduleApp/module/common/prj-common-filter.js"
  607 + data-exclude=1></script>
  608 +<script src="/pages/scheduleApp/module/common/prj-common-directive.js"
  609 + data-exclude=1></script>
  610 +<script
  611 + src="/pages/scheduleApp/module/common/prj-common-ui-route-state.js"
  612 + data-exclude=1></script>
  613 +
  614 +<!-- 地图相关 -->
  615 +<!-- 百度 -->
  616 +<script
  617 + src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"
  618 + data-exclude=1></script>
  619 +<script
  620 + src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"
  621 + data-exclude=1></script>
  622 +<script type="text/javascript"
  623 + src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"
  624 + data-exclude=1></script>
  625 +<script type="text/javascript"
  626 + src="http://api.map.baidu.com/library/RichMarker/1.2/src/RichMarker_min.js "
  627 + data-exclude=1></script>
  628 +<script src="/assets/js/baidu/TextIconOverlay.js" data-exclude=1></script>
  629 +<script src="/assets/js/baidu//MarkerClusterer.js" data-exclude=1></script>
  630 +<!-- 高德 -->
  631 +<script
  632 + src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"
  633 + data-exclude=1></script>
  634 +<!-- echarts4 误删 -->
  635 +<script src="/metronic_v4.5.4/plugins/echarts4/echarts.min.js"></script>
  636 +<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" merge="plugins"></script>
  637 +
  638 +</body>
638 639 </html>
639 640 \ No newline at end of file
... ...
src/main/resources/static/login.html
1   -<!DOCTYPE html>
2   -<html lang="zh">
3   -<head>
4   - <meta name="renderer" content="webkit" />
5   - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
6   - <meta charset="utf-8" />
7   - <title>登录</title>
8   - <link
9   - href="/metronic_v4.5.4/plugins/font-awesome/css/font-awesome.min.css"
10   - rel="stylesheet" type="text/css" />
11   - <!-- Bootstrap style -->
12   - <link href="/metronic_v4.5.4/plugins/bootstrap/css/bootstrap.min.css"
13   - rel="stylesheet" type="text/css" />
14   -
15   - <!-- METRONIC style -->
16   - <link href="/metronic_v4.5.4/css/components.css" rel="stylesheet"
17   - type="text/css" />
18   -
19   - <style type="text/css">
20   - body>.wrapper {
21   - background-image: url(/assets/img/bg_9b9dcb65ff.png);
22   - background-size: 100px;
23   - background-repeat: repeat;
24   - min-height: 800px;
25   - min-width: 630px;
26   - position: absolute;
27   - top: 0;
28   - bottom: 0;
29   - left: 0;
30   - right: 0;
31   - }
32   -
33   - #loginPanel.dialog-shadow {
34   - width: 450px;
35   - /* height: 400px; */
36   - border: 1px solid #dadada;
37   - border-radius: 10px !important;
38   - position: absolute;
39   - box-shadow: 0 9px 30px -6px rgba(0, 0, 0, .2), 0 18px 20px -10px
40   - rgba(0, 0, 0, .04), 0 18px 20px -10px rgba(0, 0, 0, .04), 0 10px 20px
41   - -10px rgba(0, 0, 0, .04);
42   - background: url(/assets/img/dialog-gray-bg_42c40b3eb6.png) #fff bottom
43   - repeat-x;
44   - top: 50%;
45   - left: 50%;
46   - margin-left: -225px;
47   - margin-top: -300px;
48   - text-align: center;
49   - color: #333;
50   - opacity: .5;
51   -
52   - padding-bottom: 56px;
53   -
54   - animation: to_center 1s forwards;
55   - animation-delay: .2s;
56   -
57   - transition: all .3s ease;
58   - }
59   -
60   - @keyframes to_center
61   - {
62   - 0% {margin-top: -300px;opacity: .5;}
63   - 100% {margin-top: -270px;opacity: 1;}
64   - }
65   -
66   -
67   - h3 {
68   - font-size: 25px;
69   - font-weight: 600;
70   - color: #4a4a4a
71   - }
72   -
73   - .input-icon input {
74   - height: 48px;
75   - border-radius: 5px !important;
76   - transition: all .5s ease;
77   - }
78   -
79   - .input-icon input:FOCUS {
80   - border-color: #c2cad8;
81   - box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12) !important;
82   - }
83   -
84   - .input-icon>i {
85   - margin-top: 16px;
86   - }
87   -
88   - #loginPanel #loginBtn.btn{
89   - border-radius: 6px !important;
90   - width: 378px;
91   - height: 48px;
92   - font-size: 20px;
93   - font-family: 微软雅黑;
94   - transition: all .3s ease;
95   -
96   - background: #5f7ed7;
97   - background: linear-gradient(#6f97e5,#527ed9);
98   - box-shadow: inset 0 1px 2px #7ea1e8 !important;
99   - color: #fff;
100   - text-shadow: #4f70b3 0 -1px 0;
101   - border: none;
102   - }
103   -
104   - #loginPanel #loginBtn.btn:HOVER {
105   - box-shadow: inset 0 1px 1px #7696de,inset 0 0 2px #627dca,inset 0 -2px 3px #5a77c7,inset 0 0 100px rgba(48,77,147,.4) !important;
106   - }
107   -
108   -
109   - #loginPanel.show_msg{
110   - top: calc(50% - 10px);
111   - }
112   -
113   - #loginPanel .alert{
114   - display: none;
115   - padding: 12px;
116   - margin-top: 21px;
117   - border-radius: 0 0 10px 10px !important;
118   - font-size: 13px;
119   -
120   - position: absolute;
121   - width: 100%;
122   - border-bottom: 1px solid #dadada;
123   - }
124   -
125   - #loginPanel .alert.login-success{
126   - color: #27a4b0;
127   - background: #abe7ed;
128   - border-color: #abe7ed;
129   - }
130   -
131   - #loginPanel .alert i{
132   - font-size: 16px;
133   - vertical-align: middle;
134   - margin: 0 5px 3px;
135   - }
136   -
137   - #loginPanel.show_msg .alert{
138   - display: block;
139   - }
140   -
141   - #captchaWrap{
142   - display: none;
143   - text-align: left;
144   - border-top: 1px solid #f3f2f2;
145   - }
146   -
147   - img.captcha-img{
148   - cursor: pointer;
149   - }
150   -
151   - .login-footer{
152   - position: fixed;
153   - width: 100%;
154   - bottom: 35px;
155   - text-align: center;
156   - color: #a6a6a6;
157   - }
158   -
159   - h3.logo-text{
160   - font-family: 华文楷体,华文细黑;
161   - font-size: 28px;
162   - }
163   -
164   - .warn-note{
165   - width: 100%;
166   - position: absolute;
167   - top: 0;
168   - z-index: 2;
169   - text-align: center;
170   - background: #ff4646;
171   - color: white;
172   - padding: 12px;
173   - display: none;
174   - }
175   - </style>
176   -</head>
177   -
178   -<body>
179   -<div class="warn-note">警告!系统目前仅在 WebKit 内核下完成兼容性测试,请使用 Google
180   - Chrome 浏览器进入系统。</div>
181   -<div class="wrapper ng-scope">
182   - <div id="loginPanel" class="dialog dialog-shadow">
183   - <br>
184   - <h3 class="logo-text">调度系统</h3>
185   - <hr>
186   - <form style="padding: 0px 35px;">
187   - <div class="form-group" style="margin-bottom: 0">
188   - <label></label>
189   - <div class="input-icon">
190   - <i class="fa fa-user font-gray"></i> <input type="text"
191   - name="userName" class="form-control" placeholder="输入用户名"
192   - autofocus="autofocus" autocomplete="off">
193   - </div>
194   - </div>
195   -
196   - <div class="form-group">
197   - <label></label>
198   - <div class="input-icon">
199   - <i class="fa fa-key font-gray"></i> <input type="password"
200   - name="password" class="form-control" placeholder="输入密码">
201   - </div>
202   - </div>
203   -
204   - <div class="form-group" id="captchaWrap">
205   - <label></label>
206   - <div class="input-icon">
207   - <input type="text" name="captcha" style="width: 153px !important;"
208   - class="form-control input-inline input-medium"
209   - placeholder="输入验证码"> <span class="help-inline"> <img
210   - alt="验证码" class="captcha-img" title="点击刷新验证码">
211   - </span>
212   - </div>
213   - </div>
214   - </form>
215   - <br>
216   - <br>
217   - <div class="form-actions">
218   - <button class="btn blue-steel" id="loginBtn" disabled="disabled">登录</button>
219   - </div>
220   -
221   - <div class="alert alert-danger"></div>
222   - </div>
223   -
224   - <div class="login-footer">© 2016 上海巴士拓华科技发展有限公司 Some Rights
225   - Reserved</div>
226   -</div>
227   -
228   -<script>
229   - delete window.require;
230   - delete window.exports;
231   - delete window.module;
232   -</script>
233   -<!-- jQuery -->
234   -<script src="/metronic_v4.5.4/plugins/jquery.min.js"></script>
235   -<script src="/assets/plugins/jsencrypt.min.js"></script>
236   -<script>
237   - window.onload=function(){
238   - var body=document.getElementsByTagName("body")[0];
239   - if(typeof body.style.WebkitAnimation=="undefined")
240   - $('.warn-note').fadeIn();
241   - };
242   - !function(){
243   - var form = $('#loginPanel form')
244   - ,nameInput = $('input[name=userName]', form)
245   - ,pwdInput = $('input[name=password]', form)
246   - ,msgAlert = $('#loginPanel .alert-danger');
247   -
248   - $('input', form).on('keyup', checkBtnStatus);
249   -
250   - var keys;
251   - $.get('/user/login/jCryptionKey?t='+Math.random(), function(data){
252   - keys = data.publickey;
253   - });
254   -
255   -
256   -
257   - function checkBtnStatus(){
258   - var es = $('input:visible', form);
259   - for(var i = 0, e; e = es[i++];){
260   - if($.trim($(e).val()) == ''){
261   - $('#loginBtn').attr('disabled', 'disabled');
262   - $('#loginPanel').removeClass('show_msg');
263   - return;
264   - }
265   - }
266   - $('#loginBtn').removeAttr('disabled');
267   - }
268   -
269   - nameInput.on('blur', checkStatus);
270   - //keyup 事件做延迟
271   - var uNameKeyup;
272   - nameInput.on('keyup', function(){
273   - if(uNameKeyup)
274   - return;
275   - uNameKeyup = true;
276   - setTimeout(function(){
277   - checkStatus();
278   - uNameKeyup = false;
279   - }, 200);
280   - });
281   -
282   - //密码框回车事件
283   - pwdInput.on('keyup', function(e){
284   - if (e.keyCode == 13)
285   - $('#loginBtn').click();
286   - });
287   - //验证码框回车事件
288   - $('input[name=captcha]').on('keyup', function(e){
289   - if (e.keyCode == 13)
290   - $('#loginBtn').click();
291   - });
292   -
293   - $('#loginBtn').on('click', function(){
294   - if(lock || $(this).attr('disabled')) return;
295   - var userName = nameInput.val()
296   - ,pwd = pwdInput.val();
297   -
298   - //RSA加密
299   - var encrypt = new JSEncrypt();
300   - encrypt.setPublicKey(keys);
301   - userName = encrypt.encrypt(userName);
302   - pwd = encrypt.encrypt(pwd);
303   - //登录
304   - login(userName, pwd);
305   - });
306   -
307   - var lock;
308   - function login(userName, pwd){
309   - lock = true;
310   - $('#loginBtn').attr('disabled', 'disabled');
311   -
312   - var params = {
313   - userName: userName,
314   - password: pwd,
315   - captcha: $('input[name=captcha]').val()
316   - };
317   - $.post('/user/login', params
318   - ,function(rs){
319   -
320   - $('#loginPanel').addClass('show_msg');
321   - if(error(rs)){
322   - lock = false;
323   - $('#loginBtn').removeAttr('disabled');
324   -
325   - msgAlert.html('<i class="fa fa-times-circle"> </i> 登录失败,' + rs.msg);
326   -
327   - _captcha.refresh();
328   - checkStatus();
329   - }
330   - else{
331   - msgAlert.html('<i class="fa fa-check"> </i> 登录成功!');
332   - msgAlert.addClass('login-success');
333   - window.location.href = '/';
334   - }
335   - });
336   - }
337   -
338   - function checkStatus(){
339   - var t = nameInput.val();
340   - if(!t){
341   - hide();
342   - return;
343   - }
344   -
345   - $.get('/user/login/captchaStatus', {userName: t}, function(rs){
346   - if(rs >= 3)
347   - _captcha.show();
348   - else
349   - hide();
350   - });
351   -
352   - function hide(){
353   - if(!$("#captchaWrap").is(":hidden")){
354   - _captcha.hide();
355   - //隐藏提示消息
356   - msgAlert.html('');
357   - $('#loginPanel').removeClass('show_msg');
358   - }
359   - }
360   - }
361   -
362   -
363   - var _captcha = {
364   - show: function(){
365   - if($("#captchaWrap").is(":hidden")){
366   - $('#captchaWrap').fadeIn(500);
367   - _captcha.refresh();
368   - checkBtnStatus();
369   - }
370   - },
371   - refresh: function(){
372   - if($("#captchaWrap").is(":hidden"))
373   - return;
374   - $('#captchaWrap img.captcha-img').attr('src', '/captcha.jpg?t=' + Math.random());
375   - },
376   - hide: function(){
377   - $('#captchaWrap').hide();
378   - $('input[name=captcha]').val('');
379   - }
380   - };
381   -
382   - $('#captchaWrap img.captcha-img').on('click', function(){
383   - $(this).attr('src', '/captcha.jpg?t=' + Math.random());
384   - });
385   -
386   - function error(rs){
387   - return rs.status == 'ERROR' || rs.status == 500;
388   - }
389   - }();
390   -</script>
391   -</body>
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +<head>
  4 + <meta name="renderer" content="webkit" />
  5 + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  6 + <meta charset="utf-8" />
  7 + <title>登录</title>
  8 + <link
  9 + href="/metronic_v4.5.4/plugins/font-awesome/css/font-awesome.min.css"
  10 + rel="stylesheet" type="text/css" />
  11 + <!-- Bootstrap style -->
  12 + <link href="/metronic_v4.5.4/plugins/bootstrap/css/bootstrap.min.css"
  13 + rel="stylesheet" type="text/css" />
  14 +
  15 + <!-- METRONIC style -->
  16 + <link href="/metronic_v4.5.4/css/components.css" rel="stylesheet"
  17 + type="text/css" />
  18 +
  19 + <style type="text/css">
  20 + body>.wrapper {
  21 + background-image: url(/assets/img/bg_9b9dcb65ff.png);
  22 + background-size: 100px;
  23 + background-repeat: repeat;
  24 + min-height: 800px;
  25 + min-width: 630px;
  26 + position: absolute;
  27 + top: 0;
  28 + bottom: 0;
  29 + left: 0;
  30 + right: 0;
  31 + }
  32 +
  33 + #loginPanel.dialog-shadow {
  34 + width: 450px;
  35 + /* height: 400px; */
  36 + border: 1px solid #dadada;
  37 + border-radius: 10px !important;
  38 + position: absolute;
  39 + box-shadow: 0 9px 30px -6px rgba(0, 0, 0, .2), 0 18px 20px -10px
  40 + rgba(0, 0, 0, .04), 0 18px 20px -10px rgba(0, 0, 0, .04), 0 10px 20px
  41 + -10px rgba(0, 0, 0, .04);
  42 + background: url(/assets/img/dialog-gray-bg_42c40b3eb6.png) #fff bottom
  43 + repeat-x;
  44 + top: 50%;
  45 + left: 50%;
  46 + margin-left: -225px;
  47 + margin-top: -300px;
  48 + text-align: center;
  49 + color: #333;
  50 + opacity: .5;
  51 +
  52 + padding-bottom: 56px;
  53 +
  54 + animation: to_center 1s forwards;
  55 + animation-delay: .2s;
  56 +
  57 + transition: all .3s ease;
  58 + }
  59 +
  60 + @keyframes to_center
  61 + {
  62 + 0% {margin-top: -300px;opacity: .5;}
  63 + 100% {margin-top: -270px;opacity: 1;}
  64 + }
  65 +
  66 +
  67 + h3 {
  68 + font-size: 25px;
  69 + font-weight: 600;
  70 + color: #4a4a4a
  71 + }
  72 +
  73 + .input-icon input {
  74 + height: 48px;
  75 + border-radius: 5px !important;
  76 + transition: all .5s ease;
  77 + }
  78 +
  79 + .input-icon input:FOCUS {
  80 + border-color: #c2cad8;
  81 + box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12) !important;
  82 + }
  83 +
  84 + .input-icon>i {
  85 + margin-top: 16px;
  86 + }
  87 +
  88 + #loginPanel #loginBtn.btn{
  89 + border-radius: 6px !important;
  90 + width: 378px;
  91 + height: 48px;
  92 + font-size: 20px;
  93 + font-family: 微软雅黑;
  94 + transition: all .3s ease;
  95 +
  96 + background: #5f7ed7;
  97 + background: linear-gradient(#6f97e5,#527ed9);
  98 + box-shadow: inset 0 1px 2px #7ea1e8 !important;
  99 + color: #fff;
  100 + text-shadow: #4f70b3 0 -1px 0;
  101 + border: none;
  102 + }
  103 +
  104 + #loginPanel #loginBtn.btn:HOVER {
  105 + box-shadow: inset 0 1px 1px #7696de,inset 0 0 2px #627dca,inset 0 -2px 3px #5a77c7,inset 0 0 100px rgba(48,77,147,.4) !important;
  106 + }
  107 +
  108 +
  109 + #loginPanel.show_msg{
  110 + top: calc(50% - 10px);
  111 + }
  112 +
  113 + #loginPanel .alert{
  114 + display: none;
  115 + padding: 12px;
  116 + margin-top: 21px;
  117 + border-radius: 0 0 10px 10px !important;
  118 + font-size: 13px;
  119 +
  120 + position: absolute;
  121 + width: 100%;
  122 + border-bottom: 1px solid #dadada;
  123 + }
  124 +
  125 + #loginPanel .alert.login-success{
  126 + color: #27a4b0;
  127 + background: #abe7ed;
  128 + border-color: #abe7ed;
  129 + }
  130 +
  131 + #loginPanel .alert i{
  132 + font-size: 16px;
  133 + vertical-align: middle;
  134 + margin: 0 5px 3px;
  135 + }
  136 +
  137 + #loginPanel.show_msg .alert{
  138 + display: block;
  139 + }
  140 +
  141 + #captchaWrap{
  142 + display: none;
  143 + text-align: left;
  144 + border-top: 1px solid #f3f2f2;
  145 + }
  146 +
  147 + img.captcha-img{
  148 + cursor: pointer;
  149 + }
  150 +
  151 + .login-footer{
  152 + position: fixed;
  153 + width: 100%;
  154 + bottom: 35px;
  155 + text-align: center;
  156 + color: #a6a6a6;
  157 + }
  158 +
  159 + h3.logo-text{
  160 + font-family: 华文楷体,华文细黑;
  161 + font-size: 28px;
  162 + }
  163 +
  164 + .warn-note{
  165 + width: 100%;
  166 + position: absolute;
  167 + top: 0;
  168 + z-index: 2;
  169 + text-align: center;
  170 + background: #ff4646;
  171 + color: white;
  172 + padding: 12px;
  173 + display: none;
  174 + }
  175 + </style>
  176 +</head>
  177 +
  178 +<body>
  179 +<div class="warn-note">警告!系统目前仅在 WebKit 内核下完成兼容性测试,请使用 Google
  180 + Chrome 浏览器进入系统。</div>
  181 +<div class="wrapper ng-scope">
  182 + <div id="loginPanel" class="dialog dialog-shadow">
  183 + <br>
  184 + <h3 class="logo-text">调度系统</h3>
  185 + <hr>
  186 + <form style="padding: 0px 35px;">
  187 + <div class="form-group" style="margin-bottom: 0">
  188 + <label></label>
  189 + <div class="input-icon">
  190 + <i class="fa fa-user font-gray"></i> <input type="text"
  191 + name="userName" class="form-control" placeholder="输入用户名"
  192 + autofocus="autofocus" autocomplete="off">
  193 + </div>
  194 + </div>
  195 +
  196 + <div class="form-group">
  197 + <label></label>
  198 + <div class="input-icon">
  199 + <i class="fa fa-key font-gray"></i> <input type="password"
  200 + name="password" class="form-control" placeholder="输入密码">
  201 + </div>
  202 + </div>
  203 +
  204 + <div class="form-group" id="captchaWrap">
  205 + <label></label>
  206 + <div class="input-icon">
  207 + <input type="text" name="captcha" style="width: 153px !important;"
  208 + class="form-control input-inline input-medium"
  209 + placeholder="输入验证码"> <span class="help-inline"> <img
  210 + alt="验证码" class="captcha-img" title="点击刷新验证码">
  211 + </span>
  212 + </div>
  213 + </div>
  214 + </form>
  215 + <br>
  216 + <br>
  217 + <div class="form-actions">
  218 + <button class="btn blue-steel" id="loginBtn" disabled="disabled">登录</button>
  219 + </div>
  220 +
  221 + <div class="alert alert-danger"></div>
  222 + </div>
  223 +
  224 + <div class="login-footer">© 2016 上海西虹桥导航技术有限公司 Some Rights
  225 + Reserved</div>
  226 +</div>
  227 +
  228 +<script>
  229 + delete window.require;
  230 + delete window.exports;
  231 + delete window.module;
  232 +</script>
  233 +<!-- jQuery -->
  234 +<script src="/metronic_v4.5.4/plugins/jquery.min.js"></script>
  235 +<script src="/assets/plugins/jsencrypt.min.js"></script>
  236 +<script>
  237 + window.onload=function(){
  238 + var body=document.getElementsByTagName("body")[0];
  239 + if(typeof body.style.WebkitAnimation=="undefined")
  240 + $('.warn-note').fadeIn();
  241 + };
  242 + !function(){
  243 + var form = $('#loginPanel form')
  244 + ,nameInput = $('input[name=userName]', form)
  245 + ,pwdInput = $('input[name=password]', form)
  246 + ,msgAlert = $('#loginPanel .alert-danger');
  247 +
  248 + $('input', form).on('keyup', checkBtnStatus);
  249 +
  250 + var keys;
  251 + $.get('/user/login/jCryptionKey?t='+Math.random(), function(data){
  252 + keys = data.publickey;
  253 + });
  254 +
  255 +
  256 +
  257 + function checkBtnStatus(){
  258 + var es = $('input:visible', form);
  259 + for(var i = 0, e; e = es[i++];){
  260 + if($.trim($(e).val()) == ''){
  261 + $('#loginBtn').attr('disabled', 'disabled');
  262 + $('#loginPanel').removeClass('show_msg');
  263 + return;
  264 + }
  265 + }
  266 + $('#loginBtn').removeAttr('disabled');
  267 + }
  268 +
  269 + nameInput.on('blur', checkStatus);
  270 + //keyup 事件做延迟
  271 + var uNameKeyup;
  272 + nameInput.on('keyup', function(){
  273 + if(uNameKeyup)
  274 + return;
  275 + uNameKeyup = true;
  276 + setTimeout(function(){
  277 + checkStatus();
  278 + uNameKeyup = false;
  279 + }, 200);
  280 + });
  281 +
  282 + //密码框回车事件
  283 + pwdInput.on('keyup', function(e){
  284 + if (e.keyCode == 13)
  285 + $('#loginBtn').click();
  286 + });
  287 + //验证码框回车事件
  288 + $('input[name=captcha]').on('keyup', function(e){
  289 + if (e.keyCode == 13)
  290 + $('#loginBtn').click();
  291 + });
  292 +
  293 + $('#loginBtn').on('click', function(){
  294 + if(lock || $(this).attr('disabled')) return;
  295 + var userName = nameInput.val()
  296 + ,pwd = pwdInput.val();
  297 +
  298 + //RSA加密
  299 + var encrypt = new JSEncrypt();
  300 + encrypt.setPublicKey(keys);
  301 + userName = encrypt.encrypt(userName);
  302 + pwd = encrypt.encrypt(pwd);
  303 + //登录
  304 + login(userName, pwd);
  305 + });
  306 +
  307 + var lock;
  308 + function login(userName, pwd){
  309 + lock = true;
  310 + $('#loginBtn').attr('disabled', 'disabled');
  311 +
  312 + var params = {
  313 + userName: userName,
  314 + password: pwd,
  315 + captcha: $('input[name=captcha]').val()
  316 + };
  317 + $.post('/user/login', params
  318 + ,function(rs){
  319 +
  320 + $('#loginPanel').addClass('show_msg');
  321 + if(error(rs)){
  322 + lock = false;
  323 + $('#loginBtn').removeAttr('disabled');
  324 +
  325 + msgAlert.html('<i class="fa fa-times-circle"> </i> 登录失败,' + rs.msg);
  326 +
  327 + _captcha.refresh();
  328 + checkStatus();
  329 + }
  330 + else{
  331 + msgAlert.html('<i class="fa fa-check"> </i> 登录成功!');
  332 + msgAlert.addClass('login-success');
  333 + window.location.href = '/';
  334 + }
  335 + });
  336 + }
  337 +
  338 + function checkStatus(){
  339 + var t = nameInput.val();
  340 + if(!t){
  341 + hide();
  342 + return;
  343 + }
  344 +
  345 + $.get('/user/login/captchaStatus', {userName: t}, function(rs){
  346 + if(rs >= 3)
  347 + _captcha.show();
  348 + else
  349 + hide();
  350 + });
  351 +
  352 + function hide(){
  353 + if(!$("#captchaWrap").is(":hidden")){
  354 + _captcha.hide();
  355 + //隐藏提示消息
  356 + msgAlert.html('');
  357 + $('#loginPanel').removeClass('show_msg');
  358 + }
  359 + }
  360 + }
  361 +
  362 +
  363 + var _captcha = {
  364 + show: function(){
  365 + if($("#captchaWrap").is(":hidden")){
  366 + $('#captchaWrap').fadeIn(500);
  367 + _captcha.refresh();
  368 + checkBtnStatus();
  369 + }
  370 + },
  371 + refresh: function(){
  372 + if($("#captchaWrap").is(":hidden"))
  373 + return;
  374 + $('#captchaWrap img.captcha-img').attr('src', '/captcha.jpg?t=' + Math.random());
  375 + },
  376 + hide: function(){
  377 + $('#captchaWrap').hide();
  378 + $('input[name=captcha]').val('');
  379 + }
  380 + };
  381 +
  382 + $('#captchaWrap img.captcha-img').on('click', function(){
  383 + $(this).attr('src', '/captcha.jpg?t=' + Math.random());
  384 + });
  385 +
  386 + function error(rs){
  387 + return rs.status == 'ERROR' || rs.status == 500;
  388 + }
  389 + }();
  390 +</script>
  391 +</body>
392 392 </html>
393 393 \ No newline at end of file
... ...