加入复制制度文件的代码。
This commit is contained in:
@@ -0,0 +1,98 @@
|
|||||||
|
/**
|
||||||
|
* @Author: Kane Wang <wangkane@qq.com>
|
||||||
|
* @Date: 2026-03-19 14:43:07
|
||||||
|
* @LastEditors: Kane Wang
|
||||||
|
* @LastModified: 2026-03-19 14:43:08
|
||||||
|
* @FilePath: src/main/java/com/cpic/xim/utils/files/RegulatoryFile.java
|
||||||
|
* @Description: 用于定义前端 AddNewRegulatoryRequest 请求中 regulatory_files 的json对象。
|
||||||
|
*
|
||||||
|
* Copyright (c) 2025 by Kane All rights reserved
|
||||||
|
*/
|
||||||
|
package com.cpic.xim.utils.files;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
public class RegulatoryFile
|
||||||
|
{
|
||||||
|
public RegulatoryFile()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileType()
|
||||||
|
{
|
||||||
|
return fileType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileType( String fileType )
|
||||||
|
{
|
||||||
|
this.fileType = fileType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileURL()
|
||||||
|
{
|
||||||
|
return fileURL;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileURL( String fileURL )
|
||||||
|
{
|
||||||
|
this.fileURL = fileURL;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLocalFilePath()
|
||||||
|
{
|
||||||
|
return localFilePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLocalFilePath( String localFilePath )
|
||||||
|
{
|
||||||
|
this.localFilePath = localFilePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegulatoryFileName()
|
||||||
|
{
|
||||||
|
return regulatoryFileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegulatoryFileName( String regulatoryFileName )
|
||||||
|
{
|
||||||
|
this.regulatoryFileName = regulatoryFileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegulatoryFileNameOriginal()
|
||||||
|
{
|
||||||
|
return regulatoryFileNameOriginal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegulatoryFileNameOriginal( String regulatoryFileNameOriginal )
|
||||||
|
{
|
||||||
|
this.regulatoryFileNameOriginal = regulatoryFileNameOriginal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRowIndex()
|
||||||
|
{
|
||||||
|
return rowIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRowIndex( int rowIndex )
|
||||||
|
{
|
||||||
|
this.rowIndex = rowIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("file_type")
|
||||||
|
private String fileType;
|
||||||
|
|
||||||
|
@JsonProperty("file_url")
|
||||||
|
private String fileURL;
|
||||||
|
|
||||||
|
@JsonProperty("local_file_path")
|
||||||
|
private String localFilePath;
|
||||||
|
|
||||||
|
@JsonProperty("regulatory_file_name")
|
||||||
|
private String regulatoryFileName;
|
||||||
|
|
||||||
|
@JsonProperty("regulatory_file_name_original")
|
||||||
|
private String regulatoryFileNameOriginal;
|
||||||
|
|
||||||
|
@JsonProperty("rowIndex")
|
||||||
|
private int rowIndex;
|
||||||
|
}
|
||||||
@@ -11,13 +11,15 @@
|
|||||||
package com.cpic.xim.web.controllers.regulatory;
|
package com.cpic.xim.web.controllers.regulatory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
|
||||||
import com.cpic.xim.utils.files.UploadedFile;
|
import com.cpic.xim.utils.files.RegulatoryFile;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping( "/regulatory" )
|
@RequestMapping( "/regulatory" )
|
||||||
@@ -26,23 +28,38 @@ public class AddNewRegulatoryController
|
|||||||
// 制度库文件的基础目录
|
// 制度库文件的基础目录
|
||||||
private static final String baseDirectory = "D:/制度库/";
|
private static final String baseDirectory = "D:/制度库/";
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@RequestMapping( path = "/add-new-regulatory.do", method = RequestMethod.POST )
|
@RequestMapping( path = "/add-new-regulatory.do", method = RequestMethod.POST )
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public static AddNewRegulatoryResponse addNewRegulatory( @RequestBody AddNewRegulatoryRequest request )
|
public static AddNewRegulatoryResponse addNewRegulatory( @RequestBody AddNewRegulatoryRequest request )
|
||||||
{
|
{
|
||||||
AddNewRegulatoryResponse response = new AddNewRegulatoryResponse();
|
AddNewRegulatoryResponse response = new AddNewRegulatoryResponse();
|
||||||
|
File regulatoryBaseDirectory = new File( baseDirectory + "/" + request.getRegulatoryName() );
|
||||||
|
|
||||||
|
// 创建目录
|
||||||
|
if ( regulatoryBaseDirectory.mkdirs() == false )
|
||||||
|
{
|
||||||
|
response.setSuccess( false );
|
||||||
|
response.setMessage( "创建制度目录失败,请联系管理员!" );
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
// 验证文件是否存在,并判断目睹路径是否有同名文件存在
|
// 验证文件是否存在,并判断目睹路径是否有同名文件存在
|
||||||
for ( UploadedFile file : request.getRegulatoryFiles() )
|
for ( RegulatoryFile file : request.getRegulatoryFiles() )
|
||||||
{
|
{
|
||||||
String destFilePath = baseDirectory + "/" + request.getRegulatoryName() + "/" + file.getFileName();
|
String destFilePath = baseDirectory + "/" + request.getRegulatoryName() + "/" + file.getRegulatoryFileName();
|
||||||
File uploadFile = new File( file.getAbsoluteFilePath() );
|
File uploadFile = new File( file.getLocalFilePath() + "/" + file.getRegulatoryFileName() );
|
||||||
File dest = new File( destFilePath );
|
File dest = new File( destFilePath );
|
||||||
|
|
||||||
if ( uploadFile.exists() == false )
|
if ( uploadFile.exists() == false )
|
||||||
{
|
{
|
||||||
response.setSuccess( false );
|
response.setSuccess( false );
|
||||||
response.setMessage( "文件" + file.getAbsoluteFilePath() + "不存在!" );
|
response.setMessage( "文件" + file.getRegulatoryFileName() + "不存在!" );
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
@@ -51,18 +68,50 @@ public class AddNewRegulatoryController
|
|||||||
if ( dest.exists() == true )
|
if ( dest.exists() == true )
|
||||||
{
|
{
|
||||||
response.setSuccess( false );
|
response.setSuccess( false );
|
||||||
response.setMessage( "文件" + file.getAbsoluteFilePath() + "存在同名文件!" );
|
response.setMessage( "文件" + file.getRegulatoryFileName() + "存在同名文件!" );
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for ( RegulatoryFile file : request.getRegulatoryFiles() )
|
||||||
|
{
|
||||||
|
String destFilePath = baseDirectory + "/" + request.getRegulatoryName() + "/" + file.getRegulatoryFileName();
|
||||||
|
File uploadFile = new File( file.getLocalFilePath() + "/" + file.getRegulatoryFileName() );
|
||||||
|
File dest = new File( destFilePath );
|
||||||
|
|
||||||
// 复制文件
|
// 复制文件
|
||||||
for ( UploadedFile file : request.getRegulatoryFiles() )
|
try
|
||||||
{
|
{
|
||||||
File uploadFile = new File( file.getAbsoluteFilePath() );
|
FileUtils.copyFile( uploadFile, dest );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
catch ( IOException error )
|
||||||
|
{
|
||||||
|
// 出现异常,删除文件
|
||||||
|
try
|
||||||
|
{
|
||||||
|
FileUtils.deleteDirectory( regulatoryBaseDirectory );
|
||||||
|
}
|
||||||
|
catch ( Exception deleteError )
|
||||||
|
{
|
||||||
|
deleteError.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
response.setSuccess( false );
|
||||||
|
response.setMessage( "复制" + file.getRegulatoryFileNameOriginal() + "文件失败,请联系管理员!" );
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//todo: 写入数据库
|
||||||
|
|
||||||
|
// TO-DO: 清理上传文件的目录
|
||||||
|
|
||||||
|
|
||||||
|
response.setSuccess( true );
|
||||||
|
response.setMessage( "文件复制成功!" );
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @Author: Kane Wang <wangkane@qq.com>
|
* @Author: Kane Wang <wangkane@qq.com>
|
||||||
* @Date: 2025-12-26 17:25:13
|
* @Date: 2025-12-26 17:25:13
|
||||||
* @LastEditors: Kane Wang
|
* @LastEditors: Kane Wang
|
||||||
* @LastModified: 2025-12-26 21:23:04
|
* @LastModified: 2026-03-19 14:51:38
|
||||||
* @FilePath: src/main/java/com/cpic/xim/web/controllers/regulatory/AddNewRegulatoryRequest.java
|
* @FilePath: src/main/java/com/cpic/xim/web/controllers/regulatory/AddNewRegulatoryRequest.java
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
@@ -11,7 +11,8 @@
|
|||||||
package com.cpic.xim.web.controllers.regulatory;
|
package com.cpic.xim.web.controllers.regulatory;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.cpic.xim.utils.files.UploadedFile;
|
import com.cpic.xim.utils.files.RegulatoryFile;
|
||||||
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
public class AddNewRegulatoryRequest
|
public class AddNewRegulatoryRequest
|
||||||
@@ -23,7 +24,7 @@ public class AddNewRegulatoryRequest
|
|||||||
this.departmentName = "";
|
this.departmentName = "";
|
||||||
this.releaseYear = "";
|
this.releaseYear = "";
|
||||||
this.comment = "";
|
this.comment = "";
|
||||||
this.regulatoryFiles = new Vector<UploadedFile>();
|
this.regulatoryFiles = new Vector<RegulatoryFile>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public AddNewRegulatoryRequest(
|
public AddNewRegulatoryRequest(
|
||||||
@@ -31,7 +32,7 @@ public class AddNewRegulatoryRequest
|
|||||||
String departmentName,
|
String departmentName,
|
||||||
String releaseYear,
|
String releaseYear,
|
||||||
String comment,
|
String comment,
|
||||||
Vector<UploadedFile> regulatoryFiles
|
Vector<RegulatoryFile> regulatoryFiles
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
this.regulatoryName = regulatoryName;
|
this.regulatoryName = regulatoryName;
|
||||||
@@ -81,12 +82,12 @@ public class AddNewRegulatoryRequest
|
|||||||
this.comment = comment;
|
this.comment = comment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector<UploadedFile> getRegulatoryFiles()
|
public Vector<RegulatoryFile> getRegulatoryFiles()
|
||||||
{
|
{
|
||||||
return regulatoryFiles;
|
return regulatoryFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRegulatoryFiles( Vector<UploadedFile> regulatoryFiles )
|
public void setRegulatoryFiles( Vector<RegulatoryFile> regulatoryFiles )
|
||||||
{
|
{
|
||||||
this.regulatoryFiles = regulatoryFiles;
|
this.regulatoryFiles = regulatoryFiles;
|
||||||
}
|
}
|
||||||
@@ -104,5 +105,5 @@ public class AddNewRegulatoryRequest
|
|||||||
private String comment;
|
private String comment;
|
||||||
|
|
||||||
@JsonProperty("regulatory_files")
|
@JsonProperty("regulatory_files")
|
||||||
private Vector<UploadedFile> regulatoryFiles;
|
private Vector<RegulatoryFile> regulatoryFiles;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @Author: Kane Wang <wangkane@qq.com>
|
* @Author: Kane Wang <wangkane@qq.com>
|
||||||
* @Date: 2026-01-05 10:42:42
|
* @Date: 2026-01-05 10:42:42
|
||||||
* @LastEditors: Kane Wang
|
* @LastEditors: Kane Wang
|
||||||
* @LastModified: 2026-02-04 15:37:20
|
* @LastModified: 2026-03-19 15:41:22
|
||||||
* @FilePath: src/utils/regulatory_utils.ts
|
* @FilePath: src/utils/regulatory_utils.ts
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
@@ -18,7 +18,7 @@ interface AddNewRegulatoryResponse
|
|||||||
message: string;
|
message: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Render {
|
interface AddNewRegulatoryResponseRender {
|
||||||
( resonse: AddNewRegulatoryResponse ) :void, }
|
( resonse: AddNewRegulatoryResponse ) :void, }
|
||||||
|
|
||||||
type CallBackRender = ( response: AddNewRegulatoryResponse ) => void;
|
type CallBackRender = ( response: AddNewRegulatoryResponse ) => void;
|
||||||
@@ -27,7 +27,7 @@ type CallBackRender = ( response: AddNewRegulatoryResponse ) => void;
|
|||||||
* @param regulatory RegulatoryData类型制度对象,用于发送请求。
|
* @param regulatory RegulatoryData类型制度对象,用于发送请求。
|
||||||
* @param render 回调函数,请求成功后调用。
|
* @param render 回调函数,请求成功后调用。
|
||||||
*/
|
*/
|
||||||
function addNewRegulatory( regulatory: RegulatoryData, render: Render ): void
|
function addNewRegulatory( regulatory: RegulatoryData, render: AddNewRegulatoryResponseRender ): void
|
||||||
{
|
{
|
||||||
// const url = API_URL.URL_ADD_NEW_REGULATORY;
|
// const url = API_URL.URL_ADD_NEW_REGULATORY;
|
||||||
|
|
||||||
@@ -69,6 +69,6 @@ function addNewRegulatory( regulatory: RegulatoryData, render: Render ): void
|
|||||||
export {
|
export {
|
||||||
addNewRegulatory,
|
addNewRegulatory,
|
||||||
type AddNewRegulatoryResponse,
|
type AddNewRegulatoryResponse,
|
||||||
type Render,
|
type AddNewRegulatoryResponseRender,
|
||||||
type CallBackRender
|
type CallBackRender
|
||||||
};
|
};
|
||||||
@@ -205,7 +205,7 @@ Copyright © CPIC All rights reserved
|
|||||||
import {reactive, ref} from "vue";
|
import {reactive, ref} from "vue";
|
||||||
import { type UploadProps, type UploadFile, type UploadFiles, ElMessage, ElMessageBox } from "element-plus";
|
import { type UploadProps, type UploadFile, type UploadFiles, ElMessage, ElMessageBox } from "element-plus";
|
||||||
import { type RegulatoryData, type RegulatoryFile} from "@/types/regulatory/regulatory.ts";
|
import { type RegulatoryData, type RegulatoryFile} from "@/types/regulatory/regulatory.ts";
|
||||||
import { addNewRegulatory, type AddNewRegulatoryResponse, type Render} from "@/utils/regulatory_utils.ts";
|
import { addNewRegulatory, type AddNewRegulatoryResponse, type AddNewRegulatoryResponseRender} from "@/utils/regulatory_utils.ts";
|
||||||
import { type UploadedFile, type UploadFileResponse } from "@/types/upload_file.ts";
|
import { type UploadedFile, type UploadFileResponse } from "@/types/upload_file.ts";
|
||||||
import {API_URL} from "@/utils/config.ts";
|
import {API_URL} from "@/utils/config.ts";
|
||||||
import { getFileType } from "@/utils/utils";
|
import { getFileType } from "@/utils/utils";
|
||||||
@@ -267,13 +267,6 @@ export default {
|
|||||||
const releaseYear = ref<any>( null );
|
const releaseYear = ref<any>( null );
|
||||||
const comment = ref<any>( null );
|
const comment = ref<any>( null );
|
||||||
|
|
||||||
|
|
||||||
const render: Render = function ( response: AddNewRegulatoryResponse ) :void
|
|
||||||
{
|
|
||||||
// if ( response.success === true )
|
|
||||||
// { }
|
|
||||||
};
|
|
||||||
|
|
||||||
const headerCellStyle = reactive(
|
const headerCellStyle = reactive(
|
||||||
{
|
{
|
||||||
textAlign: "center",
|
textAlign: "center",
|
||||||
@@ -317,7 +310,7 @@ export default {
|
|||||||
const onPreviewUploadedFile = ( rowId: number ): void =>
|
const onPreviewUploadedFile = ( rowId: number ): void =>
|
||||||
{
|
{
|
||||||
// ui.showPreviewDialog = true;
|
// ui.showPreviewDialog = true;
|
||||||
ui.fileURL = encodeURI( ui.newRegulatory.regulatory_files[rowId]?.file_url + "/" + ui.newRegulatory.regulatory_files[rowId]?.regulatory_file_name );
|
ui.fileURL = ui.newRegulatory.regulatory_files[rowId]?.file_url + "/" + ui.newRegulatory.regulatory_files[rowId]?.regulatory_file_name;
|
||||||
|
|
||||||
console.log( "完整路径:", ui.fileURL );
|
console.log( "完整路径:", ui.fileURL );
|
||||||
|
|
||||||
@@ -430,6 +423,12 @@ export default {
|
|||||||
ElMessage.error( "渲染文档出错!" );
|
ElMessage.error( "渲染文档出错!" );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const render: AddNewRegulatoryResponseRender = function ( response: AddNewRegulatoryResponse ) :void
|
||||||
|
{
|
||||||
|
// if ( response.success === true )
|
||||||
|
// { }
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建新制度事件
|
* 创建新制度事件
|
||||||
*/
|
*/
|
||||||
@@ -474,7 +473,7 @@ export default {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
addNewRegulatory( ui.newRegulatory, ()=>{});
|
addNewRegulatory( ui.newRegulatory, render );
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -488,6 +487,7 @@ export default {
|
|||||||
onDeleteUploadedFile,
|
onDeleteUploadedFile,
|
||||||
onPreviewUploadedFile,
|
onPreviewUploadedFile,
|
||||||
onCreateNewRegulatory,
|
onCreateNewRegulatory,
|
||||||
|
render,
|
||||||
onBeforeUpload,
|
onBeforeUpload,
|
||||||
errorHandle,
|
errorHandle,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user