Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/org/springblade/modules/business/service/IWorkOrderService.java
#	src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java
master
薛宏祥 1 year ago
commit e3f06f322b
  1. 811
      src/main/java/org/springblade/common/utils/CommonDateUtil.java
  2. 2
      src/main/java/org/springblade/modules/business/config/ScheduledService.java
  3. 36
      src/main/java/org/springblade/modules/business/contraller/LargeScreenController.java
  4. 13
      src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java
  5. 2
      src/main/java/org/springblade/modules/business/contraller/WorkBenchesController.java
  6. 2
      src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.java
  7. 5
      src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.xml
  8. 6
      src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.java
  9. 47
      src/main/java/org/springblade/modules/business/mapper/WorkOrderMapper.xml
  10. 2
      src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java
  11. 7
      src/main/java/org/springblade/modules/business/service/IWorkOrderService.java
  12. 6
      src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java
  13. 57
      src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java
  14. 74
      src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java
  15. 1
      src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
  16. 5
      src/main/java/org/springblade/modules/system/pojo/entity/User.java
  17. 4
      src/main/resources/application-dev.yml
  18. 2
      src/main/resources/application.yml

@ -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<String> getMonths(String startTimeStr, String endTimeStr) {
List<String> 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<String> getDays(String startTime, String endTime) {
// 返回的日期集合
List<String> days = new ArrayList<String>();
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<String> 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<String> 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<String> getDayList(String startTime, String endTime, String formatStr) {
// 返回的日期集合
List<String> days = new ArrayList<String>();
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;
}
}

@ -18,7 +18,7 @@ public class ScheduledService {
/**
* 每天零点生成新的巡查任务
*/
@Scheduled(cron = "0 25 14 * * ? ")
@Scheduled(cron = "0 0 1 * * ?")
private void toVideoTransformation() {
LocalDate now = LocalDate.now().minusDays(-5);
maintenancePlanService.createTask(now);

@ -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<List<Map<String,String>>> selectEquipRepairCountByMonth(String deviceId) {
List<Map<String,String>> list = workOrderService.selectEquipRepairCountByMonth(deviceId);
return R.data(list);
public R<Map<String,Object>> selectEquipRepairCountByMonth(String deviceId) {
Map<String,Object> map = workOrderService.selectEquipRepairCountByMonth(deviceId);
return R.data(map);
}
/**
* 平均故障响应时间
*/
@GetMapping("/select-average-fault-response-time")
public R<Integer> 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<Map<String,Object>> selectAverageFaultResponseTime(String startMonth,String endMonth) {
Map<String,Object> map = workOrderService.selectAverageFaultResponseTime(startMonth,endMonth);
return R.data(map);
}
/**
* 平均故障修复时间
*/
@GetMapping("/select-average-fault-repair-time")
public R<Integer> 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<Map<String,Object>> selectAverageFaultRepairTime(String startMonth,String endMonth) {
Map<String,Object> map = workOrderService.selectAverageFaultRepairTime(startMonth,endMonth);
return R.data(map);
}
/**
* 巡检任务状态统计
*/
@GetMapping("/select-maintenance-task-status")
public R<List<Map<String,String>>> selectMaintenanceTaskStatus(String startTimeBegin,String startTimeEnd) {
List<Map<String,String>> list = maintenanceTaskService.selectMaintenanceTaskStatus(startTimeBegin,startTimeEnd);
return R.data(list);
public R<Map<String,Object>> selectMaintenanceTaskStatus(String startTimeBegin,String startTimeEnd) {
Map<String,Object> map = maintenanceTaskService.selectMaintenanceTaskStatus(startTimeBegin,startTimeEnd);
return R.data(map);
}

@ -160,12 +160,25 @@ public class MaintenanceController extends BladeController {
@Operation(summary = "维修人员更新预约时间", description = "维修人员更新预约时间")
public R taskServicemanUpdateTime(@RequestBody MaintenanceTask task) {
MaintenanceTask taskOld = taskService.getById(task.getId());
taskOld.setSignUrl(task.getSignUrl());
taskOld.setRemark(task.getRemark());
taskOld.setReservationTime(task.getReservationTime());
taskService.updateById(taskOld);
return R.success();
}
@PostMapping("/task-serviceman-update-sign")
@Operation(summary = "维修人员更新客户签名", description = "维修人员更新客户签名")
public R taskServicemanUpdateSign(@RequestBody MaintenanceTask task) {
MaintenanceTask taskOld = taskService.getById(task.getId());
taskOld.setSignUrl(task.getSignUrl());
taskOld.setRemark(task.getRemark());
taskService.updateById(taskOld);
return R.success();
}
@PostMapping("/task-serviceman-update-detail")
@Operation(summary = "维修人员更新维修明细", description = "维修人员更新维修明细")
public R taskServicemanUpdateDetail(@RequestBody List<MaintenanceTaskDetail> taskDetailList) {

@ -165,7 +165,7 @@ public class WorkBenchesController extends BladeController {
@GetMapping("/mapAddress")
public R<Map<String, Object>> mapAddress(String perType) {
Map<String, Object> map = new HashMap<>();
List<User> users = userService.list(Wrappers.lambdaQuery(User.class).eq(User::getStatus, 1).isNotNull(User::getAddressLon));
List<User> users = userService.list(Wrappers.lambdaQuery(User.class).eq(User::getStatus, 1).isNotNull(User::getAddressLon).isNotNull(User::getDeptName));
for (User user : users) {
List<String> fault = new ArrayList<>();
fault.add(user.getAddressLon());

@ -22,5 +22,5 @@ public interface MaintenanceTaskMapper extends BaseMapper<MaintenanceTask> {
List<Map<String,String>> selectMaintenanceTaskCount();
List<Map<String,String>> selectMaintenanceTaskStatus(@Param("startTimeBegin")String startTimeBegin,@Param("startTimeEnd")String startTimeEnd);
List<Map<String,Object>> selectMaintenanceTaskStatus(@Param("startTimeBegin")String startTimeBegin,@Param("startTimeEnd")String startTimeEnd);
}

@ -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 <![CDATA[<=]]> #{startTimeEnd}
</if>
GROUP BY
taskStatus
taskStatus,DATE_FORMAT(start_time,'%Y-%m')
</select>
</mapper>

@ -47,11 +47,11 @@ public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
List<Map<String,String>> selectEquipRepairCount();
List<Map<String,String>> selectEquipRepairCountByMonth(@Param("deviceId")String deviceId);
List<Map<String,Object>> selectEquipRepairCountByMonth(@Param("deviceId")String deviceId);
Integer selectAverageFaultResponseTime(@Param("month")String month);
List<Map<String,Object>> selectAverageFaultResponseTime(List<String> monthList);
Integer selectAverageFaultRepairTime(@Param("month")String month);
List<Map<String,Object>> selectAverageFaultRepairTime(List<String> monthList);

@ -47,7 +47,7 @@
LIMIT 5
</select>
<select id="selectEquipOverview" resultType="map">
select count(1) as "count","设备总数" as "name" from lab_device AND is_deleted = 0
select count(1) as "count","设备总数" as "name" from lab_device where is_deleted = 0
UNION
select count(1) as "count","维修设备" as "name" from lab_device where run_status = 2 AND is_deleted = 0
UNION
@ -57,7 +57,7 @@
</select>
<select id="selectEquipRepairCount" resultType="map">
select count(1) as "count","总数量" as "name" from lab_work_order
select count(1) as "count","总数量" as "name" from lab_work_order where is_deleted = 0
UNION
select count(1) as "count","维修中" as "name" from lab_work_order where status not in (202,203,204) AND is_deleted = 0
UNION
@ -65,21 +65,6 @@
</select>
<select id="selectEquipRepairCountByMonth" resultType="map">
SELECT
a.MONTH,
IFNULL( b.count, 0 ) AS "count"
FROM
(
SELECT
SUBSTRING_INDEX( SUBSTRING_INDEX( '01,02,03,04,05,06,07,08,09,10,11,12', ',', help_topic_id + 1 ), ',',- 1 ) AS "month"
FROM
mysql.help_topic
WHERE
help_topic_id <![CDATA[<]]> (
LENGTH( '1,2,3,4,5,6,7,8,9,10,11,12' )) - LENGTH(
REPLACE ( '1,2,3,4,5,6,7,8,9,10,11,12', ',', '' )) + 1
) a
LEFT JOIN (
SELECT
count( 1 ) AS "count",
DATE_FORMAT( create_time, '%m' ) AS "month"
@ -92,28 +77,36 @@
</if>
GROUP BY
DATE_FORMAT( create_time, '%Y-%m' )
) b ON a.MONTH = b.MONTH
</select>
<select id="selectAverageFaultResponseTime" resultType="java.lang.Integer">
<select id="selectAverageFaultResponseTime" resultType="map">
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
<foreach collection="monthList" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
group by DATE_FORMAT( create_time, '%Y-%m' )
order by create_time
</select>
<select id="selectAverageFaultRepairTime" resultType="java.lang.Integer">
<select id="selectAverageFaultRepairTime" resultType="map">
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
<foreach collection="monthList" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
group by DATE_FORMAT( create_time, '%Y-%m' )
order by create_time
</select>
</mapper>

@ -43,5 +43,5 @@ public interface IMaintenanceTaskService extends BaseService<MaintenanceTask> {
public List<Map<String,String>> selectMaintenanceTaskCount();
public List<Map<String,String>> selectMaintenanceTaskStatus(String startTimeBegin,String startTimeEnd);
public Map<String,Object> selectMaintenanceTaskStatus(String startTimeBegin,String startTimeEnd);
}

@ -92,11 +92,10 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
public List<Map<String, String>> selectEquipRepairCount();
public List<Map<String, String>> selectEquipRepairCountByMonth(String deviceId);
public Map<String,Object> selectEquipRepairCountByMonth(String deviceId);
public Map<String,Object> selectAverageFaultResponseTime(String startMonth,String endMonth);
public Integer selectAverageFaultResponseTime(String month);
public Integer selectAverageFaultRepairTime(String month);
public void reportService(WorkOrder workOrder, HttpServletResponse response) throws IOException;
public Map<String,Object> selectAverageFaultRepairTime(String startMonth,String endMonth);
}

@ -89,7 +89,7 @@ public class MaintenancePlanServiceImpl extends BaseServiceImpl<MaintenancePlanM
// 修改该实验室下所有用户为维保客户
if (plan.getDeptId() != null) {
save = userService.update(Wrappers.<User>update().lambda().set(User::getIsMaintenanceClient, 1).eq(User::getDeptId, plan.getDeptId()).eq(User::getIsMaintenanceClient, 0));
save = userService.update(Wrappers.<User>update().lambda().set(User::getIsMaintenanceClient, 1).like(User::getDeptId, plan.getDeptId()).eq(User::getIsMaintenanceClient, 0));
}
return save;
}
@ -184,7 +184,9 @@ public class MaintenancePlanServiceImpl extends BaseServiceImpl<MaintenancePlanM
List<MaintenancePlan> plans = this.list(Wrappers.lambdaQuery(MaintenancePlan.class).in(MaintenancePlan::getId, ids));
if (CollectionUtil.isNotEmpty(plans)) {
List<Long> deptIds = plans.stream().map(MaintenancePlan::getDeptId).toList();
userService.update(Wrappers.<User>update().lambda().set(User::getIsMaintenanceClient, 0).in(User::getDeptId, deptIds).eq(User::getIsMaintenanceClient, 1));
for (Long deptId : deptIds) {
userService.update(Wrappers.<User>update().lambda().set(User::getIsMaintenanceClient, 0).like(User::getDeptId, deptId).eq(User::getIsMaintenanceClient, 1));
}
}
return this.deleteLogic(ids);
}

@ -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<MaintenanceTaskM
}
@Override
public List<Map<String, String>> selectMaintenanceTaskStatus(String startTimeBegin, String startTimeEnd) {
return baseMapper.selectMaintenanceTaskStatus(startTimeBegin,startTimeEnd);
public Map<String,Object> selectMaintenanceTaskStatus(String startTimeBegin, String startTimeEnd) {
Map<String,Object> map = new HashMap<>();
String startDate = startTimeBegin + " 00:00:00";
String endDate = startTimeEnd + " 23:59:59";
List<String> monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM");
List<Map<String, Object>> list = baseMapper.selectMaintenanceTaskStatus(startTimeBegin,startTimeEnd);
Map<String,String> dxjMap = new HashMap<>();
Map<String,String> xjzMap = new HashMap<>();
Map<String,String> dqrMap = new HashMap<>();
Map<String,String> ywcMap = new HashMap<>();
List<String> dxjList = new ArrayList<>();
List<String> xjzList = new ArrayList<>();
List<String> dqrList = new ArrayList<>();
List<String> ywcList = new ArrayList<>();
for(Map<String,Object> 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;
}

@ -14,10 +14,12 @@ import jakarta.servlet.http.HttpServletResponse;
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;
@ -50,6 +52,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -324,18 +327,77 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
@Override
public List<Map<String, String>> selectEquipRepairCountByMonth(String deviceId) {
return baseMapper.selectEquipRepairCountByMonth(deviceId);
public Map<String, Object> 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<String> monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM");
List<Map<String, Object>> list = baseMapper.selectEquipRepairCountByMonth(deviceId);
List<String> dataList = new ArrayList<>();
Map<String,String> dataMap = new HashMap<>();
for(Map<String,Object> 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<String,Object> 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<String,Object> selectAverageFaultResponseTime(String startMonth,String endMonth) {
String startDate = startMonth + "-01 00:00:00";
String endDate = endMonth + "-01 23:59:59";
List<String> monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM");
List<Map<String,Object>> list = baseMapper.selectAverageFaultResponseTime(monthList);
List<String> dataList = new ArrayList<>();
Map<String,String> dataMap = new HashMap<>();
for(Map<String,Object> 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<String,Object> 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<String,Object> selectAverageFaultRepairTime(String startMonth,String endMonth) {
String startDate = startMonth + "-01 00:00:00";
String endDate = endMonth + "-01 23:59:59";
List<String> monthList = CommonDateUtil.getMonthList(startDate,endDate,"yyyy-MM");
List<Map<String,Object>> list = baseMapper.selectAverageFaultRepairTime(monthList);
List<String> dataList = new ArrayList<>();
Map<String,String> dataMap = new HashMap<>();
for(Map<String,Object> 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<String,Object> map = new HashMap<>();
map.put("date",monthList);
map.put("data",dataList);
return map;
}
@Transactional(rollbackFor = Exception.class)

@ -25,6 +25,7 @@
<result column="role_id" property="roleId"/>
<result column="dept_id" property="deptId"/>
<result column="post_id" property="postId"/>
<result column="large_screen_pic" property="largeScreenPic"/>
</resultMap>
<select id="selectUserPage" resultMap="userResultMap">

@ -127,4 +127,9 @@ public class User extends TenantEntity {
*/
private Integer isMaintenanceClient;
/**
* 大屏图片
*/
private String largeScreenPic;
}

@ -12,7 +12,7 @@ spring:
datasource:
# MySql
url: jdbc:mysql://192.168.1.12:3306/lab-ops?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
# url: jdbc:mysql://127.0.0.1:3306/lab-ops?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
# url: jdbc:mysql://127.0.0.1:3306/lab-ops?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
username: root
password: 123456
@ -20,7 +20,7 @@ sms:
enabled: true
name: aliyun
# sms审核通过的短信模板
template-id: SMS_154950909
template-id: SMS_476785306
template-id1: SMS_476455177
# sms审核通过的短信签名
sign-name: 实验室运维系统

@ -1,6 +1,6 @@
#服务器配置
server:
port: 80
port: 10001
undertow:
threads:
# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程

Loading…
Cancel
Save