From 0e80d87d822049cc6184fdcc09a412c8af2b84f3 Mon Sep 17 00:00:00 2001 From: zhangyu Date: Mon, 20 Feb 2023 14:17:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HazardousOperationController.java | 9 + .../controller/RiskController.java | 1 + .../mapper/HazardousOperationMapper.java | 9 + .../mapper/HiddenDangerMapper.java | 5 +- .../safety/supervision/mapper/RiskMapper.java | 4 +- .../supervision/pojo/vo/WeekDateVo.java | 14 ++ .../service/IHazardousOperationService.java | 13 ++ .../impl/HazardousOperationServiceImpl.java | 45 +++++ .../service/impl/HiddenDangerServiceImpl.java | 17 +- .../service/impl/RiskServiceImpl.java | 18 +- .../supervision/util/YearWeeksUtil.java | 155 +++++++++++------- .../mapper/HazardousOperationMapper.xml | 4 + .../resources/mapper/HiddenDangerMapper.xml | 4 +- .../src/main/resources/mapper/RiskMapper.xml | 4 +- 14 files changed, 219 insertions(+), 83 deletions(-) create mode 100644 hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/vo/WeekDateVo.java diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/controller/HazardousOperationController.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/controller/HazardousOperationController.java index 19f3b1a..b1feb59 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/controller/HazardousOperationController.java +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/controller/HazardousOperationController.java @@ -86,4 +86,13 @@ public class HazardousOperationController extends BaseController { public String hazardousOperationManagement() { return hazardousOperationService.hazardousOperationManagement(); } + + /** + * 进行中/已备案作业数量变化趋势图 + */ + @GetMapping(value = "/hazardousOperationVariationTendency") + public String hazardousOperationVariationTendency() { + return hazardousOperationService.hazardousOperationVariationTendency(); + } + } diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/controller/RiskController.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/controller/RiskController.java index cc31dd3..ca6cf60 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/controller/RiskController.java +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/controller/RiskController.java @@ -97,6 +97,7 @@ public class RiskController extends BaseController /** * 风险项每周数量统计 + * 统计当前时间往前推一年的周数 */ @GetMapping("/weeklyQuantityStatistics") public String weeklyQuantityStatistics() { diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/mapper/HazardousOperationMapper.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/mapper/HazardousOperationMapper.java index 701b8b8..51948aa 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/mapper/HazardousOperationMapper.java +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/mapper/HazardousOperationMapper.java @@ -1,5 +1,6 @@ package com.hbt.safety.supervision.mapper; +import java.util.Date; import java.util.List; import com.hbt.safety.supervision.pojo.HazardousOperation; @@ -71,4 +72,12 @@ public interface HazardousOperationMapper * @return 危险作业管理信息 */ List hazardousOperationManagement(); + + /** + * 进行中/已备案作业数量变化趋势图 + * + * @param yearAgo 当前时间往前推一年的时间 + * @return 返回值 + */ + List hazardousOperationVariationTendency(Date yearAgo); } diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/mapper/HiddenDangerMapper.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/mapper/HiddenDangerMapper.java index 564e5b2..f6417bc 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/mapper/HiddenDangerMapper.java +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/mapper/HiddenDangerMapper.java @@ -1,5 +1,6 @@ package com.hbt.safety.supervision.mapper; +import java.util.Date; import java.util.List; import com.hbt.safety.supervision.pojo.HiddenDanger; @@ -68,8 +69,8 @@ public interface HiddenDangerMapper /** * 查询所有上报时间对应的周数 * - * @param year 当前年份 + * @param yearAgo 当前时间往前推一年的时间 * @return 返回值 */ - List selectHiddenDangerSubmitDats(int year); + List selectHiddenDangerSubmitDats(Date yearAgo); } diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/mapper/RiskMapper.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/mapper/RiskMapper.java index 3e992ce..1e24eca 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/mapper/RiskMapper.java +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/mapper/RiskMapper.java @@ -81,9 +81,9 @@ public interface RiskMapper /** * 查询所有上报时间对应的周数 * - * @param year 当前年份 + * @param yearAgo 一年前的时间 * @return 返回值 */ - List selectRiskSubmitDats(int year); + List selectRiskSubmitDats(Date yearAgo); } diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/vo/WeekDateVo.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/vo/WeekDateVo.java new file mode 100644 index 0000000..8e2c84f --- /dev/null +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/vo/WeekDateVo.java @@ -0,0 +1,14 @@ +package com.hbt.safety.supervision.pojo.vo; + +import lombok.Data; + +/** + * 周统计数据实体类 + */ +@Data +public class WeekDateVo { + + private int week; // 周数 + + private int count; // 数量 +} diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/IHazardousOperationService.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/IHazardousOperationService.java index a15d4a1..95c0d1e 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/IHazardousOperationService.java +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/IHazardousOperationService.java @@ -60,7 +60,20 @@ public interface IHazardousOperationService */ int deleteHazardousOperationById(int id); + /** + * 首页危险作业统计 + * + * @return 返回值 + */ String hazardousOperationStatistics(); + /** + * 危险作业统计 + */ String hazardousOperationManagement(); + + /** + * 进行中/已备案作业数量变化趋势图 + */ + String hazardousOperationVariationTendency(); } diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/impl/HazardousOperationServiceImpl.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/impl/HazardousOperationServiceImpl.java index 4f584a2..8357875 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/impl/HazardousOperationServiceImpl.java +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/impl/HazardousOperationServiceImpl.java @@ -6,11 +6,16 @@ import java.util.stream.Collectors; import com.alibaba.fastjson.JSONObject; import com.hbt.safety.supervision.pojo.HazardousOperation; import com.hbt.safety.supervision.pojo.vo.StatisticsVo; +import com.hbt.safety.supervision.pojo.vo.WeekDateVo; +import com.hbt.safety.supervision.util.YearWeeksUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hbt.safety.supervision.mapper.HazardousOperationMapper; import com.hbt.safety.supervision.service.IHazardousOperationService; +import static com.hbt.safety.supervision.util.YearWeeksUtil.getYearWeekConut; +import static com.hbt.safety.supervision.util.YearWeeksUtil.weekBetweenYearAgoDate; + /** * 危险作业Service业务层处理 * @@ -149,6 +154,9 @@ public class HazardousOperationServiceImpl implements IHazardousOperationService return JSONObject.toJSONString(map); } + /** + * 危险作业统计 + */ @Override public String hazardousOperationManagement() { // 获取当前时间 @@ -180,4 +188,41 @@ public class HazardousOperationServiceImpl implements IHazardousOperationService map.put("historyHazardousOperation", historyHazardousOperation); return JSONObject.toJSONString(map); } + + /** + * 进行中/已备案作业数量变化趋势图 + * 说明:危险作业结束时间大于等于当前周的作业,即为进行中、待开始的作业 + */ + @Override + public String hazardousOperationVariationTendency() { + // 获取当前时间往前推一年的时间 + Date yearAgo = YearWeeksUtil.getyearAgoDate(); + // 获取当前时间及往前推一年的危险作业开始结束时间 + List list = hazardousOperationMapper.hazardousOperationVariationTendency(yearAgo); + + List operationWeekList = new ArrayList<>(); + // 遍历危险作业,计算每个时间的周数 + for (Date date : list) {; + // 计算上报风险危险作业结束时间,与一年前时间间的周数 + int endWeek = weekBetweenYearAgoDate(date); + operationWeekList.add(endWeek); + } + + // 获取当前时间和往前推一年间的周数 + int weeks = getYearWeekConut(); + + List weekDates = new ArrayList<>(); + // 筛选数据 + for (int i = 1; i <= weeks; i++) { + WeekDateVo weekDateVo = new WeekDateVo(); + int finalI = i; + // 筛选 当前作业结束时间大于等于当前周的作业,即为进行中、待开始的作业 + int count = (int) operationWeekList.stream().filter(s -> finalI <= s).count(); + weekDateVo.setWeek(i); + weekDateVo.setCount(count); + weekDates.add(weekDateVo); + } + // 处理数据 + return JSONObject.toJSONString(weekDates); + } } diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/impl/HiddenDangerServiceImpl.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/impl/HiddenDangerServiceImpl.java index 2d8140a..fc121cc 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/impl/HiddenDangerServiceImpl.java +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/impl/HiddenDangerServiceImpl.java @@ -1,8 +1,6 @@ package com.hbt.safety.supervision.service.impl; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import com.alibaba.fastjson.JSONObject; @@ -137,10 +135,13 @@ public class HiddenDangerServiceImpl implements IHiddenDangerService * @return 返回值 */ public String hiddenDangerWeeklyStatistics() { - // 获取当前年份 - int year = YearWeeksUtil.getCurrentYear(); - List list = hiddenDangerMapper.selectHiddenDangerSubmitDats(year); - // 处理数据 - return YearWeeksUtil.dealWeekDate(list, year); + + // 获取当前时间往前推一年的时间 + Date yearAgo = YearWeeksUtil.getyearAgoDate(); + + // 获取当前时间及往前推一年的风险时间 + List list = hiddenDangerMapper.selectHiddenDangerSubmitDats(yearAgo); + + return YearWeeksUtil.dealWeekDate(list); } } diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/impl/RiskServiceImpl.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/impl/RiskServiceImpl.java index 9c1bbf8..b405ad9 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/impl/RiskServiceImpl.java +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/service/impl/RiskServiceImpl.java @@ -1,11 +1,7 @@ package com.hbt.safety.supervision.service.impl; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; - import com.alibaba.fastjson.JSONObject; import com.hbt.safety.supervision.mapper.RiskMapper; import com.hbt.safety.supervision.pojo.Risk; @@ -119,10 +115,12 @@ public class RiskServiceImpl implements IRiskService * 风险项每周数量统计 */ public String weeklyQuantityStatistics() { - // 获取当前年份 - int year = YearWeeksUtil.getCurrentYear(); - List list = riskMapper.selectRiskSubmitDats(year); - // 处理数据 - return YearWeeksUtil.dealWeekDate(list, year); + // 获取当前时间往前推一年的时间 + Date yearAgo = YearWeeksUtil.getyearAgoDate(); + + // 获取当前时间及往前推一年的风险时间 + List list = riskMapper.selectRiskSubmitDats(yearAgo); + + return YearWeeksUtil.dealWeekDate(list); } } diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/util/YearWeeksUtil.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/util/YearWeeksUtil.java index 33b9d69..ec6a98c 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/util/YearWeeksUtil.java +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/util/YearWeeksUtil.java @@ -1,11 +1,10 @@ package com.hbt.safety.supervision.util; import com.alibaba.fastjson.JSONObject; -import org.springframework.util.CollectionUtils; +import com.hbt.safety.supervision.pojo.vo.WeekDateVo; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; -import java.util.stream.Collectors; /** * 时间工具类 @@ -19,73 +18,115 @@ public class YearWeeksUtil { */ public static int getCurrentYear() { Calendar calendar = Calendar.getInstance(); - int weekYear = calendar.get(Calendar.YEAR);//获得当前的年 - return weekYear; - } - - - /** - * 获取某年某周的时间跨度 - * @param year - * @param week - * @return - */ - public static Map getWeekRangeMap(int year, int week) { - Map timeMap = new HashMap<>(); - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.YEAR,year); - calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置星期一为一周开始的第一天 - calendar.setMinimalDaysInFirstWeek(4);//可以不用设置 - int weekYear = calendar.get(Calendar.YEAR);//获得当前的年 - calendar.setWeekDate(weekYear, week, 2);//获得指定年的第几周的开始日期 - Date time=calendar.getTime(); - String startTime = new SimpleDateFormat("yyyy-MM-dd").format(time)+" 00:00:00"; - timeMap.put("startTime",startTime); - calendar.setWeekDate(weekYear, week, 1);//获得指定年的第几周的结束日期 - time=calendar.getTime(); - String endTime = new SimpleDateFormat("yyyy-MM-dd").format(time)+" 23:59:59"; - timeMap.put("endTime",endTime); - return timeMap; + return calendar.get(Calendar.YEAR); } /** - * 获取某年有多少周 + * 计算当前时间往前推一年的周数 * - * @param year 年份 - * @return 一年的周数 - * @throws ParseException + * @return 周数 */ - public static int getYearWeekConut(int year){ - int week = 52; + public static int getYearWeekConut() { + // 获取当前时间 + Date nowDate = getNowDate(); + // 获取当前时间 往前推一年的时间 + Date yearAgo = getyearAgoDate(); + // 计算两个时间之间的天数 + return weekBetween(yearAgo, nowDate); + } + + /** + * 计算一年前的时间和指定时间之前的周数 + * + * @param date 指定时间 + * @return 周数 + */ + public static int weekBetweenYearAgoDate(Date date) { + // 获取一年前的时间 + Date yearAgo = getyearAgoDate(); + // 获取周数 + return weekBetween(yearAgo, date); + } + + /** + * 获取当前时间 + * + * @return 当前时间 + */ + private static Date getNowDate () { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + return calendar.getTime(); + } + + /** + * 获取当前时间 往前推一年的时间 + * + * @return 时间 + */ + public static Date getyearAgoDate () { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.YEAR, -1); + return calendar.getTime(); + } + + /** + * 获取两个日期间的周数,精确到年月日 + * + * @param start 开始时间 + * @param end 结束时间 + * @return 周数 + */ + private static int weekBetween(Date start, Date end) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { - Map timeMap = getWeekRangeMap(year,53); - if(!CollectionUtils.isEmpty(timeMap)){ - String startTime = timeMap.get("startTime"); - if(startTime.substring(0, 4).equals(year+"")){ //判断年度是否相符,如果相符说明有53个周。 - week = 53; - } - } - } catch (Exception e) { + start = sdf.parse(sdf.format(start)); + end = sdf.parse(sdf.format(end)); + } catch (ParseException e) { e.printStackTrace(); } + long startTime = start.getTime(); + long endTime = end.getTime(); + long betweenDays = (endTime - startTime) / (1000 * 3600 * 24); + int days = Integer.parseInt(String.valueOf(betweenDays)); + int week; + if (days % 7 == 0) { + week = days / 7; + } else { + week = (days / 7) + 1; + } return week; } - public static String dealWeekDate(List list, int year) { - Map> weekList = new HashMap<>(); - if (list != null) { - weekList = list.stream().collect(Collectors.groupingBy(s -> s)); + /** + * 处理数据 + * + * @param list 数据 + * @return 返回值 + */ + public static String dealWeekDate(List list) { + List weekList = new ArrayList<>(); + // 遍历风险时间,计算每个时间的周数 + for (Date date : list) { + // 计算上报风险时间,与一年前时间间的周数 + int week = weekBetweenYearAgoDate(date); + weekList.add(week); } - Map weekStatistics = new HashMap<>(); - // 获取当前年份周数 - int week = YearWeeksUtil.getYearWeekConut(year); - for (int i = 1; i <= week; i++) { - if (weekList.containsKey(i)) { - weekStatistics.put(i, weekList.get(i).size()); - } else { - weekStatistics.put(i, 0); - } + + // 获取当前时间和往前推一年间的周数 + int weeks = getYearWeekConut(); + + List weekDates = new ArrayList<>(); + // 筛选数据 + for (int i = 1; i <= weeks; i++) { + WeekDateVo weekDateVo = new WeekDateVo(); + int finalI = i; + int count = (int) weekList.stream().filter(s -> s == finalI).count(); + weekDateVo.setWeek(i); + weekDateVo.setCount(count); + weekDates.add(weekDateVo); } - return JSONObject.toJSONString(weekStatistics); + // 处理数据 + return JSONObject.toJSONString(weekDates); } } \ No newline at end of file diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/HazardousOperationMapper.xml b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/HazardousOperationMapper.xml index 0f56f05..917d45b 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/HazardousOperationMapper.xml +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/HazardousOperationMapper.xml @@ -103,4 +103,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + \ No newline at end of file diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/HiddenDangerMapper.xml b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/HiddenDangerMapper.xml index 0abdd16..c24c985 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/HiddenDangerMapper.xml +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/HiddenDangerMapper.xml @@ -118,7 +118,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select name, reform_status reformStatus from hidden_danger where exceed_time_limit_status = 0 - + select submit_date from hidden_danger where DATE_FORMAT(submit_date,'%Y-%m-%d') >= DATE_FORMAT(#{yearAgo},'%Y-%m-%d') \ No newline at end of file diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/RiskMapper.xml b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/RiskMapper.xml index 7f39356..096247f 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/RiskMapper.xml +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/RiskMapper.xml @@ -108,7 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select name, level from risk - + select submit_date from risk where DATE_FORMAT(submit_date,'%Y-%m-%d') >= DATE_FORMAT(#{yearAgo},'%Y-%m-%d') \ No newline at end of file