Jelajahi Sumber

Merge branch 'server-165' into usky-zyj

james 1 tahun lalu
induk
melakukan
56b2dc3957
33 mengubah file dengan 943 tambahan dan 67 penghapusan
  1. 40 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DemStreetTownController.java
  2. 24 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportIndexResultController.java
  3. 107 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DemStreetTown.java
  4. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DemStreetTownMapper.java
  5. 18 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DemStreetTownService.java
  6. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportIndexResultService.java
  7. 35 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DemStreetTownServiceImpl.java
  8. 177 20
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportIndexResultServiceImpl.java
  9. 34 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ResultStatisticsVO.java
  10. 2 2
      service-fire/service-fire-biz/src/main/resources/bootstrap.yml
  11. 26 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/DemStreetTownMapper.xml
  12. 0 8
      service-iot/service-iot-biz/pom.xml
  13. 12 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseBuildController.java
  14. 50 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseBuildPlaneController.java
  15. 6 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseAlarm.java
  16. 16 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseBuildFacility.java
  17. 5 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseBuildFacilityType.java
  18. 59 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseBuildPlane.java
  19. 2 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/BaseBuildMapper.java
  20. 16 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/BaseBuildPlaneMapper.java
  21. 21 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseBuildPlaneService.java
  22. 8 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseBuildService.java
  23. 16 7
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/websocket/WebSocket.java
  24. 27 16
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java
  25. 50 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseBuildPlaneServiceImpl.java
  26. 68 7
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseBuildServiceImpl.java
  27. 66 3
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseGgpFacilityServiceImpl.java
  28. 1 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/BaseBuildFacilityVO.java
  29. 5 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/BuildFacilityRelateRequestVO.java
  30. 2 2
      service-iot/service-iot-biz/src/main/resources/bootstrap.yml
  31. 2 0
      service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseBuildFacilityMapper.xml
  32. 1 0
      service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseBuildFacilityTypeMapper.xml
  33. 15 0
      service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseBuildPlaneMapper.xml

+ 40 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DemStreetTownController.java

@@ -0,0 +1,40 @@
+package com.usky.fire.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.fire.domain.DemStreetTown;
+import com.usky.fire.service.DemStreetTownService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-17
+ */
+@RestController
+@RequestMapping("/demStreetTown")
+public class DemStreetTownController {
+    @Autowired
+    private DemStreetTownService demStreetTownService;
+    /**
+     * 列表
+     * @param streetTown
+     * @return
+     */
+    @GetMapping("streetDataList")
+    ApiResult<List<DemStreetTown>> streetDataList(@RequestParam(value = "streetTown",required = false) String streetTown){
+        return ApiResult.success(demStreetTownService.streetDataList(streetTown));
+    }
+}
+

+ 24 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportIndexResultController.java

@@ -9,6 +9,7 @@ import com.usky.fire.service.ReportIndexResultService;
 import com.usky.fire.service.vo.CompanyDataVo;
 import com.usky.fire.service.vo.IndexResultVo;
 import com.usky.fire.service.vo.ReportResultVO;
+import com.usky.fire.service.vo.ResultStatisticsVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -61,5 +62,28 @@ public class ReportIndexResultController {
     public ApiResult<List<Object>> reportContrast(@RequestBody ReportResultVO reportResultVO) {
         return ApiResult.success(reportIndexResultService.reportContrast(reportResultVO));
     }
+
+    /**
+     * 企业自主管理大屏-企业自主情况查询
+     *
+     * @param id   对象ID
+     * @param createDate   生成日期
+     * @return
+     */
+    @GetMapping("/resultStatistic")
+    public ApiResult<List<ResultStatisticsVO>> resultStatistic(@RequestParam(value = "id", required = false) Integer id,
+                                                               @RequestParam(value = "createDate", required = false) String createDate) {
+        return ApiResult.success(reportIndexResultService.resultStatistic(id,createDate));
+    }
+
+    /**
+     * 企业自主管理大屏-四色分级撒点
+     * @param riskGrade   风险等级
+     * @return
+     */
+    @GetMapping("/riskGradeScatter")
+    public ApiResult<List<Object>> riskGradeScatter(@RequestParam(value = "riskGrade") Integer riskGrade) {
+        return ApiResult.success(reportIndexResultService.riskGradeScatter(riskGrade));
+    }
 }
 

+ 107 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DemStreetTown.java

@@ -0,0 +1,107 @@
+package com.usky.fire.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DemStreetTown implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 行政区
+     */
+    private String district;
+
+    /**
+     * 乡镇
+     */
+    private String streetTown;
+
+    /**
+     * 镇类别
+     */
+    private String townType;
+
+    /**
+     * 建成区面积(km²)
+     */
+    private Double builtUpArea;
+
+    /**
+     * 常住人口(万人)
+     */
+    private Double permanentPopulation;
+
+    /**
+     * 居住人口(万人)
+     */
+    private Double residentPopulation;
+
+    /**
+     * 易燃易爆危险品生产、经营单位数量
+     */
+    private Integer dangerousGood;
+
+    /**
+     * 劳动密集型企业数量
+     */
+    private Integer labourIntensive;
+
+    /**
+     * 上一年度税收(亿元)
+     */
+    private Double lastYearTax;
+
+    /**
+     * 是否已建立国家综合消防救援队(1 是,0 否)
+     */
+    private Integer rescueTeam;
+
+    /**
+     * “内部”的国家综合性消防救援队名称
+     */
+    private String internalRescueTeam;
+
+    /**
+     * “外部”到达边缘最近的国家队名称
+     */
+    private String externalRescueTeam;
+
+    /**
+     * 到达边缘的行车距离或时间
+     */
+    private String distanceTime;
+
+    /**
+     * 是否已建设乡镇政府专职消防队
+     */
+    private Integer dedicatedFireBrigade;
+
+    /**
+     * 乡镇政府专消防队名称
+     */
+    private String specializedFireBrigade;
+
+    /**
+     * 是否接入可视化调度平台
+     */
+    private Integer visualizedPlatform;
+
+
+}

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DemStreetTownMapper.java

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.DemStreetTown;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-17
+ */
+public interface DemStreetTownMapper extends CrudMapper<DemStreetTown> {
+
+}

+ 18 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DemStreetTownService.java

@@ -0,0 +1,18 @@
+package com.usky.fire.service;
+
+import com.usky.fire.domain.DemStreetTown;
+import com.usky.common.mybatis.core.CrudService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-17
+ */
+public interface DemStreetTownService extends CrudService<DemStreetTown> {
+    List<DemStreetTown> streetDataList(String streetTown);
+}

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportIndexResultService.java

@@ -5,6 +5,7 @@ import com.usky.common.mybatis.core.CrudService;
 import com.usky.fire.service.vo.CompanyDataVo;
 import com.usky.fire.service.vo.IndexResultVo;
 import com.usky.fire.service.vo.ReportResultVO;
+import com.usky.fire.service.vo.ResultStatisticsVO;
 
 import java.util.List;
 
@@ -30,6 +31,21 @@ public interface ReportIndexResultService extends CrudService<ReportIndexResult>
      */
     List<IndexResultVo> indexResultSelect(Integer id, String createDate);
 
+    /**
+     * 企业自主管理大屏-企业自主情况查询
+     *
+     * @param id   对象ID
+     * @param createDate   生成日期
+     */
+    List<ResultStatisticsVO> resultStatistic(Integer id, String createDate);
+
+    /**
+     * 企业自主管理大屏-企业自主情况查询
+     *
+     * @param riskGrade   风险等级
+     */
+    List<Object> riskGradeScatter(Integer riskGrade);
+
     /**
      * 报告对比
      *

+ 35 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DemStreetTownServiceImpl.java

@@ -0,0 +1,35 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.DemStreetTown;
+import com.usky.fire.mapper.DemStreetTownMapper;
+import com.usky.fire.service.DemStreetTownService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-17
+ */
+@Service
+public class DemStreetTownServiceImpl extends AbstractCrudService<DemStreetTownMapper, DemStreetTown> implements DemStreetTownService {
+    @Override
+    public List<DemStreetTown> streetDataList(String streetTown){
+        LambdaQueryWrapper<DemStreetTown> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper
+                .eq(StringUtils.isNotBlank(streetTown),DemStreetTown::getStreetTown,streetTown);
+        List<DemStreetTown> list = this.list(queryWrapper);
+        return list;
+    }
+}

+ 177 - 20
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportIndexResultServiceImpl.java

@@ -1,9 +1,11 @@
 package com.usky.fire.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.itextpdf.text.*;
 import com.itextpdf.text.pdf.BaseFont;
 import com.itextpdf.text.pdf.PdfPCell;
@@ -15,6 +17,7 @@ import com.usky.fire.mapper.ReportIndexResultMapper;
 import com.usky.fire.service.*;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.fire.service.config.pdf.MyHeaderFooter;
+import com.usky.fire.service.util.OnlineMethod;
 import com.usky.fire.service.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -24,6 +27,7 @@ import java.io.FileOutputStream;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.List;
@@ -68,34 +72,33 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
     private DemFireStatisticsService demFireStatisticsService;
     @Autowired
     private ReportResultService reportResultService;
+    @Autowired
+    private BaseCompanyAttach1Service baseCompanyAttach1Service;
 
     @Override
     public void reportIndexResult() {
         try {
-            List<BaseCompany> baseCompanies = baseCompanyService.companyIdByTypeList("4");
+            List<BaseCompany> baseCompanies = baseCompanyService.companyIdByTypeList("1");
             if (CollectionUtils.isNotEmpty(baseCompanies)) {
                 Calendar now = Calendar.getInstance();
                 LocalDate date=LocalDate.now();
                 LocalDateTime dateTime=LocalDateTime.now();
                 for (int i = 0; i < baseCompanies.size(); i++) {
                     // 1.新建document对象
-                    Document document = new Document(PageSize.A4);// 建立一个Document对象
-
-// 2.建立一个书写器(Writer)与document对象关联
-//                    File file =
-//                            new File("/var/www/usky-file/"+now.get(Calendar.YEAR)+"0"+now.get(Calendar.MONTH+1)+"/"+now.get(Calendar.YEAR)+now.get(Calendar.MONTH)+baseCompanies.get(i).getCompanyId()+".pdf");
-                    File file = new File("D:\\"+now.get(Calendar.YEAR)+now.get(Calendar.MONTH)+baseCompanies.get(i).getCompanyId()+".pdf");
-                    file.createNewFile();
-                    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
-//                    writer.setPageEvent(new Watermark("hello word"));// 水印
-                    writer.setPageEvent(new MyHeaderFooter());// 页眉/页脚
-                    // 3.打开文档
-                    document.open();
-                    document.addTitle("fire report");// 标题
-                    document.addAuthor("mhzd");// 作者
-//                    document.addSubject("Subject@iText pdf sample");// 主题
-//                    document.addKeywords("Keywords@iTextpdf");// 关键字
-//                    document.addCreator("Creator@umiz`s");// 创建者
+//                    Document document = new Document(PageSize.A4);// 建立一个Document对象
+//
+//// 2.建立一个书写器(Writer)与document对象关联
+////                    File file =
+////                            new File("/var/www/usky-file/"+now.get(Calendar.YEAR)+"0"+now.get(Calendar.MONTH+1)+"/"+now.get(Calendar.YEAR)+now.get(Calendar.MONTH)+baseCompanies.get(i).getCompanyId()+".pdf");
+//                    File file = new File("D:\\"+now.get(Calendar.YEAR)+now.get(Calendar.MONTH)+baseCompanies.get(i).getCompanyId()+".pdf");
+//                    file.createNewFile();
+//                    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
+////                    writer.setPageEvent(new Watermark("hello word"));// 水印
+//                    writer.setPageEvent(new MyHeaderFooter());// 页眉/页脚
+//                    // 3.打开文档
+//                    document.open();
+//                    document.addTitle("fire report");// 标题
+//                    document.addAuthor("mhzd");// 作者
                     DemReportDataVo demReportDataVo = new DemReportDataVo();
                     demReportDataVo.setCompanyName(baseCompanies.get(i).getCompanyName());
                     demReportDataVo.setLastMonthEndTime(date.toString());
@@ -1007,8 +1010,8 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
                             demReportDataVo.setOverallRating("高风险");
                         }
                     }
-                    this.generatePDF(document,demReportDataVo);
-                    document.close();
+//                    this.generatePDF(document,demReportDataVo);
+//                    document.close();
                     reportResultService.save(reportResult);
                 }
             }
@@ -1703,4 +1706,158 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
         list.add(map1);
         return list;
     }
+
+    @Override
+    public List<ResultStatisticsVO> resultStatistic(Integer id, String createDate) {
+        List<ResultStatisticsVO> list = new ArrayList<>();
+        ResultStatisticsVO resultStatisticsVO = new ResultStatisticsVO();
+        LocalDate currentDate = LocalDate.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+        String formattedDate = currentDate.format(formatter);
+        resultStatisticsVO.setHighRisk(getReportCountByScoreRange(0, 60, formattedDate).size());
+        resultStatisticsVO.setMildHighRisk(getReportCountByScoreRange(60, 70, formattedDate).size());
+        resultStatisticsVO.setNormalRisk(getReportCountByScoreRange(70, 80, formattedDate).size());
+        resultStatisticsVO.setLowRisk(getReportCountByScoreRange(80, 100, formattedDate).size());
+        list.add(resultStatisticsVO);
+        return list;
+    }
+
+    private List<ReportResult> getReportCountByScoreRange(int startScore, int endScore, String createDate) {
+        LambdaQueryWrapper<ReportResult> wrapper = new LambdaQueryWrapper<>();
+        wrapper.ge(ReportResult::getOverallScore, startScore).le(ReportResult::getOverallScore, endScore)
+                .like(ReportResult::getCreateDate, createDate);
+        return reportResultService.list(wrapper);
+    }
+
+    @Override
+    public List<Object> riskGradeScatter(Integer riskGrade) {
+        List<Object> list10 = new ArrayList<>();
+        String streetTown = "";
+        LocalDate currentDate = LocalDate.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+        String formattedDate = currentDate.format(formatter);
+        List<ReportResult> highRiskList = new ArrayList<>();
+        if (riskGrade.equals(1)) {
+            highRiskList = getReportCountByScoreRange(0, 60, formattedDate);
+        }else if (riskGrade.equals(2)){
+            highRiskList = getReportCountByScoreRange(60, 70, formattedDate);
+        }else if (riskGrade.equals(3)){
+            highRiskList = getReportCountByScoreRange(70, 80, formattedDate);
+        }else if (riskGrade.equals(4)){
+            highRiskList = getReportCountByScoreRange(80, 100, formattedDate);
+        }
+        if (CollectionUtils.isNotEmpty(highRiskList)) {
+            List<Integer> idList = new ArrayList<>();
+            for (int a = 0; a < highRiskList.size(); a++) {
+                idList.add(highRiskList.get(a).getObjectId());
+            }
+            List<String> streetTownList = new ArrayList<>();
+            streetTownList.add("华漕镇");
+            streetTownList.add("新虹街道");
+            streetTownList.add("七宝镇");
+            streetTownList.add("虹桥镇");
+            streetTownList.add("古美路街道");
+            streetTownList.add("莘庄镇");
+            streetTownList.add("梅陇镇");
+            streetTownList.add("颛桥镇");
+            streetTownList.add("马桥镇");
+            streetTownList.add("江川路街道");
+            streetTownList.add("吴泾镇");
+            streetTownList.add("浦锦街道");
+            streetTownList.add("浦江镇");
+            List<Object> list = new ArrayList<>();
+            IPage<BaseCompany> page = new Page<>(1, 3000);
+            LambdaQueryWrapper<BaseCompany> queryWrapper = Wrappers.lambdaQuery();
+            queryWrapper.select(BaseCompany::getId, BaseCompany::getCompanyId, BaseCompany::getCompanyName,
+                    BaseCompany::getCompanyType, BaseCompany::getLinkPhone, BaseCompany::getAddress, BaseCompany::getStreetTown)
+                    .eq(BaseCompany::getEnable, 0)
+                    .eq(BaseCompany::getCompanyType, 1)
+                    .in(BaseCompany::getId, idList);
+            page = baseCompanyService.page(page, queryWrapper);
+            List<BaseCompany> list1 = page.getRecords();
+            if (CollectionUtils.isNotEmpty(list1)) {
+                List<String> companyIdList = new ArrayList<>();
+                for (int i = 0; i < list1.size(); i++) {
+                    companyIdList.add(list1.get(i).getCompanyId());
+                }
+                LambdaQueryWrapper<BaseCompanyAttach1> queryWrapper1 = Wrappers.lambdaQuery();
+                queryWrapper1.select(BaseCompanyAttach1::getId, BaseCompanyAttach1::getCompanyId, BaseCompanyAttach1::getLongitude,
+                        BaseCompanyAttach1::getLatitude)
+                        .in(BaseCompanyAttach1::getCompanyId, companyIdList);
+                List<BaseCompanyAttach1> list2 = baseCompanyAttach1Service.list(queryWrapper1);
+                for (int i = 0; i < list1.size(); i++) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("id", list1.get(i).getId());
+                    map.put("companyName", list1.get(i).getCompanyName());
+                    String companyTypeName = null;
+                    if (StringUtils.isNotBlank(list1.get(i).getCompanyType())) {
+                        if (list1.get(i).getCompanyType().equals("1")) {
+                            companyTypeName = "重点单位";
+                        } else if (list1.get(i).getCompanyType().equals("2")) {
+                            companyTypeName = "一般单位";
+                        } else if (list1.get(i).getCompanyType().equals("3")) {
+                            companyTypeName = "九小场所";
+                        } else if (list1.get(i).getCompanyType().equals("9")) {
+                            companyTypeName = "其他单位";
+                        }
+                    }
+
+                    map.put("companyTypeName", companyTypeName);
+                    map.put("companyId", list1.get(i).getCompanyId());
+                    map.put("linkPhone", list1.get(i).getLinkPhone());
+                    map.put("address", list1.get(i).getAddress());
+                    map.put("longitude", null);
+                    map.put("latitude", null);
+                    map.put("streetTown", null);
+                    for (int j = 0; j < list2.size(); j++) {
+                        if (list1.get(i).getCompanyId().equals(list2.get(j).getCompanyId())) {
+                            String longitude = null;
+                            String latitude = null;
+                            if ((StringUtils.isBlank(list2.get(j).getLongitude()) && StringUtils.isNotBlank(list1.get(i).getAddress()))) {
+                                List<LocateInfo> lonLat = OnlineMethod.getLonLat(list1.get(i).getAddress());
+                                if (CollectionUtils.isNotEmpty(lonLat)) {
+                                    if (StringUtils.isBlank(list2.get(j).getLongitude()) && StringUtils.isBlank(list2.get(j).getLatitude())) {
+                                        longitude = "" + lonLat.get(0).getLongitude();
+                                        latitude = "" + lonLat.get(0).getLatitude();
+                                    } else {
+                                        longitude = list2.get(j).getLongitude();
+                                        latitude = list2.get(j).getLatitude();
+                                    }
+                                    String location = longitude + "," + latitude;
+                                    String streetTown2 = OnlineMethod.getStreetTown(location);
+                                    if (StringUtils.isBlank(list1.get(i).getStreetTown())) {
+                                        streetTown = streetTown2;
+                                    } else {
+                                        streetTown = list1.get(i).getStreetTown();
+                                    }
+                                    baseCompanyService.updateCompany1(list1.get(i).getId(), list2.get(j).getId(), longitude, latitude, streetTown);
+                                }
+                            } else {
+                                longitude = list2.get(j).getLongitude();
+                                latitude = list2.get(j).getLatitude();
+                                streetTown = list1.get(i).getStreetTown();
+                            }
+                            map.put("streetTown", streetTown);
+                            map.put("longitude", longitude);
+                            map.put("latitude", latitude);
+                        }
+                    }
+                    if (map.get("longitude") != null && map.get("latitude") != null && map.get("streetTown") != null) {
+                        String streetTown1 = map.get("streetTown").toString();
+                        if (streetTownList.contains(streetTown1)) {
+                            if (StringUtils.isNotBlank(streetTown)) {
+                                if (streetTown.equals(map.get("streetTown").toString())) {
+                                    list10.add(map);
+                                }
+                            } else {
+                                list10.add(map);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return list10;
+    }
+
 }

+ 34 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ResultStatisticsVO.java

@@ -0,0 +1,34 @@
+package com.usky.fire.service.vo;
+
+import lombok.Data;
+
+/**
+ * @author han
+ * @date 2023/8/9 17:23
+ * 企业自主情况统计
+ */
+@Data
+public class ResultStatisticsVO {
+
+    /**
+     * 高风险数
+     */
+    private Integer highRisk;
+
+    /**
+     * 较高风险数
+     */
+    private Integer mildHighRisk;
+
+    /**
+     * 一般风险数
+     */
+    private Integer normalRisk;
+
+    /**
+     * 低风险数
+     */
+    private Integer lowRisk;
+
+
+}

+ 2 - 2
service-fire/service-fire-biz/src/main/resources/bootstrap.yml

@@ -14,10 +14,10 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 172.16.120.165:8848
+        server-addr: usky-cloud-nacos:8848
       config:
         # 配置中心地址
-        server-addr: 172.16.120.165:8848
+        server-addr: usky-cloud-nacos:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置

+ 26 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/DemStreetTownMapper.xml

@@ -0,0 +1,26 @@
+<?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.usky.fire.mapper.DemStreetTownMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.DemStreetTown">
+        <id column="id" property="id" />
+        <result column="district" property="district" />
+        <result column="street_town" property="streetTown" />
+        <result column="town_type" property="townType" />
+        <result column="built_up_area" property="builtUpArea" />
+        <result column="permanent_population" property="permanentPopulation" />
+        <result column="resident_population" property="residentPopulation" />
+        <result column="dangerous_good" property="dangerousGood" />
+        <result column="labour_intensive" property="labourIntensive" />
+        <result column="last_year_tax" property="lastYearTax" />
+        <result column="rescue_team" property="rescueTeam" />
+        <result column="internal_rescue_team" property="internalRescueTeam" />
+        <result column="external_rescue_team" property="externalRescueTeam" />
+        <result column="distance_ time" property="distance time" />
+        <result column="dedicated_fire_brigade" property="dedicatedFireBrigade" />
+        <result column="specialized_fire_brigade" property="specializedFireBrigade" />
+        <result column="visualized_platform" property="visualizedPlatform" />
+    </resultMap>
+
+</mapper>

+ 0 - 8
service-iot/service-iot-biz/pom.xml

@@ -42,19 +42,11 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-integration</artifactId>
-            <version>2.5.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.integration</groupId>
-            <artifactId>spring-integration-stream</artifactId>
-            <version>5.5.5</version>
         </dependency>
 
         <dependency>
             <groupId>org.springframework.integration</groupId>
             <artifactId>spring-integration-mqtt</artifactId>
-            <version>5.5.5</version>
         </dependency>
         <!--websocket依赖-->
         <dependency>

+ 12 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseBuildController.java

@@ -5,6 +5,7 @@ import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.iot.domain.BaseBuild;
 import com.usky.iot.domain.BaseBuildFacility;
+import com.usky.iot.domain.BaseBuildFacilityType;
 import com.usky.iot.domain.BaseGgpFacility;
 import com.usky.iot.service.BaseBuildService;
 import com.usky.iot.service.vo.*;
@@ -113,9 +114,19 @@ public class BaseBuildController {
     @GetMapping("typeFacilityInfo")
     public ApiResult<List<BaseBuildFacility>> typeFacilityInfo(@RequestParam(value = "id") Integer id,
                                                                @RequestParam(value = "floor") String floor,
-                                                               @RequestParam(value = "typeCode") String typeCode) {
+                                                               @RequestParam(value = "typeCode",required = false) String typeCode) {
         return ApiResult.success(baseBuildService.typeFacilityInfo(id,floor,typeCode));
     }
+
+    /**
+     * 建筑关联类型查询
+     * @param id  主键ID
+     * @return
+     */
+    @GetMapping("buildTypeInfo")
+    public ApiResult<List<BaseBuildFacilityType>> buildTypeInfo(@RequestParam(value = "id") Integer id) {
+        return ApiResult.success(baseBuildService.buildTypeInfo(id));
+    }
 }
 
 

+ 50 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseBuildPlaneController.java

@@ -0,0 +1,50 @@
+package com.usky.iot.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.iot.domain.BaseBuild;
+import com.usky.iot.domain.BaseBuildPlane;
+import com.usky.iot.service.BaseBuildPlaneService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 建筑楼层平面图 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-17
+ */
+@RestController
+@RequestMapping("/baseBuildPlane")
+public class BaseBuildPlaneController {
+    @Autowired
+    private BaseBuildPlaneService baseBuildPlaneService;
+
+    /**
+     * 新增
+     * @param baseBuildPlane
+     * @return
+     */
+    @PostMapping
+    ApiResult<Void> add(@RequestBody BaseBuildPlane baseBuildPlane){
+        baseBuildPlaneService.add(baseBuildPlane);
+        return ApiResult.success();
+    }
+
+    /**
+     * 列表
+     * @param buildId
+     * @param floor
+     * @return
+     */
+    @GetMapping("dataList")
+    ApiResult<List<BaseBuildPlane>> dataList(@RequestParam(value = "buildId") Integer buildId,
+                                             @RequestParam(value = "floor",required = false) String floor){
+        return ApiResult.success(baseBuildPlaneService.dataList(buildId,floor));
+    }
+}
+

+ 6 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseAlarm.java

@@ -156,4 +156,10 @@ public class BaseAlarm implements Serializable {
      */
     @TableField(exist = false)
     private Integer facilityId;
+
+    /**
+     * 转换时间
+     */
+    @TableField(exist = false)
+    private String alarmTime1;
 }

+ 16 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseBuildFacility.java

@@ -95,6 +95,16 @@ public class BaseBuildFacility implements Serializable {
      */
     private String contactPhone;
 
+    /**
+     * 平面X轴坐标
+     */
+    private String planeX;
+
+    /**
+     * 平面Y轴坐标
+     */
+    private String planeY;
+
     /**
      * X轴坐标
      */
@@ -151,4 +161,10 @@ public class BaseBuildFacility implements Serializable {
      * 建筑设施备注
      */
     private String facilityDesc;
+
+    /**
+     * 模型链接
+     */
+    @TableField(exist = false)
+    private String modelLink;
 }

+ 5 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseBuildFacilityType.java

@@ -57,6 +57,11 @@ public class BaseBuildFacilityType implements Serializable {
      */
     private String dataField;
 
+    /**
+     * 模型链接
+     */
+    private String modelLink;
+
     /**
      * 创建人
      */

+ 59 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseBuildPlane.java

@@ -0,0 +1,59 @@
+package com.usky.iot.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 建筑楼层平面图
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BaseBuildPlane implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 建筑ID
+     */
+    private Integer buildId;
+
+    /**
+     * 所属楼层
+     */
+    private String floor;
+
+    /**
+     * 平面图路径
+     */
+    private String planeViewUrl;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+
+}

+ 2 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/BaseBuildMapper.java

@@ -2,6 +2,7 @@ package com.usky.iot.mapper;
 
 import com.usky.iot.domain.BaseBuild;
 import com.usky.common.mybatis.core.CrudMapper;
+import org.springframework.stereotype.Repository;
 
 /**
  * <p>
@@ -11,6 +12,7 @@ import com.usky.common.mybatis.core.CrudMapper;
  * @author han
  * @since 2023-06-07
  */
+@Repository
 public interface BaseBuildMapper extends CrudMapper<BaseBuild> {
 
 }

+ 16 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/BaseBuildPlaneMapper.java

@@ -0,0 +1,16 @@
+package com.usky.iot.mapper;
+
+import com.usky.iot.domain.BaseBuildPlane;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 建筑楼层平面图 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-17
+ */
+public interface BaseBuildPlaneMapper extends CrudMapper<BaseBuildPlane> {
+
+}

+ 21 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseBuildPlaneService.java

@@ -0,0 +1,21 @@
+package com.usky.iot.service;
+
+import com.usky.iot.domain.BaseBuild;
+import com.usky.iot.domain.BaseBuildPlane;
+import com.usky.common.mybatis.core.CrudService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 建筑楼层平面图 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-17
+ */
+public interface BaseBuildPlaneService extends CrudService<BaseBuildPlane> {
+    void add(BaseBuildPlane baseBuildPlane);
+
+    List<BaseBuildPlane> dataList(Integer buildId,String floor);
+}

+ 8 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseBuildService.java

@@ -4,6 +4,7 @@ import com.usky.common.core.bean.CommonPage;
 import com.usky.iot.domain.BaseBuild;
 import com.usky.common.mybatis.core.CrudService;
 import com.usky.iot.domain.BaseBuildFacility;
+import com.usky.iot.domain.BaseBuildFacilityType;
 import com.usky.iot.service.vo.BaseBuildFacilityVO;
 import com.usky.iot.service.vo.BuildFacilityRelateRequestVO;
 import com.usky.iot.service.vo.BuildFacilityRelateResponeVO;
@@ -37,7 +38,7 @@ public interface BaseBuildService extends CrudService<BaseBuild> {
     /**
      * 建筑设施关联查询
      *
-     * @param id  主键ID
+     * @param baseBuildFacilityVO  主键ID
      */
     List<Object> buildFacilityInfo(BaseBuildFacilityVO baseBuildFacilityVO);
 
@@ -50,5 +51,11 @@ public interface BaseBuildService extends CrudService<BaseBuild> {
      */
     List<BaseBuildFacility> typeFacilityInfo(Integer id, String floor, String typeCode);
 
+    /**
+     * 建筑关联类型查询
+     * @param id  主键ID
+     */
+    List<BaseBuildFacilityType> buildTypeInfo(Integer id);
+
 //    boolean checkNameUnique(BaseBuild baseBuild);
 }

+ 16 - 7
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/websocket/WebSocket.java

@@ -10,6 +10,8 @@ import javax.websocket.Session;
 import javax.websocket.server.PathParam;
 import javax.websocket.server.ServerEndpoint;
 import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 @ServerEndpoint(value = "/websocket/{userId}")
@@ -21,13 +23,20 @@ public class WebSocket {
 
     //新增一个方法用于主动向客户端发送消息
     public void sendMessage(Object message, String userId) {
-        WebSocket webSocket = webSocketMap.get(userId);
-        if (webSocket != null) {
-            try {
-                webSocket.session.getBasicRemote().sendText(JSONUtil.toJsonStr(message));
-                System.out.println("【websocket消息】发送消息成功,用户=" + userId + ",消息内容" + message.toString());
-            } catch (IOException e) {
-                e.printStackTrace();
+        Iterator<Map.Entry<String, WebSocket>> iterator = webSocketMap.entrySet().iterator();
+        while (iterator.hasNext()) {
+            Map.Entry<String, WebSocket> entry = iterator.next();
+            int index = entry.getKey().indexOf(",");
+            String result = entry.getKey().substring(0, index);
+            if (result.equals(userId)){
+                if (entry.getValue() != null) {
+                    try {
+                        entry.getValue().session.getBasicRemote().sendText(JSONUtil.toJsonStr(message));
+                        System.out.println("【websocket消息】发送消息成功,用户=" + userId + ",消息内容" + message.toString());
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
             }
         }
     }

+ 27 - 16
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java

@@ -295,38 +295,49 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
     @Override
     public boolean add(BaseAlarm baseAlarm) {
         baseAlarm.setHandleStatus(0);
-        if (StringUtils.isNotBlank(baseAlarm.getProductCode()) && StringUtils.isNotBlank(baseAlarm.getDeviceId())){
+        if (StringUtils.isNotBlank(baseAlarm.getProductCode()) && StringUtils.isNotBlank(baseAlarm.getDeviceId()) && StringUtils.isNotBlank(baseAlarm.getAlarmType())){
             LambdaQueryWrapper<DmpProductInfo> lambdaQuery = Wrappers.lambdaQuery();
-            lambdaQuery.eq(StringUtils.isNotBlank(baseAlarm.getProductCode()),DmpProductInfo::getProductCode,baseAlarm.getProductCode())
+            lambdaQuery.eq(DmpProductInfo::getProductCode,baseAlarm.getProductCode())
                     .eq(DmpProductInfo::getDeleteFlag,0);
             List<DmpProductInfo> records = dmpProductInfoService.list(lambdaQuery);
             LambdaQueryWrapper<BaseFacilityDevice> lambdaQuery1 = Wrappers.lambdaQuery();
-            lambdaQuery1.eq(StringUtils.isNotBlank(baseAlarm.getDeviceId()),BaseFacilityDevice::getDeviceId,
-                    baseAlarm.getDeviceId());
+            lambdaQuery1.eq(BaseFacilityDevice::getDeviceId,baseAlarm.getDeviceId());
             List<BaseFacilityDevice> records1 = baseFacilityDeviceService.list(lambdaQuery1);
-            if(records.size()>0){
+            LambdaQueryWrapper<DmpDeviceInfo> lambdaQuery2 = Wrappers.lambdaQuery();
+            lambdaQuery2.eq(DmpDeviceInfo::getDeviceId,baseAlarm.getDeviceId())
+                    .eq(DmpDeviceInfo::getProductCode,baseAlarm.getProductCode())
+                    .eq(DmpDeviceInfo::getServiceStatus,2)
+                    .eq(DmpDeviceInfo::getDeleteFlag,0);
+            List<DmpDeviceInfo> records2 = dmpDeviceInfoService.list(lambdaQuery2);
+            BaseAlarmType baseAlarmType = baseMapper.getAlarmTypeOne(baseAlarm.getAlarmType());
+            if(records.size()>0 && baseAlarmType !=null && records2.size()>0){
                 baseAlarm.setTenantId(records.get(0).getTenantId());
-                if (StringUtils.isNotBlank(baseAlarm.getHandleBy()) || StringUtils.isNotBlank(baseAlarm.getHandlePhone())){
+                if (StringUtils.isNotBlank(baseAlarm.getHandleBy()) || StringUtils.isNotBlank(baseAlarm.getHandlePhone())) {
                     baseAlarm.setHandleStatus(1);
                     LambdaQueryWrapper<BaseAlarm> queryWrapper = Wrappers.lambdaQuery();
-                    queryWrapper.eq(BaseAlarm::getDeviceId,baseAlarm.getDeviceId())
-                            .eq(BaseAlarm::getAlarmType,baseAlarm.getAlarmType())
-                            .eq(BaseAlarm::getAlarmAddress,baseAlarm.getAlarmAddress())
-                            .eq(BaseAlarm::getAlarmGrade,baseAlarm.getAlarmGrade());
-                    return this.update(baseAlarm,queryWrapper);
-                }else {
+                    queryWrapper.eq(BaseAlarm::getDeviceId, baseAlarm.getDeviceId())
+                            .eq(BaseAlarm::getAlarmType, baseAlarm.getAlarmType())
+                            .eq(BaseAlarm::getAlarmAddress, baseAlarm.getAlarmAddress())
+                            .eq(BaseAlarm::getAlarmGrade, baseAlarm.getAlarmGrade());
+                    return this.update(baseAlarm, queryWrapper);
+                } else {
                     boolean saveResult = this.save(baseAlarm);
-                    if(records1.size()>0){
+                    if (records1.size() > 0) {
                         baseAlarm.setFacilityId(records1.get(0).getFacilityId());
                     }
-                    webSocket.sendMessage(baseAlarm,records.get(0).getTenantId().toString());
+                    baseAlarm.setDeviceName(records2.get(0).getDeviceName());
+                    baseAlarm.setTypeImg(baseAlarmType.getTypeImg());
+                    baseAlarm.setAlarmType(baseAlarmType.getTypeName());
+                    baseAlarm.setAlarmTime1(baseAlarm.getAlarmTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd " +
+                            "HH:mm:ss")));
+                    webSocket.sendMessage(baseAlarm, records.get(0).getTenantId().toString());
                     return saveResult;
                 }
             }else {
-                throw new BusinessException("告警数据投递失败,产品编码有误");
+                throw new BusinessException("告警数据投递失败,请检查产品编码、设备编号、告警类型,是否有误;设备是否激活");
             }
         }else {
-            throw new BusinessException("告警数据投递失败,产品编码或设备编号不能为空");
+            throw new BusinessException("告警数据投递失败,请检查产品编码、设备编号、告警类型,不能为空");
         }
     }
 

+ 50 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseBuildPlaneServiceImpl.java

@@ -0,0 +1,50 @@
+package com.usky.iot.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.iot.domain.BaseBuild;
+import com.usky.iot.domain.BaseBuildFacilityRelate;
+import com.usky.iot.domain.BaseBuildPlane;
+import com.usky.iot.mapper.BaseBuildPlaneMapper;
+import com.usky.iot.service.BaseBuildPlaneService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.Calendar;
+import java.util.List;
+
+/**
+ * <p>
+ * 建筑楼层平面图 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-17
+ */
+@Service
+public class BaseBuildPlaneServiceImpl extends AbstractCrudService<BaseBuildPlaneMapper, BaseBuildPlane> implements BaseBuildPlaneService {
+
+    @Override
+    public void add(BaseBuildPlane baseBuildPlane){
+        baseBuildPlane.setCreateBy(SecurityUtils.getUsername());
+        baseBuildPlane.setCreateTime(LocalDateTime.now());
+        this.save(baseBuildPlane);
+
+    }
+
+    @Override
+    public List<BaseBuildPlane> dataList(Integer buildId,String floor){
+        LambdaQueryWrapper<BaseBuildPlane> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper
+                .eq(!ObjectUtils.isEmpty(buildId),BaseBuildPlane::getBuildId,buildId)
+                .eq(StringUtils.isNotBlank(floor),BaseBuildPlane::getFloor,floor);
+        List<BaseBuildPlane> list = this.list(queryWrapper);
+        return list;
+    }
+}

+ 68 - 7
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseBuildServiceImpl.java

@@ -130,6 +130,8 @@ public class BaseBuildServiceImpl extends AbstractCrudService<BaseBuildMapper, B
         LambdaQueryWrapper<BaseGgpFacility> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.like(StringUtils.isNotBlank(requestVO.getFacilityNum()),BaseGgpFacility::getFacilityNum,requestVO.getFacilityNum())
                 .eq(StringUtils.isNotBlank(requestVO.getFacilityType()),BaseGgpFacility::getFacilityType,requestVO.getFacilityType())
+                .like(StringUtils.isNotBlank(requestVO.getFacilityName()),BaseGgpFacility::getFacilityType,
+                        requestVO.getFacilityName())
                 .eq(BaseGgpFacility::getTenantId,SecurityUtils.getTenantId());
         page = baseGgpFacilityService.page(page,queryWrapper);
         if(CollectionUtils.isNotEmpty(page.getRecords())){
@@ -151,10 +153,11 @@ public class BaseBuildServiceImpl extends AbstractCrudService<BaseBuildMapper, B
 
                 if(page.getRecords().get(i).getId().equals(buildFacilityId)){
                     responeVO.setStatus(1);
+                    list.add(0, responeVO);
                 }else{
                     responeVO.setStatus(0);
+                    list.add(responeVO);
                 }
-                list.add(responeVO);
             }
         }
         return new CommonPage<>(list,page.getTotal(),page.getSize(),page.getCurrent());
@@ -215,6 +218,8 @@ public class BaseBuildServiceImpl extends AbstractCrudService<BaseBuildMapper, B
                     .in(CollectionUtils.isNotEmpty(baseBuildFacilityVO.getFacilityType()),"facility_type",
                             baseBuildFacilityVO.getFacilityType())
                     .eq("delete_flag",0)
+                    .eq(StringUtils.isNotBlank(baseBuildFacilityVO.getFloor()),"floor",
+                            baseBuildFacilityVO.getFloor())
                     .groupBy("floor","facility_type");
             List<Map<String, Object>> baseBuildFacilityList1 = baseBuildFacilityService.listMaps(query2);
             QueryWrapper<BaseBuildFacility> query3 = Wrappers.query();
@@ -223,6 +228,8 @@ public class BaseBuildServiceImpl extends AbstractCrudService<BaseBuildMapper, B
                     .in(CollectionUtils.isNotEmpty(baseBuildFacilityVO.getFacilityType()),"facility_type",
                             baseBuildFacilityVO.getFacilityType())
                     .eq("delete_flag",0)
+                    .eq(StringUtils.isNotBlank(baseBuildFacilityVO.getFloor()),"floor",
+                            baseBuildFacilityVO.getFloor())
                     .groupBy("floor");
             List<Map<String, Object>> baseBuildFacilityList2 = baseBuildFacilityService.listMaps(query3);
             QueryWrapper<BaseBuildFacility> query4 = Wrappers.query();
@@ -231,6 +238,8 @@ public class BaseBuildServiceImpl extends AbstractCrudService<BaseBuildMapper, B
                     .in(CollectionUtils.isNotEmpty(baseBuildFacilityVO.getFacilityType()),"facility_type",
                             baseBuildFacilityVO.getFacilityType())
                     .eq("delete_flag",0)
+                    .eq(StringUtils.isNotBlank(baseBuildFacilityVO.getFloor()),"floor",
+                            baseBuildFacilityVO.getFloor())
                     .groupBy("facility_type");
             List<Map<String, Object>> baseBuildFacilityList3 = baseBuildFacilityService.listMaps(query4);
             List<String> facilityTypeList = new ArrayList<>();
@@ -258,6 +267,7 @@ public class BaseBuildServiceImpl extends AbstractCrudService<BaseBuildMapper, B
                                     for (int m = 0; m < baseBuildFacilityType.size(); m++) {
                                         if (baseBuildFacilityList1.get(k).get("facilityType").equals(baseBuildFacilityType.get(m).getTypeCode())){
                                             map2.put("typeImg", baseBuildFacilityType.get(m).getTypeImg());
+                                            map2.put("typeName", baseBuildFacilityType.get(m).getTypeName());
                                         }
                                     }
                                 }
@@ -281,20 +291,71 @@ public class BaseBuildServiceImpl extends AbstractCrudService<BaseBuildMapper, B
         queryWrapper.eq(BaseBuildFacilityRelate::getBuildId,id);
         List<BaseBuildFacilityRelate> baseBuildFacilityList = baseBuildFacilityRelateService.list(queryWrapper);
         List<Integer> facilityIdList = new ArrayList<>();
+        List<String> facilityCodeList = new ArrayList<>();
+        List<BaseBuildFacility> list = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(baseBuildFacilityList)) {
             for (int i = 0; i < baseBuildFacilityList.size(); i++) {
                 facilityIdList.add(baseBuildFacilityList.get(i).getFacilityId());
             }
+            LambdaQueryWrapper<BaseBuildFacility> queryWrapper1 = Wrappers.lambdaQuery();
+            queryWrapper1.in(BaseBuildFacility::getId,facilityIdList)
+                    .eq(StringUtils.isNotBlank(typeCode),BaseBuildFacility::getFacilityType,typeCode)
+                    .eq(StringUtils.isNotBlank(floor),BaseBuildFacility::getFloor,floor)
+                    .eq(BaseBuildFacility::getDeleteFlag,0);
+            list = baseBuildFacilityService.list(queryWrapper1);
+            if (CollectionUtils.isNotEmpty(list)){
+                for (int j = 0; j < list.size(); j++) {
+                    if (!facilityCodeList.contains(list.get(j).getFacilityType())) {
+                        facilityCodeList.add(list.get(j).getFacilityType());
+                    }
+                }
+                LambdaQueryWrapper<BaseBuildFacilityType> queryWrapper2 = Wrappers.lambdaQuery();
+                queryWrapper2.in(BaseBuildFacilityType::getTypeCode,facilityCodeList);
+                List<BaseBuildFacilityType> typeList = baseBuildFacilityTypeService.list(queryWrapper2);
+                if (CollectionUtils.isNotEmpty(typeList)){
+                    for (int k = 0; k < list.size(); k++) {
+                        for (int l = 0; l < typeList.size(); l++) {
+                            if (list.get(k).getFacilityType().equals(typeList.get(l).getTypeCode())){
+                                list.get(k).setModelLink(typeList.get(l).getModelLink());
+                            }
+                        }
+                    }
+                }
+            }
         }
-        LambdaQueryWrapper<BaseBuildFacility> queryWrapper1 = Wrappers.lambdaQuery();
-        queryWrapper1.in(BaseBuildFacility::getId,facilityIdList)
-                .eq(BaseBuildFacility::getFacilityType,typeCode)
-                .eq(BaseBuildFacility::getFloor,floor)
-                .eq(BaseBuildFacility::getDeleteFlag,0);
-        List<BaseBuildFacility> list = baseBuildFacilityService.list(queryWrapper1);
         return list;
     }
 
+    @Override
+    public List<BaseBuildFacilityType> buildTypeInfo(Integer id) {
+        LambdaQueryWrapper<BaseBuildFacilityRelate> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(BaseBuildFacilityRelate::getBuildId,id);
+        List<BaseBuildFacilityRelate> baseBuildFacilityList = baseBuildFacilityRelateService.list(queryWrapper);
+        List<Integer> facilityIdList = new ArrayList<>();
+        List<BaseBuildFacilityType> baseBuildFacilityType = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(baseBuildFacilityList)) {
+            for (int i = 0; i < baseBuildFacilityList.size(); i++) {
+                facilityIdList.add(baseBuildFacilityList.get(i).getFacilityId());
+            }
+            QueryWrapper<BaseBuildFacility> query4 = Wrappers.query();
+            query4.select("facility_type as facilityType","count(id) as count")
+                    .in("id",facilityIdList)
+                    .eq("delete_flag",0)
+                    .groupBy("facility_type");
+            List<Map<String, Object>> baseBuildFacilityList5 = baseBuildFacilityService.listMaps(query4);
+            List<String> facilityTypeList = new ArrayList<>();
+            if (CollectionUtils.isNotEmpty(baseBuildFacilityList5)) {
+                for (int l = 0; l < baseBuildFacilityList5.size(); l++) {
+                    facilityTypeList.add(baseBuildFacilityList5.get(l).get("facilityType").toString());
+                }
+            }
+            LambdaQueryWrapper<BaseBuildFacilityType> queryWrapper1 = Wrappers.lambdaQuery();
+            queryWrapper1.in(BaseBuildFacilityType::getTypeCode,facilityTypeList);
+            baseBuildFacilityType = baseBuildFacilityTypeService.list(queryWrapper1);
+        }
+        return baseBuildFacilityType;
+    }
+
 //    @Override
 //    public boolean checkNameUnique(BaseBuild baseBuild){
 //        Integer id = null == baseBuild.getId()?-1:baseBuild.getId();

+ 66 - 3
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseGgpFacilityServiceImpl.java

@@ -16,6 +16,7 @@ import com.usky.common.core.util.BeanMapperUtils;
 import com.usky.common.core.util.UUIDUtils;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.domain.*;
+import com.usky.iot.mapper.BaseBuildMapper;
 import com.usky.iot.mapper.BaseFacilityTypeMapper;
 import com.usky.iot.mapper.BaseGgpFacilityMapper;
 import com.usky.iot.service.*;
@@ -31,6 +32,8 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -52,8 +55,8 @@ public class BaseGgpFacilityServiceImpl extends AbstractCrudService<BaseGgpFacil
     private BaseFacilityBuildService baseFacilityBuildService;
     @Autowired
     private DmpDeviceInfoService dmpDeviceInfoService;
-//    @Autowired
-//    private BaseBuildService baseBuildService;
+    @Autowired
+    private BaseBuildMapper baseBuildMapper;
     @Autowired
     private BaseFacilityTypeMapper baseFacilityTypeMapper;
     @Autowired
@@ -304,14 +307,22 @@ public class BaseGgpFacilityServiceImpl extends AbstractCrudService<BaseGgpFacil
         LambdaQueryWrapper<BaseFacilityDevice> lambdaQuery = Wrappers.lambdaQuery();
         lambdaQuery.eq(BaseFacilityDevice::getFacilityId,id);
         List<BaseFacilityDevice> baseFacilityDeviceList = baseFacilityDeviceService.list(lambdaQuery);
+        LambdaQueryWrapper<BaseBuild> lambdaQuery3 = Wrappers.lambdaQuery();
+        lambdaQuery3.eq(BaseBuild::getFacilityId,id);
+        List<BaseBuild> baseFacilityBuildList = baseBuildMapper.selectList(lambdaQuery3);
         Map<String, Object> map = new HashMap<>();
         map.put("id", baseGgpFacilityList.get(0).getId());
         map.put("facilityName", baseGgpFacilityList.get(0).getFacilityName());
         map.put("facilityAddress", baseGgpFacilityList.get(0).getFacilityAddress());
         map.put("contact", baseGgpFacilityList.get(0).getContact());
         map.put("contactPhone", baseGgpFacilityList.get(0).getContactPhone());
+        map.put("buildId", null);
+        if (CollectionUtils.isNotEmpty(baseFacilityBuildList)){
+            map.put("buildId", baseFacilityBuildList.get(0).getId());
+        }
         LambdaQueryWrapper<DmpProductInfo> queryWrapper2 = Wrappers.lambdaQuery();
-        queryWrapper2.eq(DmpProductInfo::getTenantId,SecurityUtils.getTenantId());
+        queryWrapper2.eq(DmpProductInfo::getTenantId,SecurityUtils.getTenantId())
+                .eq(DmpProductInfo::getDeleteFlag,0);
         List<DmpProductInfo> dmpProductInfoList = dmpProductInfoService.list(queryWrapper2);
         if (CollectionUtils.isNotEmpty(baseFacilityDeviceList)) {
             List<String> deviceIdList = new ArrayList<>();
@@ -445,4 +456,56 @@ public class BaseGgpFacilityServiceImpl extends AbstractCrudService<BaseGgpFacil
             throw  new BusinessException(err);
         }
     }
+
+//    @Override
+//    public void facilityImport(MultipartFile multipartFile) {
+//        String FILE_IMPORT_FAILED = "文件导入失败";
+//        String FILE_EMPTY = "文件不能为空";
+//        String ROW_IMPORT_FAILED = "第%d行数据导入失败";
+//
+//        ImportParams params = new ImportParams();
+//        params.setHeadRows(1);
+//        params.setTitleRows(1);
+//
+//        try (InputStream inputStream = multipartFile.getInputStream()) {
+//            List<BaseGgpFacility> facilityList = new ArrayList<>();
+//            List<FacilityImportVo> facilityImportVos = ExcelImportUtil.importExcel(inputStream, FacilityImportVo.class, params);
+//            if (CollectionUtils.isEmpty(facilityImportVos)) {
+//                throw new BusinessException(FILE_EMPTY);
+//            }
+//
+//            for (int i = 0; i < facilityImportVos.size(); i++) {
+//                FacilityImportVo facilityImportVo = facilityImportVos.get(i);
+//                BaseGgpFacility baseGgpFacility = BeanMapperUtils.map(facilityImportVo, BaseGgpFacility.class);
+//                if (isBlank(baseGgpFacility.getFacilityType()) || isBlank(baseGgpFacility.getFacilityName()) || isBlank(baseGgpFacility.getAddress()) || isBlank(baseGgpFacility.getLatitude()) || isBlank(baseGgpFacility.getLongitude())) {
+//                    throw new BusinessException(String.format(ROW_IMPORT_FAILED, i + 1));
+//                }
+//                Calendar cal1 = Calendar.getInstance();
+//                Date date = cal1.getTime();
+//                List<BaseFacilityType> typeList = baseFacilityTypeMapper.typeList(baseGgpFacility.getFacilityType());
+//                if (CollectionUtils.isEmpty(typeList)) {
+//                    String FILE_TYPE_ERROR = "设施类型有误";
+//                    throw new BusinessException(FILE_TYPE_ERROR);
+//                }
+//                baseGgpFacility.setFacilityNum(typeList.get(0).getTypeAbbrevia()+'-'+new SimpleDateFormat("yyyyMMddHHmmssSSS").format(date));
+//                baseGgpFacility.setCreator(SecurityUtils.getUsername());
+//                baseGgpFacility.setCreateTime(LocalDateTime.now());
+//                baseGgpFacility.setTenantId(SecurityUtils.getTenantId());
+//                facilityList.add(baseGgpFacility);
+//            }
+//            try {
+//                this.saveBatch(facilityList);
+//            } catch (Exception e) {
+//                throw new BusinessException(FILE_IMPORT_FAILED);
+//            }
+//        } catch (Exception e) {
+//            log.error("文件导入失败", e);
+//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//            throw new BusinessException(FILE_IMPORT_FAILED);
+//        }
+//    }
+
+    private boolean isBlank(String str) {
+        return StringUtils.isBlank(str) || StringUtils.isBlank(str.trim());
+    }
 }

+ 1 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/BaseBuildFacilityVO.java

@@ -19,4 +19,5 @@ public class BaseBuildFacilityVO {
 
         private List<String> facilityType;
 
+        private String floor;
 }

+ 5 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/BuildFacilityRelateRequestVO.java

@@ -23,6 +23,11 @@ public class BuildFacilityRelateRequestVO {
      */
     private String facilityNum;
 
+    /**
+     * 设施名称
+     */
+    private String facilityName;
+
     /**
      * 设施类型编码
      */

+ 2 - 2
service-iot/service-iot-biz/src/main/resources/bootstrap.yml

@@ -14,10 +14,10 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 172.16.120.165:8848
+        server-addr: usky-cloud-nacos:8848
       config:
         # 配置中心地址
-        server-addr: 172.16.120.165:8848
+        server-addr: usky-cloud-nacos:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置

+ 2 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseBuildFacilityMapper.xml

@@ -14,6 +14,8 @@
         <result column="device_id" property="deviceId" />
         <result column="contact" property="contact" />
         <result column="contact_phone" property="contactPhone" />
+        <result column="plane_x" property="planeX" />
+        <result column="plane_y" property="planeY" />
         <result column="coordinate_x" property="coordinateX" />
         <result column="coordinate_y" property="coordinateY" />
         <result column="coordinate_z" property="coordinateZ" />

+ 1 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseBuildFacilityTypeMapper.xml

@@ -11,6 +11,7 @@
         <result column="type_img" property="typeImg" />
         <result column="type_desc" property="typeDesc" />
         <result column="data_field" property="dataField" />
+        <result column="model_link" property="modelLink" />
         <result column="create_by" property="createBy" />
         <result column="create_time" property="createTime" />
         <result column="update_by" property="updateBy" />

+ 15 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseBuildPlaneMapper.xml

@@ -0,0 +1,15 @@
+<?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.usky.iot.mapper.BaseBuildPlaneMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.iot.domain.BaseBuildPlane">
+        <id column="id" property="id" />
+        <result column="build_id" property="buildId" />
+        <result column="floor" property="floor" />
+        <result column="plane_view_url" property="planeViewUrl" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+    </resultMap>
+
+</mapper>