Pārlūkot izejas kodu

张村牧场生成

wwh 1 gadu atpakaļ
vecāks
revīzija
a8436339b6

+ 2 - 1
huimv-admin/src/main/java/com/huimv/admin/config/InterceptorConfig.java

@@ -22,6 +22,7 @@ public class InterceptorConfig implements WebMvcConfigurer {
     public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(jwtInterceptor()).
                 excludePathPatterns("/huatongApi/admin/my/*","/huatongApi/env-nh3-n/send")
-                .excludePathPatterns("/huatongApi/receive/feed","/huatongApi/energy-data/getData");
+                .excludePathPatterns("/huatongApi/receive/feed","/huatongApi/energy-data/getData"
+                        ,"/huatongApi/energy-data/getData2");
     }
 }

+ 22 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/EnergyDataController.java

@@ -112,4 +112,26 @@ public class EnergyDataController {
             iEnergyDataService.save(energyData);
         }
     }
+
+    @RequestMapping("/getData2")
+    public void getData2(@RequestBody Map<String, List<WaterAndElectricity>> paramsMap) {
+        List<WaterAndElectricity> result = (List) paramsMap.get("result");
+        System.out.println("接受到的数据格式:" + result);
+        for (WaterAndElectricity jsonObject : result) {
+            EnergyData energyData = new EnergyData();
+            energyData.setFeedValue("0.00");
+            energyData.setWaterValue(jsonObject.getWater());
+            energyData.setElectricityValue(jsonObject.getElectricity());
+            energyData.setGasValue("0.00");
+            energyData.setFarmId(29);
+            energyData.setCreateDate(new Date());
+            QueryWrapper<EnergyEnvDevice> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("farm_id", 29).eq("device_code", jsonObject.getDeviceCode());
+            EnergyEnvDevice device = deviceService.getOne(queryWrapper);
+            if (ObjectUtil.isNotEmpty(device)) {
+                energyData.setUnitId(device.getUnitId());
+            }
+            iEnergyDataService.save(energyData);
+        }
+    }
 }

+ 6 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/FeedArea.java

@@ -36,5 +36,11 @@ public class FeedArea implements Serializable {
      */
     private String areaId;
 
+    private Integer type;
 
+    private String name;
+
+    private String unitId;
+
+    private String gatewayNo;
 }

+ 2 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyDataServiceImpl.java

@@ -481,6 +481,7 @@ public class EnergyDataServiceImpl extends ServiceImpl<EnergyDataMapper, EnergyD
     public Result listDataTail(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException {
         String deviceCode = paramsMap.get("deviceCode");
         String type = paramsMap.get("type");
+        String farmId = paramsMap.get("farmId");
 
         if ("".equals(type) || null == type) {
             type = "1";
@@ -501,6 +502,7 @@ public class EnergyDataServiceImpl extends ServiceImpl<EnergyDataMapper, EnergyD
         List<String> list = new ArrayList<>();
         if ("".equals(deviceCode) || null == deviceCode) {
             QueryWrapper<EnergyEnvDevice> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq("farm_id", farmId);
             if ("1".equals(type)) {
                 queryWrapper1.eq("remark", 1);
             } else {

+ 2 - 1
huimv-admin/src/main/java/com/huimv/admin/timer/EnergyTimer.java

@@ -35,7 +35,8 @@ public class EnergyTimer {
     @Scheduled(cron = "0 0 */1 * * ? ")
 //    @Scheduled(cron = "0 */1 * * * ? ")
     private void getShenChan() throws Exception {
-        List<EnergyEnvDevice> energyEnvDevices = deviceMapper.selectList(new QueryWrapper<EnergyEnvDevice>().ne("farm_id",26));
+        List<EnergyEnvDevice> energyEnvDevices = deviceMapper.selectList(new QueryWrapper<EnergyEnvDevice>().ne("farm_id",26)
+                .ne("farm_id",29));
 
         for (EnergyEnvDevice energyEnvDevice : energyEnvDevices) {
             QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();

+ 53 - 48
huimv-admin/src/main/java/com/huimv/admin/timer/FeedTimer.java

@@ -53,58 +53,62 @@ public class FeedTimer {
     private FeedingDataMapper dataMapper;
 
 
-//    @Scheduled(cron = "0 0 */1 * * ? ")
+    //    @Scheduled(cron = "0 0 */1 * * ? ")
     @Scheduled(cron = "0 0/59 * * * ? ")
     @Transactional
     public void getFeed() throws Exception {
         QueryWrapper<FeedArea> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("farm_id", 26);
         List<FeedArea> feedAreas = feedAreaMapper.selectList(queryWrapper);
-        Date now = new Date(); // 获取当前时间
-        long oneHour = 1 * 60 * 60 * 1000; // 1小时的毫秒数
-        Date oneHourAgo = new Date(now.getTime() - oneHour); // 获取1小时前的时间
-        List<String> time = new ArrayList<>();
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        time.add(sdf.format(oneHourAgo));
-        time.add(sdf.format(new Date()));
-        System.out.println("这个是传入的时间数组:" + time);
+//        Date now = new Date(); // 获取当前时间
+//        long oneHour = 1 * 60 * 60 * 1000; // 1小时的毫秒数
+//        Date oneHourAgo = new Date(now.getTime() - oneHour); // 获取1小时前的时间
+//        List<String> time = new ArrayList<>();
+//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//        time.add(sdf.format(oneHourAgo));
+//        time.add(sdf.format(new Date()));
+//        System.out.println("这个是传入的时间数组:" + time);
         for (FeedArea feedArea : feedAreas) {
             HashMap<String, String> paramMap = new HashMap<>();
             JSONObject jsonObject = new JSONObject();
-            jsonObject.put("pageNum", "1");
-            jsonObject.put("pageSize", "20");
-            jsonObject.put("createTime", time);
+//            jsonObject.put("pageNum", "1");
+//            jsonObject.put("pageSize", "50");
+//            jsonObject.put("createTime", time);
             jsonObject.put("fdQrcode", "");
             jsonObject.put("fenceNum", "");
-            jsonObject.put("gatewayNo", "");
+            jsonObject.put("gatewayNo", feedArea.getGatewayNo());
             jsonObject.put("areaId", feedArea.getAreaId());
             paramMap.put("Content-Type", "application/json;charset=utf-8");
             paramMap.put("AuthorizationF", getToken());
-            String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/mqtt/pageQryRealtime").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
+            String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/mqtt/pageQryRealtime?pageNum=1&pageSize=50").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
             JSONObject jsonObject1 = JSONObject.parseObject(post);
             Map map = (Map) jsonObject1.get("data");
             List<Map<String, Object>> list = (List) map.get("records");
-            for (Map<String, Object> stringMap : list) {
-                FeedingData data = new FeedingData();
-                data.setFarmId(26);
-                data.setUnitName(feedArea.getUnitName());
-                data.setDeviceCode(stringMap.get("fdQrcode").toString());
-                QueryWrapper<FeedingEnv> queryWrapper1 = new QueryWrapper<>();
-                queryWrapper1.eq("device_code", stringMap.get("fdQrcode"));
-                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-                data.setUploadTime(dateFormat.parse(stringMap.get("createTime").toString()));
-                data.setBlanking(stringMap.get("zkAlram").toString());
-                FeedingEnv env = envMapper.selectOne(queryWrapper1);
-                if (ObjectUtil.isNotEmpty(env)) {
-                    data.setEartag(env.getEartag());
-                    env.setUnitName(feedArea.getUnitName());
-                    env.setBlanking(stringMap.get("zkAlram").toString());
-                    envMapper.updateById(env);
+            System.out.println("取到了记录:"+list);
+            if (null !=list) {
+                for (Map<String, Object> stringMap : list) {
+                    FeedingData data = new FeedingData();
+                    data.setFarmId(26);
+                    data.setUnitName(feedArea.getName());
+                    data.setDeviceCode(stringMap.get("fdQrcode").toString());
+//                QueryWrapper<FeedingEnv> queryWrapper1 = new QueryWrapper<>();
+//                queryWrapper1.eq("device_code", stringMap.get("fdQrcode"));
+                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+                    data.setUploadTime(dateFormat.parse(stringMap.get("createTime").toString()));
+                    data.setBlanking(stringMap.get("zkAlram").toString());
+//                FeedingEnv env = envMapper.selectOne(queryWrapper1);
+//                if (ObjectUtil.isNotEmpty(env)) {
+////                    data.setEartag(env.getEartag());
+//                    env.setUnitName(feedArea.getName());
+//                    env.setBlanking(stringMap.get("zkAlram").toString());
+//                    envMapper.updateById(env);
+//                }
+                    data.setMeals(Integer.parseInt(stringMap.get("dayDeliver").toString()));
+                    data.setFoodIntake(stringMap.get("intFdWeight").toString());
+                    dataMapper.insert(data);
                 }
-                data.setMeals(Integer.parseInt(stringMap.get("dayDeliver").toString()));
-                data.setFoodIntake(stringMap.get("intFdWeight").toString());
-                dataMapper.insert(data);
             }
+
         }
     }
 
@@ -149,7 +153,7 @@ public class FeedTimer {
 
 
     //饲养器添加
-    @Scheduled(cron = "0 0/30 * * * ? ")
+    @Scheduled(cron = "0 0/59 * * * ? ")
     @Transactional
     public void getFeedEnv() throws Exception {
         QueryWrapper<FeedArea> queryWrapper = new QueryWrapper<>();
@@ -159,29 +163,30 @@ public class FeedTimer {
             HashMap<String, String> paramMap = new HashMap<>();
             JSONObject jsonObject = new JSONObject();
             jsonObject.put("pageNum", "1");
-            jsonObject.put("pageSize", "20");
+            jsonObject.put("pageSize", "200");
             jsonObject.put("areaId", feedArea.getAreaId());
             paramMap.put("Content-Type", "application/json;charset=utf-8");
             paramMap.put("AuthorizationF", getToken());
-            String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/api/v1/feeder/pageQry").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
+            String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/api/v1/feeder/pageQry?pageNum=1&pageSize=50").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
             JSONObject jsonObject1 = JSONObject.parseObject(post);
             Map map = (Map) jsonObject1.get("data");
             List<Map<String, Object>> list = (List) map.get("records");
             for (Map<String, Object> stringMap : list) {
                 QueryWrapper<FeedingEnv> queryWrapper1 = new QueryWrapper<>();
-                if (ObjectUtil.isNotEmpty(stringMap.get("earTag"))) {
-                    queryWrapper1.eq("farm_id", 26).eq("eartag", stringMap.get("earTag"));
-                    if (ObjectUtil.isEmpty(envMapper.selectOne(queryWrapper1))) {
-                        FeedingEnv feedingEnv = new FeedingEnv();
-                        feedingEnv.setFarmId(26);
-                        feedingEnv.setEartag(stringMap.get("earTag").toString());
-                        feedingEnv.setDeviceCode(stringMap.get("qrcode").toString());
-                        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-                        feedingEnv.setLastTime(dateFormat.parse((String) stringMap.get("createTime")));
-                        feedingEnv.setDeviceType((Integer) stringMap.get("feedStatus"));
-                        envMapper.insert(feedingEnv);
-                    }
+                queryWrapper1.eq("farm_id", 26).eq("device_code", stringMap.get("qrcode"));
+                if (ObjectUtil.isEmpty(envMapper.selectOne(queryWrapper1))) {
+                    FeedingEnv feedingEnv = new FeedingEnv();
+                    feedingEnv.setFarmId(26);
+                    feedingEnv.setUnitName(feedArea.getName());
+                    feedingEnv.setUnitId(Integer.parseInt(feedArea.getUnitId()));
+                    feedingEnv.setDeviceType(feedArea.getType());
+                    feedingEnv.setDeviceCode(stringMap.get("qrcode").toString());
+                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+                    feedingEnv.setLastTime(dateFormat.parse((String) stringMap.get("createTime")));
+                    feedingEnv.setOnlineStatus((Integer) stringMap.get("feedStatus"));
+                    envMapper.insert(feedingEnv);
                 }
+
             }
         }
     }

+ 144 - 0
huimv-admin/src/main/java/com/huimv/admin/timer/WaterAndElcTimer.java

@@ -184,6 +184,150 @@ public class WaterAndElcTimer {
 
         }
     }
+
+    @Scheduled(cron = "0 59 * * * ? ")
+    private void getShenChan2() throws Exception {
+        QueryWrapper<EnergyEnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", 29);
+        List<EnergyEnvDevice> envDevices = envDeviceMapper.selectList(queryWrapper);
+
+        Date timesmorning = DataUill.getTimesmorning();
+        DateTime dateTime = DateUtil.beginOfWeek(new Date());//本周
+        Date timesMonthmorning = DataUill.getTimesMonthmorning();//本月
+        Date dayStart = (Date) getYesterdayRange().get("startTime");
+        Date dayEnd = (Date) getYesterdayRange().get("stopTime");
+        Date weekStart = (Date) getLastWeekRange().get("startTime");
+        Date weekEnd = (Date) getLastWeekRange().get("stopTime");
+        Date monthStart = (Date) getLastMonthRange().get("startTime");
+        Date monthEnd = (Date) getLastMonthRange().get("stopTime");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+
+        for (EnergyEnvDevice envDevice : envDevices) {
+            EnergyDataScreenVo dataScreenVo = dataMapper.listDataAll(sdf.format(timesmorning), sdf.format(dateTime), sdf.format(timesMonthmorning),
+                    sdf.format(dayStart), sdf.format(dayEnd)
+                    , sdf.format(weekStart), sdf.format(weekEnd)
+                    , sdf.format(monthStart), sdf.format(monthEnd)
+                    , envDevice.getUnitId(), "29");
+
+            QueryWrapper<EnergyScreen> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq("farm_id", 29).ge("create_date", timesMonthmorning).eq("device_code", envDevice.getDeviceCode());
+            EnergyScreen energyScreen = screenMapper.selectOne(queryWrapper1);
+
+            if (ObjectUtil.isNotEmpty(energyScreen)) {
+                //说明今天的数据已经存在 后续只需要更新即可
+                if ("1".equals(envDevice.getRemark())) {
+                    //用水
+                    energyScreen.setCreateDate(new Date());
+                    energyScreen.setTodayRead(dataScreenVo.getWaterValueToday());
+                    energyScreen.setTodayConsume(dataScreenVo.getWaterValueTodayUsage());
+                    energyScreen.setYesterdayConsume(dataScreenVo.getWaterValueYesterdayUsage());
+                    energyScreen.setWeekConsume(dataScreenVo.getWaterValueThisWeekUsage());
+                    energyScreen.setLastWeekConsume(dataScreenVo.getWaterValueLastWeekUsage());
+                    energyScreen.setMonthConsume(dataScreenVo.getWaterValueThisMonthUsage());
+                    energyScreen.setLastMonthConsume(dataScreenVo.getWaterValueLastMonthUsage());
+                    double day2 = Double.parseDouble(dataScreenVo.getWaterValueTodayUsage());
+                    double day3 = Double.parseDouble(dataScreenVo.getWaterValueYesterdayUsage());
+                    double week1 = Double.parseDouble(dataScreenVo.getWaterValueThisWeekUsage());
+                    double week2 = Double.parseDouble(dataScreenVo.getWaterValueLastWeekUsage());
+                    double month1 = Double.parseDouble(dataScreenVo.getWaterValueThisMonthUsage());
+                    double month2 = Double.parseDouble(dataScreenVo.getWaterValueLastMonthUsage());
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    String day4 = def.format(day2 - day3);
+                    String week3 = def.format(week1 - week2);
+                    String month3 = def.format(month1 - month2);
+                    energyScreen.setDayDifference(day4);
+                    energyScreen.setWeekDifference(week3);
+                    energyScreen.setMonthDifference(month3);
+                } else {
+                    //用电
+                    energyScreen.setCreateDate(new Date());
+                    energyScreen.setTodayRead(dataScreenVo.getElectricityValueToday());
+                    energyScreen.setTodayConsume(dataScreenVo.getElectricityValueTodayUsage());
+                    energyScreen.setYesterdayConsume(dataScreenVo.getElectricityValueYesterdayUsage());
+                    energyScreen.setWeekConsume(dataScreenVo.getElectricityValueThisWeekUsage());
+                    energyScreen.setLastWeekConsume(dataScreenVo.getElectricityValueLastWeekUsage());
+                    energyScreen.setMonthConsume(dataScreenVo.getElectricityValueThisMonthUsage());
+                    energyScreen.setLastMonthConsume(dataScreenVo.getElectricityValueLastMonthUsage());
+                    double day2 = Double.parseDouble(dataScreenVo.getElectricityValueTodayUsage());
+                    double day3 = Double.parseDouble(dataScreenVo.getElectricityValueYesterdayUsage());
+                    double week1 = Double.parseDouble(dataScreenVo.getElectricityValueThisWeekUsage());
+                    double week2 = Double.parseDouble(dataScreenVo.getElectricityValueLastWeekUsage());
+                    double month1 = Double.parseDouble(dataScreenVo.getElectricityValueThisMonthUsage());
+                    double month2 = Double.parseDouble(dataScreenVo.getElectricityValueLastMonthUsage());
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    String day4 = def.format(day2 - day3);
+                    String week3 = def.format(week1 - week2);
+                    String month3 = def.format(month1 - month2);
+                    energyScreen.setDayDifference(day4);
+                    energyScreen.setWeekDifference(week3);
+                    energyScreen.setMonthDifference(month3);
+                }
+                screenMapper.updateById(energyScreen);
+            }else {
+                //添加一天的第一条数据
+                EnergyScreen screen = new EnergyScreen();
+                if ("1".equals(envDevice.getRemark())) {
+                    //添加用水
+                    screen.setCreateDate(new Date());
+                    screen.setTodayRead(dataScreenVo.getWaterValueToday());
+                    screen.setTodayConsume(dataScreenVo.getWaterValueTodayUsage());
+                    screen.setYesterdayConsume(dataScreenVo.getWaterValueYesterdayUsage());
+                    screen.setWeekConsume(dataScreenVo.getWaterValueThisWeekUsage());
+                    screen.setLastWeekConsume(dataScreenVo.getWaterValueLastWeekUsage());
+                    screen.setMonthConsume(dataScreenVo.getWaterValueThisMonthUsage());
+                    screen.setLastMonthConsume(dataScreenVo.getWaterValueLastMonthUsage());
+                    double day2 = Double.parseDouble(dataScreenVo.getWaterValueTodayUsage());
+                    double day3 = Double.parseDouble(dataScreenVo.getWaterValueYesterdayUsage());
+                    double week1 = Double.parseDouble(dataScreenVo.getWaterValueThisWeekUsage());
+                    double week2 = Double.parseDouble(dataScreenVo.getWaterValueLastWeekUsage());
+                    double month1 = Double.parseDouble(dataScreenVo.getWaterValueThisMonthUsage());
+                    double month2 = Double.parseDouble(dataScreenVo.getWaterValueLastMonthUsage());
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    String day4 = def.format(day2 - day3);
+                    String week3 = def.format(week1 - week2);
+                    String month3 = def.format(month1 - month2);
+                    screen.setDayDifference(day4);
+                    screen.setWeekDifference(week3);
+                    screen.setMonthDifference(month3);
+                    screen.setFarmId(29);
+                    screen.setBuildName(envDevice.getUnitName());
+                    screen.setDeviceCode(envDevice.getDeviceCode());
+                    screen.setType(1);
+                    screen.setFarmName("华统股份张村智慧牧场");
+                } else {
+                    screen.setCreateDate(new Date());
+                    screen.setTodayRead(dataScreenVo.getElectricityValueToday());
+                    screen.setTodayConsume(dataScreenVo.getElectricityValueTodayUsage());
+                    screen.setYesterdayConsume(dataScreenVo.getElectricityValueYesterdayUsage());
+                    screen.setWeekConsume(dataScreenVo.getElectricityValueThisWeekUsage());
+                    screen.setLastWeekConsume(dataScreenVo.getElectricityValueLastWeekUsage());
+                    screen.setMonthConsume(dataScreenVo.getElectricityValueThisMonthUsage());
+                    screen.setLastMonthConsume(dataScreenVo.getElectricityValueLastMonthUsage());
+                    double day2 = Double.parseDouble(dataScreenVo.getElectricityValueTodayUsage());
+                    double day3 = Double.parseDouble(dataScreenVo.getElectricityValueYesterdayUsage());
+                    double week1 = Double.parseDouble(dataScreenVo.getElectricityValueThisWeekUsage());
+                    double week2 = Double.parseDouble(dataScreenVo.getElectricityValueLastWeekUsage());
+                    double month1 = Double.parseDouble(dataScreenVo.getElectricityValueThisMonthUsage());
+                    double month2 = Double.parseDouble(dataScreenVo.getElectricityValueLastMonthUsage());
+                    DecimalFormat def = new DecimalFormat("0.00");
+                    String day4 = def.format(day2 - day3);
+                    String week3 = def.format(week1 - week2);
+                    String month3 = def.format(month1 - month2);
+                    screen.setDayDifference(day4);
+                    screen.setWeekDifference(week3);
+                    screen.setMonthDifference(month3);
+                    screen.setFarmId(29);
+                    screen.setBuildName(envDevice.getUnitName());
+                    screen.setDeviceCode(envDevice.getDeviceCode());
+                    screen.setType(2);
+                    screen.setFarmName("华统股份张村智慧牧场");
+                }
+                screenMapper.insert(screen);
+            }
+
+        }
+    }
     /**
      * 获取上周开始时间和结束时间
      */