src/main/java/com/ruoyi/device/pojo/DeviceLedger.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/equipmentenergyconsumption/mapper/EquipmentEnergyConsumptionMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/EquipmentEnergyConsumption.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/equipmentenergyconsumption/service/EquipmentEnergyConsumptionService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/equipmentenergyconsumption/service/impl/EquipmentEnergyConsumptionServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/equipmentenergyconsumption/EquipmentEnergyConsumptionMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/device/pojo/DeviceLedger.java
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -17,6 +19,7 @@ */ @Data @TableName("device_ledger") @ApiModel public class DeviceLedger { /** @@ -28,11 +31,13 @@ /** * 设å¤åç§° */ @ApiModelProperty("设å¤åç§°") private String deviceName; /** * è§æ ¼åå· */ @ApiModelProperty("è§æ ¼åå·") private String deviceModel; /** src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
@@ -1,5 +1,6 @@ package com.ruoyi.device.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -44,6 +45,11 @@ @Override public AjaxResult saveDeviceLedger(DeviceLedger deviceLedger) { LambdaQueryWrapper<DeviceLedger> deviceLedgerLambdaQueryWrapper = new LambdaQueryWrapper<>(); deviceLedgerLambdaQueryWrapper.eq(DeviceLedger::getDeviceModel,deviceLedger.getDeviceModel()); if (this.count(deviceLedgerLambdaQueryWrapper) > 0) { return AjaxResult.error("设å¤åå·å·²åå¨"); } boolean save = this.save(deviceLedger); if (save){ return AjaxResult.success(); src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,94 @@ package com.ruoyi.equipmentenergyconsumption.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.device.pojo.DeviceLedger; import com.ruoyi.equipmentenergyconsumption.pojo.EquipmentEnergyConsumption; import com.ruoyi.equipmentenergyconsumption.service.EquipmentEnergyConsumptionService; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.List; /** * @author :yys * @date : 2025/7/29 13:19 */ @RestController @Api(tags = "设å¤è½è") @RequestMapping("/equipmentEnergyConsumption") public class EquipmentEnergyConsumptionController extends BaseController { @Autowired private EquipmentEnergyConsumptionService equipmentEnergyConsumptionService; @GetMapping("/listPage") @ApiOperation("设å¤è½è-å页æ¥è¯¢") @Log(title = "设å¤è½è-å页æ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult listPage(Page page, EquipmentEnergyConsumption equipmentEnergyConsumption) { IPage<EquipmentEnergyConsumption> listPage = equipmentEnergyConsumptionService.listPage(page, equipmentEnergyConsumption); return AjaxResult.success(listPage); } @GetMapping("/deviceList") @ApiOperation("设å¤å°è´¦-æ¥è¯¢") @Log(title = "设å¤å°è´¦-æ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult deviceList(DeviceLedger deviceLedger) { List<DeviceLedger> listPage = equipmentEnergyConsumptionService.deviceList(deviceLedger); return AjaxResult.success(listPage); } @PostMapping("/add") @ApiOperation("设å¤è½è-æ°å¢") @Log(title = "设å¤è½è-æ°å¢", businessType = BusinessType.INSERT) public AjaxResult add(@RequestBody EquipmentEnergyConsumption equipmentEnergyConsumption) { boolean save = equipmentEnergyConsumptionService.save(equipmentEnergyConsumption); return save ? AjaxResult.success() : AjaxResult.error(); } @PostMapping("/update") @ApiOperation("设å¤è½è-ä¿®æ¹") @Log(title = "设å¤è½è-ä¿®æ¹", businessType = BusinessType.UPDATE) public AjaxResult update(@RequestBody EquipmentEnergyConsumption equipmentEnergyConsumption) { boolean update = equipmentEnergyConsumptionService.updateById(equipmentEnergyConsumption); return update ? AjaxResult.success() : AjaxResult.error(); } @DeleteMapping("/delete") @ApiOperation("设å¤è½è-å é¤") @Log(title = "设å¤è½è-å é¤", businessType = BusinessType.DELETE) public AjaxResult delete(@RequestBody List<Long> ids) { if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("è¯·éæ©è³å°ä¸æ¡æ°æ®"); boolean remove = equipmentEnergyConsumptionService.removeBatchByIds(ids); return remove ? AjaxResult.success() : AjaxResult.error(); } /** * å¯¼å ¥è®¾å¤è½è */ @Log(title = "å¯¼å ¥è®¾å¤è½è", businessType = BusinessType.IMPORT) @PostMapping("/importData") public AjaxResult importData(MultipartFile file) throws Exception { return equipmentEnergyConsumptionService.importData(file); } @GetMapping("/listPageByTrend") @ApiOperation("设å¤è½è-è½æºè¶å¿-å页æ¥è¯¢") @Log(title = "设å¤è½è-è½æºè¶å¿-å页æ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult listPageByTrend(Page page, EquipmentEnergyConsumption equipmentEnergyConsumption) { IPage<EquipmentEnergyConsumption> listPage = equipmentEnergyConsumptionService.listPageByTrend(page, equipmentEnergyConsumption); return AjaxResult.success(listPage); } } src/main/java/com/ruoyi/equipmentenergyconsumption/mapper/EquipmentEnergyConsumptionMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.ruoyi.equipmentenergyconsumption.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.equipmentenergyconsumption.pojo.EquipmentEnergyConsumption; import org.apache.ibatis.annotations.Param; /** * @author :yys * @date : 2025/7/29 13:16 */ public interface EquipmentEnergyConsumptionMapper extends BaseMapper<EquipmentEnergyConsumption> { /** * å页æ¥è¯¢ * @param page * @param equipmentEnergyConsumption * @return */ IPage<EquipmentEnergyConsumption> listPage(Page page,@Param("req") EquipmentEnergyConsumption equipmentEnergyConsumption); IPage<EquipmentEnergyConsumption> listPageByTrend(Page page,@Param("req") EquipmentEnergyConsumption equipmentEnergyConsumption); } src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/EquipmentEnergyConsumption.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,138 @@ package com.ruoyi.equipmentenergyconsumption.pojo; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Builder; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; /** * @author :yys * @date : 2025/7/29 13:12 */ @Data @TableName("equipment_energy_consumption") @ApiModel public class EquipmentEnergyConsumption { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 设å¤ç¼å· */ @ApiModelProperty("设å¤ç¼å·") @Excel(name = "设å¤ç¼å·") private String code; /** * 设å¤åç§° */ @ApiModelProperty("设å¤åç§°") @Excel(name = "设å¤åç§°") private String name; /** * é¢å®åç */ @ApiModelProperty("é¢å®åç") @Excel(name = "é¢å®åç") private String powerRating; /** * å®é åç */ @ApiModelProperty("å®é åç") @Excel(name = "å®é åç") private String powerActual; /** * 彿¥ç¨çµé */ @ApiModelProperty("彿¥ç¨çµé") @Excel(name = "彿¥ç¨çµé") private BigDecimal dayNum; /** * æ¨ç¨çµé */ @ApiModelProperty("æ¨ç¨çµé") @TableField(exist = false) private BigDecimal toDayNum; /** * æ¬æå¹³åçµéï¼30天计ç®ï¼ */ @ApiModelProperty("æ¬æå¹³åçµéï¼30天计ç®ï¼") @TableField(exist = false) private BigDecimal avgNum; /** * è¶å¿ */ @ApiModelProperty("è¶å¿") @TableField(exist = false) private String trend; /** * 累计ç¨çµé */ @ApiModelProperty("累计ç¨çµé") @Excel(name = "累计ç¨çµé") private BigDecimal sumNum; /** * è¿è¡æ¶é´ */ @ApiModelProperty("è¿è¡æ¶é´") @Excel(name = "è¿è¡æ¶é´" , width = 30, dateFormat = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate runDate; /** * æ¯æ¥éå¶çµé */ @ApiModelProperty("æ¯æ¥éå¶çµé") @Excel(name = "æ¯æ¥éå¶çµé") private BigDecimal everyNum; /** * å建è */ @TableField(fill = FieldFill.INSERT) private Integer createUser; /** * å建æ¶é´ */ @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; /** * ä¿®æ¹è */ @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; /** * ä¿®æ¹æ¶é´ */ @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; /** * ç§æ·ID */ @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/equipmentenergyconsumption/service/EquipmentEnergyConsumptionService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.ruoyi.equipmentenergyconsumption.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.device.pojo.DeviceLedger; import com.ruoyi.equipmentenergyconsumption.pojo.EquipmentEnergyConsumption; import com.ruoyi.framework.web.domain.AjaxResult; import org.springframework.web.multipart.MultipartFile; import java.util.List; /** * @author :yys * @date : 2025/7/29 13:18 */ public interface EquipmentEnergyConsumptionService extends IService<EquipmentEnergyConsumption> { IPage<EquipmentEnergyConsumption> listPage(Page page, EquipmentEnergyConsumption equipmentEnergyConsumption); AjaxResult importData(MultipartFile file); IPage<EquipmentEnergyConsumption> listPageByTrend(Page page, EquipmentEnergyConsumption equipmentEnergyConsumption); List<DeviceLedger> deviceList(DeviceLedger deviceLedger); } src/main/java/com/ruoyi/equipmentenergyconsumption/service/impl/EquipmentEnergyConsumptionServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,97 @@ package com.ruoyi.equipmentenergyconsumption.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.device.mapper.DeviceLedgerMapper; import com.ruoyi.device.pojo.DeviceLedger; import com.ruoyi.equipmentenergyconsumption.mapper.EquipmentEnergyConsumptionMapper; import com.ruoyi.equipmentenergyconsumption.pojo.EquipmentEnergyConsumption; import com.ruoyi.equipmentenergyconsumption.service.EquipmentEnergyConsumptionService; import com.ruoyi.framework.web.domain.AjaxResult; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.util.List; /** * @author :yys * @date : 2025/7/29 13:18 */ @Service @Slf4j public class EquipmentEnergyConsumptionServiceImpl extends ServiceImpl<EquipmentEnergyConsumptionMapper, EquipmentEnergyConsumption> implements EquipmentEnergyConsumptionService { @Autowired private EquipmentEnergyConsumptionMapper equipmentEnergyConsumptionMapper; @Autowired private DeviceLedgerMapper deviceLedgerMapper; @Override public IPage<EquipmentEnergyConsumption> listPage(Page page, EquipmentEnergyConsumption equipmentEnergyConsumption) { return equipmentEnergyConsumptionMapper.listPage(page, equipmentEnergyConsumption); } @Override public AjaxResult importData(MultipartFile file) { try { ExcelUtil<EquipmentEnergyConsumption> util = new ExcelUtil<EquipmentEnergyConsumption>(EquipmentEnergyConsumption.class); List<EquipmentEnergyConsumption> userList = util.importExcel(file.getInputStream()); if(CollectionUtils.isEmpty(userList)){ return AjaxResult.warn("模æ¿é误æå¯¼å ¥æ°æ®ä¸ºç©º"); } this.saveOrUpdateBatch(userList); return AjaxResult.success(true); }catch (Exception e){ e.printStackTrace(); return AjaxResult.error("å¯¼å ¥å¤±è´¥"); } } @Override public IPage<EquipmentEnergyConsumption> listPageByTrend(Page page, EquipmentEnergyConsumption equipmentEnergyConsumption) { IPage<EquipmentEnergyConsumption> list = equipmentEnergyConsumptionMapper.listPageByTrend(page, equipmentEnergyConsumption); if (list.getTotal() > 0){ // è·åæ¬æç¬¬ä¸å¤©ï¼æåä¸å¤© LocalDate current = LocalDate.now(); LocalDate firstDay = LocalDate.of(current.getYear(), current.getMonth(), 1); LocalDate lastDay = LocalDate.of(current.getYear(), current.getMonth(), current.lengthOfMonth()); list.getRecords().forEach(item -> { // è®¡ç®æ¬æå¹³åçµéï¼æ±åæèªç¶ææ¥ï¼æ30天æ±å¹³åæ°ï¼ List<EquipmentEnergyConsumption> eqmList = equipmentEnergyConsumptionMapper.selectList(new LambdaQueryWrapper<EquipmentEnergyConsumption>() .eq(EquipmentEnergyConsumption::getCode, item.getCode()) .ge(EquipmentEnergyConsumption::getRunDate, lastDay) .lt(EquipmentEnergyConsumption::getRunDate, firstDay)); if (!CollectionUtils.isEmpty(eqmList)){ BigDecimal avgNum = eqmList.stream().map(EquipmentEnergyConsumption::getDayNum).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(30), 2, RoundingMode.HALF_UP); item.setAvgNum(avgNum); BigDecimal subtract = item.getToDayNum().subtract(item.getAvgNum()); if (subtract.compareTo(BigDecimal.ZERO) > 0){ item.setTrend("æ¨æ¥ç¨çµæ¯å¹³åçµéå¤" + subtract + "度"); }else if (subtract.compareTo(BigDecimal.ZERO) < 0){ item.setTrend("æ¨æ¥ç¨çµæ¯å¹³åçµéå°" + subtract.abs() + "度"); }else { item.setTrend("æ¨æ¥ç¨çµåå¹³åçµéæå¹³"); } } }); } return list; } @Override public List<DeviceLedger> deviceList(DeviceLedger deviceLedger) { return deviceLedgerMapper.selectList(null); } } src/main/resources/mapper/equipmentenergyconsumption/EquipmentEnergyConsumptionMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ <?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.ruoyi.equipmentenergyconsumption.mapper.EquipmentEnergyConsumptionMapper"> <select id="listPage" resultType="com.ruoyi.equipmentenergyconsumption.pojo.EquipmentEnergyConsumption"> select * from equipment_energy_consumption where 1=1 <if test="req.name != null and req.name != ''"> and `name` like concat('%',#{req.name},'%') </if> </select> <select id="listPageByTrend" resultType="com.ruoyi.equipmentenergyconsumption.pojo.EquipmentEnergyConsumption"> SELECT *, day_num as toDayNum FROM equipment_energy_consumption WHERE run_date = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY) GROUP BY `code` ORDER BY update_time DESC; </select> </mapper>