diff --git a/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataController.java b/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataController.java index 283c5e2..93c25bc 100644 --- a/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataController.java +++ b/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/dataimport/bi/ImportBIDataController.java @@ -45,37 +45,42 @@ public class ImportBIDataController ReportType type = request.getReportType(); boolean hasCaption = request.isHasCaption(); int sheetIndex = request.getSheetIndex(); + int importedCount = 0; try { if ( type == ReportType.TelsalerAttachingRateReport ) { - importBITelsalerAttachingRate( filePath, sheetIndex, hasCaption ); + importedCount = importBITelsalerAttachingRate( filePath, sheetIndex, hasCaption ); } else if ( type == ReportType.TelsalerRenewalRateReport ) { - importBITeslsalerRenewalRate( filePath, sheetIndex, hasCaption ); + importedCount = importBITeslsalerRenewalRate( filePath, sheetIndex, hasCaption ); } else if ( type == ReportType.DepartmentAttachingRenewalRateReport ) { - importBIDepartmentArchievement( filePath, sheetIndex, hasCaption ); + importedCount = importBIDepartmentArchievement( filePath, sheetIndex, hasCaption ); } + + response.setImportedCount(importedCount); + response.setSuccess(true); + response.setMessage("导入成功"); } catch ( IOException error ) { String message = "加载文件错误,错误消息:" + error.getMessage(); response.setSuccess( false ); response.setMessage( message ); - - logger.error(message, error); + + logger.error( message, error ); } catch ( InvalidFormatException error ) { String message = "Excel文件格式错误,错误消息:" + error.getMessage(); response.setSuccess( false ); response.setMessage( message ); - - logger.error(message, error); + + logger.error( message, error ); } catch ( PersistenceException error ) { @@ -83,17 +88,18 @@ public class ImportBIDataController response.setSuccess( false ); response.setMessage( message ); - logger.error(message, error); + logger.error( message, error ); } return response; } - private static void importBITelsalerAttachingRate( String filePath, int sheetIndex, + private static int importBITelsalerAttachingRate( String filePath, int sheetIndex, boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException { SqlSession session = null; + int importedCount = 0; try { @@ -102,7 +108,7 @@ public class ImportBIDataController sheetIndex, hasCaption ); session = MybatisUtils.getSqlSessionBatch(); - ImportBIArchievementDataMapper mapper = + ImportBIArchievementDataMapper mapper = session.getMapper( ImportBIArchievementDataMapper.class ); mapper.cleanTelsalerAttachingRateData(); @@ -110,6 +116,7 @@ public class ImportBIDataController for ( BITelsalerAttachingRateRecord record : records ) { mapper.insertTelsalerAttachingRateDataToDB( record ); + importedCount++; } session.commit(); @@ -123,14 +130,17 @@ public class ImportBIDataController throw error; } + + return importedCount; } - private static void importBITeslsalerRenewalRate( String filePath, int sheetIndex, + private static int importBITeslsalerRenewalRate( String filePath, int sheetIndex, boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException { ArrayList records = null; SqlSession session = null; ImportBIArchievementDataMapper mapper = null; + int importedCount = 0; try { @@ -146,6 +156,7 @@ public class ImportBIDataController for ( BITelsalerRenewalRateRecord record : records ) { mapper.insertTelsalerRenewalRateDataToDB( record ); + importedCount++; } session.commit(); @@ -159,14 +170,17 @@ public class ImportBIDataController throw error; } + + return importedCount; } - private static void importBIDepartmentArchievement( String filePath, int sheetIndex, + private static int importBIDepartmentArchievement( String filePath, int sheetIndex, boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException { ArrayList records = null; SqlSession session = null; ImportBIArchievementDataMapper mapper = null; + int importedCount = 0; try { @@ -180,6 +194,7 @@ public class ImportBIDataController for ( BIDepartmentArchievementRecord record : records ) { mapper.insertDepartmentAttachingRenewalRateDataToDB( record ); + importedCount++; } session.commit(); @@ -191,5 +206,7 @@ public class ImportBIDataController session.rollback(); } } + + return importedCount; } } diff --git a/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUpload.java b/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUpload.java index 90a37e7..f032461 100644 --- a/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUpload.java +++ b/code/后端/desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUpload.java @@ -2,8 +2,8 @@ * @Author: Kane * @Date: 2023-01-22 23:11:26 * @LastEditors: Kane - * @LastEditTime: 2023-10-06 01:48:39 - * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/FileUpload/FileUpload.java + * @LastEditTime: 2023-10-16 10:51:36 + * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUpload.java * @Description: 用于接受上传文件的Controller。 * * Copyright (c) ${2022} by Kane, All Rights Reserved. @@ -12,6 +12,9 @@ package com.cpic.xim.web.controllers.fileupload; import java.io.File; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.Vector; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; @@ -39,45 +42,46 @@ public class FileUpload @RequestMapping( path = "/file-upload.do" ) @ResponseBody public FileUploadResult getUploadFile( @RequestParam( "task-name" ) String taskName, - @RequestParam( "files" ) MultipartFile[] files, HttpServletRequest request ) + @RequestParam( "files" ) MultipartFile file, HttpServletRequest request ) { // session id用来创建临时目录,避免重复 String sessionID = request.getSession().getId(); FileUploadResult result = new FileUploadResult(); Vector fileNames = new Vector(); - int fileCount = files.length; - - // 防御验证 - if ( files.length == 0 ) - { - result.setSuccess( false ); - result.setMessage( "此接口用于上传文件!" ); - - return result; - } result.setSuccess( true ); result.setMessage( "上传成功!" ); - - for ( MultipartFile file : files ) + // 检查文件长度,如果为0则跳过 + if ( file.isEmpty() ) + { + result.setSuccess( false ); + result.setMessage( "不允许上传空文件。" ); + } + else { - // 检查文件长度,如果为0则跳过 - if ( file.isEmpty() ) - { - continue; - } - // 保存文件到临时目录 + Long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli(); String filePath = request.getServletContext().getRealPath( "/temp/upload/" + sessionID ); - String fileName = file.getOriginalFilename(); + String fileName = String.valueOf(milliSecond) + file.getOriginalFilename(); File destFile = new File( filePath, fileName ); - // 把上传文件的绝对路径保存,返回给前端 - fileNames.add( destFile.getAbsolutePath() ); - } + try + { + file.transferTo( destFile ); + // 把上传文件的绝对路径保存,返回给前端 + fileNames.add( destFile.getAbsolutePath() ); - result.setFileList( fileNames ); + result.setSuccess(true); + result.setMessage("上传成功"); + result.setFileList(fileNames); + } + catch ( IOException error ) + { + result.setSuccess(false); + result.setMessage("上传失败,原因:" + error.getMessage()); + } + } return result; }