ソースを参照

对接第三方公共文件上传接口

sucheng 8 ヶ月 前
コミット
8cb0c5b628

+ 5 - 0
jxkh-common/pom.xml

@@ -27,5 +27,10 @@
             <artifactId>mybatis-plus-generator</artifactId>
             <version>3.1.2</version>
         </dependency>
+        <dependency>
+            <groupId>com.rongwei</groupId>
+            <artifactId>rw-common-component</artifactId>
+            <version>1.1-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 </project>

+ 2 - 0
jxkh-common/src/main/java/com/rongwei/bscommon/sys/service/SynchronizationDataService.java

@@ -8,4 +8,6 @@ import com.rongwei.rwcommon.base.R;
  */
 public interface SynchronizationDataService {
     R dataSync(String id, String code);
+
+    R uploadFile(String fileId);
 }

+ 34 - 0
jxkh-common/src/main/java/com/rongwei/bscommon/sys/service/impl/SynchronizationDataServiceImpl.java

@@ -1,11 +1,22 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.rongwei.bscommon.sys.service.SynchronizationDataService;
+import com.rongwei.bscommon.sys.utils.AttendanceAssessmentSdk;
+import com.rongwei.bsentity.dto.ApiCallDto;
+import com.rongwei.bsentity.dto.ApiReturnDto;
 import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommoncomponent.file.dto.FileBO;
+import com.rongwei.rwcommoncomponent.file.service.impl.SysFileItemServiceImpl;
+import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
+import java.util.Map;
+
 /**
  * @author :sc
  * @since :2024/12/2
@@ -13,6 +24,11 @@ import org.springframework.stereotype.Service;
 @Service
 public class SynchronizationDataServiceImpl implements SynchronizationDataService {
     private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+    @Autowired
+    private SysFileItemServiceImpl sysFileItemServiceImpl;
+    @Autowired
+    private AttendanceAssessmentSdk attendanceAssessmentSdk;
+
 
     /**
      * 业务数据同步方法
@@ -25,4 +41,22 @@ public class SynchronizationDataServiceImpl implements SynchronizationDataServic
     public R dataSync(String id, String code) {
         return null;
     }
+
+    @Override
+    public R uploadFile(String fileId) {
+        log.info("文件上传开始,本系统文件ID:{}", fileId);
+        SysFileItemDo sysFileItemDo = sysFileItemServiceImpl.getById(fileId);
+        FileBO fileBO = FileBO.builder()
+                .fileName(sysFileItemDo.getFilename())
+                .realPath(sysFileItemDo.getFullpath())
+                .fileType(sysFileItemDo.getFiletype())
+                .build();
+        File newFile = new File(fileBO.getRealPath());
+
+        ApiCallDto<Object> req = new ApiCallDto<>();
+        req.setApiCode("fileUpload");
+        req.setData(newFile);
+        R r = attendanceAssessmentSdk.fileUploadApiCall(req);
+        return r;
+    }
 }

+ 47 - 0
jxkh-common/src/main/java/com/rongwei/bscommon/sys/utils/AttendanceAssessmentSdk.java

@@ -10,6 +10,7 @@ import com.rongwei.bsentity.dto.ApiReturnDto;
 import com.rongwei.commonservice.service.ApiLogService;
 import com.rongwei.commonservice.service.RedisService;
 import com.rongwei.commonservice.service.SysConfigService;
+import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.base.exception.CustomException;
 import com.rongwei.rwcommon.utils.Constants;
 import com.rongwei.rwcommon.utils.SecurityUtil;
@@ -18,8 +19,13 @@ import com.rongwei.rwcommonentity.commonservers.domain.ApiLogDo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.FileSystemResource;
 import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
 
+import java.io.File;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
@@ -116,6 +122,47 @@ public class AttendanceAssessmentSdk {
         return apiReturnDto;
     }
 
+    public R fileUploadApiCall(ApiCallDto paramVo) {
+        logger.info("接口调用开始:{}", paramVo.getApiCode());
+        // 请求地址
+        String url = this.clientIp + this.apiVirtualDirectoryMap.get(paramVo.getApiCode());
+        logger.info("api地址:{}", url);
+
+        String apiResult = null;
+        String fileId = "";
+
+        /**********************组装请求参数**************************************/
+        MultiValueMap<String, Object> postData = new LinkedMultiValueMap<>();
+        Map<String, Object> requestData = getRequestData();
+        requestData.put("TOKEN", getToken());
+        postData.set("STANDARD_DATA", requestData);
+        FileSystemResource resource = new FileSystemResource((File) paramVo.getData());
+        postData.set("UPLOAD_FILE", resource);
+        JSONConfig config = new JSONConfig();
+        config.setIgnoreNullValue(false);
+        String jsonStr = JSONUtil.toJsonStr(postData, config);
+        logger.info("入参:{}", jsonStr);
+        try {
+            RestTemplate rest = new RestTemplate();
+            url = "http://localhost:9689/synchronization/file";
+            apiResult = rest.postForObject(url, postData, String.class);
+
+            logger.info("接口返回报文:{}", apiResult);
+            JSONObject jsonObject = JSONUtil.parseObj(apiResult);
+            fileId = jsonObject.getOrDefault("FILE_ID", "").toString();
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error("接口调用异常", e.getMessage());
+            apiResult = "接口调用异常:" + e.getMessage();
+        } finally {
+            // 接口调用结束后续逻辑处理
+            String finalApiResult = apiResult;
+            Thread td = new Thread(() -> afterAll(paramVo, jsonStr, finalApiResult));
+            td.start();
+        }
+        return R.ok(fileId);
+    }
+
     private String getToken() {
         logger.info("获取token开始");
         if (redisService.hasKey(REDIS_KEY_NAME)) {

+ 34 - 5
jxkh-server/src/main/java/com/rongwei/controller/SynchronizationDataController.java

@@ -1,17 +1,24 @@
 package com.rongwei.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.rongwei.bscommon.sys.service.SynchronizationDataService;
 import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
 
 /**
  * @author :sc
  * @since :2024/12/2
  */
-@Controller("/synchronization")
+@Slf4j
+@RestController
+@RequestMapping("/synchronization")
 public class SynchronizationDataController {
     @Autowired
     private SynchronizationDataService synchronizationDataService;
@@ -20,8 +27,30 @@ public class SynchronizationDataController {
      * 接口同步方法
      */
     @PostMapping("/{id}/{code}")
-    public R dataSync(@PathVariable String id, @PathVariable String apiCode) {
-        return synchronizationDataService.dataSync(id,apiCode);
+    public R dataSync(@PathVariable String id, @PathVariable String code) {
+        return synchronizationDataService.dataSync(id,code);
+    }
+    /**
+     * 模仿测试文件上传
+     */
+    @RequestMapping("/file")
+    @ResponseBody
+    public JSONObject uploadFile(@RequestParam("STANDARD_DATA") String jsonObject, @RequestParam("UPLOAD_FILE") MultipartFile file) {
+        System.out.println("fileId: " + jsonObject);
+        if(!file.isEmpty()){
+            JSONObject jsonObject1 = new JSONObject();
+            jsonObject1.put("FILE_ID", SecurityUtil.getUUID());
+            return jsonObject1;
+        }else {
+            return null;
+        }
+    }
+    /**
+     * 文件上传对接接口
+     */
+    @PostMapping("/file/upload/{fileId}")
+    public R uploadFile(@PathVariable String fileId) {
+        return synchronizationDataService.uploadFile(fileId);
     }
 
 }