Browse Source

1、测试设备台账、设备采集参数、二维码维护、备件出入库管理接口;

dev
mh 2 months ago
parent
commit
1a589e8867
  1. 3
      mh-admin/src/main/java/com/mh/web/controller/device/CollectionParamsManageController.java
  2. 3
      mh-admin/src/main/java/com/mh/web/controller/device/DeviceLedgerController.java
  3. 3
      mh-admin/src/main/java/com/mh/web/controller/device/DeviceQrManageController.java
  4. 12
      mh-admin/src/main/java/com/mh/web/controller/monitor/IndoorTempMonitorController.java
  5. 3
      mh-common/src/main/java/com/mh/common/constant/Constants.java
  6. 68
      mh-common/src/main/java/com/mh/common/core/domain/dto/DeviceDTO.java
  7. 64
      mh-common/src/main/java/com/mh/common/core/domain/dto/HouseGroupDTO.java
  8. 93
      mh-common/src/main/java/com/mh/common/core/domain/dto/TempHumidityDTO.java
  9. 11
      mh-common/src/main/java/com/mh/common/core/domain/entity/ChillersEntity.java
  10. 5
      mh-common/src/main/java/com/mh/common/core/domain/entity/CollectionParamsManage.java
  11. 2
      mh-common/src/main/java/com/mh/common/core/domain/entity/DeviceLedger.java
  12. 48
      mh-common/src/main/java/com/mh/common/core/domain/entity/SparePartsManage.java
  13. 73
      mh-common/src/main/java/com/mh/common/utils/file/FileToMultipartConverter.java
  14. 1
      mh-common/src/main/java/com/mh/common/utils/qrcode/QrCodeUtil.java
  15. 31
      mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java
  16. 4
      mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java
  17. 8
      mh-system/src/main/java/com/mh/system/service/device/IIndoorTempMonitorService.java
  18. 15
      mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java
  19. 13
      mh-system/src/main/java/com/mh/system/service/device/impl/DeviceLedgerServiceImpl.java
  20. 21
      mh-system/src/main/java/com/mh/system/service/device/impl/DeviceQrManageServiceImpl.java
  21. 75
      mh-system/src/main/java/com/mh/system/service/device/impl/IndoorTempMonitorServiceImpl.java
  22. 16
      mh-system/src/main/java/com/mh/system/service/device/impl/SparePartsManageServiceImpl.java

3
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));
}

3
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));
}

3
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));
}

12
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));
}
}

3
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\\";
}

68
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();
}
}

64
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<DeviceDTO> 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<DeviceDTO> getDeviceList() {
return deviceList;
}
public void setDeviceList(List<DeviceDTO> deviceList) {
this.deviceList = deviceList;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("houseId", houseId)
.append("houseName", houseName)
.append("deviceList", deviceList)
.toString();
}
}

93
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();
}
}

11
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;
}

5
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;
/**

2
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;
/**

48
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<String, Object> 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<String, Object> getParams() {
return params;
}
@Override
public void setParams(Map<String, Object> 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();
}
}

73
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);
}
}
}
}

1
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;
}

31
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<CollectionParam
@Select("select " +
" csr.house_id, " +
" hi.house_name, " +
" cpm.cur_value," +
" cpm.cur_time " +
" cpm.other_name, " +
" cpm.cur_value, " +
" cpm.cur_time, " +
" dl.status " +
"from " +
" cpm_space_relation csr " +
"join collection_params_manage cpm " +
@ -110,8 +113,26 @@ public interface CollectionParamsManageMapper extends BaseMapper<CollectionParam
"join house_info hi " +
"on " +
" csr.house_id = hi.id " +
"join device_ledger dl " +
"on " +
" dl.id = cpm.device_ledger_id " +
" and csr.floor_id = #{floorId} " +
" and cpm.param_type = #{paramType} ")
List<Map<String, Objects>> selectByParamType(@Param("floorId") String floorId,
@Param("paramType") String paramType);
" and cpm.param_type = #{paramType} ")
List<TempHumidityDTO> 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<Map<String, String>> selectByHouseIdAndMtType(@Param("houseId") String houseId,
@Param("mtType") String mtType);
}

4
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<ChillersEntity> selectLineDataByCodeAndRegisterAddr(@Param("tableName") String tableName,
@Param("registerId") String registerId);
@Select("select * from ${tableName} where register_id = #{registerId} order by cur_time desc")
List<ChillersEntity> selectHisDataByCodeAndRegisterAddr(@Param("tableName") String tableName,
@Param("registerId") String registerId);
}

8
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<HouseGroupDTO> getIndoorTempByFloor(String floorId) throws JsonProcessingException;
List<ChillersEntity> getIndoorTempHisByHouseId(String houseId);
}

15
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);
}

13
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);
}

21
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;

75
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<HouseGroupDTO> getIndoorTempByFloor(String floorId) throws JsonProcessingException {
// 查询采集类型是温度的参数,采集参数是99
List<Map<String, Objects>> collectionParamsManages = collectionParamsManageMapper.selectByParamType(floorId,"99");
return null;
List<TempHumidityDTO> collectionParamsManages = collectionParamsManageMapper.selectByParamType(floorId,"99");
return convert(collectionParamsManages);
}
/**
* 格式转换成json
* @param dataList
* @return
* @throws JsonProcessingException
*/
public static List<HouseGroupDTO> convert(List<TempHumidityDTO> dataList) throws JsonProcessingException {
// 使用复合键分组(houseId + houseName)
Map<String, HouseGroupDTO> 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<ChillersEntity> getIndoorTempHisByHouseId(String houseId) {
String now = DateUtils.getTime();
String tableName = "chillers_data_min" + now.substring(0, 4);
// 根据房间id查询对应的cpm.id
List<Map<String, String>> list = collectionParamsManageMapper.selectByHouseIdAndMtType(houseId, "99");
if (list.isEmpty()) {
return List.of();
}
List<ChillersEntity> result = new ArrayList<>();
// 遍历查询到的cpm.id
for (Map<String, String> cpmIdMap : list) {
String id = cpmIdMap.get("id").toString();
List<ChillersEntity> chillersEntities = dataProcessMapper.selectHisDataByCodeAndRegisterAddr(tableName, id);
result.addAll(chillersEntities);
}
if (result.isEmpty()) {
return List.of();
}
return result;
}
}

16
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);

Loading…
Cancel
Save