1
0
chenendian 1 неделя назад
Родитель
Сommit
6f3ccccf60

+ 3 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/GyjsydscdjController.java

@@ -113,7 +113,10 @@ public class GyjsydscdjController extends BaseController {
                 if(Objects.isNull(nodeLand)){
                     return R.fail(502,"数据空间信息不存在,请检查先导入空间数据");
                 }
+                //这里进行预赋码逻辑
+                projectService.addPreAssignCode(id,onChainVo.getProjectId(),nodeLand.getGeomDbId(),0);
             }
+
             for (String id : onChainVo.getIds()) {
                 gyjsydscdjService.updateHasOnchain(id, onChainVo.getHasOnchain());
             }

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

@@ -136,7 +136,7 @@ public class TdgyController extends BaseController {
             // 更新项目表的上链数量
             projectService.countOnChinaNum(projectId);
             //这里进行预赋码逻辑
-            tdgyService.addPreAssignCode(id,projectId,nodeLand.getGeomDbId());
+            projectService.addPreAssignCode(id,projectId,nodeLand.getGeomDbId(),1);
             //这里生成资源吗
             landOneCodeService.addOrUpdateLandOneCodeInfo(projectId,id);
             return R.ok();

+ 13 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/TjyydhxController.java

@@ -1,9 +1,11 @@
 package com.siwei.apply.controller;
 
+import com.siwei.apply.domain.NodeLand;
 import com.siwei.apply.domain.res.TjyydhxRes;
 import com.siwei.apply.domain.vo.TjyydhxUpdateVo;
 import com.siwei.apply.domain.vo.TjyydhxVo;
 import com.siwei.apply.service.LandOneCodeService;
+import com.siwei.apply.service.NodeLandService;
 import com.siwei.apply.service.ProjectService;
 import com.siwei.apply.service.TjyydhxService;
 import com.siwei.common.core.domain.R;
@@ -14,6 +16,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * 规划条件与用地红线出具 控制器
@@ -29,7 +32,8 @@ public class TjyydhxController extends BaseController {
     @Autowired
     LandOneCodeService landOneCodeService;
 
-
+    @Autowired
+    NodeLandService nodeLandService;
     /**
      * 添加规划条件与用地红线出具
      */
@@ -94,6 +98,8 @@ public class TjyydhxController extends BaseController {
 
     /**
      * 这里没有校验空间数据,是因为(流程第二项t_ydbp 表中对应的地块信息,如果按顺序流程,则第一项未上链,则第二一定无值,校验没有意义)
+     *  (批次报批类型项目,在土地供应环节会嵌入新的节点,所以再上链方法会校验当前节点是否存在地块矢量)
+     *   这里需要校验当前节点是否存在地块矢量,如果不存在,则不允许上链
      * 更新规划条件与用地红线出具的上链状态
      */
     @PutMapping("/onchain")
@@ -105,9 +111,15 @@ public class TjyydhxController extends BaseController {
             if (StringUtils.isBlank(id)) {
                 return R.fail("nodeId不能为空");
             }
+            NodeLand nodeLand = nodeLandService.getNodeLandByNodeId(id);
+            if(Objects.isNull(nodeLand)){
+                return R.fail(502,"数据空间信息不存在,请检查先导入空间数据");
+            }
             tjyydhxService.updateHasOnchain(id, hasOnchain);
             // 更新项目表的上链数量
             projectService.countOnChinaNum(projectId);
+            //这里进行预赋码逻辑
+            projectService.addPreAssignCode(id,projectId,nodeLand.getGeomDbId(),0);
             //这里生成资源吗
             landOneCodeService.addOrUpdateLandOneCodeInfo(projectId,id);
             return R.ok();

+ 2 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/YdbpController.java

@@ -113,6 +113,8 @@ public class YdbpController extends BaseController {
                 return R.fail(502,"数据空间信息不存在,请检查先导入空间数据");
             }
             ydbpService.updateHasOnchain(id, hasOnchain);
+            //这里进行预赋码逻辑
+            projectService.addPreAssignCode(id,projectId,nodeLand.getGeomDbId(),0);
             // 更新项目表的上链数量
             projectService.countOnChinaNum(projectId);
             //这里生成资源吗

+ 2 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/YdysyxzController.java

@@ -117,6 +117,8 @@ public class YdysyxzController extends BaseController {
             ydysyxzService.updateHasOnchain(id, hasOnchain);
             // 更新项目表的上链数量
             projectService.countOnChinaNum(projectId);
+            //这里进行预赋码逻辑
+            projectService.addPreAssignCode(id,projectId,nodeLand.getGeomDbId(),0);
             //这里生成资源吗
             landOneCodeService.addOrUpdateLandOneCodeInfo(projectId,id);
             return R.ok();

+ 3 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/ProjectImmobileCode.java

@@ -11,7 +11,9 @@ import java.util.Date;
 @Data
 public class ProjectImmobileCode extends BaseId {
     private String projectId;
-    private String businessId;
+    /** 序号 */
+    private String sequenceNumber;
+
     private String code;
     private Integer validFlag;
 

+ 14 - 10
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/ProjectImmobileCodeMapper.java

@@ -23,18 +23,18 @@ public interface ProjectImmobileCodeMapper {
     List<ProjectImmobileCode> selectByProjectId(String projectId);
 
     /**
-     * 根据业务ID查询(只返回一条)
+     * 根据序号查询(只返回一条)
      */
-    ProjectImmobileCode selectByBusinessId(String businessId);
+    ProjectImmobileCode selectBySequenceNumber(String sequenceNumber);
 
     /**
-     * 根据业务ID列表查询
+     * 根据序号列表查询
      */
-    List<ProjectImmobileCode> selectByBusinessIdList(@Param("businessIdList") List<String> businessIdList);
+    List<ProjectImmobileCode> selectBySequenceNumberList(@Param("sequenceNumberList") List<String> sequenceNumberList);
 
 
     /**
-     * 根据业务ID查询(只返回一条)
+     * 根据预赋不动产单元号查询(只返回一条)
      */
     ProjectImmobileCode selectByPreAssignCode(@Param("preAssignCode") String preAssignCode);
 
@@ -44,7 +44,7 @@ public interface ProjectImmobileCodeMapper {
     void insert(ProjectImmobileCode projectImmobileCode);
 
     /**
-     * 根据业务ID更新记录(更新 code, validFlag, updatedAt, nodeId, geomDbId, geomDetailsId, preAssignCode)
+     * 根据序号更新记录(更新 code, validFlag, updatedAt, nodeId, geomDbId, geomDetailsId, preAssignCode)
      */
     void update(ProjectImmobileCode projectImmobileCode);
 
@@ -59,13 +59,17 @@ public interface ProjectImmobileCodeMapper {
     void deleteByProjectId(String projectId);
 
     /**
-     * 根据业务ID删除,排除指定ID
+     * 根据序号删除,排除指定ID
      */
-    void deleteByBusinessIdAndIdNotEqual(@Param("businessId") String businessId, @Param("id") String id);
+    void deleteBySequenceNumberAndIdNotEqual(@Param("sequenceNumber") String sequenceNumber, @Param("id") String id);
 
     /**
-     * 根据业务ID删除
+     * 根据序号删除
      */
-    void deleteByBusinessId(String businessId);
+    void deleteBySequenceNumber(String sequenceNumber);
+
+
+    void deleteByProjectIdNodeId(@Param("projectId") String projectId, @Param("nodeId") String nodeId);
+
 }
 

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

@@ -92,6 +92,7 @@ public interface ProjectService {
 
     void deleteOneNode(NodeVo nodeVo) ;
 
+    void addPreAssignCode(String nodeId,String projectId,String geomDbId,Integer validFlag) throws RuntimeException ;
 
 
     void testData() ;

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

@@ -59,8 +59,6 @@ public interface TdgyService {
     void updateHasOnchain(String id,String projectId ,Boolean hasOnchain);
 
 
-    void addPreAssignCode(String nodeId,String projectId,String geomDbId) throws RuntimeException ;
-
 
 
 

+ 93 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/ProjectImpl.java

@@ -17,8 +17,10 @@ import com.siwei.apply.mapper.*;
 import com.siwei.apply.service.NodeAttachmentService;
 import com.siwei.apply.service.NodeLandService;
 import com.siwei.apply.service.ProjectService;
+import com.siwei.apply.service.third.TakeDataService;
 import com.siwei.apply.utils.ServiceFileUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
 import org.geotools.data.DefaultTransaction;
 import org.geotools.data.FeatureWriter;
 import org.geotools.data.Transaction;
@@ -147,6 +149,18 @@ public class ProjectImpl implements ProjectService {
     @Autowired
     private NodeLandService nodeLandService;
 
+
+    @Autowired
+    private TakeDataService takeDataService;
+
+    @Autowired
+    private ProjectImmobileCodeMapper projectImmobileCodeMapper;
+
+
+
+
+
+
     @Override
     public String add(ProjectVo projectVo) {
         Project project = new Project();
@@ -1921,6 +1935,85 @@ public class ProjectImpl implements ProjectService {
         projectMapper.deleteNodeByTable(nodeVo.getNodeId(), nodeVo.getTableName());
     }
 
+
+
+
+    @Override
+    public void addPreAssignCode(String nodeId,String projectId,String geomDbId,Integer validFlag) throws RuntimeException {
+        //这里进行预赋码逻辑,先查询是否已经存在预赋码,如果存在则不进行生成
+        List<ProjectImmobileCode> existsList = projectImmobileCodeMapper.selectByProjectId(projectId);
+        if(CollectionUtils.isNotEmpty(existsList)){
+            String existsPreAssignCode  = existsList.get(0).getPreAssignCode();
+            if(StringUtils.isNotBlank(existsPreAssignCode)){
+                return;
+            }
+        }
+
+
+        /*
+        1.每一个地块都需要进行请求,并且获取最大值。
+        2.生成预赋码逻辑在这里。
+        3.保证异常情况下,预付码不会重复。
+        5.简单取最大序列号,进行+1赋码
+        */
+        String preAssignCode = "";
+        //这里需要先进行图斑等值校验
+        //这里校验当前地块是否已经存在当前项目中,如果存在共用一个预赋码,如果不存在则生成新的预赋码
+//        1.获取当前nodeId
+//        2.查找当前nodeId对应的gemoId
+//        3.用gemoId+projectId 查找如果找到,直接使用当前的预赋码,如果没有找到,则生成新的预赋码
+//        4.如果找不到,分别遍历当前项目的所有地块,把其中其它的地块找出来,进行等值判断,如果找不到则生成新的预赋码,如果找到,则使用当前的预赋码
+
+        NodeLand nodeLand = nodeLandMapper.selectByNodeId(nodeId);
+        String currentNodeGeomDbId =   nodeLand.getGeomDbId();
+
+
+
+        //这里生成预赋码逻辑,调用三方接口获取最大序号,然后生成预赋码,插入到不动产单元号表中
+        Map<String, String> maxSequenceMap = takeDataService.getThirdMaxSequence(projectId,AloneWorkFlowEnum.NODE_2.getTableName());
+        String regionCode = "";
+        String sequenceNumber = "";
+        String plotCode = "";
+        //这里校验当前地块是否已经存在当前项目中,如果存在共用一个预赋码,如果不存在则生成新的预赋码
+        if(MapUtils.isNotEmpty(maxSequenceMap) && maxSequenceMap.containsKey("maxSequence")) {
+            regionCode = maxSequenceMap.get("regionCode");
+            plotCode = maxSequenceMap.get("plotCode");
+            sequenceNumber = maxSequenceMap.get("maxSequence");
+        }
+
+
+
+
+
+
+        //------------------------------------------------------------------------------------------------------------------------------------------
+
+        //这里需要校验是否已经存在预赋码,如果存在则修改
+        if(com.siwei.common.core.utils.StringUtils.isNotBlank(preAssignCode) && com.siwei.common.core.utils.StringUtils.isNotBlank(sequenceNumber)){
+            // insert 前需要先删除当前项目的预赋码数据
+            projectImmobileCodeMapper.deleteByProjectIdNodeId(projectId,nodeId);
+            //这里进行入库
+            ProjectImmobileCode projectImmobileCode = new ProjectImmobileCode();
+            projectImmobileCode.generateId();
+            projectImmobileCode.setProjectId(projectId);
+            projectImmobileCode.setNodeId(nodeId);
+            projectImmobileCode.setGeomDbId(geomDbId);
+            projectImmobileCode.setCode(null);
+            projectImmobileCode.setSequenceNumber(sequenceNumber);
+            projectImmobileCode.setPreAssignCode(preAssignCode);
+            projectImmobileCode.setValidFlag(validFlag);
+            projectImmobileCodeMapper.insert(projectImmobileCode);
+        }
+
+
+
+
+
+    }
+
+
+
+
     /**
      * 递归解析json文件数据
      * 

+ 0 - 34
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/TdgyImpl.java

@@ -50,12 +50,6 @@ public class TdgyImpl implements TdgyService {
     @Autowired
     private NodeLandService nodeLandService;
 
-    @Autowired
-    private TakeDataService takeDataService;
-
-    @Autowired
-    private ProjectImmobileCodeMapper projectImmobileCodeMapper;
-
 
 
     @Override
@@ -231,33 +225,5 @@ public class TdgyImpl implements TdgyService {
         tdgyMapper.updateHasOnchain(id, hasOnchain);
     }
 
-    @Override
-    public void addPreAssignCode(String nodeId,String projectId,String geomDbId) throws RuntimeException {
-        //这里进行预赋码逻辑,先查询是否已经存在预赋码,如果存在则不进行生成
-        List<ProjectImmobileCode> existsList = projectImmobileCodeMapper.selectByProjectId(projectId);
-        if(CollectionUtils.isNotEmpty(existsList)){
-            String existsPreAssignCode  = existsList.get(0).getPreAssignCode();
-            if(StringUtils.isNotBlank(existsPreAssignCode)){
-                return;
-            }
-        }
-        //这里生成预赋码逻辑,调用三方接口获取最大序号,然后生成预赋码,插入到不动产单元号表中
-        Map<String, String> maxSequenceMap = takeDataService.getThirdMaxSequence(projectId,AloneWorkFlowEnum.NODE_2.getTableName());
-        if(MapUtils.isNotEmpty(maxSequenceMap) && maxSequenceMap.containsKey("preAssignCode")){
-            String preAssignCode  = maxSequenceMap.get("preAssignCode");
-            //这里需要校验是否已经存在预赋码,如果存在则修改
-            if(com.siwei.common.core.utils.StringUtils.isNotBlank(preAssignCode)){
-                //这里进行入库
-                ProjectImmobileCode projectImmobileCode = new ProjectImmobileCode();
-                projectImmobileCode.generateId();
-                projectImmobileCode.setProjectId(projectId);
-                projectImmobileCode.setNodeId(nodeId);
-                projectImmobileCode.setGeomDbId(geomDbId);
-                projectImmobileCode.setCode(null);
-                projectImmobileCode.setPreAssignCode(preAssignCode);
-                projectImmobileCodeMapper.insert(projectImmobileCode);
-            }
-        }
-    }
 
 }

+ 2 - 7
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/third/impl/TakeDataServiceImpl.java

@@ -121,12 +121,7 @@ public class TakeDataServiceImpl implements TakeDataService {
             }
         }
 
-        String preAssignCode = "";
         String maxSequence = RandomStringUtils.randomNumeric(5);
-        if (StringUtils.isNotBlank(regionCode)) {
-            preAssignCode = regionCode + firstPlotCode + secondPlotCode + maxSequence;
-        }
-
         //todo 这里三方接口完成后联调后修改
         if (StringUtils.isNotBlank(regionCode) && false) {
             Map<String, Object> paramMap = new LinkedHashMap<>();
@@ -137,8 +132,8 @@ public class TakeDataServiceImpl implements TakeDataService {
         }
 
         retMap.put("maxSequence", maxSequence);
-        retMap.put("preAssignCode", preAssignCode);
-        retMap.put("state", "success");
+        retMap.put("regionCode", regionCode);
+        retMap.put("plotCode", firstPlotCode + secondPlotCode);
         retMap.put("code", "200");
         return retMap;
     }

+ 53 - 26
siwei-modules/siwei-apply/src/main/resources/mapper/ProjectImmobileCodeMapper.xml

@@ -9,7 +9,7 @@
     <resultMap id="BaseResultMap" type="com.siwei.apply.domain.ProjectImmobileCode">
         <id property="id" column="id"/>
         <result property="projectId" column="project_id"/>
-        <result property="businessId" column="business_id"/>
+        <result property="sequenceNumber" column="sequence_number"/>
         <result property="code" column="code"/>
         <result property="validFlag" column="valid_flag"/>
         <result property="createdAt" column="created_at"/>
@@ -22,7 +22,7 @@
 
     <!-- 基础查询字段 -->
     <sql id="Base_Column_List">
-        id, project_id, business_id, code, valid_flag, created_at, updated_at,
+        id, project_id, sequence_number, code, valid_flag, created_at, updated_at,
         node_id, geom_db_id, geom_details_id, pre_assign_code
     </sql>
 
@@ -43,24 +43,24 @@
         AND  valid_flag = 1
     </select>
 
-    <!-- 根据业务ID查询(只返回一条) -->
-    <select id="selectByBusinessId" resultMap="BaseResultMap" parameterType="String">
+    <!-- 根据序号查询(只返回一条) -->
+    <select id="selectBySequenceNumber" resultMap="BaseResultMap" parameterType="String">
         SELECT
         <include refid="Base_Column_List"/>
         FROM t_project_immobile_code
-        WHERE business_id = #{businessId}
+        WHERE sequence_number = #{sequenceNumber}
         LIMIT 1
     </select>
 
-    <!-- 根据业务ID列表查询 -->
-    <select id="selectByBusinessIdList" resultMap="BaseResultMap" parameterType="List">
+    <!-- 根据序号列表查询 -->
+    <select id="selectBySequenceNumberList" resultMap="BaseResultMap" parameterType="List">
         SELECT
         <include refid="Base_Column_List"/>
         FROM t_project_immobile_code
         <where>
-            <if test="businessIdList != null and businessIdList.size() > 0">
-                AND business_id IN
-                <foreach collection="businessIdList" item="id" open="(" separator="," close=")">
+            <if test="sequenceNumberList != null and sequenceNumberList.size() > 0">
+                AND sequence_number IN
+                <foreach collection="sequenceNumberList" item="id" open="(" separator="," close=")">
                     #{id}
                 </foreach>
             </if>
@@ -80,13 +80,32 @@
         LIMIT 1
     </select>
 
+    <!-- 根据序号列表查询 -->
+    <select id="selectByCondition" resultMap="BaseResultMap"  parameterType="com.siwei.apply.domain.ProjectImmobileCode">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM t_project_immobile_code
+        <where>
+            <if test="projectId != null and projectId !=''">
+                AND project_id  = #{projectId}
+            </if>
+            <if test="nodeId != null and nodeId !='' ">
+                AND node_id  = #{nodeId}
+            </if>
+            <if test="geomDbId != null and geomDbId !='' ">
+                AND geom_db_id  = #{geomDbId}
+            </if>
+        </where>
+    </select>
+
+
 
     <!-- 插入记录 -->
     <insert id="insert" parameterType="com.siwei.apply.domain.ProjectImmobileCode">
         INSERT INTO t_project_immobile_code (
             id,
             project_id,
-            business_id,
+            sequence_number,
             code,
             valid_flag,
             created_at,
@@ -98,9 +117,9 @@
         ) VALUES (
             #{id},
             #{projectId},
-            #{businessId},
+            #{sequenceNumber},
             #{code},
-            1,
+            #{validFlag},
             now(),
             now(),
             #{nodeId},
@@ -110,7 +129,7 @@
         )
     </insert>
 
-    <!-- 根据业务ID更新记录(更新 code, valid_flag, updated_at, node_id, geom_db_id, geom_details_id, preAssignCode) -->
+    <!-- 根据序号更新记录(更新 code, valid_flag, updated_at, node_id, geom_db_id, geom_details_id, preAssignCode) -->
     <update id="update" parameterType="com.siwei.apply.domain.ProjectImmobileCode">
         UPDATE t_project_immobile_code
         SET code = #{code},
@@ -120,7 +139,7 @@
             geom_db_id = #{geomDbId},
             geom_details_id = #{geomDetailsId},
             pre_assign_code = #{preAssignCode}
-        WHERE business_id = #{businessId}
+        WHERE sequence_number = #{sequenceNumber}
     </update>
 
     <!-- 根据ID更新记录(可选字段更新) -->
@@ -128,7 +147,7 @@
         UPDATE t_project_immobile_code
         <set>
             <if test="projectId != null">project_id = #{projectId},</if>
-            <if test="businessId != null">business_id = #{businessId},</if>
+            <if test="sequenceNumber != null">sequence_number = #{sequenceNumber},</if>
             <if test="code != null">code = #{code},</if>
             <if test="validFlag != null">valid_flag = #{validFlag},</if>
             <if test="nodeId != null">node_id = #{nodeId},</if>
@@ -145,22 +164,30 @@
         DELETE FROM t_project_immobile_code WHERE project_id = #{projectId}
     </delete>
 
-    <!-- 根据业务ID删除,且排除指定ID的记录 -->
-    <delete id="deleteByBusinessIdAndIdNotEqual" parameterType="map">
+    <!-- 根据序号删除,且排除指定ID的记录 -->
+    <delete id="deleteBySequenceNumberAndIdNotEqual" parameterType="map">
         DELETE FROM t_project_immobile_code
-        WHERE business_id = #{businessId}
+        WHERE sequence_number = #{sequenceNumber}
           AND id != #{id}
     </delete>
 
-    <!-- 根据业务ID删除 -->
-    <delete id="deleteByBusinessId" parameterType="String">
-        DELETE FROM t_project_immobile_code WHERE business_id = #{businessId}
+    <!-- 根据序号删除 -->
+    <delete id="deleteBySequenceNumber" parameterType="String">
+        DELETE FROM t_project_immobile_code WHERE sequence_number = #{sequenceNumber}
     </delete>
 
-
-
-
-
+    <!-- 根据项目ID及nodeId删除 -->
+    <delete id="deleteByProjectIdNodeId" parameterType="String">
+        DELETE FROM t_project_immobile_code
+        <where>
+            <if test="projectId != null and projectId != ''">
+                AND project_id = #{projectId}
+            </if>
+            <if test="nodeId != null and nodeId != ''">
+                AND node_id = #{nodeId}
+            </if>
+        </where>
+    </delete>