Commit 509213ae0ed5bf3c5ab3cf66ed839a33b1caa920

Authored by 潘钊
1 parent 133c631c

update...

src/main/java/com/bsth/entity/OilInfo.java
... ... @@ -126,6 +126,21 @@ public class OilInfo implements Serializable {
126 126 //进场顺序(根据最先出场和最后进场来关联车辆的存油量)
127 127 private int jcsx;
128 128  
  129 + @Override
  130 + public int hashCode() {
  131 + return this.toString().hashCode();
  132 + }
  133 +
  134 + @Override
  135 + public boolean equals(Object obj) {
  136 + return this.toString().equals(((OilInfo)obj).toString());
  137 + }
  138 +
  139 + @Override
  140 + public String toString() {
  141 + return "oil_" + this.id;
  142 + }
  143 +
129 144 public Integer getId() {
130 145 return id;
131 146 }
... ...
src/main/java/com/bsth/entity/SchedulePlanInfo.java
... ... @@ -102,6 +102,21 @@ public class SchedulePlanInfo implements Serializable {
102 102 /** 关联的时刻表名字 */
103 103 private String ttInfoName;
104 104  
  105 + @Override
  106 + public int hashCode() {
  107 + return this.toString().hashCode();
  108 + }
  109 +
  110 + @Override
  111 + public boolean equals(Object obj) {
  112 + return this.toString().equals(((SchedulePlanInfo)obj).toString());
  113 + }
  114 +
  115 + @Override
  116 + public String toString() {
  117 + return "sch_plan_" + this.id;
  118 + }
  119 +
105 120 public Long getId() {
106 121 return id;
107 122 }
... ...
src/main/java/com/bsth/redis/OilRedisService.java
... ... @@ -13,7 +13,6 @@ import org.slf4j.LoggerFactory;
13 13 import org.springframework.beans.factory.annotation.Autowired;
14 14 import org.springframework.boot.CommandLineRunner;
15 15 import org.springframework.core.annotation.Order;
16   -import org.springframework.data.redis.core.ListOperations;
17 16 import org.springframework.data.redis.core.RedisTemplate;
18 17 import org.springframework.data.redis.serializer.StringRedisSerializer;
19 18 import org.springframework.stereotype.Component;
... ... @@ -107,15 +106,15 @@ public class OilRedisService implements CommandLineRunner {
107 106 public void mergeData(String key, List<OilInfo> list) {
108 107 key = REDIS_KEY_PREFIX + key;
109 108  
110   - ListOperations<String, OilInfo> ops = redisTemplate.opsForList();
  109 +/* ListOperations<String, OilInfo> ops = redisTemplate.opsForList();
111 110 List<OilInfo> cacheList = ops.range(key, 0, -1);
112 111  
113 112 for (OilInfo oil : cacheList) {
114 113 if (!list.contains(oil))
115 114 list.add(oil);
116   - }
  115 + }*/
117 116  
118   - //更新
  117 + //更新 直接覆盖更新
119 118 redisTemplate.execute(redisUtils.getUpdateCallback(key, list));
120 119 }
121 120  
... ...
src/main/java/com/bsth/redis/PlanScheduleRedisService.java
... ... @@ -2,6 +2,7 @@ package com.bsth.redis;
2 2  
3 3 import com.bsth.Application;
4 4 import com.bsth.entity.SchedulePlanInfo;
  5 +import com.bsth.redis.util.DateUtils;
5 6 import com.bsth.redis.util.RedisUtils;
6 7 import com.bsth.repository.SchedulePlanInfoRepository;
7 8 import com.bsth.server_rs.base_info.line.Line;
... ... @@ -134,8 +135,11 @@ public class PlanScheduleRedisService implements CommandLineRunner {
134 135 //写入redis
135 136 wirte(list);
136 137  
137   - //24小时清理一次计划排班数据
138   - Application.mainServices.scheduleWithFixedDelay(planClearThread, 24, 24, TimeUnit.HOURS);
  138 + //定时 00:05 分清理计划,并加载当天的计划
  139 + long diff = (DateUtils.getTimestamp() + 1000 * 60 * 5) - System.currentTimeMillis();
  140 + if (diff < 0)
  141 + diff += (1000 * 60 * 60 * 24);
  142 + Application.mainServices.scheduleAtFixedRate(planClearThread, diff / 1000, 60 * 60 * 24, TimeUnit.SECONDS);
139 143 }
140 144  
141 145 public List<SchedulePlanInfo> findByMultiLine(List<String> lineArray, String rq) {
... ... @@ -152,7 +156,8 @@ public class PlanScheduleRedisService implements CommandLineRunner {
152 156  
153 157 @Autowired
154 158 PlanScheduleRedisService planRedisService;
155   -
  159 + @Autowired
  160 + SchedulePlanInfoRepository planInfoRepository;
156 161 @Override
157 162 public void run() {
158 163 try {
... ... @@ -167,6 +172,13 @@ public class PlanScheduleRedisService implements CommandLineRunner {
167 172 for (Line line : lines) {
168 173 planRedisService.delete(line.getLineCode(), rq);
169 174 }
  175 +
  176 + //加载当天的计划
  177 + Date d = new Date();
  178 + Date s = new Date(d.getTime() - 1000 * 60 * 60 * 24);
  179 + List<SchedulePlanInfo> list = planInfoRepository.findByDateRange(s, d);
  180 + //写入redis
  181 + planRedisService.wirte(list);
170 182 } catch (Exception e) {
171 183 logger.error("", e);
172 184 }
... ...
src/main/java/com/bsth/redis/util/DateUtils.java 0 → 100644
  1 +package com.bsth.redis.util;
  2 +
  3 +import java.text.ParseException;
  4 +import java.text.SimpleDateFormat;
  5 +import java.util.Calendar;
  6 +import java.util.Date;
  7 +
  8 +public class DateUtils {
  9 +
  10 + // 获得当天0点时间
  11 + public static int getTimesmorning() {
  12 + Calendar cal = Calendar.getInstance();
  13 + cal.set(Calendar.HOUR_OF_DAY, 0);
  14 + cal.set(Calendar.SECOND, 0);
  15 + cal.set(Calendar.MINUTE, 0);
  16 + cal.set(Calendar.MILLISECOND, 0);
  17 + return (int) (cal.getTimeInMillis() / 1000);
  18 + }
  19 +
  20 + // 获得当天0点毫秒时间戳
  21 + public static long getTimestamp() {
  22 + Calendar cal = Calendar.getInstance();
  23 + cal.set(Calendar.HOUR_OF_DAY, 0);
  24 + cal.set(Calendar.SECOND, 0);
  25 + cal.set(Calendar.MINUTE, 0);
  26 + cal.set(Calendar.MILLISECOND, 0);
  27 + return cal.getTimeInMillis();
  28 + }
  29 +
  30 + public static Long getTimesmorning(Calendar cal) {
  31 + cal.set(Calendar.HOUR_OF_DAY, 0);
  32 + cal.set(Calendar.SECOND, 0);
  33 + cal.set(Calendar.MINUTE, 0);
  34 + cal.set(Calendar.MILLISECOND, 0);
  35 + return cal.getTimeInMillis() / 1000;
  36 + }
  37 +
  38 + // 获得当天24点时间
  39 + public static int getTimesnight() {
  40 + Calendar cal = Calendar.getInstance();
  41 + cal.set(Calendar.HOUR_OF_DAY, 24);
  42 + cal.set(Calendar.SECOND, 0);
  43 + cal.set(Calendar.MINUTE, 0);
  44 + cal.set(Calendar.MILLISECOND, 0);
  45 + return (int) (cal.getTimeInMillis() / 1000);
  46 + }
  47 +
  48 + // 获得当天24点时间 毫秒
  49 + public static Long getTimesnight2() {
  50 + Calendar cal = Calendar.getInstance();
  51 + cal.set(Calendar.HOUR_OF_DAY, 24);
  52 + cal.set(Calendar.SECOND, 0);
  53 + cal.set(Calendar.MINUTE, 0);
  54 + cal.set(Calendar.MILLISECOND, 0);
  55 + return cal.getTimeInMillis();
  56 + }
  57 +
  58 + public static Long getTimesnight(Calendar cal) {
  59 + cal.set(Calendar.HOUR_OF_DAY, 24);
  60 + cal.set(Calendar.SECOND, 0);
  61 + cal.set(Calendar.MINUTE, 0);
  62 + cal.set(Calendar.MILLISECOND, 0);
  63 + return cal.getTimeInMillis();
  64 + }
  65 +
  66 + // 获得本周一0点时间
  67 + public static int getTimesWeekmorning() {
  68 + Calendar cal = Calendar.getInstance();
  69 + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  70 + cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
  71 + return (int) (cal.getTimeInMillis() / 1000);
  72 + }
  73 +
  74 + // 获得本周日24点时间
  75 + public static int getTimesWeeknight() {
  76 + Calendar cal = Calendar.getInstance();
  77 + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  78 + cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
  79 + return (int) ((cal.getTime().getTime() + (7 * 24 * 60 * 60 * 1000)) / 1000);
  80 + }
  81 +
  82 + // 获得本月第一天0点时间
  83 + public static int getTimesMonthmorning() {
  84 + Calendar cal = Calendar.getInstance();
  85 + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  86 + cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
  87 + return (int) (cal.getTimeInMillis() / 1000);
  88 + }
  89 +
  90 + // 获得本月最后一天24点时间
  91 + public static int getTimesMonthnight() {
  92 + Calendar cal = Calendar.getInstance();
  93 + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  94 + cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
  95 + cal.set(Calendar.HOUR_OF_DAY, 24);
  96 + return (int) (cal.getTimeInMillis() / 1000);
  97 + }
  98 +
  99 + private static SimpleDateFormat sdfyyyyMMddHHmm = new SimpleDateFormat("yyyy-MM-ddHH:mm")
  100 + ,sdfyyyyMMdd = new SimpleDateFormat("yyyy-MM-dd")
  101 + ,sdfHHmm = new SimpleDateFormat("HH:mm");
  102 + public static long getTimesByHHmm(String str) throws ParseException{
  103 + Date d = sdfyyyyMMddHHmm.parse(sdfyyyyMMdd.format(new Date()) + str);
  104 + return d.getTime();
  105 + }
  106 +
  107 + public static String plusDay(String old, int day){
  108 + Calendar cal = null;
  109 + try {
  110 + Date date = sdfyyyyMMdd.parse(old);
  111 + cal = Calendar.getInstance();
  112 + cal.setTime(date);
  113 + cal.add(Calendar.DATE, day);
  114 + } catch (ParseException e) {
  115 + e.printStackTrace();
  116 + }
  117 + return sdfyyyyMMdd.format(cal.getTime());
  118 + }
  119 +
  120 + public static String subtractDay(String old, int day){
  121 + Calendar cal = null;
  122 + try {
  123 + Date date = sdfyyyyMMdd.parse(old);
  124 + cal = Calendar.getInstance();
  125 + cal.setTime(date);
  126 + cal.set(Calendar.DATE, cal.get(Calendar.DATE) - day);
  127 + } catch (ParseException e) {
  128 + e.printStackTrace();
  129 + }
  130 + return sdfyyyyMMdd.format(cal.getTime());
  131 + }
  132 +
  133 + public static int calcHHmmDiff(String fcsj, String zdsj) throws ParseException {
  134 + return (int) (sdfHHmm.parse(zdsj).getTime() - sdfHHmm.parse(fcsj).getTime());
  135 + }
  136 +}
... ...