wwh 1 سال پیش
والد
کامیت
51e0d11811

+ 18 - 28
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/BasePigpenController.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.env.admin.common.utils.Result;
+import com.huimv.env.admin.common.utils.ResultCode;
 import com.huimv.env.admin.common.utils.ResultUtil;
 import com.huimv.env.admin.entity.BasePigpen;
 import com.huimv.env.admin.entity.TerminalPort;
@@ -178,32 +179,21 @@ public class BasePigpenController {
         return basePigpenService.list(farmCode,buildName,stageCode,type);
     }
 
-//    @PostMapping("/testUpdate")
-//    @Transactional
-//    public Result test() {
-//        List<BasePigpen> list = basePigpenService.list(new QueryWrapper<BasePigpen>().lambda().gt(BasePigpen::getId, 1212).ne(BasePigpen::getParentId, 0));
-//        for (BasePigpen basePigpen : list) {
-//            Integer parentId = basePigpen.getParentId();
-//            BasePigpen pigpen = basePigpenService.getById(parentId);
-//            String buildName = pigpen.getBuildName();
-//            Integer id = basePigpenService.getOne(new QueryWrapper<BasePigpen>().lambda().eq(BasePigpen::getFType,pigpen.getFType()).eq(BasePigpen::getFarmId,basePigpen.getFarmId()).eq(BasePigpen::getBuildName, buildName).ne(BasePigpen::getId, parentId)).getId();
-//            basePigpen.setParentId(id);
-//            String other2 = basePigpen.getOther2();
-//            List<String> modifiedValues = new ArrayList<>();
-//            String[] split = other2.split(",");
-//            for (String s : split) {
-//                if (!s.equals("0")){
-//                    BasePigpen pigpen1 = basePigpenService.getById(s);
-//                    String buildName1 = pigpen1.getBuildName();
-//                    Integer id1 = basePigpenService.getOne(new QueryWrapper<BasePigpen>().lambda().eq(BasePigpen::getFType,pigpen1.getFType()).eq(BasePigpen::getFarmId,basePigpen.getFarmId()).eq(BasePigpen::getBuildName, buildName1).ne(BasePigpen::getId, s)).getId();
-//                    modifiedValues.add(id1.toString());
-//                }else {
-//                    modifiedValues.add(s);
-//                }
-//            }
-//            basePigpen.setOther2(String.join(",", modifiedValues));
-//            basePigpenService.updateById(basePigpen);
-//        }
-//        return Result.SUCCESS();
-//    }
+    //根据栋id拿到所有的层
+    @PostMapping( "/listCeng")
+    public Result listCeng(@RequestBody Map<String,Integer> map) {
+        Integer id = map.get("id");
+        QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("parent_id", id).eq("f_type", 2);
+        return new Result(ResultCode.SUCCESS, basePigpenMapper.selectList(queryWrapper));
+    }
+
+    //根据层id拿到所有的户
+    @PostMapping( "/listDoor")
+    public Result listDoor(@RequestBody Map<String,Integer> map) {
+        Integer id = map.get("id");
+        QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
+        queryWrapper.like("other2", id).eq("f_type", 4);
+        return new Result(ResultCode.SUCCESS, basePigpenMapper.selectList(queryWrapper));
+    }
 }

+ 20 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/controller/HeartInfoController.java

@@ -0,0 +1,20 @@
+package com.huimv.env.admin.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-05-09
+ */
+@RestController
+@RequestMapping("/heart-info")
+public class HeartInfoController {
+
+}

+ 40 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/entity/HeartInfo.java

@@ -0,0 +1,40 @@
+package com.huimv.env.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2024-05-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("heart_info")
+public class HeartInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private LocalDateTime createTime;
+
+    private String terminalCode;
+
+    private String gatwayCode;
+
+    private String originalData;
+
+
+}

+ 11 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/entity/dto/HeartDto.java

@@ -0,0 +1,11 @@
+package com.huimv.env.admin.entity.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class HeartDto {
+    private Date createTime;
+    private String terminalCode;
+}

+ 22 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/mapper/HeartInfoMapper.java

@@ -0,0 +1,22 @@
+package com.huimv.env.admin.mapper;
+
+import com.huimv.env.admin.entity.HeartInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.env.admin.entity.dto.HeartDto;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-05-09
+ */
+public interface HeartInfoMapper extends BaseMapper<HeartInfo> {
+
+    List<HeartDto> listHeart();
+
+    List<HeartDto> listHeartGateway();
+}

+ 16 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/service/IHeartInfoService.java

@@ -0,0 +1,16 @@
+package com.huimv.env.admin.service;
+
+import com.huimv.env.admin.entity.HeartInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-05-09
+ */
+public interface IHeartInfoService extends IService<HeartInfo> {
+
+}

+ 29 - 2
huimv-env-admin/src/main/java/com/huimv/env/admin/service/impl/BasePigpenServiceImpl.java

@@ -13,12 +13,14 @@ import com.huimv.env.admin.common.utils.ResultUtil;
 import com.huimv.env.admin.entity.BasePigpen;
 import com.huimv.env.admin.entity.Gateway;
 import com.huimv.env.admin.entity.Terminal;
+import com.huimv.env.admin.entity.TerminalPort;
 import com.huimv.env.admin.entity.dto.BasePigpenDto;
 import com.huimv.env.admin.entity.dto.ListPigpenDto;
 import com.huimv.env.admin.entity.vo.TreeBasePigpen;
 import com.huimv.env.admin.mapper.BasePigpenMapper;
 import com.huimv.env.admin.mapper.GatewayMapper;
 import com.huimv.env.admin.mapper.TerminalMapper;
+import com.huimv.env.admin.mapper.TerminalPortMapper;
 import com.huimv.env.admin.service.IBasePigpenService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,6 +46,8 @@ public class BasePigpenServiceImpl extends ServiceImpl<BasePigpenMapper, BasePig
     private GatewayMapper gatewayMapper;
     @Autowired
     private TerminalMapper terminalMapper;
+    @Autowired
+    private TerminalPortMapper portMapper;
 
     //    @Autowired
 //    private EnvDeviceMapper envDeviceMapper;
@@ -131,8 +135,11 @@ public class BasePigpenServiceImpl extends ServiceImpl<BasePigpenMapper, BasePig
         Integer offGateway = 0;
         Integer onTerminal = 0;
         Integer offTerminal = 0;
-        Integer infoGateway = 0;
-        Integer infoTerminal = 0;
+        Integer infoGateway = 0;//暂时不管
+        Integer infoTerminal = 0;//暂时不管
+        Integer onPort = 0;
+        Integer offPort = 0;
+        Integer infoPort = 0;
         QueryWrapper<Gateway> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("location_id", id);
         List<Gateway> gateways = gatewayMapper.selectList(queryWrapper);
@@ -157,6 +164,23 @@ public class BasePigpenServiceImpl extends ServiceImpl<BasePigpenMapper, BasePig
                 onTerminal++;
             }
         }
+
+        List<Integer> idList2 = new ArrayList<>();
+        terminals.forEach(item->{
+            idList2.add(item.getId());
+        });
+
+        QueryWrapper<TerminalPort> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.in("terminal_id", idList);
+        List<TerminalPort> terminalPorts = portMapper.selectList(queryWrapper2);
+        for (TerminalPort terminal : terminalPorts) {
+            if (terminal.getStatus() == 0) {
+                offPort++;
+            } else {
+                onPort++;
+            }
+
+        }
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("onGateway", onGateway);
         jsonObject.put("offGateway", offGateway);
@@ -164,6 +188,9 @@ public class BasePigpenServiceImpl extends ServiceImpl<BasePigpenMapper, BasePig
         jsonObject.put("offTerminal", offTerminal);
         jsonObject.put("infoGateway", infoGateway);
         jsonObject.put("infoTerminal", infoTerminal);
+        jsonObject.put("offPort", offPort);
+        jsonObject.put("onPort", onPort);
+        jsonObject.put("infoPort", infoPort);
         return new Result(ResultCode.SUCCESS,jsonObject);
     }
 

+ 20 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/service/impl/HeartInfoServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.env.admin.service.impl;
+
+import com.huimv.env.admin.entity.HeartInfo;
+import com.huimv.env.admin.mapper.HeartInfoMapper;
+import com.huimv.env.admin.service.IHeartInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-05-09
+ */
+@Service
+public class HeartInfoServiceImpl extends ServiceImpl<HeartInfoMapper, HeartInfo> implements IHeartInfoService {
+
+}

+ 83 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/timer/DeviceTimer.java

@@ -0,0 +1,83 @@
+package com.huimv.env.admin.timer;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.env.admin.entity.BasePigpen;
+import com.huimv.env.admin.entity.Gateway;
+import com.huimv.env.admin.entity.Terminal;
+import com.huimv.env.admin.entity.dto.HeartDto;
+import com.huimv.env.admin.mapper.GatewayMapper;
+import com.huimv.env.admin.mapper.HeartInfoMapper;
+import com.huimv.env.admin.mapper.TerminalMapper;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Date;
+import java.util.List;
+
+@Configuration
+@EnableScheduling
+public class DeviceTimer {
+
+    @Autowired
+    private HeartInfoMapper heartInfoMapper;
+    @Autowired
+    private TerminalMapper terminalMapper;
+    @Autowired
+    private GatewayMapper gatewayMapper;
+
+    @Scheduled(cron = "0 0 0/1 * * ? ")
+    private void action() {
+        Date date = new Date(System.currentTimeMillis() - 1000 * 60 * 60); // 1小时前
+        List<HeartDto> heartDtos = heartInfoMapper.listHeart();
+        for (HeartDto heartDto : heartDtos) {
+
+            if (date.after(heartDto.getCreateTime())) {
+                //说明一个小时内都没有心跳
+                QueryWrapper<Terminal> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("device_code", heartDto.getTerminalCode());
+                Terminal terminal = terminalMapper.selectOne(queryWrapper);
+                if (ObjectUtil.isNotEmpty(terminal)) {
+                    terminal.setStatus(1);
+                    terminalMapper.updateById(terminal);
+                }
+            } else {
+                QueryWrapper<Terminal> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("device_code", heartDto.getTerminalCode());
+                Terminal terminal = terminalMapper.selectOne(queryWrapper);
+                if (ObjectUtil.isNotEmpty(terminal)) {
+                    terminal.setStatus(0);
+                    terminalMapper.updateById(terminal);
+                }
+            }
+        }
+        List<HeartDto> heartDtos1 = heartInfoMapper.listHeartGateway();//网关
+        for (HeartDto heartDto : heartDtos1) {
+            if (date.after(heartDto.getCreateTime())) {
+                //说明一个小时内都没有心跳
+                QueryWrapper<Gateway> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("device_code", heartDto.getTerminalCode());
+                Gateway terminal = gatewayMapper.selectOne(queryWrapper);
+                if (ObjectUtil.isNotEmpty(terminal)) {
+                    terminal.setStatus(1);
+                    gatewayMapper.updateById(terminal);
+                }
+            } else {
+                QueryWrapper<Gateway> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("device_code", heartDto.getTerminalCode());
+                Gateway terminal = gatewayMapper.selectOne(queryWrapper);
+                if (ObjectUtil.isNotEmpty(terminal)) {
+                    terminal.setStatus(0);
+                    gatewayMapper.updateById(terminal);
+                }
+            }
+        }
+    }
+
+}

+ 12 - 0
huimv-env-admin/src/main/resources/mapper/HeartInfoMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.env.admin.mapper.HeartInfoMapper">
+
+    <select id="listHeart" resultType="com.huimv.env.admin.entity.dto.HeartDto">
+        SELECT max(create_time) createTime,terminal_code terminalCode from heart_info GROUP BY terminal_code
+    </select>
+
+    <select id="listHeartGateway" resultType="com.huimv.env.admin.entity.dto.HeartDto">
+        SELECT max(create_time) createTime,gatway_code terminalCode from heart_info GROUP BY gatway_code
+    </select>
+</mapper>