1
0
فهرست منبع

Merge branch 'dev' of http://114.244.114.158:8802/gushoubang/one-code-manage into dev

gushoubang 4 هفته پیش
والد
کامیت
b379be3d2a

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/res/ProjectCycleRes.java

@@ -1,6 +1,5 @@
 package com.siwei.apply.domain.res;
 
-import com.siwei.apply.domain.ProjectWorkflow;
 import lombok.Data;
 
 import java.util.List;
@@ -13,6 +12,7 @@ public class ProjectCycleRes {
     private String id;
     private Integer projectType; // 1:单独选址,2:批次报批
     private String name;         // 名称
+    private String tableName;         // 名称
     private Double index;        // 执行顺序
 
     private Boolean hasOnchain=false;//是否完成

+ 29 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/enums/ProjectType.java

@@ -0,0 +1,29 @@
+package com.siwei.apply.enums;
+
+/**
+ * 项目类型
+ */
+public enum ProjectType {
+
+    ALONE("1", "单独选址"),
+    BATCH("2", "批次报批流程");
+
+    private final String name;
+    private final String code;
+
+    ProjectType(String code, String name)
+    {
+        this.code = code;
+        this.name = name;
+    }
+
+    public String getCode()
+    {
+        return code;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+}

+ 46 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/enums/RegistrationProcessType.java

@@ -0,0 +1,46 @@
+package com.siwei.apply.enums;
+
+
+/**
+ * 审批环节类型
+ */
+public enum RegistrationProcessType {
+    Registration01(1,"01", "用地预审与选址","t_ydysyxz"),
+    Registration02(2,"02", "规划条件与用地红线出具","t_tjyydhx"),
+    Registration03(3,"03", "用地报批","t_ydbp"),
+    Registration04(4,"04", "土地供应","t_tdgy"),
+    Registration05A(5,"05", "建设用地规划许可","t_jsydghxk"),
+    Registration05B(6,"05", "建设工程规划许可","t_jsgcghxk"),
+    Registration06(7,"06", "土地核验与规划核实","t_tdhyhs"),
+    Registration00(8,"00", "全部办结","");
+
+    private final Integer index;
+    private final String name;
+    private final String code;
+    private final String table;
+
+    RegistrationProcessType(Integer index,String code, String name,String table) {
+        this.index = index;
+        this.code = code;
+        this.name = name;
+        this.table = table;
+    }
+
+    public String getCode()
+    {
+        return code;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public String getTable() {
+        return table;
+    }
+    public Integer getIndex() {
+        return index;
+    }
+
+}

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

@@ -23,4 +23,10 @@ public interface LandOneCodeMapper {
 
     // 根据环节ID(project_workflow_id)修改三类编码
     void updateCodeByProjectWorkflowId(LandOneCode entity);
+
+
+    // 根据主键ID查询
+    LandOneCode getByWorkflowId(@Param("workflowId") String workflowId);
+
+
 }

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

@@ -1,5 +1,6 @@
 package com.siwei.apply.mapper;
 
+import com.siwei.apply.domain.NodeLand;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -44,4 +45,8 @@ public interface NodeLandMapper {
     String selectNodeIdsByProjectIdAndNodeTableName(@Param("projectId") String projectId,
                                                     @Param("nodeTableName") String nodeTableName);
 
+
+    NodeLand selectByNodeId(@Param("nodeId")String nodeId);
+
+
 }

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

@@ -10,6 +10,9 @@ import java.util.List;
 
 @Mapper
 public interface ProjectWorkflowMapper {
+
+    ProjectWorkflow selectById(@Param("id") String id);
+
     /**
      * 根据项目id查询项目流程节点关系
      */

+ 8 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/LandOneCodeService.java

@@ -17,5 +17,13 @@ public interface LandOneCodeService {
 
     /** 删除(按ID) */
     void deleteById(String id);
+
+    String getBusinessCode(String projectWorkflowId, Integer ProjectType);
+
+    String addOrUpdateLandOneCodeInfo(String projectWorkflowId, Integer projectType);
+
+
+
+
 }
 

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

@@ -64,6 +64,8 @@ public class Gyjsydjfwscdjmpl implements GyjsydjfwscdjService {
         }
         ProjectWorkflow projectWorkflow = new ProjectWorkflow();
         projectWorkflow.setId(gyjsydjfwscdj.getId());
+
+
         projectWorkflow.setParentId(parentId);
         projectWorkflow.setWorkflowId(workflow.getId());
         projectWorkflow.setProjectId(gyjsydjfwscdj.getProjectId());

+ 239 - 2
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/LandOneCodeServiceImpl.java

@@ -1,18 +1,56 @@
 package com.siwei.apply.service.impl;
 
-import com.siwei.apply.domain.LandOneCode;
-import com.siwei.apply.mapper.LandOneCodeMapper;
+import com.siwei.apply.domain.*;
+import com.siwei.apply.domain.res.ProjectCycleRes;
+import com.siwei.apply.enums.ProjectType;
+import com.siwei.apply.enums.RegistrationProcessType;
+import com.siwei.apply.mapper.*;
 import com.siwei.apply.service.LandOneCodeService;
+import com.siwei.common.core.utils.bean.BeanUtils;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import static com.siwei.apply.common.Common.UserId;
+
 @Service
 @RequiredArgsConstructor
 public class LandOneCodeServiceImpl implements LandOneCodeService {
 
+    @Autowired
     private final LandOneCodeMapper mapper;
 
+    @Autowired
+    private final ProjectWorkflowMapper projectWorkflowMapper;
+
+    @Autowired
+    private WorkflowMapper workflowMapper;
+
+    @Autowired
+    private TdgyMapper tdgyMapper;
+
+    @Autowired
+    private YdbpMapper ydbpMapper;
+
+    @Autowired
+    private YdysyxzMapper ydysyxzMapper;
+
+    @Autowired
+    private ProjectMapper projectMapper;
+
+    @Autowired
+    private NodeLandMapper nodeLandMapper;
+
+
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public String add(LandOneCode entity) {
@@ -37,4 +75,203 @@ public class LandOneCodeServiceImpl implements LandOneCodeService {
     public void deleteById(String id) {
         mapper.deleteById(id);
     }
+
+
+    /**
+     * 获取业务编码
+     * @param projectWorkflowId
+     * @param projectType
+     * @return
+     */
+    @Override
+    public String getBusinessCode(String projectWorkflowId, Integer projectType) {
+        ProjectWorkflow  projectWorkflow= projectWorkflowMapper.selectById(projectWorkflowId);
+        String nodeId = projectWorkflow.getNodeId();
+        String nodeTableName = projectWorkflow.getNodeTableName();
+        // 获取不同类型的流程
+        List<ProjectCycleRes> workflows = workflowMapper.selectByProjectTypeOrderByIndex(projectType);
+        ProjectCycleRes currrentProjectCycleRes =  workflows.stream().filter(s->s.getTableName().equals(nodeTableName)).findFirst().orElse(null);
+        Double index = currrentProjectCycleRes.getIndex();
+
+        // 过滤出小于等于当前节点的所有节点
+        workflows = workflows.stream().filter(s->s.getIndex()<=index).collect(Collectors.toList());
+        String returnCode = "";
+        String replaceCode = "#";
+
+        String talbeName0 = "t_ydysyxz"; //用地预审与选址
+        String talbeName1 = "t_ydbp"; //用地报批
+        String talbeName2 = "t_tdgy";//土地供应
+
+        String talbeName3 = "t_gyjsydscdj";//国有建设用地使用权首次登记
+        String talbeName4 = "t_gyjsydjfwscdj";//国有建设用地使用权及房屋所有权首次登记
+
+        String talbeName5 = "t_jsydghxk";//建设用地规划许可
+        String talbeName6 = "t_jsgcghxk";//建设工程规划许可
+
+        String levyStatusCode = replaceCode;
+        String landSupplyModeCode = replaceCode;
+        String approvalProcessCode = replaceCode;
+        String registrationProcessCode = replaceCode;
+        String licenseStagesCode = replaceCode;
+
+        //单独选址
+        if(ProjectType.ALONE.equals(projectType)){
+            Tdgy globalTdgy = null; //土地供应对象
+            //取征转状态
+            //优先获取土地供应的值
+            if(workflows.stream().anyMatch(s->s.getTableName().equalsIgnoreCase(talbeName2))){
+                Tdgy tdgy = tdgyMapper.getById(nodeId);
+                globalTdgy = tdgy;
+                if(StringUtils.isNoneBlank(tdgy.getHasZz())){
+                    levyStatusCode =  "是".equalsIgnoreCase(tdgy.getHasZz()) ? "1": "否".equalsIgnoreCase(tdgy.getHasZz()) ? "0": "";
+                }
+             //其次获取用地报批的值
+            } else if(workflows.stream().anyMatch(s->s.getTableName().equalsIgnoreCase(talbeName1))){
+                Ydbp ydbp = ydbpMapper.getById(nodeId);
+                if(StringUtils.isNoneBlank(ydbp.getHasZz())){
+                    levyStatusCode =  "是".equalsIgnoreCase(ydbp.getHasZz()) ? "1": "否".equalsIgnoreCase(ydbp.getHasZz()) ? "0": "";
+                }
+            }else if(workflows.stream().anyMatch(s->s.getTableName().equalsIgnoreCase(talbeName0))){
+                Ydysyxz ydysyxz = ydysyxzMapper.getById(nodeId);
+                if(StringUtils.isNoneBlank(ydysyxz.getHasZz())){
+                    levyStatusCode =  "是".equalsIgnoreCase(ydysyxz.getHasZz()) ? "1": "否".equalsIgnoreCase(ydysyxz.getHasZz()) ? "0": "";
+                }
+            }
+            if(StringUtils.isBlank(levyStatusCode)){
+                levyStatusCode = replaceCode;
+            }
+
+            //获取土地供应方式
+            if(Objects.nonNull(globalTdgy) && StringUtils.isNoneBlank(globalTdgy.getGdType())){
+                if("划拨".equalsIgnoreCase(globalTdgy.getGdType())){
+                    landSupplyModeCode = "H";
+                } else if  ("出让".equalsIgnoreCase(globalTdgy.getGdType())) {
+                    landSupplyModeCode = "C";
+                }
+            }
+
+            //获取审批环节代码
+            List<String>  currentNodeTableList = workflows.stream().map(s->s.getTableName()).collect(Collectors.toList());
+            RegistrationProcessType[] values = RegistrationProcessType.values();
+            List<RegistrationProcessType>  reversedValues = Arrays.stream(values).sequential().sorted(Comparator.comparing(RegistrationProcessType::getIndex).reversed()).collect(Collectors.toList());
+            for(RegistrationProcessType registrationProcess : reversedValues){
+                if(currentNodeTableList.contains(registrationProcess.getTable())){
+                    approvalProcessCode = registrationProcess.getCode();
+                    break;
+                }
+            }
+
+            //获取登记环节编码
+            if(currentNodeTableList.contains(talbeName4)){
+                registrationProcessCode = "2";
+            } else if(currentNodeTableList.contains(talbeName3)){
+                registrationProcessCode = "1";
+            }
+
+            //许可分期编码
+            if(currentNodeTableList.contains(talbeName6)){
+                licenseStagesCode = "2";
+            } else if(currentNodeTableList.contains(talbeName5)){
+                licenseStagesCode = "1";
+            }
+        }else if(ProjectType.BATCH.equals(projectType)){
+            Tdgy globalTdgy = null; //土地供应对象
+            //取征转状态
+            //优先获取土地供应的值
+            if(workflows.stream().anyMatch(s->s.getTableName().equalsIgnoreCase(talbeName2))){
+                Tdgy tdgy = tdgyMapper.getById(nodeId);
+                globalTdgy = tdgy;
+                if(StringUtils.isNoneBlank(tdgy.getHasZz())){
+                    levyStatusCode =  "是".equalsIgnoreCase(tdgy.getHasZz()) ? "1": "否".equalsIgnoreCase(tdgy.getHasZz()) ? "0": "";
+                }
+            }
+            if(StringUtils.isBlank(levyStatusCode)){
+                levyStatusCode = replaceCode;
+            }
+
+            //获取土地供应方式
+            if(Objects.nonNull(globalTdgy) && StringUtils.isNoneBlank(globalTdgy.getGdType())){
+                if("划拨".equalsIgnoreCase(globalTdgy.getGdType())){
+                    landSupplyModeCode = "H";
+                } else if  ("出让".equalsIgnoreCase(globalTdgy.getGdType())) {
+                    landSupplyModeCode = "C";
+                }
+            }
+
+            //获取审批环节代码
+            List<String>  currentNodeTableList = workflows.stream().map(s->s.getTableName()).collect(Collectors.toList());
+            RegistrationProcessType[] values = RegistrationProcessType.values();
+            List<RegistrationProcessType>  reversedValues = Arrays.stream(values).sequential().sorted(Comparator.comparing(RegistrationProcessType::getIndex).reversed()).collect(Collectors.toList());
+            for(RegistrationProcessType registrationProcess : reversedValues){
+                if(currentNodeTableList.contains(registrationProcess.getTable())){
+                    approvalProcessCode = registrationProcess.getCode();
+                    break;
+                }
+            }
+
+            //获取登记环节编码
+            if(currentNodeTableList.contains(talbeName4)){
+                registrationProcessCode = "2";
+            } else if(currentNodeTableList.contains(talbeName3)){
+                registrationProcessCode = "1";
+            }
+
+            //许可分期编码
+            if(currentNodeTableList.contains(talbeName6)){
+                licenseStagesCode = "2";
+            } else if(currentNodeTableList.contains(talbeName5)){
+                licenseStagesCode = "1";
+            }
+        }
+
+       returnCode = levyStatusCode+landSupplyModeCode+approvalProcessCode+registrationProcessCode+licenseStagesCode;
+       return returnCode;
+    }
+
+
+
+    /**
+     * 各个环节新增时,新增一条地块一码信息
+     * @param projectWorkflowId
+     * @param projectType
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String addOrUpdateLandOneCodeInfo(String projectWorkflowId, Integer projectType) {
+        ProjectWorkflow  projectWorkflow= projectWorkflowMapper.selectById(projectWorkflowId);
+        String nodeId = projectWorkflow.getNodeId();
+        String projectId = projectWorkflow.getProjectId();
+        Project project =projectMapper.get(projectId);
+        // 获取地块ID
+        NodeLand nodeLand = nodeLandMapper.selectByNodeId(nodeId);
+        String landCodeId = nodeLand.getId();
+        LandOneCode landOneCode = mapper.getByWorkflowId(projectWorkflowId);
+        if(Objects.nonNull(landOneCode)){ //修改数据
+            landOneCode.setProjectId(projectId);
+            landOneCode.setLandCode(landCodeId);
+            landOneCode.setProjectWorkflowId(projectWorkflowId);
+            String businessCode = this.getBusinessCode( projectWorkflowId,  projectType);
+            landOneCode.setResourceBusinessCode(businessCode);
+            landOneCode.setResourceProjectCode(project.getCode());
+            landOneCode.setResourceImmobileCode("###");
+            mapper.updateById(landOneCode);
+        }else {
+            //保存入库
+            landOneCode = new LandOneCode();
+            landOneCode.generateId();
+            landOneCode.setProjectId(projectId);
+            landOneCode.setLandCode(landCodeId);
+            landOneCode.setProjectWorkflowId(projectWorkflowId);
+            String businessCode = this.getBusinessCode( projectWorkflowId,  projectType);
+            landOneCode.setResourceBusinessCode(businessCode);
+            landOneCode.setResourceProjectCode(project.getCode());
+            landOneCode.setResourceImmobileCode("###");
+            mapper.add(landOneCode);
+        }
+        return landOneCode.getId();
+    }
+
+
+
 }

+ 9 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/LandOneCodeMapper.xml

@@ -25,6 +25,15 @@
         )
     </insert>
 
+    <select id="getByWorkflowId" parameterType="string" resultMap="LandOneCodeResultMap">
+        SELECT id, land_code, project_id, project_workflow_id,
+               resource_immobile_code, resource_business_code, resource_project_code
+        FROM t_land_one_code
+        WHERE project_workflow_id = #{workflowId}
+        LIMIT 1
+    </select>
+
+
     <select id="getById" parameterType="string" resultMap="LandOneCodeResultMap">
         SELECT id, land_code, project_id, project_workflow_id,
                resource_immobile_code, resource_business_code, resource_project_code

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

@@ -17,6 +17,17 @@
         id, node_id, geom_db_id
     </sql>
 
+
+    <!-- 根据节点ID查询附件信息(只返回一条) -->
+    <select id="selectByNodeId" resultMap="BaseResultMap" parameterType="String">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM t_node_land
+        WHERE node_id = #{nodeId}
+        LIMIT 1
+    </select>
+
+
     <!-- 根据node_id查询地块几何信息,返回geom_db_id和并集的外边框、中心点 -->
     <select id="selectGeomByNodeId" resultType="map" parameterType="String">
         SELECT

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

@@ -13,6 +13,24 @@
         <result property="updatedAt" column="updated_at"/>
     </resultMap>
 
+
+    <select id="selectById" parameterType="string" resultMap="ProjectWorkflowResultMap">
+        SELECT id,
+               project_id,
+               workflow_id,
+               parent_id,
+               node_id,
+               node_table_name,
+               workflow_name,
+               created_at,
+               updated_at
+        FROM t_project_workflow
+        WHERE id = #{id}
+        ORDER BY created_at
+    </select>
+
+
+
     <select id="selectByProjectId" parameterType="string" resultMap="ProjectWorkflowResultMap">
         SELECT id,
                project_id,

+ 1 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/WorkflowMapper.xml

@@ -37,6 +37,7 @@
             id,
             project_type AS projectType,
             name,
+            table_name  AS tableName,
             "index" AS index
         FROM t_workflow
         WHERE project_type = #{projectType}