Przeglądaj źródła

添加耕地保护,通过图版ID查询接口

LAPTOP-BJJ3IV5R\SIWEI 7 miesięcy temu
rodzic
commit
0f64ddc0b8

+ 121 - 0
onemap-common/onemap-common-core/src/main/java/com/onemap/common/core/utils/NumberUtil.java

@@ -0,0 +1,121 @@
+package com.onemap.common.core.utils;
+
+import java.math.BigDecimal;
+
+public class NumberUtil {
+    private NumberUtil() {
+    }
+
+    /**
+     * 中文数字
+     */
+    private static final String[] CN_NUM = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
+
+    /**
+     * 中文数字单位
+     */
+    private static final String[] CN_UNIT = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千"};
+
+    /**
+     * 特殊字符:负
+     */
+    private static final String CN_NEGATIVE = "负";
+
+    /**
+     * 特殊字符:点
+     */
+    private static final String CN_POINT = "点";
+
+
+    /**
+     * int 转 中文数字
+     * 支持到int最大值
+     *
+     * @param intNum 要转换的整型数
+     * @return 中文数字
+     */
+    public static String int2chineseNum(int intNum) {
+        StringBuffer sb = new StringBuffer();
+        StringBuffer sb2 = new StringBuffer();
+        int intNum2 = intNum;
+        boolean isNegative = false;
+        if (intNum < 0) {
+            isNegative = true;
+            intNum *= -1;
+        }
+        int count = 0;
+        while (intNum > 0) {
+            sb.insert(0, CN_NUM[intNum % 10] + CN_UNIT[count]);
+            intNum = intNum / 10;
+            count++;
+        }
+
+        if (isNegative)
+            sb.insert(0, CN_NEGATIVE);
+        // 10-19时,得到十~十九而不是一十~一十九
+        sb = "一".equals(sb.substring(0, 1)) && intNum2 < 100 && intNum2 > 1 ? sb2.append(sb.substring(1, sb.length())) : sb;
+        return sb.toString().replaceAll("零[千百十]", "零").replaceAll("零+万", "万")
+                .replaceAll("零+亿", "亿").replaceAll("亿万", "亿零")
+                .replaceAll("零+", "零").replaceAll("零$", "");
+    }
+
+    /**
+     * bigDecimal 转 中文数字
+     * 整数部分只支持到int的最大值
+     *
+     * @param bigDecimalNum 要转换的BigDecimal数
+     * @return 中文数字
+     */
+    public static String bigDecimal2chineseNum(BigDecimal bigDecimalNum) {
+        if (bigDecimalNum == null)
+            return CN_NUM[0];
+
+        StringBuffer sb = new StringBuffer();
+
+        // 将小数点后面的零给去除
+        String numStr = bigDecimalNum.abs().stripTrailingZeros().toPlainString();
+
+        String[] split = numStr.split("\\.");
+        String integerStr = int2chineseNum(Integer.parseInt(split[0]));
+
+        sb.append(integerStr);
+
+        // 如果传入的数有小数,则进行切割,将整数与小数部分分离
+        if (split.length == 2) {
+            // 有小数部分
+            sb.append(CN_POINT);
+            String decimalStr = split[1];
+            char[] chars = decimalStr.toCharArray();
+            for (int i = 0; i < chars.length; i++) {
+                int index = Integer.parseInt(String.valueOf(chars[i]));
+                sb.append(CN_NUM[index]);
+            }
+        }
+
+        // 判断传入数字为正数还是负数
+        int signum = bigDecimalNum.signum();
+        if (signum == -1) {
+            sb.insert(0, CN_NEGATIVE);
+        }
+
+        return sb.toString();
+    }
+
+    /**
+     * float 保留两位小数
+     */
+    public static float float2TwoDecimal(Float f) {
+        if (f == null) return 0;
+        BigDecimal b = new BigDecimal(f);
+        return b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
+    }
+
+    /**
+     * double 保留两位小数
+     */
+    public static double double2TwoDecimal(Double d) {
+        if (d == null) return 0;
+        BigDecimal b = new BigDecimal(d);
+        return b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+}

+ 26 - 1
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/gdbh/GdbhController.java

@@ -48,13 +48,38 @@ public class GdbhController extends BaseController {
     }
 
     @GetMapping("/QueryGdbhJg")
-    public RequestResult AddGdbh(String bsm) {
+    public RequestResult QueryGdbhJg(String bsm) {
         if (StringUtils.isEmpty(bsm)) {
             return RequestResult.error("bsm is null");
         }
         return gdbhService.QueryGdbhJg(bsm);
     }
 
+    @GetMapping("/QueryGdbhJg/yz")
+    public RequestResult QueryGdbhJgYz(String bsm, String mxbsm, String yzbsm) {
+        if (StringUtils.isEmpty(bsm)) {
+            return RequestResult.error("bsm is null");
+        }
+        if (StringUtils.isEmpty(mxbsm)) {
+            return RequestResult.error("mxbsm is null");
+        }
+        if (StringUtils.isEmpty(yzbsm)) {
+            return RequestResult.error("yzbsm is null");
+        }
+        return gdbhService.QueryGdbhJgYz(bsm, mxbsm, yzbsm);
+    }
+
+    @GetMapping("/QueryGdbhJg/id")
+    public RequestResult QueryGdbhJgId(String bsm,String id) {
+        if (StringUtils.isEmpty(bsm)) {
+            return RequestResult.error("bsm is null");
+        }
+        if (StringUtils.isEmpty(id)) {
+            return RequestResult.error("id is null");
+        }
+        return gdbhService.QueryGdbhJgId(bsm, id);
+    }
+
     @DeleteMapping("/DeleteGdbh/{bsm}")
     public RequestResult DeleteGdbh(@PathVariable String bsm) {
         RequestResult list = gdbhService.DeleteGdbh(bsm);

+ 2 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/gdbh/GdbhRwJgMapper.java

@@ -13,6 +13,8 @@ public interface GdbhRwJgMapper extends BaseMapper<GdbhRwJgDTO> {
 
     Map<String, Object> selectGdbhRwJgMap(@Param("rwbsm") String rwbsm, @Param("mxbsm") String mxbsm, @Param("yzbsm") String yzbsm);
 
+    Map<String, Object> selectGdbhRwJgMapById(@Param("rwbsm") String rwbsm, @Param("mxbsm") String mxbsm, @Param("yzbsm") String yzbsm,@Param("id") String id);
+
     List<Map<String, Object>> selectGdbhRwJgGroup(@Param("rwbsm") String rwbsm, @Param("mxbsm") String mxbsm, @Param("yzbsm") String yzbsm);
 
 

+ 1 - 1
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/analyse/impl/HttpAnalyseServiceImpl.java

@@ -19,7 +19,7 @@ public class HttpAnalyseServiceImpl implements HttpAnalyseService {
 
     public Object getHttpAnalyse(Object objectVo) {
         RequestResult result = new RequestResult();
-        if (objectVo instanceof IntersectsTableWktVo) {
+        if (objectVo instanceof RawTableVo) {
             result = analyseService.rawTable((RawTableVo) objectVo);
         } else if (objectVo instanceof DistanceTableWktVo) {
             result = analyseService.distanceTableWkt((DistanceTableWktVo) objectVo);

+ 5 - 1
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/gdbh/IGdbhService.java

@@ -12,7 +12,11 @@ public interface IGdbhService {
 
     RequestResult AddGdbh(GdbhDto gdbhDto);
 
-    RequestResult QueryGdbhJg(String bsm) ;
+    RequestResult QueryGdbhJg(String bsm);
+
+    RequestResult QueryGdbhJgYz(String bsm, String mxbsm, String yzbsm);
+
+    RequestResult QueryGdbhJgId(String bsm, String id);
 
     RequestResult DeleteGdbh(String bsm);
 

+ 165 - 1
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/gdbh/impl/GdbhJgService.java

@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.onemap.apply.domain.gdbh.*;
 import com.onemap.apply.mapper.gdbh.*;
 import com.onemap.apply.service.analyse.HttpAnalyseService;
+import com.onemap.common.core.utils.NumberUtil;
 import com.onemap.common.core.utils.StringUtils;
 import com.onemap.common.core.web.domain.RequestResult;
 import com.onemap.system.api.domain.IntersectionTableWktVo;
 import com.onemap.system.api.domain.IntersectsTableWktVo;
+import com.onemap.system.api.domain.RawTableVo;
 import com.onemap.system.api.domain.TargetTableVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -32,7 +34,7 @@ public class GdbhJgService {
     @Autowired
     private GdbhRwMxYzMapper gdbhRwMxYzMapper;
 
-    RequestResult gdbhAnalysisHandle(String rwBsm) {
+    public RequestResult gdbhAnalysisHandle(String rwBsm) {
         QueryWrapper<GdbhDto> wrapper0_1 = new QueryWrapper<>();
         wrapper0_1.eq("bsm", rwBsm);
         GdbhDto gdbhDto = gdbhMapper.selectOne(wrapper0_1);
@@ -100,6 +102,7 @@ public class GdbhJgService {
                 if (StringUtils.isEmpty(bsmmc)) {
                     bsmmc = yiRus.getName();
                 }
+                retMapData0.put("bsm", v_yz_0);
                 retMapData0.put("bsmmc", bsmmc);
                 mxret.add(retMapData0);
             }
@@ -115,4 +118,165 @@ public class GdbhJgService {
         retMap.put("sandiao", d_retMapData1);
         return RequestResult.success(retMap);
     }
+
+    RequestResult QueryGdbhJgYz(String bsm, String mxbsm, String yzbsm) {
+        if (StringUtils.isEmpty(bsm)) {
+            return RequestResult.error("bsm参数为空");
+        }
+        if (StringUtils.isEmpty(mxbsm)) {
+            return RequestResult.error("mxbsm参数为空");
+        }
+        if (StringUtils.isEmpty(yzbsm)) {
+            return RequestResult.error("yzbsm参数为空");
+        }
+        String d_RawTableName = "TB_GPL0";
+        List<Map<String, Object>> d_sandiao = gdbhRwJgMapper.selectGdbhRwJgGroup(bsm, mxbsm, yzbsm);
+        List<String> ids = new ArrayList<>();
+        for (Map<String, Object> mx : d_sandiao) {
+            String idvalue = (String) mx.get("groupvalue");
+            ids.add(idvalue);
+        }
+        if (ids == null || ids.size() == 0) {
+            return RequestResult.error("查询结果为空");
+        }
+        List<String> columns = new ArrayList<>(); // 列名
+        columns.add("id");
+        RawTableVo d0_vo = new RawTableVo();
+        d0_vo.setIds(ids);
+        d0_vo.setSrid(4525);
+        d0_vo.setRawTableName(d_RawTableName);
+        d0_vo.setSiweiArea(true);
+        d0_vo.setIsGeography(false);
+        d0_vo.setColumns(columns);
+        Object objectData = httpAnalyseService.getHttpAnalyse(d0_vo);
+        if (objectData != null) {
+            List<Map> objectDataList = (List<Map>) objectData;
+            for (Map d_map_01 : objectDataList) {
+                d_map_01.put("siweiarea", NumberUtil.double2TwoDecimal(Double.parseDouble(d_map_01.get("siweiarea").toString())));
+            }
+        }
+        return RequestResult.success(objectData);
+    }
+
+    public RequestResult QueryGdbhJgId(String rwBsm, String id) {
+        if (StringUtils.isEmpty(rwBsm)) {
+            return RequestResult.error("bsm参数为空");
+        }
+        if (StringUtils.isEmpty(id)) {
+            return RequestResult.error("id参数为空");
+        }
+
+        QueryWrapper<GdbhDto> wrapper0_1 = new QueryWrapper<>();
+        wrapper0_1.eq("bsm", rwBsm);
+        GdbhDto gdbhDto = gdbhMapper.selectOne(wrapper0_1);
+        if (StringUtils.isNull(gdbhDto)) {
+            return RequestResult.error("未查询到数据");
+        }
+
+        //
+        gdbhDto.setSumMj(255D);
+        gdbhDto.setSumNumber(255);
+
+        //获取范围
+        Map xzfw = gdbhMapper.selectGdbhXzfw(gdbhDto.getXzfw());
+        if (StringUtils.isEmpty(xzfw)) {
+            return RequestResult.error("选址范围参数为空");
+        }
+        Double area = Double.valueOf(xzfw.get("area").toString());
+        String ewkt = (String) xzfw.get("geom");
+        if (StringUtils.isEmpty(ewkt)) {
+            return RequestResult.error("选址范围参数为空");
+        }
+        gdbhDto.setGeom(ewkt);
+        gdbhDto.setXzmj(area);
+
+        //计算1 模型
+        QueryWrapper<GdbhRwMxDto> wrapper0_2 = new QueryWrapper<>();
+        wrapper0_2.eq("rwbsm", rwBsm);
+        List<GdbhRwMxDto> mxlist = gdbhRwMxMapper.selectList(wrapper0_2);
+        //计算
+        if (mxlist == null || mxlist.size() == 0) {
+            return RequestResult.error("模型参数为空");
+        }
+
+        //三调
+        List<Map<String, Object>> ret = new ArrayList<>();
+        for (GdbhRwMxDto mx : mxlist) {
+            Map<String, Object> mxMap = new HashMap<>();
+            List<Map<String, Object>> mxret = new ArrayList<>();
+
+            //计算1 模型
+            QueryWrapper<GdbhRwMxYzDto> wrapper0_3 = new QueryWrapper<>();
+            wrapper0_3.eq("rwbsm", rwBsm);
+            wrapper0_3.eq("mx_bsm", mx.getBsm());
+            List<GdbhRwMxYzDto> yiList = gdbhRwMxYzMapper.selectList(wrapper0_3);
+            if (yiList == null || yiList.size() == 0) {
+                continue;
+            }
+            for (GdbhRwMxYzDto yi : yiList) {
+                String v_yz_0 = yi.getBsm();
+                if (StringUtils.isEmpty(v_yz_0)) {
+                    continue;
+                }
+                //计算1 模型
+                QueryWrapper<GdbhYzDTO> wrapper0_4 = new QueryWrapper<>();
+                wrapper0_4.eq("id", yi.getBsm());
+                GdbhYzDTO yiRus = gdbhYzMapper.selectOne(wrapper0_4);
+
+                Map<String, Object> retMapData0 = gdbhRwJgMapper.selectGdbhRwJgMapById(gdbhDto.getBsm(), mx.getBsm(), v_yz_0, id);
+                String bsmmc = yiRus.getRetbsmmc();
+                if (StringUtils.isEmpty(bsmmc)) {
+                    bsmmc = yiRus.getName();
+                }
+                retMapData0.put("bsm", v_yz_0);
+                retMapData0.put("bsmmc", bsmmc);
+                mxret.add(retMapData0);
+            }
+            mxMap.put("mx_bsm", mx.getBsm());
+            mxMap.put("mx_bsmmc", mx.getBsmmc());
+            mxMap.put("mx_data", mxret);
+            ret.add(mxMap);
+        }
+
+        String d_RawTableName = "TB_GPL0";
+        List<String> ids = new ArrayList<>();
+        ids.add(id);
+
+        List<String> columns = new ArrayList<>(); // 列名
+        columns.add("tbbh");
+        columns.add("nfqsmc");
+        columns.add("xfrq");
+        columns.add("mj");
+        columns.add("zygdmj");
+        columns.add("zyjbntmj");
+        columns.add("qsx");
+        columns.add("hsx");
+        columns.add("qqyxmc");
+        columns.add("dqyxmc");
+        columns.add("tbfl");
+        columns.add("bz");
+        columns.add("sfhcmc");
+        columns.add("sfdcmc");
+
+        RawTableVo d0_vo = new RawTableVo();
+        d0_vo.setIds(ids);
+        d0_vo.setSrid(4525);
+        d0_vo.setRawTableName(d_RawTableName);
+        d0_vo.setSiweiArea(true);
+        d0_vo.setIsGeography(false);
+        d0_vo.setColumns(columns);
+        Object objectData = httpAnalyseService.getHttpAnalyse(d0_vo);
+        Map<String, Object> retMap = new HashMap<>();
+        retMap.put("yzjg", ret);
+        if (objectData != null) {
+            List<Map> objectDataList = (List<Map>) objectData;
+            for (Map d_map_01 : objectDataList) {
+                d_map_01.put("siweiarea", NumberUtil.double2TwoDecimal(Double.parseDouble(d_map_01.get("siweiarea").toString())));
+            }
+            if (objectDataList != null && objectDataList.size() > 0) {
+                retMap.put("tbxx", objectDataList.get(0));
+            }
+        }
+        return RequestResult.success(retMap);
+    }
 }

+ 10 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/gdbh/impl/GdbhServiceImpl.java

@@ -82,6 +82,16 @@ public class GdbhServiceImpl implements IGdbhService {
         return gdbhJgService.gdbhAnalysisHandle(bsm);
     }
 
+    @Override
+    public RequestResult QueryGdbhJgYz(String bsm, String mxbsm, String yzbsm) {
+        return gdbhJgService.QueryGdbhJgYz(bsm, mxbsm, yzbsm);
+    }
+
+    @Override
+    public RequestResult QueryGdbhJgId(String bsm, String id) {
+        return gdbhJgService.QueryGdbhJgId(bsm, id);
+    }
+
 
     @Override
     public RequestResult AddGdbh(GdbhDto gdbhDto) {

+ 10 - 0
onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/gdbh/GdbhRwJgMapper.xml

@@ -18,6 +18,16 @@
         )t1
     </select>
 
+    <select id="selectGdbhRwJgMapById" resultType="map">
+        SELECT round(coalesce(sum(t1.sumvalue),0),2) sumvalue, count(*) sumcount ,
+               public.st_asewkt(public.st_union(geomvalue)) geom from  (
+           select groupvalue, sum(sumvalue::numeric)::numeric sumvalue,
+                   public.st_union(geomvalue) geomvalue FROM t_gdbh_rw_jg
+           WHERE rwbsm = #{rwbsm} and yz_bsm = #{yzbsm} and mx_bsm = #{mxbsm} and groupvalue = #{id}
+           group by groupvalue
+       )t1
+    </select>
+
     <select id="selectGdbhRwJgGroup" resultType="map">
         select groupvalue, round(sum(sumvalue::numeric)::numeric,2) sumvalue,
          public.st_asewkt(public.st_union(geomvalue)) geom FROM t_gdbh_rw_jg