Kaynağa Gözat

下发喷雾除臭配置。

zhuoning 2 yıl önce
ebeveyn
işleme
e9298c40d7

+ 4 - 2
huimv-env-platform/huimv-env-common/src/main/java/com/huimv/env/common/dao/entity/EnvSprayTimeEntity.java

@@ -5,7 +5,6 @@ import lombok.experimental.Accessors;
 
 import javax.persistence.*;
 import java.io.Serializable;
-import java.sql.Timestamp;
 
 @Entity
 @Data
@@ -24,7 +23,10 @@ public class EnvSprayTimeEntity implements Serializable {
     private String deviceCode;
 
     @Column(name = "open_time")
-    private Timestamp openTime;
+    private String openTime;
+
+    @Column(name = "close_time")
+    private String closeTime;
 
     @Column(name = "duration")
     private Integer duration;

+ 8 - 0
huimv-env-platform/huimv-env-common/src/main/java/com/huimv/env/common/service/ISprayConfigService.java

@@ -0,0 +1,8 @@
+package com.huimv.env.common.service;
+
+import com.alibaba.fastjson.JSONObject;
+
+public interface ISprayConfigService {
+    //
+    JSONObject getSprayConfigByDeviceCode(String deviceCode,String farmCod);
+}

+ 12 - 0
huimv-env-platform/huimv-env-common/src/main/java/com/huimv/env/common/service/ISprayStatusService.java

@@ -0,0 +1,12 @@
+package com.huimv.env.common.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.env.common.dao.entity.EnvDeviceRegisterEntity;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+
+public interface ISprayStatusService {
+    //
+    void saveSprayStatusFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode);
+}

+ 8 - 0
huimv-env-platform/huimv-env-common/src/main/java/com/huimv/env/common/service/ISprayTimeService.java

@@ -0,0 +1,8 @@
+package com.huimv.env.common.service;
+
+import com.alibaba.fastjson.JSONObject;
+
+public interface ISprayTimeService {
+    //
+    String getSprayTimeByDeviceCode(String deviceCode);
+}

+ 44 - 0
huimv-env-platform/huimv-env-common/src/main/java/com/huimv/env/common/service/impl/SprayConfigServiceImpl.java

@@ -0,0 +1,44 @@
+package com.huimv.env.common.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.env.common.dao.entity.EnvDeviceRegisterEntity;
+import com.huimv.env.common.dao.entity.EnvSprayConfigEntity;
+import com.huimv.env.common.dao.repo.EnvSprayConfigEntityRepo;
+import com.huimv.env.common.service.ISprayConfigService;
+import com.huimv.env.common.service.ISprayStatusService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Example;
+import org.springframework.stereotype.Service;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+import java.util.Optional;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+public class SprayConfigServiceImpl implements ISprayConfigService {
+    @Autowired
+    private EnvSprayConfigEntityRepo sprayConfigEntityRepo;
+
+    @Override
+    public JSONObject getSprayConfigByDeviceCode(String deviceCode,String farmCode) {
+        EnvSprayConfigEntity envSprayConfigEntity = new EnvSprayConfigEntity();
+        envSprayConfigEntity.setDeviceCode(deviceCode);
+        envSprayConfigEntity.setFarmCode(farmCode);
+        Example<EnvSprayConfigEntity> example = Example.of(envSprayConfigEntity);
+        Optional<EnvSprayConfigEntity> option =  sprayConfigEntityRepo.findOne(example);
+        if(!option.isPresent()){
+            return null;
+        }else{
+            return JSONObject.parseObject(JSON.toJSONString(option.get()));
+        }
+    }
+}

+ 43 - 0
huimv-env-platform/huimv-env-common/src/main/java/com/huimv/env/common/service/impl/SprayStatusServiceImpl.java

@@ -0,0 +1,43 @@
+package com.huimv.env.common.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.env.common.dao.entity.EnvDeviceRegisterEntity;
+import com.huimv.env.common.dao.entity.EnvSprayStatusEntity;
+import com.huimv.env.common.dao.repo.EnvSprayStatusEntityRepo;
+import com.huimv.env.common.service.ISprayStatusService;
+import com.huimv.env.common.utils.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+public class SprayStatusServiceImpl implements ISprayStatusService {
+    @Autowired
+    private EnvSprayStatusEntityRepo sprayStatusEntityRepo;
+    @Autowired
+    private DateUtil dateUtil;
+
+    @Override
+    public void saveSprayStatusFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
+        EnvSprayStatusEntity envSprayStatusEntity = new EnvSprayStatusEntity();
+        envSprayStatusEntity.setDeviceCode(dataJo.getString("deviceCode"));
+        envSprayStatusEntity.setDeviceStatus(dataJo.getInteger("sprayStatus"));
+        envSprayStatusEntity.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
+        envSprayStatusEntity.setAddTime(nowTimestamp);
+        envSprayStatusEntity.setAddDate(todayDate);
+        envSprayStatusEntity.setPigpenId(envDeviceRegisterEntity.getPigpenId());
+        envSprayStatusEntity.setUnitId(envDeviceRegisterEntity.getUnitId());
+        envSprayStatusEntity.setFarmCode(farmCode);
+        sprayStatusEntityRepo.saveAndFlush(envSprayStatusEntity);
+    }
+}

+ 60 - 0
huimv-env-platform/huimv-env-common/src/main/java/com/huimv/env/common/service/impl/SprayTimeServiceImpl.java

@@ -0,0 +1,60 @@
+package com.huimv.env.common.service.impl;
+
+import com.huimv.env.common.dao.entity.EnvSprayTimeEntity;
+import com.huimv.env.common.dao.repo.EnvSprayTimeEntityRepo;
+import com.huimv.env.common.service.ISprayTimeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Example;
+import org.springframework.stereotype.Service;
+
+import javax.swing.text.html.Option;
+import javax.xml.ws.ServiceMode;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+public class SprayTimeServiceImpl implements ISprayTimeService {
+    @Autowired
+    private EnvSprayTimeEntityRepo envSprayTimeEntityRepo;
+
+    @Override
+    public String getSprayTimeByDeviceCode(String deviceCode) {
+        EnvSprayTimeEntity envSprayTimeEntity = new EnvSprayTimeEntity();
+        envSprayTimeEntity.setDeviceCode(deviceCode);
+        Example<EnvSprayTimeEntity> example = Example.of(envSprayTimeEntity);
+        List<EnvSprayTimeEntity> envSprayTimeEntityList = envSprayTimeEntityRepo.findAll(example);
+        StringBuilder timeBuilder = new StringBuilder();
+        for(EnvSprayTimeEntity sprayTimeEntity:envSprayTimeEntityList){
+            //开始分秒
+            if(sprayTimeEntity.getOpenTime() != null && sprayTimeEntity.getOpenTime().trim().length() > 0){
+                if(timeBuilder.length()>0){
+                    timeBuilder.append(",");
+                }
+                timeBuilder.append(sprayTimeEntity.getOpenTime());
+            }
+            //持续时间
+            if(sprayTimeEntity.getDuration() != null && sprayTimeEntity.getDuration() > 0){
+                if(timeBuilder.length()>0){
+                    timeBuilder.append(",");
+                }
+                timeBuilder.append(sprayTimeEntity.getDuration());
+            }
+            //
+            if(sprayTimeEntity.getOpenMode() != null && sprayTimeEntity.getOpenMode().trim().length() > 0){
+                if(timeBuilder.length()>0){
+                    timeBuilder.append(",");
+                }
+                timeBuilder.append(sprayTimeEntity.getOpenMode());
+            }
+        }
+        return timeBuilder.toString();
+    }
+}

+ 17 - 8
huimv-env-platform/huimv-env-device/src/main/java/com/huimv/env/device/listener/DeviceListener.java

@@ -11,6 +11,7 @@ import com.huimv.env.common.dao.repo.EnvTempEntityRepo;
 import com.huimv.env.common.service.IDeviceRegisterService;
 import com.huimv.env.common.service.IPushMessageService;
 import com.huimv.env.common.service.ISensorRegisterService;
+import com.huimv.env.common.service.ISprayStatusService;
 import com.huimv.env.common.utils.Const;
 import com.huimv.env.common.utils.DateUtil;
 import com.huimv.env.common.utils.MathUtil;
@@ -54,6 +55,8 @@ public class DeviceListener {
     private ICommandParserService cmdParserService;
     @Autowired
     private IPushMessageService pushMessageService;
+    @Autowired
+    private ISprayStatusService sprayStatusService;
 
     @RabbitListener(queues = Const.QUEUE_TEMP)
     @RabbitHandler
@@ -141,14 +144,22 @@ public class DeviceListener {
 
     @RabbitListener(queues = Const.QUEUE_DEVICE_STATUS)
     @RabbitHandler
-    public void processDeviceStatus(Map RawMap) throws ParseException {
+    public void processSprayStatus(Map RawMap) throws ParseException {
         System.out.println(">>>>>>>>>>>>>>接收设备状态数据 RawMap>>" + RawMap.toString());
         String askText = RawMap.get("askText").toString();
-        JSONObject dataJo = deviceService.handleAskText(askText);
-        System.out.println("设备状态 1111111111111111111111111111 =" + dataJo);
-
-
-
+        JSONObject dataJo = deviceService.handleSprayStatusAskCmd(askText);
+        String deviceCode = dataJo.getString("deviceCode");
+        //读取设备注册信息
+        EnvDeviceRegisterEntity envDeviceRegisterEntity = deviceRegisterService.getDeviceRegisterByDeviceCode(deviceCode);
+        if(envDeviceRegisterEntity == null){
+            log.error("该设备[" + deviceCode + "]未注册.");
+            return;
+        }
+        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
+        Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
+        String farmCode = envDeviceRegisterEntity.getFarmCode();
+        //{保存喷雾状态流水}
+        sprayStatusService.saveSprayStatusFlow(dataJo,envDeviceRegisterEntity,nowTimestamp,todayDate,farmCode);
     }
 
 
@@ -158,7 +169,6 @@ public class DeviceListener {
         System.out.println(">>>>>>>>>>>>>>接收平台推送消息 RawMap>>" + RawMap.toString());
         String askText = RawMap.get("askText").toString();
         JSONObject dataJo = cmdParserService.handlePushMessageCmd(askText);
-        System.out.println("平台推送消息 2222222222222222222222222222222=" + dataJo);
         String deviceCode = dataJo.getString("deviceCode");
         //读取设备注册信息
         EnvDeviceRegisterEntity envDeviceRegisterEntity = deviceRegisterService.getDeviceRegisterByDeviceCode(deviceCode);
@@ -171,7 +181,6 @@ public class DeviceListener {
         String farmCode = envDeviceRegisterEntity.getFarmCode();
         //{}
         String messageContent = deviceService.getMessageContent(dataJo,envDeviceRegisterEntity);
-        System.out.println("messageContent="+messageContent);
         //{保存消息推送流水}
         pushMessageService.savePushMessageFlow(dataJo,messageContent,nowTimestamp,todayDate,farmCode);
     }

+ 3 - 0
huimv-env-platform/huimv-env-device/src/main/java/com/huimv/env/device/service/IDeviceService.java

@@ -23,4 +23,7 @@ public interface IDeviceService {
 
     //
     String getMessageContent(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity);
+
+    //
+    JSONObject handleSprayStatusAskCmd(String askText);
 }

+ 0 - 1
huimv-env-platform/huimv-env-device/src/main/java/com/huimv/env/device/service/Show.java

@@ -2,7 +2,6 @@ package com.huimv.env.device.service;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import org.junit.platform.commons.annotation.Testable;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 

+ 20 - 15
huimv-env-platform/huimv-env-device/src/main/java/com/huimv/env/device/service/impl/DeviceServiceImpl.java

@@ -15,6 +15,7 @@ import com.huimv.env.common.utils.MathUtil;
 import com.huimv.env.device.config.ConfigBean;
 import com.huimv.env.device.producer.Producer;
 import com.huimv.env.device.service.IDeviceService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -31,6 +32,7 @@ import java.sql.Timestamp;
  * @Create : 2020-12-25
  **/
 @Service
+@Slf4j
 public class DeviceServiceImpl implements IDeviceService {
     @Autowired
     private EnvTempEntityRepo envTempEntityRepo;
@@ -140,25 +142,16 @@ public class DeviceServiceImpl implements IDeviceService {
     public String getMessageContent(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity) {
         String act = configBean.getAct();
         String fault = configBean.getFault();
-        System.out.println("<< act="+act);
-        System.out.println("<< fault="+fault);
-        //获取栋舍
-        String pigpenName = pigpenService.getPigpenByDevice(dataJo.getString("deviceCode"));
-
-        //芯片ID
-        String chipId = envDeviceRegisterEntity.getChipId();
-
+        log.info("所有故障类型="+fault);
+        log.info("所有动作类型="+act);
         int faultSn = dataJo.getInteger("faultSn");
         int actType = dataJo.getInteger("actType");
-        System.out.println("<< faultSn="+faultSn);
-        System.out.println("<< actType="+actType);
         //
         String faultText = getFaultText(faultSn, fault);
-        System.out.println("<< faultText="+faultText);
-
+        log.info("当前故障="+faultText);
         //1:报警 2:恢复
         String actText = getActText(actType, act);
-        System.out.println("<< actText="+actText);
+        log.info("当前操作="+actText);
         String messageConent = "";
         if (actType == 1) {
             if (faultText.indexOf("报警") == -1) {
@@ -169,12 +162,24 @@ public class DeviceServiceImpl implements IDeviceService {
         } else {
             messageConent = faultText+"已"+actText;
         }
-        System.out.println("<< messageConent="+messageConent);
-
+        //获取栋舍
+        String pigpenName = pigpenService.getPigpenByDevice(dataJo.getString("deviceCode"));
+        //芯片ID
+        String chipId = envDeviceRegisterEntity.getChipId();
         //2栋的芯片ID[86178908]高温报警
         return "["+pigpenName+"]芯片ID为["+chipId+"]的设备提示:"+messageConent;
     }
 
+    @Override
+    public JSONObject handleSprayStatusAskCmd(String askText) {
+        String[] dataArray = askText.split("\\+");
+        JSONObject dataJo = new JSONObject();
+        dataJo.put("deviceCode",dataArray[1]);
+        dataJo.put("sprayStatus",dataArray[3]);
+        dataJo.put("askTime",dataArray[4]);
+        return dataJo;
+    }
+
     private String getActText(int actType, String act) {
         String[] actGroupArray = act.split(",");
         String actText = "";

+ 37 - 7
huimv-env-platform/huimv-env-input/src/main/java/com/huimv/env/input/server/EnvInputServerHandler.java

@@ -1,6 +1,11 @@
 package com.huimv.env.input.server;
 
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.env.common.dao.entity.EnvDeviceRegisterEntity;
+import com.huimv.env.common.service.IDeviceRegisterService;
+import com.huimv.env.common.service.ISprayConfigService;
+import com.huimv.env.common.service.ISprayTimeService;
 import com.huimv.env.common.utils.RegexUtil;
 import com.huimv.env.input.producer.Producer;
 import com.huimv.env.input.service.ICommandProcessorService;
@@ -20,6 +25,7 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.sql.Timestamp;
 import java.text.ParseException;
 import java.util.HashMap;
 import java.util.Map;
@@ -263,7 +269,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
             System.out.println("##获取报警使能请求-未注册设备 idCode=" + idCode);
             return;
         }
-        String answerText = "hm+115+14+1(122)1(122)1(122)1(122)+0+4+end";
+        String answerText = "hm+115+14+2(111)2(111)2(111)2(111)+0+4+end";
         log.info(">>获取报警使能请求-应答数据>>" + answerText);
         answerCmd(answerText, ctx);
     }
@@ -275,22 +281,46 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
             System.out.println("##上报喷雾除臭状态请求-未注册设备 idCode=" + idCode);
             return;
         }
-        String answerText = "hm+"+idCode+"+7+1+201702081523+6+end";
+        String answerText = "hm+" + idCode + "+7+1+201702081523+6+end";
         log.info(">>上报喷雾除臭状态请求-应答数据>>" + answerText);
         answerCmd(answerText, ctx);
         //发送喷雾设备状态到消息队列
         producer.sendSprayEquipStatusToMQ(askText);
     }
 
+    @Autowired
+    private ISprayConfigService sprayConfigService;
+    @Autowired
+    private ISprayTimeService sprayTimeService;
+    @Autowired
+    private IDeviceRegisterService deviceRegisterService;
+
     //获取喷雾除臭配置请求
-    private void getSprayConfig(String askText, String idCode, ChannelHandlerContext ctx) {
+    private void getSprayConfig(String askText, String deviceCode, ChannelHandlerContext ctx) {
         System.out.println("==>获取喷雾除臭配置请求 askText>>" + askText);
-        if (!cmdProService.isEffectiveDevice(idCode)) {
-            System.out.println("##获取喷雾除臭配置请求-未注册设备 idCode=" + idCode);
+        if (!cmdProService.isEffectiveDevice(deviceCode)) {
+            System.out.println("##获取喷雾除臭配置请求-未注册设备 idCode=" + deviceCode);
+            return;
+        }
+        //读取设备注册信息
+        EnvDeviceRegisterEntity envDeviceRegisterEntity = deviceRegisterService.getDeviceRegisterByDeviceCode(deviceCode);
+        if (envDeviceRegisterEntity == null) {
+            log.error("该设备[" + deviceCode + "]未注册.");
             return;
         }
-//        String answerText = "hm+115+6+1+1+(201708080101,60,10,10)(201708080202,60,10,10)(201708080303,60,10,10)(201708080404,60,10,10)...+60+201702081523+6+end";
-        String answerText = "hm+"+idCode+"+6+1+1+0101,60,10,10,0202,60,10,10,0303,60,10,10,0404,60,10,10+60+6+end";
+        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
+        Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
+        String farmCode = envDeviceRegisterEntity.getFarmCode();
+
+        //读取喷雾配置表数据
+        JSONObject configJo = sprayConfigService.getSprayConfigByDeviceCode(deviceCode, farmCode);
+        int runMode = configJo.getInteger("runMode");
+        int deviceStatus = configJo.getInteger("deviceStatus");
+        int timeInterval = configJo.getInteger("timeInterval");
+        //读取定时时间配置表数据
+        String sprayTime = sprayTimeService.getSprayTimeByDeviceCode(deviceCode);
+//        String answerText = "hm+"+deviceCode+"+6+1+1+0101,60,10,10,0202,60,10,10,0303,60,10,10,0404,60,10,10+60+6+end";
+        String answerText = "hm+" + deviceCode + "+6+" + runMode + "+" + deviceStatus + "+" + sprayTime + "+" + timeInterval + "+6+end";
         log.info(">>获取喷雾除臭配置请求-应答数据>>" + answerText);
         answerCmd(answerText, ctx);
     }