1
0
Просмотр исходного кода

用地报批支持多个节点数据

chenendian 2 месяцев назад
Родитель
Сommit
1e6d6320f4

+ 2 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/NodeLandMapper.java

@@ -57,6 +57,8 @@ public interface NodeLandMapper {
 
     Map<String, String> selectGeomContainsNode(@Param("detailsId")String detailsId);
 
+    List<Map<String, String>> selectGeomIntersectsNode(@Param("detailsId")String detailsId);
+
     List<Map<String, Object>> selectGeomDetailsByGeomDbId( @Param("geomDbId")String geomDbId);
 
     List<NodeLand> selectByGeom(@Param("ewkt") String ewkt);

+ 2 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/ProjectWorkflowMapper.java

@@ -73,6 +73,8 @@ public interface ProjectWorkflowMapper {
 
     void deleteById(String id);
 
+    void deleteByProjectId(@Param("projectId") String projectId,@Param("nodeId") String nodeId,@Param("nodeTableName") String nodeTableName);
+
     Map<String,Object> getCurrentNode(@Param("id") String id, @Param("projectId") String projectId, @Param("tableName") String tableName);
 
     List<Map<String,String>> selectTableColumnComments(@Param("tableName") String tableName);

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/NodeLandService.java

@@ -55,6 +55,6 @@ public interface NodeLandService {
 
     Map<String, String> getDjzqContainsNodeList(String geomDetailsId);
 
-
+    List<Map<String,String>> selectGeomIntersectsNode(String geomDetailsId);
 
 }

+ 11 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/NodeLandImpl.java

@@ -209,6 +209,17 @@ public class NodeLandImpl implements NodeLandService {
         return nodeLandMapper.selectGeomContainsNode(geomDetailsId);
     }
 
+
+
+
+    @Override
+    public List<Map<String,String>> selectGeomIntersectsNode(String geomDetailsId) {
+        return nodeLandMapper.selectGeomIntersectsNode(geomDetailsId);
+    }
+
+
+
+
     /**
      * 存在一个节点多个地块,一次上传多个地块
      * @param geomDbId

+ 16 - 33
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/TdgyImpl.java

@@ -173,47 +173,30 @@ public class TdgyImpl implements TdgyService {
             Map <String, String> resultMap = new HashMap<>();
             for (Map<String, String> geomDetailsMap : geomDetailsList) {
                 String geomDetailsId = geomDetailsMap.get("id");
-                //校验图斑是否包含批次报批节点(重点)
-                Map<String, String> geomDetailsAndNodeMap = nodeLandService.selectGeomContainsNode(geomDetailsId);
-                if(!MapUtils.isEmpty(geomDetailsAndNodeMap)){
-                    String nodeId = geomDetailsAndNodeMap.get("node_id");
-                    resultMap.put(nodeId, geomDetailsAndNodeMap.get("id"));
+                //校验图斑是否与批次报批节点有交集支持多年份多批次的包含(重点)
+                List<Map<String, String>> geomDetailsAndNodeList = nodeLandService.selectGeomIntersectsNode(geomDetailsId);
+                if(CollectionUtils.isNotEmpty(geomDetailsAndNodeList)){
+                    for(Map<String, String> geomDetailsAndNodeMap : geomDetailsAndNodeList){
+                        String nodeId = geomDetailsAndNodeMap.get("node_id");
+                        resultMap.put(nodeId, geomDetailsAndNodeMap.get("id"));
+                    }
                 }
             }
             if(resultMap.isEmpty()){
                 throw new ServiceException("当前地块未被包含审核过的批次报批空间数据中,请检查后再上链!");
             }
-            if(resultMap.size()>1){
-                throw new ServiceException("当前地块未包含多个地块,报批数据不在同一批次!");
-            }
-
-
-
-
+//            if(resultMap.size()>1){
+//                throw new ServiceException("当前地块未包含多个地块,报批数据不在同一批次!");
+//            }
             String tableName ="t_ydbp_data";
             //获取到对应的批次报批节点,插入到流程表中
-            String nodeId = resultMap.keySet().stream().findFirst().get();
             Workflow workflow = workflowMapper.selectByProjectTypeAndTableName(Integer.valueOf(ProjectType.BATCH.getCode()), tableName);
-            //先检查是否存在,避免重复上链插入多次
-            ProjectWorkflow projectWorkflow = new ProjectWorkflow();
-            List<ProjectWorkflow> projectWorkflowList = projectWorkflowMapper.selectByProjectId(projectId);
-            if(!CollectionUtils.isEmpty(projectWorkflowList)){
-                Optional<ProjectWorkflow>  result = projectWorkflowList.stream().filter(o->o.getNodeTableName().equals(tableName)).findFirst();
-                if(result.isPresent()){
-                    projectWorkflow = result.get();
-                }
-            }
-
-            //todo 这里需要调用附件信息全文检索方法维护列表附件名称数据
-            if(Objects.nonNull(projectWorkflow.getId())){
-                projectWorkflow.setParentId(id);
-                //projectWorkflow.setWorkflowId(workflow.getId());
-                projectWorkflow.setProjectId(projectId);
-                projectWorkflow.setNodeId(nodeId);
-                //projectWorkflow.setNodeTableName(workflow.getTableName());
-                //projectWorkflow.setWorkflowName(workflow.getName());
-                projectWorkflowMapper.update(projectWorkflow);
-            }else {
+            Set<String> nodeIdSet =  new HashSet<>(resultMap.keySet());
+            //首先删除当前项目的数据
+            projectWorkflowMapper.deleteByProjectId(projectId,null,workflow.getTableName());
+            for(String nodeId : nodeIdSet){
+                //先检查是否存在,避免重复上链插入多次
+                ProjectWorkflow projectWorkflow = new ProjectWorkflow();
                 //设置流程主键
                 projectWorkflow.generateId();
                 projectWorkflow.setParentId(id);

+ 17 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/NodeLandMapper.xml

@@ -137,6 +137,23 @@
                 limit 1
     </select>
 
+    <select id="selectGeomIntersectsNode" parameterType="String" resultType="map">
+        SELECT  DISTINCT ON (node.node_id)
+            geom.id , node.node_id   FROM  "t_geom_db_details"  geom
+            LEFT JOIN "public"."t_geom_db"  upload   on geom.upload_id=upload.id
+            LEFT JOIN "public"."t_node_land" node    on  node.geom_db_id=upload.id
+            LEFT JOIN  "public"."t_ydbp_data" ydbp   on  node.node_id=ydbp.id
+        where ydbp.has_onchain=true
+          AND  public.ST_Intersects(geom.geom, (SELECT geom FROM "t_geom_db_details" WHERE  id = #{detailsId) )
+        order by node.node_id,  ydbp.created_at desc
+    </select>
+
+
+
+
+
+
+
 
     <!--  根据nodeId,查询出当前具体的图斑ID -->
     <select id="selectGeomDetailsByGeomDbId" parameterType="String" resultType="java.util.Map">

+ 13 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/ProjectWorkflowMapper.xml

@@ -240,5 +240,18 @@
         WHERE id =   #{id}
     </delete>
 
+    <delete id="deleteByProjectId">
+        DELETE FROM t_project_workflow
+        <where>
+            project_id = #{projectId}
+            <if test="projectId != null and projectId != ''">
+                AND project_id = #{projectId}
+            </if>
+            <if test="nodeTableName != null and nodeTableName != ''">
+                AND node_table_name = #{nodeTableName}
+            </if>
+        </where>
+    </delete>
+
 
 </mapper>