2023-06-21 13:49:26 完成策略执行日志查询后端接口!

master
魔神煜修罗皇 2 years ago
parent 923712cd09
commit d06a62b721
  1. 43
      psdc-business/src/main/java/com/psdc/entity/PsdcStrategyLog.java
  2. 24
      psdc-business/src/main/java/com/psdc/mapper/PsdcStrategyLogMapper.java
  3. 84
      psdc-business/src/main/java/com/psdc/service/impl/PsdcStrategyLogService.java
  4. 26
      psdc-business/src/main/resources/mapper/business/PsdcStrategyLogMapper.xml
  5. 33
      psdc-web/src/main/java/com/psdc/controller/evaluate/PsdcStrategyLogController.java

@ -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;
/**
* @AuthorStone
* @Projectpsdc
* @FilenamePsdcStrategyLogMapper
* @Slogan 致敬大师致敬未来的你
* @Date2023/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戴仕崑
* @Projectpsdc
* @FilenamePsdcStrategyLogService
* @Slogan 致敬大师致敬未来的你
* @Date2023/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…
Cancel
Save