Răsfoiți Sursa

更新超图的后端代码

LAPTOP-BJJ3IV5R\SIWEI 1 an în urmă
părinte
comite
11f45b6a10
25 a modificat fișierele cu 3326 adăugiri și 0 ștergeri
  1. 132 0
      onemap-modules/onemap-model/pom.xml
  2. 34 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/OneMapModelApplication.java
  3. 639 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/SanYaController.java
  4. 42 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/AnalyseData.java
  5. 23 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/AnalyseDetailData.java
  6. 110 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/BenchmarkLandPriceReport.java
  7. 218 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/CompensateEstimateReport.java
  8. 101 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/ComplianceAnalysisReport.java
  9. 74 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/FactorData.java
  10. 46 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/HouseCompensate.java
  11. 20 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/JsonConvert.java
  12. 32 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/LandPriceEstimation.java
  13. 17 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/MageData.java
  14. 15 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/PicData.java
  15. 154 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/SiteSelectionReport.java
  16. 103 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/mergeCell/AnalyseDetailTablePolicy.java
  17. 8 0
      onemap-modules/onemap-model/src/main/resources/banner.txt
  18. 32 0
      onemap-modules/onemap-model/src/main/resources/bootstrap.yml
  19. 74 0
      onemap-modules/onemap-model/src/main/resources/logback.xml
  20. BIN
      onemap-modules/onemap-model/src/main/resources/template/img/test.png
  21. 1043 0
      onemap-modules/onemap-model/src/main/resources/template/json/word.json
  22. 100 0
      onemap-modules/onemap-model/src/main/resources/template/word/01-选址报告-02.docx
  23. 87 0
      onemap-modules/onemap-model/src/main/resources/template/word/02-合规性分析报告-02.docx
  24. 118 0
      onemap-modules/onemap-model/src/main/resources/template/word/03-征收补偿预估报告-02.docx
  25. 104 0
      onemap-modules/onemap-model/src/main/resources/template/word/04-基准地价报告-02.docx

+ 132 - 0
onemap-modules/onemap-model/pom.xml

@@ -0,0 +1,132 @@
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>onemap-modules</artifactId>
+        <groupId>com.onemap</groupId>
+        <version>3.6.1</version>
+    </parent>
+
+    <artifactId>onemap-modules-model</artifactId>
+
+    <properties>
+        <org.geotools.version>24.6</org.geotools.version>
+        <org.postgresql.version>42.3.6</org.postgresql.version>
+    </properties>
+
+    <dependencies>
+        <!-- SpringCloud Alibaba Nacos -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+
+        <!-- SpringCloud Alibaba Nacos Config -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+
+        <!--common-->
+<!--         RuoYi Common DataSource-->
+        <dependency>
+            <groupId>com.onemap</groupId>
+            <artifactId>onemap-common-datasource</artifactId>
+        </dependency>
+        <!-- RuoYi Common DataScope -->
+        <dependency>
+            <groupId>com.onemap</groupId>
+            <artifactId>onemap-common-datascope</artifactId>
+        </dependency>
+
+        <!--spring-->
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+
+<!--        中图使用jar-->
+        <dependency>
+            <groupId>com.deepoove</groupId>
+            <artifactId>poi-tl</artifactId>
+            <version>1.12.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>5.2.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>5.2.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml-schemas</artifactId>
+            <version>4.1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.7</version>
+        </dependency>
+
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>osgeo</id>
+            <name>OSGeo Release Repository</name>
+            <url>https://repo.osgeo.org/repository/release/</url>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+        <repository>
+            <id>osgeo-snapshot</id>
+            <name>OSGeo Snapshot Repository</name>
+            <url>https://repo.osgeo.org/repository/snapshot/</url>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
+    </repositories>
+
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.6.2</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 34 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/OneMapModelApplication.java

@@ -0,0 +1,34 @@
+package com.onemap.sanya;
+
+import com.onemap.common.security.annotation.EnableCustomConfig;
+import com.onemap.common.security.annotation.EnableRyFeignClients;
+import com.onemap.common.swagger.annotation.EnableCustomSwagger2;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * 文件服务
+ *
+ * @author onemap
+ */
+@EnableScheduling
+@EnableCustomConfig
+@EnableCustomSwagger2
+@EnableRyFeignClients
+@SpringBootApplication
+public class OneMapModelApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(OneMapModelApplication.class, args);
+        System.out.println("(♥◠‿◠)ノ゙ 三亚服务模块启动成功   ლ(´ڡ`ლ)゙  \n" +
+                " .-------.       ____     __        \n" +
+                " |  _ _   \\      \\   \\   /  /    \n" +
+                " | ( ' )  |       \\  _. /  '       \n" +
+                " |(_ o _) /        _( )_ .'         \n" +
+                " | (_,_).' __  ___(_ o _)'          \n" +
+                " |  |\\ \\  |  ||   |(_,_)'         \n" +
+                " |  | \\ `'   /|   `-'  /           \n" +
+                " |  |  \\    /  \\      /           \n" +
+                " ''-'   `'-'    `-..-'              ");
+    }
+}

+ 639 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/SanYaController.java

@@ -0,0 +1,639 @@
+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;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.PictureRenderData;
+import com.deepoove.poi.data.Pictures;
+import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
+import com.deepoove.poi.template.MetaTemplate;
+import com.deepoove.poi.template.run.RunTemplate;
+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.mergeCell.AnalyseDetailTablePolicy;
+import com.onemap.system.api.domain.SysUser;
+import com.onemap.system.api.factory.RemoteLogFallbackFactory;
+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;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.stream.Collectors;
+
+/**
+ * @author Zzz
+ */
+@CrossOrigin(origins = "*")
+@RestController
+@RequestMapping("/sanya")
+public class SanYaController extends BaseController {
+    private static final Logger log = LoggerFactory.getLogger(SanYaController.class);
+
+    private static final String[] LvArray = {"Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ", "Ⅴ", "Ⅵ", "Ⅶ", "Ⅷ", "Ⅸ", "Ⅹ"};
+
+    /**
+     * 导出选址报告word
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping("/exportWord1")
+    private void exportWord1(HttpServletRequest request, HttpServletResponse response) {
+        log.info("exportWord1!");
+        try {
+            SiteSelectionReport siteSelectionReport = setWordData1();
+            if (siteSelectionReport == null) {
+                log.info("选址报告数据为空,导出失败!");
+                return;
+            }
+            String basePath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "template/word/";
+            //word模板地址
+            String resource = basePath + "01-选址报告-02.docx";
+            Configure configure = Configure.builder()
+                    .bind("tableList", new LoopRowTableRenderPolicy())
+                    .bind("analyseList", new AnalyseDetailTablePolicy()).build();
+            // 通过 XWPFTemplate 编译文件并渲染数据到模板中
+            XWPFTemplate template = XWPFTemplate.compile(resource, configure).render(siteSelectionReport);
+            //生成临时文件存放地址
+            String temDir = basePath;
+            //生成文件名
+            String wordName = "01-选址报告-02" + "-" + System.currentTimeMillis();
+            writeWord(response, temDir, wordName, template);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("选址报告导出异常,{}" + e);
+        }
+    }
+
+    /**
+     * 导出选址报告word
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping("/exportWord2")
+    private void exportWord2(HttpServletRequest request, HttpServletResponse response) {
+        log.info("exportWord2!");
+        try {
+            ComplianceAnalysisReport complianceAnalysisReport = setWordData2();
+            if (complianceAnalysisReport == null) {
+                log.info("合规性分析报告数据为空,导出失败!");
+                return;
+            }
+            String basePath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "template/word/";
+            //word模板地址
+            String resource = basePath + "02-合规性分析报告-02.docx";
+            Configure configure = Configure.builder()
+                    .bind("tableList01", new LoopRowTableRenderPolicy())
+                    .bind("tableList02", new LoopRowTableRenderPolicy())
+                    .bind("analyseList01", new AnalyseDetailTablePolicy())
+                    .bind("analyseList02", new AnalyseDetailTablePolicy()).build();
+            // 通过 XWPFTemplate 编译文件并渲染数据到模板中
+            XWPFTemplate template = XWPFTemplate.compile(resource, configure).render(complianceAnalysisReport);
+            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 = basePath;
+            //生成文件名
+            String wordName = "02-合规性分析报告-02" + "-" + System.currentTimeMillis();
+            writeWord(response, temDir, wordName, template);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("合规性分析报告导出异常,{}" + e);
+        }
+    }
+
+    /**
+     * 导出征收补偿预估报告word
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping("/exportWord3")
+    private void exportWord3(HttpServletRequest request, HttpServletResponse response) {
+        try {
+            CompensateEstimateReport compensateEstimateReport = setWordData3();
+            if (compensateEstimateReport == null) {
+                log.info("征收补偿预估报告数据为空,导出失败!");
+                return;
+            }
+            String basePath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "template/word/";
+            //word模板地址
+            String resource = basePath + "03-征收补偿预估报告-02.docx";
+            Configure configure = Configure.builder()
+                    .bind("tableList01", new LoopRowTableRenderPolicy()).build();
+            // 通过 XWPFTemplate 编译文件并渲染数据到模板中
+            XWPFTemplate template = XWPFTemplate.compile(resource, configure).render(compensateEstimateReport);
+            //生成临时文件存放地址
+            String temDir = basePath;
+            //生成文件名
+            String wordName = "03-征收补偿预估报告-02" + "-" + System.currentTimeMillis();
+            writeWord(response, temDir, wordName, template);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("征收补偿预估报告导出异常,{}" + e);
+        }
+    }
+
+    /**
+     * 导出基准地价报告word
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping("/exportWord4")
+    private AjaxResult exportWord4(@RequestBody BenchmarkLandPriceReport benchmarkLandPriceReport, HttpServletRequest request, HttpServletResponse response) {
+        try {
+//            BenchmarkLandPriceReport benchmarkLandPriceReport = setWordData4();
+            if (benchmarkLandPriceReport == null) {
+                log.info("基准地价报告数据为空,导出失败!");
+                return error("基准地价报告数据为空,导出失败!");
+            }
+            String basePath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "template/word/";
+            //word模板地址
+            String resource = basePath + "04-基准地价报告-02.docx";
+            Configure configure = Configure.builder()
+                    .bind("tableList01", new LoopRowTableRenderPolicy())
+                    .bind("tableList02", new LoopRowTableRenderPolicy()).build();
+            // 通过 XWPFTemplate 编译文件并渲染数据到模板中
+            XWPFTemplate template = XWPFTemplate.compile(resource, 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 = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "template/storageword/";
+            ;
+            //生成文件名
+            String wordName = "04-基准地价报告-02" + "-" + System.currentTimeMillis();
+            String fileUrl = storageWord(response, temDir, wordName, template);
+
+            return success(fileUrl);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("基准地价报告导出异常,{}" + e);
+            return error("基准地价报告导出异常,{}" + e.getMessage());
+        }
+    }
+
+    /**
+     * 下载分析文档
+     *
+     * @param fileName
+     * @param response
+     */
+
+    @RequestMapping("/getWord")
+    private void getWord(String fileName, HttpServletResponse response) {
+        String filePath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "template/storageword/";
+        // 设置请求头
+        response.setContentType("application/octet-stream");
+        response.addHeader("Content-Disposition", "attachment;filename=\"" + new String(fileName.getBytes(), StandardCharsets.UTF_8) + "\"");
+        response.setHeader("download-filename", fileName);
+        // 开放请求头download-filename前端获取权限
+        response.setHeader("Access-Control-Expose-Headers", "download-filename");
+        FileInputStream fis = null;
+        OutputStream os = null;
+        try {
+            // 输出
+            os = response.getOutputStream();
+            File file = new File(filePath + fileName);
+            if (!file.exists()) {
+                throw new FileNotFoundException(filePath + fileName);
+            }
+            fis = new FileInputStream(file);
+            byte[] b = new byte[1024];
+            int length;
+            while ((length = fis.read(b)) > 0) {
+                os.write(b, 0, length);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            IOUtils.close(os);
+            IOUtils.close(fis);
+        }
+    }
+
+
+    /**
+     * 封装-选址报告导出数据
+     *
+     * @return
+     */
+    private SiteSelectionReport setWordData1() {
+        try {
+            SiteSelectionReport siteSelectionReport = new SiteSelectionReport();
+            // 模拟数据 读取静态JSON文件填充数据  根据resource文件路径,生成文件
+            File jsonFile = ResourceUtils.getFile("classpath:template/json/word.json");
+            // 解析文件为指定编码的字符串
+            String json = FileUtils.readFileToString(jsonFile, "UTF-8");
+            // 转换格式
+            JSONObject jsonObject = JSON.parseObject(json);
+            // 读取模拟数据 并赋值给导出对象
+            String wordDataJson = jsonObject.get("wordData1").toString();
+            siteSelectionReport = JSON.parseObject(wordDataJson, SiteSelectionReport.class);
+
+            //模拟 影响因子数据 赋值给导出对象
+            List<FactorData> factorDataList = new ArrayList<>();
+            for (int i = 0; i < 6; i++) {
+                factorDataList.add(new FactorData().FactorDataForSiteSelectionReport("测试因子名称" + i, "测试计算方法" + i, "测试因子约束" + i));
+            }
+            siteSelectionReport.setTableList(factorDataList);
+
+            //模拟读取静态图片 赋值给导出对象
+            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));
+            siteSelectionReport.setPicList(picList);
+
+            // 读取分析JSON 用于生成选址范围现状分析导出数据格式
+            String analyseJson = jsonObject.get("analyseJson").toString();
+            List<JsonConvert> analyseConList = JSON.parseArray(analyseJson, JsonConvert.class);
+            List<AnalyseData> analyseList = new ArrayList<>();
+            Double totalArea = 0.0;
+            String detail = "";
+            //遍历选址范围现状分析 封装数据 默认数据为0-100
+            for (JsonConvert jsonConvert : analyseConList) {
+                String key = jsonConvert.getKey();
+                String value = jsonConvert.getValue();
+                List<JsonConvert> children = jsonConvert.getChildren();
+                AnalyseData analyseData = null;
+                if (children != null && children.size() > 0) {
+                    for (JsonConvert child : children) {
+                        String cKey = child.getKey();
+                        String cValue = child.getValue();
+                        //封装一级,二级,模拟设置分析值
+                        analyseData = new AnalyseData(key, value, cKey, cValue, new Random().nextDouble() * 100, new Random().nextDouble() * 100);
+                        analyseList.add(analyseData);
+                        //计算总面积
+                        if (analyseData.getAreaValue() != null) {
+                            totalArea = totalArea + analyseData.getAreaValue();
+                        }
+                        //拼接范围说明字符
+                        if (analyseData.getAreaValue() != null && analyseData.getPercentValue() != null) {
+                            detail = detail + analyseData.getSecondName() + analyseData.getAreaValue() + "平方米,占比" + analyseData.getPercentValue() + "%;";
+                        }
+                    }
+                } else {
+                    analyseData = new AnalyseData(key, value, "", "", null, null);
+                    analyseList.add(analyseData);
+                }
+            }
+            // 赋值导出对象
+            siteSelectionReport.setTotalArea(totalArea + "");
+            siteSelectionReport.setDetail(detail);
+            siteSelectionReport.setAnalyseList(analyseList);
+            return siteSelectionReport;
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("选址报告数据封装异常,{}" + e);
+        }
+        return null;
+    }
+
+    /**
+     * 封装-合规性分析报告导出数据
+     *
+     * @return
+     */
+    private ComplianceAnalysisReport setWordData2() {
+        try {
+            ComplianceAnalysisReport complianceAnalysisReport = new ComplianceAnalysisReport();
+            // 模拟数据 读取静态JSON文件填充数据  根据resource文件路径,生成文件
+            File jsonFile = ResourceUtils.getFile("classpath:template/json/word.json");
+            // 解析文件为指定编码的字符串
+            String json = FileUtils.readFileToString(jsonFile, "UTF-8");
+            // 转换格式
+            JSONObject jsonObject = JSON.parseObject(json);
+            // 读取模拟数据 并赋值给导出对象
+            String wordDataJson = jsonObject.get("wordData2").toString();
+            complianceAnalysisReport = JSON.parseObject(wordDataJson, ComplianceAnalysisReport.class);
+
+            // 读取分析JSON 用于生成选址范围现状分析导出数据格式
+            String analyseJson = jsonObject.get("analyseJson").toString();
+            List<JsonConvert> analyseConList = JSON.parseArray(analyseJson, JsonConvert.class);
+            List<AnalyseData> analyseList01 = new ArrayList<>();
+            List<AnalyseData> analyseList02 = new ArrayList<>();
+            Double totalArea01 = 0.0;
+            String detail01 = "";
+            Double totalArea02 = 0.0;
+            String detail02 = "";
+            //遍历选址范围 生成现状分析和控制性详细规划分析  封装数据 默认数据为0-100
+            for (JsonConvert jsonConvert : analyseConList) {
+                String key = jsonConvert.getKey();
+                String value = jsonConvert.getValue();
+                List<JsonConvert> children = jsonConvert.getChildren();
+                AnalyseData analyseData01 = null;
+                AnalyseData analyseData02 = null;
+                if (children != null && children.size() > 0) {
+                    for (JsonConvert child : children) {
+                        String cKey = child.getKey();
+                        String cValue = child.getValue();
+                        //封装一级,二级,模拟设置分析值
+                        analyseData01 = new AnalyseData(key, value, cKey, cValue, new Random().nextDouble() * 100, new Random().nextDouble() * 100);
+                        analyseData02 = new AnalyseData(key, value, cKey, cValue, new Random().nextDouble() * 100, new Random().nextDouble() * 100);
+                        analyseList01.add(analyseData01);
+                        analyseList02.add(analyseData02);
+                        //计算现状分析总面积
+                        if (analyseData01.getAreaValue() != null) {
+                            totalArea01 = totalArea01 + analyseData01.getAreaValue();
+                        }
+                        //拼接现状分析范围说明字符
+                        if (analyseData01.getAreaValue() != null && analyseData01.getPercentValue() != null) {
+                            detail01 = detail01 + analyseData01.getSecondName() + analyseData01.getAreaValue() + "平方米,占比" + analyseData01.getPercentValue() + "%;";
+                        }
+                        //计算控制性详细规划分析总面积
+                        if (analyseData02.getAreaValue() != null) {
+                            totalArea02 = totalArea02 + analyseData02.getAreaValue();
+                        }
+                        //拼接控制性详细规划分析范围说明字符
+                        if (analyseData02.getAreaValue() != null && analyseData02.getPercentValue() != null) {
+                            detail02 = detail02 + analyseData02.getSecondName() + analyseData02.getAreaValue() + "平方米,占比" + analyseData02.getPercentValue() + "%;";
+                        }
+                    }
+                } else {
+                    analyseData01 = new AnalyseData(key, value, "", "", null, null);
+                    analyseData02 = new AnalyseData(key, value, "", "", null, null);
+                    analyseList01.add(analyseData01);
+                    analyseList02.add(analyseData02);
+                }
+            }
+            //生成分析因子->现状分析 数据 根据现状上面的现状分析计算而来
+            List<FactorData> tableList01 = new ArrayList<>();
+            if (analyseList01 != null && analyseList01.size() > 0) {
+                Map<String, List<AnalyseData>> analyseCollect01 = analyseList01.stream().collect(Collectors.groupingBy(AnalyseData::getFirstCode));
+                if (analyseCollect01 != null && analyseCollect01.size() > 0) {
+                    analyseCollect01.entrySet()
+                            .stream()
+                            .sorted(Map.Entry.comparingByKey())
+                            .forEach(entry -> {
+                                List<AnalyseData> analyseDataList = entry.getValue();
+                                Double sum = analyseDataList.stream().mapToDouble(obj -> obj.getAreaValue() != null ? obj.getAreaValue() : 0).sum();
+                                AnalyseData analyseData = analyseDataList.get(0);
+                                String firstCode = analyseData.getFirstCode();
+                                String firstName = analyseData.getFirstName();
+                                tableList01.add(new FactorData().FactorDataForComplianceAnalysisReport01(firstCode + "  " + firstName, sum + ""));
+                            });
+                }
+            }
+            //生成分析因子->控制性详细规划分析 数据 根据现状上面的控制性详细规划分析计算而来
+            List<FactorData> tableList02 = new ArrayList<>();
+            if (analyseList02 != null && analyseList02.size() > 0) {
+                Map<String, List<AnalyseData>> analyseCollect02 = analyseList02.stream().collect(Collectors.groupingBy(AnalyseData::getFirstCode));
+                if (analyseCollect02 != null && analyseCollect02.size() > 0) {
+                    analyseCollect02.entrySet()
+                            .stream()
+                            .sorted(Map.Entry.comparingByKey())
+                            .forEach(entry -> {
+                                List<AnalyseData> analyseDataList = entry.getValue();
+                                Double sum = analyseDataList.stream().mapToDouble(obj -> obj.getAreaValue() != null ? obj.getAreaValue() : 0).sum();
+                                AnalyseData analyseData = analyseDataList.get(0);
+                                String firstCode = analyseData.getFirstCode();
+                                String firstName = analyseData.getFirstName();
+                                tableList02.add(new FactorData().FactorDataForComplianceAnalysisReport02(firstCode + "  " + firstName, sum + ""));
+                            });
+                }
+            }
+            // 赋值导出对象
+            complianceAnalysisReport.setTableList01(tableList01);
+            complianceAnalysisReport.setTableList02(tableList02);
+            complianceAnalysisReport.setAnalyseList01(analyseList01);
+            complianceAnalysisReport.setTotalArea01(totalArea01);
+            complianceAnalysisReport.setDetail01(detail01);
+            complianceAnalysisReport.setAnalyseList02(analyseList02);
+            complianceAnalysisReport.setTotalArea02(totalArea02);
+            complianceAnalysisReport.setDetail02(detail02);
+            return complianceAnalysisReport;
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("合规性分析报告封装异常,{}" + e);
+        }
+        return null;
+    }
+
+    /**
+     * 封装-征收补偿预估报告导出数据
+     *
+     * @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");
+            // 转换格式
+            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;
+    }
+
+    /**
+     * 封装-基准地价报告导出数据
+     *
+     * @return
+     */
+    private BenchmarkLandPriceReport setWordData4() {
+        try {
+            BenchmarkLandPriceReport benchmarkLandPriceReport = new BenchmarkLandPriceReport();
+            // 模拟数据 读取静态JSON文件填充数据  根据resource文件路径,生成文件
+            File jsonFile = ResourceUtils.getFile("classpath:template/json/word.json");
+            // 解析文件为指定编码的字符串
+            String json = FileUtils.readFileToString(jsonFile, "UTF-8");
+            // 转换格式
+            JSONObject jsonObject = JSON.parseObject(json);
+            // 读取模拟数据 并赋值给导出对象
+            String wordDataJson = jsonObject.get("wordData4").toString();
+            benchmarkLandPriceReport = JSON.parseObject(wordDataJson, BenchmarkLandPriceReport.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));
+            benchmarkLandPriceReport.setPicList(picList);
+
+            //模拟 用地地价预估情况 数据,分为 国有建设用地 集体建设用地
+            List<LandPriceEstimation> tableList01 = new ArrayList<>();
+            List<LandPriceEstimation> tableList02 = new ArrayList<>();
+            for (int i = 0; i < 6; i++) {
+                tableList01.add(new LandPriceEstimation(LvArray[i], new Random().nextDouble() * 100, new Random().nextDouble() * 100, new Random().nextDouble() * 100));
+                tableList02.add(new LandPriceEstimation(LvArray[i], new Random().nextDouble() * 100, new Random().nextDouble() * 100, new Random().nextDouble() * 100));
+            }
+
+            //国有建设用地面积 国有土地地价预估 默认0
+            Double areaSCL = 0.0;
+            Double landPriceESCL = 0.0;
+            //集体建设用地面积 集体土地地价预估 默认0
+            Double areaCCL = 0.0;
+            Double landPriceECCL = 0.0;
+            //总面积 总地价预估 默认0
+            Double totalArea = 0.0;
+            Double totalLandPrice = 0.0;
+            if (tableList01 != null && tableList01.size() > 0) {
+                areaSCL = tableList01.stream().mapToDouble(obj -> obj.getArea() != null ? obj.getArea() : 0).sum();
+                landPriceESCL = tableList01.stream().mapToDouble(obj -> obj.getLandPriceES() != null ? obj.getLandPriceES() : 0).sum();
+            }
+            if (tableList02 != null && tableList02.size() > 0) {
+                areaCCL = tableList02.stream().mapToDouble(obj -> obj.getArea() != null ? obj.getArea() : 0).sum();
+                landPriceECCL = tableList02.stream().mapToDouble(obj -> obj.getLandPriceES() != null ? obj.getLandPriceES() : 0).sum();
+            }
+            if (areaSCL > 0 && areaCCL > 0) {
+                totalArea = areaSCL + areaCCL;
+            }
+            if (landPriceESCL > 0 && landPriceECCL > 0) {
+                totalLandPrice = landPriceESCL + landPriceECCL;
+            }
+            // 赋值导出对象
+            benchmarkLandPriceReport.setTableList01(tableList01);
+            benchmarkLandPriceReport.setTableList02(tableList02);
+            benchmarkLandPriceReport.setTotalArea(totalArea);
+            benchmarkLandPriceReport.setTotalLandPrice(totalLandPrice);
+            benchmarkLandPriceReport.setAreaSCL(areaSCL);
+            benchmarkLandPriceReport.setLandPriceESCL(landPriceESCL);
+            benchmarkLandPriceReport.setAreaCCL(areaCCL);
+            benchmarkLandPriceReport.setLandPriceECCL(landPriceECCL);
+            return benchmarkLandPriceReport;
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("基准地价报告数据封装异常,{}" + e);
+        }
+        return null;
+    }
+
+
+    /**
+     * word写出
+     *
+     * @param response
+     * @param temDir
+     * @param wordName
+     * @param template
+     * @throws Exception
+     */
+    private void writeWord(HttpServletResponse response, String temDir, String wordName, XWPFTemplate template) throws Exception {
+        // 生成的word格式
+        String formatSuffix = ".docx";
+        // 拼接后的文件名 文件名.带后缀
+        String fileName = wordName + formatSuffix;
+        //=================生成word到设置浏览默认下载地址=================
+        // 设置强制下载不打开
+        response.setContentType("application/force-download");
+        // 设置文件名
+        response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8"));
+        OutputStream out = response.getOutputStream();
+        template.write(out);
+        out.flush();
+        out.close();
+        template.close();
+        //删除临时文件
+        File file = new File(temDir + fileName);
+        file.setWritable(true);
+        file.delete();
+
+    }
+
+
+    /**
+     * word存储
+     *
+     * @param response
+     * @param temDir
+     * @param wordName
+     * @param template
+     * @throws Exception
+     */
+    private String storageWord(HttpServletResponse response, String temDir, String wordName, XWPFTemplate template) throws Exception {
+        // 生成的word格式
+        String formatSuffix = ".docx";
+        // 拼接后的文件名 文件名.带后缀
+        String fileName = wordName + formatSuffix;
+
+        File file = new File(temDir + fileName);
+        FileOutputStream out = new FileOutputStream(file);
+        template.write(out);
+        out.close();
+        return fileName;
+    }
+}

+ 42 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/AnalyseData.java

@@ -0,0 +1,42 @@
+package com.onemap.sanya.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author Zzz
+ * @create 2024/6/4 14:55
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AnalyseData {
+
+    /**
+     * 一级编码
+     */
+    private String firstCode;
+    /**
+     * 一级名称
+     */
+    private String firstName;
+    /**
+     * 二级编码
+     */
+    private String secondCode;
+    /**
+     * 二级名称
+     */
+    private String secondName;
+
+    /**
+     * 面积
+     */
+    private Double areaValue;
+
+    /**
+     * 占比
+     */
+    private Double percentValue;
+}

+ 23 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/AnalyseDetailData.java

@@ -0,0 +1,23 @@
+package com.onemap.sanya.domain;
+
+import com.deepoove.poi.data.RowRenderData;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class AnalyseDetailData {
+
+
+	/**
+	 * 列表数据
+ 	 */
+	private List<RowRenderData> rowList;
+
+	/**
+	 * 分组统计个数数据
+	 */
+    private List<MageData> mageList;
+
+}

+ 110 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/BenchmarkLandPriceReport.java

@@ -0,0 +1,110 @@
+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 BenchmarkLandPriceReport {
+
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+    /**
+     * 分析时间
+     */
+    private String analysisDate;
+    /**
+     * 项目类型
+     */
+    private String projectType;
+    /**
+     * 建设单位
+     */
+    private String buildUnit;
+    /**
+     * 分析面积(平方米)
+     */
+    private String analysisArea;
+    /**
+     * 总地价(万元)
+     * 国有+集体 总地价预估合计
+     */
+    private Double totalLandPrice;
+    /**
+     * 国有建设用地面积(平方米)
+     * 国有 土地面积合计
+     */
+    private Double areaSCL;
+    /**
+     * 国有建设用地基准地价(万元)
+     */
+    private Double baseLandPriceSCL;
+    /**
+     * 集体建设用地面积(平方米)
+     * 集体 土地面积合计
+     */
+    private Double areaCCL;
+    /**
+     * 集体建设用地基准地价(万元)
+     */
+    private Double baseLandPriceCCL;
+
+    /**
+     * 图片集 分析范围
+     */
+    private List<PicData> picList;
+
+    /**
+     * 报告类型名称
+     */
+    private String definitionBLP;
+
+    /**
+     * 国有+集体土地面积合计 平方米
+     * tableList01 土地面积 + tableList01土地面积
+     */
+    private Double totalArea;
+
+
+    /**
+     * 国有土地地价预估  万元
+     * 国有 总地价预估合计
+     * tableList01 总地价预估 累加
+     */
+    private Double landPriceESCL;
+
+    /**
+     * 集体土地地价预估  万元
+     * 集体 总地价预估合计
+     * tableList02 总地价预估 累加
+     */
+    private Double landPriceECCL;
+
+    /**
+     * 国有建设用地
+     */
+    @Name("tableList01")
+    private List<LandPriceEstimation> tableList01;
+
+    /**
+     * 集体建设用地
+     */
+    @Name("tableList02")
+    private List<LandPriceEstimation> tableList02;
+
+
+}

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

@@ -0,0 +1,218 @@
+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;
+
+
+}

+ 101 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/ComplianceAnalysisReport.java

@@ -0,0 +1,101 @@
+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:14
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ComplianceAnalysisReport {
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 项目类型
+     */
+    private String projectType;
+
+    /**
+     * 建设单位
+     */
+    private String buildUnit;
+
+    /**
+     * 分析时间
+     */
+    private String analysisDate;
+
+    /**
+     * 分析因子 现状分析
+     */
+    @Name("tableList01")
+    private List<FactorData> tableList01;
+
+    /**
+     * 控制线分析 永久基本农田 涉及面积(平方米)
+     */
+    private String areaPBFarmland;
+
+    /**
+     * 控制线分析 城镇开发边界 涉及面积(平方米)
+     */
+    private String areaUDB;
+
+
+    /**
+     * 控制线分析 生态保护红线 涉及面积(平方米)
+     */
+    private String areaEPRL;
+
+    /**
+     * 分析因子 现状分析
+     */
+    @Name("tableList02")
+    private List<FactorData> tableList02;
+
+
+    /**
+     * 选址范围合计
+     */
+    private Double totalArea01;
+
+    /**
+     * 选址说明
+     */
+    private String detail01;
+
+    /**
+     * 范围现状分析列表
+     */
+    @Name("analyseList01")
+    private List<AnalyseData> analyseList01;
+
+    /**
+     * 选址范围合计
+     */
+    private Double totalArea02;
+
+    /**
+     * 选址说明
+     */
+    private String detail02;
+
+    /**
+     * 范围现状分析列表
+     */
+    @Name("analyseList02")
+    private List<AnalyseData> analyseList02;
+}

+ 74 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/FactorData.java

@@ -0,0 +1,74 @@
+package com.onemap.sanya.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 影响因子
+ *
+ * @author Zzz
+ * @create 2024/6/5 10:27
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class FactorData {
+    /**
+     * 因子名称
+     */
+    private String factor;
+
+    /**
+     * 计算方法
+     */
+    private String method;
+
+    /**
+     * 因子约束
+     */
+    private String factorConstraint;
+
+
+    public FactorData FactorDataForSiteSelectionReport(String factor, String method, String factorConstraint) {
+        FactorData factorData = new FactorData();
+        factorData.setFactor(factor);
+        factorData.setMethod(method);
+        factorData.setFactorConstraint(factorConstraint);
+        return factorData;
+    }
+
+    /**
+     * 因子名称
+     */
+    private String factor01;
+
+    /**
+     * 因子名称
+     */
+    private String factor02;
+
+    /**
+     * 面积
+     */
+    private String area01;
+
+    /**
+     * 面积
+     */
+    private String area02;
+
+    public FactorData FactorDataForComplianceAnalysisReport01(String factor01, String area01) {
+        FactorData factorData = new FactorData();
+        factorData.setFactor01(factor01);
+        factorData.setArea01(area01);
+        return factorData;
+    }
+
+    public FactorData FactorDataForComplianceAnalysisReport02(String factor02, String area02) {
+        FactorData factorData = new FactorData();
+        factorData.setFactor02(factor02);
+        factorData.setArea02(area02);
+        return factorData;
+    }
+}

+ 46 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/HouseCompensate.java

@@ -0,0 +1,46 @@
+package com.onemap.sanya.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 房屋补偿情况
+ *
+ * @author Zzz
+ * @create 2024/6/13 14:01
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class HouseCompensate {
+    /**
+     * 序号
+     */
+    private Integer id;
+    /**
+     * 房屋编号
+     */
+    private String bldCode;
+    /**
+     * 产权人
+     */
+    private String propertyOwner;
+    /**
+     * 拆迁补偿费用
+     */
+    private Integer feeCHD;
+    /**
+     * 房屋结构
+     */
+    private String bldStructure;
+    /**
+     * 建筑面积(m²)
+     */
+    private Integer floorArea;
+    /**
+     * 房屋地址
+     */
+    private String bldAddress;
+
+}

+ 20 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/JsonConvert.java

@@ -0,0 +1,20 @@
+package com.onemap.sanya.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author Zzz
+ * @create 2024/6/5 10:46
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class JsonConvert {
+    private String key;
+    private String value;
+    private List<JsonConvert> children;
+}

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

@@ -0,0 +1,32 @@
+package com.onemap.sanya.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 用地地价预估
+ * @author Zzz
+ * @create 2024/6/13 15:12
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class LandPriceEstimation {
+    /**
+     * 级别
+     */
+    private String lv;
+    /**
+     * 地价(元/平方米)
+     */
+    private Double landPrice;
+    /**
+     * 土地面积(平方米)
+     */
+    private Double area;
+    /**
+     * 土地面积(平方米)
+     */
+    private Double landPriceES;
+}

+ 17 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/MageData.java

@@ -0,0 +1,17 @@
+package com.onemap.sanya.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author Zzz
+ * @create 2024/6/5 14:20
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class MageData {
+    private String mageName;
+    private Long size;
+}

+ 15 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/PicData.java

@@ -0,0 +1,15 @@
+package com.onemap.sanya.domain;
+
+import com.deepoove.poi.data.PictureRenderData;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @author Zzz
+ * @create 2024/6/13 13:31
+ */
+@Data
+@AllArgsConstructor
+public class PicData {
+    private PictureRenderData img;
+}

+ 154 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/SiteSelectionReport.java

@@ -0,0 +1,154 @@
+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/4 14:51
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class SiteSelectionReport {
+    /**
+     * 项目名称
+     */
+    private String projectName;
+    /**
+     * 项目类型
+     */
+    private String projectType;
+    /**
+     * 用地性质
+     */
+    private String landCharacter;
+    /**
+     * 用地面积
+     */
+    private String landArea;
+    /**
+     * 建设单位
+     */
+    private String buildUnit;
+
+    /**
+     * 分析时间
+     */
+//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+//    private Date analysisDate;
+    private String analysisDate;
+
+    /**
+     * 影响因子列表
+     */
+    @Name("tableList")
+    private List<FactorData> tableList;
+
+    /**
+     * 选址范围合计
+     */
+    private String totalArea;
+
+    /**
+     * 范围说明
+     */
+    private String detail;
+
+    /**
+     * 范围现状分析列表
+     */
+    @Name("analyseList")
+    private List<AnalyseData> analyseList;
+
+    /**
+     * 方案数量
+     */
+    private Integer projectNumber;
+
+    /**
+     * 地块编码
+     */
+    private String blockCode;
+    /**
+     * 县级行政区
+     */
+    private String countyRegion;
+    /**
+     * 地块用地类别代码
+     */
+    private String blockTypeCode;
+    /**
+     * 地块用地类别名称
+     */
+    private String blockTypeName;
+    /**
+     * 用地面积(平方米)
+     */
+    //private String landArea;
+    /**
+     * 建筑面积(平方米)
+     */
+    private String floorArea;
+    /**
+     * 容积率上限
+     */
+    private String upLimitPlotRatio;
+    /**
+     * 容积率下限
+     */
+    private String lowLimitPlotRatio;
+    /**
+     * 建筑密度上限(%)
+     */
+    private String upLimitBldDensity;
+    /**
+     * 建筑密度下限(%)
+     */
+    private String lowLimitBldDensity;
+    /**
+     * 绿地率上限(%)
+     */
+    private String upLimitGCRatio;
+    /**
+     * 绿地率下限(%)
+     */
+    private String lowLimitGCRatio;
+    /**
+     * 建筑限高上限(米)
+     */
+    private String upLimitofHLimit;
+    /**
+     * 建筑限高下限(米)
+     */
+    private String lowLimitofHLimit;
+    /**
+     * 配建机动车位(个)
+     */
+    private String motorParking;
+    /**
+     * 配建非机动车位(个)
+     */
+    private String nonMotorParking;
+    /**
+     * 配建机动车位说明
+     */
+    private String motorParkingDescription;
+    /**
+     * 基准地价预估(万元)
+     */
+    private String estimatedBenchLandPrice;
+    /**
+     * 图片集
+     */
+    private List<PicData>  picList;
+
+}

+ 103 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/mergeCell/AnalyseDetailTablePolicy.java

@@ -0,0 +1,103 @@
+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.MageData;
+import org.apache.poi.xwpf.usermodel.*;
+
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 表格动态行插入、渲染、合并单元格处理
+ *
+ * @author Zzz
+ */
+public class AnalyseDetailTablePolicy 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<AnalyseData> dataList = (List<AnalyseData>) 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 (AnalyseData analyseData : dataList) {
+                RowRenderData build = Rows.create(analyseData.getFirstCode(),
+                        analyseData.getFirstName(),
+                        analyseData.getSecondCode(),
+                        analyseData.getSecondName(),
+                        analyseData.getAreaValue() != null ? analyseData.getAreaValue().toString() : "",
+                        analyseData.getPercentValue() != null ? analyseData.getPercentValue().toString() : "");
+                build.setRowStyle(rowStyle);
+                rowList.add(build);
+            }
+            //设置合并列计数器
+            Map<String, Long> collectMap = dataList.stream().collect(Collectors.groupingBy(AnalyseData::getFirstName, 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(1).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;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

+ 8 - 0
onemap-modules/onemap-model/src/main/resources/banner.txt

@@ -0,0 +1,8 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+  _____.__.__
+_/ ____\__|  |   ____
+\   __\|  |  | _/ __ \
+ |  |  |  |  |_\  ___/
+ |__|  |__|____/\___  >
+                    \/

+ 32 - 0
onemap-modules/onemap-model/src/main/resources/bootstrap.yml

@@ -0,0 +1,32 @@
+# Tomcat
+server:
+  port: 9207
+
+# Spring
+spring:
+  servlet:
+    multipart:
+      enabled: true
+      max-file-size: 1024MB
+      max-request-size: 1024MB
+  application:
+    # 应用名称
+    name: onemap-model
+  profiles:
+    # 环境配置
+    active: dev
+  cloud:
+    nacos:
+      discovery:
+        namespace: model
+        # 服务注册地址
+        server-addr: 192.168.100.30:8848
+      config:
+        namespace: model
+        # 配置中心地址
+        server-addr: 192.168.100.30:8848
+        # 配置文件格式
+        file-extension: yml
+        # 共享配置
+        shared-configs:
+          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

+ 74 - 0
onemap-modules/onemap-model/src/main/resources/logback.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <!-- 日志存放路径 -->
+	<property name="log.path" value="logs/onemap-file" />
+   <!-- 日志输出格式 -->
+	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+
+    <!-- 控制台输出 -->
+	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>${log.pattern}</pattern>
+		</encoder>
+	</appender>
+
+    <!-- 系统日志输出 -->
+	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+	    <file>${log.path}/info.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+			<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
+			<!-- 日志最大的历史 60天 -->
+			<maxHistory>60</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${log.pattern}</pattern>
+		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>INFO</level>
+            <!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+	</appender>
+
+    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+	    <file>${log.path}/error.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
+			<!-- 日志最大的历史 60天 -->
+			<maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>ERROR</level>
+			<!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+			<!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 系统模块日志级别控制  -->
+	<logger name="com.onemap" level="info" />
+	<!-- Spring日志级别控制  -->
+	<logger name="org.springframework" level="warn" />
+
+	<root level="info">
+		<appender-ref ref="console" />
+	</root>
+	
+	<!--系统操作日志-->
+    <root level="info">
+        <appender-ref ref="file_info" />
+        <appender-ref ref="file_error" />
+    </root>
+</configuration>

BIN
onemap-modules/onemap-model/src/main/resources/template/img/test.png


+ 1043 - 0
onemap-modules/onemap-model/src/main/resources/template/json/word.json

@@ -0,0 +1,1043 @@
+{
+  "wordData1": {
+    "//": "对应实体类SiteSelectionReport",
+    "projectName": "选址报告-项目名称",
+    "projectType": "选址报告-项目类型",
+    "landCharacter": "选址报告-用地性质",
+    "landArea": "选址报告-用地面积",
+    "buildUnit": "选址报告-建设单位",
+    "analysisDate": "2024-06-05 13:00:00",
+    "tableList": [],
+    "projectNumber": "1",
+    "blockCode": "选址报告-地块编码",
+    "countyRegion": "选址报告-县级行政区",
+    "blockTypeCode": "选址报告-地块用地类别代码",
+    "blockTypeName": "选址报告-地块用地类别名称",
+    "landArea": "选址报告-用地面积",
+    "floorArea": "选址报告-建筑面积",
+    "upLimitPlotRatio": "选址报告-容积率上限",
+    "lowLimitPlotRatio": "选址报告-容积率下限",
+    "upLimitBldDensity": "选址报告-建筑密度上限",
+    "lowLimitBldDensity": "选址报告-建筑密度下限",
+    "upLimitGCRatio": "选址报告-绿地率上限",
+    "lowLimitGCRatio": "选址报告-绿地率下限",
+    "upLimitofHLimit": "选址报告-建筑限高上限",
+    "lowLimitofHLimit": "选址报告-建筑限高下限",
+    "motorParking": "选址报告-配建机动车位",
+    "nonMotorParking": "选址报告-配建非机动车位",
+    "motorParkingDescription": "选址报告-配建机动车位说明",
+    "estimatedBenchLandPrice": "选址报告-基准地价预估"
+  },
+  "wordData2": {
+    "//": "对应实体类ComplianceAnalysisReport",
+    "projectName": "合规性分析-项目名称",
+    "projectType": "合规性分析-项目类型",
+    "buildUnit": "合规性分析-建设单位",
+    "analysisDate": "2024-06-14 10:37:56",
+    "tableList01": null,
+    "areaPBFarmland": "合规性分析-永久基本农田",
+    "areaUDB": "合规性分析-城镇开发边界",
+    "areaEPRL": "合规性分析-生态保护红线",
+    "tableList02": null,
+    "totalArea01": null,
+    "detail01": null,
+    "analyseList01": null,
+    "totalArea02": null,
+    "detail02": null,
+    "analyseList02": null
+  },
+  "wordData3": {
+    "//": "对应实体类CompensateEstimateReport",
+    "projectName": "征收补偿预估-项目名称",
+    "analysisDate": "2024-06-14 10:49:21",
+    "analysisArea": "征收补偿预估-分析面积",
+    "feeETC": "征收补偿预估-总费用预估",
+    "feeECLA": "征收补偿预估-征地补偿费预估",
+    "feeECHD": null,
+    "feeECYC": "征收补偿预估-青苗补偿费预估",
+    "picList": [],
+    "annualValue": "征收补偿预估-年产值",
+    "multipleLC": "征收补偿预估-土地补偿费综合补偿倍数",
+    "priceLC": "征收补偿预估-土地补偿费元/亩",
+    "multipleRC": "征收补偿预估-安置补助费综合补偿倍数",
+    "priceRC": "征收补偿预估-安置补助费元/亩",
+    "priceLCRC": "征收补偿预估-土地补偿费及安置补助费合计(元/亩)",
+    "feeLC": "征收补偿预估-土地补偿费合计",
+    "feeRC": "征收补偿预估-安置补偿费合计",
+    "priceFrame01": "征收补偿预估-框架结构1级",
+    "priceFrame02": "征收补偿预估-框架结构2级",
+    "priceComposite01": "征收补偿预估-混合结构1级",
+    "priceComposite03": "征收补偿预估-混合结构3级",
+    "priceBrickWood01": "征收补偿预估-砖木结构1级",
+    "priceBrickWood02": "征收补偿预估-砖木结构2级",
+    "priceSimple01": "征收补偿预估-简易结构1级",
+    "priceSimple02": "征收补偿预估-简易结构2级",
+    "priceShelter01": "征收补偿预估-凉棚1级",
+    "priceShelter02": "征收补偿预估-凉棚2级",
+    "numberEHD": null,
+    "totalFA": null,
+    "averageFeeECHD": null,
+    "tableList01": [],
+    "priceCC": "征收补偿预估-农作物补偿标准",
+    "priceECC": "征收补偿预估-经济作物补偿标准",
+    "priceFC": "征收补偿预估-林木补偿标准",
+    "areaCC": "征收补偿预估-预估农作物补偿面积",
+    "feeCC": "征收补偿预估-预估农作物补偿金额",
+    "areaECC": "征收补偿预估-预估经济作物补偿面积",
+    "feeECC": "征收补偿预估-预估经济作物补偿金额",
+    "areaFC": "征收补偿预估-预估林木补偿面积",
+    "feeFC": "征收补偿预估-预估林木补偿金额"
+  },
+  "wordData4": {
+    "//": "对应实体类BenchmarkLandPriceReport",
+    "projectName": "基准地价-项目名称",
+    "analysisDate": "2024-06-14 10:55:37",
+    "projectType": "基准地价-项目类型",
+    "buildUnit": "基准地价-建设单位",
+    "analysisArea": "基准地价-分析面积",
+    "totalLandPrice": null,
+    "areaSCL": null,
+    "baseLandPriceSCL": null,
+    "areaCCL": null,
+    "baseLandPriceCCL": null,
+    "picList": [],
+    "definitionBLP": "基准地价-报告类型名称",
+    "totalArea": null,
+    "landPriceESCL": null,
+    "landPriceECCL": null,
+    "tableList01": [],
+    "tableList02": []
+  },
+  "analyseJson": [
+    {
+      "key": "01",
+      "value": "耕地",
+      "children": [
+        {
+          "key": "0101",
+          "value": "水田"
+        },
+        {
+          "key": "0102",
+          "value": "水浇地"
+        },
+        {
+          "key": "0103",
+          "value": "旱地"
+        }
+      ]
+    },
+    {
+      "key": "02",
+      "value": "园地",
+      "children": [
+        {
+          "key": "0201",
+          "value": "果园"
+        },
+        {
+          "key": "0202",
+          "value": "茶园"
+        },
+        {
+          "key": "0203",
+          "value": "橡胶园"
+        },
+        {
+          "key": "0204",
+          "value": "其他园地"
+        }
+      ]
+    },
+    {
+      "key": "03",
+      "value": "林地",
+      "children": [
+        {
+          "key": "0301",
+          "value": "乔木林地"
+        },
+        {
+          "key": "0302",
+          "value": "竹林地"
+        },
+        {
+          "key": "0303",
+          "value": "灌木林地"
+        },
+        {
+          "key": "0304",
+          "value": "其他林地"
+        }
+      ]
+    },
+    {
+      "key": "04",
+      "value": "草地",
+      "children": [
+        {
+          "key": "0401",
+          "value": "天然牧草地"
+        },
+        {
+          "key": "0402",
+          "value": "人工牧草地"
+        },
+        {
+          "key": "0403",
+          "value": "其他草地"
+        }
+      ]
+    },
+    {
+      "key": "05",
+      "value": "湿地",
+      "children": [
+        {
+          "key": "0501",
+          "value": "森林沼泽"
+        },
+        {
+          "key": "0502",
+          "value": "灌丛沼泽"
+        },
+        {
+          "key": "0503",
+          "value": "沼泽草地"
+        },
+        {
+          "key": "0504",
+          "value": "其他沼泽地"
+        },
+        {
+          "key": "0505",
+          "value": "沿海滩涂"
+        },
+        {
+          "key": "0506",
+          "value": "内陆滩涂"
+        },
+        {
+          "key": "0507",
+          "value": "红树林地"
+        }
+      ]
+    },
+    {
+      "key": "06",
+      "value": "农业设施建设用地",
+      "children": [
+        {
+          "key": "0601",
+          "value": "乡村道路用地"
+        },
+        {
+          "key": "0602",
+          "value": "种植设施建设用地"
+        },
+        {
+          "key": "0603",
+          "value": "禽兽养殖设施建设用地"
+        },
+        {
+          "key": "0604",
+          "value": "水产养殖设施建设用地"
+        }
+      ]
+    },
+    {
+      "key": "07",
+      "value": "居住用地",
+      "children": [
+        {
+          "key": "0701",
+          "value": "城镇住宅用地"
+        },
+        {
+          "key": "0702",
+          "value": "城镇社区服务设施用地"
+        },
+        {
+          "key": "0703",
+          "value": "农村宅基地"
+        },
+        {
+          "key": "0704",
+          "value": "农村社区服务设施用地"
+        }
+      ]
+    },
+    {
+      "key": "08",
+      "value": "公共管理与公共服务用地",
+      "children": [
+        {
+          "key": "0801",
+          "value": "机关团体用地"
+        },
+        {
+          "key": "0802",
+          "value": "科研用地"
+        },
+        {
+          "key": "0803",
+          "value": "文化用地"
+        },
+        {
+          "key": "0804",
+          "value": "教育用地"
+        },
+        {
+          "key": "0805",
+          "value": "体育用地"
+        },
+        {
+          "key": "0806",
+          "value": "医疗卫生用地"
+        },
+        {
+          "key": "0807",
+          "value": "社会福利用地"
+        }
+      ]
+    },
+    {
+      "key": "09",
+      "value": "商业服务业用地",
+      "children": [
+        {
+          "key": "0901",
+          "value": "商业用地"
+        },
+        {
+          "key": "0902",
+          "value": "商务金融用地"
+        },
+        {
+          "key": "0903",
+          "value": "娱乐康体用地"
+        },
+        {
+          "key": "0904",
+          "value": "其他商业服务业用地"
+        }
+      ]
+    },
+    {
+      "key": "10",
+      "value": "工矿用地",
+      "children": [
+        {
+          "key": "1001",
+          "value": "工业用地"
+        },
+        {
+          "key": "1002",
+          "value": "采矿用地"
+        },
+        {
+          "key": "1003",
+          "value": "盐田"
+        }
+      ]
+    },
+    {
+      "key": "11",
+      "value": "仓储用地",
+      "children": [
+        {
+          "key": "1101",
+          "value": "物流仓储用地"
+        },
+        {
+          "key": "1102",
+          "value": "储备库用地"
+        }
+      ]
+    },
+    {
+      "key": "12",
+      "value": "交通运输用地",
+      "children": [
+        {
+          "key": "1201",
+          "value": "铁路用地"
+        },
+        {
+          "key": "1202",
+          "value": "公路用地"
+        },
+        {
+          "key": "1203",
+          "value": "机场用地"
+        },
+        {
+          "key": "1204",
+          "value": "港口码头用地"
+        },
+        {
+          "key": "1205",
+          "value": "管道运输用地"
+        },
+        {
+          "key": "1206",
+          "value": "城市轨道交通用地"
+        },
+        {
+          "key": "1207",
+          "value": "城镇道路用地"
+        },
+        {
+          "key": "1208",
+          "value": "交通场站用地"
+        },
+        {
+          "key": "1209",
+          "value": "其他交通设施用地"
+        }
+      ]
+    },
+    {
+      "key": "13",
+      "value": "公用设施用地",
+      "children": [
+        {
+          "key": "1301",
+          "value": "供水用地"
+        },
+        {
+          "key": "1302",
+          "value": "排水用地"
+        },
+        {
+          "key": "1303",
+          "value": "供电用地"
+        },
+        {
+          "key": "1304",
+          "value": "供燃气用地"
+        },
+        {
+          "key": "1305",
+          "value": "供热用地"
+        },
+        {
+          "key": "1306",
+          "value": "通信用地"
+        },
+        {
+          "key": "1307",
+          "value": "邮政用地"
+        },
+        {
+          "key": "1308",
+          "value": "广播电视设施用地"
+        },
+        {
+          "key": "1309",
+          "value": "环卫用地"
+        },
+        {
+          "key": "1310",
+          "value": "消防用地"
+        },
+        {
+          "key": "1311",
+          "value": "干渠"
+        },
+        {
+          "key": "1312",
+          "value": "水工设施用地"
+        },
+        {
+          "key": "1313",
+          "value": "其他公用设施用地"
+        }
+      ]
+    },
+    {
+      "key": "14",
+      "value": "绿地与开敞空间用地",
+      "children": [
+        {
+          "key": "1401",
+          "value": "公园绿地"
+        },
+        {
+          "key": "1402",
+          "value": "防护绿地"
+        },
+        {
+          "key": "1403",
+          "value": "广场用地"
+        }
+      ]
+    },
+    {
+      "key": "15",
+      "value": "特殊用地",
+      "children": [
+        {
+          "key": "1501",
+          "value": "军事设施用地"
+        },
+        {
+          "key": "1502",
+          "value": "使领馆用地"
+        },
+        {
+          "key": "1503",
+          "value": "宗教用地"
+        },
+        {
+          "key": "1504",
+          "value": "文物古迹用地"
+        },
+        {
+          "key": "1505",
+          "value": "监教场所用地"
+        },
+        {
+          "key": "1506",
+          "value": "殡葬用地"
+        },
+        {
+          "key": "1507",
+          "value": "其他特殊用地"
+        }
+      ]
+    },
+    {
+      "key": "16",
+      "value": "留白用地"
+    },
+    {
+      "key": "17",
+      "value": "陆地水域",
+      "children": [
+        {
+          "key": "1701",
+          "value": "河流水面"
+        },
+        {
+          "key": "1702",
+          "value": "湖泊水面"
+        },
+        {
+          "key": "1703",
+          "value": "水库水面"
+        },
+        {
+          "key": "1704",
+          "value": "坑塘水面"
+        },
+        {
+          "key": "1705",
+          "value": "沟渠"
+        },
+        {
+          "key": "1706",
+          "value": "冰川及常年积雪"
+        }
+      ]
+    },
+    {
+      "key": "18",
+      "value": "渔业用海",
+      "children": [
+        {
+          "key": "1801",
+          "value": "渔业基础设施用海"
+        },
+        {
+          "key": "1802",
+          "value": "增养殖用海"
+        },
+        {
+          "key": "1803",
+          "value": "捕捞用海"
+        }
+      ]
+    },
+    {
+      "key": "19",
+      "value": "工矿通信用海",
+      "children": [
+        {
+          "key": "1901",
+          "value": "工业用海"
+        },
+        {
+          "key": "1902",
+          "value": "盐田用海"
+        },
+        {
+          "key": "1903",
+          "value": "固体矿产用海"
+        },
+        {
+          "key": "1904",
+          "value": "油气用海"
+        },
+        {
+          "key": "1905",
+          "value": "可再生能源用海"
+        },
+        {
+          "key": "1906",
+          "value": "海底电缆管道用海"
+        }
+      ]
+    },
+    {
+      "key": "20",
+      "value": "交通运输用海",
+      "children": [
+        {
+          "key": "2001",
+          "value": "港口用海"
+        },
+        {
+          "key": "2002",
+          "value": "航运用海"
+        },
+        {
+          "key": "2003",
+          "value": "路桥隧道用海"
+        }
+      ]
+    },
+    {
+      "key": "21",
+      "value": "游憩用海",
+      "children": [
+        {
+          "key": "2101",
+          "value": "风景旅游用海"
+        },
+        {
+          "key": "2102",
+          "value": "文体休闲娱乐用海"
+        }
+      ]
+    },
+    {
+      "key": "22",
+      "value": "特殊用海",
+      "children": [
+        {
+          "key": "2201",
+          "value": "军事用海"
+        },
+        {
+          "key": "2202",
+          "value": "其他特殊用海"
+        }
+      ]
+    },
+    {
+      "key": "23",
+      "value": "其他土地",
+      "children": [
+        {
+          "key": "2301",
+          "value": "空闲地"
+        },
+        {
+          "key": "2302",
+          "value": "田坎"
+        },
+        {
+          "key": "2303",
+          "value": "田间道"
+        },
+        {
+          "key": "2304",
+          "value": "盐碱地"
+        },
+        {
+          "key": "2305",
+          "value": "沙地"
+        },
+        {
+          "key": "2306",
+          "value": "裸土地"
+        },
+        {
+          "key": "2306",
+          "value": "裸岩石砾地"
+        }
+      ]
+    },
+    {
+      "key": "24",
+      "value": "其他海域"
+    }
+  ],
+  "analyseJson3": [
+    {
+      "key": "01",
+      "value": "耕地",
+      "children": [
+        {
+          "key": "0101",
+          "value": "水田"
+        },
+        {
+          "key": "0102",
+          "value": "水浇地"
+        },
+        {
+          "key": "0103",
+          "value": "旱地"
+        }
+      ]
+    },
+    {
+      "key": "02",
+      "value": "种植园用地",
+      "children": [
+        {
+          "key": "0201",
+          "value": "果园"
+        },
+        {
+          "key": "0202",
+          "value": "茶园"
+        },
+        {
+          "key": "0203",
+          "value": "橡胶园"
+        },
+        {
+          "key": "0204",
+          "value": "其他园地"
+        }
+      ]
+    },
+    {
+      "key": "03",
+      "value": "林地",
+      "children": [
+        {
+          "key": "0301",
+          "value": "乔木林地"
+        },
+        {
+          "key": "0302",
+          "value": "竹林地"
+        },
+        {
+          "key": "0303",
+          "value": "红树林地"
+        },
+        {
+          "key": "0304",
+          "value": "森林沼泽"
+        },
+        {
+          "key": "0305",
+          "value": "灌木林地"
+        },
+        {
+          "key": "0306",
+          "value": "灌丛沼泽"
+        },
+        {
+          "key": "0307",
+          "value": "其他林地"
+        }
+      ]
+    },
+    {
+      "key": "04",
+      "value": "草地",
+      "children": [
+        {
+          "key": "0401",
+          "value": "天然牧草地"
+        },
+        {
+          "key": "0402",
+          "value": "沼泽草地"
+        },
+        {
+          "key": "0403",
+          "value": "人工牧草地"
+        },
+        {
+          "key": "0403",
+          "value": "其他草地"
+        }
+      ]
+    },
+    {
+      "key": "05",
+      "value": "商服用地",
+      "children": [
+        {
+          "key": "0501",
+          "value": "零售商业用地"
+        },
+        {
+          "key": "0502",
+          "value": "批发市场用地"
+        },
+        {
+          "key": "0503",
+          "value": "餐饮用地"
+        },
+        {
+          "key": "0504",
+          "value": "旅馆用地"
+        },
+        {
+          "key": "0505",
+          "value": "商务金融用地"
+        },
+        {
+          "key": "0506",
+          "value": "娱乐用地"
+        },
+        {
+          "key": "0507",
+          "value": "其他商服用地"
+        }
+      ]
+    },
+    {
+      "key": "06",
+      "value": "工矿仓储用地",
+      "children": [
+        {
+          "key": "0601",
+          "value": "工业用地"
+        },
+        {
+          "key": "0602",
+          "value": "采矿用地"
+        },
+        {
+          "key": "0603",
+          "value": "盐田"
+        },
+        {
+          "key": "0604",
+          "value": "仓储用地"
+        }
+      ]
+    },
+    {
+      "key": "07",
+      "value": "住宅用地",
+      "children": [
+        {
+          "key": "0701",
+          "value": "城镇住宅用地"
+        },
+        {
+          "key": "0702",
+          "value": "农村宅基地"
+        }
+      ]
+    },
+    {
+      "key": "08",
+      "value": "公共管理与公共服务用地",
+      "children": [
+        {
+          "key": "0801",
+          "value": "机关团体用地"
+        },
+        {
+          "key": "0802",
+          "value": "新闻出版用地"
+        },
+        {
+          "key": "0803",
+          "value": "教育用地"
+        },
+        {
+          "key": "0804",
+          "value": "科研用地"
+        },
+        {
+          "key": "0805",
+          "value": "医疗卫生用地"
+        },
+        {
+          "key": "0806",
+          "value": "社会福利用地"
+        },
+        {
+          "key": "0807",
+          "value": "文化设施用地"
+        },
+        {
+          "key": "0808",
+          "value": "体育用地"
+        },
+        {
+          "key": "0809",
+          "value": "公用设施用地"
+        },
+        {
+          "key": "080910",
+          "value": "公园和绿地"
+        }
+      ]
+    },
+    {
+      "key": "09",
+      "value": "特殊用地",
+      "children": [
+        {
+          "key": "0901",
+          "value": "军事设施用地"
+        },
+        {
+          "key": "0902",
+          "value": "使领馆用地"
+        },
+        {
+          "key": "0903",
+          "value": "监教场所用地"
+        },
+        {
+          "key": "0904",
+          "value": "宗教用地"
+        },
+        {
+          "key": "0904",
+          "value": "殡葬用地"
+        },
+        {
+          "key": "0904",
+          "value": "风景名胜设施用地"
+        }
+      ]
+    },
+    {
+      "key": "10",
+      "value": "交通运输用地",
+      "children": [
+        {
+          "key": "1001",
+          "value": "铁路用地"
+        },
+        {
+          "key": "1002",
+          "value": "轨道交通用地"
+        },
+        {
+          "key": "1003",
+          "value": "公路用地"
+        },
+        {
+          "key": "1004",
+          "value": "城镇村道路用地"
+        },
+        {
+          "key": "1005",
+          "value": "交通服务场站用地"
+        },
+        {
+          "key": "1006",
+          "value": "农村道路"
+        },
+        {
+          "key": "1007",
+          "value": "机场用地"
+        },
+        {
+          "key": "1008",
+          "value": "港口码头用地"
+        },
+        {
+          "key": "1009",
+          "value": "管道运输用地"
+        }
+      ]
+    },
+    {
+      "key": "11",
+      "value": "水域及水利设施用地",
+      "children": [
+        {
+          "key": "1101",
+          "value": "河流水面"
+        },
+        {
+          "key": "1102",
+          "value": "湖泊水面"
+        },
+        {
+          "key": "1103",
+          "value": "水库水面"
+        },
+        {
+          "key": "1104",
+          "value": "坑塘水面"
+        },
+        {
+          "key": "1105",
+          "value": "沿海滩涂"
+        },
+        {
+          "key": "1106",
+          "value": "内陆滩涂"
+        },
+        {
+          "key": "1107",
+          "value": "沟渠"
+        },
+        {
+          "key": "1108",
+          "value": "沼泽地"
+        },
+        {
+          "key": "1109",
+          "value": "水工建筑用地"
+        },
+        {
+          "key": "1110",
+          "value": "冰川及永久积雪"
+        }
+      ]
+    },
+    {
+      "key": "12",
+      "value": "其他土地",
+      "children": [
+        {
+          "key": "1201",
+          "value": "空闲地"
+        },
+        {
+          "key": "1202",
+          "value": "设施农用地"
+        },
+        {
+          "key": "1203",
+          "value": "田坎"
+        },
+        {
+          "key": "1204",
+          "value": "盐碱地"
+        },
+        {
+          "key": "1205",
+          "value": "沙地"
+        },
+        {
+          "key": "1206",
+          "value": "裸土地"
+        },
+        {
+          "key": "1207",
+          "value": "裸岩石砾地"
+        }
+      ]
+    }
+  ]
+}

+ 100 - 0
onemap-modules/onemap-model/src/main/resources/template/word/01-选址报告-02.docx

@@ -0,0 +1,100 @@
+智能选址报告
+选址信息
+项目名称
+{{projectName}}
+项目类型
+{{projectType}}
+用地性质
+{{landCharacter}}
+用地面积
+{{landArea}}
+建设单位
+{{buildUnit}}
+分析时间
+{{analysisDate}}
+影响因子
+{{tableList}}因子名称
+计算方法
+因子约束
+[factor]
+[method]
+[factorConstraint]
+
+
+
+
+
+
+
+
+
+
+
+
+选址范围现状分析
+  输入的选址范围共{{totalArea}}平方米,其中:{{detail}};......。详情如下:
+                          {{analyseList}}一级地类
+                                 二级地类
+                             面积(平方米)
+                                 占比(%)
+
+
+
+
+
+
+
+
+
+
+
+
+
+选址方案分析
+  按照项目选址要求和影响因子,通过对分析范围内的规划地块进行筛选,符合要求的方案共{{projectNumber}}个。
+  方案一
+地块编码
+{{blockCode}}
+县级行政区
+{{countyRegion}}
+地块用地类别代码
+{{blockTypeCode}}
+地块用地类别名称
+{{blockTypeName}}
+用地面积(平方米)
+{{landArea}}
+建筑面积(平方米)
+{{floorArea}}
+容积率上限
+{{upLimitPlotRatio}}
+容积率下限
+{{lowLimitPlotRatio}}
+建筑密度上限(%)
+{{upLimitBldDensity}}
+建筑密度下限(%)
+{{lowLimitBldDensity}}
+绿地率上限(%)
+{{upLimitGCRatio}}
+绿地率下限(%)
+{{lowLimitGCRatio}}
+建筑限高上限(米)
+{{upLimitofHLimit}}
+建筑限高下限(米)
+{{lowLimitofHLimit}}
+配建机动车位(个)
+{{motorParking}}
+配建非机动车位(个)
+{{nonMotorParking}}
+配建机动车位说明
+{{motorParkingDescription}}
+基准地价预估(万元)
+{{estimatedBenchLandPrice}}
+地块位置
+空间位置截图(遥感影像为底图,叠加地块)
+{{?picList}}{{@img}}{{/picList}}
+
+
+
+
+ 方案二
+ 同上

+ 87 - 0
onemap-modules/onemap-model/src/main/resources/template/word/02-合规性分析报告-02.docx

@@ -0,0 +1,87 @@
+合规性分析报告
+分析信息
+项目名称
+{{projectName}}
+项目类型
+{{projectType}}
+建设单位
+{{buildUnit}}
+分析时间
+{{analysisDate}}
+分析因子
+因子分类
+分析因子
+涉及面积(平方米)
+{{tableList01}}
+现状分析
+[factor01]
+[area01]
+
+
+
+控制线分析
+永久基本农田
+{{areaPBFarmland}}
+
+城镇开发边界
+{{areaUDB}}
+
+生态保护红线
+{{areaEPRL}}
+{{tableList02}}
+控制性详细规划分析
+[factor02]
+[area02]
+
+
+
+现状分析
+  输入的选址范围共{{totalArea01}}平方米,涉及三调一级地类XX种,二级地类XX种。其中:{{detail01}};......。详情如下:
+                         {{analyseList01}}一级地类
+                                 二级地类
+                             面积(平方米)
+                                 占比(%)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+控制性详细规划分析
+  输入的选址范围共{{totalArea02}}平方米,涉及用地用海一级类XX种,用地用海二地类XX种。其中:{{detail02}};......。详情如下:
+  
+                         {{analyseList02}}一级地类
+                                 二级地类
+                             面积(平方米)
+                                 占比(%)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  

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

@@ -0,0 +1,118 @@
+征收补偿预估报告
+征收补偿信息
+                                 项目名称
+                                {{projectName}}
+                                 分析时间
+{{analysisDate}}
+                                 分析面积
+                                (平方米)
+                               {{analysisArea}}
+                                总费用预估
+                                 (万元)
+{{feeETC}}
+                       征地补偿费预估(万元)
+                                  {{feeECLA}}
+                          房屋拆迁补偿费预估
+                                 (万元)
+{{feeECHD}}
+                       青苗补偿费预估(万元)
+                                  {{feeECYC}}
+                                       
+
+分析范围
+{{?picList}}{{@img}}{{/picList}}
+征地补偿费预估
+  征地补偿费预估标准
+  按征地统一年产值土地补偿费、安置补助费标准,具体如下表:
+                            年产值(元/亩)
+                                土地补偿费
+                                安置补助费
+             土地补偿费及安置补助费合计(元/亩)
+                                       
+                              综合补偿倍数
+                                    元/亩
+                              综合补偿倍数
+                                    元/亩
+                                       
+                                {{annualValue}}
+                                {{multipleLC}}
+                                  {{priceLC}}
+                                {{multipleRC}}
+                                  {{priceRC}}
+{{priceLCRC}}
+  征地补偿费预估
+  预计征地补偿费用合计{{feeECLA}},其中:土地补偿费共{{feeLC}}万元;安置补偿费共{{feeRC}}万元。
+                                       
+                    图1 项目土地现状补偿面积情况
+房屋拆迁补偿费预估
+  房屋拆迁补偿费预估标准
+ 按级别1进行评估,具体标准如下:
+                                 房屋结构
+                                    级别
+                           单价(元/平方米)
+                                 框架结构
+                                       1
+{{priceFrame01}}
+                                       
+                                       2
+{{priceFrame02}}
+                                 混合结构
+                                       1
+{{priceComposite01}}
+                                       
+                                       3
+{{priceComposite03}}
+                                 砖木结构
+                                       1
+{{priceBrickWood01}}
+                                       
+                                       2
+{{priceBrickWood02}}
+                                 简易结构
+                                       1
+{{priceSimple01}}
+                                       
+                                       2
+{{priceSimple02}}
+                                    凉棚
+                                       1
+{{priceShelter01}}
+                                       
+                                       2
+{{priceShelter02}}
+  房屋补偿费预估
+  预计拆迁房屋共{{numberEHD}}个,总建筑面积{{totalFA}}平方米,房屋拆迁补偿费用共{{feeECHD}}万元,平均补偿费用{{averageFeeECHD}}万元/平方米。
+  各个房屋补偿情况如下表。
+{{tableList01}}序号
+房屋编号
+产权人
+拆迁补偿费用
+房屋结构
+建筑面积(m²)
+房屋地址
+[id]
+[bldCode]
+[propertyOwner]
+[feeCHD]
+[bldStructure]
+[floorArea]
+[bldAddress]
+
+
+
+
+
+
+
+青苗补偿费预估
+  青苗补偿费预估标准
+                         农作物补偿(元/亩)
+                        经济作物补偿(元/亩)
+                           林木补偿(元/亩)
+                                  {{priceCC}}
+                                 {{priceECC}}
+                                  {{priceFC}}
+  青苗补偿费预估
+  预计青苗补偿费用合计{{feeECYC}}万元,其中:农作物补偿{{areaCC}}平方米,共{{feeCC}}万元;经济作物补偿{{areaECC}}平方米,共{{feeECC}}万元;林木{{areaFC}}平方米,补偿共{{feeFC}}万元。
+  
+  

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

@@ -0,0 +1,104 @@
+基准地价报告
+1 基准地价内涵
+  根据2020年《三亚市国有建设用地土地定级与基准地价》和《三亚市集体建设用地土地定级与基准地价》编制成果,实现指定范围内国有建设用地和集体建设用的基准地价预估。国有建设用地和集体建设用地基准地价内涵说明如下表。
+                                    内涵
+                                 商服用地
+                                 住宅用地
+                                工矿仓用地
+                       公共服务项目用地(一)
+                         公共服务项目用地(二)
+                                评估基准日
+2019年7月1日
+                              土地开发程度
+五通一平
+                                设定容积率
+2
+2.5
+1
+中心城区
+中心城区以外区域
+1
+                                       
+
+
+
+1.5
+1
+
+                              土地使用年限
+40年
+70年
+50年
+50年
+50年
+                                 价格类型
+平均楼面地价
+平均楼面地价
+地面地价
+地面地价
+地面地价
+                                    备注
+(1)商服用地、住宅用地的价格表现形式为平均楼面地价;
+(2)五通一平:即宗地外通路、通给水、通排水、通电力、通电讯和宗地内土地平整;
+(3) 公共服务项目用地(一) 指新闻出版、教育、科研、医疗卫生、社会福利、机关团体、文化设施、体育用地等项目用地;
+(4) 公共服务项目用地 (二) 指用于城乡基础设施的用地,包括公用设施、公园与绿地用地等项目用地;
+(5) 公共服务项目用地为非政府投资的公共服务用地价格。
+2 基准地价信息
+项目名称
+{{projectName}}
+分析时间
+{{analysisDate}}
+项目类型
+{{projectType}}
+建设单位
+{{buildUnit}}
+分析面积(平方米)
+{{analysisArea}}
+总地价(万元)
+{{totalLandPrice}}
+国有建设用地面积(平方米)
+{{areaSCL}}
+国有建设用地基准地价(万元)
+{{baseLandPriceSCL}}
+集体建设用地面积(平方米)
+{{areaCCL}}
+集体建设用地基准地价(万元)
+{{baseLandPriceCCL}}
+分析范围
+{{?picList}}{{@img}}{{/picList}}
+3 {{definitionBLP}}用地地价预估情况(XXX取值为商服用地、住宅用地、工矿仓储用地、公共服务项目用地(一)、公共服务项目用地(二))
+  {{definitionBLP}}用地共{{totalArea}}平方米,土地地价预估{{totalLandPrice}}万元,其中:{{definitionBLP}}国有建设用地共{{areaSCL}}平方米,土地地价预估{{landPriceESCL}}万元;{{definitionBLP}集体建设用地共{{areaCCL}}平方米,土地地价预估{{landPriceECCL}}万元。具体如下:
+                                        
+                                        
+表1 {{definitionBLP}}用地地价预估情况{{definitionBLP}}用地预估情况
+土地权属
+                                    级别
+                           地价(元/平方米)
+                          土地面积(平方米)
+                          总地价预估(万元)
+{{tableList01}}
+国有建设用地
+[lv]
+[landPrice]
+[area]
+[landPriceES]
+
+
+
+
+
+{{tableList02}}
+集体建设用地
+[lv]
+[landPrice]
+[area]
+[landPriceES]
+                                       
+                                       
+                                       
+                                       
+                                       
+                                        
+4 XXX用地地价预估情况
+  ......
+5 ......