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 dabbfe6..f67eea0 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 @@ -103,7 +103,12 @@ public class HazardousOperationController extends BaseController { return hazardousOperationService.hazardousOperationVariationTendency(); } - // todo 按危险作业等级统计 - - + /** + * 按危险作业等级统计 + */ + @ApiOperation("危险作业页-按危险作业等级统计") + @GetMapping(value = "/hazardousOperationLevelStatistics") + public String hazardousOperationLevelStatistics() { + return hazardousOperationService.hazardousOperationLevelStatistics(); + } } 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 a131281..a9e5f72 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 @@ -108,6 +108,4 @@ public class RiskController extends BaseController public String weeklyQuantityStatistics() { return riskService.weeklyQuantityStatistics(); } - - // todo 风险项类型及数量统计 } 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 51948aa..f323fea 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,7 +1,7 @@ package com.hbt.safety.supervision.mapper; -import java.util.Date; import java.util.List; +import java.util.Map; import com.hbt.safety.supervision.pojo.HazardousOperation; @@ -62,7 +62,7 @@ public interface HazardousOperationMapper /** * 查询统计所需数据 - * @return + * @return 统计数据 */ List selectHazardousOperations(); @@ -76,8 +76,13 @@ public interface HazardousOperationMapper /** * 进行中/已备案作业数量变化趋势图 * - * @param yearAgo 当前时间往前推一年的时间 + * @param startTime 当前时间往前推一年的时间 * @return 返回值 */ - List hazardousOperationVariationTendency(Date yearAgo); + List hazardousOperationVariationTendency(String startTime); + + /** + * 按危险作业等级统计 + */ + List> hazardousOperationLevelStatistics(); } 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 6ec73e3..5fac4ae 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 @@ -4,6 +4,7 @@ import java.util.Date; import java.util.List; import com.hbt.safety.supervision.pojo.HiddenDanger; +import org.apache.ibatis.annotations.Param; /** * 隐患Mapper接口 @@ -72,4 +73,6 @@ public interface HiddenDangerMapper * @return 返回值 */ List selectHiddenDangerSubmitDats(Date yearAgo); + + List selectHiddenDangerSubmitDat(@Param("startTime") String startTime, @Param("endTime") String endTime); } 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 e30c18a..4273a92 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 @@ -6,6 +6,7 @@ import java.util.Map; import com.hbt.safety.supervision.pojo.Risk; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 风险Mapper接口 @@ -85,4 +86,13 @@ public interface RiskMapper */ List selectRiskSubmitDats(Date yearAgo); + + /** + * 风险项每周数量统计 + * + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 返回值 + */ + List selectRiskSubmitDat(@Param("startTime") String startTime, @Param("endTime") String endTime); } diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/HazardousOperation.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/HazardousOperation.java index 8289280..b20ea49 100644 --- a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/HazardousOperation.java +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/HazardousOperation.java @@ -28,7 +28,7 @@ public class HazardousOperation extends BaseEntity /** 危险作业等级 */ @ApiModelProperty(value = "危险作业等级") - private String operationLevel; + private int operationLevel; /** 责任企业id */ @ApiModelProperty(value = "责任企业id") diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/vo/DateVo.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/vo/DateVo.java new file mode 100644 index 0000000..b46c38a --- /dev/null +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/vo/DateVo.java @@ -0,0 +1,16 @@ +package com.hbt.safety.supervision.pojo.vo; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class DateVo { + + /** 日期和周集合 */ + private List date; + + /** 周的跨度 */ + private List> statisticsList; +} diff --git a/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/vo/HazardousOperationWeekDateVo.java b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/vo/HazardousOperationWeekDateVo.java new file mode 100644 index 0000000..7d70309 --- /dev/null +++ b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/java/com/hbt/safety/supervision/pojo/vo/HazardousOperationWeekDateVo.java @@ -0,0 +1,19 @@ +package com.hbt.safety.supervision.pojo.vo; + +import lombok.Data; + +/** + * 危险操作折线图统计 + */ +@Data +public class HazardousOperationWeekDateVo { + + /** 时间 */ + private String date; + + /** 进行中的数量 */ + private int onGoingCount; + + /** 待开始的数量 */ + private int toBeStartedCount; +} 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 index 8e2c84f..7686651 100644 --- 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 @@ -8,7 +8,7 @@ import lombok.Data; @Data public class WeekDateVo { - private int week; // 周数 + private String date; // 周数 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 ac80d36..cb563f1 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 @@ -75,4 +75,9 @@ public interface IHazardousOperationService * 进行中/已备案作业数量变化趋势图 */ String hazardousOperationVariationTendency(); + + /** + * 按危险作业等级统计 + */ + String hazardousOperationLevelStatistics(); } 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 f38f47a..d11846c 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 @@ -1,21 +1,20 @@ package com.hbt.safety.supervision.service.impl; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import com.alibaba.fastjson.JSONObject; import com.hbt.safety.supervision.pojo.HazardousOperation; +import com.hbt.safety.supervision.pojo.vo.DateVo; +import com.hbt.safety.supervision.pojo.vo.HazardousOperationWeekDateVo; 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业务层处理 * @@ -194,37 +193,50 @@ public class HazardousOperationServiceImpl implements IHazardousOperationService */ @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); + DateVo dateVo = YearWeeksUtil.getYeardate(); + List> statisticsList = dateVo.getStatisticsList(); + List date = dateVo.getDate(); + if (statisticsList == null || date == null || statisticsList.size() == 0 + || date.size() == 0 || statisticsList.size() != date.size()) { + return null; } - // 获取当前时间和往前推一年间的周数 - int weeks = getYearWeekConut(); + // 查询时间范围内的隐患信息 + String startTime = statisticsList.get(0).get("startTime"); - List weekDates = new ArrayList<>(); - // 筛选数据 - for (int i = 1; i <= weeks; i++) { - WeekDateVo weekDateVo = new WeekDateVo(); + List hazardousOperations = hazardousOperationMapper.hazardousOperationVariationTendency(startTime); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + List hazardousOperationWeekDateVos = new ArrayList<>(); + // 组装数据 + for (int i = 0; i < statisticsList.size(); i++) { int finalI = i; - // 筛选 当前作业结束时间大于等于当前周的作业,即为进行中、待开始的作业 - int count = (int) operationWeekList.stream().filter(s -> finalI <= s).count(); - weekDateVo.setDate(i+""); - weekDateVo.setCount(count); - weekDates.add(weekDateVo); + // 筛选进行中的数量 进行中:作业开始时间大于等于周开始的时间,小于等于周结束的时间 或者作业结束时间大于等周开始时间小于等于周结束时间 + int onGoingCount = (int) hazardousOperations.stream() + .filter(s -> (sdf.format(s.getOperationStart()).compareTo(statisticsList.get(finalI).get("startTime")) >=0 + && sdf.format(s.getOperationStart()).compareTo(statisticsList.get(finalI).get("endTime")) <= 0) + || (sdf.format(s.getOperationEnd()).compareTo(statisticsList.get(finalI).get("startTime")) >= 0 + && sdf.format(s.getOperationEnd()).compareTo(statisticsList.get(finalI).get("endTime")) <= 0)).count(); + + // 筛选待开始的数量 待开始:周结束时间小于 作业开始时间 + int toBeStartedCount = (int) hazardousOperations.stream() + .filter(s -> sdf.format(s.getOperationStart()).compareTo(statisticsList.get(finalI).get("endTime")) > 0).count(); + HazardousOperationWeekDateVo hazardousOperationWeekDateVo = new HazardousOperationWeekDateVo(); + hazardousOperationWeekDateVo.setDate(date.get(i)); + hazardousOperationWeekDateVo.setOnGoingCount(onGoingCount); + hazardousOperationWeekDateVo.setToBeStartedCount(toBeStartedCount); + hazardousOperationWeekDateVos.add(hazardousOperationWeekDateVo); + } - // 处理数据 - return JSONObject.toJSONString(weekDates); + return JSONObject.toJSONString(hazardousOperationWeekDateVos); + } + + /** + * 按危险作业等级统计 + */ + @Override + public String hazardousOperationLevelStatistics() { + List> map = hazardousOperationMapper.hazardousOperationLevelStatistics(); + return JSONObject.toJSONString(map); } } 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 7f161f1..37f398c 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 @@ -6,6 +6,7 @@ import java.util.stream.Collectors; import com.alibaba.fastjson.JSONObject; import com.hbt.safety.supervision.mapper.HiddenDangerMapper; import com.hbt.safety.supervision.pojo.HiddenDanger; +import com.hbt.safety.supervision.pojo.vo.DateVo; import com.hbt.safety.supervision.pojo.vo.StatisticsVo; import com.hbt.safety.supervision.service.IHiddenDangerService; import com.hbt.safety.supervision.util.YearWeeksUtil; @@ -139,12 +140,19 @@ public class HiddenDangerServiceImpl implements IHiddenDangerService */ public String hiddenDangerWeeklyStatistics() { - // 获取当前时间往前推一年的时间 - Date yearAgo = YearWeeksUtil.getyearAgoDate(); + DateVo dateVo = YearWeeksUtil.getYeardate(); + List> statisticsList = dateVo.getStatisticsList(); + List date = dateVo.getDate(); + if (statisticsList == null || date == null || statisticsList.size() == 0 + || date.size() == 0 || statisticsList.size() != date.size()) { + return null; + } + // 查询时间范围内的隐患信息 + String startTime = statisticsList.get(0).get("startTime"); + String endTime = statisticsList.get(statisticsList.size()-1).get("endTime"); - // 获取当前时间及往前推一年的风险时间 - List list = hiddenDangerMapper.selectHiddenDangerSubmitDats(yearAgo); - - return YearWeeksUtil.dealWeekDate(list); + // 查询时间范围内隐患数据 + List list = hiddenDangerMapper.selectHiddenDangerSubmitDat(startTime, endTime); + return YearWeeksUtil.getResultData(statisticsList, list, date); } } 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 9a2efd4..9892a21 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 @@ -5,6 +5,7 @@ import java.util.stream.Collectors; import com.alibaba.fastjson.JSONObject; import com.hbt.safety.supervision.mapper.RiskMapper; import com.hbt.safety.supervision.pojo.Risk; +import com.hbt.safety.supervision.pojo.vo.DateVo; import com.hbt.safety.supervision.service.IRiskService; import com.hbt.safety.supervision.util.YearWeeksUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -106,7 +107,7 @@ public class RiskServiceImpl implements IRiskService if (list == null) { return ""; } - Map> map = list.stream().collect(Collectors.groupingBy(s -> s.getLevel())); + Map> map = list.stream().collect(Collectors.groupingBy(Risk::getLevel)); return JSONObject.toJSONString(map); } @@ -114,12 +115,23 @@ public class RiskServiceImpl implements IRiskService * 风险项每周数量统计 */ public String weeklyQuantityStatistics() { - // 获取当前时间往前推一年的时间 - Date yearAgo = YearWeeksUtil.getyearAgoDate(); - // 获取当前时间及往前推一年的风险时间 - List list = riskMapper.selectRiskSubmitDats(yearAgo); - return YearWeeksUtil.dealWeekDate(list); + DateVo dateVo = YearWeeksUtil.getYeardate(); + List> statisticsList = dateVo.getStatisticsList(); + List date = dateVo.getDate(); + if (statisticsList == null || date == null || statisticsList.size() == 0 + || date.size() == 0 || statisticsList.size() != date.size()) { + return null; + } + + // 查询时间范围内的隐患信息 + String startTime = statisticsList.get(0).get("startTime"); + String endTime = statisticsList.get(statisticsList.size()-1).get("endTime"); + + // 查询时间范围内隐患数据 + List list = riskMapper.selectRiskSubmitDat(startTime, endTime); + + return YearWeeksUtil.getResultData(statisticsList, list, date); } } 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 58edefb..1ff5f2e 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,10 +1,15 @@ package com.hbt.safety.supervision.util; import com.alibaba.fastjson.JSONObject; +import com.hbt.common.core.utils.DateUtils; +import com.hbt.safety.supervision.pojo.vo.DateVo; import com.hbt.safety.supervision.pojo.vo.WeekDateVo; +import org.springframework.util.CollectionUtils; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; /** * 时间工具类 @@ -15,6 +20,9 @@ public class YearWeeksUtil { * 定义12个月常量*/ public static final int MONTH = 12; + public static final String START_TIME = "startTime"; + public static final String END_TIME = "endTime"; + /** * 获取当前年 * @@ -74,6 +82,17 @@ public class YearWeeksUtil { return calendar.getTime(); } + /** + * 获取当前时间 数据今年第几周 + * + * @return 时间 + */ + public static int getNowWeek () { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + return calendar.get(Calendar.WEEK_OF_YEAR); + } + /** * 获取当前时间 往前推一年的月份 * @@ -137,11 +156,203 @@ public class YearWeeksUtil { WeekDateVo weekDateVo = new WeekDateVo(); int finalI = i; int count = (int) weekList.stream().filter(s -> s == finalI).count(); - weekDateVo.setWeek(i); + weekDateVo.setDate(i+""); weekDateVo.setCount(count); weekDates.add(weekDateVo); } // 处理数据 return JSONObject.toJSONString(weekDates); } + + + /** + * 获取某年某周的时间跨度 + * + * @param year 年份 + * @param week 周数 + * @return k-v + */ + public static Map getWeekRangeMap(int year, int week) { + Map dateMap = new HashMap<>(8); + 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, Calendar.MONDAY); + Date time = calendar.getTime(); + String startTime = new SimpleDateFormat(DateUtils.YYYY_MM_DD).format(time); + dateMap.put(START_TIME, startTime); + // 获得指定年的第几周的结束日期(星期几) + calendar.setWeekDate(weekYear, week, Calendar.SUNDAY); + time = calendar.getTime(); + String endTime = new SimpleDateFormat(DateUtils.YYYY_MM_DD).format(time); + dateMap.put(END_TIME, endTime); + return dateMap; + } + + /** + * 获取某年有多少周 + * + * @param year 年份 + * @return 当前年份的总周数 + */ + public static int getYearWeekCount(int year) { + int week = 52; + try { + Map timeMap = getWeekRangeMap(year, 53); + if (!CollectionUtils.isEmpty(timeMap)) { + String startTime = timeMap.get(START_TIME); + if (startTime.substring(0, 4).equals(year + "")) { + // 判断年度是否相符,如果相符说明有53个周。 + week = 53; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return week; + } + + /** + * 获取某年所有周的日期跨度 + * + * @param year 年份 + * @return list 当前年份所有周的日期范围 + */ + public static List> getYearWeekMap(int year) { + int weeks = getYearWeekCount(year); + List> yearWeekMap = new ArrayList<>(); + for (int i = 1; i <= weeks; i++) { + Map dateMap = getWeekRangeMap(year, i); + yearWeekMap.add(dateMap); + } + return yearWeekMap; + } + + /** + * Description: 判断一个时间是否在一个时间段内
+ * + * @param nowTime 当前时间
+ * @param beginTime 开始时间
+ * @param endTime 结束时间
+ */ + public static boolean belongCalendar(String nowTime, String beginTime, String endTime) { + Calendar date = Calendar.getInstance(); + date.setTime(java.sql.Date.valueOf(nowTime)); + Calendar begin = Calendar.getInstance(); + begin.setTime(java.sql.Date.valueOf(beginTime)); + Calendar end = Calendar.getInstance(); + end.setTime(java.sql.Date.valueOf(endTime)); + return (date.after(begin) && date.before(end)) || nowTime.equals(beginTime) || nowTime.equals(endTime); + } + + /** + * 获取往前推一年的所有周和 范围数据 + * W + */ + public static DateVo getYeardate() { + int year = getCurrentYear(); + int lastYear = year - 1; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String dateNowStr = sdf.format(new Date()); + List> thisYearList = getYearWeekMap(year); + List> lastYearList = getYearWeekMap(year - 1); + List> statisticsList = new ArrayList<>(); + List date = new ArrayList<>(); + + // 查看当前时间属于今年的周还是去年。如2023-01-01 属于去年最后一个周 + int count = (int) thisYearList.stream() + .filter(s -> belongCalendar(dateNowStr, s.get("startTime"),s.get("endTime"))).count(); + if (count == 0) { + // 当前时间不属于今年的周 + count = (int) lastYearList.stream() + .filter(s -> belongCalendar(dateNowStr, s.get("startTime"),s.get("endTime"))).count(); + if (count == 0) { + return null; + } + int lastYearCount = lastYearList.size(); + lastYearList = lastYearList.stream() + .filter(s -> s.get("endTime").compareTo(dateNowStr) < 0) + .collect(Collectors.toList()); + + if (lastYearList.size() < 52) { + // 前年数据统计 + List> beforeLastYearList = getYearWeekMap(year - 1); + + int beforeYearCount = beforeLastYearList.size(); + // 前年年年份需统计周数 + int beforeLastYearWeek = 52 - lastYearList.size(); + // 获取前年需统计数据 + beforeLastYearList = beforeLastYearList.subList(beforeLastYearList.size() - beforeLastYearWeek, beforeLastYearList.size()); + statisticsList.addAll(beforeLastYearList); + // 判断前年从第几周开始算起 + int beforeYearStartWeek = beforeYearCount - beforeLastYearList.size() + 1; + int beforYear = year - 2; + for (int i = 0; i < beforeLastYearList.size() ;i ++) { + int week = beforeYearStartWeek + i; + date.add(beforYear + "-" + week); + } + } + statisticsList.addAll(lastYearList); + // 判断去年从第几周开始算起 + int lastYearStartWeek = lastYearCount - lastYearList.size() + 1; + for (int i = 0; i < lastYearList.size() ;i ++) { + int week = lastYearStartWeek + i; + date.add(lastYear + "-" + week); + } + } else { + // 获取今年所需统计的周 + thisYearList = thisYearList.stream() + .filter(s -> s.get("endTime").compareTo(dateNowStr) < 0) + .collect(Collectors.toList()); + if (thisYearList.size() < 52) { + // 去年年份需统计周数 + int lastYearWeek = 52 - thisYearList.size(); + int lastYearCount = lastYearList.size(); + // 获取去年需统计数据 + lastYearList = lastYearList.subList(lastYearList.size() - lastYearWeek, lastYearList.size()); + statisticsList.addAll(lastYearList); + + // 判断去年从第几周开始算起 + int lastYearStartWeek = lastYearCount - lastYearList.size() + 1; + for (int i = 0; i < lastYearList.size() ;i ++) { + int week = lastYearStartWeek + i; + date.add(lastYear + "-" + week); + } + } + statisticsList.addAll(thisYearList); + + // 判断今年从第几周开始算起 + for (int i = 0; i < thisYearList.size() ;i ++) { + int week = i + 1; + date.add(year + "-" + week); + } + } + DateVo dateVo = new DateVo(); + dateVo.setDate(date); + dateVo.setStatisticsList(statisticsList); + return dateVo; + } + + public static String getResultData(List> statisticsList, List list, List date) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + List weekDateVos = new ArrayList<>(); + // 组装数据 + for (int i = 0; i < statisticsList.size(); i++) { + int finalI = i; + int hiddenDangerCount = (int) list.stream() + .filter(s -> YearWeeksUtil.belongCalendar(sdf.format(s), statisticsList.get(finalI).get("startTime"), + statisticsList.get(finalI).get("endTime"))).count(); + WeekDateVo weekDateVo = new WeekDateVo(); + weekDateVo.setDate(date.get(i)); + weekDateVo.setCount(hiddenDangerCount); + weekDateVos.add(weekDateVo); + } + return JSONObject.toJSONString(weekDateVos); + } } \ 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 5130b35..81bb584 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 @@ -107,7 +107,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join enterprise_information as e on a.enterprise_id = e.id - + select operation_start operationStart, operation_end operationEnd from hazardous_operation where DATE_FORMAT(operation_start,'%Y-%m-%d') >= #{startTime} + + + \ 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 c24c985..3b69dcc 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 @@ -121,4 +121,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/RiskMapper.xml b/hbt-safety-supervision/hbt-safety-supervision-biz/src/main/resources/mapper/RiskMapper.xml index 096247f..dfd36b5 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 @@ -111,4 +111,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + \ No newline at end of file