diff --git a/mh-admin/src/main/java/com/mh/web/controller/device/CollectionParamsManageController.java b/mh-admin/src/main/java/com/mh/web/controller/device/CollectionParamsManageController.java index 0e6ab92..6253e43 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/device/CollectionParamsManageController.java +++ b/mh-admin/src/main/java/com/mh/web/controller/device/CollectionParamsManageController.java @@ -12,6 +12,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.Date; import java.util.List; /** @@ -59,6 +60,7 @@ public class CollectionParamsManageController extends BaseController { public AjaxResult add(@Validated @RequestBody CollectionParamsManage communicationParams) { communicationParams.setCreateBy(getUsername()); + communicationParams.setCreateTime(new Date()); return toAjax(iCollectionParamsManageService.insertCollectionParamsManage(communicationParams)); } @@ -71,6 +73,7 @@ public class CollectionParamsManageController extends BaseController { public AjaxResult edit(@Validated @RequestBody CollectionParamsManage communicationParams) { communicationParams.setUpdateBy(getUsername()); + communicationParams.setUpdateTime(new Date()); return toAjax(iCollectionParamsManageService.updateCollectionParamsManage(communicationParams)); } diff --git a/mh-admin/src/main/java/com/mh/web/controller/device/DeviceLedgerController.java b/mh-admin/src/main/java/com/mh/web/controller/device/DeviceLedgerController.java index 5d1b4bd..28140e4 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/device/DeviceLedgerController.java +++ b/mh-admin/src/main/java/com/mh/web/controller/device/DeviceLedgerController.java @@ -12,6 +12,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.Date; import java.util.List; /** @@ -59,6 +60,7 @@ public class DeviceLedgerController extends BaseController { public AjaxResult add(@Validated @RequestBody DeviceLedger deviceLedger) { deviceLedger.setCreateBy(getUsername()); + deviceLedger.setCreateTime(new Date()); return toAjax(deviceLedgerService.insertDeviceLedger(deviceLedger)); } @@ -71,6 +73,7 @@ public class DeviceLedgerController extends BaseController { public AjaxResult edit(@Validated @RequestBody DeviceLedger deviceLedger) { deviceLedger.setUpdateBy(getUsername()); + deviceLedger.setUpdateTime(new Date()); return toAjax(deviceLedgerService.updateDeviceLedger(deviceLedger)); } diff --git a/mh-admin/src/main/java/com/mh/web/controller/device/DeviceQrManageController.java b/mh-admin/src/main/java/com/mh/web/controller/device/DeviceQrManageController.java index 47067e9..4692069 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/device/DeviceQrManageController.java +++ b/mh-admin/src/main/java/com/mh/web/controller/device/DeviceQrManageController.java @@ -12,6 +12,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.Date; import java.util.List; /** @@ -66,6 +67,7 @@ public class DeviceQrManageController extends BaseController { public AjaxResult add(@Validated @RequestBody DeviceQrManage deviceQrManage) { deviceQrManage.setCreateBy(getUsername()); + deviceQrManage.setCreateTime(new Date()); return toAjax(deviceQrManageService.insertDeviceQrManage(deviceQrManage)); } @@ -78,6 +80,7 @@ public class DeviceQrManageController extends BaseController { public AjaxResult edit(@Validated @RequestBody DeviceQrManage deviceQrManage) { deviceQrManage.setUpdateBy(getUsername()); + deviceQrManage.setUpdateTime(new Date()); return toAjax(deviceQrManageService.updateDeviceQrManage(deviceQrManage)); } diff --git a/mh-admin/src/main/java/com/mh/web/controller/monitor/IndoorTempMonitorController.java b/mh-admin/src/main/java/com/mh/web/controller/monitor/IndoorTempMonitorController.java index 4183a78..4cdf497 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/monitor/IndoorTempMonitorController.java +++ b/mh-admin/src/main/java/com/mh/web/controller/monitor/IndoorTempMonitorController.java @@ -1,5 +1,6 @@ package com.mh.web.controller.monitor; +import com.fasterxml.jackson.core.JsonProcessingException; import com.mh.common.core.controller.BaseController; import com.mh.common.core.domain.AjaxResult; import com.mh.system.service.device.IIndoorTempMonitorService; @@ -16,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController; * @date 2025-02-18 15:43:47 */ @RestController -@RequestMapping("/device") +@RequestMapping("/device/indoor") public class IndoorTempMonitorController extends BaseController { private final IIndoorTempMonitorService indoorTempMonitorService; @@ -29,9 +30,14 @@ public class IndoorTempMonitorController extends BaseController { /** * 根据楼层查询每一个房间的温度 */ - @GetMapping("/indoorTemp") - public AjaxResult getIndoorTempByFloor(String floorId) { + @GetMapping("/temp") + public AjaxResult getIndoorTempByFloor(String floorId) throws JsonProcessingException { return AjaxResult.success(indoorTempMonitorService.getIndoorTempByFloor(floorId)); } + @GetMapping("/tempHis") + public AjaxResult getIndoorTempHisByHouseId(String houseId) { + return AjaxResult.success(indoorTempMonitorService.getIndoorTempHisByHouseId(houseId)); + } + } diff --git a/mh-common/src/main/java/com/mh/common/constant/Constants.java b/mh-common/src/main/java/com/mh/common/constant/Constants.java index b1b4ae4..91b18bf 100644 --- a/mh-common/src/main/java/com/mh/common/constant/Constants.java +++ b/mh-common/src/main/java/com/mh/common/constant/Constants.java @@ -212,4 +212,7 @@ public class Constants { public static final String ADD_CHILLER = "add_chiller"; // 添加主机 public static final String DELETE_CHILLER = "delete_chiller"; // 减少主机 + + // 项目图片存储路径 + public static String PROJECT_IMG_PATH = "\\images\\"; } diff --git a/mh-common/src/main/java/com/mh/common/core/domain/dto/DeviceDTO.java b/mh-common/src/main/java/com/mh/common/core/domain/dto/DeviceDTO.java new file mode 100644 index 0000000..7d5aea8 --- /dev/null +++ b/mh-common/src/main/java/com/mh/common/core/domain/dto/DeviceDTO.java @@ -0,0 +1,68 @@ +package com.mh.common.core.domain.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; +import org.apache.commons.lang3.builder.ToStringBuilder; + +import java.util.Date; + +@JsonInclude(JsonInclude.Include.NON_NULL) +class DeviceDTO { + private String otherName; + private String curValue; + /** + * 时间格式化 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date curTime; + private Integer status; + + DeviceDTO(TempHumidityDTO data) { + this.otherName = data.getOtherName(); + this.curValue = data.getCurValue().stripTrailingZeros().toPlainString(); + this.curTime = data.getCurTime(); + this.status = data.getStatus(); + } + + public String getOtherName() { + return otherName; + } + + public void setOtherName(String otherName) { + this.otherName = otherName; + } + + public String getCurValue() { + return curValue; + } + + public void setCurValue(String curValue) { + this.curValue = curValue; + } + + public Date getCurTime() { + return curTime; + } + + public void setCurTime(Date curTime) { + this.curTime = curTime; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + @Override + public String toString() { + return new ToStringBuilder(this) + .append("otherName", otherName) + .append("curValue", curValue) + .append("curTime", curTime) + .append("status", status) + .toString(); + } +} diff --git a/mh-common/src/main/java/com/mh/common/core/domain/dto/HouseGroupDTO.java b/mh-common/src/main/java/com/mh/common/core/domain/dto/HouseGroupDTO.java new file mode 100644 index 0000000..3ca73e7 --- /dev/null +++ b/mh-common/src/main/java/com/mh/common/core/domain/dto/HouseGroupDTO.java @@ -0,0 +1,64 @@ +package com.mh.common.core.domain.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import org.apache.commons.lang3.builder.ToStringBuilder; + +import java.util.ArrayList; +import java.util.List; + +// 最终JSON结构类(优化分组逻辑) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class HouseGroupDTO { + private String houseId; + private String houseName; + private List deviceList = new ArrayList<>(); + + // 分组构造器 + public HouseGroupDTO(TempHumidityDTO data) { + this.houseId = data.getHouseId(); + this.houseName = data.getHouseName(); + } + + // 合并设备的方法 + public void merge(HouseGroupDTO other) { + this.deviceList.addAll(other.deviceList); + } + + // 添加单个设备 + public void addDevice(TempHumidityDTO data) { + this.deviceList.add(new DeviceDTO(data)); + } + + public String getHouseId() { + return houseId; + } + + public void setHouseId(String houseId) { + this.houseId = houseId; + } + + public String getHouseName() { + return houseName; + } + + public void setHouseName(String houseName) { + this.houseName = houseName; + } + + public List getDeviceList() { + return deviceList; + } + + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; + } + + @Override + public String toString() { + return new ToStringBuilder(this) + .append("houseId", houseId) + .append("houseName", houseName) + .append("deviceList", deviceList) + .toString(); + } +} diff --git a/mh-common/src/main/java/com/mh/common/core/domain/dto/TempHumidityDTO.java b/mh-common/src/main/java/com/mh/common/core/domain/dto/TempHumidityDTO.java new file mode 100644 index 0000000..18fc992 --- /dev/null +++ b/mh-common/src/main/java/com/mh/common/core/domain/dto/TempHumidityDTO.java @@ -0,0 +1,93 @@ +package com.mh.common.core.domain.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; +import org.apache.commons.lang3.builder.ToStringBuilder; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author LJF + * @version 1.0 + * @project EEMCS + * @description 温湿度DTO管理 + * @date 2025-02-24 16:55:22 + */ +public class TempHumidityDTO { + + private String houseId; + + private String houseName; + + private String otherName; + + private BigDecimal curValue; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date curTime; + + private Integer status; + + public String getOtherName() { + return otherName; + } + + public void setOtherName(String otherName) { + this.otherName = otherName; + } + + public String getHouseId() { + return houseId; + } + + public void setHouseId(String houseId) { + this.houseId = houseId; + } + + public String getHouseName() { + return houseName; + } + + public void setHouseName(String houseName) { + this.houseName = houseName; + } + + public BigDecimal getCurValue() { + return curValue; + } + + public void setCurValue(BigDecimal curValue) { + this.curValue = curValue; + } + + public Date getCurTime() { + return curTime; + } + + public void setCurTime(Date curTime) { + this.curTime = curTime; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + @Override + public String toString() { + return new ToStringBuilder(this) + .append("houseId", houseId) + .append("houseName", houseName) + .append("otherName", otherName) + .append("curValue", curValue) + .append("curTime", curTime) + .append("status", status) + .toString(); + } +} \ No newline at end of file diff --git a/mh-common/src/main/java/com/mh/common/core/domain/entity/ChillersEntity.java b/mh-common/src/main/java/com/mh/common/core/domain/entity/ChillersEntity.java index f9e2153..b82dc74 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/entity/ChillersEntity.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/entity/ChillersEntity.java @@ -1,5 +1,7 @@ package com.mh.common.core.domain.entity; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -20,10 +22,10 @@ public class ChillersEntity implements Serializable { private Long id; - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; private int register_id; @@ -51,5 +53,10 @@ public class ChillersEntity implements Serializable { private Integer paramType; // 参数类型 + private String curValue; // 最新采集数据 + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date curTime; + } diff --git a/mh-common/src/main/java/com/mh/common/core/domain/entity/CollectionParamsManage.java b/mh-common/src/main/java/com/mh/common/core/domain/entity/CollectionParamsManage.java index 12500f2..cfe8e72 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/entity/CollectionParamsManage.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/entity/CollectionParamsManage.java @@ -1,7 +1,10 @@ package com.mh.common.core.domain.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import com.mh.common.core.domain.BaseEntity; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -22,6 +25,7 @@ public class CollectionParamsManage extends BaseEntity { /** * id */ + @TableId(value = "id", type = IdType.ASSIGN_UUID) private String id; /** @@ -97,6 +101,7 @@ public class CollectionParamsManage extends BaseEntity { /** * 当前时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date curTime; /** diff --git a/mh-common/src/main/java/com/mh/common/core/domain/entity/DeviceLedger.java b/mh-common/src/main/java/com/mh/common/core/domain/entity/DeviceLedger.java index 7c6fb67..9b02f5c 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/entity/DeviceLedger.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/entity/DeviceLedger.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import com.mh.common.core.domain.BaseEntity; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -67,6 +68,7 @@ public class DeviceLedger extends BaseEntity { /** * 设备的安装日期和时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date installTime; /** diff --git a/mh-common/src/main/java/com/mh/common/core/domain/entity/SparePartsManage.java b/mh-common/src/main/java/com/mh/common/core/domain/entity/SparePartsManage.java index 7f01d01..14fdba8 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/entity/SparePartsManage.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/entity/SparePartsManage.java @@ -1,12 +1,15 @@ package com.mh.common.core.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonInclude; import com.mh.common.core.domain.BaseEntity; import org.apache.commons.lang3.builder.ToStringBuilder; import java.math.BigDecimal; +import java.util.Map; /** * @author LJF @@ -64,6 +67,48 @@ public class SparePartsManage extends BaseEntity { */ private BigDecimal unitPrice; + @TableField(exist = false) + private String searchValue; + + /** 备注 */ + @TableField(exist = false) + private String remark; + + /** 请求参数 */ + @TableField(exist = false) + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private Map params; + + @Override + public String getSearchValue() { + return searchValue; + } + + @Override + public void setSearchValue(String searchValue) { + this.searchValue = searchValue; + } + + @Override + public String getRemark() { + return remark; + } + + @Override + public void setRemark(String remark) { + this.remark = remark; + } + + @Override + public Map getParams() { + return params; + } + + @Override + public void setParams(Map params) { + this.params = params; + } + public String getId() { return id; } @@ -148,6 +193,9 @@ public class SparePartsManage extends BaseEntity { .append("minInventoryLevels", minInventoryLevels) .append("serviceLife", serviceLife) .append("unitPrice", unitPrice) + .append("searchValue", searchValue) + .append("remark", remark) + .append("params", params) .toString(); } } diff --git a/mh-common/src/main/java/com/mh/common/utils/file/FileToMultipartConverter.java b/mh-common/src/main/java/com/mh/common/utils/file/FileToMultipartConverter.java new file mode 100644 index 0000000..b27f892 --- /dev/null +++ b/mh-common/src/main/java/com/mh/common/utils/file/FileToMultipartConverter.java @@ -0,0 +1,73 @@ +package com.mh.common.utils.file; + +import org.springframework.web.multipart.MultipartFile; + +import java.io.*; + +/** + * @author LJF + * @version 1.0 + * @project EEMCS + * @description file转换 + * @date 2025-02-25 17:38:11 + */ +public class FileToMultipartConverter implements MultipartFile { + private final File file; + private final String contentType; + + public FileToMultipartConverter(File file, String contentType) { + this.file = file; + this.contentType = contentType; + } + + @Override + public String getName() { + return file.getName(); + } + + @Override + public String getOriginalFilename() { + return file.getName(); + } + + @Override + public String getContentType() { + return contentType; + } + + @Override + public boolean isEmpty() { + return file.length() == 0; + } + + @Override + public long getSize() { + return file.length(); + } + + @Override + public byte[] getBytes() throws IOException { + FileInputStream inputStream = new FileInputStream(file); + byte[] bytes = new byte[(int) file.length()]; + inputStream.read(bytes); + inputStream.close(); + return bytes; + } + + @Override + public InputStream getInputStream() throws IOException { + return new FileInputStream(file); + } + + @Override + public void transferTo(File dest) throws IOException, IllegalStateException { + try (InputStream in = new FileInputStream(this.file); + OutputStream out = new FileOutputStream(dest)) { + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = in.read(buffer)) != -1) { + out.write(buffer, 0, bytesRead); + } + } + } +} diff --git a/mh-common/src/main/java/com/mh/common/utils/qrcode/QrCodeUtil.java b/mh-common/src/main/java/com/mh/common/utils/qrcode/QrCodeUtil.java index fe083b5..026b89b 100644 --- a/mh-common/src/main/java/com/mh/common/utils/qrcode/QrCodeUtil.java +++ b/mh-common/src/main/java/com/mh/common/utils/qrcode/QrCodeUtil.java @@ -110,7 +110,6 @@ public class QrCodeUtil { String fileName = file.getName(); fileName = fileName.substring(0, fileName.indexOf(".")>0?fileName.indexOf("."):fileName.length()) + "." + FORMAT.toLowerCase(); - System.out.println("destPath:"+destPath); ImageIO.write(image, FORMAT, new File(destPath)); return fileName; } diff --git a/mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java b/mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java index 7ec519f..940867b 100644 --- a/mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java +++ b/mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java @@ -1,6 +1,7 @@ package com.mh.system.mapper.device; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mh.common.core.domain.dto.TempHumidityDTO; import com.mh.common.core.domain.entity.CollectionParamsManage; import org.apache.ibatis.annotations.*; @@ -100,8 +101,10 @@ public interface CollectionParamsManageMapper extends BaseMapper> selectByParamType(@Param("floorId") String floorId, - @Param("paramType") String paramType); + " and cpm.param_type = #{paramType} ") + List selectByParamType(@Param("floorId") String floorId, + @Param("paramType") String paramType); + + @Select("select " + + " cpm.id " + + "from " + + " cpm_space_relation csr " + + "join collection_params_manage cpm " + + "on " + + " csr.cpm_id = cpm.id " + + "join house_info hi " + + "on " + + " csr.house_id = hi.id " + + " and hi.id = #{houseId} " + + " and cpm.mt_type = #{mtType} ") + List> selectByHouseIdAndMtType(@Param("houseId") String houseId, + @Param("mtType") String mtType); } diff --git a/mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java b/mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java index 25fb657..f8bf198 100644 --- a/mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java +++ b/mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java @@ -174,4 +174,8 @@ public interface DataProcessMapper { @Select("select * from ${tableName} where register_id = #{registerId} and cur_time >= CURRENT_TIMESTAMP - INTERVAL '24 hours' ") List selectLineDataByCodeAndRegisterAddr(@Param("tableName") String tableName, @Param("registerId") String registerId); + + @Select("select * from ${tableName} where register_id = #{registerId} order by cur_time desc") + List selectHisDataByCodeAndRegisterAddr(@Param("tableName") String tableName, + @Param("registerId") String registerId); } diff --git a/mh-system/src/main/java/com/mh/system/service/device/IIndoorTempMonitorService.java b/mh-system/src/main/java/com/mh/system/service/device/IIndoorTempMonitorService.java index 4aaa58e..7525ed8 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/IIndoorTempMonitorService.java +++ b/mh-system/src/main/java/com/mh/system/service/device/IIndoorTempMonitorService.java @@ -1,6 +1,11 @@ package com.mh.system.service.device; import com.alibaba.fastjson2.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.mh.common.core.domain.dto.HouseGroupDTO; +import com.mh.common.core.domain.entity.ChillersEntity; + +import java.util.List; /** * @author LJF @@ -11,6 +16,7 @@ import com.alibaba.fastjson2.JSONObject; */ public interface IIndoorTempMonitorService { - JSONObject getIndoorTempByFloor(String floorId); + List getIndoorTempByFloor(String floorId) throws JsonProcessingException; + List getIndoorTempHisByHouseId(String houseId); } diff --git a/mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java index 30958e8..570fd6a 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java @@ -15,6 +15,8 @@ import com.mh.system.service.device.ICollectionParamsManageService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -71,6 +73,19 @@ public class CollectionParamsManageServiceImpl implements ICollectionParamsManag if (!StringUtils.isEmpty(communicationParams.getRemark())) { queryWrapper.like("remark", communicationParams.getRemark()); } + // 添加时间范围 + if (!communicationParams.getParams().isEmpty()) { + String beginTimeStr = (String) communicationParams.getParams().get("beginTime"); + String endTimeStr = (String) communicationParams.getParams().get("endTime"); + + if (StringUtils.isNotEmpty(beginTimeStr) && StringUtils.isNotEmpty(endTimeStr)) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate beginTime = LocalDate.parse(beginTimeStr, formatter); + LocalDate endTime = LocalDate.parse(endTimeStr, formatter); + + queryWrapper.between("create_time", java.sql.Date.valueOf(beginTime), java.sql.Date.valueOf(endTime)); + } + } queryWrapper.orderByDesc("cur_time"); return collectionParamsManageMapper.selectList(queryWrapper); } diff --git a/mh-system/src/main/java/com/mh/system/service/device/impl/DeviceLedgerServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/device/impl/DeviceLedgerServiceImpl.java index ecf9aaa..b05a8e4 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/impl/DeviceLedgerServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/device/impl/DeviceLedgerServiceImpl.java @@ -8,6 +8,8 @@ import com.mh.system.service.device.IDeviceLedgerService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; /** @@ -43,7 +45,16 @@ public class DeviceLedgerServiceImpl implements IDeviceLedgerService { } // 出入库时间范围 if (!ledgerInfo.getParams().isEmpty()) { - queryWrapper.between("create_time", ledgerInfo.getParams().get("beginTime"), ledgerInfo.getParams().get("endTime")); + String beginTimeStr = (String) ledgerInfo.getParams().get("beginTime"); + String endTimeStr = (String) ledgerInfo.getParams().get("endTime"); + + if (StringUtils.isNotEmpty(beginTimeStr) && StringUtils.isNotEmpty(endTimeStr)) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate beginTime = LocalDate.parse(beginTimeStr, formatter); + LocalDate endTime = LocalDate.parse(endTimeStr, formatter); + + queryWrapper.between("create_time", java.sql.Date.valueOf(beginTime), java.sql.Date.valueOf(endTime)); + } } return deviceLedgerMapper.selectList(queryWrapper); } diff --git a/mh-system/src/main/java/com/mh/system/service/device/impl/DeviceQrManageServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/device/impl/DeviceQrManageServiceImpl.java index e6e99b1..af8e6d3 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/impl/DeviceQrManageServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/device/impl/DeviceQrManageServiceImpl.java @@ -1,14 +1,21 @@ package com.mh.system.service.device.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mh.common.config.MHConfig; +import com.mh.common.constant.Constants; import com.mh.common.core.domain.entity.DeviceQrManage; +import com.mh.common.utils.file.FileToMultipartConverter; +import com.mh.common.utils.file.FileUploadUtils; +import com.mh.common.utils.file.MimeTypeUtils; import com.mh.common.utils.qrcode.QrCodeUtil; import com.mh.system.mapper.device.DeviceQrManageMapper; import com.mh.system.service.device.IDeviceQrManageService; import jakarta.annotation.Resource; +import org.apache.commons.io.FileUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.io.File; import java.util.Date; import java.util.List; import java.util.UUID; @@ -47,7 +54,7 @@ public class DeviceQrManageServiceImpl implements IDeviceQrManageService { @Override public int updateDeviceQrManage(DeviceQrManage deviceQrManage) { // 判断是解绑还是绑定 - if (deviceQrManage.getStatus() == 0) { + if (deviceQrManage.getStatus() == 0 && deviceQrManage.getBindTime() == null) { // 绑定 deviceQrManage.setBindTime(new Date()); } else { @@ -86,10 +93,18 @@ public class DeviceQrManageServiceImpl implements IDeviceQrManageService { String serialNum = "mh_" + qrCode; deviceQrManage.setSerialNum(serialNum); deviceQrManage.setStatus(1); - deviceQrManage.setPicContent(serialNum + ".png"); deviceQrManage.setCreateTime(new Date()); deviceQrManage.setCreateBy(createBy); - QrCodeUtil.save(serialNum, null, "D:\\mh_code\\EEMCS\\images\\"+serialNum+".png"); + String currentPath = System.getProperty("user.dir"); + QrCodeUtil.save(serialNum, null, currentPath+ Constants.PROJECT_IMG_PATH +serialNum+".png"); + // 从文件中读取二维码图片 + File file = FileUtils.getFile(currentPath+ Constants.PROJECT_IMG_PATH +serialNum+".png"); + // File转成MultipartFile + FileToMultipartConverter fileToMultipartConverter = new FileToMultipartConverter(file, "png"); + String avatar = FileUploadUtils.upload(MHConfig.getAvatarPath(), fileToMultipartConverter, MimeTypeUtils.IMAGE_EXTENSION); + deviceQrManage.setPicContent(avatar); + // 删除掉原始文件 + FileUtils.deleteQuietly(file); deviceQrManageMapper.insert(deviceQrManage); } return 0; diff --git a/mh-system/src/main/java/com/mh/system/service/device/impl/IndoorTempMonitorServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/device/impl/IndoorTempMonitorServiceImpl.java index bd45fe9..bf3d398 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/impl/IndoorTempMonitorServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/device/impl/IndoorTempMonitorServiceImpl.java @@ -1,15 +1,24 @@ package com.mh.system.service.device.impl; import com.alibaba.fastjson2.JSONObject; -import com.mh.common.core.domain.entity.CollectionParamsManage; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.mh.common.core.domain.dto.HouseGroupDTO; +import com.mh.common.core.domain.dto.TempHumidityDTO; +import com.mh.common.core.domain.entity.ChillersEntity; +import com.mh.common.utils.DateUtils; import com.mh.system.mapper.device.CollectionParamsManageMapper; +import com.mh.system.mapper.device.DataProcessMapper; import com.mh.system.service.device.IIndoorTempMonitorService; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; /** * @author LJF @@ -18,16 +27,74 @@ import java.util.Objects; * @description 室内温湿度查询实现类 * @date 2025-02-21 16:32:23 */ +@Slf4j @Service public class IndoorTempMonitorServiceImpl implements IIndoorTempMonitorService { @Resource private CollectionParamsManageMapper collectionParamsManageMapper; + @Resource + private DataProcessMapper dataProcessMapper; + @Override - public JSONObject getIndoorTempByFloor(String floorId) { + public List getIndoorTempByFloor(String floorId) throws JsonProcessingException { // 查询采集类型是温度的参数,采集参数是99 - List> collectionParamsManages = collectionParamsManageMapper.selectByParamType(floorId,"99"); - return null; + List collectionParamsManages = collectionParamsManageMapper.selectByParamType(floorId,"99"); + return convert(collectionParamsManages); + } + + /** + * 格式转换成json + * @param dataList + * @return + * @throws JsonProcessingException + */ + public static List convert(List dataList) throws JsonProcessingException { + // 使用复合键分组(houseId + houseName) + Map groupedMap = dataList.stream() + .collect(Collectors.groupingBy( + data -> { + // 添加日志以检查每条数据的 houseId 和 houseName + log.info("Processing data: houseId={}, houseName={}", data.getHouseId(), data.getHouseName()); + return data.getHouseId() + "|" + data.getHouseName(); + }, + Collectors.collectingAndThen( + Collectors.toList(), + list -> { + if (list.size() > 1) { + log.warn("Duplicate entries found for key: {}|{}", list.get(0).getHouseId(), list.get(0).getHouseName()); + } + HouseGroupDTO group = new HouseGroupDTO(list.get(0)); + list.forEach(group::addDevice); + return group; + } + ) + )); + + // 转换为有序列表(按首次出现顺序) + return new ArrayList<>(groupedMap.values()); + } + + @Override + public List getIndoorTempHisByHouseId(String houseId) { + String now = DateUtils.getTime(); + String tableName = "chillers_data_min" + now.substring(0, 4); + // 根据房间id查询对应的cpm.id + List> list = collectionParamsManageMapper.selectByHouseIdAndMtType(houseId, "99"); + if (list.isEmpty()) { + return List.of(); + } + List result = new ArrayList<>(); + // 遍历查询到的cpm.id + for (Map cpmIdMap : list) { + String id = cpmIdMap.get("id").toString(); + List chillersEntities = dataProcessMapper.selectHisDataByCodeAndRegisterAddr(tableName, id); + result.addAll(chillersEntities); + } + if (result.isEmpty()) { + return List.of(); + } + return result; } } diff --git a/mh-system/src/main/java/com/mh/system/service/device/impl/SparePartsManageServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/device/impl/SparePartsManageServiceImpl.java index 317ce37..38d7534 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/impl/SparePartsManageServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/device/impl/SparePartsManageServiceImpl.java @@ -8,6 +8,8 @@ import com.mh.system.service.device.ISparePartsManageService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; /** @@ -38,8 +40,18 @@ public class SparePartsManageServiceImpl implements ISparePartsManageService { queryWrapper.like("spare_name", sparePartsManage.getSpareName()); } // 入库时间范围 - if (sparePartsManage.getCreateTime() != null) { - queryWrapper.between("create_time", sparePartsManage.getParams().get("beginTime"), sparePartsManage.getParams().get("endTime")); + // 添加时间范围 + if (!sparePartsManage.getParams().isEmpty()) { + String beginTimeStr = (String) sparePartsManage.getParams().get("beginTime"); + String endTimeStr = (String) sparePartsManage.getParams().get("endTime"); + + if (StringUtils.isNotEmpty(beginTimeStr) && StringUtils.isNotEmpty(endTimeStr)) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate beginTime = LocalDate.parse(beginTimeStr, formatter); + LocalDate endTime = LocalDate.parse(endTimeStr, formatter); + + queryWrapper.between("create_time", java.sql.Date.valueOf(beginTime), java.sql.Date.valueOf(endTime)); + } } queryWrapper.orderByDesc("create_time"); return sparePartsManageMapper.selectList(queryWrapper);