Ver Fonte

物联网

home há 2 anos atrás
pai
commit
2266f392cf
14 ficheiros alterados com 374 adições e 27 exclusões
  1. 1 1
      hx-common/code-generator/src/main/java/com/fjhx/modular/SyringeProduction.java
  2. 61 0
      hx-service-api/syringe-production-api/src/main/java/com/fjhx/entity/factory/FactoryProduct.java
  3. 9 4
      hx-service-api/syringe-production-api/src/main/java/com/fjhx/enums/ProductEnum.java
  4. 2 2
      hx-service-api/syringe-production-api/src/main/java/com/fjhx/params/IotData/MessageBody.java
  5. 46 0
      hx-service-api/syringe-production-api/src/main/java/com/fjhx/params/IotData/UpperComputerData.java
  6. 17 0
      hx-service-api/syringe-production-api/src/main/java/com/fjhx/params/factory/FactoryProductEx.java
  7. 17 0
      hx-service-api/syringe-production-api/src/main/java/com/fjhx/params/factory/FactoryProductVo.java
  8. 0 1
      hx-service/syringe-production/src/main/java/com/fjhx/controller/data/DataAutoclavesController.java
  9. 76 0
      hx-service/syringe-production/src/main/java/com/fjhx/controller/factory/FactoryProductController.java
  10. 48 19
      hx-service/syringe-production/src/main/java/com/fjhx/listener/IotDataListener.java
  11. 16 0
      hx-service/syringe-production/src/main/java/com/fjhx/mapper/factory/FactoryProductMapper.java
  12. 5 0
      hx-service/syringe-production/src/main/java/com/fjhx/mapper/factory/FactoryProductMapper.xml
  13. 28 0
      hx-service/syringe-production/src/main/java/com/fjhx/service/factory/FactoryProductService.java
  14. 48 0
      hx-service/syringe-production/src/main/java/com/fjhx/service/factory/impl/FactoryProductServiceImpl.java

+ 1 - 1
hx-common/code-generator/src/main/java/com/fjhx/modular/SyringeProduction.java

@@ -12,7 +12,7 @@ public class SyringeProduction {
         CodeGenerator.MODULAR_NAME = "syringe-production";
 
         // 需要生成的表名称,多表用,隔开
-        CodeGenerator.INCLUDE = "data_autoclaves";
+        CodeGenerator.INCLUDE = "factory_product";
 
         // mysql连接
         CodeGenerator.MYSQL_URL = "36.134.91.96:17330";

+ 61 - 0
hx-service-api/syringe-production-api/src/main/java/com/fjhx/entity/factory/FactoryProduct.java

@@ -0,0 +1,61 @@
+package com.fjhx.entity.factory;
+
+import com.fjhx.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FactoryProduct extends BaseEntity {
+
+
+    /**
+     * tda设备id
+     */
+    private Long tdaDeviceId;
+
+    /**
+     * tda设备id
+     */
+    private String deviceId;
+
+    /**
+     * 自定义设备名称
+     */
+    private String name;
+
+    /**
+     * 设备编号
+     */
+    private String equipmentNo;
+
+    /**
+     * ip地址
+     */
+    private String ipAddress;
+
+    /**
+     * 端口号
+     */
+    private Integer port;
+
+    /**
+     * 设备类型  1 注塑机 2 滚印机 3 组装机 4 螺纹头 5 注射针 6经编机 7验布机
+     */
+    private Integer type;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 9 - 4
hx-service-api/syringe-production-api/src/main/java/com/fjhx/enums/ProductEnum.java

@@ -6,16 +6,16 @@ import java.util.HashMap;
 import java.util.Map;
 
 /**
- * 设备id枚举
+ * 设备枚举
  *
  * @author zlj
  */
 @Getter
 public enum ProductEnum {
     // 经编机
-    JBJ("6350ae233ec34a6d03c89020", "经编机"),
+    JBJ("6350ae233ec34a6d03c89020", "jbj_001", "经编机"),
     // 验布机
-    YBJ("635897db3ec34a6d03c9616a", "验布机"),
+    YBJ("635897db3ec34a6d03c9616a", "ybj_001", "验布机"),
     ;
 
     /**
@@ -23,12 +23,17 @@ public enum ProductEnum {
      */
     private final String productId;
     /**
+     * 设备编号
+     */
+    private final String equipmentNo;
+    /**
      * 设备名称
      */
     private final String productName;
 
-    ProductEnum(String productId, String productName) {
+    ProductEnum(String productId, String equipmentNo, String productName) {
         this.productId = productId;
+        this.equipmentNo = equipmentNo;
         this.productName = productName;
     }
 

+ 2 - 2
hx-service-api/syringe-production-api/src/main/java/com/fjhx/params/IotData/MessageBody.java

@@ -37,11 +37,11 @@ public class MessageBody {
 
     @Data
     public static class Body {
-        private List<Services> services;
+        private List<Service> services;
     }
 
     @Data
-    public static class Services {
+    public static class Service {
         private String serviceId;
         private JSONObject properties;
         private Date eventTime;

+ 46 - 0
hx-service-api/syringe-production-api/src/main/java/com/fjhx/params/IotData/UpperComputerData.java

@@ -0,0 +1,46 @@
+package com.fjhx.params.IotData;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class UpperComputerData {
+
+    /**
+     * 设备编号
+     */
+    private String equipmentNo;
+
+    /**
+     * 设备ip地址
+     */
+    private String ipAddress;
+
+    /**
+     * 设备端口号
+     */
+    private Integer port;
+
+    /**
+     * 设备类型
+     */
+    private Integer type;
+
+    /**
+     * 其他配置
+     */
+    private JSONObject other;
+
+    /**
+     * 记录时间
+     */
+    private Date createTime;
+
+    /**
+     * 生成数据
+     */
+    private Object data;
+
+}

+ 17 - 0
hx-service-api/syringe-production-api/src/main/java/com/fjhx/params/factory/FactoryProductEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.factory;
+
+import com.fjhx.entity.factory.FactoryProduct;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ *
+ * @author ${author}
+ * @since 2022-12-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FactoryProductEx extends FactoryProduct {
+
+}

+ 17 - 0
hx-service-api/syringe-production-api/src/main/java/com/fjhx/params/factory/FactoryProductVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.factory;
+
+import com.fjhx.entity.factory.FactoryProduct;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ *
+ * @author ${author}
+ * @since 2022-12-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FactoryProductVo extends FactoryProduct {
+
+}

+ 0 - 1
hx-service/syringe-production/src/main/java/com/fjhx/controller/data/DataAutoclavesController.java

@@ -38,4 +38,3 @@ public class DataAutoclavesController {
     }
 
 }
-

+ 76 - 0
hx-service/syringe-production/src/main/java/com/fjhx/controller/factory/FactoryProductController.java

@@ -0,0 +1,76 @@
+package com.fjhx.controller.factory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.factory.FactoryProduct;
+import com.fjhx.listener.IotDataListener;
+import com.fjhx.params.IotData.MessageBody;
+import com.fjhx.params.factory.FactoryProductVo;
+import com.fjhx.service.factory.FactoryProductService;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-14
+ */
+@RestController
+@RequestMapping("/factoryProduct")
+public class FactoryProductController {
+
+    @Autowired
+    private FactoryProductService factoryProductService;
+
+    @Resource
+    private BladeRedis redisCache;
+
+    @PostMapping("/getData")
+    public R getData(@RequestBody FactoryProduct factoryProduct) {
+        MessageBody.Service service = redisCache.get(IotDataListener.DEVICE_PREFIX + factoryProduct.getEquipmentNo());
+        return R.success(service);
+    }
+
+    @PostMapping("/list")
+    public R list(@RequestBody Map<String, Object> condition) {
+        List<FactoryProduct> list = factoryProductService.list();
+        return R.success(list);
+    }
+
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, Object> condition) {
+        Page<FactoryProduct> result = factoryProductService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody FactoryProductVo factoryProductVo) {
+        factoryProductService.add(factoryProductVo);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody FactoryProductVo factoryProductVo) {
+        factoryProductService.edit(factoryProductVo);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody FactoryProductVo factoryProductVo) {
+        factoryProductService.delete(factoryProductVo);
+        return R.success();
+    }
+
+}
+

+ 48 - 19
hx-service/syringe-production/src/main/java/com/fjhx/listener/IotDataListener.java

@@ -3,6 +3,7 @@ package com.fjhx.listener;
 import com.alibaba.fastjson.JSONObject;
 import com.fjhx.enums.ProductEnum;
 import com.fjhx.params.IotData.MessageBody;
+import com.fjhx.params.IotData.UpperComputerData;
 import com.fjhx.utils.amqp.AmqpClient;
 import com.fjhx.utils.amqp.AmqpClientOptions;
 import com.fjhx.utils.amqp.AmqpConstants;
@@ -25,7 +26,7 @@ import java.util.List;
 public class IotDataListener {
 
     // 设备前缀
-    private static final String DEVICE_PREFIX = "prefix:";
+    public static final String DEVICE_PREFIX = "device:";
 
     @Resource
     private BladeRedis redisCache;
@@ -76,24 +77,18 @@ public class IotDataListener {
             if (body == null) {
                 return;
             }
-            List<MessageBody.Services> services = body.getServices();
+            List<MessageBody.Service> services = body.getServices();
             if (services == null || services.size() == 0) {
                 return;
             }
 
-            // 设备id
-            String deviceId = header.getDeviceId();
-
-            switch (ProductEnum.getEnumByProductId(productId)) {
-                case JBJ:
-                    defaultHandle(message, deviceId, services);
-                    break;
-                case YBJ:
-                    defaultHandle(message, deviceId, services);
-                    break;
-                default:
-                    return;
+            ProductEnum productEnum = ProductEnum.getEnumByProductId(productId);
+            if (productEnum != null) {
+                appointProductHandle(productEnum, message, services);
+            } else {
+                upperComputerHandle(message, services);
             }
+
             System.err.println(JSONObject.toJSONString(messageBody));
 
         } catch (JMSException e) {
@@ -102,12 +97,45 @@ public class IotDataListener {
     }
 
 
-    private void defaultHandle(Message message, String deviceId, List<MessageBody.Services> services) {
-        MessageBody.Services oldServices = redisCache.get(DEVICE_PREFIX + deviceId);
-        MessageBody.Services newServices = services.get(0);
+    /**
+     * 指定设备处理方式
+     *
+     * @param productEnum 产品枚举
+     * @param message     message
+     * @param services    设备消息列表
+     */
+    private void appointProductHandle(ProductEnum productEnum, Message message, List<MessageBody.Service> services) {
+        // 获取设备编号
+        String equipmentNo = productEnum.getEquipmentNo();
+        String redisKey = DEVICE_PREFIX + equipmentNo;
+
+        MessageBody.Service oldService = redisCache.get(redisKey);
+        MessageBody.Service newService = services.get(0);
+
+        if (oldService == null || newService.getEventTime().compareTo(oldService.getEventTime()) > 0) {
+            redisCache.set(redisKey, newService);
+        }
+
+        try {
+            message.acknowledge();
+        } catch (JMSException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 默认处理
+     */
+    private void upperComputerHandle(Message message, List<MessageBody.Service> services) {
+        MessageBody.Service service = services.get(0);
+
+        UpperComputerData newData = service.getProperties().toJavaObject(UpperComputerData.class);
 
-        if (oldServices == null || newServices.getEventTime().compareTo(oldServices.getEventTime()) > 0) {
-            redisCache.set(DEVICE_PREFIX + deviceId, newServices);
+        String redisKey = DEVICE_PREFIX + newData.getEquipmentNo();
+        UpperComputerData oldData = redisCache.get(redisKey);
+
+        if (oldData == null || newData.getCreateTime().compareTo(oldData.getCreateTime()) > 0) {
+            redisCache.set(redisKey, newData);
         }
 
         try {
@@ -115,6 +143,7 @@ public class IotDataListener {
         } catch (JMSException e) {
             e.printStackTrace();
         }
+
     }
 
 }

+ 16 - 0
hx-service/syringe-production/src/main/java/com/fjhx/mapper/factory/FactoryProductMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.factory;
+
+import com.fjhx.entity.factory.FactoryProduct;
+import com.github.yulichang.base.MPJBaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-14
+ */
+public interface FactoryProductMapper extends MPJBaseMapper<FactoryProduct> {
+
+}

+ 5 - 0
hx-service/syringe-production/src/main/java/com/fjhx/mapper/factory/FactoryProductMapper.xml

@@ -0,0 +1,5 @@
+<?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.fjhx.mapper.factory.FactoryProductMapper">
+
+</mapper>

+ 28 - 0
hx-service/syringe-production/src/main/java/com/fjhx/service/factory/FactoryProductService.java

@@ -0,0 +1,28 @@
+package com.fjhx.service.factory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.factory.FactoryProduct;
+import com.fjhx.params.factory.FactoryProductVo;
+import com.fjhx.base.BaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-14
+ */
+public interface FactoryProductService extends BaseService<FactoryProduct> {
+
+    Page<FactoryProduct> getPage(Map<String, Object> condition);
+
+    void add(FactoryProductVo factoryProductVo);
+
+    void edit(FactoryProductVo factoryProductVo);
+
+    void delete(FactoryProductVo factoryProductVo);
+
+}

+ 48 - 0
hx-service/syringe-production/src/main/java/com/fjhx/service/factory/impl/FactoryProductServiceImpl.java

@@ -0,0 +1,48 @@
+package com.fjhx.service.factory.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.factory.FactoryProduct;
+import com.fjhx.params.factory.FactoryProductVo;
+import com.fjhx.mapper.factory.FactoryProductMapper;
+import com.fjhx.service.factory.FactoryProductService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-14
+ */
+@Service
+public class FactoryProductServiceImpl extends ServiceImpl<FactoryProductMapper, FactoryProduct> implements FactoryProductService {
+
+    @Override
+    public Page<FactoryProduct> getPage(Map<String, Object> condition) {
+
+        IWrapper<FactoryProduct> wrapper = IWrapper.getWrapper(condition);
+
+        return page(condition, wrapper);
+    }
+
+    @Override
+    public void add(FactoryProductVo factoryProductVo) {
+        save(factoryProductVo);
+    }
+
+    @Override
+    public void edit(FactoryProductVo factoryProductVo) {
+        updateById(factoryProductVo);
+    }
+
+    @Override
+    public void delete(FactoryProductVo factoryProductVo) {
+        removeById(factoryProductVo.getId());
+    }
+
+}