① 基本信息
| 问题描述 | 并网资料信息页面,附件上传时目前限制最大不能超过100MB,要放宽到500MB |
|---|---|
| 一级模块 | 项目信息填报 |
| 二级模块 | /(并网资料信息 > 附件上传) |
| 涉及类型 | 全部类型 |
| 所属区域 | 未标注(五区互联网侧页面) |
| 严重性 | 严重 |
| 当前状态 | 2.1.待开发 |
| 研发处理人 | 未分配 |
| 处理说明 | 未填写 |
② 问题截图
③ 旧代码涉及的项目文件及行数(backup730/730backup 分支,当前仍是此状态)
xnybw5f / src/views/projectNew/components/projectDataInfo/component/batchInfo.vue
第 1675-1686 行("附件"列使用 <SoAttachment code="newenergy_grid_connection" ... >,即并网资料信息页面的附件上传入口)
<SoAttachment
v-model="scope.row.fileList"
code="newenergy_grid_connection"
:multiple="false"
:numExceed="10"
button-name="上传附件"
:inTheTableIndex="scope.$index"
:fileType='["xls","xlsx","doc","docx","pdf","jpg","png","txt","zip","rar","tar"]'
@fileChange="handleMainFileChange(...)"
@fileDeleteChange="handleMainFileDelete(...)">
</SoAttachment>
xnybw5f / src/components/SoAttachment/index.vue
第 627-636 行(getFileInfo,文件大小限制来自接口返回,非前端硬编码);第 709-716 行(uploadBrefore,超限时报"上传文件大小不能超过{fileSize}M");第 777-781 行(setfileSize,将 fileSize 字符串换算为字节数)
getFileInfo(data) {
this.fileType = data.list[0].fileFormat.split('/')
...
// 大小限制并非前端写死,而是从"文件业务编码"接口配置里取出来的
this.fileSize = data.list[0].fileSize
},
...
uploadBrefore(file) {
...
if (file.size > this.setfileSize()) {
this.$message.warning(`上传文件大小不能超过${this.fileSize}M`)
...
}
},
setfileSize() {
if (this.fileSize === '0') return '0B'
const k = 1024
return this.fileSize.replace(/[^0-9]/gi, '') * k ** 2 // fileSize(如"100") * 1024 * 1024
}
xnybw5f / src/components/SoAttachment/fileCenterInterface.js
第 58-65 行(getFileCode,POST /so/oms/pf/filecenter/fcCode/queryVOListByPage,按 businessName 查询文件业务编码配置,含 fileFormat / fileSize 等)
getFileCode(data) {
return request({
baseURL: data.prefix,
url: '/so/oms/pf/filecenter/fcCode/queryVOListByPage',
method: 'post',
cache: true,
data: JSON.stringify(data.data)
})
}
fc_code / newenergy_grid_connection / fileSize 均无命中,唯一相关引用是 NePjInfoAppService.java 第 16、86 行 import 并注入的 cn.csg.so.oms.pf.file.client.forest.FileCenterUtils——这是平台侧"文件中心"(so.oms.pf.file,comtop/JADP 公共平台组件)提供的 SDK,业务编码 newenergy_grid_connection 对应的大小上限(当前100MB)是在文件中心自己的业务编码配置表中维护的,并不在 xnybw5b/xnybw5f 两个仓库的代码或配置文件里,也没有在 bootstrap.yml 中找到 spring.servlet.multipart.max-file-size 之类的覆盖项。
④ 修复涉及的位置
SoAttachment 组件
fcCode/queryVOListByPage
code=newenergy_grid_connection
fileSize=100
newenergy_grid_connection 这个业务编码对应的 fileSize 配置项由 100 改成 500,前端弹窗提示文案与校验阈值会自动跟随变化,无需重新发布前端包。
需要确认/处理的两个层面:
1. 文件中心业务编码配置:由平台/文件中心管理侧将业务编码 newenergy_grid_connection 的 fileSize 配置项从 100 调整为 500(该配置通常在 OMS 平台后台的"文件业务编码管理"功能里维护,不属于 xnybw5b 应用自身的数据库或代码)。
2. 后端 Multipart 上传阈值:xnybw5b 的 bootstrap.yml 未发现 spring.servlet.multipart.max-file-size / max-request-size 覆盖配置,实际生效阈值来自 Nacos 配置中心的公共配置或 comtop-web-starter 的默认值;放宽到500MB前需要一并核实 Nacos 侧对应配置组是否已放开该限制,并核实 Nginx/网关侧(如有)是否存在 client_max_body_size 等更低的硬限制,否则前端放开到500MB后大文件仍会在网关或 Spring 层被拦截(常见现象为413/连接被重置)。
⑤ 修复方案
本行严格来说是配置调整需求,而非代码缺陷:xnybw5f 侧的 SoAttachment 组件已按"接口下发的业务编码配置"驱动大小校验,无需改动 Vue 代码;真正需要变更的是平台文件中心对业务编码 newenergy_grid_connection 的 fileSize 配置值(100 → 500),以及配套核实 Nacos/网关侧的 multipart 大小限制是否同步放开。
建议处理顺序:① 联系平台/文件中心侧管理员,将 newenergy_grid_connection 业务编码的 fileSize 从 100 调整为 500;② 核实 Nacos 配置中心中 xnybw5b 应用的 spring.servlet.multipart.max-file-size、max-request-size 是否 ≥ 500MB,不足则一并调大;③ 若前置有 Nginx/网关,同步核实 client_max_body_size;④ 调整完成后在测试环境实测一次接近500MB的真实附件上传,确认前端提示文案、后端接收、以及大文件上传的超时时间(尤其互联网侧带宽有限,500MB上传耗时可能较长,需评估前端上传进度条与请求超时时间是否够用)。