Commit 247ee6cdb2c61ea225b29c8bb79b7fdebc149fd9

Authored by ljq
2 parents c5ed71bd 7788ef69

Merge branch 'lingang' of http://192.168.168.245:8888/panzhaov5/control_service_…

…data_Interface into lingang

Too many changes to show.

To preserve performance only 14 of 25 files are displayed.

src/main/java/com/bsth/entity/HInfo.java 0 → 100644
  1 +package com.bsth.entity;
  2 +
  3 +
  4 +import org.springframework.format.annotation.DateTimeFormat;
  5 +
  6 +import javax.persistence.Entity;
  7 +import javax.persistence.Id;
  8 +import javax.persistence.Table;
  9 +import java.io.Serializable;
  10 +import java.util.Date;
  11 +
  12 +/**
  13 + * 电量信息表
  14 + */
  15 +@Entity
  16 +@Table(name = "bsth_c_qlb")
  17 +public class HInfo implements Serializable {
  18 + @Id
  19 + private Integer id;
  20 + /**
  21 + * 日期
  22 + */
  23 + @DateTimeFormat(pattern = "yyyy-MM-dd")
  24 + private Date rq;
  25 + /**
  26 + * 内部编码
  27 + */
  28 + private String nbbm;
  29 + /**
  30 + * 驾驶员
  31 + */
  32 + private String jsy;
  33 + /**
  34 + * 充氢量
  35 + */
  36 + private Double jql;
  37 + /**
  38 + * 耗氢
  39 + */
  40 + private Double hn;
  41 +
  42 + @Override
  43 + public int hashCode() {
  44 + return this.toString().hashCode();
  45 + }
  46 +
  47 + @Override
  48 + public boolean equals(Object obj) {
  49 + return this.toString().equals(((HInfo)obj).toString());
  50 + }
  51 +
  52 + @Override
  53 + public String toString() {
  54 + return "hydrogen_" + this.id;
  55 + }
  56 +
  57 + public Integer getId() {
  58 + return id;
  59 + }
  60 +
  61 + public void setId(Integer id) {
  62 + this.id = id;
  63 + }
  64 +
  65 + public Date getRq() {
  66 + return rq;
  67 + }
  68 +
  69 + public void setRq(Date rq) {
  70 + this.rq = rq;
  71 + }
  72 +
  73 + public String getNbbm() {
  74 + return nbbm;
  75 + }
  76 +
  77 + public void setNbbm(String nbbm) {
  78 + this.nbbm = nbbm;
  79 + }
  80 +
  81 + public String getJsy() {
  82 + return jsy;
  83 + }
  84 +
  85 + public void setJsy(String jsy) {
  86 + this.jsy = jsy;
  87 + }
  88 +
  89 + public Double getJql() {
  90 + return jql;
  91 + }
  92 +
  93 + public void setJql(Double jql) {
  94 + this.jql = jql;
  95 + }
  96 +
  97 + public Double getHn() {
  98 + return hn;
  99 + }
  100 +
  101 + public void setHn(Double hn) {
  102 + this.hn = hn;
  103 + }
  104 +
  105 +}
... ...
src/main/java/com/bsth/entity/PasswordUser.java
1   -package com.bsth.entity;
2   -
3   -import javax.persistence.*;
4   -import java.util.Date;
5   -
6   -/**
7   - * 接口 密码 访问用户
8   - * Created by panzhao on 2017/3/26.
9   - */
10   -@Entity
11   -@Table(name = "interface_user")
12   -public class PasswordUser {
13   -
14   - @Id
15   - @GeneratedValue
16   - private Integer id;
17   -
18   - /** 访问密码 */
19   - private String pwd;
20   -
21   - /** 调用方名称 */
22   - private String callName;
23   -
24   - /** 创建日期 */
25   - @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
26   - private Date createDate;
27   -
28   - /** 备注 */
29   - private String remark;
30   -
31   - public Integer getId() {
32   - return id;
33   - }
34   -
35   - public void setId(Integer id) {
36   - this.id = id;
37   - }
38   -
39   - public String getPwd() {
40   - return pwd;
41   - }
42   -
43   - public void setPwd(String pwd) {
44   - this.pwd = pwd;
45   - }
46   -
47   - public String getCallName() {
48   - return callName;
49   - }
50   -
51   - public void setCallName(String callName) {
52   - this.callName = callName;
53   - }
54   -
55   - public String getRemark() {
56   - return remark;
57   - }
58   -
59   - public void setRemark(String remark) {
60   - this.remark = remark;
61   - }
62   -
63   - public Date getCreateDate() {
64   - return createDate;
65   - }
66   -
67   - public void setCreateDate(Date createDate) {
68   - this.createDate = createDate;
69   - }
70   -}
  1 +package com.bsth.entity;
  2 +
  3 +import javax.persistence.*;
  4 +import java.util.Date;
  5 +import java.util.List;
  6 +
  7 +/**
  8 + * 接口 密码 访问用户
  9 + * Created by panzhao on 2017/3/26.
  10 + */
  11 +@Entity
  12 +@Table(name = "interface_user")
  13 +public class PasswordUser {
  14 +
  15 + @Id
  16 + @GeneratedValue
  17 + private Integer id;
  18 +
  19 + /** 访问密码 */
  20 + private String pwd;
  21 +
  22 + /** 调用方名称 */
  23 + private String callName;
  24 +
  25 + /** 创建日期 */
  26 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  27 + private Date createDate;
  28 +
  29 + /** 备注 */
  30 + private String remark;
  31 +
  32 + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  33 + @JoinTable(name = "interface_users_resources",
  34 + joinColumns = @JoinColumn(name = "user_id"),
  35 + inverseJoinColumns = @JoinColumn(name = "resource_id"))
  36 + private List<Resource> resources;
  37 +
  38 + public Integer getId() {
  39 + return id;
  40 + }
  41 +
  42 + public void setId(Integer id) {
  43 + this.id = id;
  44 + }
  45 +
  46 + public String getPwd() {
  47 + return pwd;
  48 + }
  49 +
  50 + public void setPwd(String pwd) {
  51 + this.pwd = pwd;
  52 + }
  53 +
  54 + public String getCallName() {
  55 + return callName;
  56 + }
  57 +
  58 + public void setCallName(String callName) {
  59 + this.callName = callName;
  60 + }
  61 +
  62 + public String getRemark() {
  63 + return remark;
  64 + }
  65 +
  66 + public void setRemark(String remark) {
  67 + this.remark = remark;
  68 + }
  69 +
  70 + public Date getCreateDate() {
  71 + return createDate;
  72 + }
  73 +
  74 + public void setCreateDate(Date createDate) {
  75 + this.createDate = createDate;
  76 + }
  77 +
  78 + public List<Resource> getResources() {
  79 + return resources;
  80 + }
  81 +
  82 + public void setResources(List<Resource> resources) {
  83 + this.resources = resources;
  84 + }
  85 +}
... ...
src/main/java/com/bsth/entity/Resource.java 0 → 100644
  1 +package com.bsth.entity;
  2 +
  3 +import javax.persistence.*;
  4 +
  5 +/**
  6 + * @Author Hill
  7 + */
  8 +@Entity
  9 +@Table(name = "interface_resources")
  10 +public class Resource {
  11 +
  12 + @Id
  13 + @GeneratedValue
  14 + private Integer id;
  15 +
  16 + private String name;
  17 +
  18 + private String url;
  19 +
  20 + private String remark;
  21 +
  22 + public Integer getId() {
  23 + return id;
  24 + }
  25 +
  26 + public void setId(Integer id) {
  27 + this.id = id;
  28 + }
  29 +
  30 + public String getName() {
  31 + return name;
  32 + }
  33 +
  34 + public void setName(String name) {
  35 + this.name = name;
  36 + }
  37 +
  38 + public String getUrl() {
  39 + return url;
  40 + }
  41 +
  42 + public void setUrl(String url) {
  43 + this.url = url;
  44 + }
  45 +
  46 + public String getRemark() {
  47 + return remark;
  48 + }
  49 +
  50 + public void setRemark(String remark) {
  51 + this.remark = remark;
  52 + }
  53 +}
... ...
src/main/java/com/bsth/redis/HRedisService.java 0 → 100644
  1 +package com.bsth.redis;
  2 +
  3 +import com.bsth.Application;
  4 +import com.bsth.entity.HInfo;
  5 +import com.bsth.redis.util.RedisUtils;
  6 +import com.bsth.repository.HInfoRepository;
  7 +import com.bsth.util.ConfigUtil;
  8 +import com.bsth.util.ConvertUtil;
  9 +import com.google.common.collect.ArrayListMultimap;
  10 +import org.joda.time.DateTime;
  11 +import org.slf4j.Logger;
  12 +import org.slf4j.LoggerFactory;
  13 +import org.springframework.beans.factory.annotation.Autowired;
  14 +import org.springframework.boot.CommandLineRunner;
  15 +import org.springframework.core.annotation.Order;
  16 +import org.springframework.data.redis.core.RedisTemplate;
  17 +import org.springframework.data.redis.serializer.StringRedisSerializer;
  18 +import org.springframework.stereotype.Component;
  19 +import org.springframework.stereotype.Service;
  20 +
  21 +import java.util.*;
  22 +import java.util.concurrent.TimeUnit;
  23 +
  24 +/**
  25 + * 油量数据Redis缓存
  26 + * Created by panzhao on 2017/3/19.
  27 + */
  28 +@Service
  29 +@Order(3)
  30 +public class HRedisService implements CommandLineRunner {
  31 +
  32 + @Autowired
  33 + private RedisTemplate redisTemplate;
  34 +
  35 + @Autowired
  36 + HInfoRepository hInfoRepository;
  37 +
  38 + @Autowired
  39 + RedisUtils redisUtils;
  40 +
  41 + static Logger logger = LoggerFactory.getLogger(HRedisService.class);
  42 +
  43 + private final static String REDIS_KEY_PREFIX = "hydrogen:";
  44 +
  45 + /**
  46 + * 将油量数据写入redis
  47 + *
  48 + * @param list
  49 + */
  50 + public void wirte(List<HInfo> list) {
  51 + ArrayListMultimap<String, HInfo> multimap;
  52 + try {
  53 + if (list.size() == 0)
  54 + return;
  55 + //按日期和线路分组数据
  56 + Class clazz = HInfo.class;
  57 + multimap = new ConvertUtil().groupMultiList(list, ":", clazz.getDeclaredField("nbbm"), clazz.getDeclaredField("rq"));
  58 +
  59 + //写入redis
  60 + Iterator<String> iterator = multimap.keySet().iterator();
  61 + String key;
  62 + while (iterator.hasNext()) {
  63 + key = iterator.next();
  64 + mergeData(key, multimap.get(key));
  65 + }
  66 + } catch (Exception e) {
  67 + logger.error("", e);
  68 + }
  69 + }
  70 +
  71 + /**
  72 + * 根据车辆和日期获取油耗数据,以 车辆_驾驶员 为key
  73 + *
  74 + * @param nbbmArray
  75 + * @param rq
  76 + * @return
  77 + */
  78 + public ArrayListMultimap findByNbbmGroup(Iterable<String> nbbmArray, String rq) {
  79 + ArrayListMultimap rs = ArrayListMultimap.create();
  80 +
  81 + rq = rq.replaceAll("-", "");
  82 + try {
  83 + List<HInfo> list = new ArrayList<>();
  84 + Set<String> nbbms = new HashSet<>();
  85 + for (String nbbm : nbbmArray) {
  86 + nbbm = nbbm.split("_")[1];
  87 + if (!nbbms.contains(nbbm)) {
  88 + nbbms.add(nbbm);
  89 + list.addAll(read(nbbm, rq));
  90 + }
  91 + }
  92 + Class clazz = HInfo.class;
  93 + rs = new ConvertUtil().groupMultiList(list, "_", clazz.getDeclaredField("nbbm"), clazz.getDeclaredField("jsy"));
  94 + } catch (Exception e) {
  95 + logger.error("", e);
  96 + }
  97 + return rs;
  98 + }
  99 +
  100 + /**
  101 + * 根据车辆和日期获取油耗数据,以 车辆 为key
  102 + *
  103 + * @param nbbmArray
  104 + * @param rq
  105 + * @return
  106 + */
  107 + public ArrayListMultimap findByNbbmGroup1(Iterable<String> nbbmArray, String rq) {
  108 + ArrayListMultimap rs = ArrayListMultimap.create();
  109 +
  110 + rq = rq.replaceAll("-", "");
  111 + try {
  112 + List<HInfo> list = new ArrayList<>();
  113 + Set<String> nbbms = new HashSet<>();
  114 + for (String nbbm : nbbmArray) {
  115 + if (!nbbms.contains(nbbm)) {
  116 + nbbms.add(nbbm);
  117 + list.addAll(read(nbbm, rq));
  118 + }
  119 + }
  120 + Class clazz = HInfo.class;
  121 + rs = new ConvertUtil().groupMultiList(list, "_", clazz.getDeclaredField("nbbm"));
  122 + } catch (Exception e) {
  123 + logger.error("", e);
  124 + }
  125 + return rs;
  126 + }
  127 +
  128 + public List<HInfo> read(String nbbm, String rq) {
  129 + return redisTemplate.opsForList().range(REDIS_KEY_PREFIX + nbbm + ":" + rq, 0, -1);
  130 + }
  131 +
  132 + /**
  133 + * 将 list 与redis里的数据合并
  134 + *
  135 + * @param key
  136 + * @param list
  137 + */
  138 + public void mergeData(String key, List<HInfo> list) {
  139 + key = REDIS_KEY_PREFIX + key;
  140 +
  141 + //更新 直接覆盖更新
  142 + redisTemplate.execute(redisUtils.getUpdateCallback(key, list));
  143 + }
  144 +
  145 + @Autowired
  146 + HRefreshThread hRefreshThread;
  147 +
  148 + @Override
  149 + public void run(String... strings) throws Exception {
  150 + Application.mainServices.schedule(new Runnable() {
  151 + @Override
  152 + public void run() {
  153 + //启动加载油耗缓存
  154 + synchData(null);
  155 + }
  156 + }, 30, TimeUnit.SECONDS);
  157 +
  158 +
  159 + //定时刷新油耗信息
  160 + Application.mainServices.scheduleWithFixedDelay(hRefreshThread, 60 * 40, 60 * 40, TimeUnit.SECONDS);
  161 + }
  162 +
  163 + /**
  164 + * 和数据库同步数据
  165 + */
  166 + public void synchData(Integer days) {
  167 + int cacheDays = Integer.parseInt(ConfigUtil.get("cache.days"));
  168 + if (null != days && days < cacheDays)
  169 + cacheDays = days;
  170 + //设置key 序列化器
  171 + redisTemplate.setKeySerializer(new StringRedisSerializer());
  172 +
  173 + DateTime dt = new DateTime();
  174 + dt = dt.withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0).minusDays(cacheDays);
  175 + List<HInfo> list = hInfoRepository.findByDateLT(dt.toDate());
  176 + //写入redis
  177 + wirte(list);
  178 + logger.info("刷新氢耗数据, days: " + cacheDays + " -size: " + list.size() + " -LT: " + dt.toString("yyyy-MM-dd"));
  179 + }
  180 +
  181 + @Component
  182 + public static class HRefreshThread extends Thread {
  183 +
  184 + @Autowired
  185 + HRedisService hRedisService;
  186 +
  187 + @Override
  188 + public void run() {
  189 + try {
  190 + hRedisService.synchData(5);
  191 + } catch (Exception e) {
  192 + logger.error("", e);
  193 + }
  194 + }
  195 + }
  196 +}
... ...
src/main/java/com/bsth/redis/PlanScheduleRedisService.java
1   -package com.bsth.redis;
2   -
3   -import com.bsth.Application;
4   -import com.bsth.entity.SchedulePlanInfo;
5   -import com.bsth.redis.util.DateUtils;
6   -import com.bsth.redis.util.RedisUtils;
7   -import com.bsth.repository.SchedulePlanInfoRepository;
8   -import com.bsth.server_rs.base_info.line.Line;
9   -import com.bsth.server_rs.base_info.line.buffer.LineBufferData;
10   -import com.bsth.util.ConfigUtil;
11   -import com.bsth.util.ConvertUtil;
12   -import com.google.common.collect.ArrayListMultimap;
13   -import org.joda.time.DateTime;
14   -import org.slf4j.Logger;
15   -import org.slf4j.LoggerFactory;
16   -import org.springframework.beans.factory.annotation.Autowired;
17   -import org.springframework.boot.CommandLineRunner;
18   -import org.springframework.core.annotation.Order;
19   -import org.springframework.data.redis.core.ListOperations;
20   -import org.springframework.data.redis.core.RedisTemplate;
21   -import org.springframework.data.redis.serializer.StringRedisSerializer;
22   -import org.springframework.stereotype.Component;
23   -import org.springframework.stereotype.Service;
24   -
25   -import java.util.ArrayList;
26   -import java.util.Date;
27   -import java.util.Iterator;
28   -import java.util.List;
29   -import java.util.concurrent.TimeUnit;
30   -
31   -/**
32   - * 计调的 计划排班redis缓存
33   - * Created by panzhao on 2017/3/27.
34   - */
35   -@Service
36   -@Order(6)
37   -public class PlanScheduleRedisService implements CommandLineRunner {
38   -
39   - @Autowired
40   - private RedisTemplate redisTemplate;
41   -
42   - @Autowired
43   - SchedulePlanInfoRepository planInfoRepository;
44   -
45   - @Autowired
46   - RedisUtils redisUtils;
47   -
48   - static Logger logger = LoggerFactory.getLogger(PlanScheduleRedisService.class);
49   -
50   - private final static String REDIS_KEY_PREFIX = "plan:";
51   -
52   - /**
53   - * 将一批计划写入redis
54   - *
55   - * @param list
56   - */
57   - public void wirte(List<SchedulePlanInfo> list) {
58   - ArrayListMultimap<String, SchedulePlanInfo> multimap;
59   - try {
60   - if (list.size() == 0)
61   - return;
62   - //按日期和线路分组数据
63   - Class clazz = SchedulePlanInfo.class;
64   - multimap = new ConvertUtil().groupMultiList(list, ":", clazz.getDeclaredField("xlBm"), clazz.getDeclaredField("scheduleDate"));
65   -
66   - //写入redis
67   - Iterator<String> iterator = multimap.keySet().iterator();
68   - String key;
69   - while (iterator.hasNext()) {
70   - key = iterator.next();
71   - replace(key, multimap.get(key));
72   - }
73   - } catch (Exception e) {
74   - logger.error("", e);
75   - }
76   - }
77   -
78   - /**
79   - * 将 list 与redis里的数据合并
80   - *
81   - * @param key
82   - * @param list
83   - */
84   - public void mergeData(String key, List<SchedulePlanInfo> list) {
85   - key = REDIS_KEY_PREFIX + key.replaceAll("-", "");
86   -
87   - ListOperations<String, SchedulePlanInfo> ops = redisTemplate.opsForList();
88   - List<SchedulePlanInfo> cacheList = ops.range(key, 0, -1);
89   -
90   - for (SchedulePlanInfo plan : cacheList) {
91   - if (!list.contains(plan))
92   - list.add(plan);
93   - }
94   -
95   - //更新
96   - redisTemplate.execute(redisUtils.getUpdateCallback(key, list));
97   - }
98   -
99   - /**
100   - * 覆盖数据
101   - *
102   - * @param key
103   - * @param list
104   - */
105   - public void replace(String key, List<SchedulePlanInfo> list) {
106   - key = REDIS_KEY_PREFIX + key.replaceAll("-", "");
107   - redisTemplate.execute(redisUtils.getUpdateCallback(key, list));
108   - }
109   -
110   - /**
111   - * 根据日期和线路编码从redis获取计划
112   - *
113   - * @param dateStr
114   - * @param lineCode
115   - * @return
116   - */
117   - public List<SchedulePlanInfo> read(String dateStr, String lineCode) {
118   - return redisTemplate.opsForList().range(REDIS_KEY_PREFIX + lineCode + ":" + dateStr, 0, -1);
119   - }
120   -
121   -
122   - @Autowired
123   - PlanClearThread planClearThread;
124   -
125   - @Override
126   - public void run(String... strings) throws Exception {
127   - Application.mainServices.schedule(new Runnable() {
128   - @Override
129   - public void run() {
130   - int cacheDays = Integer.parseInt(ConfigUtil.get("cache.days"));
131   - //设置key 序列化器
132   - redisTemplate.setKeySerializer(new StringRedisSerializer());
133   -
134   - DateTime dt = new DateTime();
135   - dt = dt.minusDays(cacheDays);
136   - dt = dt.withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0).minusDays(cacheDays);
137   - List<SchedulePlanInfo> list = planInfoRepository.findByDateRange(dt.toDate(), new Date());
138   - //写入redis
139   - wirte(list);
140   - }
141   - }, 60 * 5, TimeUnit.SECONDS);
142   -
143   -
144   - //定时 00:05 分清理计划,并加载当天的计划
145   - long diff = (DateUtils.getTimestamp() + 1000 * 60 * 5) - System.currentTimeMillis();
146   - if (diff < 0)
147   - diff += (1000 * 60 * 60 * 24);
148   - Application.mainServices.scheduleAtFixedRate(planClearThread, diff / 1000, 60 * 60 * 24, TimeUnit.SECONDS);
149   - }
150   -
151   - public List<SchedulePlanInfo> findByMultiLine(List<String> lineArray, String rq) {
152   - rq = rq.replaceAll("-", "");
153   - List<SchedulePlanInfo> rs = new ArrayList<>();
154   - for (String lineCode : lineArray) {
155   - rs.addAll(read(rq, lineCode));
156   - }
157   - return rs;
158   - }
159   -
160   - @Component
161   - public static class PlanClearThread extends Thread {
162   -
163   - @Autowired
164   - PlanScheduleRedisService planRedisService;
165   - @Autowired
166   - SchedulePlanInfoRepository planInfoRepository;
167   -
168   - @Override
169   - public void run() {
170   - try {
171   - logger.info("redis -清理计划排班");
172   -
173   - int cacheDays = Integer.parseInt(ConfigUtil.get("cache.days"));
174   - DateTime dt = new DateTime();
175   - dt = dt.minusDays(cacheDays);
176   - String rq = dt.toString("yyyy-MM-dd");
177   -
178   - List<Line> lines = LineBufferData.findAll();
179   - for (Line line : lines) {
180   - planRedisService.delete(line.getLineCode(), rq);
181   - }
182   -
183   - //加载当天的计划
184   - Date d = new Date();
185   - Date s = new Date(d.getTime() - 1000 * 60 * 60 * 24);
186   - List<SchedulePlanInfo> list = planInfoRepository.findByDateRange(s, d);
187   - //写入redis
188   - planRedisService.wirte(list);
189   - } catch (Exception e) {
190   - logger.error("", e);
191   - }
192   - }
193   - }
194   -
195   - private void delete(String lineCode, String rq) {
196   - String key = REDIS_KEY_PREFIX + (lineCode + ":" + rq).replaceAll("-", "");
197   - redisTemplate.delete(key);
198   - }
199   -}
  1 +package com.bsth.redis;
  2 +
  3 +import com.bsth.Application;
  4 +import com.bsth.entity.SchedulePlanInfo;
  5 +import com.bsth.redis.util.DateUtils;
  6 +import com.bsth.redis.util.RedisUtils;
  7 +import com.bsth.repository.SchedulePlanInfoRepository;
  8 +import com.bsth.server_rs.base_info.line.Line;
  9 +import com.bsth.server_rs.base_info.line.buffer.LineBufferData;
  10 +import com.bsth.util.ConfigUtil;
  11 +import com.bsth.util.ConvertUtil;
  12 +import com.google.common.collect.ArrayListMultimap;
  13 +import org.joda.time.DateTime;
  14 +import org.slf4j.Logger;
  15 +import org.slf4j.LoggerFactory;
  16 +import org.springframework.beans.factory.annotation.Autowired;
  17 +import org.springframework.boot.CommandLineRunner;
  18 +import org.springframework.core.annotation.Order;
  19 +import org.springframework.data.redis.core.ListOperations;
  20 +import org.springframework.data.redis.core.RedisTemplate;
  21 +import org.springframework.data.redis.serializer.StringRedisSerializer;
  22 +import org.springframework.stereotype.Component;
  23 +import org.springframework.stereotype.Service;
  24 +
  25 +import java.util.ArrayList;
  26 +import java.util.Date;
  27 +import java.util.Iterator;
  28 +import java.util.List;
  29 +import java.util.concurrent.TimeUnit;
  30 +
  31 +/**
  32 + * 计调的 计划排班redis缓存
  33 + * Created by panzhao on 2017/3/27.
  34 + */
  35 +@Service
  36 +@Order(6)
  37 +public class PlanScheduleRedisService implements CommandLineRunner {
  38 +
  39 + @Autowired
  40 + private RedisTemplate redisTemplate;
  41 +
  42 + @Autowired
  43 + SchedulePlanInfoRepository planInfoRepository;
  44 +
  45 + @Autowired
  46 + RedisUtils redisUtils;
  47 +
  48 + static Logger logger = LoggerFactory.getLogger(PlanScheduleRedisService.class);
  49 +
  50 + private final static String REDIS_KEY_PREFIX = "plan:";
  51 +
  52 + /**
  53 + * 将一批计划写入redis
  54 + *
  55 + * @param list
  56 + */
  57 + public void wirte(List<SchedulePlanInfo> list) {
  58 + ArrayListMultimap<String, SchedulePlanInfo> multimap;
  59 + try {
  60 + if (list.size() == 0)
  61 + return;
  62 + //按日期和线路分组数据
  63 + Class clazz = SchedulePlanInfo.class;
  64 + multimap = new ConvertUtil().groupMultiList(list, ":", clazz.getDeclaredField("xlBm"), clazz.getDeclaredField("scheduleDate"));
  65 +
  66 + //写入redis
  67 + Iterator<String> iterator = multimap.keySet().iterator();
  68 + String key;
  69 + while (iterator.hasNext()) {
  70 + key = iterator.next();
  71 + replace(key, multimap.get(key));
  72 + }
  73 + } catch (Exception e) {
  74 + logger.error("", e);
  75 + }
  76 + }
  77 +
  78 + /**
  79 + * 将 list 与redis里的数据合并
  80 + *
  81 + * @param key
  82 + * @param list
  83 + */
  84 + public void mergeData(String key, List<SchedulePlanInfo> list) {
  85 + key = REDIS_KEY_PREFIX + key.replaceAll("-", "");
  86 +
  87 + ListOperations<String, SchedulePlanInfo> ops = redisTemplate.opsForList();
  88 + List<SchedulePlanInfo> cacheList = ops.range(key, 0, -1);
  89 +
  90 + for (SchedulePlanInfo plan : cacheList) {
  91 + if (!list.contains(plan))
  92 + list.add(plan);
  93 + }
  94 +
  95 + //更新
  96 + redisTemplate.execute(redisUtils.getUpdateCallback(key, list));
  97 + }
  98 +
  99 + /**
  100 + * 覆盖数据
  101 + *
  102 + * @param key
  103 + * @param list
  104 + */
  105 + public void replace(String key, List<SchedulePlanInfo> list) {
  106 + key = REDIS_KEY_PREFIX + key.replaceAll("-", "");
  107 + redisTemplate.execute(redisUtils.getUpdateCallback(key, list));
  108 + }
  109 +
  110 + /**
  111 + * 根据日期和线路编码从redis获取计划
  112 + *
  113 + * @param dateStr
  114 + * @param lineCode
  115 + * @return
  116 + */
  117 + public List<SchedulePlanInfo> read(String dateStr, String lineCode) {
  118 + return redisTemplate.opsForList().range(REDIS_KEY_PREFIX + lineCode + ":" + dateStr, 0, -1);
  119 + }
  120 +
  121 +
  122 + @Autowired
  123 + PlanClearThread planClearThread;
  124 +
  125 + @Override
  126 + public void run(String... strings) throws Exception {
  127 + Application.mainServices.schedule(new Runnable() {
  128 + @Override
  129 + public void run() {
  130 + int cacheDays = Integer.parseInt(ConfigUtil.get("cache.days"));
  131 + //设置key 序列化器
  132 + redisTemplate.setKeySerializer(new StringRedisSerializer());
  133 +
  134 + DateTime dt = new DateTime();
  135 + dt = dt.withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0);
  136 + List<SchedulePlanInfo> list = planInfoRepository.findByDateRange(dt.minusDays(cacheDays).toDate(), dt.plusDays(1).toDate());
  137 + //写入redis
  138 + wirte(list);
  139 + }
  140 + }, 20, TimeUnit.SECONDS);
  141 +
  142 +
  143 + //定时 00:05 分清理计划,并加载当天的计划
  144 + long diff = (DateUtils.getTimestamp() + 1000 * 60 * 5) - System.currentTimeMillis();
  145 + if (diff < 0)
  146 + diff += (1000 * 60 * 60 * 24);
  147 + Application.mainServices.scheduleAtFixedRate(planClearThread, diff / 1000, 60 * 60 * 24, TimeUnit.SECONDS);
  148 + }
  149 +
  150 + public List<SchedulePlanInfo> findByMultiLine(List<String> lineArray, String rq) {
  151 + rq = rq.replaceAll("-", "");
  152 + List<SchedulePlanInfo> rs = new ArrayList<>();
  153 + for (String lineCode : lineArray) {
  154 + rs.addAll(read(rq, lineCode));
  155 + }
  156 + return rs;
  157 + }
  158 +
  159 + @Component
  160 + public static class PlanClearThread extends Thread {
  161 +
  162 + @Autowired
  163 + PlanScheduleRedisService planRedisService;
  164 + @Autowired
  165 + SchedulePlanInfoRepository planInfoRepository;
  166 +
  167 + @Override
  168 + public void run() {
  169 + try {
  170 + logger.info("redis -清理计划排班");
  171 +
  172 + int cacheDays = Integer.parseInt(ConfigUtil.get("cache.days"));
  173 + DateTime dt = new DateTime();
  174 + dt = dt.minusDays(cacheDays);
  175 + String rq = dt.toString("yyyy-MM-dd");
  176 +
  177 + List<Line> lines = LineBufferData.findAll();
  178 + for (Line line : lines) {
  179 + planRedisService.delete(line.getLineCode(), rq);
  180 + }
  181 +
  182 + //加载明天的计划
  183 + DateTime d = new DateTime();
  184 + d.withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0);
  185 + List<SchedulePlanInfo> list = planInfoRepository.findByDateRange(d.toDate(), d.plusDays(1).toDate());
  186 + //写入redis
  187 + planRedisService.wirte(list);
  188 + } catch (Exception e) {
  189 + logger.error("", e);
  190 + }
  191 + }
  192 + }
  193 +
  194 + private void delete(String lineCode, String rq) {
  195 + String key = REDIS_KEY_PREFIX + (lineCode + ":" + rq).replaceAll("-", "");
  196 + redisTemplate.delete(key);
  197 + }
  198 +}
... ...
src/main/java/com/bsth/repository/HInfoRepository.java 0 → 100644
  1 +package com.bsth.repository;
  2 +
  3 +import com.bsth.entity.HInfo;
  4 +
  5 +import org.springframework.data.jpa.repository.Query;
  6 +import org.springframework.data.repository.PagingAndSortingRepository;
  7 +import org.springframework.stereotype.Repository;
  8 +
  9 +import java.util.Date;
  10 +import java.util.List;
  11 +
  12 +@Repository
  13 +public interface HInfoRepository extends PagingAndSortingRepository<HInfo, Long> {
  14 +
  15 +
  16 + @Query("select h from HInfo h where h.rq>?1")
  17 + List<HInfo> findByDateLT(Date rq);
  18 +}
... ...
src/main/java/com/bsth/server_rs/AuthorizeInterceptor_IN.java
1 1 package com.bsth.server_rs;
2 2  
3 3 import com.bsth.common.SystemParamKeys;
  4 +import com.bsth.entity.PasswordUser;
  5 +import com.bsth.entity.Resource;
4 6 import com.bsth.server_rs.exception.AesException;
5 7 import com.bsth.service.SystemParamService;
6 8 import com.bsth.service.UserService;
... ... @@ -18,6 +20,8 @@ import org.springframework.beans.factory.InitializingBean;
18 20 import org.springframework.context.ApplicationContext;
19 21 import org.springframework.context.ApplicationContextAware;
20 22 import org.springframework.stereotype.Component;
  23 +import org.springframework.util.AntPathMatcher;
  24 +import org.springframework.util.PathMatcher;
21 25  
22 26 import java.security.MessageDigest;
23 27 import java.util.Arrays;
... ... @@ -45,6 +49,8 @@ public class AuthorizeInterceptor_IN extends AbstractPhaseInterceptor&lt;Message&gt; i
45 49  
46 50 static Logger logger = LoggerFactory.getLogger(AuthorizeInterceptor_IN.class);
47 51  
  52 + private static PathMatcher matcher = new AntPathMatcher();
  53 +
48 54 public AuthorizeInterceptor_IN() {
49 55 super(Phase.RECEIVE);
50 56 }
... ... @@ -121,10 +127,17 @@ public class AuthorizeInterceptor_IN extends AbstractPhaseInterceptor&lt;Message&gt; i
121 127 }
122 128  
123 129 private static void validate(Map<String, String> map, Message message) {
124   - String limitPasswords = systemParamService.getValue(SystemParamKeys.LIMIT_PASSWORDS);
125   - String limitUris = systemParamService.getValue(SystemParamKeys.LIMIT_URIS);
126   - if (limitPasswords != null && limitPasswords.indexOf(String.format("%s,", map.get(PASSWORD))) > -1) {
127   - if (limitUris != null && limitUris.indexOf(String.format("%s,", message.get(Message.REQUEST_URI))) == -1) {
  130 + PasswordUser user = userService.get(map.get(PASSWORD));
  131 + if (user.getResources().size() > 0) {
  132 + boolean isMatch = false;
  133 + String uri = (String) message.get(Message.REQUEST_URI);
  134 + for (Resource resource : user.getResources()) {
  135 + if (matcher.match(resource.getUrl(), uri)) {
  136 + isMatch = true;
  137 + break;
  138 + }
  139 + }
  140 + if (!isMatch) {
128 141 throw new AesException(AesException.INVALID_URI);
129 142 }
130 143 }
... ...
src/main/java/com/bsth/server_rs/base_info/section/buffer/LD_SectionBufferData.java
1   -package com.bsth.server_rs.base_info.section.buffer;
2   -
3   -import com.bsth.Application;
4   -import com.bsth.server_rs.base_info.line.Line;
5   -import com.bsth.server_rs.base_info.line.buffer.LineBufferData;
6   -import com.bsth.server_rs.base_info.section.entity.LD_Section;
7   -import com.bsth.server_rs.base_info.section.entity.LD_SectionRoute;
8   -import com.bsth.server_rs.base_info.section.entity.RoadSpeed;
9   -import com.google.common.collect.ArrayListMultimap;
10   -import org.slf4j.Logger;
11   -import org.slf4j.LoggerFactory;
12   -import org.springframework.beans.factory.annotation.Autowired;
13   -import org.springframework.boot.CommandLineRunner;
14   -import org.springframework.core.annotation.Order;
15   -import org.springframework.jdbc.core.JdbcTemplate;
16   -import org.springframework.stereotype.Component;
17   -
18   -import java.util.*;
19   -import java.util.concurrent.ConcurrentHashMap;
20   -import java.util.concurrent.TimeUnit;
21   -
22   -/**
23   - * 站点数据缓存(自更新)
24   - * Created by panzhao on 2017/3/27.
25   - */
26   -@Component
27   -@Order(6)
28   -public class LD_SectionBufferData implements CommandLineRunner {
29   -
30   -
31   - private static List<LD_Section> data;
32   - private static Map<String, LD_Section> codeMap;
33   -
34   - /**
35   - * 线路名称和路段集合映射
36   - */
37   - private static Map<String, List<LD_SectionRoute>> name2sections = new ConcurrentHashMap<>();
38   -
39   - //路段限速缓存信息
40   - private static List<RoadSpeed> roadSpeedList;
41   -
42   - @Autowired
43   - JdbcTemplate jdbcTemplate;
44   -
45   - @Autowired
46   - LD_SectionRefreshThread ld_sectionRefreshThread;
47   -
48   - Logger logger = LoggerFactory.getLogger(this.getClass());
49   -
50   - /**
51   - 路由缓存
52   - 线路编码_上下行 ——> 路由集合
53   - */
54   - private static ArrayListMultimap<String, LD_SectionRoute> routeListMap;
55   -
56   -
57   - public static List<LD_Section> findAll(){
58   - return data;
59   - }
60   -
61   - public static Map<String, Collection<LD_SectionRoute>> findAllRoute(){
62   - return routeListMap.asMap();
63   - }
64   -
65   - public static LD_Section findOne(String code){
66   - return codeMap.get(code);
67   - }
68   -
69   - public static void replaceAll(List<LD_Section> newData){
70   - data = newData;
71   - Map<String, LD_Section> codeMapCopy = new HashMap<>();
72   - for(LD_Section section : data){
73   - codeMapCopy.put(section.getSectionCode(), section);
74   - }
75   -
76   - codeMap = codeMapCopy;
77   - }
78   -
79   - public static void putRoadSpeeds(List<RoadSpeed> list){
80   - roadSpeedList = list;
81   - }
82   -
83   - public static void replaceRoutes(List<LD_SectionRoute> list){
84   - Collections.sort(list, new Comparator<LD_SectionRoute>() {
85   - @Override
86   - public int compare(LD_SectionRoute o1, LD_SectionRoute o2) {
87   - return o1.getSectionrouteCode().compareTo(o2.getSectionrouteCode());
88   - }
89   - });
90   -
91   - ArrayListMultimap<String, LD_SectionRoute> routeListMapCopy = ArrayListMultimap.create();
92   - for(LD_SectionRoute sr : list){
93   - routeListMapCopy.put(sr.getLineCode()+"_" + sr.getDirections(), sr);
94   - }
95   -
96   - routeListMap = routeListMapCopy;
97   - }
98   -
99   - @Override
100   - public void run(String... strings) throws Exception {
101   - Application.mainServices.scheduleWithFixedDelay(ld_sectionRefreshThread, 10, 60 * 60, TimeUnit.SECONDS);
102   - }
103   -
104   - public Map<String, Collection<LD_SectionRoute>> findRouteByCompany(String company) {
105   - List<Line> lines = LineBufferData.findByCompany(company);
106   -
107   - ArrayListMultimap<String, LD_SectionRoute> listMap = ArrayListMultimap.create();
108   -
109   -
110   - Set<String> ks = routeListMap.keySet();
111   -
112   - for(String k : ks){
113   - if(include(lines, k)){
114   - listMap.putAll(k, routeListMap.get(k));
115   - }
116   - }
117   - return listMap.asMap();
118   - }
119   -
120   - private static boolean include(List<Line> lines, String k){
121   -
122   - for(Line line : lines){
123   - if(k.startsWith(line.getLineCode() + "_"))
124   - return true;
125   - }
126   - return false;
127   - }
128   -
129   - public List<RoadSpeed> roadSpeedList(String company) {
130   - return roadSpeedList;
131   - }
132   -
133   - public Map<String, Collection<LD_SectionRoute>> findByLineCode(String lineCode) {
134   -
135   - ArrayListMultimap<String, LD_SectionRoute> listMap = ArrayListMultimap.create();
136   -
137   - String k1 = lineCode + "_0";
138   - String k2 = lineCode + "_1";
139   -
140   - listMap.putAll(k1, routeListMap.get(k1));
141   - listMap.putAll(k2, routeListMap.get(k2));
142   - return listMap.asMap();
143   - }
144   -
145   - public static void putLastedRoute(Map<String, List<LD_SectionRoute>> map) {
146   - name2sections = map;
147   - }
148   -
149   - public List<LD_SectionRoute> findByLineName(String lineName) {
150   - return name2sections.get(lineName);
151   - }
152   -}
  1 +package com.bsth.server_rs.base_info.section.buffer;
  2 +
  3 +import com.bsth.Application;
  4 +import com.bsth.server_rs.base_info.line.Line;
  5 +import com.bsth.server_rs.base_info.line.buffer.LineBufferData;
  6 +import com.bsth.server_rs.base_info.section.entity.LD_Section;
  7 +import com.bsth.server_rs.base_info.section.entity.LD_SectionRoute;
  8 +import com.bsth.server_rs.base_info.section.entity.RoadSpeed;
  9 +import com.google.common.collect.ArrayListMultimap;
  10 +import org.slf4j.Logger;
  11 +import org.slf4j.LoggerFactory;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.boot.CommandLineRunner;
  14 +import org.springframework.core.annotation.Order;
  15 +import org.springframework.jdbc.core.JdbcTemplate;
  16 +import org.springframework.stereotype.Component;
  17 +
  18 +import java.util.*;
  19 +import java.util.concurrent.ConcurrentHashMap;
  20 +import java.util.concurrent.TimeUnit;
  21 +
  22 +/**
  23 + * 站点数据缓存(自更新)
  24 + * Created by panzhao on 2017/3/27.
  25 + */
  26 +@Component
  27 +@Order(6)
  28 +public class LD_SectionBufferData implements CommandLineRunner {
  29 +
  30 +
  31 + private static List<LD_Section> data;
  32 + private static Map<String, LD_Section> codeMap;
  33 +
  34 + /**
  35 + * 线路名称和路段集合映射
  36 + */
  37 + private static Map<String, List<LD_SectionRoute>> name2sections = new ConcurrentHashMap<>();
  38 +
  39 + //路段限速缓存信息
  40 + private static List<RoadSpeed> roadSpeedList = new ArrayList<>();
  41 +
  42 + @Autowired
  43 + JdbcTemplate jdbcTemplate;
  44 +
  45 + @Autowired
  46 + LD_SectionRefreshThread ld_sectionRefreshThread;
  47 +
  48 + Logger logger = LoggerFactory.getLogger(this.getClass());
  49 +
  50 + /**
  51 + 路由缓存
  52 + 线路编码_上下行 ——> 路由集合
  53 + */
  54 + private static ArrayListMultimap<String, LD_SectionRoute> routeListMap;
  55 +
  56 +
  57 + public static List<LD_Section> findAll(){
  58 + return data;
  59 + }
  60 +
  61 + public static Map<String, Collection<LD_SectionRoute>> findAllRoute(){
  62 + return routeListMap.asMap();
  63 + }
  64 +
  65 + public static LD_Section findOne(String code){
  66 + return codeMap.get(code);
  67 + }
  68 +
  69 + public static void replaceAll(List<LD_Section> newData){
  70 + data = newData;
  71 + Map<String, LD_Section> codeMapCopy = new HashMap<>();
  72 + for(LD_Section section : data){
  73 + codeMapCopy.put(section.getSectionCode(), section);
  74 + }
  75 +
  76 + codeMap = codeMapCopy;
  77 + }
  78 +
  79 + public static void putRoadSpeeds(List<RoadSpeed> list){
  80 + roadSpeedList = list;
  81 + }
  82 +
  83 + public static void replaceRoutes(List<LD_SectionRoute> list){
  84 + Collections.sort(list, new Comparator<LD_SectionRoute>() {
  85 + @Override
  86 + public int compare(LD_SectionRoute o1, LD_SectionRoute o2) {
  87 + return o1.getSectionrouteCode().compareTo(o2.getSectionrouteCode());
  88 + }
  89 + });
  90 +
  91 + ArrayListMultimap<String, LD_SectionRoute> routeListMapCopy = ArrayListMultimap.create();
  92 + for(LD_SectionRoute sr : list){
  93 + routeListMapCopy.put(sr.getLineCode()+"_" + sr.getDirections(), sr);
  94 + }
  95 +
  96 + routeListMap = routeListMapCopy;
  97 + }
  98 +
  99 + @Override
  100 + public void run(String... strings) throws Exception {
  101 + Application.mainServices.scheduleWithFixedDelay(ld_sectionRefreshThread, 10, 60 * 60, TimeUnit.SECONDS);
  102 + }
  103 +
  104 + public Map<String, Collection<LD_SectionRoute>> findRouteByCompany(String company) {
  105 + List<Line> lines = LineBufferData.findByCompany(company);
  106 +
  107 + ArrayListMultimap<String, LD_SectionRoute> listMap = ArrayListMultimap.create();
  108 +
  109 +
  110 + Set<String> ks = routeListMap.keySet();
  111 +
  112 + for(String k : ks){
  113 + if(include(lines, k)){
  114 + listMap.putAll(k, routeListMap.get(k));
  115 + }
  116 + }
  117 + return listMap.asMap();
  118 + }
  119 +
  120 + private static boolean include(List<Line> lines, String k){
  121 +
  122 + for(Line line : lines){
  123 + if(k.startsWith(line.getLineCode() + "_"))
  124 + return true;
  125 + }
  126 + return false;
  127 + }
  128 +
  129 + public List<RoadSpeed> roadSpeedList(String company) {
  130 + return roadSpeedList;
  131 + }
  132 +
  133 + public Map<String, Collection<LD_SectionRoute>> findByLineCode(String lineCode) {
  134 +
  135 + ArrayListMultimap<String, LD_SectionRoute> listMap = ArrayListMultimap.create();
  136 +
  137 + String k1 = lineCode + "_0";
  138 + String k2 = lineCode + "_1";
  139 +
  140 + listMap.putAll(k1, routeListMap.get(k1));
  141 + listMap.putAll(k2, routeListMap.get(k2));
  142 + return listMap.asMap();
  143 + }
  144 +
  145 + public static void putLastedRoute(Map<String, List<LD_SectionRoute>> map) {
  146 + name2sections = map;
  147 + }
  148 +
  149 + public List<LD_SectionRoute> findByLineName(String lineName) {
  150 + return name2sections.get(lineName);
  151 + }
  152 +}
... ...
src/main/java/com/bsth/server_rs/base_info/section/buffer/LD_SectionRefreshThread.java
1   -package com.bsth.server_rs.base_info.section.buffer;
2   -
3   -import com.bsth.server_rs.base_info.section.entity.LD_Section;
4   -import com.bsth.server_rs.base_info.section.entity.LD_SectionRoute;
5   -import com.bsth.server_rs.base_info.section.entity.RoadSpeed;
6   -import org.slf4j.Logger;
7   -import org.slf4j.LoggerFactory;
8   -import org.springframework.beans.factory.annotation.Autowired;
9   -import org.springframework.jdbc.core.BeanPropertyRowMapper;
10   -import org.springframework.jdbc.core.JdbcTemplate;
11   -import org.springframework.stereotype.Component;
12   -
13   -import java.util.ArrayList;
14   -import java.util.HashMap;
15   -import java.util.List;
16   -import java.util.Map;
17   -
18   -/**
19   - * Created by panzhao on 2017/3/27.
20   - */
21   -@Component
22   -public class LD_SectionRefreshThread extends Thread{
23   -
24   - @Autowired
25   - JdbcTemplate jdbcTemplate;
26   -
27   - Logger logger = LoggerFactory.getLogger(this.getClass());
28   -
29   - @Override
30   - public void run() {
31   -
32   - try {
33   -
34   - //路段信息
35   - List<LD_Section> sectionList = jdbcTemplate.query("select section_code,section_name,section_type,ST_AsText(gsection_vector) as gsection_vector,ST_AsText(bsection_vector) as bsection_vector,croses_road,versions from bsth_c_section ",
36   - BeanPropertyRowMapper.newInstance(LD_Section.class));
37   -
38   - if(sectionList == null || sectionList.size() == 0)
39   - return;
40   -
41   - LD_SectionBufferData.replaceAll(sectionList);
42   -
43   - //路段路由信息
44   - List<LD_SectionRoute> routeList = jdbcTemplate.query("select line_code,section_code,directions,sectionroute_code,versions from bsth_c_sectionroute where destroy=0",
45   - BeanPropertyRowMapper.newInstance(LD_SectionRoute.class));
46   -
47   - for(LD_SectionRoute sr : routeList){
48   - sr.setSection(LD_SectionBufferData.findOne(sr.getSectionCode()));
49   - }
50   -
51   - LD_SectionBufferData.replaceRoutes(routeList);
52   -
53   - //查询路段限速信息
54   - List<RoadSpeed> roadSpeedList = jdbcTemplate.query("select id,name,ST_AsText(g_road_vector) as g_road_vector,speed,speed_start_date,speed_end_date,line,is_start,create_date,update_date from bsth_c_road_speed where is_start=0", BeanPropertyRowMapper.newInstance(RoadSpeed.class));
55   - if(roadSpeedList.size() > 0)
56   - LD_SectionBufferData.putRoadSpeeds(roadSpeedList);
57   -
58   - //查询最新版本路段信息
59   - List<LD_SectionRoute> sectionRoutes = jdbcTemplate.query("select b.line_name,a.line_code,a.section_code,a.directions,a.sectionroute_code,a.versions from (select l.name line_name,l.line_code line_code,max(versions) versions from bsth_c_line l left join bsth_c_line_versions v on l.line_code = v.line_code where l.destroy = 0 group by l.name,l.line_code) b left join bsth_c_ls_sectionroute a on a.line_code = b.line_code and a.versions = b.versions where a.destroy = 0 order by a.line_code,a.directions,a.sectionroute_code", BeanPropertyRowMapper.newInstance(LD_SectionRoute.class));
60   - Map<String, List<LD_SectionRoute>> name2sections = new HashMap<>();
61   - List<LD_SectionRoute> routes = null;
62   - String lastedLineName = "";
63   - for (LD_SectionRoute sr : sectionRoutes) {
64   - if ("".equals(lastedLineName) || !lastedLineName.equals(sr.getLineName())) {
65   - name2sections.put(lastedLineName, routes);
66   - lastedLineName = sr.getLineName();
67   - routes = new ArrayList<>();
68   - }
69   - sr.setSection(LD_SectionBufferData.findOne(sr.getSectionCode()));
70   - routes.add(sr);
71   - }
72   - LD_SectionBufferData.putLastedRoute(name2sections);
73   - }catch (Exception e){
74   - logger.error("", e);
75   - }
76   - }
77   -}
  1 +package com.bsth.server_rs.base_info.section.buffer;
  2 +
  3 +import com.bsth.server_rs.base_info.section.entity.LD_Section;
  4 +import com.bsth.server_rs.base_info.section.entity.LD_SectionRoute;
  5 +import com.bsth.server_rs.base_info.section.entity.RoadSpeed;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  10 +import org.springframework.jdbc.core.JdbcTemplate;
  11 +import org.springframework.stereotype.Component;
  12 +
  13 +import java.util.ArrayList;
  14 +import java.util.HashMap;
  15 +import java.util.List;
  16 +import java.util.Map;
  17 +
  18 +/**
  19 + * Created by panzhao on 2017/3/27.
  20 + */
  21 +@Component
  22 +public class LD_SectionRefreshThread extends Thread{
  23 +
  24 + @Autowired
  25 + JdbcTemplate jdbcTemplate;
  26 +
  27 + Logger logger = LoggerFactory.getLogger(this.getClass());
  28 +
  29 + @Override
  30 + public void run() {
  31 +
  32 + try {
  33 +
  34 + //路段信息
  35 + List<LD_Section> sectionList = jdbcTemplate.query("select section_code,section_name,section_type,ST_AsText(gsection_vector) as gsection_vector,ST_AsText(bsection_vector) as bsection_vector,croses_road,versions from bsth_c_section ",
  36 + BeanPropertyRowMapper.newInstance(LD_Section.class));
  37 +
  38 + if(sectionList == null || sectionList.size() == 0)
  39 + return;
  40 +
  41 + LD_SectionBufferData.replaceAll(sectionList);
  42 +
  43 + //路段路由信息
  44 + List<LD_SectionRoute> routeList = jdbcTemplate.query("select line_code,section_code,directions,sectionroute_code,versions from bsth_c_sectionroute where destroy=0",
  45 + BeanPropertyRowMapper.newInstance(LD_SectionRoute.class));
  46 +
  47 + for(LD_SectionRoute sr : routeList){
  48 + sr.setSection(LD_SectionBufferData.findOne(sr.getSectionCode()));
  49 + }
  50 +
  51 + LD_SectionBufferData.replaceRoutes(routeList);
  52 +
  53 + //查询路段限速信息
  54 + //List<RoadSpeed> roadSpeedList = jdbcTemplate.query("select id,name,ST_AsText(g_road_vector) as g_road_vector,speed,speed_start_date,speed_end_date,line,is_start,create_date,update_date from bsth_c_road_speed where is_start=0", BeanPropertyRowMapper.newInstance(RoadSpeed.class));
  55 + //if(roadSpeedList.size() > 0)
  56 + // LD_SectionBufferData.putRoadSpeeds(roadSpeedList);
  57 +
  58 + //查询最新版本路段信息
  59 + List<LD_SectionRoute> sectionRoutes = jdbcTemplate.query("select b.line_name,a.line_code,a.section_code,a.directions,a.sectionroute_code,a.versions from (select l.name line_name,l.line_code line_code,max(versions) versions from bsth_c_line l left join bsth_c_line_versions v on l.line_code = v.line_code where l.destroy = 0 group by l.name,l.line_code) b left join bsth_c_ls_sectionroute a on a.line_code = b.line_code and a.versions = b.versions where a.destroy = 0 order by a.line_code,a.directions,a.sectionroute_code", BeanPropertyRowMapper.newInstance(LD_SectionRoute.class));
  60 + Map<String, List<LD_SectionRoute>> name2sections = new HashMap<>();
  61 + List<LD_SectionRoute> routes = null;
  62 + String lastedLineName = "";
  63 + for (LD_SectionRoute sr : sectionRoutes) {
  64 + if ("".equals(lastedLineName) || !lastedLineName.equals(sr.getLineName())) {
  65 + name2sections.put(lastedLineName, routes);
  66 + lastedLineName = sr.getLineName();
  67 + routes = new ArrayList<>();
  68 + }
  69 + sr.setSection(LD_SectionBufferData.findOne(sr.getSectionCode()));
  70 + routes.add(sr);
  71 + }
  72 + LD_SectionBufferData.putLastedRoute(name2sections);
  73 + }catch (Exception e){
  74 + logger.error("", e);
  75 + }
  76 + }
  77 +}
... ...
src/main/java/com/bsth/server_rs/base_info/station/buffer/StationRefreshThread.java
1   -package com.bsth.server_rs.base_info.station.buffer;
2   -
3   -import com.bsth.server_rs.base_info.station.entity.Station;
4   -import com.bsth.server_rs.base_info.station.entity.StationRotue;
5   -import org.slf4j.Logger;
6   -import org.slf4j.LoggerFactory;
7   -import org.springframework.beans.factory.annotation.Autowired;
8   -import org.springframework.jdbc.core.BeanPropertyRowMapper;
9   -import org.springframework.jdbc.core.JdbcTemplate;
10   -import org.springframework.stereotype.Component;
11   -
12   -import java.util.List;
13   -
14   -/**
15   - * Created by panzhao on 2017/3/27.
16   - */
17   -@Component
18   -public class StationRefreshThread extends Thread{
19   -
20   - @Autowired
21   - JdbcTemplate jdbcTemplate;
22   -
23   - Logger logger = LoggerFactory.getLogger(this.getClass());
24   -
25   - @Override
26   - public void run() {
27   -
28   - try {
29   - //站点信息
30   - List<Station> stationList = jdbcTemplate.query("SELECT station_cod AS station_code,station_name,g_lonx AS lon,g_laty AS lat,shapes_type,radius,ST_AsText(g_polygon_grid) AS polygon_grid,versions FROM bsth_c_station where destroy=0 ",
31   - BeanPropertyRowMapper.newInstance(Station.class));
32   -
33   - if(stationList == null || stationList.size() == 0)
34   - return;
35   - StationBufferData.replaceAll(stationList);
36   -
37   - //站点路由信息
38   - List<StationRotue> routeList = jdbcTemplate.query("select id, line, station_route_code, line_code,station_code,station_mark,distances, to_time,directions,station_name from bsth_c_stationroute where destroy=0",
39   - BeanPropertyRowMapper.newInstance(StationRotue.class));
40   -
41   - for(StationRotue sr : routeList){
42   - sr.setStation(StationBufferData.findOne(sr.getStationCode()));
43   - }
44   - StationBufferData.replaceRoutes(routeList);
45   - }catch (Exception e){
46   - logger.error("", e);
47   - }
48   - }
49   -}
  1 +package com.bsth.server_rs.base_info.station.buffer;
  2 +
  3 +import com.bsth.server_rs.base_info.station.entity.Station;
  4 +import com.bsth.server_rs.base_info.station.entity.StationRotue;
  5 +import org.slf4j.Logger;
  6 +import org.slf4j.LoggerFactory;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  9 +import org.springframework.jdbc.core.JdbcTemplate;
  10 +import org.springframework.stereotype.Component;
  11 +
  12 +import java.util.List;
  13 +
  14 +/**
  15 + * Created by panzhao on 2017/3/27.
  16 + */
  17 +@Component
  18 +public class StationRefreshThread extends Thread{
  19 +
  20 + @Autowired
  21 + JdbcTemplate jdbcTemplate;
  22 +
  23 + Logger logger = LoggerFactory.getLogger(this.getClass());
  24 +
  25 + @Override
  26 + public void run() {
  27 +
  28 + try {
  29 + //站点信息
  30 + List<Station> stationList = jdbcTemplate.query("SELECT station_code,station_name,ST_X(center_point_wgs) AS lon,ST_Y(center_point_wgs) AS lat,versions FROM bsth_c_station where destroy=0",
  31 + BeanPropertyRowMapper.newInstance(Station.class));
  32 +
  33 + if(stationList == null || stationList.size() == 0)
  34 + return;
  35 + StationBufferData.replaceAll(stationList);
  36 +
  37 + //站点路由信息
  38 + List<StationRotue> routeList = jdbcTemplate.query("select id, line, station_route_code, line_code,station_code,station_mark,distances, to_time,directions,station_name,shaped_type as shapes_type,radius,ST_AsText(buffer_polygon_wgs) AS polygon_grid from bsth_c_stationroute where destroy=0",
  39 + BeanPropertyRowMapper.newInstance(StationRotue.class));
  40 +
  41 + for(StationRotue sr : routeList){
  42 + sr.setStation(StationBufferData.findOne(sr.getStationCode()));
  43 + }
  44 + StationBufferData.replaceRoutes(routeList);
  45 + }catch (Exception e){
  46 + logger.error("", e);
  47 + }
  48 + }
  49 +}
... ...
src/main/java/com/bsth/server_rs/base_info/station/entity/Station.java
1   -package com.bsth.server_rs.base_info.station.entity;
2   -
3   -/**
4   - * 站点信息
5   - * Created by panzhao on 2017/8/31.
6   - */
7   -public class Station {
8   -
9   - /** 站点编码 */
10   - private String stationCode;
11   -
12   - /** 站点名称 */
13   - private String stationName;
14   -
15   - /** WGS 经度 */
16   - private Float lon;
17   -
18   - /** WGS 纬度 */
19   - private Float lat;
20   -
21   - /**
22   - * 电子围栏类型
23   - *
24   - * ------ r:圆形
25   - *
26   - * ------ d:多边形
27   - */
28   - private String shapesType;
29   -
30   - /** 圆形半径 */
31   - private Integer radius;
32   -
33   - /** 多边形 WGS 坐标 */
34   - private String polygonGrid;
35   -
36   - /** 版本号 */
37   - private Integer versions;
38   -
39   -
40   - public String getStationName() {
41   - return stationName;
42   - }
43   -
44   - public void setStationName(String stationName) {
45   - this.stationName = stationName;
46   - }
47   -
48   - public String getShapesType() {
49   - return shapesType;
50   - }
51   -
52   - public void setShapesType(String shapesType) {
53   - this.shapesType = shapesType;
54   - }
55   -
56   - public Integer getRadius() {
57   - return radius;
58   - }
59   -
60   - public void setRadius(Integer radius) {
61   - this.radius = radius;
62   - }
63   -
64   -
65   - public Integer getVersions() {
66   - return versions;
67   - }
68   -
69   - public void setVersions(Integer versions) {
70   - this.versions = versions;
71   - }
72   -
73   - public String getStationCode() {
74   - return stationCode;
75   - }
76   -
77   - public void setStationCode(String stationCode) {
78   - this.stationCode = stationCode;
79   - }
80   -
81   - public Float getLon() {
82   - return lon;
83   - }
84   -
85   - public void setLon(Float lon) {
86   - this.lon = lon;
87   - }
88   -
89   - public Float getLat() {
90   - return lat;
91   - }
92   -
93   - public void setLat(Float lat) {
94   - this.lat = lat;
95   - }
96   -
97   - public String getPolygonGrid() {
98   - return polygonGrid;
99   - }
100   -
101   - public void setPolygonGrid(String polygonGrid) {
102   - this.polygonGrid = polygonGrid;
103   - }
104   -}
  1 +package com.bsth.server_rs.base_info.station.entity;
  2 +
  3 +/**
  4 + * 站点信息
  5 + * Created by panzhao on 2017/8/31.
  6 + */
  7 +public class Station {
  8 +
  9 + /** 站点编码 */
  10 + private String stationCode;
  11 +
  12 + /** 站点名称 */
  13 + private String stationName;
  14 +
  15 + /** WGS 经度 */
  16 + private Float lon;
  17 +
  18 + /** WGS 纬度 */
  19 + private Float lat;
  20 +
  21 + /** 版本号 */
  22 + private Integer versions;
  23 +
  24 +
  25 + public String getStationName() {
  26 + return stationName;
  27 + }
  28 +
  29 + public void setStationName(String stationName) {
  30 + this.stationName = stationName;
  31 + }
  32 +
  33 + public Integer getVersions() {
  34 + return versions;
  35 + }
  36 +
  37 + public void setVersions(Integer versions) {
  38 + this.versions = versions;
  39 + }
  40 +
  41 + public String getStationCode() {
  42 + return stationCode;
  43 + }
  44 +
  45 + public void setStationCode(String stationCode) {
  46 + this.stationCode = stationCode;
  47 + }
  48 +
  49 + public Float getLon() {
  50 + return lon;
  51 + }
  52 +
  53 + public void setLon(Float lon) {
  54 + this.lon = lon;
  55 + }
  56 +
  57 + public Float getLat() {
  58 + return lat;
  59 + }
  60 +
  61 + public void setLat(Float lat) {
  62 + this.lat = lat;
  63 + }
  64 +}
... ...
src/main/java/com/bsth/server_rs/base_info/station/entity/StationRotue.java
1   -package com.bsth.server_rs.base_info.station.entity;
2   -
3   -/**
4   - * Created by panzhao on 2017/8/31.
5   - */
6   -public class StationRotue {
7   -
8   - /** 线路编码 */
9   - private String lineCode;
10   -
11   - /** 站点路由序号 */
12   - private Integer stationRouteCode;
13   -
14   - private String stationCode;
15   -
16   - private String stationName;
17   -
18   - private Station station;
19   -
20   - /**
21   - * 站点类型
22   - * ------ B:起点站
23   - * ------ Z:中途站
24   - * ------ E:终点站
25   - * ------ T:停车场
26   - */
27   - private String stationMark;
28   -
29   - /** 站点路由到站距离 */
30   - private Double distances;
31   -
32   - /** 站点路由到站时间 */
33   - private Double toTime;
34   -
35   - /** 首班时间 */
36   - private String firstTime;
37   -
38   - /** 末班时间 */
39   - private String endTime;
40   -
41   - /** 站点路由方向 */
42   - private Integer directions;
43   -
44   - /** 版本号 */
45   - private Integer versions;
46   -
47   - public String getLineCode() {
48   - return lineCode;
49   - }
50   -
51   - public void setLineCode(String lineCode) {
52   - this.lineCode = lineCode;
53   - }
54   -
55   - public Integer getStationRouteCode() {
56   - return stationRouteCode;
57   - }
58   -
59   - public void setStationRouteCode(Integer stationRouteCode) {
60   - this.stationRouteCode = stationRouteCode;
61   - }
62   -
63   - public Station getStation() {
64   - return station;
65   - }
66   -
67   - public void setStation(Station station) {
68   - this.station = station;
69   - }
70   -
71   - public String getStationMark() {
72   - return stationMark;
73   - }
74   -
75   - public void setStationMark(String stationMark) {
76   - this.stationMark = stationMark;
77   - }
78   -
79   - public Double getDistances() {
80   - return distances;
81   - }
82   -
83   - public void setDistances(Double distances) {
84   - this.distances = distances;
85   - }
86   -
87   - public Double getToTime() {
88   - return toTime;
89   - }
90   -
91   - public void setToTime(Double toTime) {
92   - this.toTime = toTime;
93   - }
94   -
95   - public String getFirstTime() {
96   - return firstTime;
97   - }
98   -
99   - public void setFirstTime(String firstTime) {
100   - this.firstTime = firstTime;
101   - }
102   -
103   - public String getEndTime() {
104   - return endTime;
105   - }
106   -
107   - public void setEndTime(String endTime) {
108   - this.endTime = endTime;
109   - }
110   -
111   - public Integer getDirections() {
112   - return directions;
113   - }
114   -
115   - public void setDirections(Integer directions) {
116   - this.directions = directions;
117   - }
118   -
119   - public Integer getVersions() {
120   - return versions;
121   - }
122   -
123   - public void setVersions(Integer versions) {
124   - this.versions = versions;
125   - }
126   -
127   - public String getStationCode() {
128   - return stationCode;
129   - }
130   -
131   - public void setStationCode(String stationCode) {
132   - this.stationCode = stationCode;
133   - }
134   -
135   - public String getStationName() {
136   - return stationName;
137   - }
138   -
139   - public void setStationName(String stationName) {
140   - this.stationName = stationName;
141   - }
142   -}
  1 +package com.bsth.server_rs.base_info.station.entity;
  2 +
  3 +/**
  4 + * Created by panzhao on 2017/8/31.
  5 + */
  6 +public class StationRotue {
  7 +
  8 + /** 线路编码 */
  9 + private String lineCode;
  10 +
  11 + /** 站点路由序号 */
  12 + private Integer stationRouteCode;
  13 +
  14 + private String stationCode;
  15 +
  16 + private String stationName;
  17 +
  18 + private Station station;
  19 +
  20 + /**
  21 + * 站点类型
  22 + * ------ B:起点站
  23 + * ------ Z:中途站
  24 + * ------ E:终点站
  25 + * ------ T:停车场
  26 + */
  27 + private String stationMark;
  28 +
  29 + /** 站点路由到站距离 */
  30 + private Double distances;
  31 +
  32 + /** 站点路由到站时间 */
  33 + private Double toTime;
  34 +
  35 + /** 首班时间 */
  36 + private String firstTime;
  37 +
  38 + /** 末班时间 */
  39 + private String endTime;
  40 +
  41 + /** 站点路由方向 */
  42 + private Integer directions;
  43 +
  44 + /** 版本号 */
  45 + private Integer versions;
  46 +
  47 + /**
  48 + * 电子围栏类型
  49 + *
  50 + * ------ r:圆形
  51 + *
  52 + * ------ d:多边形
  53 + */
  54 + private String shapesType;
  55 +
  56 + /** 圆形半径 */
  57 + private Integer radius;
  58 +
  59 + /** 多边形 WGS 坐标 */
  60 + private String polygonGrid;
  61 +
  62 + public String getLineCode() {
  63 + return lineCode;
  64 + }
  65 +
  66 + public void setLineCode(String lineCode) {
  67 + this.lineCode = lineCode;
  68 + }
  69 +
  70 + public Integer getStationRouteCode() {
  71 + return stationRouteCode;
  72 + }
  73 +
  74 + public void setStationRouteCode(Integer stationRouteCode) {
  75 + this.stationRouteCode = stationRouteCode;
  76 + }
  77 +
  78 + public Station getStation() {
  79 + return station;
  80 + }
  81 +
  82 + public void setStation(Station station) {
  83 + this.station = station;
  84 + }
  85 +
  86 + public String getStationMark() {
  87 + return stationMark;
  88 + }
  89 +
  90 + public void setStationMark(String stationMark) {
  91 + this.stationMark = stationMark;
  92 + }
  93 +
  94 + public Double getDistances() {
  95 + return distances;
  96 + }
  97 +
  98 + public void setDistances(Double distances) {
  99 + this.distances = distances;
  100 + }
  101 +
  102 + public Double getToTime() {
  103 + return toTime;
  104 + }
  105 +
  106 + public void setToTime(Double toTime) {
  107 + this.toTime = toTime;
  108 + }
  109 +
  110 + public String getFirstTime() {
  111 + return firstTime;
  112 + }
  113 +
  114 + public void setFirstTime(String firstTime) {
  115 + this.firstTime = firstTime;
  116 + }
  117 +
  118 + public String getEndTime() {
  119 + return endTime;
  120 + }
  121 +
  122 + public void setEndTime(String endTime) {
  123 + this.endTime = endTime;
  124 + }
  125 +
  126 + public Integer getDirections() {
  127 + return directions;
  128 + }
  129 +
  130 + public void setDirections(Integer directions) {
  131 + this.directions = directions;
  132 + }
  133 +
  134 + public Integer getVersions() {
  135 + return versions;
  136 + }
  137 +
  138 + public void setVersions(Integer versions) {
  139 + this.versions = versions;
  140 + }
  141 +
  142 + public String getStationCode() {
  143 + return stationCode;
  144 + }
  145 +
  146 + public void setStationCode(String stationCode) {
  147 + this.stationCode = stationCode;
  148 + }
  149 +
  150 + public String getStationName() {
  151 + return stationName;
  152 + }
  153 +
  154 + public void setStationName(String stationName) {
  155 + this.stationName = stationName;
  156 + }
  157 +
  158 + public String getShapesType() {
  159 + return shapesType;
  160 + }
  161 +
  162 + public void setShapesType(String shapesType) {
  163 + this.shapesType = shapesType;
  164 + }
  165 +
  166 + public Integer getRadius() {
  167 + return radius;
  168 + }
  169 +
  170 + public void setRadius(Integer radius) {
  171 + this.radius = radius;
  172 + }
  173 +
  174 + public String getPolygonGrid() {
  175 + return polygonGrid;
  176 + }
  177 +
  178 + public void setPolygonGrid(String polygonGrid) {
  179 + this.polygonGrid = polygonGrid;
  180 + }
  181 +}
... ...
src/main/java/com/bsth/server_rs/electric/ElectricService.java
1 1 package com.bsth.server_rs.electric;
2 2  
  3 +import com.alibaba.fastjson.JSONObject;
3 4 import com.bsth.server_ws.electric_oil.entity.Electric;
4 5 import org.slf4j.Logger;
5 6 import org.slf4j.LoggerFactory;
... ... @@ -8,12 +9,19 @@ import org.springframework.jdbc.core.BeanPropertyRowMapper;
8 9 import org.springframework.jdbc.core.JdbcTemplate;
9 10 import org.springframework.stereotype.Component;
10 11  
  12 +import javax.servlet.http.HttpServletRequest;
  13 +import javax.servlet.http.HttpServletResponse;
11 14 import javax.ws.rs.GET;
  15 +import javax.ws.rs.POST;
12 16 import javax.ws.rs.Path;
13 17 import javax.ws.rs.PathParam;
14 18 import javax.ws.rs.Produces;
15 19 import javax.ws.rs.core.MediaType;
  20 +
  21 +import java.io.BufferedReader;
  22 +import java.io.InputStreamReader;
16 23 import java.util.List;
  24 +import java.util.Map;
17 25  
18 26 /**
19 27 * Created by panzhao on 2018/3/27.
... ... @@ -36,11 +44,36 @@ public class ElectricService {
36 44 //从数据库查询
37 45 //list = jdbcTemplate.query("select fgs_bm,fgs_name,gs_bm,gs_name,jdl,jdz,remarks,rq,creater_date,nbbm,jsy from bsth_c_jdl where gs_bm="+company+" and rq='"+rq+"'"
38 46 // , BeanPropertyRowMapper.newInstance(Electric.class));
39   - list = jdbcTemplate.query("select fgsdm as fgs_bm,c.business_name as fgs_name,ssgsdm as gs_bm,b.business_name as gs_name,cdl as jdl,'' as jdz,'' as remarks,rq,createtime as create_date,nbbm,'' as jsy from (select fgsdm,ssgsdm,sum(cdl * 1000) / 1000 as cdl,rq,max(createtime) as createtime,nbbm from bsth_c_dlb where rq = '" + rq + "' GROUP BY fgsdm,ssgsdm,rq,nbbm) a left join bsth_c_business b on a.ssgsdm = b.business_code LEFT JOIN bsth_c_business c on concat(a.ssgsdm, '_', a.fgsdm) = concat(c.up_code, '_', c.business_code) where ssgsdm="+company
40   - , BeanPropertyRowMapper.newInstance(Electric.class));
  47 + list = jdbcTemplate.query("select fgsdm as fgs_bm,c.business_name as fgs_name,ssgsdm as gs_bm,b.business_name as gs_name,cdl as jdl,'' as jdz,'' as remarks,rq,createtime as create_date,nbbm,'' as jsy from (select fgsdm,ssgsdm,sum(cdl * 1000) / 1000 as cdl,rq,max(createtime) as createtime,nbbm from bsth_c_dlb where rq = ? GROUP BY fgsdm,ssgsdm,rq,nbbm) a left join bsth_c_business b on a.ssgsdm = b.business_code LEFT JOIN bsth_c_business c on concat(a.ssgsdm, '_', a.fgsdm) = concat(c.up_code, '_', c.business_code) where ssgsdm = ?"
  48 + , new Object[]{ rq, company }, BeanPropertyRowMapper.newInstance(Electric.class));
41 49 }catch (Exception e){
42 50 logger.error("", e);
43 51 }
44 52 return list;
45 53 }
  54 +
  55 + @POST
  56 + @Path("/charge")
  57 + public void charge(HttpServletRequest request, HttpServletResponse response){
  58 + try {
  59 + request.setCharacterEncoding("UTF-8");
  60 + response.setContentType("application/json; charset=UTF-8");
  61 + // 读取请求体
  62 + StringBuilder sb = new StringBuilder();
  63 + String line;
  64 + BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
  65 + while ((line = reader.readLine()) != null) {
  66 + sb.append(line);
  67 + }
  68 + reader.close();
  69 + // 处理消息主体
  70 + String messageBody = sb.toString();
  71 + JSONObject body = JSONObject.parseObject(messageBody);
  72 +// JSONObject data = body.getJSONObject("Data");
  73 +
  74 + }catch (Exception e){
  75 + logger.error("", e);
  76 + }
  77 + }
  78 +
46 79 }
... ...
src/main/java/com/bsth/server_ws/park_station/CompanyServiceSoap.java
1   -package com.bsth.server_ws.park_station;
2   -
3   -import com.bsth.entity.OilInfo;
4   -import com.bsth.entity.SchedulePlanInfo;
5   -import com.bsth.entity.ScheduleRealInfo;
6   -import com.bsth.server_ws.util.Constants;
7   -import com.bsth.server_ws.util.ControlHttpUtils;
8   -import com.bsth.server_ws.util.WSDataConver;
9   -import org.slf4j.Logger;
10   -import org.slf4j.LoggerFactory;
11   -import org.springframework.beans.factory.annotation.Autowired;
12   -import org.springframework.jdbc.core.BeanPropertyRowMapper;
13   -import org.springframework.jdbc.core.JdbcTemplate;
14   -import org.springframework.stereotype.Component;
15   -
16   -import javax.jws.WebMethod;
17   -import javax.jws.WebService;
18   -import javax.xml.ws.Holder;
19   -import java.util.List;
20   -
21   -/**
22   - * 场站数据接口
23   - * BS调度系统webservice接口实现,完美兼容老系统接口格式
24   - * Created by panzhao on 2017/3/10.
25   - */
26   -@Component
27   -@WebService(
28   - name = "CompanyServiceSoap",
29   - portName = "CompanyServiceSoap",
30   - serviceName = "CompanyService",
31   - targetNamespace = "http://control.bsth.com/",
32   - endpointInterface = "com.bsth.server_ws.park_station.CompanyService")
33   -public class CompanyServiceSoap implements CompanyService {
34   -
35   -
36   - Logger logger = LoggerFactory.getLogger(this.getClass());
37   -
38   - @Autowired
39   - JdbcTemplate jdbcTemplate;
40   -
41   - @Override
42   - @WebMethod
43   - public boolean returnCCInfo(String password, String companyId, String rq, javax.xml.ws.Holder<String[]> result, javax.xml.ws.Holder<String> fError) {
44   - if(!password.equals(Constants.OLD_SYS_PASSWORD)){
45   - fError.value = "密码有误!";
46   - return false;
47   - }
48   -
49   - List<ScheduleRealInfo> list = null;
50   - try{
51   - //从调度系统获取数据
52   - list = ControlHttpUtils.returnJCCInfo(companyId, "out");
53   - }catch (Exception e){
54   - //访问调度系统异常,尝试从数据库获取
55   -
56   - }
57   - result.value = WSDataConver.to_returnJCCInfo(list);
58   -
59   - //不再代理老接口数据
60   - /*if(!WebServiceProxy.isAllNew(companyId)){
61   - String[] oldArray = OldWSClient.returnCCInfo(companyId, rq);
62   - //合并新老系统的数据
63   - result.value = WebServiceProxy.mergerJccData(result.value, oldArray, companyId);
64   - }*/
65   - return true;
66   - }
67   -
68   - @Override
69   - @WebMethod
70   - public boolean returnJCInfo(String password, String companyId, String rq, Holder<String[]> result, Holder<String> fError) {
71   - if(!password.equals(Constants.OLD_SYS_PASSWORD)){
72   - fError.value = "密码有误!";
73   - return false;
74   - }
75   -
76   - List<ScheduleRealInfo> list = null;
77   - try{
78   - //从调度系统获取数据
79   - list = ControlHttpUtils.returnJCCInfo(companyId, "in");
80   - }catch (Exception e){
81   - //访问调度系统异常,尝试从数据库获取
82   -
83   - }
84   - result.value = WSDataConver.to_returnJCCInfo(list);
85   -
86   - //不再代理老接口数据
87   - /*if(!WebServiceProxy.isAllNew(companyId)){
88   - String[] oldArray = OldWSClient.returnJCInfo(companyId, rq);
89   - //合并新老系统的数据
90   - result.value = WebServiceProxy.mergerJccData(result.value, oldArray, companyId);
91   - }*/
92   -
93   - return true;
94   - }
95   -
96   - @Override
97   - @WebMethod
98   - public boolean getCurrentDayPlan(String ip, String userName, String password, String workId, String company, Holder<String[]> result, Holder<String> fError) {
99   - try{
100   - logger.info("getCurrentDayPlan workId: " + workId);
101   - List<ScheduleRealInfo> list = null;
102   - try{
103   - //从调度系统获取数据
104   - list = ControlHttpUtils.getCurrentDayPlan(company, workId);
105   - logger.info("从调度系统获取到数据 size: " + list.size());
106   - }catch (Exception e){
107   - //访问调度系统异常,尝试从数据库获取
108   - logger.error("", e);
109   - }
110   - result.value = WSDataConver.to_getCurrentDayPlan(list);
111   - }catch(Exception e){
112   - fError.value = e.getMessage();
113   - logger.error("", e);
114   - }
115   - return false;
116   - }
117   -
118   - @Override
119   - public boolean getLSLC_PB(String ip, String userName, String password, String month, String workId, String company, Holder<String[]> result, Holder<String> fError) {
120   - try{
121   - //实际排班
122   - List<ScheduleRealInfo> schList =
123   - jdbcTemplate.query("select * from bsth_c_s_sp_info_real where gs_bm='"+company+"' and j_gh='"+workId+"' and schedule_date_str like '"+month+"-%'",
124   - BeanPropertyRowMapper.newInstance(ScheduleRealInfo.class));
125   -
126   - //计划排班
127   - List<SchedulePlanInfo> planList =
128   - jdbcTemplate.query("select * from bsth_c_s_sp_info where gs_bm='"+company+"' and j_gh='"+workId+"' and schedule_date>sysdate() and schedule_date like '"+month+"-%' order by bcs",
129   - BeanPropertyRowMapper.newInstance(SchedulePlanInfo.class));
130   -
131   - //油耗
132   - List<OilInfo> oilList =
133   - jdbcTemplate.query("select * from bsth_c_ylb where jsy='"+workId+"' and rq like '"+month+"-%'",
134   - BeanPropertyRowMapper.newInstance(OilInfo.class));
135   -
136   - result.value = WSDataConver.to_getLSLC_PB(month, schList, oilList, planList);
137   - }catch(Exception e){
138   - fError.value = e.getMessage();
139   - logger.error("", e);
140   - }
141   - return false;
142   - }
143   -}
  1 +package com.bsth.server_ws.park_station;
  2 +
  3 +import com.bsth.entity.OilInfo;
  4 +import com.bsth.entity.SchedulePlanInfo;
  5 +import com.bsth.entity.ScheduleRealInfo;
  6 +import com.bsth.server_ws.util.Constants;
  7 +import com.bsth.server_ws.util.ControlHttpUtils;
  8 +import com.bsth.server_ws.util.WSDataConver;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  13 +import org.springframework.jdbc.core.JdbcTemplate;
  14 +import org.springframework.stereotype.Component;
  15 +
  16 +import javax.jws.WebMethod;
  17 +import javax.jws.WebService;
  18 +import javax.xml.ws.Holder;
  19 +import java.util.List;
  20 +
  21 +/**
  22 + * 场站数据接口
  23 + * BS调度系统webservice接口实现,完美兼容老系统接口格式
  24 + * Created by panzhao on 2017/3/10.
  25 + */
  26 +@Component
  27 +@WebService(
  28 + name = "CompanyServiceSoap",
  29 + portName = "CompanyServiceSoap",
  30 + serviceName = "CompanyService",
  31 + targetNamespace = "http://control.bsth.com/",
  32 + endpointInterface = "com.bsth.server_ws.park_station.CompanyService")
  33 +public class CompanyServiceSoap implements CompanyService {
  34 +
  35 +
  36 + Logger logger = LoggerFactory.getLogger(this.getClass());
  37 +
  38 + @Autowired
  39 + JdbcTemplate jdbcTemplate;
  40 +
  41 + @Override
  42 + @WebMethod
  43 + public boolean returnCCInfo(String password, String companyId, String rq, javax.xml.ws.Holder<String[]> result, javax.xml.ws.Holder<String> fError) {
  44 + if(!password.equals(Constants.OLD_SYS_PASSWORD)){
  45 + fError.value = "无效密码";
  46 + return false;
  47 + }
  48 +
  49 + List<ScheduleRealInfo> list = null;
  50 + try{
  51 + //从调度系统获取数据
  52 + list = ControlHttpUtils.returnJCCInfo(companyId, "out");
  53 + }catch (Exception e){
  54 + //访问调度系统异常,尝试从数据库获取
  55 +
  56 + }
  57 + result.value = WSDataConver.to_returnJCCInfo(list);
  58 +
  59 + //不再代理老接口数据
  60 + /*if(!WebServiceProxy.isAllNew(companyId)){
  61 + String[] oldArray = OldWSClient.returnCCInfo(companyId, rq);
  62 + //合并新老系统的数据
  63 + result.value = WebServiceProxy.mergerJccData(result.value, oldArray, companyId);
  64 + }*/
  65 + return true;
  66 + }
  67 +
  68 + @Override
  69 + @WebMethod
  70 + public boolean returnJCInfo(String password, String companyId, String rq, Holder<String[]> result, Holder<String> fError) {
  71 + if(!password.equals(Constants.OLD_SYS_PASSWORD)){
  72 + fError.value = "无效密码";
  73 + return false;
  74 + }
  75 +
  76 + List<ScheduleRealInfo> list = null;
  77 + try{
  78 + //从调度系统获取数据
  79 + list = ControlHttpUtils.returnJCCInfo(companyId, "in");
  80 + }catch (Exception e){
  81 + //访问调度系统异常,尝试从数据库获取
  82 +
  83 + }
  84 + result.value = WSDataConver.to_returnJCCInfo(list);
  85 +
  86 + //不再代理老接口数据
  87 + /*if(!WebServiceProxy.isAllNew(companyId)){
  88 + String[] oldArray = OldWSClient.returnJCInfo(companyId, rq);
  89 + //合并新老系统的数据
  90 + result.value = WebServiceProxy.mergerJccData(result.value, oldArray, companyId);
  91 + }*/
  92 +
  93 + return true;
  94 + }
  95 +
  96 + @Override
  97 + @WebMethod
  98 + public boolean getCurrentDayPlan(String ip, String userName, String password, String workId, String company, Holder<String[]> result, Holder<String> fError) {
  99 + if(!password.equals(Constants.OLD_SYS_PASSWORD)){
  100 + fError.value = "无效密码";
  101 + return false;
  102 + }
  103 +
  104 + try{
  105 + logger.info("getCurrentDayPlan workId: " + workId);
  106 + List<ScheduleRealInfo> list = null;
  107 + try{
  108 + //从调度系统获取数据
  109 + list = ControlHttpUtils.getCurrentDayPlan(company, workId);
  110 + logger.info("从调度系统获取到数据 size: " + list.size());
  111 + }catch (Exception e){
  112 + //访问调度系统异常,尝试从数据库获取
  113 + logger.error("", e);
  114 + }
  115 + result.value = WSDataConver.to_getCurrentDayPlan(list);
  116 + }catch(Exception e){
  117 + fError.value = e.getMessage();
  118 + logger.error("", e);
  119 + }
  120 + return false;
  121 + }
  122 +
  123 + @Override
  124 + public boolean getLSLC_PB(String ip, String userName, String password, String month, String workId, String company, Holder<String[]> result, Holder<String> fError) {
  125 + if(!password.equals(Constants.OLD_SYS_PASSWORD)){
  126 + fError.value = "无效密码";
  127 + return false;
  128 + }
  129 +
  130 + try{
  131 + //实际排班
  132 + List<ScheduleRealInfo> schList =
  133 + jdbcTemplate.query("select * from bsth_c_s_sp_info_real where gs_bm= ? and j_gh= ? and schedule_date_str like concat(? '-%')", new Object[]{ company, workId, month },
  134 + BeanPropertyRowMapper.newInstance(ScheduleRealInfo.class));
  135 +
  136 + //计划排班
  137 + List<SchedulePlanInfo> planList =
  138 + jdbcTemplate.query("select * from bsth_c_s_sp_info where gs_bm= ? and j_gh= ? and schedule_date>sysdate() and schedule_date like concat(? '-%') order by bcs", new Object[]{ company, workId, month },
  139 + BeanPropertyRowMapper.newInstance(SchedulePlanInfo.class));
  140 +
  141 + //油耗
  142 + List<OilInfo> oilList =
  143 + jdbcTemplate.query("select * from bsth_c_ylb where jsy= ? and rq like concat(? '-%')", new Object[]{ workId, month },
  144 + BeanPropertyRowMapper.newInstance(OilInfo.class));
  145 +
  146 + result.value = WSDataConver.to_getLSLC_PB(month, schList, oilList, planList);
  147 + }catch(Exception e){
  148 + fError.value = e.getMessage();
  149 + logger.error("", e);
  150 + }
  151 + return false;
  152 + }
  153 +}
... ...