1
0
chenendian 2 недель назад
Родитель
Сommit
68f27dde18

+ 21 - 4
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/third/OfferDataController.java

@@ -2,10 +2,7 @@ package com.siwei.apply.controller.third;
 
 
 import com.siwei.apply.domain.LandOneCode;
 import com.siwei.apply.domain.LandOneCode;
 import com.siwei.apply.domain.NodeAttachment;
 import com.siwei.apply.domain.NodeAttachment;
-import com.siwei.apply.domain.vo.AttachmentParamVo;
-import com.siwei.apply.domain.vo.HouseFirstParamVo;
-import com.siwei.apply.domain.vo.LandFirstParamVo;
-import com.siwei.apply.domain.vo.ThirdProjectParamVo;
+import com.siwei.apply.domain.vo.*;
 import com.siwei.apply.service.third.OfferDataService;
 import com.siwei.apply.service.third.OfferDataService;
 import com.siwei.apply.utils.ServiceUtil;
 import com.siwei.apply.utils.ServiceUtil;
 import com.siwei.common.core.domain.R;
 import com.siwei.common.core.domain.R;
@@ -48,6 +45,26 @@ public class OfferDataController extends BaseController {
     @Autowired
     @Autowired
     private RedisService redisService;
     private RedisService redisService;
 
 
+
+
+    /**
+     *  j接收推送的登簿状体数据
+     * @param body
+     * @return
+     */
+    @PostMapping("/third/receiveRecordStatusData")
+    public R<Map<String, Object>> addRecordStatusData(@RequestBody ThirdRecordStatusParamVo body) {
+        try {
+            Map<String, Object> map = offerDataService.addRecordStatusData(body);
+            map.put("id", map.get("id"));
+            return R.ok(map);
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+
     /**
     /**
      *
      *
      * 获取土地供应和项目信息
      * 获取土地供应和项目信息

+ 100 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/vo/ThirdRecordStatusParamVo.java

@@ -0,0 +1,100 @@
+package com.siwei.apply.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 第三方项目参数 Vo
+ */
+@Data
+public class ThirdRecordStatusParamVo {
+
+    /**
+     * 主键
+     * 必选: 否
+     * 业务类型: 业务
+     */
+    private String id;
+
+    /**
+     * 是否完成同步(0未同步,1.已同步)
+     * 必选: 否
+     * 业务类型: 业务
+     */
+    private String tbzt;
+
+    /**
+     * 创建时间
+     * 必选: 否
+     * 业务类型: 业务
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createdAt;
+
+    /**
+     * 更新时间
+     * 必选: 否
+     * 业务类型: 业务
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updatedAt;
+
+    /**
+     * 不动产单元号
+     * 必选: 否
+     * 业务类型: 业务
+     */
+    private String bdydyh;
+
+    /**
+     * 预赋不动产单元号
+     * 必选: 否
+     * 业务类型: 业务
+     */
+    private String yfbdydyh;
+
+    /**
+     * 业务类型(1-国有建设用地使用权首次登记,2-国有建设用地使用权及房屋所有权首次登记)
+     * 必选: 否
+     * 业务类型: 业务
+     */
+    private String ywlx;
+
+    /**
+     * 是否登簿(Y-是,N-否)
+     * 必选: 否
+     * 业务类型: 业务
+     */
+    private String sfdengbu;
+
+    /**
+     * 登簿日期(yyyy-MM-dd)sfdengbu=Y时必传
+     * 必选: 否
+     * 业务类型: 业务
+     */
+    private String dengburq;
+
+    /**
+     * 权利人名称
+     * 必选: 否
+     * 业务类型: 业务
+     */
+    private String qlrmc;
+
+    /**
+     * 权利人证件号
+     * 必选: 否
+     * 业务类型: 业务
+     */
+    private String qlrzjh;
+
+    /**
+     * 业务号(告知单等关联号,房屋登记建议传)
+     * 必选: 否
+     * 业务类型: 业务
+     */
+    private String ywh;
+
+}

+ 29 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/ThirdRecordStatusMapper.java

@@ -0,0 +1,29 @@
+package com.siwei.apply.mapper;
+
+import com.siwei.apply.domain.vo.ThirdRecordStatusParamVo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 不动产登簿状态表 Mapper 接口
+ */
+@Mapper
+public interface ThirdRecordStatusMapper {
+
+    /**
+     * 插入登簿状态记录
+     */
+    void insert(ThirdRecordStatusParamVo record);
+
+    /**
+     * 根据预赋不动产单元号 或 业务号 查询已存在的记录(用于判重/覆盖更新)
+     * 匹配优先级:yfbdydyh 命中优先,其次 ywh
+     */
+    ThirdRecordStatusParamVo selectByYfbdydyhOrYwh(@Param("yfbdydyh") String yfbdydyh,
+                                                   @Param("ywh") String ywh);
+
+    /**
+     * 根据主键 ID 更新登簿状态信息(覆盖更新)
+     */
+    void updateById(ThirdRecordStatusParamVo record);
+}

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

@@ -4,6 +4,7 @@ import com.siwei.apply.domain.NodeAttachment;
 import com.siwei.apply.domain.vo.HouseFirstParamVo;
 import com.siwei.apply.domain.vo.HouseFirstParamVo;
 import com.siwei.apply.domain.vo.LandFirstParamVo;
 import com.siwei.apply.domain.vo.LandFirstParamVo;
 import com.siwei.apply.domain.vo.ThirdProjectParamVo;
 import com.siwei.apply.domain.vo.ThirdProjectParamVo;
+import com.siwei.apply.domain.vo.ThirdRecordStatusParamVo;
 
 
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -38,4 +39,11 @@ public interface OfferDataService {
     List<Map<String, Object>> landSupplyAndProjectList(ThirdProjectParamVo body) ;
     List<Map<String, Object>> landSupplyAndProjectList(ThirdProjectParamVo body) ;
 
 
 
 
+    Map<String, Object> addRecordStatusData(ThirdRecordStatusParamVo body);
+
+
+
+
+
+
     }
     }

+ 66 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/third/impl/OfferDataServiceImpl.java

@@ -6,6 +6,7 @@ import com.siwei.apply.domain.vo.*;
 import com.siwei.apply.enums.AloneWorkFlowEnum;
 import com.siwei.apply.enums.AloneWorkFlowEnum;
 import com.siwei.apply.mapper.ProjectMapper;
 import com.siwei.apply.mapper.ProjectMapper;
 import com.siwei.apply.mapper.ProjectWorkflowMapper;
 import com.siwei.apply.mapper.ProjectWorkflowMapper;
+import com.siwei.apply.mapper.ThirdRecordStatusMapper;
 import com.siwei.apply.service.GyjsydjfwscdjService;
 import com.siwei.apply.service.GyjsydjfwscdjService;
 import com.siwei.apply.service.GyjsydscdjService;
 import com.siwei.apply.service.GyjsydscdjService;
 import com.siwei.apply.service.NodeAttachmentService;
 import com.siwei.apply.service.NodeAttachmentService;
@@ -14,6 +15,7 @@ import com.siwei.apply.service.third.OfferDataService;
 import com.siwei.apply.utils.ServiceUtil;
 import com.siwei.apply.utils.ServiceUtil;
 import com.siwei.common.core.domain.R;
 import com.siwei.common.core.domain.R;
 import com.siwei.common.core.exception.ServiceException;
 import com.siwei.common.core.exception.ServiceException;
+import com.siwei.common.core.utils.uuid.IdUtils;
 import com.siwei.spatial.api.RemoteSpatialFilesDbService;
 import com.siwei.spatial.api.RemoteSpatialFilesDbService;
 import com.siwei.spatial.api.domain.file.TGeomDb;
 import com.siwei.spatial.api.domain.file.TGeomDb;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -55,6 +57,9 @@ public class OfferDataServiceImpl implements OfferDataService {
     @Autowired
     @Autowired
     private ProjectMapper projectMapper;
     private ProjectMapper projectMapper;
 
 
+    @Autowired
+    private ThirdRecordStatusMapper thirdRecordStatusMapper;
+
 
 
     @Override
     @Override
     public Map<String, String> get(String projectId) {
     public Map<String, String> get(String projectId) {
@@ -85,7 +90,68 @@ public class OfferDataServiceImpl implements OfferDataService {
         return result;
         return result;
     }
     }
 
 
+    @Override
+    public Map<String, Object> addRecordStatusData(ThirdRecordStatusParamVo body) {
+
+        // 字段校验:参考 landFirstRegistration 的校验方式
+        String yfbdydyh = body.getYfbdydyh();
+        if (StringUtils.isBlank(yfbdydyh)) {
+            throw new ServiceException("预赋不动产单元号为空");
+        }
+        if (yfbdydyh.length() != 19) {
+            throw new ServiceException("预赋不动产单元号长度必须为19位");
+        }
 
 
+        String ywlx = body.getYwlx();
+        if (StringUtils.isBlank(ywlx)) {
+            throw new ServiceException("业务类型为空");
+        }
+        if (!"1".equals(ywlx) && !"2".equals(ywlx)) {
+            throw new ServiceException("业务类型只能为1或2");
+        }
+
+        String sfdengbu = body.getSfdengbu();
+        if (StringUtils.isBlank(sfdengbu)) {
+            throw new ServiceException("是否登簿为空");
+        }
+        if (!"Y".equals(sfdengbu) && !"N".equals(sfdengbu)) {
+            throw new ServiceException("是否登簿只能为Y或N");
+        }
+
+        String dengburq = body.getDengburq();
+        if ("Y".equals(sfdengbu)) {
+            if (StringUtils.isBlank(dengburq)) {
+                throw new ServiceException("登簿日期为空");
+            }
+            if (!dengburq.matches("^\\d{4}-\\d{2}-\\d{2}$")) {
+                throw new ServiceException("登簿日期格式必须为yyyy-MM-dd");
+            }
+        }
+
+        String ywh = body.getYwh();
+        if (StringUtils.isBlank(ywh)) {
+            throw new ServiceException("业务号为空");
+        }
+
+        // 入库:以 yfbdydyh 或 ywh 判重,已存在则按主键覆盖更新,避免重复插入
+        ThirdRecordStatusParamVo existing = thirdRecordStatusMapper.selectByYfbdydyhOrYwh(yfbdydyh, ywh);
+        String id;
+        if (existing != null) {
+            // 复用原主键,覆盖更新业务字段
+            id = existing.getId();
+            body.setId(id);
+            thirdRecordStatusMapper.updateById(body);
+        } else {
+            id = IdUtils.fastSimpleUUID();
+            body.setId(id);
+            body.setTbzt("0");
+            thirdRecordStatusMapper.insert(body);
+        }
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("id", id);
+        return map;
+    }
 
 
 
 
     @Override
     @Override

+ 95 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/ThirdRecordStatusMapper.xml

@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.siwei.apply.mapper.ThirdRecordStatusMapper">
+
+    <!-- 结果映射 -->
+    <resultMap id="BaseResultMap" type="com.siwei.apply.domain.vo.ThirdRecordStatusParamVo">
+        <id property="id" column="id"/>
+        <result property="tbzt" column="tbzt"/>
+        <result property="createdAt" column="created_at"/>
+        <result property="updatedAt" column="updated_at"/>
+        <result property="bdydyh" column="bdydyh"/>
+        <result property="yfbdydyh" column="yfbdydyh"/>
+        <result property="ywlx" column="ywlx"/>
+        <result property="sfdengbu" column="sfdengbu"/>
+        <result property="dengburq" column="dengburq"/>
+        <result property="qlrmc" column="qlrmc"/>
+        <result property="qlrzjh" column="qlrzjh"/>
+        <result property="ywh" column="ywh"/>
+    </resultMap>
+
+    <!-- 插入记录 -->
+    <insert id="insert" parameterType="com.siwei.apply.domain.vo.ThirdRecordStatusParamVo">
+        INSERT INTO t_third_record_status (
+            id,
+            tbzt,
+            created_at,
+            updated_at,
+            bdydyh,
+            yfbdydyh,
+            ywlx,
+            sfdengbu,
+            dengburq,
+            qlrmc,
+            qlrzjh,
+            ywh
+        ) VALUES (
+            #{id},
+            #{tbzt},
+            now(),
+            now(),
+            #{bdydyh},
+            #{yfbdydyh},
+            #{ywlx},
+            #{sfdengbu},
+            #{dengburq},
+            #{qlrmc},
+            #{qlrzjh},
+            #{ywh}
+        )
+    </insert>
+
+    <!-- 根据预赋不动产单元号 或 业务号 查询已存在的记录(yfbdydyh 优先) -->
+    <select id="selectByYfbdydyhOrYwh" resultMap="BaseResultMap">
+        SELECT
+            id, tbzt, created_at, updated_at, bdydyh, yfbdydyh, ywlx,
+            sfdengbu, dengburq, qlrmc, qlrzjh, ywh
+        FROM t_third_record_status
+        <where>
+            <choose>
+                <when test="yfbdydyh != null and yfbdydyh != ''">
+                    yfbdydyh = #{yfbdydyh}
+                </when>
+                <when test="ywh != null and ywh != ''">
+                    ywh = #{ywh}
+                </when>
+            </choose>
+        </where>
+        ORDER BY
+            CASE WHEN yfbdydyh = #{yfbdydyh} THEN 0 ELSE 1 END,
+            updated_at DESC
+        LIMIT 1
+    </select>
+
+    <!-- 根据主键 ID 覆盖更新登簿状态信息 -->
+    <update id="updateById" parameterType="com.siwei.apply.domain.vo.ThirdRecordStatusParamVo">
+        UPDATE t_third_record_status
+        <set>
+            <if test="tbzt != null">tbzt = #{tbzt},</if>
+            <if test="bdydyh != null">bdydyh = #{bdydyh},</if>
+            <if test="yfbdydyh != null">yfbdydyh = #{yfbdydyh},</if>
+            <if test="ywlx != null">ywlx = #{ywlx},</if>
+            <if test="sfdengbu != null">sfdengbu = #{sfdengbu},</if>
+            <if test="dengburq != null">dengburq = #{dengburq},</if>
+            <if test="qlrmc != null">qlrmc = #{qlrmc},</if>
+            <if test="qlrzjh != null">qlrzjh = #{qlrzjh},</if>
+            <if test="ywh != null">ywh = #{ywh},</if>
+            updated_at = now()
+        </set>
+        WHERE id = #{id}
+    </update>
+
+</mapper>