|
|
@@ -4,8 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.zksy.common.core.domain.Result;
|
|
|
import com.zksy.visualization.config.IccConfigProperty;
|
|
|
-import com.zksy.visualization.domain.request.ParkingListRequest;
|
|
|
-import com.zksy.visualization.domain.request.QueryVehicleListRequest;
|
|
|
+import com.zksy.visualization.domain.request.*;
|
|
|
import com.zksy.visualization.domain.response.*;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
@@ -17,6 +16,13 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
+
|
|
|
/**
|
|
|
* @author Administrator
|
|
|
* @version 1.0
|
|
|
@@ -302,4 +308,252 @@ public class ParkingManageController {
|
|
|
}
|
|
|
return Result.error("车辆列表查询失败");
|
|
|
}
|
|
|
+
|
|
|
+ @ApiOperation(value = "车辆进出信息查询")
|
|
|
+ @GetMapping("/entryExitInfo")
|
|
|
+ public Result entryExitInfo(EntryExitInfoRequest queryRequest){
|
|
|
+ String authorization = redisTemplate
|
|
|
+ .opsForValue()
|
|
|
+ .get("Authorization:" + iccConfigProperty.getUsername());
|
|
|
+ HttpUrl url = new HttpUrl.Builder()
|
|
|
+ .scheme("https")
|
|
|
+ .host(iccConfigProperty.getHost())
|
|
|
+ .addPathSegments("/evo-apigw/ipms/caraccess/find/his")
|
|
|
+ .addQueryParameter("pageNum", String.valueOf(queryRequest.getPageNum()))
|
|
|
+ .addQueryParameter("pageSize", String.valueOf(queryRequest.getPageSize()))
|
|
|
+ .addQueryParameter("entranceChannelIds", queryRequest.getEntranceChannelIds() == null ? "" : queryRequest.getEntranceChannelIds())
|
|
|
+ .addQueryParameter("exitusChannelIds", queryRequest.getExitusChannelIds() == null ? "" : queryRequest.getExitusChannelIds())
|
|
|
+ .addQueryParameter("carType", queryRequest.getCarType() == null ? "" : String.valueOf(queryRequest.getCarType()))
|
|
|
+ .addQueryParameter("departmentId", queryRequest.getDepartmentId() == null ? "" : String.valueOf(queryRequest.getDepartmentId()))
|
|
|
+ .addQueryParameter("etcType", queryRequest.getEtcType() == null ? "" : String.valueOf(queryRequest.getEtcType()))
|
|
|
+ .addQueryParameter("ownerCode", queryRequest.getOwnerCode() == null ? "" : queryRequest.getOwnerCode())
|
|
|
+ .addQueryParameter("ownerLikeStr", queryRequest.getOwnerLikeStr() == null ? "" : queryRequest.getOwnerLikeStr())
|
|
|
+ .addQueryParameter("parkingLotCodes", queryRequest.getParkingLotCodes() == null ? "" : queryRequest.getParkingLotCodes())
|
|
|
+ .addQueryParameter("enterCarNumLikeStr", queryRequest.getEnterCarNumLikeStr() == null ? "" : queryRequest.getEnterCarNumLikeStr())
|
|
|
+ .addQueryParameter("exitCarNumLikeStr", queryRequest.getExitCarNumLikeStr() == null ? "" : queryRequest.getExitCarNumLikeStr())
|
|
|
+ .addQueryParameter("enterTimeStrLeft", queryRequest.getEnterTimeStrLeft() == null ? "" : queryRequest.getEnterTimeStrLeft())
|
|
|
+ .addQueryParameter("enterTimeStrRight", queryRequest.getEnterTimeStrRight() == null ? "" : queryRequest.getEnterTimeStrRight())
|
|
|
+ .addQueryParameter("exitTimeStrLeft", queryRequest.getExitTimeStrLeft() == null ? "" : queryRequest.getExitTimeStrLeft())
|
|
|
+ .addQueryParameter("exitTimeStrRight", queryRequest.getExitTimeStrRight() == null ? "" : queryRequest.getExitTimeStrRight())
|
|
|
+
|
|
|
+ .build();
|
|
|
+
|
|
|
+ Request request = new Request.Builder()
|
|
|
+ .url(url)
|
|
|
+ .addHeader("Authorization", authorization)
|
|
|
+ .build();
|
|
|
+ try {
|
|
|
+ Response response = httpClient.newCall(request).execute();
|
|
|
+ if(!response.isSuccessful()){
|
|
|
+ return Result.error("车辆列表查询失败");
|
|
|
+ }
|
|
|
+ ResponseBody responseBody = response.body();
|
|
|
+ if (responseBody != null) {
|
|
|
+ String responseString = responseBody.string();
|
|
|
+ ObjectMapper objectMapper = new ObjectMapper();
|
|
|
+ JsonNode rootNode = objectMapper.readTree(responseString);
|
|
|
+ JsonNode success = rootNode.path("success");
|
|
|
+ if(success.isBoolean() && success.asBoolean()) {
|
|
|
+ JsonNode dataNode = rootNode.path("data");
|
|
|
+ if (dataNode.isObject()) {
|
|
|
+ return Result.ok(dataNode);
|
|
|
+ } else {
|
|
|
+ return Result.ok(null);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ JsonNode errMsgNode = rootNode.path("errMsg");
|
|
|
+ String errMsg = errMsgNode.isTextual() ? errMsgNode.asText() : "未知错误";
|
|
|
+ return Result.error(errMsg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("车辆进出信息查询失败:{}", e);
|
|
|
+ }
|
|
|
+ return Result.error("车辆进出信息查询");
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "统计车辆进出总数")
|
|
|
+ @GetMapping("/importExportStatistics")
|
|
|
+ public Result importExportStatistics(ImportExportStatisticsRequest queryRequest){
|
|
|
+ String authorization = redisTemplate
|
|
|
+ .opsForValue()
|
|
|
+ .get("Authorization:" + iccConfigProperty.getUsername());
|
|
|
+ HttpUrl url = new HttpUrl.Builder()
|
|
|
+ .scheme("https")
|
|
|
+ .host(iccConfigProperty.getHost())
|
|
|
+ .addPathSegments("/evo-apigw/ipms/caraccess/find/hisCount")
|
|
|
+ // 添加查询参数时检查null值并处理日期格式化
|
|
|
+ .addQueryParameter("entranceChannelIds", nullToEmpty(queryRequest.getEntranceChannelIds()))
|
|
|
+ .addQueryParameter("exitusChannelIds", nullToEmpty(queryRequest.getExitusChannelIds()))
|
|
|
+ .addQueryParameter("carType", valueOrNull(queryRequest.getCarType()))
|
|
|
+ .addQueryParameter("departmentId", valueOrNull(queryRequest.getDepartmentId()))
|
|
|
+ .addQueryParameter("etcType", valueOrNull(queryRequest.getEtcType()))
|
|
|
+ .addQueryParameter("ownerCode", nullToEmpty(queryRequest.getOwnerCode()))
|
|
|
+ .addQueryParameter("ownerLikeStr", nullToEmpty(queryRequest.getOwnerLikeStr()))
|
|
|
+ .addQueryParameter("parkingLotCodes", nullToEmpty(queryRequest.getParkingLotCodes()))
|
|
|
+ .addQueryParameter("enterCarNumLikeStr", nullToEmpty(queryRequest.getEnterCarNumLikeStr()))
|
|
|
+ .addQueryParameter("exitCarNumLikeStr", nullToEmpty(queryRequest.getExitCarNumLikeStr()))
|
|
|
+ .addQueryParameter("enterTimeStrLeft", formatDate(queryRequest.getEnterTimeStrLeft()))
|
|
|
+ .addQueryParameter("enterTimeStrRight", formatDate(queryRequest.getEnterTimeStrRight()))
|
|
|
+ .addQueryParameter("exitTimeStrLeft", formatDate(queryRequest.getExitTimeStrLeft()))
|
|
|
+ .addQueryParameter("exitTimeStrRight", formatDate(queryRequest.getExitTimeStrRight()))
|
|
|
+ .build();
|
|
|
+
|
|
|
+ Request request = new Request.Builder()
|
|
|
+ .url(url)
|
|
|
+ .addHeader("Authorization", authorization)
|
|
|
+ .build();
|
|
|
+ try {
|
|
|
+ Response response = httpClient.newCall(request).execute();
|
|
|
+ if(!response.isSuccessful()){
|
|
|
+ return Result.error("统计车辆进出总数失败");
|
|
|
+ }
|
|
|
+ ResponseBody responseBody = response.body();
|
|
|
+ if (responseBody != null) {
|
|
|
+ String responseString = responseBody.string();
|
|
|
+ ObjectMapper objectMapper = new ObjectMapper();
|
|
|
+ JsonNode rootNode = objectMapper.readTree(responseString);
|
|
|
+ JsonNode success = rootNode.path("success");
|
|
|
+ if(success.isBoolean() && success.asBoolean()) {
|
|
|
+ JsonNode dataNode = rootNode.path("data");
|
|
|
+ if (dataNode != null) {
|
|
|
+ return Result.ok(dataNode);
|
|
|
+ } else {
|
|
|
+ return Result.ok(null);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ JsonNode errMsgNode = rootNode.path("errMsg");
|
|
|
+ String errMsg = errMsgNode.isTextual() ? errMsgNode.asText() : "未知错误";
|
|
|
+ return Result.error(errMsg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("统计车辆进出总数失败:{}", e);
|
|
|
+ }
|
|
|
+ return Result.error("统计车辆进出总数");
|
|
|
+ }
|
|
|
+ @ApiOperation(value = "抓拍记录信息")
|
|
|
+ @GetMapping("/captureRecord")
|
|
|
+ public Result captureRecord(CaptureRecordResponse queryRequest){
|
|
|
+ String authorization = redisTemplate
|
|
|
+ .opsForValue()
|
|
|
+ .get("Authorization:" + iccConfigProperty.getUsername());
|
|
|
+ HttpUrl url = new HttpUrl.Builder()
|
|
|
+ .scheme("https")
|
|
|
+ .host(iccConfigProperty.getHost())
|
|
|
+ .addPathSegments("/evo-apigw/ipms/carcapture/find/conditions")
|
|
|
+ // 添加查询参数时检查null值并处理日期格式化
|
|
|
+ .addQueryParameter("pageNum", String.valueOf(queryRequest.getPageNum()))
|
|
|
+ .addQueryParameter("pageSize", String.valueOf(queryRequest.getPageSize()))
|
|
|
+ .addQueryParameter("carDirect", nullToEmpty(queryRequest.getCarDirect()))
|
|
|
+ .addQueryParameter("queryTimeBegin", formatDate(queryRequest.getQueryTimeBegin()))
|
|
|
+ .addQueryParameter("queryTimeEnd", formatDate(queryRequest.getQueryTimeEnd()))
|
|
|
+ .addQueryParameter("carNumLikeStr", nullToEmpty(queryRequest.getCarNumLikeStr()))
|
|
|
+ .addQueryParameter("devChnId", nullToEmpty(queryRequest.getDevChnId()))
|
|
|
+ .addQueryParameter("ownerName", nullToEmpty(queryRequest.getOwnerName()))
|
|
|
+ .build();
|
|
|
+
|
|
|
+ Request request = new Request.Builder()
|
|
|
+ .url(url)
|
|
|
+ .addHeader("Authorization", authorization)
|
|
|
+ .build();
|
|
|
+ try {
|
|
|
+ Response response = httpClient.newCall(request).execute();
|
|
|
+ if(!response.isSuccessful()){
|
|
|
+ return Result.error("抓拍记录信息失败");
|
|
|
+ }
|
|
|
+ ResponseBody responseBody = response.body();
|
|
|
+ if (responseBody != null) {
|
|
|
+ String responseString = responseBody.string();
|
|
|
+ ObjectMapper objectMapper = new ObjectMapper();
|
|
|
+ JsonNode rootNode = objectMapper.readTree(responseString);
|
|
|
+ JsonNode success = rootNode.path("success");
|
|
|
+ if(success.isBoolean() && success.asBoolean()) {
|
|
|
+ JsonNode dataNode = rootNode.path("data");
|
|
|
+ if (dataNode != null) {
|
|
|
+ return Result.ok(dataNode);
|
|
|
+ } else {
|
|
|
+ return Result.ok(null);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ JsonNode errMsgNode = rootNode.path("errMsg");
|
|
|
+ String errMsg = errMsgNode.isTextual() ? errMsgNode.asText() : "未知错误";
|
|
|
+ return Result.error(errMsg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("抓拍记录信息失败:{}", e);
|
|
|
+ }
|
|
|
+ return Result.error("抓拍记录信息");
|
|
|
+ }
|
|
|
+ @ApiOperation(value = "统计抓拍记录总数")
|
|
|
+ @GetMapping("/statisticalSnapshotRecords")
|
|
|
+ public Result statisticalSnapshotRecords(StatisticalSnapshotRecordsRequest queryRequest){
|
|
|
+ String authorization = redisTemplate
|
|
|
+ .opsForValue()
|
|
|
+ .get("Authorization:" + iccConfigProperty.getUsername());
|
|
|
+ HttpUrl url = new HttpUrl.Builder()
|
|
|
+ .scheme("https")
|
|
|
+ .host(iccConfigProperty.getHost())
|
|
|
+ .addPathSegments("/evo-apigw/ipms/carcapture/find/conditionsCount")
|
|
|
+ // 添加查询参数时检查null值
|
|
|
+ .addEncodedQueryParameter("carDirect", nullToEmpty(queryRequest.getCarDirect()))
|
|
|
+ .addEncodedQueryParameter("queryTimeBegin", nullToEmpty(queryRequest.getQueryTimeBegin()))
|
|
|
+ .addEncodedQueryParameter("queryTimeEnd", nullToEmpty(queryRequest.getQueryTimeEnd()))
|
|
|
+ .addEncodedQueryParameter("carNumLikeStr", nullToEmpty(queryRequest.getCarNumLikeStr()))
|
|
|
+ .addEncodedQueryParameter("devChnId", nullToEmpty(queryRequest.getDevChnId()))
|
|
|
+ .addEncodedQueryParameter("ownerName", nullToEmpty(queryRequest.getOwnerName()))
|
|
|
+ .build();
|
|
|
+
|
|
|
+ Request request = new Request.Builder()
|
|
|
+ .url(url)
|
|
|
+ .addHeader("Authorization", authorization)
|
|
|
+ .build();
|
|
|
+ try {
|
|
|
+ Response response = httpClient.newCall(request).execute();
|
|
|
+ if(!response.isSuccessful()){
|
|
|
+ return Result.error("统计抓拍记录总数失败");
|
|
|
+ }
|
|
|
+ ResponseBody responseBody = response.body();
|
|
|
+ if (responseBody != null) {
|
|
|
+ String responseString = responseBody.string();
|
|
|
+ ObjectMapper objectMapper = new ObjectMapper();
|
|
|
+ JsonNode rootNode = objectMapper.readTree(responseString);
|
|
|
+ JsonNode success = rootNode.path("success");
|
|
|
+ if(success.isBoolean() && success.asBoolean()) {
|
|
|
+ JsonNode dataNode = rootNode.path("data");
|
|
|
+ if (dataNode != null) {
|
|
|
+ return Result.ok(dataNode);
|
|
|
+ } else {
|
|
|
+ return Result.ok(null);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ JsonNode errMsgNode = rootNode.path("errMsg");
|
|
|
+ String errMsg = errMsgNode.isTextual() ? errMsgNode.asText() : "未知错误";
|
|
|
+ return Result.error(errMsg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("统计抓拍记录总数失败:{}", e);
|
|
|
+ }
|
|
|
+ return Result.error("统计抓拍记录总数");
|
|
|
+ }
|
|
|
+ // 辅助方法:将null转换为空字符串
|
|
|
+ private String nullToEmpty(String str) {
|
|
|
+ return str == null ? "" : str;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 辅助方法:将非空的Integer或Long值转换为字符串,否则返回null
|
|
|
+ private String valueOrNull(Number number) {
|
|
|
+ return number == null ? null : String.valueOf(number);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 辅助方法:格式化日期,若日期为null则返回null
|
|
|
+ private String formatDate(Date date) {
|
|
|
+ if (date == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ return sdf.format(date);
|
|
|
+ }
|
|
|
}
|