|
|
|
@ -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; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|