Эх сурвалжийг харах

完善窨井盖状态监测

zengy 2 өдөр өмнө
parent
commit
3e89ff8ad5

+ 2 - 1
pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/base/manhole/ManholeDataController.java

@@ -38,11 +38,12 @@ public class ManholeDataController {
             @ApiParam(value = "页码", defaultValue = "1") @RequestParam(defaultValue = "1") Integer pageNum,
             @ApiParam(value = "每页大小", defaultValue = "10") @RequestParam(defaultValue = "10") Integer pageSize,
             @ApiParam(value = "IMEI卡号") @RequestParam(required = false) String imeiCardNumber,
+            @ApiParam(value = "设备名称") @RequestParam(required = false) String deviceName,
             @ApiParam(value = "开始时间") @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime,
             @ApiParam(value = "结束时间") @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime) {
         try {
             Page<ManholeData> page = new Page<>(pageNum, pageSize);
-            IPage<ManholeData> resultPage = manholeDataService.queryPage(page, imeiCardNumber, startTime, endTime);
+            IPage<ManholeData> resultPage = manholeDataService.queryPage(page, imeiCardNumber, deviceName, startTime, endTime);
             return AjaxResult.success("查询成功", resultPage);
         } catch (Exception e) {
             return AjaxResult.error("查询失败:" + e.getMessage());

+ 5 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/manhole/domain/ManholeData.java

@@ -1,6 +1,7 @@
 package com.zksy.base.manhole.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;
@@ -60,6 +61,10 @@ public class ManholeData {
     @ApiModelProperty(value = "IMEI 卡号")
     private String imeiCardNumber;
 
+    @ApiModelProperty(value = "设备名称(关联 equipment_base.equipment_name,非本表字段)")
+    @TableField(exist = false)
+    private String equipmentName;
+
     @ApiModelProperty(value = "原始数据")
     private String originalData;
 

+ 1 - 1
pipe-network-service/zksy-system/src/main/java/com/zksy/base/manhole/service/ManholeDataService.java

@@ -11,7 +11,7 @@ import java.util.Map;
 
 public interface ManholeDataService extends IService<ManholeData> {
     
-    IPage<ManholeData> queryPage(Page<ManholeData> page, String imeiCardNumber, LocalDateTime startTime, LocalDateTime endTime);
+    IPage<ManholeData> queryPage(Page<ManholeData> page, String imeiCardNumber, String deviceName, LocalDateTime startTime, LocalDateTime endTime);
     
     List<Map<String, Object>> statManholeByDevice(LocalDateTime startTime, LocalDateTime endTime);
     

+ 33 - 2
pipe-network-service/zksy-system/src/main/java/com/zksy/base/manhole/service/impl/ManholeDataServiceImpl.java

@@ -4,15 +4,20 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zksy.base.domain.EquipmentBase;
 import com.zksy.base.manhole.domain.ManholeData;
 import com.zksy.base.manhole.mapper.ManholeDataMapper;
 import com.zksy.base.manhole.service.ManholeDataService;
+import com.zksy.base.mapper.EquipmentBaseMapper;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @author Administrator
@@ -24,12 +29,28 @@ import java.util.Map;
 @Service
 public class ManholeDataServiceImpl extends ServiceImpl<ManholeDataMapper, ManholeData> implements ManholeDataService {
 
+    @Autowired
+    private EquipmentBaseMapper equipmentBaseMapper;
+
     @Override
-    public IPage<ManholeData> queryPage(Page<ManholeData> page, String imeiCardNumber, LocalDateTime startTime, LocalDateTime endTime) {
+    public IPage<ManholeData> queryPage(Page<ManholeData> page, String imeiCardNumber, String deviceName, LocalDateTime startTime, LocalDateTime endTime) {
         LambdaQueryWrapper<ManholeData> wrapper = new LambdaQueryWrapper<>();
         if (StringUtils.hasText(imeiCardNumber)) {
             wrapper.eq(ManholeData::getImeiCardNumber, imeiCardNumber);
         }
+        if (StringUtils.hasText(deviceName)) {
+            // 按设备名称模糊匹配 equipment_base,取 equipment_code 集合后转换为 imei_card_number 过滤
+            List<String> codes = equipmentBaseMapper.selectList(
+                            new LambdaQueryWrapper<EquipmentBase>()
+                                    .like(EquipmentBase::getEquipmentName, deviceName))
+                    .stream().map(EquipmentBase::getEquipmentCode).collect(Collectors.toList());
+            if (codes.isEmpty()) {
+                // 无匹配设备,强制空结果
+                wrapper.eq(ManholeData::getImeiCardNumber, "__no_match__");
+            } else {
+                wrapper.in(ManholeData::getImeiCardNumber, codes);
+            }
+        }
         if (startTime != null) {
             wrapper.ge(ManholeData::getCreateTime, startTime);
         }
@@ -37,7 +58,17 @@ public class ManholeDataServiceImpl extends ServiceImpl<ManholeDataMapper, Manho
             wrapper.le(ManholeData::getCreateTime, endTime);
         }
         wrapper.orderByDesc(ManholeData::getCreateTime);
-        return this.page(page, wrapper);
+        IPage<ManholeData> resultPage = this.page(page, wrapper);
+        // 关联设备名称(equipment_base.equipment_name)
+        List<String> imeis = resultPage.getRecords().stream()
+                .map(ManholeData::getImeiCardNumber).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+        if (!imeis.isEmpty()) {
+            Map<String, String> nameMap = equipmentBaseMapper.selectList(
+                            new LambdaQueryWrapper<EquipmentBase>().in(EquipmentBase::getEquipmentCode, imeis))
+                    .stream().collect(Collectors.toMap(EquipmentBase::getEquipmentCode, EquipmentBase::getEquipmentName, (a, b) -> a));
+            resultPage.getRecords().forEach(r -> r.setEquipmentName(nameMap.get(r.getImeiCardNumber())));
+        }
+        return resultPage;
     }
 
     @Override