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

master
魔神煜修罗皇 2 years ago
parent 5dd5fcee72
commit 3bc8c681a9
  1. 12
      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. 50
      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
PsdcStatisticsYearMapper statisticsYearMapper;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
public Boolean saveDevRtData(JSONObject jsonObject) {
Integer deviceId = jsonObject.getInteger("deviceId");
String timestamp = jsonObject.getString("timestamp");
@ -164,15 +162,15 @@ public class DataAndPowerSave {
if (null != strategyLog) {
Boolean b2 = false;
String[] runCodes = strategyLog.getRunSceneCodes().split(",");
String[] resList ;
if (null != strategyLog.getStrategyRunRes()){
String[] resList;
if (null != strategyLog.getStrategyRunRes()) {
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(",");
Integer nextCode = Integer.valueOf(split2[runCodes.length]);
List<PsdcSceneRes> list2 = psdcSceneMapper.queryScenes2(Long.valueOf(nextCode));
PsdcSceneRes psc = list2.get(0);
if (String.valueOf(deviceId).equals(String.valueOf(psc.getJudgeDevice()))){
if (String.valueOf(deviceId).equals(String.valueOf(psc.getJudgeDevice()))) {
b2 = isOk2(psc.getIsJudge(), psc.getJudgeDevice(), psc.getJudgeElement(), psc.getJudgeData(), date1);
if (b2) {
synchronized (AppInfoRes.class) {
@ -182,7 +180,7 @@ public class DataAndPowerSave {
}
}
}
}
}
return true;
} else {

@ -383,7 +383,8 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
controlValue = coverStr("r", Integer.parseInt(controlValue));
}
String controlContext = ControlKeyEnum.getControlContext(controlKey);
psdcControlLogMapper.insert(new PsdcControlLog(deviceId, psdcDevice.getDeviceName(), psdcDevice.getDeviceSn(), controlContext, controlValue, controlMethod, 2, "控制成功", controlBy));
}
// TODO 发送MQTT指令
MyMQTTClient myMQTTClient = new MyMQTTClient();
// 封装控制策略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, 2, "控制成功", controlBy));
atomicInteger.incrementAndGet();
}
return atomicInteger.get();
}

@ -54,18 +54,42 @@ public class PsdcStrategyLogService implements IPsdcStrategyLogService {
if (null != strategyList && strategyList.size() > 0){
res = strategyList.get(0);
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);
for (SceneVo sv : sceneVos){ // 设备层
Integer deviceId = sv.getDeviceId();
Double energy = electricHtDataMapper.selTodayUseEnergy(deviceId, psl.getStartTime(), psl.getEndTime());
strategyUseEnergy = strategyUseEnergy + energy;
}
// 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();
Double energy = electricHtDataMapper.selTodayUseEnergy(deviceId, psl.getStartTime(), psl.getEndTime());
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.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;
@ -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 {
Double d1 = Double.valueOf(dfs.parse(start).getTime());
Double d2 = Double.valueOf(dfs.parse(end).getTime());
Double between = (d2 - d1)/1000/3600;
String s = df.format(between);
if (".".equals(s.substring(0,1))){
s= "0" + s;
}
return s;
return between;
} catch (ParseException pe) {
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.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@ -19,7 +20,7 @@ import java.util.List;
@RestController
@RequestMapping("/analyse/nhdb")
public class PsdcStrategyLogController{
@Autowired
@Resource
private PsdcStrategyLogService psdcStrategyLogService;
@PreAuthorize("@ss.hasPermi('analyse:nhdb')")

Loading…
Cancel
Save