Pārlūkot izejas kodu

智慧双碳 碳配额数据同步

ZhangManMan 2 gadi atpakaļ
vecāks
revīzija
799fe7080d

+ 6 - 0
src/main/java/com/sky/ioc/controller/carbon/CarbonController.java

@@ -26,6 +26,12 @@ public class CarbonController {
         return carbonService.getFloorCoreIndicators(iocParam);
     }
 
+    @ApiOperation("碳配额")
+    @PostMapping("/getCarbonQuota")
+    public ReturnMsg getCarbonQuota(){
+        return carbonService.getCarbonData();
+    }
+
 
     @ApiOperation("碳排放分析")
     @PostMapping("/getCarbonInfo")

+ 6 - 4
src/main/java/com/sky/ioc/entity/domain/carbon/CarbonQuota.java

@@ -6,10 +6,12 @@ import lombok.Data;
 public class CarbonQuota {
 
     private Integer id;
-    private Integer dept_id;
+    private Integer company_id;
+    private String company;
 
-    private String stock;
-    private String expend;
+    private Integer quota;
+    private Integer expend;
+
+    private String year;
 
-    private String time;
 }

+ 9 - 0
src/main/java/com/sky/ioc/mapper/carbon/CarbonQuotaMapper.java

@@ -0,0 +1,9 @@
+package com.sky.ioc.mapper.carbon;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sky.ioc.entity.domain.carbon.CarbonQuota;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface CarbonQuotaMapper extends BaseMapper<CarbonQuota> {
+}

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

@@ -103,4 +103,6 @@ public interface CarbonService {
     ReturnMsg getEnergyAnalysisPowerInfo(IocParam iocParam);
 
     ReturnMsg getEnergyAnalysisHotInfo(IocParam iocParam);
+
+    ReturnMsg getCarbonData();
 }

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

@@ -5,23 +5,36 @@ import com.sky.ioc.entity.Indeicator;
 import com.sky.ioc.entity.Label;
 import com.sky.ioc.entity.Cake;
 import com.sky.ioc.entity.News;
+import com.sky.ioc.entity.domain.carbon.CarbonQuota;
+import com.sky.ioc.entity.domain.meeting.MeetingRecord;
 import com.sky.ioc.entity.params.IocParam;
 import com.sky.ioc.entity.params.IocTimeRange;
 import com.sky.ioc.mapper.BusMapper;
 import com.sky.ioc.mapper.PrintMapper;
+import com.sky.ioc.mapper.carbon.CarbonQuotaMapper;
+import com.sky.ioc.mapper.job.TokenMapper;
 import com.sky.ioc.service.carbon.CarbonService;
 import com.sky.ioc.tool.DateUtil;
 import com.sky.ioc.tool.GeneralMethod;
 import com.sky.ioc.tool.ReturnMsg;
 import io.swagger.models.auth.In;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+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.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.ThreadLocalRandom;
 
 /**
@@ -32,6 +45,7 @@ import java.util.concurrent.ThreadLocalRandom;
  **/
 
 @Service
+@Slf4j
 public class CarbonServiceImpl implements CarbonService {
 
 
@@ -41,6 +55,20 @@ public class CarbonServiceImpl implements CarbonService {
     @Autowired
     PrintMapper printMapper;
 
+    @Autowired
+    TokenMapper tokenMapper;
+
+    @Value("${sky.dataIp}")
+    private String dataIp;
+
+    final static  String CARBON_QUOTA_URL="%s/api/carbon/CARBON/quota/list";
+
+    @Autowired
+    CarbonQuotaMapper carbonQuotaMapper;
+
+
+
+
     /**
      * TODO  智能看板 --碳配额
      * @Description
@@ -827,4 +855,56 @@ public class CarbonServiceImpl implements CarbonService {
         return ReturnMsg.ok(list);
     }
 
+    @Override
+    public ReturnMsg getCarbonData() {
+        String url =   String.format(CARBON_QUOTA_URL,"http://"+dataIp)+"??pageNum=1&pageSize=1000";
+        Map<String,String> tokenMap = tokenMapper.getNewToken();
+        String token ="Bearer eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6IjUwZTU1NTRkLWJjYzYtNGRhMS1iZDUxLWFhNTc3YzU4YTFiNCIsInVzZXJuYW1lIjoiYWRtaW4ifQ.X10VPYJfeeRTka7OtqNPOGMpL4QkW3fR_TfCKXCmO-yXbIIrr_40fcwiVnpXfYVENo_BvXWEACRd-Y6nXsbkog";
+        if(tokenMap!=null){
+            token = "Bearer "+tokenMap.get("token");
+        }
+        // 创建一个请求头对象
+        HttpHeaders httpHeaders = new HttpHeaders();
+        // 设置参数
+        httpHeaders.set("authorization", token);
+        // 创建一个响应体对象
+        HttpEntity<String> httpEntity = new HttpEntity(httpHeaders);
+        // 3.创建RestTemplate
+        RestTemplate restTemplate = new RestTemplate();
+        // 发送GET请求
+        ResponseEntity<Map> responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, Map.class);
+        // 获取响应对象里的 body 对象
+        Map<String, Object> body = responseEntity.getBody();
+        // 获取状态码
+        Integer code = (Integer)body.get("code");
+        // 获取响应信息
+        String message = (String)body.get("msg");
+        if(code==200){
+            ThreadLocalRandom random = ThreadLocalRandom.current();
+            ArrayList list = (ArrayList) body.get("rows");
+            if(list!=null&&list.size()>0){
+                carbonQuotaMapper.delete(null);
+                for (int i=0;i<list.size();i++){
+                    LinkedHashMap json = (LinkedHashMap) list.get(i);
+                    CarbonQuota carbonQuota = new CarbonQuota();
+                    carbonQuota.setId((Integer) json.get("id"));
+                    carbonQuota.setCompany(String.valueOf(json.get("companyName")));
+                    carbonQuota.setYear(String.valueOf(json.get("year")));
+                    carbonQuota.setCompany_id(Integer.parseInt(String.valueOf(json.get("companyId"))));
+                    Integer quota = Integer.parseInt(String.valueOf(json.get("quota")));
+                    Integer expend = random.nextInt(0, quota);//随机生成消耗额
+                    carbonQuota.setQuota(quota);
+                    carbonQuota.setExpend(expend);
+                    carbonQuotaMapper.insert(carbonQuota);
+                }
+            }
+            return ReturnMsg.ok();
+
+        }else{
+            log.info("获取碳配额数据:"+message);
+            return  ReturnMsg.fail(message);
+        }
+        //return null;
+    }
+
 }

+ 1 - 0
src/main/resources/application.yml

@@ -108,3 +108,4 @@ logging:
 # 自定义配置
 sky:
   name: 智慧运营管理中心
+  dataIp: 192.168.1.45:9001