fix(material): 优化物料图片上传和更新逻辑,调整上传大小限制

- 将服务器表单最大上传大小调至200MB,支持更大文件上传
- 修改multipart配置,最大文件及请求大小均设为200MB
- 优化MaterialControllerService中物料图片处理逻辑
- 如果已存在旧物料且图片字段非空,执行更新图片操作
- 修改MaterialZipImportProcessor中图片上传,增加异常捕获和日志
- 新增图片上传成功后判断,支持新增或更新物料图片记录
- 添加保存和更新操作的成功失败日志反馈
This commit is contained in:
曹鹏飞 2025-12-17 18:03:43 +08:00
parent ce415b718a
commit 6b273ded7f
3 changed files with 46 additions and 26 deletions

View File

@ -161,8 +161,9 @@ public class MaterialControllerService {
if (Objects.isNull(bomMaterialDTO)) {
pics.add(name);
} else {
WmsMaterial old = materialService.getCurrent(materialNo);
String url = fileUploadService.upload(buildFilePath(name), file);
WmsMaterial old = materialService.getCurrent(materialNo);
if (Objects.isNull(old) || StrUtil.isNotBlank(old.getImage())) {
WmsMaterial material = new WmsMaterial()
.setVersion(Objects.isNull(old) ? 1 : old.getVersion() + 1)
.setNo(bomMaterialDTO.getMaterialNo())
@ -172,6 +173,12 @@ public class MaterialControllerService {
.setCreateBy(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now());
materials.add(material);
} else {
old.setImage(url);
old.setUpdateBy(UserUtil.getUserName());
old.setUpdateTime(LocalDateTime.now());
materials.add(old);
}
}
}
if (CollectionUtil.isEmpty(pics)) {

View File

@ -1,7 +1,7 @@
server:
port: 8102
tomcat:
max-http-form-post-size: 50MB
max-http-form-post-size: 200MB
spring:
main:
allow-bean-definition-overriding: true
@ -23,8 +23,8 @@ spring:
group: ${spring.profiles.active}
servlet:
multipart:
max-file-size: 30MB
max-request-size: 50MB
max-file-size: 200MB
max-request-size: 200MB
logging:
level:
root: info

View File

@ -68,26 +68,39 @@ public class MaterialZipImportProcessor implements BasicProcessor {
if (Objects.isNull(bomMaterialDTO)) {
omsLogger.error("主数据中未查找到该物料:{}", materialNo);
} else {
omsLogger.info("添加图纸");
String picUrl = "";
try (ByteArrayInputStream isIn = new ByteArrayInputStream(osOut.toByteArray())) {
picUrl = fileUploadService.upload(buildFilePath(name), isIn, MediaType.IMAGE_JPEG_VALUE);
omsLogger.info("上传后的图片地址:{}", picUrl);
} catch (Exception ex) {
omsLogger.error("上传图片失败:{}", ex.getMessage());
}
WmsMaterial old = materialService.getCurrent(materialNo);
if (Objects.isNull(old) || StrUtil.isNotBlank(old.getImage())) {
omsLogger.info("添加图纸");
WmsMaterial material = new WmsMaterial()
.setVersion(Objects.isNull(old) ? 1 : old.getVersion() + 1)
.setNo(bomMaterialDTO.getMaterialNo())
.setDescribe(bomMaterialDTO.getMaterialDesc())
.setDrawingNo(bomMaterialDTO.getDrawingNo())
.setImage(picUrl)
.setCreateBy(userName)
.setCreateTime(LocalDateTime.now());
try (ByteArrayInputStream isIn = new ByteArrayInputStream(osOut.toByteArray())) {
String picUrl = fileUploadService.upload(buildFilePath(name), isIn, MediaType.IMAGE_JPEG_VALUE);
omsLogger.info("上传后的图片地址:{}", picUrl);
material.setImage(picUrl);
if (materialService.save(material)) {
omsLogger.info("保存成功,id:" + material.getId());
} else {
omsLogger.error("保存失败");
}
} catch (Exception ex) {
omsLogger.error("上传图片失败:{}", ex.getMessage());
} else {
omsLogger.info("更新图纸");
old.setImage(picUrl);
old.setUpdateBy(userName);
old.setUpdateTime(LocalDateTime.now());
if (materialService.updateById(old)) {
omsLogger.info("更新成功,id:" + old.getId());
} else {
omsLogger.error("更新失败");
}
}
}
}