Sfoglia il codice sorgente

pewg查询接口修改

liutao 1 settimana fa
parent
commit
de54da238b

+ 5 - 0
YHYZT/server/src/main/java/com/zjugis/yzt/beans/entity/Pewg.java

@@ -98,6 +98,11 @@ public class Pewg {
      */
     private String nczsj;
 
+    /**
+     * 剩余面积
+     */
+    private BigDecimal area;
+
 
     private String shape;
 } 

+ 8 - 12
YHYZT/server/src/main/java/com/zjugis/yzt/controller/PewgController.java

@@ -21,10 +21,10 @@ public class PewgController extends BaseRestController {
     private PewgService pewgService;
 
     /**
-     * 获取批而未供信息(分页)
+     * 获取批而未供信息(分页)- 使用SQL查询,包含面积计算
      */
     @GetMapping("/page")
-    public IPage<PewgVO> getPewgList(
+    public IPage<PewgVO> getPewgListWithArea(
             @RequestParam(defaultValue = "1") Integer current,
             @RequestParam(defaultValue = "10") Integer size,
             @RequestParam(required = false) String dkMc,      // 项目名称
@@ -56,17 +56,19 @@ public class PewgController extends BaseRestController {
             queryWrapper.like("ghyt", ghyt);
         }
         Page<Pewg> page = new Page<>(current, size);
-        IPage<Pewg> pewgPage = pewgService.page(page, queryWrapper);
+        // 使用新的SQL查询方法,包含面积计算
+        IPage<Pewg> pewgPage = pewgService.pageWithArea(page, queryWrapper);
 
         return pewgPage.convert(this::convertToVO);
     }
 
+
     /**
      * 根据ID获取批而未供信息
      */
     @GetMapping("/{id}")
     public PewgVO getPewgById(@PathVariable Integer id) {
-        Pewg pewg = pewgService.getById(id);
+        Pewg pewg = pewgService.getByIdWithArea(id);
         return convertToVO(pewg);
     }
 
@@ -127,13 +129,7 @@ public class PewgController extends BaseRestController {
         }
         PewgVO vo = new PewgVO();
         BeanUtils.copyProperties(pewg, vo);
-        // 通过数据库st_area(shape)函数获取面积
-        if (pewg.getObjectid() != null) {
-            Double area = pewgService.getAreaById(pewg.getObjectid());
-            if (area != null) {
-                vo.setArea(new java.math.BigDecimal(area));
-            }
-        }
         return vo;
     }
-} 
+
+}

+ 63 - 8
YHYZT/server/src/main/java/com/zjugis/yzt/dao/PewgMapper.java

@@ -1,25 +1,80 @@
 package com.zjugis.yzt.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zjugis.yzt.beans.entity.Pewg;
 import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Select;
-import org.apache.ibatis.annotations.Update;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface PewgMapper extends BaseMapper<Pewg> {
+    
     /**
-     * @param id
-     * @param shape
-     * @param wkid
-     * @return
+     * 更新shape字段
+     * @param id objectid
+     * @param shape WKT字符串
+     * @param wkid 坐标系ID
+     * @return 更新行数
      */
-    @Update("UPDATE pewg SET shape = st_geometry(#{shape}, #{wkid}) WHERE objectid = #{id}")
     int updateShapeById(Integer id, String shape, int wkid);
 
     /**
      * 根据objectid查询shape的面积(平方米)
+     * @param objectid 对象ID
+     * @return 面积
      */
-    @Select("SELECT st_area(shape) FROM sde.pewg WHERE objectid = #{objectid}")
     Double selectAreaById(Integer objectid);
+
+    /**
+     * 使用SQL查询pewg表,包含所有字段和面积计算(分页)
+     * @param page 分页对象
+     * @param queryWrapper 查询条件
+     * @return 分页结果
+     */
+    IPage<Pewg> selectPewgWithArea(Page<Pewg> page, @Param("ew") Object queryWrapper);
+
+    /**
+     * 使用SQL查询pewg表,包含所有字段和面积计算(不分页)
+     * @param queryWrapper 查询条件
+     * @return 结果列表
+     */
+    List<Pewg> selectPewgListWithArea(@Param("ew") Object queryWrapper);
+
+    /**
+     * 根据条件查询pewg列表(包含面积)
+     * @param params 查询参数
+     * @return 结果列表
+     */
+    List<Pewg> selectPewgListByCondition(Map<String, Object> params);
+
+    /**
+     * 根据ID查询pewg详情(包含面积)
+     * @param objectid 对象ID
+     * @return pewg对象
+     */
+    Pewg selectPewgByIdWithArea(Integer objectid);
+
+    /**
+     * 统计pewg总面积
+     * @return 总面积
+     */
+    Double selectTotalArea();
+
+    /**
+     * 根据批次统计面积
+     * @param pcbh 批次编号
+     * @return 面积
+     */
+    Double selectAreaByPcbh(String pcbh);
+
+    /**
+     * 根据ID查询pewg详情,返回所有字段和面积
+     * @param id 对象ID
+     * @return pewg对象
+     */
+    Pewg selectByIdWithArea(Integer id);
 } 

+ 14 - 2
YHYZT/server/src/main/java/com/zjugis/yzt/service/PewgService.java

@@ -1,8 +1,14 @@
 package com.zjugis.yzt.service;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zjugis.yzt.beans.entity.Pewg;
 
+import java.util.List;
+import java.util.Map;
+
 public interface PewgService extends IService<Pewg> {
     /**
      * 根据pcbh将st_nzydk中"是否农民建房"为"否"的数据批量插入pewg表,并更新shape
@@ -10,7 +16,13 @@ public interface PewgService extends IService<Pewg> {
     void importFromNzydkByPcbh(String pcbh);
 
     /**
-     * 根据objectid获取shape面积(平方米
+     * 使用SQL查询pewg表,包含所有字段和面积计算(分页
      */
-    Double getAreaById(Integer objectid);
+    IPage<Pewg> pageWithArea(Page<Pewg> page, Wrapper<Pewg> queryWrapper);
+
+    /**
+     * 根据ID查询pewg详情(包含面积)
+     */
+    Pewg getByIdWithArea(Integer objectid);
+
 } 

+ 13 - 3
YHYZT/server/src/main/java/com/zjugis/yzt/service/impl/PewgServiceImpl.java

@@ -1,6 +1,9 @@
 package com.zjugis.yzt.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zjugis.yzt.beans.entity.Pewg;
 import com.zjugis.yzt.dao.PewgMapper;
@@ -83,7 +86,14 @@ public class PewgServiceImpl extends ServiceImpl<PewgMapper, Pewg> implements Pe
     }
 
     @Override
-    public Double getAreaById(Integer objectid) {
-        return pewgMapper.selectAreaById(objectid);
+    public IPage<Pewg> pageWithArea(Page<Pewg> page, Wrapper<Pewg> queryWrapper) {
+        return pewgMapper.selectPewgWithArea(page, queryWrapper);
     }
-} 
+
+    @Override
+    public Pewg getByIdWithArea(Integer id) {
+        return pewgMapper.selectByIdWithArea(id);
+    }
+
+
+}

+ 103 - 0
YHYZT/server/src/main/resources/mapper/PewgMapper.xml

@@ -0,0 +1,103 @@
+<?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.zjugis.yzt.dao.PewgMapper">
+    
+    <!-- 更新shape字段 -->
+    <update id="updateShapeById">
+        UPDATE pewg SET shape = st_geometry(#{shape}, #{wkid}) WHERE objectid = #{id}
+    </update>
+
+    <!-- 根据objectid查询shape的面积(平方米) -->
+    <select id="selectAreaById" parameterType="java.lang.Integer" resultType="java.lang.Double">
+        SELECT st_area(shape) FROM sde.pewg WHERE objectid = #{objectid}
+    </select>
+
+    <!-- 使用SQL查询pewg表,包含所有字段和面积计算(分页) -->
+    <select id="selectPewgWithArea" resultType="com.zjugis.yzt.beans.entity.Pewg">
+        SELECT 
+            objectid, pcbh, pch, dk_bh, dk_mc, xzz, dk_yt, td_zl, dk_mj, dk_qs, lx, pwh, pzrq, pz_mj, nmjf, bz, wgyy, lyjz, nczfs, nczsj,
+            st_astext(shape) as shape,
+            st_area(shape) as area
+        FROM sde.pewg
+        <where>
+            <if test="ew != null">
+                ${ew.sqlSegment}
+            </if>
+        </where>
+    </select>
+
+    <!-- 使用SQL查询pewg表,包含所有字段和面积计算(不分页) -->
+    <select id="selectPewgListWithArea" resultType="com.zjugis.yzt.beans.entity.Pewg">
+        SELECT 
+            objectid, pcbh, pch, dk_bh, dk_mc, xzz, dk_yt, td_zl, dk_mj, dk_qs, lx, pwh, pzrq, pz_mj, nmjf, bz, wgyy, lyjz, nczfs, nczsj,
+            st_astext(shape) as shape,
+            st_area(shape) as area
+        FROM sde.pewg
+        <where>
+            <if test="ew != null">
+                ${ew.sqlSegment}
+            </if>
+        </where>
+    </select>
+
+    <!-- 根据条件查询pewg列表(包含面积) -->
+    <select id="selectPewgListByCondition" parameterType="java.util.Map" resultType="com.zjugis.yzt.beans.entity.Pewg">
+        SELECT 
+            objectid, pcbh, pch, dk_bh, dk_mc, xzz, dk_yt, td_zl, dk_mj, dk_qs, lx, pwh, pzrq, pz_mj, nmjf, bz, wgyy, lyjz, nczfs, nczsj,
+            st_astext(shape) as shape,
+            st_area(shape) as area
+        FROM sde.pewg
+        <where>
+            <if test="pcbh != null and pcbh != ''">
+                AND pcbh LIKE '%' || #{pcbh} || '%'
+            </if>
+            <if test="dkMc != null and dkMc != ''">
+                AND dk_mc LIKE '%' || #{dkMc} || '%'
+            </if>
+            <if test="xzz != null and xzz != ''">
+                AND xzz LIKE '%' || #{xzz} || '%'
+            </if>
+            <if test="dkYt != null and dkYt != ''">
+                AND dk_yt LIKE '%' || #{dkYt} || '%'
+            </if>
+            <if test="wgyy != null and wgyy != ''">
+                AND wgyy LIKE '%' || #{wgyy} || '%'
+            </if>
+            <if test="lx != null and lx != ''">
+                AND lx LIKE '%' || #{lx} || '%'
+            </if>
+        </where>
+        ORDER BY objectid DESC
+    </select>
+
+    <!-- 根据ID查询pewg详情(包含面积) -->
+    <select id="selectPewgByIdWithArea" parameterType="java.lang.Integer" resultType="com.zjugis.yzt.beans.entity.Pewg">
+        SELECT 
+            objectid, pcbh, pch, dk_bh, dk_mc, xzz, dk_yt, td_zl, dk_mj, dk_qs, lx, pwh, pzrq, pz_mj, nmjf, bz, wgyy, lyjz, nczfs, nczsj,
+            st_astext(shape) as shape,
+            st_area(shape) as area
+        FROM sde.pewg 
+        WHERE objectid = #{objectid}
+    </select>
+
+    <!-- 统计pewg总面积 -->
+    <select id="selectTotalArea" resultType="java.lang.Double">
+        SELECT SUM(st_area(shape)) FROM sde.pewg
+    </select>
+
+    <!-- 根据批次统计面积 -->
+    <select id="selectAreaByPcbh" parameterType="java.lang.String" resultType="java.lang.Double">
+        SELECT SUM(st_area(shape)) FROM sde.pewg WHERE pcbh = #{pcbh}
+    </select>
+
+    <!-- 根据ID查询pewg详情,返回所有字段和面积 -->
+    <select id="selectByIdWithArea" parameterType="java.lang.Integer" resultType="com.zjugis.yzt.beans.entity.Pewg">
+        SELECT 
+            objectid, pcbh, pch, dk_bh, dk_mc, xzz, dk_yt, td_zl, dk_mj, dk_qs, lx, pwh, pzrq, pz_mj, nmjf, bz, wgyy, lyjz, nczfs, nczsj,
+            st_astext(shape) as shape,
+            st_area(shape) as area
+        FROM sde.pewg 
+        WHERE objectid = #{id}
+    </select>
+
+</mapper>