Browse Source

Merge remote-tracking branch 'origin/master'

wangyangyang 4 years ago
parent
commit
cc0e29ee55

+ 11 - 0
common/pom.xml

@@ -10,6 +10,17 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>common</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-amqp</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.amqp</groupId>
+            <artifactId>spring-rabbit-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
     <build>
         <plugins>
             <plugin>

+ 118 - 0
common/src/main/java/com/huaxu/entity/Message.java

@@ -0,0 +1,118 @@
+package com.huaxu.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * (Message)实体类
+ *
+ * @author makejava
+ * @since 2020-11-16 14:31:15
+ */
+@Data
+@ApiModel
+public class Message implements Serializable {
+    private static final long serialVersionUID = 218863842329351978L;
+    /**
+     * 主键
+     */
+    @ApiModelProperty(value = "主键")
+    private Integer id;
+    /**
+     * 消息业务id
+     */
+    @ApiModelProperty(value = "消息业务id")
+    private String messageId;
+    /**
+     * 消息类型
+     */
+    @ApiModelProperty(value = "消息类型")
+    private Integer messageType;
+    /**
+     * 消息内容,如果需要动态使用,配合模板使用{key:value}形式
+     */
+    @ApiModelProperty(value = "消息内容,如果需要动态使用,配合模板使用{key:value}形式")
+    private String messageContent;
+    /**
+     * 模板id
+     */
+    @ApiModelProperty(value = "模板id")
+    private Integer messageTemplateId;
+    /**
+     * 跳转相对路径
+     */
+    @ApiModelProperty(value = "跳转相对路径")
+    private String url;
+    /**
+     * 消息状态
+     */
+    @ApiModelProperty(value = "消息状态")
+    private Integer messageStatus;
+    /**
+     * 用户标识
+     */
+    @ApiModelProperty(value = "用户标识")
+    private Integer userId;
+    /**
+     * 渠道
+     */
+    @ApiModelProperty(value = "渠道")
+    private Integer channel;
+    /**
+     * 标题
+     */
+    @ApiModelProperty(value = "标题")
+    private String title;
+    /**
+     * 租户标识
+     */
+    @ApiModelProperty(value = "租户标识")
+    private String tenantId;
+    /**
+     * 删除标识
+     */
+    @ApiModelProperty(value = "删除标识")
+    private Integer status;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    private Date dateCreate;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 保留字段
+     */
+    @ApiModelProperty(value = "保留字段")
+    private Integer uniqueFlag;
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
+    private Date dateUpdate;
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "消息类型")
+    private String typeName;
+    @ApiModelProperty(value = "类型名简称")
+    private String shortName;
+    @ApiModelProperty(value = "消息跳转绝对路径")
+    private String path;
+    @ApiModelProperty(value = "消息类型id")
+    private Integer typeId;
+}

+ 547 - 0
common/src/main/java/com/huaxu/util/DatesUtil.java

@@ -0,0 +1,547 @@
+package com.huaxu.util;
+
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+/*
+ * 由于为了以后使用方便,所有方法的返回类型都设为了 java.utils.Date 请在使用时根据自己的需要进行日期格式化处理,如:
+ * 
+ * import java.text.SimpleDateFormat;SimpleDateFormat simpleDateFormat = new
+ * SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String todayBegin =
+ * simpleDateFormat.format
+ * (DateUtils.getDayBegin());System.out.println(todayBegin );//输出结果为2017-10-26
+ * 00:00:00
+ */
+
+/**
+ * 日期工具类
+ */
+public class DatesUtil {
+	public static final String DATE_TIME_FORMAT="yyyy-MM-dd HH:mm:ss";
+	public static final String DATE_FORMAT = "yyyy-MM-dd";
+	
+	// 获取当天的开始时间
+	public static Date getDayBegin() {
+		Calendar cal = new GregorianCalendar();
+		cal.set(Calendar.HOUR_OF_DAY, 0);
+		cal.set(Calendar.MINUTE, 0);
+		cal.set(Calendar.SECOND, 0);
+		cal.set(Calendar.MILLISECOND, 0);
+		return cal.getTime();
+	}
+
+	// 获取当天的结束时间
+	public static Date getDayEnd() {
+		Calendar cal = new GregorianCalendar();
+		cal.set(Calendar.HOUR_OF_DAY, 23);
+		cal.set(Calendar.MINUTE, 59);
+		cal.set(Calendar.SECOND, 59);
+		return cal.getTime();
+	}
+
+	// 获取昨天的开始时间
+	public static Date getBeginDayOfYesterday() {
+		Calendar cal = new GregorianCalendar();
+		cal.setTime(getDayBegin());
+		cal.add(Calendar.DAY_OF_MONTH, -1);
+		return cal.getTime();
+	}
+
+	// 获取昨天的结束时间
+	public static Date getEndDayOfYesterDay() {
+		Calendar cal = new GregorianCalendar();
+		cal.setTime(getDayEnd());
+		cal.add(Calendar.DAY_OF_MONTH, -1);
+		return cal.getTime();
+	}
+
+	// 获取明天的开始时间
+	public static Date getBeginDayOfTomorrow() {
+		Calendar cal = new GregorianCalendar();
+		cal.setTime(getDayBegin());
+		cal.add(Calendar.DAY_OF_MONTH, 1);
+		return cal.getTime();
+	}
+
+	// 获取明天的结束时间
+	public static Date getEndDayOfTomorrow() {
+		Calendar cal = new GregorianCalendar();
+		cal.setTime(getDayEnd());
+		cal.add(Calendar.DAY_OF_MONTH, 1);
+		return cal.getTime();
+	}
+
+	// 获取本周的开始时间
+	@SuppressWarnings("unused")
+	public static Date getBeginDayOfWeek() {
+		Date date = new Date();
+		if (date == null) {
+			return null;
+		}
+		Calendar cal = Calendar.getInstance();
+		cal.setTime(date);
+		int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
+		if (dayofweek == 1) {
+			dayofweek += 7;
+		}
+		cal.add(Calendar.DATE, 2 - dayofweek);
+		return getDayStartTime(cal.getTime());
+	}
+
+	// 获取本周的结束时间
+	public static Date getEndDayOfWeek() {
+		Calendar cal = Calendar.getInstance();
+		cal.setTime(getBeginDayOfWeek());
+		cal.add(Calendar.DAY_OF_WEEK, 6);
+		Date weekEndSta = cal.getTime();
+		return getDayEndTime(weekEndSta);
+	}
+
+	// 获取上周的开始时间
+	@SuppressWarnings("unused")
+	public static Date getBeginDayOfLastWeek() {
+		Date date = new Date();
+		if (date == null) {
+			return null;
+		}
+		Calendar cal = Calendar.getInstance();
+		cal.setTime(date);
+		int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
+		if (dayofweek == 1) {
+			dayofweek += 7;
+		}
+		cal.add(Calendar.DATE, 2 - dayofweek - 7);
+		return getDayStartTime(cal.getTime());
+	}
+
+	// 获取上周的结束时间
+	public static Date getEndDayOfLastWeek() {
+		Calendar cal = Calendar.getInstance();
+		cal.setTime(getBeginDayOfLastWeek());
+		cal.add(Calendar.DAY_OF_WEEK, 6);
+		Date weekEndSta = cal.getTime();
+		return getDayEndTime(weekEndSta);
+	}
+
+	// 获取本月的开始时间
+	public static Date getBeginDayOfMonth() {
+		Calendar calendar = Calendar.getInstance();
+		calendar.set(getNowYear(), getNowMonth() - 1, 1);
+		return getDayStartTime(calendar.getTime());
+	}
+
+	// 获取本月的结束时间
+	public static Date getEndDayOfMonth() {
+		Calendar calendar = Calendar.getInstance();
+		calendar.set(getNowYear(), getNowMonth() - 1, 1);
+		int day = calendar.getActualMaximum(5);
+		calendar.set(getNowYear(), getNowMonth() - 1, day);
+		return getDayEndTime(calendar.getTime());
+	}
+
+	// 获取上月的开始时间
+	public static Date getBeginDayOfLastMonth() {
+		Calendar calendar = Calendar.getInstance();
+		calendar.set(getNowYear(), getNowMonth() - 2, 1);
+		return getDayStartTime(calendar.getTime());
+	}
+
+	// 获取上月的结束时间
+	public static Date getEndDayOfLastMonth() {
+		Calendar calendar = Calendar.getInstance();
+		calendar.set(getNowYear(), getNowMonth() - 2, 1);
+		int day = calendar.getActualMaximum(5);
+		calendar.set(getNowYear(), getNowMonth() - 2, day);
+		return getDayEndTime(calendar.getTime());
+	}
+
+	// 获取本年的开始时间
+	public static Date getBeginDayOfYear() {
+		Calendar cal = Calendar.getInstance();
+		cal.set(Calendar.YEAR, getNowYear());
+		cal.set(Calendar.MONTH, Calendar.JANUARY);
+		cal.set(Calendar.DATE, 1);
+		return getDayStartTime(cal.getTime());
+	}
+
+	// 获取本年的结束时间
+	public static Date getEndDayOfYear() {
+		Calendar cal = Calendar.getInstance();
+		cal.set(Calendar.YEAR, getNowYear());
+		cal.set(Calendar.MONTH, Calendar.DECEMBER);
+		cal.set(Calendar.DATE, 31);
+		return getDayEndTime(cal.getTime());
+	}
+
+	// 获取某个日期的开始时间
+	public static Timestamp getDayStartTime(Date d) {
+		Calendar calendar = Calendar.getInstance();
+		if (null != d)
+			calendar.setTime(d);
+		calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
+				calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+		calendar.set(Calendar.MILLISECOND, 0);
+		return new Timestamp(calendar.getTimeInMillis());
+	}
+
+	// 获取某个日期的结束时间
+	public static Timestamp getDayEndTime(Date d) {
+		Calendar calendar = Calendar.getInstance();
+		if (null != d)
+			calendar.setTime(d);
+		calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
+				calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
+		calendar.set(Calendar.MILLISECOND, 999);
+		return new Timestamp(calendar.getTimeInMillis());
+	}
+
+	// 获取今年是哪一年
+	public static Integer getNowYear() {
+		Date date = new Date();
+		GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
+		gc.setTime(date);
+		return Integer.valueOf(gc.get(1));
+	}
+
+	// 获取本月是哪一月
+	public static int getNowMonth() {
+		Date date = new Date();
+		GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
+		gc.setTime(date);
+		return gc.get(2) + 1;
+	}
+
+	// 两个日期相减得到的天数
+	public static int getDiffDays(Date beginDate, Date endDate) {
+		if (beginDate == null || endDate == null) {
+			throw new IllegalArgumentException("getDiffDays param is null!");
+		}
+		long diff = (endDate.getTime() - beginDate.getTime())
+				/ (1000 * 60 * 60 * 24);
+		int days = new Long(diff).intValue();
+		return days;
+	}
+
+	// 两个日期相减得到的毫秒数
+	public static long dateDiff(Date beginDate, Date endDate) {
+		long date1ms = beginDate.getTime();
+		long date2ms = endDate.getTime();
+		return date2ms - date1ms;
+	}
+
+	// 获取两个日期中的最大日期
+	public static Date max(Date beginDate, Date endDate) {
+		if (beginDate == null) {
+			return endDate;
+		}
+		if (endDate == null) {
+			return beginDate;
+		}
+		if (beginDate.after(endDate)) {
+			return beginDate;
+		}
+		return endDate;
+	}
+
+	// 获取两个日期中的最小日期
+	public static Date min(Date beginDate, Date endDate) {
+		if (beginDate == null) {
+			return endDate;
+		}
+		if (endDate == null) {
+			return beginDate;
+		}
+		if (beginDate.after(endDate)) {
+			return endDate;
+		}
+		return beginDate;
+	}
+
+	// 返回某月该季度的第一个月
+	public static Date getFirstSeasonDate(Date date) {
+		final int[] SEASON = { 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4 };
+		Calendar cal = Calendar.getInstance();
+		cal.setTime(date);
+		int sean = SEASON[cal.get(Calendar.MONTH)];
+		cal.set(Calendar.MONTH, sean * 3 - 3);
+		return cal.getTime();
+	}
+
+	// 返回某个日期下几天的日期
+	public static Date getNextDay(Date date, int i) {
+		Calendar cal = new GregorianCalendar();
+		cal.setTime(date);
+		cal.set(Calendar.HOUR_OF_DAY, 0);
+		cal.set(Calendar.MINUTE, 0);
+		cal.set(Calendar.SECOND, 0);
+		cal.set(Calendar.DATE, cal.get(Calendar.DATE) + i);
+		return cal.getTime();
+	}
+
+	public static Date getNextMonth(Date date ,int i){
+		Calendar cal = new GregorianCalendar();
+		cal.setTime(date);
+		cal.set(Calendar.HOUR_OF_DAY, 0);
+		cal.set(Calendar.MINUTE, 0);
+		cal.set(Calendar.SECOND, 0);
+		cal.add(Calendar.MONTH, 0);
+		cal.set(Calendar.DAY_OF_MONTH, 1);
+		cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + i);
+		return cal.getTime();
+	}
+
+	// 返回某个日期前几天的日期
+	public static Date getFrontDay(Date date, int i) {
+		Calendar cal = new GregorianCalendar();
+		cal.setTime(date);
+		cal.set(Calendar.DATE, cal.get(Calendar.DATE) - i);
+		return cal.getTime();
+	}
+
+	// 获取某年某月到某年某月按天的切片日期集合(间隔天数的集合)
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public static List getTimeList(int beginYear, int beginMonth, int endYear,
+			int endMonth, int k) {
+		List list = new ArrayList();
+		if (beginYear == endYear) {
+			for (int j = beginMonth; j <= endMonth; j++) {
+				list.add(getTimeList(beginYear, j, k));
+			}
+		} else {
+			{
+				for (int j = beginMonth; j < 12; j++) {
+					list.add(getTimeList(beginYear, j, k));
+				}
+				for (int i = beginYear + 1; i < endYear; i++) {
+					for (int j = 0; j < 12; j++) {
+						list.add(getTimeList(i, j, k));
+					}
+				}
+				for (int j = 0; j <= endMonth; j++) {
+					list.add(getTimeList(endYear, j, k));
+				}
+			}
+		}
+		return list;
+	}
+
+	// 获取某年某月按天切片日期集合(某个月间隔多少天的日期集合)
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	public static List getTimeList(int beginYear, int beginMonth, int k) {
+		List list = new ArrayList();
+		Calendar begincal = new GregorianCalendar(beginYear, beginMonth, 1);
+		int max = begincal.getActualMaximum(Calendar.DATE);
+		for (int i = 1; i < max; i = i + k) {
+			list.add(begincal.getTime());
+			begincal.add(Calendar.DATE, k);
+		}
+		begincal = new GregorianCalendar(beginYear, beginMonth, max);
+		list.add(begincal.getTime());
+		return list;
+	}
+
+	public static String formatNow(String format) {
+		SimpleDateFormat sdf = new SimpleDateFormat(format);
+		String formatStr = sdf.format(new Date());
+		return formatStr;
+	}
+	public static String formatNow() {
+		SimpleDateFormat sdf = new SimpleDateFormat(DATE_TIME_FORMAT);
+		String formatStr = sdf.format(new Date());
+		return formatStr;
+	}
+	public static String formatDate(Date date ,String format) {
+		SimpleDateFormat sdf = new SimpleDateFormat(format);
+		String formatStr = sdf.format(date);
+		return formatStr;
+	}
+	// 当前日期的后几天
+	public static Date afterNow(int day) {
+		Calendar cal=Calendar.getInstance();
+    	cal.add(Calendar.DATE,Math.abs(day));
+    	Date time=cal.getTime();
+		return time;
+	}
+	// 当前日期的前几天
+	public static Date beforeNow(int day) {
+		Calendar cal=Calendar.getInstance();
+    	cal.add(Calendar.DATE,-Math.abs(day));
+    	Date time=cal.getTime();
+		return time;
+	}
+	public static Date before(Date date ,int n) {
+		Calendar cal=Calendar.getInstance();
+		cal.setTime(date);
+		cal.add(Calendar.DATE,-n);
+		return cal.getTime();
+	}
+	public static Date after(Date date,int n) {
+		Calendar cal=Calendar.getInstance();
+		cal.setTime(date);
+		cal.add(Calendar.DATE,n);
+		return cal.getTime();
+	}
+	public static List<String>  beforeNowDateArray(int day){
+		List<String> dates = new ArrayList<String>();
+		Calendar cal=Calendar.getInstance();
+		for(int i =1 ;i<=Math.abs(day);i++) {
+			cal.add(Calendar.DATE,-1);
+			dates.add(formatDate(cal.getTime(),"yyyyMMdd"));
+		}
+		return dates;
+	}
+	public static Set<String> betweenDate(Date startDate ,Date endDate){
+		Set<String> dates = new HashSet<String>();
+		Calendar cal=Calendar.getInstance();
+		cal.setTime(endDate);
+		while(endDate.after(startDate)) {
+			dates.add(formatDate(cal.getTime(),"yyyyMMdd"));
+			cal.add(Calendar.DATE,-1);
+			cal.setTime(cal.getTime());
+			endDate = cal.getTime();
+		}
+		dates.add(formatDate(startDate,"yyyyMMdd"));
+		return dates;
+	}
+
+	public static Set<String> betweenMonth(Date startDate ,Date endDate){
+		Set<String> dates = new HashSet<>();
+		Calendar cal=Calendar.getInstance();
+		cal.setTime(endDate);
+		while(endDate.after(startDate)) {
+			dates.add(formatDate(cal.getTime(),"yyyyMM"));
+			cal.add(Calendar.MONTH,-1);
+			cal.setTime(cal.getTime());
+			endDate = cal.getTime();
+		}
+		dates.add(formatDate(startDate,"yyyyMM"));
+		return dates;
+	}
+	public static Date parseDate(String dateStr,String format) {
+		Date date = null ;
+		SimpleDateFormat sdf = new SimpleDateFormat(format);
+		try {
+			date = sdf.parse(dateStr);
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+		return date;
+	}
+	/**
+	 * 判断某一时间是否在一个区间内
+	 *
+	 * @param sourceTime
+	 *            时间区间,半闭合,如[10:00-20:00]
+	 * @param curTime
+	 *            需要判断的时间 如10:00
+	 * @return
+	 * @throws IllegalArgumentException
+	 */
+	public static boolean isInTime(String sourceTime, String curTime) {
+	    if (sourceTime == null || !sourceTime.contains("-") || !sourceTime.contains(":")) {
+	        throw new IllegalArgumentException("Illegal Argument arg:" + sourceTime);
+	    }
+	    if (curTime == null || !curTime.contains(":")) {
+	        throw new IllegalArgumentException("Illegal Argument arg:" + curTime);
+	    }
+	    String[] args = sourceTime.split("-");
+	    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
+	    try {
+	        long now = sdf.parse(curTime).getTime();
+	        long start = sdf.parse(args[0]).getTime();
+	        long end = sdf.parse(args[1]).getTime();
+	        if (args[1].equals("00:00")) {
+	            args[1] = "24:00";
+	        }
+	        if (end < start) {
+	            if (now > end && now < start) {
+	                return false;
+	            } else {
+	                return true;
+	            }
+	        }
+	        else {
+	            if (now >= start && now <= end) {
+	                return true;
+	            } else {
+	                return false;
+	            }
+	        }
+	    } catch (ParseException e) {
+	        e.printStackTrace();
+	        throw new IllegalArgumentException("Illegal Argument arg:" + sourceTime);
+	    }
+	}
+	public static Date before(Date d ,long milSeconds) {
+		return new Date(d.getTime()-milSeconds);
+	}
+	public static Date yesterdayLastDate() {
+	    Calendar calendar = Calendar.getInstance();
+	    calendar.setTime(new Date());
+	    calendar.add(Calendar.DATE, -1);
+	    calendar.set(Calendar.HOUR_OF_DAY, 23);
+	    calendar.set(Calendar.MINUTE, 59);
+	    calendar.set(Calendar.SECOND, 59);
+	    calendar.set(Calendar.MILLISECOND, 999);
+	    return calendar.getTime();
+	}
+
+	public static Date dateToISODate(Date date) {
+		//T代表后面跟着时间,Z代表UTC统一时间
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+		format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
+		String isoDate = format.format(date);
+		try {
+			return format.parse(isoDate);
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	public static Date beforeMonth(int month){
+		Date date = new Date();
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(date); // 设置为当前时间
+		calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1); // 设置为上一个月
+		date = calendar.getTime();
+		return date ;
+	}
+
+	public static Date beforeYear(int year){
+		Date date = new Date();
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(date); // 设置为当前时间
+		calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) - 1); // 设置为上一年
+		date = calendar.getTime();
+		return date ;
+	}
+	// Wed Jan 02 03:09:49 CST 2019 -> 2019-02-02 03:09:49
+	public static String  format(String timeString){
+		try {
+			SimpleDateFormat sfStart = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH) ;
+			SimpleDateFormat sfEnd = new SimpleDateFormat(DATE_TIME_FORMAT);
+			String format = sfEnd.format(sfStart.parse(timeString));
+			return format ;
+		}catch (Exception e){
+			e.printStackTrace();
+		}
+		return null ;
+	}
+	public static void main(String[] args) {
+		//String d = "2019-11-14 13:10:16";
+		//System.out.println(DatesUtil.parseDate(d, DatesUtil.DATE_TIME_FORMAT));
+//		System.out.println(DatesUtil.formatDate(getNextDay(DatesUtil.beforeNow(7),1), DatesUtil.DATE_TIME_FORMAT));
+//		System.out.println(DatesUtil.formatDate(getNextDay(DatesUtil.beforeMonth(1),1), DatesUtil.DATE_TIME_FORMAT));
+//		Set<String> iter = DatesUtil.betweenDate(DatesUtil.beforeMonth(1), new Date());
+//		System.out.println(DatesUtil.formatDate(getNextMonth(DatesUtil.beforeYear(1),1), DatesUtil.DATE_TIME_FORMAT));
+//		Set<String> iter1 = DatesUtil.betweenMonth(DatesUtil.beforeYear(1),new Date());
+//		System.out.println(JSON.toJSONString(iter));
+//		System.out.println(JSON.toJSONString(iter1));
+
+		String d = "Wed Jan 02 03:09:49 CST 2019";
+		System.out.println(DatesUtil.format(d));
+
+	}
+}

+ 21 - 0
common/src/main/java/com/huaxu/util/MessageSendUtil.java

@@ -0,0 +1,21 @@
+package com.huaxu.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.huaxu.entity.Message;
+import org.springframework.amqp.core.AmqpTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+public class MessageSendUtil {
+    @Autowired
+    private AmqpTemplate rabbitTemplate;
+    @Value("${receive.exchange.name}")
+    private  String receiveExchangeName;
+    @Value("${dispath.routing.key}")
+    private  String dispathRoutingKey;
+    public void send(Message message){
+        rabbitTemplate.convertAndSend(receiveExchangeName,dispathRoutingKey, JSONObject.toJSONString(message));
+    }
+}

+ 1 - 1
sms_water/src/main/java/com/huaxu/controller/MonitorDataReportController.java

@@ -150,7 +150,7 @@ public class MonitorDataReportController {
 
     @RequestMapping(value = "sceneNormalRates",method = RequestMethod.GET)
     @ApiOperation(value = "概览首页——管网水质情况")
-    public AjaxMessage<List<SceneNormalRate>> SceneNormalRates(){
+    public AjaxMessage<List<SceneNormalRate>> sceneNormalRates(){
         return new AjaxMessage<>(ResultStatus.OK,monitorDataReportService.SceneNormalRates());
     }
 

+ 3 - 1
sms_water/src/main/java/com/huaxu/dto/generalView/SceneWaterPressure.java

@@ -36,7 +36,9 @@ public class SceneWaterPressure implements Serializable {
     @ApiModelProperty("最大压力场景名称")
     private String maxPressureSceneName;
     @ApiModelProperty("最大压力值")
-    private BigDecimal MaxPressureValue;
+    private BigDecimal maxPressureValue;
+    @ApiModelProperty("平均压力值")
+    private BigDecimal avgPressureValue;
 
     public SceneWaterPressure(){
         this.pressureLevel1=0;

+ 295 - 289
sms_water/src/main/java/com/huaxu/service/impl/MonitorDataReportServiceImpl.java

@@ -258,295 +258,295 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
     @Override
     public GeneralViewResults monitorDataGeneralView() {
         GeneralViewResults generalViewResults = new GeneralViewResults();
-        LoginUser loginUser = UserUtil.getCurrentUser();
-        String tenantId = loginUser.getTenantId();
-        //查询设备编码
-        List<String> deviceCodes = monitorDataReportMapper.selectDeviceCode(tenantId);
-        //根据编码获取redis中的实时数据
-        List<MonitorDataEntity> monitorDataEntities = new ArrayList<>();
-        for (String deviceCode : deviceCodes) {
-            //先取缓存里的数据
-            byte[] bytes = redisUtil.get(("sms_water_" + deviceCode).getBytes());
-            if (bytes != null && bytes.length > 0) {
-                monitorDataEntities.add((MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get());
-            }
-        }
-        //将获取到 实时数据转换为map,方便匹配数据deviceId
-        Map<Integer, MonitorDataEntity> MonitorDataMap = monitorDataEntities.stream().collect(Collectors.toMap(MonitorDataEntity::getDeviceId, a -> a, (k1, k2) -> k1));
-
-
-        LocalDate localDate = LocalDate.now();
-        //水厂近30天供水量
-        List<DeviceWaterSupply> deviceWaterSupplies = monitorDataReportMapper.getDeviceWaterFor30Day(tenantId);
-        for (int i = 0; i < 30; i++) {
-            LocalDate newLocalDate = localDate.plusDays(-i - 1);
-            if (i <= deviceWaterSupplies.size()
-                    || !newLocalDate.isEqual(LocalDate.of(deviceWaterSupplies.get(i).getYear(),
-                    deviceWaterSupplies.get(i).getMonth(),
-                    deviceWaterSupplies.get(i).getDay()))) {
-
-                DeviceWaterSupply deviceWaterSupply = new DeviceWaterSupply();
-                deviceWaterSupply.setOrderNo(i + 1);
-                deviceWaterSupply.setAmount(BigDecimal.ZERO);
-                deviceWaterSupply.setYear(newLocalDate.getYear());
-                deviceWaterSupply.setMonth(newLocalDate.getMonthValue());
-                deviceWaterSupply.setDay(newLocalDate.getDayOfMonth());
-                deviceWaterSupply.setDate(newLocalDate);
-                deviceWaterSupplies.add(i, deviceWaterSupply);
-            } else {
-                deviceWaterSupplies.get(i).setOrderNo(i + 1);
-                deviceWaterSupplies.get(i).setDate(newLocalDate);
-            }
-        }
-        //0 30天水量
-        generalViewResults.setDeviceWaterSupplies(deviceWaterSupplies);
-
-        //供水详情数据(合计:瞬时、本天、本月、本年)
-        DeviceWaterAmount deviceWaterAmount = new DeviceWaterAmount();
-        //14瞬时流量
-        List<DeviceWaterDetail> deviceSupplyWaterDetailsForNow = monitorDataReportMapper.getDeviceWaterDetailForNow("水厂", 14, tenantId);
-        List<DeviceWaterDetail> deviceIntakeWaterDetailsForNow = monitorDataReportMapper.getDeviceWaterDetailForNow("水源", 14, tenantId);
-
-        //水厂获取实时流量并计算出当天流量
-        for (DeviceWaterDetail deviceWaterDetail : deviceSupplyWaterDetailsForNow) {
-            MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
-            if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
-                for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
-                    if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
-                        //水厂累计瞬时流量
-                        deviceWaterAmount.addWaterSupplyAmountForNow(new BigDecimal(monitorDataValueEntity.getDataValue()));
-                    }
-                }
-            }
-
-        }
-        //水源获取实时流量并计算出当天流量
-        for (DeviceWaterDetail deviceWaterDetail : deviceIntakeWaterDetailsForNow) {
-            MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
-            if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
-                for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
-                    if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
-                        //水源累计瞬时流量
-                        deviceWaterAmount.addWaterIntakeAmountForNow(new BigDecimal(monitorDataValueEntity.getDataValue()));
-                    }
-                }
-            }
-        }
-
-        //3供水 4取水
-        List<DeviceWaterDetail> deviceSupplyWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay("水厂", 3, tenantId, localDate.getYear(), localDate.getMonthValue(), localDate.getDayOfMonth());
-        List<DeviceWaterDetail> deviceIntakeWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay("水源", 4, tenantId, localDate.getYear(), localDate.getMonthValue(), localDate.getDayOfMonth());
-
-        //水厂获取实时流量并计算出当天流量
-        for (DeviceWaterDetail deviceWaterDetail : deviceSupplyWaterDetailsForDay) {
-            MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
-            if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
-                for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
-                    if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
-                        //累计当天流量
-                        deviceWaterAmount.addWaterSupplyAmountForDay(new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()).add(deviceWaterDetail.getAmount()));
-                    }
-                }
-            }
-
-        }
-        //水源获取实时流量并计算出当天流量
-        for (DeviceWaterDetail deviceWaterDetail : deviceIntakeWaterDetailsForDay) {
-            MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
-            if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
-                for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
-                    if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
-                        //累计当天流量
-                        deviceWaterAmount.addWaterIntakeAmountForDay(new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()).add(deviceWaterDetail.getAmount()));
-                    }
-                }
-            }
-        }
-
-        BigDecimal waterSupplyAmountForMonth = monitorDataReportMapper.getDeviceWaterDetailForMonth("水厂", 3, tenantId, localDate.getYear(), localDate.getMonthValue());
-        BigDecimal waterSupplyAmountForYear = monitorDataReportMapper.getDeviceWaterDetailForYear("水厂", 3, tenantId, localDate.getYear());
-        if (waterSupplyAmountForMonth == null) {
-            waterSupplyAmountForMonth = BigDecimal.ZERO;
-        }
-        if (waterSupplyAmountForYear == null) {
-            waterSupplyAmountForYear = BigDecimal.ZERO;
-        }
-        //水厂当月流量
-        if (deviceWaterAmount.getWaterSupplyAmountForDay() == null) {
-            deviceWaterAmount.setWaterSupplyAmountForMonth(waterSupplyAmountForMonth);
-        } else {
-            deviceWaterAmount.setWaterSupplyAmountForMonth(waterSupplyAmountForMonth.add(deviceWaterAmount.getWaterSupplyAmountForDay()));
-        }
-        //水厂当年流量
-        if (deviceWaterAmount.getWaterSupplyAmountForMonth() == null) {
-            deviceWaterAmount.setWaterSupplyAmountForYear(waterSupplyAmountForYear);
-        } else {
-            deviceWaterAmount.setWaterSupplyAmountForYear(waterSupplyAmountForYear.add(deviceWaterAmount.getWaterSupplyAmountForMonth()));
-        }
-
-
-        BigDecimal waterIntakeAmountForMonth = monitorDataReportMapper.getDeviceWaterDetailForMonth("水源", 4, tenantId, localDate.getYear(), localDate.getMonthValue());
-        BigDecimal waterIntakeAmountForYear = monitorDataReportMapper.getDeviceWaterDetailForYear("水源", 4, tenantId, localDate.getYear());
-        if (waterIntakeAmountForMonth == null) {
-            waterIntakeAmountForMonth = BigDecimal.ZERO;
-        }
-        if (waterIntakeAmountForYear == null) {
-            waterIntakeAmountForYear = BigDecimal.ZERO;
-        }
-        //水源当月流量
-        if (deviceWaterAmount.getWaterIntakeAmountForDay() == null) {
-            deviceWaterAmount.setWaterIntakeAmountForMonth(waterIntakeAmountForMonth);
-        } else {
-            deviceWaterAmount.setWaterIntakeAmountForMonth(waterIntakeAmountForMonth.add(deviceWaterAmount.getWaterIntakeAmountForDay()));
-        }
-        //水源当年流量
-        if (deviceWaterAmount.getWaterIntakeAmountForMonth() == null) {
-            deviceWaterAmount.setWaterIntakeAmountForYear(waterIntakeAmountForYear);
-        } else {
-            deviceWaterAmount.setWaterIntakeAmountForYear(waterIntakeAmountForYear.add(deviceWaterAmount.getWaterIntakeAmountForMonth()));
-        }
-        //1
-        generalViewResults.setDeviceWaterAmount(deviceWaterAmount);
-
-        //实时报警信息
-        List<SceneAlarm> sceneAlarms = monitorDataReportMapper.getAlarmInfoForScene(tenantId);
-
-        //2报警
-        generalViewResults.setSceneAlarms(sceneAlarms);
-        //管网水质(水质 -1、8PH、10浊度、11余氯)
-        List<SceneNormalRate> SceneNormalRates = new ArrayList<>();
-        //水质
-        SceneNormalRate sceneNormalRate1 = monitorDataReportMapper.getQualificationForScene(tenantId, -1);
-        //PH
-        SceneNormalRate sceneNormalRate2 = monitorDataReportMapper.getQualificationForScene(tenantId, 8);
-        //浊度
-        SceneNormalRate sceneNormalRate3 = monitorDataReportMapper.getQualificationForScene(tenantId, 10);
-        //余氯
-        SceneNormalRate sceneNormalRate4 = monitorDataReportMapper.getQualificationForScene(tenantId, 11);
-        SceneNormalRates.add(sceneNormalRate1);
-        SceneNormalRates.add(sceneNormalRate2);
-        SceneNormalRates.add(sceneNormalRate3);
-        SceneNormalRates.add(sceneNormalRate4);
-        //3水质情况
-        generalViewResults.setSceneNormalRates(SceneNormalRates);
-
-        //压力分布
-        List<DeviceWaterDetail> devicePressureWaterDetailsForNow = monitorDataReportMapper.getDeviceWaterDetailForNow("水厂", 13, tenantId);
-
-        List<SceneWaterAmount> sceneWaterPressureAmounts = new ArrayList<>();
-
-        devicePressureWaterDetailsForNow.stream()
-                .filter(item -> StringUtils.isNotBlank(item.getSceneName()))
-                .collect(Collectors.groupingBy(item -> item.getSceneName(), Collectors.toList()))
-                .forEach((key, value) -> {
-                    SceneWaterAmount sceneWaterAmount = new SceneWaterAmount();
-                    sceneWaterAmount.setSceneName(key);
-                    sceneWaterAmount.setWaterAmount(BigDecimal.ZERO);
-                    value.stream().forEach(deviceWaterDetail -> {
-                        MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
-                        if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
-                            monitorDataEntity.getDataValues().stream()
-                                    .filter(monitorDataValueEntity -> monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId()))
-                                    .forEach(monitorDataValueEntity ->
-                                            //累计当前压力
-                                            sceneWaterAmount.setWaterAmount(sceneWaterAmount.getWaterAmount().add(new BigDecimal(monitorDataValueEntity.getDataValue())))
-                                    );
-                        }
-                    });
-                    sceneWaterPressureAmounts.add(sceneWaterAmount);
-                });
-
-        //进行压力分组
-        SceneWaterPressure sceneWaterPressure = new SceneWaterPressure();
-        SceneWaterAmount amountMax = null;
-        SceneWaterAmount amountMin = null;
-        for (SceneWaterAmount waterPressure : sceneWaterPressureAmounts) {
-            if (StringUtils.isNotBlank(waterPressure.getSceneName()) && waterPressure.getWaterAmount() != null) {
-                BigDecimal amount = waterPressure.getWaterAmount();
-                amountMax = amountMax == null || amount.compareTo(amountMax.getWaterAmount()) == 1 ? waterPressure : amountMax;
-                amountMin = amountMin == null || amount.compareTo(amountMin.getWaterAmount()) == -1 ? waterPressure : amountMin;
-
-                if (amount.compareTo(new BigDecimal(0.15)) == -1) {
-                    sceneWaterPressure.setPressureLevel1(sceneWaterPressure.getPressureLevel1() + 1);
-                } else if (amount.compareTo(new BigDecimal(0.15)) != 1 && amount.compareTo(new BigDecimal(0.30)) == -1) {
-                    sceneWaterPressure.setPressureLevel2(sceneWaterPressure.getPressureLevel2() + 1);
-                } else if (amount.compareTo(new BigDecimal(0.30)) != -1 && amount.compareTo(new BigDecimal(0.40)) == -1) {
-                    sceneWaterPressure.setPressureLevel3(sceneWaterPressure.getPressureLevel3() + 1);
-                } else if (amount.compareTo(new BigDecimal(0.40)) != -1 && amount.compareTo(new BigDecimal(0.50)) == -1) {
-                    sceneWaterPressure.setPressureLevel4(sceneWaterPressure.getPressureLevel4() + 1);
-                } else if (amount.compareTo(new BigDecimal(0.50)) != -1) {
-                    sceneWaterPressure.setPressureLevel5(sceneWaterPressure.getPressureLevel5() + 1);
-                }
-            }
-        }
-        if (amountMax != null) {
-            sceneWaterPressure.setMaxPressureSceneName(amountMax.getSceneName());
-            sceneWaterPressure.setMaxPressureValue(amountMax.getWaterAmount());
-        }
-        if (amountMax != null) {
-            sceneWaterPressure.setMinPressureSceneName(amountMin.getSceneName());
-            sceneWaterPressure.setMinPressureValue(amountMin.getWaterAmount());
-        }
-
-        //4压力分组
-        generalViewResults.setSceneWaterPressure(sceneWaterPressure);
-
-        //今日水厂制水量排行
-//        deviceSupplyWaterDetailsForDay
-        List<SceneWaterAmount> sceneWaterAmounts = new ArrayList<>();
-        deviceSupplyWaterDetailsForDay.stream()
-                .filter(item -> StringUtils.isNotBlank(item.getSceneName()))
-                .collect(Collectors.groupingBy(item -> item.getSceneName(), Collectors.toList()))
-                .forEach((key, value) -> {
-                    SceneWaterAmount sceneWaterAmount = new SceneWaterAmount();
-                    sceneWaterAmount.setSceneName(key);
-                    sceneWaterAmount.setWaterAmount(BigDecimal.ZERO);
-                    value.stream().forEach(deviceWaterDetail -> {
-                        MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
-                        if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
-                            monitorDataEntity.getDataValues().stream()
-                                    .filter(monitorDataValueEntity -> monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId()))
-                                    .forEach(monitorDataValueEntity ->
-                                            //累计当天流量
-                                            sceneWaterAmount.setWaterAmount(sceneWaterAmount.getWaterAmount().add(
-                                                    new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()).add(deviceWaterDetail.getAmount())))
-                                    );
-                        }
-                    });
-                    sceneWaterAmounts.add(sceneWaterAmount);
-                });
-        //倒序排序
-        sceneWaterAmounts.sort(Comparator.comparing(SceneWaterAmount::getWaterAmount).reversed());
-        //5水量排行
-        generalViewResults.setSceneWaterAmounts(sceneWaterAmounts);
-
-        //水厂制水、药耗、电耗对比曲线
-        List<WaterSupplyData> waterSupplyDatas = monitorDataReportMapper.getWaterSupplyData(tenantId);
-        List<WaterSupplyChart> waterSupplyCharts = new ArrayList<>();
-        waterSupplyDatas.stream()
-                .collect(Collectors.groupingBy(item -> item.getYear() + "-" + item.getMonth() + "-" + item.getDay()))
-                .forEach((key, value) -> {
-                    WaterSupplyChart waterSupplyChart = new WaterSupplyChart();
-                    waterSupplyChart.setDate(key);
-                    value.stream().forEach(waterSupplyData -> {
-                        Period period = Period.between(LocalDate.of(waterSupplyData.getYear(), waterSupplyData.getMonth(), waterSupplyData.getDay()), localDate);
-                        waterSupplyChart.setSort(period.getDays());
-
-                        if (waterSupplyData.getParmType() == 3) { //供水
-                            waterSupplyChart.setWaterData(waterSupplyData.getAmount());
-                        } else if (waterSupplyData.getParmType() == 5) {//电耗
-                            waterSupplyChart.setPowerData(waterSupplyData.getAmount());
-                        } else if (waterSupplyData.getParmType() == 6) {//药耗
-                            waterSupplyChart.setDrugData(waterSupplyData.getAmount());
-                        }
-                    });
-                    waterSupplyCharts.add(waterSupplyChart);
-                });
-        waterSupplyCharts.sort(Comparator.comparing(WaterSupplyChart::getSort));
-
-        //6曲线图
-        generalViewResults.setWaterSupplyCharts(waterSupplyCharts);
-
+//        LoginUser loginUser = UserUtil.getCurrentUser();
+//        String tenantId = loginUser.getTenantId();
+//        //查询设备编码
+//        List<String> deviceCodes = monitorDataReportMapper.selectDeviceCode(tenantId);
+//        //根据编码获取redis中的实时数据
+//        List<MonitorDataEntity> monitorDataEntities = new ArrayList<>();
+//        for (String deviceCode : deviceCodes) {
+//            //先取缓存里的数据
+//            byte[] bytes = redisUtil.get(("sms_water_" + deviceCode).getBytes());
+//            if (bytes != null && bytes.length > 0) {
+//                monitorDataEntities.add((MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get());
+//            }
+//        }
+//        //将获取到 实时数据转换为map,方便匹配数据deviceId
+//        Map<Integer, MonitorDataEntity> MonitorDataMap = monitorDataEntities.stream().collect(Collectors.toMap(MonitorDataEntity::getDeviceId, a -> a, (k1, k2) -> k1));
+//
+//
+//        LocalDate localDate = LocalDate.now();
+//        //水厂近30天供水量
+//        List<DeviceWaterSupply> deviceWaterSupplies = monitorDataReportMapper.getDeviceWaterFor30Day(tenantId);
+//        for (int i = 0; i < 30; i++) {
+//            LocalDate newLocalDate = localDate.plusDays(-i - 1);
+//            if (i <= deviceWaterSupplies.size()
+//                    || !newLocalDate.isEqual(LocalDate.of(deviceWaterSupplies.get(i).getYear(),
+//                    deviceWaterSupplies.get(i).getMonth(),
+//                    deviceWaterSupplies.get(i).getDay()))) {
+//
+//                DeviceWaterSupply deviceWaterSupply = new DeviceWaterSupply();
+//                deviceWaterSupply.setOrderNo(i + 1);
+//                deviceWaterSupply.setAmount(BigDecimal.ZERO);
+//                deviceWaterSupply.setYear(newLocalDate.getYear());
+//                deviceWaterSupply.setMonth(newLocalDate.getMonthValue());
+//                deviceWaterSupply.setDay(newLocalDate.getDayOfMonth());
+//                deviceWaterSupply.setDate(newLocalDate);
+//                deviceWaterSupplies.add(i, deviceWaterSupply);
+//            } else {
+//                deviceWaterSupplies.get(i).setOrderNo(i + 1);
+//                deviceWaterSupplies.get(i).setDate(newLocalDate);
+//            }
+//        }
+//        //0 30天水量
+//        generalViewResults.setDeviceWaterSupplies(deviceWaterSupplies);
+//
+//        //供水详情数据(合计:瞬时、本天、本月、本年)
+//        DeviceWaterAmount deviceWaterAmount = new DeviceWaterAmount();
+//        //14瞬时流量
+//        List<DeviceWaterDetail> deviceSupplyWaterDetailsForNow = monitorDataReportMapper.getDeviceWaterDetailForNow("水厂", 14, tenantId);
+//        List<DeviceWaterDetail> deviceIntakeWaterDetailsForNow = monitorDataReportMapper.getDeviceWaterDetailForNow("水源", 14, tenantId);
+//
+//        //水厂获取实时流量并计算出当天流量
+//        for (DeviceWaterDetail deviceWaterDetail : deviceSupplyWaterDetailsForNow) {
+//            MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
+//            if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
+//                for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
+//                    if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
+//                        //水厂累计瞬时流量
+//                        deviceWaterAmount.addWaterSupplyAmountForNow(new BigDecimal(monitorDataValueEntity.getDataValue()));
+//                    }
+//                }
+//            }
+//
+//        }
+//        //水源获取实时流量并计算出当天流量
+//        for (DeviceWaterDetail deviceWaterDetail : deviceIntakeWaterDetailsForNow) {
+//            MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
+//            if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
+//                for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
+//                    if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
+//                        //水源累计瞬时流量
+//                        deviceWaterAmount.addWaterIntakeAmountForNow(new BigDecimal(monitorDataValueEntity.getDataValue()));
+//                    }
+//                }
+//            }
+//        }
+//
+//        //3供水 4取水
+//        List<DeviceWaterDetail> deviceSupplyWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay("水厂", 3, tenantId, localDate.getYear(), localDate.getMonthValue(), localDate.getDayOfMonth());
+//        List<DeviceWaterDetail> deviceIntakeWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay("水源", 4, tenantId, localDate.getYear(), localDate.getMonthValue(), localDate.getDayOfMonth());
+//
+//        //水厂获取实时流量并计算出当天流量
+//        for (DeviceWaterDetail deviceWaterDetail : deviceSupplyWaterDetailsForDay) {
+//            MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
+//            if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
+//                for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
+//                    if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
+//                        //累计当天流量
+//                        deviceWaterAmount.addWaterSupplyAmountForDay(new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()).add(deviceWaterDetail.getAmount()));
+//                    }
+//                }
+//            }
+//
+//        }
+//        //水源获取实时流量并计算出当天流量
+//        for (DeviceWaterDetail deviceWaterDetail : deviceIntakeWaterDetailsForDay) {
+//            MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
+//            if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
+//                for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
+//                    if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
+//                        //累计当天流量
+//                        deviceWaterAmount.addWaterIntakeAmountForDay(new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()).add(deviceWaterDetail.getAmount()));
+//                    }
+//                }
+//            }
+//        }
+//
+//        BigDecimal waterSupplyAmountForMonth = monitorDataReportMapper.getDeviceWaterDetailForMonth("水厂", 3, tenantId, localDate.getYear(), localDate.getMonthValue());
+//        BigDecimal waterSupplyAmountForYear = monitorDataReportMapper.getDeviceWaterDetailForYear("水厂", 3, tenantId, localDate.getYear());
+//        if (waterSupplyAmountForMonth == null) {
+//            waterSupplyAmountForMonth = BigDecimal.ZERO;
+//        }
+//        if (waterSupplyAmountForYear == null) {
+//            waterSupplyAmountForYear = BigDecimal.ZERO;
+//        }
+//        //水厂当月流量
+//        if (deviceWaterAmount.getWaterSupplyAmountForDay() == null) {
+//            deviceWaterAmount.setWaterSupplyAmountForMonth(waterSupplyAmountForMonth);
+//        } else {
+//            deviceWaterAmount.setWaterSupplyAmountForMonth(waterSupplyAmountForMonth.add(deviceWaterAmount.getWaterSupplyAmountForDay()));
+//        }
+//        //水厂当年流量
+//        if (deviceWaterAmount.getWaterSupplyAmountForMonth() == null) {
+//            deviceWaterAmount.setWaterSupplyAmountForYear(waterSupplyAmountForYear);
+//        } else {
+//            deviceWaterAmount.setWaterSupplyAmountForYear(waterSupplyAmountForYear.add(deviceWaterAmount.getWaterSupplyAmountForMonth()));
+//        }
+//
+//
+//        BigDecimal waterIntakeAmountForMonth = monitorDataReportMapper.getDeviceWaterDetailForMonth("水源", 4, tenantId, localDate.getYear(), localDate.getMonthValue());
+//        BigDecimal waterIntakeAmountForYear = monitorDataReportMapper.getDeviceWaterDetailForYear("水源", 4, tenantId, localDate.getYear());
+//        if (waterIntakeAmountForMonth == null) {
+//            waterIntakeAmountForMonth = BigDecimal.ZERO;
+//        }
+//        if (waterIntakeAmountForYear == null) {
+//            waterIntakeAmountForYear = BigDecimal.ZERO;
+//        }
+//        //水源当月流量
+//        if (deviceWaterAmount.getWaterIntakeAmountForDay() == null) {
+//            deviceWaterAmount.setWaterIntakeAmountForMonth(waterIntakeAmountForMonth);
+//        } else {
+//            deviceWaterAmount.setWaterIntakeAmountForMonth(waterIntakeAmountForMonth.add(deviceWaterAmount.getWaterIntakeAmountForDay()));
+//        }
+//        //水源当年流量
+//        if (deviceWaterAmount.getWaterIntakeAmountForMonth() == null) {
+//            deviceWaterAmount.setWaterIntakeAmountForYear(waterIntakeAmountForYear);
+//        } else {
+//            deviceWaterAmount.setWaterIntakeAmountForYear(waterIntakeAmountForYear.add(deviceWaterAmount.getWaterIntakeAmountForMonth()));
+//        }
+//        //1
+//        generalViewResults.setDeviceWaterAmount(deviceWaterAmount);
+//
+//        //实时报警信息
+//        List<SceneAlarm> sceneAlarms = monitorDataReportMapper.getAlarmInfoForScene(tenantId);
+//
+//        //2报警
+//        generalViewResults.setSceneAlarms(sceneAlarms);
+//        //管网水质(水质 -1、8PH、10浊度、11余氯)
+//        List<SceneNormalRate> SceneNormalRates = new ArrayList<>();
+//        //水质
+//        SceneNormalRate sceneNormalRate1 = monitorDataReportMapper.getQualificationForScene(tenantId, -1);
+//        //PH
+//        SceneNormalRate sceneNormalRate2 = monitorDataReportMapper.getQualificationForScene(tenantId, 8);
+//        //浊度
+//        SceneNormalRate sceneNormalRate3 = monitorDataReportMapper.getQualificationForScene(tenantId, 10);
+//        //余氯
+//        SceneNormalRate sceneNormalRate4 = monitorDataReportMapper.getQualificationForScene(tenantId, 11);
+//        SceneNormalRates.add(sceneNormalRate1);
+//        SceneNormalRates.add(sceneNormalRate2);
+//        SceneNormalRates.add(sceneNormalRate3);
+//        SceneNormalRates.add(sceneNormalRate4);
+//        //3水质情况
+//        generalViewResults.setSceneNormalRates(SceneNormalRates);
+//
+//        //压力分布
+//        List<DeviceWaterDetail> devicePressureWaterDetailsForNow = monitorDataReportMapper.getDeviceWaterDetailForNow("水厂", 13, tenantId);
+//
+//        List<SceneWaterAmount> sceneWaterPressureAmounts = new ArrayList<>();
+//
+//        devicePressureWaterDetailsForNow.stream()
+//                .filter(item -> StringUtils.isNotBlank(item.getSceneName()))
+//                .collect(Collectors.groupingBy(item -> item.getSceneName(), Collectors.toList()))
+//                .forEach((key, value) -> {
+//                    SceneWaterAmount sceneWaterAmount = new SceneWaterAmount();
+//                    sceneWaterAmount.setSceneName(key);
+//                    sceneWaterAmount.setWaterAmount(BigDecimal.ZERO);
+//                    value.stream().forEach(deviceWaterDetail -> {
+//                        MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
+//                        if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
+//                            monitorDataEntity.getDataValues().stream()
+//                                    .filter(monitorDataValueEntity -> monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId()))
+//                                    .forEach(monitorDataValueEntity ->
+//                                            //累计当前压力
+//                                            sceneWaterAmount.setWaterAmount(sceneWaterAmount.getWaterAmount().add(new BigDecimal(monitorDataValueEntity.getDataValue())))
+//                                    );
+//                        }
+//                    });
+//                    sceneWaterPressureAmounts.add(sceneWaterAmount);
+//                });
+//
+//        //进行压力分组
+//        SceneWaterPressure sceneWaterPressure = new SceneWaterPressure();
+//        SceneWaterAmount amountMax = null;
+//        SceneWaterAmount amountMin = null;
+//        for (SceneWaterAmount waterPressure : sceneWaterPressureAmounts) {
+//            if (StringUtils.isNotBlank(waterPressure.getSceneName()) && waterPressure.getWaterAmount() != null) {
+//                BigDecimal amount = waterPressure.getWaterAmount();
+//                amountMax = amountMax == null || amount.compareTo(amountMax.getWaterAmount()) == 1 ? waterPressure : amountMax;
+//                amountMin = amountMin == null || amount.compareTo(amountMin.getWaterAmount()) == -1 ? waterPressure : amountMin;
+//
+//                if (amount.compareTo(new BigDecimal(0.15)) == -1) {
+//                    sceneWaterPressure.setPressureLevel1(sceneWaterPressure.getPressureLevel1() + 1);
+//                } else if (amount.compareTo(new BigDecimal(0.15)) != 1 && amount.compareTo(new BigDecimal(0.30)) == -1) {
+//                    sceneWaterPressure.setPressureLevel2(sceneWaterPressure.getPressureLevel2() + 1);
+//                } else if (amount.compareTo(new BigDecimal(0.30)) != -1 && amount.compareTo(new BigDecimal(0.40)) == -1) {
+//                    sceneWaterPressure.setPressureLevel3(sceneWaterPressure.getPressureLevel3() + 1);
+//                } else if (amount.compareTo(new BigDecimal(0.40)) != -1 && amount.compareTo(new BigDecimal(0.50)) == -1) {
+//                    sceneWaterPressure.setPressureLevel4(sceneWaterPressure.getPressureLevel4() + 1);
+//                } else if (amount.compareTo(new BigDecimal(0.50)) != -1) {
+//                    sceneWaterPressure.setPressureLevel5(sceneWaterPressure.getPressureLevel5() + 1);
+//                }
+//            }
+//        }
+//        if (amountMax != null) {
+//            sceneWaterPressure.setMaxPressureSceneName(amountMax.getSceneName());
+//            sceneWaterPressure.setMaxPressureValue(amountMax.getWaterAmount());
+//        }
+//        if (amountMax != null) {
+//            sceneWaterPressure.setMinPressureSceneName(amountMin.getSceneName());
+//            sceneWaterPressure.setMinPressureValue(amountMin.getWaterAmount());
+//        }
+//
+//        //4压力分组
+//        generalViewResults.setSceneWaterPressure(sceneWaterPressure);
+//
+//        //今日水厂制水量排行
+////        deviceSupplyWaterDetailsForDay
+//        List<SceneWaterAmount> sceneWaterAmounts = new ArrayList<>();
+//        deviceSupplyWaterDetailsForDay.stream()
+//                .filter(item -> StringUtils.isNotBlank(item.getSceneName()))
+//                .collect(Collectors.groupingBy(item -> item.getSceneName(), Collectors.toList()))
+//                .forEach((key, value) -> {
+//                    SceneWaterAmount sceneWaterAmount = new SceneWaterAmount();
+//                    sceneWaterAmount.setSceneName(key);
+//                    sceneWaterAmount.setWaterAmount(BigDecimal.ZERO);
+//                    value.stream().forEach(deviceWaterDetail -> {
+//                        MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
+//                        if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
+//                            monitorDataEntity.getDataValues().stream()
+//                                    .filter(monitorDataValueEntity -> monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId()))
+//                                    .forEach(monitorDataValueEntity ->
+//                                            //累计当天流量
+//                                            sceneWaterAmount.setWaterAmount(sceneWaterAmount.getWaterAmount().add(
+//                                                    new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()).add(deviceWaterDetail.getAmount())))
+//                                    );
+//                        }
+//                    });
+//                    sceneWaterAmounts.add(sceneWaterAmount);
+//                });
+//        //倒序排序
+//        sceneWaterAmounts.sort(Comparator.comparing(SceneWaterAmount::getWaterAmount).reversed());
+//        //5水量排行
+//        generalViewResults.setSceneWaterAmounts(sceneWaterAmounts);
+//
+//        //水厂制水、药耗、电耗对比曲线
+//        List<WaterSupplyData> waterSupplyDatas = monitorDataReportMapper.getWaterSupplyData(tenantId);
+//        List<WaterSupplyChart> waterSupplyCharts = new ArrayList<>();
+//        waterSupplyDatas.stream()
+//                .collect(Collectors.groupingBy(item -> item.getYear() + "-" + item.getMonth() + "-" + item.getDay()))
+//                .forEach((key, value) -> {
+//                    WaterSupplyChart waterSupplyChart = new WaterSupplyChart();
+//                    waterSupplyChart.setDate(key);
+//                    value.stream().forEach(waterSupplyData -> {
+//                        Period period = Period.between(LocalDate.of(waterSupplyData.getYear(), waterSupplyData.getMonth(), waterSupplyData.getDay()), localDate);
+//                        waterSupplyChart.setSort(period.getDays());
+//
+//                        if (waterSupplyData.getParmType() == 3) { //供水
+//                            waterSupplyChart.setWaterData(waterSupplyData.getAmount());
+//                        } else if (waterSupplyData.getParmType() == 5) {//电耗
+//                            waterSupplyChart.setPowerData(waterSupplyData.getAmount());
+//                        } else if (waterSupplyData.getParmType() == 6) {//药耗
+//                            waterSupplyChart.setDrugData(waterSupplyData.getAmount());
+//                        }
+//                    });
+//                    waterSupplyCharts.add(waterSupplyChart);
+//                });
+//        waterSupplyCharts.sort(Comparator.comparing(WaterSupplyChart::getSort));
+//
+//        //6曲线图
+//        generalViewResults.setWaterSupplyCharts(waterSupplyCharts);
+//
         return generalViewResults;
     }
 
@@ -766,8 +766,10 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         SceneWaterPressure sceneWaterPressure = new SceneWaterPressure();
         SceneWaterAmount amountMax = null;
         SceneWaterAmount amountMin = null;
+        BigDecimal amountSum = BigDecimal.ZERO;
         for (SceneWaterAmount waterPressure : sceneWaterPressureAmounts) {
             if (StringUtils.isNotBlank(waterPressure.getSceneName()) && waterPressure.getWaterAmount() != null) {
+                amountSum = amountSum.add(waterPressure.getWaterAmount());
                 BigDecimal amount = waterPressure.getWaterAmount();
                 amountMax = amountMax == null || amount.compareTo(amountMax.getWaterAmount()) == 1 ? waterPressure : amountMax;
                 amountMin = amountMin == null || amount.compareTo(amountMin.getWaterAmount()) == -1 ? waterPressure : amountMin;
@@ -785,6 +787,9 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
                 }
             }
         }
+        if(sceneWaterPressureAmounts.size()>0){
+            sceneWaterPressure.setAvgPressureValue(amountSum.divide(new BigDecimal(sceneWaterPressureAmounts.size()),2,BigDecimal.ROUND_HALF_UP));
+        }
         if (amountMax != null) {
             sceneWaterPressure.setMaxPressureSceneName(amountMax.getSceneName());
             sceneWaterPressure.setMaxPressureValue(amountMax.getWaterAmount());
@@ -793,6 +798,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
             sceneWaterPressure.setMinPressureSceneName(amountMin.getSceneName());
             sceneWaterPressure.setMinPressureValue(amountMin.getWaterAmount());
         }
+
         return sceneWaterPressure;
     }