Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/EquipmentBaseService.java
#	pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/EquipmentBaseServiceImpl.java
林仔 1 tuần trước cách đây
mục cha
commit
6126144416

+ 129 - 0
pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/manhole/ManholeDeviceController.java

@@ -0,0 +1,129 @@
+package com.zksy.web.controller.manhole;
+
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zksy.base.domain.EquipmentBase;
+import com.zksy.base.domain.EquipmentStatus;
+import com.zksy.base.domain.EquipmentType;
+import com.zksy.base.manhole.domain.ManholeData;
+import com.zksy.base.manhole.service.ManholeDataService;
+import com.zksy.base.service.EquipmentBaseService;
+import com.zksy.base.service.EquipmentStatusService;
+import com.zksy.base.service.EquipmentTypeService;
+import com.zksy.common.annotation.Anonymous;
+import com.zksy.common.core.controller.BaseController;
+import com.zksy.common.core.domain.AjaxResult;
+import com.zksy.common.core.domain.AjaxResult2;
+import com.zksy.manhole.dto.in.EquipmentStatusInDTO;
+import com.zksy.manhole.dto.in.ManholeDeviceListInDTO;
+import com.zksy.manhole.dto.in.ManholeDevicePageInDTO;
+import com.zksy.manhole.dto.out.EquipmentBaseOutDTO;
+import com.zksy.manhole.dto.out.EquipmentStatusOutDTO;
+import com.zksy.manhole.dto.out.ManholeDataOutDTO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 窨井盖监测系统-监测设备信息管理Controller
+ * 
+ * @author xianggx
+ * @date 2026-05-06
+ */
+@RestController
+@RequestMapping("/manhole/device")
+@Api(tags = "窨井盖监测系统-监测设备信息管理")
+public class ManholeDeviceController extends BaseController
+{
+    @Autowired
+    private EquipmentBaseService equipmentBaseService;
+
+    @Autowired
+    private EquipmentStatusService equipmentStatusService;
+
+    @Autowired
+    private EquipmentTypeService equipmentTypeService;
+
+    @Autowired
+    private ManholeDataService manholeDataService;
+
+    /**
+     * 分页查询监测设备台账列表
+     */
+    @Anonymous
+    @GetMapping(value = "/findByPage")
+    @ApiOperation(value = "分页查询监测设备台账列表")
+    public AjaxResult2<Page<EquipmentBaseOutDTO>> findByPage(@RequestBody ManholeDevicePageInDTO pageInDTO)
+    {
+        return AjaxResult2.success(equipmentBaseService.findManholeDeviceByPage(pageInDTO));
+    }
+
+    /**
+     * 查询井盖监测设备列表
+     */
+    @Anonymous
+    @GetMapping(value = "/getManholeDataList")
+    @ApiOperation(value = "查询井盖监测设备列表")
+    public AjaxResult2<List<EquipmentBaseOutDTO>> getManholeDataList(@RequestBody ManholeDeviceListInDTO listInDTO)
+    {
+        return AjaxResult2.success(equipmentBaseService.getManholeDataList(listInDTO));
+    }
+
+    /**
+     * 获取监测设备台账详情
+     */
+    @Anonymous
+    @GetMapping(value = "/getById/{id}")
+    @ApiOperation(value = "获取监测设备台账详情")
+    public AjaxResult2<EquipmentBaseOutDTO> getById(@PathVariable("id") Long id)
+    {
+        EquipmentBase equipmentBase = equipmentBaseService.getById(id);
+        if(equipmentBase == null){
+            return AjaxResult2.error("设备ID不存在");
+        }
+        EquipmentBaseOutDTO outDTO = BeanUtil.copyProperties(equipmentBase, EquipmentBaseOutDTO.class);
+        // 查询设备状态
+        EquipmentStatus equipmentStatus = equipmentStatusService.lambdaQuery()
+                .eq(EquipmentStatus::getEquipmentId, outDTO.getEquipmentId())
+                .one();
+        if(equipmentStatus != null){
+            EquipmentStatusOutDTO equipmentStatusOutDTO = BeanUtil.copyProperties(equipmentStatus, EquipmentStatusOutDTO.class);
+            outDTO.setEquipmentStatus(equipmentStatusOutDTO);
+        }
+        // 查询设备类别名称
+        EquipmentType equipmentType = equipmentTypeService.getById(outDTO.getEquipmentTypeId());
+        if(equipmentType != null){
+            outDTO.setEquipmentTypeName(equipmentType.getTypeName());
+        }
+        // 查询设备监测状态
+        List<ManholeData> manholeDataList = manholeDataService.list(new LambdaQueryWrapper<ManholeData>()
+                .eq(ManholeData::getImeiCardNumber, outDTO.getEquipmentCode())
+                .orderByDesc(ManholeData::getCreateTime));
+        if(CollUtil.isNotEmpty(manholeDataList)){
+            ManholeData manholeData = manholeDataList.get(0);
+            ManholeDataOutDTO manholeDataOutDTO = BeanUtil.copyProperties(manholeData, ManholeDataOutDTO.class);
+            outDTO.setManholeData(manholeDataOutDTO);
+        }
+        return AjaxResult2.success(outDTO);
+    }
+
+    /**
+     * 修改设备状态
+     * @param inDTO
+     * @return
+     */
+    @Anonymous
+    @PostMapping("/updateDeviceStatus")
+    @ApiOperation(value = "修改设备状态")
+    public AjaxResult updateDeviceStatus(@RequestBody EquipmentStatusInDTO inDTO) {
+        boolean updated = equipmentStatusService.updateDeviceStatus(inDTO);
+        return updated ? AjaxResult.success("修改成功",updated)
+                : AjaxResult.error("修改失败",updated);
+    }
+}

+ 0 - 1
pipe-network-service/zksy-system/src/main/java/com/zksy/base/domain/EquipmentBase.java

@@ -1,7 +1,6 @@
 package com.zksy.base.domain;
 
 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;

+ 2 - 2
pipe-network-service/zksy-system/src/main/java/com/zksy/base/domain/EquipmentStatus.java

@@ -8,7 +8,6 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -71,5 +70,6 @@ public class EquipmentStatus {
     /**
      * 状态更新时间
      */
-    private LocalDateTime statusUpdateTime;
+    @JsonFormat(locale = "zh",pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date statusUpdateTime;
 }

+ 19 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/EquipmentBaseService.java

@@ -3,6 +3,10 @@ package com.zksy.base.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zksy.base.domain.EquipmentBase;
+import com.zksy.manhole.dto.in.ManholeDeviceListInDTO;
+import com.zksy.manhole.dto.in.ManholeDevicePageInDTO;
+import com.zksy.manhole.dto.out.EquipmentBaseOutDTO;
+import org.springframework.stereotype.Service;
 
 import java.util.List;
 import java.util.Map;
@@ -30,4 +34,19 @@ public interface EquipmentBaseService extends IService<EquipmentBase> {
     Map<String, Object> getEquipmentDetail(String equipmentId);
 
     List<EquipmentBase> getEquipmentByPoint(String pointId);
+//    EquipmentBase getByIdTest(String id);
+
+    /**
+     * 分页查询监测设备台账列表
+     * @param pageInDTO
+     * @return
+     */
+    Page<EquipmentBaseOutDTO> findManholeDeviceByPage(ManholeDevicePageInDTO pageInDTO);
+
+    /**
+     * 查询井盖监测设备列表
+     * @param listInDTO
+     * @return
+     */
+    List<EquipmentBaseOutDTO> getManholeDataList(ManholeDeviceListInDTO listInDTO);
 }

+ 8 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/EquipmentStatusService.java

@@ -3,6 +3,7 @@ package com.zksy.base.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zksy.base.domain.EquipmentStatus;
+import com.zksy.manhole.dto.in.EquipmentStatusInDTO;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -31,4 +32,11 @@ public interface EquipmentStatusService extends IService<EquipmentStatus> {
      * @return
      */
     boolean updateWithCheck(EquipmentStatus entity);
+
+    /**
+     * 修改设备状态
+     * @param inDTO
+     * @return
+     */
+    boolean updateDeviceStatus(EquipmentStatusInDTO inDTO);
 }

+ 175 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/EquipmentBaseServiceImpl.java

@@ -1,6 +1,8 @@
 package com.zksy.base.service.impl;
 
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -9,15 +11,33 @@ import com.zksy.base.domain.*;
 import com.zksy.base.mapper.*;
 import com.zksy.base.alarm.domain.WarningThreshold;
 import com.zksy.base.alarm.mapper.WarningThresholdMapper;
+import com.zksy.base.domain.EquipmentBase;
+import com.zksy.base.domain.EquipmentMaintain;
+import com.zksy.base.domain.EquipmentStatus;
+import com.zksy.base.domain.EquipmentType;
+import com.zksy.base.manhole.domain.ManholeData;
+import com.zksy.base.manhole.mapper.ManholeDataMapper;
+import com.zksy.base.mapper.EquipmentBaseMapper;
+import com.zksy.base.mapper.EquipmentMaintainMapper;
+import com.zksy.base.mapper.EquipmentStatusMapper;
+import com.zksy.base.mapper.EquipmentTypeMapper;
 import com.zksy.base.service.EquipmentBaseService;
 import com.zksy.common.exception.ServiceException;
+import com.zksy.manhole.dto.in.ManholeDeviceListInDTO;
+import com.zksy.manhole.dto.in.ManholeDevicePageInDTO;
+import com.zksy.manhole.dto.out.EquipmentBaseOutDTO;
+import com.zksy.manhole.dto.out.EquipmentStatusOutDTO;
+import com.zksy.manhole.dto.out.ManholeDataOutDTO;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -43,6 +63,9 @@ public class EquipmentBaseServiceImpl extends ServiceImpl<EquipmentBaseMapper, E
     @Autowired
     private WarningThresholdMapper warningThresholdMapper;
 
+    @Autowired
+    private ManholeDataMapper manholeDataMapper;
+
     @Override
     public Page<EquipmentBase> findByPage(long pageNum, long pageSize,
                                           String equipmentCode, String equipmentName,
@@ -218,6 +241,158 @@ public class EquipmentBaseServiceImpl extends ServiceImpl<EquipmentBaseMapper, E
         return this.removeByIds(existIds);
     }
 
+    /**
+     * 分页查询监测设备台账列表
+     * @param pageInDTO
+     * @return
+     */
+    @Override
+    public Page<EquipmentBaseOutDTO> findManholeDeviceByPage(ManholeDevicePageInDTO pageInDTO) {
+        log.info("分页查询监测设备台账列表-入参:{}", pageInDTO);
+        List<String> equipmentIds = null;
+        if(pageInDTO.getCurrentStatus() != null){
+            List<EquipmentStatus> equipmentStatusList = equipmentStatusMapper.selectList(new LambdaQueryWrapper<EquipmentStatus>()
+                    .eq(EquipmentStatus::getCurrentStatus, pageInDTO.getCurrentStatus()));
+            if(CollUtil.isEmpty(equipmentStatusList)){
+                return new Page<>(pageInDTO.getPageNum(), pageInDTO.getPageSize(), 0);
+            }
+            equipmentIds = equipmentStatusList.stream().map(EquipmentStatus::getEquipmentId).distinct().collect(Collectors.toList());
+        }
+        Page<EquipmentBase> page = new Page<>(pageInDTO.getPageNum(), pageInDTO.getPageSize());
+        LambdaQueryWrapper<EquipmentBase> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotEmpty(pageInDTO.getDeviceCode()), EquipmentBase::getEquipmentCode, pageInDTO.getDeviceCode())
+                .eq(StringUtils.isNotEmpty(pageInDTO.getEquipmentTypeId()), EquipmentBase::getEquipmentTypeId, pageInDTO.getEquipmentTypeId())
+                .in(CollUtil.isNotEmpty(equipmentIds), EquipmentBase::getEquipmentId, equipmentIds)
+                .like(StringUtils.isNotEmpty(pageInDTO.getDeviceName()), EquipmentBase::getEquipmentName, pageInDTO.getDeviceName())
+                .like(StringUtils.isNotEmpty(pageInDTO.getEquipmentLocation()), EquipmentBase::getEquipmentLocation, pageInDTO.getEquipmentLocation())
+                .orderByDesc(EquipmentBase::getUpdateTime);
+        Page<EquipmentBase> rs = this.page(page, queryWrapper);
+        List<EquipmentBaseOutDTO> outDTOList = BeanUtil.copyToList(rs.getRecords(), EquipmentBaseOutDTO.class);
+        if (CollUtil.isNotEmpty(outDTOList)) {
+            //查询设备类型
+            List<String> equipmentTypeIdList = outDTOList.stream().map(EquipmentBaseOutDTO::getEquipmentTypeId).distinct().collect(Collectors.toList());
+            List<EquipmentType> equipmentTypeList = equipmentTypeMapper.selectBatchIds(equipmentTypeIdList);
+            Map<String, EquipmentType> equipmentTypeMap = new HashMap<>();
+            if(CollUtil.isNotEmpty(equipmentTypeList)){
+                equipmentTypeMap.putAll(equipmentTypeList.stream().collect(Collectors.toMap(EquipmentType::getTypeId, Function.identity(), (key1, key2) -> key2)));
+            }
+            //查询设备状态
+            List<String> equipmentIdList = outDTOList.stream().map(EquipmentBaseOutDTO::getEquipmentId).distinct().collect(Collectors.toList());
+            List<EquipmentStatus> equipmentStatusList = equipmentStatusMapper.selectList(new LambdaQueryWrapper<EquipmentStatus>()
+                    .in(EquipmentStatus::getEquipmentId, equipmentIdList));
+            Map<String, EquipmentStatus> EquipmentStatusMap = new HashMap<>();
+            if(CollUtil.isNotEmpty(equipmentStatusList)){
+                EquipmentStatusMap.putAll(equipmentStatusList.stream().collect(Collectors.toMap(EquipmentStatus::getEquipmentId, Function.identity(), (key1, key2) -> key2)));
+            }
+            //查询设备监测状态
+            Map<String, List<ManholeData>> imeiCardNumberMapList = new HashMap<>();
+            if(pageInDTO.getIsQueryManholeData()){
+                List<String> equipmentCodeList = outDTOList.stream().map(EquipmentBaseOutDTO::getEquipmentCode).distinct().collect(Collectors.toList());
+                List<ManholeData> manholeDataList = manholeDataMapper.selectList(new LambdaQueryWrapper<ManholeData>()
+                        .in(ManholeData::getImeiCardNumber, equipmentCodeList)
+                        .orderByDesc(ManholeData::getCreateTime));
+                imeiCardNumberMapList.putAll(manholeDataList.stream().collect(Collectors.groupingBy(ManholeData::getImeiCardNumber)));
+            }
+            List<ManholeData> manholeDataList = null;
+            for(EquipmentBaseOutDTO outDTO : outDTOList) {
+                EquipmentType equipmentType = equipmentTypeMap.get(outDTO.getEquipmentTypeId());
+                if(equipmentType != null){
+                    outDTO.setEquipmentTypeName(equipmentType.getTypeName());
+                }
+                EquipmentStatus equipmentStatus = EquipmentStatusMap.get(outDTO.getEquipmentId());
+                if(equipmentStatus != null){
+                    EquipmentStatusOutDTO equipmentStatusOutDTO = BeanUtil.copyProperties(equipmentStatus, EquipmentStatusOutDTO.class);
+                    outDTO.setEquipmentStatus(equipmentStatusOutDTO);
+                }
+                if(pageInDTO.getIsQueryManholeData()){
+                    manholeDataList = imeiCardNumberMapList.get(outDTO.getEquipmentCode());
+                    if(CollUtil.isNotEmpty(manholeDataList)){
+                        ManholeData manholeData = manholeDataList.get(0);
+                        ManholeDataOutDTO manholeDataOutDTO = BeanUtil.copyProperties(manholeData, ManholeDataOutDTO.class);
+                        outDTO.setManholeData(manholeDataOutDTO);
+                    }
+                }
+            }
+        }
+        Page<EquipmentBaseOutDTO> outPage = new Page<>(pageInDTO.getPageNum(), pageInDTO.getPageSize(), rs.getTotal());
+        outPage.setRecords(outDTOList);
+        return outPage;
+    }
+
+    /**
+     * 查询井盖监测设备列表
+     * @param listInDTO
+     * @return
+     */
+    @Override
+    public List<EquipmentBaseOutDTO> getManholeDataList(ManholeDeviceListInDTO listInDTO) {
+        log.info("查询井盖监测设备列表-入参:{}", listInDTO);
+        List<String> equipmentIds = null;
+        if(listInDTO.getCurrentStatus() != null || listInDTO.getAlarmStatus() != null || listInDTO.getOnlineStatus() != null){
+            List<EquipmentStatus> equipmentStatusList = equipmentStatusMapper.selectList(new LambdaQueryWrapper<EquipmentStatus>()
+                    .eq(listInDTO.getCurrentStatus() != null, EquipmentStatus::getCurrentStatus, listInDTO.getCurrentStatus())
+                    .eq(listInDTO.getAlarmStatus() != null, EquipmentStatus::getAlarmStatus, listInDTO.getAlarmStatus())
+                    .eq(listInDTO.getOnlineStatus() != null, EquipmentStatus::getOnlineStatus, listInDTO.getOnlineStatus()));
+            if(CollUtil.isEmpty(equipmentStatusList)){
+                return new ArrayList<>();
+            }
+            equipmentIds = equipmentStatusList.stream().map(EquipmentStatus::getEquipmentId).distinct().collect(Collectors.toList());
+        }
+        LambdaQueryWrapper<EquipmentBase> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(CollUtil.isNotEmpty(equipmentIds), EquipmentBase::getEquipmentId, equipmentIds)
+                .orderByDesc(EquipmentBase::getUpdateTime);
+        List<EquipmentBase> equipmentBaseList = this.list(queryWrapper);
+        if (CollUtil.isEmpty(equipmentBaseList)) {
+            return new ArrayList<>();
+        }
+        List<EquipmentBaseOutDTO> outDTOList = BeanUtil.copyToList(equipmentBaseList, EquipmentBaseOutDTO.class);
+        //查询设备类型
+        List<String> equipmentTypeIdList = outDTOList.stream().map(EquipmentBaseOutDTO::getEquipmentTypeId).distinct().collect(Collectors.toList());
+        List<EquipmentType> equipmentTypeList = equipmentTypeMapper.selectBatchIds(equipmentTypeIdList);
+        Map<String, EquipmentType> equipmentTypeMap = new HashMap<>();
+        if(CollUtil.isNotEmpty(equipmentTypeList)){
+            equipmentTypeMap.putAll(equipmentTypeList.stream().collect(Collectors.toMap(EquipmentType::getTypeId, Function.identity(), (key1, key2) -> key2)));
+        }
+        //查询设备状态
+        List<String> equipmentIdList = outDTOList.stream().map(EquipmentBaseOutDTO::getEquipmentId).distinct().collect(Collectors.toList());
+        List<EquipmentStatus> equipmentStatusList = equipmentStatusMapper.selectList(new LambdaQueryWrapper<EquipmentStatus>()
+                .in(EquipmentStatus::getEquipmentId, equipmentIdList));
+        Map<String, EquipmentStatus> EquipmentStatusMap = new HashMap<>();
+        if(CollUtil.isNotEmpty(equipmentStatusList)){
+            EquipmentStatusMap.putAll(equipmentStatusList.stream().collect(Collectors.toMap(EquipmentStatus::getEquipmentId, Function.identity(), (key1, key2) -> key2)));
+        }
+        //查询设备监测状态
+        Map<String, List<ManholeData>> imeiCardNumberMapList = new HashMap<>();
+        if(listInDTO.getIsQueryManholeData()){
+            List<String> equipmentCodeList = outDTOList.stream().map(EquipmentBaseOutDTO::getEquipmentCode).distinct().collect(Collectors.toList());
+            List<ManholeData> manholeDataList = manholeDataMapper.selectList(new LambdaQueryWrapper<ManholeData>()
+                    .in(ManholeData::getImeiCardNumber, equipmentCodeList)
+                    .orderByDesc(ManholeData::getCreateTime));
+            imeiCardNumberMapList.putAll(manholeDataList.stream().collect(Collectors.groupingBy(ManholeData::getImeiCardNumber)));
+        }
+        List<ManholeData> manholeDataList = null;
+        for(EquipmentBaseOutDTO outDTO : outDTOList) {
+            EquipmentType equipmentType = equipmentTypeMap.get(outDTO.getEquipmentTypeId());
+            if(equipmentType != null){
+                outDTO.setEquipmentTypeName(equipmentType.getTypeName());
+            }
+            EquipmentStatus equipmentStatus = EquipmentStatusMap.get(outDTO.getEquipmentId());
+            if(equipmentStatus != null){
+                EquipmentStatusOutDTO equipmentStatusOutDTO = BeanUtil.copyProperties(equipmentStatus, EquipmentStatusOutDTO.class);
+                outDTO.setEquipmentStatus(equipmentStatusOutDTO);
+            }
+            if(listInDTO.getIsQueryManholeData()){
+                manholeDataList = imeiCardNumberMapList.get(outDTO.getEquipmentCode());
+                if(CollUtil.isNotEmpty(manholeDataList)){
+                    ManholeData manholeData = manholeDataList.get(0);
+                    ManholeDataOutDTO manholeDataOutDTO = BeanUtil.copyProperties(manholeData, ManholeDataOutDTO.class);
+                    outDTO.setManholeData(manholeDataOutDTO);
+                }
+            }
+        }
+        return outDTOList;
+    }
+
     @Override
     @Transactional
     public boolean updateEquipmentStatus(String equipmentId, Integer currentStatus) {

+ 26 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/EquipmentStatusServiceImpl.java

@@ -10,16 +10,20 @@ import com.zksy.base.mapper.EquipmentStatusMapper;
 import com.zksy.base.service.EquipmentStatusService;
 import com.zksy.common.core.domain.entity.SysUser;
 import com.zksy.common.exception.ServiceException;
+import com.zksy.manhole.dto.in.EquipmentStatusInDTO;
 import com.zksy.system.service.ISysUserService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+@Slf4j
 @Service
 public class EquipmentStatusServiceImpl extends ServiceImpl<EquipmentStatusMapper, EquipmentStatus>
         implements EquipmentStatusService {
@@ -189,4 +193,26 @@ public class EquipmentStatusServiceImpl extends ServiceImpl<EquipmentStatusMappe
         //更新
         return this.updateById(entity);
     }
+
+    /**
+     * 修改设备状态
+     * @param inDTO
+     * @return
+     */
+    @Override
+    public boolean updateDeviceStatus(EquipmentStatusInDTO inDTO) {
+        log.info("修改设备状态-入参:{}", inDTO);
+        //校验状态值合法性
+        Integer status = inDTO.getCurrentStatus();
+        if (status != null && (status < 1 || status > 5)) {
+            throw new ServiceException("设备状态值无效(必须为1-5):" + status);
+        }
+        //校验当前状态记录是否存在
+        boolean update = this.lambdaUpdate()
+                .set(EquipmentStatus::getCurrentStatus, inDTO.getCurrentStatus())
+                .set(EquipmentStatus::getStatusUpdateTime, new Date())
+                .eq(EquipmentStatus::getEquipmentId, inDTO.getEquipmentId())
+                .update();
+        return update;
+    }
 }

+ 24 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/manhole/dto/in/EquipmentStatusInDTO.java

@@ -0,0 +1,24 @@
+package com.zksy.manhole.dto.in;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 修改设备状态-入参
+ *
+ * @author xianggx
+ */
+@Data
+@ApiModel(value = "修改设备状态-入参", description = "修改设备状态-入参")
+public class EquipmentStatusInDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "设备ID", required = true)
+    private String equipmentId;
+
+    @ApiModelProperty(value = "运维状态:1-在用,2-闲置", required = true)
+    private Integer currentStatus;
+}

+ 30 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/manhole/dto/in/ManholeDeviceListInDTO.java

@@ -0,0 +1,30 @@
+package com.zksy.manhole.dto.in;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 查询井盖监测设备列表-入参
+ *
+ * @author xianggx
+ */
+@Data
+@ApiModel(value = "查询井盖监测设备列表-入参", description = "查询井盖监测设备列表-入参")
+public class ManholeDeviceListInDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "运维状态:1-在用,2-闲置,3-维修,4-报废,5-待入库")
+    private Integer currentStatus;
+
+    @ApiModelProperty(value = "报警状态(0-正常,1-报警)")
+    private Integer alarmStatus;
+
+    @ApiModelProperty(value = "在线状态(0-离线,1-在线)")
+    private Integer onlineStatus;
+
+    @ApiModelProperty("是否查询井盖监测数据:默认不查询")
+    private Boolean isQueryManholeData = false;
+}

+ 42 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/manhole/dto/in/ManholeDevicePageInDTO.java

@@ -0,0 +1,42 @@
+package com.zksy.manhole.dto.in;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 分页查询监测设备台账列表-入参
+ *
+ * @author xianggx
+ */
+@Data
+@ApiModel(value = "分页查询监测设备台账列表-入参", description = "分页查询监测设备台账列表-入参")
+public class ManholeDevicePageInDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "设备编码")
+    private String deviceCode;
+
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+
+    @ApiModelProperty(value = "运维状态:1-在用,2-闲置,3-维修,4-报废,5-待入库")
+    private Integer currentStatus;
+
+    @ApiModelProperty(value = "设备类别ID")
+    private String equipmentTypeId;
+
+    @ApiModelProperty("设备位置描述")
+    private String equipmentLocation;
+
+    @ApiModelProperty("是否查询井盖监测数据:默认不查询")
+    private Boolean isQueryManholeData = false;
+
+    @ApiModelProperty(value = "当前记录起始索引", required = true)
+    private Long pageNum;
+
+    @ApiModelProperty(value = "每页显示记录数", required = true)
+    private Long pageSize;
+}

+ 28 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/manhole/dto/out/EquipmentBaseOutDTO.java

@@ -0,0 +1,28 @@
+package com.zksy.manhole.dto.out;
+
+import com.zksy.base.domain.EquipmentBase;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 获取监测设备台账详情-出参
+ *
+ * @author xianggx
+ */
+@Data
+@ApiModel(value = "获取监测设备台账详情-出参", description = "获取监测设备台账详情-出参")
+public class EquipmentBaseOutDTO extends EquipmentBase implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("设备类别名称")
+    private String equipmentTypeName;
+
+    @ApiModelProperty(value = "设备状态详情")
+    private EquipmentStatusOutDTO equipmentStatus;
+
+    @ApiModelProperty(value = "井盖实时监测数据")
+    private ManholeDataOutDTO manholeData;
+}

+ 33 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/manhole/dto/out/EquipmentStatusOutDTO.java

@@ -0,0 +1,33 @@
+package com.zksy.manhole.dto.out;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 设备状态详情-出参
+ *
+ * @author xianggx
+ */
+@Data
+@ApiModel(value = "设备状态详情-出参", description = "设备状态详情-出参")
+public class EquipmentStatusOutDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "运维状态:1-在用,2-闲置,3-维修,4-报废,5-待入库")
+    private Integer currentStatus;
+
+    @ApiModelProperty(value = "报警状态(0-正常,1-报警)")
+    private Integer alarmStatus;
+
+    @ApiModelProperty(value = "在线状态(0-离线,1-在线)")
+    private Integer onlineStatus;
+
+    @ApiModelProperty(value = "状态更新时间")
+    @JsonFormat(locale = "zh",pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date statusUpdateTime;
+}

+ 36 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/manhole/dto/out/ManholeDataOutDTO.java

@@ -0,0 +1,36 @@
+package com.zksy.manhole.dto.out;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 井盖实时监测数据-出参
+ *
+ * @author xianggx
+ */
+@Data
+@ApiModel(value = "井盖实时监测数据-出参", description = "井盖实时监测数据-出参")
+public class ManholeDataOutDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "电池电量")
+    private String batteryLevel;
+
+    @ApiModelProperty(value = "信号量")
+    private String signalStrength;
+
+    @ApiModelProperty(value = "倾斜角度")
+    private String tiltAngle;
+
+    @ApiModelProperty(value = "激活状态")
+    private String activationStatus;
+
+    @ApiModelProperty(value = "水浸报警状态(0正常,1报警)")
+    private String waterInfiltrationAlarmStatus;
+
+    @ApiModelProperty(value = "水位报警状态(0正常,1报警)")
+    private String waterLevelAlarmStatus;
+}