瀏覽代碼

修改中图报文生成功能

LAPTOP-BJJ3IV5R\SIWEI 1 年之前
父節點
當前提交
17e38f9bac
共有 20 個文件被更改,包括 783 次插入479 次删除
  1. 116 88
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/SanYaController.java
  2. 17 54
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/BenchmarkLandPriceReport.java
  3. 38 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/BenchmarkLandPriceTotal.java
  4. 40 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/BCBZ.java
  5. 87 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/CompensateEstimateReport.java
  6. 21 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/CqZBData.java
  7. 13 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/GyList.java
  8. 19 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/QmResult.java
  9. 18 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/QmZBData.java
  10. 24 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/ZdResult.java
  11. 18 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/ZdZBData.java
  12. 31 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/cqResult.java
  13. 53 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/list.java
  14. 0 218
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CompensateEstimateReport.java
  15. 14 6
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/LandPriceEstimation.java
  16. 32 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/ghdkDetailedDjList.java
  17. 111 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/mergeCell/JZDJTableRenderPolicy.java
  18. 34 72
      onemap-modules/onemap-model/src/main/resources/template/word/03-征收补偿预估报告-02.docx
  19. 23 36
      onemap-modules/onemap-model/src/main/resources/template/word/04-基准地价报告-02.docx
  20. 74 5
      sql/pgsql/0_init.sql

+ 116 - 88
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/SanYaController.java

@@ -1,6 +1,5 @@
 package com.onemap.sanya.controller;
 
-import com.alibaba.cloud.commons.io.FileUtils;
 import com.alibaba.fastjson.util.IOUtils;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
@@ -14,17 +13,15 @@ import com.deepoove.poi.template.MetaTemplate;
 import com.deepoove.poi.template.run.RunTemplate;
 import com.onemap.common.core.utils.StringUtils;
 import com.onemap.common.core.web.controller.BaseController;
-import com.onemap.common.core.web.domain.AjaxResult;
 import com.onemap.sanya.domain.*;
+import com.onemap.sanya.domain.CQBC.CompensateEstimateReport;
 import com.onemap.sanya.domain.mergeCell.AnalyseDetailTablePolicy;
-import com.onemap.system.api.domain.SysUser;
-import com.onemap.system.api.factory.RemoteLogFallbackFactory;
+import com.onemap.sanya.domain.mergeCell.JZDJTableRenderPolicy;
 import org.apache.poi.xwpf.usermodel.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.util.ClassUtils;
-import org.springframework.util.ResourceUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -136,20 +133,34 @@ public class SanYaController extends BaseController {
      * @param response
      */
     @RequestMapping("/exportWord3")
-    private void exportWord3(HttpServletRequest request, HttpServletResponse response) {
+    private void exportWord3(@RequestBody CompensateEstimateReport compensateEstimateReport, HttpServletRequest request, HttpServletResponse response) {
         try {
-            CompensateEstimateReport compensateEstimateReport = setWordData3();
+
+//            CompensateEstimateReport compensateEstimateReport = setWordData3();
             if (compensateEstimateReport == null) {
                 log.info("征收补偿预估报告数据为空,导出失败!");
                 return;
             }
+            //总费用预估
+            Double feeETC=compensateEstimateReport.getZdResult().getTotalPay()+compensateEstimateReport.getQmResult().getTotalPay()+compensateEstimateReport.getCqResult().getTotalPay();
+            compensateEstimateReport.setFeeETC(feeETC);
+            //房屋拆迁补偿费预估
+            compensateEstimateReport.setFeeECLA(compensateEstimateReport.getZdResult().getTotalPay());
+            //征地费用预估
+            compensateEstimateReport.setFeeECHD(compensateEstimateReport.getCqResult().getTotalPay());
+            //青苗补偿费预估
+            compensateEstimateReport.setFeeECYC(compensateEstimateReport.getQmResult().getTotalPay());
+
+
 
             ClassPathResource classPathResource = new ClassPathResource("template/word/"+"03-征收补偿预估报告-02.docx");
             InputStream inputStream = classPathResource.getInputStream();
 
 
             Configure configure = Configure.builder()
-                    .bind("tableList01", new LoopRowTableRenderPolicy()).build();
+                    .bind("cqZBData.BCBZ", new LoopRowTableRenderPolicy())
+                    .bind("cqResult.list", new LoopRowTableRenderPolicy())
+                    .build();
             // 通过 XWPFTemplate 编译文件并渲染数据到模板中
             XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(compensateEstimateReport);
             //生成临时文件存放地址
@@ -171,46 +182,63 @@ public class SanYaController extends BaseController {
     @RequestMapping("/exportWord4")
     private void exportWord4(@RequestBody BenchmarkLandPriceReport benchmarkLandPriceReport, HttpServletRequest request, HttpServletResponse response) {
         try {
-//            BenchmarkLandPriceReport benchmarkLandPriceReport = setWordData4();
             if (benchmarkLandPriceReport == null) {
                 log.info("基准地价报告数据为空,导出失败!");
                 return ;
             }
             List<PicData> picList = new ArrayList<>();
-            //将base64图片转为PictureRenderData
-            for (String base64ImageData:benchmarkLandPriceReport.getPicBase64List()) {
-                System.out.println("base64ImageData::::::::::::"+base64ImageData);
-                PictureRenderData pictureRenderData =Pictures.ofBase64(base64ImageData, PictureType.JPEG).size(300, 200).create();
-                picList.add(new PicData(pictureRenderData));
+            if(benchmarkLandPriceReport.getPicBase64List().size()>0){
+                //将base64图片转为PictureRenderData
+                for (String base64ImageData:benchmarkLandPriceReport.getPicBase64List()) {
+
+                    PictureRenderData pictureRenderData =Pictures.ofBase64(base64ImageData, PictureType.JPEG).size(300, 200).create();
+                    picList.add(new PicData(pictureRenderData));
+                }
+                benchmarkLandPriceReport.setPicList(picList);
             }
-            benchmarkLandPriceReport.setPicList(picList);
 
+            //组合地块价格详情
             ClassPathResource classPathResource = new ClassPathResource("template/word/"+"04-基准地价报告-02.docx");
             InputStream inputStream = classPathResource.getInputStream();
+            List<LandPriceEstimation> landPriceEstimationList = new ArrayList<>();
+            for (ghdkDetailedDjList ghdkDetailedDj: benchmarkLandPriceReport.getGhdkDetailedDjList()){
+                for (LandPriceEstimation landPriceEstimation :ghdkDetailedDj.getZytdList()){
+                    landPriceEstimation.setDkbm(ghdkDetailedDj.getDkbm());
+                    landPriceEstimation.setGhyt(ghdkDetailedDj.getGhyt());
+                    landPriceEstimationList.add(landPriceEstimation);
 
+                }
+            }
+            benchmarkLandPriceReport.setDetailedDJList(landPriceEstimationList);
+
+            //组合地块类型分组计算分组总价
+            Map<String, Double[]> groupSums = new HashMap<>();
 
+            // 遍历数组并按groupName分组,同时初始化value1和value2的和为0
+            for (LandPriceEstimation item : landPriceEstimationList) {
+                groupSums.putIfAbsent(item.getGhyt(), new Double[]{0.0, 0.0});
+                Double[] sums = groupSums.get(item.getGhyt());
+                sums[0] += item.getArea(); // 更新value1的和
+                sums[1] += item.getZdj(); // 更新value2的和
+            }
+
+            // 将Map转换为ArrayList
+            List<BenchmarkLandPriceTotal> benchmarkLandPriceTotals = new ArrayList<>();
+            for (Map.Entry<String, Double[]> entry : groupSums.entrySet()) {
+                benchmarkLandPriceTotals.add(new BenchmarkLandPriceTotal(entry.getKey(), entry.getValue()[0], entry.getValue()[1]));
+            }
+            benchmarkLandPriceReport.setBenchmarkLandPriceTotalList(benchmarkLandPriceTotals);
 
+
+
+            //导入表格渲染配置
             Configure configure = Configure.builder()
-                    .bind("tableList01", new LoopRowTableRenderPolicy())
-                    .bind("tableList02", new LoopRowTableRenderPolicy()).build();
+                    .bind("benchmarkLandPriceTotalList", new LoopRowTableRenderPolicy())
+                    .bind("DetailedDJList", new JZDJTableRenderPolicy()).build();
             // 通过 XWPFTemplate 编译文件并渲染数据到模板中
             XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(benchmarkLandPriceReport);
-            List<MetaTemplate> elementTemplates = template.getElementTemplates();
-            for (MetaTemplate elementTemplate : elementTemplates) {
-                String variable = elementTemplate.variable();
-                if ("{{tableList01}}".equals(variable) || "{{tableList02}}".equals(variable)) {
-                    RunTemplate runTemplate = (RunTemplate) elementTemplate;
-                    XWPFRun run = runTemplate.getRun();
-                    XWPFTableCell cell = (XWPFTableCell) ((XWPFParagraph) run.getParent()).getBody();
-                    List<XWPFTableRow> rows = cell.getTableRow().getTable().getRows();
-                    int rowIndex = rows.indexOf(cell.getTableRow());
-                    XWPFTable table = cell.getTableRow().getTable();
-                    table.removeRow(rowIndex);
-                }
-            }
-            //生成文件存放地址
-//            String temDir = this.getClass().getClassLoader().getResource("template/storageword/").getPath();
-            //ClassUtils.getDefaultClassLoader().getResource("").getPath() + "template/storageword/";;
+
+
             //生成文件名
             String wordName = "04-基准地价报告-02" + "-" + System.currentTimeMillis();
             writeWord(response, null, wordName, template);
@@ -476,61 +504,61 @@ public class SanYaController extends BaseController {
      *
      * @return
      */
-    private CompensateEstimateReport setWordData3() {
-        try {
-            CompensateEstimateReport compensateEstimateReport = new CompensateEstimateReport();
-//            // 模拟数据 读取静态JSON文件填充数据  根据resource文件路径,生成文件
-//            File jsonFile = ResourceUtils.getFile("classpath:template/json/word.json");
-//            // 解析文件为指定编码的字符串
-//            String json = FileUtils.readFileToString(jsonFile, "UTF-8");
-
-            ClassPathResource classPathResource = new ClassPathResource("template/json/word.json");
-            InputStream inputStream = classPathResource.getInputStream();
-            String json = org.apache.commons.io.IOUtils.toString(inputStream, StandardCharsets.UTF_8);
-
-            // 转换格式
-            JSONObject jsonObject = JSON.parseObject(json);
-            // 读取模拟数据 并赋值给导出对象
-            String wordDataJson = jsonObject.get("wordData3").toString();
-            compensateEstimateReport = JSON.parseObject(wordDataJson, CompensateEstimateReport.class);
-            //模拟读取静态图片 赋值给导出对象
-            String imgPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "template/img/test.png";
-            PictureRenderData pictureRenderData = Pictures.ofLocal(imgPath).size(300, 200).create();
-            List<PicData> picList = new ArrayList<>();
-            picList.add(new PicData(pictureRenderData));
-            picList.add(new PicData(pictureRenderData));
-            picList.add(new PicData(pictureRenderData));
-            compensateEstimateReport.setPicList(picList);
-
-            //模拟 3.2房屋补偿费预估->各个房屋补偿情况 数据
-            List<HouseCompensate> tableList01 = new ArrayList<>();
-            for (int i = 0; i < 10; i++) {
-                tableList01.add(new HouseCompensate(i, "房屋编号" + i, "产权人" + i, new Random().nextInt(100), "房屋结构" + i, new Random().nextInt(100), "房屋地址" + i));
-            }
-            //根据各个房屋补偿情况统计面积,拆迁款等内容 初始为0
-            int numberEHD = 0;
-            int feeECHD = 0;
-            int totalFA = 0;
-            int averageFeeECHD = 0;
-            if (tableList01 != null && tableList01.size() > 0) {
-                numberEHD = tableList01.size();
-                feeECHD = tableList01.stream().mapToInt(obj -> obj.getFeeCHD() != null ? obj.getFeeCHD() : 0).sum();
-                totalFA = tableList01.stream().mapToInt(obj -> obj.getFloorArea() != null ? obj.getFloorArea() : 0).sum();
-                averageFeeECHD = feeECHD / totalFA;
-            }
-            // 赋值导出对象
-            compensateEstimateReport.setTableList01(tableList01);
-            compensateEstimateReport.setNumberEHD(numberEHD);
-            compensateEstimateReport.setFeeECHD(feeECHD);
-            compensateEstimateReport.setTotalFA(totalFA);
-            compensateEstimateReport.setAverageFeeECHD(averageFeeECHD);
-            return compensateEstimateReport;
-        } catch (Exception e) {
-            e.printStackTrace();
-            log.error("征收补偿预估报告封装异常,{}" + e);
-        }
-        return null;
-    }
+//    private CompensateEstimateReport setWordData3() {
+//        try {
+//            CompensateEstimateReport compensateEstimateReport = new CompensateEstimateReport();
+////            // 模拟数据 读取静态JSON文件填充数据  根据resource文件路径,生成文件
+////            File jsonFile = ResourceUtils.getFile("classpath:template/json/word.json");
+////            // 解析文件为指定编码的字符串
+////            String json = FileUtils.readFileToString(jsonFile, "UTF-8");
+//
+//            ClassPathResource classPathResource = new ClassPathResource("template/json/word.json");
+//            InputStream inputStream = classPathResource.getInputStream();
+//            String json = org.apache.commons.io.IOUtils.toString(inputStream, StandardCharsets.UTF_8);
+//
+//            // 转换格式
+//            JSONObject jsonObject = JSON.parseObject(json);
+//            // 读取模拟数据 并赋值给导出对象
+//            String wordDataJson = jsonObject.get("wordData3").toString();
+//            compensateEstimateReport = JSON.parseObject(wordDataJson, CompensateEstimateReport.class);
+//            //模拟读取静态图片 赋值给导出对象
+//            String imgPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "template/img/test.png";
+//            PictureRenderData pictureRenderData = Pictures.ofLocal(imgPath).size(300, 200).create();
+//            List<PicData> picList = new ArrayList<>();
+//            picList.add(new PicData(pictureRenderData));
+//            picList.add(new PicData(pictureRenderData));
+//            picList.add(new PicData(pictureRenderData));
+//            compensateEstimateReport.setPicList(picList);
+//
+//            //模拟 3.2房屋补偿费预估->各个房屋补偿情况 数据
+//            List<HouseCompensate> tableList01 = new ArrayList<>();
+//            for (int i = 0; i < 10; i++) {
+//                tableList01.add(new HouseCompensate(i, "房屋编号" + i, "产权人" + i, new Random().nextInt(100), "房屋结构" + i, new Random().nextInt(100), "房屋地址" + i));
+//            }
+//            //根据各个房屋补偿情况统计面积,拆迁款等内容 初始为0
+//            int numberEHD = 0;
+//            int feeECHD = 0;
+//            int totalFA = 0;
+//            int averageFeeECHD = 0;
+//            if (tableList01 != null && tableList01.size() > 0) {
+//                numberEHD = tableList01.size();
+//                feeECHD = tableList01.stream().mapToInt(obj -> obj.getFeeCHD() != null ? obj.getFeeCHD() : 0).sum();
+//                totalFA = tableList01.stream().mapToInt(obj -> obj.getFloorArea() != null ? obj.getFloorArea() : 0).sum();
+//                averageFeeECHD = feeECHD / totalFA;
+//            }
+//            // 赋值导出对象
+//            compensateEstimateReport.setTableList01(tableList01);
+//            compensateEstimateReport.setNumberEHD(numberEHD);
+//            compensateEstimateReport.setFeeECHD(feeECHD);
+//            compensateEstimateReport.setTotalFA(totalFA);
+//            compensateEstimateReport.setAverageFeeECHD(averageFeeECHD);
+//            return compensateEstimateReport;
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            log.error("征收补偿预估报告封装异常,{}" + e);
+//        }
+//        return null;
+//    }
 
     /**
      * 封装-基准地价报告导出数据

+ 17 - 54
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/BenchmarkLandPriceReport.java

@@ -27,10 +27,8 @@ public class BenchmarkLandPriceReport {
      * 分析时间
      */
     private String analysisDate;
-    /**
-     * 项目类型
-     */
-    private String projectType;
+
+
     /**
      * 建设单位
      */
@@ -40,71 +38,36 @@ public class BenchmarkLandPriceReport {
      */
     private String analysisArea;
     /**
-     * 总地价(万元)
-     * 国有+集体 总地价预估合计
+     * 规划地块计算面积(平方米)
      */
-    private Double totalLandPrice;
+    private String ParticipationArea;
     /**
-     * 国有建设用地面积(平方米)
-     * 国有 土地面积合计
-     */
-    private Double areaSCL;
-    /**
-     * 国有建设用地基准地价(万元)
-     */
-    private Double baseLandPriceSCL;
-    /**
-     * 集体建设用地面积(平方米)
-     * 集体 土地面积合计
-     */
-    private Double areaCCL;
-    /**
-     * 集体建设用地基准地价(万元)
+     * 总地价(万元)
+     * 总地价预估合计
      */
-    private Double baseLandPriceCCL;
-
+    private Double totalLandPrice;
     /**
      * 图片集 分析范围
      */
     private List<PicData> picList;
     private List<String> picBase64List;
     /**
-     * 报告类型名称
+     * 规划地块信息列表
      */
-    private String definitionBLP;
-
-    /**
-     * 国有+集体土地面积合计 平方米
-     * tableList01 土地面积 + tableList01土地面积
-     */
-    private Double totalArea;
+    @Name("ghdkDetailedDjList")
+    private List<ghdkDetailedDjList> ghdkDetailedDjList;
 
 
+    //整合后传入渲染的字段
     /**
-     * 国有土地地价预估  万元
-     * 国有 总地价预估合计
-     * tableList01 总地价预估 累加
+     * 地块分类总价
      */
-    private Double landPriceESCL;
+    @Name("benchmarkLandPriceTotalList")
+    private List<BenchmarkLandPriceTotal> benchmarkLandPriceTotalList;
 
     /**
-     * 集体土地地价预估  万元
-     * 集体 总地价预估合计
-     * tableList02 总地价预估 累加
+     * 具体地价
      */
-    private Double landPriceECCL;
-
-    /**
-     * 国有建设用地
-     */
-    @Name("tableList01")
-    private List<LandPriceEstimation> tableList01;
-
-    /**
-     * 集体建设用地
-     */
-    @Name("tableList02")
-    private List<LandPriceEstimation> tableList02;
-
-
+    @Name("DetailedDJList")
+    private List<LandPriceEstimation> DetailedDJList;
 }

+ 38 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/BenchmarkLandPriceTotal.java

@@ -0,0 +1,38 @@
+package com.onemap.sanya.domain;
+
+import com.deepoove.poi.expression.Name;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 基准地价报告
+ *
+ * @author Zzz
+ * @create 2024/6/13 13:17
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class BenchmarkLandPriceTotal {
+
+
+    /**
+     * 规划地块名称
+     */
+    private String ghdkName;
+    /**
+     * 计算地块的总面积
+     */
+    private Double JStotalArea;
+
+
+    /**
+     * 计算地块的总价格
+     */
+    private Double JSprice;
+
+
+}

+ 40 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/BCBZ.java

@@ -0,0 +1,40 @@
+package com.onemap.sanya.domain.CQBC;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class BCBZ {
+    @JsonProperty("TDCZ")
+    private Integer TDCZ;
+    @JsonProperty("TDBCBS")
+    private Integer TDBCBS;
+    @JsonProperty("TDBCF")
+    private Integer TDBCF;
+    @JsonProperty("AZBCBS")
+    private Integer AZBCBS;
+    @JsonProperty("AZBCF")
+    private Integer AZBCF;
+    @JsonProperty("BCHJ")
+    private Integer BCHJ;
+    @JsonProperty("NZW")
+    private Integer NZW;
+    @JsonProperty("JJZW")
+    private Integer JJZW;
+    @JsonProperty("SM")
+    private Integer SM;
+    @JsonProperty("ID")
+    private Integer ID;
+    @JsonProperty("JG")
+    private String JG;
+    @JsonProperty("GRADE")
+    private Integer GRADE;
+    @JsonProperty("BZ")
+    private Integer BZ;
+    @JsonProperty("DES")
+    private String DES;
+}

+ 87 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/CompensateEstimateReport.java

@@ -0,0 +1,87 @@
+package com.onemap.sanya.domain.CQBC;
+
+
+import com.deepoove.poi.expression.Name;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 征收补偿预估报告
+ *
+ * @author Zzz
+ * @create 2024/6/13 13:15
+ */
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CompensateEstimateReport {
+    /**
+     * 项目名称
+     */
+    private String name;
+    /**
+     * 分析时间
+     */
+    private String date;
+
+    /**
+     * 总费用预估(万元)
+     */
+    private Double feeETC;
+
+    /**
+     * 征地补偿费预估(万元)
+     */
+    private Double feeECLA;
+    /**
+     * 房屋拆迁补偿费预估(万元)
+     * 预计拆迁房屋 预计拆迁房屋合计
+     */
+    private Double feeECHD;
+
+    /**
+     * 青苗补偿费预估(万元)
+     */
+    private Double feeECYC;
+    /**
+     * 拆迁结果
+     */
+    @Name("cqResult")
+    private cqResult cqResult;
+
+    /**
+     * 拆迁标准
+     */
+    @Name("cqZBData")
+    private CqZBData cqZBData;
+
+    /**
+     * 青苗结果
+     */
+    @Name("qmResult")
+    private QmResult qmResult;
+
+    /**
+     * 青苗标准
+     */
+    @Name("qmZBData")
+    private QmZBData qmZBData;
+
+    /**
+     * 征地结果
+     */
+    @Name("zdResult")
+    private ZdResult zdResult;
+
+    /**
+     * 征地标准
+     */
+    @Name("zdZBData")
+    private ZdZBData zdZBData;
+
+
+}

+ 21 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/CqZBData.java

@@ -0,0 +1,21 @@
+package com.onemap.sanya.domain.CQBC;
+
+import com.deepoove.poi.expression.Name;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CqZBData {
+    private String label;
+    private String value;
+//    @Name("BCBZ")
+    @JsonProperty("BCBZ")
+    private List<BCBZ> BCBZ;
+}

+ 13 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/GyList.java

@@ -0,0 +1,13 @@
+package com.onemap.sanya.domain.CQBC;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class GyList {
+    private String qsdwmc;
+    private Double mj;
+}

+ 19 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/QmResult.java

@@ -0,0 +1,19 @@
+package com.onemap.sanya.domain.CQBC;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class QmResult {
+    private Double totalPay;
+    private Double totalMJ;
+    private Double nzwMJ;
+    private Double nzwPay;
+    private Double jjzwMJ;
+    private Double jjzwPay;
+    private Double smMJ;
+    private Double smPay;
+}

+ 18 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/QmZBData.java

@@ -0,0 +1,18 @@
+package com.onemap.sanya.domain.CQBC;
+
+import com.deepoove.poi.expression.Name;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class QmZBData {
+    private String label;
+    private String value;
+//    @Name("BCBZ")
+    @JsonProperty("BCBZ")
+    private BCBZ BCBZ;
+}

+ 24 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/ZdResult.java

@@ -0,0 +1,24 @@
+package com.onemap.sanya.domain.CQBC;
+
+import com.deepoove.poi.expression.Name;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ZdResult {
+    private Double gyMJ;
+    private Double jtMJ;
+    private Double totalZDMJ;
+    private Double totalPay;
+    private Double totalZDOay;
+    private Double totalAZPay;
+    @Name("list")
+    private List<list> list;
+    @Name("gyList")
+    private List<GyList> gyList;
+}

+ 18 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/ZdZBData.java

@@ -0,0 +1,18 @@
+package com.onemap.sanya.domain.CQBC;
+
+import com.deepoove.poi.expression.Name;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ZdZBData {
+    private String label;
+    private String value;
+//    @Name("BCBZ")
+    @JsonProperty("BCBZ")
+    private BCBZ BCBZ;
+}

+ 31 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/cqResult.java

@@ -0,0 +1,31 @@
+package com.onemap.sanya.domain.CQBC;
+
+
+import com.deepoove.poi.expression.Name;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 拆迁结果
+ *
+ * @author Zzz
+ * @create 2024/6/13 13:15
+ */
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class cqResult {
+
+    private Double average;
+
+    private Integer count;
+    @Name("list")
+    private List<list> list;
+
+    private Double totalJZMJ;
+    private Double totalPay;
+}

+ 53 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CQBC/list.java

@@ -0,0 +1,53 @@
+package com.onemap.sanya.domain.CQBC;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 涉及房屋列表
+ *
+ * @author Zzz
+ * @create 2024/6/13 13:15
+ */
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class list {
+    /**
+     * 唯一值
+     */
+    private String id;
+    /**
+     * 结构
+     */
+    private String jg;
+    /**
+     * 房屋地址
+     */
+    private String address;
+
+    private String cqr;
+    /**
+     * 层数
+     */
+    private Integer floor;
+
+    /**
+     * 层数
+     */
+    private Integer fwdj;
+
+    private Double jzmj;
+    private Double zdmj;
+    private Double pay;
+    private Integer single;
+
+    private String dlbm;
+    private String dlmc;
+    private Double mj;
+}

+ 0 - 218
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CompensateEstimateReport.java

@@ -1,218 +0,0 @@
-package com.onemap.sanya.domain;
-
-
-import com.deepoove.poi.expression.Name;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.List;
-
-/**
- * 征收补偿预估报告
- *
- * @author Zzz
- * @create 2024/6/13 13:15
- */
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class CompensateEstimateReport {
-    /**
-     * 项目名称
-     */
-    private String projectName;
-    /**
-     * 分析时间
-     */
-    private String analysisDate;
-
-    /**
-     * 分析面积(平方米)
-     */
-    private String analysisArea;
-    /**
-     * 总费用预估(万元)
-     */
-    private String feeETC;
-
-    /**
-     * 征地补偿费预估(万元)
-     */
-    private String feeECLA;
-    /**
-     * 房屋拆迁补偿费预估(万元)
-     * 预计拆迁房屋 预计拆迁房屋合计
-     */
-    private Integer feeECHD;
-
-    /**
-     * 青苗补偿费预估(万元)
-     */
-    private String feeECYC;
-
-
-    /**
-     * 图片集
-     */
-    private List<PicData> picList;
-
-    /**
-     * 年产值(元/亩)
-     */
-    private String annualValue;
-
-    /**
-     * 土地补偿费
-     * 综合补偿倍数
-     */
-    private String multipleLC;
-    /**
-     * 土地补偿费
-     * 元/亩
-     */
-    private String priceLC;
-    /**
-     * 安置补助费
-     * 综合补偿倍数
-     */
-    private String multipleRC;
-
-    /**
-     * 安置补助费
-     * 元/亩
-     */
-    private String priceRC;
-
-    /**
-     * 土地补偿费及安置补助费合计(元/亩)
-     */
-    private String priceLCRC;
-
-
-    /**
-     * 土地补偿费合计
-     */
-    private String feeLC;
-    /**
-     * 安置补偿费合计万元
-     */
-    private String feeRC;
-
-
-    /**
-     * 框架结构1级
-     */
-    private String priceFrame01;
-
-    /**
-     * 框架结构2级
-     */
-    private String priceFrame02;
-
-    /**
-     * 混合结构1级
-     */
-    private String priceComposite01;
-
-    /**
-     * 混合结构3级
-     */
-    private String priceComposite03;
-
-    /**
-     * 砖木结构1级
-     */
-    private String priceBrickWood01;
-
-    /**
-     * 砖木结构2级
-     */
-    private String priceBrickWood02;
-
-    /**
-     * 简易结构1级
-     */
-    private String priceSimple01;
-
-    /**
-     * 简易结构2级
-     */
-    private String priceSimple02;
-
-    /**
-     * 凉棚1级
-     */
-    private String priceShelter01;
-
-    /**
-     * 凉棚2级
-     */
-    private String priceShelter02;
-
-    /**
-     * 预计拆迁房屋个数 合计/个
-     */
-    private Integer numberEHD;
-    /**
-     * 预计拆迁房屋 建筑面积合计 /平方米
-     */
-    private Integer totalFA;
-
-
-    /**
-     * 预计拆迁房屋 平均补偿费用 万元/平方米
-     * 拆迁补偿费用合计 / 建筑面积合计
-     */
-    private Integer averageFeeECHD;
-
-    /**
-     * 各个房屋补偿情况
-     */
-    @Name("tableList01")
-    private List<HouseCompensate> tableList01;
-
-    /**
-     * 青苗补偿费预估标准 农作物补偿标准(元/亩)
-     */
-    private String priceCC;
-    /**
-     * 青苗补偿费预估标准 经济作物补偿标准(元/亩)
-     */
-    private String priceECC;
-    /**
-     * 青苗补偿费预估标准 林木补偿标准(元/亩)
-     */
-    private String priceFC;
-
-
-    /**
-     * 青苗补偿费预估 预估农作物补偿面积 平方米
-     */
-    private String areaCC;
-    /**
-     * 青苗补偿费预估 预估农作物补偿金额 万元
-     */
-    private String feeCC;
-    /**
-     * 青苗补偿费预估 预估经济作物补偿面积 平方米
-     */
-    private String areaECC;
-    /**
-     * 青苗补偿费预估 预估经济作物补偿金额 万元
-     */
-    private String feeECC;
-
-    /**
-     * 青苗补偿费预估 预估林木补偿面积 平方米
-     */
-    private String areaFC;
-
-    /**
-     * 青苗补偿费预估 预估林木补偿金额 万元
-     */
-    private String feeFC;
-
-
-}

+ 14 - 6
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/LandPriceEstimation.java

@@ -13,20 +13,28 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 @AllArgsConstructor
 public class LandPriceEstimation {
+    /**
+     * 地块编码
+     */
+    private String dkbm;
+    /**
+     * 规划用途名称
+     */
+    private String ghyt;
     /**
      * 级别
      */
-    private String lv;
+    private String tdjb;
     /**
-     * 地价(元/平方米)
+     * 地价(元/
      */
-    private Double landPrice;
+    private Double dj;
     /**
-     * 土地面积(平方米
+     * 土地面积(
      */
     private Double area;
     /**
-     * 土地面积(平方米
+     * 总地价(亩
      */
-    private Double landPriceES;
+    private Double zdj;
 }

+ 32 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/ghdkDetailedDjList.java

@@ -0,0 +1,32 @@
+package com.onemap.sanya.domain;
+
+import com.deepoove.poi.expression.Name;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 用地地价预估
+ * @author ldy
+ * @create 2024/7/19 15:12
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ghdkDetailedDjList {
+    /**
+     * 地块编码
+     */
+    private String dkbm;
+    /**
+     * 规划用途名称
+     */
+    private String ghyt;
+    /**
+     * 规划地块下具体地价
+     */
+    @Name("zytdList")
+    private List<LandPriceEstimation> zytdList;
+}

+ 111 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/mergeCell/JZDJTableRenderPolicy.java

@@ -0,0 +1,111 @@
+package com.onemap.sanya.domain.mergeCell;
+
+import com.deepoove.poi.data.RenderData;
+import com.deepoove.poi.data.RowRenderData;
+import com.deepoove.poi.data.Rows;
+import com.deepoove.poi.data.style.CellStyle;
+import com.deepoove.poi.data.style.ParagraphStyle;
+import com.deepoove.poi.data.style.RowStyle;
+import com.deepoove.poi.policy.DynamicTableRenderPolicy;
+
+import com.deepoove.poi.policy.TableRenderPolicy;
+import com.deepoove.poi.util.TableTools;
+import com.onemap.sanya.domain.AnalyseData;
+import com.onemap.sanya.domain.LandPriceEstimation;
+import com.onemap.sanya.domain.MageData;
+import com.onemap.sanya.domain.ghdkDetailedDjList;
+import org.apache.poi.xwpf.usermodel.*;
+
+
+        import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 表格动态行插入、渲染、合并单元格处理
+ *
+ * @author Zzz
+ */
+public class JZDJTableRenderPolicy extends DynamicTableRenderPolicy {
+
+    // 填充数据所在行数
+    int startRow = 1;
+
+    List<RowRenderData> rowList = new ArrayList<>();
+    List<MageData> mageList = new ArrayList<>();
+
+    @Override
+    public void render(XWPFTable table, Object data) throws Exception {
+        if (null == data) {
+            return;
+        }
+        //转换数据格式
+        List<LandPriceEstimation> dataList = (List<LandPriceEstimation>) data;
+        if (null != dataList && dataList.size() > 0) {
+            table.removeRow(startRow);
+            //设置表格样式
+            RowStyle rowStyle = new RowStyle();
+            CellStyle cellStyle = new CellStyle();
+            cellStyle.setDefaultParagraphStyle(ParagraphStyle.builder()
+                    .withIndentFirstLineChars(0)
+                    .withAlign(ParagraphAlignment.LEFT)
+                    .build());
+            rowStyle.setDefaultCellStyle(cellStyle);
+            for (LandPriceEstimation landPriceEstimation : dataList) {
+                    RowRenderData build = Rows.create(
+                            landPriceEstimation.getDkbm(),
+                            landPriceEstimation.getGhyt(),
+                            String.format("%.2f", landPriceEstimation.getArea()),
+                            landPriceEstimation.getTdjb(),
+                            String.format("%.2f", landPriceEstimation.getDj()),
+                            String.format("%.2f", landPriceEstimation.getZdj())
+                             );
+                    build.setRowStyle(rowStyle);
+                    rowList.add(build);
+
+            }
+            //设置合并列计数器
+            Map<String, Long> collectMap = dataList.stream().collect(Collectors.groupingBy(LandPriceEstimation::getDkbm, Collectors.counting()));
+
+
+
+            for (String key : collectMap.keySet()) {
+                Long aLong = collectMap.get(key);
+                MageData mageData = new MageData(key, aLong);
+                mageList.add(mageData);
+            }
+
+            if (null != rowList && rowList.size() > 0) {
+                //因为是一行行写入数据,所以采用倒序方式从最后一条数据开始 数据共6列 所以j<6
+                for (int i = rowList.size() - 1; i >= 0; i--) {
+                    XWPFTableRow insertNewTableRow = table.insertNewTableRow(startRow);
+                    for (int j = 0; j < 6; j++) {
+                        insertNewTableRow.createCell();
+                    }
+                    TableRenderPolicy.Helper.renderRow(table.getRow(startRow), rowList.get(i));
+                }
+                //处理合并
+                for (int i = 0; i < rowList.size(); i++) {
+                    RenderData renderData = rowList.get(i).getCells().get(0).getParagraphs().get(0).getContents().get(0);
+                    String renderDataStr = renderData.toString();
+                    for (int j = 0; j < mageList.size(); j++) {
+                        MageData mageData = mageList.get(j);
+                        String mageName = mageData.getMageName();
+                        Long size = mageData.getSize();
+                        if (renderDataStr.equals(mageName)) {
+                            if (size != null && size > 1) {
+                                // 合并第0,1列 的第i+1行到第i+size
+                                TableTools.mergeCellsVertically(table, 0, i + 1, i + size.intValue());
+                                TableTools.mergeCellsVertically(table, 1, i + 1, i + size.intValue());
+                                mageList.remove(j);
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

+ 34 - 72
onemap-modules/onemap-model/src/main/resources/template/word/03-征收补偿预估报告-02.docx

@@ -1,12 +1,9 @@
 征收补偿预估报告
 征收补偿信息
                                  项目名称
-                                {{projectName}}
+                                   {{name}}
                                  分析时间
-{{analysisDate}}
-                                 分析面积
-                                (平方米)
-                               {{analysisArea}}
+{{date}}
                                 总费用预估
                                  (万元)
 {{feeETC}}
@@ -19,8 +16,8 @@
                                   {{feeECYC}}
                                        
 
-分析范围
-{{?picList}}{{@img}}{{/picList}}
+
+
 征地补偿费预估
   征地补偿费预估标准
   按征地统一年产值土地补偿费、安置补助费标准,具体如下表:
@@ -34,85 +31,50 @@
                               综合补偿倍数
                                     元/亩
                                        
-                                {{annualValue}}
-                                {{multipleLC}}
-                                  {{priceLC}}
-                                {{multipleRC}}
-                                  {{priceRC}}
-{{priceLCRC}}
+                            {{zdZBData.BCBZ.TDCZ}}
+                           {{zdZBData.BCBZ.TDBCBS}}
+                            {{zdZBData.BCBZ.TDBCF}}
+                           {{zdZBData.BCBZ.AZBCBS}}
+                            {{zdZBData.BCBZ.AZBCF}}
+{{zdZBData.BCBZ.BCHJ}}
   征地补偿费预估
-  预计征地补偿费用合计{{feeECLA}},其中:土地补偿费共{{feeLC}}万元;安置补偿费共{{feeRC}}万元。
-                                       
-                    图1 项目土地现状补偿面积情况
+  预计征地补偿费用合计{{zdResult.totalPay}},其中:土地补偿费共{{zdResult.totalZDOay}}万元;安置补偿费共{{zdResult.totalAZPay}}万元。
 房屋拆迁补偿费预估
   房屋拆迁补偿费预估标准
- 按级别1进行评估,具体标准如下:
-                                 房屋结构
+ 按{{cqZBData.label}}标准进行评估,具体标准如下:
+                         {{cqZBData.BCBZ}}房屋结构
                                     级别
-                           单价(元/平方米)
-                                 框架结构
-                                       1
-{{priceFrame01}}
-                                       
-                                       2
-{{priceFrame02}}
-                                 混合结构
-                                       1
-{{priceComposite01}}
-                                       
-                                       3
-{{priceComposite03}}
-                                 砖木结构
-                                       1
-{{priceBrickWood01}}
-                                       
-                                       2
-{{priceBrickWood02}}
-                                 简易结构
-                                       1
-{{priceSimple01}}
-                                       
-                                       2
-{{priceSimple02}}
-                                    凉棚
-                                       1
-{{priceShelter01}}
-                                       
-                                       2
-{{priceShelter02}}
+                                    单价
+                                 (元/亩)
+                       结构及装饰特征(规格)
+                                     [JG]
+                                    [GRADE]
+                                     [BZ]
+[DES]
   房屋补偿费预估
-  预计拆迁房屋共{{numberEHD}}个,总建筑面积{{totalFA}}平方米,房屋拆迁补偿费用共{{feeECHD}}万元,平均补偿费用{{averageFeeECHD}}万元/平方米
+  预计拆迁房屋共{{cqResult.count}}个,总建筑面积{{cqResult.totalJZMJ}}亩,房屋拆迁补偿费用共{{cqResult.totalPay}}万元,平均补偿费用{{cqResult.average}}万元/亩。
   各个房屋补偿情况如下表。
-{{tableList01}}序号
-房屋编号
-产权人
+{{cqResult.list}}房屋结构
 拆迁补偿费用
-房屋结构
+层数
+占地面积(m²)
 建筑面积(m²)
 房屋地址
-[id]
-[bldCode]
-[propertyOwner]
-[feeCHD]
-[bldStructure]
-[floorArea]
-[bldAddress]
-
-
-
-
-
-
-
+[jg]
+[pay]
+[floor]
+[zdmj]
+[jzmj]
+[address]
 青苗补偿费预估
   青苗补偿费预估标准
                          农作物补偿(元/亩)
                         经济作物补偿(元/亩)
                            林木补偿(元/亩)
-                                  {{priceCC}}
-                                 {{priceECC}}
-                                  {{priceFC}}
+                             {{qmZBData.BCBZ.NZW}}
+                            {{qmZBData.BCBZ.JJZW}}
+                             {{qmZBData.BCBZ.SM}}
   青苗补偿费预估
-  预计青苗补偿费用合计{{feeECYC}}万元,其中:农作物补偿{{areaCC}}平方米,共{{feeCC}}万元;经济作物补偿{{areaECC}}平方米,共{{feeECC}}万元;林木{{areaFC}}平方米,补偿共{{feeFC}}万元。
+  预计青苗补偿费用合计{{qmResult.totalPay}}万元,其中:农作物补偿{{qmResult.nzwMJ}}亩,共{{qmResult.nzwPay}}万元;经济作物补偿{{qmResult.jjzwMJ}}亩,共{{qmResult.jjzwPay}}万元;林木{{qmResult.smMJ}}亩,补偿共{{qmResult.smPay}}万元。
   
   

+ 23 - 36
onemap-modules/onemap-model/src/main/resources/template/word/04-基准地价报告-02.docx

@@ -56,47 +56,34 @@
 {{analysisArea}}
 总地价(万元)
 {{totalLandPrice}}
-国有建设用地面积(亩)
-{{areaSCL}}
-国有建设用地基准地价(万元)
-{{baseLandPriceSCL}}
-集体建设用地面积(亩)
-{{areaCCL}}
-集体建设用地基准地价(万元)
-{{baseLandPriceCCL}}
 分析范围
 {{?picList}}{{@img}}{{/picList}}
-3 {{definitionBLP}}用地地价预估情况
-  {{definitionBLP}}用地共{{totalArea}}亩,土地地价预估{{totalLandPrice}}万元,其中:{{definitionBLP}}国有建设用地共{{areaSCL}}亩,土地地价预估{{landPriceESCL}}万元;{{definitionBLP}}集体建设用地共{{areaCCL}}亩,土地地价预估{{landPriceECCL}}万元。具体如下:
-                                        
-                                        
-表1 {{definitionBLP}}用地地价预估情况{{definitionBLP}}用地预估情况
-土地权属
-                                    级别
-                              地价(元/亩)
-                             土地面积(亩)
-                          总地价预估(万元)
-{{tableList01}}
-国有建设用地
-[lv]
-[landPrice]
-[area]
-[landPriceES]
-
-
+3 基准地价总体情况
+{{benchmarkLandPriceTotalList}}规划地块类型
+地价(万元)
+土地面积(亩)
+[ghdkName]
+[JSprice]
+[JStotalArea]
 
 
 
-{{tableList02}}
-集体建设用地
-[lv]
-[landPrice]
+  
+  具体如下:
+                         表1 用地地价预估情况
+{{DetailedDJList}}地块编码
+                                 地类名称
+                             土地面积(亩)
+                                    土地
+                                    级别
+                                    单价
+                                 (万元)
+                          总地价预估(万元)
+[dkbm]
+[ghyt]
 [area]
-[landPriceES]
-                                       
-                                       
-                                       
-                                       
-                                       
+[tdjb]
+[dj]
+[zdj]
                                         
  

+ 74 - 5
sql/pgsql/0_init.sql

@@ -1,10 +1,79 @@
 -- 7.24
 
 -- 修改表结构和数据,需要同步到现场
-base.t_jsc_sql
+-- 菜单 SQL
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3006','表管理', '1065', '10', 'table', 'system/table/index', 1, 0, 'C', '0', '0', 'system:table:list', '#', 'admin', now(), '', null, '表管理菜单');
 
-vector.TB_LSYD
-vector.TB_NZYSJ
+insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3007', '表字段管理', '1065', '11', 'filed', 'system/filed/index', 1, 0, 'C', '0', '0', 'system:filed:list', '#', 'admin', now(), '', null, '表字段管理菜单');
 
--- nacos
-onemap-spatial
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3008', '表与字段关联管理', '1065', '12', 'relation', 'system/relation/index', 1, 0, 'C', '0', '0', 'system:relation:list', '#', 'admin', now(), '', null, '表与字段关联管理菜单');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3024', '表与服务关联管理', '1065', '13', 'layer', 'system/layer/index', 1, 0, 'C', '0', '0', 'system:layer:list', '#', 'admin', now(), '', null, '表与服务关联管理,用于多级查询');
+
+
+-- 按钮 SQL
+-- 按钮 SQL
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3009','表管理查询', '3006', '1',  '#', '', 1, 0, 'F', '0', '0', 'system:table:query',        '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3010','表管理新增', '3006', '2',  '#', '', 1, 0, 'F', '0', '0', 'system:table:add',          '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3011','表管理修改', '3006', '3',  '#', '', 1, 0, 'F', '0', '0', 'system:table:edit',         '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3012','表管理删除', '3006', '4',  '#', '', 1, 0, 'F', '0', '0', 'system:table:remove',       '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3013','表管理导出', '3006', '5',  '#', '', 1, 0, 'F', '0', '0', 'system:table:export',       '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3014','表字段管理查询', '3007', '1',  '#', '', 1, 0, 'F', '0', '0', 'system:filed:query',        '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3015','表字段管理新增', '3007', '2',  '#', '', 1, 0, 'F', '0', '0', 'system:filed:add',          '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3016','表字段管理修改', '3007', '3',  '#', '', 1, 0, 'F', '0', '0', 'system:filed:edit',         '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3017','表字段管理删除', '3007', '4',  '#', '', 1, 0, 'F', '0', '0', 'system:filed:remove',       '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3018','表字段管理导出', '3007', '5',  '#', '', 1, 0, 'F', '0', '0', 'system:filed:export',       '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3019','表与字段关联管理查询', '3008', '1',  '#', '', 1, 0, 'F', '0', '0', 'system:relation:query',        '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3020','表与字段关联管理新增', '3008', '2',  '#', '', 1, 0, 'F', '0', '0', 'system:relation:add',          '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3021','表与字段关联管理修改', '3008', '3',  '#', '', 1, 0, 'F', '0', '0', 'system:relation:edit',         '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3022','表与字段关联管理删除', '3008', '4',  '#', '', 1, 0, 'F', '0', '0', 'system:relation:remove',       '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3023','表与字段关联管理导出', '3008', '5',  '#', '', 1, 0, 'F', '0', '0', 'system:relation:export',       '#', 'admin', now(), '', null, '');
+
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3025','表与服务关联管理查询', '3024', '1',  '#', '', 1, 0, 'F', '0', '0', 'system:layer:query',        '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3026','表与服务关联管理新增', '3024', '2',  '#', '', 1, 0, 'F', '0', '0', 'system:layer:add',          '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3027','表与服务关联管理修改', '3024', '3',  '#', '', 1, 0, 'F', '0', '0', 'system:layer:edit',         '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3028',,'表与服务关联管理删除', '3024', '4',  '#', '', 1, 0, 'F', '0', '0', 'system:layer:remove',       '#', 'admin', now(), '', null, '');
+
+insert into sys_menu (menu_id,menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('3029','表与服务关联管理导出', '3024', '5',  '#', '', 1, 0, 'F', '0', '0', 'system:layer:export',       '#', 'admin', now(), '', null, '');