From b22a20899062b363a11db2c8d2ce93c933dbc334 Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Wed, 25 Dec 2024 17:14:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E6=8E=A5=E5=8F=A3=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/utils/CommonDateUtil.java | 811 ++++++++++++++++++ .../contraller/LargeScreenController.java | 36 +- .../contraller/WorkBenchesController.java | 2 +- .../mapper/MaintenanceTaskMapper.java | 2 +- .../business/mapper/MaintenanceTaskMapper.xml | 5 +- .../business/mapper/WorkOrderMapper.java | 6 +- .../business/mapper/WorkOrderMapper.xml | 47 +- .../service/IMaintenanceTaskService.java | 2 +- .../business/service/IWorkOrderService.java | 6 +- .../impl/MaintenanceTaskServiceImpl.java | 57 +- .../service/impl/WorkOrderServiceImpl.java | 74 +- .../modules/system/mapper/UserMapper.xml | 1 + .../modules/system/pojo/entity/User.java | 5 + src/main/resources/application-dev.yml | 4 +- 14 files changed, 989 insertions(+), 69 deletions(-) create mode 100644 src/main/java/org/springblade/common/utils/CommonDateUtil.java diff --git a/src/main/java/org/springblade/common/utils/CommonDateUtil.java b/src/main/java/org/springblade/common/utils/CommonDateUtil.java new file mode 100644 index 0000000..29a4f85 --- /dev/null +++ b/src/main/java/org/springblade/common/utils/CommonDateUtil.java @@ -0,0 +1,811 @@ + +package org.springblade.common.utils; + +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.core.tool.utils.StringUtil; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * 通用工具类 + * + * @author Chill + */ +public class CommonDateUtil { + /** + * 获取 当前年、半年、季度、月、日、小时 开始结束时间 + */ + private final static SimpleDateFormat FORMAT_YMD = new SimpleDateFormat("yyyy-MM-dd"); + private final static SimpleDateFormat FORMAT_YMDHM = new SimpleDateFormat("yyyy-MM-dd HH"); + private final static SimpleDateFormat FORMAT_YMDHMS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + public static Date getNow() { + return DateUtil.now(); + } + + public static String getNowString() { + return FORMAT_YMDHMS.format(DateUtil.now()); + } + + /** + * 获得本周的第一天,周一 + * + * @return + */ + public static Date getCurrentWeekDayStartTime() { + Calendar c = Calendar.getInstance(); + try { + int weekday = c.get(Calendar.DAY_OF_WEEK) - 2; + c.add(Calendar.DATE, -weekday); + c.setTime(FORMAT_YMDHMS.parse(FORMAT_YMD.format(c.getTime()) + " 00:00:00")); + } catch (Exception e) { + e.printStackTrace(); + } + return c.getTime(); + } + + /** + * 获得本周的最后一天,周日 + * + * @return + */ + public static Date getCurrentWeekDayEndTime() { + Calendar c = Calendar.getInstance(); + try { + int weekday = c.get(Calendar.DAY_OF_WEEK); + c.add(Calendar.DATE, 8 - weekday); + c.setTime(FORMAT_YMDHMS.parse(FORMAT_YMD.format(c.getTime()) + " 23:59:59")); + } catch (Exception e) { + e.printStackTrace(); + } + return c.getTime(); + } + + /** + * 获得天的开始时间 + * + * @return + */ + public static Date getDayStartTime(Date date) { + try { + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + return cal.getTime(); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 获得天的开始时间 + * + * @return + */ + public static String getDayStartTimeString(Date date, String formatStr) { + formatStr = StringUtil.isBlank(formatStr) ? DateUtil.PATTERN_DATETIME : formatStr; + try { + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + SimpleDateFormat sdf = new SimpleDateFormat(formatStr); + return sdf.format(cal.getTime()); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 获得天的结束时间 + * + * @return + */ + public static String getDayEndTimeString(Date date, String formatStr) { + formatStr = StringUtil.isBlank(formatStr) ? DateUtil.PATTERN_DATETIME : formatStr; + try { + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.set(Calendar.HOUR_OF_DAY, 23); + cal.set(Calendar.MINUTE, 59); + cal.set(Calendar.SECOND, 59); + SimpleDateFormat sdf = new SimpleDateFormat(formatStr); + return sdf.format(cal.getTime()); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 获得本小时的开始时间 + * + * @return + */ + public static Date getCurrentHourStartTime() { + Date now = new Date(); + try { + now = FORMAT_YMDHMS.parse(FORMAT_YMDHM.format(now) + ":00:00"); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 获得本小时的结束时间 + * + * @return + */ + public static Date getCurrentHourEndTime() { + Date now = new Date(); + try { + now = FORMAT_YMDHMS.parse(FORMAT_YMDHM.format(now) + ":59:59"); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 获得月的开始时间 + * + * @return + */ + public static Date getCurrentMonthStartTime() { + Calendar c = Calendar.getInstance(); + Date now = null; + try { + c.set(Calendar.DATE, 1); + c.set(Calendar.HOUR_OF_DAY, 0); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + now = c.getTime(); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 获得月的开始时间 + * + * @return + */ + public static String getCurrentMonthStartTimeStr() { + Calendar c = Calendar.getInstance(); + String now = null; + try { + c.set(Calendar.DATE, 1); + now = FORMAT_YMD.format(c.getTime()) + " 00:00:00"; + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 本月的结束时间 + * + * @return + */ + public static Date getCurrentMonthEndTime() { + Calendar c = Calendar.getInstance(); + Date now = null; + try { + c.set(Calendar.DATE, 1); + c.add(Calendar.MONTH, 1); + c.add(Calendar.DATE, -1); + now = FORMAT_YMDHMS.parse(FORMAT_YMD.format(c.getTime()) + " 23:59:59"); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 本月的结束时间 + * + * @return + */ + public static String getCurrentMonthEndTimeStr() { + Calendar c = Calendar.getInstance(); + String now = null; + try { + c.set(Calendar.DATE, 1); + c.add(Calendar.MONTH, 1); + c.add(Calendar.DATE, -1); + now = FORMAT_YMD.format(c.getTime()) + " 23:59:59"; + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 当前年的开始时间 + * + * @return + */ + public static Date getCurrentYearStartTime() { + Calendar c = Calendar.getInstance(); + Date now = null; + try { + c.set(Calendar.MONTH, 0); + c.set(Calendar.DATE, 1); + now = FORMAT_YMD.parse(FORMAT_YMD.format(c.getTime())); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 去年的开始时间 + * + * @return + */ + public static Date getCurrentOnYearStartTime() { + Calendar c = Calendar.getInstance(); + Date now = null; + try { + c.set(Calendar.YEAR, c.get(Calendar.YEAR) - 1); + c.set(Calendar.MONTH, 0); + c.set(Calendar.DATE, 1); + now = FORMAT_YMD.parse(FORMAT_YMD.format(c.getTime())); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 当前年的结束时间 + * + * @return + */ + public static Date getCurrentYearEndTime() { + Calendar c = Calendar.getInstance(); + Date now = null; + try { + c.set(Calendar.MONTH, 11); + c.set(Calendar.DATE, 31); + now = FORMAT_YMDHMS.parse(FORMAT_YMD.format(c.getTime()) + " 23:59:59"); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 去年的结束时间 + * + * @return + */ + public static Date getCurrentOnYearEndTime() { + Calendar c = Calendar.getInstance(); + Date now = null; + try { + c.set(Calendar.YEAR, c.get(Calendar.YEAR) - 1); + c.set(Calendar.MONTH, 11); + c.set(Calendar.DATE, 31); + now = FORMAT_YMDHMS.parse(FORMAT_YMD.format(c.getTime()) + " 23:59:59"); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + + /** + * 当前季度的开始时间 + * + * @return + */ + public static Date getCurrentQuarterStartTime() { + Calendar c = Calendar.getInstance(); + int currentMonth = c.get(Calendar.MONTH) + 1; + Date now = null; + try { + if (currentMonth >= 1 && currentMonth <= 3) + c.set(Calendar.MONTH, 0); + else if (currentMonth >= 4 && currentMonth <= 6) + c.set(Calendar.MONTH, 3); + else if (currentMonth >= 7 && currentMonth <= 9) + c.set(Calendar.MONTH, 4); + else if (currentMonth >= 10 && currentMonth <= 12) + c.set(Calendar.MONTH, 9); + c.set(Calendar.DATE, 1); + now = FORMAT_YMDHMS.parse(FORMAT_YMD.format(c.getTime()) + " 00:00:00"); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 当前季度的结束时间 + * + * @return + */ + public static Date getCurrentQuarterEndTime() { + Calendar c = Calendar.getInstance(); + int currentMonth = c.get(Calendar.MONTH) + 1; + Date now = null; + try { + if (currentMonth >= 1 && currentMonth <= 3) { + c.set(Calendar.MONTH, 2); + c.set(Calendar.DATE, 31); + } else if (currentMonth >= 4 && currentMonth <= 6) { + c.set(Calendar.MONTH, 5); + c.set(Calendar.DATE, 30); + } else if (currentMonth >= 7 && currentMonth <= 9) { + c.set(Calendar.MONTH, 8); + c.set(Calendar.DATE, 30); + } else if (currentMonth >= 10 && currentMonth <= 12) { + c.set(Calendar.MONTH, 11); + c.set(Calendar.DATE, 31); + } + now = FORMAT_YMDHMS.parse(FORMAT_YMD.format(c.getTime()) + " 23:59:59"); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 获取前/后半年的开始时间 + * + * @return + */ + public static Date getHalfYearStartTime() { + Calendar c = Calendar.getInstance(); + int currentMonth = c.get(Calendar.MONTH) + 1; + Date now = null; + try { + if (currentMonth >= 1 && currentMonth <= 6) { + c.set(Calendar.MONTH, 0); + } else if (currentMonth >= 7 && currentMonth <= 12) { + c.set(Calendar.MONTH, 6); + } + c.set(Calendar.DATE, 1); + now = FORMAT_YMDHMS.parse(FORMAT_YMD.format(c.getTime()) + " 00:00:00"); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + + } + + /** + * 获取前/后半年的结束时间 + * + * @return + */ + public static Date getHalfYearEndTime() { + Calendar c = Calendar.getInstance(); + int currentMonth = c.get(Calendar.MONTH) + 1; + Date now = null; + try { + if (currentMonth >= 1 && currentMonth <= 6) { + c.set(Calendar.MONTH, 5); + c.set(Calendar.DATE, 30); + } else if (currentMonth >= 7 && currentMonth <= 12) { + c.set(Calendar.MONTH, 11); + c.set(Calendar.DATE, 31); + } + now = FORMAT_YMDHMS.parse(FORMAT_YMD.format(c.getTime()) + " 23:59:59"); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 获得本月的开始时间 + * + * @return + */ + public static Date getMonthStartTime(String dateStr, String pattern) { + Calendar c = Calendar.getInstance(); + c.setTime(DateUtil.parse(dateStr, pattern)); + Date now = null; + try { + c.set(Calendar.DATE, 1); + now = FORMAT_YMD.parse(FORMAT_YMD.format(c.getTime())); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 获得本月的开始时间 + * + * @return + */ + public static String getMonthStartTimeStr(Date date, String pattern) { + Calendar c = Calendar.getInstance(); + c.setTime(date); + String now = null; + try { + c.set(Calendar.DATE, 1); + now = FORMAT_YMD.format(c.getTime()) + " 00:00:00"; + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 本月的结束时间 + * + * @return + */ + public static Date getMonthEndTime(String dateStr, String pattern) { + Calendar c = Calendar.getInstance(); + c.setTime(DateUtil.parse(dateStr, pattern)); + Date now = null; + try { + c.set(Calendar.DATE, 1); + c.add(Calendar.MONTH, 1); + c.add(Calendar.DATE, -1); + now = FORMAT_YMDHMS.parse(FORMAT_YMD.format(c.getTime()) + " 23:59:59"); + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 本月的结束时间 + * + * @return + */ + public static String getMonthEndTimeStr(Date date, String pattern) { + Calendar c = Calendar.getInstance(); + c.setTime(date); + String now = ""; + try { + c.set(Calendar.DATE, 1); + c.add(Calendar.MONTH, 1); + c.add(Calendar.DATE, -1); + now = FORMAT_YMD.format(c.getTime()) + " 23:59:59"; + } catch (Exception e) { + e.printStackTrace(); + } + return now; + } + + /** + * 获得本年的开始时间 + * + * @return + */ + public static String getYearStartTimeStr(Date date) { + Calendar c = Calendar.getInstance(); + c.setTime(date); + return c.get(Calendar.YEAR) + "-01-01 00:00:00"; + } + + /** + * 本年的结束时间 + * + * @return + */ + public static String getYearEndTimeStr(Date date) { + Calendar c = Calendar.getInstance(); + c.setTime(date); + return c.get(Calendar.YEAR) + "-12-31 23:59:59"; + } + + /** + * 获取当天指定时间 + * + * @param date + * @param num + * @return + */ + public static Date getDayByNum(Date date, Integer num) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.DATE, num); + + return calendar.getTime(); + } + + /** + * 获取当天指定时间 + * + * @param num + * @return + */ + public static Date getDayByNum(Integer num) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(getNow()); + calendar.add(Calendar.DATE, -num); + + return calendar.getTime(); + } + + /** + * 获取当天指定时间 + * + * @param date + * @param num + * @return + */ + public static Date getHoursByNum(Date date, Integer num) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.HOUR_OF_DAY, num); + + return calendar.getTime(); + } + + /** + * 获取最近12个月,经常用于统计图表的X轴 + */ + public static String[] getLast12Months() { + String[] last12Months = new String[12]; + + Calendar cal = Calendar.getInstance(); + + // 要先+1,才能把本月的算进去 + cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1); + + for (int i = 0; i < 12; i++) { + // 逐次往前推1个月 + cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1); + last12Months[11 - i] = cal.get(Calendar.YEAR) + "-" + String.format("%0" + (cal.get(Calendar.MONTH) + 1) + "d", 2); + + } + + return last12Months; + } + + /** + * 获取最近12个月,经常用于统计图表的X轴 + */ + public static List getMonths(String startTimeStr, String endTimeStr) { + List months = new ArrayList<>(); + + Calendar starCal = Calendar.getInstance(); + starCal.setTime(DateUtil.parse(startTimeStr, DateUtil.PATTERN_DATETIME)); + + // 要先 - 1,才能把初始月算进去 + starCal.set(Calendar.MONTH, starCal.get(Calendar.MONTH) - 1); + + + for (int i = 0; i < 12; i++) { + // 逐次往前推1个月 + starCal.set(Calendar.MONTH, starCal.get(Calendar.MONTH) + 1); + months.add(DateUtil.format(starCal.getTime(), "yyyyMM")); + } + return months; + } + + /** + * 获取几月前的时间 + * + * @param num + * @return + */ + public static Date getMonthTime(Integer num) { + Calendar c = Calendar.getInstance(); + c.setTime(new Date()); + c.add(Calendar.MONTH, -num); + return c.getTime(); + } + + /** + * 获取几月前的时间 + * + * @param num + * @return + */ + public static String getMonthTimeString(int num) { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Calendar c = Calendar.getInstance(); + c.setTime(new Date()); + c.add(Calendar.MONTH, -num); + return format.format(c.getTime()); + } + + /** + * 获取两个日期之间相差的月份 + * + * @param startDate + * @param endDate + * @return + * @throws ParseException + */ + public static List getMonth(String startDate, String endDate) { + List list = new ArrayList(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + Calendar c1 = Calendar.getInstance(); + Calendar c2 = Calendar.getInstance(); + try { + c1.setTime(sdf.parse(startDate)); + c2.setTime(sdf.parse(endDate)); + } catch (ParseException e) { + e.printStackTrace(); + } + int year = c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR); + int month = c2.get(Calendar.MONTH) + year * 12 - c1.get(Calendar.MONTH); + for (int i = 0; i <= month; i++) { + try { + c1.setTime(sdf.parse(startDate)); + } catch (ParseException e) { + e.printStackTrace(); + } + c1.add(Calendar.MONTH, i); + list.add(sdf.format(c1.getTime())); + } + return list; + } + + /** + * 获取两个日期之间的所有日期 + * + * @param startTime 开始日期 + * @param endTime 结束日期 + * @return + */ + public static List getDays(String startTime, String endTime) { + // 返回的日期集合 + List days = new ArrayList(); + + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + try { + Date start = dateFormat.parse(startTime); + Date end = dateFormat.parse(endTime); + + Calendar tempStart = Calendar.getInstance(); + tempStart.setTime(start); + + Calendar tempEnd = Calendar.getInstance(); + tempEnd.setTime(end); + // 日期加1(包含结束) + tempEnd.add(Calendar.DATE, 1); + while (tempStart.before(tempEnd)) { + days.add(dateFormat.format(tempStart.getTime())); + tempStart.add(Calendar.DAY_OF_YEAR, 1); + } + + } catch (ParseException e) { + e.printStackTrace(); + } + + return days; + } + + /** + * 计算两个日期之间相差的天数 + * + * @param sdate 较小的时间 + * @param edate 较大的时间 + * @return 相差天数 + * @throws ParseException + */ + public static int daysBetween(Date sdate, Date edate) { + sdate = DateUtil.parse(DateUtil.format(sdate, DateUtil.PATTERN_DATE), DateUtil.PATTERN_DATE); + edate = DateUtil.parse(DateUtil.format(edate, DateUtil.PATTERN_DATE), DateUtil.PATTERN_DATE); + Calendar cal = Calendar.getInstance(); + cal.setTime(sdate); + long time1 = cal.getTimeInMillis(); + cal.setTime(edate); + long time2 = cal.getTimeInMillis(); + long between_days = (time2 - time1) / (1000 * 3600 * 24); + + return Integer.parseInt(String.valueOf(between_days)) + 1; + } + + /** + * 获取月份的天数 + * + * @param yearMon 格式yyyyMM + * @return + */ + public static int getMonthDays(String yearMon) { + if (Func.isEmpty(yearMon) || yearMon.length() != 6) { + return 0; + } + + Calendar cal = Calendar.getInstance(); + Date date = DateUtil.parse(yearMon, "yyyyMM"); + cal.setTime(date); + + return cal.getActualMaximum(Calendar.DAY_OF_MONTH); + } + + /** + * 获取两个日期之间相差的月份 + * + * @param startDate 开始日期 + * @param endDate 结束日期 + * @return + * @throws ParseException + */ + public static List getYearList(String startDate, String endDate) { + List list = new ArrayList(); + int startYear = Integer.parseInt(startDate.substring(0, 4)); + int endYear = Integer.parseInt(endDate.substring(0, 4)); + + for (; startYear <= endYear; startYear++) { + list.add(startYear + ""); + } + + return list; + } + + /** + * 获取两个日期之间相差的月份 + * + * @param startDate 开始日期 + * @param endDate 结束日期 + * @param formatStr 返回值的格式字符串 + * @return + * @throws ParseException + */ + public static List getMonthList(String startDate, String endDate, String formatStr) { + List list = new ArrayList(); + SimpleDateFormat sdf = new SimpleDateFormat(formatStr); + Calendar c1 = Calendar.getInstance(); + Calendar c2 = Calendar.getInstance(); + c1.setTime(DateUtil.parse(startDate, DateUtil.PATTERN_DATETIME)); + c2.setTime(DateUtil.parse(endDate, DateUtil.PATTERN_DATETIME)); + + int year = c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR); + int month = c2.get(Calendar.MONTH) + year * 12 - c1.get(Calendar.MONTH); + + for (int i = 0; i <= month; i++) { + c1.setTime(DateUtil.parse(startDate, DateUtil.PATTERN_DATETIME)); + c1.add(Calendar.MONTH, i); + list.add(sdf.format(c1.getTime())); + } + return list; + } + + /** + * 获取两个日期之间的所有日期 + * + * @param startTime 开始日期 + * @param endTime 结束日期 + * @param formatStr 返回值的格式字符串 + * @return + */ + public static List getDayList(String startTime, String endTime, String formatStr) { + // 返回的日期集合 + List days = new ArrayList(); + + DateFormat dateFormat = new SimpleDateFormat(formatStr); + Date start = DateUtil.parse(startTime, DateUtil.PATTERN_DATETIME); + Date end = DateUtil.parse(endTime, DateUtil.PATTERN_DATETIME); + + Calendar tempStart = Calendar.getInstance(); + tempStart.setTime(start); + + Calendar tempEnd = Calendar.getInstance(); + tempEnd.setTime(end); + // 日期加1(包含结束) +// tempEnd.add(Calendar.DATE, 1); + while (tempStart.before(tempEnd)) { + days.add(dateFormat.format(tempStart.getTime())); + tempStart.add(Calendar.DAY_OF_YEAR, 1); + } + return days; + } +} diff --git a/src/main/java/org/springblade/modules/business/contraller/LargeScreenController.java b/src/main/java/org/springblade/modules/business/contraller/LargeScreenController.java index 876f562..11bec00 100644 --- a/src/main/java/org/springblade/modules/business/contraller/LargeScreenController.java +++ b/src/main/java/org/springblade/modules/business/contraller/LargeScreenController.java @@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.time.DateFormatUtils; import org.apache.commons.lang3.StringUtils; import org.springblade.common.constant.CommonConstant; +import org.springblade.common.utils.CommonDateUtil; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.tool.api.R; @@ -17,9 +18,8 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 大屏 控制器 @@ -78,42 +78,36 @@ public class LargeScreenController extends BladeController { * 当年每个月设备维修数量 */ @GetMapping("/select-equip-repair-count-by-month") - public R>> selectEquipRepairCountByMonth(String deviceId) { - List> list = workOrderService.selectEquipRepairCountByMonth(deviceId); - return R.data(list); + public R> selectEquipRepairCountByMonth(String deviceId) { + Map map = workOrderService.selectEquipRepairCountByMonth(deviceId); + return R.data(map); } /** * 平均故障响应时间 */ @GetMapping("/select-average-fault-response-time") - public R selectAverageFaultResponseTime(String month) { - if(StringUtils.isEmpty(month)){ - month = DateFormatUtils.format(new Date(),"yyyy-MM"); - } - Integer duration = workOrderService.selectAverageFaultResponseTime(month); - return R.data(duration); + public R> selectAverageFaultResponseTime(String startMonth,String endMonth) { + Map map = workOrderService.selectAverageFaultResponseTime(startMonth,endMonth); + return R.data(map); } /** * 平均故障修复时间 */ @GetMapping("/select-average-fault-repair-time") - public R selectAverageFaultRepairTime(String month) { - if(StringUtils.isEmpty(month)){ - month = DateFormatUtils.format(new Date(),"yyyy-MM"); - } - Integer duration = workOrderService.selectAverageFaultRepairTime(month); - return R.data(duration); + public R> selectAverageFaultRepairTime(String startMonth,String endMonth) { + Map map = workOrderService.selectAverageFaultRepairTime(startMonth,endMonth); + return R.data(map); } /** * 巡检任务状态统计 */ @GetMapping("/select-maintenance-task-status") - public R>> selectMaintenanceTaskStatus(String startTimeBegin,String startTimeEnd) { - List> list = maintenanceTaskService.selectMaintenanceTaskStatus(startTimeBegin,startTimeEnd); - return R.data(list); + public R> selectMaintenanceTaskStatus(String startTimeBegin,String startTimeEnd) { + Map map = maintenanceTaskService.selectMaintenanceTaskStatus(startTimeBegin,startTimeEnd); + return R.data(map); } diff --git a/src/main/java/org/springblade/modules/business/contraller/WorkBenchesController.java b/src/main/java/org/springblade/modules/business/contraller/WorkBenchesController.java index 9ca665d..ca96f09 100644 --- a/src/main/java/org/springblade/modules/business/contraller/WorkBenchesController.java +++ b/src/main/java/org/springblade/modules/business/contraller/WorkBenchesController.java @@ -165,7 +165,7 @@ public class WorkBenchesController extends BladeController { @GetMapping("/mapAddress") public R> mapAddress(String perType) { Map map = new HashMap<>(); - List users = userService.list(Wrappers.lambdaQuery(User.class).eq(User::getStatus, 1).isNotNull(User::getAddressLon)); + List users = userService.list(Wrappers.lambdaQuery(User.class).eq(User::getStatus, 1).isNotNull(User::getAddressLon).isNotNull(User::getDeptName)); for (User user : users) { List fault = new ArrayList<>(); fault.add(user.getAddressLon()); diff --git a/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.java b/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.java index 2899631..9882d7b 100644 --- a/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.java +++ b/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.java @@ -22,5 +22,5 @@ public interface MaintenanceTaskMapper extends BaseMapper { List> selectMaintenanceTaskCount(); - List> selectMaintenanceTaskStatus(@Param("startTimeBegin")String startTimeBegin,@Param("startTimeEnd")String startTimeEnd); + List> selectMaintenanceTaskStatus(@Param("startTimeBegin")String startTimeBegin,@Param("startTimeEnd")String startTimeEnd); } diff --git a/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.xml b/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.xml index 419cbde..2b1a1d3 100644 --- a/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.xml +++ b/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.xml @@ -48,7 +48,8 @@ '巡检中' WHEN task_status = 3 THEN '待确认' ELSE '已完成' - END AS "taskStatus" + END AS "taskStatus", + DATE_FORMAT(start_time,'%Y-%m') as "month" FROM lab_maintenance_task where is_deleted = 0 @@ -59,6 +60,6 @@ AND start_time #{startTimeEnd} GROUP BY - taskStatus + taskStatus,DATE_FORMAT(start_time,'%Y-%m') diff --git a/src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.java b/src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.java index 2a786a9..f260628 100644 --- a/src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.java +++ b/src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.java @@ -47,11 +47,11 @@ public interface WorkOrderMapper extends BaseMapper { List> selectEquipRepairCount(); - List> selectEquipRepairCountByMonth(@Param("deviceId")String deviceId); + List> selectEquipRepairCountByMonth(@Param("deviceId")String deviceId); - Integer selectAverageFaultResponseTime(@Param("month")String month); + List> selectAverageFaultResponseTime(List monthList); - Integer selectAverageFaultRepairTime(@Param("month")String month); + List> selectAverageFaultRepairTime(List monthList); diff --git a/src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.xml b/src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.xml index a125fca..d8cada2 100644 --- a/src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.xml +++ b/src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.xml @@ -47,7 +47,7 @@ LIMIT 5 - SELECT + DATE_FORMAT( create_time, '%Y-%m' ) AS "month", IFNULL( ROUND( sum( TIMESTAMPDIFF( MINUTE, filling_time, dispatch_time ))/ count( 1 )), 0 ) AS "duration" FROM lab_work_order WHERE - is_deleted = 0 AND DATE_FORMAT( create_time, '%Y-%m' ) = #{month} + is_deleted = 0 AND DATE_FORMAT( create_time, '%Y-%m' ) in + + #{item} + + group by DATE_FORMAT( create_time, '%Y-%m' ) + order by create_time - SELECT - IFNULL( ROUND( sum( TIMESTAMPDIFF( MINUTE, dispatch_time, finish_time ))/ count( 1 )), 0 ) AS "duration" + DATE_FORMAT( create_time, '%Y-%m' ) AS "month", + IFNULL( ROUND( sum( TIMESTAMPDIFF( MINUTE, dispatch_time, finish_time ))/ count( 1 )), 0 ) AS "duration" FROM - lab_work_order + lab_work_order WHERE - is_deleted = 0 - AND dispatch_time IS NOT NULL - AND finish_time IS NOT NULL - AND DATE_FORMAT( create_time, '%Y-%m' ) = #{month} + is_deleted = 0 AND DATE_FORMAT( create_time, '%Y-%m' ) in + + #{item} + + group by DATE_FORMAT( create_time, '%Y-%m' ) + order by create_time diff --git a/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java b/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java index 78e49a4..7e36c9a 100644 --- a/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java +++ b/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java @@ -43,5 +43,5 @@ public interface IMaintenanceTaskService extends BaseService { public List> selectMaintenanceTaskCount(); - public List> selectMaintenanceTaskStatus(String startTimeBegin,String startTimeEnd); + public Map selectMaintenanceTaskStatus(String startTimeBegin,String startTimeEnd); } diff --git a/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java b/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java index ef4d1c0..31911ee 100644 --- a/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java +++ b/src/main/java/org/springblade/modules/business/service/IWorkOrderService.java @@ -90,8 +90,8 @@ public interface IWorkOrderService extends BaseService { public List> selectEquipRepairCount(); - public List> selectEquipRepairCountByMonth(String deviceId); - public Integer selectAverageFaultResponseTime(String month); + public Map selectEquipRepairCountByMonth(String deviceId); + public Map selectAverageFaultResponseTime(String startMonth,String endMonth); - public Integer selectAverageFaultRepairTime(String month); + public Map selectAverageFaultRepairTime(String startMonth,String endMonth); } diff --git a/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java index 071671b..0b283bb 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java @@ -8,6 +8,7 @@ import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springblade.common.constant.CommonConstant; +import org.springblade.common.utils.CommonDateUtil; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.modules.business.excel.MaintenanceTaskDetailExcel; import org.springblade.modules.business.pojo.entity.MaintenanceTaskDetailGoods; @@ -22,6 +23,7 @@ import org.springblade.modules.business.service.IMaintenanceTaskDetailService; import org.springframework.stereotype.Service; import java.io.*; +import java.util.HashMap; import java.util.List; import java.util.ArrayList; @@ -147,8 +149,59 @@ public class MaintenanceTaskServiceImpl extends BaseServiceImpl> selectMaintenanceTaskStatus(String startTimeBegin, String startTimeEnd) { - return baseMapper.selectMaintenanceTaskStatus(startTimeBegin,startTimeEnd); + public Map selectMaintenanceTaskStatus(String startTimeBegin, String startTimeEnd) { + Map map = new HashMap<>(); + String startDate = startTimeBegin + " 00:00:00"; + String endDate = startTimeEnd + " 23:59:59"; + List monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM"); + List> list = baseMapper.selectMaintenanceTaskStatus(startTimeBegin,startTimeEnd); + Map dxjMap = new HashMap<>(); + Map xjzMap = new HashMap<>(); + Map dqrMap = new HashMap<>(); + Map ywcMap = new HashMap<>(); + List dxjList = new ArrayList<>(); + List xjzList = new ArrayList<>(); + List dqrList = new ArrayList<>(); + List ywcList = new ArrayList<>(); + for(Map map1 : list){ + if("待巡检".equals(map1.get("taskStatus"))){ + dxjMap.put(map1.get("month").toString(),map1.get("count").toString()); + }else if("巡检中".equals(map1.get("taskStatus"))){ + xjzMap.put(map1.get("month").toString(),map1.get("count").toString()); + }else if("待确认".equals(map1.get("taskStatus"))){ + dqrMap.put(map1.get("month").toString(),map1.get("count").toString()); + }else if("已完成".equals(map1.get("taskStatus"))){ + ywcMap.put(map1.get("month").toString(),map1.get("count").toString()); + } + } + for(String month : monthList){ + if(null != dxjMap.get(month)){ + dxjList.add(dxjMap.get(month)); + }else{ + dxjList.add("0"); + } + if(null != xjzMap.get(month)){ + xjzList.add(xjzMap.get(month)); + }else{ + xjzList.add("0"); + } + if(null != dqrMap.get(month)){ + dqrList.add(dqrMap.get(month)); + }else{ + dqrList.add("0"); + } + if(null != ywcMap.get(month)){ + ywcList.add(ywcMap.get(month)); + }else{ + ywcList.add("0"); + } + } + map.put("date",monthList); + map.put("dxjData",dxjList); + map.put("xjzData",xjzList); + map.put("dqrData",dqrList); + map.put("ywcData",ywcList); + return map; } diff --git a/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java index d71e72f..b4a24e1 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java @@ -7,10 +7,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.AllArgsConstructor; import lombok.Synchronized; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.time.DateFormatUtils; import org.springblade.common.cache.DictBizCache; import org.springblade.common.cache.SysCache; import org.springblade.common.cache.UserCache; import org.springblade.common.constant.CommonConstant; +import org.springblade.common.utils.CommonDateUtil; import org.springblade.common.utils.LogUtil; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.support.Condition; @@ -38,6 +40,7 @@ import org.springblade.modules.system.service.IUserService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -312,18 +315,77 @@ public class WorkOrderServiceImpl extends BaseServiceImpl> selectEquipRepairCountByMonth(String deviceId) { - return baseMapper.selectEquipRepairCountByMonth(deviceId); + public Map selectEquipRepairCountByMonth(String deviceId) { + String startDate = DateFormatUtils.format(CommonDateUtil.getCurrentYearStartTime(),"yyyy-MM-dd HH:mm:ss"); + String endDate = DateFormatUtils.format(CommonDateUtil.getCurrentYearEndTime(),"yyyy-MM-dd HH:mm:ss"); + List monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM"); + List> list = baseMapper.selectEquipRepairCountByMonth(deviceId); + List dataList = new ArrayList<>(); + Map dataMap = new HashMap<>(); + for(Map map1 : list){ + dataMap.put(map1.get("month").toString(),map1.get("duration").toString()); + } + for(String month : monthList){ + if(null != dataMap.get(month)){ + dataList.add(dataMap.get(month)); + }else{ + dataList.add("0"); + } + } + Map map = new HashMap<>(); + map.put("date",monthList); + map.put("data",dataList); + return map; } @Override - public Integer selectAverageFaultResponseTime(String month) { - return baseMapper.selectAverageFaultResponseTime(month); + public Map selectAverageFaultResponseTime(String startMonth,String endMonth) { + String startDate = startMonth + "-01 00:00:00"; + String endDate = endMonth + "-01 23:59:59"; + List monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM"); + List> list = baseMapper.selectAverageFaultResponseTime(monthList); + List dataList = new ArrayList<>(); + Map dataMap = new HashMap<>(); + for(Map map1 : list){ + dataMap.put(map1.get("month").toString(),map1.get("duration").toString()); + } + for(String month : monthList){ + if(null != dataMap.get(month)){ + dataList.add(dataMap.get(month)); + }else{ + dataList.add("0"); + } + } + + Map map = new HashMap<>(); + map.put("date",monthList); + map.put("data",dataList); + return map; } @Override - public Integer selectAverageFaultRepairTime(String month) { - return baseMapper.selectAverageFaultRepairTime(month); + public Map selectAverageFaultRepairTime(String startMonth,String endMonth) { + String startDate = startMonth + "-01 00:00:00"; + String endDate = endMonth + "-01 23:59:59"; + List monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM"); + List> list = baseMapper.selectAverageFaultRepairTime(monthList); + List dataList = new ArrayList<>(); + Map dataMap = new HashMap<>(); + for(Map map1 : list){ + dataMap.put(map1.get("month").toString(),map1.get("duration").toString()); + } + for(String month : monthList){ + if(null != dataMap.get(month)){ + dataList.add(dataMap.get(month)); + }else{ + dataList.add("0"); + } + } + + Map map = new HashMap<>(); + map.put("date",monthList); + map.put("data",dataList); + return map; } @Transactional(rollbackFor = Exception.class) diff --git a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml index e2c9bd8..43cd483 100644 --- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml +++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml @@ -25,6 +25,7 @@ +