src/main/java/org/jeecg/modules/eam/constant/MaintenanceCategoryEnum.java
@@ -5,6 +5,6 @@ */ public enum MaintenanceCategoryEnum { POINT_INSPECTION, //点检 WEEK_MAINTENANCE, //保养 ; QUARTERLY_MAINTENANCE, //季报 ANNUAL_MAINTENANCE, //年报 } src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java
@@ -7,18 +7,13 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.jeecg.common.api.vo.FileUploadResult; import org.apache.poi.xssf.usermodel.*; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.util.FileUtil; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum; import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum; @@ -33,7 +28,6 @@ import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.util.PoiPublicUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -42,7 +36,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; @@ -274,6 +271,7 @@ params.setTitleRows(2); params.setHeadRows(1); params.setSheetNum(1); params.setLastOfInvalidRow(23); params.setNeedSave(true); EamMaintenanceStandardRequest standardRequest = new EamMaintenanceStandardRequest(); try { @@ -287,8 +285,10 @@ standardRequest.setStandardName(standardRequest.getEquipmentName() + "点检标准"); standardRequest.setMaintenanceCategory(MaintenanceCategoryEnum.POINT_INSPECTION.name()); standardRequest.setEquipmentId(equipment.getId()); //读取保养明细内容 List<MaintenanceStandardImport> list = ExcelImportUtil.importExcel(file.getInputStream(), MaintenanceStandardImport.class, params); //明细项 List<EamMaintenanceStandardDetail> tableList = list.stream().map(EamMaintenanceStandardDetail::new).collect(Collectors.toList()); standardRequest.setTableDetailList(tableList); @@ -313,6 +313,7 @@ } return Result.ok("文件导入完成!"); } /** * 通过excel导入数据 @@ -343,7 +344,7 @@ continue; } standardRequest.setStandardName(standardRequest.getEquipmentName() + "保养标准"); standardRequest.setMaintenanceCategory(MaintenanceCategoryEnum.WEEK_MAINTENANCE.name()); standardRequest.setMaintenanceCategory(MaintenanceCategoryEnum.QUARTERLY_MAINTENANCE.name()); standardRequest.setEquipmentId(equipment.getId()); //读取保养明细内容 List<WeekMaintenanceStandardImport> list = ExcelImportUtil.importExcel(file.getInputStream(), WeekMaintenanceStandardImport.class, params); @@ -387,10 +388,17 @@ } Sheet sheet = book.getSheetAt(0); //第一行读取 Row row = sheet.getRow(0); //第二行读取 Row row = sheet.getRow(1); //设备编码 Cell equipmentCode = row.getCell(15); Cell equipmentCode = row.getCell(5); Cell targetCell = row.getCell(0); //文件编码 String fileCodeValue = getCellValue(targetCell); if (fileCodeValue == null || fileCodeValue.trim().isEmpty()) { throw new JeecgBootException("Excel【" + file.getOriginalFilename() + "】第二行第一列获取到的设备编号为空!"); } request.setFileCode(fileCodeValue.trim()); if(CellType.NUMERIC.equals(equipmentCode.getCellType())) { request.setEquipmentCode(String.valueOf((int) equipmentCode.getNumericCellValue())); }else if(CellType.STRING.equals(equipmentCode.getCellType())) { @@ -407,50 +415,43 @@ request.setInitialDate(new Date()); } //设备名称 Cell equipmentName = row.getCell(13); request.setEquipmentName(equipmentName.getStringCellValue()); // Cell equipmentName = row.getCell(13); // request.setEquipmentName(equipmentName.getStringCellValue()); //第二行读取 row = sheet.getRow(1); row = sheet.getRow(4); //保养周期 Cell period = row.getCell(11); Cell period = row.getCell(7); if (CellType.NUMERIC.equals(period.getCellType())) { request.setMaintenancePeriod((int) period.getNumericCellValue()); } else { //默认点检周期 1 request.setMaintenancePeriod(1); } //文件编码 Cell fileCode = row.getCell(13); request.setFileCode(fileCode.getStringCellValue()); Map<String, PictureData> pictures; if (isXSSFWorkbook) { pictures = PoiPublicUtil.getSheetPictrues07((XSSFSheet) book.getSheetAt(0), (XSSFWorkbook) book); } else { pictures = PoiPublicUtil.getSheetPictrues03((HSSFSheet) book.getSheetAt(0), (HSSFWorkbook) book); } if (CollectionUtil.isNotEmpty(pictures)) { //只会存在一张图片 PictureData pictureData = pictures.get(pictures.keySet().iterator().next()); byte[] data = pictureData.getData(); String fileName = request.getEquipmentCode() + "[" + request.getFileCode() + "]" + "." + pictureData.suggestFileExtension(); FileUploadResult fileUploadResult = FileUtil.uploadFile(data, fileName); if(fileUploadResult != null) { List<FileUploadResult> fileList = request.getFileList(); if(fileList == null) { fileList = new ArrayList<FileUploadResult>(); } fileList.add(fileUploadResult); request.setFileList(fileList); } } } catch (Exception e) { log.error("读取Excel信息失败:{}", e.getMessage(), e); } } /** * 统一处理单元格值,支持数字和字符串类型 * @param cell 单元格对象 * @return 单元格的值,为 null 表示单元格无有效内容 */ private String getCellValue(Cell cell) { if (cell == null) { return null; } CellType cellType = cell.getCellType(); if (cellType == CellType.NUMERIC) { return String.valueOf((int) cell.getNumericCellValue()); } else if (cellType == CellType.STRING) { return cell.getStringCellValue(); } return null; } /** * 读取Excel 第一行, 第二行的信息 * @param file src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java
@@ -8,12 +8,18 @@ @Data public class MaintenanceStandardImport implements Serializable { @Excel(name = "图号", width = 15) private Integer itemCode; @Excel(name = "点检项目", width = 15) @Excel(name = "NO", width = 15) private String itemCode; @Excel(name = "部位名称", width = 15) private String itemName; @Excel(name = "点检部位", width = 15) @Excel(name = "点检内容", width = 15) private String subItemName; @Excel(name = "点检方法", width = 15) private String itemPart; @Excel(name = "点检要求", width = 15) @Excel(name = "基准", width = 15) private String itemDemand; } src/main/java/org/jeecg/modules/eam/dto/WeekMaintenanceStandardImport.java
@@ -8,14 +8,14 @@ @Data public class WeekMaintenanceStandardImport implements Serializable { @Excel(name = "序号", width = 15) @Excel(name = "NO", width = 15) private Integer itemCode; @Excel(name = "保养大项目", width = 15) @Excel(name = "部位名称", width = 15) private String itemName; @Excel(name = "子项目", width = 15) private String subItemName; @Excel(name = "部位/类型", width = 15) @Excel(name = "点检内容", width = 15) private String itemPart; @Excel(name = "保养要求", width = 15) @Excel(name = "基 准", width = 15) private String itemDemand; } src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandardDetail.java
@@ -1,106 +1,106 @@ package org.jeecg.modules.eam.entity; package org.jeecg.modules.eam.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecg.modules.eam.dto.MaintenanceStandardImport; import org.jeecg.modules.eam.dto.SecondMaintenanceStandardImport; import org.jeecg.modules.eam.dto.ThirdMaintenanceStandardImport; import org.jeecg.modules.eam.dto.WeekMaintenanceStandardImport; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecg.modules.eam.dto.MaintenanceStandardImport; import org.jeecg.modules.eam.dto.SecondMaintenanceStandardImport; import org.jeecg.modules.eam.dto.ThirdMaintenanceStandardImport; import org.jeecg.modules.eam.dto.WeekMaintenanceStandardImport; import java.io.Serializable; import java.util.Date; /** * @Description: 保养标准明细 * @Author: jeecg-boot * @Date: 2025-03-26 * @Version: V1.0 */ @Data @TableName("eam_maintenance_standard_detail") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="eam_maintenance_standard_detail对象", description="保养标准明细") public class EamMaintenanceStandardDetail implements Serializable { /**主键*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主键") private String id; /**创建人*/ @ApiModelProperty(value = "创建人") private String createBy; /**创建时间*/ @ApiModelProperty(value = "创建时间") private Date createTime; /**更新人*/ @ApiModelProperty(value = "更新人") private String updateBy; /**更新时间*/ @ApiModelProperty(value = "更新时间") private Date updateTime; /**保养标准ID*/ @ApiModelProperty(value = "保养标准ID") private String standardId; /**保养项序号*/ @ApiModelProperty(value = "保养项序号") private Integer itemCode; /**部位*/ @ApiModelProperty(value = "部位") private String itemPart; /**保养项*/ @ApiModelProperty(value = "保养项") private String itemName; /**子保养项*/ @ApiModelProperty(value = "子保养项") private String subItemName; /**检查标准或要求*/ @ApiModelProperty(value = "检查标准或要求") private String itemDemand; /**保养要求2*/ @ApiModelProperty(value = "保养要求2") private String itemDemandAlias; /**检查方法*/ @ApiModelProperty(value = "检查方法") private String checkMethod; import java.io.Serializable; import java.util.Date; /** * @Description: 保养标准明细 * @Author: jeecg-boot * @Date: 2025-03-26 * @Version: V1.0 */ @Data @TableName("eam_maintenance_standard_detail") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="eam_maintenance_standard_detail对象", description="保养标准明细") public class EamMaintenanceStandardDetail implements Serializable { /**主键*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主键") private String id; /**创建人*/ @ApiModelProperty(value = "创建人") private String createBy; /**创建时间*/ @ApiModelProperty(value = "创建时间") private Date createTime; /**更新人*/ @ApiModelProperty(value = "更新人") private String updateBy; /**更新时间*/ @ApiModelProperty(value = "更新时间") private Date updateTime; /**保养标准ID*/ @ApiModelProperty(value = "保养标准ID") private String standardId; /**保养项序号*/ @ApiModelProperty(value = "保养项序号") private Integer itemCode; /**部位*/ @ApiModelProperty(value = "部位") private String itemPart; /**保养项*/ @ApiModelProperty(value = "保养项") private String itemName; /**子保养项*/ @ApiModelProperty(value = "子保养项") private String subItemName; /**检查标准或要求*/ @ApiModelProperty(value = "检查标准或要求") private String itemDemand; /**保养要求2*/ @ApiModelProperty(value = "保养要求2") private String itemDemandAlias; /**检查方法*/ @ApiModelProperty(value = "检查方法") private String checkMethod; public EamMaintenanceStandardDetail(){} public EamMaintenanceStandardDetail(){} public EamMaintenanceStandardDetail(MaintenanceStandardImport dto) { this.itemCode = dto.getItemCode(); this.itemPart = dto.getItemPart(); this.itemName = dto.getItemName(); this.itemDemand = dto.getItemDemand(); public EamMaintenanceStandardDetail(MaintenanceStandardImport dto) { this.itemCode = Integer.valueOf(dto.getItemCode()); this.itemPart = dto.getItemPart(); this.itemName = dto.getItemName(); this.itemDemand = dto.getItemDemand(); } public EamMaintenanceStandardDetail(WeekMaintenanceStandardImport dto) { this.itemCode = dto.getItemCode(); this.itemName = dto.getItemName(); this.subItemName = dto.getSubItemName() + " " + (dto.getItemPart() == null ? "" : dto.getItemPart()); this.itemDemand = dto.getItemDemand(); } public EamMaintenanceStandardDetail(SecondMaintenanceStandardImport dto) { this.itemCode = dto.getItemCode(); this.itemName = dto.getItemName(); this.itemPart = dto.getItemPart(); this.itemDemand = dto.getItemDemand(); this.itemDemandAlias = dto.getItemDemandAlias(); this.checkMethod = dto.getCheckMethod(); } public EamMaintenanceStandardDetail(ThirdMaintenanceStandardImport dto) { this.itemCode = dto.getItemCode(); this.itemName = dto.getItemName(); this.itemPart = dto.getItemPart(); this.itemDemand = dto.getItemDemand(); this.itemDemandAlias = dto.getItemDemandAlias(); this.checkMethod = dto.getCheckMethod(); } } public EamMaintenanceStandardDetail(WeekMaintenanceStandardImport dto) { this.itemCode = dto.getItemCode(); this.itemName = dto.getItemName(); this.subItemName = dto.getSubItemName() + " " + (dto.getItemPart() == null ? "" : dto.getItemPart()); this.itemDemand = dto.getItemDemand(); } public EamMaintenanceStandardDetail(SecondMaintenanceStandardImport dto) { this.itemCode = dto.getItemCode(); this.itemName = dto.getItemName(); this.itemPart = dto.getItemPart(); this.itemDemand = dto.getItemDemand(); this.itemDemandAlias = dto.getItemDemandAlias(); this.checkMethod = dto.getCheckMethod(); } public EamMaintenanceStandardDetail(ThirdMaintenanceStandardImport dto) { this.itemCode = dto.getItemCode(); this.itemName = dto.getItemName(); this.itemPart = dto.getItemPart(); this.itemDemand = dto.getItemDemand(); this.itemDemandAlias = dto.getItemDemandAlias(); this.checkMethod = dto.getCheckMethod(); } }