瀏覽代碼

设备在线率

Newspaper 1 年之前
父節點
當前提交
902fb445c0
共有 33 個文件被更改,包括 862 次插入91 次删除
  1. 54 0
      snowy-web-app/src/main/java/vip/xiaonuo/Timer/DeviceOnlineTimer.java
  2. 1 1
      snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseConfig/service/impl/BaseConfigServiceImpl.java
  3. 4 1
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyDevice/service/impl/EnergyDeviceServiceImpl.java
  4. 16 3
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/controller/EnergyElectricityController.java
  5. 21 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/entity/vo/EnergyScreenVo.java
  6. 8 5
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/mapper/EnergyElectricityMapper.java
  7. 52 13
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/mapper/mapping/EnergyElectricityMapper.xml
  8. 2 1
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/param/EnergyElectricityListParm.java
  9. 3 1
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/service/EnergyElectricityService.java
  10. 56 10
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/service/impl/EnergyElectricityServiceImpl.java
  11. 5 5
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyWater/mapper/EnergyWaterMapper.java
  12. 22 17
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyWater/mapper/mapping/EnergyWaterMapper.xml
  13. 2 1
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyWater/param/EnergyWaterListParm.java
  14. 50 10
      snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyWater/service/impl/EnergyWaterServiceImpl.java
  15. 0 5
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/entity/EnvDeviceEquipment.java
  16. 70 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/controller/EnvDeviceOnlineController.java
  17. 58 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/entity/EnvDeviceOnline.java
  18. 34 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/enums/EnvDeviceOnlineEnum.java
  19. 29 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/mapper/EnvDeviceOnlineMapper.java
  20. 17 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/mapper/mapping/EnvDeviceOnlineMapper.xml
  21. 54 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/param/EnvDeviceOnlineAddParam.java
  22. 59 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/param/EnvDeviceOnlineEditParam.java
  23. 35 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/param/EnvDeviceOnlineIdParam.java
  24. 51 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/param/EnvDeviceOnlinePageParam.java
  25. 35 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/service/EnvDeviceOnlineService.java
  26. 56 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/service/impl/EnvDeviceOnlineServiceImpl.java
  27. 3 3
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envdata/mapper/mapping/EnvDataMapper.xml
  28. 0 4
      snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envdevice/service/impl/EnvDeviceServiceImpl.java
  29. 16 2
      snowy-web-app/src/main/java/vip/xiaonuo/modular/warning/warningInfo/controller/WarningInfoController.java
  30. 3 4
      snowy-web-app/src/main/java/vip/xiaonuo/modular/warning/warningInfo/mapper/mapping/WarningInfoMapper.xml
  31. 5 1
      snowy-web-app/src/main/java/vip/xiaonuo/modular/warning/warningInfo/param/WarningInfoWarningTypeParam.java
  32. 3 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/warning/warningInfo/service/WarningInfoService.java
  33. 38 4
      snowy-web-app/src/main/java/vip/xiaonuo/modular/warning/warningInfo/service/impl/WarningInfoServiceImpl.java

+ 54 - 0
snowy-web-app/src/main/java/vip/xiaonuo/Timer/DeviceOnlineTimer.java

@@ -0,0 +1,54 @@
+package vip.xiaonuo.Timer;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import vip.xiaonuo.common.timer.CommonTimerTaskRunner;
+import vip.xiaonuo.modular.env.envDeviceOnline.entity.EnvDeviceOnline;
+import vip.xiaonuo.modular.env.envDeviceOnline.service.EnvDeviceOnlineService;
+import vip.xiaonuo.modular.env.envdevice.entity.EnvDevice;
+import vip.xiaonuo.modular.env.envdevice.service.EnvDeviceService;
+import vip.xiaonuo.sys.modular.org.entity.SysOrg;
+import vip.xiaonuo.sys.modular.org.mapper.SysOrgMapper;
+import vip.xiaonuo.sys.modular.org.service.SysOrgService;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Slf4j
+@Component
+public class DeviceOnlineTimer implements CommonTimerTaskRunner {
+
+    @Autowired
+    private SysOrgService sysOrgService;
+    @Autowired
+    private EnvDeviceService envDeviceService;
+    @Autowired
+    private EnvDeviceOnlineService envDeviceOnlineService;
+    @Override
+    public void action() {
+        List<SysOrg> list = sysOrgService.list();
+        for (SysOrg sysOrg : list) {
+            double rate = 0.0;
+            Integer deviceOff = Math.toIntExact(envDeviceService.count(new QueryWrapper<EnvDevice>().lambda().eq(EnvDevice::getOrgId, sysOrg.getId()).eq(EnvDevice::getStatus, 0)));
+            Integer deviceOn = Math.toIntExact(envDeviceService.count(new QueryWrapper<EnvDevice>().lambda().eq(EnvDevice::getOrgId, sysOrg.getId()).eq(EnvDevice::getStatus, 1)));
+            Integer total = deviceOff+deviceOn;
+            LocalDateTime now = LocalDateTime.now();
+            try {
+                rate = (deviceOn/total)*100;
+            }catch (ArithmeticException e){
+                System.out.println(e);
+            }
+            EnvDeviceOnline envDeviceOnline = new EnvDeviceOnline();
+            envDeviceOnline.setDeviceOn(deviceOn);
+            envDeviceOnline.setDeviceOff(deviceOff);
+            envDeviceOnline.setOnlineRate(new BigDecimal(rate).setScale(2, RoundingMode.UP));
+            envDeviceOnline.setOrgId(sysOrg.getId());
+            envDeviceOnline.setCreatTime(now);
+            envDeviceOnlineService.save(envDeviceOnline);
+        }
+    }
+}

+ 1 - 1
snowy-web-app/src/main/java/vip/xiaonuo/modular/base/baseConfig/service/impl/BaseConfigServiceImpl.java

@@ -64,7 +64,7 @@ public class BaseConfigServiceImpl extends ServiceImpl<BaseConfigMapper, BaseCon
 
         allConfigs.addAll(baseConfigs);
         allConfigs.addAll(childConfigs);
-        List<TreeNode<String>> treeNodeList = allConfigs.stream().map(baseConfig ->
+        List<TreeNode<String>> treeNodeList = allConfigs.stream().filter(baseConfig -> !"预警类型".equals(baseConfig.getConfigName())).map(baseConfig ->
                 new TreeNode<>(baseConfig.getId(), baseConfig.getParentId(),
                         baseConfig.getConfigName(), baseConfig.getSortCode()).setExtra(JSONUtil.parseObj(baseConfig)))
                 .collect(Collectors.toList());

+ 4 - 1
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyDevice/service/impl/EnergyDeviceServiceImpl.java

@@ -64,7 +64,7 @@ public class EnergyDeviceServiceImpl extends ServiceImpl<EnergyDeviceMapper, Ene
         QueryWrapper<EnergyDevice> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(EnergyDevice::getOrgId,orgId).orderByAsc(EnergyDevice::getId);
         if(ObjectUtil.isNotEmpty(energyDevicePageParam.getDeviceType())) {
-            queryWrapper.lambda().eq(EnergyDevice::getDeviceType, energyDevicePageParam.getDeviceType());
+            queryWrapper.lambda().eq(EnergyDevice::getDeviceTypeId, energyDevicePageParam.getDeviceType());
         }
         String installPosition = energyDevicePageParam.getInstallPosition();
         List<String> pigpenList = new ArrayList<>();
@@ -93,6 +93,9 @@ public class EnergyDeviceServiceImpl extends ServiceImpl<EnergyDeviceMapper, Ene
                     pigpenList.add(installPosition);
                     break;
             }
+            if (ObjectUtil.isEmpty(pigpenList)){
+                return new Page<>();
+            }
             queryWrapper.lambda().in(EnergyDevice::getInstallPosition, pigpenList);
         }
         return this.page(CommonPageRequest.defaultPage(), queryWrapper);

+ 16 - 3
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/controller/EnergyElectricityController.java

@@ -19,20 +19,19 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
-import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.core.param.OrgIdParam;
 import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyElectricityProportionVo;
 import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyElectricityTopVo;
 import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyElectricityTrendVo;
+import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyScreenVo;
 import vip.xiaonuo.modular.energy.energyElectricity.param.EnergyElectricityListParm;
 import vip.xiaonuo.modular.energy.energyElectricity.param.EnergyElectricityProportionParam;
 import vip.xiaonuo.modular.energy.energyElectricity.param.EnergyElectricityTopParm;
 import vip.xiaonuo.modular.energy.energyElectricity.service.EnergyElectricityService;
 
 import javax.annotation.Resource;
-import javax.validation.constraints.NotBlank;
 import java.util.List;
-import java.util.Map;
 
 /**
  * 能耗电表控制器
@@ -92,4 +91,18 @@ public class EnergyElectricityController {
         return CommonResult.data(energyElectricityService.listTop(energyElectricityTopParm,orgId));
     }
 
+    /**
+     * 获取大屏能耗管理
+     *
+     * @author newspaper
+     * @date  2023/12/21 14:54
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("获取大屏能耗管理")
+    @GetMapping("/energy/energyElectricity/listScreenEnergy")
+    public CommonResult<List<EnergyScreenVo>> listScreenEnergy(OrgIdParam orgIdParam) {
+        String orgId = orgIdParam.getOrgId();
+        return CommonResult.data(energyElectricityService.listScreenEnergy(orgId));
+    }
+
 }

+ 21 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/entity/vo/EnergyScreenVo.java

@@ -0,0 +1,21 @@
+package vip.xiaonuo.modular.energy.energyElectricity.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class EnergyScreenVo {
+    @ApiModelProperty(value = "位置", position = 1)
+    private String month;
+
+    @ApiModelProperty(value = "用水", position = 2)
+    private BigDecimal waterValue;
+
+    @ApiModelProperty(value = "用电", position = 3)
+    private BigDecimal electricityValue;
+
+    @ApiModelProperty(value = "用料", position = 4)
+    private BigDecimal feedValue;
+}

+ 8 - 5
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/mapper/EnergyElectricityMapper.java

@@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import vip.xiaonuo.modular.energy.energyElectricity.entity.EnergyElectricity;
 import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyElectricityListVo;
 import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyElectricityTopVo;
+import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyScreenVo;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -39,13 +40,13 @@ public interface EnergyElectricityMapper extends BaseMapper<EnergyElectricity> {
 
     BigDecimal getMonthTotalByType(String stage, String orgId);
 
-    List<EnergyElectricityListVo> listToday(String pigpenId);
+    List<EnergyElectricityListVo> listToday(List<String> pigpenList, String orgId);
 
-    List<EnergyElectricityListVo> listWeek(String pigpenId);
+    List<EnergyElectricityListVo> listWeek(List<String> pigpenList, String orgId);
 
-    List<EnergyElectricityListVo> listMonth(String pigpenId);
+    List<EnergyElectricityListVo> listMonth(List<String> pigpenList, String orgId);
 
-    List<EnergyElectricityListVo> listCustom(String pigpenId, String startDate, String endDate);
+    List<EnergyElectricityListVo> listCustom(List<String> pigpenList, String startDate, String endDate, String orgId);
 
     List<EnergyElectricityTopVo> listTodayTop(String orgId);
 
@@ -55,5 +56,7 @@ public interface EnergyElectricityMapper extends BaseMapper<EnergyElectricity> {
 
     List<EnergyElectricityTopVo> listCustomTop(String orgId, String startDate, String endDate);
 
-    List<EnergyElectricityListVo> listSevenDay(String pigpenId);
+    List<EnergyElectricityListVo> listSevenDay(List<String> pigpenList, String orgId);
+
+    List<EnergyScreenVo> listScreenEnergy(String orgId);
 }

+ 52 - 13
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/mapper/mapping/EnergyElectricityMapper.xml

@@ -82,21 +82,23 @@
         FROM
             `energy_electricity`
         WHERE
-            unit_id = #{pigpenId}
-            AND DATE(create_date) = CURRENT_DATE
+            DATE(create_date) = CURRENT_DATE
+            AND org_id = #{orgId}
+            AND (LENGTH(#{pigpenList}) = 0 OR unit_id IN (#{pigpenList}))
         ORDER BY
          createTime ASC
     </select>
 
     <select id="listWeek" resultType="vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyElectricityListVo">
         SELECT
-            ROUND(AVG(electricity_value), 2) AS 'electricityValue',
+            ROUND(SUM(electricity_value), 2) AS 'electricityValue',
             DATE(create_date) AS 'createTime'
         FROM
             `energy_electricity`
         WHERE
-            unit_id = #{pigpenId}
-            AND YEARWEEK(create_date, 1) = YEARWEEK(CURDATE(), 1)
+            YEARWEEK(create_date, 1) = YEARWEEK(CURDATE(), 1)
+            AND org_id = #{orgId}
+            AND (LENGTH(#{pigpenList}) = 0 OR unit_id IN (#{pigpenList}))
         GROUP BY
             DATE(create_date)
         ORDER BY
@@ -104,14 +106,15 @@
     </select>
     <select id="listMonth" resultType="vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyElectricityListVo">
         SELECT
-            ROUND(AVG(electricity_value), 2) AS 'electricityValue',
+            ROUND(SUM(electricity_value), 2) AS 'electricityValue',
             DATE(create_date) AS 'createTime'
         FROM
             `energy_electricity`
         WHERE
-            unit_id = #{pigpenId}
-            AND MONTH(create_date) = MONTH(CURDATE())
+            MONTH(create_date) = MONTH(CURDATE())
             AND YEAR(create_date) = YEAR(CURDATE())
+            AND org_id = #{orgId}
+            AND (LENGTH(#{pigpenList}) = 0 OR unit_id IN (#{pigpenList}))
         GROUP BY
             DATE(create_date)
         ORDER BY
@@ -120,13 +123,14 @@
 
     <select id="listCustom" resultType="vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyElectricityListVo">
         SELECT
-            ROUND(AVG(electricity_value), 2) AS 'electricityValue',
+            ROUND(SUM(electricity_value), 2) AS 'electricityValue',
             DATE(create_date) AS 'createTime'
         FROM
             `energy_electricity`
         WHERE
-            unit_id = #{pigpenId}
-            AND create_date BETWEEN #{startDate} AND #{endDate}
+            create_date BETWEEN #{startDate} AND #{endDate}
+            AND org_id = #{orgId}
+            AND (LENGTH(#{pigpenList}) = 0 OR unit_id IN (#{pigpenList}))
         GROUP BY
             DATE(create_date)
         ORDER BY
@@ -213,6 +217,7 @@
             energyElectricityValue DESC
         LIMIT 6
     </select>
+
     <select id="listSevenDay"
             resultType="vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyElectricityListVo">
         SELECT
@@ -221,11 +226,45 @@
         FROM
             `energy_electricity`
         WHERE
-            unit_id = #{pigpenId}
-            AND create_date BETWEEN CURDATE() - INTERVAL 6 DAY AND CURDATE();
+            create_date BETWEEN CURDATE() - INTERVAL 6 DAY AND CURDATE();
+            AND org_id = #{orgId}
+            AND (LENGTH(#{pigpenList}) = 0 OR unit_id IN (#{pigpenList}))
         GROUP BY
             DATE(create_date)
         ORDER BY
             DATE(create_date) ASC;
     </select>
+    <select id="listScreenEnergy" resultType="vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyScreenVo">
+        SELECT
+            m.month,
+            COALESCE(ROUND(w.waterValue, 2), 0) AS waterValue,
+            COALESCE(ROUND(e.electricityValue, 2), 0) AS electricityValue,
+            COALESCE(ROUND(f.feedValue, 1), 0) AS feedValue
+        FROM months m
+        LEFT JOIN (
+            SELECT
+                MONTH(create_date) AS MONTH,
+                SUM(water_value) AS waterValue
+            FROM energy_water
+            WHERE YEAR(create_date) = YEAR(CURDATE())
+            GROUP BY MONTH(create_date)
+        ) w ON m.month = w.month
+        LEFT JOIN (
+         SELECT
+                MONTH(create_date) AS MONTH,
+                SUM(electricity_value) AS electricityValue
+            FROM energy_electricity
+            WHERE YEAR(create_date) = YEAR(CURDATE())
+            GROUP BY MONTH(create_date)
+        ) e ON m.month = e.month
+        LEFT JOIN (
+            SELECT
+                MONTH(create_time) AS MONTH,
+                ROUND(SUM(feed_value)/1000,1) AS feedValue
+            FROM feeding_fat
+            WHERE YEAR(create_time) = YEAR(CURDATE())
+            GROUP BY MONTH(create_time)
+        ) f ON m.month = f.month
+        ORDER BY m.month
+   </select>
 </mapper>

+ 2 - 1
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/param/EnergyElectricityListParm.java

@@ -3,12 +3,13 @@ package vip.xiaonuo.modular.energy.energyElectricity.param;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
+import vip.xiaonuo.core.param.OrgIdParam;
 
 import javax.validation.constraints.NotBlank;
 
 @Getter
 @Setter
-public class EnergyElectricityListParm {
+public class EnergyElectricityListParm extends OrgIdParam {
     /** 栋舍ID */
     @ApiModelProperty(value = "栋舍ID", required = true, position = 1)
     @NotBlank(message = "栋舍ID不能为空")

+ 3 - 1
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/service/EnergyElectricityService.java

@@ -17,12 +17,12 @@ import vip.xiaonuo.modular.energy.energyElectricity.entity.EnergyElectricity;
 import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyElectricityProportionVo;
 import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyElectricityTopVo;
 import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyElectricityTrendVo;
+import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.EnergyScreenVo;
 import vip.xiaonuo.modular.energy.energyElectricity.param.EnergyElectricityListParm;
 import vip.xiaonuo.modular.energy.energyElectricity.param.EnergyElectricityTopParm;
 
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * 能耗电表Service接口
@@ -37,4 +37,6 @@ public interface EnergyElectricityService extends IService<EnergyElectricity> {
     EnergyElectricityTrendVo listTrend(EnergyElectricityListParm energyElectricityListParm);
 
     List<EnergyElectricityTopVo> listTop(EnergyElectricityTopParm energyElectricityTopParm, String orgId);
+
+    List<EnergyScreenVo> listScreenEnergy(String orgId);
 }

+ 56 - 10
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyElectricity/service/impl/EnergyElectricityServiceImpl.java

@@ -12,12 +12,15 @@
  */
 package vip.xiaonuo.modular.energy.energyElectricity.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.modular.base.baseConfig.entity.BaseConfig;
 import vip.xiaonuo.modular.base.baseConfig.mapper.BaseConfigMapper;
+import vip.xiaonuo.modular.base.pigpen.entity.BasePigpen;
 import vip.xiaonuo.modular.base.pigpen.mapper.BasePigpenMapper;
 import vip.xiaonuo.modular.energy.energyElectricity.entity.EnergyElectricity;
 import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.*;
@@ -27,6 +30,8 @@ import vip.xiaonuo.modular.energy.energyElectricity.param.EnergyElectricityTopPa
 import vip.xiaonuo.modular.energy.energyElectricity.service.EnergyElectricityService;
 
 import java.math.BigDecimal;
+import java.math.MathContext;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -53,7 +58,7 @@ public class EnergyElectricityServiceImpl extends ServiceImpl<EnergyElectricityM
     public EnergyElectricityProportionVo getProportion(String orgId, String type) {
         EnergyElectricityProportionVo electricityProportion = new EnergyElectricityProportionVo();
         BigDecimal thisTotal,lastTotal;
-        BigDecimal qoq = BigDecimal.valueOf(100);
+        BigDecimal qoq = BigDecimal.ZERO;
         String parentId = baseConfigMapper.selectOne(new QueryWrapper<BaseConfig>().eq("config_name", "栋舍阶段").eq("parent_id", 0)).getId();
         List<BaseConfig> buildStage = baseConfigMapper.selectList(new QueryWrapper<BaseConfig>().eq("parent_id", parentId).orderByAsc("sort_code"));
         List<String> stages = buildStage.stream().map(config -> config.getConfigName()).collect(Collectors.toList());
@@ -79,9 +84,12 @@ public class EnergyElectricityServiceImpl extends ServiceImpl<EnergyElectricityM
                 rateList.add(rate);
             }
         }
-        if (lastTotal.compareTo(BigDecimal.ZERO) != 0){
-            qoq = thisTotal.subtract(lastTotal).divide(lastTotal).multiply(BigDecimal.valueOf(100));
-            if (thisTotal.compareTo(BigDecimal.ZERO) == 0){
+        if (lastTotal.compareTo(BigDecimal.ZERO) != 0) {
+            qoq = thisTotal.subtract(lastTotal)
+                    .divide(lastTotal, MathContext.DECIMAL64)
+                    .multiply(BigDecimal.valueOf(100))
+                    .setScale(2, RoundingMode.HALF_UP);
+            if (thisTotal.compareTo(BigDecimal.ZERO) == 0) {
                 qoq = BigDecimal.valueOf(0);
             }
         }
@@ -95,21 +103,53 @@ public class EnergyElectricityServiceImpl extends ServiceImpl<EnergyElectricityM
     public EnergyElectricityTrendVo listTrend(EnergyElectricityListParm energyElectricityListParm) {
         String type = energyElectricityListParm.getType();
         String pigpenId = energyElectricityListParm.getPigpenId();
-        String location = basePigpenMapper.selectById(pigpenId).getFullName();
+        String orgId = energyElectricityListParm.getOrgId();
+        String location;
+        List<String> pigpenList = new ArrayList<>();
+        if (ObjectUtil.isNotEmpty(pigpenId)){
+            BasePigpen basePigpen = basePigpenMapper.selectById(pigpenId);
+            location = basePigpen.getFullName();
+            Integer pigpenType = basePigpen.getType();
+            switch (pigpenType){
+                case 0:
+                    List<BasePigpen> basePigpens = basePigpenMapper.selectList(new QueryWrapper<BasePigpen>().lambda().eq(BasePigpen::getParentId, pigpenId));
+                    if (ObjectUtil.isNotEmpty(basePigpens)){
+                        List<String> collect = basePigpens.stream().map(basePigpen1 -> basePigpen1.getId()).collect(Collectors.toList());
+                        List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(new QueryWrapper<BasePigpen>().lambda().in(BasePigpen::getParentId, collect));
+                        if (ObjectUtil.isNotEmpty(basePigpens1)){
+                            pigpenList.addAll(basePigpens1.stream().map(basePigpen1 -> basePigpen1.getId()).collect(Collectors.toList()));
+                        }
+                    }
+                    break;
+                case 1:
+                    List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(new QueryWrapper<BasePigpen>().lambda().eq(BasePigpen::getParentId, pigpenId));
+                    if (ObjectUtil.isNotEmpty(basePigpens1)){
+                        pigpenList.addAll(basePigpens1.stream().map(basePigpen1 -> basePigpen1.getId()).collect(Collectors.toList()));
+                    }
+                    break;
+                case 2:
+                    pigpenList.add(pigpenId);
+                    break;
+                default:
+                    throw new CommonException("pigpenId参数错误!");
+            }
+        }else {
+            location = "全场";
+        }
         EnergyElectricityTrendVo electricityTrend = new EnergyElectricityTrendVo();
         List<EnergyElectricityListVo> energyElectricityList;
         if (type.equals("0")){
-            energyElectricityList = energyElectricityMapper.listToday(pigpenId);
+            energyElectricityList = energyElectricityMapper.listToday(pigpenList,orgId);
         }else if (type.equals("1")){
-            energyElectricityList = energyElectricityMapper.listWeek(pigpenId);
+            energyElectricityList = energyElectricityMapper.listWeek(pigpenList,orgId);
         }else if (type.equals("2")){
-            energyElectricityList = energyElectricityMapper.listMonth(pigpenId);
+            energyElectricityList = energyElectricityMapper.listMonth(pigpenList,orgId);
         }else if (type.equals("3")){
             String startDate = energyElectricityListParm.getStartDate() + " 00:00:00";
             String endDate = energyElectricityListParm.getEndDate() + " 23:59:59";
-            energyElectricityList = energyElectricityMapper.listCustom(pigpenId,startDate,endDate);
+            energyElectricityList = energyElectricityMapper.listCustom(pigpenList,startDate,endDate,orgId);
         }else {
-            energyElectricityList = energyElectricityMapper.listSevenDay(pigpenId);
+            energyElectricityList = energyElectricityMapper.listSevenDay(pigpenList,orgId);
         }
         electricityTrend.setLocation(location);
         electricityTrend.setEnergyElectricityList(energyElectricityList);
@@ -133,4 +173,10 @@ public class EnergyElectricityServiceImpl extends ServiceImpl<EnergyElectricityM
         }
         return resultList;
     }
+
+    @Override
+    public List<EnergyScreenVo> listScreenEnergy(String orgId) {
+        List<EnergyScreenVo> energyVoList = energyElectricityMapper.listScreenEnergy(orgId);
+        return energyVoList;
+    }
 }

+ 5 - 5
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyWater/mapper/EnergyWaterMapper.java

@@ -41,13 +41,13 @@ public interface EnergyWaterMapper extends BaseMapper<EnergyWater> {
 
     BigDecimal getMonthTotalByType(String stage, String orgId);
 
-    List<EnergyWaterListVo> listToday(String pigpenId);
+    List<EnergyWaterListVo> listToday(List<String> pigpenList, String orgId);
 
-    List<EnergyWaterListVo> listWeek(String pigpenId);
+    List<EnergyWaterListVo> listWeek(List<String> pigpenList, String orgId);
 
-    List<EnergyWaterListVo> listMonth(String pigpenId);
+    List<EnergyWaterListVo> listMonth(List<String> pigpenList, String orgId);
 
-    List<EnergyWaterListVo> listCustom(String pigpenId, String startDate, String endDate);
+    List<EnergyWaterListVo> listCustom(List<String> pigpenList, String startDate, String endDate, String orgId);
 
     List<EnergyWaterTopVo> listTodayTop(String orgId);
 
@@ -57,5 +57,5 @@ public interface EnergyWaterMapper extends BaseMapper<EnergyWater> {
 
     List<EnergyWaterTopVo> listCustomTop(String orgId, String startDate, String endDate);
 
-    List<EnergyWaterListVo> listSevenDay(String pigpenId);
+    List<EnergyWaterListVo> listSevenDay(List<String> pigpenList, String orgId);
 }

+ 22 - 17
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyWater/mapper/mapping/EnergyWaterMapper.xml

@@ -75,43 +75,46 @@
             AND MONTH(w.create_date) = MONTH(CURDATE())
             AND YEAR(w.create_date) = YEAR(CURDATE())
     </select>
-    <select id="listToday" resultType="vip.xiaonuo.modular.energy.energyWater.entity.vo.EnergyWaterListVo" parameterType="java.lang.String">
+    <select id="listToday" resultType="vip.xiaonuo.modular.energy.energyWater.entity.vo.EnergyWaterListVo">
         SELECT
             water_value AS 'waterValue', create_date AS 'createTime'
         FROM
             `energy_water`
         WHERE
-            unit_id = #{pigpenId}
-            AND DATE(create_date) = CURRENT_DATE
+            DATE(create_date) = CURRENT_DATE
+            AND org_id = #{orgId}
+            AND (LENGTH(#{pigpenList}) = 0 OR unit_id IN (#{pigpenList}))
         ORDER BY
          createTime ASC
     </select>
 
-    <select id="listWeek" resultType="vip.xiaonuo.modular.energy.energyWater.entity.vo.EnergyWaterListVo" parameterType="java.lang.String">
+    <select id="listWeek" resultType="vip.xiaonuo.modular.energy.energyWater.entity.vo.EnergyWaterListVo">
         SELECT
-            ROUND(AVG(water_value), 2) AS 'waterValue',
+            ROUND(SUM(water_value), 2) AS 'waterValue',
             DATE(create_date) AS 'createTime'
         FROM
             `energy_water`
         WHERE
-            unit_id = #{pigpenId}
-            AND YEARWEEK(create_date, 1) = YEARWEEK(CURDATE(), 1)
+            YEARWEEK(create_date, 1) = YEARWEEK(CURDATE(), 1)
+            AND org_id = #{orgId}
+            AND (LENGTH(#{pigpenList}) = 0 OR unit_id IN (#{pigpenList}))
         GROUP BY
             DATE(create_date)
         ORDER BY
             DATE(create_date) ASC;
     </select>
 
-    <select id="listMonth" resultType="vip.xiaonuo.modular.energy.energyWater.entity.vo.EnergyWaterListVo" parameterType="java.lang.String">
+    <select id="listMonth" resultType="vip.xiaonuo.modular.energy.energyWater.entity.vo.EnergyWaterListVo">
         SELECT
-            ROUND(AVG(water_value), 2) AS 'waterValue',
+            ROUND(SUM(water_value), 2) AS 'waterValue',
             DATE(create_date) AS 'createTime'
         FROM
             `energy_water`
         WHERE
-            unit_id = #{pigpenId}
-            AND MONTH(create_date) = MONTH(CURDATE())
+            MONTH(create_date) = MONTH(CURDATE())
             AND YEAR(create_date) = YEAR(CURDATE())
+            AND org_id = #{orgId}
+            AND (LENGTH(#{pigpenList}) = 0 OR unit_id IN (#{pigpenList}))
         GROUP BY
             DATE(create_date)
         ORDER BY
@@ -119,13 +122,14 @@
     </select>
     <select id="listCustom" resultType="vip.xiaonuo.modular.energy.energyWater.entity.vo.EnergyWaterListVo">
         SELECT
-            ROUND(AVG(water_value), 2) AS 'waterValue',
+            ROUND(SUM(water_value), 2) AS 'waterValue',
             DATE(create_date) AS 'createTime'
         FROM
             `energy_water`
         WHERE
-            unit_id = #{pigpenId}
-            AND create_date BETWEEN #{startDate} AND #{endDate}
+            create_date BETWEEN #{startDate} AND #{endDate}
+            AND org_id = #{orgId}
+            AND (LENGTH(#{pigpenList}) = 0 OR unit_id IN (#{pigpenList}))
         GROUP BY
             DATE(create_date)
         ORDER BY
@@ -213,13 +217,14 @@
     </select>
     <select id="listSevenDay" resultType="vip.xiaonuo.modular.energy.energyWater.entity.vo.EnergyWaterListVo">
         SELECT
-            ROUND(AVG(water_value), 2) AS 'waterValue',
+            ROUND(SUM(water_value), 2) AS 'waterValue',
             DATE(create_date) AS 'createTime'
         FROM
             `energy_water`
         WHERE
-            unit_id = #{pigpenId}
-            AND create_date BETWEEN CURDATE() - INTERVAL 6 DAY AND CURDATE();
+            create_date BETWEEN CURDATE() - INTERVAL 6 DAY AND CURDATE();
+            AND org_id = #{orgId}
+            AND (LENGTH(#{pigpenList}) = 0 OR unit_id IN (#{pigpenList}))
         GROUP BY
             DATE(create_date)
         ORDER BY

+ 2 - 1
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyWater/param/EnergyWaterListParm.java

@@ -3,12 +3,13 @@ package vip.xiaonuo.modular.energy.energyWater.param;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
+import vip.xiaonuo.core.param.OrgIdParam;
 
 import javax.validation.constraints.NotBlank;
 
 @Getter
 @Setter
-public class EnergyWaterListParm {
+public class EnergyWaterListParm extends OrgIdParam {
     /** 栋舍ID */
     @ApiModelProperty(value = "栋舍ID", required = true, position = 1)
     @NotBlank(message = "栋舍ID不能为空")

+ 50 - 10
snowy-web-app/src/main/java/vip/xiaonuo/modular/energy/energyWater/service/impl/EnergyWaterServiceImpl.java

@@ -13,12 +13,15 @@
 package vip.xiaonuo.modular.energy.energyWater.service.impl;
 
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.modular.base.baseConfig.entity.BaseConfig;
 import vip.xiaonuo.modular.base.baseConfig.mapper.BaseConfigMapper;
+import vip.xiaonuo.modular.base.pigpen.entity.BasePigpen;
 import vip.xiaonuo.modular.base.pigpen.mapper.BasePigpenMapper;
 import vip.xiaonuo.modular.energy.energyElectricity.entity.vo.*;
 import vip.xiaonuo.modular.energy.energyWater.entity.EnergyWater;
@@ -29,6 +32,8 @@ import vip.xiaonuo.modular.energy.energyWater.param.EnergyWaterTopParm;
 import vip.xiaonuo.modular.energy.energyWater.service.EnergyWaterService;
 
 import java.math.BigDecimal;
+import java.math.MathContext;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -55,7 +60,7 @@ public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, Energ
     public EnergyWaterProportionVo getProportion(String orgId, String type) {
         EnergyWaterProportionVo energyWaterProportion = new EnergyWaterProportionVo();
         BigDecimal thisTotal,lastTotal;
-        BigDecimal qoq = BigDecimal.valueOf(100);
+        BigDecimal qoq = BigDecimal.ZERO;
         String parentId = baseConfigMapper.selectOne(new QueryWrapper<BaseConfig>().eq("config_name", "栋舍阶段").eq("parent_id", 0)).getId();
         List<BaseConfig> buildStage = baseConfigMapper.selectList(new QueryWrapper<BaseConfig>().eq("parent_id", parentId).orderByAsc("sort_code"));
         List<String> stages = buildStage.stream().map(config -> config.getConfigName()).collect(Collectors.toList());
@@ -81,9 +86,12 @@ public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, Energ
                 rateList.add(rate);
             }
         }
-        if (lastTotal.compareTo(BigDecimal.ZERO) != 0){
-            qoq = thisTotal.subtract(lastTotal).divide(lastTotal).multiply(BigDecimal.valueOf(100));
-            if (thisTotal.compareTo(BigDecimal.ZERO) == 0){
+        if (lastTotal.compareTo(BigDecimal.ZERO) != 0) {
+            qoq = thisTotal.subtract(lastTotal)
+                    .divide(lastTotal, MathContext.DECIMAL64)
+                    .multiply(BigDecimal.valueOf(100))
+                    .setScale(2, RoundingMode.HALF_UP);
+            if (thisTotal.compareTo(BigDecimal.ZERO) == 0) {
                 qoq = BigDecimal.valueOf(0);
             }
         }
@@ -97,21 +105,53 @@ public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, Energ
     public EnergyWaterTrendVo listTrend(EnergyWaterListParm energyWaterListParm) {
         String type = energyWaterListParm.getType();
         String pigpenId = energyWaterListParm.getPigpenId();
-        String location = basePigpenMapper.selectById(pigpenId).getFullName();
+        String orgId = energyWaterListParm.getOrgId();
+        String location;
+        List<String> pigpenList = new ArrayList<>();
+        if (ObjectUtil.isNotEmpty(pigpenId)){
+            BasePigpen basePigpen = basePigpenMapper.selectById(pigpenId);
+            location = basePigpen.getFullName();
+            Integer pigpenType = basePigpen.getType();
+            switch (pigpenType){
+                case 0:
+                    List<BasePigpen> basePigpens = basePigpenMapper.selectList(new QueryWrapper<BasePigpen>().lambda().eq(BasePigpen::getParentId, pigpenId));
+                    if (ObjectUtil.isNotEmpty(basePigpens)){
+                        List<String> collect = basePigpens.stream().map(basePigpen1 -> basePigpen1.getId()).collect(Collectors.toList());
+                        List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(new QueryWrapper<BasePigpen>().lambda().in(BasePigpen::getParentId, collect));
+                        if (ObjectUtil.isNotEmpty(basePigpens1)){
+                            pigpenList.addAll(basePigpens1.stream().map(basePigpen1 -> basePigpen1.getId()).collect(Collectors.toList()));
+                        }
+                    }
+                    break;
+                case 1:
+                    List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(new QueryWrapper<BasePigpen>().lambda().eq(BasePigpen::getParentId, pigpenId));
+                    if (ObjectUtil.isNotEmpty(basePigpens1)){
+                        pigpenList.addAll(basePigpens1.stream().map(basePigpen1 -> basePigpen1.getId()).collect(Collectors.toList()));
+                    }
+                    break;
+                case 2:
+                    pigpenList.add(pigpenId);
+                    break;
+                default:
+                    throw new CommonException("pigpenId参数错误!");
+            }
+        }else {
+            location = "全场";
+        }
         EnergyWaterTrendVo waterTrend = new EnergyWaterTrendVo();
         List<EnergyWaterListVo> energyWaterList;
         if (type.equals("0")){
-            energyWaterList = energyWaterMapper.listToday(pigpenId);
+            energyWaterList = energyWaterMapper.listToday(pigpenList,orgId);
         }else if (type.equals("1")){
-            energyWaterList = energyWaterMapper.listWeek(pigpenId);
+            energyWaterList = energyWaterMapper.listWeek(pigpenList,orgId);
         }else if (type.equals("2")){
-            energyWaterList = energyWaterMapper.listMonth(pigpenId);
+            energyWaterList = energyWaterMapper.listMonth(pigpenList,orgId);
         }else if (type.equals("3")){
             String startDate = energyWaterListParm.getStartDate() + " 00:00:00";
             String endDate = energyWaterListParm.getEndDate() + " 23:59:59";
-            energyWaterList = energyWaterMapper.listCustom(pigpenId,startDate,endDate);
+            energyWaterList = energyWaterMapper.listCustom(pigpenList,startDate,endDate,orgId);
         }else {
-            energyWaterList = energyWaterMapper.listSevenDay(pigpenId);
+            energyWaterList = energyWaterMapper.listSevenDay(pigpenList,orgId);
         }
         waterTrend.setLocation(location);
         waterTrend.setList(energyWaterList);

+ 0 - 5
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/entity/EnvDeviceEquipment.java

@@ -57,11 +57,6 @@ public class EnvDeviceEquipment implements Serializable {
     private String chipCode;
 
     /**
-     * 设备名称
-     */
-    private String deviceName;
-
-    /**
      * 响应时间
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

+ 70 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/controller/EnvDeviceOnlineController.java

@@ -0,0 +1,70 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.env.envDeviceOnline.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.core.param.OrgIdParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.entity.EnvDeviceOnline;
+import vip.xiaonuo.modular.env.envDeviceOnline.param.EnvDeviceOnlineAddParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.param.EnvDeviceOnlineEditParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.param.EnvDeviceOnlineIdParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.param.EnvDeviceOnlinePageParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.service.EnvDeviceOnlineService;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 环控设备在线率控制器
+ *
+ * @author newspaper
+ * @date  2024/01/05 16:00
+ */
+@Api(tags = "环控设备在线率控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class EnvDeviceOnlineController {
+
+    @Resource
+    private EnvDeviceOnlineService envDeviceOnlineService;
+
+    /**
+     * 获取环控设备在线率分页
+     *
+     * @author newspaper
+     * @date  2024/01/05 16:00
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取环控设备在线率分页")
+    @GetMapping("/env/envDeviceOnline/listSevenDay")
+    public CommonResult<List<EnvDeviceOnline>> listSevenDay(OrgIdParam orgIdParam) {
+        return CommonResult.data(envDeviceOnlineService.listSevenDay(orgIdParam));
+    }
+
+}

+ 58 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/entity/EnvDeviceOnline.java

@@ -0,0 +1,58 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.env.envDeviceOnline.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 环控设备在线率实体
+ *
+ * @author newspaper
+ * @date  2024/01/05 16:00
+ **/
+@Getter
+@Setter
+@TableName("env_device_online")
+public class EnvDeviceOnline {
+
+    /** id */
+    @TableId
+    @ApiModelProperty(value = "id", position = 1)
+    private String id;
+
+    /** 设备在线数 */
+    @ApiModelProperty(value = "设备在线数", position = 2)
+    private Integer deviceOn;
+
+    /** 设备离线数 */
+    @ApiModelProperty(value = "设备离线数", position = 3)
+    private Integer deviceOff;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 4)
+    private LocalDateTime creatTime;
+
+    /** 在线率 */
+    @ApiModelProperty(value = "在线率", position = 5)
+    private BigDecimal onlineRate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 6)
+    private String orgId;
+}

+ 34 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/enums/EnvDeviceOnlineEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.env.envDeviceOnline.enums;
+
+import lombok.Getter;
+
+/**
+ * 环控设备在线率枚举
+ *
+ * @author newspaper
+ * @date  2024/01/05 16:00
+ **/
+@Getter
+public enum EnvDeviceOnlineEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    EnvDeviceOnlineEnum(String value) {
+        this.value = value;
+    }
+}

+ 29 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/mapper/EnvDeviceOnlineMapper.java

@@ -0,0 +1,29 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.env.envDeviceOnline.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.core.param.OrgIdParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.entity.EnvDeviceOnline;
+
+import java.util.List;
+
+/**
+ * 环控设备在线率Mapper接口
+ *
+ * @author newspaper
+ * @date  2024/01/05 16:00
+ **/
+public interface EnvDeviceOnlineMapper extends BaseMapper<EnvDeviceOnline> {
+    List<EnvDeviceOnline> listSevenDay(OrgIdParam orgIdParam);
+}

+ 17 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/mapper/mapping/EnvDeviceOnlineMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="vip.xiaonuo.modular.env.envDeviceOnline.mapper.EnvDeviceOnlineMapper">
+
+    <select id="listSevenDay" resultType="vip.xiaonuo.modular.env.envDeviceOnline.entity.EnvDeviceOnline">
+        SELECT
+            ROUND(AVG(device_on), 0) AS deviceOn,
+            ROUND(AVG(online_rate), 2) AS onlineRate,
+            DATE(creat_time) AS creatTime
+        FROM
+            `env_device_online`
+        WHERE
+            org_id = #{orgId} AND creat_time BETWEEN CURDATE() - INTERVAL 6 DAY AND CURDATE()
+        GROUP BY
+            DATE(creat_time);
+    </select>
+</mapper>

+ 54 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/param/EnvDeviceOnlineAddParam.java

@@ -0,0 +1,54 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.env.envDeviceOnline.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 环控设备在线率添加参数
+ *
+ * @author newspaper
+ * @date  2024/01/05 16:00
+ **/
+@Getter
+@Setter
+public class EnvDeviceOnlineAddParam {
+
+    /** 设备在线数 */
+    @ApiModelProperty(value = "设备在线数", position = 2)
+    private Integer deviceOn;
+
+    /** 设备离线数 */
+    @ApiModelProperty(value = "设备离线数", position = 3)
+    private Integer deviceOff;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 4)
+    private Date creatTime;
+
+    /** 在线率 */
+    @ApiModelProperty(value = "在线率", position = 5)
+    private BigDecimal onlineRate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 6)
+    private String orgId;
+
+}

+ 59 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/param/EnvDeviceOnlineEditParam.java

@@ -0,0 +1,59 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.env.envDeviceOnline.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 环控设备在线率编辑参数
+ *
+ * @author newspaper
+ * @date  2024/01/05 16:00
+ **/
+@Getter
+@Setter
+public class EnvDeviceOnlineEditParam {
+
+    /** id */
+    @ApiModelProperty(value = "id", required = true, position = 1)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 设备在线数 */
+    @ApiModelProperty(value = "设备在线数", position = 2)
+    private Integer deviceOn;
+
+    /** 设备离线数 */
+    @ApiModelProperty(value = "设备离线数", position = 3)
+    private Integer deviceOff;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 4)
+    private Date creatTime;
+
+    /** 在线率 */
+    @ApiModelProperty(value = "在线率", position = 5)
+    private BigDecimal onlineRate;
+
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 6)
+    private String orgId;
+
+}

+ 35 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/param/EnvDeviceOnlineIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.env.envDeviceOnline.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 环控设备在线率Id参数
+ *
+ * @author newspaper
+ * @date  2024/01/05 16:00
+ **/
+@Getter
+@Setter
+public class EnvDeviceOnlineIdParam {
+
+    /** id */
+    @ApiModelProperty(value = "id", required = true)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 51 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/param/EnvDeviceOnlinePageParam.java

@@ -0,0 +1,51 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.env.envDeviceOnline.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 环控设备在线率查询参数
+ *
+ * @author newspaper
+ * @date  2024/01/05 16:00
+ **/
+@Getter
+@Setter
+public class EnvDeviceOnlinePageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+}

+ 35 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/service/EnvDeviceOnlineService.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.env.envDeviceOnline.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.core.param.OrgIdParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.entity.EnvDeviceOnline;
+import vip.xiaonuo.modular.env.envDeviceOnline.param.EnvDeviceOnlineAddParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.param.EnvDeviceOnlineEditParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.param.EnvDeviceOnlineIdParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.param.EnvDeviceOnlinePageParam;
+
+import java.util.List;
+
+/**
+ * 环控设备在线率Service接口
+ *
+ * @author newspaper
+ * @date  2024/01/05 16:00
+ **/
+public interface EnvDeviceOnlineService extends IService<EnvDeviceOnline> {
+
+    List<EnvDeviceOnline> listSevenDay(OrgIdParam orgIdParam);
+}

+ 56 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envDeviceOnline/service/impl/EnvDeviceOnlineServiceImpl.java

@@ -0,0 +1,56 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.modular.env.envDeviceOnline.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.core.param.OrgIdParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.entity.EnvDeviceOnline;
+import vip.xiaonuo.modular.env.envDeviceOnline.mapper.EnvDeviceOnlineMapper;
+import vip.xiaonuo.modular.env.envDeviceOnline.param.EnvDeviceOnlineAddParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.param.EnvDeviceOnlineEditParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.param.EnvDeviceOnlineIdParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.param.EnvDeviceOnlinePageParam;
+import vip.xiaonuo.modular.env.envDeviceOnline.service.EnvDeviceOnlineService;
+
+import java.util.List;
+
+/**
+ * 环控设备在线率Service接口实现类
+ *
+ * @author newspaper
+ * @date  2024/01/05 16:00
+ **/
+@Service
+public class EnvDeviceOnlineServiceImpl extends ServiceImpl<EnvDeviceOnlineMapper, EnvDeviceOnline> implements EnvDeviceOnlineService {
+
+    @Autowired
+    private EnvDeviceOnlineMapper envDeviceOnlineMapper;
+
+    @Override
+    public List<EnvDeviceOnline> listSevenDay(OrgIdParam orgIdParam) {
+        List<EnvDeviceOnline> envDeviceOnlines = envDeviceOnlineMapper.listSevenDay(orgIdParam);
+        return envDeviceOnlines;
+    }
+}

+ 3 - 3
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envdata/mapper/mapping/EnvDataMapper.xml

@@ -81,8 +81,8 @@
                  MAX(update_time)
                 FROM `env_data`
         GROUP BY pigpen_id
-    )
-) d ON b.id = d.pigpen_id
-WHERE b.type = 2 AND b.org_id = #{orgId};
+            )
+        ) d ON b.id = d.pigpen_id
+        WHERE b.type = 2 AND b.full_name LIKE CONCAT('%', #{buildName}, '%') AND b.org_id = #{orgId};
     </select>
 </mapper>

+ 0 - 4
snowy-web-app/src/main/java/vip/xiaonuo/modular/env/envdevice/service/impl/EnvDeviceServiceImpl.java

@@ -125,7 +125,6 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
                 }else {
                     equipment.setChipCode(envDeviceAddParam.getDeviceCode() + "01"+i);
                 }
-                equipment.setDeviceName(envDeviceAddParam.getDeviceName());
                 equipment.setCreateTime(new Date());
                 equipment.setOrgId(envDeviceAddParam.getOrgId());
                 equipment.setDeviceType(0);
@@ -139,7 +138,6 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
                 }else {
                     equipment.setChipCode(envDeviceAddParam.getDeviceCode() + "02"+i);
                 }
-                equipment.setDeviceName(envDeviceAddParam.getDeviceName());
                 equipment.setCreateTime(new Date());
                 equipment.setOrgId(envDeviceAddParam.getOrgId());
                 equipment.setDeviceType(1);
@@ -188,7 +186,6 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
             }else {
                 equipment.setChipCode(envDeviceEditParam.getDeviceCode() + "01"+i);
             }
-            equipment.setDeviceName(envDeviceEditParam.getDeviceName());
             equipment.setCreateTime(new Date());
             equipment.setOrgId(envDeviceEditParam.getOrgId());
             equipment.setDeviceType(0);
@@ -202,7 +199,6 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
             }else {
                 equipment.setChipCode(envDeviceEditParam.getDeviceCode() + "02"+i);
             }
-            equipment.setDeviceName(envDeviceEditParam.getDeviceName());
             equipment.setCreateTime(new Date());
             equipment.setOrgId(envDeviceEditParam.getOrgId());
             equipment.setDeviceType(1);

+ 16 - 2
snowy-web-app/src/main/java/vip/xiaonuo/modular/warning/warningInfo/controller/WarningInfoController.java

@@ -27,6 +27,7 @@ import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
 import vip.xiaonuo.core.param.OrgIdParam;
+import vip.xiaonuo.modular.base.baseConfig.entity.BaseConfig;
 import vip.xiaonuo.modular.warning.warningInfo.entity.WarningInfo;
 import vip.xiaonuo.modular.warning.warningInfo.entity.vo.WarningInfoListVo;
 import vip.xiaonuo.modular.warning.warningInfo.entity.vo.WarningInfoProportionVo;
@@ -61,8 +62,8 @@ public class WarningInfoController {
      */
     @ApiOperationSupport(order = 1)
     @ApiOperation("获取预警分页")
-    @GetMapping("/warning/warningInfo/page")
-    public CommonResult<Page<WarningInfo>> page(WarningInfoPageParam warningInfoPageParam) {
+    @PostMapping("/warning/warningInfo/page")
+    public CommonResult<Page<WarningInfo>> page(@RequestBody WarningInfoPageParam warningInfoPageParam) {
         return CommonResult.data(warningInfoService.page(warningInfoPageParam));
     }
 
@@ -105,6 +106,19 @@ public class WarningInfoController {
         return CommonResult.data(warningInfoService.listWarningByType(warningTypeParam));
     }
 
+    /**
+     * 获取预警类别选择器
+     *
+     * @author newspaper
+     * @date  2023/12/26 13:40
+     */
+    @ApiOperationSupport(order = 4)
+    @ApiOperation("获取预警类别选择器")
+    @GetMapping("/warning/warningInfo/warningTypeSelector")
+    public CommonResult<List<BaseConfig>> warningTypeSelector() {
+        return CommonResult.data(warningInfoService.warningTypeSelector());
+    }
+
 
 
 }

+ 3 - 4
snowy-web-app/src/main/java/vip/xiaonuo/modular/warning/warningInfo/mapper/mapping/WarningInfoMapper.xml

@@ -2,11 +2,10 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="vip.xiaonuo.modular.warning.warningInfo.mapper.WarningInfoMapper">
 
-    <select id="listSevenDayWarning" resultType="vip.xiaonuo.modular.warning.warningInfo.entity.vo.WarningInfoListVo"
-            parameterType="java.lang.String">
+    <select id="listSevenDayWarning" parameterType="string" resultType="vip.xiaonuo.modular.warning.warningInfo.entity.vo.WarningInfoListVo">
         SELECT
             DATE(warning_time) AS 'time',
-            COUNT(*) AS 'value''
+            COUNT(*) AS 'value'
         FROM
             `warning_info`
         WHERE
@@ -15,6 +14,6 @@
         GROUP BY
             DATE(warning_time)
         ORDER BY
-            warningTime;
+            DATE(warning_time);
     </select>
 </mapper>

+ 5 - 1
snowy-web-app/src/main/java/vip/xiaonuo/modular/warning/warningInfo/param/WarningInfoWarningTypeParam.java

@@ -30,7 +30,11 @@ import javax.validation.constraints.NotBlank;
 public class WarningInfoWarningTypeParam extends OrgIdParam {
 
     /** 类型 */
-    @ApiModelProperty(value = "类型", required = true, example = "0全部,1环境,2能耗,3洗消,4饲喂")
+    @ApiModelProperty(value = "类型", required = true,position = 1, example = "0全部,1环境,2能耗,3巡检,4洗消,5饲喂,6设备,7erp")
     @NotBlank(message = "type不能为空")
     private String type;
+
+    /** 条数 */
+    @ApiModelProperty(value = "条数" ,position = 2)
+    private Integer num;
 }

+ 3 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/warning/warningInfo/service/WarningInfoService.java

@@ -15,6 +15,7 @@ package vip.xiaonuo.modular.warning.warningInfo.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import vip.xiaonuo.core.param.OrgIdParam;
+import vip.xiaonuo.modular.base.baseConfig.entity.BaseConfig;
 import vip.xiaonuo.modular.warning.warningInfo.entity.WarningInfo;
 import vip.xiaonuo.modular.warning.warningInfo.entity.vo.WarningInfoListVo;
 import vip.xiaonuo.modular.warning.warningInfo.entity.vo.WarningInfoProportionVo;
@@ -43,4 +44,6 @@ public interface WarningInfoService extends IService<WarningInfo> {
     List<WarningInfoListVo> listSevenDayWarning(OrgIdParam orgIdParam);
 
     List<WarningInfo> listWarningByType(WarningInfoWarningTypeParam warningTypeParam);
+
+    List<BaseConfig> warningTypeSelector();
 }

+ 38 - 4
snowy-web-app/src/main/java/vip/xiaonuo/modular/warning/warningInfo/service/impl/WarningInfoServiceImpl.java

@@ -45,9 +45,7 @@ import vip.xiaonuo.sys.modular.user.mapper.SysUserMapper;
 import javax.validation.constraints.NotBlank;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -153,6 +151,42 @@ public class WarningInfoServiceImpl extends ServiceImpl<WarningInfoMapper, Warni
 
     @Override
     public List<WarningInfo> listWarningByType(WarningInfoWarningTypeParam warningTypeParam) {
-        return null;
+        String type = warningTypeParam.getType();
+        String orgId = warningTypeParam.getOrgId();
+        Integer num = warningTypeParam.getNum();
+        String warningType;
+        List<WarningInfo> warningInfos = new ArrayList<>();
+        QueryWrapper<WarningInfo> queryWrapper = new QueryWrapper();
+        queryWrapper.lambda().eq(WarningInfo::getOrgId,orgId).orderByDesc(WarningInfo::getWarningTime);
+        if (ObjectUtil.isNotEmpty(num)){
+            queryWrapper.lambda().last("limit"+num);
+        }
+        Map<String, String> typeToConfigNameMapping = new HashMap<>();
+        typeToConfigNameMapping.put("1", "环境预警");
+        typeToConfigNameMapping.put("2", "能耗预警");
+        typeToConfigNameMapping.put("3", "巡检预警");
+        typeToConfigNameMapping.put("4", "洗消预警");
+        typeToConfigNameMapping.put("5", "饲喂预警");
+        typeToConfigNameMapping.put("6", "设备预警");
+        typeToConfigNameMapping.put("7", "erp预警");
+        if (typeToConfigNameMapping.containsKey(type)) {
+            // 根据type获取对应的configName
+            String configName = typeToConfigNameMapping.get(type);
+            // 通过查询数据库获取对应的warningType值
+            warningType = baseConfigMapper.selectOne(new QueryWrapper<BaseConfig>().lambda().eq(BaseConfig::getConfigName, configName)).getId();
+            queryWrapper.lambda().eq(WarningInfo::getWarningType,warningType);
+            warningInfos = this.list(queryWrapper);
+        }else if ("0".equals(type)){
+            warningInfos = this.list(queryWrapper);
+        }else {
+            throw new CommonException("参数范围错误!");
+        }
+        return warningInfos;
+    }
+
+    @Override
+    public List<BaseConfig> warningTypeSelector() {
+        String parentConfig = baseConfigMapper.selectOne(new QueryWrapper<BaseConfig>().lambda().eq(BaseConfig::getParentId, 0).eq(BaseConfig::getConfigName, "预警类型")).getId();
+        return baseConfigMapper.selectList(new QueryWrapper<BaseConfig>().lambda().eq(BaseConfig::getParentId, parentConfig).orderByAsc(BaseConfig::getSortCode));
     }
 }