Commit f4fbc36d5563b8ed716890275c4361938f42c7d1
1 parent
64ffcea9
update
Showing
4 changed files
with
77 additions
and
47 deletions
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
| @@ -797,6 +797,7 @@ public class DayOfSchedule { | @@ -797,6 +797,7 @@ public class DayOfSchedule { | ||
| 797 | 797 | ||
| 798 | public void save(ScheduleRealInfo sch) { | 798 | public void save(ScheduleRealInfo sch) { |
| 799 | //schRepository.save(sch); | 799 | //schRepository.save(sch); |
| 800 | + sch.setUpdateDate(new Date()); | ||
| 800 | pstBuffer.add(sch); | 801 | pstBuffer.add(sch); |
| 801 | } | 802 | } |
| 802 | 803 |
src/main/java/com/bsth/data/schedule/thread/SchedulePstThread.java
| 1 | package com.bsth.data.schedule.thread; | 1 | package com.bsth.data.schedule.thread; |
| 2 | 2 | ||
| 3 | +import com.alibaba.fastjson.JSON; | ||
| 3 | import com.bsth.data.schedule.DayOfSchedule; | 4 | import com.bsth.data.schedule.DayOfSchedule; |
| 4 | import com.bsth.entity.realcontrol.ScheduleRealInfo; | 5 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 5 | import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; | 6 | import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; |
| 6 | import org.slf4j.Logger; | 7 | import org.slf4j.Logger; |
| 7 | import org.slf4j.LoggerFactory; | 8 | import org.slf4j.LoggerFactory; |
| 8 | import org.springframework.beans.factory.annotation.Autowired; | 9 | import org.springframework.beans.factory.annotation.Autowired; |
| 9 | -import org.springframework.orm.jpa.JpaObjectRetrievalFailureException; | 10 | +import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; |
| 11 | +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; | ||
| 10 | import org.springframework.stereotype.Component; | 12 | import org.springframework.stereotype.Component; |
| 11 | 13 | ||
| 12 | -import javax.persistence.EntityNotFoundException; | ||
| 13 | - | ||
| 14 | /** | 14 | /** |
| 15 | * @author PanZhao | 15 | * @author PanZhao |
| 16 | * @ClassName: SchedulePstThread | 16 | * @ClassName: SchedulePstThread |
| @@ -23,36 +23,68 @@ public class SchedulePstThread extends Thread { | @@ -23,36 +23,68 @@ public class SchedulePstThread extends Thread { | ||
| 23 | @Autowired | 23 | @Autowired |
| 24 | ScheduleRealInfoRepository scheduleRepository; | 24 | ScheduleRealInfoRepository scheduleRepository; |
| 25 | 25 | ||
| 26 | + @Autowired | ||
| 27 | + NamedParameterJdbcTemplate jdbcTemplate; | ||
| 28 | + | ||
| 29 | + @Autowired | ||
| 30 | + DayOfSchedule dayOfSchedule; | ||
| 31 | + | ||
| 26 | Logger logger = LoggerFactory.getLogger(this.getClass()); | 32 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| 27 | 33 | ||
| 28 | @Override | 34 | @Override |
| 29 | public void run() { | 35 | public void run() { |
| 30 | 36 | ||
| 31 | - //LinkedList<ScheduleRealInfo> list = DayOfSchedule.pstBuffer; | ||
| 32 | - | ||
| 33 | ScheduleRealInfo schedule; | 37 | ScheduleRealInfo schedule; |
| 34 | for (int i = 0; i < 1000; i++) { | 38 | for (int i = 0; i < 1000; i++) { |
| 35 | schedule = DayOfSchedule.pstBuffer.poll(); | 39 | schedule = DayOfSchedule.pstBuffer.poll(); |
| 36 | if (null == schedule) | 40 | if (null == schedule) |
| 37 | break; | 41 | break; |
| 38 | 42 | ||
| 39 | - if(schedule.isDeleted()){ | 43 | + if (schedule.isDeleted()) { |
| 40 | logger.error("save 发现 deleted=true 的班次,id: " + schedule.getId()); | 44 | logger.error("save 发现 deleted=true 的班次,id: " + schedule.getId()); |
| 41 | continue; | 45 | continue; |
| 42 | } | 46 | } |
| 43 | 47 | ||
| 44 | - try { | ||
| 45 | - scheduleRepository.save(schedule); | ||
| 46 | - } | ||
| 47 | - catch (JpaObjectRetrievalFailureException e1){ | ||
| 48 | - logger.error("JpaObjectRetrievalFailureException error.... 可忽略"); | ||
| 49 | - } | ||
| 50 | - catch(EntityNotFoundException e2){ | ||
| 51 | - logger.error("EntityNotFoundException error.... 可忽略"); | ||
| 52 | - } | ||
| 53 | - catch (Exception e) { | ||
| 54 | - logger.error("班次入库的时候出现未知异常!!", e); | ||
| 55 | - } | 48 | + save(schedule); |
| 49 | + } | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + /** | ||
| 53 | + * 班次更新到数据库,不走jpa | ||
| 54 | + * | ||
| 55 | + * @param sch | ||
| 56 | + */ | ||
| 57 | + public void save(ScheduleRealInfo sch) { | ||
| 58 | + if (sch.getId() == null) { | ||
| 59 | + logger.error("入库的班次没有ID, " + JSON.toJSONString(sch)); | ||
| 60 | + return; | ||
| 61 | + } | ||
| 62 | + | ||
| 63 | + if(sch.getSaveFailCount() > 5){ | ||
| 64 | + logger.error("入库失败上限, " + JSON.toJSONString(sch)); | ||
| 65 | + return; | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + try { | ||
| 69 | + String sql = "UPDATE bsth_c_s_sp_info_real" + | ||
| 70 | + " SET adjust_exps=:adjustExps, bc_type=:bcType, bcs=:bcs, bcsj=:bcsj, ccno=:ccno, cl_zbh=:clZbh, df_auto=:dfAuto," + | ||
| 71 | + " dfsj=:dfsj, directive_state=:directiveState, fcno=:fcno, fcsj=:fcsj, fcsj_actual=:fcsjActual, fgs_bm=:fgsBm, fgs_name=:fgsName, gs_bm=:gsBm, gs_name=:gsName," + | ||
| 72 | + " j_gh=:jGh, j_name=:jName, jhlc=:jhlc, jhlc_orig=:jhlcOrig, lp_name=:lpName, ONLINE=:online, qdz_code=:qdzCode, qdz_name=:qdzName," + | ||
| 73 | + " real_exec_date=:realExecDate, reissue=:reissue, remarks=:remarks, s_gh=:sGh, s_name=:sName, schedule_date=:scheduleDate," + | ||
| 74 | + " schedule_date_str=:scheduleDateStr, sflj=:sflj, sp_id=:spId, STATUS=:status, update_date=:updateDate, xl_bm=:xlBm, xl_dir=:xlDir, xl_name=:xlName," + | ||
| 75 | + " zdsj=:zdsj, zdsj_actual=:zdsjActual, zdz_code=:zdzCode, zdz_name=:zdzName" + | ||
| 76 | + " WHERE " + | ||
| 77 | + " id=:id"; | ||
| 78 | + | ||
| 79 | + jdbcTemplate.update(sql, new BeanPropertySqlParameterSource(sch)); | ||
| 80 | + sch.setSaveFailCount(0); | ||
| 81 | + } catch (Exception e) { | ||
| 82 | + //下次入库再试 | ||
| 83 | + sch.setSaveFailCount(sch.getSaveFailCount()+1); | ||
| 84 | + dayOfSchedule.save(sch); | ||
| 85 | + | ||
| 86 | + logger.error("班次 " + sch.getId() + "入库失败," + JSON.toJSONString(sch)); | ||
| 87 | + logger.error("", e); | ||
| 56 | } | 88 | } |
| 57 | } | 89 | } |
| 58 | } | 90 | } |
src/main/java/com/bsth/entity/realcontrol/ScheduleRealInfo.java
| @@ -30,8 +30,9 @@ public class ScheduleRealInfo { | @@ -30,8 +30,9 @@ public class ScheduleRealInfo { | ||
| 30 | /** 计划ID */ | 30 | /** 计划ID */ |
| 31 | private Long spId; | 31 | private Long spId; |
| 32 | 32 | ||
| 33 | - /** 排班计划日期 */ | 33 | + /** 排班计划日期 --no webSocket */ |
| 34 | private Date scheduleDate; | 34 | private Date scheduleDate; |
| 35 | + /** 排班日期字符串 YYYY-MM-DD */ | ||
| 35 | private String scheduleDateStr; | 36 | private String scheduleDateStr; |
| 36 | 37 | ||
| 37 | /** 真实执行时间 yyyy-MM-dd */ | 38 | /** 真实执行时间 yyyy-MM-dd */ |
| @@ -81,9 +82,9 @@ public class ScheduleRealInfo { | @@ -81,9 +82,9 @@ public class ScheduleRealInfo { | ||
| 81 | @Transient | 82 | @Transient |
| 82 | private Long zdsjT; | 83 | private Long zdsjT; |
| 83 | 84 | ||
| 84 | - /** 发车顺序号 */ | 85 | + /** 发车顺序号 --no webSocket*/ |
| 85 | private Integer fcno; | 86 | private Integer fcno; |
| 86 | - /** 对应班次数 */ | 87 | + /** 对应班次数 --no webSocket*/ |
| 87 | private Integer bcs; | 88 | private Integer bcs; |
| 88 | /** 计划里程 */ | 89 | /** 计划里程 */ |
| 89 | private Double jhlc; | 90 | private Double jhlc; |
| @@ -91,10 +92,12 @@ public class ScheduleRealInfo { | @@ -91,10 +92,12 @@ public class ScheduleRealInfo { | ||
| 91 | /** 原始计划里程 (原计调的数据) */ | 92 | /** 原始计划里程 (原计调的数据) */ |
| 92 | private Double jhlcOrig; | 93 | private Double jhlcOrig; |
| 93 | 94 | ||
| 94 | - /** 实际里程 这个字段被废弃*/ | 95 | + /** 实际里程 --no webSocket*/ |
| 96 | + @Transient | ||
| 97 | + @JsonIgnore | ||
| 95 | private Double realMileage; | 98 | private Double realMileage; |
| 96 | 99 | ||
| 97 | - /** 实际里程 */ | 100 | + /** 实际里程 --no webSocket */ |
| 98 | @Transient | 101 | @Transient |
| 99 | private String sjlc; | 102 | private String sjlc; |
| 100 | /** 班次历时 */ | 103 | /** 班次历时 */ |
| @@ -153,7 +156,8 @@ public class ScheduleRealInfo { | @@ -153,7 +156,8 @@ public class ScheduleRealInfo { | ||
| 153 | /** 备注*/ | 156 | /** 备注*/ |
| 154 | private String remarks; | 157 | private String remarks; |
| 155 | 158 | ||
| 156 | - /** 原计划排班备注 */ | 159 | + /** 原计划排班备注 --no webSocket */ |
| 160 | + @Transient | ||
| 157 | private String remark; | 161 | private String remark; |
| 158 | 162 | ||
| 159 | /**待发时间(格式 HH:mm) */ | 163 | /**待发时间(格式 HH:mm) */ |
| @@ -166,9 +170,6 @@ public class ScheduleRealInfo { | @@ -166,9 +170,6 @@ public class ScheduleRealInfo { | ||
| 166 | /** 指令下发状态 60: 已发送, 100: 设备确认收到, 200:驾驶员确认 0:失败 */ | 170 | /** 指令下发状态 60: 已发送, 100: 设备确认收到, 200:驾驶员确认 0:失败 */ |
| 167 | private Integer directiveState = -1; | 171 | private Integer directiveState = -1; |
| 168 | 172 | ||
| 169 | - /** “运营状态” 指令下发状态 60: 已发送, 100: 设备确认收到 0:失败*/ | ||
| 170 | - private Integer opDirectiveState; | ||
| 171 | - | ||
| 172 | /** 起点站计划到达时间 */ | 173 | /** 起点站计划到达时间 */ |
| 173 | @Transient | 174 | @Transient |
| 174 | private String qdzArrDatejh; | 175 | private String qdzArrDatejh; |
| @@ -200,7 +201,7 @@ public class ScheduleRealInfo { | @@ -200,7 +201,7 @@ public class ScheduleRealInfo { | ||
| 200 | /** 是否有补发GPS信号 */ | 201 | /** 是否有补发GPS信号 */ |
| 201 | private boolean reissue; | 202 | private boolean reissue; |
| 202 | 203 | ||
| 203 | - /** 发车屏 发车顺序号,不持久化,会动态变化 */ | 204 | + /** 发车屏 发车顺序号,不持久化,会动态变化 --no webSocket*/ |
| 204 | @Transient | 205 | @Transient |
| 205 | private int fcpSn; | 206 | private int fcpSn; |
| 206 | 207 | ||
| @@ -209,6 +210,10 @@ public class ScheduleRealInfo { | @@ -209,6 +210,10 @@ public class ScheduleRealInfo { | ||
| 209 | @JsonIgnore | 210 | @JsonIgnore |
| 210 | private boolean deleted; | 211 | private boolean deleted; |
| 211 | 212 | ||
| 213 | + @Transient | ||
| 214 | + @JsonIgnore | ||
| 215 | + private int saveFailCount=0; | ||
| 216 | + | ||
| 212 | public boolean isDfAuto() { | 217 | public boolean isDfAuto() { |
| 213 | return dfAuto; | 218 | return dfAuto; |
| 214 | } | 219 | } |
| @@ -486,7 +491,7 @@ public class ScheduleRealInfo { | @@ -486,7 +491,7 @@ public class ScheduleRealInfo { | ||
| 486 | if(this.isSflj()) | 491 | if(this.isSflj()) |
| 487 | this.setJhlcOrig(this.getJhlc()); | 492 | this.setJhlcOrig(this.getJhlc()); |
| 488 | } | 493 | } |
| 489 | - | 494 | + |
| 490 | public String getSjlc() { | 495 | public String getSjlc() { |
| 491 | return sjlc; | 496 | return sjlc; |
| 492 | } | 497 | } |
| @@ -816,22 +821,6 @@ public class ScheduleRealInfo { | @@ -816,22 +821,6 @@ public class ScheduleRealInfo { | ||
| 816 | calcStatus(); | 821 | calcStatus(); |
| 817 | } | 822 | } |
| 818 | 823 | ||
| 819 | - public Integer getOpDirectiveState() { | ||
| 820 | - return opDirectiveState; | ||
| 821 | - } | ||
| 822 | - | ||
| 823 | - public void setOpDirectiveState(Integer opDirectiveState) { | ||
| 824 | - this.opDirectiveState = opDirectiveState; | ||
| 825 | - } | ||
| 826 | - | ||
| 827 | -/* public ScheduleRealInfo getTwinsSch() { | ||
| 828 | - return twinsSch; | ||
| 829 | - } | ||
| 830 | - | ||
| 831 | - public void setTwinsSch(ScheduleRealInfo twinsSch) { | ||
| 832 | - this.twinsSch = twinsSch; | ||
| 833 | - }*/ | ||
| 834 | - | ||
| 835 | public boolean isLate() { | 824 | public boolean isLate() { |
| 836 | return late; | 825 | return late; |
| 837 | } | 826 | } |
| @@ -925,4 +914,12 @@ public class ScheduleRealInfo { | @@ -925,4 +914,12 @@ public class ScheduleRealInfo { | ||
| 925 | public void setDeleted(boolean deleted) { | 914 | public void setDeleted(boolean deleted) { |
| 926 | this.deleted = deleted; | 915 | this.deleted = deleted; |
| 927 | } | 916 | } |
| 917 | + | ||
| 918 | + public int getSaveFailCount() { | ||
| 919 | + return saveFailCount; | ||
| 920 | + } | ||
| 921 | + | ||
| 922 | + public void setSaveFailCount(int saveFailCount) { | ||
| 923 | + this.saveFailCount = saveFailCount; | ||
| 924 | + } | ||
| 928 | } | 925 | } |
src/main/resources/static/real_control_v2/js/main.js
| @@ -169,8 +169,8 @@ var disabled_submit_btn = function (form) { | @@ -169,8 +169,8 @@ var disabled_submit_btn = function (form) { | ||
| 169 | function showUpdateDescription() { | 169 | function showUpdateDescription() { |
| 170 | //更新说明 | 170 | //更新说明 |
| 171 | var updateDescription = { | 171 | var updateDescription = { |
| 172 | - date: '2017-07-17', | ||
| 173 | - text: '<h5>1、修复了一个蛮蠢的bug,这个bug曾经导致在分班进场班次发出晚20分钟的时候,有一定几率实发时间跳到下午首班营运班次上。</h5>' | 172 | + date: '2017-07-21', |
| 173 | + text: '<h5>1、修复一个蛮严肃的问题,这个问题有极低的概率导致个别班次的操作不会同步到路单!!!</h5>' | ||
| 174 | }; | 174 | }; |
| 175 | 175 | ||
| 176 | var storage = window.localStorage | 176 | var storage = window.localStorage |