2023-07-14 08:43:56 优化完善能源评价策略执行能耗查询功能!

master
魔神煜修罗皇 2 years ago
parent 5dd5fcee72
commit 3bc8c681a9
  1. 4
      psdc-business/src/main/java/com/psdc/mqtt/savedata/DataAndPowerSave.java
  2. 6
      psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java
  3. 42
      psdc-business/src/main/java/com/psdc/service/impl/PsdcStrategyLogService.java
  4. 3
      psdc-web/src/main/java/com/psdc/controller/evaluate/PsdcStrategyLogController.java

@ -49,8 +49,6 @@ public class DataAndPowerSave {
@Resource @Resource
PsdcStatisticsYearMapper statisticsYearMapper; PsdcStatisticsYearMapper statisticsYearMapper;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
public Boolean saveDevRtData(JSONObject jsonObject) { public Boolean saveDevRtData(JSONObject jsonObject) {
Integer deviceId = jsonObject.getInteger("deviceId"); Integer deviceId = jsonObject.getInteger("deviceId");
String timestamp = jsonObject.getString("timestamp"); String timestamp = jsonObject.getString("timestamp");
@ -167,7 +165,7 @@ public class DataAndPowerSave {
String[] resList; String[] resList;
if (null != strategyLog.getStrategyRunRes()) { if (null != strategyLog.getStrategyRunRes()) {
resList = strategyLog.getStrategyRunRes().split(","); resList = strategyLog.getStrategyRunRes().split(",");
if (runCodes.length == resList.length){ if (runCodes.length == resList.length && "1".equals(resList[resList.length - 1])) {
String[] split2 = strategyLog.getAllSceneCodes().split(","); String[] split2 = strategyLog.getAllSceneCodes().split(",");
Integer nextCode = Integer.valueOf(split2[runCodes.length]); Integer nextCode = Integer.valueOf(split2[runCodes.length]);
List<PsdcSceneRes> list2 = psdcSceneMapper.queryScenes2(Long.valueOf(nextCode)); List<PsdcSceneRes> list2 = psdcSceneMapper.queryScenes2(Long.valueOf(nextCode));

@ -383,7 +383,8 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
controlValue = coverStr("r", Integer.parseInt(controlValue)); controlValue = coverStr("r", Integer.parseInt(controlValue));
} }
String controlContext = ControlKeyEnum.getControlContext(controlKey); String controlContext = ControlKeyEnum.getControlContext(controlKey);
psdcControlLogMapper.insert(new PsdcControlLog(deviceId, psdcDevice.getDeviceName(), psdcDevice.getDeviceSn(), controlContext, controlValue, controlMethod, 2, "控制成功", controlBy));
}
// TODO 发送MQTT指令 // TODO 发送MQTT指令
MyMQTTClient myMQTTClient = new MyMQTTClient(); MyMQTTClient myMQTTClient = new MyMQTTClient();
// 封装控制策略Json // 封装控制策略Json
@ -399,9 +400,8 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
// psdcControlLogMapper.insert(new PsdcControlLog(deviceId,psdcDevice.getDeviceName(),psdcDevice.getDeviceSn(),controlContext,controlValue,controlMethod,3,"等待终端响应超时",controlBy)); // psdcControlLogMapper.insert(new PsdcControlLog(deviceId,psdcDevice.getDeviceName(),psdcDevice.getDeviceSn(),controlContext,controlValue,controlMethod,3,"等待终端响应超时",controlBy));
// 发送成功 // 发送成功
psdcControlLogMapper.insert(new PsdcControlLog(deviceId, psdcDevice.getDeviceName(), psdcDevice.getDeviceSn(), controlContext, controlValue, controlMethod, 2, "控制成功", controlBy));
atomicInteger.incrementAndGet(); atomicInteger.incrementAndGet();
}
return atomicInteger.get(); return atomicInteger.get();
} }

@ -54,18 +54,42 @@ public class PsdcStrategyLogService implements IPsdcStrategyLogService {
if (null != strategyList && strategyList.size() > 0){ if (null != strategyList && strategyList.size() > 0){
res = strategyList.get(0); res = strategyList.get(0);
String[] split = res.getScenes().split(","); String[] split = res.getScenes().split(",");
for (String s : split){ // 步骤层 for (String s : split){ // 步骤层【1个步骤1个设备】
List<SceneVo> sceneVos = sceneMapper.findSceneByUserAndSceneCode(userId, Long.parseLong(s), null); List<SceneVo> sceneVos = sceneMapper.findSceneByUserAndSceneCode(userId, Long.parseLong(s), null);
for (SceneVo sv : sceneVos){ // 设备层 // for (SceneVo sv : sceneVos) { // 设备层
// Integer deviceId = sv.getDeviceId();
// Double energy = electricHtDataMapper.selTodayUseEnergy(deviceId, psl.getStartTime(), psl.getEndTime());
// strategyUseEnergy = strategyUseEnergy + energy;
// }
SceneVo sv = sceneVos.get(0);
Integer deviceId = sv.getDeviceId(); Integer deviceId = sv.getDeviceId();
Double energy = electricHtDataMapper.selTodayUseEnergy(deviceId, psl.getStartTime(), psl.getEndTime()); Double energy = electricHtDataMapper.selTodayUseEnergy(deviceId, psl.getStartTime(), psl.getEndTime());
strategyUseEnergy = strategyUseEnergy + energy; strategyUseEnergy = strategyUseEnergy + energy;
// System.out.println("\n策略名称: " + psl.getStrategyName() + ",步骤名称: " + sv.getSceneName()
// + ",设备名称: " + sv.getDeviceName() + ",当前用能: " + energy + ",目前累计用能: " + strategyUseEnergy + "。\n");
} }
Double jssc = jssc(sdf, psl.getStartTime(), psl.getEndTime());
String runHours = df.format(jssc);
if (".".equals(runHours.substring(0,1))){
runHours= "0" + runHours;
} }
String runHours = jssc(sdf, psl.getStartTime(), psl.getEndTime());
// System.out.println("策略执行用时长: " + jssc + "。\n");
psl.setRunHours(runHours); psl.setRunHours(runHours);
psl.setSceneUseEnergy(strategyUseEnergy); psl.setSceneUseEnergy(strategyUseEnergy);
psl.setOneUseEnergy(df.format(strategyUseEnergy / Double.parseDouble(runHours))); double v = 0.0;
if (jssc > 0.0){
v = strategyUseEnergy / jssc; // 时长空判断处理
}
// System.out.println("触发 = " + v + "\n");
String s = df.format(v);
if (".".equals(s.substring(0,1))){
s= "0" + s;
}
psl.setOneUseEnergy(s);
} }
} }
return logList; return logList;
@ -97,19 +121,15 @@ public class PsdcStrategyLogService implements IPsdcStrategyLogService {
} }
} }
public String jssc(SimpleDateFormat dfs, String start, String end){ public Double jssc(SimpleDateFormat dfs, String start, String end){
try { try {
Double d1 = Double.valueOf(dfs.parse(start).getTime()); Double d1 = Double.valueOf(dfs.parse(start).getTime());
Double d2 = Double.valueOf(dfs.parse(end).getTime()); Double d2 = Double.valueOf(dfs.parse(end).getTime());
Double between = (d2 - d1)/1000/3600; Double between = (d2 - d1)/1000/3600;
String s = df.format(between); return between;
if (".".equals(s.substring(0,1))){
s= "0" + s;
}
return s;
} catch (ParseException pe) { } catch (ParseException pe) {
pe.printStackTrace(); pe.printStackTrace();
return "0L"; return 0.0;
} }
} }
} }

@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
@ -19,7 +20,7 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/analyse/nhdb") @RequestMapping("/analyse/nhdb")
public class PsdcStrategyLogController{ public class PsdcStrategyLogController{
@Autowired @Resource
private PsdcStrategyLogService psdcStrategyLogService; private PsdcStrategyLogService psdcStrategyLogService;
@PreAuthorize("@ss.hasPermi('analyse:nhdb')") @PreAuthorize("@ss.hasPermi('analyse:nhdb')")

Loading…
Cancel
Save