From d06a62b7211e599090e492402dd66012538e5b79 Mon Sep 17 00:00:00 2001 From: XMnhwj_BackTechnologyDevelopment <3512363680@qq.com> Date: Wed, 21 Jun 2023 13:49:28 +0800 Subject: [PATCH] =?UTF-8?q?2023-06-21=2013:49:26=20=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E7=AD=96=E7=95=A5=E6=89=A7=E8=A1=8C=E6=97=A5=E5=BF=97=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/psdc/entity/PsdcStrategyLog.java | 43 ++++++++++ .../psdc/mapper/PsdcStrategyLogMapper.java | 24 ++++++ .../service/impl/PsdcStrategyLogService.java | 84 +++++++++++++++++++ .../mapper/business/PsdcStrategyLogMapper.xml | 26 ++++++ .../evaluate/PsdcStrategyLogController.java | 33 ++++++++ 5 files changed, 210 insertions(+) create mode 100644 psdc-business/src/main/java/com/psdc/entity/PsdcStrategyLog.java create mode 100644 psdc-business/src/main/java/com/psdc/mapper/PsdcStrategyLogMapper.java create mode 100644 psdc-business/src/main/java/com/psdc/service/impl/PsdcStrategyLogService.java create mode 100644 psdc-business/src/main/resources/mapper/business/PsdcStrategyLogMapper.xml create mode 100644 psdc-web/src/main/java/com/psdc/controller/evaluate/PsdcStrategyLogController.java diff --git a/psdc-business/src/main/java/com/psdc/entity/PsdcStrategyLog.java b/psdc-business/src/main/java/com/psdc/entity/PsdcStrategyLog.java new file mode 100644 index 0000000..020ac09 --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/entity/PsdcStrategyLog.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; // 总用电量 +} \ No newline at end of file diff --git a/psdc-business/src/main/java/com/psdc/mapper/PsdcStrategyLogMapper.java b/psdc-business/src/main/java/com/psdc/mapper/PsdcStrategyLogMapper.java new file mode 100644 index 0000000..dbe6f29 --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/mapper/PsdcStrategyLogMapper.java @@ -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 selMyStrategyLog(@Param("userId") Long userId); + +} diff --git a/psdc-business/src/main/java/com/psdc/service/impl/PsdcStrategyLogService.java b/psdc-business/src/main/java/com/psdc/service/impl/PsdcStrategyLogService.java new file mode 100644 index 0000000..37bad5b --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/service/impl/PsdcStrategyLogService.java @@ -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 selMyStrategyLog() { + Long userId = SecurityUtils.getUserId(); + List logList = strategyLogMapper.selMyStrategyLog(userId); + for (PsdcStrategyLog psl : logList){ // 策略层 + Long code = psl.getStrategyCode(); + PsdcStrategy res ; + Double strategyUseEnergy = 0.0; + List 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 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"; + } + } +} diff --git a/psdc-business/src/main/resources/mapper/business/PsdcStrategyLogMapper.xml b/psdc-business/src/main/resources/mapper/business/PsdcStrategyLogMapper.xml new file mode 100644 index 0000000..480bd9a --- /dev/null +++ b/psdc-business/src/main/resources/mapper/business/PsdcStrategyLogMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/psdc-web/src/main/java/com/psdc/controller/evaluate/PsdcStrategyLogController.java b/psdc-web/src/main/java/com/psdc/controller/evaluate/PsdcStrategyLogController.java new file mode 100644 index 0000000..e85fdb6 --- /dev/null +++ b/psdc-web/src/main/java/com/psdc/controller/evaluate/PsdcStrategyLogController.java @@ -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 deviceStatusVos = psdcStrategyLogService.selMyStrategyLog(); + return AjaxResult.success("策略执行日志列表").put("data",deviceStatusVos); + } + + +} \ No newline at end of file