修复文件上传的问题。

This commit is contained in:
Kane Wang 2023-10-16 17:57:09 +08:00
parent 16df86e3a7
commit 0ad42d00a9
2 changed files with 59 additions and 38 deletions

View File

@ -45,37 +45,42 @@ public class ImportBIDataController
ReportType type = request.getReportType(); ReportType type = request.getReportType();
boolean hasCaption = request.isHasCaption(); boolean hasCaption = request.isHasCaption();
int sheetIndex = request.getSheetIndex(); int sheetIndex = request.getSheetIndex();
int importedCount = 0;
try try
{ {
if ( type == ReportType.TelsalerAttachingRateReport ) if ( type == ReportType.TelsalerAttachingRateReport )
{ {
importBITelsalerAttachingRate( filePath, sheetIndex, hasCaption ); importedCount = importBITelsalerAttachingRate( filePath, sheetIndex, hasCaption );
} }
else if ( type == ReportType.TelsalerRenewalRateReport ) else if ( type == ReportType.TelsalerRenewalRateReport )
{ {
importBITeslsalerRenewalRate( filePath, sheetIndex, hasCaption ); importedCount = importBITeslsalerRenewalRate( filePath, sheetIndex, hasCaption );
} }
else if ( type == ReportType.DepartmentAttachingRenewalRateReport ) 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 ) catch ( IOException error )
{ {
String message = "加载文件错误,错误消息:" + error.getMessage(); String message = "加载文件错误,错误消息:" + error.getMessage();
response.setSuccess( false ); response.setSuccess( false );
response.setMessage( message ); response.setMessage( message );
logger.error(message, error); logger.error( message, error );
} }
catch ( InvalidFormatException error ) catch ( InvalidFormatException error )
{ {
String message = "Excel文件格式错误错误消息" + error.getMessage(); String message = "Excel文件格式错误错误消息" + error.getMessage();
response.setSuccess( false ); response.setSuccess( false );
response.setMessage( message ); response.setMessage( message );
logger.error(message, error); logger.error( message, error );
} }
catch ( PersistenceException error ) catch ( PersistenceException error )
{ {
@ -83,17 +88,18 @@ public class ImportBIDataController
response.setSuccess( false ); response.setSuccess( false );
response.setMessage( message ); response.setMessage( message );
logger.error(message, error); logger.error( message, error );
} }
return response; return response;
} }
private static void importBITelsalerAttachingRate( String filePath, int sheetIndex, private static int importBITelsalerAttachingRate( String filePath, int sheetIndex,
boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException
{ {
SqlSession session = null; SqlSession session = null;
int importedCount = 0;
try try
{ {
@ -102,7 +108,7 @@ public class ImportBIDataController
sheetIndex, hasCaption ); sheetIndex, hasCaption );
session = MybatisUtils.getSqlSessionBatch(); session = MybatisUtils.getSqlSessionBatch();
ImportBIArchievementDataMapper mapper = ImportBIArchievementDataMapper mapper =
session.getMapper( ImportBIArchievementDataMapper.class ); session.getMapper( ImportBIArchievementDataMapper.class );
mapper.cleanTelsalerAttachingRateData(); mapper.cleanTelsalerAttachingRateData();
@ -110,6 +116,7 @@ public class ImportBIDataController
for ( BITelsalerAttachingRateRecord record : records ) for ( BITelsalerAttachingRateRecord record : records )
{ {
mapper.insertTelsalerAttachingRateDataToDB( record ); mapper.insertTelsalerAttachingRateDataToDB( record );
importedCount++;
} }
session.commit(); session.commit();
@ -123,14 +130,17 @@ public class ImportBIDataController
throw error; 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 boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException
{ {
ArrayList<BITelsalerRenewalRateRecord> records = null; ArrayList<BITelsalerRenewalRateRecord> records = null;
SqlSession session = null; SqlSession session = null;
ImportBIArchievementDataMapper mapper = null; ImportBIArchievementDataMapper mapper = null;
int importedCount = 0;
try try
{ {
@ -146,6 +156,7 @@ public class ImportBIDataController
for ( BITelsalerRenewalRateRecord record : records ) for ( BITelsalerRenewalRateRecord record : records )
{ {
mapper.insertTelsalerRenewalRateDataToDB( record ); mapper.insertTelsalerRenewalRateDataToDB( record );
importedCount++;
} }
session.commit(); session.commit();
@ -159,14 +170,17 @@ public class ImportBIDataController
throw error; 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 boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException
{ {
ArrayList<BIDepartmentArchievementRecord> records = null; ArrayList<BIDepartmentArchievementRecord> records = null;
SqlSession session = null; SqlSession session = null;
ImportBIArchievementDataMapper mapper = null; ImportBIArchievementDataMapper mapper = null;
int importedCount = 0;
try try
{ {
@ -180,6 +194,7 @@ public class ImportBIDataController
for ( BIDepartmentArchievementRecord record : records ) for ( BIDepartmentArchievementRecord record : records )
{ {
mapper.insertDepartmentAttachingRenewalRateDataToDB( record ); mapper.insertDepartmentAttachingRenewalRateDataToDB( record );
importedCount++;
} }
session.commit(); session.commit();
@ -191,5 +206,7 @@ public class ImportBIDataController
session.rollback(); session.rollback();
} }
} }
return importedCount;
} }
} }

View File

@ -2,8 +2,8 @@
* @Author: Kane * @Author: Kane
* @Date: 2023-01-22 23:11:26 * @Date: 2023-01-22 23:11:26
* @LastEditors: Kane * @LastEditors: Kane
* @LastEditTime: 2023-10-06 01:48:39 * @LastEditTime: 2023-10-16 10:51:36
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/FileUpload/FileUpload.java * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUpload.java
* @Description: 用于接受上传文件的Controller * @Description: 用于接受上传文件的Controller
* *
* Copyright (c) ${2022} by Kane, All Rights Reserved. * Copyright (c) ${2022} by Kane, All Rights Reserved.
@ -12,6 +12,9 @@
package com.cpic.xim.web.controllers.fileupload; package com.cpic.xim.web.controllers.fileupload;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Vector; import java.util.Vector;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
@ -39,45 +42,46 @@ public class FileUpload
@RequestMapping( path = "/file-upload.do" ) @RequestMapping( path = "/file-upload.do" )
@ResponseBody @ResponseBody
public FileUploadResult getUploadFile( @RequestParam( "task-name" ) String taskName, public FileUploadResult getUploadFile( @RequestParam( "task-name" ) String taskName,
@RequestParam( "files" ) MultipartFile[] files, HttpServletRequest request ) @RequestParam( "files" ) MultipartFile file, HttpServletRequest request )
{ {
// session id用来创建临时目录避免重复 // session id用来创建临时目录避免重复
String sessionID = request.getSession().getId(); String sessionID = request.getSession().getId();
FileUploadResult result = new FileUploadResult(); FileUploadResult result = new FileUploadResult();
Vector<String> fileNames = new Vector<String>(); Vector<String> fileNames = new Vector<String>();
int fileCount = files.length;
// 防御验证
if ( files.length == 0 )
{
result.setSuccess( false );
result.setMessage( "此接口用于上传文件!" );
return result;
}
result.setSuccess( true ); result.setSuccess( true );
result.setMessage( "上传成功!" ); result.setMessage( "上传成功!" );
// 检查文件长度如果为0则跳过
for ( MultipartFile file : files ) 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 = String filePath =
request.getServletContext().getRealPath( "/temp/upload/" + sessionID ); request.getServletContext().getRealPath( "/temp/upload/" + sessionID );
String fileName = file.getOriginalFilename(); String fileName = String.valueOf(milliSecond) + file.getOriginalFilename();
File destFile = new File( filePath, fileName ); File destFile = new File( filePath, fileName );
// 把上传文件的绝对路径保存返回给前端 try
fileNames.add( destFile.getAbsolutePath() ); {
} 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; return result;
} }