浏览代码

更新中图代码

DESKTOP-2K9OVK9\siwei 4 月之前
父节点
当前提交
c334fbf8c8
共有 40 个文件被更改,包括 2929 次插入34 次删除
  1. 230 1
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/SanYaController.java
  2. 105 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/business/ZtBillboardJtController.java
  3. 20 8
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/business/ZtBillboardmodellistController.java
  4. 102 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/business/ZtBillboardmodellisthistoryController.java
  5. 1 1
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/business/ZtCqBcbzListController.java
  6. 14 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/business/ZtProjectinformationController.java
  7. 98 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/GGP/ZtBillboardinfolistDto.java
  8. 146 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/GGP/ZtBillboardmodellistDto.java
  9. 45 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/GGP/ggpresultDto.java
  10. 69 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/GGP/templateParameterDto.java
  11. 84 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/business/ZtBillboardJt.java
  12. 30 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/business/ZtBillboardinfolist.java
  13. 31 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/business/ZtBillboardmodellist.java
  14. 347 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/business/ZtBillboardmodellisthistory.java
  15. 40 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/config/ResourcesConfig.java
  16. 75 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/controller/uploadFileController.java
  17. 24 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/service/ISysFileService.java
  18. 129 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/service/LocalSysFileServiceImpl.java
  19. 97 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/utils/FileTypeUtils.java
  20. 185 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/utils/FileUploadUtils.java
  21. 63 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/utils/MimeTypeUtils.java
  22. 61 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/mapper/ZtBillboardJtMapper.java
  23. 63 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/mapper/ZtBillboardmodellisthistoryMapper.java
  24. 9 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/mapper/ZtProjectinformationMapper.java
  25. 61 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/service/IZtBillboardJtService.java
  26. 71 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/service/IZtBillboardmodellisthistoryService.java
  27. 10 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/service/IZtProjectinformationService.java
  28. 96 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/service/impl/ZtBillboardJtServiceImpl.java
  29. 114 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/service/impl/ZtBillboardmodellisthistoryServiceImpl.java
  30. 12 0
      onemap-modules/onemap-model/src/main/java/com/onemap/sanya/service/impl/ZtProjectinformationServiceImpl.java
  31. 88 0
      onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtBillboardJtMapper.xml
  32. 13 1
      onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtBillboardinfolistMapper.xml
  33. 42 22
      onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtBillboardmodellistMapper.xml
  34. 182 0
      onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtBillboardmodellisthistoryMapper.xml
  35. 9 0
      onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtConstructionmodelMapper.xml
  36. 1 0
      onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtCqBcbzListMapper.xml
  37. 42 1
      onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtProjectinformationMapper.xml
  38. 1 0
      onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtQmBcbzListMapper.xml
  39. 1 0
      onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtZdBcbzListMapper.xml
  40. 118 0
      onemap-modules/onemap-model/src/main/resources/template/word/广告牌审查意见.docx

+ 230 - 1
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/SanYaController.java

@@ -12,12 +12,25 @@ import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.onemap.common.core.utils.StringUtils;
+import com.onemap.common.core.utils.bean.BeanUtils;
 import com.onemap.common.core.web.controller.BaseController;
 import com.onemap.sanya.domain.*;
 import com.onemap.sanya.domain.CQBC.CompensateEstimateReport;
+import com.onemap.sanya.domain.GGP.ZtBillboardinfolistDto;
+import com.onemap.sanya.domain.GGP.ZtBillboardmodellistDto;
+import com.onemap.sanya.domain.GGP.ggpresultDto;
+import com.onemap.sanya.domain.GGP.templateParameterDto;
+import com.onemap.sanya.domain.business.ZtBillboardJt;
+import com.onemap.sanya.domain.business.ZtBillboardinfolist;
+import com.onemap.sanya.domain.business.ZtBillboardmodellist;
+import com.onemap.sanya.domain.business.ZtBillboardmodellisthistory;
 import com.onemap.sanya.domain.mergeCell.JZDJTableRenderPolicy;
+import com.onemap.sanya.service.IZtBillboardJtService;
+import com.onemap.sanya.service.IZtBillboardmodellistService;
+import com.onemap.sanya.service.IZtBillboardmodellisthistoryService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.web.bind.annotation.*;
 
@@ -27,7 +40,9 @@ import java.io.*;
 import java.lang.reflect.Type;
 import java.net.URLEncoder;
 import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author Zzz
@@ -37,7 +52,12 @@ import java.util.*;
 @RequestMapping("/exportWord")
 public class SanYaController extends BaseController {
     private static final Logger log = LoggerFactory.getLogger(SanYaController.class);
-
+    @Autowired
+    private IZtBillboardmodellistService ztBillboardmodellistService;
+    @Autowired
+    private IZtBillboardJtService ztBillboardJtService;
+    @Autowired
+    private IZtBillboardmodellisthistoryService ztBillboardmodellisthistoryService;
     /**
      * 导出征收补偿预估报告word
      * @param request
@@ -180,6 +200,215 @@ public class SanYaController extends BaseController {
     }
 
 
+    /**
+     * 导出广告牌报告word
+     * @param request
+     * @param response
+     */
+    @PostMapping("/exportGGPWord")
+    private void exportGGPWord(@RequestBody ZtBillboardinfolist ztBillboardinfolist, HttpServletRequest request, HttpServletResponse response) {
+        try {
+            if (ztBillboardinfolist == null) {
+                log.info("广告牌报告数据为空,导出失败!");
+                return ;
+            }
+
+            ZtBillboardinfolistDto ztBillboardinfolistDto=new ZtBillboardinfolistDto();
+            BeanUtils.copyProperties(ztBillboardinfolist,ztBillboardinfolistDto );
+            if (ztBillboardinfolist.getCheckDate() != null && ztBillboardinfolist.getCheckDate() instanceof Date) {
+                // 将Date对象格式化为所需的字符串格式
+                // 例如: "yyyy-MM-dd HH:mm:ss"
+                String d= new SimpleDateFormat("yyyy-MM-dd").format((Date) ztBillboardinfolist.getCheckDate());
+                ztBillboardinfolistDto.setCheckDate(d);
+            }
+
+            //获取项目下的广告牌
+            ZtBillboardmodellist ztBillboardmodel=new ZtBillboardmodellist();
+            ztBillboardmodel.setBillboardInfoId(ztBillboardinfolistDto.getId());
+            List<ZtBillboardmodellist> ztBillboardmodellists = ztBillboardmodellistService.selectZtBillboardmodellistList(ztBillboardmodel);
+            //项目广告牌总数
+            ztBillboardinfolistDto.setGgpSum(ztBillboardmodellists.stream().count());
+
+
+
+            ztBillboardinfolistDto.setCensored(ztBillboardmodellists.stream().filter(obj -> obj.getresults() != null && ! obj.getresults().isEmpty()).count());
+            ztBillboardinfolistDto.setUncensored(ztBillboardmodellists.stream().filter(obj -> obj.getresults() == null ||  obj.getresults().toString().isEmpty()).count());
+            ztBillboardinfolistDto.setPassedSum(ztBillboardmodellists.stream().filter(c->"已通过".equals(c.getReviewStatus())).count());
+            ztBillboardinfolistDto.setUnPassedSum(ztBillboardmodellists.stream().filter(c->"未通过".equals(c.getReviewStatus())).count());
+
+            //组织审查条件数据
+            List<ZtBillboardmodellistDto> ztBillboardmodellistDtos = new ArrayList<>();
+            BeanUtils.copyProperties(ztBillboardmodellists,ztBillboardmodellistDtos);
+
+            for (int i = 0; i < ztBillboardmodellists.size(); i++) {
+                ZtBillboardmodellistDto ztBillboardmodellistDto=new ZtBillboardmodellistDto();
+                BeanUtils.copyProperties(ztBillboardmodellists.get(i), ztBillboardmodellistDto);
+
+                if (ztBillboardmodellists.get(i).getreview_date() != null && ztBillboardmodellists.get(i).getreview_date() instanceof Date) {
+                    // 将Date对象格式化为所需的字符串格式
+                    // 例如: "yyyy-MM-dd HH:mm:ss"
+                    String d= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((Date) ztBillboardmodellists.get(i).getreview_date());
+                    ztBillboardmodellistDto.setReview_date(d);
+                }
+
+                if(ztBillboardmodellists.get(i).getReviewStatus()==null || "".equals(ztBillboardmodellists.get(i).getReviewStatus())){
+                    ztBillboardmodellistDto.setIsReview("未审查");
+                }else{
+                    ztBillboardmodellistDto.setIsReview("已审查");
+                }
+
+                ztBillboardmodellistDtos.add(ztBillboardmodellistDto);
+                // 注意:BeanUtils.copyProperties的源对象和目标对象参数顺序是反的,即先目标后源
+            }
+
+            for (ZtBillboardmodellistDto ztBillboardmodellistDto : ztBillboardmodellistDtos) {
+                Gson gson = new Gson();
+                Type listType = new TypeToken<List<ggpresultDto>>() {}.getType();
+                List<ggpresultDto> ggpresultDtoList = gson.fromJson(ztBillboardmodellistDto.getResults(), listType);
+                if(ggpresultDtoList!=null && ggpresultDtoList.size()>0){
+                    int ind=0;
+                    for (ggpresultDto ggpresultDto : ggpresultDtoList) {
+                        if("true".equals(ggpresultDto.getRuleResult())){
+                            ggpresultDto.setRuleResult("符合");
+                        }else{
+                            ggpresultDto.setRuleResult("不符合");
+                        }
+                        ind+=1;
+                        ggpresultDto.setIndex(String.valueOf(ind));
+                    }
+                    ztBillboardmodellistDto.setGgpresultList(ggpresultDtoList);
+                }
+
+                ZtBillboardJt ztBillboardJt = new ZtBillboardJt();
+                ztBillboardJt.setModelid(ztBillboardmodellistDto.getId());
+                List<ZtBillboardJt> ztBillboardJtList=ztBillboardJtService.selectZtBillboardJtList(ztBillboardJt);
+
+                List<PicData> DataList=new ArrayList<>();
+                //将base64图片转为PictureRenderData
+                for (ZtBillboardJt ztBillboardJt1 : ztBillboardJtList) {
+                    PictureRenderData pictureRenderData =Pictures.ofBase64(ztBillboardJt1.getJtBase(), PictureType.JPEG).size(400, 300).create();
+                    DataList.add(new PicData(pictureRenderData));
+                }
+
+                if(ztBillboardmodellistDto.getIsAddModel()){
+                    //最新修改的参数
+                    templateParameter(ztBillboardmodellistDto);
+                    //历史修改参数
+                    ZtBillboardmodellisthistory ztBillboardmodellisthistory=new ZtBillboardmodellisthistory();
+                    ztBillboardmodellisthistory.setId(ztBillboardmodellistDto.getId());
+                    List<ZtBillboardmodellisthistory> ztBillboardmodellisthistoryList=ztBillboardmodellisthistoryService.selectZtBillboardmodellisthistoryList(ztBillboardmodellisthistory);
+                    if(ztBillboardmodellisthistoryList.stream().count()>0){
+                        List<ZtBillboardmodellistDto> ztBillboardmodellistDtoList=new ArrayList<>();
+                        for (ZtBillboardmodellisthistory ztBillboardmodellisthistory1:ztBillboardmodellisthistoryList){
+                            ZtBillboardmodellistDto ztBillboardmodellisthistoryDto=new ZtBillboardmodellistDto();
+                            BeanUtils.copyProperties(ztBillboardmodellisthistory1, ztBillboardmodellisthistoryDto);
+                            if (ztBillboardmodellisthistory1.getCreateTime() != null && ztBillboardmodellisthistory1.getCreateTime() instanceof Date) {
+                                // 将Date对象格式化为所需的字符串格式
+                                // 例如: "yyyy-MM-dd HH:mm:ss"
+                                String d= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((Date) ztBillboardmodellisthistory1.getCreateTime());
+                                ztBillboardmodellisthistoryDto.setCreateTimeString(d);
+                            }
+                            templateParameter(ztBillboardmodellisthistoryDto);
+                            ztBillboardmodellistDtoList.add(ztBillboardmodellisthistoryDto);
+                        }
+                        if(ztBillboardmodellistDtoList.size()>0){
+                            ztBillboardmodellistDto.setZtBillboardmodellisthistoryDtoList(ztBillboardmodellistDtoList);
+                        }
+                    }
+                }
+                ztBillboardmodellistDto.setJTList(DataList);
+            }
+            ztBillboardinfolistDto.setZtBillboardmodellistDtoList(ztBillboardmodellistDtos);
+
+
+            ClassPathResource classPathResource = new ClassPathResource("template/word/"+"广告牌审查意见.docx");
+            InputStream inputStream = classPathResource.getInputStream();
+
+            Configure configure = Configure.builder().useSpringEL()
+                    .bind("ggpresultList", new LoopRowTableRenderPolicy()).build();
+
+            // 通过 XWPFTemplate 编译文件并渲染数据到模板中
+            XWPFTemplate template = XWPFTemplate.compile(inputStream,configure).render(ztBillboardinfolistDto);
+
+
+            //生成文件名
+            String wordName = ztBillboardinfolistDto.getProjectname();
+            writeWord(response, null, wordName, template);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("广告牌报告导出异常,{}" + e);
+        }
+    }
+
+/**
+ * 处理广告模板
+ */
+    private void templateParameter(ZtBillboardmodellistDto ztBillboardmodellistDto ){
+        Gson gson = new Gson();
+        Type templateParameterType = new TypeToken<templateParameterDto>() {}.getType();
+        templateParameterDto TemplateTop = null;
+        if(ztBillboardmodellistDto.getTemplateTop()!=null&&!"{}".equals(ztBillboardmodellistDto.getTemplateTop())){
+            TemplateTop=gson.fromJson(ztBillboardmodellistDto.getTemplateTop(), templateParameterType);
+        }
+        templateParameterDto TemplateCentre =null;
+        if(ztBillboardmodellistDto.getTemplateCentre()!=null&&!"{}".equals(ztBillboardmodellistDto.getTemplateCentre())){
+            TemplateCentre=gson.fromJson(ztBillboardmodellistDto.getTemplateCentre(), templateParameterType);
+        }
+        templateParameterDto TemplateBottom =null;
+        if(ztBillboardmodellistDto.getTemplateBottom()!=null&&!"{}".equals(ztBillboardmodellistDto.getTemplateBottom())){
+            TemplateBottom=gson.fromJson(ztBillboardmodellistDto.getTemplateBottom(), templateParameterType);
+        }
+
+
+        if(TemplateTop != null&& TemplateTop.getTemplateType()!=null){
+            switch (TemplateTop.getTemplateType()){
+                case "billboard":
+                case "box":
+                    TemplateTop.setXLname("长(米)");
+                    TemplateTop.setYLname("高(米)");
+                    TemplateTop.setZLname("厚度(米)");
+                    break;
+                case "model":
+                    TemplateTop.setScaleLname("缩放比例");
+                    TemplateTop.setXLname("长(米)");
+                    TemplateTop.setYLname("高(米)");
+                    TemplateTop.setZLname("厚度(米)");
+                    break;
+            }
+        }
+        if(TemplateTop.getTemplateType()==null){
+            TemplateTop.setXLname("长(米)");
+            TemplateTop.setYLname("高(米)");
+            TemplateTop.setZLname("厚度(米)");
+        }
+        ztBillboardmodellistDto.setTemplateTopObj(TemplateTop);
+
+        if(TemplateCentre!= null && TemplateCentre.getTemplateType()!=null){
+            switch (TemplateCentre.getTemplateType()){
+                case "cylinder":
+                    TemplateCentre.setYLname("高(米)");
+                    TemplateCentre.setRLname("半径(米)");
+                    break;
+            }
+        }
+        ztBillboardmodellistDto.setTemplateCentreObj(TemplateCentre);
+
+        if(TemplateBottom!= null && TemplateBottom.getTemplateType()!=null){
+            switch (TemplateBottom.getTemplateType()){
+                case "box":
+                    TemplateBottom.setXLname("长(米)");
+                    TemplateBottom.setYLname("高(米)");
+                    TemplateBottom.setZLname("厚度(米)");
+                    break;
+            }
+        }
+        ztBillboardmodellistDto.setTemplateBottomObj(TemplateBottom);
+    }
+
+
+
+
     /**
      * word写出
      *

+ 105 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/business/ZtBillboardJtController.java

@@ -0,0 +1,105 @@
+package com.onemap.sanya.controller.business;
+
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.onemap.common.log.annotation.Log;
+import com.onemap.common.log.enums.BusinessType;
+import com.onemap.common.security.annotation.RequiresPermissions;
+import com.onemap.sanya.domain.business.ZtBillboardJt;
+import com.onemap.sanya.service.IZtBillboardJtService;
+import com.onemap.common.core.web.controller.BaseController;
+import com.onemap.common.core.web.domain.AjaxResult;
+import com.onemap.common.core.utils.poi.ExcelUtil;
+import com.onemap.common.core.web.page.TableDataInfo;
+
+/**
+ * 广告牌位置截图Controller
+ * 
+ * @author ruoyi
+ * @date 2024-12-17
+ */
+@RestController
+@RequestMapping("/ZtBillboardJt")
+public class ZtBillboardJtController extends BaseController
+{
+    @Autowired
+    private IZtBillboardJtService ztBillboardJtService;
+
+    /**
+     * 查询广告牌位置截图列表
+     */
+
+    @GetMapping("/list")
+    public TableDataInfo list(ZtBillboardJt ztBillboardJt)
+    {
+        startPage();
+        List<ZtBillboardJt> list = ztBillboardJtService.selectZtBillboardJtList(ztBillboardJt);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出广告牌位置截图列表
+     */
+
+    @Log(title = "广告牌位置截图", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ZtBillboardJt ztBillboardJt)
+    {
+        List<ZtBillboardJt> list = ztBillboardJtService.selectZtBillboardJtList(ztBillboardJt);
+        ExcelUtil<ZtBillboardJt> util = new ExcelUtil<ZtBillboardJt>(ZtBillboardJt.class);
+        util.exportExcel(response, list, "广告牌位置截图数据");
+    }
+
+    /**
+     * 获取广告牌位置截图详细信息
+     */
+
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return success(ztBillboardJtService.selectZtBillboardJtById(id));
+    }
+
+    /**
+     * 新增广告牌位置截图
+     */
+
+    @Log(title = "广告牌位置截图", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ZtBillboardJt ztBillboardJt)
+    {
+        return toAjax(ztBillboardJtService.insertZtBillboardJt(ztBillboardJt));
+    }
+
+    /**
+     * 修改广告牌位置截图
+     */
+
+    @Log(title = "广告牌位置截图", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ZtBillboardJt ztBillboardJt)
+    {
+        return toAjax(ztBillboardJtService.updateZtBillboardJt(ztBillboardJt));
+    }
+
+    /**
+     * 删除广告牌位置截图
+     */
+
+    @Log(title = "广告牌位置截图", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(ztBillboardJtService.deleteZtBillboardJtByIds(ids));
+    }
+}

+ 20 - 8
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/business/ZtBillboardmodellistController.java

@@ -1,17 +1,20 @@
 package com.onemap.sanya.controller.business;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 import java.io.IOException;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import com.onemap.common.core.domain.R;
+import com.onemap.common.core.utils.file.FileUtils;
+import com.onemap.sanya.fileConfig.service.ISysFileService;
+import com.onemap.system.api.domain.SysFile;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.env.Environment;
+import org.springframework.web.bind.annotation.*;
 import com.onemap.common.log.annotation.Log;
 import com.onemap.common.log.enums.BusinessType;
 import com.onemap.common.security.annotation.RequiresPermissions;
@@ -21,6 +24,8 @@ import com.onemap.common.core.web.controller.BaseController;
 import com.onemap.common.core.web.domain.AjaxResult;
 import com.onemap.common.core.utils.poi.ExcelUtil;
 import com.onemap.common.core.web.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.*;
 
 /**
  * 广告模型信息Controller
@@ -32,6 +37,9 @@ import com.onemap.common.core.web.page.TableDataInfo;
 @RequestMapping("/billboardModelList")
 public class ZtBillboardmodellistController extends BaseController
 {
+
+
+
     @Autowired
     private IZtBillboardmodellistService ztBillboardmodellistService;
 
@@ -107,4 +115,8 @@ public class ZtBillboardmodellistController extends BaseController
     {
         return toAjax(ztBillboardmodellistService.deleteZtBillboardmodellistByIds(ids));
     }
+
+
+
+
 }

+ 102 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/business/ZtBillboardmodellisthistoryController.java

@@ -0,0 +1,102 @@
+package com.onemap.sanya.controller.business;
+
+import com.onemap.common.core.utils.poi.ExcelUtil;
+import com.onemap.common.core.web.controller.BaseController;
+import com.onemap.common.core.web.domain.AjaxResult;
+import com.onemap.common.core.web.page.TableDataInfo;
+import com.onemap.common.log.annotation.Log;
+import com.onemap.common.log.enums.BusinessType;
+import com.onemap.sanya.domain.business.ZtBillboardmodellisthistory;
+import com.onemap.sanya.service.IZtBillboardmodellisthistoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 广告模型信息Controller
+ * 
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+@RestController
+@RequestMapping("/billboardModelListHistory")
+public class ZtBillboardmodellisthistoryController extends BaseController
+{
+    @Autowired
+    private IZtBillboardmodellisthistoryService ztBillboardmodellisthistoryService;
+
+    /**
+     * 查询广告模型信息列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(ZtBillboardmodellisthistory ztBillboardmodellisthistory)
+    {
+//        startPage();
+        List<ZtBillboardmodellisthistory> list = ztBillboardmodellisthistoryService.selectZtBillboardmodellisthistoryList(ztBillboardmodellisthistory);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出广告模型信息列表
+     */
+    @Log(title = "广告模型信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ZtBillboardmodellisthistory ztBillboardmodellisthistory)
+    {
+        List<ZtBillboardmodellisthistory> list = ztBillboardmodellisthistoryService.selectZtBillboardmodellisthistoryList(ztBillboardmodellisthistory);
+        ExcelUtil<ZtBillboardmodellisthistory> util = new ExcelUtil<ZtBillboardmodellisthistory>(ZtBillboardmodellisthistory.class);
+        util.exportExcel(response, list, "广告模型信息数据");
+    }
+
+    /**
+     * 获取广告模型信息详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id)
+    {
+        return success(ztBillboardmodellisthistoryService.selectZtBillboardmodellisthistoryById(id));
+    }
+
+    /**
+     * 新增广告模型信息
+     */
+    @Log(title = "广告模型信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ZtBillboardmodellisthistory ztBillboardmodellisthistory)
+    {
+        return toAjax(ztBillboardmodellisthistoryService.insertZtBillboardmodellisthistory(ztBillboardmodellisthistory));
+    }
+
+
+    /**
+     * 批量新增广告模型信息
+     */
+    @Log(title = "广告模型信息", businessType = BusinessType.INSERT)
+    @PostMapping("/adds")
+    public AjaxResult adds(@RequestBody List<ZtBillboardmodellisthistory> ztBillboardmodellisthistory)
+    {
+        return toAjax(ztBillboardmodellisthistoryService.insertZtBillboardmodellisthistorys(ztBillboardmodellisthistory));
+    }
+
+    /**
+     * 修改广告模型信息
+     */
+    @Log(title = "广告模型信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ZtBillboardmodellisthistory ztBillboardmodellisthistory)
+    {
+        return toAjax(ztBillboardmodellisthistoryService.updateZtBillboardmodellisthistory(ztBillboardmodellisthistory));
+    }
+
+    /**
+     * 删除广告模型信息
+     */
+    @Log(title = "广告模型信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable String[] ids)
+    {
+        return toAjax(ztBillboardmodellisthistoryService.deleteZtBillboardmodellisthistoryByIds(ids));
+    }
+}

+ 1 - 1
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/business/ZtCqBcbzListController.java

@@ -33,7 +33,7 @@ import com.onemap.common.core.web.page.TableDataInfo;
  * @date 2024-08-13
  */
 @RestController
-@RequestMapping("/cqbcbz")
+@RequestMapping("/cqbczd")
 public class ZtCqBcbzListController extends BaseController
 {
     @Autowired

+ 14 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/controller/business/ZtProjectinformationController.java

@@ -46,6 +46,20 @@ public class ZtProjectinformationController extends BaseController
         return getDataTable(list);
     }
 
+    /**
+     * 查询未关联广告项目的报建项目
+     */
+    @GetMapping("/NoAssociatedList")
+    public TableDataInfo NoAssociatedList(ZtProjectinformation ztProjectinformation)
+    {
+        List<ZtProjectinformation> list = ztProjectinformationService.selectNoAssociatedList(ztProjectinformation);
+
+
+
+
+        return getDataTable(list);
+    }
+
     /**
      * 导出项目信息列表
      */

+ 98 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/GGP/ZtBillboardinfolistDto.java

@@ -0,0 +1,98 @@
+package com.onemap.sanya.domain.GGP;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.onemap.common.core.annotation.Excel;
+import com.onemap.common.core.web.domain.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 广告项目信息对象 zt_billboardInfoList
+ * 
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ZtBillboardinfolistDto extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private String id;
+
+    /** 项目名称 */
+    @Excel(name = "项目名称")
+    private String projectname;
+
+    /** 项目地址 */
+    @Excel(name = "项目地址")
+    private String address;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private String checkDate;
+
+    /** 设计单位 */
+    @Excel(name = "设计单位")
+    private String design;
+
+    /** 简介 */
+    @Excel(name = "简介")
+    private String description;
+
+    /** 报建模型id */
+    @Excel(name = "报建模型id")
+    private String bjmxid;
+
+    /** 报建模型名称 */
+    @Excel(name = "报建模型名称")
+    private String bjmxname;
+
+    /** 模型场景地址 */
+    @Excel(name = "模型场景地址")
+    private String url;
+
+    /** 模型数据地址 */
+    @Excel(name = "模型数据地址")
+    private String dataurl;
+
+    /** 模型数据源 */
+    @Excel(name = "模型数据源")
+    private String datasourcename;
+
+    /** 模型数据集 */
+    @Excel(name = "模型数据集")
+    private String datasetname;
+
+    /** 广告牌总数 */
+    @Excel(name = "广告牌总数")
+    private Long ggpSum;
+
+    /** 已审查 */
+    @Excel(name = "已审查")
+    private Long censored;
+
+    /** 未审查 */
+    @Excel(name = "未审查")
+    private Long Uncensored;
+
+    /** 已通过 */
+    @Excel(name = "已通过")
+    private Long PassedSum;
+
+    /** 未通过 */
+    @Excel(name = "未通过")
+    private Long UnPassedSum;
+
+    /** 广告牌信息 */
+    @Excel(name = "广告牌信息")
+    private List<ZtBillboardmodellistDto> ztBillboardmodellistDtoList;
+
+}

+ 146 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/GGP/ZtBillboardmodellistDto.java

@@ -0,0 +1,146 @@
+package com.onemap.sanya.domain.GGP;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.onemap.common.core.annotation.Excel;
+import com.onemap.common.core.web.domain.BaseEntity;
+import com.onemap.sanya.domain.PicData;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.List;
+
+/**
+ * 广告模型信息对象 zt_billboardModelList
+ * 
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ZtBillboardmodellistDto extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private String id;
+
+    /** 广告项目id */
+    @Excel(name = "广告项目id")
+    private String billboardInfoId;
+
+    /** 广告牌名称 */
+    @Excel(name = "广告牌名称")
+    private String billboardName;
+
+    /** 广告牌类型 */
+    @Excel(name = "广告牌类型")
+    private String billboardType;
+
+    /** 贴地 坐标x */
+    @Excel(name = "贴地 坐标x")
+    private Double x;
+
+    /** 贴地 坐标y */
+    @Excel(name = "贴地 坐标y")
+    private Double y;
+
+    /** 贴地 坐标z */
+    @Excel(name = "贴地 坐标z")
+    private Double z;
+
+    /** 旋转角 x */
+    @Excel(name = "旋转角 x")
+    private Double rotateX;
+
+    /** 旋转角 y */
+    @Excel(name = "旋转角 y")
+    private Double rotateY;
+
+    /** 旋转角 z */
+    @Excel(name = "旋转角 z")
+    private Double rotateZ;
+
+    /** 审核状态 */
+    @Excel(name = "审核状态")
+    @JsonProperty("ReviewStatus")
+    private String ReviewStatus;
+
+    /** 审核意见 */
+    @Excel(name = "审核意见")
+    @JsonProperty("ReviewComments")
+    private String ReviewComments;
+
+    /** 是否需要添加广告牌标志 */
+    @Excel(name = "是否需要添加广告牌标志")
+    private Boolean isAddModel;
+
+    /** 附属信息 */
+    @Excel(name = "附属信息")
+    private String remarks;
+
+    /** 广告模型信息 */
+    @Excel(name = "广告模型信息")
+    private String template;
+
+    /** 广告牌上部 */
+    @Excel(name = "广告牌上部")
+    private String templateTop;
+
+    /** 广告牌上部 */
+    @Excel(name = "广告牌上部")
+    private templateParameterDto templateTopObj;
+
+    /** 广告牌中部 */
+    @Excel(name = "广告牌中部")
+    private String templateCentre;
+
+    /** 广告牌中部 */
+    @Excel(name = "广告牌中部")
+    private templateParameterDto templateCentreObj;
+
+    /** 广告牌下部 */
+    @Excel(name = "广告牌下部")
+    private String templateBottom;
+
+    /** 广告牌下部 */
+    @Excel(name = "广告牌下部")
+    private templateParameterDto templateBottomObj;
+
+    /** 广告牌结果列表 */
+    @Excel(name = "广告牌结果列表")
+    private String results;
+
+    /** 广告牌视角 */
+    @Excel(name = "广告牌视角")
+    private String viewing_angle;
+
+    /** 审查时间 */
+    @Excel(name = "审查时间")
+    private String review_date;
+
+    /** 创建时间 */
+    @Excel(name = "创建时间")
+    private String createTimeString;
+
+
+    /** 广告牌结果列表 */
+    @Excel(name = "广告牌结果列表")
+    private List<ggpresultDto> ggpresultList;
+
+    /** 审核状态 */
+    @Excel(name = "审核状态")
+    private String IsReview;
+
+    /** 广告牌截图列表 */
+    @Excel(name = "广告牌截图列表")
+    private List<PicData> JTList;
+
+    /** 模板参数历史列表 */
+    @Excel(name = "模板参数历史列表")
+    private List<ZtBillboardmodellistDto> ztBillboardmodellisthistoryDtoList;
+
+}

+ 45 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/GGP/ggpresultDto.java

@@ -0,0 +1,45 @@
+package com.onemap.sanya.domain.GGP;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.onemap.common.core.annotation.Excel;
+import com.onemap.common.core.web.domain.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 广告模型信息对象 zt_billboardModelList
+ * 
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ggpresultDto extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private String id;
+    /** 序号 */
+    @Excel(name = "序号")
+    private String index;
+
+    /** 审查项编码 */
+    @Excel(name = "审查项编码")
+    private String code;
+
+    /** 审查结果 */
+    @Excel(name = "审查结果")
+    private String ruleResult;
+
+    /** 审查方式 */
+    @Excel(name = "审查方式")
+    private String ReviewMethod;
+
+    /** 审查内容 */
+    @Excel(name = "审查内容")
+    private String ReviewContent;
+
+}

+ 69 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/GGP/templateParameterDto.java

@@ -0,0 +1,69 @@
+package com.onemap.sanya.domain.GGP;
+
+import com.onemap.common.core.annotation.Excel;
+import com.onemap.common.core.web.domain.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 广告模型不同类型参数信息对象 templateType
+ *
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class templateParameterDto extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    /** x */
+    @Excel(name = "x")
+    private Double x;
+    /** y */
+    @Excel(name = "y")
+    private Double y;
+
+    /** z */
+    @Excel(name = "z")
+    private Double z;
+
+    /** 比例 */
+    @Excel(name = "比例")
+    private Double scaleL;
+    /** 比例 */
+    @Excel(name = "比例")
+    private String scaleLname;
+
+    /** 长(米) */
+    @Excel(name = "长(米)")
+    private Double xL;
+    @Excel(name = "xl名称")
+    private String xLname;
+
+    /** 宽/高 */
+    @Excel(name = "宽/高")
+    private Double yL;
+    @Excel(name = "yl名称")
+    private String yLname;
+
+    /** 厚度(米) */
+    @Excel(name = "厚度(米)")
+    private Double zL;
+    @Excel(name = "zL名称")
+    private String zLname;
+
+    /** 半径(米) */
+    @Excel(name = "半径(米)")
+    private Double rL;
+    @Excel(name = "rl名称")
+    private String rLname;
+
+    /** 所表示模型类型 */
+    @Excel(name = "模型类型")
+    private String templateType;
+
+}

+ 84 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/business/ZtBillboardJt.java

@@ -0,0 +1,84 @@
+package com.onemap.sanya.domain.business;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.onemap.common.core.annotation.Excel;
+import com.onemap.common.core.web.domain.BaseEntity;
+
+/**
+ * 广告牌位置截图对象 zt_billboard_jt
+ * 
+ * @author ruoyi
+ * @date 2024-12-17
+ */
+public class ZtBillboardJt extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private String id;
+
+    /** 广告牌id */
+    @Excel(name = "广告牌id")
+    private String modelid;
+
+    /** 截图名称 */
+    @Excel(name = "截图名称")
+    private String jtName;
+
+    /** 截图内容 */
+    @Excel(name = "截图内容")
+    private String jtBase;
+
+    public void setId(String id) 
+    {
+        this.id = id;
+    }
+
+    public String getId() 
+    {
+        return id;
+    }
+    public void setModelid(String modelid) 
+    {
+        this.modelid = modelid;
+    }
+
+    public String getModelid() 
+    {
+        return modelid;
+    }
+    public void setJtName(String jtName) 
+    {
+        this.jtName = jtName;
+    }
+
+    public String getJtName() 
+    {
+        return jtName;
+    }
+    public void setJtBase(String jtBase) 
+    {
+        this.jtBase = jtBase;
+    }
+
+    public String getJtBase() 
+    {
+        return jtBase;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("modelid", getModelid())
+            .append("jtName", getJtName())
+            .append("jtBase", getJtBase())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 30 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/business/ZtBillboardinfolist.java

@@ -41,6 +41,14 @@ public class ZtBillboardinfolist extends BaseEntity
     @Excel(name = "简介")
     private String description;
 
+    /** 报建模型id */
+    @Excel(name = "报建模型id")
+    private String bjmxid;
+
+    /** 报建模型名称 */
+    @Excel(name = "报建模型名称")
+    private String bjmxname;
+
     /** 模型场景地址 */
     @Excel(name = "模型场景地址")
     private String url;
@@ -148,6 +156,26 @@ public class ZtBillboardinfolist extends BaseEntity
         return datasetname;
     }
 
+    public void setbjmxid(String bjmxid)
+    {
+        this.bjmxid = bjmxid;
+    }
+
+    public String getbjmxid()
+    {
+        return bjmxid;
+    }
+
+    public void setbjmxname(String bjmxname)
+    {
+        this.bjmxname = bjmxname;
+    }
+
+    public String getbjmxname()
+    {
+        return bjmxname;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -166,6 +194,8 @@ public class ZtBillboardinfolist extends BaseEntity
             .append("updateBy", getUpdateBy())
             .append("updateTime", getUpdateTime())
             .append("remark", getRemark())
+            .append("bjmxid", getbjmxid())
+            .append("bjmxname", getbjmxname())
             .toString();
     }
 }

+ 31 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/business/ZtBillboardmodellist.java

@@ -1,11 +1,14 @@
 package com.onemap.sanya.domain.business;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.onemap.common.core.annotation.Excel;
 import com.onemap.common.core.web.domain.BaseEntity;
 
+import java.util.Date;
+
 /**
  * 广告模型信息对象 zt_billboardModelList
  * 
@@ -97,7 +100,14 @@ public class ZtBillboardmodellist extends BaseEntity
     @Excel(name = "广告牌视角")
     private String viewing_angle;
 
+    /** 审查时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "审查时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date review_date;
 
+    /** 截图数量 */
+    @Excel(name = "截图数量")
+    private Integer jtsum;
 
     public void setId(String id) 
     {
@@ -282,6 +292,25 @@ public class ZtBillboardmodellist extends BaseEntity
         return viewing_angle;
     }
 
+    public void setreview_date(Date review_date)
+    {
+        this.review_date = review_date;
+    }
+
+    public Date getreview_date()
+    {
+        return review_date;
+    }
+
+    public void setjtsum(Integer jtsum)
+    {
+        this.jtsum = jtsum;
+    }
+
+    public Integer getjtsum()
+    {
+        return jtsum;
+    }
 
     @Override
     public String toString() {
@@ -311,6 +340,8 @@ public class ZtBillboardmodellist extends BaseEntity
             .append("templateBottom", getTemplateBottom())
             .append("results", getresults())
                 .append("viewing_angle", getviewing_angle())
+                .append("review_date", getreview_date())
+                .append("jtsum", getjtsum())
             .toString();
     }
 }

+ 347 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/domain/business/ZtBillboardmodellisthistory.java

@@ -0,0 +1,347 @@
+package com.onemap.sanya.domain.business;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.onemap.common.core.annotation.Excel;
+import com.onemap.common.core.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 广告模型信息对象 zt_billboardModelList
+ * 
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+public class ZtBillboardmodellisthistory extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private String id;
+
+    /** 广告项目id */
+    @Excel(name = "广告项目id")
+    private String billboardInfoId;
+
+    /** 广告牌名称 */
+    @Excel(name = "广告牌名称")
+    private String billboardName;
+
+    /** 广告牌类型 */
+    @Excel(name = "广告牌类型")
+    private String billboardType;
+
+    /** 贴地 坐标x */
+    @Excel(name = "贴地 坐标x")
+    private Double x;
+
+    /** 贴地 坐标y */
+    @Excel(name = "贴地 坐标y")
+    private Double y;
+
+    /** 贴地 坐标z */
+    @Excel(name = "贴地 坐标z")
+    private Double z;
+
+    /** 旋转角 x */
+    @Excel(name = "旋转角 x")
+    private Double rotateX;
+
+    /** 旋转角 y */
+    @Excel(name = "旋转角 y")
+    private Double rotateY;
+
+    /** 旋转角 z */
+    @Excel(name = "旋转角 z")
+    private Double rotateZ;
+
+    /** 审核状态 */
+    @Excel(name = "审核状态")
+    @JsonProperty("ReviewStatus")
+    private String ReviewStatus;
+
+    /** 审核意见 */
+    @Excel(name = "审核意见")
+    @JsonProperty("ReviewComments")
+    private String ReviewComments;
+
+    /** 是否需要添加广告牌标志 */
+    @Excel(name = "是否需要添加广告牌标志")
+    private Boolean isAddModel;
+
+    /** 附属信息 */
+    @Excel(name = "附属信息")
+    private String remarks;
+
+    /** 广告模型信息 */
+    @Excel(name = "广告模型信息")
+    private String template;
+
+    /** 广告牌上部 */
+    @Excel(name = "广告牌上部")
+    private String templateTop;
+
+    /** 广告牌中部 */
+    @Excel(name = "广告牌中部")
+    private String templateCentre;
+
+    /** 广告牌下部 */
+    @Excel(name = "广告牌下部")
+    private String templateBottom;
+
+    /** 广告牌结果列表 */
+    @Excel(name = "广告牌结果列表")
+    private String results;
+
+    /** 广告牌视角 */
+    @Excel(name = "广告牌视角")
+    private String viewing_angle;
+
+    /** 审查时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "审查时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date review_date;
+
+    /** 截图数量 */
+    @Excel(name = "截图数量")
+    private Integer jtsum;
+
+    public void setId(String id) 
+    {
+        this.id = id;
+    }
+
+    public String getId() 
+    {
+        return id;
+    }
+    public void setBillboardInfoId(String billboardInfoId) 
+    {
+        this.billboardInfoId = billboardInfoId;
+    }
+
+    public String getBillboardInfoId() 
+    {
+        return billboardInfoId;
+    }
+    public void setBillboardName(String billboardName) 
+    {
+        this.billboardName = billboardName;
+    }
+
+    public String getBillboardName() 
+    {
+        return billboardName;
+    }
+    public void setBillboardType(String billboardType) 
+    {
+        this.billboardType = billboardType;
+    }
+
+    public String getBillboardType() 
+    {
+        return billboardType;
+    }
+    public void setX(Double x)
+    {
+        this.x = x;
+    }
+
+    public Double getX()
+    {
+        return x;
+    }
+    public void setY(Double y)
+    {
+        this.y = y;
+    }
+
+    public Double getY()
+    {
+        return y;
+    }
+    public void setZ(Double z)
+    {
+        this.z = z;
+    }
+
+    public Double getZ()
+    {
+        return z;
+    }
+    public void setRotateX(Double rotateX)
+    {
+        this.rotateX = rotateX;
+    }
+
+    public Double getRotateX()
+    {
+        return rotateX;
+    }
+    public void setRotateY(Double rotateY)
+    {
+        this.rotateY = rotateY;
+    }
+
+    public Double getRotateY()
+    {
+        return rotateY;
+    }
+    public void setRotateZ(Double rotateZ)
+    {
+        this.rotateZ = rotateZ;
+    }
+
+    public Double getRotateZ()
+    {
+        return rotateZ;
+    }
+    public void setReviewStatus(String ReviewStatus) 
+    {
+        this.ReviewStatus = ReviewStatus;
+    }
+
+    public String getReviewStatus() 
+    {
+        return ReviewStatus;
+    }
+    public void setReviewComments(String ReviewComments) 
+    {
+        this.ReviewComments = ReviewComments;
+    }
+
+    public String getReviewComments() 
+    {
+        return ReviewComments;
+    }
+    public void setIsAddModel(Boolean isAddModel) 
+    {
+        this.isAddModel = isAddModel;
+    }
+
+    public Boolean getIsAddModel() 
+    {
+        return isAddModel;
+    }
+    public void setRemarks(String remarks) 
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() 
+    {
+        return remarks;
+    }
+    public void setTemplate(String template)
+    {
+        this.template = template;
+    }
+
+    public String getTemplate()
+    {
+        return template;
+    }
+    public void setTemplateTop(String templateTop) 
+    {
+        this.templateTop = templateTop;
+    }
+
+    public String getTemplateTop() 
+    {
+        return templateTop;
+    }
+    public void setTemplateCentre(String templateCentre) 
+    {
+        this.templateCentre = templateCentre;
+    }
+
+    public String getTemplateCentre() 
+    {
+        return templateCentre;
+    }
+    public void setTemplateBottom(String templateBottom) 
+    {
+        this.templateBottom = templateBottom;
+    }
+
+    public String getTemplateBottom() 
+    {
+        return templateBottom;
+    }
+
+    public void setresults(String results)
+    {
+        this.results = results;
+    }
+
+    public String getresults()
+    {
+        return results;
+    }
+
+    public void setviewing_angle(String viewing_angle)
+    {
+        this.viewing_angle = viewing_angle;
+    }
+
+    public String getviewing_angle()
+    {
+        return viewing_angle;
+    }
+
+    public void setreview_date(Date review_date)
+    {
+        this.review_date = review_date;
+    }
+
+    public Date getreview_date()
+    {
+        return review_date;
+    }
+
+    public void setjtsum(Integer jtsum)
+    {
+        this.jtsum = jtsum;
+    }
+
+    public Integer getjtsum()
+    {
+        return jtsum;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("billboardInfoId", getBillboardInfoId())
+            .append("billboardName", getBillboardName())
+            .append("billboardType", getBillboardType())
+            .append("x", getX())
+            .append("y", getY())
+            .append("z", getZ())
+            .append("rotateX", getRotateX())
+            .append("rotateY", getRotateY())
+            .append("rotateZ", getRotateZ())
+            .append("ReviewStatus", getReviewStatus())
+            .append("ReviewComments", getReviewComments())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .append("isAddModel", getIsAddModel())
+            .append("remarks", getRemarks())
+            .append("template", getTemplate())
+            .append("templateTop", getTemplateTop())
+            .append("templateCentre", getTemplateCentre())
+            .append("templateBottom", getTemplateBottom())
+            .append("results", getresults())
+                .append("viewing_angle", getviewing_angle())
+                .append("review_date", getreview_date())
+                .append("jtsum", getjtsum())
+            .toString();
+    }
+}

+ 40 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/config/ResourcesConfig.java

@@ -0,0 +1,40 @@
+package com.onemap.sanya.fileConfig.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.io.File;
+
+/**
+ * 通用映射配置
+ * 
+ * @author ruoyi
+ */
+@Configuration
+public class ResourcesConfig implements WebMvcConfigurer
+{
+    /**
+     * 上传文件存储在本地的根路径
+     */
+    @Value("${file.path}")
+    private String localFilePath;
+
+    /**
+     * 资源映射路径 前缀
+     */
+    @Value("${file.prefix}")
+    public String localFilePrefix;
+
+    @Override
+    public void addResourceHandlers(ResourceHandlerRegistry registry)
+    {
+        /** 本地文件上传路径 */
+        registry.addResourceHandler(localFilePrefix + "/**")
+                .addResourceLocations("file:" + localFilePath + File.separator);
+    }
+    
+
+}

+ 75 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/controller/uploadFileController.java

@@ -0,0 +1,75 @@
+package com.onemap.sanya.fileConfig.controller;
+
+import java.io.*;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import com.onemap.common.core.domain.R;
+import com.onemap.common.core.utils.file.FileUtils;
+import com.onemap.sanya.fileConfig.service.ISysFileService;
+import com.onemap.system.api.domain.SysFile;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.InputStream;
+
+/**
+ * 文件上传Controller
+ *
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+@RestController
+@RequestMapping("/uploadFile")
+public class uploadFileController {
+    @Autowired
+    private ISysFileService sysFileService;
+    /**
+     * 文件上传请求
+     */
+    @PostMapping("/upload")
+    public R<SysFile> upload(MultipartFile file)
+    {
+        try
+        {
+            // 上传并返回访问地址
+            String url = sysFileService.uploadFile(file);
+
+            SysFile sysFile = new SysFile();
+            sysFile.setName(FileUtils.getName(url));
+            sysFile.setUrl(url);
+            return R.ok(sysFile);
+        }
+        catch (Exception e)
+        {
+            return R.fail(e.getMessage());
+        }
+    }
+
+    @PostMapping("/uploadZipFile")
+    public R<SysFile> uploadZipFile( MultipartFile file) {
+        if (file.isEmpty()) {
+            return R.fail("文件为空");
+        }
+
+        try {
+            String url=sysFileService.unzipFile(file);
+            SysFile sysFile = new SysFile();
+            sysFile.setName(FileUtils.getName(url));
+            sysFile.setUrl(url);
+            return R.ok(sysFile);
+        } catch (IOException e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+
+}

+ 24 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/service/ISysFileService.java

@@ -0,0 +1,24 @@
+package com.onemap.sanya.fileConfig.service;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+/**
+ * 文件上传接口
+ * 
+ * @author ruoyi
+ */
+public interface ISysFileService
+{
+    /**
+     * 文件上传接口
+     * 
+     * @param file 上传的文件
+     * @return 访问地址
+     * @throws Exception
+     */
+    public String uploadFile(MultipartFile file) throws Exception;
+
+    public String unzipFile(MultipartFile file) throws IOException;
+}

+ 129 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/service/LocalSysFileServiceImpl.java

@@ -0,0 +1,129 @@
+package com.onemap.sanya.fileConfig.service;
+
+
+import com.onemap.common.core.utils.uuid.Seq;
+import com.onemap.sanya.fileConfig.utils.FileTypeUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.stereotype.Service;
+
+import java.io.*;
+import java.nio.file.*;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Enumeration;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipInputStream;
+import com.onemap.sanya.fileConfig.utils.FileUploadUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 本地文件存储
+ * 
+ * @author ruoyi
+ */
+@Primary
+@Service
+public class LocalSysFileServiceImpl implements ISysFileService
+{
+    /**
+     * 资源映射路径 前缀
+     */
+    @Value("${file.prefix}")
+    public String localFilePrefix;
+
+    /**
+     * 域名或本机访问地址
+     */
+    @Value("${file.domain}")
+    public String domain;
+    
+    /**
+     * 上传文件存储在本地的根路径
+     */
+    @Value("${file.path}")
+    private String localFilePath;
+
+    /**
+     * 本地文件上传接口
+     * 
+     * @param file 上传的文件
+     * @return 访问地址
+     * @throws Exception
+     */
+    @Override
+    public String uploadFile(MultipartFile file) throws Exception
+    {
+        String name = FileUploadUtils.upload(localFilePath, file);
+        String url = domain + localFilePrefix + name;
+        return url;
+    }
+
+    @Override
+    public String unzipFile(MultipartFile file) throws IOException {
+        String gltfname="";
+        String name = FileUploadUtils.upload(localFilePath, file);
+        String url = localFilePath + name;
+        String fileurl = getParentDirectoryPath(url)+"/"+ FilenameUtils.getBaseName(file.getOriginalFilename())+ Seq.getId(Seq.uploadSeqType);
+        try (ZipInputStream zipIn = new ZipInputStream(new FileInputStream(url))) {
+            ZipEntry entry = zipIn.getNextEntry();
+            while (entry != null) {
+                String filePath = fileurl + "/" + entry.getName();
+                File desc = new File(filePath);
+                if (!desc.exists())
+                {
+                    if (!desc.getParentFile().exists())
+                    {
+                        desc.getParentFile().mkdirs();
+                    }
+                }
+                if (!entry.isDirectory()) {
+                    // If the entry is a file, extract it
+                    extractFile(zipIn, filePath);
+                    if(FileTypeUtils.getFileType(desc).equals("gltf")){
+
+                        String lpath=localFilePath.replace("\\","/");
+                        gltfname=domain + localFilePrefix+ "/" + filePath.replace(lpath, "");
+                    }
+                }
+                else {
+                    // If the entry is a directory, make the directory
+                    File dir = new File(filePath);
+                    dir.mkdirs();
+                }
+                zipIn.closeEntry();
+                entry = zipIn.getNextEntry();
+
+            }
+        }
+    return gltfname;
+    }
+
+    private void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
+        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
+        byte[] bytesIn = new byte[4096];
+        int read;
+        while ((read = zipIn.read(bytesIn)) != -1) {
+            bos.write(bytesIn, 0, read);
+        }
+        bos.close();
+    }
+    public String getParentDirectoryPath(String filePath) {
+        File desc = new File(filePath);
+        // 获取父路径(目录路径),如果路径是根路径或没有父路径,则返回null
+        String parentPath = desc.getParent();
+        // 将Path对象转换为字符串,如果parentPath为null,则返回空字符串或进行其他处理
+        return parentPath != null ? parentPath.toString().replace("\\","/") : "";
+    }
+    public static String getFileExtension(String fileName) {
+        int dotIndex = fileName.lastIndexOf('.');
+        if (dotIndex == -1 || dotIndex == fileName.length() - 1) {
+            // 没有找到点,或者点是文件名的最后一个字符(例如".hiddenfile")
+            return "";
+        }
+        return fileName.substring(dotIndex + 1);
+    }
+}

+ 97 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/utils/FileTypeUtils.java

@@ -0,0 +1,97 @@
+package com.onemap.sanya.fileConfig.utils;
+
+import com.onemap.common.core.utils.file.MimeTypeUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.util.Objects;
+
+/**
+ * 文件类型工具类
+ *
+ * @author onemap
+ */
+public class FileTypeUtils
+{
+    /**
+     * 获取文件类型
+     * <p>
+     * 例如: ruoyi.txt, 返回: txt
+     * 
+     * @param file 文件名
+     * @return 后缀(不含".")
+     */
+    public static String getFileType(File file)
+    {
+        if (null == file)
+        {
+            return StringUtils.EMPTY;
+        }
+        return getFileType(file.getName());
+    }
+
+    /**
+     * 获取文件类型
+     * <p>
+     * 例如: ruoyi.txt, 返回: txt
+     *
+     * @param fileName 文件名
+     * @return 后缀(不含".")
+     */
+    public static String getFileType(String fileName)
+    {
+        int separatorIndex = fileName.lastIndexOf(".");
+        if (separatorIndex < 0)
+        {
+            return "";
+        }
+        return fileName.substring(separatorIndex + 1).toLowerCase();
+    }
+
+    /**
+     * 获取文件名的后缀
+     * 
+     * @param file 表单文件
+     * @return 后缀名
+     */
+    public static final String getExtension(MultipartFile file)
+    {
+        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
+        if (StringUtils.isEmpty(extension))
+        {
+            extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType()));
+        }
+        return extension;
+    }
+
+    /**
+     * 获取文件类型
+     * 
+     * @param photoByte 文件字节码
+     * @return 后缀(不含".")
+     */
+    public static String getFileExtendName(byte[] photoByte)
+    {
+        String strFileExtendName = "JPG";
+        if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56)
+                && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97))
+        {
+            strFileExtendName = "GIF";
+        }
+        else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70))
+        {
+            strFileExtendName = "JPG";
+        }
+        else if ((photoByte[0] == 66) && (photoByte[1] == 77))
+        {
+            strFileExtendName = "BMP";
+        }
+        else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71))
+        {
+            strFileExtendName = "PNG";
+        }
+        return strFileExtendName;
+    }
+}

+ 185 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/utils/FileUploadUtils.java

@@ -0,0 +1,185 @@
+package com.onemap.sanya.fileConfig.utils;
+
+import com.onemap.common.core.exception.file.FileException;
+import com.onemap.common.core.exception.file.FileNameLengthLimitExceededException;
+import com.onemap.common.core.exception.file.FileSizeLimitExceededException;
+import com.onemap.common.core.exception.file.InvalidExtensionException;
+import com.onemap.common.core.utils.DateUtils;
+import com.onemap.common.core.utils.StringUtils;
+import com.onemap.common.core.utils.file.FileTypeUtils;
+import com.onemap.common.core.utils.uuid.Seq;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Paths;
+import java.util.Objects;
+
+/**
+ * 文件上传工具类
+ * 
+ * @author ruoyi
+ */
+public class FileUploadUtils
+{
+    /**
+     * 默认大小 50M
+     */
+    public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024;
+
+    /**
+     * 默认的文件名最大长度 100
+     */
+    public static final int DEFAULT_FILE_NAME_LENGTH = 100;
+
+    /**
+     * 根据文件路径上传
+     *
+     * @param baseDir 相对应用的基目录
+     * @param file 上传的文件
+     * @return 文件名称
+     * @throws IOException
+     */
+    public static final String upload(String baseDir, MultipartFile file) throws IOException
+    {
+        try
+        {
+            return upload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
+        }
+        catch (FileException fe)
+        {
+            throw new IOException(fe.getDefaultMessage(), fe);
+        }
+        catch (Exception e)
+        {
+            throw new IOException(e.getMessage(), e);
+        }
+    }
+
+    /**
+     * 文件上传
+     *
+     * @param baseDir 相对应用的基目录
+     * @param file 上传的文件
+     * @param allowedExtension 上传文件类型
+     * @return 返回上传成功的文件名
+     * @throws FileSizeLimitExceededException 如果超出最大大小
+     * @throws FileNameLengthLimitExceededException 文件名太长
+     * @throws IOException 比如读写文件出错时
+     * @throws InvalidExtensionException 文件校验异常
+     */
+    public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension)
+            throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
+            InvalidExtensionException
+    {
+        int fileNamelength = Objects.requireNonNull(file.getOriginalFilename()).length();
+        if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH)
+        {
+            throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
+        }
+
+        assertAllowed(file, allowedExtension);
+
+        String fileName = extractFilename(file);
+
+        String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath();
+        file.transferTo(Paths.get(absPath));
+        return getPathFileName(fileName);
+    }
+
+    /**
+     * 编码文件名
+     */
+    public static final String extractFilename(MultipartFile file)
+    {
+        return StringUtils.format("{}/{}.{}", DateUtils.datePath(),
+                FilenameUtils.getBaseName(file.getOriginalFilename()), FileTypeUtils.getExtension(file));
+    }
+
+    private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
+    {
+        File desc = new File(uploadDir + File.separator + fileName);
+
+        if (!desc.exists())
+        {
+            if (!desc.getParentFile().exists())
+            {
+                desc.getParentFile().mkdirs();
+            }
+        }
+        return desc.isAbsolute() ? desc : desc.getAbsoluteFile();
+    }
+
+    private static final String getPathFileName(String fileName) throws IOException
+    {
+        String pathFileName = "/" + fileName;
+        return pathFileName;
+    }
+
+    /**
+     * 文件大小校验
+     *
+     * @param file 上传的文件
+     * @throws FileSizeLimitExceededException 如果超出最大大小
+     * @throws InvalidExtensionException 文件校验异常
+     */
+    public static final void assertAllowed(MultipartFile file, String[] allowedExtension)
+            throws FileSizeLimitExceededException, InvalidExtensionException
+    {
+        long size = file.getSize();
+        if (size > DEFAULT_MAX_SIZE)
+        {
+            throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024);
+        }
+
+        String fileName = file.getOriginalFilename();
+        String extension = FileTypeUtils.getExtension(file);
+        if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension))
+        {
+            if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION)
+            {
+                throw new InvalidExtensionException.InvalidImageExtensionException(allowedExtension, extension,
+                        fileName);
+            }
+            else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION)
+            {
+                throw new InvalidExtensionException.InvalidFlashExtensionException(allowedExtension, extension,
+                        fileName);
+            }
+            else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION)
+            {
+                throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension,
+                        fileName);
+            }
+            else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION)
+            {
+                throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension,
+                        fileName);
+            }
+            else
+            {
+                throw new InvalidExtensionException(allowedExtension, extension, fileName);
+            }
+        }
+    }
+
+    /**
+     * 判断MIME类型是否是允许的MIME类型
+     *
+     * @param extension 上传文件类型
+     * @param allowedExtension 允许上传文件类型
+     * @return true/false
+     */
+    public static final boolean isAllowedExtension(String extension, String[] allowedExtension)
+    {
+        for (String str : allowedExtension)
+        {
+            if (str.equalsIgnoreCase(extension))
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+}

+ 63 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/fileConfig/utils/MimeTypeUtils.java

@@ -0,0 +1,63 @@
+package com.onemap.sanya.fileConfig.utils;
+
+/**
+ * 媒体类型工具类
+ * 
+ * @author onemap
+ */
+public class MimeTypeUtils
+{
+    public static final String IMAGE_PNG = "image/png";
+
+    public static final String IMAGE_JPG = "image/jpg";
+
+    public static final String IMAGE_JPEG = "image/jpeg";
+
+    public static final String IMAGE_BMP = "image/bmp";
+
+    public static final String IMAGE_GIF = "image/gif";
+
+    public static final String[] IMAGE_EXTENSION = { "bmp", "gif", "jpg", "jpeg", "png" };
+
+    public static final String[] FLASH_EXTENSION = { "swf", "flv" };
+
+    public static final String[] MEDIA_EXTENSION = { "swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg",
+            "asf", "rm", "rmvb" };
+
+    public static final String[] VIDEO_EXTENSION = { "mp4", "avi", "rmvb" };
+
+    public static final String[] DEFAULT_ALLOWED_EXTENSION = {
+            // 图片
+            "bmp", "gif", "jpg", "jpeg", "png",
+            // word excel powerpoint
+            "doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt",
+            // 压缩文件
+            "rar", "zip", "gz", "bz2",
+            // 视频格式
+            "mp4", "avi", "rmvb",
+            // pdf
+            "pdf",
+            //模型类型
+            "gltf","bin"
+
+    };
+
+    public static String getExtension(String prefix)
+    {
+        switch (prefix)
+        {
+            case IMAGE_PNG:
+                return "png";
+            case IMAGE_JPG:
+                return "jpg";
+            case IMAGE_JPEG:
+                return "jpeg";
+            case IMAGE_BMP:
+                return "bmp";
+            case IMAGE_GIF:
+                return "gif";
+            default:
+                return "";
+        }
+    }
+}

+ 61 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/mapper/ZtBillboardJtMapper.java

@@ -0,0 +1,61 @@
+package com.onemap.sanya.mapper;
+
+import java.util.List;
+import com.onemap.sanya.domain.business.ZtBillboardJt;
+
+/**
+ * 广告牌位置截图Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-12-17
+ */
+public interface ZtBillboardJtMapper 
+{
+    /**
+     * 查询广告牌位置截图
+     * 
+     * @param id 广告牌位置截图主键
+     * @return 广告牌位置截图
+     */
+    public ZtBillboardJt selectZtBillboardJtById(String id);
+
+    /**
+     * 查询广告牌位置截图列表
+     * 
+     * @param ztBillboardJt 广告牌位置截图
+     * @return 广告牌位置截图集合
+     */
+    public List<ZtBillboardJt> selectZtBillboardJtList(ZtBillboardJt ztBillboardJt);
+
+    /**
+     * 新增广告牌位置截图
+     * 
+     * @param ztBillboardJt 广告牌位置截图
+     * @return 结果
+     */
+    public int insertZtBillboardJt(ZtBillboardJt ztBillboardJt);
+
+    /**
+     * 修改广告牌位置截图
+     * 
+     * @param ztBillboardJt 广告牌位置截图
+     * @return 结果
+     */
+    public int updateZtBillboardJt(ZtBillboardJt ztBillboardJt);
+
+    /**
+     * 删除广告牌位置截图
+     * 
+     * @param id 广告牌位置截图主键
+     * @return 结果
+     */
+    public int deleteZtBillboardJtById(String id);
+
+    /**
+     * 批量删除广告牌位置截图
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteZtBillboardJtByIds(String[] ids);
+}

+ 63 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/mapper/ZtBillboardmodellisthistoryMapper.java

@@ -0,0 +1,63 @@
+package com.onemap.sanya.mapper;
+
+import com.onemap.sanya.domain.business.ZtBillboardmodellisthistory;
+
+import java.util.List;
+
+/**
+ * 广告模型信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+public interface ZtBillboardmodellisthistoryMapper
+{
+    /**
+     * 查询广告模型信息
+     * 
+     * @param id 广告模型信息主键
+     * @return 广告模型信息
+     */
+    public ZtBillboardmodellisthistory selectZtBillboardmodellisthistoryById(String id);
+
+    /**
+     * 查询广告模型信息列表
+     * 
+     * @param ztBillboardmodellisthistory 广告模型信息
+     * @return 广告模型信息集合
+     */
+    public List<ZtBillboardmodellisthistory> selectZtBillboardmodellisthistoryList(ZtBillboardmodellisthistory ztBillboardmodellisthistory);
+
+    /**
+     * 新增广告模型信息
+     * 
+     * @param ztBillboardmodellisthistory 广告模型信息
+     * @return 结果
+     */
+    public int insertZtBillboardmodellisthistory(ZtBillboardmodellisthistory ztBillboardmodellisthistory);
+
+
+    /**
+     * 修改广告模型信息
+     * 
+     * @param ztBillboardmodellisthistory 广告模型信息
+     * @return 结果
+     */
+    public int updateZtBillboardmodellisthistory(ZtBillboardmodellisthistory ztBillboardmodellisthistory);
+
+    /**
+     * 删除广告模型信息
+     * 
+     * @param id 广告模型信息主键
+     * @return 结果
+     */
+    public int deleteZtBillboardmodellisthistoryById(String id);
+
+    /**
+     * 批量删除广告模型信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteZtBillboardmodellisthistoryByIds(String[] ids);
+}

+ 9 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/mapper/ZtProjectinformationMapper.java

@@ -28,6 +28,15 @@ public interface ZtProjectinformationMapper
      */
     public List<ZtProjectinformation> selectZtProjectinformationList(ZtProjectinformation ztProjectinformation);
 
+    /**
+     * 查询未关联广告项目的报建项目
+     *
+     * @param ztProjectinformation 项目信息
+     * @return 项目信息集合
+     */
+    public List<ZtProjectinformation> selectNoAssociatedList(ZtProjectinformation ztProjectinformation);
+
+
     /**
      * 新增项目信息
      * 

+ 61 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/service/IZtBillboardJtService.java

@@ -0,0 +1,61 @@
+package com.onemap.sanya.service;
+
+import java.util.List;
+import com.onemap.sanya.domain.business.ZtBillboardJt;
+
+/**
+ * 广告牌位置截图Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-12-17
+ */
+public interface IZtBillboardJtService 
+{
+    /**
+     * 查询广告牌位置截图
+     * 
+     * @param id 广告牌位置截图主键
+     * @return 广告牌位置截图
+     */
+    public ZtBillboardJt selectZtBillboardJtById(String id);
+
+    /**
+     * 查询广告牌位置截图列表
+     * 
+     * @param ztBillboardJt 广告牌位置截图
+     * @return 广告牌位置截图集合
+     */
+    public List<ZtBillboardJt> selectZtBillboardJtList(ZtBillboardJt ztBillboardJt);
+
+    /**
+     * 新增广告牌位置截图
+     * 
+     * @param ztBillboardJt 广告牌位置截图
+     * @return 结果
+     */
+    public int insertZtBillboardJt(ZtBillboardJt ztBillboardJt);
+
+    /**
+     * 修改广告牌位置截图
+     * 
+     * @param ztBillboardJt 广告牌位置截图
+     * @return 结果
+     */
+    public int updateZtBillboardJt(ZtBillboardJt ztBillboardJt);
+
+    /**
+     * 批量删除广告牌位置截图
+     * 
+     * @param ids 需要删除的广告牌位置截图主键集合
+     * @return 结果
+     */
+    public int deleteZtBillboardJtByIds(String[] ids);
+
+    /**
+     * 删除广告牌位置截图信息
+     * 
+     * @param id 广告牌位置截图主键
+     * @return 结果
+     */
+    public int deleteZtBillboardJtById(String id);
+}

+ 71 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/service/IZtBillboardmodellisthistoryService.java

@@ -0,0 +1,71 @@
+package com.onemap.sanya.service;
+
+import com.onemap.sanya.domain.business.ZtBillboardmodellisthistory;
+
+import java.util.List;
+
+/**
+ * 广告模型信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+public interface IZtBillboardmodellisthistoryService
+{
+    /**
+     * 查询广告模型信息
+     * 
+     * @param id 广告模型信息主键
+     * @return 广告模型信息
+     */
+    public ZtBillboardmodellisthistory selectZtBillboardmodellisthistoryById(String id);
+
+    /**
+     * 查询广告模型信息列表
+     * 
+     * @param ztBillboardmodellisthistory 广告模型信息
+     * @return 广告模型信息集合
+     */
+    public List<ZtBillboardmodellisthistory> selectZtBillboardmodellisthistoryList(ZtBillboardmodellisthistory ztBillboardmodellisthistory);
+
+    /**
+     * 新增广告模型信息
+     * 
+     * @param ztBillboardmodellisthistory 广告模型信息
+     * @return 结果
+     */
+    public int insertZtBillboardmodellisthistory(ZtBillboardmodellisthistory ztBillboardmodellisthistory);
+
+    /**
+     * 批量新增广告模型信息
+     *
+     * @param ztBillboardmodellisthistory 广告模型信息
+     * @return 结果
+     */
+    public int insertZtBillboardmodellisthistorys(List<ZtBillboardmodellisthistory> ztBillboardmodellisthistory);
+
+
+    /**
+     * 修改广告模型信息
+     * 
+     * @param ztBillboardmodellisthistory 广告模型信息
+     * @return 结果
+     */
+    public int updateZtBillboardmodellisthistory(ZtBillboardmodellisthistory ztBillboardmodellisthistory);
+
+    /**
+     * 批量删除广告模型信息
+     * 
+     * @param ids 需要删除的广告模型信息主键集合
+     * @return 结果
+     */
+    public int deleteZtBillboardmodellisthistoryByIds(String[] ids);
+
+    /**
+     * 删除广告模型信息信息
+     * 
+     * @param id 广告模型信息主键
+     * @return 结果
+     */
+    public int deleteZtBillboardmodellisthistoryById(String id);
+}

+ 10 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/service/IZtProjectinformationService.java

@@ -27,6 +27,16 @@ public interface IZtProjectinformationService
      */
     public List<ZtProjectinformation> selectZtProjectinformationList(ZtProjectinformation ztProjectinformation);
 
+    /**
+     * 查询项目信息列表
+     *
+     * @param ztProjectinformation 项目信息
+     * @return 项目信息集合
+     */
+    public List<ZtProjectinformation> selectNoAssociatedList(ZtProjectinformation ztProjectinformation);
+
+
+
     /**
      * 新增项目信息
      * 

+ 96 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/service/impl/ZtBillboardJtServiceImpl.java

@@ -0,0 +1,96 @@
+package com.onemap.sanya.service.impl;
+
+import java.util.List;
+import com.onemap.common.core.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.onemap.sanya.mapper.ZtBillboardJtMapper;
+import com.onemap.sanya.domain.business.ZtBillboardJt;
+import com.onemap.sanya.service.IZtBillboardJtService;
+
+/**
+ * 广告牌位置截图Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-12-17
+ */
+@Service
+public class ZtBillboardJtServiceImpl implements IZtBillboardJtService 
+{
+    @Autowired
+    private ZtBillboardJtMapper ztBillboardJtMapper;
+
+    /**
+     * 查询广告牌位置截图
+     * 
+     * @param id 广告牌位置截图主键
+     * @return 广告牌位置截图
+     */
+    @Override
+    public ZtBillboardJt selectZtBillboardJtById(String id)
+    {
+        return ztBillboardJtMapper.selectZtBillboardJtById(id);
+    }
+
+    /**
+     * 查询广告牌位置截图列表
+     * 
+     * @param ztBillboardJt 广告牌位置截图
+     * @return 广告牌位置截图
+     */
+    @Override
+    public List<ZtBillboardJt> selectZtBillboardJtList(ZtBillboardJt ztBillboardJt)
+    {
+        return ztBillboardJtMapper.selectZtBillboardJtList(ztBillboardJt);
+    }
+
+    /**
+     * 新增广告牌位置截图
+     * 
+     * @param ztBillboardJt 广告牌位置截图
+     * @return 结果
+     */
+    @Override
+    public int insertZtBillboardJt(ZtBillboardJt ztBillboardJt)
+    {
+        ztBillboardJt.setCreateTime(DateUtils.getNowDate());
+        return ztBillboardJtMapper.insertZtBillboardJt(ztBillboardJt);
+    }
+
+    /**
+     * 修改广告牌位置截图
+     * 
+     * @param ztBillboardJt 广告牌位置截图
+     * @return 结果
+     */
+    @Override
+    public int updateZtBillboardJt(ZtBillboardJt ztBillboardJt)
+    {
+        ztBillboardJt.setUpdateTime(DateUtils.getNowDate());
+        return ztBillboardJtMapper.updateZtBillboardJt(ztBillboardJt);
+    }
+
+    /**
+     * 批量删除广告牌位置截图
+     * 
+     * @param ids 需要删除的广告牌位置截图主键
+     * @return 结果
+     */
+    @Override
+    public int deleteZtBillboardJtByIds(String[] ids)
+    {
+        return ztBillboardJtMapper.deleteZtBillboardJtByIds(ids);
+    }
+
+    /**
+     * 删除广告牌位置截图信息
+     * 
+     * @param id 广告牌位置截图主键
+     * @return 结果
+     */
+    @Override
+    public int deleteZtBillboardJtById(String id)
+    {
+        return ztBillboardJtMapper.deleteZtBillboardJtById(id);
+    }
+}

+ 114 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/service/impl/ZtBillboardmodellisthistoryServiceImpl.java

@@ -0,0 +1,114 @@
+package com.onemap.sanya.service.impl;
+
+import com.onemap.common.core.utils.DateUtils;
+import com.onemap.sanya.domain.business.ZtBillboardmodellisthistory;
+import com.onemap.sanya.mapper.ZtBillboardmodellisthistoryMapper;
+import com.onemap.sanya.service.IZtBillboardmodellisthistoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 广告模型信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+@Service
+public class ZtBillboardmodellisthistoryServiceImpl implements IZtBillboardmodellisthistoryService
+{
+    @Autowired
+    private ZtBillboardmodellisthistoryMapper ztBillboardmodellisthistoryMapper;
+
+    /**
+     * 查询广告模型信息
+     * 
+     * @param id 广告模型信息主键
+     * @return 广告模型信息
+     */
+    @Override
+    public ZtBillboardmodellisthistory selectZtBillboardmodellisthistoryById(String id)
+    {
+        return ztBillboardmodellisthistoryMapper.selectZtBillboardmodellisthistoryById(id);
+    }
+
+    /**
+     * 查询广告模型信息列表
+     * 
+     * @param ztBillboardmodellisthistory 广告模型信息
+     * @return 广告模型信息
+     */
+    @Override
+    public List<ZtBillboardmodellisthistory> selectZtBillboardmodellisthistoryList(ZtBillboardmodellisthistory ztBillboardmodellisthistory)
+    {
+        return ztBillboardmodellisthistoryMapper.selectZtBillboardmodellisthistoryList(ztBillboardmodellisthistory);
+    }
+
+    /**
+     * 新增广告模型信息
+     * 
+     * @param ztBillboardmodellisthistory 广告模型信息
+     * @return 结果
+     */
+    @Override
+    public int insertZtBillboardmodellisthistory(ZtBillboardmodellisthistory ztBillboardmodellisthistory)
+    {
+        ztBillboardmodellisthistory.setCreateTime(DateUtils.getNowDate());
+        return ztBillboardmodellisthistoryMapper.insertZtBillboardmodellisthistory(ztBillboardmodellisthistory);
+    }
+    /**
+     * 批量新增广告模型信息
+     *
+     * @param ztBillboardmodellisthistory 广告模型信息
+     * @return 结果
+     */
+    @Override
+    public int insertZtBillboardmodellisthistorys(List<ZtBillboardmodellisthistory> ztBillboardmodellisthistory)
+    {
+        int count = 0;
+        for (ZtBillboardmodellisthistory ztBillboardmodel:ztBillboardmodellisthistory){
+            ztBillboardmodel.setCreateTime(DateUtils.getNowDate());
+            count+=ztBillboardmodellisthistoryMapper.insertZtBillboardmodellisthistory(ztBillboardmodel);
+        }
+        return count;
+    }
+
+
+    /**
+     * 修改广告模型信息
+     * 
+     * @param ztBillboardmodellisthistory 广告模型信息
+     * @return 结果
+     */
+    @Override
+    public int updateZtBillboardmodellisthistory(ZtBillboardmodellisthistory ztBillboardmodellisthistory)
+    {
+        ztBillboardmodellisthistory.setUpdateTime(DateUtils.getNowDate());
+        return ztBillboardmodellisthistoryMapper.updateZtBillboardmodellisthistory(ztBillboardmodellisthistory);
+    }
+
+    /**
+     * 批量删除广告模型信息
+     * 
+     * @param ids 需要删除的广告模型信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteZtBillboardmodellisthistoryByIds(String[] ids)
+    {
+        return ztBillboardmodellisthistoryMapper.deleteZtBillboardmodellisthistoryByIds(ids);
+    }
+
+    /**
+     * 删除广告模型信息信息
+     * 
+     * @param id 广告模型信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteZtBillboardmodellisthistoryById(String id)
+    {
+        return ztBillboardmodellisthistoryMapper.deleteZtBillboardmodellisthistoryById(id);
+    }
+}

+ 12 - 0
onemap-modules/onemap-model/src/main/java/com/onemap/sanya/service/impl/ZtProjectinformationServiceImpl.java

@@ -44,6 +44,18 @@ public class ZtProjectinformationServiceImpl implements IZtProjectinformationSer
         return ztProjectinformationMapper.selectZtProjectinformationList(ztProjectinformation);
     }
 
+    /**
+     * 查询项目信息列表
+     *
+     * @param ztProjectinformation 项目信息
+     * @return 项目信息
+     */
+    @Override
+    public List<ZtProjectinformation> selectNoAssociatedList(ZtProjectinformation ztProjectinformation)
+    {
+        return ztProjectinformationMapper.selectNoAssociatedList(ztProjectinformation);
+    }
+
     /**
      * 新增项目信息
      * 

+ 88 - 0
onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtBillboardJtMapper.xml

@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.onemap.sanya.mapper.ZtBillboardJtMapper">
+    
+    <resultMap type="com.onemap.sanya.domain.business.ZtBillboardJt" id="ZtBillboardJtResult">
+        <result property="id"    column="id"    />
+        <result property="modelid"    column="modelid"    />
+        <result property="jtName"    column="jt_name"    />
+        <result property="jtBase"    column="jt_base"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectZtBillboardJtVo">
+        select id, modelid, jt_name, jt_base, create_by, create_time, update_by, update_time, remark from "zt_billboard_jt"
+    </sql>
+
+    <select id="selectZtBillboardJtList" parameterType="com.onemap.sanya.domain.business.ZtBillboardJt" resultMap="ZtBillboardJtResult">
+        <include refid="selectZtBillboardJtVo"/>
+        <where>  
+            <if test="modelid != null  and modelid != ''"> and modelid = #{modelid}</if>
+            <if test="jtName != null  and jtName != ''"> and jt_name like concat('%', #{jtName}, '%')</if>
+            <if test="jtBase != null  and jtBase != ''"> and jt_base = #{jtBase}</if>
+        </where>
+    </select>
+    
+    <select id="selectZtBillboardJtById" parameterType="String" resultMap="ZtBillboardJtResult">
+        <include refid="selectZtBillboardJtVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertZtBillboardJt" parameterType="com.onemap.sanya.domain.business.ZtBillboardJt">
+        insert into zt_billboard_jt
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="modelid != null">modelid,</if>
+            <if test="jtName != null">jt_name,</if>
+            <if test="jtBase != null">jt_base,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="modelid != null">#{modelid},</if>
+            <if test="jtName != null">#{jtName},</if>
+            <if test="jtBase != null">#{jtBase},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateZtBillboardJt" parameterType="com.onemap.sanya.domain.business.ZtBillboardJt">
+        update zt_billboard_jt
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="modelid != null">modelid = #{modelid},</if>
+            <if test="jtName != null">jt_name = #{jtName},</if>
+            <if test="jtBase != null">jt_base = #{jtBase},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteZtBillboardJtById" parameterType="String">
+        delete from zt_billboard_jt where id = #{id}
+    </delete>
+
+    <delete id="deleteZtBillboardJtByIds" parameterType="String">
+        delete from zt_billboard_jt where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 13 - 1
onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtBillboardinfolistMapper.xml

@@ -20,10 +20,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateBy"    column="update_by"    />
         <result property="updateTime"    column="update_time"    />
         <result property="remark"    column="remark"    />
+        <result property="bjmxid"    column="bjmxid"    />
+        <result property="bjmxname"    column="bjmxname"    />
+
     </resultMap>
 
     <sql id="selectZtBillboardinfolistVo">
-        select id, projectname, address, "checkDate", design, description, url, dataurl, datasourcename, datasetname, create_by, create_time, update_by, update_time, remark from "zt_billboardInfoList"
+        select id, projectname, address, "checkDate", design, description, url, dataurl, datasourcename, datasetname, create_by, create_time, update_by, update_time, remark,bjmxid,bjmxname from "zt_billboardInfoList"
     </sql>
 
     <select id="selectZtBillboardinfolistList" parameterType="com.onemap.sanya.domain.business.ZtBillboardinfolist" resultMap="ZtBillboardinfolistResult">
@@ -38,6 +41,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="dataurl != null  and dataurl != ''"> and dataurl = #{dataurl}</if>
             <if test="datasourcename != null  and datasourcename != ''"> and datasourcename like concat('%', #{datasourcename}, '%')</if>
             <if test="datasetname != null  and datasetname != ''"> and datasetname like concat('%', #{datasetname}, '%')</if>
+            <if test="bjmxid != null  and bjmxid != ''"> and bjmxid = #{bjmxid}</if>
+            <if test="bjmxname != null  and bjmxname != ''"> and bjmxname = #{bjmxname}</if>
         </where>
         order by "create_time" desc
     </select>
@@ -65,6 +70,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="remark != null">remark,</if>
+            <if test="bjmxid != null">bjmxid,</if>
+            <if test="bjmxname != null">bjmxname,</if>
+
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -82,6 +90,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="remark != null">#{remark},</if>
+            <if test="bjmxid != null">#{bjmxid},</if>
+            <if test="bjmxname != null">#{bjmxname},</if>
          </trim>
     </insert>
 
@@ -102,6 +112,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="remark != null">remark = #{remark},</if>
+            <if test="bjmxid != null">bjmxid = #{bjmxid},</if>
+            <if test="bjmxname != null">bjmxname = #{bjmxname},</if>
         </trim>
         where id = #{id}
     </update>

+ 42 - 22
onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtBillboardmodellistMapper.xml

@@ -30,39 +30,53 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="templateBottom"    column="templateBottom"    />
         <result property="results"    column="results"    />
         <result property="viewing_angle"    column="viewing_angle"  />
+        <result property="review_date"    column="review_date"  />
     </resultMap>
 
-    <sql id="selectZtBillboardmodellistVo">
-        select id, "billboardInfoId", "billboardName", "billboardType", x, y, z, "rotateX", "rotateY", "rotateZ", "ReviewStatus", "ReviewComments", create_by, create_time, update_by, update_time, remark, "isAddModel", remarks, "template","templateTop", "templateCentre", "templateBottom","results","viewing_angle" from "zt_billboardModelList"
+    <sql id="selectZtBillboardmodellistaddjtVo">
+        select id, "billboardInfoId", "billboardName", "billboardType", x, y, z, "rotateX", "rotateY", "rotateZ", "ReviewStatus", "ReviewComments", create_by, create_time, update_by, update_time, remark, "isAddModel", remarks, "template","templateTop", "templateCentre", "templateBottom","results","viewing_angle","review_date" from "zt_billboardModelList"
     </sql>
 
     <select id="selectZtBillboardmodellistList" parameterType="com.onemap.sanya.domain.business.ZtBillboardmodellist" resultMap="ZtBillboardmodellistResult">
-        <include refid="selectZtBillboardmodellistVo"/>
+        SELECT
+        "zt_billboardModelList".*,
+        COUNT ( jt.modelid ) as jtsum
+        FROM
+        "zt_billboardModelList"
+        LEFT JOIN "zt_billboard_jt" jt ON "zt_billboardModelList".id = jt.modelid
         <where>  
-            <if test="billboardInfoId != null  and billboardInfoId != ''"> and "billboardInfoId" = #{billboardInfoId}</if>
-            <if test="billboardName != null  and billboardName != ''"> and "billboardName" like concat('%', #{billboardName}, '%')</if>
-            <if test="billboardType != null  and billboardType != ''"> and "billboardType" = #{billboardType}</if>
-            <if test="x != null "> and x = #{x}</if>
-            <if test="y != null "> and y = #{y}</if>
-            <if test="z != null "> and z = #{z}</if>
-            <if test="rotateX != null "> and "rotateX" = #{rotateX}</if>
-            <if test="rotateY != null "> and "rotateY" = #{rotateY}</if>
-            <if test="rotateZ != null "> and "rotateZ" = #{rotateZ}</if>
-            <if test="ReviewStatus != null  and ReviewStatus != ''"> and "ReviewStatus" = #{ReviewStatus}</if>
-            <if test="ReviewComments != null  and ReviewComments != ''"> and "ReviewComments" = #{ReviewComments}</if>
-            <if test="isAddModel != null "> and "isAddModel" = #{isAddModel}</if>
-            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
-            <if test="template != null  and template != ''"> and "template" = #{template}::jsonb</if>
-            <if test="templateTop != null  and templateTop != ''"> and "templateTop" = #{templateTop}::jsonb</if>
-            <if test="templateCentre != null  and templateCentre != ''"> and "templateCentre" = #{templateCentre}::jsonb</if>
-            <if test="templateBottom != null  and templateBottom != ''"> and "templateBottom" = #{templateBottom}::jsonb</if>
+            <if test="billboardInfoId != null  and billboardInfoId != ''"> and "zt_billboardModelList"."billboardInfoId" = #{billboardInfoId}</if>
+            <if test="billboardName != null  and billboardName != ''"> and "zt_billboardModelList"."billboardName" like concat('%', #{billboardName}, '%')</if>
+            <if test="billboardType != null  and billboardType != ''"> and "zt_billboardModelList"."billboardType" = #{billboardType}</if>
+            <if test="x != null "> and "zt_billboardModelList".x = #{x}</if>
+            <if test="y != null "> and "zt_billboardModelList".y = #{y}</if>
+            <if test="z != null "> and "zt_billboardModelList".z = #{z}</if>
+            <if test="rotateX != null "> and "zt_billboardModelList"."rotateX" = #{rotateX}</if>
+            <if test="rotateY != null "> and "zt_billboardModelList"."rotateY" = #{rotateY}</if>
+            <if test="rotateZ != null "> and "zt_billboardModelList"."rotateZ" = #{rotateZ}</if>
+            <if test="ReviewStatus != null  and ReviewStatus != ''"> and "zt_billboardModelList"."ReviewStatus" = #{ReviewStatus}</if>
+            <if test="ReviewComments != null  and ReviewComments != ''"> and "zt_billboardModelList"."ReviewComments" = #{ReviewComments}</if>
+            <if test="isAddModel != null "> and "zt_billboardModelList"."isAddModel" = #{isAddModel}</if>
+            <if test="remarks != null  and remarks != ''"> and "zt_billboardModelList".remarks = #{remarks}</if>
+            <if test="template != null  and template != ''"> and "zt_billboardModelList"."template" = #{template}::jsonb</if>
+            <if test="templateTop != null  and templateTop != ''"> and "zt_billboardModelList"."templateTop" = #{templateTop}::jsonb</if>
+            <if test="templateCentre != null  and templateCentre != ''"> and "zt_billboardModelList"."templateCentre" = #{templateCentre}::jsonb</if>
+            <if test="templateBottom != null  and templateBottom != ''"> and "zt_billboardModelList"."templateBottom" = #{templateBottom}::jsonb</if>
         </where>
+        GROUP BY  "zt_billboardModelList".id
         order by "create_time" desc
     </select>
     
     <select id="selectZtBillboardmodellistById" parameterType="String" resultMap="ZtBillboardmodellistResult">
-        <include refid="selectZtBillboardmodellistVo"/>
-        where id = #{id}
+        SELECT
+            "zt_billboardModelList".*,
+            COUNT ( jt.modelid ) as jtsum
+        FROM
+            "zt_billboardModelList"
+                LEFT JOIN "zt_billboard_jt" jt ON "zt_billboardModelList".id = jt.modelid
+        where "zt_billboardModelList".id = #{id}
+        GROUP BY  "zt_billboardModelList".id
+
     </select>
         
     <insert id="insertZtBillboardmodellist" parameterType="com.onemap.sanya.domain.business.ZtBillboardmodellist">
@@ -93,6 +107,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="templateBottom != null">"templateBottom",</if>
             <if test="results != null">"results",</if>
             <if test="viewing_angle != null">"viewing_angle",</if>
+            <if test="review_date != null">"review_date",</if>
+
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -120,6 +136,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="templateBottom != null">#{templateBottom}::jsonb,</if>
             <if test="results != null">#{results}::jsonb,</if>
             <if test="viewing_angle != null ">#{viewing_angle}::jsonb</if>
+            <if test="review_date != null ">#{review_date}</if>
+
          </trim>
     </insert>
 
@@ -151,6 +169,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="templateBottom != null">"templateBottom" = #{templateBottom}::jsonb,</if>
             <if test="results != null">"results" = #{results}::jsonb,</if>
             <if test="viewing_angle != null">"viewing_angle" = #{viewing_angle}::jsonb,</if>
+            <if test="review_date != null">review_date = #{review_date},</if>
+
         </trim>
         where id = #{id}
     </update>

+ 182 - 0
onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtBillboardmodellisthistoryMapper.xml

@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.onemap.sanya.mapper.ZtBillboardmodellisthistoryMapper">
+    
+    <resultMap type="com.onemap.sanya.domain.business.ZtBillboardmodellisthistory" id="ZtBillboardmodellisthistoryResult">
+        <result property="id"    column="id"    />
+        <result property="billboardInfoId"    column="billboardInfoId"    />
+        <result property="billboardName"    column="billboardName"    />
+        <result property="billboardType"    column="billboardType"    />
+        <result property="x"    column="x"    />
+        <result property="y"    column="y"    />
+        <result property="z"    column="z"    />
+        <result property="rotateX"    column="rotateX"    />
+        <result property="rotateY"    column="rotateY"    />
+        <result property="rotateZ"    column="rotateZ"    />
+        <result property="ReviewStatus"    column="ReviewStatus"    />
+        <result property="ReviewComments"    column="ReviewComments"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+        <result property="isAddModel"    column="isAddModel"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="template"    column="template"    />
+        <result property="templateTop"    column="templateTop"    />
+        <result property="templateCentre"    column="templateCentre"    />
+        <result property="templateBottom"    column="templateBottom"    />
+        <result property="results"    column="results"    />
+        <result property="viewing_angle"    column="viewing_angle"  />
+        <result property="review_date"    column="review_date"  />
+    </resultMap>
+
+    <sql id="selectZtBillboardmodellisthistoryaddjtVo">
+        select id, "billboardInfoId", "billboardName", "billboardType", x, y, z, "rotateX", "rotateY", "rotateZ", "ReviewStatus", "ReviewComments", create_by, create_time, update_by, update_time, remark, "isAddModel", remarks, "template","templateTop", "templateCentre", "templateBottom","results","viewing_angle","review_date" from "zt_billboardModelListHistory"
+    </sql>
+
+    <select id="selectZtBillboardmodellisthistoryList" parameterType="com.onemap.sanya.domain.business.ZtBillboardmodellisthistory" resultMap="ZtBillboardmodellisthistoryResult">
+        SELECT
+        "zt_billboardModelListHistory".*
+        FROM
+        "zt_billboardModelListHistory"
+        <where>
+            <if test="id != null  and id != ''"> and "zt_billboardModelListHistory"."id" = #{id}</if>
+            <if test="billboardInfoId != null  and billboardInfoId != ''"> and "zt_billboardModelListHistory"."billboardInfoId" = #{billboardInfoId}</if>
+            <if test="billboardName != null  and billboardName != ''"> and "zt_billboardModelListHistory"."billboardName" like concat('%', #{billboardName}, '%')</if>
+            <if test="billboardType != null  and billboardType != ''"> and "zt_billboardModelListHistory"."billboardType" = #{billboardType}</if>
+            <if test="x != null "> and "zt_billboardModelListHistory".x = #{x}</if>
+            <if test="y != null "> and "zt_billboardModelListHistory".y = #{y}</if>
+            <if test="z != null "> and "zt_billboardModelListHistory".z = #{z}</if>
+            <if test="rotateX != null "> and "zt_billboardModelListHistory"."rotateX" = #{rotateX}</if>
+            <if test="rotateY != null "> and "zt_billboardModelListHistory"."rotateY" = #{rotateY}</if>
+            <if test="rotateZ != null "> and "zt_billboardModelListHistory"."rotateZ" = #{rotateZ}</if>
+            <if test="ReviewStatus != null  and ReviewStatus != ''"> and "zt_billboardModelListHistory"."ReviewStatus" = #{ReviewStatus}</if>
+            <if test="ReviewComments != null  and ReviewComments != ''"> and "zt_billboardModelListHistory"."ReviewComments" = #{ReviewComments}</if>
+            <if test="isAddModel != null "> and "zt_billboardModelListHistory"."isAddModel" = #{isAddModel}</if>
+            <if test="remarks != null  and remarks != ''"> and "zt_billboardModelListHistory".remarks = #{remarks}</if>
+            <if test="template != null  and template != ''"> and "zt_billboardModelListHistory"."template" = #{template}::jsonb</if>
+            <if test="templateTop != null  and templateTop != ''"> and "zt_billboardModelListHistory"."templateTop" = #{templateTop}::jsonb</if>
+            <if test="templateCentre != null  and templateCentre != ''"> and "zt_billboardModelListHistory"."templateCentre" = #{templateCentre}::jsonb</if>
+            <if test="templateBottom != null  and templateBottom != ''"> and "zt_billboardModelListHistory"."templateBottom" = #{templateBottom}::jsonb</if>
+        </where>
+        order by "create_time" desc
+    </select>
+    
+    <select id="selectZtBillboardmodellisthistoryById" parameterType="String" resultMap="ZtBillboardmodellisthistoryResult">
+        SELECT
+            "zt_billboardModelListHistory".*
+        FROM
+            "zt_billboardModelListHistory"
+        where "zt_billboardModelListHistory".id = #{id}
+    </select>
+        
+    <insert id="insertZtBillboardmodellisthistory" parameterType="com.onemap.sanya.domain.business.ZtBillboardmodellisthistory">
+        insert into "zt_billboardModelListHistory"
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="billboardInfoId != null">"billboardInfoId",</if>
+            <if test="billboardName != null">"billboardName",</if>
+            <if test="billboardType != null">"billboardType",</if>
+            <if test="x != null">x,</if>
+            <if test="y != null">y,</if>
+            <if test="z != null">z,</if>
+            <if test="rotateX != null">"rotateX",</if>
+            <if test="rotateY != null">"rotateY",</if>
+            <if test="rotateZ != null">"rotateZ",</if>
+            <if test="ReviewStatus != null">"ReviewStatus",</if>
+            <if test="ReviewComments != null">"ReviewComments",</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+            <if test="isAddModel != null">"isAddModel",</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="template != null">"template",</if>
+            <if test="templateTop != null">"templateTop",</if>
+            <if test="templateCentre != null">"templateCentre",</if>
+            <if test="templateBottom != null">"templateBottom",</if>
+            <if test="results != null">"results",</if>
+            <if test="viewing_angle != null">"viewing_angle",</if>
+            <if test="review_date != null">"review_date",</if>
+
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="billboardInfoId != null">#{billboardInfoId},</if>
+            <if test="billboardName != null">#{billboardName},</if>
+            <if test="billboardType != null">#{billboardType},</if>
+            <if test="x != null">#{x},</if>
+            <if test="y != null">#{y},</if>
+            <if test="z != null">#{z},</if>
+            <if test="rotateX != null">#{rotateX},</if>
+            <if test="rotateY != null">#{rotateY},</if>
+            <if test="rotateZ != null">#{rotateZ},</if>
+            <if test="ReviewStatus != null">#{ReviewStatus},</if>
+            <if test="ReviewComments != null">#{ReviewComments},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="isAddModel != null">#{isAddModel},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="template != null">#{template}::jsonb,</if>
+            <if test="templateTop != null">#{templateTop}::jsonb,</if>
+            <if test="templateCentre != null">#{templateCentre}::jsonb,</if>
+            <if test="templateBottom != null">#{templateBottom}::jsonb,</if>
+            <if test="results != null">#{results}::jsonb,</if>
+            <if test="viewing_angle != null ">#{viewing_angle}::jsonb,</if>
+            <if test="review_date != null ">#{review_date}</if>
+
+         </trim>
+    </insert>
+
+
+    <update id="updateZtBillboardmodellisthistory" parameterType="com.onemap.sanya.domain.business.ZtBillboardmodellisthistory">
+        update "zt_billboardModelListHistory"
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="billboardInfoId != null">"billboardInfoId" = #{billboardInfoId},</if>
+            <if test="billboardName != null">"billboardName" = #{billboardName},</if>
+            <if test="billboardType != null">"billboardType" = #{billboardType},</if>
+            <if test="x != null">x = #{x},</if>
+            <if test="y != null">y = #{y},</if>
+            <if test="z != null">z = #{z},</if>
+            <if test="rotateX != null">"rotateX" = #{rotateX},</if>
+            <if test="rotateY != null">"rotateY" = #{rotateY},</if>
+            <if test="rotateZ != null">"rotateZ" = #{rotateZ},</if>
+            <if test="ReviewStatus != null">"ReviewStatus" = #{ReviewStatus},</if>
+            <if test="ReviewComments != null">"ReviewComments" = #{ReviewComments},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="isAddModel != null">"isAddModel" = #{isAddModel},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="template != null">"template" = #{template}::jsonb,</if>
+            <if test="templateTop != null">"templateTop" = #{templateTop}::jsonb,</if>
+            <if test="templateCentre != null">"templateCentre" = #{templateCentre}::jsonb,</if>
+            <if test="templateBottom != null">"templateBottom" = #{templateBottom}::jsonb,</if>
+            <if test="results != null">"results" = #{results}::jsonb,</if>
+            <if test="viewing_angle != null">"viewing_angle" = #{viewing_angle}::jsonb,</if>
+            <if test="review_date != null">review_date = #{review_date},</if>
+
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteZtBillboardmodellisthistoryById" parameterType="String">
+        delete from "zt_billboardModelListHistory" where id = #{id}
+    </delete>
+
+    <delete id="deleteZtBillboardmodellisthistoryByIds" parameterType="String">
+        delete from "zt_billboardModelListHistory" where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 9 - 0
onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtConstructionmodelMapper.xml

@@ -129,4 +129,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where projectinformationid = #{projectinformationid}
     </select>
 
+    <select id="NoAssociatedByProjectinfoId" parameterType="com.onemap.sanya.domain.business.ZtConstructionmodel"  resultMap="ZtConstructionmodelResult">
+
+
+            select c.* from zt_constructionmodel c
+            LEFT JOIN "zt_billboardInfoList" b ON b.bjmxid=c.id
+            where c.projectinformationid = #{projectinformationid} and b.bjmxid IS NULL
+
+    </select>
+
 </mapper>

+ 1 - 0
onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtCqBcbzListMapper.xml

@@ -18,6 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <where>  
             <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
         </where>
+        order by "name" asc
     </select>
     
     <select id="selectZtCqBcbzListById" parameterType="String" resultMap="ZtCqBcbzListResult">

+ 42 - 1
onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtProjectinformationMapper.xml

@@ -26,6 +26,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </collection>
     </resultMap>
 
+    <resultMap type="com.onemap.sanya.domain.business.ZtProjectinformation" id="ZtProjectinformationResult2">
+        <result property="id"    column="id"    />
+        <result property="applicant"    column="applicant"    />
+        <result property="projectname"    column="projectname"    />
+        <result property="projectaddress"    column="projectaddress"    />
+        <result property="plotnumber"    column="plotnumber"    />
+        <result property="landarea"    column="landarea"    />
+        <result property="landusenature"    column="landusenature"    />
+        <result property="projectpositioning"    column="projectpositioning"    />
+        <result property="totalprojectinvestment"    column="totalprojectinvestment"    />
+        <result property="fundingsource"    column="fundingsource"    />
+        <result property="landsituation"    column="landsituation"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+        <result property="meetingprogress"    column="meetingprogress"    />
+        <collection  column="{projectinformationid=id}" property="ZtConstructionmodelList"  select="com.onemap.sanya.mapper.ZtConstructionmodelMapper.NoAssociatedByProjectinfoId">
+        </collection>
+    </resultMap>
+
     <sql id="selectZtProjectinformationVo">
         select * from zt_projectinformation
     </sql>
@@ -47,7 +69,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
         </where>
     </select>
-    
+
+    <select id="selectNoAssociatedList" parameterType="com.onemap.sanya.domain.business.ZtProjectinformation" resultMap="ZtProjectinformationResult2">
+        select * from zt_projectinformation
+        <where>
+            <if test="applicant != null  and applicant != ''"> and applicant = #{applicant}</if>
+            <if test="projectname != null  and projectname != ''"> and projectname like concat('%', #{projectname}, '%')</if>
+            <if test="projectaddress != null  and projectaddress != ''"> and projectaddress = #{projectaddress}</if>
+            <if test="plotnumber != null  and plotnumber != ''"> and plotnumber = #{plotnumber}</if>
+            <if test="landarea != null  and landarea != ''"> and landarea = #{landarea}</if>
+            <if test="landusenature != null  and landusenature != ''"> and landusenature = #{landusenature}</if>
+            <if test="projectpositioning != null  and projectpositioning != ''"> and projectpositioning = #{projectpositioning}</if>
+            <if test="totalprojectinvestment != null  and totalprojectinvestment != ''"> and totalprojectinvestment = #{totalprojectinvestment}</if>
+            <if test="fundingsource != null  and fundingsource != ''"> and fundingsource = #{fundingsource}</if>
+            <if test="landsituation != null  and landsituation != ''"> and landsituation = #{landsituation}</if>
+            <if test="meetingprogress != null  and meetingprogress != ''"> and meetingprogress = #{meetingprogress}</if>
+
+        </where>
+    </select>
+
+
     <select id="selectZtProjectinformationById" parameterType="String" resultMap="ZtProjectinformationResult">
         <include refid="selectZtProjectinformationVo"/>
         where id = #{id}

+ 1 - 0
onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtQmBcbzListMapper.xml

@@ -24,6 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="jjzw != null "> and jjzw = #{jjzw}</if>
             <if test="sm != null "> and sm = #{sm}</if>
         </where>
+        order by "name" asc
     </select>
     
     <select id="selectZtQmBcbzListById" parameterType="String" resultMap="ZtQmBcbzListResult">

+ 1 - 0
onemap-modules/onemap-model/src/main/resources/mapper/sanya/ZtZdBcbzListMapper.xml

@@ -29,6 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="azbcf != null "> and azbcf = #{azbcf}</if>
             <if test="bchj != null "> and bchj = #{bchj}</if>
         </where>
+        order by "name" asc
     </select>
     
     <select id="selectZtZdBcbzListById" parameterType="String" resultMap="ZtZdBcbzListResult">

+ 118 - 0
onemap-modules/onemap-model/src/main/resources/template/word/广告牌审查意见.docx

@@ -0,0 +1,118 @@
+                             广告牌审查意见
+ 项目详情
+                                 项目名称
+                                {{projectname}}
+                                 申报日期
+                                 {{checkDate}}
+                                 项目地址
+{{address}}
+                                 设计单位
+{{design}}
+                                    简介
+{{description}}
+                                广告牌总数
+                                  {{ggpSum}}
+                                   已审查
+                                 {{censored}}
+                                   未审查
+                                {{Uncensored}}
+	已通过
+                                 {{PassedSum}}
+                                   未通过
+                                {{UnPassedSum}}
+
+ 广告牌详情
+{{?ztBillboardmodellistDtoList}}
+1.   {{billboardName}}
+基本信息
+广告牌名称
+{{billboardName}}
+广告牌类型
+{{billboardType}}
+广告牌位置
+X:{{x}};Y:{{y}};Z:{{z}}
+审查状态
+{{IsReview}}
+审查时间
+{{review_date}}
+审查结论
+{{ReviewStatus}}
+广告牌截图
+{{?JTList}}{{@img}}{{/JTList}}
+
+广告牌参数
+ 部件名称
+ 参数
+      {{templateCentreObj!=null ? '顶部模型参数' : '模型参数'}}
+ {{?templateTopObj}}
+ {{?scaleLname!=null}}{{scaleLname}}:{{scaleL}}{{/}}
+ {{?xLname!=null}}{{xLname}}:{{xL}}{{/}}
+ {{?yLname!=null}}{{yLname}}:{{yL}}{{/}}
+ {{?zLname!=null}}{{zLname}}:{{zL}}{{/}}
+ {{?rLname!=null}}{{rLname}}:{{rL}}{{/}}
+ {{/templateTopObj}}
+            {{templateCentreObj!=null ? '中部模型参数' : ''}}
+ {{?templateCentreObj}}
+ {{?scaleLname!=null}}{{scaleLname}}:{{scaleL}}{{/}}
+ {{?xLname!=null}}{{xLname}}:{{xL}}{{/}}
+ {{?yLname!=null}}{{yLname}}:{{yL}}{{/}}
+ {{?zLname!=null}}{{zLname}}:{{zL}}{{/}}
+ {{?rLname!=null}}{{rLname}}:{{rL}}{{/}}
+ {{/templateCentreObj}}
+            {{templateBottomObj!=null ? '底部模型参数' : ''}}
+ {{?templateBottomObj}}
+ {{?scaleLname!=null}}{{scaleLname}}:{{scaleL}}{{/}}
+ {{?xLname!=null}}{{xLname}}:{{xL}}{{/}}
+ {{?yLname!=null}}{{yLname}}:{{yL}}{{/}}
+ {{?zLname!=null}}{{zLname}}:{{zL}}{{/}}
+ {{?rLname!=null}}{{rLname}}:{{rL}}{{/}}
+ {{/templateBottomObj}}
+ 
+ {{ztBillboardmodellisthistoryDtoList!=null ? '1.参数调整记录' : ''}}
+ {{?ztBillboardmodellisthistoryDtoList}}
+ 修改时间
+ {{createTimeString}}
+ 部件名称
+ 参数
+      {{templateCentreObj!=null ? '顶部模型参数' : '模型参数'}}
+ {{?templateTopObj}}
+ {{?scaleLname!=null}}{{scaleLname}}:{{scaleL}}{{/}}
+ {{?xLname!=null}}{{xLname}}:{{xL}}{{/}}
+ {{?yLname!=null}}{{yLname}}:{{yL}}{{/}}
+ {{?zLname!=null}}{{zLname}}:{{zL}}{{/}}
+ {{?rLname!=null}}{{rLname}}:{{rL}}{{/}}
+ {{/templateTopObj}}
+            {{templateCentreObj!=null ? '中部模型参数' : ''}}
+ {{?templateCentreObj}}
+ {{?scaleLname!=null}}{{scaleLname}}:{{scaleL}}{{/}}
+ {{?xLname!=null}}{{xLname}}:{{xL}}{{/}}
+ {{?yLname!=null}}{{yLname}}:{{yL}}{{/}}
+ {{?zLname!=null}}{{zLname}}:{{zL}}{{/}}
+ {{?rLname!=null}}{{rLname}}:{{rL}}{{/}}
+ {{/templateCentreObj}}
+            {{templateBottomObj!=null ? '底部模型参数' : ''}}
+ {{?templateBottomObj}}
+ {{?scaleLname!=null}}{{scaleLname}}:{{scaleL}}{{/}}
+ {{?xLname!=null}}{{xLname}}:{{xL}}{{/}}
+ {{?yLname!=null}}{{yLname}}:{{yL}}{{/}}
+ {{?zLname!=null}}{{zLname}}:{{zL}}{{/}}
+ {{?rLname!=null}}{{rLname}}:{{rL}}{{/}}
+ {{/templateBottomObj}}
+ 
+ 
+ {{/ztBillboardmodellisthistoryDtoList}}
+ 
+具体审查内容
+  按《三亚市户外广告和招牌规划导则》规定,对{{billboardName}}进行了审查,具体如下:
+                        表1 广告牌具体审查内容
+                            {{ggpresultList}}序号
+                                   审查项
+                                 审查结果
+                                    [index]
+[ReviewContent]
+                                 [ruleResult]
+审查意见
+{{ReviewComments}}
+
+{{/ztBillboardmodellistDtoList}}
+