|
@@ -1,12 +1,17 @@
|
|
|
package com.sky.ioc.service.Parking.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.sky.ioc.entity.Indeicator;
|
|
|
import com.sky.ioc.entity.Label;
|
|
|
import com.sky.ioc.entity.Cake;
|
|
|
import com.sky.ioc.entity.domain.carbon.CarbonQuota;
|
|
|
+import com.sky.ioc.entity.domain.parking.IllegalParking;
|
|
|
+import com.sky.ioc.entity.domain.parking.Park;
|
|
|
import com.sky.ioc.entity.domain.parking.Parking;
|
|
|
import com.sky.ioc.entity.params.IocParam;
|
|
|
+import com.sky.ioc.entity.params.IocTimeRange;
|
|
|
+import com.sky.ioc.mapper.IllegalParkingMapper;
|
|
|
import com.sky.ioc.mapper.ParkMapper;
|
|
|
import com.sky.ioc.mapper.ParkingMapper;
|
|
|
import com.sky.ioc.mapper.job.TokenMapper;
|
|
@@ -25,9 +30,13 @@ import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.text.DecimalFormat;
|
|
|
+import java.text.ParseException;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.ThreadLocalRandom;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* TODO 智慧停车
|
|
@@ -49,6 +58,9 @@ public class ParkingServiceImpl implements ParkingService {
|
|
|
@Autowired
|
|
|
TokenMapper tokenMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ IllegalParkingMapper illegalParkingMapper;
|
|
|
+
|
|
|
@Value("${sky.dataIp}")
|
|
|
private String dataIp;
|
|
|
|
|
@@ -59,26 +71,36 @@ public class ParkingServiceImpl implements ParkingService {
|
|
|
public ReturnMsg getCoreIndicators(IocParam iocParam) {
|
|
|
Indeicator indeicator = new Indeicator();
|
|
|
List<JSONObject> objects = indeicator.getList();
|
|
|
-
|
|
|
- /* Integer totalParking = parkingMapper.getTotalParkingByCompanyIdAndDeptId(iocParam);
|
|
|
+ //车位数量
|
|
|
+ Integer totalParking = parkingMapper.getTotalParkingByCompanyIdAndDeptId(iocParam);
|
|
|
+ //停车记录数
|
|
|
Integer totalPark = parkMapper.getTotalParkByCompanyIdAndDeptId(iocParam);
|
|
|
- Integer total = parkMapper.getTotalParkByCompanyIdAndDeptIdAndType(iocParam,1);//违停*/
|
|
|
-
|
|
|
- ThreadLocalRandom random = ThreadLocalRandom.current();
|
|
|
- int totalParking = 274;
|
|
|
- int dayParking = random.nextInt(150,170);
|
|
|
- int breakRuleParking = random.nextInt(0,10);
|
|
|
- int unParking = totalParking - dayParking;
|
|
|
+ Double avgPark = 0d;
|
|
|
+ //违停数量
|
|
|
+ Long total = illegalParkingMapper.selectCount(new LambdaQueryWrapper<IllegalParking>()
|
|
|
+ .gt(IllegalParking::getIllegalTime,iocParam.getTimeRange().getStartDate())
|
|
|
+ .le(IllegalParking::getIllegalTime,iocParam.getTimeRange().getEndDate()));
|
|
|
+ try {
|
|
|
+ Integer days = DateUtil.daysBetween(iocParam.getTimeRange().getStartDate(),iocParam.getTimeRange().getEndDate());
|
|
|
+ if(totalPark>0&&days>0){
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(totalPark);
|
|
|
+ BigDecimal avgPersonPriceDec = bigDecimal.divide(new BigDecimal(days), 2, RoundingMode.HALF_UP);
|
|
|
+ avgPark = avgPersonPriceDec.doubleValue();
|
|
|
+ }
|
|
|
+ } catch (ParseException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ int unParking = (int) (totalParking - avgPark);
|
|
|
float compare = (float) Math.random();
|
|
|
DecimalFormat decimalFormat = new DecimalFormat("#.0");
|
|
|
compare = Float.parseFloat(decimalFormat.format(compare));
|
|
|
objects.get(0).put("value",totalParking);
|
|
|
objects.get(0).put("compare",compare);
|
|
|
|
|
|
- objects.get(1).put("value",dayParking);
|
|
|
+ objects.get(1).put("value",avgPark);
|
|
|
objects.get(1).put("compare",compare);
|
|
|
|
|
|
- objects.get(2).put("value",breakRuleParking);
|
|
|
+ objects.get(2).put("value",total);
|
|
|
objects.get(2).put("compare",-compare);
|
|
|
|
|
|
objects.get(3).put("value",unParking);
|
|
@@ -96,18 +118,78 @@ public class ParkingServiceImpl implements ParkingService {
|
|
|
List<String> list = DateUtil.getBetweenDays(startStr, endStr);
|
|
|
String[] labKey = list.toArray(new String[0]);
|
|
|
// String[] labKey = {"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"};
|
|
|
- List<Label> labels1 = GeneralMethod.getInstance().dataGeneration(param, labKey);
|
|
|
- return ReturnMsg.ok(labels1);
|
|
|
+ // List<Label> labels1 = GeneralMethod.getInstance().dataGeneration(param, labKey);
|
|
|
+ List<Label> lists = new ArrayList<>();
|
|
|
+ for (int i = 0; i < labKey.length; i++) {
|
|
|
+ Label label = new Label();
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ IocParam iocParam1 = new IocParam();
|
|
|
+ IocTimeRange timeRange = new IocTimeRange();
|
|
|
+ timeRange.setStartDate(labKey[i]+" 00:00:00");
|
|
|
+ timeRange.setEndDate(labKey[i]+" 23:59:00");
|
|
|
+ iocParam1.setTimeRange(timeRange);
|
|
|
+ Integer entry = parkMapper.getTotalParkByCompanyIdAndDeptIdAndEntryTime(iocParam1);
|
|
|
+ Integer leave = parkMapper.getTotalParkByCompanyIdAndDeptIdAndDepartureTime(iocParam1);
|
|
|
+ jsonObject.put(param[0],entry);
|
|
|
+ jsonObject.put(param[1],leave);
|
|
|
+ label.setJsonObject(jsonObject);
|
|
|
+ label.setLabel(labKey[i]);
|
|
|
+ lists.add(label);
|
|
|
+ }
|
|
|
+ return ReturnMsg.ok(lists);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public ReturnMsg getVacantParkingSpace(IocParam iocParam) {
|
|
|
- return ReturnMsg.ok(FalseData.PARKINGLIST);
|
|
|
+ List<Parking> list = parkingMapper.getVacancyList(iocParam);
|
|
|
+
|
|
|
+ for(int i=0;i< list.size();i++){
|
|
|
+ Parking parking = list.get(i);
|
|
|
+ parking.setCompany("北京电信规划设计院");
|
|
|
+ List<Park> lists = parkMapper.selectList(new LambdaQueryWrapper<Park>().eq(Park::getParkingNumbers,parking.getParkingNumbers()));
|
|
|
+ //int totalHours = 0;
|
|
|
+ for(int j =0;j<lists.size();j++){
|
|
|
+ Park park = lists.get(j);
|
|
|
+ if(lists.get(j).getDepartureTime()!=null&&!lists.get(j).getDepartureTime().equals("null")){
|
|
|
+ long hours = DateUtil.hoursBetween(lists.get(j).getEntryTime(),lists.get(j).getDepartureTime());
|
|
|
+ park.setHours(hours);
|
|
|
+ // totalHours+=hours;
|
|
|
+ }else{
|
|
|
+ park.setHours(0l);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<Park> lists1 = lists.stream().sorted(Comparator.comparing(Park::getHours)).collect(Collectors.toList());
|
|
|
+ parking.setPrkingDurationLong(lists1.get(lists1.size()-1).getHours()+"h");
|
|
|
+ parking.setPrkingDurationBreak(lists1.get(0).getHours()+"h");
|
|
|
+
|
|
|
+ }
|
|
|
+ return ReturnMsg.ok(list);
|
|
|
}
|
|
|
@Override
|
|
|
public ReturnMsg getParkingSpaceDetails(IocParam iocParam) {
|
|
|
- //List<Parking> list = parkingMapper.getListByCompanyIdAndDeptId(iocParam);
|
|
|
- return ReturnMsg.ok(FalseData.PARKINGLIST);
|
|
|
+ List<Parking> list = parkingMapper.getListByCompanyIdAndDeptId(iocParam);
|
|
|
+ String[] persons = {"李劲","李良","宋明宇","陈涵亮","李超","章峰","梁松","方运诚","徐涵衍","万浩波",
|
|
|
+ "周浩广","许鸿博","荣浩博","许鸿畴","徐瀚文","陈浩初","程涵煦","许鸿与","徐廖文","吴初"};
|
|
|
+ for(int i=0;i< list.size();i++){
|
|
|
+ Parking parking = list.get(i);
|
|
|
+ int flag = i;
|
|
|
+ if(i>=20){
|
|
|
+ flag = i%20;
|
|
|
+ }
|
|
|
+ parking.setPeople(persons[flag]);
|
|
|
+ parking.setCompany("北京电信规划设计院");
|
|
|
+ List<Park> lists = parkMapper.selectList(new LambdaQueryWrapper<Park>().eq(Park::getParkingNumbers,parking.getParkingNumbers()));
|
|
|
+ int totalHours = 0;
|
|
|
+ for(int j =0;j<lists.size();j++){
|
|
|
+ if(lists.get(j).getDepartureTime()!=null&&!lists.get(j).getDepartureTime().equals("null")){
|
|
|
+ long hours = DateUtil.hoursBetween(lists.get(j).getEntryTime(),lists.get(j).getDepartureTime());
|
|
|
+ totalHours+=hours;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ parking.setPrkingDurationLong(totalHours+"h");
|
|
|
+
|
|
|
+ }
|
|
|
+ return ReturnMsg.ok(list);
|
|
|
}
|
|
|
|
|
|
@Override
|