Commit 033a3f716084183c41671ea36387f2afedb60984

Authored by 王通
1 parent ef7192bb

1

src/main/java/com/bsth/server_rs/waybill/WaybillRestService.java
1 -package com.bsth.server_rs.waybill;  
2 -  
3 -import java.lang.reflect.Field;  
4 -import java.util.ArrayList;  
5 -import java.util.HashMap;  
6 -import java.util.List;  
7 -import java.util.Map;  
8 -import java.util.Set;  
9 -  
10 -import javax.ws.rs.GET;  
11 -import javax.ws.rs.Path;  
12 -import javax.ws.rs.Produces;  
13 -import javax.ws.rs.core.MediaType;  
14 -  
15 -import org.apache.commons.lang3.StringUtils;  
16 -import org.joda.time.format.DateTimeFormat;  
17 -import org.joda.time.format.DateTimeFormatter;  
18 -import org.slf4j.Logger;  
19 -import org.slf4j.LoggerFactory;  
20 -import org.springframework.beans.factory.annotation.Autowired;  
21 -import org.springframework.stereotype.Component;  
22 -  
23 -import com.bsth.entity.DutyEmployee;  
24 -import com.bsth.entity.ScheduleRealInfo;  
25 -import com.bsth.redis.ScheduleRedisService;  
26 -import com.bsth.repository.DutyEmployeeRepository;  
27 -import com.bsth.server_ws.util.ScheduleCalculator;  
28 -import com.bsth.util.ConvertUtil;  
29 -import com.google.common.collect.ArrayListMultimap;  
30 -  
31 -/**  
32 - * @author Hill.  
33 - */  
34 -@Component  
35 -@Path("/waybill")  
36 -@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})  
37 -public class WaybillRestService {  
38 -  
39 - @Autowired  
40 - private ScheduleRedisService scheduleRedisService;  
41 - @Autowired  
42 - private DutyEmployeeRepository dutyEmployeeRepository;  
43 -  
44 - private static Logger logger = LoggerFactory.getLogger(WaybillRestService.class);  
45 -  
46 - private static DateTimeFormatter fmtyyyyMMddHHmm = DateTimeFormat.forPattern("yyyy-MM-ddHH:mm"),  
47 - fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd");  
48 -  
49 - @GET  
50 - @Path("/")  
51 - public Map<String, Object> waybill(Map<String, Object> param) {  
52 - Map<String, Object> map = new HashMap<String, Object>();  
53 - String rq = (String)param.get("date"), companyId = (String)param.get("companyCode");  
54 - try {  
55 - //日期减一天,老接口是这样的  
56 - String prveRq = fmtyyyyMMdd.print(fmtyyyyMMdd.parseDateTime(rq).minusDays(1));  
57 -  
58 - //实际排班  
59 - ArrayListMultimap<String, ScheduleRealInfo> listMap = scheduleRedisService.findByDateAndGroupByNbbm(prveRq, companyId);  
60 - //当班调派  
61 - long st = fmtyyyyMMddHHmm.parseMillis(prveRq + "00:00"), et = fmtyyyyMMddHHmm.parseMillis(prveRq + "23:59");  
62 - List<DutyEmployee> des = dutyEmployeeRepository.findByTime(st, et);  
63 - //转换成南汇路单需要的格式  
64 - List<Waybill> data = toNhWaybill(listMap, des);  
65 - map.put("errCode", 0);  
66 - map.put("errMsg", "");  
67 - map.put("data", data);  
68 - } catch (Exception e) {  
69 - logger.error("", e);  
70 - map.put("errCode", 1);  
71 - map.put("errMsg", "服务器出现异常!");  
72 - }  
73 -  
74 - return map;  
75 - }  
76 -  
77 - private List<Waybill> toNhWaybill(ArrayListMultimap<String, ScheduleRealInfo> listMap, List<DutyEmployee> des) {  
78 - Set<String> nbbms = listMap.keySet();  
79 - List<Waybill> result = new ArrayList<Waybill>(nbbms.size());  
80 - Field jGhField = null;  
81 - try {  
82 - jGhField = ScheduleRealInfo.class.getDeclaredField("jGh");  
83 - } catch (NoSuchFieldException | SecurityException e) {  
84 - // TODO Auto-generated catch block  
85 - e.printStackTrace();  
86 - }  
87 -  
88 - List<ScheduleRealInfo> list;  
89 - ArrayListMultimap<String, ScheduleRealInfo> jGhListMap;  
90 - ScheduleRealInfo sch;  
91 - for (String nbbm : nbbms) {  
92 - list = listMap.get(nbbm);  
93 - if (list.size() == 0)  
94 - continue;  
95 - //班次信息  
96 - Waybill wb = new Waybill();  
97 - sch = list.get(0);  
98 - //日期  
99 - wb.setDate(sch.getScheduleDateStr());  
100 - //车辆自编号  
101 - wb.setInsideCode(sch.getClZbh());  
102 - //线路编码  
103 - wb.setLineCode(sch.getXlBm());  
104 -  
105 - //按 驾驶员 分组班次,构造路单子项  
106 - jGhListMap = new ConvertUtil<ScheduleRealInfo>().groupMultiList(list, "_", jGhField);  
107 - for (String jGh : jGhListMap.keySet()) {  
108 - list = jGhListMap.get(jGh);  
109 - //营业公里  
110 - wb.setMiles(ScheduleCalculator.calcYYLC(list));  
111 - //驾驶员工号  
112 - wb.setDriverJno(list.get(0).getjGh());  
113 - wb.setDriverName(list.get(0).getjName());  
114 - wb.setDriverId("");  
115 - //售票员工号  
116 - wb.setConductorJno("");  
117 - wb.setConductorName(list.get(0).getsName());  
118 - wb.setConductorId("");  
119 - for (ScheduleRealInfo sri : list) {  
120 - if (StringUtils.isNotEmpty(sri.getsGh())) {  
121 - wb.setConductorJno(sri.getsGh());  
122 - break;  
123 - }  
124 - }  
125 - }  
126 - result.add(wb);  
127 - }  
128 -  
129 - return result;  
130 - }  
131 -  
132 - final class Waybill {  
133 - // 日期  
134 - private String date;  
135 - // 公司代码  
136 - private String companyCode;  
137 - // 线路名称  
138 - private String lineName;  
139 - // 线路代码  
140 - private String lineCode;  
141 - // 车辆内部编码  
142 - private String insideCode;  
143 - // 驾驶员工号  
144 - private String driverJno;  
145 - // 驾驶员姓名  
146 - private String driverName;  
147 - // 驾驶员身份证号  
148 - private String driverId;  
149 - // 售票员工号  
150 - private String conductorJno;  
151 - // 售票员姓名  
152 - private String conductorName;  
153 - // 售票员身份证号  
154 - private String conductorId;  
155 - // 营运公里  
156 - private double miles;  
157 -  
158 - public String getDate() {  
159 - return date;  
160 - }  
161 -  
162 - public void setDate(String date) {  
163 - this.date = date;  
164 - }  
165 -  
166 - public String getCompanyCode() {  
167 - return companyCode;  
168 - }  
169 -  
170 - public void setCompanyCode(String companyCode) {  
171 - this.companyCode = companyCode;  
172 - }  
173 -  
174 - public String getLineName() {  
175 - return lineName;  
176 - }  
177 -  
178 - public void setLineName(String lineName) {  
179 - this.lineName = lineName;  
180 - }  
181 -  
182 - public String getLineCode() {  
183 - return lineCode;  
184 - }  
185 -  
186 - public void setLineCode(String lineCode) {  
187 - this.lineCode = lineCode;  
188 - }  
189 -  
190 - public String getInsideCode() {  
191 - return insideCode;  
192 - }  
193 -  
194 - public void setInsideCode(String insideCode) {  
195 - this.insideCode = insideCode;  
196 - }  
197 -  
198 - public String getDriverJno() {  
199 - return driverJno;  
200 - }  
201 -  
202 - public void setDriverJno(String driverJno) {  
203 - this.driverJno = driverJno;  
204 - }  
205 -  
206 - public String getDriverName() {  
207 - return driverName;  
208 - }  
209 -  
210 - public void setDriverName(String driverName) {  
211 - this.driverName = driverName;  
212 - }  
213 -  
214 - public String getDriverId() {  
215 - return driverId;  
216 - }  
217 -  
218 - public void setDriverId(String driverId) {  
219 - this.driverId = driverId;  
220 - }  
221 -  
222 - public String getConductorJno() {  
223 - return conductorJno;  
224 - }  
225 -  
226 - public void setConductorJno(String conductorJno) {  
227 - this.conductorJno = conductorJno;  
228 - }  
229 -  
230 - public String getConductorName() {  
231 - return conductorName;  
232 - }  
233 -  
234 - public void setConductorName(String conductorName) {  
235 - this.conductorName = conductorName;  
236 - }  
237 -  
238 - public String getConductorId() {  
239 - return conductorId;  
240 - }  
241 -  
242 - public void setConductorId(String conductorId) {  
243 - this.conductorId = conductorId;  
244 - }  
245 -  
246 - public double getMiles() {  
247 - return miles;  
248 - }  
249 -  
250 - public void setMiles(double miles) {  
251 - this.miles = miles;  
252 - }  
253 - }  
254 -} 1 +package com.bsth.server_rs.waybill;
  2 +
  3 +import java.lang.reflect.Field;
  4 +import java.util.ArrayList;
  5 +import java.util.HashMap;
  6 +import java.util.List;
  7 +import java.util.Map;
  8 +import java.util.Set;
  9 +
  10 +import javax.ws.rs.GET;
  11 +import javax.ws.rs.Path;
  12 +import javax.ws.rs.Produces;
  13 +import javax.ws.rs.core.MediaType;
  14 +
  15 +import org.apache.commons.lang3.StringUtils;
  16 +import org.joda.time.format.DateTimeFormat;
  17 +import org.joda.time.format.DateTimeFormatter;
  18 +import org.slf4j.Logger;
  19 +import org.slf4j.LoggerFactory;
  20 +import org.springframework.beans.factory.annotation.Autowired;
  21 +import org.springframework.stereotype.Component;
  22 +
  23 +import com.bsth.entity.DutyEmployee;
  24 +import com.bsth.entity.ScheduleRealInfo;
  25 +import com.bsth.redis.ScheduleRedisService;
  26 +import com.bsth.repository.DutyEmployeeRepository;
  27 +import com.bsth.server_ws.util.ScheduleCalculator;
  28 +import com.bsth.util.ConvertUtil;
  29 +import com.google.common.collect.ArrayListMultimap;
  30 +
  31 +/**
  32 + * @author Hill.
  33 + */
  34 +@Component
  35 +@Path("/waybill")
  36 +@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
  37 +public class WaybillRestService {
  38 +
  39 + @Autowired
  40 + private ScheduleRedisService scheduleRedisService;
  41 + @Autowired
  42 + private DutyEmployeeRepository dutyEmployeeRepository;
  43 +
  44 + private static Logger logger = LoggerFactory.getLogger(WaybillRestService.class);
  45 +
  46 + private static DateTimeFormatter fmtyyyyMMddHHmm = DateTimeFormat.forPattern("yyyy-MM-ddHH:mm"),
  47 + fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd");
  48 +
  49 + @GET
  50 + @Path("/")
  51 + public Map<String, Object> waybill(Map<String, Object> param) {
  52 + Map<String, Object> map = new HashMap<String, Object>();
  53 + String rq = (String)param.get("date"), companyId = (String)param.get("companyCode");
  54 + try {
  55 + //日期减一天,老接口是这样的
  56 + String prveRq = fmtyyyyMMdd.print(fmtyyyyMMdd.parseDateTime(rq).minusDays(1));
  57 +
  58 + //实际排班
  59 + ArrayListMultimap<String, ScheduleRealInfo> listMap = scheduleRedisService.findByDateAndGroupByNbbm(prveRq, companyId);
  60 + //当班调派
  61 + long st = fmtyyyyMMddHHmm.parseMillis(prveRq + "00:00"), et = fmtyyyyMMddHHmm.parseMillis(prveRq + "23:59");
  62 + List<DutyEmployee> des = dutyEmployeeRepository.findByTime(st, et);
  63 + //转换成南汇路单需要的格式
  64 + List<Waybill> data = toNhWaybill(listMap, des);
  65 + map.put("errCode", 0);
  66 + map.put("errMsg", "");
  67 + map.put("data", data);
  68 + } catch (Exception e) {
  69 + logger.error("", e);
  70 + map.put("errCode", 1);
  71 + map.put("errMsg", "服务器出现异常!");
  72 + }
  73 +
  74 + return map;
  75 + }
  76 +
  77 + private List<Waybill> toNhWaybill(ArrayListMultimap<String, ScheduleRealInfo> listMap, List<DutyEmployee> des) {
  78 + Set<String> nbbms = listMap.keySet();
  79 + List<Waybill> result = new ArrayList<Waybill>(nbbms.size());
  80 + Field jGhField = null;
  81 + try {
  82 + jGhField = ScheduleRealInfo.class.getDeclaredField("jGh");
  83 + } catch (NoSuchFieldException | SecurityException e) {
  84 + // TODO Auto-generated catch block
  85 + e.printStackTrace();
  86 + }
  87 +
  88 + List<ScheduleRealInfo> list;
  89 + ArrayListMultimap<String, ScheduleRealInfo> jGhListMap;
  90 + ScheduleRealInfo sch;
  91 + for (String nbbm : nbbms) {
  92 + list = listMap.get(nbbm);
  93 + if (list.size() == 0)
  94 + continue;
  95 + //班次信息
  96 + Waybill wb = new Waybill();
  97 + sch = list.get(0);
  98 + //日期
  99 + wb.setDate(sch.getScheduleDateStr());
  100 + //车辆自编号
  101 + wb.setInsideCode(sch.getClZbh());
  102 + //线路编码
  103 + wb.setLineCode(sch.getXlBm());
  104 +
  105 + //按 驾驶员 分组班次,构造路单子项
  106 + jGhListMap = new ConvertUtil<ScheduleRealInfo>().groupMultiList(list, "_", jGhField);
  107 + for (String jGh : jGhListMap.keySet()) {
  108 + list = jGhListMap.get(jGh);
  109 + //营业公里
  110 + wb.setMiles(ScheduleCalculator.calcYYLC(list));
  111 + //驾驶员工号
  112 + wb.setDriverJno(list.get(0).getjGh());
  113 + wb.setDriverName(list.get(0).getjName());
  114 + wb.setDriverId(list.get(0).getjId());
  115 + //售票员工号
  116 + wb.setConductorJno(list.get(0).getsGh());
  117 + wb.setConductorName(list.get(0).getsName());
  118 + wb.setConductorId(list.get(0).getsId());
  119 + for (ScheduleRealInfo sri : list) {
  120 + if (StringUtils.isNotEmpty(sri.getsGh())) {
  121 + wb.setConductorJno(sri.getsGh());
  122 + break;
  123 + }
  124 + }
  125 + }
  126 + result.add(wb);
  127 + }
  128 +
  129 + return result;
  130 + }
  131 +
  132 + final class Waybill {
  133 + // 日期
  134 + private String date;
  135 + // 公司代码
  136 + private String companyCode;
  137 + // 线路名称
  138 + private String lineName;
  139 + // 线路代码
  140 + private String lineCode;
  141 + // 车辆内部编码
  142 + private String insideCode;
  143 + // 驾驶员工号
  144 + private String driverJno;
  145 + // 驾驶员姓名
  146 + private String driverName;
  147 + // 驾驶员身份证号
  148 + private String driverId;
  149 + // 售票员工号
  150 + private String conductorJno;
  151 + // 售票员姓名
  152 + private String conductorName;
  153 + // 售票员身份证号
  154 + private String conductorId;
  155 + // 营运公里
  156 + private double miles;
  157 +
  158 + public String getDate() {
  159 + return date;
  160 + }
  161 +
  162 + public void setDate(String date) {
  163 + this.date = date;
  164 + }
  165 +
  166 + public String getCompanyCode() {
  167 + return companyCode;
  168 + }
  169 +
  170 + public void setCompanyCode(String companyCode) {
  171 + this.companyCode = companyCode;
  172 + }
  173 +
  174 + public String getLineName() {
  175 + return lineName;
  176 + }
  177 +
  178 + public void setLineName(String lineName) {
  179 + this.lineName = lineName;
  180 + }
  181 +
  182 + public String getLineCode() {
  183 + return lineCode;
  184 + }
  185 +
  186 + public void setLineCode(String lineCode) {
  187 + this.lineCode = lineCode;
  188 + }
  189 +
  190 + public String getInsideCode() {
  191 + return insideCode;
  192 + }
  193 +
  194 + public void setInsideCode(String insideCode) {
  195 + this.insideCode = insideCode;
  196 + }
  197 +
  198 + public String getDriverJno() {
  199 + return driverJno;
  200 + }
  201 +
  202 + public void setDriverJno(String driverJno) {
  203 + this.driverJno = driverJno;
  204 + }
  205 +
  206 + public String getDriverName() {
  207 + return driverName;
  208 + }
  209 +
  210 + public void setDriverName(String driverName) {
  211 + this.driverName = driverName;
  212 + }
  213 +
  214 + public String getDriverId() {
  215 + return driverId;
  216 + }
  217 +
  218 + public void setDriverId(String driverId) {
  219 + this.driverId = driverId;
  220 + }
  221 +
  222 + public String getConductorJno() {
  223 + return conductorJno;
  224 + }
  225 +
  226 + public void setConductorJno(String conductorJno) {
  227 + this.conductorJno = conductorJno;
  228 + }
  229 +
  230 + public String getConductorName() {
  231 + return conductorName;
  232 + }
  233 +
  234 + public void setConductorName(String conductorName) {
  235 + this.conductorName = conductorName;
  236 + }
  237 +
  238 + public String getConductorId() {
  239 + return conductorId;
  240 + }
  241 +
  242 + public void setConductorId(String conductorId) {
  243 + this.conductorId = conductorId;
  244 + }
  245 +
  246 + public double getMiles() {
  247 + return miles;
  248 + }
  249 +
  250 + public void setMiles(double miles) {
  251 + this.miles = miles;
  252 + }
  253 + }
  254 +}