lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcVacationManagementController.java
@@ -1,6 +1,7 @@ package org.jeecg.modules.mdc.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -58,6 +59,9 @@ @ApiOperation(value = "假期管理-新增", notes = "假期管理-新增") @PostMapping("/addVacation") public Result<?> addVacation(@RequestBody MdcVacationManagement mdcVacationManagement) { if (StringUtils.isBlank(mdcVacationManagement.getEquipmentIds())) { return Result.error("未选择设备,请排查"); } boolean flag = mdcVacationManagementService.addVacation(mdcVacationManagement); return flag ? Result.ok("新增成功") : Result.error("新增失败"); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcVacationManagement.java
@@ -64,7 +64,7 @@ */ @Excel(name = "类型",width = 15) @ApiModelProperty("类型") private String type; private String vacationType; /** * 备注 @@ -103,6 +103,9 @@ @ApiModelProperty("更新人") private String updateBy; @TableField(exist = false) private String equipmentIds; /** * 开始时间 */ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcVacationManagementMappper.java
@@ -21,4 +21,11 @@ * @return */ IPage<MdcVacationManagement> pageList(IPage<MdcVacationManagement> pageData, @Param("vacation") MdcVacationManagement vacation); /** * 查询最后一条双休日 * @return */ MdcVacationManagement selectLastWeekDays(); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcVacationManagementMapper.xml
@@ -23,4 +23,8 @@ order by vacation_date asc </where> </select> <select id="selectLastWeekDays" resultType="org.jeecg.modules.mdc.entity.MdcVacationManagement"> select top 1 * from mdc_vacation_management where vacation_type = '双休日' order by vacation_date desc </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcVacationManagementServiceImpl.java
@@ -4,12 +4,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import net.sf.saxon.expr.Component; import org.apache.commons.lang3.StringUtils; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcVacationManagement; import org.jeecg.modules.mdc.mapper.MdcVacationManagementMappper; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.service.IMdcVacationManagementService; import org.jeecg.modules.mdc.util.DateUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -40,7 +43,20 @@ @Override public Boolean addVacation(MdcVacationManagement mdcVacationManagement) { return this.save(mdcVacationManagement); boolean result = false; String[] equipmentIds = mdcVacationManagement.getEquipmentIds().split(","); for (String equipmentId : equipmentIds) { MdcEquipment mdcEquipment = equipmentService.findEquipmentNameByEquipmentId(equipmentId); MdcVacationManagement vacationManagement = new MdcVacationManagement(); BeanUtils.copyProperties(mdcVacationManagement, vacationManagement); vacationManagement.setEquipmentId(mdcEquipment.getEquipmentId()); vacationManagement.setEquipmentName(mdcEquipment.getEquipmentName()); boolean b = super.save(vacationManagement); if (b) { result = true; } } return result; } @Override @@ -96,7 +112,7 @@ */ @Override public void generateWeekDays() { MdcVacationManagement mdcVacationManagement = this.baseMapper.selectOne(new LambdaQueryWrapper<MdcVacationManagement>().eq(MdcVacationManagement::getType, "双休日").orderByDesc(MdcVacationManagement::getVacationDate).last("limit 1")); MdcVacationManagement mdcVacationManagement = this.baseMapper.selectLastWeekDays(); // 获取生成开始时间和结束时间 LocalDate startDate; LocalDate endDate; @@ -108,7 +124,25 @@ startDate = vacationDate.with(TemporalAdjusters.firstDayOfMonth()); endDate = vacationDate.with(TemporalAdjusters.lastDayOfMonth()); } List<MdcVacationManagement> list = new ArrayList<>(); // 获取开始时间和结束时间的中间双休日集合 List<Date> dateList = DateUtils.getWeekDays(startDate, endDate); if (!dateList.isEmpty()) { // 获取所有设备 List<MdcEquipment> equipmentList = equipmentService.list(); for (Date date : dateList) { for (MdcEquipment mdcEquipment : equipmentList) { MdcVacationManagement management = new MdcVacationManagement(); management.setEquipmentId(mdcEquipment.getEquipmentId()); management.setEquipmentName(mdcEquipment.getEquipmentName()); management.setVacationDate(date); management.setVacationType("双休日"); management.setCreateBy("root"); list.add(management); } } super.saveBatch(list); } } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateUtils.java
@@ -5,9 +5,15 @@ import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.ZoneId; import java.time.temporal.ChronoField; import java.time.temporal.ChronoUnit; import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; public class DateUtils { @@ -28,6 +34,7 @@ long d2 = d1.getTime() - 86400*1000; return new Date(d2); } /** * @return 返回时间差的语言描述 如1天2小时5分6秒 */ @@ -155,6 +162,7 @@ public static final String STR_DATE_TIME_FULL = "yyyyMMddHHmmssSSS"; public static final String STR_HHMMSS = "HH:mm:ss"; public static final String STR_HHMM = "HH:mm"; /** * <p> * Description: 实际投标月份 @@ -207,8 +215,7 @@ * Description: 修改时间为指定时间当天的23:59:59.000 * </p> * * @param date * 需要修改的时间 * @param date 需要修改的时间 * @return 修改后的时间 */ public static Date fillTime(Date date) { @@ -218,10 +225,8 @@ } /** * @param date * 当前时间 * @param i * 往前几天 * @param date 当前时间 * @param i 往前几天 * @return */ public static Date fillBeforeTime(Date date, Integer i) { @@ -239,8 +244,7 @@ * Description: 修改时间为指定时间前一天的00:00:00 * </p> * * @param date * 需要修改的时间 * @param date 需要修改的时间 * @return 修改后的时间 */ public static Date plusTime(Date date, Integer i) { @@ -257,8 +261,7 @@ * </p> * 如: 2013-11-11 18:56:33 ---> 2013-11-11 00:00:00 * * @param date * 需要修改的时间 * @param date 需要修改的时间 * @return 修改后的时间 */ public static Date removeTime(Date date) { @@ -278,8 +281,7 @@ * Description: 按默认格式(yyyy-MM-dd HH:mm:ss.SSS)获取时间字符串 * </p> * * @param date * 要转换的日期 * @param date 要转换的日期 * @return 转换后的时间字符串 */ public static String format(Date date) { @@ -303,15 +305,14 @@ Date date=curr.getTime(); return date; } /** * <p> * Description: 按指定格式获取时间字符串 * </p> * * @param date * 要转换的日期 * @param format * 格式,例如:yyyy-MM-dd HH:mm:ss.SSS * @param date 要转换的日期 * @param format 格式,例如:yyyy-MM-dd HH:mm:ss.SSS * @return 转换后的时间字符串 */ public static String format(Date date, String format) { @@ -324,8 +325,7 @@ * Description: 加月函数 * </p> * * @param month * 月份数 * @param month 月份数 * @return */ public static Date addMonth(Integer month, Date time) { @@ -400,6 +400,7 @@ double hours = (t2 - t1) / (1000 * 60 * 60); return Double.valueOf(new DecimalFormat("#.00").format(hours)); } //根据当前时间和出生日期获取年龄 public static int getAge(Date birthDay){ Calendar cal = Calendar.getInstance(); @@ -468,6 +469,7 @@ } return null; } public static Date toDateMedium(String date){ SimpleDateFormat df = new SimpleDateFormat(STR_DATE_TIME_SMALL); try { @@ -477,6 +479,7 @@ return null; } } public static Integer getDate(Date date) { if (date != null) { Calendar calendar = Calendar.getInstance(); @@ -486,9 +489,11 @@ } return null; } public static Integer getYear() { return getYear(new Date()); } public static Integer getYear(Date date) { if (date != null) { Calendar calendar = Calendar.getInstance(); @@ -498,9 +503,11 @@ } return null; } public static Integer getMonth() { return getMonth(new Date()); } public static Integer getMonth(Date date) { if (date != null) { Calendar calendar = Calendar.getInstance(); @@ -510,9 +517,11 @@ } return null; } public static Integer getDay() { return getDay(new Date()); } public static Integer getDay(Date date) { if (date != null) { Calendar calendar = Calendar.getInstance(); @@ -544,6 +553,7 @@ dates[1] = endsTime; return dates; } public static Date[] getMonthStartTimeAndEndTime(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); @@ -570,6 +580,7 @@ /** * 获取days天的时间区间,endTime 为当天的后一天0点, * startTime 为endTime前days天 * * @param days * @return */ @@ -585,6 +596,7 @@ /** * 根据某一年获取最后一天的时间 * 2013 ---> 2013-12-31 23:59:59.000 * * @param year * @return */ @@ -600,6 +612,7 @@ /** * 获取start/end的所有日期字符串 格式yyyy-MM-dd * * @param start * @param end * @return @@ -619,6 +632,7 @@ /** * 获取start/end的所有日期字符串 格式yyyy-MM-dd * * @param start * @param end * @return @@ -638,6 +652,7 @@ /** * 获取start/end的所有日期字符串 格式yyyyMMdd * * @param start * @param end * @return @@ -673,6 +688,7 @@ /** * 获取dateStr的日期格式yyyy-MM-dd * * @param dateStr * @return */ @@ -688,6 +704,7 @@ /** * 获取dateStr的日期格式yyyyMMdd * * @param dateStr * @return */ @@ -712,7 +729,6 @@ } /** * * @param time * @param n * @return 在一个时间上加秒 @@ -725,7 +741,6 @@ } /** * * @param time * @param n * @return 在一个时间上加分钟 @@ -738,7 +753,6 @@ } /** * * @param time * @param n * @return 在一个时间上加小时 @@ -752,6 +766,7 @@ /** * 获取start/end的所有日期字符串 格式yyyy-MM-dd * * @param start * @param end * @return @@ -776,8 +791,10 @@ } return list; } /** * 获取start/end的所有日期字符串 格式yyyy * * @param start * @param end * @return @@ -802,10 +819,12 @@ } return list; } /** * 获取当前时间 定位到小时 * 格式为 yyyy-MM-dd hh:mm * 例:2018-02-27 11:00 * * @return */ public static Date getNowHourDate() { @@ -822,6 +841,7 @@ /** * 获取每日8:11或11:11的时间点 * * @return */ public static Date getNowHourDateTo() { @@ -845,6 +865,7 @@ /** * 获取每日8:00、13:00、20:00的时间点 * * @return */ public static List<Date> getHourDateList(Date time) { @@ -857,6 +878,7 @@ /** * 获取上月的最后一天 * * @return */ public static Date getPreviousMonthLastDay() { @@ -867,6 +889,7 @@ /** * 获取end时间月的第一天 * * @param end 月份最后一天 * @return */ @@ -882,8 +905,7 @@ int hour = 0; if (time <= 0) { return "0小时"; } else { } else { BigDecimal bigDecimal = new BigDecimal(time); BigDecimal bigDecimal1 = new BigDecimal(3600); BigDecimal hourBigDecimal = new BigDecimal(0); @@ -924,6 +946,7 @@ retStr = "" + i; return retStr; } /** * 验证时间 * @@ -962,11 +985,11 @@ public static long getTimeWithOutDay(Date d) { return d.getTime()/1000%86400; } /** * @Description: long类型转换成日期 * * @param lo 毫秒数 * @return String yyyy-MM-dd HH:mm:ss * @Description: long类型转换成日期 */ public static String longToDate(long lo){ Date date = new Date(lo); @@ -975,12 +998,17 @@ } /** * * @param startDate * @param endDate * @return */ public static List<Date> getWeekDays(LocalDate startDate, LocalDate endDate) { return null; List<Date> result = new ArrayList<>(); List<LocalDate> dateList = Stream.iterate(startDate, localDate -> localDate.plusDays(1)) .limit(ChronoUnit.DAYS.between(startDate, endDate) + 1) .filter(localDate -> DayOfWeek.SATURDAY.equals(DayOfWeek.of(localDate.get(ChronoField.DAY_OF_WEEK))) || DayOfWeek.SUNDAY.equals(DayOfWeek.of(localDate.get(ChronoField.DAY_OF_WEEK)))) .collect(Collectors.toList()); dateList.forEach(localDate -> result.add(Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()))); return result; } }