Commit ae3cab804d96fdb702369f9619d011bc85dc5648

Authored by 潘钊
1 parent 895569f1

update..

还原 components.css  ,该文件被打乱格式导致按钮背景消失

Too many changes to show.

To preserve performance only 19 of 33 files are displayed.

src/main/java/com/bsth/controller/logger/MileModifyController.java 0 → 100644
  1 +package com.bsth.controller.logger;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.logger.Logger_MileModify;
  5 +import org.springframework.web.bind.annotation.RequestMapping;
  6 +import org.springframework.web.bind.annotation.RestController;
  7 +
  8 +/**
  9 + * Created by panzhao on 2017/3/6.
  10 + */
  11 +@RestController
  12 +@RequestMapping("logger_mile_modify")
  13 +public class MileModifyController extends BaseController<Logger_MileModify, Long>{
  14 +}
src/main/java/com/bsth/controller/realcontrol/LineConfigController.java
@@ -35,6 +35,11 @@ public class LineConfigController extends BaseController&lt;LineConfig, Integer&gt;{ @@ -35,6 +35,11 @@ public class LineConfigController extends BaseController&lt;LineConfig, Integer&gt;{
35 return lineConfigService.editOutTimeType(lineCode, type); 35 return lineConfigService.editOutTimeType(lineCode, type);
36 } 36 }
37 37
  38 + @RequestMapping(value = "/enableInParkForSource", method = RequestMethod.POST)
  39 + public Map<String, Object> enableInParkForSource(@RequestParam String lineCode, @RequestParam int enable){
  40 + return lineConfigService.enableInParkForSource(lineCode, enable);
  41 + }
  42 +
38 @RequestMapping(value = "/getByLineCode") 43 @RequestMapping(value = "/getByLineCode")
39 public LineConfig getByLineCode(@RequestParam String lineCode){ 44 public LineConfig getByLineCode(@RequestParam String lineCode){
40 return lineConfigService.getByLineCode(lineCode); 45 return lineConfigService.getByLineCode(lineCode);
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
@@ -451,7 +451,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -451,7 +451,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
451 } 451 }
452 452
453 @RequestMapping(value = "lpChangeMulti", method = RequestMethod.POST) 453 @RequestMapping(value = "lpChangeMulti", method = RequestMethod.POST)
454 - public Map<String, Object> lpChangeMulti(@RequestParam String leftIdx, @RequestParam String rightIdx){  
455 - return scheduleRealInfoService.lpChangeMulti(leftIdx, rightIdx); 454 + public Map<String, Object> lpChangeMulti(@RequestParam String leftIdx, @RequestParam String rightIdx,@RequestParam int type){
  455 + return scheduleRealInfoService.lpChangeMulti(leftIdx, rightIdx, type);
456 } 456 }
457 } 457 }
src/main/java/com/bsth/controller/realcontrol/dto/LpData.java
@@ -19,17 +19,36 @@ public class LpData { @@ -19,17 +19,36 @@ public class LpData {
19 this.zdsj = sch.getZdsjActualTime(); 19 this.zdsj = sch.getZdsjActualTime();
20 } 20 }
21 21
22 - public void appendTo(ScheduleRealInfo sch) {  
23 - sch.setjGh(this.jGh);  
24 - sch.setjName(this.jName);  
25 - sch.setsGh(this.sGh);  
26 - sch.setsName(this.sName);  
27 - sch.setClZbh(this.nbbm);  
28 -  
29 - if (this.fcsj != null)  
30 - sch.setFcsjActualAll(this.fcsj);  
31 - if (this.zdsj != null)  
32 - sch.setZdsjActualAll(this.zdsj); 22 + public void appendTo(ScheduleRealInfo sch, int type) {
  23 +
  24 + if (type == 0) {
  25 + //只换人
  26 + sch.setjGh(this.jGh);
  27 + sch.setjName(this.jName);
  28 + sch.setsGh(this.sGh);
  29 + sch.setsName(this.sName);
  30 + } else if (type == 1) {
  31 + //只换车
  32 + sch.setClZbh(this.nbbm);
  33 +
  34 + if (this.fcsj != null)
  35 + sch.setFcsjActualAll(this.fcsj);
  36 + if (this.zdsj != null)
  37 + sch.setZdsjActualAll(this.zdsj);
  38 +
  39 + } else if (type == 2) {
  40 + //换人并换车
  41 + sch.setjGh(this.jGh);
  42 + sch.setjName(this.jName);
  43 + sch.setsGh(this.sGh);
  44 + sch.setsName(this.sName);
  45 + sch.setClZbh(this.nbbm);
  46 +
  47 + if (this.fcsj != null)
  48 + sch.setFcsjActualAll(this.fcsj);
  49 + if (this.zdsj != null)
  50 + sch.setZdsjActualAll(this.zdsj);
  51 + }
33 } 52 }
34 53
35 /** 54 /**
src/main/java/com/bsth/data/directive/DayOfDirectives.java
1 package com.bsth.data.directive; 1 package com.bsth.data.directive;
2 2
3 -import java.util.ArrayList;  
4 -import java.util.Collection;  
5 -import java.util.Comparator;  
6 -import java.util.HashMap;  
7 -import java.util.List;  
8 -import java.util.Map;  
9 -  
10 -import org.slf4j.Logger;  
11 -import org.slf4j.LoggerFactory;  
12 -import org.springframework.beans.factory.annotation.Autowired;  
13 -import org.springframework.stereotype.Component;  
14 -  
15 import com.alibaba.fastjson.JSONObject; 3 import com.alibaba.fastjson.JSONObject;
16 import com.bsth.data.LineConfigData; 4 import com.bsth.data.LineConfigData;
17 import com.bsth.entity.directive.D60; 5 import com.bsth.entity.directive.D60;
@@ -21,6 +9,12 @@ import com.bsth.entity.directive.DirectiveReponse; @@ -21,6 +9,12 @@ import com.bsth.entity.directive.DirectiveReponse;
21 import com.bsth.entity.realcontrol.ScheduleRealInfo; 9 import com.bsth.entity.realcontrol.ScheduleRealInfo;
22 import com.bsth.service.directive.DirectiveService; 10 import com.bsth.service.directive.DirectiveService;
23 import com.bsth.websocket.handler.SendUtils; 11 import com.bsth.websocket.handler.SendUtils;
  12 +import org.slf4j.Logger;
  13 +import org.slf4j.LoggerFactory;
  14 +import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.stereotype.Component;
  16 +
  17 +import java.util.*;
24 18
25 /** 19 /**
26 * 20 *
@@ -42,6 +36,9 @@ public class DayOfDirectives { @@ -42,6 +36,9 @@ public class DayOfDirectives {
42 //等待C0_A4回复的用户 36 //等待C0_A4回复的用户
43 //public static Map<K, V> 37 //public static Map<K, V>
44 38
  39 + //等待入库的指令
  40 + public static LinkedList<Directive> pstDirectives;
  41 +
45 @Autowired 42 @Autowired
46 DirectiveService directiveService; 43 DirectiveService directiveService;
47 44
@@ -57,14 +54,19 @@ public class DayOfDirectives { @@ -57,14 +54,19 @@ public class DayOfDirectives {
57 static{ 54 static{
58 d60Map = new HashMap<>(); 55 d60Map = new HashMap<>();
59 d64Map = new HashMap<>(); 56 d64Map = new HashMap<>();
  57 + pstDirectives = new LinkedList<>();
60 } 58 }
61 59
62 public void put60(D60 d60) { 60 public void put60(D60 d60) {
63 d60Map.put(d60.getMsgId(), d60); 61 d60Map.put(d60.getMsgId(), d60);
  62 + //等待持久化
  63 + pstDirectives.add(d60);
64 } 64 }
65 65
66 public void put64(D64 d64) { 66 public void put64(D64 d64) {
67 d64Map.put(d64.getKey(), d64); 67 d64Map.put(d64.getKey(), d64);
  68 + //等待持久化
  69 + pstDirectives.add(d64);
68 } 70 }
69 71
70 /** 72 /**
@@ -98,8 +100,9 @@ public class DayOfDirectives { @@ -98,8 +100,9 @@ public class DayOfDirectives {
98 d60.setReply47Time(System.currentTimeMillis()); 100 d60.setReply47Time(System.currentTimeMillis());
99 break; 101 break;
100 } 102 }
101 - // 入库  
102 - saveD60(d60); 103 + // 等待持久化
  104 + if(!pstDirectives.contains(d60))
  105 + pstDirectives.add(d60);
103 106
104 ScheduleRealInfo sch = d60.getSch(); 107 ScheduleRealInfo sch = d60.getSch();
105 if (null == sch) 108 if (null == sch)
@@ -131,19 +134,20 @@ public class DayOfDirectives { @@ -131,19 +134,20 @@ public class DayOfDirectives {
131 logger.warn("64响应 data is null ,json: " + json); 134 logger.warn("64响应 data is null ,json: " + json);
132 else { 135 else {
133 d64.setRespAck(data.getShort("requestAck")); 136 d64.setRespAck(data.getShort("requestAck"));
134 - // 响应入库  
135 - directiveService.save64(d64); 137 + // 持久化
  138 + if(!pstDirectives.contains(d64))
  139 + pstDirectives.add(d64);
136 } 140 }
137 } 141 }
138 } 142 }
139 143
140 - private void saveD60(D60 d60) { 144 +/* private void saveD60(D60 d60) {
141 // 等47再入库 145 // 等47再入库
142 if (d60.getReply47() == null) 146 if (d60.getReply47() == null)
143 return; 147 return;
144 148
145 directiveService.save(d60); 149 directiveService.save(d60);
146 - } 150 + }*/
147 151
148 public void clear(String device){ 152 public void clear(String device){
149 int c60 = 0, c64 = 0; 153 int c60 = 0, c64 = 0;
src/main/java/com/bsth/data/directive/DirectivesPstThread.java 0 → 100644
  1 +package com.bsth.data.directive;
  2 +
  3 +import com.bsth.entity.directive.D60;
  4 +import com.bsth.entity.directive.D64;
  5 +import com.bsth.entity.directive.Directive;
  6 +import com.bsth.repository.directive.D60Repository;
  7 +import com.bsth.repository.directive.D64Repository;
  8 +import org.slf4j.Logger;
  9 +import org.slf4j.LoggerFactory;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.stereotype.Component;
  12 +
  13 +import java.util.LinkedList;
  14 +
  15 +/**
  16 + * 指令持久化线程
  17 + * Created by panzhao on 2017/3/6.
  18 + */
  19 +@Component
  20 +public class DirectivesPstThread extends Thread {
  21 +
  22 + Logger logger = LoggerFactory.getLogger(this.getClass());
  23 +
  24 + @Autowired
  25 + D60Repository d60Repository;
  26 +
  27 + @Autowired
  28 + D64Repository d64Repository;
  29 +
  30 + @Override
  31 + public void run() {
  32 + LinkedList<Directive> list = DayOfDirectives.pstDirectives;
  33 +
  34 + Directive directive;
  35 + for (int i = 0; i < 1000; i++) {
  36 + try {
  37 + directive = list.poll();
  38 +
  39 + if (directive instanceof D60) {
  40 + d60Repository.save((D60) directive);
  41 + }
  42 +
  43 + if (directive instanceof D64) {
  44 + d64Repository.save((D64) directive);
  45 + }
  46 + } catch (Exception e) {
  47 + logger.error("", e);
  48 + }
  49 + }
  50 + }
  51 +}
src/main/java/com/bsth/data/directive/FirstScheduleCheckThread.java
1 -package com.bsth.data.directive;  
2 -  
3 -import java.util.List;  
4 -import java.util.Set;  
5 -  
6 -import org.slf4j.Logger;  
7 -import org.slf4j.LoggerFactory;  
8 -import org.springframework.beans.factory.annotation.Autowired;  
9 -import org.springframework.stereotype.Component;  
10 -  
11 -import com.bsth.data.match.Arrival2Schedule;  
12 -import com.bsth.data.match.ExpectArrivalEnd;  
13 -import com.bsth.data.schedule.DayOfSchedule;  
14 -import com.bsth.entity.realcontrol.ScheduleRealInfo;  
15 -import com.bsth.service.directive.DirectiveService;  
16 -  
17 -/**  
18 - *  
19 - * @ClassName: FirstScheduleCheckThread  
20 - * @Description: TODO(首班出场检测)  
21 - * @author PanZhao  
22 - * @date 2016年8月27日 上午1:25:21  
23 - *  
24 - */  
25 -@Component  
26 -public class FirstScheduleCheckThread extends Thread{  
27 -  
28 - @Autowired  
29 - DayOfSchedule dayOfSchedule;  
30 -  
31 - @Autowired  
32 - DirectiveService directiveService;  
33 -  
34 - Logger logger = LoggerFactory.getLogger(this.getClass());  
35 -  
36 - //提前半小时下发指令  
37 - private final static long THREE_MINUTES = 1000 * 60 * 30L;  
38 -  
39 - @Override  
40 - public void run() {  
41 - try{  
42 - Set<String> cars = dayOfSchedule.allCar();  
43 -  
44 - long t = System.currentTimeMillis();  
45 - List<ScheduleRealInfo> schList;  
46 - ScheduleRealInfo first;  
47 - for(String car : cars){  
48 -  
49 - schList = dayOfSchedule.findByNbbm(car);  
50 -  
51 - if(null == schList || schList.size() == 0)  
52 - continue;  
53 -  
54 - first = schList.get(0);  
55 -  
56 - if(null != first.getBcType()  
57 - && first.getBcType().equals("out")){  
58 -  
59 - //没有计划里程的出场班次,出场既是首发站,发送下一班次的营运指令  
60 - if(first.getJhlc() == null && first.getXlDir().equals(schList.get(1).getXlDir()))  
61 - first = schList.get(1);  
62 -  
63 - //为首班补发指令  
64 - if(first.getDirectiveState() == -1  
65 - && Math.abs(first.getDfsjT() - t) < THREE_MINUTES){  
66 -  
67 - directiveService.send60Dispatch(first, dayOfSchedule.doneSum(first.getClZbh()), "定补@系统");  
68 - //期望完成出场班次时间  
69 - long endTime;  
70 -  
71 - if(first.getZdsj() != null)  
72 - endTime=first.getZdsjT() - 60000;  
73 - else  
74 - endTime=schList.get(1).getDfsjT() - 60000;  
75 -  
76 - ExpectArrivalEnd ead = new ExpectArrivalEnd()  
77 - ,ead2 = new ExpectArrivalEnd();  
78 - ead.setNbbm(car);  
79 - ead.setEndStation(first.getQdzCode());  
80 - ead.setEndTime(endTime);  
81 -  
82 - ead2.setNbbm(car);  
83 - ead2.setEndStation(first.getZdzCode());  
84 - ead2.setEndTime(endTime);  
85 -  
86 - Arrival2Schedule.addExpect(car, ead);  
87 - Arrival2Schedule.addExpect(car, ead2);  
88 - }  
89 - }  
90 - }  
91 - }catch(Exception e){  
92 - logger.error("", e);  
93 - }  
94 - }  
95 -} 1 +//package com.bsth.data.directive;
  2 +//
  3 +//import java.util.List;
  4 +//import java.util.Set;
  5 +//
  6 +//import org.slf4j.Logger;
  7 +//import org.slf4j.LoggerFactory;
  8 +//import org.springframework.beans.factory.annotation.Autowired;
  9 +//import org.springframework.stereotype.Component;
  10 +//
  11 +//import com.bsth.data.match.Arrival2Schedule;
  12 +//import com.bsth.data.match.ExpectArrivalEnd;
  13 +//import com.bsth.data.schedule.DayOfSchedule;
  14 +//import com.bsth.entity.realcontrol.ScheduleRealInfo;
  15 +//import com.bsth.service.directive.DirectiveService;
  16 +//
  17 +///**
  18 +// *
  19 +// * @ClassName: FirstScheduleCheckThread
  20 +// * @Description: TODO(首班出场检测)
  21 +// * @author PanZhao
  22 +// * @date 2016年8月27日 上午1:25:21
  23 +// *
  24 +// */
  25 +//@Component
  26 +//public class FirstScheduleCheckThread extends Thread{
  27 +//
  28 +// @Autowired
  29 +// DayOfSchedule dayOfSchedule;
  30 +//
  31 +// @Autowired
  32 +// DirectiveService directiveService;
  33 +//
  34 +// Logger logger = LoggerFactory.getLogger(this.getClass());
  35 +//
  36 +// //提前半小时下发指令
  37 +// private final static long THREE_MINUTES = 1000 * 60 * 30L;
  38 +//
  39 +// @Override
  40 +// public void run() {
  41 +// try{
  42 +// Set<String> cars = dayOfSchedule.allCar();
  43 +//
  44 +// long t = System.currentTimeMillis();
  45 +// List<ScheduleRealInfo> schList;
  46 +// ScheduleRealInfo first;
  47 +// for(String car : cars){
  48 +//
  49 +// schList = dayOfSchedule.findByNbbm(car);
  50 +//
  51 +// if(null == schList || schList.size() == 0)
  52 +// continue;
  53 +//
  54 +// first = schList.get(0);
  55 +//
  56 +// if(null != first.getBcType()
  57 +// && first.getBcType().equals("out")){
  58 +//
  59 +// //没有计划里程的出场班次,出场既是首发站,发送下一班次的营运指令
  60 +// if(first.getJhlc() == null && first.getXlDir().equals(schList.get(1).getXlDir()))
  61 +// first = schList.get(1);
  62 +//
  63 +// //为首班补发指令
  64 +// if(first.getDirectiveState() == -1
  65 +// && Math.abs(first.getDfsjT() - t) < THREE_MINUTES){
  66 +//
  67 +// directiveService.send60Dispatch(first, dayOfSchedule.doneSum(first.getClZbh()), "定补@系统");
  68 +// //期望完成出场班次时间
  69 +// long endTime;
  70 +//
  71 +// if(first.getZdsj() != null)
  72 +// endTime=first.getZdsjT() - 60000;
  73 +// else
  74 +// endTime=schList.get(1).getDfsjT() - 60000;
  75 +//
  76 +// ExpectArrivalEnd ead = new ExpectArrivalEnd()
  77 +// ,ead2 = new ExpectArrivalEnd();
  78 +// ead.setNbbm(car);
  79 +// ead.setEndStation(first.getQdzCode());
  80 +// ead.setEndTime(endTime);
  81 +//
  82 +// ead2.setNbbm(car);
  83 +// ead2.setEndStation(first.getZdzCode());
  84 +// ead2.setEndTime(endTime);
  85 +//
  86 +// Arrival2Schedule.addExpect(car, ead);
  87 +// Arrival2Schedule.addExpect(car, ead2);
  88 +// }
  89 +// }
  90 +// }
  91 +// }catch(Exception e){
  92 +// logger.error("", e);
  93 +// }
  94 +// }
  95 +//}
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONArray; @@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONArray;
5 import com.bsth.Application; 5 import com.bsth.Application;
6 import com.bsth.data.BasicData; 6 import com.bsth.data.BasicData;
7 import com.bsth.data.LineConfigData; 7 import com.bsth.data.LineConfigData;
8 -import com.bsth.data.directive.FirstScheduleCheckThread; 8 +import com.bsth.data.directive.DirectivesPstThread;
9 import com.bsth.data.gpsdata.GpsRealData; 9 import com.bsth.data.gpsdata.GpsRealData;
10 import com.bsth.data.gpsdata.recovery.GpsDataRecovery; 10 import com.bsth.data.gpsdata.recovery.GpsDataRecovery;
11 import com.bsth.data.schedule.thread.ScheduleLateThread; 11 import com.bsth.data.schedule.thread.ScheduleLateThread;
@@ -115,9 +115,6 @@ public class DayOfSchedule implements CommandLineRunner { @@ -115,9 +115,6 @@ public class DayOfSchedule implements CommandLineRunner {
115 SchedulePstThread schedulePstThread; 115 SchedulePstThread schedulePstThread;
116 116
117 @Autowired 117 @Autowired
118 - FirstScheduleCheckThread firstScheduleCheckThread;  
119 -  
120 - @Autowired  
121 ScheduleLateThread scheduleLateThread; 118 ScheduleLateThread scheduleLateThread;
122 119
123 @Autowired 120 @Autowired
@@ -129,6 +126,9 @@ public class DayOfSchedule implements CommandLineRunner { @@ -129,6 +126,9 @@ public class DayOfSchedule implements CommandLineRunner {
129 @Autowired 126 @Autowired
130 GpsDataRecovery gpsDataRecovery; 127 GpsDataRecovery gpsDataRecovery;
131 128
  129 + @Autowired
  130 + DirectivesPstThread directivesPstThread;
  131 +
132 private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd"), fmtHHmm = DateTimeFormat.forPattern("HH:mm"); 132 private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd"), fmtHHmm = DateTimeFormat.forPattern("HH:mm");
133 133
134 @Override 134 @Override
@@ -141,8 +141,6 @@ public class DayOfSchedule implements CommandLineRunner { @@ -141,8 +141,6 @@ public class DayOfSchedule implements CommandLineRunner {
141 Application.mainServices.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS); 141 Application.mainServices.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS);
142 //入库 142 //入库
143 // Application.mainServices.scheduleWithFixedDelay(schedulePstThread, 60, 60, TimeUnit.SECONDS); 143 // Application.mainServices.scheduleWithFixedDelay(schedulePstThread, 60, 60, TimeUnit.SECONDS);
144 - //首班出场指令补发器  
145 -// Application.mainServices.scheduleWithFixedDelay(firstScheduleCheckThread, 30, 240, TimeUnit.SECONDS);  
146 //班次误点扫描 144 //班次误点扫描
147 // Application.mainServices.scheduleWithFixedDelay(scheduleLateThread, 60, 60, TimeUnit.SECONDS); 145 // Application.mainServices.scheduleWithFixedDelay(scheduleLateThread, 60, 60, TimeUnit.SECONDS);
148 146
@@ -153,6 +151,9 @@ public class DayOfSchedule implements CommandLineRunner { @@ -153,6 +151,9 @@ public class DayOfSchedule implements CommandLineRunner {
153 151
154 logger.info(diff / 1000 / 60 + "分钟之后提交到运管处"); 152 logger.info(diff / 1000 / 60 + "分钟之后提交到运管处");
155 //Application.mainServices.scheduleWithFixedDelay(submitToTrafficManage, diff / 1000, 60 * 60 * 24, TimeUnit.SECONDS); 153 //Application.mainServices.scheduleWithFixedDelay(submitToTrafficManage, diff / 1000, 60 * 60 * 24, TimeUnit.SECONDS);
  154 +
  155 + //指令持久化线程
  156 + Application.mainServices.scheduleWithFixedDelay(directivesPstThread, 180, 180, TimeUnit.SECONDS);
156 } 157 }
157 158
158 //数据恢复 159 //数据恢复
src/main/java/com/bsth/entity/logger/Logger.java 0 → 100644
  1 +package com.bsth.entity.logger;
  2 +
  3 +import javax.persistence.GeneratedValue;
  4 +import javax.persistence.Id;
  5 +import javax.persistence.MappedSuperclass;
  6 +
  7 +/**
  8 + * 操作日志通用字段
  9 + * Created by panzhao on 2017/3/6.
  10 + */
  11 +@MappedSuperclass
  12 +public abstract class Logger {
  13 +
  14 + @Id
  15 + @GeneratedValue
  16 + private Long id;
  17 +
  18 + /** 用户信息 */
  19 + private String userName;
  20 + private String name;
  21 +
  22 + /** ########## 客户端信息 ########### */
  23 + /** ip */
  24 + private String clientIp;
  25 + /** 浏览器 */
  26 + private String browser;
  27 + /** 系统平台 */
  28 + private String clientSystem;
  29 + /** 浏览器内核 */
  30 + private String browserCore;
  31 +
  32 + /** 操作时间 */
  33 + private Long ts;
  34 +
  35 + public String getUserName() {
  36 + return userName;
  37 + }
  38 +
  39 + public void setUserName(String userName) {
  40 + this.userName = userName;
  41 + }
  42 +
  43 + public String getName() {
  44 + return name;
  45 + }
  46 +
  47 + public void setName(String name) {
  48 + this.name = name;
  49 + }
  50 +
  51 + public String getClientIp() {
  52 + return clientIp;
  53 + }
  54 +
  55 + public void setClientIp(String clientIp) {
  56 + this.clientIp = clientIp;
  57 + }
  58 +
  59 + public String getBrowser() {
  60 + return browser;
  61 + }
  62 +
  63 + public void setBrowser(String browser) {
  64 + this.browser = browser;
  65 + }
  66 +
  67 + public String getClientSystem() {
  68 + return clientSystem;
  69 + }
  70 +
  71 + public void setClientSystem(String clientSystem) {
  72 + this.clientSystem = clientSystem;
  73 + }
  74 +
  75 + public String getBrowserCore() {
  76 + return browserCore;
  77 + }
  78 +
  79 + public void setBrowserCore(String browserCore) {
  80 + this.browserCore = browserCore;
  81 + }
  82 +
  83 + public Long getTs() {
  84 + return ts;
  85 + }
  86 +
  87 + public void setTs(Long ts) {
  88 + this.ts = ts;
  89 + }
  90 +}
src/main/java/com/bsth/entity/logger/Logger_MileModify.java 0 → 100644
  1 +package com.bsth.entity.logger;
  2 +
  3 +import javax.persistence.Entity;
  4 +import javax.persistence.Table;
  5 +
  6 +/**
  7 + * 操作日志 -修改公里
  8 + * Created by panzhao on 2017/3/6.
  9 + */
  10 +@Entity
  11 +@Table(name = "logger_mile_modify")
  12 +public class Logger_MileModify extends Logger{
  13 +
  14 + /** 之前的公里 */
  15 + private Double beforeMile;
  16 +
  17 + /** 修改之后的公里 */
  18 + private Double afterMile;
  19 +
  20 + /** 线路 code/name */
  21 + private String lineStr;
  22 +
  23 + /** 路牌 */
  24 + private String lp;
  25 +
  26 + /** 车辆自编号 */
  27 + private String nbbm;
  28 +
  29 + /** 发车时间 */
  30 + private String fcsj;
  31 +
  32 + /** 班次ID */
  33 + private Long schId;
  34 +
  35 + /** 备注 */
  36 + private String remarks;
  37 +
  38 + public Double getBeforeMile() {
  39 + return beforeMile;
  40 + }
  41 +
  42 + public void setBeforeMile(Double beforeMile) {
  43 + this.beforeMile = beforeMile;
  44 + }
  45 +
  46 + public Double getAfterMile() {
  47 + return afterMile;
  48 + }
  49 +
  50 + public void setAfterMile(Double afterMile) {
  51 + this.afterMile = afterMile;
  52 + }
  53 +
  54 + public String getLineStr() {
  55 + return lineStr;
  56 + }
  57 +
  58 + public void setLineStr(String lineStr) {
  59 + this.lineStr = lineStr;
  60 + }
  61 +
  62 + public String getLp() {
  63 + return lp;
  64 + }
  65 +
  66 + public void setLp(String lp) {
  67 + this.lp = lp;
  68 + }
  69 +
  70 + public String getNbbm() {
  71 + return nbbm;
  72 + }
  73 +
  74 + public void setNbbm(String nbbm) {
  75 + this.nbbm = nbbm;
  76 + }
  77 +
  78 + public String getFcsj() {
  79 + return fcsj;
  80 + }
  81 +
  82 + public void setFcsj(String fcsj) {
  83 + this.fcsj = fcsj;
  84 + }
  85 +
  86 + public Long getSchId() {
  87 + return schId;
  88 + }
  89 +
  90 + public void setSchId(Long schId) {
  91 + this.schId = schId;
  92 + }
  93 +
  94 + public String getRemarks() {
  95 + return remarks;
  96 + }
  97 +
  98 + public void setRemarks(String remarks) {
  99 + this.remarks = remarks;
  100 + }
  101 +}
src/main/java/com/bsth/entity/realcontrol/LineConfig.java
@@ -56,6 +56,23 @@ public class LineConfig { @@ -56,6 +56,23 @@ public class LineConfig {
56 /** 识别区间调头 */ 56 /** 识别区间调头 */
57 private boolean readReverse; 57 private boolean readReverse;
58 58
  59 + /** 原线路回场 */
  60 + private boolean inParkForSource;
  61 +
  62 + /**
  63 + * 到离站偏移值
  64 + */
  65 +
  66 + //上行进站
  67 + private int upInDiff;
  68 + //上行出站
  69 + private int upOutDiff;
  70 + //下行进站
  71 + private int downInDiff;
  72 + //下行出站
  73 + private int downOutDiff;
  74 +
  75 +
59 @OneToMany(cascade = CascadeType.ALL) 76 @OneToMany(cascade = CascadeType.ALL)
60 private Set<D80ReplyTemp> d80Temps = new HashSet<>(); 77 private Set<D80ReplyTemp> d80Temps = new HashSet<>();
61 78
@@ -151,4 +168,44 @@ public class LineConfig { @@ -151,4 +168,44 @@ public class LineConfig {
151 public void setReadReverse(boolean readReverse) { 168 public void setReadReverse(boolean readReverse) {
152 this.readReverse = readReverse; 169 this.readReverse = readReverse;
153 } 170 }
  171 +
  172 + public boolean isInParkForSource() {
  173 + return inParkForSource;
  174 + }
  175 +
  176 + public void setInParkForSource(boolean inParkForSource) {
  177 + this.inParkForSource = inParkForSource;
  178 + }
  179 +
  180 + public int getUpInDiff() {
  181 + return upInDiff;
  182 + }
  183 +
  184 + public void setUpInDiff(int upInDiff) {
  185 + this.upInDiff = upInDiff;
  186 + }
  187 +
  188 + public int getUpOutDiff() {
  189 + return upOutDiff;
  190 + }
  191 +
  192 + public void setUpOutDiff(int upOutDiff) {
  193 + this.upOutDiff = upOutDiff;
  194 + }
  195 +
  196 + public int getDownInDiff() {
  197 + return downInDiff;
  198 + }
  199 +
  200 + public void setDownInDiff(int downInDiff) {
  201 + this.downInDiff = downInDiff;
  202 + }
  203 +
  204 + public int getDownOutDiff() {
  205 + return downOutDiff;
  206 + }
  207 +
  208 + public void setDownOutDiff(int downOutDiff) {
  209 + this.downOutDiff = downOutDiff;
  210 + }
154 } 211 }
src/main/java/com/bsth/repository/logger/MileModifyRepository.java 0 → 100644
  1 +package com.bsth.repository.logger;
  2 +
  3 +import com.bsth.entity.logger.Logger_MileModify;
  4 +import com.bsth.repository.BaseRepository;
  5 +import org.springframework.stereotype.Repository;
  6 +
  7 +/**
  8 + * Created by panzhao on 2017/3/6.
  9 + */
  10 +@Repository
  11 +public interface MileModifyRepository extends BaseRepository<Logger_MileModify, Long>{
  12 +}
src/main/java/com/bsth/service/logger/MileModifyService.java 0 → 100644
  1 +package com.bsth.service.logger;
  2 +
  3 +import com.bsth.entity.logger.Logger_MileModify;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +/**
  7 + * Created by panzhao on 2017/3/6.
  8 + */
  9 +public interface MileModifyService extends BaseService<Logger_MileModify, Long>{
  10 +}
src/main/java/com/bsth/service/logger/impl/MileModifyServiceImpl.java 0 → 100644
  1 +package com.bsth.service.logger.impl;
  2 +
  3 +import com.bsth.entity.logger.Logger_MileModify;
  4 +import com.bsth.service.impl.BaseServiceImpl;
  5 +import com.bsth.service.logger.MileModifyService;
  6 +import org.springframework.stereotype.Service;
  7 +
  8 +/**
  9 + * Created by panzhao on 2017/3/6.
  10 + */
  11 +@Service
  12 +public class MileModifyServiceImpl extends BaseServiceImpl<Logger_MileModify, Long> implements MileModifyService {
  13 +}
src/main/java/com/bsth/service/realcontrol/LineConfigService.java
@@ -16,4 +16,6 @@ public interface LineConfigService extends BaseService&lt;LineConfig, Integer&gt;{ @@ -16,4 +16,6 @@ public interface LineConfigService extends BaseService&lt;LineConfig, Integer&gt;{
16 Map<String, Object> editOutTimeType(String lineCode, int type); 16 Map<String, Object> editOutTimeType(String lineCode, int type);
17 17
18 LineConfig getByLineCode(String lineCode); 18 LineConfig getByLineCode(String lineCode);
  19 +
  20 + Map<String,Object> enableInParkForSource(String lineCode, int enable);
19 } 21 }
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
@@ -152,7 +152,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L @@ -152,7 +152,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
152 152
153 List<SchedulePlanInfo> currentSchedulePlan(String lineCode); 153 List<SchedulePlanInfo> currentSchedulePlan(String lineCode);
154 154
155 - Map<String,Object> lpChangeMulti(String leftIdx, String rightIdx); 155 + Map<String,Object> lpChangeMulti(String leftIdx, String rightIdx, int type);
156 156
157 - void lpChange(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch); 157 + void lpChange(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch, int type);
158 } 158 }
src/main/java/com/bsth/service/realcontrol/impl/LineConfigServiceImpl.java
@@ -6,6 +6,8 @@ import com.bsth.entity.realcontrol.LineConfig; @@ -6,6 +6,8 @@ import com.bsth.entity.realcontrol.LineConfig;
6 import com.bsth.repository.realcontrol.LineConfigRepository; 6 import com.bsth.repository.realcontrol.LineConfigRepository;
7 import com.bsth.service.impl.BaseServiceImpl; 7 import com.bsth.service.impl.BaseServiceImpl;
8 import com.bsth.service.realcontrol.LineConfigService; 8 import com.bsth.service.realcontrol.LineConfigService;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
9 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
11 13
@@ -15,71 +17,103 @@ import java.util.List; @@ -15,71 +17,103 @@ import java.util.List;
15 import java.util.Map; 17 import java.util.Map;
16 18
17 @Service 19 @Service
18 -public class LineConfigServiceImpl extends BaseServiceImpl<LineConfig, Integer> implements LineConfigService{  
19 -  
20 - @Autowired  
21 - LineConfigRepository lineConfigRepository;  
22 -  
23 - @Autowired  
24 - LineConfigData lineConfigData;  
25 -  
26 - @Override  
27 - public Map<String, Object> check(String[] codeArray) {  
28 - Map<String, Object> rs = new HashMap<>();  
29 - List<String> notArr = new ArrayList<>();  
30 -  
31 - for(String lineCode : codeArray){  
32 - if(null == lineConfigData.get(lineCode + ""))  
33 - notArr.add(lineCode);  
34 - }  
35 -  
36 - if(notArr.size() > 0){  
37 - rs.put("status", 1);  
38 - rs.put("not", notArr);  
39 - }  
40 - else  
41 - rs.put("status", 0);  
42 - return rs;  
43 - }  
44 -  
45 - @Override  
46 - public Integer init(String lineCode) throws Exception{  
47 - LineConfig conf = lineConfigData.get(lineCode );  
48 -  
49 - if(conf == null)  
50 - lineConfigData.init(lineCode);  
51 -  
52 - return 1;  
53 - }  
54 -  
55 - @Override  
56 - public Map<String, Object> editStartOptTime(String time, String lineCode) {  
57 - Map<String, Object> rs = new HashMap<>();  
58 - LineConfig conf = lineConfigData.get(lineCode);  
59 - conf.setStartOpt(time);  
60 - lineConfigData.set(conf);  
61 -  
62 - rs.put("status", ResponseCode.SUCCESS);  
63 - rs.put("time", time);  
64 - return rs;  
65 - }  
66 -  
67 - @Override  
68 - public Map<String, Object> editOutTimeType(String lineCode, int type) {  
69 - Map<String, Object> rs = new HashMap<>();  
70 - LineConfig conf = lineConfigData.get(lineCode);  
71 -  
72 - conf.setOutConfig(type);  
73 - //conf.setInConfig(type);  
74 - lineConfigData.set(conf);  
75 -  
76 - rs.put("status", ResponseCode.SUCCESS);  
77 - rs.put("type", type);  
78 - return rs;  
79 - }  
80 -  
81 - @Override  
82 - public LineConfig getByLineCode(String lineCode) {  
83 - return lineConfigData.get(lineCode);  
84 - } 20 +public class LineConfigServiceImpl extends BaseServiceImpl<LineConfig, Integer> implements LineConfigService {
  21 +
  22 + @Autowired
  23 + LineConfigRepository lineConfigRepository;
  24 +
  25 + @Autowired
  26 + LineConfigData lineConfigData;
  27 +
  28 + Logger logger = LoggerFactory.getLogger(this.getClass());
  29 +
  30 + @Override
  31 + public Map<String, Object> check(String[] codeArray) {
  32 + Map<String, Object> rs = new HashMap<>();
  33 + List<String> notArr = new ArrayList<>();
  34 +
  35 + for (String lineCode : codeArray) {
  36 + if (null == lineConfigData.get(lineCode + ""))
  37 + notArr.add(lineCode);
  38 + }
  39 +
  40 + if (notArr.size() > 0) {
  41 + rs.put("status", 1);
  42 + rs.put("not", notArr);
  43 + } else
  44 + rs.put("status", 0);
  45 + return rs;
  46 + }
  47 +
  48 + @Override
  49 + public Integer init(String lineCode) throws Exception {
  50 + LineConfig conf = lineConfigData.get(lineCode);
  51 +
  52 + if (conf == null)
  53 + lineConfigData.init(lineCode);
  54 +
  55 + return 1;
  56 + }
  57 +
  58 + @Override
  59 + public Map<String, Object> editStartOptTime(String time, String lineCode) {
  60 + Map<String, Object> rs = new HashMap<>();
  61 + try {
  62 + LineConfig conf = lineConfigData.get(lineCode);
  63 + conf.setStartOpt(time);
  64 + lineConfigData.set(conf);
  65 +
  66 + rs.put("status", ResponseCode.SUCCESS);
  67 + rs.put("time", time);
  68 + } catch (Exception e) {
  69 + rs.put("status", ResponseCode.ERROR);
  70 + rs.put("msg", e.getMessage());
  71 + logger.error("", e);
  72 + }
  73 + return rs;
  74 + }
  75 +
  76 + @Override
  77 + public Map<String, Object> editOutTimeType(String lineCode, int type) {
  78 + Map<String, Object> rs = new HashMap<>();
  79 + try {
  80 + LineConfig conf = lineConfigData.get(lineCode);
  81 +
  82 + conf.setOutConfig(type);
  83 + //conf.setInConfig(type);
  84 + lineConfigData.set(conf);
  85 +
  86 + rs.put("status", ResponseCode.SUCCESS);
  87 + rs.put("type", type);
  88 + } catch (Exception e) {
  89 + rs.put("status", ResponseCode.ERROR);
  90 + rs.put("msg", e.getMessage());
  91 + logger.error("", e);
  92 + }
  93 + return rs;
  94 + }
  95 +
  96 + @Override
  97 + public LineConfig getByLineCode(String lineCode) {
  98 + return lineConfigData.get(lineCode);
  99 + }
  100 +
  101 + @Override
  102 + public Map<String, Object> enableInParkForSource(String lineCode, int enable) {
  103 + Map<String, Object> rs = new HashMap<>();
  104 + try {
  105 + LineConfig conf = lineConfigData.get(lineCode);
  106 +
  107 + conf.setInParkForSource(enable==1);
  108 + lineConfigData.set(conf);
  109 +
  110 + rs.put("status", ResponseCode.SUCCESS);
  111 + rs.put("enable", enable);
  112 + } catch (Exception e) {
  113 + rs.put("status", ResponseCode.ERROR);
  114 + rs.put("msg", e.getMessage());
  115 + logger.error("", e);
  116 + }
  117 + return rs;
  118 + }
85 } 119 }
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -861,12 +861,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -861,12 +861,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
861 List<ScheduleRealInfo> ts = new ArrayList<>(); 861 List<ScheduleRealInfo> ts = new ArrayList<>();
862 try { 862 try {
863 Long id = Long.parseLong(map.get("id")); 863 Long id = Long.parseLong(map.get("id"));
864 - //班次类型  
865 - //String bcType = map.get("bcType");  
866 - //车辆自编号  
867 - //String clZbh = map.get("clZbh");  
868 - //计划发车时间  
869 - //String fcsj = map.get("fcsj");  
870 //实际发车时间 864 //实际发车时间
871 String fcsjActual = map.get("fcsjActual"); 865 String fcsjActual = map.get("fcsjActual");
872 //实际终点时间 866 //实际终点时间
@@ -928,6 +922,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -928,6 +922,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
928 } catch (NumberFormatException e) { 922 } catch (NumberFormatException e) {
929 logger.error("", e); 923 logger.error("", e);
930 } 924 }
  925 +
  926 + //修改班次里程
  927 + String jhlc = map.get("jhlc");
  928 + if(StringUtils.isNotEmpty(jhlc)
  929 + && Double.parseDouble(jhlc) != sch.getJhlc()){
  930 + sch.setJhlc(Double.parseDouble(jhlc));
  931 + }
931 } 932 }
932 933
933 String bcType = map.get("bcType"); 934 String bcType = map.get("bcType");
@@ -3251,7 +3252,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3251,7 +3252,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3251 3252
3252 3253
3253 @Override 3254 @Override
3254 - public Map<String, Object> lpChangeMulti(String leftIdx, String rightIdx) { 3255 + public Map<String, Object> lpChangeMulti(String leftIdx, String rightIdx, int type) {
3255 Map<String, Object> rs = new HashMap<>(); 3256 Map<String, Object> rs = new HashMap<>();
3256 List<ScheduleRealInfo> ts = new ArrayList<>(); 3257 List<ScheduleRealInfo> ts = new ArrayList<>();
3257 try { 3258 try {
@@ -3269,10 +3270,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3269,10 +3270,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3269 rightSch = dayOfSchedule.get(Long.parseLong(rightList.get(i))); 3270 rightSch = dayOfSchedule.get(Long.parseLong(rightList.get(i)));
3270 3271
3271 //调换路牌 3272 //调换路牌
3272 - lpChange(leftSch, rightSch); 3273 + lpChange(leftSch, rightSch, type);
3273 3274
3274 ts.add(leftSch); 3275 ts.add(leftSch);
3275 ts.add(rightSch); 3276 ts.add(rightSch);
  3277 +
  3278 + dayOfSchedule.save(leftSch);
  3279 + dayOfSchedule.save(rightSch);
3276 } 3280 }
3277 3281
3278 rs.put("status", ResponseCode.SUCCESS); 3282 rs.put("status", ResponseCode.SUCCESS);
@@ -3287,11 +3291,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3287,11 +3291,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3287 } 3291 }
3288 3292
3289 @Override 3293 @Override
3290 - public void lpChange(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch) { 3294 + public void lpChange(ScheduleRealInfo leftSch, ScheduleRealInfo rightSch, int type) {
3291 LpData leftData = new LpData(leftSch); 3295 LpData leftData = new LpData(leftSch);
3292 LpData rightData = new LpData(rightSch); 3296 LpData rightData = new LpData(rightSch);
3293 3297
3294 - leftData.appendTo(rightSch);  
3295 - rightData.appendTo(leftSch); 3298 + leftData.appendTo(rightSch, type);
  3299 + rightData.appendTo(leftSch, type);
3296 } 3300 }
3297 } 3301 }
3298 \ No newline at end of file 3302 \ No newline at end of file
src/main/resources/static/login.html
@@ -16,171 +16,163 @@ @@ -16,171 +16,163 @@
16 <link href="/metronic_v4.5.4/css/components.css" rel="stylesheet" 16 <link href="/metronic_v4.5.4/css/components.css" rel="stylesheet"
17 type="text/css" /> 17 type="text/css" />
18 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 - padding-bottom: 56px;  
52 - animation: to_center 1s forwards;  
53 - animation-delay: .2s;  
54 - transition: all .3s ease;  
55 -}  
56 -  
57 -@  
58 -keyframes to_center { 0% {  
59 - margin-top: -300px;  
60 - opacity: .5;  
61 -}  
62 -  
63 -100%  
64 -{  
65 -margin-top  
66 -:  
67 -  
68 --270  
69 -px  
70 -;opacity  
71 -:  
72 -  
73 -1;  
74 -}  
75 -}  
76 -h3 {  
77 - font-size: 25px;  
78 - font-weight: 600;  
79 - color: #4a4a4a  
80 -}  
81 -  
82 -.input-icon input {  
83 - height: 48px;  
84 - border-radius: 5px !important;  
85 - transition: all .5s ease;  
86 -}  
87 -  
88 -.input-icon input:FOCUS {  
89 - border-color: #c2cad8;  
90 - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0  
91 - rgba(0, 0, 0, 0.12) !important;  
92 -}  
93 -  
94 -.input-icon>i {  
95 - margin-top: 16px;  
96 -}  
97 -  
98 -#loginPanel #loginBtn.btn {  
99 - border-radius: 6px !important;  
100 - width: 378px;  
101 - height: 48px;  
102 - font-size: 20px;  
103 - font-family: 微软雅黑;  
104 - transition: all .3s ease;  
105 - background: #5f7ed7;  
106 - background: linear-gradient(#6f97e5, #527ed9);  
107 - box-shadow: inset 0 1px 2px #7ea1e8 !important;  
108 - color: #fff;  
109 - text-shadow: #4f70b3 0 -1px 0;  
110 - border: none;  
111 -}  
112 -  
113 -#loginPanel #loginBtn.btn:HOVER {  
114 - box-shadow: inset 0 1px 1px #7696de, inset 0 0 2px #627dca, inset 0 -2px  
115 - 3px #5a77c7, inset 0 0 100px rgba(48, 77, 147, .4) !important;  
116 -}  
117 -  
118 -#loginPanel.show_msg {  
119 - top: calc(50% - 10px);  
120 -}  
121 -  
122 -#loginPanel .alert {  
123 - display: none;  
124 - padding: 12px;  
125 - margin-top: 21px;  
126 - border-radius: 0 0 10px 10px !important;  
127 - font-size: 13px;  
128 - position: absolute;  
129 - width: 100%;  
130 - border-bottom: 1px solid #dadada;  
131 -}  
132 -  
133 -#loginPanel .alert.login-success {  
134 - color: #27a4b0;  
135 - background: #abe7ed;  
136 - border-color: #abe7ed;  
137 -}  
138 -  
139 -#loginPanel .alert i {  
140 - font-size: 16px;  
141 - vertical-align: middle;  
142 - margin: 0 5px 3px;  
143 -}  
144 -  
145 -#loginPanel.show_msg .alert {  
146 - display: block;  
147 -}  
148 -  
149 -#captchaWrap {  
150 - display: none;  
151 - text-align: left;  
152 - border-top: 1px solid #f3f2f2;  
153 -}  
154 -  
155 -img.captcha-img {  
156 - cursor: pointer;  
157 -}  
158 -  
159 -.login-footer {  
160 - position: fixed;  
161 - width: 100%;  
162 - bottom: 35px;  
163 - text-align: center;  
164 - color: #a6a6a6;  
165 -}  
166 -  
167 -h3.logo-text {  
168 - font-family: 华文楷体, 华文细黑;  
169 - font-size: 28px;  
170 -}  
171 -  
172 -.warn-note {  
173 - width: 100%;  
174 - position: absolute;  
175 - top: 0;  
176 - z-index: 2;  
177 - text-align: center;  
178 - background: #ff4646;  
179 - color: white;  
180 - padding: 12px;  
181 - display: none;  
182 -}  
183 -</style> 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>
184 </head> 176 </head>
185 177
186 <body> 178 <body>
@@ -252,16 +244,16 @@ window.onload=function(){ @@ -252,16 +244,16 @@ window.onload=function(){
252 ,nameInput = $('input[name=userName]', form) 244 ,nameInput = $('input[name=userName]', form)
253 ,pwdInput = $('input[name=password]', form) 245 ,pwdInput = $('input[name=password]', form)
254 ,msgAlert = $('#loginPanel .alert-danger'); 246 ,msgAlert = $('#loginPanel .alert-danger');
255 - 247 +
256 $('input', form).on('keyup', checkBtnStatus); 248 $('input', form).on('keyup', checkBtnStatus);
257 249
258 var keys; 250 var keys;
259 $.get('/user/login/jCryptionKey?t='+Math.random(), function(data){ 251 $.get('/user/login/jCryptionKey?t='+Math.random(), function(data){
260 keys = data.publickey; 252 keys = data.publickey;
261 }); 253 });
262 -  
263 -  
264 - 254 +
  255 +
  256 +
265 function checkBtnStatus(){ 257 function checkBtnStatus(){
266 var es = $('input:visible', form); 258 var es = $('input:visible', form);
267 for(var i = 0, e; e = es[i++];){ 259 for(var i = 0, e; e = es[i++];){
@@ -273,7 +265,7 @@ window.onload=function(){ @@ -273,7 +265,7 @@ window.onload=function(){
273 } 265 }
274 $('#loginBtn').removeAttr('disabled'); 266 $('#loginBtn').removeAttr('disabled');
275 } 267 }
276 - 268 +
277 nameInput.on('blur', checkStatus); 269 nameInput.on('blur', checkStatus);
278 //keyup 事件做延迟 270 //keyup 事件做延迟
279 var uNameKeyup; 271 var uNameKeyup;
@@ -286,23 +278,23 @@ window.onload=function(){ @@ -286,23 +278,23 @@ window.onload=function(){
286 uNameKeyup = false; 278 uNameKeyup = false;
287 }, 200); 279 }, 200);
288 }); 280 });
289 - 281 +
290 //密码框回车事件 282 //密码框回车事件
291 pwdInput.on('keyup', function(e){ 283 pwdInput.on('keyup', function(e){
292 - if (e.keyCode == 13) 284 + if (e.keyCode == 13)
293 $('#loginBtn').click(); 285 $('#loginBtn').click();
294 }); 286 });
295 //验证码框回车事件 287 //验证码框回车事件
296 $('input[name=captcha]').on('keyup', function(e){ 288 $('input[name=captcha]').on('keyup', function(e){
297 - if (e.keyCode == 13) 289 + if (e.keyCode == 13)
298 $('#loginBtn').click(); 290 $('#loginBtn').click();
299 }); 291 });
300 - 292 +
301 $('#loginBtn').on('click', function(){ 293 $('#loginBtn').on('click', function(){
302 if(lock || $(this).attr('disabled')) return; 294 if(lock || $(this).attr('disabled')) return;
303 var userName = nameInput.val() 295 var userName = nameInput.val()
304 ,pwd = pwdInput.val(); 296 ,pwd = pwdInput.val();
305 - 297 +
306 //RSA加密 298 //RSA加密
307 var encrypt = new JSEncrypt(); 299 var encrypt = new JSEncrypt();
308 encrypt.setPublicKey(keys); 300 encrypt.setPublicKey(keys);
@@ -311,27 +303,27 @@ window.onload=function(){ @@ -311,27 +303,27 @@ window.onload=function(){
311 //登录 303 //登录
312 login(userName, pwd); 304 login(userName, pwd);
313 }); 305 });
314 - 306 +
315 var lock; 307 var lock;
316 function login(userName, pwd){ 308 function login(userName, pwd){
317 lock = true; 309 lock = true;
318 $('#loginBtn').attr('disabled', 'disabled'); 310 $('#loginBtn').attr('disabled', 'disabled');
319 311
320 var params = { 312 var params = {
321 - userName: userName,  
322 - password: pwd, 313 + userName: userName,
  314 + password: pwd,
323 captcha: $('input[name=captcha]').val() 315 captcha: $('input[name=captcha]').val()
324 }; 316 };
325 $.post('/user/login', params 317 $.post('/user/login', params
326 ,function(rs){ 318 ,function(rs){
327 - 319 +
328 $('#loginPanel').addClass('show_msg'); 320 $('#loginPanel').addClass('show_msg');
329 if(error(rs)){ 321 if(error(rs)){
330 lock = false; 322 lock = false;
331 $('#loginBtn').removeAttr('disabled'); 323 $('#loginBtn').removeAttr('disabled');
332 - 324 +
333 msgAlert.html('<i class="fa fa-times-circle"> </i> 登录失败,' + rs.msg); 325 msgAlert.html('<i class="fa fa-times-circle"> </i> 登录失败,' + rs.msg);
334 - 326 +
335 _captcha.refresh(); 327 _captcha.refresh();
336 checkStatus(); 328 checkStatus();
337 } 329 }
@@ -342,21 +334,21 @@ window.onload=function(){ @@ -342,21 +334,21 @@ window.onload=function(){
342 } 334 }
343 }); 335 });
344 } 336 }
345 - 337 +
346 function checkStatus(){ 338 function checkStatus(){
347 var t = nameInput.val(); 339 var t = nameInput.val();
348 if(!t){ 340 if(!t){
349 hide(); 341 hide();
350 return; 342 return;
351 } 343 }
352 - 344 +
353 $.get('/user/login/captchaStatus', {userName: t}, function(rs){ 345 $.get('/user/login/captchaStatus', {userName: t}, function(rs){
354 if(rs >= 3) 346 if(rs >= 3)
355 _captcha.show(); 347 _captcha.show();
356 else 348 else
357 hide(); 349 hide();
358 }); 350 });
359 - 351 +
360 function hide(){ 352 function hide(){
361 if(!$("#captchaWrap").is(":hidden")){ 353 if(!$("#captchaWrap").is(":hidden")){
362 _captcha.hide(); 354 _captcha.hide();
@@ -366,8 +358,8 @@ window.onload=function(){ @@ -366,8 +358,8 @@ window.onload=function(){
366 } 358 }
367 } 359 }
368 } 360 }
369 -  
370 - 361 +
  362 +
371 var _captcha = { 363 var _captcha = {
372 show: function(){ 364 show: function(){
373 if($("#captchaWrap").is(":hidden")){ 365 if($("#captchaWrap").is(":hidden")){
@@ -386,11 +378,11 @@ window.onload=function(){ @@ -386,11 +378,11 @@ window.onload=function(){
386 $('input[name=captcha]').val(''); 378 $('input[name=captcha]').val('');
387 } 379 }
388 }; 380 };
389 - 381 +
390 $('#captchaWrap img.captcha-img').on('click', function(){ 382 $('#captchaWrap img.captcha-img').on('click', function(){
391 $(this).attr('src', '/captcha.jpg?t=' + Math.random()); 383 $(this).attr('src', '/captcha.jpg?t=' + Math.random());
392 }); 384 });
393 - 385 +
394 function error(rs){ 386 function error(rs){
395 return rs.status == 'ERROR' || rs.status == 500; 387 return rs.status == 'ERROR' || rs.status == 500;
396 } 388 }