liwen
1 year ago
18 changed files with 756 additions and 421 deletions
@ -0,0 +1,55 @@
|
||||
package com.hnac.hzims.safeproduct.dto; |
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
||||
import com.alibaba.excel.annotation.ExcelProperty; |
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
|
||||
import java.util.Date; |
||||
|
||||
/** |
||||
* @author liwen |
||||
* @date 2023-12-27 |
||||
*/ |
||||
@Data |
||||
@ExcelIgnoreUnannotated |
||||
@ApiModel(value = "演练数据导出DTO类") |
||||
public class RehearsalExportDTO { |
||||
|
||||
@ApiModelProperty("单位") |
||||
@ExcelProperty(value = "单位", index = 0) |
||||
private String unit; |
||||
|
||||
@ApiModelProperty("演练科目") |
||||
@ExcelProperty(value = "演练科目", index = 1) |
||||
private String subject; |
||||
|
||||
@ApiModelProperty("演练计划开始时间") |
||||
@ExcelProperty(value = "演练计划开始时间", index = 2) |
||||
private Date scheduledStartTime; |
||||
|
||||
@ApiModelProperty("演练计划结束时间") |
||||
@ExcelProperty(value = "演练计划结束时间", index = 3) |
||||
private Date scheduledEndTime; |
||||
|
||||
@ApiModelProperty("演练地点") |
||||
@ExcelProperty(value = "演练地点", index = 4) |
||||
private String location; |
||||
|
||||
@ApiModelProperty("参演人数") |
||||
@ExcelProperty(value = "参演人数", index = 5) |
||||
private Integer peopleNum; |
||||
|
||||
@ApiModelProperty("演练实际开始时间") |
||||
@ExcelProperty(value = "演练实际开始时间", index = 6) |
||||
private Date actualStartTime; |
||||
|
||||
@ApiModelProperty("演练实际结束时间") |
||||
@ExcelProperty(value = "演练实际结束时间", index = 7) |
||||
private Date actualEndTime; |
||||
|
||||
@ApiModelProperty("演练状态") |
||||
@ExcelProperty(value = "演练状态", index = 8) |
||||
private String rehearsalStatus; |
||||
} |
@ -0,0 +1,60 @@
|
||||
package com.hnac.hzims.safeproduct.entity; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName; |
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
import org.springblade.core.mp.base.BaseEntity; |
||||
|
||||
import javax.validation.constraints.NotNull; |
||||
import javax.validation.constraints.Size; |
||||
import java.util.Date; |
||||
|
||||
/** |
||||
* @author liwen |
||||
* @date 2023-12-27 |
||||
*/ |
||||
@Data |
||||
@EqualsAndHashCode(callSuper = true) |
||||
@TableName("hzims_rehearsal_plan") |
||||
@ApiModel(value = "演练计划实体类") |
||||
public class RehearsalPlanEntity extends BaseEntity { |
||||
|
||||
@NotNull |
||||
@Size(max = 50, message = "单位字段长度不能超过50") |
||||
@ApiModelProperty("单位") |
||||
private String unit; |
||||
|
||||
@NotNull |
||||
@Size(max = 50, message = "演练科目字段长度不能超过50") |
||||
@ApiModelProperty("演练科目") |
||||
private String subject; |
||||
|
||||
@NotNull |
||||
@ApiModelProperty("演练计划开始时间") |
||||
private Date scheduledStartTime; |
||||
|
||||
@NotNull |
||||
@ApiModelProperty("演练计划结束时间") |
||||
private Date scheduledEndTime; |
||||
|
||||
@NotNull |
||||
@Size(max = 255, message = "演练地点字段长度不能超过255") |
||||
@ApiModelProperty("演练地点") |
||||
private String location; |
||||
|
||||
@NotNull |
||||
@Size(max = 10, message = "总指挥字段长度不能超过10") |
||||
@ApiModelProperty("总指挥") |
||||
private String commander; |
||||
|
||||
@Size(max = 20, message = "演练方式字段长度不能超过20") |
||||
@ApiModelProperty("演练方式") |
||||
private String rehearsalMethod; |
||||
|
||||
@NotNull |
||||
@Size(max = 20, message = "演练状态字段长度不能超过20") |
||||
@ApiModelProperty("演练状态") |
||||
private String rehearsalStatus; |
||||
} |
@ -0,0 +1,64 @@
|
||||
package com.hnac.hzims.safeproduct.mapper; |
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import com.hnac.hzims.safeproduct.dto.AnalysisYearDTO; |
||||
import com.hnac.hzims.safeproduct.dto.RehearsalExportDTO; |
||||
import com.hnac.hzims.safeproduct.entity.RehearsalPlanEntity; |
||||
import com.hnac.hzims.safeproduct.vo.RehearsalMonthVO; |
||||
import com.hnac.hzims.safeproduct.vo.RehearsalYearVO; |
||||
import org.apache.ibatis.annotations.Mapper; |
||||
import org.apache.ibatis.annotations.Param; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 演练计划Mapper类 |
||||
* |
||||
* @author liwen |
||||
* @date 2023-12-27 |
||||
*/ |
||||
@Mapper |
||||
public interface RehearsalPlanMapper extends BaseMapper<RehearsalPlanEntity> { |
||||
|
||||
/** |
||||
* 查询当月各单位的演练总数 |
||||
* @param page 分页类 |
||||
* @param month 月份 |
||||
* @return 当月的演练总数据 |
||||
*/ |
||||
IPage<RehearsalMonthVO> selectByMonth(IPage<RehearsalMonthVO> page, String month); |
||||
|
||||
/** |
||||
* 查询当月各单位已完成的演练数据 |
||||
* @param page 分页类 |
||||
* @param month 月份 |
||||
* @return 当月的已完成数据 |
||||
*/ |
||||
IPage<RehearsalMonthVO> selectFinishedDataByMonth(IPage<RehearsalMonthVO> page, String month); |
||||
|
||||
/** |
||||
* 查询当年的所有单位 |
||||
* @param page 分页类 |
||||
* @param year 年份 |
||||
* @return 年度单位数据 |
||||
*/ |
||||
IPage<RehearsalYearVO> selectUnitByYear(IPage<RehearsalYearVO> page, @Param("year") String year); |
||||
|
||||
/** |
||||
* 查询各单位全年已完成的演练数据 |
||||
* @param unitList 单元列表 |
||||
* @param year 年份 |
||||
* @return 单位各月的数据列表 |
||||
*/ |
||||
List<AnalysisYearDTO> selectFinishedDataByUnit(@Param("unitList") List<String> unitList, @Param("year") String year); |
||||
|
||||
/** |
||||
* 根据单位和计划时间查询演练数据 |
||||
* @param unit 单位 |
||||
* @param startTime 计划开始时间 |
||||
* @param endTime 计划结束时间 |
||||
* @return 演练数据列表 |
||||
*/ |
||||
List<RehearsalExportDTO> getRehearsalByUnitAndDate(String unit, String startTime, String endTime); |
||||
} |
@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
<mapper namespace="com.hnac.hzims.safeproduct.mapper.RehearsalPlanMapper"> |
||||
|
||||
<select id="selectByMonth" resultType="com.hnac.hzims.safeproduct.vo.RehearsalMonthVO"> |
||||
SELECT |
||||
unit, count(1) as scheduled_task_num |
||||
FROM |
||||
hzims_rehearsal_plan |
||||
WHERE |
||||
is_deleted = 0 |
||||
AND scheduled_end_time like concat('%', #{month}, '%') |
||||
GROUP BY |
||||
unit |
||||
ORDER BY |
||||
unit |
||||
</select> |
||||
|
||||
<select id="selectFinishedDataByMonth" resultType="com.hnac.hzims.safeproduct.vo.RehearsalMonthVO"> |
||||
SELECT |
||||
unit, count(1) as finished_task_num |
||||
FROM |
||||
hzims_rehearsal_plan |
||||
WHERE |
||||
is_deleted = 0 |
||||
AND scheduled_end_time like concat('%', #{month}, '%') |
||||
AND rehearsal_status = 'FINISHED' |
||||
GROUP BY |
||||
unit |
||||
ORDER BY |
||||
unit |
||||
</select> |
||||
|
||||
<select id="selectUnitByYear" resultType="com.hnac.hzims.safeproduct.vo.RehearsalYearVO"> |
||||
SELECT |
||||
distinct unit |
||||
FROM |
||||
hzims_rehearsal_plan |
||||
WHERE |
||||
is_deleted = 0 |
||||
AND scheduled_end_time like concat('%', #{year}, '%') |
||||
ORDER BY |
||||
unit |
||||
</select> |
||||
|
||||
<select id="selectFinishedDataByUnit" resultType="com.hnac.hzims.safeproduct.dto.AnalysisYearDTO"> |
||||
SELECT |
||||
unit, DATE_FORMAT(scheduled_end_time, '%m') as dateTime, count(1) as finished_num |
||||
FROM |
||||
hzims_rehearsal_plan |
||||
WHERE |
||||
is_deleted = 0 |
||||
AND scheduled_end_time like concat('%', #{year}, '%') |
||||
AND rehearsal_status = 'FINISHED' |
||||
AND unit in |
||||
<foreach collection="unitList" item="unit" open="(" close=")" separator=","> |
||||
#{unit} |
||||
</foreach> |
||||
GROUP BY |
||||
unit, DATE_FORMAT(scheduled_end_time, '%m') |
||||
ORDER BY |
||||
unit |
||||
</select> |
||||
|
||||
<select id="getRehearsalByUnitAndDate" resultType="com.hnac.hzims.safeproduct.dto.RehearsalExportDTO"> |
||||
SELECT |
||||
t1.unit, t1.subject, t1.scheduled_start_time, t1.scheduled_end_time, t1.location, |
||||
t2.people_num, t2.actual_start_time, t2.actual_end_time, t1.rehearsal_status |
||||
FROM |
||||
hzims_rehearsal_plan t1 |
||||
LEFT JOIN hzims_rehearsal_record t2 ON t1.id = t2.rehearsal_record_id |
||||
WHERE |
||||
t1.is_deleted = 0 |
||||
<if test="unit != null and unit != ''"> |
||||
AND t1.unit = #{unit} |
||||
</if> |
||||
<if test="startTime != null and startTime != ''"> |
||||
AND t1.scheduled_start_time >= #{startTime} |
||||
</if> |
||||
<if test="endTime != null and endTime != ''"> |
||||
AND t1.scheduled_end_time < #{endTime} |
||||
</if> |
||||
</select> |
||||
</mapper> |
@ -0,0 +1,67 @@
|
||||
package com.hnac.hzims.safeproduct.service; |
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import com.baomidou.mybatisplus.extension.service.IService; |
||||
import com.hnac.hzims.safeproduct.entity.RehearsalPlanEntity; |
||||
import com.hnac.hzims.safeproduct.vo.RehearsalMonthVO; |
||||
import com.hnac.hzims.safeproduct.vo.RehearsalYearVO; |
||||
import org.springblade.core.mp.support.Query; |
||||
|
||||
import javax.servlet.http.HttpServletResponse; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* 演练计划服务类 |
||||
* |
||||
* @author liwen |
||||
* @date 2023-12-27 |
||||
*/ |
||||
public interface IRehearsalPlanService extends IService<RehearsalPlanEntity> { |
||||
|
||||
/** |
||||
* 删除演练计划 |
||||
* @param id 演练计划id |
||||
* @return true-成功,false-失败 |
||||
*/ |
||||
boolean removeRehearsalPlan(Long id); |
||||
|
||||
/** |
||||
* 演练月度数据 |
||||
* @param month 月份 |
||||
* @param query 分页类 |
||||
* @return 月度统计分页 |
||||
*/ |
||||
IPage<RehearsalMonthVO> dataByMonth(String month, Query query); |
||||
|
||||
/** |
||||
* 演练年度数据 |
||||
* @param year 年份 |
||||
* @param query 分页类 |
||||
* @return 年度统计分页 |
||||
*/ |
||||
IPage<RehearsalYearVO> dataByYear(String year, Query query); |
||||
|
||||
/** |
||||
* 演练计划数据导出 |
||||
* @param param 入参 |
||||
* @param response 响应类 |
||||
*/ |
||||
void exportRehearsalPlanData(Map<String, Object> param, HttpServletResponse response); |
||||
|
||||
/** |
||||
* 查询时间范围内未开始的演练数据 |
||||
* @param startTime 开始时间 |
||||
* @param endTime 结束时间 |
||||
* @return 演练数据 |
||||
*/ |
||||
List<RehearsalPlanEntity> getWaitingRehearsalInTimeRange(String startTime, String endTime); |
||||
|
||||
/** |
||||
* 演练计划分页 |
||||
* @param param 入参 |
||||
* @param query 分页类 |
||||
* @return 演练计划数据 |
||||
*/ |
||||
IPage<RehearsalPlanEntity> rehearsalPlanPage(Map<String, Object> param, Query query); |
||||
} |
@ -0,0 +1,259 @@
|
||||
package com.hnac.hzims.safeproduct.service.impl; |
||||
|
||||
import com.alibaba.excel.EasyExcel; |
||||
import com.alibaba.excel.ExcelWriter; |
||||
import com.alibaba.excel.converters.longconverter.LongStringConverter; |
||||
import com.alibaba.excel.write.metadata.WriteSheet; |
||||
import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; |
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import com.hnac.hzims.common.utils.Condition; |
||||
import com.hnac.hzims.safeproduct.dto.AnalysisYearDTO; |
||||
import com.hnac.hzims.safeproduct.dto.RehearsalExportDTO; |
||||
import com.hnac.hzims.safeproduct.entity.RehearsalPlanEntity; |
||||
import com.hnac.hzims.safeproduct.enums.RehearsalStatusEnum; |
||||
import com.hnac.hzims.safeproduct.mapper.RehearsalPlanMapper; |
||||
import com.hnac.hzims.safeproduct.service.IRehearsalPlanService; |
||||
import com.hnac.hzims.safeproduct.service.IRehearsalRecordService; |
||||
import com.hnac.hzims.safeproduct.vo.RehearsalMonthVO; |
||||
import com.hnac.hzims.safeproduct.vo.RehearsalYearVO; |
||||
import org.springblade.core.log.exception.ServiceException; |
||||
import org.springblade.core.mp.support.Query; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.stereotype.Service; |
||||
import org.springframework.transaction.annotation.Transactional; |
||||
|
||||
import javax.servlet.ServletOutputStream; |
||||
import javax.servlet.http.HttpServletResponse; |
||||
import java.io.IOException; |
||||
import java.math.BigDecimal; |
||||
import java.math.RoundingMode; |
||||
import java.net.URLEncoder; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
import java.util.Optional; |
||||
import java.util.stream.Collectors; |
||||
|
||||
/** |
||||
* 演练计划服务实现类 |
||||
* |
||||
* @author liwen |
||||
* @date 2023-12-27 |
||||
*/ |
||||
@Service |
||||
public class RehearsalPlanServiceImpl extends ServiceImpl<RehearsalPlanMapper, RehearsalPlanEntity> |
||||
implements IRehearsalPlanService { |
||||
|
||||
@Autowired |
||||
IRehearsalRecordService rehearsalRecordService; |
||||
|
||||
/** |
||||
* 删除演练计划 |
||||
*/ |
||||
@Transactional(rollbackFor = Exception.class) |
||||
@Override |
||||
public boolean removeRehearsalPlan(Long id) { |
||||
boolean remove = this.removeById(id); |
||||
// 若演练计划删除成功,删除关联演练记录
|
||||
if (remove) { |
||||
return rehearsalRecordService.removeRelativeRehearsalRecord(id); |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* 演练月度数据 |
||||
*/ |
||||
@Override |
||||
public IPage<RehearsalMonthVO> dataByMonth(String month, Query query) { |
||||
// 查询当月各单位的演练总数
|
||||
IPage<RehearsalMonthVO> page = new Page<>(query.getCurrent(), query.getSize()); |
||||
IPage<RehearsalMonthVO> unitPage = baseMapper.selectByMonth(page, month); |
||||
List<RehearsalMonthVO> unitList = unitPage.getRecords(); |
||||
// 查询当月各单位已完成的演练数据
|
||||
IPage<RehearsalMonthVO> page1 = new Page<>(query.getCurrent(), query.getSize()); |
||||
IPage<RehearsalMonthVO> finishedPage = baseMapper.selectFinishedDataByMonth(page1, month); |
||||
List<RehearsalMonthVO> finishedList = finishedPage.getRecords(); |
||||
// 处理统计数据
|
||||
for (RehearsalMonthVO unit : unitList) { |
||||
Long taskNum = unit.getScheduledTaskNum(); |
||||
Optional<RehearsalMonthVO> finishedRehearsal = finishedList.stream().filter(x -> x.getUnit().equals(unit.getUnit())).findFirst(); |
||||
Long finishedTaskNum = finishedRehearsal.isPresent() ? finishedRehearsal.get().getFinishedTaskNum() : 0L; |
||||
unit.setFinishedTaskNum(finishedTaskNum); |
||||
unit.setUnfinishedTaskNum(taskNum - finishedTaskNum); |
||||
BigDecimal taskDecimal = new BigDecimal(taskNum); |
||||
BigDecimal finishedDecimal = new BigDecimal(finishedTaskNum); |
||||
unit.setTaskCompletionRate(finishedDecimal.divide(taskDecimal, 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")) |
||||
.setScale(2, RoundingMode.HALF_UP)); |
||||
} |
||||
unitPage.setRecords(unitList); |
||||
return unitPage; |
||||
} |
||||
|
||||
/** |
||||
* 演练年度数据 |
||||
*/ |
||||
@Override |
||||
public IPage<RehearsalYearVO> dataByYear(String year, Query query) { |
||||
IPage<RehearsalYearVO> page = new Page<>(query.getCurrent(), query.getSize()); |
||||
// 查询当年的所有单位
|
||||
IPage<RehearsalYearVO> unitPage = baseMapper.selectUnitByYear(page, year); |
||||
List<RehearsalYearVO> records = unitPage.getRecords(); |
||||
// 若无数据,返回空页面
|
||||
if (org.springframework.util.CollectionUtils.isEmpty(records)) { |
||||
return unitPage; |
||||
} |
||||
List<String> unitList = records.stream().map(RehearsalYearVO::getUnit).collect(Collectors.toList()); |
||||
// 查询各单位全年已完成的演练数据
|
||||
List<AnalysisYearDTO> unitMonthDataList = baseMapper.selectFinishedDataByUnit(unitList, year); |
||||
// 将各单位每个月的演练数据写入统计列表
|
||||
unitMonthDataList.forEach(data -> { |
||||
RehearsalYearVO rehearsalYearVO = records.stream().filter(x -> x.getUnit().equals(data.getUnit())) |
||||
.collect(Collectors.toList()).get(0); |
||||
// 根据月份匹配写入对应字段
|
||||
switch (data.getDateTime()) { |
||||
case "01": |
||||
rehearsalYearVO.setJanuaryNum(data.getFinishedNum()); |
||||
break; |
||||
case "02": |
||||
rehearsalYearVO.setFebruaryNum(data.getFinishedNum()); |
||||
break; |
||||
case "03": |
||||
rehearsalYearVO.setMarchNum(data.getFinishedNum()); |
||||
break; |
||||
case "04": |
||||
rehearsalYearVO.setAprilNum(data.getFinishedNum()); |
||||
break; |
||||
case "05": |
||||
rehearsalYearVO.setMayNum(data.getFinishedNum()); |
||||
break; |
||||
case "06": |
||||
rehearsalYearVO.setJuneNum(data.getFinishedNum()); |
||||
break; |
||||
case "07": |
||||
rehearsalYearVO.setJulyNum(data.getFinishedNum()); |
||||
break; |
||||
case "08": |
||||
rehearsalYearVO.setAugustNum(data.getFinishedNum()); |
||||
break; |
||||
case "09": |
||||
rehearsalYearVO.setSeptemberNum(data.getFinishedNum()); |
||||
break; |
||||
case "10": |
||||
rehearsalYearVO.setOctoberNum(data.getFinishedNum()); |
||||
break; |
||||
case "11": |
||||
rehearsalYearVO.setNovemberNum(data.getFinishedNum()); |
||||
break; |
||||
case "12": |
||||
rehearsalYearVO.setDecemberNum(data.getFinishedNum()); |
||||
} |
||||
}); |
||||
unitPage.setRecords(records); |
||||
return unitPage; |
||||
} |
||||
|
||||
/** |
||||
* 演练计划数据导出 |
||||
*/ |
||||
@Override |
||||
public void exportRehearsalPlanData(Map<String, Object> param, HttpServletResponse response) { |
||||
ServletOutputStream outputStream = null; |
||||
try { |
||||
outputStream = response.getOutputStream(); |
||||
String unit = String.valueOf(param.get("unit")); |
||||
String startTime = String.valueOf(param.get("scheduledStartTime")); |
||||
String endTime = String.valueOf(param.get("scheduledEndTime")); |
||||
List<RehearsalExportDTO> rehearsalList = getRehearsalByUnitAndDate(unit, startTime, endTime); |
||||
// 处理演练状态信息
|
||||
rehearsalList.forEach(record -> { |
||||
String status; |
||||
if (record.getRehearsalStatus().equals(RehearsalStatusEnum.WAITING.getValue())) { |
||||
status = RehearsalStatusEnum.WAITING.getDesc(); |
||||
} else if (record.getRehearsalStatus().equals(RehearsalStatusEnum.UNFINISHED.getValue())) { |
||||
status = RehearsalStatusEnum.UNFINISHED.getDesc(); |
||||
} else { |
||||
status = RehearsalStatusEnum.FINISHED.getDesc(); |
||||
} |
||||
record.setRehearsalStatus(status); |
||||
}); |
||||
// 设置响应头
|
||||
// URLEncoder.encode防止中文乱码
|
||||
String fileName = URLEncoder.encode("演练记录表", "UTF-8"); |
||||
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); |
||||
response.setContentType("application/vnd.ms-excel"); |
||||
response.setCharacterEncoding("UTF-8"); |
||||
// ExcelWriter初始化
|
||||
ExcelWriter excelWriter = EasyExcel |
||||
.write(response.getOutputStream()) |
||||
.autoCloseStream(Boolean.TRUE) |
||||
.registerConverter(new LongStringConverter()) |
||||
.registerWriteHandler(new SimpleColumnWidthStyleStrategy(25)) |
||||
.build(); |
||||
WriteSheet writeSheet = EasyExcel.writerSheet(1, "演练记录表").head(RehearsalExportDTO.class) |
||||
.build(); |
||||
excelWriter.write(rehearsalList, writeSheet); |
||||
excelWriter.finish(); |
||||
} catch (Exception e) { |
||||
// 重置response
|
||||
response.reset(); |
||||
response.setContentType("application/json"); |
||||
response.setCharacterEncoding("utf-8"); |
||||
throw new ServiceException("演练数据导出异常: " + e.getMessage()); |
||||
} finally { |
||||
if (outputStream != null) { |
||||
try { |
||||
outputStream.close(); |
||||
} catch (IOException e) { |
||||
log.error("演练导出响应头输出流关闭异常: " + e.getMessage()); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 根据单位和计划时间查询演练记录 |
||||
* @param unit 单位 |
||||
* @param startTime 计划开始时间 |
||||
* @param endTime 计划结束时间 |
||||
* @return 演练记录列表 |
||||
*/ |
||||
public List<RehearsalExportDTO> getRehearsalByUnitAndDate(String unit, String startTime, String endTime) { |
||||
return baseMapper.getRehearsalByUnitAndDate(unit, startTime, endTime); |
||||
} |
||||
|
||||
/** |
||||
* 查询时间范围内未开始的演练数据 |
||||
*/ |
||||
@Override |
||||
public List<RehearsalPlanEntity> getWaitingRehearsalInTimeRange(String startTime, String endTime) { |
||||
QueryWrapper<RehearsalPlanEntity> queryWrapper = new QueryWrapper<>(); |
||||
queryWrapper.lambda().eq(RehearsalPlanEntity::getRehearsalStatus, RehearsalStatusEnum.WAITING.getValue()) |
||||
.ge(RehearsalPlanEntity::getScheduledEndTime, startTime) |
||||
.lt(RehearsalPlanEntity::getScheduledEndTime, endTime); |
||||
return this.list(queryWrapper); |
||||
} |
||||
|
||||
/** |
||||
* 演练计划分页 |
||||
*/ |
||||
@Override |
||||
public IPage<RehearsalPlanEntity> rehearsalPlanPage(Map<String, Object> param, Query query) { |
||||
QueryWrapper<RehearsalPlanEntity> queryWrapper = new QueryWrapper<>(); |
||||
String unit = String.valueOf(param.get("unit")); |
||||
String startTime = String.valueOf(param.get("startTime")); |
||||
String endTime = String.valueOf((param.get("endTime"))); |
||||
if (unit.equals("null") || unit.equals("")) { |
||||
queryWrapper.lambda().eq(RehearsalPlanEntity::getUnit, unit); |
||||
} |
||||
if (startTime.equals("null") || startTime.equals("")) { |
||||
queryWrapper.lambda().ge(RehearsalPlanEntity::getScheduledStartTime, startTime); |
||||
} |
||||
if (endTime.equals("null") || endTime.equals("")) { |
||||
queryWrapper.lambda().le(RehearsalPlanEntity::getScheduledEndTime, endTime); |
||||
} |
||||
return this.page(Condition.getPage(query), queryWrapper); |
||||
} |
||||
} |
Loading…
Reference in new issue