Sfoglia il codice sorgente

数智双碳-车辆排放

ZhangManMan 2 anni fa
parent
commit
18df751dac

+ 5 - 3
src/main/java/com/sky/ioc/controller/carbon/VehicleController.java

@@ -1,6 +1,7 @@
 package com.sky.ioc.controller.carbon;
 
 import com.sky.ioc.entity.params.IocParam;
+import com.sky.ioc.service.carbon.CarCarbonService;
 import com.sky.ioc.service.carbon.CarbonService;
 import com.sky.ioc.tool.ReturnMsg;
 import io.swagger.annotations.Api;
@@ -32,20 +33,21 @@ public class VehicleController {
     @Autowired
     private CarbonService carbonService;
 
-
+    @Autowired
+    CarCarbonService carCarbonService;
 
 
     @ApiOperation("核心指标")
     @PostMapping("/getVehicleCoreIndicators")
     public ReturnMsg getVehicleCoreIndicators(@RequestBody IocParam iocParam){
-        return carbonService.getVehicleCoreIndicators(iocParam);
+        return carCarbonService.getVehicleCoreIndicators(iocParam);
     }
 
 
     @ApiOperation("车辆排放情况")
     @PostMapping("/getVehicleInfo")
     public ReturnMsg getVehicleInfo(@RequestBody IocParam iocParam){
-        return carbonService.getVehicleInfo(iocParam);
+        return carCarbonService.getVehicleInfo(iocParam);
     }
 
 

+ 2 - 0
src/main/java/com/sky/ioc/entity/domain/carbon/CarCarbon.java

@@ -36,4 +36,6 @@ public class CarCarbon {
      * 部门id
      * */
     private Integer deptId;
+
+    private Integer companyId;
 }

+ 46 - 0
src/main/java/com/sky/ioc/mapper/carbon/CarCarbonMapper.java

@@ -0,0 +1,46 @@
+package com.sky.ioc.mapper.carbon;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sky.ioc.entity.domain.carbon.CarCarbon;
+import com.sky.ioc.entity.params.IocParam;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface CarCarbonMapper extends BaseMapper<CarCarbon> {
+
+    @Select("<script> " +
+            "select coalesce(sum(discharge),0) from car_carbon where  1=1 " +
+            "<if test='iocParam!=null and iocParam.timeRange!=null '>" +
+            "and time between #{iocParam.timeRange.startDate} and #{iocParam.timeRange.endDate} " +
+            "</if>" +
+            "<if test='iocParam!=null and iocParam.deptId!=null '>" +
+            "and dept_id = #{iocParam.deptId} " +
+            "</if>" +
+            "</script>")
+    long getDischargeByTime(@Param("iocParam")IocParam iocParam);
+
+    @Select("<script> " +
+            "select coalesce(sum(discharge),0) from car_carbon where  1=1 " +
+            "<if test='iocParam!=null and iocParam.timeRange!=null '>" +
+            "and time between #{iocParam.timeRange.startDate} and #{iocParam.timeRange.endDate} " +
+            "</if>" +
+            "<if test='iocParam!=null and iocParam.deptId!=null '>" +
+            "and dept_id = #{iocParam.deptId} " +
+            "</if>" +
+            "</script>")
+    long getMileageByTime(@Param("iocParam")IocParam iocParam);
+
+    @Select("<script> " +
+            "select coalesce(sum(hours),0) from car_carbon where  1=1 " +
+            "<if test='iocParam!=null and iocParam.timeRange!=null '>" +
+            "and time between #{iocParam.timeRange.startDate} and #{iocParam.timeRange.endDate} " +
+            "</if>" +
+            "<if test='iocParam!=null and iocParam.deptId!=null '>" +
+            "and dept_id = #{iocParam.deptId} " +
+            "</if>" +
+            "</script>")
+    long getHoursByTime(@Param("iocParam")IocParam iocParam);
+
+}

+ 9 - 0
src/main/java/com/sky/ioc/service/carbon/CarCarbonService.java

@@ -0,0 +1,9 @@
+package com.sky.ioc.service.carbon;
+
+import com.sky.ioc.entity.params.IocParam;
+import com.sky.ioc.tool.ReturnMsg;
+
+public interface CarCarbonService {
+    ReturnMsg getVehicleCoreIndicators(IocParam iocParam);
+    ReturnMsg  getVehicleInfo(IocParam iocParam);
+}

+ 0 - 3
src/main/java/com/sky/ioc/service/carbon/CarbonService.java

@@ -36,9 +36,6 @@ public interface CarbonService {
 
     ReturnMsg  getCarbonProportion(IocParam iocParam);
 
-    ReturnMsg  getVehicleCoreIndicators(IocParam iocParam);
-
-    ReturnMsg  getVehicleInfo(IocParam iocParam);
 
     ReturnMsg  getVehicleInfoOrder(IocParam iocParam);
 

+ 63 - 0
src/main/java/com/sky/ioc/service/carbon/impl/CarCarbonServiceImpl.java

@@ -0,0 +1,63 @@
+package com.sky.ioc.service.carbon.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.sky.ioc.entity.Indeicator;
+import com.sky.ioc.entity.Label;
+import com.sky.ioc.entity.params.IocParam;
+import com.sky.ioc.mapper.carbon.CarCarbonMapper;
+import com.sky.ioc.service.carbon.CarCarbonService;
+import com.sky.ioc.tool.DateUtil;
+import com.sky.ioc.tool.GeneralMethod;
+import com.sky.ioc.tool.MathUtils;
+import com.sky.ioc.tool.ReturnMsg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.DecimalFormat;
+import java.util.List;
+
+@Service
+public class CarCarbonServiceImpl implements CarCarbonService {
+
+    @Autowired
+    CarCarbonMapper carCarbonMapper;
+
+    @Override
+    public ReturnMsg getVehicleCoreIndicators(IocParam iocParam) {
+        Indeicator indeicator = new Indeicator();
+        List<JSONObject> objects = indeicator.getList();
+        int days = DateUtil.daysBetween(iocParam.getTimeRange().getStartDate(),iocParam.getTimeRange().getEndDate());
+        long totalMile = carCarbonMapper.getMileageByTime(iocParam);
+        long totalDischarge = carCarbonMapper.getDischargeByTime(iocParam);
+        long totalHours = carCarbonMapper.getHoursByTime(iocParam);
+        float compare = (float) Math.random();
+        DecimalFormat decimalFormat = new DecimalFormat("#.0");
+        compare = Float.parseFloat(decimalFormat.format(compare));
+
+        objects.get(0).put("value",totalMile);
+        objects.get(0).put("compare",compare);
+
+        objects.get(1).put("value", MathUtils.division(totalMile,days,2));
+        objects.get(1).put("compare",compare);
+
+        objects.get(2).put("value",MathUtils.division(totalHours,days,2));
+        objects.get(2).put("compare",compare);
+
+        objects.get(3).put("value",MathUtils.division(totalDischarge,days,2));
+        objects.get(3).put("compare",compare);
+        indeicator.setWorthAttention("节能减排绿色出行");
+        indeicator.setList(objects);
+        return ReturnMsg.ok(indeicator);
+    }
+
+    @Override
+    public ReturnMsg getVehicleInfo(IocParam iocParam) {
+        String[] param = {"中迅","北京规划院","郑分","广分","上分","成分"};
+        String startStr = iocParam.getTimeRange().getStartDate();
+        String endStr = iocParam.getTimeRange().getEndDate();
+        List<String> lists = DateUtil.getBetweenDays(startStr, endStr);
+        String[] labKey = lists.toArray(new String[0]);
+        List<Label> labels1 = GeneralMethod.getInstance().dataGeneration(param, labKey);
+        return ReturnMsg.ok(labels1);
+    }
+}

+ 0 - 39
src/main/java/com/sky/ioc/service/carbon/impl/CarbonServiceImpl.java

@@ -418,48 +418,9 @@ public class CarbonServiceImpl implements CarbonService {
         return ReturnMsg.ok(list);
     }
 
-    @Override
-    public ReturnMsg getVehicleCoreIndicators(IocParam iocParam) {
-        Indeicator indeicator = new Indeicator();
-        List<JSONObject> objects = indeicator.getList();
-        ThreadLocalRandom random = ThreadLocalRandom.current();
-        int totalDistance = random.nextInt(50, 200);
-        int avgDistance = random.nextInt(5,100);
-        int avgHours = random.nextInt(1,10);
-        int avgCarbon = random.nextInt(50,500);
-        while (avgDistance>totalDistance){
-            avgDistance = random.nextInt(5,100);
-        }
-        float compare = (float) Math.random();
-        DecimalFormat decimalFormat = new DecimalFormat("#.0");
-        compare = Float.parseFloat(decimalFormat.format(compare));
 
-        objects.get(0).put("value",totalDistance);
-        objects.get(0).put("compare",compare);
 
-        objects.get(1).put("value",avgDistance);
-        objects.get(1).put("compare",compare);
 
-        objects.get(2).put("value",avgHours);
-        objects.get(2).put("compare",compare);
-
-        objects.get(3).put("value",avgCarbon);
-        objects.get(3).put("compare",compare);
-        indeicator.setWorthAttention("节能减排绿色出行");
-        indeicator.setList(objects);
-        return ReturnMsg.ok(indeicator);
-    }
-
-    @Override
-    public ReturnMsg getVehicleInfo(IocParam iocParam) {
-        String[] param = {"zhongxun","guihuayuanBJ","zhengfen","guangfen","shangfen","chengfen"};
-        String startStr = iocParam.getTimeRange().getStartDate();
-        String endStr = iocParam.getTimeRange().getEndDate();
-        List<String> lists = DateUtil.getBetweenDays(startStr, endStr);
-        String[] labKey = lists.toArray(new String[0]);
-        List<Label> labels1 = GeneralMethod.getInstance().dataGeneration(param, labKey);
-        return ReturnMsg.ok(labels1);
-    }
 
     @Override
     public ReturnMsg getVehicleInfoOrder(IocParam iocParam) {

+ 11 - 8
src/main/java/com/sky/ioc/tool/DateUtil.java

@@ -162,16 +162,19 @@ public class DateUtil {
 
 
 
-    public static int daysBetween(String smdate, String bdate) throws ParseException {
+    public static int daysBetween(String smdate, String bdate)  {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
         Calendar cal = Calendar.getInstance();
-        cal.setTime(sdf.parse(smdate));
-        long time1 = cal.getTimeInMillis();
-        cal.setTime(sdf.parse(bdate));
-        long time2 = cal.getTimeInMillis();
-        long between_days = (time2 - time1) / (1000 * 3600 * 24);
-        return Integer.parseInt(String.valueOf(between_days));
-
+        try {
+            cal.setTime(sdf.parse(smdate));
+            long time1 = cal.getTimeInMillis();
+            cal.setTime(sdf.parse(bdate));
+            long time2 = cal.getTimeInMillis();
+            long between_days = (time2 - time1) / (1000 * 3600 * 24);
+            return Integer.parseInt(String.valueOf(between_days));
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
     }