523096025 2 yıl önce
ebeveyn
işleme
22f3ef02b9

+ 82 - 0
huimv-env-common/src/main/java/com/huimv/env/common/config/WeChatMessage.java

@@ -0,0 +1,82 @@
+package com.huimv.env.common.config;
+
+
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.HashMap;
+
+@Component
+public class WeChatMessage {
+//    wx:
+//    appId: "wx707fcfd7d09e02eb"  #小程序appId
+//    secret: "w95K45G9-2xGocleqrtGoHwEGF6ocqSu8EbDBxCQSR0"   #小程序密钥
+//    templateId: "f932c54f1cbd427b10218a0d1cfb88bf"  #订阅消息模板
+//
+//    @Value("${wx.appId}")
+//    private String appId;
+//
+//    @Value("${wx.secret}")
+//    private String secret;
+//
+//    @Value("${wx.templateId}")
+//    private String templateId;
+    private static  final  String  appId= "wx707fcfd7d09e02eb";
+    private static  final  String  secret= "w95K45G9-2xGocleqrtGoHwEGF6ocqSu8EbDBxCQSR0";
+    private static  final  String  templateId= "f932c54f1cbd427b10218a0d1cfb88bf";
+
+    private String openid;
+
+    public void sendMsg(String deviceCode, Date uploadDate,String location){
+        //1:获取token(接口调用凭证)
+        String token = queryToken();
+        //2:发送订阅消息
+        send(token,deviceCode,uploadDate,location);
+    }
+
+    // 1: 获取 access_token  (2h过期)
+    public String queryToken(){
+        String tokenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
+        tokenUrl = tokenUrl + "&appid=" + appId + "&secret=" + secret;
+        String result = HttpUtil.get(tokenUrl);
+        JSONObject jsonObject = JSONUtil.parseObj(result);
+        String token = jsonObject.get("access_token").toString();
+        return token;
+    }
+
+    public void send(String token,String deviceCode, Date uploadDate,String location){
+        String msgUrl="https://api.weixin.qq.com/cgi-bin/message/subscribe/send";
+        msgUrl = msgUrl + "?access_token=" + token;
+        // 设置模板参数
+        HashMap<String, Object> paramMap = new HashMap<>();
+        paramMap.put("touser", openid);                 // 接收方
+        paramMap.put("template_id", templateId);        // 模板id
+        paramMap.put("page","pages/self/self");         // 消息中要跳转的页面
+        // 设置data 模板内容
+        HashMap<String, Object> data = new HashMap<>();
+        //报警设备
+        data.put("thing1", formatParam(deviceCode));
+        //报警类型
+        data.put("thing2", formatParam("断电报警"));
+        //报警时间
+        data.put("thing3", formatParam(uploadDate.toString()));
+        //报警地点
+        data.put("thing5", formatParam(location));
+        paramMap.put("data", data);
+        // 转json字符串
+        String jsonObject = JSONUtil.toJsonStr(paramMap);
+        String result= HttpUtil.post(msgUrl, jsonObject);
+        System.out.println(result);
+    }
+
+    public HashMap<String, Object> formatParam(String value){
+        HashMap<String, Object> data = new HashMap<>();
+        data.put("value", value);
+        return data;
+    }
+
+}

+ 8 - 4
huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvElectricity.java

@@ -3,8 +3,12 @@ package com.huimv.env.common.entity;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -46,22 +50,22 @@ public class EnvElectricity implements Serializable {
     /**
      * 原始值记录
      */
-    private String originalValue;
+    private BigDecimal originalValue;
 
     /**
      * 处理后的值
      */
-    private String handleValue;
+    private BigDecimal handleValue;
 
     /**
      * 应答时间
      */
-    private LocalDateTime askTime;
+    private Date askTime;
 
     /**
      * 入库时间
      */
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
     private Integer farmId;
 

+ 7 - 3
huimv-env-common/src/main/java/com/huimv/env/common/entity/EnvWater.java

@@ -3,8 +3,12 @@ package com.huimv.env.common.entity;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -46,12 +50,12 @@ public class EnvWater implements Serializable {
     /**
      * 原始值记录
      */
-    private String originalValue;
+    private BigDecimal originalValue;
 
     /**
      * 处理后的值
      */
-    private String handleValue;
+    private BigDecimal handleValue;
 
     /**
      * 应答时间
@@ -61,7 +65,7 @@ public class EnvWater implements Serializable {
     /**
      * 入库时间
      */
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
     private Integer farmId;
 

+ 5 - 5
huimv-env-input-water/pom.xml

@@ -33,11 +33,6 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-undertow</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>fastjson</artifactId>
-            <version>1.2.28</version>
-        </dependency>
         <!-- JPA -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -59,6 +54,11 @@
             <artifactId>redis-store</artifactId>
             <version>0.0.6</version>
         </dependency>
+        <dependency>
+            <groupId>com.huimv</groupId>
+            <artifactId>huimv-env-common</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
         <!-- actuator -->
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 6 - 1
huimv-env-input-water/src/main/java/com/huimv/env/input/HuimvEnvInputApplication.java

@@ -4,7 +4,10 @@ import com.huimv.env.input.server.EnvInputServer;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
 import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.ComponentScans;
 
 /**
  * @Project : huimv.shiwan
@@ -14,7 +17,9 @@ import org.springframework.context.ApplicationContext;
  * @Author : ZhuoNing
  * @Create : 2020-12-25
  **/
-@MapperScan(basePackages = "com.huimv.env.input.mapper")
+@ComponentScans({@ComponentScan("com.huimv.env.common.utils"), @ComponentScan("com.huimv.env.common.service")})
+@EntityScan(value = "com.huimv.env.common.entity")
+@MapperScan("com.huimv.env.common.mapper")
 @SpringBootApplication
 public class HuimvEnvInputApplication {
     public static void main(String[] args) throws InterruptedException {

+ 5 - 1
huimv-env-input-water/src/main/java/com/huimv/env/input/controller/ChengzhongController.java

@@ -1,3 +1,4 @@
+/*
 package com.huimv.env.input.controller;
 
 
@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
+*/
 /**
  * <p>
  *  前端控制器
@@ -22,7 +24,8 @@ import java.util.List;
  *
  * @author author
  * @since 2023-03-11
- */
+ *//*
+
 @RestController
 @RequestMapping("/chengzhong")
 @CrossOrigin
@@ -46,3 +49,4 @@ public class ChengzhongController {
     }
 
 }
+*/

+ 43 - 43
huimv-env-input-water/src/main/java/com/huimv/env/input/entity/Chengzhong.java

@@ -1,43 +1,43 @@
-package com.huimv.env.input.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 java.util.Date;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author author
- * @since 2023-03-11
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("chengzhong")
-public class Chengzhong implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    private Integer weight;
-
-    @JsonFormat(pattern = "MM-dd HH:mm:ss",timezone = "GMT+8")
-    private Date creatTime;
-
-    private String macAddr;
-    private Integer num;
-
-
-}
+//package com.huimv.env.input.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 java.util.Date;
+//
+//import com.fasterxml.jackson.annotation.JsonFormat;
+//import lombok.Data;
+//import lombok.EqualsAndHashCode;
+//import lombok.experimental.Accessors;
+//
+///**
+// * <p>
+// *
+// * </p>
+// *
+// * @author author
+// * @since 2023-03-11
+// */
+//@Data
+//@EqualsAndHashCode(callSuper = false)
+//@Accessors(chain = true)
+//@TableName("chengzhong")
+//public class Chengzhong implements Serializable {
+//
+//    private static final long serialVersionUID = 1L;
+//
+//    @TableId(value = "id", type = IdType.AUTO)
+//    private Integer id;
+//
+//    private Integer weight;
+//
+//    @JsonFormat(pattern = "MM-dd HH:mm:ss",timezone = "GMT+8")
+//    private Date creatTime;
+//
+//    private String macAddr;
+//    private Integer num;
+//
+//
+//}

+ 5 - 1
huimv-env-input-water/src/main/java/com/huimv/env/input/mapper/ChengzhongMapper.java

@@ -1,8 +1,10 @@
+/*
 package com.huimv.env.input.mapper;
 
 import com.huimv.env.input.entity.Chengzhong;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+*/
 /**
  * <p>
  *  Mapper 接口
@@ -10,7 +12,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  *
  * @author author
  * @since 2023-03-11
- */
+ *//*
+
 public interface ChengzhongMapper extends BaseMapper<Chengzhong> {
 
 }
+*/

+ 69 - 35
huimv-env-input-water/src/main/java/com/huimv/env/input/server/EnvInputServerHandler.java

@@ -3,20 +3,22 @@ package com.huimv.env.input.server;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.huimv.env.input.entity.Chengzhong;
-import com.huimv.env.input.service.IChengzhongService;
+import com.huimv.env.common.entity.EnvElectricity;
+import com.huimv.env.common.entity.EnvWarning;
+import com.huimv.env.common.entity.EnvWater;
+import com.huimv.env.common.service.IEnvElectricityService;
+import com.huimv.env.common.service.IEnvWaterService;
 import com.huimv.env.input.utils.ModBusUtils;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 
 import io.netty.channel.*;
-import io.netty.util.CharsetUtil;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.tomcat.util.codec.binary.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.nio.charset.Charset;
 import java.text.ParseException;
 import java.util.Date;
@@ -40,10 +42,11 @@ import static com.huimv.env.input.utils.ModBusUtils.hexStr2Bytes;
 @Slf4j
 public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
     private StringBuilder askTextSb = null;
-
     @Autowired
-    private IChengzhongService chengzhongService;
+    private IEnvWaterService envWaterService;
 
+    @Autowired
+    private IEnvElectricityService envElectricityService;
     //
     public void appendClientAsk(String text) {
         if (this.askTextSb == null) {
@@ -52,6 +55,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
         askTextSb.append(text);
     }
 
+
     @Override
     public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
         Channel channel = ctx.channel();
@@ -60,43 +64,73 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
         byte[] bytes = new byte[byteBuf.readableBytes()];
         byteBuf.readBytes(bytes);
         String str = ModBusUtils.bytes2HexString(bytes);
-//        saveWeight(str);
         System.out.println("收到的数据:"+str);
-        Thread.sleep(10*1000);
-//        channel.writeAndFlush(Unpooled.copiedBuffer(hexStr2Bytes("1F 03 00 2A 00 01 A6 7C")));
-        channel.writeAndFlush(Unpooled.copiedBuffer(hexStr2Bytes("1D 03 00 00 00 02 C6 57")));
+        String cmd = saveWaterAndEle(str);
+        Thread.sleep(5*60*1000);
+        System.out.println(cmd);
+        channel.writeAndFlush(Unpooled.copiedBuffer(hexStr2Bytes(cmd)));
         super.channelRead(ctx, msg);
     }
-    private void saveWeight(String str) {
-        try {
-            if (null != str && str.split(" ").length > 7){
-                String[] s = str.split(" ");
 
-                String macAddr = s[0]+s[1]+ s[2]+s[3]+ s[4]+s[5];
-                Integer i = countWeight(s);
-                Chengzhong chengzhong = new Chengzhong();
-                chengzhong.setCreatTime(new Date());
-                chengzhong.setMacAddr(macAddr);
-//                int i = Integer.parseInt(weight, 16);
-             /*   if (i>60000){
-                    i=0;
-                }*/
-                chengzhong.setWeight(i);
-                Chengzhong one = chengzhongService.getOne(new QueryWrapper<Chengzhong>().orderByDesc("id").eq("mac_addr", macAddr).last("limit 1"));
-                int num = i;
-                if (ObjectUtil.isNotEmpty(one)){
-                    num = i -one.getWeight();
-                }
-                System.out.println(i);
-                chengzhong.setNum(num);
-                chengzhongService.save(chengzhong);
+    private String saveWaterAndEle(String str) {
+        String[] s = str.split(" ");
+
+        //读水表
+        String cmd ="1D 03 00 00 00 02 C6 57";
+        //读电表
+//        String cmd ="1C 04 01 00 00 02 73 BA";
+        if (s.length>10 || s.length<7){
+            return cmd;
+        }
+        String val = s[3]+s[4]+s[5]+s[6];
+        System.out.println("val=" +val);
+        Date now = new Date();
+        //水表
+        if (str.startsWith("1D 03")){
+            System.out.println("水表");
+            int waterOrigValue = Integer.parseInt(val, 16);
+            BigDecimal bigDecimal = new BigDecimal(waterOrigValue);
+            EnvWater oldEnvWater = envWaterService.getOne(new QueryWrapper<EnvWater>().orderByDesc("id").last("limit 1"));
+            BigDecimal originalValue = oldEnvWater.getOriginalValue();
+            EnvWater envWater = new EnvWater();
+            envWater.setOriginalValue(bigDecimal);
+            int i = bigDecimal.compareTo(originalValue);
+            if (ObjectUtil.isNotEmpty(oldEnvWater) && i>0){
+                envWater.setHandleValue(bigDecimal.subtract(oldEnvWater.getOriginalValue()).divide(new BigDecimal(100)));
             }
-        }catch (Exception e){
-            System.out.println(e);
+            envWater.setUpdateTime(now);
+            envWater.setFarmId(27);
+            envWaterService.save(envWater);
+            cmd = "1C 04 01 00 00 02 73 BA";
         }
-
+        //电表
+        if (str.startsWith("1C 04")){
+            try {
+                    System.out.println("电表");
+                    int eleOrigValue = Integer.parseInt(val, 16);
+                    Float f =  Float.intBitsToFloat(eleOrigValue);
+                    BigDecimal bigDecimal = new BigDecimal(f);
+                    EnvElectricity oldEnvWater = envElectricityService.getOne(new QueryWrapper<EnvElectricity>().orderByDesc("id").last("limit 1"));
+                    BigDecimal originalValue = oldEnvWater.getOriginalValue();
+                    EnvElectricity envElectricity = new EnvElectricity();
+                    envElectricity.setOriginalValue(bigDecimal);
+                    int i = bigDecimal.compareTo(originalValue);
+                    if (ObjectUtil.isNotEmpty(oldEnvWater) && i>0){
+                        envElectricity.setHandleValue(bigDecimal.subtract(oldEnvWater.getOriginalValue()));
+                    }
+                    envElectricity.setUpdateTime(now);
+                    envElectricity.setFarmId(27);
+                    envElectricityService.save(envElectricity);
+                }catch (Exception e){
+                    System.out.println(e);
+                }
+        }
+        return cmd;
     }
 
+
+
+
     private Integer countWeight(String[] s) {
         int count = 48;
         return (Integer.parseInt(s[8], 16) -count)

+ 16 - 16
huimv-env-input-water/src/main/java/com/huimv/env/input/service/IChengzhongService.java

@@ -1,16 +1,16 @@
-package com.huimv.env.input.service;
-
-import com.huimv.env.input.entity.Chengzhong;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- *  服务类
- * </p>
- *
- * @author author
- * @since 2023-03-11
- */
-public interface IChengzhongService extends IService<Chengzhong> {
-
-}
+//package com.huimv.env.input.service;
+//
+//import com.huimv.env.input.entity.Chengzhong;
+//import com.baomidou.mybatisplus.extension.service.IService;
+//
+///**
+// * <p>
+// *  服务类
+// * </p>
+// *
+// * @author author
+// * @since 2023-03-11
+// */
+//public interface IChengzhongService extends IService<Chengzhong> {
+//
+//}

+ 5 - 1
huimv-env-input-water/src/main/java/com/huimv/env/input/service/impl/ChengzhongServiceImpl.java

@@ -1,3 +1,4 @@
+/*
 package com.huimv.env.input.service.impl;
 
 import com.huimv.env.input.entity.Chengzhong;
@@ -6,6 +7,7 @@ import com.huimv.env.input.service.IChengzhongService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+*/
 /**
  * <p>
  *  服务实现类
@@ -13,8 +15,10 @@ import org.springframework.stereotype.Service;
  *
  * @author author
  * @since 2023-03-11
- */
+ *//*
+
 @Service
 public class ChengzhongServiceImpl extends ServiceImpl<ChengzhongMapper, Chengzhong> implements IChengzhongService {
 
 }
+*/

+ 3 - 3
huimv-env-input-water/src/main/resources/application-prod.yml

@@ -6,9 +6,9 @@ spring:
     name: huimv-env-input
 
   datasource:
-    url: jdbc:mysql://122.112.224.199:3306/huimv?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
-    username: root
-    password: hm123456
+    url: jdbc:mysql://139.9.172.209:3309/huimv-farm-env?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    username: eartag
+    password: eartag@2022
     driver-class-name: com.mysql.cj.jdbc.Driver
   jpa:
     show-sql: true