Commit ef7192bb76a77d25aa291ff872cc2cc3dddfd81c

Authored by 王通
1 parent 2dc00ac1

1.票务新接口

src/main/java/com/bsth/server_rs/waybill/WaybillRestService.java 0 → 100644
  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 +}
... ...