Pārlūkot izejas kodu

从养殖云获取存栏数据

zhuoning 2 gadi atpakaļ
vecāks
revīzija
8571f49267

+ 31 - 0
huimv-cattle/src/main/java/com/huimv/cattle/config/RestTemplateConfig.java

@@ -0,0 +1,31 @@
+package com.huimv.cattle.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @Project : huimv-env-platform
+ * @Package : ${}
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2022/11/2
+ **/
+@Configuration//加上这个注解作用,可以被Spring扫描
+public class RestTemplateConfig implements WebMvcConfigurer {
+    /**
+     * 创建RestTemplate对象,将RestTemplate对象的生命周期的管理交给Spring
+     */
+    @Bean
+    public RestTemplate restTemplate(){
+        // RestTemplate restTemplate = new RestTemplate();
+        //设置中文乱码问题方式一
+        // restTemplate.getMessageConverters().add(1,new StringHttpMessageConverter(Charset.forName("UTF-8")));
+        // 设置中文乱码问题方式二
+        // restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8)); // 支持中文编码
+        return new RestTemplate();
+    }
+
+}

+ 2 - 1
huimv-cattle/src/main/java/com/huimv/cattle/controller/DataSourceController.java

@@ -1,6 +1,7 @@
 package com.huimv.cattle.controller;
 
 
+import com.huimv.cattle.pojo.DataSource;
 import com.huimv.cattle.service.DataSourceService;
 import com.huimv.common.utils.Result;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,7 +38,7 @@ public class DataSourceController {
     }
 
     @PostMapping("/getDataSourceStatus")
-    public int getDataSourceStatus() throws ParseException {
+    public DataSource getDataSourceStatus() throws ParseException {
         return dataSourceService.getDataSourceStatus();
     }
 }

+ 57 - 1
huimv-cattle/src/main/java/com/huimv/cattle/controller/StockController.java

@@ -1,13 +1,24 @@
 package com.huimv.cattle.controller;
 
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.cattle.pojo.DataSource;
+import com.huimv.cattle.service.DataSourceService;
 import com.huimv.cattle.service.StockService;
 import com.huimv.common.utils.Result;
 import com.huimv.common.utils.ResultCode;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.RestTemplate;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -24,10 +35,55 @@ import java.util.Map;
 public class StockController {
     @Autowired
     private StockService stockService;
+    @Resource
+    private DataSourceService dataSourceService;
+    @Resource
+    private RestTemplate restTemplate;
 
     @PostMapping("/getStock")
     public Result list(HttpServletRequest httpServletRequest,@RequestBody Map<String,String> paramsMap) {
-        return stockService.getStock(httpServletRequest,paramsMap);
+        //        //读取模式切换
+        DataSource dataSource = dataSourceService.getDataSourceStatus();
+        if (dataSource.getViewType() == 1) {
+            //view=1,显示县填写数据
+            return stockService.getStock(httpServletRequest,paramsMap);
+        } else {
+            //view=2,显示镇汇总数据
+            if (dataSource.getDsStatus() == 1) {
+                //status=1,显示镇汇总(手填)数据
+                return stockService.getStock(httpServletRequest,paramsMap);
+            } else {
+                //status=2,显示镇汇总(养殖云)数据
+                System.out.println("status=2,显示镇汇总(养殖云)数据");
+                return getStockFromBreedCloud(paramsMap);
+                //++++++++++++++++++++++++++++++++++++++++++++++++++
+            }
+        }
+    }
+
+    //从养殖云获取数据
+    private Result getStockFromBreedCloud(Map<String, String> paramsMap) {
+        HttpHeaders httpHeaders = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json;charset=UTF-8");
+        httpHeaders.setContentType(type);
+//        MultiValueMap<String, Object> map=new LinkedMultiValueMap<>();
+        HashMap<String, Object> map = new HashMap<>();
+        //这里提交的是区县编码或乡镇编码
+        map.put("farmCode", paramsMap.get("farmCode"));
+        HttpEntity<Map<String, Object>> objectHttpEntity = new HttpEntity<>(map, httpHeaders);
+        //读取真实数据
+        String remoteUrl = "http://123.60.134.84:10001/breed/api/v1.0.0/cattle/getStockByDivision";
+        ResponseEntity<String> entity = restTemplate.postForEntity(remoteUrl, objectHttpEntity, String.class);
+        if(entity.getStatusCode().toString().contains("200")){
+            String body = entity.getBody();
+            System.out.println(body);
+            JSONObject dataJo = JSON.parseObject(body).getJSONObject("data");
+            System.out.println("dataJo="+dataJo);
+            //, )
+            return new Result(ResultCode.SUCCESS,dataJo);
+        }else{
+            return new Result(ResultCode.FAIL,"调取远程数据出错.");
+        }
     }
 
     @PostMapping("/saveStock")

+ 1 - 0
huimv-cattle/src/main/java/com/huimv/cattle/mapper/xml/DataSourceMapper.xml

@@ -5,6 +5,7 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.huimv.cattle.pojo.DataSource">
         <id column="id" property="id" />
+        <result column="view_type" property="viewType" />
         <result column="ds_status" property="dsStatus" />
         <result column="farm_code" property="farmCode" />
     </resultMap>

+ 2 - 0
huimv-cattle/src/main/java/com/huimv/cattle/pojo/DataSource.java

@@ -24,6 +24,8 @@ public class DataSource implements Serializable {
       @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
+    private Integer viewType;
+
     private Integer dsStatus;
 
     private String farmCode;

+ 1 - 1
huimv-cattle/src/main/java/com/huimv/cattle/service/DataSourceService.java

@@ -19,6 +19,6 @@ public interface DataSourceService extends IService<DataSource> {
 
     Result setDataSouce(Map<String, String> paramsMap);
 
-    Integer getDataSourceStatus();
+    DataSource getDataSourceStatus();
 
 }

+ 13 - 5
huimv-cattle/src/main/java/com/huimv/cattle/service/impl/DataSourceServiceImpl.java

@@ -10,6 +10,7 @@ import com.huimv.common.utils.ResultCode;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -35,32 +36,39 @@ public class DataSourceServiceImpl extends ServiceImpl<DataSourceMapper, DataSou
 
     @Override
     public Result setDataSouce(Map<String, String> paramsMap) {
-        //
-        String datasourceStatus = "0";
+        //datasourceStatus
+        String datasourceStatus = "1";
         if (paramsMap.get("datasourceStatus") != null) {
             datasourceStatus = paramsMap.get("datasourceStatus");
         }
+        //viewType
+        String viewType = "1";
+        if (paramsMap.get("viewType") != null) {
+            viewType = paramsMap.get("viewType");
+        }
         QueryWrapper<DataSource> totalQueryWrapper = new QueryWrapper();
         DataSource dataSource = dataSourceMapper.selectOne(totalQueryWrapper);
         if (dataSource == null) {
             dataSource = new DataSource();
             dataSource.setDsStatus(Integer.parseInt(datasourceStatus));
+            dataSource.setViewType(Integer.parseInt(viewType));
             dataSourceMapper.insert(dataSource);
         } else {
             dataSource.setDsStatus(Integer.parseInt(datasourceStatus));
+            dataSource.setViewType(Integer.parseInt(viewType));
             dataSourceMapper.updateById(dataSource);
         }
         return new Result(ResultCode.SUCCESS);
     }
 
     @Override
-    public Integer getDataSourceStatus() {
+    public DataSource getDataSourceStatus() {
         QueryWrapper<DataSource> totalQueryWrapper = new QueryWrapper();
         DataSource dataSource = dataSourceMapper.selectOne(totalQueryWrapper);
         if (dataSource == null) {
-            return 0;
+            return null;
         } else {
-            return dataSource.getDsStatus();
+            return dataSource;
         }
     }
 }