Browse Source

试验-接入成渝第三方接口开发
1、删除试验关联附件 对应的预览pdf也要去除

LHB 2 ngày trước cách đây
mục cha
commit
b3be745028

+ 6 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TrialCyAccessoriesMapper.java

@@ -4,6 +4,9 @@ import org.apache.ibatis.annotations.Param;
 import org.springblade.business.entity.TrialCyAccessories;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+import java.util.List;
+import java.util.Objects;
+
 /**
 * @author LHB
 * @description 针对表【u_trial_cy_accessories(成渝-附件信息)】的数据库操作Mapper
@@ -14,6 +17,9 @@ public interface TrialCyAccessoriesMapper extends BaseMapper<TrialCyAccessories>
 
     Boolean clearTrialAssociation(@Param("nodeId") Long nodeId,
                                   @Param("recordId") Long recordId);
+
+    List<String> selectFilePdfList(@Param("nodeId") Long nodeId,
+                                   @Param("types") Integer... types);
 }
 
 

+ 6 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TrialCyAccessoriesMapper.xml

@@ -19,4 +19,10 @@
     <delete id="clearTrialAssociation">
         delete from u_trial_file_pdf_record where node_id = #{nodeId} and record_id=#{recordId}
     </delete>
+    <select id="selectFilePdfList" resultType="java.lang.String">
+        select record_id from u_trial_file_pdf_record where node_id = #{nodeId} and type in
+          <foreach collection="types" item="type" open="(" close=")" separator=",">
+              #{type}
+          </foreach>
+    </select>
 </mapper>

+ 112 - 6
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialCyAccessoriesServiceImpl.java

@@ -1,22 +1,128 @@
 package org.springblade.business.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.business.entity.InformationQuery;
 import org.springblade.business.entity.TrialCyAccessories;
+import org.springblade.business.entity.TrialCyFinishTestReport;
+import org.springblade.business.entity.TrialCyThirdReport;
 import org.springblade.business.service.TrialCyAccessoriesService;
 import org.springblade.business.mapper.TrialCyAccessoriesMapper;
+import org.springblade.business.service.TrialCyFinishTestReportService;
+import org.springblade.business.service.TrialCyThirdReportService;
+import org.springblade.business.utils.FileUtils;
+import org.springblade.common.constant.CommonConstant;
+import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.oss.model.BladeFile;
+import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.core.tool.utils.ResourceUtil;
+import org.springblade.resource.feign.NewIOSSClient;
+import org.springblade.system.cache.ParamCache;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
 /**
-* @author LHB
-* @description 针对表【u_trial_cy_accessories(成渝-附件信息)】的数据库操作Service实现
-* @createDate 2025-08-04 14:39:16
-*/
+ * @author LHB
+ * @description 针对表【u_trial_cy_accessories(成渝-附件信息)】的数据库操作Service实现
+ * @createDate 2025-08-04 14:39:16
+ */
 @Service
 public class TrialCyAccessoriesServiceImpl extends ServiceImpl<TrialCyAccessoriesMapper, TrialCyAccessories>
-    implements TrialCyAccessoriesService {
+        implements TrialCyAccessoriesService {
+    @Resource
+    private TrialCyFinishTestReportService trialCyFinishTestReportService;
+    @Resource
+    private TrialCyThirdReportService trialCyThirdReportService;
+    @Resource
+    private InformationQueryServiceImpl informationQueryService;
+    @Resource
+    private NewIOSSClient newIOSSClient;
+
     @Override
     public Boolean clearTrialAssociation(Long nodeId, Long recordId) {
-        return baseMapper.clearTrialAssociation(nodeId,recordId);
+
+        baseMapper.clearTrialAssociation(nodeId, recordId);
+        //重新生成pdf
+        List<String> listOne = baseMapper.selectFilePdfList(nodeId, 11);
+        List<String> listTwo = baseMapper.selectFilePdfList(nodeId, 11, 12);
+
+        InformationQuery informationQuery = informationQueryService.getBaseMapper().selectList(Wrappers.<InformationQuery>lambdaQuery()
+                .eq(InformationQuery::getWbsId, nodeId)
+                .ne(InformationQuery::getStatus, 3)
+                .eq(InformationQuery::getType, 1)).stream().findAny().orElse(null);
+
+
+        List<String> pdfList = new ArrayList<>();
+        //成渝自检
+        if (CollectionUtil.isNotEmpty(listOne)) {
+            List<TrialCyFinishTestReport> trialCyFinishTestReports = trialCyFinishTestReportService.getBaseMapper().selectList(Wrappers.<TrialCyFinishTestReport>lambdaQuery()
+                    .in(TrialCyFinishTestReport::getTaskId, listOne));
+            trialCyFinishTestReports.forEach(f -> {
+                if (StringUtils.isNotBlank(f.getAssembleFile())) {
+                    pdfList.add(f.getAssembleFile());
+                }
+            });
+        }
+
+        //外委-第三方
+        if (CollectionUtil.isNotEmpty(listOne)) {
+            List<TrialCyThirdReport> trialCyThirdReports = trialCyThirdReportService.getBaseMapper().selectList(Wrappers.<TrialCyThirdReport>lambdaQuery()
+                    .in(TrialCyThirdReport::getId, listTwo));
+            trialCyThirdReports.forEach(f -> {
+                if (StringUtils.isNotBlank(f.getAssembleFile())) {
+                    pdfList.add(f.getAssembleFile());
+                }
+            });
+        }
+
+        String pdfTrialUrl = informationQuery.getPdfTrialUrl();
+        //删除之前的文件
+        if (StringUtils.isNotBlank(pdfTrialUrl)) {
+            String pdfName = pdfTrialUrl.split("upload")[1];
+            this.newIOSSClient.removeFile("upload" + pdfName);
+        }
+        if (pdfList.size() > 0) {
+            //合并试验自检、第三方、外委的pdf
+            List<String> collect = pdfList.stream().filter(Objects::nonNull).collect(Collectors.toList());
+            if (ObjectUtil.isNotEmpty(collect) && collect.size() > 0) {
+                String filePath = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+                String listPdf = filePath + "/pdf/" + informationQuery.getId() + ".pdf";
+                try {
+                    File tabPDF = ResourceUtil.getFile(listPdf);
+                    if (tabPDF.exists()) {
+                        tabPDF.delete();
+                    }
+                    FileUtils.mergePdfPublicMethods(collect, listPdf);
+                    BladeFile bladeFile = this.newIOSSClient.uploadFile(informationQuery.getId() + ".pdf", listPdf);
+                    if (bladeFile != null) {
+
+                        //修改当前节点的pdfTrialURL地址
+                        informationQueryService.update(Wrappers.<InformationQuery>lambdaUpdate()
+                                .set(InformationQuery::getPdfTrialUrl, bladeFile.getLink())
+                                .eq(InformationQuery::getId, informationQuery.getId()));
+                    }
+                } catch (FileNotFoundException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        } else {
+            //修改当前节点的pdfTrialURL地址
+            informationQueryService.update(Wrappers.<InformationQuery>lambdaUpdate()
+                    .set(InformationQuery::getPdfTrialUrl, null)
+                    .eq(InformationQuery::getId, informationQuery.getId()));
+        }
+        return true;
     }
 }
 

+ 1 - 3
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java

@@ -1977,6 +1977,7 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
                 .eq(InformationQuery::getWbsId, dto.getNodeId())
                 .eq(InformationQuery::getProjectId, dto.getProjectId())
                 .eq(InformationQuery::getContractId, dto.getContractId())
+                .ne(InformationQuery::getStatus, 3)
                 .eq(InformationQuery::getType, 1)).stream().findAny().orElse(null);
 
         if (StringUtils.isNotEmpty(dto.getIds())) {
@@ -2050,7 +2051,6 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
                             //修改当前节点的pdfTrialURL地址
                             if (informationQueryService.update(Wrappers.<InformationQuery>lambdaUpdate()
                                     .set(InformationQuery::getPdfTrialUrl, bladeFile.getLink())
-                                    .ne(InformationQuery::getStatus, 3)
                                     .eq(InformationQuery::getId, informationQuery.getId()))) {
                                 for (String recordId : Func.toStrList(dto.getIds())) {
                                     baseMapper.deleteSeletedStatusByNodeId(dto.getNodeId(), dto.getType(), recordId); //先删除对应记录
@@ -2111,7 +2111,6 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
                             //修改当前节点最新的pdfTrialURL地址
                             if (informationQueryService.update(Wrappers.<InformationQuery>lambdaUpdate()
                                     .set(InformationQuery::getPdfTrialUrl, bladeFile.getLink())
-                                    .ne(InformationQuery::getStatus, 3)
                                     .eq(InformationQuery::getId, informationQuery.getId()))) {
                                 for (String recordId : recordIds) {
                                     baseMapper.deleteSeletedStatusByNodeId(dto.getNodeId(), dto.getType(), recordId); //先删除对应记录
@@ -2127,7 +2126,6 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
                 if (informationQuery != null) {
                     informationQueryService.update(Wrappers.<InformationQuery>lambdaUpdate()
                             .set(InformationQuery::getPdfTrialUrl, null)
-                            .ne(InformationQuery::getStatus, 3)
                             .eq(InformationQuery::getId, informationQuery.getId()));
                 }
             }