Explorar o código

奉建路绑定

laibulaizheli hai 2 días
pai
achega
a2578e1f89

+ 51 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/APIResponse.java

@@ -0,0 +1,51 @@
+package org.springblade.archive.vo;
+
+import java.util.List;
+
+public class APIResponse<T> {
+    //"1"代表成功
+    private String result = "-1";
+    // 成功就改成 "操作成功"
+    private String msg = "数据操作失败";
+
+    private List<T> datas;
+    private T data;
+
+    public APIResponse(){}
+    public APIResponse(String result, String msg){
+        this.result=result;
+        this.msg=msg;
+    }
+
+    public String getResult() {
+        return result;
+    }
+
+    public void setResult(String result) {
+        this.result = result;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public List<T> getDatas() {
+        return datas;
+    }
+
+    public void setDatas(List<T> datas) {
+        this.datas = datas;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
+    }
+}

+ 35 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsDivideClient.java

@@ -0,0 +1,35 @@
+package org.springblade.manager.feign;
+
+import org.springblade.manager.vo.DivideFileVo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_PREFIX;
+
+/**
+ * WBS划分远程调用接口
+ *
+ * @author BladeX
+ */
+@FeignClient(value = APPLICATION_NAME_PREFIX + "manager")
+public interface WbsDivideClient {
+
+    /**
+     * 接口前缀
+     */
+    String API_PREFIX = "/api/manager/wbsDivide";
+
+    /**
+     * 根据划分编号获取PDF文件信息列表
+     *
+     * @param divideNum  划分编号
+     * @param contractId 合同段ID
+     * @return PDF文件信息列表
+     */
+    @GetMapping(API_PREFIX + "/getPdfUrlsByDivideNum")
+    List<DivideFileVo> getPdfUrlsByDivideNum(@RequestParam String divideNum, @RequestParam String contractId);
+
+}

+ 30 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/DivideFileVo.java

@@ -0,0 +1,30 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 划分文件视图对象
+ */
+@Data
+public class DivideFileVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    private String id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * URL
+     */
+    private String fileUrl;
+
+}

+ 21 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveMeasurementController.java

@@ -21,9 +21,12 @@ import org.springblade.core.tool.api.ResultCode;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.feign.ArchiveTreeContractClient;
 import org.springblade.manager.feign.ProjectClient;
+import org.springblade.manager.feign.WbsDivideClient;
 import org.springblade.resource.feign.CommonFileClient;
 import org.springblade.resource.feign.IOSSClient;
 import org.springblade.resource.feign.NewIOSSClient;
+import org.springblade.archive.vo.APIResponse;
+import org.springblade.manager.vo.DivideFileVo;
 import org.springframework.core.io.FileSystemResource;
 import org.springframework.http.*;
 import org.springframework.util.LinkedMultiValueMap;
@@ -58,6 +61,7 @@ public class ArchiveMeasurementController {
     private final CommonFileClient commonFileClient;
 
     private final ProjectClient projectClient;
+    private final WbsDivideClient wbsDivideClient;
 
     private final ExternalDataArchiveBuildService externalDataArchiveBuildService;
 
@@ -274,4 +278,21 @@ public class ArchiveMeasurementController {
         return ResponseEntity.ok("Request processed successfully");
     }
 
+    @GetMapping("/getFileList")
+    @ApiOperation(value = "获取文件列表", notes = "根据划分编号和合同ID获取文件列表")
+    public APIResponse<DivideFileVo> getFileList(@RequestParam String divideNum, 
+                                                 @RequestParam String contractId) {
+        APIResponse<DivideFileVo> response = new APIResponse<>();
+        try {
+            List<DivideFileVo> fileList = wbsDivideClient.getPdfUrlsByDivideNum(divideNum, contractId);
+            response.setResult("1");
+            response.setMsg("操作成功");
+            response.setDatas(fileList);
+        } catch (Exception e) {
+            response.setResult("-1");
+            response.setMsg("获取文件列表失败: " + e.getMessage());
+        }
+        return response;
+    }
+
 }

+ 12 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsDivideController.java

@@ -13,6 +13,7 @@ import org.springblade.manager.entity.WbsDivide;
 import org.springblade.manager.service.IWbsDivideService;
 import org.springblade.manager.vo.DivideClientReq;
 import org.springblade.manager.vo.DivideClientVo;
+import org.springblade.manager.vo.DivideFileVo;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -168,19 +169,22 @@ public class WbsDivideController extends BladeController {
     }
 
     /**
-     * 根据划分编号获取PDF URL列表
+     * 根据划分编号获取PDF文件信息列表
      */
     @GetMapping("/getPdfUrlsByDivideNum")
     @ApiOperationSupport(order = 7)
-    @ApiOperation(value = "根据划分编号获取PDF URL列表", notes = "传入divideNum,返回对应的PDF URL列表")
-    @ApiImplicitParam(name = "divideNum", value = "划分编号", required = true, dataType = "String")
-    public R<List<String>> getPdfUrlsByDivideNum(@RequestParam String divideNum) {
+    @ApiOperation(value = "根据划分编号获取PDF文件信息列表", notes = "传入divideNum和contractId,返回对应的PDF文件信息列表")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "divideNum", value = "划分编号", required = true, dataType = "String"),
+        @ApiImplicitParam(name = "contractId", value = "合同段ID", required = true, dataType = "String")
+    })
+    public R<List<DivideFileVo>> getPdfUrlsByDivideNum(@RequestParam String divideNum, @RequestParam String contractId) {
         try {
-            List<String> pdfUrls = wbsDivideService.getPdfUrlsByDivideNum(divideNum);
-            return R.data(pdfUrls, "成功获取 " + pdfUrls.size() + " 个PDF URL");
+            List<DivideFileVo> divideFiles = wbsDivideService.getPdfUrlsByDivideNum(divideNum, contractId);
+            return R.data(divideFiles, "成功获取 " + divideFiles.size() + " 个PDF文件信息");
         } catch (Exception e) {
-            log.error("根据划分编号获取PDF URL列表失败,divideNum={}, error={}", divideNum, e.getMessage(), e);
-            return R.fail("获取PDF URL列表失败:" + e.getMessage());
+            log.error("根据划分编号获取PDF文件信息列表失败,divideNum={}, contractId={}, error={}", divideNum, contractId, e.getMessage(), e);
+            return R.fail("获取PDF文件信息列表失败:" + e.getMessage());
         }
     }
 

+ 26 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsDivideClientImpl.java

@@ -0,0 +1,26 @@
+package org.springblade.manager.feign;
+
+import lombok.AllArgsConstructor;
+import org.springblade.manager.service.IWbsDivideService;
+import org.springblade.manager.vo.DivideFileVo;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * WBS划分远程调用接口实现
+ *
+ * @author BladeX
+ */
+@RestController
+@AllArgsConstructor
+public class WbsDivideClientImpl implements WbsDivideClient {
+
+    private final IWbsDivideService wbsDivideService;
+
+    @Override
+    public List<DivideFileVo> getPdfUrlsByDivideNum(String divideNum, String contractId) {
+        return wbsDivideService.getPdfUrlsByDivideNum(divideNum, contractId);
+    }
+
+}

+ 4 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsDivideService.java

@@ -4,6 +4,7 @@ import org.springblade.core.mp.base.BaseService;
 import org.springblade.manager.entity.WbsDivide;
 import org.springblade.manager.vo.DivideClientReq;
 import org.springblade.manager.vo.DivideClientVo;
+import org.springblade.manager.vo.DivideFileVo;
 
 import java.util.List;
 
@@ -82,11 +83,11 @@ public interface IWbsDivideService extends BaseService<WbsDivide> {
      * 根据divideNum查询所有记录的pKeyId,并获取对应的PDF URL列表
      *
      * @param divideNum 划分编号
-     * @return PDF URL列表
+     * @param contractId 合同段ID
+     * @return PDF文件信息列表
      */
-    List<String> getPdfUrlsByDivideNum(String divideNum);
+    List<DivideFileVo> getPdfUrlsByDivideNum(String divideNum, String contractId);
 
     void testCompleteFlow();
-
 }
 

+ 32 - 13
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsDivideServiceImpl.java

@@ -16,13 +16,16 @@ import org.springblade.manager.mapper.WbsDivideMapper;
 import org.springblade.manager.service.IWbsDivideService;
 import org.springblade.manager.vo.DivideClientReq;
 import org.springblade.manager.vo.DivideClientVo;
+import org.springblade.manager.vo.DivideFileVo;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * WBS划分 Service 实现类
@@ -159,22 +162,35 @@ public class WbsDivideServiceImpl extends BaseServiceImpl<WbsDivideMapper, WbsDi
     }
 
     @Override
-    public List<String> getPdfUrlsByDivideNum(String divideNum) {
-        List<String> pdfUrls = new ArrayList<>();
+    public List<DivideFileVo> getPdfUrlsByDivideNum(String divideNum, String contractId) {
+        List<DivideFileVo> resultList = new ArrayList<>();
         
         try {
-            // 1. 根据divideNum查询所有记录
+            // 1. 根据divideNum和contractId查询所有记录
             List<WbsDivide> wbsDivideList = baseMapper.selectByDivideNum(divideNum);
             
             if (wbsDivideList == null || wbsDivideList.isEmpty()) {
                 log.warn("根据divideNum={}未查询到任何记录", divideNum);
-                return pdfUrls;
+                return resultList;
             }
             
-            log.info("根据divideNum={}查询到{}条记录", divideNum, wbsDivideList.size());
+            // 过滤出contractId匹配的记录
+            List<WbsDivide> filteredList = new ArrayList<>();
+            for (WbsDivide wbsDivide : wbsDivideList) {
+                if (contractId != null && contractId.equals(wbsDivide.getContractId())) {
+                    filteredList.add(wbsDivide);
+                }
+            }
+            
+            if (filteredList.isEmpty()) {
+                log.warn("根据divideNum={}和contractId={}未查询到匹配记录", divideNum, contractId);
+                return resultList;
+            }
+            
+            log.info("根据divideNum={}和contractId={}查询到{}条记录", divideNum, contractId, filteredList.size());
             
             // 2. 遍历所有记录,取出pKeyId
-            for (WbsDivide wbsDivide : wbsDivideList) {
+            for (WbsDivide wbsDivide : filteredList) {
                 Long pKeyId = wbsDivide.getPKeyId();
                 
                 if (pKeyId == null) {
@@ -190,9 +206,13 @@ public class WbsDivideServiceImpl extends BaseServiceImpl<WbsDivideMapper, WbsDi
                     
                     if (informationQuery != null && informationQuery.getPdfUrl() != null 
                             && !informationQuery.getPdfUrl().trim().isEmpty()) {
-                        // 4. 取出pdfUrl添加到列表
-                        pdfUrls.add(informationQuery.getPdfUrl());
-                        log.debug("pKeyId={}对应的pdfUrl={}", pKeyId, informationQuery.getPdfUrl());
+                        // 4. 创建DivideFileVo对象
+                        DivideFileVo divideFileVo = new DivideFileVo();
+                        divideFileVo.setId(informationQuery.getId().toString());
+                        divideFileVo.setName(informationQuery.getName());
+                        divideFileVo.setFileUrl(informationQuery.getPdfUrl());
+                        resultList.add(divideFileVo);
+                        log.debug("pKeyId={}对应的pdfUrl={}, name={}", pKeyId, informationQuery.getPdfUrl(), informationQuery.getName());
                     } else {
                         log.debug("pKeyId={}未查询到有效的pdfUrl", pKeyId);
                     }
@@ -201,13 +221,13 @@ public class WbsDivideServiceImpl extends BaseServiceImpl<WbsDivideMapper, WbsDi
                 }
             }
             
-            log.info("根据divideNum={}最终获取到{}个pdfUrl", divideNum, pdfUrls.size());
+            log.info("根据divideNum={}和contractId={}最终获取到{}个pdfUrl", divideNum, contractId, resultList.size());
             
         } catch (Exception e) {
-            log.error("根据divideNum={}获取PDF URL列表失败, error={}", divideNum, e.getMessage(), e);
+            log.error("根据divideNum={}和contractId={}获取PDF URL列表失败, error={}", divideNum, contractId, e.getMessage(), e);
         }
         
-        return pdfUrls;
+        return resultList;
     }
 
     public void testCompleteFlow() {
@@ -288,6 +308,5 @@ public class WbsDivideServiceImpl extends BaseServiceImpl<WbsDivideMapper, WbsDi
 
         log.info("========== 测试完整流程结束 ==========");
     }
-
 }