巡检计划报告sheet2

master
薛宏祥 12 months ago
parent 830ac4832b
commit 656fa3f296
  1. 4
      src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java
  2. 65
      src/main/java/org/springblade/modules/business/excel/CustomCellWriteHeightConfig.java
  3. 77
      src/main/java/org/springblade/modules/business/excel/CustomCellWriteWidthConfig.java
  4. 37
      src/main/java/org/springblade/modules/business/excel/MergeColumnStrategy.java
  5. 21
      src/main/java/org/springblade/modules/business/pojo/entity/BigTitle.java
  6. 45
      src/main/java/org/springblade/modules/business/pojo/entity/DeviceVO.java
  7. 1
      src/main/java/org/springblade/modules/business/service/IMaintenancePlanDetailService.java
  8. 4
      src/main/java/org/springblade/modules/business/service/IMaintenancePlanService.java
  9. 83
      src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanDetailServiceImpl.java
  10. 12
      src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java
  11. BIN
      src/main/resources/excel/MaintenancePlanReport.xlsx

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.PostConstruct;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springblade.common.constant.CommonConstant; import org.springblade.common.constant.CommonConstant;
@ -27,6 +28,7 @@ import org.springblade.modules.business.sms.SmsService;
import org.springblade.modules.system.pojo.entity.User; import org.springblade.modules.system.pojo.entity.User;
import org.springblade.modules.system.service.IUserService; import org.springblade.modules.system.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -472,7 +474,7 @@ public class MaintenanceController extends BladeController {
@PostMapping("/maintenance-plan-report") @PostMapping("/maintenance-plan-report")
@Operation(summary = "导出巡检计划报告", description = "导出巡检计划报告") @Operation(summary = "导出巡检计划报告", description = "导出巡检计划报告")
private void maintenancePlanReport(@RequestBody MaintenancePlan maintenancePlan, HttpServletResponse response) throws IOException { public void maintenancePlanReport(@RequestBody MaintenancePlan maintenancePlan, HttpServletResponse response) throws IOException {
planDetailService.maintenancePlanReport(maintenancePlan, response); planDetailService.maintenancePlanReport(maintenancePlan, response);
} }
} }

@ -0,0 +1,65 @@
package org.springblade.modules.business.excel;
import com.alibaba.excel.write.handler.context.RowWriteHandlerContext;
import com.alibaba.excel.write.style.row.AbstractRowHeightStyleStrategy;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import java.util.Iterator;
public class CustomCellWriteHeightConfig extends AbstractRowHeightStyleStrategy {
/**
* 默认高度
*/
private static final Integer DEFAULT_HEIGHT = 300;
@Override
protected void setHeadColumnHeight(Row row, int relativeRowIndex) {
}
@Override
protected void setContentColumnHeight(Row row, int relativeRowIndex) {
Iterator<Cell> cellIterator = row.cellIterator();
if (!cellIterator.hasNext()) {
return;
}
// 默认为 1 行高度
int maxHeight = 1;
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
if (cell.getCellType() == CellType.STRING) {
String value = cell.getStringCellValue();
for (int i = 0; i < value.length(); i += 10) {
if (i + 10 < value.length()) {
value = value.substring(0, i) + "\n" + value.substring(i, i + 10) + value.substring(i + 10);
} else {
value = value.substring(0, i) + "\n" + value.substring(i);
}
}
if (value.contains("\n")) {
int length = value.split("\n").length;
maxHeight = Math.max(maxHeight, length);
}
}
}
row.setHeight((short) (maxHeight * DEFAULT_HEIGHT));
}
@Override
public void afterRowDispose(RowWriteHandlerContext context) {
if (context.getHead() != null) {
if (ObjectUtils.isEmpty(context.getRelativeRowIndex())) {
return;
}
if (Boolean.TRUE.equals(context.getHead())) {
this.setHeadColumnHeight(context.getRow(), context.getRelativeRowIndex());
} else {
this.setContentColumnHeight(context.getRow(), context.getRelativeRowIndex());
}
}
}
}

@ -0,0 +1,77 @@
package org.springblade.modules.business.excel;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.metadata.data.CellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CustomCellWriteWidthConfig extends AbstractColumnWidthStyleStrategy {
private final Map<Integer, Map<Integer, Integer>> CACHE = new HashMap<>();
@Override
protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer integer, Boolean isHead) {
boolean needSetWidth = isHead || !CollectionUtils.isEmpty(cellDataList);
if (needSetWidth) {
Map<Integer, Integer> maxColumnWidthMap = CACHE.computeIfAbsent(writeSheetHolder.getSheetNo(), k -> new HashMap<>());
Integer columnWidth = this.dataLength(cellDataList, cell, isHead);
if (columnWidth > 0) {
if (columnWidth > 10) {
columnWidth = 20;
}else{
columnWidth = 10;
}
Integer maxColumnWidth = maxColumnWidthMap.get(cell.getColumnIndex());
if (maxColumnWidth == null || columnWidth > maxColumnWidth) {
maxColumnWidthMap.put(cell.getColumnIndex(), columnWidth);
Sheet sheet = writeSheetHolder.getSheet();
sheet.setColumnWidth(cell.getColumnIndex(), 256 * columnWidth + 184);
}
}
}
}
/**
* 计算长度
*
* @param cellDataList
* @param cell
* @param isHead
* @return
*/
private Integer dataLength(List<WriteCellData<?>> cellDataList, Cell cell, Boolean isHead) {
if (isHead) {
return cell.getStringCellValue().getBytes().length;
} else {
CellData<?> cellData = cellDataList.get(0);
CellDataTypeEnum type = cellData.getType();
if (type == null) {
return -1;
} else {
switch (type) {
case STRING:
// 换行符(数据需要提前解析好)
int index = cellData.getStringValue().indexOf("\n");
return index != -1 ?
cellData.getStringValue().substring(0, index).getBytes().length + 1 : cellData.getStringValue().getBytes().length + 1;
case BOOLEAN:
return cellData.getBooleanValue().toString().getBytes().length;
case NUMBER:
return cellData.getNumberValue().toString().getBytes().length;
default:
return -1;
}
}
}
}
}

@ -0,0 +1,37 @@
package org.springblade.modules.business.excel;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.write.handler.CellWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import java.util.List;
@Data
public class MergeColumnStrategy implements CellWriteHandler {
private Integer firstColumnIndex;
private Integer lastColumnIndex;
public MergeColumnStrategy(Integer firstColumnIndex, Integer lastColumnIndex) {
this.firstColumnIndex = firstColumnIndex;
this.lastColumnIndex = lastColumnIndex;
}
@Override
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
Sheet sheet = writeSheetHolder.getSheet();
int lastRowNum = sheet.getLastRowNum();
CellRangeAddress cellAddresses = new CellRangeAddress(lastRowNum, lastRowNum, firstColumnIndex, lastColumnIndex);
sheet.addMergedRegion(cellAddresses);
}
}

@ -0,0 +1,21 @@
package org.springblade.modules.business.pojo.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ContentFontStyle;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.enums.poi.BorderStyleEnum;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class BigTitle {
@ContentFontStyle(fontHeightInPoints = 15, fontName = "微软雅黑")
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER, borderTop = BorderStyleEnum.THIN, borderLeft = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN)
private String title;
}

@ -0,0 +1,45 @@
package org.springblade.modules.business.pojo.entity;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ContentFontStyle;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.enums.poi.BorderStyleEnum;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
@ContentFontStyle(fontHeightInPoints = 10, fontName = "微软雅黑")
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER, borderTop = BorderStyleEnum.THIN, borderLeft = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN)
public class DeviceVO {
@ExcelProperty("楼层")
private String floor;
@ExcelProperty("房间")
private String dept;
@ExcelProperty("设备名称")
private String deviceName;
@ExcelProperty("单位")
private String unit;
@ExcelProperty("数量")
private Integer num;
@ExcelProperty("维保内容及频次")
private String checkContent;
@ExcelProperty("巡检工艺")
private String craft;
@ExcelProperty("巡检频次")
private String period;
@ExcelIgnore
private String type;
}

@ -14,6 +14,5 @@ import java.io.IOException;
* @since 2024-10-14 * @since 2024-10-14
*/ */
public interface IMaintenancePlanDetailService extends BaseService<MaintenancePlanDetail> { public interface IMaintenancePlanDetailService extends BaseService<MaintenancePlanDetail> {
void maintenancePlanReport(MaintenancePlan maintenancePlan, HttpServletResponse response) throws IOException; void maintenancePlanReport(MaintenancePlan maintenancePlan, HttpServletResponse response) throws IOException;
} }

@ -1,8 +1,10 @@
package org.springblade.modules.business.service; package org.springblade.modules.business.service;
import jakarta.servlet.http.HttpServletResponse;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan; import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan;
import java.io.IOException;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -26,4 +28,6 @@ public interface IMaintenancePlanService extends BaseService<MaintenancePlan> {
boolean planRemove(List<Long> ids); boolean planRemove(List<Long> ids);
MaintenancePlan planDetail(MaintenancePlan plan); MaintenancePlan planDetail(MaintenancePlan plan);
} }

@ -4,23 +4,32 @@ package org.springblade.modules.business.service.impl;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.WriteTable;
import com.alibaba.excel.write.metadata.fill.FillConfig; import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.servlet.ServletOutputStream; import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.modules.business.excel.CustomCellWriteHeightConfig;
import org.springblade.modules.business.excel.CustomCellWriteWidthConfig;
import org.springblade.modules.business.excel.MergeColumnStrategy;
import org.springblade.modules.business.pojo.entity.BigTitle;
import org.springblade.modules.business.pojo.entity.Device;
import org.springblade.modules.business.pojo.entity.DeviceVO;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan; import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlanOutputData; import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlanOutputData;
import org.springblade.modules.business.service.IDeviceService;
import org.springblade.modules.business.service.IMaintenancePlanDetailService; import org.springblade.modules.business.service.IMaintenancePlanDetailService;
import org.springblade.modules.business.mapper.MaintenancePlanDetailMapper; import org.springblade.modules.business.mapper.MaintenancePlanDetailMapper;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlanDetail; import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlanDetail;
import org.springblade.modules.system.pojo.entity.Dept;
import org.springblade.modules.system.service.IDeptService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream;
import java.util.*; import java.util.*;
import java.util.zip.ZipOutputStream; import java.util.stream.Collectors;
/** /**
* 巡检计划详情 服务实现类 * 巡检计划详情 服务实现类
@ -31,6 +40,8 @@ import java.util.zip.ZipOutputStream;
@Service @Service
@AllArgsConstructor @AllArgsConstructor
public class MaintenancePlanDetailServiceImpl extends BaseServiceImpl<MaintenancePlanDetailMapper, MaintenancePlanDetail> implements IMaintenancePlanDetailService { public class MaintenancePlanDetailServiceImpl extends BaseServiceImpl<MaintenancePlanDetailMapper, MaintenancePlanDetail> implements IMaintenancePlanDetailService {
private final IDeviceService deviceService;
private final IDeptService deptService;
@Override @Override
public void maintenancePlanReport(MaintenancePlan maintenancePlan, HttpServletResponse response) throws IOException { public void maintenancePlanReport(MaintenancePlan maintenancePlan, HttpServletResponse response) throws IOException {
@ -38,11 +49,22 @@ public class MaintenancePlanDetailServiceImpl extends BaseServiceImpl<Maintenanc
String templateFile = "./src/main/resources/excel/MaintenancePlanReport.xlsx"; String templateFile = "./src/main/resources/excel/MaintenancePlanReport.xlsx";
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
List<MaintenancePlanDetail> maintenancePlanDetailsList = baseMapper.selectList(Wrappers.lambdaQuery(MaintenancePlanDetail.class).eq(MaintenancePlanDetail::getPlanId, maintenancePlan.getId())); List<MaintenancePlanDetail> maintenancePlanDetailsList = baseMapper.selectList(Wrappers.lambdaQuery(MaintenancePlanDetail.class).eq(MaintenancePlanDetail::getPlanId, maintenancePlan.getId()));
List<DeviceVO> deviceVOList = new ArrayList<>();
List<MaintenancePlanOutputData> maintenancePlanOutputDataList = new ArrayList<>(); List<MaintenancePlanOutputData> maintenancePlanOutputDataList = new ArrayList<>();
for (MaintenancePlanDetail maintenancePlanDetail : maintenancePlanDetailsList) { for (MaintenancePlanDetail maintenancePlanDetail : maintenancePlanDetailsList) {
//sheet1数据获取
MaintenancePlanOutputData maintenancePlanOutputData = new MaintenancePlanOutputData(); MaintenancePlanOutputData maintenancePlanOutputData = new MaintenancePlanOutputData();
maintenancePlanOutputData.setMajorName(maintenancePlanDetail.getMajorName()); Device device = deviceService.getById(maintenancePlanDetail.getDeviceId());
maintenancePlanOutputData.setAddress(maintenancePlan.getAddress()); maintenancePlanOutputData.setMajorName(device.getName());
Long limsId = device.getLimsId();
String deptAddress = "";
Dept lims = deptService.getById(limsId);
deptAddress = deptAddress + lims.getDeptName();
Dept floor = deptService.getById(device.getFloorId());
deptAddress = deptAddress + "/" + floor.getDeptName();
Dept dept = deptService.getById(device.getRoomId());
deptAddress = deptAddress + "/" + dept.getDeptName();
maintenancePlanOutputData.setAddress(deptAddress);
maintenancePlanOutputData.setCraft(maintenancePlanDetail.getCraft()); maintenancePlanOutputData.setCraft(maintenancePlanDetail.getCraft());
maintenancePlanOutputData.setCheckContent(maintenancePlanDetail.getCheckContent()); maintenancePlanOutputData.setCheckContent(maintenancePlanDetail.getCheckContent());
Optional<Integer> period = Optional.ofNullable(maintenancePlanDetail.getPeriod()); Optional<Integer> period = Optional.ofNullable(maintenancePlanDetail.getPeriod());
@ -58,12 +80,61 @@ public class MaintenancePlanDetailServiceImpl extends BaseServiceImpl<Maintenanc
maintenancePlanOutputData.setPeriod(null); maintenancePlanOutputData.setPeriod(null);
} }
maintenancePlanOutputDataList.add(maintenancePlanOutputData); maintenancePlanOutputDataList.add(maintenancePlanOutputData);
//sheet2数据获取
DeviceVO deviceVO = new DeviceVO();
deviceVO.setFloor(floor.getDeptName());
deviceVO.setDept(dept.getDeptName());
deviceVO.setDeviceName(device.getName());
deviceVO.setUnit("套");
deviceVO.setNum(1);
deviceVO.setCheckContent(maintenancePlanDetail.getCheckContent());
deviceVO.setCraft(maintenancePlanDetail.getCraft());
deviceVO.setType(device.getType());
if (period.isPresent()) {
if (period.get() == 1) {
deviceVO.setPeriod("每月");
} else if (period.get() == 2) {
deviceVO.setPeriod("每季");
} else if (period.get() == 3) {
deviceVO.setPeriod("每半年");
}
} else {
deviceVO.setPeriod(null);
}
deviceVOList.add(deviceVO);
} }
Map<String, List<DeviceVO>> deviceVOGroups = deviceVOList.stream().collect(Collectors.groupingBy(DeviceVO::getType));
int tableNo = 0;
//导出到Excel中 //导出到Excel中
ServletOutputStream outputStream = response.getOutputStream(); ServletOutputStream outputStream = response.getOutputStream();
try (ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(templateFile).build()) { try (ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(templateFile).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet().build(); WriteSheet firstSheet = EasyExcel.writerSheet(0).build();
excelWriter.fill(maintenancePlanOutputDataList, fillConfig, writeSheet); WriteSheet secondSheet = EasyExcel
.writerSheet(1)
.registerWriteHandler(new CustomCellWriteHeightConfig())
.registerWriteHandler(new CustomCellWriteWidthConfig())
.build();
excelWriter.fill(maintenancePlanOutputDataList, fillConfig, firstSheet);
for (Map.Entry<String, List<DeviceVO>> entry : deviceVOGroups.entrySet()) {
List<BigTitle> bigTitleList = new ArrayList<>();
BigTitle bigTitle = new BigTitle();
bigTitle.setTitle(entry.getValue().get(0).getType() + "维保清单");
bigTitleList.add(bigTitle);
WriteTable writeTable1 = EasyExcel.writerTable()
.tableNo(tableNo++)
.registerWriteHandler(new MergeColumnStrategy(0, 7))
.needHead(false)
.head(BigTitle.class)
.build();
excelWriter.write(bigTitleList, secondSheet, writeTable1);
WriteTable writeTable = EasyExcel.writerTable()
.tableNo(tableNo++)
.needHead(true)
.head(DeviceVO.class)
.build();
excelWriter.write(entry.getValue(), secondSheet, writeTable);
}
excelWriter.finish(); excelWriter.finish();
outputStream.flush(); outputStream.flush();
outputStream.close(); outputStream.close();

@ -1,7 +1,13 @@
package org.springblade.modules.business.service.impl; package org.springblade.modules.business.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springblade.common.cache.UserCache; import org.springblade.common.cache.UserCache;
@ -11,10 +17,7 @@ import org.springblade.core.tool.utils.DateUtil;
import org.springblade.modules.business.enums.MaintenanceStatusEnum; import org.springblade.modules.business.enums.MaintenanceStatusEnum;
import org.springblade.modules.business.mapper.MaintenancePlanMapper; import org.springblade.modules.business.mapper.MaintenancePlanMapper;
import org.springblade.modules.business.pojo.entity.DeviceAttach; import org.springblade.modules.business.pojo.entity.DeviceAttach;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan; import org.springblade.modules.business.pojo.entity.maintenance.*;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlanDetail;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask;
import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTaskDetail;
import org.springblade.modules.business.service.*; import org.springblade.modules.business.service.*;
import org.springblade.modules.business.sms.SmsService; import org.springblade.modules.business.sms.SmsService;
import org.springblade.modules.resource.pojo.entity.Sms; import org.springblade.modules.resource.pojo.entity.Sms;
@ -23,6 +26,7 @@ import org.springblade.modules.system.service.IUserService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId; import java.time.ZoneId;

Loading…
Cancel
Save