Sfoglia il codice sorgente

Merge branch 'test-merge' of http://219.151.181.73:3000/zhuwei/bladex into test-merge

lvy 1 mese fa
parent
commit
766716b4fa

+ 5 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/InformationQueryVO.java

@@ -86,6 +86,11 @@ public class InformationQueryVO extends InformationQuery {
     private Integer waitingUserStatus;
 
 
+    @ApiModelProperty("重刷状态 0-待重刷,1-正在重刷,2-重刷成功,3-重刷失败")
+    private Integer saveAgain;
+
+    @ApiModelProperty("重刷次数:如果次数大于5次 每次都是3,就停止重刷")
+    private Integer saveAgainCount;
 
     public void setWaitingUserList(String waitingUserName, Integer status) {
         if (this.waitingUserList == null) {

+ 1 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java

@@ -229,7 +229,7 @@ public interface ArchivesAutoMapper extends BaseMapper<ArchivesAuto> {
 	 */
 	Map<String, BigDecimal> getAllArchiveByContractTypeSummary(@Param("projectId") Long projectId,@Param("type") String typ);
 
-	String getArchiveFileByParentId(@Param("nodeId") String nodeId,@Param("contractId") String contractId);
+	Long getArchiveFileByParentId(@Param("nodeId") String nodeId,@Param("contractId") String contractId);
 
     List<ArchivesAutoVO4> selectAllArchiveAuto(@Param("projectId")Long projectId, @Param("contractId") Long contractId, @Param("nodeIds") List<String> nodeIds,@Param("isArchive")Integer isArchive);
 

+ 4 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -1643,4 +1643,8 @@
         order by m.tree_sort,u.auto_file_sort is null ,u.auto_file_sort,u.file_number is null,
         SUBSTRING_INDEX(u.file_number, '_', 1), SUBSTRING_INDEX(u.file_number, '_', -1) + 0 ,u.create_time asc
     </select>
+    <select id="getArchiveFileByParentId" resultType="java.lang.Long">
+        select c.id from m_archive_tree_contract c left join m_archive_tree a on a.id=c.from_id where c.contract_id=#{contractId} and a.id=#{nodeId} and c.is_deleted=0 and a.is_deleted=0
+
+    </select>
 </mapper>

+ 2 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -4808,7 +4808,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			return R.fail("请传输正确的contractId");
 		}
 		//获取文件的父节点Id
-		String treeContractId = baseMapper.getArchiveFileByParentId(nodeId, contractId);
+		Long treeContractId = baseMapper.getArchiveFileByParentId(nodeId, contractId);
 		if (treeContractId == null || Func.isNull(treeContractId)) {
 			R.fail("请校验传输的nodeId和contractId,没有查到父节点Id");
 		}
@@ -4822,6 +4822,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		archivesAuto.setContractId(Func.toLong(contractId));
 		archivesAuto.setName(fileName);
 		archivesAuto.setIsDeleted(0);
+		archivesAuto.setNodeId(treeContractId);
 		this.save(archivesAuto);
 
 		// 保存文件到archive_file表中

+ 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

@@ -1976,6 +1976,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())) {
@@ -2049,7 +2050,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); //先删除对应记录
@@ -2110,7 +2110,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); //先删除对应记录
@@ -2126,7 +2125,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()));
                 }
             }

+ 10 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -6365,10 +6365,12 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             selectAllNodeTable="select * from m_wbs_tree_contract where p_id="+dto.getNodeId()+" and table_owner in (4,5,6) and is_deleted=0";
         }
         List<WbsTreeContract> tables = jdbcTemplate.query(selectAllNodeTable, new BeanPropertyRowMapper<>(WbsTreeContract.class));
+        //查询出当前表单
         String selectTable="select * from m_wbs_tree_contract where p_key_id="+dto.getPkeyId();
         WbsTreeContract wbsContract = jdbcTemplate.queryForObject(selectTable, new BeanPropertyRowMapper<>(WbsTreeContract.class));
         Long excelId = wbsContract.getExcelId();
         String nodeName = wbsContract.getNodeName();
+        //判断是否为复制表,如果是复制表取本表以及之后的表,如果不是复制表直接取全部
         int sufix =0;
         if(nodeName.contains("_")){
             sufix = Integer.parseInt(nodeName.substring(nodeName.lastIndexOf("_") +1));
@@ -6386,8 +6388,11 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 }
             }
         }
+        //表单排序
         resultList.sort(new ExcelTabServiceImpl.WbsTreeContractComparator());
+        //根据规则生成编号
         List<String> numbers = generateNumbers(dto);
+        //构造入库数据
         Map<WbsTreeContract,  Map<String,String>> reData = new HashMap<>();
         String key = dto.getKey();
         String[] strings = key.split("__");
@@ -6421,7 +6426,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         }
         //保存数据入库并且生成pdf
         saveDataAndGeneratePdf(reData,dto.getNodeId(),dto.getClassify(),wbsContract.getContractId(),wbsContract.getProjectId());
-        return null;
+        return R.status( true);
     }
 
     private void saveDataAndGeneratePdf(Map<WbsTreeContract, Map<String, String>> reData,String nodeId,String classify,String contractId,String projectId) throws Exception {
@@ -6470,8 +6475,10 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 String sql="update "+wbsTreeContract.getInitTableName()+" set "+Key.get()+" = '"+dataMap2.get(Key.get())+"' where p_key_id = "+wbsTreeContract.getPKeyId();
                 jdbcTemplate.update(sql);
             }
+            //生成单张pdf
             getBussPdfInfo(wbsTreeContract.getPKeyId());
         }
+        //合并pdf
         getBussPdfs(nodeId, classify, contractId, projectId);
     }
 
@@ -6494,6 +6501,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             );
         } else if (dto.getType() == 2) {
             // 处理组合编号
+            //前半部分
             List<String> part1List = generateSinglePartNumbers(
                     dto.getIncreType1(),
                     dto.getCycleType1(),
@@ -6501,7 +6509,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     dto.getStartNumber1(),
                     dto.getEndNumber1()
             );
-
+            //后半部分
             List<String> part2List = generateSinglePartNumbers(
                     dto.getIncreType2(),
                     dto.getCycleType2(),

+ 7 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -4420,8 +4420,13 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                     .collect(Collectors.toSet());
 
             // 交工证书判断
-            vo.setCompletionCertificate(children.stream()
-                    .anyMatch(node -> node.getMajorDataType() != null && node.getMajorDataType() == 3));
+            List<Long> completionCertificate = children.stream()
+                    .filter(node -> node.getMajorDataType() != null && node.getMajorDataType() == 3)
+                    .map(WbsTreeContract::getPKeyId)
+                    .collect(Collectors.toList());
+            if (CollectionUtil.isNotEmpty(completionCertificate)) {
+                vo.setCompletionCertificate(allQueryIds.containsAll(completionCertificate));
+            }
 
             // 附件报告判断
             vo.setStrengthReportSeven(childrenIds.stream().anyMatch(id ->

+ 4 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml

@@ -131,6 +131,8 @@
     <select id="selectInformationQueryPageTwo" resultType="org.springblade.business.entity.InformationQuery">
         SELECT
             query.pdf_trial_url,
+            query.save_again,
+            query.save_again_count,
             query.pdf_trial_url_position,
             query.wbs_id,
             query.id,
@@ -148,6 +150,8 @@
             (
             SELECT
                 iq.pdf_trial_url_position,
+                iq.save_again,
+                iq.save_again_count,
                 iq.pdf_trial_url,
                 iq.sort,
                 iq.id,

+ 1 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -1067,7 +1067,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
                 }
                 Map<Long, WbsTreePrivate> map = query.stream().collect(Collectors.toMap(WbsTreePrivate::getPKeyId, v -> v, (v1, v2) -> v2));
                 lazyNodes.forEach(lazyNodeVO -> {
-                    WbsTreePrivate treePrivate = map.get(lazyNodeVO.getPKeyId());
+                    WbsTreePrivate treePrivate = map.get(lazyNodeVO.getIsTypePrivatePid());
                     if (treePrivate == null || treePrivate.getAncestorsPId() == null) {
                         lazyNodeVO.setPrivateTemplate("");
                         return;