Browse Source

增加从停车平台获取数据接口

logistics
ma 4 years ago
parent
commit
65c5b390a4
  1. 48
      logistics/src/main/java/com/ccsens/logistics/Util/Constant.java
  2. 12
      logistics/src/main/java/com/ccsens/logistics/api/CarIdentificationController.java
  3. 10
      logistics/src/main/java/com/ccsens/logistics/bean/dto/CarIdentificationDto.java
  4. 2
      logistics/src/main/java/com/ccsens/logistics/bean/dto/CarRecordDto.java
  5. 7
      logistics/src/main/java/com/ccsens/logistics/persist/dao/LogisticsCarRecordDao.java
  6. 14
      logistics/src/main/java/com/ccsens/logistics/scheduled/ScheduledService.java
  7. 190
      logistics/src/main/java/com/ccsens/logistics/service/CarIdentificationService.java
  8. 7
      logistics/src/main/java/com/ccsens/logistics/service/ICarIdentificationService.java
  9. 16
      logistics/src/main/resources/mapper_dao/LogisticsCarRecordDao.xml

48
logistics/src/main/java/com/ccsens/logistics/Util/Constant.java

@ -84,4 +84,52 @@ public class Constant {
public static final String MEDIUM_CAR = "面包车";
public static final Long MEDIUM_CAR_WEIGHT = 20L;
//智慧停车系统车辆类型
/**
* 临时车:20吨
*/
public static final String TEMPORARY_CAR_D = "临时车D";
/**
* 临时车A:0吨
*/
public static final String TEMPORARY_CAR_A = "临时车A";
/**
* 临时车C1吨
*/
public static final String TEMPORARY_CAR_C = "临时车C";
/**
* 临时车B:1吨
*/
public static final String TEMPORARY_CAR_B = "临时车B";
/**
* 免费车A 0吨
*/
public static final String FREE_CAR_A = "免费车A";
/**
* 免费车B:20吨
*/
public static final String FREE_CAR_B = "免费车B";
/**
* 月租车C:20吨
*/
public static final String MONTHLY_CAR_C = "月租车C";
/**
* 月租车A:1吨
*/
public static final String MONTHLY_CAR_A = "月租车A";
/**
* 月租车B:20吨
*/
public static final String MONTHLY_CAR_B = "月租车B";
/**
* 车重
*/
public static final Long CAR_WEIGHT_ONE = 1L;
public static final Long CAR_WEIGHT_ZERO = 0L;
public static final Long CAR_WEIGHT_TWENTY = 20L;
}

12
logistics/src/main/java/com/ccsens/logistics/api/CarIdentificationController.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.ccsens.logistics.service.ICarIdentificationService;
import com.ccsens.util.JsonResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -11,6 +12,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Map;
/**
@ -32,4 +35,13 @@ public class CarIdentificationController {
log.info("车辆识别摄像头数据对接:{}",jsonObject);
return jsonObject;
}
@ApiOperation(value = "请求智慧云停车管理系统接口", notes = "mz:请求智慧云停车管理系统接口")
@RequestMapping(value = "/requestCarPort", method = RequestMethod.POST ,produces = {"application/json;charset=UTF-8"})
public JsonResponse requestCarPort() throws IOException {
log.info("请求智慧云停车管理系统接口开始");
carIdentificationService.requestCarPort();
log.info("请求智慧云停车管理系统接口结束");
return JsonResponse.newInstance().ok();
}
}

10
logistics/src/main/java/com/ccsens/logistics/bean/dto/CarIdentificationDto.java

@ -48,4 +48,14 @@ public class CarIdentificationDto {
private String closeup_pic;
}
@Data
@ApiModel("车辆识别摄像头提供的信息")
public static class CarLogin{
@ApiModelProperty("账号")
private String username;
@ApiModelProperty("密码")
private String passwrod;
}
}

2
logistics/src/main/java/com/ccsens/logistics/bean/dto/CarRecordDto.java

@ -13,6 +13,8 @@ public class CarRecordDto {
@Data
@ApiModel(value = "手动添加车辆记录")
public static class AddCarRecord{
@ApiModelProperty("记录时间")
private Long recordId;
@ApiModelProperty("记录时间")
private Long recordTime;
@ApiModelProperty("车型(0-小型车,1-中型车,2-大型车)")

7
logistics/src/main/java/com/ccsens/logistics/persist/dao/LogisticsCarRecordDao.java

@ -1,5 +1,6 @@
package com.ccsens.logistics.persist.dao;
import com.ccsens.logistics.bean.dto.CarRecordDto;
import com.ccsens.logistics.bean.vo.MbpsVo;
import com.ccsens.logistics.persist.mapper.LogisticsCarRecordMapper;
import io.swagger.models.auth.In;
@ -78,4 +79,10 @@ public interface LogisticsCarRecordDao extends LogisticsCarRecordMapper {
* @return 该时间车辆出货量
*/
List<MbpsVo.WeightOfOutByTime> selWeightOfOutByTime(@Param("queryType") Byte queryType,@Param("countArr") String[] countArr,@Param("nowDate") String nowDate);
/**
* 批量加入车辆记录
* @param carData 车辆记录list
*/
void insertRecordList(List<CarRecordDto.AddCarRecord> carData);
}

14
logistics/src/main/java/com/ccsens/logistics/scheduled/ScheduledService.java

@ -1,6 +1,7 @@
package com.ccsens.logistics.scheduled;
import com.ccsens.logistics.service.ICarIdentificationService;
import com.ccsens.logistics.service.IHttpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.EnableScheduling;
@ -9,6 +10,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
/**
* @author
@ -21,11 +23,21 @@ public class ScheduledService {
@Resource
private IHttpService iHttpService;
@Resource
private ICarIdentificationService carIdentificationService;
@Scheduled(cron = "*/30 * * * * ?")
public void runfirst(){
iHttpService.getTemperatureAndHumidity();
}
@Scheduled(cron = "0 */10 * * * ?")
public void runSaveCarRecord(){
try {
log.info("开始获取停车平台的数据");
carIdentificationService.requestCarPort();
} catch (IOException e) {
log.info("查询保存车辆记录的定时任务异常",e);
}
}
}

190
logistics/src/main/java/com/ccsens/logistics/service/CarIdentificationService.java

@ -2,21 +2,49 @@ package com.ccsens.logistics.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Snowflake;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ccsens.logistics.bean.dto.CarIdentificationDto;
import com.ccsens.logistics.Util.Constant;
import com.ccsens.logistics.bean.dto.CarRecordDto;
import com.ccsens.logistics.bean.po.LogisticsCarRecord;
import com.ccsens.logistics.persist.dao.LogisticsCarRecordDao;
import com.ccsens.util.Base64FileUtil;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.PropUtil;
import com.ccsens.util.RestTemplateUtil;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.StatusLine;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @author
@ -89,5 +117,165 @@ public class CarIdentificationService implements ICarIdentificationService{
return null;
}
/**
* 请求智慧云停车管理系统接口
*/
@Override
public void requestCarPort() throws IOException {
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//调用登录接口,获取token
String token = getToken(httpClient);
//获取车辆类型
Map<String, String> carType = getCarType(httpClient, token);
//查询停车记录
List<CarRecordDto.AddCarRecord> carData = getCarData(httpClient, token, carType);
carRecordDao.insertRecordList(carData);
}
/**
*获取智慧云停车管理系统的token
* @return token
*/
private String getToken(CloseableHttpClient httpClient){
try {
String loginUrl = "http://120.78.14.85:8081/cloud/user/dologin";
HttpPost httPost = new HttpPost(loginUrl);
httPost.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
List<NameValuePair> param = new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("username", "1311786"));
param.add(new BasicNameValuePair("password", "eir/kjbPIHGGrGamcZVlDg=="));
httPost.setEntity(new UrlEncodedFormEntity(param));
CloseableHttpResponse execute = httpClient.execute(httPost);
HttpEntity entity = execute.getEntity();
String result = EntityUtils.toString(entity);
JSONObject jsonObject = JSONObject.parseObject(result);
JSONObject user = jsonObject.getJSONObject("user");
String token = user.getString("token");
return token;
}catch (Exception e){
log.info("获取停车系统token失败",e);
}
return null;
}
/**
*获取智慧云停车管理系统的车辆类型
* @return 车辆类型carType(value_no)为key value_name为value
*/
private Map<String,String> getCarType(CloseableHttpClient httpClient,String token){
try {
Map<String,String> carTypeMap = new HashMap<>();
String queryType = "http://120.78.14.85:8081/cloud/getdata/getCardType?token="+token+"&comid=121964&showTempCar=showTempCar";
HttpGet httpGet = new HttpGet(queryType);
httpGet.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
CloseableHttpResponse carType = httpClient.execute(httpGet);
String typeResult = EntityUtils.toString(carType.getEntity());
JSONArray jsonArray = JSONObject.parseArray(typeResult);
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
String value_no = jsonObject1.getString("value_no");
String value_name = jsonObject1.getString("value_name");
carTypeMap.put(value_no,value_name);
}
return carTypeMap;
}catch (Exception e){
log.info("获取智慧云停车管理系统的车辆类型失败",e);
}
return null;
}
/**
*获取智慧云停车管理系统的车辆出入数据
* @return 车辆类型carType(value_no)为key value_name为value
*/
private List<CarRecordDto.AddCarRecord> getCarData(CloseableHttpClient httpClient, String token,Map<String,String> carType){
List<CarRecordDto.AddCarRecord> carRecords = new ArrayList<>();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date end = new Date(System.currentTimeMillis());
Date start = new Date(System.currentTimeMillis()-600000);
String endTime = simpleDateFormat.format(end);
String startTime = simpleDateFormat.format(start);
String timeParam = startTime+"至"+endTime;
try {
String queryRecord = "http://120.78.14.85:8081/cloud/OrderManagePark/query";
HttpPost httPostRecord = new HttpPost(queryRecord);
httPostRecord.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
List<NameValuePair> paramRecord = new ArrayList<NameValuePair>();
paramRecord.add(new BasicNameValuePair("token", token));
paramRecord.add(new BasicNameValuePair("comid", "121964"));
paramRecord.add(new BasicNameValuePair("groupid", "120353"));
paramRecord.add(new BasicNameValuePair("date", timeParam));
httPostRecord.setEntity(new UrlEncodedFormEntity(paramRecord, StandardCharsets.UTF_8));
CloseableHttpResponse executeRecord = httpClient.execute(httPostRecord);
HttpEntity record = executeRecord.getEntity();
String resultRecord = EntityUtils.toString(record);
JSONObject jsonObjectRecord = JSONObject.parseObject(resultRecord);
JSONArray rows = jsonObjectRecord.getJSONArray("rows");
for (int i = 0; i < rows.size(); i++) {
JSONObject row = rows.getJSONObject(i);
CarRecordDto.AddCarRecord inCar = new CarRecordDto.AddCarRecord();
CarRecordDto.AddCarRecord outCar = new CarRecordDto.AddCarRecord();
//添加进的车
inCar.setRecordId(snowflake.nextId());
inCar.setInOut((byte)0);
inCar.setCarType(carType.get(row.getString("cartype")));
inCar.setLicensePlate(row.getString("vehicle_no"));
inCar.setRecordTime(row.getLong("intime")*1000);
//添加出的车
outCar.setRecordId(snowflake.nextId());
outCar.setInOut((byte)1);
outCar.setCarType(carType.get(row.getString("cartype")));
outCar.setLicensePlate(row.getString("vehicle_no"));
outCar.setRecordTime(row.getLong("outtime")*1000);
switch (carType.get(row.getString("cartype"))){
case Constant.FREE_CAR_B:
case Constant.TEMPORARY_CAR_D:
case Constant.MONTHLY_CAR_B:
case Constant.MONTHLY_CAR_C:
inCar.setCarWeight(Constant.CAR_WEIGHT_TWENTY);
outCar.setCarWeight(Constant.CAR_WEIGHT_TWENTY);
break;
case Constant.TEMPORARY_CAR_B:
case Constant.TEMPORARY_CAR_C:
case Constant.MONTHLY_CAR_A:
inCar.setCarWeight(Constant.CAR_WEIGHT_ONE);
outCar.setCarWeight(Constant.CAR_WEIGHT_ONE);
break;
default:
inCar.setCarWeight(Constant.CAR_WEIGHT_ZERO);
outCar.setCarWeight(Constant.CAR_WEIGHT_ZERO);
break;
}
carRecords.add(inCar);
carRecords.add(outCar);
}
return carRecords;
}catch (Exception e){
log.info("获取智慧云停车管理系统的车辆类型失败",e);
}
return null;
}
}

7
logistics/src/main/java/com/ccsens/logistics/service/ICarIdentificationService.java

@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Map;
/**
@ -17,4 +19,9 @@ public interface ICarIdentificationService {
* @return 响应的json
*/
JSONObject addCarInformation(HttpServletResponse httpServletResponse, Map<String, String> param);
/**
* 请求智慧云停车管理系统接口
*/
void requestCarPort() throws IOException;
}

16
logistics/src/main/resources/mapper_dao/LogisticsCarRecordDao.xml

@ -194,4 +194,20 @@
GROUP BY s.date ORDER BY s.date
</select>
<insert id="insertRecordList">
INSERT INTO t_logistics_car_record
(
id,
in_out,
car_type,
license_plate,
car_weight,
record_time
)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.recordId},#{item.inOut},#{item.carType},#{item.licensePlate},#{item.carWeight},#{item.recordTime})
</foreach>
</insert>
</mapper>
Loading…
Cancel
Save