1
0
فهرست منبع

上链逻辑调整批次报批数据

chenendian 3 روز پیش
والد
کامیت
8491b4103a

+ 6 - 3
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/TdgyController.java

@@ -120,17 +120,20 @@ public class TdgyController extends BaseController {
             if (StringUtils.isBlank(id)) {
                 return R.fail("nodeId不能为空");
             }
+            if (StringUtils.isBlank(projectId)) {
+                return R.fail("projectId不能为空");
+            }
             NodeLand nodeLand = nodeLandService.getNodeLandByNodeId(id);
             if(Objects.isNull(nodeLand)){
                 return R.fail(502,"数据空间信息不存在,请检查先导入空间数据");
             }
-
-            tdgyService.updateHasOnchain(id, hasOnchain);
+            tdgyService.updateHasOnchain(id,projectId, hasOnchain);
             // 更新项目表的上链数量
             projectService.countOnChinaNum(projectId);
             return R.ok();
         } catch (Exception e) {
-            return R.fail(e.getMessage());
+            return R.fail(502,e.getMessage());
+            //return R.fail(e.getMessage());
         }
     }
 }

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

@@ -54,4 +54,10 @@ public interface NodeLandMapper {
     NodeLand selectByNodeId(@Param("nodeId")String nodeId);
 
 
+    List<Map<String, String>> selectTGeomDbDetailsByNodeId(@Param("nodeId")String nodeId);
+
+    Map<String, String> selectGeomContainsNode(@Param("detailsId")String detailsId);
+
+
+
 }

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

@@ -47,6 +47,11 @@ public interface NodeLandService {
 
     NodeLand getCurrentNodeLandByNodeId(String nodeId);
 
+    List<Map<String,String>> selectTGeomDbDetailsByNodeId(String nodeId);
+
+    Map<String,String> selectGeomContainsNode(String geomDetailsId);
+
+
 
 
 }

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

@@ -53,7 +53,8 @@ public interface TdgyService {
      * 更新土地供应的上链状态
      *
      * @param id         土地供应ID
+     * @param projectId  项目id
      * @param hasOnchain 是否已上链
      */
-    void updateHasOnchain(String id, Boolean hasOnchain);
+    void updateHasOnchain(String id,String projectId ,Boolean hasOnchain);
 }

+ 12 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/NodeLandImpl.java

@@ -178,7 +178,6 @@ public class NodeLandImpl implements NodeLandService {
     }
 
 
-
     @Override
     public NodeLand getCurrentNodeLandByNodeId(String nodeId) {
         // 获取地块ID
@@ -187,5 +186,17 @@ public class NodeLandImpl implements NodeLandService {
     }
 
 
+    @Override
+    public List<Map<String,String>> selectTGeomDbDetailsByNodeId(String nodeId) {
+        // 获取地块 空间数据ID
+        return nodeLandMapper.selectTGeomDbDetailsByNodeId(nodeId);
+    }
+
+
+    @Override
+    public Map<String, String> selectGeomContainsNode(String geomDetailsId) {
+        return nodeLandMapper.selectGeomContainsNode(geomDetailsId);
+    }
+
 
 }

+ 46 - 3
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/TdgyImpl.java

@@ -5,10 +5,13 @@ import com.siwei.apply.domain.Tdgy;
 import com.siwei.apply.domain.res.TdgyRes;
 import com.siwei.apply.domain.vo.TdgyUpdateVo;
 import com.siwei.apply.domain.vo.TdgyVo;
+import com.siwei.apply.enums.ProjectType;
 import com.siwei.apply.mapper.ProjectMapper;
 import com.siwei.apply.mapper.TdgyMapper;
 import com.siwei.apply.service.LandOneCodeService;
+import com.siwei.apply.service.NodeLandService;
 import com.siwei.apply.service.TdgyService;
+import com.siwei.common.core.exception.ServiceException;
 import com.siwei.common.core.utils.bean.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -16,8 +19,7 @@ import com.siwei.apply.domain.LandType;
 import com.siwei.apply.domain.res.LandTypeTreeRes;
 import com.siwei.apply.mapper.LandTypeMapper;
 
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.siwei.apply.common.Common.UserId;
@@ -48,6 +50,10 @@ public class TdgyImpl implements TdgyService {
     @Autowired
     private LandOneCodeService landOneCodeService;
 
+    @Autowired
+    private NodeLandService nodeLandService;
+
+
 
     @Override
     public Boolean isExit(String projectId) {
@@ -146,8 +152,45 @@ public class TdgyImpl implements TdgyService {
         return roots;
     }
 
+
     @Override
-    public void updateHasOnchain(String id, Boolean hasOnchain) {
+    public void updateHasOnchain(String id,String projectId, Boolean hasOnchain) throws RuntimeException {
+        //这里区分不同类型,如果是批次报批,需要检查地块包含,然后再插入一条数据到流程表,并且,手动增加批次报批数据节点。
+        //todo 分成三步骤
+        // 1.校验是否存在地块。
+        // 2.插入土地供应节点到流程表。
+        // 3.调用赋码服务,增加赋码数据。
+        Integer pType = projectMapper.getProjectTypeById(projectId);
+        if(ProjectType.BATCH.getCode().equals(String.valueOf(pType))){
+            //这里检验空间图形是否包含批次数据
+            List<Map<String, String>> geomDetailsList= nodeLandService.selectTGeomDbDetailsByNodeId(id);
+            Map <String, String> resultMap = new HashMap<>();
+            for (Map<String, String> geomDetailsMap : geomDetailsList) {
+                String geomDetailsId = geomDetailsMap.get("id");
+                Map<String, String> geomDetailsAndNodeMap= nodeLandService.selectGeomContainsNode(geomDetailsId);
+                String nodeId = geomDetailsAndNodeMap.get("nodeId");
+                resultMap.put(nodeId, geomDetailsAndNodeMap.get("id"));
+            }
+            if(resultMap.isEmpty()){
+                throw new ServiceException("当前地块未包含审核过的批次报批空间信息,请检查后再上链!");
+            }
+            if(resultMap.size()>1){
+                throw new ServiceException("当前地块未包含多个地块,报批数据不在同一批次!");
+            }
+            //获取到对应的批次报批节点,插入到流程表中
+            String nodeId = String.valueOf(resultMap.keySet().stream().findFirst());
+            Workflow workflow = workflowMapper.selectByProjectTypeAndTableName(Integer.valueOf(ProjectType.BATCH.getCode()), "t_ydbp_data");
+            ProjectWorkflow projectWorkflow = new ProjectWorkflow();
+            //设置流程主键
+            projectWorkflow.generateId();
+            projectWorkflow.setParentId(id);
+            projectWorkflow.setWorkflowId(workflow.getId());
+            projectWorkflow.setProjectId(projectId);
+            projectWorkflow.setNodeId(nodeId);
+            projectWorkflow.setNodeTableName(workflow.getTableName());
+            projectWorkflow.setWorkflowName(workflow.getName());
+            projectWorkflowMapper.add(projectWorkflow);
+        }
         tdgyMapper.updateHasOnchain(id, hasOnchain);
     }
 }

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

@@ -92,4 +92,21 @@
         LIMIT 1
     </select>
 
+
+    <select id="selectTGeomDbDetailsByNodeId" parameterType="String" resultType="java.util.List">
+        select  details.id, public.st_asewkt(details.geom) AS  geom, details.upload_id, details.geom_json, details.sort, details.geom_area
+        from t_geom_db_details  details
+                 INNER JOIN   t_node_land node   on  node.geom_db_id=details.upload_id
+        WHERE node.node_id =#{nodeId}
+    </select>
+
+    <select id="selectGeomContainsNode" parameterType="String" resultType="map">
+        SELECT  geom.* , node.node_id as nodeId  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  st_contains(geom.geom, (SELECT geom FROM "t_geom_db_details" WHERE id = #{detailsId}) )
+    </select>
+
+
 </mapper>

+ 9 - 0
siwei-modules/siwei-spatial/src/main/java/com/siwei/spatial/mapper/file/TGeomDbDetailsMapper.java

@@ -22,6 +22,15 @@ public interface TGeomDbDetailsMapper
      */
     public TGeomDbDetails selectTGeomDbDetailsById(String id);
 
+    /**
+     * 根据nodeId查询空间入库存储空间详情
+     *
+     * @param nodeId 节点ID
+     * @return 空间入库存储空间详情
+     */
+    TGeomDbDetails selectTGeomDbDetailsByNodeId(String nodeId);
+
+
     /**
      * 查询空间入库存储空间详情列表
      * 

+ 3 - 0
siwei-modules/siwei-spatial/src/main/java/com/siwei/spatial/service/file/ITGeomDbDetailsService.java

@@ -29,6 +29,9 @@ public interface ITGeomDbDetailsService {
      */
     List<TGeomDbDetails> selectTGeomDbDetailsList(TGeomDbDetails tGeomDbDetails);
 
+
+    TGeomDbDetails selectTGeomDbDetailsByNodeId(String nodeId);
+
     /**
      * 新增空间入库存储空间详情
      *

+ 6 - 0
siwei-modules/siwei-spatial/src/main/java/com/siwei/spatial/service/file/impl/TGeomDbDetailsServiceImpl.java

@@ -43,6 +43,12 @@ public class TGeomDbDetailsServiceImpl implements ITGeomDbDetailsService {
         return tGeomDbDetailsMapper.selectTGeomDbDetailsList(tGeomDbDetails);
     }
 
+    @Override
+    public TGeomDbDetails selectTGeomDbDetailsByNodeId(String nodeId) {
+        return tGeomDbDetailsMapper.selectTGeomDbDetailsByNodeId(nodeId);
+    }
+
+
     /**
      * 新增空间入库存储空间详情
      *

+ 7 - 0
siwei-modules/siwei-spatial/src/main/resources/mapper/postgresql/spatial/file/TGeomDbDetailsMapper.xml

@@ -46,6 +46,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where id = #{id}
     </select>
 
+    <select id="selectTGeomDbDetailsByNodeId" parameterType="String" resultMap="TGeomDbDetailsResult">
+        select  details.id, public.st_asewkt(details.geom) AS  geom, details.upload_id, details.geom_json, details.sort, details.geom_area
+        from t_geom_db_details  details
+        INNER JOIN   t_node_land node   on  node.geom_db_id=details.upload_id
+        WHERE node.node_id =#{nodeId}
+    </select>
+
     <insert id="insertTGeomDbDetails" parameterType="TGeomDbDetails">
         insert into t_geom_db_details
         <trim prefix="(" suffix=")" suffixOverrides=",">