Ver código fonte

Merge remote-tracking branch 'origin/test-merge' into test-merge

LHB 1 semana atrás
pai
commit
ef0c337bb6
22 arquivos alterados com 339 adições e 117 exclusões
  1. 0 2
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/TaskProgressClient.java
  2. 2 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java
  3. 0 75
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ScanFileController.java
  4. 1 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java
  5. 74 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  6. 1 4
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/TaskProgressClientImpl.java
  7. 2 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml
  8. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskProgressMapper.java
  9. 15 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskProgressMapper.xml
  10. 23 4
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskProgressServiceImpl.java
  11. 2 3
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  12. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/sync/TaskSync.java
  13. 0 1
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVDataServiceImpl.java
  14. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/bean/TableInfo.java
  15. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  16. 37 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TextdictInfoController.java
  17. 101 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TrialSummaryClassificationConfigurationController.java
  18. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TableElementConverter.java
  19. 12 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  20. 10 8
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  21. 48 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java
  22. 3 3
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictBizMapper.xml

+ 0 - 2
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/TaskProgressClient.java

@@ -13,8 +13,6 @@ public interface TaskProgressClient {
      */
     String API_PREFIX = "/api/business/taskProgress";
 
-    @GetMapping(API_PREFIX + "/addTaskProgress")
-    Boolean addTaskProgress(@RequestParam("projectId") Long projectId, @RequestParam("contractId") Long contractId, @RequestParam("type") Integer type, @RequestParam("size") Integer size, @RequestParam("dataIds") String dataIds);
 
     @GetMapping(API_PREFIX + "/updateTaskProgress")
     Boolean updateTaskProgress(@RequestParam("projectId") Long projectId,@RequestParam("contractId") Long contractId,@RequestParam("type") Integer type,@RequestParam("finishTotal") Integer finishTotal,@RequestParam("dataId") String dataId);

+ 2 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java

@@ -128,6 +128,7 @@ public class ArchiveFileController extends BladeController {
                 for (ArchiveFileVO saveVo : saveList) {
                     metadataClassificationClient.createMetadataFile(saveVo.getId(), 0);
                 }
+                autoService.checkFileInfo(saveList.stream().map(item -> item.getId() + "").collect(Collectors.toList()));
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -192,6 +193,7 @@ public class ArchiveFileController extends BladeController {
                     //获取源信息
                     metadataClassificationClient.createMetadataFile(saveVo.getId(), 0);
                 }
+                autoService.checkFileInfo(vo.getList().stream().map(item -> item.getId() + "").collect(Collectors.toList()));
             } catch (Exception e) {
                 e.printStackTrace();
             }

+ 0 - 75
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ScanFileController.java

@@ -188,80 +188,5 @@ public class ScanFileController {
     }
 
 
-    /**
-     * 每天3点执行一次
-     *  检测文件完整性,包括:日期、责任者、PDF是否有污渍、PDF分辨率是否大于等于300DPI
-     */
-    @Scheduled(cron = "0 0 3 * * ?")
-    public void checkFileInfo(){
-        System.out.println("开始执行文件完整性检测");
-        String sql = "select id,node_id,duty_user,file_time,file_url,pdf_file_url from u_archive_file where is_deleted = 0 and check_status >= 0 and node_id is not null and project_id is not null limit %d offset %d";
-        int size = 10000;
-        int offset = 0;
-        Pattern datePattern = Pattern.compile("[0-9]{4}.?[0-9]{2}.?[0-9]{2}");
-        while (true) {
-            List<ArchiveFile> query = jdbcTemplate.query(String.format(sql, size, offset), new BeanPropertyRowMapper<>(ArchiveFile.class));
-            if (query.isEmpty()) {
-                break;
-            }
-            offset += size;
-            for (ArchiveFile file : query) {
-                String status = "";
-                if (file.getFileTime() == null || !datePattern.matcher(file.getFileTime()).find()) {
-                    status += "1";
-                }
-                if (file.getDutyUser() ==  null || file.getDutyUser().trim().isEmpty() || file.getDutyUser().trim().equals("null")) {
-                    status += "2";
-                }
-                String url = "";
-                if (file.getPdfFileUrl() != null && file.getPdfFileUrl().contains("http")) {
-                    url = file.getFileUrl();
-                } else if (file.getFileUrl() != null && file.getFileUrl().contains("http")) {
-                    url = file.getPdfFileUrl();
-                }
-                if (url == null || !url.endsWith(".pdf")) {
-                    status += "3";
-                    file.setCheckStatus(Integer.parseInt(status));
-                    continue;
-                }
-                int lastIndexOf = url.lastIndexOf("/");
-                String prefix = url.substring(0, lastIndexOf + 1);
-                String suffix = url.substring(lastIndexOf + 1);
-                try {
-                    url = prefix + URLEncoder.encode(suffix, "UTF-8");
-                    // 使用内存限制设置 10MB 主内存
-                    MemoryUsageSetting memUsage = MemoryUsageSetting.setupMainMemoryOnly(10_000_000);
-                    try (InputStream ossIs = CommonUtil.getOSSInputStream(url);PDDocument document = PDDocument.load(ossIs, memUsage);) {
-                        PDPage page = document.getPage(0);
-                        // 获取pdf 的dpi信息
-                        int dpi = (int) (page.getCropBox().getWidth() / page.getTrimBox().getWidth() * 72);
-                        if (dpi < 300) {
-                            status += "3";
-                        }
-                        // todo 检测pdf是否有遮挡或者污渍
-                        if (status.isEmpty()) {
-                            file.setCheckStatus(-1);
-                        } else {
-                            file.setCheckStatus(Integer.parseInt( status));
-                        }
-                    }
-                } catch (Exception e) {
-                    status += "3";
-                    file.setCheckStatus(Integer.parseInt( status));
-                }
-            }
-            Date date = new Date();
-            List<Object[]> params = query.stream().map(entry -> new Object[]{entry.getCheckStatus(), date, entry.getId()}).collect(Collectors.toList());
-            jdbcTemplate.batchUpdate("update u_archive_file set check_status = ?, update_time = ? where id = ?", params);
-            System.out.println("已检测了" + (query.size() < size ? offset - size + query.size() : offset) + "条数据");
-            if (LocalTime.now().isBefore(LocalTime.of(6,30))) {
-                System.out.println("时间超过6:30, 停止检测");
-                break;
-            }
-        }
-        System.out.println("文件完整性检测执行完毕");
-
-
-    }
 
 }

+ 1 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java

@@ -191,4 +191,5 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
 	Boolean atuoOCR(List<Long> ids) throws Exception;
 
 	void reCreateArchiveAuto2(List<ArchivesAuto> archivesAutoList, String ids, String name);
+	void checkFileInfo(List<String> ids);
 }

+ 74 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -39,6 +39,9 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 
+import org.apache.pdfbox.io.MemoryUsageSetting;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
 import org.springblade.archive.dto.*;
 import org.springblade.archive.entity.*;
 import org.springblade.archive.mapper.ArchiveConclusionMapper;
@@ -101,6 +104,7 @@ import java.nio.file.Paths;
 import java.rmi.ServerException;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.List;
@@ -5532,6 +5536,76 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			}
 		});
 	}
+
+	@Async
+	public void checkFileInfo(List<String> ids){
+		if (ids == null || ids.isEmpty()) {
+			return;
+		}
+		List<ArchiveFile> query = jdbcTemplate.query("select id,node_id,duty_user,file_time,file_url,pdf_file_url from u_archive_file where is_deleted = 0 and id in (" + String.join(",", ids) + ")",
+				new BeanPropertyRowMapper<>(ArchiveFile.class));
+		if (query.isEmpty()) {
+			return;
+		}
+		checkArchiveFile( query);
+		List<Object[]> params = query.stream().map(entry -> new Object[]{entry.getCheckStatus(), entry.getId()}).collect(Collectors.toList());
+		jdbcTemplate.batchUpdate("update u_archive_file set check_status = ? where id = ?", params);
+	}
+
+	/**
+	 *  检测文件完整性,包括:日期、责任者、PDF是否有污渍、PDF分辨率是否大于等于300DPI
+	 */
+	private void checkArchiveFile(List<ArchiveFile> list) {
+		Pattern datePattern = Pattern.compile("[0-9]{4}.?[0-9]{2}.?[0-9]{2}");
+		for (ArchiveFile file : list) {
+			String status = "";
+			if (file.getFileTime() == null || !datePattern.matcher(file.getFileTime()).find()) {
+				status += "1";
+			}
+			if (file.getDutyUser() ==  null || file.getDutyUser().trim().isEmpty() || file.getDutyUser().trim().equals("null")) {
+				status += "2";
+			}
+			String url = "";
+			if (file.getPdfFileUrl() != null && file.getPdfFileUrl().contains("http")) {
+				url = file.getFileUrl();
+			} else if (file.getFileUrl() != null && file.getFileUrl().contains("http")) {
+				url = file.getPdfFileUrl();
+			}
+			if (url == null || !url.endsWith(".pdf")) {
+				status += "3";
+				file.setCheckStatus(Integer.parseInt(status));
+				continue;
+			}
+			if (!status.isEmpty()) {
+				continue;
+			}
+			int lastIndexOf = url.lastIndexOf("/");
+			String prefix = url.substring(0, lastIndexOf + 1);
+			String suffix = url.substring(lastIndexOf + 1);
+			try {
+				url = prefix + URLEncoder.encode(suffix, "UTF-8");
+				// 使用内存限制设置 10MB 主内存
+				MemoryUsageSetting memUsage = MemoryUsageSetting.setupMainMemoryOnly(10_000_000);
+				try (InputStream ossIs = CommonUtil.getOSSInputStream(url); PDDocument document = PDDocument.load(ossIs, memUsage);) {
+					PDPage page = document.getPage(0);
+					// 获取pdf 的dpi信息
+					int dpi = (int) (page.getCropBox().getWidth() / page.getTrimBox().getWidth() * 72);
+					if (dpi < 300) {
+						status += "3";
+					}
+					// todo 检测pdf是否有遮挡或者污渍
+					if (status.isEmpty()) {
+						file.setCheckStatus(-1);
+					} else {
+						file.setCheckStatus(Integer.parseInt( status));
+					}
+				}
+			} catch (Exception e) {
+				status += "3";
+				file.setCheckStatus(Integer.parseInt(status));
+			}
+		}
+	}
 }
 
 

+ 1 - 4
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/TaskProgressClientImpl.java

@@ -14,10 +14,7 @@ public class TaskProgressClientImpl implements TaskProgressClient {
     private final ITaskProgressService taskProgressService;
 
 
-    @Override
-    public Boolean addTaskProgress(Long projectId, Long contractId, Integer type, Integer size,String dataIds) {
-       return taskProgressService.addTaskProgress(projectId, contractId, type, size,dataIds);
-    }
+
 
     @Override
     public Boolean updateTaskProgress(Long projectId, Long contractId, Integer type, Integer finishTotal,String dataId) {

+ 2 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -59,6 +59,7 @@
         <result column="fid" property="fid"/>
         <result column="archive_sort" property="archiveSort"/>
         <result column="rectification" property="rectification"/>
+        <result column="check_status" property="checkStatus"/>
         <result column="m_wbs_tree_contract_p_key_id" property="mWbsTreeContractPKeyId"/>
         <result column="u_image_classification_file_id" property="uImageClassificationFileId"/>
     </resultMap>
@@ -156,7 +157,7 @@
     </select>
 
     <select id="selectArchiveFilePage" resultMap="archiveFileResultMap">
-        select u.id,u.project_id,u.contract_id,u.node_id,u.file_number,u.file_name,u.file_time,u.file_url,u.pdf_file_url,u.file_page,u.is_approval,u.is_certification,u.is_need_certification,u.duty_user,u.create_user,u.create_dept,u.create_time,u.update_user,u.update_time,u.status,u.is_deleted,u.sheet_type,u.sheet_source,u.drawing_no,u.cite_change_number,u.certification_time,u.e_visa_file,u.node_ext_id,u.file_type,u.archive_id,u.origin_id,u.tag_id,u.pic_code,u.refer_code,u.film_code,u.width,u.height,u.sort,u.box_name,u.box_number,u.is_auto_file,u.is_archive,u.page_num,u.file_size,u.source_type,u.is_element,u.pdf_page_url,u.fid,u.rectification,u.classify,u.m_wbs_tree_contract_p_key_id,u.u_image_classification_file_id,u.archive_file_storage_type,u.node_tree_structure,u.date_name,u.archive_file_stroage_type,u.out_id,u.sort_num,u.is_lock,u.archive_sort,u.remark,u.m_album_id
+        select u.id,u.project_id,u.contract_id,u.node_id,u.file_number,u.file_name,u.file_time,u.file_url,u.pdf_file_url,u.file_page,u.is_approval,u.is_certification,u.is_need_certification,u.duty_user,u.create_user,u.create_dept,u.create_time,u.update_user,u.update_time,u.status,u.is_deleted,u.sheet_type,u.sheet_source,u.drawing_no,u.cite_change_number,u.certification_time,u.e_visa_file,u.node_ext_id,u.file_type,u.archive_id,u.origin_id,u.tag_id,u.pic_code,u.refer_code,u.film_code,u.width,u.height,u.sort,u.box_name,u.box_number,u.is_auto_file,u.is_archive,u.page_num,u.file_size,u.source_type,u.is_element,u.pdf_page_url,u.fid,u.rectification,u.classify,u.m_wbs_tree_contract_p_key_id,u.u_image_classification_file_id,u.archive_file_storage_type,u.node_tree_structure,u.date_name,u.archive_file_stroage_type,u.out_id,u.sort_num,u.is_lock,u.archive_sort,u.remark,u.m_album_id,u.check_status
         from u_archive_file u
         <if test="vo.nodeIds != null and vo.nodeIds != ''">
             left join m_archive_tree_contract t on t.id = u.node_id and t.is_deleted= 0

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskProgressMapper.java

@@ -48,4 +48,6 @@ public interface TaskProgressMapper extends BaseMapper<TaskProgress> {
 	void checkAndUpdateIsFinish(@Param("id") Long id);
 
 	TaskProgressVO selectNewTaskProgress1(@Param("projectId") Long projectId, @Param("contractId") Long contractId, @Param("type") Integer type);
+
+	Integer selectTaskBatchSize(@Param("dataIds") List<Long> dataIds);
 }

+ 15 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskProgressMapper.xml

@@ -36,5 +36,20 @@
     <select id="selectNewTaskProgress1" resultType="org.springblade.business.vo.TaskProgressVO">
         select * from m_task_progress where is_deleted = 0 and project_id = #{projectId} and contract_id = #{contractId} and type = #{type}  order by create_time desc limit 1
     </select>
+    <select id="selectTaskBatchSize" resultType="java.lang.Integer">
+        SELECT COUNT(*)
+        FROM u_task_batch utb
+        INNER JOIN m_task_progress mtp
+        ON FIND_IN_SET(
+        JSON_UNQUOTE(JSON_EXTRACT(utb.json_data, '$.formDataId')),
+        mtp.data_id
+        ) > 0
+        <if test="dataIds != null and dataIds.size() > 0">
+            WHERE JSON_UNQUOTE(JSON_EXTRACT(utb.json_data, '$.formDataId')) IN
+            <foreach collection="dataIds" item="id" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </if>
+    </select>
 
 </mapper>

+ 23 - 4
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskProgressServiceImpl.java

@@ -24,6 +24,7 @@ import org.springblade.business.mapper.TaskProgressMapper;
 import org.springblade.business.service.ITaskProgressService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.business.vo.TaskProgressVO1;
+import org.springblade.core.tool.utils.Func;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
@@ -56,15 +57,33 @@ public class TaskProgressServiceImpl extends BaseServiceImpl<TaskProgressMapper,
 		}
 		TaskProgressVO vo2 = baseMapper.selectNewTaskProgress1(projectId, contractId,2);
 		if(vo2!=null){
-			map.put("re-sign", new TaskProgressVO1(vo2.getFinishTatol(),vo2.getTaskTotal(),vo2.getTaskTotal() > 0 ?
-					(double) vo2.getFinishTatol() / vo2.getTaskTotal() * 100 :
+			Integer size=0;
+			if(StringUtils.isNotEmpty(vo2.getDataId())){
+				size=baseMapper.selectTaskBatchSize(Func.toLongList(vo2.getDataId()));
+			}
+			Integer finishTatol=vo2.getTaskTotal()-size;
+			map.put("re-sign", new TaskProgressVO1(finishTatol,vo2.getTaskTotal(),vo2.getTaskTotal() > 0 ?
+					(double) finishTatol / vo2.getTaskTotal() * 100 :
 					0.00));
+			if(size==0){
+				vo2.setIsDeleted(0);
+				baseMapper.updateById(vo2);
+			}
 		}
 		TaskProgressVO vo3 = baseMapper.selectNewTaskProgress1(projectId, contractId,4);
 		if(vo3!=null){
-			map.put("electronic-sign", new TaskProgressVO1(vo3.getFinishTatol(),vo3.getTaskTotal(),vo3.getTaskTotal() > 0 ?
-					(double) vo3.getFinishTatol() / vo3.getTaskTotal() * 100 :
+			Integer size=0;
+			if(StringUtils.isNotEmpty(vo3.getDataId())){
+				size=baseMapper.selectTaskBatchSize(Func.toLongList(vo3.getDataId()));
+			}
+			Integer finishTatol=vo3.getTaskTotal()-size;
+			map.put("electronic-sign", new TaskProgressVO1(finishTatol,vo3.getTaskTotal(),vo3.getTaskTotal() > 0 ?
+					(double) finishTatol / vo3.getTaskTotal() * 100 :
 					0.00));
+			if(size==0){
+				vo3.setIsDeleted(0);
+				baseMapper.updateById(vo3);
+			}
 		}
 		return map;
 	}

+ 2 - 3
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -1972,7 +1972,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     .in(InformationQuery::getId, newIds));
             List<InformationQuery> list = informationQueryService.list(new LambdaQueryWrapper<>(InformationQuery.class).in(InformationQuery::getId, newIds));
             recordResignLog("save-again", StringUtils.join(newIds, ","), list, dtos, dtos.get(0).getProjectId()+"", dtos.get(0).getContractId()+"", null);
-            taskProgressService.addTaskProgress(dtos.get(0).getProjectId(), dtos.get(0).getContractId(), 1,dtos.size(),null);
+            taskProgressService.addTaskProgress(dtos.get(0).getProjectId(), dtos.get(0).getContractId(), 1,dtos.size(),StringUtils.join(newIds, ","));
         }
         return R.success("操作成功");
     }
@@ -1997,7 +1997,6 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         //查询任务信息
         List<Task> taskList = jdbcTemplate.query("select * from u_task where id in(" + taskIds + ")", new BeanPropertyRowMapper<>(Task.class));
         if (taskList.size() > 0) {
-            taskProgressService.addTaskProgress(Long.parseLong(projectId), Long.parseLong(contractId), 2,taskList.size(),null);
             //获取任务详情信息Map
             Set<String> processInstanceIds = taskList.stream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
             Map<String, List<TaskParallel>> taskParallelGroupMap = new HashMap<>();
@@ -2012,6 +2011,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             List<String> dataIdList = taskList.stream().map(Task::getFormDataId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
             //Map<String, String> queryMap = jdbcTemplate.query("select * from u_information_query where id in(" + StringUtils.join(dataIdList, ",") + ")", new BeanPropertyRowMapper<>(InformationQuery.class)).stream().collect(Collectors.toMap(l -> l.getId() + "", l -> l.getWbsId() + ""));
             List<InformationQuery> list = informationQueryService.list(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getId, dataIdList));
+            taskProgressService.addTaskProgress(Long.parseLong(projectId), Long.parseLong(contractId), 2,taskList.size(),StringUtils.join(dataIdList, ","));
             Map<String, String> queryMap=list.stream().collect(Collectors.toMap(l -> l.getId() + "", l -> l.getWbsId() + ""));
             Map<String, String> typeMap = jdbcTemplate.query("select * from u_information_query where id in(" + StringUtils.join(dataIdList, ",") + ")", new BeanPropertyRowMapper<>(InformationQuery.class)).stream().collect(Collectors.toMap(l -> l.getId() + "", l -> l.getClassify() + ""));
 
@@ -2221,7 +2221,6 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                                 .set(TaskParallel::getEVisaContent, "重新保存PDF失败")
                                 .eq(TaskParallel::getProcessInstanceId, task.getProcessInstanceId()));
                     }
-                    taskProgressService.updateTaskProgress(Long.parseLong(task.getProjectId()), Long.parseLong(task.getContractId()), 2, 1,null);
                 }
                 //获取当前操作人
                 Long userId = AuthUtil.getUserId(request);

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/sync/TaskSync.java

@@ -68,7 +68,7 @@ public class TaskSync {
         }
         lambda.set(InformationQuery::getUpdateTime, DateTime.now());
         lambda.eq(InformationQuery::getId, dto.getId());
-        taskProgressClient.updateTaskProgress(dto.getProjectId(), dto.getContractId(), 1, 1,null);
+        taskProgressClient.updateTaskProgress(dto.getProjectId(), dto.getContractId(), 1, 1,dto.getId()+"");
         informationQueryService.update(lambda);
         log.info("数据重刷完毕,线程名称:{}", Thread.currentThread().getName());
     }

+ 0 - 1
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVDataServiceImpl.java

@@ -384,7 +384,6 @@ public class EVDataServiceImpl implements EVDataService {
                     this.jdbcTemplate.execute("update u_information_query set status=1 where id=" + taskApp.getFormDataId());
                 }
             }
-            taskProgressClient.updateTaskProgress(Long.parseLong(taskApp.getProjectId()), Long.parseLong(taskApp.getContractId()), 4, 1, taskApp.getFormDataId());
             RedisTemplate.delete("sign-" + taskApp.getFormDataId());
             RedisTemplate.opsForList().rightPush("blade:statistics:information_query_statistics_key", taskApp.getFormDataId());
             Thread.sleep(1000);

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/bean/TableInfo.java

@@ -27,6 +27,8 @@ public class TableInfo {
     private String groupId = "0";
     // 用于实验
     private String testGroupId = "0";
+    //清楚字段数据时 是否删除附表 0否 1是
+    private String isRemoveForSubTab;
 
 
     /**

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -4310,7 +4310,7 @@ public class ExcelTabController extends BladeController {
         BladeFile bladeFile = this.newIOSSClient.uploadFileByInputStream(file);
         if(bladeFile!=null&&StringUtils.isNotEmpty(oldUrl)){
             String fileName=oldUrl.substring(oldUrl.lastIndexOf("/")+1);
-            newIOSSClient.removeFile(fileName);
+            newIOSSClient.removeFile("upload/"+fileName);
         }
         return R.data(bladeFile);
     }

+ 37 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TextdictInfoController.java

@@ -56,6 +56,7 @@ import org.springblade.manager.vo.*;
 import org.springframework.dao.DataAccessException;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.SingleColumnRowMapper;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
@@ -410,13 +411,45 @@ public class TextdictInfoController extends BladeController {
                 String isExitSql = " select * from information_schema.TABLES where TABLE_NAME='" + tabName + "'";
                 List<Map<String, Object>> tablist = jdbcTemplate.queryForList(isExitSql);
                 if (tablist != null && tablist.size() > 0 && wbsTreePrivate.getType() != 10) {
+                    String textType = textdictInfo.getTextId();
+                    int type = 0;
+                    if (textType.equals("daterange") || textType.equals("selectBox")) {
+                        type = 1;
+                    }
                     String[] split = keyname.split("__");
-                    String clarSql = "update  " + tabName + " set " + split[0] + "=null where p_key_id in(SELECT p_key_id FROM m_wbs_tree_contract WHERE is_type_private_pid ='" + wbsTreePrivate.getPKeyId() + "' and project_id='" + wbsTreePrivate.getProjectId() + "'UNION ALL SELECT 1 )";
-                    if (split.length > 1 && StringUtil.isNumeric(split[1]) && Integer.parseInt(split[1]) > 80) {
-                        clarSql = "update  " + tabName + " set key_201 = REPLACE(key_201, '" + split[0] + ":' , ':') where p_key_id in(SELECT p_key_id FROM m_wbs_tree_contract WHERE is_type_private_pid ='" + wbsTreePrivate.getPKeyId() + "' and project_id='" + wbsTreePrivate.getProjectId() + "'UNION ALL SELECT 1 )";
+                    List<String> query = jdbcTemplate.query("SELECT column_name from information_schema.COLUMNS where table_name = '" + tabName + "' and column_name in ( '" + split[0] + "', 'key_201')", new SingleColumnRowMapper<>(String.class));
+                    String sql = "";
+                    if (!query.isEmpty()) {
+                        String value;
+                        if (type == 1) {
+                            // 转数组格式
+                            value = String.format(" %s = if(substr(%s,1,1) = '[', %s, concat('[', substr(%s,1, if(instr(@v, '_^_') - 1 < 0, char_length(@v), instr(@v, '_^_') - 1) ,']', substr(%s, instr(%s, '_^_'))))", split[0], split[0], split[0], split[0], split[0], split[0]);
+                        } else {
+                            // 转普通格式
+                            value = String.format(" %s = if(substr(%s,1,1) = '[', concat(substr(%s, instr(%s, '[') + 1, (CHAR_LENGTH(%s) - instr(REVERSE(%s) , ']') - instr(%s, '['))), substr(%s, instr(%s, '_^_'))), %s)",
+                                    split[0], split[0], split[0], split[0], split[0], split[0], split[0], split[0], split[0], split[0]);
+                        }
+                        if (query.contains("key_201")) {
+                            String value1;
+                            if (type == 1) {
+                                // 转数组格式
+                                value1 = String.format(" key_201 = concat(SUBSTRING_INDEX(key_201,'%s:',1), '%s:', if(substr(@v := if(INSTR(SUBSTRING_INDEX(key_201, '%s:',-1),'$$') - 1 < 0, SUBSTRING_INDEX(key_201, '%s:',-1), SUBSTR(SUBSTRING_INDEX(key_201, '%s:',-1), 1 , INSTR(SUBSTRING_INDEX(key_201, '%s:',-1),'$$') - 1)) , 1, 1) = '[', @v, concat('[', substr(@v,1, if(instr(@v, '_^_') - 1 < 0, char_length(@v), instr(@v, '_^_') - 1) ,']', substr(@v, instr(@v, '_^_'))))  , if (INSTR(SUBSTRING_INDEX(key_201, 'key_16:',-1),'$$') - 1 < 0, '', concat('$$', SUBSTRING_INDEX(SUBSTRING_INDEX(key_201,'key_16:',-1),'$$',-1))) ) ",
+                                        split[0],split[0], split[0], split[0], split[0], split[0]);
+                            } else {
+                                // 转普通格式
+                                value1 = String.format(" key_201 = concat(SUBSTRING_INDEX(key_201,'%s:',1), '%s:', if(substr(@v := if(INSTR(SUBSTRING_INDEX(key_201, '%s:',-1),'$$') - 1 < 0, SUBSTRING_INDEX(key_201, '%s:',-1), SUBSTR(SUBSTRING_INDEX(key_201, '%s:',-1), 1 , INSTR(SUBSTRING_INDEX(key_201, '%s:',-1),'$$') - 1)) , 1, 1) != '[', @v, concat(substr(@v, instr(@v, '[') + 1, (CHAR_LENGTH(@v) - instr(REVERSE(@v) , ']') - instr(@v, '['))), substr(@v, instr(@v, '_^_')))) , if (INSTR(SUBSTRING_INDEX(key_201, 'key_16:',-1),'$$') - 1 < 0, '', concat('$$', SUBSTRING_INDEX(SUBSTRING_INDEX(key_201,'key_16:',-1),'$$',-1))) ) ",
+                                        split[0],split[0],split[0],split[0],split[0], split[0]);
+                            }
+                            value = value + " , " + value1;
+                            sql = String.format("update %s set %s where p_key_id in ( select p_key_id from m_wbs_tree_contract WHERE is_type_private_pid = %d and project_id = %s )",
+                                    tabName, value ,wbsTreePrivate.getPKeyId(), wbsTreePrivate.getProjectId());
+                        } else {
+                            sql = String.format("update %s set %s where p_key_id in ( select p_key_id from m_wbs_tree_contract WHERE is_type_private_pid = %d and project_id = %s ) and %s is not null and %s != ''",
+                                    tabName, value ,wbsTreePrivate.getPKeyId(), wbsTreePrivate.getProjectId(), split[0], split[0]);
+                        }
                     }
                     try {
-                        jdbcTemplate.execute(clarSql);
+                        jdbcTemplate.execute(sql);
                     } catch (DataAccessException e) {
                         e.printStackTrace();
                     }

+ 101 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TrialSummaryClassificationConfigurationController.java

@@ -39,6 +39,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.io.*;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -148,6 +149,8 @@ public class TrialSummaryClassificationConfigurationController extends BladeCont
                 fileInputStream = CommonUtil.getOSSInputStream(path);
             }
             String htmlString = IoUtil.readToString(fileInputStream);
+            htmlString= htmlString.replaceAll("title","trial");
+            htmlString= htmlString.replaceAll("trialsummaryreflection", "title");
             Document doc = Jsoup.parse(htmlString);
             Element table = doc.select("table").first();
             doc.select("Col").remove();
@@ -248,7 +251,7 @@ public class TrialSummaryClassificationConfigurationController extends BladeCont
     @ApiOperationSupport(order = 13)
     @ApiOperation(value = "映射数据保存", notes = "传入TrialSummaryReflectionSaveDTO")
     @RequestMapping(value = "/reflection/save", method = RequestMethod.POST)
-    public R<Object> reflectionSave(@RequestBody TrialSummaryReflectionSaveDTO dto) {
+    public R<Object> reflectionSave(@RequestBody TrialSummaryReflectionSaveDTO dto) throws IOException {
         if (ObjectUtil.isNotEmpty(dto.getClassId())) {
             if (ObjectUtil.isEmpty(dto.getReflectionBeanList().size()) || dto.getReflectionBeanList().size() == 0) {
                 return R.success("操作成功");
@@ -298,6 +301,48 @@ public class TrialSummaryClassificationConfigurationController extends BladeCont
                         }
                         jdbcTemplate.batchUpdate(sqlInsert, batchArgs);
                     }
+                    //设置html上的属性,添加一个属性,trialSummaryReflection
+                    String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+                    String sys_file_net_url = ParamCache.getValue(CommonConstant.SYS_FILE_NET_URL);
+                    String fileUrl = classificationConfiguration.getHtmlUrl();
+                    File file1 = ResourceUtil.getFile(fileUrl);
+                    InputStream fileInputStream;
+                    if (file1.exists()) {
+                        fileInputStream = new FileInputStream(file1);
+                    } else {
+                        String path = sys_file_net_url + fileUrl.replaceAll("//", "/").replaceAll(file_path, "").replaceAll("/www/wwwroot/Users/hongchuangyanfa/Desktop/", "");
+                        fileInputStream = CommonUtil.getOSSInputStream(path);
+                    }
+                    String htmlString = IoUtil.readToString(fileInputStream);
+                    Document doc = Jsoup.parse(htmlString);
+                    List<Map<String, Object>> htmlData1 = reflectionHtmlData1(dto.getClassId() + "");
+                    // 按htmlKeyName分组,合并相同位置的elementValue
+                    Map<String, String> keyValueMap = new HashMap<>();
+                    for (Map<String, Object> item : htmlData1) {
+                        String htmlKeyName = (String) item.get("htmlKeyName");
+                        String elementValue = (String) item.get("elementValue");
+                        if (keyValueMap.containsKey(htmlKeyName)) {
+                            // 如果已存在该key,则用/分隔追加
+                            keyValueMap.put(htmlKeyName, keyValueMap.get(htmlKeyName) + "/" + elementValue);
+                        } else {
+                            keyValueMap.put(htmlKeyName, elementValue);
+                        }
+                    }
+                    // 在HTML中设置trialSummaryReflection属性
+                    for (Map.Entry<String, String> entry : keyValueMap.entrySet()) {
+                        String keyName = entry.getKey();
+                        String elementValue = entry.getValue();
+                        // 查找具有指定keyname属性的元素
+                        Element element = doc.selectFirst("[keyname='" + keyName + "']");
+                        if (element != null) {
+                            // 设置trialSummaryReflection属性
+                            element.attr("trialsummaryreflection", elementValue);
+                        }
+                    }
+                    // 修改HTML文档后,保存回原文件
+                    try (FileOutputStream outputStream = new FileOutputStream(file1)) {
+                        outputStream.write(doc.html().getBytes(StandardCharsets.UTF_8));
+                    }
                     return R.success("操作成功");
                 }
             }
@@ -329,6 +374,10 @@ public class TrialSummaryClassificationConfigurationController extends BladeCont
                 if (query.size() > 0) {
                     Set<Long> eleIds = query.stream().map(TrialSummaryExcelTabReflection::getElementId).collect(Collectors.toSet());
                     Map<Long, WbsFormElement> eleMap = wbsFormElementService.getBaseMapper().selectBatchIds(eleIds).stream().collect(Collectors.toMap(WbsFormElement::getId, Function.identity()));
+
+                    // 用于按htmlKeyName分组
+                    Map<String, List<Map<String, Object>>> groupedMaps = new HashMap<>();
+
                     for (TrialSummaryExcelTabReflection obj : query) {
                         Map<String, Object> map = new HashMap<>();
                         map.put("id", obj.getId());
@@ -341,7 +390,28 @@ public class TrialSummaryClassificationConfigurationController extends BladeCont
                             map.put("elementValue", ObjectUtil.isNotEmpty(orDefault) ? orDefault.getEName() : null);
                         }
                         map.put("htmlKeyName", obj.getHtmlKeyName());
-                        maps.add(map);
+
+                        // 按htmlKeyName分组
+                        groupedMaps.computeIfAbsent(obj.getHtmlKeyName(), k -> new ArrayList<>()).add(map);
+                    }
+
+                    // 合并相同htmlKeyName的条目
+                    for (Map.Entry<String, List<Map<String, Object>>> entry : groupedMaps.entrySet()) {
+                        List<Map<String, Object>> group = entry.getValue();
+                        if (group.size() > 1) {
+                            // 如果有多个相同的htmlKeyName,合并为一个
+                            Map<String, Object> mergedMap = new HashMap<>();
+                            mergedMap.put("htmlKeyName", entry.getKey());
+                            mergedMap.put("elementValue", "多元素");
+                            // 保留第一个条目的其他属性
+                            mergedMap.put("id", group.get(0).get("id"));
+                            mergedMap.put("trialTabId", group.get(0).get("trialTabId"));
+                            mergedMap.put("elementId", group.get(0).get("elementId"));
+                            maps.add(mergedMap);
+                        } else {
+                            // 只有一个条目,直接添加
+                            maps.add(group.get(0));
+                        }
                     }
                 }
             }
@@ -349,4 +419,33 @@ public class TrialSummaryClassificationConfigurationController extends BladeCont
         return R.data(maps);
     }
 
+    public List<Map<String, Object>> reflectionHtmlData1(@RequestParam String id) {
+        List<Map<String, Object>> maps = new LinkedList<>();
+        if (ObjectUtil.isNotEmpty(id)) {
+            TrialSummaryClassificationConfiguration clazz = iTrialSummaryClassificationConfigurationService.getById(id);
+            if (clazz != null) {
+                List<TrialSummaryExcelTabReflection> query = jdbcTemplate.query("SELECT * FROM m_trial_summary_excel_tab_reflection WHERE class_id = ?", new Object[]{id}, new BeanPropertyRowMapper<>(TrialSummaryExcelTabReflection.class));
+                if (query.size() > 0) {
+                    Set<Long> eleIds = query.stream().map(TrialSummaryExcelTabReflection::getElementId).collect(Collectors.toSet());
+                    Map<Long, WbsFormElement> eleMap = wbsFormElementService.getBaseMapper().selectBatchIds(eleIds).stream().collect(Collectors.toMap(WbsFormElement::getId, Function.identity()));
+                    for (TrialSummaryExcelTabReflection obj : query) {
+                        Map<String, Object> map = new HashMap<>();
+                        map.put("id", obj.getId());
+                        map.put("trialTabId", obj.getTrialTabId());
+                        map.put("elementId", obj.getElementId());
+                        if (TrialTableDataInfo.LONG_ID.equals(obj.getTrialTabId())) {
+                            map.put("elementValue", TrialTableDataInfo.getElementName(obj.getElementKey()));
+                        } else {
+                            WbsFormElement orDefault = eleMap.getOrDefault(obj.getElementId(), null);
+                            map.put("elementValue", ObjectUtil.isNotEmpty(orDefault) ? orDefault.getEName() : null);
+                        }
+                        map.put("htmlKeyName", obj.getHtmlKeyName());
+                        maps.add(map);
+                    }
+                }
+            }
+        }
+        return maps;
+    }
+
 }

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TableElementConverter.java

@@ -134,6 +134,8 @@ public class TableElementConverter implements ITableElementConverter {
     /**取小数*/
     public Integer scale = 0;
     public Integer payRadicScale = 2;
+    //清楚字段数据时 是否删除附表 0否 1是
+    private String isRemoveForSubTab;
     /*计量属性*/
     /**根据表名获取对应表页对象*/
     public LinkedList<NodeTable> getTableByName(String initTableName){

+ 12 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -375,7 +375,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 tableInfo.setProjectId(dataInfo2.getString("projectId"));
                 //huangjn 填报的类型,施工或监理
                 tableInfo.setClassify(dataInfo2.getString("classify"));
-
+                tableInfo.setIsRemoveForSubTab(dataInfo2.getString("isRemoveForSubTab"));
                 //设置首件信息
                 this.setFirstData(dataInfo2, tableInfo);
                 //设置日志信息
@@ -479,11 +479,11 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 }else{
                    tableAll = createNodeTables(nodeId, tableInfoList.get(0).getContractId(), tableInfoList.get(0).getProjectId(), type,tableInfoList.get(0).getClassify());
                 }
-
+                String isRemoveForSubTab = "0";
 
                 if (tableAll.size() > tableInfoList.size()) {
                     TableInfo example = tableInfoList.get(0);
-
+                    isRemoveForSubTab=example.getIsRemoveForSubTab();
                     /*补充缺失的数据*/
                     List<Long> cp = tableInfoList.stream().map(TableInfo::getPkeyId).map(Long::parseLong).collect(Collectors.toList());
                     List<Long> load = tableAll.stream().map(NodeTable::getPKeyId).filter(pk -> !cp.contains(pk)).collect(Collectors.toList());
@@ -563,6 +563,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         tec.setExecuteType(type);
                         tec.setContractId(contractId);
                         tec.setProjectId(projectId);
+                        tec.setIsRemoveForSubTab(isRemoveForSubTab);
                         if (tec.isPresent()) {
                             tec.before();
                             this.formulaService.execute(tec);
@@ -2732,7 +2733,14 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         }
                         if (cell != null || ObjectUtils.isNotEmpty(cell)) {
                              // 获取单元格的现有值
-                            String existingValue = cell.getStringCellValue();
+                            String existingValue = "";
+                            switch (cell.getCellTypeEnum()) {
+                                case STRING:
+                                    existingValue = cell.getStringCellValue();
+                                    break;
+                                case NUMERIC:
+                                    continue;
+                            }
                             // 获取单元格的现有富文本字符串
                             RichTextString existingRichTextString = cell.getRichStringCellValue();
                             String s = null;

+ 10 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -1953,14 +1953,16 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 headerFooterSub(subTableFds, tec);
                 /*如果识别到手填内容需要在附表写入数据后,更新评定关联数据*/
             }else {
-                List<NodeTable> subTabList = tec.getTableAll().stream().filter(e -> e.getNodeName().contains("附表") && (e.getTableType() == 1 || e.getTableType() == 5)).collect(Collectors.toList());
-                if(!subTabList.isEmpty()){
-                    String queryIds = subTabList.stream().map(e -> e.getPKeyId() + "").collect(Collectors.joining(","));
-                    // 如果不是系统自动生成的附表,则不删除。
-                    List<Long> ids = jdbcTemplate.query("SELECT a.p_key_id from m_wbs_tree_contract a LEFT JOIN m_wbs_tree_private b on b.p_key_id = a.is_type_private_pid " +
-                            "where a.is_deleted = 0 and (b.p_key_id is null or (b.is_deleted = 0 and b.is_link_table = 2 and b.type = 10 )) and a.p_key_id in ( " + queryIds +")", new SingleColumnRowMapper<>(Long.class));
-                    if (!ids.isEmpty()) {
-                        this.wbsTreeContractMapper.deleteLogicByIds(ids);
+                if(StringUtils.isNotEmpty(tec.getIsRemoveForSubTab())&&"1".equals(tec.getIsRemoveForSubTab())){
+                    List<NodeTable> subTabList = tec.getTableAll().stream().filter(e -> e.getNodeName().contains("附表") && (e.getTableType() == 1 || e.getTableType() == 5)).collect(Collectors.toList());
+                    if(!subTabList.isEmpty()){
+                        String queryIds = subTabList.stream().map(e -> e.getPKeyId() + "").collect(Collectors.joining(","));
+                        // 如果不是系统自动生成的附表,则不删除。
+                        List<Long> ids = jdbcTemplate.query("SELECT a.p_key_id from m_wbs_tree_contract a LEFT JOIN m_wbs_tree_private b on b.p_key_id = a.is_type_private_pid " +
+                                "where a.is_deleted = 0 and (b.p_key_id is null or (b.is_deleted = 0 and b.is_link_table = 2 and b.type = 10 )) and a.p_key_id in ( " + queryIds +")", new SingleColumnRowMapper<>(Long.class));
+                        if (!ids.isEmpty()) {
+                            this.wbsTreeContractMapper.deleteLogicByIds(ids);
+                        }
                     }
                 }
             }

+ 48 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java

@@ -260,14 +260,58 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
                     //如果有部分节点优先部分
                     List<WbsParam> collect1 = result.stream().filter(o -> o.getNameType() == 2).collect(Collectors.toList());
                     if(collect1.size()>0){
-                        WbsParam param = collect1.get(0);
-                        return R.data(Arrays.asList(param.getV().split("-")));
+                        //如果节点的资料类型不为null
+                        if(contract.getMajorDataType()!=null){
+                            //如果与配置的文件题名资料类型一致
+                            List<WbsParam> data = collect1.stream().filter(o -> StringUtils.isNotEmpty(o.getRemark()) && o.getRemark().contains(contract.getMajorDataType() + "")).collect(Collectors.toList());
+                            if(data.size()>0){
+                                WbsParam param = data.get(0);
+                                return R.data(Arrays.asList(param.getV().split("-")));
+                            }else {
+                                //与配置的文件题名类型不一致,就使用全部类型的文件题名规则
+                                List<WbsParam> data1 = collect1.stream().filter(o -> o.getRemark() != null && o.getRemark().equals("0")).collect(Collectors.toList());
+                                if(data1.size()>0){
+                                    WbsParam param = data1.get(0);
+                                    return R.data(Arrays.asList(param.getV().split("-")));
+                                }
+                            }
+                        }else {
+                            //如果节点的资料类型为null
+                            List<WbsParam> data1 = collect1.stream().filter(o -> o.getRemark() != null && o.getRemark().equals("0")).collect(Collectors.toList());
+                            //使用全部类型的文件题名规则
+                            if(data1.size()>0){
+                                WbsParam param = data1.get(0);
+                                return R.data(Arrays.asList(param.getV().split("-")));
+                            }
+                        }
                     }
                     //没有部分节点用所有节点
                     List<WbsParam> collect2 = result.stream().filter(o -> o.getNameType() == 1).collect(Collectors.toList());
                     if(collect2.size()>0){
-                        WbsParam param = collect2.get(0);
-                        return R.data(Arrays.asList(param.getV().split("-")));
+                        //如果节点的资料类型不为null
+                        if(contract.getMajorDataType()!=null){
+                            //如果与配置的文件题名资料类型一致
+                            List<WbsParam> data = collect2.stream().filter(o -> StringUtils.isNotEmpty(o.getRemark()) && o.getRemark().contains(contract.getMajorDataType() + "")).collect(Collectors.toList());
+                            if(data.size()>0){
+                                WbsParam param = data.get(0);
+                                return R.data(Arrays.asList(param.getV().split("-")));
+                            }else {
+                                //与配置的文件题名类型不一致,就使用全部类型的文件题名规则
+                                List<WbsParam> data1 = collect2.stream().filter(o -> o.getRemark() != null && o.getRemark().equals("0")).collect(Collectors.toList());
+                                if(data1.size()>0){
+                                    WbsParam param = data1.get(0);
+                                    return R.data(Arrays.asList(param.getV().split("-")));
+                                }
+                            }
+                        }else {
+                            //如果节点的资料类型为null
+                            List<WbsParam> data1 = collect2.stream().filter(o -> o.getRemark() != null && o.getRemark().equals("0")).collect(Collectors.toList());
+                            //使用全部类型的文件题名规则
+                            if(data1.size()>0){
+                                WbsParam param = data1.get(0);
+                                return R.data(Arrays.asList(param.getV().split("-")));
+                            }
+                        }
                     }
                 }
             }

+ 3 - 3
blade-service/blade-system/src/main/java/org/springblade/system/mapper/DictBizMapper.xml

@@ -40,9 +40,9 @@
         <if test="notRoot != null and notRoot != ''">
             and parent_id > 0
         </if>
-        <if test="tenantId != null and tenantId != ''">
-            and tenant_id = #{tenantId}
-        </if>
+<!--        <if test="tenantId != null and tenantId != ''">-->
+<!--            and tenant_id = #{tenantId}-->
+<!--        </if>-->
         and is_sealed = 0 and is_deleted = 0
         order by sort
     </select>