소스 검색

Merge branch 'refs/heads/feature-lihb-20250716' into test-merge

LHB 3 주 전
부모
커밋
4a784c9de0

+ 5 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeContractOldHtml.java

@@ -29,6 +29,11 @@ public class WbsTreeContractOldHtml {
      */
     private String oldHtmlUrl;
 
+    /**
+     * 上报之前的html表单
+     */
+    private String oldExcelUrl;
+
     /**
      *  是否删除(0-正常,1-已删除)
      */

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1052,6 +1052,7 @@ public class InformationWriteQueryController extends BladeController {
                     List<WbsTreeContractOldHtml> data = new ArrayList<>();
                     try {
                         for (WbsTreeContract wbsTreeContract : wbsTreeContracts) {
+                            ExcelTab byId = excelTabClient.getById(String.valueOf(wbsTreeContract.getExcelId()));
                             WbsTreeContractOldHtml oldHtml = new WbsTreeContractOldHtml();
                             oldHtml.setId(SnowFlakeUtil.getId());
                             oldHtml.setCreateUser(getUser().getUserId());
@@ -1065,6 +1066,8 @@ public class InformationWriteQueryController extends BladeController {
 
                             oldHtml.setContractFormId(wbsTreeContract.getPKeyId());
                             oldHtml.setOldHtmlUrl(copyPath.toFile().getAbsolutePath());
+                            //记录历史excel路径
+                            oldHtml.setOldExcelUrl(byId.getFileUrl());
                             data.add(oldHtml);
                         }
                         List<Long> collect = data.stream().map(WbsTreeContractOldHtml::getContractFormId).collect(Collectors.toList());

+ 19 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -2131,9 +2131,22 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         }
 
         //获取清表信息
-        ExcelTab excelTab = this.getById(wbsTreeContract.getExcelId());
-        if (excelTab == null) {
-            return R.fail("未获取到清表信息");
+        String newFileUrl = null;
+        //获取当前表单的历史html
+        // 这里先从旧html表中获取  如果有用旧的html m_wbs_tree_contract_old_html
+        WbsTreeContractOldHtml oldHtml = wbsTreeContractOldHtmlService.getOne(Wrappers.<WbsTreeContractOldHtml>lambdaQuery()
+                .eq(WbsTreeContractOldHtml::getContractFormId, pkeyId)
+                .eq(WbsTreeContractOldHtml::getIsDeleted, 0)
+                .last("limit 1"));
+        if (oldHtml != null && StringUtils.isNotEmpty(oldHtml.getOldHtmlUrl())) {
+            newFileUrl = oldHtml.getOldHtmlUrl();
+        } else {
+            //获取清表信息
+            ExcelTab excelTab = this.getById(wbsTreeContract.getExcelId());
+            if (excelTab == null) {
+                return R.fail("未获取到清表信息");
+            }
+            newFileUrl = excelTab.getFileUrl();
         }
 
         Map<String, Object> DataInfo = getBussDataInfo(pkeyId, 0);
@@ -2141,11 +2154,11 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         Integer realFillRate = 0;
 
         //获取excel流 和 html流
-        InputStream exceInp = CommonUtil.getOSSInputStream(excelTab.getFileUrl());
+        InputStream exceInp = CommonUtil.getOSSInputStream(newFileUrl);
 
         Workbook workbook = null;
-        int index = excelTab.getFileUrl().lastIndexOf(".");
-        String suffix = excelTab.getFileUrl().substring(index);
+        int index = newFileUrl.lastIndexOf(".");
+        String suffix = newFileUrl.substring(index);
 
         if (".xls".equals(suffix)) {
             workbook = new XSSFWorkbook(exceInp);

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousEViSaServiceImpl.java

@@ -8,6 +8,7 @@ import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.manager.entity.*;
+import org.springblade.manager.feign.ExcelTabClient;
 import org.springblade.manager.feign.WbsTreeContractOldHtmlClient;
 import org.springblade.manager.mapper.TextdictInfoMapper;
 import org.springblade.manager.mapper.WbsTreeContractMapper;
@@ -51,6 +52,8 @@ public class WbsSynchronousEViSaServiceImpl {
 
     @Autowired
     private WbsTreeContractOldHtmlService wbsTreeContractOldHtmlService;
+    @Autowired
+    private ExcelTabClient excelTabClient;
 
     @Transactional(rollbackFor = Exception.class)
     public void updateTextDictInfo(Long projectId, List<Long> editPrivateIds, List<TextdictInfo> addData) {
@@ -221,6 +224,8 @@ public class WbsSynchronousEViSaServiceImpl {
             List<WbsTreeContractOldHtml> data = new ArrayList<>();
             try {
                 for (WbsTreeContract wbsTreeContract : wbsTreeContracts) {
+                    ExcelTab byId = excelTabClient.getById(String.valueOf(wbsTreeContract.getExcelId()));
+
                     //如果有历史记录 并且状态为0 则不记录当前历史记录
                     long count = wbsTreeContractOldHtmlService.count(Wrappers.<WbsTreeContractOldHtml>lambdaQuery()
                             .eq(WbsTreeContractOldHtml::getContractFormId, wbsTreeContract.getPKeyId())
@@ -241,7 +246,9 @@ public class WbsSynchronousEViSaServiceImpl {
                     Files.copy(sourcePath, copyPath, StandardCopyOption.REPLACE_EXISTING);
 
                     oldHtml.setContractFormId(wbsTreeContract.getPKeyId());
+                    //记录历史数据 合同段当前 html 当前excel
                     oldHtml.setOldHtmlUrl(copyPath.toFile().getAbsolutePath());
+                    oldHtml.setOldExcelUrl(byId.getFileUrl());
                     data.add(oldHtml);
                 }
                 wbsTreeContractOldHtmlService.saveBatch(data);

+ 6 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousServiceImpl.java

@@ -720,7 +720,7 @@ public class WbsSynchronousServiceImpl {
                                                 } else {
                                                     if (i == 0) {
                                                         isSync = false;
-                                                        errorMsg.append(editContractNode.getNodeName() + "( " + editContractNode.getPKeyId() + ")").append("未填报;");
+                                                        errorMsg.append(editContractNode.getNodeName() + "(" + editContractNode.getPKeyId() + ")").append("未填报;");
                                                     }
                                                     if (contractRanges.contains(WbsSyncTypeEnum.ALREADY_FILLED_IN_NOT_REPORTED.code) && (submit == null || submit == 0)) {
                                                         //已填报-未上报 102
@@ -728,7 +728,7 @@ public class WbsSynchronousServiceImpl {
                                                     } else {
                                                         if (submit == null) {
                                                             isSync = false;
-                                                            errorMsg.append(editContractNode.getNodeName() + "( " + editContractNode.getPKeyId() + ")").append("未上报;");
+                                                            errorMsg.append(editContractNode.getNodeName() + "(" + editContractNode.getPKeyId() + ")").append("未上报;");
                                                         }else{
                                                             if (submit == 1 && contractRanges.contains(WbsSyncTypeEnum.PENDING_APPROVAL.code)) {
                                                                 //待审批 104
@@ -765,6 +765,10 @@ public class WbsSynchronousServiceImpl {
 
                                     //清表 公式 元素
                                     if (collect.contains(2) || collect.contains(3) || collect.contains(5)) {
+                                        if(collect.contains(2) && (templateNode.getHtmlUrl() == null || templateNode.getInitTableName() == null || templateNode.getExcelId() == null)){
+                                            errorMsg.append(editContractNode.getNodeName() + "(" + editContractNode.getPKeyId() + ")").append("未配置清表;");
+                                            continue;
+                                        }
                                         editContractNode.setExcelId(templateNode.getExcelId());
                                         editContractNode.setInitTableName(templateNode.getInitTableName());
                                         editContractNode.setHtmlUrl(templateNode.getHtmlUrl());