Ver código fonte

预警信息

Newspaper 2 anos atrás
pai
commit
f5efe12dbe

+ 17 - 0
src/main/java/com/huimv/admin/controller/EnvWarningController.java

@@ -23,4 +23,21 @@ import java.util.Map;
 @RestController
 @RequestMapping("/env-warning")
 public class EnvWarningController {
+    @Autowired
+    private IEnvWarningService envWarningService;
+
+    @PostMapping("/listCount")
+    public Result listWarningCount(@RequestBody Map<String,String> paramsMap){
+        return envWarningService.listCount(paramsMap);
+    }
+
+    @PostMapping("/list")
+    public Result listWarning(@RequestBody Map<String ,String> paramsMap){
+        return envWarningService.listWarning(paramsMap);
+    }
+
+    @PostMapping("/listTop")
+    public Result listTop(@RequestBody Map<String ,String> paramsMap){
+        return envWarningService.listTop(paramsMap);
+    }
 }

+ 14 - 0
src/main/java/com/huimv/admin/entity/vo/WarningCountVo.java

@@ -0,0 +1,14 @@
+package com.huimv.admin.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class WarningCountVo {
+    private Integer value;
+
+    @JsonFormat(pattern = "yyyy-MM-dd" ,timezone = "GMT+8")
+    private LocalDateTime date;
+}

+ 13 - 0
src/main/java/com/huimv/admin/entity/vo/WarningTopVo.java

@@ -0,0 +1,13 @@
+package com.huimv.admin.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class WarningTopVo {
+    private String location;
+
+    private Integer count;
+}

+ 16 - 0
src/main/java/com/huimv/admin/entity/vo/WarningVo.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class WarningVo {
+    private String location;
+
+    @JsonFormat(pattern = "MM-dd HH:mm" ,timezone = "GMT+8")
+    private LocalDateTime date;
+
+    private String warningContent;
+}

+ 15 - 0
src/main/java/com/huimv/admin/mapper/EnvWarningMapper.java

@@ -1,7 +1,15 @@
 package com.huimv.admin.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.huimv.admin.entity.EnvWarning;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.admin.entity.vo.WarningCountVo;
+import com.huimv.admin.entity.vo.WarningTopVo;
+import com.huimv.admin.entity.vo.WarningVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +21,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface EnvWarningMapper extends BaseMapper<EnvWarning> {
 
+    Integer getCount(@Param(Constants.WRAPPER) QueryWrapper<EnvWarning> update_time);
+
+    List<WarningCountVo> getMonthCount(@Param(Constants.WRAPPER) QueryWrapper<EnvWarning> queryWrapper);
+
+    List<WarningVo> listWarning(String farmId);
+
+    List<WarningTopVo> listTop(String farmId);
 }

+ 5 - 0
src/main/java/com/huimv/admin/service/IEnvWarningService.java

@@ -15,4 +15,9 @@ import java.util.Map;
  * @since 2023-03-23
  */
 public interface IEnvWarningService extends IService<EnvWarning> {
+    Result listCount(Map<String, String> paramsMap);
+
+    Result listWarning(Map<String, String> paramsMap);
+
+    Result listTop(Map<String, String> paramsMap);
 }

+ 79 - 0
src/main/java/com/huimv/admin/service/impl/EnvWarningServiceImpl.java

@@ -1,11 +1,26 @@
 package com.huimv.admin.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.admin.common.utils.DataUill;
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.common.utils.ResultCode;
 import com.huimv.admin.entity.EnvWarning;
+import com.huimv.admin.entity.vo.WarningCountVo;
+import com.huimv.admin.entity.vo.WarningTopVo;
+import com.huimv.admin.entity.vo.WarningVo;
 import com.huimv.admin.mapper.EnvWarningMapper;
 import com.huimv.admin.service.IEnvWarningService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
 /**
  * <p>
  *  服务实现类
@@ -16,4 +31,68 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class EnvWarningServiceImpl extends ServiceImpl<EnvWarningMapper, EnvWarning> implements IEnvWarningService {
+    @Resource
+    private EnvWarningMapper envWarningMapper;
+
+    @Override
+    public Result listCount(Map<String, String> paramsMap) {
+        Date timesMonthmorning = DataUill.getTimesMonthmorning();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        String farmId = paramsMap.get("farmId");
+        QueryWrapper<EnvWarning> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id",farmId)
+                    .ge("update_time",timesMonthmorning);
+        Map resultMap = new HashMap();
+        List<WarningCountVo>  warningCountVos = envWarningMapper.getMonthCount(queryWrapper);
+        resultMap.put("data",warningCountVos);
+        Integer currentCount =  envWarningMapper.getCount(queryWrapper);
+        resultMap.put("currentValue",currentCount);
+        //上个月
+        //获取上个月的第一天
+        Calendar cal_1 = Calendar.getInstance();//获取当前日期
+        cal_1.add(Calendar.MONTH, -1);
+        cal_1.set(Calendar.DAY_OF_MONTH, 1);//设置为1号
+        cal_1.set(Calendar.HOUR_OF_DAY, 0);
+        cal_1.set(Calendar.MINUTE, 0);
+        cal_1.set(Calendar.SECOND, 0);
+        String firstDay = format.format(cal_1.getTime());
+        //获取上个月的最后一天
+        Calendar cal_2 = Calendar.getInstance();
+        cal_2.set(Calendar.DAY_OF_MONTH, 0);//设置为1号,当前日期既为本月第一天
+        cal_2.set(Calendar.HOUR_OF_DAY, 23);
+        cal_2.set(Calendar.MINUTE, 59);
+        cal_2.set(Calendar.SECOND, 59);
+        String lastDay = format.format(cal_2.getTime());
+        QueryWrapper<EnvWarning> wrapper = new QueryWrapper<>();
+        wrapper.eq("farm_id",farmId);
+        Integer lastCount = envWarningMapper.getCount(wrapper.between("update_time",firstDay,lastDay));
+        if (ObjectUtil.isNull(lastCount)){
+            resultMap.put("lastValue",0);
+            resultMap.put("gap",100);
+            return new Result(ResultCode.SUCCESS,resultMap);
+        }
+        resultMap.put("lastValue",lastCount) ;
+        double gap = ((currentCount.doubleValue() - lastCount.doubleValue()) / lastCount.doubleValue()) * 100;
+        if (ObjectUtil.isNull(gap)){
+            gap = 0.0;
+        }
+        BigDecimal bg = new BigDecimal(gap).setScale(2, RoundingMode.UP);
+        resultMap.put("gap",bg);
+        return new Result(ResultCode.SUCCESS,resultMap);
+    }
+
+    @Override
+    public Result listWarning(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        List<WarningVo> warningVos = envWarningMapper.listWarning(farmId);
+        return new Result(ResultCode.SUCCESS,warningVos);
+    }
+
+    @Override
+    public Result listTop(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        List<WarningTopVo> warningCountVos = envWarningMapper.listTop(farmId);
+        return new Result(ResultCode.SUCCESS,warningCountVos);
+    }
 }

+ 36 - 0
src/main/resources/mapper/EnvWarningMapper.xml

@@ -2,4 +2,40 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.huimv.admin.mapper.EnvWarningMapper">
 
+    <select id="getCount" resultType="integer">
+        select count(*) from `env_warning`
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="getMonthCount" resultType="com.huimv.admin.entity.vo.WarningCountVo">
+        select count(*) as 'value',update_time as 'date' from `env_warning`
+        ${ew.customSqlSegment}
+        GROUP BY DATE_FORMAT(update_time,"%y-%m-%d")
+    </select>
+
+    <select id="listWarning" resultType="com.huimv.admin.entity.vo.WarningVo">
+        SELECT CONCAT(b.build_name,a.build_name) AS  'location',w.warning_content,w.update_time AS DATE
+        FROM `base_pigpen` a INNER JOIN `base_pigpen` b ON a.parent_id =b.id AND b.parent_id != 0
+        LEFT JOIN `env_warning` w ON w.unit_id = a.id
+        WHERE w.farm_id = #{farmId}
+        ORDER BY w.update_time DESC
+    </select>
+
+    <select id="listTop" resultType="com.huimv.admin.entity.vo.WarningTopVo">
+        SELECT build_name as location,SUM(COUNT) as count
+        FROM (
+            SELECT c.id,c.build_name, SUM((SELECT COUNT(w.id) FROM env_warning w WHERE a.id=w.unit_id )) COUNT
+            FROM base_pigpen a
+            INNER JOIN base_pigpen b ON a.parent_id =b.id
+            INNER JOIN base_pigpen c ON b.parent_id =c.id
+            WHERE a.farm_id = #{farmId}
+            GROUP BY c.build_name
+        ) AS subquery
+        GROUP BY id
+        ORDER BY COUNT DESC
+        LIMIT 8
+    </select>
+
+
+
 </mapper>