فهرست منبع

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	huimv-farm-environ/src/main/resources/com/huimv/environ/eco/mapper/EcoDeviceFlowMapper.xml
wwh 2 سال پیش
والد
کامیت
f9cd73d3c6

+ 1 - 1
huimv-farm-environ/pom.xml

@@ -41,7 +41,7 @@
         <dependency>
             <groupId>com.huimv</groupId>
             <artifactId>huimv-common</artifactId>
-            <version>0.0.6-SNAPSHOT</version>
+            <version>0.0.13-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>com.dahuatech.icc</groupId>

+ 3 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/eco/mapper/EcoDeviceFlowMapper.java

@@ -47,4 +47,7 @@ public interface EcoDeviceFlowMapper extends BaseMapper<EcoDeviceFlow> {
 
 
     LastFlowDto getUnitLastFlow(@Param("deviceCode") String deviceCode);
+
+    //读取烘干数据
+    EcoDeviceFlow getLastDryDeviceFlow(@Param("dryDeviceCode") String deviceCode, @Param("startTime") Date startTime,@Param("endTime") String endTime);
 }

+ 3 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/eco/mapper/EcoDeviceMapper.java

@@ -25,4 +25,7 @@ public interface EcoDeviceMapper extends BaseMapper<EcoDevice> {
 
     @Select("SELECT ed.*,bp.pigpen_name FROM `eco_device` ed LEFT JOIN  `base_pigpen` bp ON ed.unit_id=bp.id")
     List<Map> selectList4();
+
+    @Select("SELECT ed.*,bp.pigpen_name FROM `eco_device` ed LEFT JOIN  `base_pigpen` bp ON ed.unit_id=bp.id WHERE ed.device_type=#{dryDeivceType}")
+    List<Map> getDryDevice(@Param("dryDeivceType") int dryDeivceType);
 }

+ 80 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/eco/schedule/ScheduleTask.java

@@ -52,9 +52,59 @@ public class ScheduleTask {
     @Value("${url.environ.device.service}")
     private String URL_ENVIRON_DEVICE_SERVICE;
 //    private static String URL = "http://www.0531yun.com/app/GetDeviceData";
+//    @Value("${dry.deviceCode}")
+//    private String dryDeviceCode;
 
     @Scheduled(cron = "0 0/5 * * * ?")  //每5分钟执行一次
 //    @Scheduled(cron = "*/5 * * * * ?")  //每10秒钟执行一次
+    public void autoRunDryList() throws ParseException {
+        DateUtil dateUtil = new DateUtil();
+        System.out.println("开始取数:" + dateUtil.fromLongToDate(new Date().getTime(), "yyyy-MM-dd HH:mm:ss.SSS"));
+        //查询所有设备
+//        List<Map> ecoDeviceList = ecoDeviceService.getDeviceList2();
+        List<Map> ecoDeviceList = ecoDeviceService.getDryDeviceByDeviceType();
+        System.out.println("ecoDeviceList = " + ecoDeviceList);
+        System.out.println("ecoDeviceList.size=" + ecoDeviceList.size());
+        if (ecoDeviceList.size() == 0) {
+            System.out.println("设备记录为空.");
+        } else {
+            for (int a = 0; a < ecoDeviceList.size(); a++) {
+                System.out.println("a========================================================================================================" + a);
+                Map deviceMap = ecoDeviceList.get(a);
+                Integer farmId = Integer.parseInt(deviceMap.get("farm_id") + "");
+                String dryDeviceCode = deviceMap.get("device_code") + "";
+                System.out.println("dryDeviceCode=" + dryDeviceCode);
+                System.out.println("id=" + deviceMap.get("id"));
+                //读取高温阈值数据
+                JSONObject thresholdJo = getThresholdURL(farmId);
+//                JSONObject thresholdJo = getThresholdURL2(farmId);
+                System.out.println("调取牧场[" + farmId + "]服务获取阈值接口:" + thresholdJo);
+                if (thresholdJo == null) {
+                    log.error("thresholdJo======" + thresholdJo);
+                    log.error("牧场[" + farmId + "]暂时没有洗消烘干温度设置.");
+                    continue;
+                }
+                Date todayTime = dateUtil.getTodayDateTime();
+                //读取最新一条烘干记录
+                System.out.println("最近一条烘干记录 dryDeviceCode=" + dryDeviceCode);
+                System.out.println("最近一条烘干记录 todayTime=" + todayTime);
+                String datetime = dateUtil.formatDateTime(todayTime);
+                System.out.println("最近一条烘干记录 datetime=" + datetime);
+                EcoDeviceFlow ecoDeviceFlow = ecoDeviceFlowService.getLastDryDeviceFlow(dryDeviceCode, datetime);
+                //新建烘干记录
+                if (ecoDeviceFlow != null) {
+                    String temp = ecoDeviceFlow.getId1Value();
+                    System.out.println(" DD temp=" + temp);
+                    ecoDryListService.saveDryList(deviceMap, temp, thresholdJo, todayTime);
+                }
+            }
+        }
+        System.out.println("完成取数:" + dateUtil.fromLongToDate(new Date().getTime(), "yyyy-MM-dd HH:mm:ss.SSS"));
+    }
+
+    //以下是旧的代码
+//    @Scheduled(cron = "0 0/5 * * * ?")  //每5分钟执行一次
+//    @Scheduled(cron = "*/5 * * * * ?")  //每10秒钟执行一次
     public void getDeviceFlow() throws ParseException {
         DateUtil dateUtil = new DateUtil();
         System.out.println("开始取数:" + dateUtil.fromLongToDate(new Date().getTime(), "yyyy-MM-dd HH:mm:ss.SSS"));
@@ -128,6 +178,36 @@ public class ScheduleTask {
         return thresholdJo.getJSONObject("data");
     }
 
+    /**
+     * @Method : getThresholdURL2
+     * @Description :
+     * @Params : [farmId]
+     * @Return : com.alibaba.fastjson.JSONObject
+     * @Author : ZhuoNing
+     * @Date : 2022/12/6
+     * @Time : 20:12
+     */
+    private JSONObject getThresholdURL2(Integer farmId) {
+        //        设置请求头,请求类型为json
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+//        设置请求参数
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("farmId", farmId);
+        //用HttpEntity封装整个请求报文
+        HttpEntity<HashMap<String, Object>> request = new HttpEntity<>(map, headers);
+        //读取真实数据
+//        String remoteUrl = "http://192.168.1.67:8010/produce/threshold/getThresholdByFarmId";
+        String url = "http://localhost:10052/threshold/getThresholdByFarmId";
+        System.out.println("url=" + url);
+        JSONObject resultJo = restTemplate.postForObject(url, request, JSONObject.class);
+        System.out.println("resultJo=" + resultJo);
+        if (resultJo.getInteger("code") != 10000) {
+            return null;
+        }
+        return resultJo.getJSONObject("data");
+    }
+
     //获取远程数据
     private String getDeviceFlowFromRemoteURL(String userId, String groupId) {
         //请求头

+ 2 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/EcoDeviceFlowService.java

@@ -32,5 +32,7 @@ public interface EcoDeviceFlowService extends IService<EcoDeviceFlow> {
 
     Result getUnitLastFlow(Map<String, String> paramsMap);
 
+    EcoDeviceFlow getLastDryDeviceFlow(String dryDeviceCode, String todayTime) throws ParseException;
+
 //    Result getFlowList(Map<String, String> paramsMap);
 }

+ 2 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/EcoDeviceService.java

@@ -25,4 +25,6 @@ public interface EcoDeviceService extends IService<EcoDevice> {
     Result list(Map<String,String> paramsMap);
 
     List<Map> getDeviceList2();
+
+    List<Map> getDryDeviceByDeviceType();
 }

+ 3 - 1
huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/EcoDryListService.java

@@ -20,7 +20,9 @@ import java.util.Map;
  */
 public interface EcoDryListService extends IService<EcoDryList> {
 
-    void saveDryList(Map deviceMap, JSONObject dataJo, JSONObject thresholdJo, Date todayTime) throws ParseException;
+    void saveDryList(Map deviceMap, String temp, JSONObject thresholdJo, Date todayTime) throws ParseException;
+
+    void saveDryList(Map deviceMap,JSONObject dataJo, JSONObject thresholdJo, Date todayTime) throws ParseException;
 
     void sendLowDryTempAlarm(String alarmInfo, String farmId, String warningTime, String uploadTime);
 

+ 12 - 1
huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/impl/EcoDeviceFlowServiceImpl.java

@@ -10,7 +10,6 @@ import com.huimv.environ.eco.entity.EcoDeviceFlow;
 import com.huimv.environ.eco.entity.dto.EcoDeviceDto;
 import com.huimv.environ.eco.entity.dto.LastFlowDto;
 import com.huimv.environ.eco.mapper.EcoDeviceFlowMapper;
-import com.huimv.environ.eco.mapper.EcoDeviceMapper;
 import com.huimv.environ.eco.service.EcoDeviceFlowService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huimv.environ.env.utils.DateUtil;
@@ -201,6 +200,18 @@ public class EcoDeviceFlowServiceImpl extends ServiceImpl<EcoDeviceFlowMapper, E
         return new Result(ResultCode.SUCCESS,lastUnitFlow);
     }
 
+    @Override
+    public EcoDeviceFlow getLastDryDeviceFlow(String dryDeviceCode, String endTime) throws ParseException {
+        DateUtil dateUtil = new DateUtil();
+        System.out.println(" AA endTime="+endTime);
+        Date startTime = dateUtil.getDateBeforeMinute(endTime,5);
+        System.out.println(" BB beforeTime="+dateUtil.formatDateTime(startTime));
+        //
+        EcoDeviceFlow ecoDeviceFlow = ecoDeviceFlowMapper.getLastDryDeviceFlow(dryDeviceCode,startTime,endTime);
+        System.out.println("CC 取出记录="+ecoDeviceFlow);
+        return ecoDeviceFlow;
+    }
+
 //    @Override
 //    public Result getFlowList(Map<String, String> paramsMap) {
 //        String pigpenId = paramsMap.get("pigpenId");

+ 6 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/impl/EcoDeviceServiceImpl.java

@@ -130,6 +130,12 @@ public class EcoDeviceServiceImpl extends ServiceImpl<EcoDeviceMapper, EcoDevice
         return ecoDeviceMapper.selectList4();
     }
 
+    @Override
+    public List<Map> getDryDeviceByDeviceType() {
+        int dryDeivceType = 2;
+        return ecoDeviceMapper.getDryDevice(dryDeivceType);
+    }
+
 
     //内部关键字枚举
     public enum DeviceType{

+ 71 - 0
huimv-farm-environ/src/main/java/com/huimv/environ/eco/service/impl/EcoDryListServiceImpl.java

@@ -45,6 +45,77 @@ public class EcoDryListServiceImpl extends ServiceImpl<EcoDryListMapper, EcoDryL
     private String URL_WARNING_SERVICE;
 
     @Override
+    public void saveDryList(Map deviceMap, String temp, JSONObject thresholdJo, Date todayTime) throws ParseException {
+        System.out.println("开始保存saveDryList()");
+        if (StringUtils.isBlank(temp)) {
+            temp = "0";
+        }
+        //Debug:temp
+        temp = "40";
+        System.out.println(">> temp=" + temp);
+        //烘干温度(分钟)
+        String dryTem = "0";
+        System.out.println(">> dryTem=" + dryTem);
+        //烘干时间过短报警时长(分钟)
+        String dryMin = "0";
+        //一次烘干持续时间(分钟)
+        String dryDuration = "0";
+        //常温阈值
+        String dryNormalTemp = "0";
+        System.out.println("thresholdJo>>>>>>>>>>>>>>>>>>>>>>>"+thresholdJo);
+        if (thresholdJo != null) {
+            dryTem = thresholdJo.getString("dryTem");
+            dryMin = thresholdJo.getString("dryMin");
+            dryDuration = thresholdJo.getString("dryDuration");
+            dryNormalTemp = thresholdJo.getString("dryNormalTemp");
+        }
+        String farmId = thresholdJo.getString("farmId");
+        DateUtil dateUtil = new DateUtil();
+        int deviceType = (int) deviceMap.get("device_type");
+        String deviceCode = deviceMap.get("device_code") + "";
+        System.out.println("deviceType=" + deviceType);
+        String location = deviceMap.get("pigpen_name") + "";
+        //保存烘干设备记录列表
+        if (deviceType == 2) {
+            System.out.println("1.");
+            //判断上次间隔时间(读取该设备上次添加时间),超过一次洗消烘干的标准周期时间
+            if (isOverdue(deviceCode, farmId, todayTime, dryDuration)) {
+                System.out.println("1.1");
+                System.out.println("temp=" + temp);
+                System.out.println("dryTem=" + dryTem);
+                //超过2次烘干之间的规定间隔时间,判断是否高温(高温且超过一次烘干持续时间需要进行烘干高温记录)
+//                if (new BigDecimal(temp).compareTo(new BigDecimal(dryTem)) != -1) {
+                if (Float.parseFloat(temp) >= Float.parseFloat(dryTem)) {
+                    System.out.println("1.2");
+                    EcoDryList ecoDryList = new EcoDryList();
+                    ecoDryList.setDeviceCode(deviceCode);
+                    ecoDryList.setLocation(location);
+                    ecoDryList.setStandardStatus(1);
+                    ecoDryList.setAddTime(todayTime);
+                    ecoDryList.setFarmId(Integer.parseInt(farmId));
+                    ecoDryListMapper.insert(ecoDryList);
+                    System.out.println("保存");
+                } else {
+                    System.out.println("1.3");
+                    EcoDryList ecoDryList = new EcoDryList();
+                    ecoDryList.setDeviceCode(deviceCode);
+                    ecoDryList.setLocation(location);
+                    ecoDryList.setStandardStatus(0);
+                    ecoDryList.setAddTime(todayTime);
+                    ecoDryList.setFarmId(Integer.parseInt(farmId));
+                    ecoDryListMapper.insert(ecoDryList);
+                    System.out.println("处理温度不达标。");
+                    newLowDryTempWarningInfo(temp, dryNormalTemp, dryTem, dateUtil.formatDateTime(todayTime), farmId, location);
+                }
+            } else {
+                System.out.println("2.");
+                //未超过2次烘干之间的规定间隔时间,判断当前温度是否介于烘干温度阈值和常温阈值之间,即可报警
+                newLowDryTempWarningInfo(temp, dryNormalTemp, dryTem, dateUtil.formatDateTime(todayTime), farmId, location);
+            }
+        }
+    }
+
+    @Override
     public void saveDryList(Map deviceMap, JSONObject deviceFlowDataJo, JSONObject thresholdJo, Date todayTime) throws ParseException {
         System.out.println("开始保存saveDryList()");
         JSONArray realTimeDataJa = deviceFlowDataJo.getJSONArray("realTimeData");

+ 3 - 2
huimv-farm-environ/src/main/resources/application.properties

@@ -11,7 +11,7 @@ url.environ.device.service=http://www.0531yun.com/app/GetDeviceData
 #
 #url.threshold.service=http://192.168.1.67:8010/produce/threshold/getThresholdByFarmId
 url.threshold.service=http://localhost:8010/produce/threshold/getThresholdByFarmId
-
+#url.threshold.service=http://localhost:10052/threshold/getThresholdByFarmId
 #
 #url.warning.service=http://192.168.1.67:8010/produce/warningInfo/newAlarm
 url.warning.service=http://localhost:8010/produce/warningInfo/newAlarm
@@ -25,4 +25,5 @@ dry.search.before.minute=10
 #查询截至时间(addTime + duration + afterMinute)
 dry.search.after.minute=10
 
-
+#烘干设备编码
+dry.deviceCode=880601000003

+ 33 - 3
huimv-farm-environ/src/main/resources/com/huimv/environ/eco/mapper/EcoDeviceFlowMapper.xml

@@ -25,15 +25,41 @@
     </sql>
 
 
+<!--    <select id="getLastFlow" resultType="com.huimv.environ.eco.entity.dto.LastFlowDto">-->
+<!--       SELECT CONCAT(b.pigpen_name,a.pigpen_name) room,df.id1_value 'tem',df.id2_value 'hum'-->
+<!--        FROM `base_pigpen` a INNER JOIN `base_pigpen` b ON a.parent_id =b.id AND a.farm_code = #{farmId}-->
+<!--        LEFT JOIN `eco_device` d ON d.unit_id = a.id AND d.device_type ='1'-->
+<!--        LEFT JOIN `eco_device_flow` df ON d.device_code = df.device_code-->
+<!--        AND df.id IN (SELECT MAX(df.id) FROM `eco_device_flow` df GROUP BY device_code)-->
+<!--        ORDER BY a.id DESC,a.parent_id DESC-->
+<!--    </select>-->
+
     <select id="getLastFlow" resultType="com.huimv.environ.eco.entity.dto.LastFlowDto">
-       SELECT CONCAT(b.pigpen_name,a.pigpen_name) room,df.id1_value 'tem',df.id2_value 'hum'
+       SELECT CONCAT(b.pigpen_name,a.pigpen_name) room,a.id unit_id,df.id1_value 'tem',df.id2_value 'hum'
         FROM `base_pigpen` a INNER JOIN `base_pigpen` b ON a.parent_id =b.id AND a.farm_code = #{farmId}
-        LEFT JOIN `eco_device` d ON d.unit_id = a.id AND d.device_type ='1'
+        INNER JOIN `eco_device` d ON d.unit_id = a.id AND d.device_type ='1'
         LEFT JOIN `eco_device_flow` df ON d.device_code = df.device_code
         AND df.id IN (SELECT MAX(df.id) FROM `eco_device_flow` df GROUP BY device_code)
         ORDER BY a.id DESC,a.parent_id DESC
     </select>
 
+    <select id="getUnitLastFlow" resultType="com.huimv.environ.eco.entity.dto.LastFlowDto">
+        SELECT df.id1_value AS 'tem',df.id2_value AS 'hum' FROM `eco_device_flow` df
+        WHERE df.device_code = #{deviceCode}
+        ORDER BY df.id DESC
+        LIMIT 0,1
+    </select>
+
+    <select id="getLastFlowByPigpenId" resultType="com.huimv.environ.eco.entity.dto.LastFlowDto">
+     SELECT CONCAT(b.pigpen_name,a.pigpen_name) room,a.id unit_id,df.id1_value 'tem',df.id2_value 'hum'
+    FROM `base_pigpen` a INNER JOIN `base_pigpen` b ON a.parent_id =b.id AND a.farm_code = #{farmId}
+    LEFT JOIN `eco_device` d ON d.unit_id = a.id AND d.device_type ='1'
+    LEFT JOIN `eco_device_flow` df ON d.device_code = df.device_code
+    AND df.id IN (SELECT MAX(df.id) FROM `eco_device_flow` df GROUP BY device_code)
+    WHERE a.parent_id=#{pigpenId}
+    ORDER BY a.id DESC,a.parent_id DESC
+    </select>
+
     <select id="listDevice" resultType="com.huimv.environ.eco.entity.dto.EcoDeviceDto">
        SELECT d.location 'roomName',ROUND(AVG(df.id1_value),2) 'tem',ROUND(AVG(df.id2_value),2) 'hum',DATE_FORMAT(df.add_time,'%Y-%m-%d') 'addTime' FROM `eco_device` d
 LEFT JOIN `eco_device_flow` df ON df.device_code = d.device_code
@@ -73,6 +99,10 @@ AND d.device_type = 1
 WHERE d.unit_id = #{unitId}
     </select>
 
+    <select id="getLastDryDeviceFlow" resultType="com.huimv.environ.eco.entity.EcoDeviceFlow">
+    select * from eco_device_flow WHERE device_code=#{dryDeviceCode} AND add_time BETWEEN #{startTime} AND #{endTime}
+    </select>
+
 
     <select id="listData" resultType="com.huimv.environ.eco.entity.dto.LastFlowDto">
         SELECT  d.location 'room',df.id1_value 'tem',df.id2_value 'hum' FROM `eco_device` d
@@ -81,4 +111,4 @@ AND df.id IN (SELECT MAX(df.id) FROM `eco_device_flow` df GROUP BY device_code)
 AND d.device_type = 1
 WHERE d.unit_id = #{unitId}
     </select>
-</mapper>
+</mapper>

+ 1 - 1
huimv-farm-produce/pom.xml

@@ -15,7 +15,7 @@
         <dependency>
             <groupId>com.huimv</groupId>
             <artifactId>huimv-common</artifactId>
-            <version>0.0.9-SNAPSHOT</version>
+            <version>0.0.13-SNAPSHOT</version>
         </dependency>
 <!--        <dependency>-->
 <!--            <groupId>org.springframework.boot</groupId>-->

+ 48 - 0
huimv-farm-produce/src/main/java/com/huimv/produce/produce/controller/KesouController.java

@@ -0,0 +1,48 @@
+package com.huimv.produce.produce.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.common.utils.Result;
+import com.huimv.common.utils.ResultCode;
+import com.huimv.produce.produce.entity.Kesou;
+import com.huimv.produce.produce.service.KesouService;
+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 javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/v1.0.0/kesou")
+public class KesouController {
+    @Resource
+    private KesouService kesouService;
+
+    @PostMapping("/list")
+    public Result listKesou(HttpServletRequest request, @RequestBody Map<String, String> paramsMap){
+        String farmId = paramsMap.get("farmId");
+        List<Kesou> farm_id = kesouService.list(new QueryWrapper<Kesou>().eq("farm_id", farmId));
+        return new Result(ResultCode.SUCCESS,farm_id);
+    }
+    @PostMapping("/add")
+    public Result add(HttpServletRequest request, @RequestBody Kesou kesou){
+        kesouService.save(kesou);
+        return new Result(10000,"添加成功",true);
+    }
+    @PostMapping("/update")
+    public Result update(HttpServletRequest request, @RequestBody Kesou kesou){
+        kesouService.updateById(kesou);
+        return new Result(10000,"修改成功",true);
+    }
+    @PostMapping("/remove")
+    public Result remove(HttpServletRequest request, @RequestBody Map<String, String> paramsMap){
+        String id = paramsMap.get("id");
+        kesouService.removeById(id);
+        return new Result(10000,"删除成功",true);
+    }
+
+}