Sfoglia il codice sorgente

数智双碳-光伏发电核心指标、光伏减排分析、光伏减排排名

ZhangManMan 2 anni fa
parent
commit
a37839b0c0

+ 7 - 3
src/main/java/com/sky/ioc/controller/carbon/PhotovoltaicController.java

@@ -2,6 +2,7 @@ package com.sky.ioc.controller.carbon;
 
 import com.sky.ioc.entity.params.IocParam;
 import com.sky.ioc.service.carbon.CarbonService;
+import com.sky.ioc.service.carbon.PhotovoltaicService;
 import com.sky.ioc.tool.ReturnMsg;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -29,19 +30,22 @@ public class PhotovoltaicController {
     @Autowired
     private CarbonService carbonService;
 
+    @Autowired
+    PhotovoltaicService photovoltaicService;
+
 
 
     @ApiOperation("核心指标")
     @PostMapping("/getPhotovoltaicCoreIndicators")
     public ReturnMsg getPhotovoltaicCoreIndicators(@RequestBody IocParam iocParam){
-        return carbonService.getPhotovoltaicCoreIndicators(iocParam);
+        return photovoltaicService.getPhotovoltaicCoreIndicators(iocParam);
     }
 
 
     @ApiOperation("光伏减排分析")
     @PostMapping("/getPhotovoltaicInfo")
     public ReturnMsg getPhotovoltaicInfo(@RequestBody IocParam iocParam){
-        return carbonService.getPhotovoltaicInfo(iocParam);
+        return photovoltaicService.getPhotovoltaicInfo(iocParam);
     }
 
 
@@ -50,7 +54,7 @@ public class PhotovoltaicController {
     @ApiOperation("光伏排放排名")
     @PostMapping("/getPhotovoltaicInfoOrder")
     public ReturnMsg getPhotovoltaicInfoOrder(@RequestBody IocParam iocParam){
-        return carbonService.getPhotovoltaicInfoOrder(iocParam);
+        return photovoltaicService.getPhotovoltaicInfoOrder(iocParam);
     }
 
 }

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

@@ -32,4 +32,6 @@ public class Photovoltaic {
     private String minusDischarge;
 
     private String time;
+
+    private Integer deptId;
 }

+ 72 - 0
src/main/java/com/sky/ioc/mapper/carbon/PhotovoltaicMapper.java

@@ -0,0 +1,72 @@
+package com.sky.ioc.mapper.carbon;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sky.ioc.entity.domain.carbon.Photovoltaic;
+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;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface PhotovoltaicMapper extends BaseMapper<Photovoltaic> {
+
+    @Select("<script> " +
+            "select coalesce(sum(minus_discharge),0) from photovoltaic 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>")
+    Double getMinusDischargeByTime(@Param("iocParam") IocParam iocParam);
+
+    @Select("<script> " +
+            "select coalesce(sum(electricity),0) from photovoltaic 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 getElectricityByTime(@Param("iocParam")IocParam iocParam);
+
+    @Select("<script> " +
+            "select coalesce(sum(cost_saving),0) from photovoltaic 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>")
+    double getCostSavingByTime(@Param("iocParam")IocParam iocParam);
+
+    @Select("<script> " +
+            "select coalesce(sum(subsidy),0) from photovoltaic 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>")
+    double getSubsidyByTime(@Param("iocParam")IocParam iocParam);
+
+    @Select("<script> " +
+            "select coalesce(sum(minus_discharge),0) as total,dept_id,department.name  from photovoltaic " +
+            "LEFT JOIN department on photovoltaic.dept_id= department.id " +
+            "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>" +
+            " GROUP BY dept_id,department.name ORDER BY total desc </script>")
+    List<Map<String,Object>> getMinusDischargeOrderByTime(@Param("iocParam")IocParam iocParam);
+}

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

@@ -35,12 +35,6 @@ public interface CarbonService {
     ReturnMsg  getCarbonNews(IocParam iocParam);
 
     ReturnMsg  getCarbonProportion(IocParam iocParam);
-    ReturnMsg  getPhotovoltaicInfoOrder(IocParam iocParam);
-
-    ReturnMsg  getPhotovoltaicInfo(IocParam iocParam);
-
-    ReturnMsg  getPhotovoltaicCoreIndicators(IocParam iocParam);
-
     ReturnMsg getPhotovoltaicPower(IocParam iocParam);
 
     ReturnMsg getAnalyseCoreIndicators(IocParam iocParam);

+ 13 - 0
src/main/java/com/sky/ioc/service/carbon/PhotovoltaicService.java

@@ -0,0 +1,13 @@
+package com.sky.ioc.service.carbon;
+
+import com.sky.ioc.entity.params.IocParam;
+import com.sky.ioc.tool.ReturnMsg;
+
+public interface PhotovoltaicService {
+
+    ReturnMsg getPhotovoltaicCoreIndicators(IocParam iocParam);
+
+    ReturnMsg  getPhotovoltaicInfo(IocParam iocParam);
+
+    ReturnMsg  getPhotovoltaicInfoOrder(IocParam iocParam);
+}

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

@@ -417,61 +417,6 @@ public class CarbonServiceImpl implements CarbonService {
         }
         return ReturnMsg.ok(list);
     }
-
-
-
-
-
-
-
-    @Override
-    public ReturnMsg getPhotovoltaicInfoOrder(IocParam iocParam) {
-        String[] param = {"Photovoltaic"};
-        String[] labKey = {"中旬","规划院","成分","上分","广分","郑分"};
-        List<Label> labels1 = GeneralMethod.getInstance().dataGeneration(param, labKey);
-        return ReturnMsg.ok(labels1);
-    }
-
-    @Override
-    public ReturnMsg getPhotovoltaicInfo(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);
-    }
-
-    @Override
-    public ReturnMsg getPhotovoltaicCoreIndicators(IocParam iocParam) {
-        Indeicator indeicator = new Indeicator();
-        List<JSONObject> objects = indeicator.getList();
-        ThreadLocalRandom random = ThreadLocalRandom.current();
-        int reduPhotovoltaic = random.nextInt(1000, 10000);
-        int elecPhotovoltaic = random.nextInt(500,5000);
-        int savePhotovoltaic = random.nextInt(500,5000);
-        int subPhotovoltaic = random.nextInt(100,1000);
-
-        float compare = (float) Math.random();
-        DecimalFormat decimalFormat = new DecimalFormat("#.0");
-        compare = Float.parseFloat(decimalFormat.format(compare));
-        objects.get(0).put("value",reduPhotovoltaic);
-        objects.get(0).put("compare",compare);
-
-        objects.get(1).put("value",elecPhotovoltaic);
-        objects.get(1).put("compare",compare);
-
-        objects.get(2).put("value",savePhotovoltaic);
-        objects.get(2).put("compare",compare);
-
-        objects.get(3).put("value",subPhotovoltaic);
-        objects.get(3).put("compare",compare);
-        indeicator.setWorthAttention("光伏发电持续为您服务");
-        indeicator.setList(objects);
-        return ReturnMsg.ok(indeicator);
-    }
-
     @Override
     public ReturnMsg getPhotovoltaicPower(IocParam iocParam) {
         String[] param = {"realTime"};

+ 117 - 0
src/main/java/com/sky/ioc/service/carbon/impl/PhotovoltaicServiceImpl.java

@@ -0,0 +1,117 @@
+package com.sky.ioc.service.carbon.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.domain.space.Company;
+import com.sky.ioc.entity.domain.space.Department;
+import com.sky.ioc.entity.params.IocParam;
+import com.sky.ioc.entity.params.IocTimeRange;
+import com.sky.ioc.mapper.carbon.PhotovoltaicMapper;
+import com.sky.ioc.mapper.space.CompanyMapper;
+import com.sky.ioc.mapper.space.DepartmentMapper;
+import com.sky.ioc.service.carbon.PhotovoltaicService;
+import com.sky.ioc.tool.DateUtil;
+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.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.stream.Collectors;
+
+@Service
+public class PhotovoltaicServiceImpl implements PhotovoltaicService {
+
+    @Autowired
+    PhotovoltaicMapper photovoltaicMapper;
+
+    @Autowired
+    CompanyMapper companyMapper;
+
+    @Autowired
+    DepartmentMapper departmentMapper;
+
+    @Override
+    public ReturnMsg getPhotovoltaicCoreIndicators(IocParam iocParam) {
+        Indeicator indeicator = new Indeicator();
+        List<JSONObject> objects = indeicator.getList();
+        ThreadLocalRandom random = ThreadLocalRandom.current();
+        Double reduPhotovoltaic = photovoltaicMapper.getMinusDischargeByTime(iocParam);
+        double elecPhotovoltaic = photovoltaicMapper.getElectricityByTime(iocParam);
+        double savePhotovoltaic = photovoltaicMapper.getCostSavingByTime(iocParam);
+        Double subPhotovoltaic = photovoltaicMapper.getSubsidyByTime(iocParam);
+        Double compare = random.nextDouble(-1,1);
+        DecimalFormat decimalFormat = new DecimalFormat("#.0");
+        compare = Double.parseDouble(decimalFormat.format(compare));
+        objects.get(0).put("value", MathUtils.division(reduPhotovoltaic,1,2));
+        objects.get(0).put("compare",compare);
+
+        objects.get(1).put("value",MathUtils.division(elecPhotovoltaic,1,2));
+        objects.get(1).put("compare",compare);
+
+        objects.get(2).put("value",MathUtils.division(savePhotovoltaic,1,2));
+        objects.get(2).put("compare",compare);
+
+        objects.get(3).put("value",MathUtils.division(subPhotovoltaic,1,2));
+        objects.get(3).put("compare",compare);
+        indeicator.setWorthAttention("光伏发电持续为您服务");
+        indeicator.setList(objects);
+        return ReturnMsg.ok(indeicator);
+    }
+
+    @Override
+    public ReturnMsg getPhotovoltaicInfo(IocParam iocParam) {
+        Company company =  companyMapper.selectById(1);
+        Department department = departmentMapper.selectById(company.getOfficeId());
+        List<Department> departments =departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getParentId,department.getOriId()));
+        String[] param = departments.stream().map(Department::getName).collect(Collectors.toList()).toArray(new String[0]);
+        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 = new ArrayList<>();
+        for (int i = 0; i < labKey.length; i++) {
+            Label label = new Label();
+            IocParam iocParam1 = new IocParam();
+            IocTimeRange iocTimeRange = new IocTimeRange();
+            iocTimeRange.setStartDate(labKey[i]+" 00:00:00");
+            iocTimeRange.setEndDate(labKey[i]+" 23:59:59");
+            iocParam1.setTimeRange(iocTimeRange);
+            JSONObject jsonObject = new JSONObject();
+            for (int j = 0; j < departments.size(); j++) {
+                iocParam1.setDeptId(departments.get(j).getId());
+                double total = photovoltaicMapper.getMinusDischargeByTime(iocParam1);
+                jsonObject.put(param[j],total);
+            }
+            label.setJsonObject(jsonObject);
+            label.setLabel(labKey[i]);
+            labels1.add(label);
+        }
+       // List<Label> labels1 = GeneralMethod.getInstance().dataGeneration(param, labKey);
+        return ReturnMsg.ok(labels1);
+    }
+
+    @Override
+    public ReturnMsg getPhotovoltaicInfoOrder(IocParam iocParam) {
+        String[] param = {"Photovoltaic"};
+        //String[] labKey = {"中旬","规划院","成分","上分","广分","郑分"};
+        List<Map<String,Object>> lists = photovoltaicMapper.getMinusDischargeOrderByTime(iocParam);
+        List<Label> labels1 = new ArrayList<>();
+        for(Map<String,Object> map:lists){
+            Label label = new Label();
+            JSONObject jsonObject = new JSONObject();
+            label.setJsonObject(jsonObject);
+            label.setLabel(String.valueOf(map.get("name")));
+            labels1.add(label);
+            jsonObject.put(param[0],map.get("total"));
+        }
+       // List<Label> labels1 = GeneralMethod.getInstance().dataGeneration(param, labKey);
+        return ReturnMsg.ok(labels1);
+    }
+}