package com.cpms.project.process.controller; import com.alibaba.fastjson2.JSON; import com.cpms.common.annotation.Log; import com.cpms.common.core.controller.BaseController; import com.cpms.common.core.domain.AjaxResult; import com.cpms.common.core.page.TableDataInfo; import com.cpms.common.enums.BusinessType; import com.cpms.common.utils.StringUtils; import com.cpms.common.utils.file.ExcelUtils; import com.cpms.common.utils.poi.ExcelUtil; import com.cpms.project.process.domain.TSifOverview; import com.cpms.project.process.domain.TSifVo; import com.cpms.project.process.domain.TSisRecord; import com.cpms.project.process.service.ITSifOverviewService; import com.cpms.project.process.service.ITSisRecordService; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * SIF Overview ListController * * @author admin * @date 2024-05-22 */ @RestController @RequestMapping("/process/sifList") public class TSifOverviewController extends BaseController { @Autowired private ITSifOverviewService tSifOverviewService; @Autowired private ITSisRecordService tSisRecordService; /** * 查询SIF Overview List列表 */ @PreAuthorize("@ss.hasPermi('process:sifList:list')") @GetMapping("/list") public TableDataInfo list(TSifOverview tSifOverview) { startPage(); List list = tSifOverviewService.selectTSifOverviewList(tSifOverview); return getDataTable(list); } /** * 导出SIF Overview List列表 */ @PreAuthorize("@ss.hasPermi('process:sifList:export')") @Log(title = "SIF Overview List", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, TSifOverview tSifOverview) { List list = tSifOverviewService.selectTSifOverviewList(tSifOverview); ExcelUtil util = new ExcelUtil(TSifVo.class); util.exportExcel(response, list, "SIF Overview List数据"); } /** * 获取SIF Overview List详细信息 */ @PreAuthorize("@ss.hasPermi('process:sifList:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { TSifOverview tSifOverview = tSifOverviewService.selectTSifOverviewById(id); TSisRecord tSisRecord = new TSisRecord(); tSisRecord.setSisId(id); tSifOverview.setRecordList(tSisRecordService.selectTSisRecordList(tSisRecord)); return success(tSifOverview); } /** * 新增SIF Overview List */ @PreAuthorize("@ss.hasPermi('process:sifList:add')") @Log(title = "SIF Overview List", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody TSifOverview tSifOverview) { tSifOverview.setCreaterCode(getUserId().toString()); tSifOverview.setCreatedate(new Date()); tSifOverviewService.insertTSifOverview(tSifOverview); for (TSisRecord tSisRecord : tSifOverview.getRecordList()) { tSisRecord.setSisId(tSifOverview.getId()); tSisRecord.setCreaterCode(getUserId().toString()); tSisRecord.setCreatedate(new Date()); tSisRecordService.insertTSisRecord(tSisRecord); } return success(); } /** * 修改SIF Overview List */ @PreAuthorize("@ss.hasPermi('process:sifList:edit')") @Log(title = "SIF Overview List", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody TSifOverview tSifOverview) { tSifOverview.setUpdaterCode(getUserId().toString()); tSifOverview.setUpdatedate(new Date()); for (TSisRecord tSisRecord : tSifOverview.getRecordList()) { if (tSisRecord.getId() != null) { tSisRecordService.updateTSisRecord(tSisRecord); } else { tSisRecord.setSisId(tSifOverview.getId()); tSisRecord.setCreaterCode(getUserId().toString()); tSisRecord.setCreatedate(new Date()); tSisRecordService.insertTSisRecord(tSisRecord); } } return toAjax(tSifOverviewService.updateTSifOverview(tSifOverview)); } /** * 删除SIF Overview List */ @PreAuthorize("@ss.hasPermi('process:sifList:remove')") @Log(title = "SIF Overview List", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(tSifOverviewService.deleteTSifOverviewByIds(ids)); } @Log(title = "SIF Overview List批量导入", businessType = BusinessType.INSERT) @PostMapping("/importData") public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException { //获取操作人员ID Long userId = getUserId(); //报错行数统计 List failRow = new ArrayList<>(); Workbook workbook = ExcelUtils.getWorkBook(file); Sheet sheet = workbook.getSheetAt(0); List list = new ArrayList<>(); int rowNum = sheet.getPhysicalNumberOfRows(); int failNumber = 0; List records = null; for (int i = 1; i < rowNum; i++) { try { logger.info("读取行数:" + i); Row row = sheet.getRow(i); int cellNum = row.getLastCellNum(); TSifOverview entity = new TSifOverview(); TSisRecord record = new TSisRecord(); boolean flag = false; for (int j = 0; j < cellNum; j++) { Cell cell = row.getCell(j); if (cell == null) { continue; } String cellValue = ExcelUtils.getCellValue(cell); logger.info("cellValue:" + cellValue); switch (j) { case 0: entity.setSifNo(cellValue); if (StringUtils.isNotEmpty(cellValue)) { records = new ArrayList<>(); flag = true; } if (StringUtils.isEmpty(cellValue)){ flag = false; } break; case 1: entity.setPlant(cellValue); break; case 2: entity.setSifTag(cellValue); break; case 3: entity.setDeviation(cellValue); break; case 4: entity.setRiskAnalysis(cellValue); break; case 5: entity.setCauseConsequence(cellValue); break; case 6: entity.setRequiredSil(cellValue); break; case 7: entity.setAcheievedSil(cellValue); break; case 8: entity.setPfdavg(cellValue); break; case 9: record.setSensorTag(cellValue); break; case 10: record.setType(cellValue); break; case 11: record.setService(cellValue); break; case 12: record.setVotingQ(cellValue); break; case 13: record.setCondition(cellValue); break; case 14: record.setMainPti(cellValue); break; case 15: record.setFinalElementTag(cellValue); break; case 16: record.setVotingH(cellValue); break; case 17: record.setAciton(cellValue); break; case 18: entity.setRemarks(cellValue); break; case 19: entity.setVer(cellValue); break; case 20: record.setFilter(cellValue); break; } } if (records != null) { records.add(record); } if (!flag){ entity = list.get(list.size()-1); entity.setRecordList(records); list.remove(list.size()-1); list.add(entity); }else { entity.setRecordList(records); entity.setCreaterCode(String.valueOf(userId)); logger.info("entity:" + entity); list.add(entity); } } catch (Exception e) { failNumber++; logger.info("e:" + JSON.toJSONString(e)); failRow.add(i + 1); } } int successNumber = 0; int failNum = 0; for (TSifOverview t : list ) { failNum++; try { //根据使用证、注册编号、位号,进行数据更新 add(t); successNumber++; } catch (Exception e) { failNumber++; logger.info("e:" + e); failRow.add(failNum + 1); } } logger.info("list:" + JSON.toJSONString(list)); logger.info("successNumber:" + successNumber); logger.info("failNumber:" + failNumber); logger.info("failRow:" + failRow); return AjaxResult.success(String.valueOf(successNumber), failRow); } }