xiang13487 пре 1 недеља
родитељ
комит
6941f79968

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

@@ -0,0 +1,97 @@
+package com.zksy.web.controller.manhole;
+
+
+import cn.hutool.core.bean.BeanUtil;
+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.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.ManholeDevicePageInDTO;
+import com.zksy.manhole.dto.out.EquipmentBaseOutDTO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 窨井盖监测系统-监测设备信息管理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;
+
+    /**
+     * 分页查询监测设备台账列表
+     */
+    @Anonymous
+    @GetMapping(value = "/findByPage")
+    @ApiOperation(value = "分页查询监测设备台账列表")
+    public AjaxResult2<Page<EquipmentBaseOutDTO>> findByPage(@RequestBody ManholeDevicePageInDTO pageInDTO)
+    {
+        return AjaxResult2.success(equipmentBaseService.findManholeDeviceByPage(pageInDTO));
+    }
+
+    /**
+     * 获取监测设备台账详情
+     */
+    @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){
+            outDTO.setCurrentStatus(equipmentStatus.getCurrentStatus());
+            outDTO.setAlarmStatus(equipmentStatus.getAlarmStatus());
+            outDTO.setOnlineStatus(equipmentStatus.getOnlineStatus());
+        }
+        EquipmentType equipmentType = equipmentTypeService.getById(outDTO.getEquipmentTypeId());
+        if(equipmentType != null){
+            outDTO.setEquipmentTypeName(equipmentType.getTypeName());
+        }
+        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;

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

@@ -3,6 +3,8 @@ 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.ManholeDevicePageInDTO;
+import com.zksy.manhole.dto.out.EquipmentBaseOutDTO;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -50,4 +52,11 @@ public interface EquipmentBaseService extends IService<EquipmentBase> {
     boolean removeBatchWithCheck(List<String> ids);
 
 //    EquipmentBase getByIdTest(String id);
+
+    /**
+     * 分页查询监测设备台账列表
+     * @param pageInDTO
+     * @return
+     */
+    Page<EquipmentBaseOutDTO> findManholeDeviceByPage(ManholeDevicePageInDTO pageInDTO);
 }

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

+ 68 - 3
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;
@@ -15,14 +17,16 @@ 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.ManholeDevicePageInDTO;
+import com.zksy.manhole.dto.out.EquipmentBaseOutDTO;
 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.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -229,4 +233,65 @@ 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::getProductionDate);
+        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)));
+            }
+            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){
+                    outDTO.setCurrentStatus(equipmentStatus.getCurrentStatus());
+                    outDTO.setAlarmStatus(equipmentStatus.getAlarmStatus());
+                    outDTO.setOnlineStatus(equipmentStatus.getOnlineStatus());
+                }
+            }
+        }
+        Page<EquipmentBaseOutDTO> outPage = new Page<>(pageInDTO.getPageNum(), pageInDTO.getPageSize(), rs.getTotal());
+        outPage.setRecords(outDTOList);
+        return outPage;
+    }
+
 }

+ 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.time.LocalDateTime;
 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, LocalDateTime.now())
+                .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;
+}

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

@@ -0,0 +1,39 @@
+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(value = "当前记录起始索引", required = true)
+    private Long pageNum;
+
+    @ApiModelProperty(value = "每页显示记录数", required = true)
+    private Long pageSize;
+}

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

@@ -0,0 +1,31 @@
+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(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 String equipmentTypeName;
+}