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