From 7ccfb5ec456a16c8a8863c288f27431d68c5cc15 Mon Sep 17 00:00:00 2001 From: Kris <2893855659@qq.com> Date: Thu, 26 Jun 2025 14:22:44 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90fix=E3=80=91=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/start.sh | 2 +- .../controller/FileManagerController.java | 79 ++++++++++++++++++- .../com/celnet/datadump/global/Const.java | 4 +- .../service/impl/FileServiceImpl.java | 2 +- src/main/resources/application-prod.yml | 4 +- 5 files changed, 81 insertions(+), 10 deletions(-) diff --git a/files/start.sh b/files/start.sh index 8ea6e8e..18abc41 100644 --- a/files/start.sh +++ b/files/start.sh @@ -5,7 +5,7 @@ #dbUsername="root" #dbPassword="celnet@2025.bln" #携科 -dbUrl="jdbc:mysql://127.0.0.1:3306/data-dump-xxl-job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&useSSL=false" +dbUrl="jdbc:mysql://127.0.0.1:3306/data-dump-xxl-job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai" dbUsername="root" dbPassword="Celnet2025.QY" #其它 diff --git a/src/main/java/com/celnet/datadump/controller/FileManagerController.java b/src/main/java/com/celnet/datadump/controller/FileManagerController.java index dd7ee55..56b4fdd 100644 --- a/src/main/java/com/celnet/datadump/controller/FileManagerController.java +++ b/src/main/java/com/celnet/datadump/controller/FileManagerController.java @@ -1,24 +1,37 @@ package com.celnet.datadump.controller; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.celnet.datadump.entity.DataObject; import com.celnet.datadump.entity.OrgConfig; import com.celnet.datadump.global.Result; +import com.celnet.datadump.param.DumpFileParam; +import com.celnet.datadump.service.DataObjectService; import com.celnet.datadump.service.FileManagerService; +import com.celnet.datadump.service.FileService; +import com.celnet.datadump.util.DataUtil; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import com.xxl.job.core.log.XxlJobLogger; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @Api(value = "fileManager", tags = "文件管理") @RequestMapping("/fileManager") +@Slf4j public class FileManagerController { @Autowired private FileManagerService fileManagerService; + @Autowired + private FileService fileService; + @Autowired + private DataObjectService dataObjectService; @GetMapping("/documentPage") @ApiOperation("document page") @@ -45,4 +58,62 @@ public class FileManagerController { public Result uploadImg(@RequestParam("token") String token) { return Result.success(fileManagerService.uploadImg(token)); } + + @PostMapping("/dumpFileLocal") + @ApiOperation("附件下载") + public ReturnT dumpFileLocal(String paramStr) throws Exception { + log.info("dumpFileLocal execute start .................."); + DumpFileParam param = new DumpFileParam(); + try { + if (StringUtils.isNotBlank(paramStr)) { + param = JSON.parseObject(paramStr, DumpFileParam.class); + } + } catch (Throwable throwable) { + return new ReturnT<>(500, "参数解析失败!"); + } + if (StringUtils.isBlank(param.getApi())) { + return new ReturnT<>(500, "api参数缺失!"); + } + for (String api : DataUtil.toIdList(param.getApi())) { + DataObject dataObject = dataObjectService.getById(api); + String blobField = dataObject.getBlobField(); + if (StringUtils.isBlank(blobField)) { + log.error("api:{} does not have blob field", api); + XxlJobLogger.log("api:{} does not have blob field", api); + } + fileService.dumpFile(api, blobField, param.getSingleThread()); + } + return ReturnT.SUCCESS; + } + + @PostMapping("/uploadFileLocal") + @ApiOperation("附件上传") + public ReturnT uploadFileLocal(String paramStr) throws Exception { + log.info("uploadFileJob execute start .................."); + DumpFileParam param = new DumpFileParam(); + try { + if (StringUtils.isNotBlank(paramStr)) { + param = JSON.parseObject(paramStr, DumpFileParam.class); + } + } catch (Throwable throwable) { + return new ReturnT<>(500, "参数解析失败!"); + } + if (StringUtils.isBlank(param.getApi())) { + return new ReturnT<>(500, "api参数缺失!"); + } + for (String api : DataUtil.toIdList(param.getApi())) { + DataObject dataObject = dataObjectService.getById(api); + String blobField = dataObject.getBlobField(); + if (StringUtils.isBlank(blobField)) { + log.error("api:{} does not have blob field", api); + XxlJobLogger.log("api:{} does not have blob field", api); + } + if ("Attachment".equals(api)){ + fileService.uploadFileToAttachment(api, blobField, param.getSingleThread()); + }else { + fileService.uploadFile(api, blobField, param.getSingleThread()); + } + } + return ReturnT.SUCCESS; + } } diff --git a/src/main/java/com/celnet/datadump/global/Const.java b/src/main/java/com/celnet/datadump/global/Const.java index 38fb39d..3ac7f34 100644 --- a/src/main/java/com/celnet/datadump/global/Const.java +++ b/src/main/java/com/celnet/datadump/global/Const.java @@ -50,12 +50,12 @@ public class Const { /** * sf 下载文件链接 */ - public static final String SF_FILE_URL = "/services/data/v55.0/sobjects/%s/%s/%s"; + public static final String SF_FILE_URL = "/services/data/v56.0/sobjects/%s/%s/%s"; /** * sf 上传文件链接 */ - public static final String SF_UPLOAD_FILE_URL = "/services/data/v55.0/sobjects/%s"; + public static final String SF_UPLOAD_FILE_URL = "/services/data/v56.0/sobjects/%s"; /** * sf 获取富文本图片链接 diff --git a/src/main/java/com/celnet/datadump/service/impl/FileServiceImpl.java b/src/main/java/com/celnet/datadump/service/impl/FileServiceImpl.java index 179ac6f..18ed38e 100644 --- a/src/main/java/com/celnet/datadump/service/impl/FileServiceImpl.java +++ b/src/main/java/com/celnet/datadump/service/impl/FileServiceImpl.java @@ -522,7 +522,7 @@ public class FileServiceImpl implements FileService { HttpEntity he = response.getEntity(); if (he != null) { respContent = EntityUtils.toString(he, "UTF-8"); - String newId = String.valueOf(JSONObject.parseObject(respContent).get("Id")); + String newId = String.valueOf(JSONObject.parseObject(respContent).get("id")); if (StringUtils.isBlank(newId)) { log.error("文件上传错误,返回实体信息:" + respContent); break; diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index cf4704e..3c37f1e 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -3,7 +3,7 @@ spring: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver # 携科 - url: jdbc:mysql://127.0.0.1:3306/xieke?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai + url: jdbc:mysql://127.0.0.1:3306/xieke?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: Celnet2025.QY # cook @@ -22,7 +22,7 @@ spring: sf: # 附件下载url file-download-url: https://d2000000079c7eaa.lightning.force.com - file-upload-url: https://steco-process.lightning.sfcrmapps.cn + file-upload-url: https://steco-process.my.sfcrmproducts.cn #线程数 executor-size: 5 list: