parent
923712cd09
commit
d06a62b721
@ -0,0 +1,43 @@ |
||||
package com.psdc.entity; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
import org.springframework.stereotype.Component; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
/** |
||||
* @author : stone |
||||
* @date : 2023-6-11 |
||||
*/ |
||||
@Data |
||||
@Component |
||||
@AllArgsConstructor |
||||
@NoArgsConstructor |
||||
public class PsdcStrategyLog implements Serializable,Cloneable{ |
||||
|
||||
private Integer id ; |
||||
/** 策略名称 */ |
||||
private String strategyName; |
||||
/** 策略码 */ |
||||
private Long strategyCode ; |
||||
/** 开始执行时间 */ |
||||
private String startTime ; |
||||
/** 完成执行时间 */ |
||||
private String endTime ; |
||||
/** 1:执行完成;2:未完成 */ |
||||
private Integer runtimeStatus ; |
||||
/** 执行前室内平均温度 */ |
||||
private Double inFrontAvgtemp ; |
||||
/** 执行前室外平均温度 */ |
||||
private Double outFrontAvgtemp ; |
||||
/** 执行后室内平均温度 */ |
||||
private Double inAfterAvgtemp ; |
||||
/** 执行后室外平均温度 */ |
||||
private Double outAfterAvgtemp ; |
||||
|
||||
private String runHours; // 策略执行时长
|
||||
private String oneUseEnergy; // 单位时长用电
|
||||
private Double sceneUseEnergy; // 总用电量
|
||||
} |
@ -0,0 +1,24 @@ |
||||
package com.psdc.mapper; |
||||
|
||||
import com.psdc.entity.PsdcStrategyLog; |
||||
import org.apache.ibatis.annotations.Mapper; |
||||
import org.apache.ibatis.annotations.Param; |
||||
import org.springframework.stereotype.Repository; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @Author:Stone |
||||
* @Project:psdc |
||||
* @Filename:PsdcStrategyLogMapper |
||||
* @Slogan 致敬大师,致敬未来的你 |
||||
* @Date:2023/6/21 9:30 |
||||
* @Version 1.0 |
||||
*/ |
||||
@Mapper |
||||
@Repository |
||||
public interface PsdcStrategyLogMapper { |
||||
|
||||
List<PsdcStrategyLog> selMyStrategyLog(@Param("userId") Long userId); |
||||
|
||||
} |
@ -0,0 +1,84 @@ |
||||
package com.psdc.service.impl; |
||||
|
||||
import com.psdc.entity.PsdcStrategy; |
||||
import com.psdc.entity.PsdcStrategyLog; |
||||
import com.psdc.entity.vo.SceneVo; |
||||
import com.psdc.mapper.PsdcElectricHtdataMapper; |
||||
import com.psdc.mapper.PsdcSceneMapper; |
||||
import com.psdc.mapper.PsdcStrategyLogMapper; |
||||
import com.psdc.mapper.PsdcStrategyMapper; |
||||
import com.psdc.service.IPsdcStrategyLogService; |
||||
import com.psdc.utils.SecurityUtils; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import javax.annotation.Resource; |
||||
import java.text.DecimalFormat; |
||||
import java.text.ParseException; |
||||
import java.text.SimpleDateFormat; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @Author:戴仕崑 |
||||
* @Project:psdc |
||||
* @Filename:PsdcStrategyLogService |
||||
* @Slogan 致敬大师,致敬未来的你 |
||||
* @Date:2023/6/21 10:12 |
||||
* @Version 1.0 |
||||
*/ |
||||
@Service |
||||
public class PsdcStrategyLogService implements IPsdcStrategyLogService { |
||||
|
||||
@Resource |
||||
PsdcStrategyLogMapper strategyLogMapper; |
||||
@Resource |
||||
PsdcStrategyMapper strategyMapper; |
||||
@Resource |
||||
PsdcSceneMapper sceneMapper; |
||||
@Resource |
||||
PsdcElectricHtdataMapper electricHtDataMapper; |
||||
|
||||
DecimalFormat df = new DecimalFormat("#.00"); |
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
||||
|
||||
|
||||
@Override |
||||
public List<PsdcStrategyLog> selMyStrategyLog() { |
||||
Long userId = SecurityUtils.getUserId(); |
||||
List<PsdcStrategyLog> logList = strategyLogMapper.selMyStrategyLog(userId); |
||||
for (PsdcStrategyLog psl : logList){ // 策略层
|
||||
Long code = psl.getStrategyCode(); |
||||
PsdcStrategy res ; |
||||
Double strategyUseEnergy = 0.0; |
||||
List<PsdcStrategy> strategyList = strategyMapper.queryByUser(userId, code); |
||||
if (null != strategyList && strategyList.size() > 0){ |
||||
res = strategyList.get(0); |
||||
String[] split = res.getScenes().split(","); |
||||
for (String s : split){ // 步骤层
|
||||
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; |
||||
} |
||||
} |
||||
String runHours = jssc(sdf, psl.getStartTime(), psl.getEndTime()); |
||||
psl.setRunHours(runHours); |
||||
psl.setSceneUseEnergy(strategyUseEnergy); |
||||
psl.setOneUseEnergy(df.format(strategyUseEnergy / Double.parseDouble(runHours))); |
||||
} |
||||
} |
||||
return logList; |
||||
} |
||||
|
||||
public String 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; |
||||
return df.format(between); |
||||
} catch (ParseException pe) { |
||||
pe.printStackTrace(); |
||||
return "0L"; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,26 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
<mapper namespace="com.psdc.mapper.PsdcStrategyLogMapper"> |
||||
<resultMap type="com.psdc.entity.PsdcStrategyLog" id="PsdcStrategyLogMap"> |
||||
<result property="id" column="id" /> |
||||
<result property="strategyName" column="strategy_name" /> |
||||
<result property="strategyCode" column="strategy_code" /> |
||||
<result property="startTime" column="start_time" /> |
||||
<result property="endTime" column="end_time" /> |
||||
<result property="runtimeStatus" column="runtime_status" /> |
||||
<result property="inFrontAvgtemp" column="in_front_avgtemp" /> |
||||
<result property="outFrontAvgtemp" column="out_front_avgtemp" /> |
||||
<result property="inAfterAvgtemp" column="in_after_avgtemp" /> |
||||
<result property="outAfterAvgtemp" column="out_after_avgtemp" /> |
||||
</resultMap> |
||||
|
||||
<select id="selMyStrategyLog" resultMap="PsdcStrategyLogMap"> |
||||
SELECT s.strategy_name, sl.* FROM psdc_strategy_log sl |
||||
Left Join psdc_strategy s On s.strategy_code = sl.strategy_code |
||||
WHERE runtime_status = 1 And s.user_id = ${userId} |
||||
GROUP BY sl.strategy_code |
||||
ORDER BY sl.end_time |
||||
</select> |
||||
|
||||
|
||||
</mapper> |
@ -0,0 +1,33 @@ |
||||
package com.psdc.controller.evaluate; |
||||
|
||||
|
||||
import com.psdc.core.domain.AjaxResult; |
||||
import com.psdc.entity.PsdcStrategyLog; |
||||
import com.psdc.service.impl.PsdcStrategyLogService; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.security.access.prepost.PreAuthorize; |
||||
import org.springframework.web.bind.annotation.*; |
||||
|
||||
import java.util.List; |
||||
|
||||
|
||||
/** |
||||
* 模式策略执行日志表;(psdc_strategy_log)表控制层 |
||||
* @author : http://www.chiner.pro
|
||||
* @date : 2023-6-21 |
||||
*/ |
||||
@RestController |
||||
@RequestMapping("/analyse/nhdb") |
||||
public class PsdcStrategyLogController{ |
||||
@Autowired |
||||
private PsdcStrategyLogService psdcStrategyLogService; |
||||
|
||||
@PreAuthorize("@ss.hasPermi('analyse:nhdb')") |
||||
@GetMapping("/logs") |
||||
public AjaxResult getControlDeviceList() { |
||||
List<PsdcStrategyLog> deviceStatusVos = psdcStrategyLogService.selMyStrategyLog(); |
||||
return AjaxResult.success("策略执行日志列表").put("data",deviceStatusVos); |
||||
} |
||||
|
||||
|
||||
} |
Loading…
Reference in new issue