package com.ceprei.rcm.controller;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jnpf.base.ActionResult;
import jnpf.base.UserInfo;
import jnpf.constant.FileTypeConstant;
import jnpf.entity.FileParameter;
import jnpf.exception.DataException;
import jnpf.permission.entity.UserEntity;
import jnpf.constant.MsgCode;
import com.ceprei.rcm.service.;
import com.ceprei.rcm.entity.;
import jnpf.util.;
import com.ceprei.rcm.model.bizunitevent.;
import lombok.extern.slf4j.Slf4j;
import org.dromara.x.file.storage.core.FileInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.;
import jnpf.flowable.entity.TaskEntity;
import jakarta.validation.Valid;
import java.util.;
import jnpf.model.ExcelModel;
import jnpf.excel.ExcelExportStyler;
import jnpf.excel.ExcelHelper;
import jnpf.annotation.JnpfField;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import jnpf.base.vo.DownloadVO;
import jnpf.config.ConfigValueUtil;
import jnpf.base.entity.ProvinceEntity;
import java.io.IOException;
import java.util.stream.Collectors;
import jnpf.flowable.entity.TaskEntity;
import jnpf.exception.WorkFlowException;
import jnpf.model.visualJson.UploaderTemplateModel;
import jnpf.base.util.FormExecelUtils;
import org.springframework.web.multipart.MultipartFile;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import jnpf.onlinedev.model.ExcelImFieldModel;
import jnpf.base.model.OnlineImport.ImportDataModel;
import jnpf.base.model.OnlineImport.ImportFormCheckUniqueModel;
import jnpf.base.model.OnlineImport.ExcelImportModel;
import jnpf.base.model.OnlineImport.VisualImportModel;
import lombok.Cleanup;
import jnpf.model.visualJson.config.HeaderModel;
import jnpf.base.model.ColumnDataModel;
import jnpf.base.util.VisualUtils;
import org.springframework.transaction.annotation.Transactional;
/**
BIZ_UNIT_EVENT
@版本: V5.2.0
@版权: Copyright @ 2025 工业和信息化部电子第五研究所
@作者: 工业和信息化部电子第五研究所
@日期: 2025-09-09
*/
@Slf4j
@RestController
@Tag(name = “BIZ_UNIT_EVENT” , description = “rcm”)
@RequestMapping(“/api/rcm/BizUnitEvent”)
public class BizUnitEventController {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@Autowired
private UserProvider userProvider;
@Autowired
private BizUnitEventService bizUnitEventService;
@Autowired
private ConfigValueUtil configValueUtil;
/**
列表
@param bizUnitEventPagination
@return
*/
@Operation(summary = “获取列表”)
@PostMapping(“/getList”)
public ActionResult list(@RequestBody BizUnitEventPagination bizUnitEventPagination)throws Exception{
List list= bizUnitEventService.getList(bizUnitEventPagination);
List<Map<String, Object>> realList=new ArrayList<>();
for (BizUnitEventEntity entity : list) {
Map<String, Object> bizUnitEventMap=JsonUtil.entityToMap(entity);
bizUnitEventMap.put(“id”, bizUnitEventMap.get(“ID”));
//副表数据
//子表数据
realList.add(bizUnitEventMap);
}
//数据转换
boolean isPc = “pc”.equals(ServletUtil.getHeader(“jnpf-origin” ));
realList = generaterSwapUtil.swapDataList(realList, BizUnitEventConstant.getFormData(), BizUnitEventConstant.getColumnData(), bizUnitEventPagination.getModuleId(),isPc?false:false);
//返回对象
PageListVO vo = new PageListVO();
vo.setList(realList);
PaginationVO page = JsonUtil.getJsonToBean(bizUnitEventPagination, PaginationVO.class);
vo.setPagination(page);
return ActionResult.success(vo);
}
/**
创建
@param bizUnitEventForm
@return
/
@PostMapping()
@Operation(summary = “创建”)
public ActionResult create(@RequestBody @Valid BizUnitEventForm bizUnitEventForm) {
String b = bizUnitEventService.checkForm(bizUnitEventForm,0);
if (StringUtil.isNotEmpty(b)){
return ActionResult.fail(b );
}
try{
bizUnitEventService.saveOrUpdate(bizUnitEventForm, null ,true);
}catch(Exception e){
return ActionResult.fail(MsgCode.FA028.get());
}
return ActionResult.success(MsgCode.SU001.get());
}
/*
导出Excel
@return
*/
@Operation(summary = “导出Excel”)
@PostMapping(“/Actions/Export”)
public ActionResult Export(@RequestBody BizUnitEventPagination bizUnitEventPagination) throws IOException {
if (StringUtil.isEmpty(bizUnitEventPagination.getSelectKey())){
return ActionResult.fail(MsgCode.IMP011.get());
}
List list= bizUnitEventService.getList(bizUnitEventPagination);
List<Map<String, Object>> realList=new ArrayList<>();
for (BizUnitEventEntity entity : list) {
Map<String, Object> bizUnitEventMap=JsonUtil.entityToMap(entity);
bizUnitEventMap.put(“id”, bizUnitEventMap.get(“ID”));
//副表数据
//子表数据
realList.add(bizUnitEventMap);
}
//数据转换
realList = generaterSwapUtil.swapDataList(realList, BizUnitEventConstant.getFormData(), BizUnitEventConstant.getColumnData(), bizUnitEventPagination.getModuleId(),false);
String[]keys=!StringUtil.isEmpty(bizUnitEventPagination.getSelectKey())?bizUnitEventPagination.getSelectKey():new String[0];
UserInfo userInfo=userProvider.get();
String menuFullName = generaterSwapUtil.getMenuName(bizUnitEventPagination.getMenuId());
DownloadVO vo=this.creatModelExcel(configValueUtil.getTemporaryFilePath(),realList,keys,userInfo,menuFullName);
return ActionResult.success(vo);
}
/**
导出表格方法
*/
public DownloadVO creatModelExcel(String path,List<Map<String, Object>>list,String[]keys,UserInfo userInfo,String menuFullName){
DownloadVO vo=DownloadVO.builder().build();
List entitys=new ArrayList<>();
if(keys.length>0){
for(String key:keys){
switch(key){
case “branchCompany” :
entitys.add(new ExcelExportEntity(“分公司” ,“branchCompany”));
break;
case “powerPlant” :
entitys.add(new ExcelExportEntity(“电厂” ,“powerPlant”));
break;
case “unitName” :
entitys.add(new ExcelExportEntity(“机组名称” ,“unitName”));
break;
case “installedCapacity” :
entitys.add(new ExcelExportEntity(“装机容量” ,“installedCapacity”));
break;
case “eventStartTime” :
entitys.add(new ExcelExportEntity(“事件起始时间” ,“eventStartTime”));
break;
case “eventEndTime” :
entitys.add(new ExcelExportEntity(“事件终止时间” ,“eventEndTime”));
break;
case “eventStatus” :
entitys.add(new ExcelExportEntity(“事件状态” ,“eventStatus”));
break;
case “specialEventFlag” :
entitys.add(new ExcelExportEntity(“特殊事件标记” ,“specialEventFlag”));
break;
case “eventDurationHours” :
entitys.add(new ExcelExportEntity(“事件持续小时” ,“eventDurationHours”));
break;
case “powerReduction” :
entitys.add(new ExcelExportEntity(“降出力” ,“powerReduction”));
break;
case “equivalentOutageHours” :
entitys.add(new ExcelExportEntity(“等效停运小时” ,“equivalentOutageHours”));
break;
case “equipmentCode” :
entitys.add(new ExcelExportEntity(“设备编码” ,“equipmentCode”));
break;
case “technicalReasonCode” :
entitys.add(new ExcelExportEntity(“技术原因编码” ,“technicalReasonCode”));
break;
case “responsibilityReasonCode” :
entitys.add(new ExcelExportEntity(“责任原因编码” ,“responsibilityReasonCode”));
break;
case “successfulStartCount” :
entitys.add(new ExcelExportEntity(“启动成功次数” ,“successfulStartCount”));
break;
case “failedStartCount” :
entitys.add(new ExcelExportEntity(“启动失败次数” ,“failedStartCount”));
break;
case “eventReasonName” :
entitys.add(new ExcelExportEntity(“事件原因名称” ,“eventReasonName”));
break;
case “additionalNotes” :
entitys.add(new ExcelExportEntity(“补充说明” ,“additionalNotes”));
break;
default:
break;
}
}
}
ExportParams exportParams = new ExportParams(null, “表单信息”);
exportParams.setType(ExcelType.XSSF);
try{
@Cleanup Workbook workbook = new HSSFWorkbook();
if (entitys.size()>0){
if (list.size()==0){
list.add(new HashMap<>());
}
//去除空数据
List<Map<String, Object>> dataList = new ArrayList<>();
for (Map<String, Object> map : list) {
int i = 0;
for (String key : keys) {
//子表
if (key.toLowerCase().startsWith(“tablefield”)) {
String tableField = key.substring(0, key.indexOf(“-” ));
String field = key.substring(key.indexOf(“-” ) + 1);
Object o = map.get(tableField);
if (o != null) {
List<Map<String, Object>> childList = (List<Map<String, Object>>) o;
for (Map<String, Object> childMap : childList) {
if (childMap.get(field) != null) {
i++;
}
}
}
} else {
Object o = map.get(key);
if (o != null) {
i++;
}
}
}
if (i > 0) {
dataList.add(map);
}
}
List mergerEntitys = new ArrayList<>(entitys);
List<Map<String, Object>> mergerList=new ArrayList<>(dataList);
//复杂表头-表头和数据处理
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(BizUnitEventConstant.getColumnData(), ColumnDataModel.class);
List complexHeaderList = columnDataModel.getComplexHeaderList();
if (!Objects.equals(columnDataModel.getType(), 3) && !Objects.equals(columnDataModel.getType(), 5)) {
entitys = VisualUtils.complexHeaderHandel(entitys, complexHeaderList, Objects.equals(columnDataModel.getType(), 4));
dataList = VisualUtils.complexHeaderDataHandel(dataList, complexHeaderList, Objects.equals(columnDataModel.getType(), 4));
}
exportParams.setStyle(ExcelExportStyler.class); workbook = ExcelExportUtil.exportExcel(exportParams, entitys, dataList); VisualUtils.mergerVertical(workbook, mergerEntitys, mergerList); ExcelModel excelModel = generaterSwapUtil.getExcelParams(BizUnitEventConstant.getFormData(),Arrays.asList(keys)); ExcelHelper helper = new ExcelHelper(); helper.init(workbook, exportParams, entitys, excelModel); helper.doPreHandle(); helper.doPostHandle(); } String fileName = menuFullName +"_"+ DateUtil.dateNow("yyyyMMddHHmmss") + ".xls"; MultipartFile multipartFile = ExcelUtil.workbookToCommonsMultipartFile(workbook, fileName); FileInfo fileInfo = FileUploadUtils.uploadFile(new FileParameter(FileTypeConstant.TEMPORARY, fileName), multipartFile); vo.setName(fileInfo.getFilename()); vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + FileTypeConstant.TEMPORARY) + "&name=" + fileName);
} catch (Exception e) {
log.error(“信息导出Excel错误:{}”, e.getMessage());
e.printStackTrace();
}
return vo;
}
@Operation(summary = “上传文件”)
@PostMapping(“/Uploader”)
public ActionResult Uploader() {
List list = UpUtil.getFileAll();
MultipartFile file = list.get(0);
if (file.getOriginalFilename().endsWith(“.xlsx”) || file.getOriginalFilename().endsWith(“.xls”)) {
String fileName = XSSEscape.escape(RandomUtil.uuId() + “.” + UpUtil.getFileType(file));
//上传文件
FileInfo fileInfo = FileUploadUtils.uploadFile(new FileParameter(FileTypeConstant.TEMPORARY, fileName), file);
DownloadVO vo = DownloadVO.builder().build();
vo.setName(fileInfo.getFilename());
return ActionResult.success(vo);
} else {
return ActionResult.fail(MsgCode.FA017.get());
}
}
/**
模板下载
@return
*/
@Operation(summary = “模板下载”)
@GetMapping(“/TemplateDownload”)
public ActionResult TemplateDownload(@RequestParam(“menuId”) String menuId){
DownloadVO vo = DownloadVO.builder().build();
UserInfo userInfo = userProvider.get();
String menuFullName = generaterSwapUtil.getMenuName(menuId);
//主表对象
List entitys = new ArrayList<>();
List selectKeys = new ArrayList<>();
//以下添加字段
entitys.add(new ExcelExportEntity(“分公司(branchCompany)” ,“branchCompany”));
selectKeys.add(“branchCompany”);
entitys.add(new ExcelExportEntity(“电厂(powerPlant)” ,“powerPlant”));
selectKeys.add(“powerPlant”);
entitys.add(new ExcelExportEntity(“机组名称(unitName)” ,“unitName”));
selectKeys.add(“unitName”);
entitys.add(new ExcelExportEntity(“装机容量(installedCapacity)” ,“installedCapacity”));
selectKeys.add(“installedCapacity”);
entitys.add(new ExcelExportEntity(“事件起始时间(eventStartTime)” ,“eventStartTime”));
selectKeys.add(“eventStartTime”);
entitys.add(new ExcelExportEntity(“事件终止时间(eventEndTime)” ,“eventEndTime”));
selectKeys.add(“eventEndTime”);
entitys.add(new ExcelExportEntity(“事件状态(eventStatus)” ,“eventStatus”));
selectKeys.add(“eventStatus”);
entitys.add(new ExcelExportEntity(“特殊事件标记(specialEventFlag)” ,“specialEventFlag”));
selectKeys.add(“specialEventFlag”);
entitys.add(new ExcelExportEntity(“事件持续小时(eventDurationHours)” ,“eventDurationHours”));
selectKeys.add(“eventDurationHours”);
entitys.add(new ExcelExportEntity(“降出力(powerReduction)” ,“powerReduction”));
selectKeys.add(“powerReduction”);
entitys.add(new ExcelExportEntity(“等效停运小时(equivalentOutageHours)” ,“equivalentOutageHours”));
selectKeys.add(“equivalentOutageHours”);
entitys.add(new ExcelExportEntity(“设备编码(equipmentCode)” ,“equipmentCode”));
selectKeys.add(“equipmentCode”);
entitys.add(new ExcelExportEntity(“技术原因编码(technicalReasonCode)” ,“technicalReasonCode”));
selectKeys.add(“technicalReasonCode”);
entitys.add(new ExcelExportEntity(“责任原因编码(responsibilityReasonCode)” ,“responsibilityReasonCode”));
selectKeys.add(“responsibilityReasonCode”);
entitys.add(new ExcelExportEntity(“启动成功次数(successfulStartCount)” ,“successfulStartCount”));
selectKeys.add(“successfulStartCount”);
entitys.add(new ExcelExportEntity(“启动失败次数(failedStartCount)” ,“failedStartCount”));
selectKeys.add(“failedStartCount”);
entitys.add(new ExcelExportEntity(“事件原因名称(eventReasonName)” ,“eventReasonName”));
selectKeys.add(“eventReasonName”);
entitys.add(new ExcelExportEntity(“补充说明(additionalNotes)” ,“additionalNotes”));
selectKeys.add(“additionalNotes”);
ExcelModel excelModel = generaterSwapUtil.getExcelParams(BizUnitEventConstant.getFormData(),selectKeys);
List<Map<String, Object>> list = new ArrayList<>();
list.add(excelModel.getDataMap());
ExportParams exportParams = new ExportParams(null, menuFullName + “模板”);
exportParams.setStyle(ExcelExportStyler.class);
exportParams.setType(ExcelType.XSSF);
try{
@Cleanup Workbook workbook = new HSSFWorkbook();
if (entitys.size()>0){
if (list.size()==0){
list.add(new HashMap<>());
}
//复杂表头-表头和数据处理
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(BizUnitEventConstant.getColumnData(), ColumnDataModel.class);
List complexHeaderList = columnDataModel.getComplexHeaderList();
if (!Objects.equals(columnDataModel.getType(), 3) && !Objects.equals(columnDataModel.getType(), 5)) {
entitys = VisualUtils.complexHeaderHandel(entitys, complexHeaderList, false);
list = VisualUtils.complexHeaderDataHandel(list, complexHeaderList, false);
}
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, list);
ExcelHelper helper = new ExcelHelper();
helper.init(workbook, exportParams, entitys, excelModel);
helper.doPreHandle();
helper.doPostHandle();
}
String fileName = menuFullName + “导入模板.xls”;
MultipartFile multipartFile = ExcelUtil.workbookToCommonsMultipartFile(workbook, fileName);
FileInfo fileInfo = FileUploadUtils.uploadFile(new FileParameter(FileTypeConstant.TEMPORARY, fileName), multipartFile);
vo.setName(fileInfo.getFilename());
vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + “#” + FileTypeConstant.TEMPORARY) + “&name=” + fileName);
} catch (Exception e) {
log.error(“模板信息导出Excel错误:{}”, e.getMessage());
e.printStackTrace();
}
return ActionResult.success(vo);
}
/**
导入预览
@return
*/
@Operation(summary = “导入预览” )
@GetMapping(“/ImportPreview”)
public ActionResult<Map<String, Object>> ImportPreview(String fileName) throws Exception {
Map<String, Object> headAndDataMap = new HashMap<>(2);
File temporary = FileUploadUtils.downloadFileToLocal(new FileParameter(FileTypeConstant.TEMPORARY, fileName));
int headerRowIndex = 1;
ImportParams params = new ImportParams();
params.setTitleRows(0);
params.setHeadRows(headerRowIndex);
params.setNeedVerify(true);
try {
InputStream inputStream = ExcelUtil.solveOrginTitle(temporary,0, headerRowIndex);
List excelDataList = ExcelUtil.importExcelByInputStream(inputStream, 0, headerRowIndex, Map.class);
//数据超过1000条
if(excelDataList != null && excelDataList.size() > 1000) {
return ActionResult.fail(MsgCode.ETD117.get());
}
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(BizUnitEventConstant.getColumnData(), ColumnDataModel.class); UploaderTemplateModel uploaderTemplateModel = JsonUtil.getJsonToBean(columnDataModel.getUploaderTemplateJson(), UploaderTemplateModel.class); List<String> selectKey = uploaderTemplateModel.getSelectKey(); //子表合并 List<Map<String, Object>> results = FormExecelUtils.dataMergeChildTable(excelDataList,selectKey); // 导入字段 List<ExcelImFieldModel> columns = new ArrayList<>(); columns.add(new ExcelImFieldModel("unitName","机组名称","input")); columns.add(new ExcelImFieldModel("installedCapacity","装机容量","input")); columns.add(new ExcelImFieldModel("eventStartTime","事件起始时间","datePicker")); columns.add(new ExcelImFieldModel("eventEndTime","事件终止时间","datePicker")); columns.add(new ExcelImFieldModel("eventStatus","事件状态","input")); columns.add(new ExcelImFieldModel("specialEventFlag","特殊事件标记","input")); columns.add(new ExcelImFieldModel("eventDurationHours","事件持续小时","input")); columns.add(new ExcelImFieldModel("powerReduction","降出力","input")); columns.add(new ExcelImFieldModel("equipmentCode","设备编码","input")); columns.add(new ExcelImFieldModel("responsibilityReasonCode","责任原因编码","input")); columns.add(new ExcelImFieldModel("successfulStartCount","启动成功次数","input")); columns.add(new ExcelImFieldModel("failedStartCount","启动失败次数","input")); columns.add(new ExcelImFieldModel("eventReasonName","事件原因名称","input")); columns.add(new ExcelImFieldModel("additionalNotes","补充说明","input")); columns.add(new ExcelImFieldModel("branchCompany","分公司","input")); columns.add(new ExcelImFieldModel("powerPlant","电厂","input")); columns.add(new ExcelImFieldModel("equivalentOutageHours","等效停运小时","input")); columns.add(new ExcelImFieldModel("technicalReasonCode","技术原因编码","input")); headAndDataMap.put("dataRow" , results); headAndDataMap.put("headerRow" , JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(columns))); } catch (Exception e){ e.printStackTrace(); return ActionResult.fail(MsgCode.VS407.get());
}
return ActionResult.success(headAndDataMap);
}
/**
导入数据
@return
*/
@Operation(summary = “导入数据” )
@PostMapping(“/ImportData”)
public ActionResult ImportData(@RequestBody VisualImportModel visualImportModel) throws Exception {
List<Map<String, Object>> listData = null;
List<Map<String, Object>> headerRow = new ArrayList<>();
if (visualImportModel.isType()){
ActionResult result = ImportPreview(visualImportModel.getFileName());
if (result == null){
throw new Exception(MsgCode.FA018.get());
}
if (result.getCode() != 200){
return result;
}
if (result.getData() instanceof Map){
Map<String, Object> dataMap = (Map<String, Object>) result.getData();
listData = (List<Map<String, Object>>) dataMap.get(“dataRow”);
headerRow = (List<Map<String, Object>>) dataMap.get(“headerRow”);
}
}else{
listData = visualImportModel.getList();
}
ImportFormCheckUniqueModel uniqueModel = new ImportFormCheckUniqueModel();
uniqueModel.setDbLinkId(BizUnitEventConstant.DBLINKID);
uniqueModel.setUpdate(Objects.equals(“2”, “2”));
Map<String,String> tablefieldkey = new HashMap<>();
for(String key:BizUnitEventConstant.TABLEFIELDKEY.keySet()){
tablefieldkey.put(key,BizUnitEventConstant.TABLERENAMES.get(BizUnitEventConstant.TABLEFIELDKEY.get(key)));
}
ExcelImportModel excelImportModel = generaterSwapUtil.importData(BizUnitEventConstant.getFormData(),listData,uniqueModel, tablefieldkey,BizUnitEventConstant.getTableList());
List importDataModel = uniqueModel.getImportDataModel();
for (ImportDataModel model : importDataModel) {
String id = model.getId();
Map<String, Object> result = model.getResultData();
if(StringUtil.isNotEmpty(id)){
update(id, JsonUtil.getJsonToBean(result,BizUnitEventForm.class), true);
}else {
create( JsonUtil.getJsonToBean(result,BizUnitEventForm.class));
}
}
excelImportModel.setHeaderRow(headerRow);
return ActionResult.success(excelImportModel);
}
/**
导出异常报告
@return
*/
@Operation(summary = “导出异常报告”)
@PostMapping(“/ImportExceptionData”)
public ActionResult ImportExceptionData(@RequestBody VisualImportModel visualImportModel) {
DownloadVO vo = DownloadVO.builder().build();
UserInfo userInfo = userProvider.get();
String menuFullName = generaterSwapUtil.getMenuName(visualImportModel.getMenuId());
//主表对象
List entitys = new ArrayList<>();
entitys.add(new ExcelExportEntity(“异常原因”, “errorsInfo”,30));
List selectKeys = new ArrayList<>();
//以下添加字段
entitys.add(new ExcelExportEntity(“机组名称(unitName)” ,“unitName”));
selectKeys.add(“unitName”);
entitys.add(new ExcelExportEntity(“装机容量(installedCapacity)” ,“installedCapacity”));
selectKeys.add(“installedCapacity”);
entitys.add(new ExcelExportEntity(“事件起始时间(eventStartTime)” ,“eventStartTime”));
selectKeys.add(“eventStartTime”);
entitys.add(new ExcelExportEntity(“事件终止时间(eventEndTime)” ,“eventEndTime”));
selectKeys.add(“eventEndTime”);
entitys.add(new ExcelExportEntity(“事件状态(eventStatus)” ,“eventStatus”));
selectKeys.add(“eventStatus”);
entitys.add(new ExcelExportEntity(“特殊事件标记(specialEventFlag)” ,“specialEventFlag”));
selectKeys.add(“specialEventFlag”);
entitys.add(new ExcelExportEntity(“事件持续小时(eventDurationHours)” ,“eventDurationHours”));
selectKeys.add(“eventDurationHours”);
entitys.add(new ExcelExportEntity(“降出力(powerReduction)” ,“powerReduction”));
selectKeys.add(“powerReduction”);
entitys.add(new ExcelExportEntity(“设备编码(equipmentCode)” ,“equipmentCode”));
selectKeys.add(“equipmentCode”);
entitys.add(new ExcelExportEntity(“责任原因编码(responsibilityReasonCode)” ,“responsibilityReasonCode”));
selectKeys.add(“responsibilityReasonCode”);
entitys.add(new ExcelExportEntity(“启动成功次数(successfulStartCount)” ,“successfulStartCount”));
selectKeys.add(“successfulStartCount”);
entitys.add(new ExcelExportEntity(“启动失败次数(failedStartCount)” ,“failedStartCount”));
selectKeys.add(“failedStartCount”);
entitys.add(new ExcelExportEntity(“事件原因名称(eventReasonName)” ,“eventReasonName”));
selectKeys.add(“eventReasonName”);
entitys.add(new ExcelExportEntity(“补充说明(additionalNotes)” ,“additionalNotes”));
selectKeys.add(“additionalNotes”);
entitys.add(new ExcelExportEntity(“分公司(branchCompany)” ,“branchCompany”));
selectKeys.add(“branchCompany”);
entitys.add(new ExcelExportEntity(“电厂(powerPlant)” ,“powerPlant”));
selectKeys.add(“powerPlant”);
entitys.add(new ExcelExportEntity(“等效停运小时(equivalentOutageHours)” ,“equivalentOutageHours”));
selectKeys.add(“equivalentOutageHours”);
entitys.add(new ExcelExportEntity(“技术原因编码(technicalReasonCode)” ,“technicalReasonCode”));
selectKeys.add(“technicalReasonCode”);
ExcelModel excelModel = generaterSwapUtil.getExcelParams(BizUnitEventConstant.getFormData(),selectKeys);
List<Map<String, Object>> list = new ArrayList<>();
list.addAll(visualImportModel.getList());
ExportParams exportParams = new ExportParams(null, menuFullName + “模板”);
exportParams.setStyle(ExcelExportStyler.class);
exportParams.setType(ExcelType.XSSF);
exportParams.setFreezeCol(1);
try{
@Cleanup Workbook workbook = new HSSFWorkbook();
if (entitys.size()>0){
if (list.size()==0){
list.add(new HashMap<>());
}
//复杂表头-表头和数据处理
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(BizUnitEventConstant.getColumnData(), ColumnDataModel.class);
List complexHeaderList = columnDataModel.getComplexHeaderList();
if (!Objects.equals(columnDataModel.getType(), 3) && !Objects.equals(columnDataModel.getType(), 5)) {
entitys = VisualUtils.complexHeaderHandel(entitys, complexHeaderList, false);
list = VisualUtils.complexHeaderDataHandel(list, complexHeaderList, false);
}
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, list); ExcelHelper helper = new ExcelHelper(); helper.init(workbook, exportParams, entitys, excelModel); helper.doPreHandle(); helper.doPostHandle(); } String fileName = menuFullName + "错误报告_" + DateUtil.dateNow("yyyyMMddHHmmss") + ".xls"; MultipartFile multipartFile = ExcelUtil.workbookToCommonsMultipartFile(workbook, fileName); FileInfo fileInfo = FileUploadUtils.uploadFile(new FileParameter(FileTypeConstant.TEMPORARY, fileName), multipartFile); vo.setName(fileInfo.getFilename()); vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + FileTypeConstant.TEMPORARY) + "&name=" + fileName);
} catch (Exception e) {
e.printStackTrace();
}
return ActionResult.success(vo);
}
/**
删除
@param id
@return
/
@Operation(summary = “删除”)
@DeleteMapping(“/{id}”)
@Transactional
public ActionResult delete(@PathVariable(“id”) String id,@RequestParam(name = “forceDel”,defaultValue = “false”) boolean forceDel) throws Exception{
BizUnitEventEntity entity= bizUnitEventService.getInfo(id);
if(entity!=null){
//主表数据删除
bizUnitEventService.delete(entity);
}
return ActionResult.success(MsgCode.SU003.get());
}
/*
批量删除
@param obj
@return
/
@DeleteMapping(“/batchRemove”)
@Transactional
@Operation(summary = “批量删除”)
public ActionResult batchRemove(@RequestBody Object obj){
Map<String, Object> objectMap = JsonUtil.entityToMap(obj);
List idList = JsonUtil.getJsonToList(objectMap.get(“ids”), String.class);
String errInfo = “”;
List successList = new ArrayList<>();
for (String allId : idList){
try {
this.delete(allId,false);
successList.add(allId);
} catch (Exception e) {
errInfo = e.getMessage();
}
}
if (successList.size() == 0 && StringUtil.isNotEmpty(errInfo)){
return ActionResult.fail(errInfo);
}
return ActionResult.success(MsgCode.SU003.get());
}
/*
编辑
@param id
@param bizUnitEventForm
@return
*/
@PutMapping(“/{id}”)
@Operation(summary = “更新”)
public ActionResult update(@PathVariable(“id”) String id,@RequestBody @Valid BizUnitEventForm bizUnitEventForm,
@RequestParam(value = “isImport”, required = false) boolean isImport){
BizUnitEventEntity entity= bizUnitEventService.getInfo(id);
if(entity!=null){
bizUnitEventForm.setId(String.valueOf(entity.getId()));
if (!isImport) { String b = bizUnitEventService.checkForm(bizUnitEventForm,1); if (StringUtil.isNotEmpty(b)){ return ActionResult.fail(b ); } } try{ bizUnitEventService.saveOrUpdate(bizUnitEventForm,id,false); }catch (DataException e1){ return ActionResult.fail(e1.getMessage()); }catch(Exception e){ return ActionResult.fail(MsgCode.FA029.get()); } return ActionResult.success(MsgCode.SU004.get());
}else{
return ActionResult.fail(MsgCode.FA002.get());
}
}
/**
表单信息(详情页)
详情页面使用-转换数据
@param id
@return
/
@Operation(summary = “表单信息(详情页)”)
@GetMapping(“/detail/{id}”)
public ActionResult detailInfo(@PathVariable(“id”) String id){
BizUnitEventEntity entity= bizUnitEventService.getInfo(id);
if(entity==null){
return ActionResult.fail(MsgCode.FA001.get());
}
Map<String, Object> bizUnitEventMap=JsonUtil.entityToMap(entity);
bizUnitEventMap.put(“id”, bizUnitEventMap.get(“ID”));
//副表数据
//子表数据
boolean isPc = “pc”.equals(ServletUtil.getHeader(“jnpf-origin” ));
bizUnitEventMap = generaterSwapUtil.swapDataDetail(bizUnitEventMap,BizUnitEventConstant.getFormData(),“735128948597357893”,isPc?false:false);
//子表数据
return ActionResult.success(bizUnitEventMap);
}
/*
获取详情(编辑页)
编辑页面使用-不转换数据
@param id
@return
*/
@Operation(summary = “信息”)
@GetMapping(“/{id}”)
public ActionResult info(@PathVariable(“id”) String id){
BizUnitEventEntity entity= bizUnitEventService.getInfo(id);
if(entity==null){
return ActionResult.fail(MsgCode.FA001.get());
}
Map<String, Object> bizUnitEventMap=JsonUtil.entityToMap(entity);
bizUnitEventMap.put(“id”, bizUnitEventMap.get(“ID”));
//副表数据
//子表数据
bizUnitEventMap = generaterSwapUtil.swapDataForm(bizUnitEventMap,BizUnitEventConstant.getFormData(),BizUnitEventConstant.TABLEFIELDKEY,BizUnitEventConstant.TABLERENAMES);
return ActionResult.success(bizUnitEventMap);
}
}
在上述代码中,有一个上传文件的接口,这个接口只会上传Excel文件,现在有一个需求,需要在获取到文件还没有保存时,给文件中的表头增加批注。批注内容就是像导出模版一样。上传的文件名称只有中文,鼠标悬停时不会出现批注,所以需要加上