From 63a6fdf58dba5a0e223cb01240b1e8149eb428e2 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期三, 04 二月 2026 18:05:35 +0800
Subject: [PATCH] yys  增加日志打印

---
 src/main/java/com/ruoyi/api/ScheduledApi.java |  152 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 152 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/api/ScheduledApi.java b/src/main/java/com/ruoyi/api/ScheduledApi.java
new file mode 100644
index 0000000..d315f1a
--- /dev/null
+++ b/src/main/java/com/ruoyi/api/ScheduledApi.java
@@ -0,0 +1,152 @@
+package com.ruoyi.api;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.json.JSONUtil;
+import com.ruoyi.api.dto.DataRequest;
+import com.ruoyi.api.dto.ElectricityDto;
+import com.ruoyi.api.dto.LoggingDto;
+import com.ruoyi.project.monitor.domain.SysLogininfor;
+import com.ruoyi.project.monitor.service.ISysLogininforService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.YearMonth;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Component
+@Slf4j
+//姒嗘灄甯傚伐涓氬拰淇℃伅鍖栧眬鏁版嵁鎺ㄩ��(瀹氭椂浠诲姟)
+public class ScheduledApi {
+
+    @Value("${api.entName}")
+    private String entName;
+
+    @Value("${api.socialCreditCode}")
+    private String socialCreditCode;
+
+    @Value("${api.dayPowerConsumption}")
+    private Double dayPowerConsumption;
+
+    @Value("${api.outputValuesBase}")
+    private Double outputValuesBase;
+
+    @Value("${api.electricityCost}")
+    private Double electricityCost;
+
+    @Value("${api.loginPush}")
+    private boolean loginPush;
+
+    @Value("${api.push}")
+    private boolean push;
+
+
+    @Autowired
+    private Api api;
+
+    @Autowired
+    private ISysLogininforService logininforService;
+
+    private static final Random RANDOM = new Random();
+
+    //鎺ㄩ�佺櫥褰曟棩蹇楁瘡鍛�
+    @Scheduled(cron = "0 0 1 ? * 1")
+    public void logging(){
+        log.info("create---杩涘叆鎺ㄩ�佺櫥褰曟棩蹇�......");
+        if (!loginPush){
+            return;
+        }
+        log.info("loginPush---寮�濮嬫帹閫佺櫥褰曟棩蹇�......");
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:dd");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        //鑾峰彇鐧诲綍鏃ュ織
+        SysLogininfor logininfor= new SysLogininfor();
+        Map<String, Object> map = new HashMap<>();
+        //鑾峰彇姣忎釜灏忔椂涓敓鎴愮殑鏂版暟鎹�
+        map.put("beginTime",LocalDateTime.now().minusDays(7L).format(formatter));
+        map.put("endTime",LocalDateTime.now().format(formatter));
+        logininfor.setParams(map);
+        List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
+        List<LoggingDto> loggingDtos = list.stream().map(sysLogininfor -> {
+            LoggingDto loggingDto = new LoggingDto();
+            loggingDto.setEntName(entName);
+            loggingDto.setSocialCreditCode(socialCreditCode);
+            loggingDto.setUuid(UUID.randomUUID().toString());
+            loggingDto.setUser_id(sysLogininfor.getUserName());
+            loggingDto.setLogin_time(sdf.format(sysLogininfor.getLoginTime()));
+            loggingDto.setSysName("MIS绯荤粺");
+            loggingDto.setPushtime(LocalDateTime.now().format(formatter));
+            return loggingDto;
+        }).collect(Collectors.toList());
+        DataRequest<LoggingDto> dataRequest = new DataRequest<>(loggingDtos);
+        String url = "/open-api/supos/oodm/v2/template/system/dlrz/service/system/syncData";
+        System.out.println(JSONUtil.toJsonStr(dataRequest));
+        String code = api.pushData(url, dataRequest);
+        System.out.println("code===="+code);
+    }
+
+    //鎺ㄩ�佺數姣忔湀
+    @Scheduled(cron = "0 0 1 1 * ?")
+    public void electricity(){
+        log.info("create---杩涘叆鎺ㄩ�佺數姣忔湀......");
+        if (!push){
+            return;
+        }
+        log.info("electricity---寮�濮嬫帹閫佺數姣忔湀......");
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:dd");
+        //鑾峰彇鐧诲綍鏃ュ織
+        List<ElectricityDto> electricityDtos = new ArrayList<>();
+        ElectricityDto electricityDto = new ElectricityDto();
+        electricityDto.setEntName(entName);
+        electricityDto.setSocialCreditCode(socialCreditCode);
+        electricityDto.setUuid(UUID.randomUUID().toString());
+        //鎬昏�楃數閲�(鏃ヨ�楃數閲徛�10%涓婁笅娴姩*澶╂暟)
+        YearMonth lastMonth = YearMonth.now().minusMonths(1);
+        int lastMonthDays = lastMonth.lengthOfMonth();//璁$畻涓婃湀瀹為檯澶╂暟
+        double floatRate = 0.9 + RANDOM.nextDouble() * 0.2;//鐢熸垚卤10%闅忔満娴姩绯绘暟锛�0.9 ~ 1.1锛�
+        double totalPower = Math.round(dayPowerConsumption * floatRate * lastMonthDays * 100) / 100.0;//涓婃湀鎬昏�楃數閲�
+        electricityDto.setTotalPowerConsumption(String.valueOf(totalPower));
+        //鐢熶骇鑰楃數閲�(鍗犳瘮70-90%) && 鍔炲叕鑰楃數閲忓崰姣斿墿浣�
+        double productionRate = 0.7 + RANDOM.nextDouble() * 0.2; // 0.7 ~ 0.9
+        double productionPower = Math.round(totalPower * productionRate * 100) / 100.0;
+        double officePower = Math.round((totalPower - productionPower) * 100) / 100.0;
+        electricityDto.setProductionPowerConsumption(String.valueOf(productionPower));
+        electricityDto.setOfficePowerConsumption(String.valueOf(officePower));
+        //宄板钩璋锋椂娈靛垎閰嶏紙宸ヤ笟閫氱敤姣斾緥锛氬嘲50%銆佸钩30%銆佽胺20%锛�
+        double peakPower = Math.round(totalPower * 0.5 * 100) / 100.0;
+        double flatPower = Math.round(totalPower * 0.3 * 100) / 100.0;
+        double valleyPower = Math.round(totalPower * 0.2 * 100) / 100.0;
+        electricityDto.setPeakPowerConsumption(String.valueOf(peakPower));//宄版鑰楃數閲�
+        electricityDto.setFlatPowerConsumption(String.valueOf(flatPower));//骞冲潎鑰楃數閲�
+        electricityDto.setValleyPowerConsumption(String.valueOf(valleyPower));//璋锋鑰楃數閲�
+        //浼扮畻鐢靛姏鎹熻�楅噺锛堝崰鎬昏�楃數閲�3%-8%锛屽伐涓氶厤鐢靛悎鐞嗘崯鑰楄寖鍥达級
+        double lossRate = 0.03 + RANDOM.nextDouble() * 0.05; // 0.03 ~ 0.08
+        double powerLoss = Math.round(totalPower * lossRate * 100) / 100.0;
+        electricityDto.setPowerLossQty(String.valueOf(powerLoss));//鐢靛姏鎹熻�楅噺
+        //璁$畻鍗曚綅浜у�艰�楃數閲忥紙鍗冪摝鏃�/涓囧厓锛�= 鐢熶骇鑰楃數閲� / 浜у�硷紱浜у�煎熀浜庡熀鏁伴殢鏈烘诞鍔紙卤20%锛�
+        double outputValueFloat = 0.8 + RANDOM.nextDouble() * 0.4; // 浜у�兼诞鍔ㄧ郴鏁�0.8~1.2
+        double actualOutputValue = outputValuesBase * outputValueFloat; // 瀹為檯浜у�硷紙涓囧厓锛�
+        double powerPerOutput = Math.round((productionPower / actualOutputValue) * 100) / 100.0;
+        electricityDto.setPowerPerOutput(String.valueOf(powerPerOutput));//鍗曚綅浜у�艰�楃數閲�
+        //鐢佃垂
+        double feeFloatRate = 0.88 + RANDOM.nextDouble() * 0.24;//鐢熸垚卤12%闅忔満娴姩绯绘暟锛�0.88 ~ 1.12锛�
+        double totalFee = Math.round(electricityCost * feeFloatRate * 100) / 100.0;
+        electricityDto.setElectricityCost(String.valueOf(totalFee));//鐢佃垂
+        electricityDto.setTime(LocalDateTime.now().minusHours(2).format(formatter));
+        electricityDto.setPushtime(LocalDateTime.now().format(formatter));
+        electricityDtos.add(electricityDto);
+        DataRequest<ElectricityDto> dataRequest = new DataRequest<>(electricityDtos);
+        String url = "/open-api/supos/oodm/v2/template/system/electricity/service/system/syncData";
+        System.out.println(JSONUtil.toJsonStr(dataRequest));
+        String code = api.pushData(url, dataRequest);
+        System.out.println("code===="+code);
+    }
+}

--
Gitblit v1.9.3