Преглед на файлове

新建添加设备功能。

zhuoning преди 3 години
родител
ревизия
9c8cf13a5e

+ 3 - 4
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/controller/DeviceController.java

@@ -1,17 +1,16 @@
 package com.huimv.eartag2.manage.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.huimv.eartag2.common.utils.DateUtil;
 import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.common.utils.ResultCode;
 import com.huimv.eartag2.manage.service.ICacheService;
 import com.huimv.eartag2.manage.service.IDeviceService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.text.ParseException;
 

+ 60 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/controller/DeviceRegisterController.java

@@ -0,0 +1,60 @@
+package com.huimv.eartag2.manage.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.common.utils.ResultCode;
+import com.huimv.eartag2.manage.service.IDeviceRegisterService;
+import com.huimv.eartag2.manage.service.IDeviceService;
+import lombok.extern.slf4j.Slf4j;
+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 java.text.ParseException;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@RestController
+@RequestMapping(value = "/deviceRegister")
+@Slf4j
+public class DeviceRegisterController {
+    @Autowired
+    private IDeviceRegisterService deviceRegisterService;
+
+    @PostMapping("/addDevice")
+    public Result addDevice(String deviceCode, Integer deviceStatus, Integer activeStatus, String deviceAlias, String location, String remark, String farmId) throws ParseException {
+        log.info("farmId>>"+farmId);
+        log.info("deviceCode>>"+deviceCode);
+        log.info("deviceStatus>>"+deviceStatus);
+        log.info("activeStatus>>"+activeStatus);
+        //deviceStatus
+        if(deviceStatus == null){
+            //待机状态
+            deviceStatus = 0;
+        }
+        //activeStatus
+        if(activeStatus == null){
+            //未激活
+            activeStatus = 0;
+        }
+        //{添加设备}
+        return deviceRegisterService.addDevice(deviceCode,deviceStatus,activeStatus,deviceAlias,location,remark,farmId);
+    }
+
+    @PostMapping("/addDevice1")
+    public Result addDevice1(@RequestBody JSONObject json){
+        System.out.println("## json>>"+json);
+        String msg = "";
+        return new Result(ResultCode.SUCCESS,msg);
+    }
+
+
+}

+ 12 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/ICacheService.java

@@ -3,6 +3,7 @@ package com.huimv.eartag2.manage.service;
 import com.huimv.eartag2.common.dao.entity.EartarFarmAllStatusEntity;
 import com.huimv.eartag2.common.utils.Result;
 
+import java.util.List;
 import java.util.Map;
 
 public interface ICacheService {
@@ -17,4 +18,15 @@ public interface ICacheService {
 
     //
     void putFarmAllStatusCache(String farmId, EartarFarmAllStatusEntity newFarmAllStatusEntity);
+
+
+    boolean isExistDeviceCode(String deviceCode);
+
+    //
+    int isExistAllDeviceSet();
+
+    //
+    void putAllDeviceSet(List list);
+
+    void putAllDeviceSet(String deviceCode);
 }

+ 11 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IDeviceRegisterService.java

@@ -0,0 +1,11 @@
+package com.huimv.eartag2.manage.service;
+
+import com.huimv.eartag2.common.utils.Result;
+
+import java.text.ParseException;
+
+public interface IDeviceRegisterService {
+    //添加设备
+    Result addDevice(String deviceCode, Integer deviceStatus, Integer activeStatus, String deviceAlias, String location, String remark, String farmId) throws ParseException;
+
+}

+ 0 - 1
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IDeviceService.java

@@ -44,5 +44,4 @@ public interface IDeviceService {
     //分页查询列表
     Result listDeviceRegisterInPager(String farmId, String deviceCode, String alias, String startDate, String endDate, Integer activeStatus, Integer liveStatus, Integer pageNo, Integer pageSize);
 
-
 }

+ 32 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/CacheServiceImpl.java

@@ -8,6 +8,7 @@ import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -62,4 +63,35 @@ public class CacheServiceImpl implements ICacheService {
         allStatusMap.put("createDate",farmAllStatusEntity.getCreateDate());
         redisTemplate.opsForHash().putAll(BizConst.FARM_ALL_STATUS_PREFIX+farmId, allStatusMap);
     }
+
+    @Override
+    public boolean isExistDeviceCode(String deviceCode) {
+        String setKey = BizConst.SET_ALL_DEVICE_PREFIX;
+        System.out.println("## setKey>>"+setKey+", deviceCode>>"+deviceCode);
+        return redisTemplate.opsForSet().isMember(setKey, deviceCode);
+    }
+
+    @Override
+    public int isExistAllDeviceSet() {
+        String setKey = BizConst.SET_ALL_DEVICE_PREFIX;
+        Set<String> resultSet = redisTemplate.opsForSet().members(setKey);
+        return resultSet.size();
+    }
+
+    @Override
+    public void putAllDeviceSet(List list) {
+        String setKey = BizConst.SET_ALL_DEVICE_PREFIX;
+        for(int a=0;a<list.size();a++){
+            redisTemplate.opsForSet().add(setKey,list.get(a).toString());
+        }
+        //验证
+//        Set<String> resultSet = redisTemplate.opsForSet().members("setKey");
+//        System.out.println("# resultSet.toString()>>"+resultSet.toString());
+    }
+
+    @Override
+    public void putAllDeviceSet(String deviceCode){
+        String setKey = BizConst.SET_ALL_DEVICE_PREFIX;
+        redisTemplate.opsForSet().add(setKey,deviceCode);
+    }
 }

+ 83 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceRegisterServiceImpl.java

@@ -0,0 +1,83 @@
+package com.huimv.eartag2.manage.service.impl;
+
+import com.huimv.eartag2.common.dao.entity.EartagDeviceRegisterEntity;
+import com.huimv.eartag2.common.dao.repo.EartagDeviceRegisterRepo;
+import com.huimv.eartag2.common.utils.BizConst;
+import com.huimv.eartag2.common.utils.DateUtil;
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.common.utils.ResultCode;
+import com.huimv.eartag2.manage.service.ICacheService;
+import com.huimv.eartag2.manage.service.IDeviceRegisterService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+public class DeviceRegisterServiceImpl implements IDeviceRegisterService {
+    @Autowired
+    private EartagDeviceRegisterRepo deviceRegisterRepo;
+    @Autowired
+    private ICacheService cacheService;
+
+    @Override
+    public Result addDevice(String deviceCode, Integer deviceStatus, Integer activeStatus, String deviceAlias, String location, String remark, String farmId) throws ParseException {
+        DateUtil dateUtil = new DateUtil();
+        Date todayDate = dateUtil.getTodayDate();
+        Timestamp nowTimestamp = dateUtil.getTimestamp();
+
+        //判断是否存在相同的设备编码
+        if(isExistSameDevice(deviceCode)){
+            return new Result(BizConst.CODE_DEVICE_CODE_EXIST,BizConst.MSG_DEVICE_CODE_EXIST,false);
+        }
+        //
+        EartagDeviceRegisterEntity deviceRegisterEntity = new EartagDeviceRegisterEntity();
+        deviceRegisterEntity.setDeviceCode(deviceCode);
+        deviceRegisterEntity.setFarmId(farmId);
+        deviceRegisterEntity.setRegisterTime(nowTimestamp);
+        deviceRegisterEntity.setActiveStatus(activeStatus);
+        deviceRegisterEntity.setDeviceStatus(deviceStatus);
+        deviceRegisterEntity.setDeviceAlias(deviceAlias);
+        deviceRegisterEntity.setLocation(location);
+        deviceRegisterEntity.setRemark(remark);
+        deviceRegisterEntity.setCreateDate(new java.sql.Date(todayDate.getTime()));
+        deviceRegisterRepo.saveAndFlush(deviceRegisterEntity);
+        //加入缓存
+        cacheService.putAllDeviceSet(deviceCode);
+        return new Result(ResultCode.SUCCESS);
+    }
+
+    //
+    private Boolean isExistSameDevice(String deviceCode) {
+        int allDeviceSetSize = cacheService.isExistAllDeviceSet();
+        if(allDeviceSetSize == 0){
+            //{初始化集合}
+            initAllDeviceSet();
+        }
+        boolean isExist = cacheService.isExistDeviceCode(deviceCode);
+        return isExist;
+    }
+
+    private void initAllDeviceSet() {
+        List<Object[]> objectList = deviceRegisterRepo.getDeviceCodeFromDeviceRegister();
+        List list = new ArrayList();
+        for(int a=0;a<objectList.size();a++){
+            Object[] object = (Object[]) objectList.get(a);
+            list.add(object[0]);
+        }
+        System.out.println("list.toString()>>"+list.toString());
+        cacheService.putAllDeviceSet(list);
+    }
+}

+ 1 - 1
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceServiceImpl.java

@@ -264,7 +264,7 @@ public class DeviceServiceImpl implements IDeviceService {
         Pageable pageable = PageRequest.of(pageNo - 1, pageSize);
         return new Result(ResultCode.SUCCESS, deviceRegisterRepo.findAll(sf, pageable));
     }
-
+    
     /**
      * @Method      : listOnlineDevice
      * @Description : 

+ 62 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/test/java/com/huimv/eartag2/manage/utils/DeviceCodeTest.java

@@ -0,0 +1,62 @@
+package com.huimv.eartag2.manage.utils;
+
+import com.huimv.eartag2.common.utils.MathUtil;
+import org.junit.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@SpringBootTest
+public class DeviceCodeTest {
+
+    @Test
+    public void test1() throws UnsupportedEncodingException {
+        String deviceCode = "202007239999869";
+        System.out.println("<test1>.deviceCode>>"+deviceCode);
+        StringBuilder sb = new StringBuilder();
+        //10万设备编号
+        int eartagMax = 100000;
+        for(int a=0;a<eartagMax;a++){
+            sb.append(deviceCode);
+        }
+        System.out.println("## sb.length>>"+sb.length());
+        byte[] sbBytes = sb.toString().getBytes("UTF-8");
+        System.out.println("## 字节数>>"+sbBytes.length);
+        System.out.println("## K字节数>>"+MathUtil.formatScale(String.valueOf(sbBytes.length),"1024",3)+" k");
+        System.out.println("## M字节数>>"+MathUtil.formatScale(String.valueOf(sbBytes.length),String.valueOf(1024*1024),3)+" m");
+//        deviceCode = "你好";
+//        byte[] bytes = deviceCode.getBytes("UTF-8");
+//        int sizeInBytes = bytes.length;
+//        System.out.println("## 字节数>>"+sizeInBytes);
+    }
+
+
+    @Test
+    public void test2() throws UnsupportedEncodingException {
+        String earmark = "122083123610099";
+        System.out.println("<test1>.earmark>>"+earmark);
+        StringBuilder sb = new StringBuilder();
+        //10万耳标编号
+        int earmarkMax = 100000;
+        for(int a=0;a<earmarkMax;a++){
+            sb.append(earmark);
+        }
+        System.out.println("## sb.length>>"+sb.length());
+        byte[] sbBytes = sb.toString().getBytes("UTF-8");
+        System.out.println("## 字节数>>"+sbBytes.length);
+        System.out.println("## K字节数>>"+MathUtil.formatScale(String.valueOf(sbBytes.length),"1024",3)+" k");
+        System.out.println("## M字节数>>"+MathUtil.formatScale(String.valueOf(sbBytes.length),String.valueOf(1024*1024),3)+" m");
+//        deviceCode = "你好";
+//        byte[] bytes = deviceCode.getBytes("UTF-8");
+//        int sizeInBytes = bytes.length;
+//        System.out.println("## 字节数>>"+sizeInBytes);
+    }
+}