Parcourir la source

基站注册同步到云端

yang il y a 3 ans
Parent
commit
a723ebf1eb

+ 5 - 0
huimv-goldpig/huimv-goldpig-eartag/src/main/java/com/huimv/eartag/controller/BaseFloorController.java

@@ -53,6 +53,7 @@ public class BaseFloorController {
     }
 
 
+    
     @GetMapping("/remove")
     public Result remove(@RequestParam(name = "ids") List<Integer> ids){
 
@@ -65,6 +66,8 @@ public class BaseFloorController {
         return new Result(10000,"删除成功",true);
     }
 
+    
+    
 
     @PostMapping("/page")
     public Result page(@RequestBody Map map){
@@ -72,6 +75,8 @@ public class BaseFloorController {
 
     }
 
+    
+    
     @GetMapping("/list")
     public Result page(@RequestParam(name = "farmId") Integer farmId){
         List<BaseFloor> farmList = baseFloorService.list(new QueryWrapper<BaseFloor>().eq("farm_id", farmId));

+ 3 - 1
huimv-goldpig/huimv-goldpig-eartag/src/main/java/com/huimv/eartag/controller/BasePigpenController.java

@@ -45,11 +45,13 @@ public class BasePigpenController {
 
         basePigpen.setCreatTime(new Date());
         basePigpen.setCreatUser(userId);
-        basePigpen.setFarmCode(basePigpen.getFarmId()+"");
+        basePigpen.setFarmCode(basePigpen.getFarmId()+"");   //farm_id
         basePigpenService.save(basePigpen);
         return new Result(10000,"添加成功",true);
     }
 
+
+
     @PostMapping("/update")
     public Result update(@RequestBody BasePigpen basePigpen){
 

+ 176 - 2
huimv-goldpig/huimv-goldpig-eartag/src/main/java/com/huimv/eartag/controller/CollectorRegisterController.java

@@ -1,18 +1,35 @@
 package com.huimv.eartag.controller;
 
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.huimv.admin.entity.Group;
+import com.huimv.admin.entity.User;
 import com.huimv.common.token.TokenSign;
 import com.huimv.common.utils.Result;
 import com.huimv.common.utils.ResultCode;
 import com.huimv.eartag.entity.BasePigpen;
 import com.huimv.eartag.entity.CollectorRegister;
+import com.huimv.eartag.entity.EartagData;
+import com.huimv.eartag.entity.dto.CollectorRegisterParam;
+import com.huimv.eartag.mapper.EartagDataMapper;
 import com.huimv.eartag.service.ICollectorRegisterService;
+import com.huimv.eartag.service.IEartagDataService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.RestTemplate;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -31,10 +48,57 @@ public class CollectorRegisterController {
     @Autowired
     private ICollectorRegisterService collectorRegisterService;
 
+
+    @Autowired
+    private IEartagDataService iEartagDataService;
+
+
+
+
+    //添加接口没有什么特殊  就是直接同步到注册中心
     @PostMapping("/add")
     public Result add(@RequestBody CollectorRegister collectorRegister){
-
-//        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+     //添加采集器的时候 需要在省平台也添加一份   只需要机器编码和设备ID就可以哦
+     //首先需要拿token   拿到token  同步到云服务
+        RestTemplate restTemplate = new RestTemplate();
+        //这个后面粗腰换的拉
+        String url = "http://47.98.40.154:8256/login";
+        //请求参数JOSN类型
+        JSONObject postData = new JSONObject();
+        postData.put("account", "admin");
+        postData.put("password", "123456");
+        JSONObject json = restTemplate.postForEntity(url, postData, JSONObject.class).getBody();
+        System.out.println(json);
+
+        if( (int)json.get("code") !=200){
+            System.out.println("同步到云端失败,请联系管理员");
+             //同步失败
+            new Result( 0,"同步到云端失败,无法添加,请联系管理员处理",false    );
+        }
+        //关于设备得机器编码重复的问题  每个牧场分配不同的号段  这里就不做校验了
+        // 给 注册中心的的重要参数就是编码   添加到注册中心
+        RestTemplate restTemplateAddController = new RestTemplate();
+        //放置   tokrn 到  header
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Authorization", "Bearer " + json.get("data"));
+        headers.add("Content-Type", "application/json");
+
+        Map<String, Object> requestBody = new HashMap<>(8);
+        requestBody.put("registerTime",  new Date() );
+        requestBody.put("deviceCode", collectorRegister.getDeviceCode() );
+        requestBody.put("penName", collectorRegister.getPenName());
+        requestBody.put("pigpenId", collectorRegister.getPigpenId() );
+        requestBody.put("port", collectorRegister.getPort());
+        requestBody.put("registeCode", collectorRegister.getRegisteCode() );
+        requestBody.put("serverIp", collectorRegister.getServerIp() );
+        requestBody.put("stage", collectorRegister.getStage());
+        requestBody.put("unitId", collectorRegister.getUnitId() );
+        requestBody.put("unitName", collectorRegister.getUnitName());
+        HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(requestBody, headers);
+
+        String body = restTemplate.postForEntity("http://47.98.40.154:8256/collectorRegister/add", httpEntity, String.class).getBody();
+        System.out.println(body);
+        //Integer userId = TokenSign.getMemberIdByJwtToken(request);
 
         collectorRegister.setRegisterTime(new Date());
         collectorRegisterService.save(collectorRegister);
@@ -42,6 +106,84 @@ public class CollectorRegisterController {
     }
 
 
+
+    //删除可以不用同步的 实际上
+    @PostMapping("/delete")
+    public Result delete(@RequestBody     List<Integer> ids) {
+        if (ids == null || ids.size() == 0){
+            return new Result(10000,"请选择设备",false);
+        }
+
+        //设备数据不会上传到注册中心  所以删除应该没有问题
+        RestTemplate restTemplate = new RestTemplate();
+        //这个后面粗腰换的拉
+        String url = "http://47.98.40.154:8256/login";
+        //请求参数JOSN类型
+        JSONObject postData = new JSONObject();
+        postData.put("account", "admin");
+        postData.put("password", "123456");
+        JSONObject json = restTemplate.postForEntity(url, postData, JSONObject.class).getBody();
+        System.out.println(json);
+        if( (int)json.get("code") !=200){
+            System.out.println("同步到云端失败,请联系管理员");
+            //同步失败
+            new Result( 0,"同步到云端失败,删除,请联系管理员处理",false    );
+        }
+
+        //关于设备得机器编码重复的问题  每个牧场分配不同的号段  这里就不做校验了
+        // 给 注册中心的的重要参数就是编码   添加到注册中心
+        //放置   tokrn 到  header
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Authorization", "Bearer " + json.get("data"));
+        headers.add("Content-Type", "application/json");
+        Map<String, Object> requestBody = new HashMap<>(8);
+        HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(requestBody, headers);
+         //删除同步到云端
+        String body = restTemplate.postForEntity("http://47.98.40.154:8256/collectorRegister/delete", ids, String.class).getBody();
+        System.out.println(body);
+
+        for (Integer id : ids) {
+            CollectorRegister collectorRegisterEntity= collectorRegisterService.getById(id);
+            String deviceCode = collectorRegisterEntity.getDeviceCode();
+            int count = iEartagDataService.count(Wrappers.<EartagData>lambdaQuery().eq(EartagData::getDeviceCode, deviceCode));
+            if (count > 0){
+                return new Result(10000,"删除失败,设备号为"+collectorRegisterEntity.getDeviceCode()+"的设备下有未清理耳标",false);
+
+            }
+        }
+        collectorRegisterService.removeByIds(ids);
+        return new Result(10000,"删除成功",true);
+    }
+
+
+
+
+
+
+    public static void main(String[] args) {
+
+        RestTemplate restTemplate = new RestTemplate();
+        String url = "http://47.98.40.154:8256/login";
+        //请求参数JOSN类型
+        JSONObject postData = new JSONObject();
+        postData.put("account", "admin");
+        postData.put("password", "123456");
+        JSONObject json = restTemplate.postForEntity(url, postData, JSONObject.class).getBody();
+        System.out.println(json);
+        if( (int)json.get("code") ==200){
+            System.out.println("同步到云端失败,请联系管理员");
+        }
+
+    }
+
+
+
+
+
+
+
+
+
     @PostMapping("/update")
     public Result update(@RequestBody  CollectorRegister collectorRegister){
         collectorRegisterService.updateById(collectorRegister);
@@ -49,18 +191,42 @@ public class CollectorRegisterController {
     }
 
 
+
+
+
+
     @GetMapping("/remove")
     public Result remove(@RequestParam(name = "ids") List<Integer> ids){
         collectorRegisterService.removeByIds(ids);
         return new Result(10000,"删除成功",true);
     }
 
+/*
 
     @PostMapping("/page")
     public Result page(@RequestBody Map map){
         return collectorRegisterService.pageAll(map);
 
     }
+*/
+
+
+
+
+    //查询接口已经完成  也没有什么特别的
+    //添加 根据farmID  查询属于这个牧场的采集器   加一个条件就行了
+    @GetMapping("/page")
+    public Result page(CollectorRegisterParam collectorRegisterParam) {
+        Result page = collectorRegisterService.page(collectorRegisterParam);
+        return  page;
+    }
+
+
+
+
+
+
+
 
     @GetMapping("/list")
     public Result page(@RequestParam(name = "farmId") Integer farmId){
@@ -69,6 +235,14 @@ public class CollectorRegisterController {
 
     }
 
+
+
+
+
+
+
+
+
     @GetMapping("/listCount")
     public Result listCount(@RequestParam(name = "farmId") Integer farmId){
 

+ 154 - 0
huimv-goldpig/huimv-goldpig-eartag/src/main/java/com/huimv/eartag/entity/dto/CollectorRegisterParam.java

@@ -0,0 +1,154 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package com.huimv.eartag.entity.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.sun.istack.NotNull;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
+
+/**
+* 设备管理参数类
+ *
+ * @author yinhao
+ * @date 2021-08-19 09:43:52
+*/
+@Data
+public class CollectorRegisterParam   {
+
+    /**
+     * 记录id(主键)
+     */
+    private Integer id;
+
+    /**
+     * 组织id
+     */
+    private Long orgId;
+
+    /**
+     * 组织名称
+     */
+    private String orgName;
+
+    /**
+     * 设备编码
+     */
+    private String deviceCode;
+
+    /**
+     * 盒子的芯片编码
+     */
+
+    private String registeCode;
+
+    /**
+     * 牧场编码
+     */
+    private String farmCode;
+
+    /**
+     * 牧场名称
+     */
+    private String farmName;
+
+    /**
+     * 动物种类
+     */
+    private Integer typeF;
+
+    /**
+     * 阶段
+     */
+
+    private Integer stage;
+
+    /**
+     * 猪舍id
+     */
+
+    private Integer pigpenId;
+
+    /**
+     * 栋舍名称
+     */
+
+    private String penName;
+
+    /**
+     * 单元id
+     */
+
+    private Integer unitId;
+
+    /**
+     * 单元名称
+     */
+
+    private String unitName;
+
+    /**
+     * 上传服务器地址
+     */
+    private String serverIp;
+
+    /**
+     * 端口
+     */
+    private Integer port;
+
+    /**
+     * 注册时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date registerTime;
+
+    /**
+     * 最后上传时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date lastTime;
+
+    /**
+     * 0:正常,1:网络异常,2:采集异常,3:注销
+     */
+    private Integer canStatus;
+
+
+    /**
+     * 0:正常,1:网络异常,2:采集异常,3:注销
+     */
+    private Integer pageSize;
+
+
+    private Integer pageNo;
+
+
+
+
+
+}

+ 15 - 0
huimv-goldpig/huimv-goldpig-eartag/src/main/java/com/huimv/eartag/service/ICollectorRegisterService.java

@@ -2,7 +2,9 @@ package com.huimv.eartag.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.huimv.common.utils.Result;
+
 import com.huimv.eartag.entity.CollectorRegister;
+import com.huimv.eartag.entity.dto.CollectorRegisterParam;
 
 import java.util.Map;
 
@@ -19,4 +21,17 @@ public interface ICollectorRegisterService extends IService<CollectorRegister> {
     Result pageAll(Map map);
 
     Result listCount(Integer farmId);
+
+
+
+    Result  page(CollectorRegisterParam collectorRegisterParam);
+
+
+
+
+
+
+
+
+
 }

+ 41 - 3
huimv-goldpig/huimv-goldpig-eartag/src/main/java/com/huimv/eartag/service/impl/CollectorRegisterServiceImpl.java

@@ -1,20 +1,26 @@
 package com.huimv.eartag.service.impl;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.api.R;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huimv.common.utils.PageFactory;
 import com.huimv.common.utils.Result;
 import com.huimv.common.utils.ResultCode;
 import com.huimv.eartag.entity.BasePigpen;
 import com.huimv.eartag.entity.CollectorRegister;
+import com.huimv.eartag.entity.dto.CollectorRegisterParam;
 import com.huimv.eartag.mapper.CollectorRegisterMapper;
 import com.huimv.eartag.service.ICollectorRegisterService;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -40,8 +46,6 @@ public class CollectorRegisterServiceImpl extends ServiceImpl<CollectorRegisterM
         String pigpenId =(String)map.get("pigpenId");
         String stage =(String)map.get("stage");
 
-
-
         QueryWrapper<CollectorRegister> wrapper = new QueryWrapper<>();
         wrapper.like(StringUtils.isNotBlank(searchName),"device_code",searchName);
         wrapper.eq("pigpen_id",pigpenId);
@@ -55,10 +59,44 @@ public class CollectorRegisterServiceImpl extends ServiceImpl<CollectorRegisterM
         return new Result(ResultCode.SUCCESS,page);
     }
 
+
     @Override
-    public Result listCount(Integer farmId) {
+    public Result page(CollectorRegisterParam collectorRegisterParam) {
+
+        QueryWrapper<CollectorRegister> queryWrapper = new QueryWrapper<>();
+            if (ObjectUtil.isNotEmpty(collectorRegisterParam.getRegisterTime())) {
+                Date registerTime = collectorRegisterParam.getRegisterTime();
+                DateTime startTime = DateUtil.beginOfDay(registerTime);
+                DateTime endTime = DateUtil.endOfDay(registerTime);
+                queryWrapper.lambda().ge(CollectorRegister::getRegisterTime,startTime);
+                queryWrapper.lambda().le(CollectorRegister::getRegisterTime,endTime);
+            }
+
+            // 根据设备编码查询
+            if (ObjectUtil.isNotEmpty(collectorRegisterParam.getPigpenId())) {
+                queryWrapper.lambda().like(CollectorRegister::getPigpenId, collectorRegisterParam.getPigpenId());
+            }
+
+            // 根据设备编码查询
+            if (ObjectUtil.isNotEmpty(collectorRegisterParam.getDeviceCode())) {
+                queryWrapper.lambda().like(CollectorRegister::getDeviceCode, collectorRegisterParam.getDeviceCode());
+            }
+            // 根据状态
+            if (ObjectUtil.isNotEmpty(collectorRegisterParam.getCanStatus())) {
+                queryWrapper.lambda().like(CollectorRegister::getCanStatus, collectorRegisterParam.getCanStatus());
+            }
+
+
+              Page<CollectorRegister> page = page(new Page<>(collectorRegisterParam.getPageNo(), collectorRegisterParam.getPageSize()), queryWrapper);
+
+            return new Result(ResultCode.SUCCESS,page);
+    }
 
 
+
+    @Override
+    public Result listCount(Integer farmId) {
+
         LambdaQueryWrapper<CollectorRegister> lambdaQuery = Wrappers.lambdaQuery();
         lambdaQuery.in(CollectorRegister::getFarmCode, farmId);
 

+ 9 - 4
huimv-goldpig/huimv-goldpig-eartag/src/main/resources/application-dev.yml

@@ -17,8 +17,13 @@ spring:
     database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
     open-in-view: true
 
-    #  redis:
-#    database: 0
+
+  redis:
+    host: 122.112.224.199
+    port: 6379
+    password: hm123456
+#      redis:
+#    database: 1
 #    host: 119.3.84.55
 #    port: 6379
 #    password: hm123456
@@ -53,8 +58,8 @@ spring:
 #      ddl-auto: update
 #    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
 #    open-in-view: true
-
-    #  redis:
+#
+#      redis:
 #    database: 0
 #    host: 119.3.84.55
 #    port: 6379

+ 9 - 0
huimv-goldpig/huimv-goldpig-eartag/src/main/resources/com/huimv/eartag/mapper/EartagDataMapperr.xml

@@ -12,5 +12,14 @@
       ${ew.customSqlSegment}
     ) a
         GROUP BY DATE_FORMAT( a.`time`  ,'%Y-%m-%d %H:%i');
+
     </select>
+
 </mapper>
+
+
+
+
+
+
+