huangtf před 1 rokem
rodič
revize
a0acfd3c51

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

@@ -0,0 +1,110 @@
+package org.springblade.archive.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang.StringUtils;
+import org.springblade.archive.service.IArchiveAutoPdfService;
+import org.springblade.business.entity.ArchiveFile;
+import org.springblade.business.feign.ArchiveFileClient;
+import org.springblade.common.utils.CommonUtil;
+import org.springblade.core.tool.api.ResultCode;
+import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.manager.feign.ArchiveTreeContractClient;
+import org.springblade.resource.feign.CommonFileClient;
+import org.springblade.resource.feign.IOSSClient;
+import org.springblade.resource.feign.NewIOSSClient;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springblade.core.tool.api.R;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/archiveMeasurement")
+@Api(value = "档案计量", tags = "档案计量")
+public class ArchiveMeasurementController {
+    private final NewIOSSClient iossClient;
+    private final ArchiveTreeContractClient archiveTreeContractClient;
+    private IArchiveAutoPdfService archiveAutoPdfService;
+    private ArchiveFileClient archiveFileClient;
+    private final CommonFileClient commonFileClient;
+
+    @PostMapping("/upFile")
+    @ApiOperation(value = "上传文件", notes = "上传文件")
+    public R upFile(@RequestParam String projectName,
+                    @RequestParam String contractName,
+                    @RequestParam String periodName,
+                    @RequestParam String fileName,
+                    @RequestParam String fileTime,
+                    @RequestParam String dutyUser,
+                    @RequestParam("fileData") MultipartFile fileData) {
+        // 处理文件上传逻辑
+        // 可根据需要对 contractId、periodName、fileName 和 fileData 进行相应的操作
+        ArchiveTreeContract periodNode = archiveTreeContractClient.getMeasurementPeriodNode(projectName,contractName,periodName);
+        if (periodNode == null) {
+            return  R.fail("找不到匹配的项目以及合同段,请检查项目名和合同段名称 ");
+        }
+
+        if (fileData == null) {
+            return  R.fail("没有上传文件 ");
+        }
+
+        String fileUrl = "";
+
+        try {
+            fileUrl = archiveAutoPdfService.upFile(fileData.getInputStream(),periodNode.getProjectId());
+            if (StringUtils.isNotEmpty(fileUrl)) {
+
+                String pdfPage = commonFileClient.getPdfNum(fileUrl);
+                Long pdfSize = CommonUtil.getResourceLength(fileUrl);
+                //新增或者更新
+                //根据nodeid和fileName查询,看是否有文件,没有新增,有则更新。
+                List<ArchiveFile> archiveFiles = archiveFileClient.getListByNodeIDName(periodNode.getId().toString(),fileName);
+                if (archiveFiles == null || archiveFiles.size() == 0) {
+                    ArchiveFile archiveFile = new ArchiveFile();
+                    archiveFile.setProjectId(periodNode.getProjectId().toString());
+                    archiveFile.setContractId(periodNode.getContractId().toString());
+                    archiveFile.setIsDeleted(0);
+                    archiveFile.setIsArchive(0);
+                    archiveFile.setNodeId(periodNode.getId().toString());
+                    archiveFile.setPageNum(pdfPage);
+                    archiveFile.setFileSize(pdfSize);
+                    archiveFile.setSourceType(2);
+                    archiveFile.setFileTime(fileTime);
+                    archiveFile.setFileName(fileName);
+                    archiveFile.setDutyUser(dutyUser);
+                    if (periodNode.getStorageType() !=  null ) {
+                        archiveFile.setFileType(periodNode.getStorageType().longValue());
+                    }
+
+                    List<ArchiveFile> archiveFileList = new ArrayList<>();
+                    archiveFileList.add(archiveFile);
+                    archiveFileClient.addArchiveFile(archiveFileList);
+
+                }else {
+                    ArchiveFile archiveFile = archiveFiles.get(0);
+
+                    if (StringUtils.isNotEmpty(archiveFile.getPdfFileUrl())) {
+                        iossClient.removeFile(archiveFile.getPdfFileUrl());
+                    }
+
+                    archiveFile.setPdfFileUrl(fileUrl);
+                    archiveFile.setFilePage(Integer.valueOf(pdfPage));
+                    archiveFile.setFileSize(pdfSize);
+                    archiveFile.setFileTime(fileTime);
+                    archiveFileClient.updateById2(archiveFile);
+
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return R.success(ResultCode.SUCCESS);
+    }
+}

+ 4 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchiveMeasurementService.java

@@ -0,0 +1,4 @@
+package org.springblade.archive.service;
+
+public interface IArchiveMeasurementService {
+}

+ 13 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveMeasurementServiceImpl.java

@@ -0,0 +1,13 @@
+package org.springblade.archive.service.impl;
+
+
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.archive.service.IArchiveMeasurementService;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+@AllArgsConstructor
+public class ArchiveMeasurementServiceImpl implements IArchiveMeasurementService {
+}

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ProjectInfoServiceImpl.java

@@ -103,7 +103,7 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
 
         List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda()
                 .eq(ContractInfo::getIsDeleted, 0)
-                .eq(ContractInfo::getContractName, contractName)
+                .and(wrapper -> wrapper.eq(ContractInfo::getContractName, contractName).or().eq(ContractInfo::getContractNumber, contractName))
                 .eq(ContractInfo::getPId, pid)
         );
         if (contractInfos == null || contractInfos.size() == 0) {