Commit 2db220f39a345dd6615a920edaf148f92483917f
Merge branch 'minhang' of http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
Showing
6 changed files
with
471 additions
and
469 deletions
Too many changes to show.
To preserve performance only 6 of 23 files are displayed.
src/main/java/com/bsth/data/gpsdata/status_manager/GpsStatusManager.java
| 1 | -package com.bsth.data.gpsdata.status_manager; | ||
| 2 | - | ||
| 3 | -import com.bsth.Application; | ||
| 4 | -import com.bsth.data.gpsdata.status_manager.gps_line_state.LineStateHandle; | ||
| 5 | -import com.bsth.data.gpsdata.status_manager.gps_service_state.ServiceStateHandle; | ||
| 6 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | -import org.springframework.boot.CommandLineRunner; | ||
| 8 | -import org.springframework.stereotype.Component; | ||
| 9 | - | ||
| 10 | -import java.util.concurrent.TimeUnit; | ||
| 11 | - | ||
| 12 | -/** | ||
| 13 | - * GPS 状态管理 | ||
| 14 | - * Created by panzhao on 2017/7/13. | ||
| 15 | - */ | ||
| 16 | -@Component | ||
| 17 | -public class GpsStatusManager implements CommandLineRunner { | ||
| 18 | - | ||
| 19 | - @Autowired | ||
| 20 | - StatusCheckThread checkThread; | ||
| 21 | - | ||
| 22 | - @Autowired | ||
| 23 | - LineStateHandle lineStateHandle; | ||
| 24 | - | ||
| 25 | - @Autowired | ||
| 26 | - ServiceStateHandle serviceStateHandle; | ||
| 27 | - | ||
| 28 | - /** | ||
| 29 | - * 切换线路 | ||
| 30 | - * @param nbbm | ||
| 31 | - * @param lineCode | ||
| 32 | - * @param sender | ||
| 33 | - */ | ||
| 34 | - public void changeLine(String nbbm, String lineCode, String sender){ | ||
| 35 | - lineStateHandle.changeLine(nbbm, lineCode, sender); | ||
| 36 | - } | ||
| 37 | - | ||
| 38 | - /** | ||
| 39 | - * 切换营运状态 | ||
| 40 | - * @param nbbm | ||
| 41 | - * @param state 0 营运, 1:非营运 | ||
| 42 | - * @param sender | ||
| 43 | - */ | ||
| 44 | - public void changeServiceState(String nbbm, String upDown,int state, String sender){ | ||
| 45 | - changeServiceState(nbbm, Integer.parseInt(upDown), state, sender); | ||
| 46 | - } | ||
| 47 | - | ||
| 48 | - /** | ||
| 49 | - * 切换营运状态 | ||
| 50 | - * @param nbbm | ||
| 51 | - * @param state 0 营运, 1:非营运 | ||
| 52 | - * @param sender | ||
| 53 | - */ | ||
| 54 | - public void changeServiceState(String nbbm, int upDown,int state, String sender){ | ||
| 55 | - serviceStateHandle.changeState(nbbm, upDown, state, sender); | ||
| 56 | - } | ||
| 57 | - | ||
| 58 | - @Override | ||
| 59 | - public void run(String... strings) throws Exception { | ||
| 60 | - Application.mainServices.scheduleWithFixedDelay(checkThread, 120, 120, TimeUnit.SECONDS); | ||
| 61 | - } | ||
| 62 | - | ||
| 63 | - @Component | ||
| 64 | - public static class StatusCheckThread extends Thread{ | ||
| 65 | - | ||
| 66 | - @Autowired | ||
| 67 | - LineStateHandle lineStateHandle; | ||
| 68 | - | ||
| 69 | - @Autowired | ||
| 70 | - ServiceStateHandle serviceStateHandle; | ||
| 71 | - | ||
| 72 | - @Override | ||
| 73 | - public void run() { | ||
| 74 | - /** 检查线路切换结果 */ | ||
| 75 | - lineStateHandle.checkResultAll(); | ||
| 76 | - /** 检查营运状态切换结果 */ | ||
| 77 | - serviceStateHandle.checkResultAll(); | ||
| 78 | - } | ||
| 79 | - } | ||
| 80 | -} | 1 | +package com.bsth.data.gpsdata.status_manager; |
| 2 | + | ||
| 3 | +import com.bsth.Application; | ||
| 4 | +import com.bsth.data.gpsdata.status_manager.gps_line_state.LineStateHandle; | ||
| 5 | +import com.bsth.data.gpsdata.status_manager.gps_service_state.ServiceStateHandle; | ||
| 6 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | +import org.springframework.boot.CommandLineRunner; | ||
| 8 | +import org.springframework.stereotype.Component; | ||
| 9 | + | ||
| 10 | +import java.util.concurrent.TimeUnit; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * GPS 状态管理 | ||
| 14 | + * Created by panzhao on 2017/7/13. | ||
| 15 | + */ | ||
| 16 | +@Component | ||
| 17 | +public class GpsStatusManager implements CommandLineRunner { | ||
| 18 | + | ||
| 19 | + @Autowired | ||
| 20 | + StatusCheckThread checkThread; | ||
| 21 | + | ||
| 22 | + @Autowired | ||
| 23 | + LineStateHandle lineStateHandle; | ||
| 24 | + | ||
| 25 | + @Autowired | ||
| 26 | + ServiceStateHandle serviceStateHandle; | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 切换线路 | ||
| 30 | + * @param nbbm | ||
| 31 | + * @param lineCode | ||
| 32 | + * @param sender | ||
| 33 | + */ | ||
| 34 | + public void changeLine(String nbbm, String lineCode, String sender){ | ||
| 35 | + lineStateHandle.changeLine(nbbm, lineCode, sender); | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + /** | ||
| 39 | + * 切换营运状态 | ||
| 40 | + * @param nbbm | ||
| 41 | + * @param state 0 营运, 1:非营运 | ||
| 42 | + * @param sender | ||
| 43 | + */ | ||
| 44 | + public void changeServiceState(String nbbm, String upDown,int state, String sender){ | ||
| 45 | + changeServiceState(nbbm, Integer.parseInt(upDown), state, sender); | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + /** | ||
| 49 | + * 切换营运状态 | ||
| 50 | + * @param nbbm | ||
| 51 | + * @param state 0 营运, 1:非营运 | ||
| 52 | + * @param sender | ||
| 53 | + */ | ||
| 54 | + public void changeServiceState(String nbbm, int upDown,int state, String sender){ | ||
| 55 | + serviceStateHandle.changeState(nbbm, upDown, state, sender); | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + @Override | ||
| 59 | + public void run(String... strings) throws Exception { | ||
| 60 | + Application.mainServices.scheduleWithFixedDelay(checkThread, 120, 120, TimeUnit.SECONDS); | ||
| 61 | + } | ||
| 62 | + | ||
| 63 | + @Component | ||
| 64 | + public static class StatusCheckThread extends Thread{ | ||
| 65 | + | ||
| 66 | + @Autowired | ||
| 67 | + LineStateHandle lineStateHandle; | ||
| 68 | + | ||
| 69 | + @Autowired | ||
| 70 | + ServiceStateHandle serviceStateHandle; | ||
| 71 | + | ||
| 72 | + @Override | ||
| 73 | + public void run() { | ||
| 74 | + /** 检查线路切换结果 */ | ||
| 75 | + lineStateHandle.checkResultAll(); | ||
| 76 | + /** 检查营运状态切换结果 */ | ||
| 77 | + serviceStateHandle.checkResultAll(); | ||
| 78 | + } | ||
| 79 | + } | ||
| 80 | +} |
src/main/java/com/bsth/data/gpsdata/status_manager/gps_line_state/ChangeBean.java
| 1 | -package com.bsth.data.gpsdata.status_manager.gps_line_state; | ||
| 2 | - | ||
| 3 | -/** | ||
| 4 | - * Created by panzhao on 2017/7/13. | ||
| 5 | - */ | ||
| 6 | -public class ChangeBean { | ||
| 7 | - | ||
| 8 | - /** | ||
| 9 | - * 车辆自编号 | ||
| 10 | - */ | ||
| 11 | - private String nbbm; | ||
| 12 | - | ||
| 13 | - /** | ||
| 14 | - * 要切换到的线路 | ||
| 15 | - */ | ||
| 16 | - private String lineCode; | ||
| 17 | - | ||
| 18 | - /** | ||
| 19 | - * 指令发送次数 | ||
| 20 | - */ | ||
| 21 | - private int sendCount; | ||
| 22 | - | ||
| 23 | - /** | ||
| 24 | - * 上次指令时间 | ||
| 25 | - */ | ||
| 26 | - private long st; | ||
| 27 | - | ||
| 28 | - /**发送人 */ | ||
| 29 | - private String sender; | ||
| 30 | - | ||
| 31 | - public static ChangeBean getInstance(String nbbm, String lineCode, String sender){ | ||
| 32 | - ChangeBean cb = new ChangeBean(); | ||
| 33 | - cb.setNbbm(nbbm); | ||
| 34 | - cb.setLineCode(lineCode); | ||
| 35 | - cb.setSendCount(0); | ||
| 36 | - cb.setSender(sender); | ||
| 37 | - return cb; | ||
| 38 | - } | ||
| 39 | - | ||
| 40 | - public void countPlus(){ | ||
| 41 | - sendCount ++; | ||
| 42 | - } | ||
| 43 | - | ||
| 44 | - public String getLineCode() { | ||
| 45 | - return lineCode; | ||
| 46 | - } | ||
| 47 | - | ||
| 48 | - public void setLineCode(String lineCode) { | ||
| 49 | - this.lineCode = lineCode; | ||
| 50 | - } | ||
| 51 | - | ||
| 52 | - public int getSendCount() { | ||
| 53 | - return sendCount; | ||
| 54 | - } | ||
| 55 | - | ||
| 56 | - public void setSendCount(int sendCount) { | ||
| 57 | - this.sendCount = sendCount; | ||
| 58 | - } | ||
| 59 | - | ||
| 60 | - public long getSt() { | ||
| 61 | - return st; | ||
| 62 | - } | ||
| 63 | - | ||
| 64 | - public void setSt(long st) { | ||
| 65 | - this.st = st; | ||
| 66 | - } | ||
| 67 | - | ||
| 68 | - public String getSender() { | ||
| 69 | - return sender; | ||
| 70 | - } | ||
| 71 | - | ||
| 72 | - public void setSender(String sender) { | ||
| 73 | - this.sender = sender; | ||
| 74 | - } | ||
| 75 | - | ||
| 76 | - public String getNbbm() { | ||
| 77 | - return nbbm; | ||
| 78 | - } | ||
| 79 | - | ||
| 80 | - public void setNbbm(String nbbm) { | ||
| 81 | - this.nbbm = nbbm; | ||
| 82 | - } | ||
| 83 | -} | 1 | +package com.bsth.data.gpsdata.status_manager.gps_line_state; |
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * Created by panzhao on 2017/7/13. | ||
| 5 | + */ | ||
| 6 | +public class ChangeBean { | ||
| 7 | + | ||
| 8 | + /** | ||
| 9 | + * 车辆自编号 | ||
| 10 | + */ | ||
| 11 | + private String nbbm; | ||
| 12 | + | ||
| 13 | + /** | ||
| 14 | + * 要切换到的线路 | ||
| 15 | + */ | ||
| 16 | + private String lineCode; | ||
| 17 | + | ||
| 18 | + /** | ||
| 19 | + * 指令发送次数 | ||
| 20 | + */ | ||
| 21 | + private int sendCount; | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 上次指令时间 | ||
| 25 | + */ | ||
| 26 | + private long st; | ||
| 27 | + | ||
| 28 | + /**发送人 */ | ||
| 29 | + private String sender; | ||
| 30 | + | ||
| 31 | + public static ChangeBean getInstance(String nbbm, String lineCode, String sender){ | ||
| 32 | + ChangeBean cb = new ChangeBean(); | ||
| 33 | + cb.setNbbm(nbbm); | ||
| 34 | + cb.setLineCode(lineCode); | ||
| 35 | + cb.setSendCount(0); | ||
| 36 | + cb.setSender(sender); | ||
| 37 | + return cb; | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + public void countPlus(){ | ||
| 41 | + sendCount ++; | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + public String getLineCode() { | ||
| 45 | + return lineCode; | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + public void setLineCode(String lineCode) { | ||
| 49 | + this.lineCode = lineCode; | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + public int getSendCount() { | ||
| 53 | + return sendCount; | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + public void setSendCount(int sendCount) { | ||
| 57 | + this.sendCount = sendCount; | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + public long getSt() { | ||
| 61 | + return st; | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + public void setSt(long st) { | ||
| 65 | + this.st = st; | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + public String getSender() { | ||
| 69 | + return sender; | ||
| 70 | + } | ||
| 71 | + | ||
| 72 | + public void setSender(String sender) { | ||
| 73 | + this.sender = sender; | ||
| 74 | + } | ||
| 75 | + | ||
| 76 | + public String getNbbm() { | ||
| 77 | + return nbbm; | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + public void setNbbm(String nbbm) { | ||
| 81 | + this.nbbm = nbbm; | ||
| 82 | + } | ||
| 83 | +} |
src/main/java/com/bsth/data/gpsdata/status_manager/gps_line_state/LineStateHandle.java
| 1 | -package com.bsth.data.gpsdata.status_manager.gps_line_state; | ||
| 2 | - | ||
| 3 | -import com.bsth.data.gpsdata.GpsEntity; | ||
| 4 | -import com.bsth.data.gpsdata.GpsRealData; | ||
| 5 | -import com.bsth.data.msg_queue.DirectivePushQueue; | ||
| 6 | -import com.bsth.service.directive.DirectiveService; | ||
| 7 | -import org.slf4j.Logger; | ||
| 8 | -import org.slf4j.LoggerFactory; | ||
| 9 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | -import org.springframework.stereotype.Component; | ||
| 11 | - | ||
| 12 | -import java.util.Collection; | ||
| 13 | -import java.util.concurrent.ConcurrentHashMap; | ||
| 14 | - | ||
| 15 | -/** | ||
| 16 | - * 设备线路状态处理 | ||
| 17 | - * Created by panzhao on 2017/7/13. | ||
| 18 | - */ | ||
| 19 | -@Component | ||
| 20 | -public class LineStateHandle { | ||
| 21 | - | ||
| 22 | - private static ConcurrentHashMap<String, ChangeBean> map; | ||
| 23 | - | ||
| 24 | - @Autowired | ||
| 25 | - DirectiveService directiveService; | ||
| 26 | - @Autowired | ||
| 27 | - GpsRealData gpsRealData; | ||
| 28 | - | ||
| 29 | - Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 30 | - | ||
| 31 | - /** 重发次数 */ | ||
| 32 | - private final static int MAX_SEND_COUNT=3; | ||
| 33 | - /** 重发间隔 */ | ||
| 34 | - private final static int SEND_SPACE=1000 * 60 * 5; | ||
| 35 | - /** 最大有效时间 */ | ||
| 36 | - private final static int MAX_AVAIL_TIME=1000 * 60 * 60 * 2; | ||
| 37 | - | ||
| 38 | - static{ | ||
| 39 | - map = new ConcurrentHashMap(); | ||
| 40 | - } | ||
| 41 | - | ||
| 42 | - public void changeLine(String nbbm, String lineCode, String sender){ | ||
| 43 | - ChangeBean cb = map.get(nbbm); | ||
| 44 | - if(cb != null && cb.getLineCode().equals(lineCode)){ | ||
| 45 | - return; | ||
| 46 | - } | ||
| 47 | - | ||
| 48 | - cb = ChangeBean.getInstance(nbbm, lineCode, sender); | ||
| 49 | - map.put(nbbm, cb); | ||
| 50 | - | ||
| 51 | - changeLine(cb); | ||
| 52 | - } | ||
| 53 | - | ||
| 54 | - private void changeLine(ChangeBean cb){ | ||
| 55 | - cb.setSt(System.currentTimeMillis()); | ||
| 56 | - cb.countPlus(); | ||
| 57 | - DirectivePushQueue.put64(cb.getNbbm(), cb.getLineCode(), cb.getSender()); | ||
| 58 | - } | ||
| 59 | - | ||
| 60 | - | ||
| 61 | - public void checkResultAll(){ | ||
| 62 | - Collection<ChangeBean> cbs = map.values(); | ||
| 63 | - for(ChangeBean cb : cbs){ | ||
| 64 | - checkResult(cb); | ||
| 65 | - } | ||
| 66 | - } | ||
| 67 | - | ||
| 68 | - private void checkResult(ChangeBean cb){ | ||
| 69 | - try{ | ||
| 70 | - GpsEntity gps = gpsRealData.getByNbbm(cb.getNbbm()); | ||
| 71 | - if(gps == null) | ||
| 72 | - return; | ||
| 73 | - | ||
| 74 | - if(cb.getLineCode().equals(gps.getLineId())){ | ||
| 75 | - map.remove(cb.getNbbm()); | ||
| 76 | - logger.info("线路切换成功," + cb.getNbbm() + "、" + cb.getLineCode()); | ||
| 77 | - } | ||
| 78 | - else{ | ||
| 79 | - reSend(cb); | ||
| 80 | - } | ||
| 81 | - }catch (Exception e){ | ||
| 82 | - logger.error("", e); | ||
| 83 | - } | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - private void reSend(ChangeBean cb){ | ||
| 87 | - if(cb.getSendCount() >= MAX_SEND_COUNT){ | ||
| 88 | - map.remove(cb.getNbbm()); | ||
| 89 | - logger.info("超过重发次数," + cb.getNbbm() + "、" + cb.getLineCode()); | ||
| 90 | - return; | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - long diff = System.currentTimeMillis() - cb.getSt(); | ||
| 94 | - if(diff >= MAX_AVAIL_TIME){ | ||
| 95 | - map.remove(cb.getNbbm()); | ||
| 96 | - logger.info("超过有效时间," + cb.getNbbm() + "、" + cb.getLineCode() + "、" + cb.getSt()); | ||
| 97 | - return; | ||
| 98 | - } | ||
| 99 | - | ||
| 100 | - if(diff >= SEND_SPACE){ | ||
| 101 | - cb.setSender("补发@系统"); | ||
| 102 | - changeLine(cb); | ||
| 103 | - logger.info("重发线路切换指令," + cb.getNbbm() + "、" + cb.getLineCode()); | ||
| 104 | - return; | ||
| 105 | - } | ||
| 106 | - } | ||
| 107 | -} | 1 | +package com.bsth.data.gpsdata.status_manager.gps_line_state; |
| 2 | + | ||
| 3 | +import com.bsth.data.gpsdata.GpsEntity; | ||
| 4 | +import com.bsth.data.gpsdata.GpsRealData; | ||
| 5 | +import com.bsth.data.msg_queue.DirectivePushQueue; | ||
| 6 | +import com.bsth.service.directive.DirectiveService; | ||
| 7 | +import org.slf4j.Logger; | ||
| 8 | +import org.slf4j.LoggerFactory; | ||
| 9 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | +import org.springframework.stereotype.Component; | ||
| 11 | + | ||
| 12 | +import java.util.Collection; | ||
| 13 | +import java.util.concurrent.ConcurrentHashMap; | ||
| 14 | + | ||
| 15 | +/** | ||
| 16 | + * 设备线路状态处理 | ||
| 17 | + * Created by panzhao on 2017/7/13. | ||
| 18 | + */ | ||
| 19 | +@Component | ||
| 20 | +public class LineStateHandle { | ||
| 21 | + | ||
| 22 | + private static ConcurrentHashMap<String, ChangeBean> map; | ||
| 23 | + | ||
| 24 | + @Autowired | ||
| 25 | + DirectiveService directiveService; | ||
| 26 | + @Autowired | ||
| 27 | + GpsRealData gpsRealData; | ||
| 28 | + | ||
| 29 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 30 | + | ||
| 31 | + /** 重发次数 */ | ||
| 32 | + private final static int MAX_SEND_COUNT=3; | ||
| 33 | + /** 重发间隔 */ | ||
| 34 | + private final static int SEND_SPACE=1000 * 60 * 5; | ||
| 35 | + /** 最大有效时间 */ | ||
| 36 | + private final static int MAX_AVAIL_TIME=1000 * 60 * 60 * 2; | ||
| 37 | + | ||
| 38 | + static{ | ||
| 39 | + map = new ConcurrentHashMap(); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + public void changeLine(String nbbm, String lineCode, String sender){ | ||
| 43 | + ChangeBean cb = map.get(nbbm); | ||
| 44 | + if(cb != null && cb.getLineCode().equals(lineCode)){ | ||
| 45 | + return; | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + cb = ChangeBean.getInstance(nbbm, lineCode, sender); | ||
| 49 | + map.put(nbbm, cb); | ||
| 50 | + | ||
| 51 | + changeLine(cb); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + private void changeLine(ChangeBean cb){ | ||
| 55 | + cb.setSt(System.currentTimeMillis()); | ||
| 56 | + cb.countPlus(); | ||
| 57 | + DirectivePushQueue.put64(cb.getNbbm(), cb.getLineCode(), cb.getSender()); | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + | ||
| 61 | + public void checkResultAll(){ | ||
| 62 | + Collection<ChangeBean> cbs = map.values(); | ||
| 63 | + for(ChangeBean cb : cbs){ | ||
| 64 | + checkResult(cb); | ||
| 65 | + } | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + private void checkResult(ChangeBean cb){ | ||
| 69 | + try{ | ||
| 70 | + GpsEntity gps = gpsRealData.getByNbbm(cb.getNbbm()); | ||
| 71 | + if(gps == null) | ||
| 72 | + return; | ||
| 73 | + | ||
| 74 | + if(cb.getLineCode().equals(gps.getLineId())){ | ||
| 75 | + map.remove(cb.getNbbm()); | ||
| 76 | + logger.info("线路切换成功," + cb.getNbbm() + "、" + cb.getLineCode()); | ||
| 77 | + } | ||
| 78 | + else{ | ||
| 79 | + reSend(cb); | ||
| 80 | + } | ||
| 81 | + }catch (Exception e){ | ||
| 82 | + logger.error("", e); | ||
| 83 | + } | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + private void reSend(ChangeBean cb){ | ||
| 87 | + if(cb.getSendCount() >= MAX_SEND_COUNT){ | ||
| 88 | + map.remove(cb.getNbbm()); | ||
| 89 | + logger.info("超过重发次数," + cb.getNbbm() + "、" + cb.getLineCode()); | ||
| 90 | + return; | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + long diff = System.currentTimeMillis() - cb.getSt(); | ||
| 94 | + if(diff >= MAX_AVAIL_TIME){ | ||
| 95 | + map.remove(cb.getNbbm()); | ||
| 96 | + logger.info("超过有效时间," + cb.getNbbm() + "、" + cb.getLineCode() + "、" + cb.getSt()); | ||
| 97 | + return; | ||
| 98 | + } | ||
| 99 | + | ||
| 100 | + if(diff >= SEND_SPACE){ | ||
| 101 | + cb.setSender("补发@系统"); | ||
| 102 | + changeLine(cb); | ||
| 103 | + logger.info("重发线路切换指令," + cb.getNbbm() + "、" + cb.getLineCode()); | ||
| 104 | + return; | ||
| 105 | + } | ||
| 106 | + } | ||
| 107 | +} |
src/main/java/com/bsth/data/gpsdata/status_manager/gps_service_state/ServiceStateHandle.java
| 1 | -package com.bsth.data.gpsdata.status_manager.gps_service_state; | ||
| 2 | - | ||
| 3 | -import com.bsth.data.gpsdata.GpsEntity; | ||
| 4 | -import com.bsth.data.gpsdata.GpsRealData; | ||
| 5 | -import com.bsth.data.msg_queue.DirectivePushQueue; | ||
| 6 | -import com.bsth.service.directive.DirectiveService; | ||
| 7 | -import org.slf4j.Logger; | ||
| 8 | -import org.slf4j.LoggerFactory; | ||
| 9 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | -import org.springframework.stereotype.Component; | ||
| 11 | - | ||
| 12 | -import java.util.Collection; | ||
| 13 | -import java.util.concurrent.ConcurrentHashMap; | ||
| 14 | - | ||
| 15 | -/** | ||
| 16 | - * 设备营运状态处理 | ||
| 17 | - * Created by panzhao on 2017/7/13. | ||
| 18 | - */ | ||
| 19 | -@Component | ||
| 20 | -public class ServiceStateHandle { | ||
| 21 | - | ||
| 22 | - private static ConcurrentHashMap<String, StateBean> map; | ||
| 23 | - | ||
| 24 | - @Autowired | ||
| 25 | - DirectiveService directiveService; | ||
| 26 | - @Autowired | ||
| 27 | - GpsRealData gpsRealData; | ||
| 28 | - | ||
| 29 | - Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 30 | - | ||
| 31 | - /** 重发次数 */ | ||
| 32 | - private final static int MAX_SEND_COUNT=3; | ||
| 33 | - /** 重发间隔 */ | ||
| 34 | - private final static int SEND_SPACE=1000 * 60 * 4; | ||
| 35 | - /** 最大有效时间 */ | ||
| 36 | - private final static int MAX_AVAIL_TIME=1000 * 60 * 60; | ||
| 37 | - | ||
| 38 | - static{ | ||
| 39 | - map = new ConcurrentHashMap(); | ||
| 40 | - } | ||
| 41 | - | ||
| 42 | - public void changeState(String nbbm, int upDown ,int state, String sender){ | ||
| 43 | - if(map.containsKey(nbbm)){ | ||
| 44 | - return; | ||
| 45 | - } | ||
| 46 | - StateBean sb = StateBean.getInstance(nbbm, upDown, state, sender); | ||
| 47 | - map.put(nbbm, sb); | ||
| 48 | - changeState(sb); | ||
| 49 | - } | ||
| 50 | - | ||
| 51 | - private void changeState(StateBean sb){ | ||
| 52 | - sb.setSt(System.currentTimeMillis()); | ||
| 53 | - sb.countPlus(); | ||
| 54 | - DirectivePushQueue.put6003(sb.getNbbm(), sb.getState(), sb.getUpDown(), sb.getSender()); | ||
| 55 | - } | ||
| 56 | - | ||
| 57 | - public void checkResultAll(){ | ||
| 58 | - Collection<StateBean> sbs = map.values(); | ||
| 59 | - for(StateBean sb : sbs){ | ||
| 60 | - checkResult(sb); | ||
| 61 | - } | ||
| 62 | - } | ||
| 63 | - | ||
| 64 | - private void checkResult(StateBean sb){ | ||
| 65 | - try{ | ||
| 66 | - GpsEntity gps = gpsRealData.getByNbbm(sb.getNbbm()); | ||
| 67 | - if(gps == null) | ||
| 68 | - return; | ||
| 69 | - | ||
| 70 | - if(gps.getState().equals(sb.getState())){ | ||
| 71 | - map.remove(sb.getNbbm()); | ||
| 72 | - logger.info("营运状态切换成功," + sb.getNbbm() + "、" + sb.getState()); | ||
| 73 | - } | ||
| 74 | - else | ||
| 75 | - reSend(sb); | ||
| 76 | - }catch (Exception e){ | ||
| 77 | - logger.error("", e); | ||
| 78 | - } | ||
| 79 | - } | ||
| 80 | - | ||
| 81 | - private void reSend(StateBean sb){ | ||
| 82 | - if(sb.getSendCount() >= MAX_SEND_COUNT){ | ||
| 83 | - map.remove(sb.getNbbm()); | ||
| 84 | - logger.info("超过重发次数," + sb.getNbbm() + "、" + sb.getState()); | ||
| 85 | - return; | ||
| 86 | - } | ||
| 87 | - | ||
| 88 | - long diff = System.currentTimeMillis() - sb.getSt(); | ||
| 89 | - if(diff >= MAX_AVAIL_TIME){ | ||
| 90 | - map.remove(sb.getNbbm()); | ||
| 91 | - logger.info("营运状态切换超过有效时间," + sb.getNbbm() + "、" + sb.getState() + "、" + sb.getSt()); | ||
| 92 | - return; | ||
| 93 | - } | ||
| 94 | - | ||
| 95 | - if(diff >= SEND_SPACE){ | ||
| 96 | - sb.setSender("补发@系统"); | ||
| 97 | - changeState(sb); | ||
| 98 | - logger.info("重发营运状态切换指令," + sb.getNbbm() + "、" + sb.getState()); | ||
| 99 | - return; | ||
| 100 | - } | ||
| 101 | - } | ||
| 102 | -} | 1 | +package com.bsth.data.gpsdata.status_manager.gps_service_state; |
| 2 | + | ||
| 3 | +import com.bsth.data.gpsdata.GpsEntity; | ||
| 4 | +import com.bsth.data.gpsdata.GpsRealData; | ||
| 5 | +import com.bsth.data.msg_queue.DirectivePushQueue; | ||
| 6 | +import com.bsth.service.directive.DirectiveService; | ||
| 7 | +import org.slf4j.Logger; | ||
| 8 | +import org.slf4j.LoggerFactory; | ||
| 9 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | +import org.springframework.stereotype.Component; | ||
| 11 | + | ||
| 12 | +import java.util.Collection; | ||
| 13 | +import java.util.concurrent.ConcurrentHashMap; | ||
| 14 | + | ||
| 15 | +/** | ||
| 16 | + * 设备营运状态处理 | ||
| 17 | + * Created by panzhao on 2017/7/13. | ||
| 18 | + */ | ||
| 19 | +@Component | ||
| 20 | +public class ServiceStateHandle { | ||
| 21 | + | ||
| 22 | + private static ConcurrentHashMap<String, StateBean> map; | ||
| 23 | + | ||
| 24 | + @Autowired | ||
| 25 | + DirectiveService directiveService; | ||
| 26 | + @Autowired | ||
| 27 | + GpsRealData gpsRealData; | ||
| 28 | + | ||
| 29 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 30 | + | ||
| 31 | + /** 重发次数 */ | ||
| 32 | + private final static int MAX_SEND_COUNT=3; | ||
| 33 | + /** 重发间隔 */ | ||
| 34 | + private final static int SEND_SPACE=1000 * 60 * 4; | ||
| 35 | + /** 最大有效时间 */ | ||
| 36 | + private final static int MAX_AVAIL_TIME=1000 * 60 * 60; | ||
| 37 | + | ||
| 38 | + static{ | ||
| 39 | + map = new ConcurrentHashMap(); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + public void changeState(String nbbm, int upDown ,int state, String sender){ | ||
| 43 | + if(map.containsKey(nbbm)){ | ||
| 44 | + return; | ||
| 45 | + } | ||
| 46 | + StateBean sb = StateBean.getInstance(nbbm, upDown, state, sender); | ||
| 47 | + map.put(nbbm, sb); | ||
| 48 | + changeState(sb); | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | + private void changeState(StateBean sb){ | ||
| 52 | + sb.setSt(System.currentTimeMillis()); | ||
| 53 | + sb.countPlus(); | ||
| 54 | + DirectivePushQueue.put6003(sb.getNbbm(), sb.getState(), sb.getUpDown(), sb.getSender()); | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + public void checkResultAll(){ | ||
| 58 | + Collection<StateBean> sbs = map.values(); | ||
| 59 | + for(StateBean sb : sbs){ | ||
| 60 | + checkResult(sb); | ||
| 61 | + } | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + private void checkResult(StateBean sb){ | ||
| 65 | + try{ | ||
| 66 | + GpsEntity gps = gpsRealData.getByNbbm(sb.getNbbm()); | ||
| 67 | + if(gps == null) | ||
| 68 | + return; | ||
| 69 | + | ||
| 70 | + if(gps.getState().equals(sb.getState())){ | ||
| 71 | + map.remove(sb.getNbbm()); | ||
| 72 | + logger.info("营运状态切换成功," + sb.getNbbm() + "、" + sb.getState()); | ||
| 73 | + } | ||
| 74 | + else | ||
| 75 | + reSend(sb); | ||
| 76 | + }catch (Exception e){ | ||
| 77 | + logger.error("", e); | ||
| 78 | + } | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + private void reSend(StateBean sb){ | ||
| 82 | + if(sb.getSendCount() >= MAX_SEND_COUNT){ | ||
| 83 | + map.remove(sb.getNbbm()); | ||
| 84 | + logger.info("超过重发次数," + sb.getNbbm() + "、" + sb.getState()); | ||
| 85 | + return; | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + long diff = System.currentTimeMillis() - sb.getSt(); | ||
| 89 | + if(diff >= MAX_AVAIL_TIME){ | ||
| 90 | + map.remove(sb.getNbbm()); | ||
| 91 | + logger.info("营运状态切换超过有效时间," + sb.getNbbm() + "、" + sb.getState() + "、" + sb.getSt()); | ||
| 92 | + return; | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + if(diff >= SEND_SPACE){ | ||
| 96 | + sb.setSender("补发@系统"); | ||
| 97 | + changeState(sb); | ||
| 98 | + logger.info("重发营运状态切换指令," + sb.getNbbm() + "、" + sb.getState()); | ||
| 99 | + return; | ||
| 100 | + } | ||
| 101 | + } | ||
| 102 | +} |
src/main/java/com/bsth/data/gpsdata/status_manager/gps_service_state/StateBean.java
| 1 | -package com.bsth.data.gpsdata.status_manager.gps_service_state; | ||
| 2 | - | ||
| 3 | -/** | ||
| 4 | - * Created by panzhao on 2017/7/13. | ||
| 5 | - */ | ||
| 6 | -public class StateBean { | ||
| 7 | - | ||
| 8 | - /** | ||
| 9 | - * 车辆自编号 | ||
| 10 | - */ | ||
| 11 | - private String nbbm; | ||
| 12 | - | ||
| 13 | - /** | ||
| 14 | - * 要切换到营运状态 | ||
| 15 | - */ | ||
| 16 | - private int state; | ||
| 17 | - | ||
| 18 | - /** | ||
| 19 | - * 要切换到的上下行 | ||
| 20 | - */ | ||
| 21 | - private int upDown; | ||
| 22 | - | ||
| 23 | - /** | ||
| 24 | - * 指令发送次数 | ||
| 25 | - */ | ||
| 26 | - private int sendCount; | ||
| 27 | - | ||
| 28 | - /** | ||
| 29 | - * 上次指令时间 | ||
| 30 | - */ | ||
| 31 | - private long st; | ||
| 32 | - | ||
| 33 | - /**发送人 */ | ||
| 34 | - private String sender; | ||
| 35 | - | ||
| 36 | - public static StateBean getInstance(String nbbm, int upDown, int state, String sender){ | ||
| 37 | - StateBean sb = new StateBean(); | ||
| 38 | - sb.setNbbm(nbbm); | ||
| 39 | - sb.setState(state); | ||
| 40 | - sb.setSendCount(0); | ||
| 41 | - sb.setSender(sender); | ||
| 42 | - sb.setUpDown(upDown); | ||
| 43 | - return sb; | ||
| 44 | - } | ||
| 45 | - | ||
| 46 | - public int getState() { | ||
| 47 | - return state; | ||
| 48 | - } | ||
| 49 | - | ||
| 50 | - public void setState(int state) { | ||
| 51 | - this.state = state; | ||
| 52 | - } | ||
| 53 | - | ||
| 54 | - public int getSendCount() { | ||
| 55 | - return sendCount; | ||
| 56 | - } | ||
| 57 | - | ||
| 58 | - public void setSendCount(int sendCount) { | ||
| 59 | - this.sendCount = sendCount; | ||
| 60 | - } | ||
| 61 | - | ||
| 62 | - public long getSt() { | ||
| 63 | - return st; | ||
| 64 | - } | ||
| 65 | - | ||
| 66 | - public void setSt(long st) { | ||
| 67 | - this.st = st; | ||
| 68 | - } | ||
| 69 | - | ||
| 70 | - public String getSender() { | ||
| 71 | - return sender; | ||
| 72 | - } | ||
| 73 | - | ||
| 74 | - public void setSender(String sender) { | ||
| 75 | - this.sender = sender; | ||
| 76 | - } | ||
| 77 | - | ||
| 78 | - public void countPlus(){ | ||
| 79 | - sendCount ++; | ||
| 80 | - } | ||
| 81 | - | ||
| 82 | - public int getUpDown() { | ||
| 83 | - return upDown; | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - public void setUpDown(int upDown) { | ||
| 87 | - this.upDown = upDown; | ||
| 88 | - } | ||
| 89 | - | ||
| 90 | - public String getNbbm() { | ||
| 91 | - return nbbm; | ||
| 92 | - } | ||
| 93 | - | ||
| 94 | - public void setNbbm(String nbbm) { | ||
| 95 | - this.nbbm = nbbm; | ||
| 96 | - } | ||
| 97 | -} | 1 | +package com.bsth.data.gpsdata.status_manager.gps_service_state; |
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * Created by panzhao on 2017/7/13. | ||
| 5 | + */ | ||
| 6 | +public class StateBean { | ||
| 7 | + | ||
| 8 | + /** | ||
| 9 | + * 车辆自编号 | ||
| 10 | + */ | ||
| 11 | + private String nbbm; | ||
| 12 | + | ||
| 13 | + /** | ||
| 14 | + * 要切换到营运状态 | ||
| 15 | + */ | ||
| 16 | + private int state; | ||
| 17 | + | ||
| 18 | + /** | ||
| 19 | + * 要切换到的上下行 | ||
| 20 | + */ | ||
| 21 | + private int upDown; | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 指令发送次数 | ||
| 25 | + */ | ||
| 26 | + private int sendCount; | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 上次指令时间 | ||
| 30 | + */ | ||
| 31 | + private long st; | ||
| 32 | + | ||
| 33 | + /**发送人 */ | ||
| 34 | + private String sender; | ||
| 35 | + | ||
| 36 | + public static StateBean getInstance(String nbbm, int upDown, int state, String sender){ | ||
| 37 | + StateBean sb = new StateBean(); | ||
| 38 | + sb.setNbbm(nbbm); | ||
| 39 | + sb.setState(state); | ||
| 40 | + sb.setSendCount(0); | ||
| 41 | + sb.setSender(sender); | ||
| 42 | + sb.setUpDown(upDown); | ||
| 43 | + return sb; | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + public int getState() { | ||
| 47 | + return state; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + public void setState(int state) { | ||
| 51 | + this.state = state; | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + public int getSendCount() { | ||
| 55 | + return sendCount; | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + public void setSendCount(int sendCount) { | ||
| 59 | + this.sendCount = sendCount; | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + public long getSt() { | ||
| 63 | + return st; | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + public void setSt(long st) { | ||
| 67 | + this.st = st; | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + public String getSender() { | ||
| 71 | + return sender; | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + public void setSender(String sender) { | ||
| 75 | + this.sender = sender; | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + public void countPlus(){ | ||
| 79 | + sendCount ++; | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + public int getUpDown() { | ||
| 83 | + return upDown; | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + public void setUpDown(int upDown) { | ||
| 87 | + this.upDown = upDown; | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + public String getNbbm() { | ||
| 91 | + return nbbm; | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + public void setNbbm(String nbbm) { | ||
| 95 | + this.nbbm = nbbm; | ||
| 96 | + } | ||
| 97 | +} |
src/main/java/com/bsth/service/schedule/ScheduleRule1FlatService.java
| @@ -6,4 +6,6 @@ import com.bsth.entity.schedule.rule.ScheduleRule1Flat; | @@ -6,4 +6,6 @@ import com.bsth.entity.schedule.rule.ScheduleRule1Flat; | ||
| 6 | * Created by xu on 16/7/4. | 6 | * Created by xu on 16/7/4. |
| 7 | */ | 7 | */ |
| 8 | public interface ScheduleRule1FlatService extends BService<ScheduleRule1Flat, Long> { | 8 | public interface ScheduleRule1FlatService extends BService<ScheduleRule1Flat, Long> { |
| 9 | + | ||
| 10 | + | ||
| 9 | } | 11 | } |