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