Commit 48566c9fccad6ca5c399bf39d0af6518358a04c4

Authored by 王通
1 parent 450b9a85

1.线路调查表数据

src/main/java/com/bsth/server_rs/adapter/DateAdapter_yMd.java 0 → 100644
  1 +package com.bsth.server_rs.adapter;
  2 +
  3 +import org.joda.time.format.DateTimeFormat;
  4 +import org.joda.time.format.DateTimeFormatter;
  5 +
  6 +import javax.xml.bind.annotation.adapters.XmlAdapter;
  7 +import java.util.Date;
  8 +
  9 +/**
  10 + * 时间格式处理 yyyy-MM-dd
  11 + * Created by panzhao on 2017/3/28.
  12 + */
  13 +public class DateAdapter_yMd extends XmlAdapter<String, Date> {
  14 +
  15 + private static DateTimeFormatter fmtyyyyMMddHHmmss = DateTimeFormat.forPattern("yyyy-MM-dd");
  16 +
  17 + @Override
  18 + public Date unmarshal(String v) throws Exception {
  19 + return fmtyyyyMMddHHmmss.parseDateTime(v).toDate();
  20 + }
  21 +
  22 + @Override
  23 + public String marshal(Date v) throws Exception {
  24 + return fmtyyyyMMddHHmmss.print(v.getTime());
  25 + }
  26 +}
src/main/java/com/bsth/server_rs/adapter/DateAdapter_yMdHms.java 0 → 100644
  1 +package com.bsth.server_rs.adapter;
  2 +
  3 +import org.joda.time.format.DateTimeFormat;
  4 +import org.joda.time.format.DateTimeFormatter;
  5 +
  6 +import javax.xml.bind.annotation.adapters.XmlAdapter;
  7 +import java.util.Date;
  8 +
  9 +/**
  10 + * 时间格式处理 yyyy-MM-dd HH:mm:ss
  11 + * Created by panzhao on 2017/3/28.
  12 + */
  13 +public class DateAdapter_yMdHms extends XmlAdapter<String, Date> {
  14 +
  15 + private static DateTimeFormatter fmtyyyyMMddHHmmss = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
  16 +
  17 + @Override
  18 + public Date unmarshal(String v) throws Exception {
  19 + return fmtyyyyMMddHHmmss.parseDateTime(v).toDate();
  20 + }
  21 +
  22 + @Override
  23 + public String marshal(Date v) throws Exception {
  24 + return fmtyyyyMMddHHmmss.print(v.getTime());
  25 + }
  26 +}
src/main/java/com/bsth/server_rs/adapter/DateTimeAdapter.java 0 → 100644
  1 +package com.bsth.server_rs.adapter;
  2 +
  3 +import javax.xml.bind.annotation.adapters.XmlAdapter;
  4 +import java.util.Date;
  5 +
  6 +/**
  7 + * 时间格式处理 yyyy-MM-dd
  8 + * Created by panzhao on 2017/3/28.
  9 + */
  10 +public class DateTimeAdapter extends XmlAdapter<Long, Date> {
  11 +
  12 + @Override
  13 + public Date unmarshal(Long v) throws Exception {
  14 + return new Date(v);
  15 + }
  16 +
  17 + @Override
  18 + public Long marshal(Date v) throws Exception {
  19 + return v.getTime();
  20 + }
  21 +}
src/main/java/com/bsth/server_rs/base_info/car/Car.java 0 → 100644
  1 +package com.bsth.server_rs.base_info.car;
  2 +
  3 +import javax.xml.bind.annotation.XmlRootElement;
  4 +import java.io.Serializable;
  5 +
  6 +/**
  7 + * 车辆信息
  8 + * Created by panzhao on 2017/3/30.
  9 + */
  10 +@XmlRootElement
  11 +public class Car implements Serializable {
  12 +
  13 + /**
  14 + * 自编号/内部编号
  15 + */
  16 + private String nbbm;
  17 +
  18 + /**
  19 + * 公司代码
  20 + */
  21 + private String companyCode;
  22 + /**
  23 + * 分公司编码
  24 + */
  25 + private String brancheCompanyCode;
  26 +
  27 + /**
  28 + * 车牌号
  29 + */
  30 + private String carPlate;
  31 + /**
  32 + * 设备终端号
  33 + */
  34 + private String equipmentCode;
  35 + /**
  36 + * 车辆类型
  37 + */
  38 + private String carType;
  39 + /**
  40 + * 是否机动车(机动车类型选择)
  41 + */
  42 + private String vehicleStats;
  43 +
  44 + /**
  45 + * 是否电车(TODO:在原系统里没有,这里暂时留着)
  46 + */
  47 + private Boolean sfdc;
  48 + /**
  49 + * 是否报废
  50 + */
  51 + private Boolean scrapState;
  52 +
  53 + /**
  54 + * RFID 车卡ID号(16进制)
  55 + */
  56 + private String idRfid;
  57 +
  58 + /**
  59 + * RFID 标签号
  60 + */
  61 + private String tagRfid;
  62 +
  63 + private String lineCode;
  64 +
  65 + private String lineName;
  66 +
  67 + private String remark;
  68 +
  69 + public String getNbbm() {
  70 + return nbbm;
  71 + }
  72 +
  73 + public void setNbbm(String nbbm) {
  74 + this.nbbm = nbbm;
  75 + }
  76 +
  77 + public String getCompanyCode() {
  78 + return companyCode;
  79 + }
  80 +
  81 + public void setCompanyCode(String companyCode) {
  82 + this.companyCode = companyCode;
  83 + }
  84 +
  85 + public String getBrancheCompanyCode() {
  86 + return brancheCompanyCode;
  87 + }
  88 +
  89 + public void setBrancheCompanyCode(String brancheCompanyCode) {
  90 + this.brancheCompanyCode = brancheCompanyCode;
  91 + }
  92 +
  93 + public String getCarPlate() {
  94 + return carPlate;
  95 + }
  96 +
  97 + public void setCarPlate(String carPlate) {
  98 + this.carPlate = carPlate;
  99 + }
  100 +
  101 + public String getEquipmentCode() {
  102 + return equipmentCode;
  103 + }
  104 +
  105 + public void setEquipmentCode(String equipmentCode) {
  106 + this.equipmentCode = equipmentCode;
  107 + }
  108 +
  109 + public String getCarType() {
  110 + return carType;
  111 + }
  112 +
  113 + public void setCarType(String carType) {
  114 + this.carType = carType;
  115 + }
  116 +
  117 + public String getVehicleStats() {
  118 + return vehicleStats;
  119 + }
  120 +
  121 + public void setVehicleStats(String vehicleStats) {
  122 + this.vehicleStats = vehicleStats;
  123 + }
  124 +
  125 + public Boolean getSfdc() {
  126 + return sfdc;
  127 + }
  128 +
  129 + public void setSfdc(Boolean sfdc) {
  130 + this.sfdc = sfdc;
  131 + }
  132 +
  133 + public Boolean getScrapState() {
  134 + return scrapState;
  135 + }
  136 +
  137 + public void setScrapState(Boolean scrapState) {
  138 + this.scrapState = scrapState;
  139 + }
  140 +
  141 + public String getIdRfid() {
  142 + return idRfid;
  143 + }
  144 +
  145 + public void setIdRfid(String idRfid) {
  146 + this.idRfid = idRfid;
  147 + }
  148 +
  149 + public String getTagRfid() {
  150 + return tagRfid;
  151 + }
  152 +
  153 + public void setTagRfid(String tagRfid) {
  154 + this.tagRfid = tagRfid;
  155 + }
  156 +
  157 + public String getLineCode() {
  158 + return lineCode;
  159 + }
  160 +
  161 + public void setLineCode(String lineCode) {
  162 + this.lineCode = lineCode;
  163 + }
  164 +
  165 + public String getLineName() {
  166 + return lineName;
  167 + }
  168 +
  169 + public void setLineName(String lineName) {
  170 + this.lineName = lineName;
  171 + }
  172 +
  173 + public String getRemark() {
  174 + return remark;
  175 + }
  176 +
  177 + public void setRemark(String remark) {
  178 + this.remark = remark;
  179 + }
  180 +}
src/main/java/com/bsth/server_rs/base_info/car/CarRestService.java 0 → 100644
  1 +package com.bsth.server_rs.base_info.car;
  2 +
  3 +import com.alibaba.fastjson.JSON;
  4 +import com.alibaba.fastjson.TypeReference;
  5 +import com.bsth.server_rs.base_info.car.buffer.CarBufferData;
  6 +import com.bsth.server_rs.base_info.dto.BusCardDto;
  7 +import org.apache.commons.lang3.StringEscapeUtils;
  8 +
  9 +import javax.ws.rs.*;
  10 +import javax.ws.rs.core.MediaType;
  11 +import java.util.List;
  12 +import java.util.Map;
  13 +
  14 +/**
  15 + * Created by panzhao on 2017/3/30.
  16 + */
  17 +@Path("/car")
  18 +@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
  19 +public class CarRestService {
  20 +
  21 + @GET
  22 + @Path("/all")
  23 + public List<Car> findAll(){
  24 + return CarBufferData.findAll();
  25 + }
  26 +
  27 + @GET
  28 + @Path("/company/{companyId}")
  29 + public List<Car> findByCompany(@PathParam("companyId") String companyId) {
  30 + return companyId.equals("-9999") ? CarBufferData.findAll() : CarBufferData.findByCompany(companyId);
  31 + }
  32 +
  33 + @GET
  34 + @Path("/{nbbm}")
  35 + public Car findOne(@PathParam("nbbm") String nbbm) {
  36 + return CarBufferData.findOne(nbbm);
  37 + }
  38 +
  39 + @POST
  40 + @Path("/setCards")
  41 + public Map<String, Object> multiPostCards(String bodyStr){
  42 + bodyStr = StringEscapeUtils.unescapeHtml4(bodyStr);
  43 + List<BusCardDto> list = JSON.parseObject(bodyStr, new TypeReference<List<BusCardDto>>() {});
  44 + return CarBufferData.multiSaveCards(list);
  45 + }
  46 +}
src/main/java/com/bsth/server_rs/base_info/car/buffer/CarBufferData.java 0 → 100644
  1 +package com.bsth.server_rs.base_info.car.buffer;
  2 +
  3 +import com.bsth.Application;
  4 +import com.bsth.server_rs.base_info.car.Car;
  5 +import com.bsth.server_rs.base_info.dto.BusCardDto;
  6 +import com.google.common.collect.ArrayListMultimap;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.boot.CommandLineRunner;
  9 +import org.springframework.core.annotation.Order;
  10 +import org.springframework.stereotype.Component;
  11 +
  12 +import java.util.*;
  13 +import java.util.concurrent.TimeUnit;
  14 +
  15 +/**
  16 + * 车辆数据缓存
  17 + * Created by panzhao on 2017/3/30.
  18 + */
  19 +@Component
  20 +@Order(6)
  21 +public class CarBufferData implements CommandLineRunner {
  22 +
  23 + private static List<Car> data;
  24 + private static Map<String, Car> idMap;
  25 + private static ArrayListMultimap<String, Car> companyListMap;
  26 +
  27 + /**
  28 + * 待入库的bus car
  29 + */
  30 + public static LinkedList<Car> pstList = new LinkedList<>();
  31 +
  32 + @Autowired
  33 + CarRefreshThread carRefreshThread;
  34 +
  35 + public static List<Car> findAll(){
  36 + return data;
  37 + }
  38 +
  39 + public static Car findOne(String nbbm){
  40 + return idMap.get(nbbm);
  41 + }
  42 +
  43 + public static List<Car> findByCompany(String company){
  44 + return companyListMap.get(company);
  45 + }
  46 +
  47 + public static void replaceAll(List<Car> newData){
  48 + data = newData;
  49 + Map<String, Car> idMapCopy = new HashMap<>();
  50 + ArrayListMultimap<String, Car> listMap = ArrayListMultimap.create();
  51 +
  52 + for(Car car : data){
  53 + idMapCopy.put(car.getNbbm(), car);
  54 + listMap.put(car.getCompanyCode(), car);
  55 + }
  56 + idMap = idMapCopy;
  57 +
  58 + companyListMap = listMap;
  59 + }
  60 +
  61 + @Override
  62 + public void run(String... strings) throws Exception {
  63 + Application.mainServices.scheduleWithFixedDelay(carRefreshThread, 10, 60 * 60, TimeUnit.SECONDS);
  64 + }
  65 +
  66 + public static Map<String, Object> multiSaveCards(List<BusCardDto> list) {
  67 + int success=0,error=0;
  68 + //返回写入成功的卡数据
  69 + List<BusCardDto> rsList = new ArrayList<>();
  70 +
  71 + Car c;
  72 + for(BusCardDto bcd : list){
  73 + c = idMap.get(bcd.getNbbm());
  74 + if(c == null)
  75 + error ++;
  76 + else{
  77 + c.setIdRfid(bcd.getIdCard());
  78 + c.setTagRfid(bcd.getTagCard());
  79 + c.setRemark(bcd.getRemark());
  80 + success ++;
  81 +
  82 + pstList.add(c);
  83 + rsList.add(bcd);
  84 + }
  85 + }
  86 +
  87 + Map<String, Object> rs = new HashMap<>();
  88 + rs.put("success", success);
  89 + rs.put("successList", rsList);
  90 + rs.put("error", error);
  91 + return rs;
  92 + }
  93 +}
src/main/java/com/bsth/server_rs/base_info/car/buffer/CarRefreshThread.java 0 → 100644
  1 +package com.bsth.server_rs.base_info.car.buffer;
  2 +
  3 +import com.bsth.server_rs.base_info.car.Car;
  4 +import org.slf4j.Logger;
  5 +import org.slf4j.LoggerFactory;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  8 +import org.springframework.jdbc.core.JdbcTemplate;
  9 +import org.springframework.stereotype.Component;
  10 +
  11 +import java.util.ArrayList;
  12 +import java.util.HashMap;
  13 +import java.util.List;
  14 +import java.util.Map;
  15 +
  16 +/**
  17 + * Created by panzhao on 2017/3/30.
  18 + */
  19 +@Component
  20 +public class CarRefreshThread extends Thread{
  21 +
  22 + @Autowired
  23 + JdbcTemplate jdbcTemplate;
  24 +
  25 + Logger logger = LoggerFactory.getLogger(this.getClass());
  26 +
  27 + @Override
  28 + public void run() {
  29 +
  30 + try {
  31 +
  32 + List<Car> list = jdbcTemplate.query("SELECT DISTINCT t1.*,t2.line_code,t2.name as line_name FROM(SELECT c.inside_code as nbbm,c.business_code as company_code,c.branche_company_code,c.car_plate,c.equipment_code,c.car_type,c.vehicle_stats,c.sfdc,c.scrap_state,c.id_rfid,c.tag_rfid,c2.xl,c2.qyrq FROM bsth_c_cars c LEFT JOIN bsth_c_s_ccinfo c2 ON c.id = c2.cl and c2.is_cancel=0) t1 LEFT JOIN bsth_c_line t2 on t1.xl=t2.id ORDER BY nbbm,qyrq"
  33 + , BeanPropertyRowMapper.newInstance(Car.class));
  34 +
  35 + Map<String, Car> map = new HashMap<>();
  36 + //过滤数据,多条线路配车的保留一条
  37 + for(Car c : list){
  38 + map.put(c.getNbbm(), c);
  39 + }
  40 +
  41 + if(list != null && list.size() > 0)
  42 + CarBufferData.replaceAll(new ArrayList(map.values()));
  43 + }catch (Exception e){
  44 + logger.error("", e);
  45 + }
  46 + }
  47 +}
src/main/java/com/bsth/server_rs/base_info/dto/BusCardDto.java 0 → 100644
  1 +package com.bsth.server_rs.base_info.dto;
  2 +
  3 +/**
  4 + * Created by panzhao on 2017/8/11.
  5 + */
  6 +public class BusCardDto {
  7 +
  8 + /**
  9 + * 16进制ID卡号
  10 + */
  11 + private String idCard;
  12 +
  13 + /**
  14 + * 车辆自编号
  15 + */
  16 + private String nbbm;
  17 +
  18 + /**
  19 + * 标签号
  20 + */
  21 + private String tagCard;
  22 +
  23 + /**
  24 + * 备注
  25 + */
  26 + private String remark;
  27 +
  28 + public String getIdCard() {
  29 + return idCard;
  30 + }
  31 +
  32 + public void setIdCard(String idCard) {
  33 + this.idCard = idCard;
  34 + }
  35 +
  36 + public String getTagCard() {
  37 + return tagCard;
  38 + }
  39 +
  40 + public void setTagCard(String tagCard) {
  41 + this.tagCard = tagCard;
  42 + }
  43 +
  44 + public String getRemark() {
  45 + return remark;
  46 + }
  47 +
  48 + public void setRemark(String remark) {
  49 + this.remark = remark;
  50 + }
  51 +
  52 + public String getNbbm() {
  53 + return nbbm;
  54 + }
  55 +
  56 + public void setNbbm(String nbbm) {
  57 + this.nbbm = nbbm;
  58 + }
  59 +}