Przeglądaj źródła

元数据捕获,解决冲突

“zhifk” 2 lat temu
rodzic
commit
7deec93618
15 zmienionych plików z 114 dodań i 29 usunięć
  1. 6 2
      blade-common/src/main/java/org/springblade/common/utils/ForestNodeMergerEx.java
  2. 3 0
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchivesAuto.java
  3. 9 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java
  4. 6 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java
  5. 18 2
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml
  6. 3 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java
  7. 10 2
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  8. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java
  9. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java
  10. 11 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml
  11. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeContractService.java
  12. 13 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArTreeContractInitServiceImpl.java
  13. 27 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java
  14. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java
  15. 3 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

+ 6 - 2
blade-common/src/main/java/org/springblade/common/utils/ForestNodeMergerEx.java

@@ -215,20 +215,24 @@ public class ForestNodeMergerEx {
         }
     }
 
-    public static <T extends INodeEx<T>> void InitTreeSort(T tree, String treeSort) {
+    public static <T extends INodeEx<T>> void InitTreeSort(T tree, String treeSort,int idx) {
 
         Integer localSort = 100;
         if (tree.getSort() != null ) {
             localSort =  tree.getSort() + 100;
+        }else {
+            localSort+= idx;
         }
 
         String localTreeSort = treeSort + localSort ;
         tree.setTreeSort(localTreeSort);
 
         List<T> childrens = tree.getChildren();
+        int index = 1;
         if (childrens!= null) {
             for (T child :childrens) {
-                InitTreeSort(child,localTreeSort);
+                InitTreeSort(child,localTreeSort,index);
+                index++;
             }
         }
     }

+ 3 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchivesAuto.java

@@ -157,6 +157,9 @@ public class ArchivesAuto extends BaseEntity {
 
 	private Integer autoFileSort;
 
+	//是否已销毁
+	private Integer isDestroy;
+
 	/**
 	 * 立卷单位
 	 * **/

+ 9 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -440,5 +440,14 @@ public class ArchivesAutoController extends BladeController {
 		return R.status(archivesAutoService.updateBatchById(JSONArray.parseArray(JSONObject.toJSONString(archivesAutoVo.getList()), ArchivesAuto.class)));
 	}
 
+	/**
+	 * 获取节点载体类别集合
+	 */
+	@GetMapping("/getCarrierTypeByDict")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "获取节点载体类别集合", notes = "获取节点载体类别集合")
+	public R getCarrierTypeByDict(){
+		return R.data(archivesAutoService.getCarrierTypeByDict());
+	}
 
 }

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

@@ -23,6 +23,8 @@ import org.springblade.archive.entity.ArchivesAuto;
 import org.springblade.archive.vo.ArchivesAutoVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.system.entity.DictBiz;
+
 import java.util.List;
 import java.util.Map;
 
@@ -102,4 +104,8 @@ public interface ArchivesAutoMapper extends BaseMapper<ArchivesAuto> {
 
 
 	Integer splitFiles(@Param("ids") List<Long> ids);
+
+	List<DictBiz> getCarrierTypeByDict();
+
+	void batchDestroyByIds(@Param("ids")List<String> ids);
 }

+ 18 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -273,7 +273,7 @@
     <select id="getAllArchiveByContractType" resultType="org.springblade.archive.vo.ArchivesAutoVO">
         SELECT uaa.id,matc.tree_code as 'contractType'
         FROM m_archive_tree_contract matc left join u_archives_auto uaa on uaa.node_id =matc.id
-        WHERE uaa.project_id =#{projectId} and uaa.is_deleted = #{type}
+        WHERE uaa.project_id =#{projectId} and uaa.is_deleted = #{type} and uaa.is_destroy = #{type}
     </select>
     <select id="getAllArchiveAgeByContractType" resultType="java.util.Map">
         SELECT CASE uaa.storage_time WHEN '1' THEN '10年' WHEN '2' THEN '30年' ELSE '永久' END as name,COUNT(uaa.storage_time) as value
@@ -289,7 +289,13 @@
                 where project_id = #{vo.projectId} and ancestors like concat('%', #{vo.nodeId}, '%') or id = #{vo.nodeId}
             ) matc
         left join u_archives_auto uaa on matc.id = uaa.node_id
-        where uaa.is_deleted = #{vo.isDeleted}
+        where
+        <if test="vo.isDeleted == 0">
+            uaa.is_deleted = 0 and uaa.is_destroy = 0
+        </if>
+        <if test="vo.isDeleted == 1">
+            uaa.is_deleted = 1 and uaa.is_destroy = 1
+        </if>
         <if test="vo.storageTime != null and vo.storageTime != ''">
             and uaa.storage_time = #{vo.storageTime}
         </if>
@@ -302,6 +308,9 @@
         FROM  u_archives_auto WHERE project_id =#{projectId} AND filing_unit is not NULL
         GROUP BY filing_unit
     </select>
+    <select id="getCarrierTypeByDict" resultType="org.springblade.system.entity.DictBiz">
+        SELECT * FROM blade_dict_biz WHERE code = 'storage_type' AND  parent_id > 0 AND tenant_id = 000000
+    </select>
 
 
     <update id="splitFiles" >
@@ -311,6 +320,13 @@
             #{id}
         </foreach>
     </update>
+    <update id="batchDestroyByIds">
+        update u_archives_auto set is_deleted = 1 ,is_destroy = 1 where
+        id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
 
 
 </mapper>

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

@@ -21,6 +21,7 @@ import org.springblade.archive.vo.ArchivesAutoVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.system.entity.DictBiz;
 
 import java.util.List;
 import java.util.Map;
@@ -75,4 +76,6 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
 	void refreshFileNumberNoSlipt(Long projectId,Long contractId,Long nodeId);
 
 	void test();
+
+    List<DictBiz> getCarrierTypeByDict();
 }

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

@@ -85,6 +85,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	private ArchiveTreeContractClient archiveTreeContractClient;
 	private ContractClient contractClient;
 	private ProjectClient projectClient;
+	private final ArchivesAutoMapper autoMapper;
 
 	@Autowired
 	private ExecutorService executorService;
@@ -119,6 +120,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		if (StringUtils.isNotBlank(vo.getMonth())) {
 			vo.setMonths(Arrays.asList(vo.getMonth().split(",")));
 		}
+		if (StringUtils.isNotBlank(vo.getCarrierType())) {
+			vo.setCarrierTypes(Arrays.asList(vo.getCarrierType().split(",")));
+		}
 		List<ArchivesAutoVO> archivesAutos = null;
 		if (StringUtils.isNotBlank(vo.getNodeIds())){
 			vo.setNodeIdArray(Arrays.asList(vo.getNodeIds().split(",")));
@@ -362,8 +366,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			List<Long> collect = files.stream().map(file -> file.getId()).collect(Collectors.toList());
 			archiveFileClient.batchDeleteArchiveFile(collect);
 		}
-		//删除案卷
-		baseMapper.deleteBatchIds(list);
+		//销毁案卷
+		baseMapper.batchDestroyByIds(list);
 	}
 
 
@@ -1458,6 +1462,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		System.out.println();
 	}
 
+	@Override
+	public List<DictBiz> getCarrierTypeByDict() {
+		return autoMapper.getCarrierTypeByDict();
+	}
 
 
 }

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

@@ -343,8 +343,8 @@ public class ArchiveTreeContractController extends BladeController {
 	 */
 	@GetMapping("getArchiveTreeByNodeType")
 	@ApiOperation(value = "根据节点类型获取档案,档案查询选择目录", notes = "传入项目id,节点类型")
-	public R getArchiveTreeByNodeType(Long projectId,Long nodeType){
-		return R.data(archiveTreeContractService.getArchiveTreeByNodeType(projectId,nodeType));
+	public R getArchiveTreeByNodeType(Long projectId,Long contractId,Integer nodeType){
+		return R.data(archiveTreeContractService.getArchiveTreeByNodeType(projectId,contractId,nodeType));
 	}
 	/**
 	 * 根据父节点获取子节点集合

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java

@@ -88,4 +88,5 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
 	List<ArchiveTreeContract> getAuthCodeList(@Param("id") String id,@Param("authCode") String authCode,@Param("contractId") Long contractId);
 
 	List<ArchiveTreeContract> getArchiveTreeContractListByIds(@Param("idsList") List<String> idsList);
+    String getUserRoleName(@Param("projectId")Long projectId,@Param("contractId") Long contractId,@Param("userId") Long userId);
 }

+ 11 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -224,7 +224,7 @@
         <if test="code!=null and code!=''">
             AND (d.tree_code = #{code} or d.tree_code = #{contractId} or d.parent_id = 0)
         </if>
-        ORDER BY d.sort
+        ORDER BY d.tree_sort, d.sort
     </select>
 
     <select id="tree2" resultMap="ArchiveTreeContractVO2ResultMap">
@@ -358,12 +358,12 @@
             matc1.node_name as name,
             (SELECT COUNT(*)
              FROM u_archives_auto uaa1
-             WHERE  uaa1.is_deleted =0 and (uaa1.node_id in
+             WHERE  uaa1.is_destroy =0 and uaa1.is_deleted =0 and (uaa1.node_id in
                  (select id from m_archive_tree_contract matc2 WHERE matc2.project_id = #{projectId} and matc2.ancestors like CONCAT('%',matc1.id,'%')) or uaa1.node_id = matc1.id)
             ) as 'auto',
             (SELECT COUNT(*)
              FROM u_archives_auto uaa1
-             WHERE  uaa1.is_deleted =1 and (uaa1.node_id in
+             WHERE  uaa1.is_destroy =1 and uaa1.is_deleted =1 and (uaa1.node_id in
                 (select id from m_archive_tree_contract matc2 WHERE matc2.project_id = #{projectId} and matc2.ancestors like CONCAT('%',matc1.id,'%')) or uaa1.node_id = matc1.id)
             ) as 'deleted',
             if((SELECT COUNT(*) from m_archive_tree_contract matc WHERE parent_id = matc1.id)=0,false,true) as hasChildren
@@ -420,4 +420,12 @@
         </foreach>
         ORDER BY d.ancestors
     </select>
+    <select id="getUserRoleName" resultType="java.lang.String">
+        SELECT br.role_name
+        FROM blade_role br
+        WHERE br.id = (
+            SELECT role_id  FROM m_project_assignment_user
+            WHERE project_id = #{projectId} AND contract_id = #{contractId} AND user_id = #{userId}
+        )
+    </select>
 </mapper>

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

@@ -96,7 +96,7 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
 
 	List<Map<String,Object>> getArchiveTreeAndArchiveCount(Long projectId,Long nodeId);
 
-    List<ArchiveTreeContractVO3> getArchiveTreeByNodeType(Long projectId, Long nodeType);
+    List<ArchiveTreeContractVO3> getArchiveTreeByNodeType(Long projectId, Long contractId,Integer nodeType);
 
 	List<ArchiveTreeContractVO3> getChildrenNodeByNodeId(Long nodeId);
 	String getAuthCode(Long contractId);

+ 13 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArTreeContractInitServiceImpl.java

@@ -238,7 +238,7 @@ public class ArTreeContractInitServiceImpl {
 
         InitAncestors(trees.get(0),"0");
 
-        InitTreeSort(trees.get(0), "");
+        InitTreeSort(trees.get(0), "",0);
 
         archiveAutoRuleSync.syncArchiveTreeContractList(vo2Map,proVo2Trees);
 
@@ -268,14 +268,22 @@ public class ArTreeContractInitServiceImpl {
      *
      * @param tree
      */
-    public void InitTreeSort(ArchiveTreeContractVO2 tree, String treeSort) {
-        String localTreeSort = treeSort + tree.sortNum() ;
+    public void InitTreeSort(ArchiveTreeContractVO2 tree, String treeSort,int idx) {
+        Integer localSort = 100;
+        if (tree.getSort() != null ) {
+            localSort =  tree.getSort() + 100;
+        }else {
+            localSort+= idx;
+        }
+        String localTreeSort = treeSort + localSort ;
         tree.setTreeSort(localTreeSort);
 
         List<ArchiveTreeContractVO2> childrens = tree.getChildren();
+        int index = 1;
         if (childrens!= null) {
             for (ArchiveTreeContractVO2 child :childrens) {
-                InitTreeSort(child,localTreeSort);
+                InitTreeSort(child,localTreeSort,index);
+                index++;
             }
         }
     }
@@ -645,6 +653,7 @@ public class ArTreeContractInitServiceImpl {
             treeContractVO2.setArchiveAutoType(archiveTreeContract.getArchiveAutoType());
             treeContractVO2.setArchiveAutoGroupId(archiveTreeContract.getArchiveAutoGroupId());
             treeContractVO2.setArchiveAutoGroupSelect(archiveTreeContract.getArchiveAutoGroupSelect());
+            treeContractVO2.setExtType(archiveTreeContract.getExtType());
             vos.add(treeContractVO2);
             vo2Map.put(treeContractVO2.getId(),treeContractVO2);
         }

+ 27 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -727,7 +727,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		}
 		ArchiveTreeContractVO2  tree = trees.get(0);
 
-		ForestNodeMergerEx.InitTreeSort(tree,"");
+		ForestNodeMergerEx.InitTreeSort(tree,"",0);
 
 		List<ArchiveTreeContractVO2> changeList = new ArrayList<>();
 
@@ -871,15 +871,33 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	}
 
 	@Override
-	public List<ArchiveTreeContractVO3> getArchiveTreeByNodeType(Long projectId, Long nodeType) {
-		if (nodeType == 1){
-			return baseMapper.getArchiveTreeByNodeType2(projectId);
-		}else if (nodeType == 2){
-			return baseMapper.getArchiveTreeByNodeType(projectId,"C");
-		}else if (nodeType == 3){
-			return baseMapper.getArchiveTreeByNodeType(projectId,"S");
+	public List<ArchiveTreeContractVO3> getArchiveTreeByNodeType(Long projectId, Long contractId,Integer nodeType) {
+		//获取合同段类型
+		ContractInfo contractInfo = contractInfoService.selectById(contractId + "");
+		Integer contractType = contractInfo.getContractType();
+		//根据用户在当前合同段的权限,判断返回
+		BladeUser user = AuthUtil.getUser();
+		String name = baseMapper.getUserRoleName(projectId,contractId,user.getUserId());
+		if (name.contains("超级管理员") || contractType == 3) {
+			//
+			if (nodeType == 1) {
+				return baseMapper.getArchiveTreeByNodeType2(projectId);
+			} else if (nodeType == 2) {
+				return baseMapper.getArchiveTreeByNodeType(projectId, "C");
+			} else if (nodeType == 3) {
+				return baseMapper.getArchiveTreeByNodeType(projectId, "S");
+			} else {
+				return null;
+			}
 		}else {
-			return null;
+			//只返回对应类型的
+			if (contractType == 1 && nodeType == 2){
+					return baseMapper.getArchiveTreeByNodeType(projectId, "C");
+			} else if (contractType == 2 && nodeType == 3) {
+					return baseMapper.getArchiveTreeByNodeType(projectId, "S");
+			}else {
+				return null;
+			}
 		}
 	}
 

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

@@ -114,7 +114,7 @@ public class ArchiveTreeContractSyncImpl {
         //排序
         ForestNodeMergerEx.InitAncestors(tree,"0");
 
-        ForestNodeMergerEx.InitTreeSort(tree, "");
+        ForestNodeMergerEx.InitTreeSort(tree, "",0);
 
         //更新自动组卷节点
         archiveAutoRuleSync.syncArchiveTreeContractList(vo2Map,proVo2Trees);

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

@@ -755,7 +755,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             /*检验单附表处理*/
             List<FormData> inspectionList = new ArrayList<>();
             /*0检验表1评定表*/
-            this.tec.getTableAll().stream().filter(e -> e.getTableType().equals(1) || e.getNodeName().contains("评定表")).forEach(e -> {
+            this.tec.getTableAll().stream().filter(e -> e.getTableType().equals(1) ||e.getTableType().equals(5)).forEach(e -> {
                 /*获取所有挂在表里的元素映射关系*/
                 this.tec.getKeyMappers().stream().filter(p -> p.getPkId().equals(e.getPKeyId())).forEach(k -> {
                     /*元素长度筛选超页的元素*/
@@ -769,7 +769,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 /*检查是否存在附表,不存在挂载*/
                 List<NodeTable> subTabList = this.tec.getTableAll().stream().filter(e -> e.getNodeName().contains("附表")).collect(Collectors.toList());
                 if (subTabList.size() == 0) {
-                    boolean pd=tec.getTableAll().stream().anyMatch(e->e.getNodeName().contains("评定表"));
+                    boolean pd=tec.getTableAll().stream().anyMatch(e->e.getTableType().equals(5));
                     WbsTreePrivate sub = wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().and(e->e.eq(WbsTreePrivate::getNodeName, pd?"质量检验评定表(附表)":"质量检验表(附表)").or().eq(WbsTreePrivate::getFullName, pd?"质量检验评定表(附表)":"质量检验表(附表)")).eq(WbsTreePrivate::getProjectId, tec.getProjectId()).eq(WbsTreePrivate::getIsLinkTable,2));
                     if (sub == null) {
                         this.tec.getLog().append("该项目没有挂有附表信息");
@@ -779,7 +779,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                         WbsTreeContract wtc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getParentId, one.getParentId()).eq(WbsTreeContract::getContractId,tec.getContractId()).eq(WbsTreeContract::getWbsId, one.getWbsId()).and(e->e.eq(WbsTreeContract::getNodeName, pd?"质量检验评定表(附表)":"质量检验表(附表)").or().eq(WbsTreeContract::getFullName, pd?"质量检验评定表(附表)":"质量检验表(附表)")));
                         if (wtc != null) {
                             /*附表的顺序在检验单或者评定表之后*/
-                            int sort=this.tec.getTableAll().stream().filter(e ->e.getTableType().equals(1) || e.getNodeName().contains("评定表")).map(NodeTable::getSort).max(Integer::compareTo).orElse(30);
+                            int sort=this.tec.getTableAll().stream().filter(e ->e.getTableType().equals(1) || e.getTableType().equals(5)).map(NodeTable::getSort).max(Integer::compareTo).orElse(30);
                             this.wbsTreeContractService.update(Wrappers.<WbsTreeContract>lambdaUpdate()
                                     .set(WbsTreeContract::getSort,sort).set(WbsTreeContract::getContractType,-1).set(WbsTreeContract::getAncestors,one.getAncestors())
                                     .set(WbsTreeContract::getIsCopeTab,2)