From 0f10707eaa4d58832903a2f27e19f9fb713c7715 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 06 三月 2025 11:08:50 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java                 |   24 +++
 admin/src/api/business/visitEvent.js                                                                      |    5 
 admin/src/views/business/dangerStatic.vue                                                                 |  112 ++++++++++++++++
 admin/src/views/platform/index.vue                                                                        |   11 +
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java         |   10 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerService.java          |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java |   86 +++++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/HiddenDangerDataVO.java            |   20 ++
 admin/src/views/business/visitEvent.vue                                                                   |  115 +++++++++------
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java               |    3 
 10 files changed, 336 insertions(+), 53 deletions(-)

diff --git a/admin/src/api/business/visitEvent.js b/admin/src/api/business/visitEvent.js
index 94918e5..6264012 100644
--- a/admin/src/api/business/visitEvent.js
+++ b/admin/src/api/business/visitEvent.js
@@ -14,3 +14,8 @@
     download: true
   })
 }
+export function fetchcountNum (data) {
+  return request.post('/visitsAdmin/cloudService/business/visitEvent/countNum', data, {
+    trim: true
+  })
+}
\ No newline at end of file
diff --git a/admin/src/views/business/dangerStatic.vue b/admin/src/views/business/dangerStatic.vue
new file mode 100644
index 0000000..49d5e6d
--- /dev/null
+++ b/admin/src/views/business/dangerStatic.vue
@@ -0,0 +1,112 @@
+<template>
+  <div class="main_app">
+    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getData(1)" @clear="clear"
+      @changeForm='changeForm'>
+      <template #fastdate>
+        <el-radio-group v-model="filters.fastdate" size="small" @input="changeForm">
+          <el-radio-button label="0">褰撳ぉ</el-radio-button>
+          <el-radio-button label="6">杩�7澶�</el-radio-button>
+          <el-radio-button label="29">杩�30澶�</el-radio-button>
+        </el-radio-group>
+      </template>
+    </QueryForm>
+    <div class="main_content">
+      <div class="type_wrap">
+        <div class="title">闅愭偅绫诲瀷缁熻</div>
+        <div class="type" ref="typeRef"></div>
+      </div>
+      <div class="dept_wrap">
+        <div class="title">闅愭偅褰掑睘閮ㄩ棬缁熻</div>
+        <div class="dept" ref="deptRef"></div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import QueryForm from '@/components/common/QueryForm'
+import echarts from 'echarts'
+export default {
+  components: {
+    QueryForm,
+  },
+  data() {
+    return {
+      filters: {},
+      queryFormConfig: {
+        formItems: [
+          {
+            filed: 'status',
+            type: 'select',
+            label: '鐘舵��',
+            options: [
+              { label: '璁垮鐢宠', value: '0' },
+              { label: '璁垮鎶ュ', value: '1' },
+              { label: '鐢ㄨ溅鐢宠', value: '2' },
+              { label: '闅愭偅闅忔墜鎷�', value: '3' },
+              { label: '鐗╂祦杞︾敵璇�', value: '6' }
+            ]
+          },
+          {
+            filed1: 'startDate',
+            filed2: 'endDate',
+            type: 'datetime',
+            label: '鎻愭姤鏃堕棿'
+          },
+          {
+            type: 'slot',
+            filed: 'fastdate',
+            label: ''
+          }
+        ],
+        online: true
+      },
+    }
+  },
+  methods: {
+    getData(page) {
+      console.log(this.filters)
+    },
+    changeForm(form) {
+      console.log(form)
+    },
+    clear() {
+      this.filters = {}
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.main_app {
+  height: 100%;
+}
+
+.main_content {
+  display: flex;
+  height: calc(100% - 110px);
+  .title {
+    font-weight: 600;
+    font-size: 16px;
+    color: #222222;
+    margin-bottom: 20px;
+    margin-top: 20px;
+  }
+
+  .type_wrap {
+    flex: 5;
+    flex-shrink: 0;
+    border: 1px solid #E5E5E5;
+    height: 100%;
+    border-right: 12px solid #f7f7f7;
+  }
+
+  .dept_wrap {
+    flex: 4;
+    flex-shrink: 0;
+    border: 1px solid #E5E5E5;
+    height: 100%;
+    padding-left: 20px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/business/visitEvent.vue b/admin/src/views/business/visitEvent.vue
index 4af12b0..a95a8b9 100644
--- a/admin/src/views/business/visitEvent.vue
+++ b/admin/src/views/business/visitEvent.vue
@@ -1,58 +1,64 @@
 <template>
   <TableLayout :permissions="['business:visitevent:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="keyWords">
-        <el-input v-model="searchForm.keyWords" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="杞︾墝鍙�" prop="carNo">
-        <el-input v-model="searchForm.carNo" placeholder="璇疯緭鍏ヨ溅鐗屽彿" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="缁勭粐鍚嶇О" prop="visitorWorkUint">
-        <el-input v-model="searchForm.visitorWorkUint" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="浜嬩欢绫诲瀷" prop="eventType">
-        <el-select v-model="searchForm.eventType" placeholder="璇烽�夋嫨">
-          <el-option label="璁垮鐧昏" value="541200006"></el-option>
-          <el-option label="璁垮绛剧" value="541200007"></el-option>
-          <el-option label="璁垮閫氳" value="541200060"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="杩涘嚭绫诲瀷" prop="inOrOut">
-        <el-select v-model="searchForm.inOrOut" placeholder="璇烽�夋嫨">
-          <el-option label="杩�" value="0"></el-option>
-          <el-option label="鍑�" value="1"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="璧峰鏃堕棿" prop="carNo">
-        <!-- <el-date-picker @change="seleTime" v-model="time" type="datetimerange" format="yyyy-MM-dd HH:mm:ss"
+    <div slot="search-form" ref="QueryFormRef">
+      <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+        <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="keyWords">
+          <el-input v-model="searchForm.keyWords" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+        </el-form-item>
+        <el-form-item label="杞︾墝鍙�" prop="carNo">
+          <el-input v-model="searchForm.carNo" placeholder="璇疯緭鍏ヨ溅鐗屽彿" @keypress.enter.native="search"></el-input>
+        </el-form-item>
+        <el-form-item label="缁勭粐鍚嶇О" prop="visitorWorkUint">
+          <el-input v-model="searchForm.visitorWorkUint" placeholder="璇疯緭鍏ョ粍缁囧悕绉�"
+            @keypress.enter.native="search"></el-input>
+        </el-form-item>
+        <el-form-item label="浜嬩欢绫诲瀷" prop="eventType">
+          <el-select v-model="searchForm.eventType" placeholder="璇烽�夋嫨">
+            <el-option label="璁垮鐧昏" value="541200006"></el-option>
+            <el-option label="璁垮绛剧" value="541200007"></el-option>
+            <el-option label="璁垮閫氳" value="541200060"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="杩涘嚭绫诲瀷" prop="inOrOut">
+          <el-select v-model="searchForm.inOrOut" placeholder="璇烽�夋嫨">
+            <el-option label="杩�" value="0"></el-option>
+            <el-option label="鍑�" value="1"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="璧峰鏃堕棿" prop="carNo">
+          <!-- <el-date-picker @change="seleTime" v-model="time" type="datetimerange" format="yyyy-MM-dd HH:mm:ss"
           value-format="yyyy-MM-dd HH:mm:ss" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡">
         </el-date-picker> -->
-        <el-date-picker type="datetime" v-model="searchForm.startTime" value-format="yyyy-MM-dd HH:mm:ss"
-          placeholder="璇烽�夋嫨寮�濮嬫椂闂�" @change="changeRadio" />
-        <el-date-picker type="datetime" v-model="searchForm.endTime" value-format="yyyy-MM-dd HH:mm:ss"
-          placeholder="璇烽�夋嫨缁撴潫鏃堕棿" @change="changeRadio" />
-      </el-form-item>
-      <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
-        <el-radio-button label="0">褰撳ぉ</el-radio-button>
-        <el-radio-button label="1">杩�7澶�</el-radio-button>
-        <el-radio-button label="2">杩�30澶�</el-radio-button>
-      </el-radio-group>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
+          <el-date-picker type="datetime" v-model="searchForm.startTime" value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="璇烽�夋嫨寮�濮嬫椂闂�" @change="changeRadio" />
+          <el-date-picker type="datetime" v-model="searchForm.endTime" value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="璇烽�夋嫨缁撴潫鏃堕棿" @change="changeRadio" />
+        </el-form-item>
+        <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
+          <el-radio-button label="0">褰撳ぉ</el-radio-button>
+          <el-radio-button label="1">杩�7澶�</el-radio-button>
+          <el-radio-button label="2">杩�30澶�</el-radio-button>
+        </el-radio-group>
+        <section>
+          <el-button type="primary" @click="search">鎼滅储</el-button>
+          <el-button @click="reset">閲嶇疆</el-button>
+        </section>
+      </el-form>
+    </div>
+
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:visitevent:exportExcel']">
         <li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:visitevent:exportExcel']"
             @click="exportExcel">瀵煎嚭</el-button></li>
+        <li class="ml20"> 鎷滆浜烘锛�<span class="primaryColor">{{staticObj.eventNum}}娆�</span></li>
+        <li class="ml20"> 鎷滆浜烘暟锛�<span class="primaryColor">{{staticObj.visitorNum}}浜�</span></li>
       </ul>
-      <el-table v-loading="isWorking.search" :data="tableData.list" stripe>
-        <el-table-column prop="personName" label="濮撳悕" min-width="100px"></el-table-column>
+      <el-table :max-height="tableHeight" v-loading="isWorking.search" :data="tableData.list" stripe>
+        <el-table-column prop="personName" label="濮撳悕" min-width="90px"></el-table-column>
         <el-table-column prop="phone" label="鎵嬫満鍙风爜" min-width="100px"></el-table-column>
-        <el-table-column prop="idcardDecode" label="韬唤璇佸彿鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="idcardDecode" label="韬唤璇佸彿鐮�" min-width="120px"></el-table-column>
         <el-table-column prop="visitorWorkUint" label="缁勭粐" min-width="100px"></el-table-column>
         <el-table-column prop="carNo" label="杞︾墝鍙�" min-width="100px"></el-table-column>
         <el-table-column prop="beVisitedPersonName" label="琚浜�" min-width="100px"></el-table-column>
@@ -72,7 +78,7 @@
             </el-image>
           </template>
         </el-table-column>
-        <el-table-column prop="createDate" label="浜嬩欢鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="浜嬩欢鏃堕棿" min-width="120px"></el-table-column>
       </el-table>
       <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
       </pagination>
@@ -85,6 +91,7 @@
 import TableLayout from '@/layouts/TableLayout'
 import Pagination from '@/components/common/Pagination'
 import { timeForMat } from '@/utils/util'
+import { fetchcountNum } from '@/api/business/visitEvent'
 export default {
   name: 'VisitEvent',
   extends: BaseTable,
@@ -103,7 +110,9 @@
         visitorWorkUint: '',
         radio: '0'
       },
-      time: []
+      tableHeight: 400,
+      time: [],
+      staticObj: {}
     }
   },
   created() {
@@ -117,12 +126,22 @@
     this.changeRadio('0')
     this.search()
   },
+  mounted() {
+    this.$nextTick(() => {
+      this.tableHeight = document.body.scrollHeight - this.$refs.QueryFormRef.offsetHeight - 300
+    })
+  },
   methods: {
     seleTime(e) {
       this.searchForm.startTime = e[0]
       this.searchForm.endTime = e[1]
       this.searchForm.radio = null
       this.search()
+    },
+    getCountNum() {
+      fetchcountNum(this.searchForm).then(res => {
+        this.staticObj = res
+      })
     },
     changeRadio(e) {
       if (e === '0') {
@@ -149,7 +168,11 @@
       this.time = []
       this.searchForm = {}
       this.search()
-    }
+    },
+    search() {
+      this.getCountNum()
+      this.handlePageChange(1)
+    },
   }
 }
 </script>
diff --git a/admin/src/views/platform/index.vue b/admin/src/views/platform/index.vue
index e566346..82d288f 100644
--- a/admin/src/views/platform/index.vue
+++ b/admin/src/views/platform/index.vue
@@ -202,17 +202,26 @@
       detail: {},
       isShowQueuing: false,
       timer: null,
+      timer2: null,
 
       loadingOpen: false,
       loadingFinish: false,
     }
   },
   created() {
-    setInterval(() => {
+    this.timer2 = setInterval(() => {
       this.getPlatGroupList()
     }, 1000 * 20)
     this.getPlatGroupList()
   },
+  beforeDestroy() {
+    if (this.timer2) {
+      clearInterval(this.timer2)
+    }
+    if (this.timer) {
+      clearInterval(this.timer)
+    }
+  },
   methods: {
     handleWork(item) {
       this.loadingOpen = true
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java
index 6861738..fa14171 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerCloudController.java
@@ -117,4 +117,14 @@
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
+
+    @ApiOperation("闅愭偅鏁版嵁缁熻")
+    @PostMapping("/hiddenDangerData")
+    public ApiResponse hiddenDangerData (@RequestBody HiddenDanger hiddenDanger,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        hiddenDanger.setLoginUserInfo(getLoginUser(token));
+        hiddenDangerService.hiddenDangerData(hiddenDanger);
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java
index 862e7ea..1be3932 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java
@@ -157,5 +157,8 @@
     @TableField(exist = false)
     private List<Multifile> multifileList;
 
+    @ApiModelProperty(value = "闅愭偅鍖哄煙閮ㄩ棬涓婚敭", example = "1",hidden = true)
+    @TableField(exist = false)
+    private Integer areaCompanyId;
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java
new file mode 100644
index 0000000..f56e68e
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/GeneralDataVO.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.business.vo;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.service.business.third.model.LoginUserModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class GeneralDataVO{
+
+    @ApiModelProperty(value = "鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "鏁伴噺")
+    private Integer total ;
+
+    @ApiModelProperty(value = "鍗犳瘮")
+    private BigDecimal rata ;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/HiddenDangerDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/HiddenDangerDataVO.java
new file mode 100644
index 0000000..dd29a21
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/HiddenDangerDataVO.java
@@ -0,0 +1,20 @@
+package com.doumee.dao.business.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class HiddenDangerDataVO {
+
+    @ApiModelProperty(value = "鎬绘暟")
+    private Integer total;
+
+    @ApiModelProperty(value = "闅愭偅绫诲瀷缁熻")
+    private List<GeneralDataVO> cateList ;
+
+    @ApiModelProperty(value = "闅愭偅閮ㄩ棬缁熻")
+    private List<GeneralDataVO> departmentList ;
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerService.java
index bfd3bd5..7cb29aa 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/HiddenDangerService.java
@@ -1,5 +1,6 @@
 package com.doumee.service.business;
 
+import com.doumee.dao.business.vo.HiddenDangerDataVO;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -100,4 +101,6 @@
     void dealHiddenDanger(HiddenDanger hiddenDanger);
 
     void transferHiddenDanger(HiddenDanger hiddenDanger);
+
+    HiddenDangerDataVO hiddenDangerData(HiddenDanger hiddenDanger);
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
index 5f7d60e..aa262d1 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -8,7 +8,9 @@
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
-import com.doumee.dao.business.dao.UserActionMapper;
+import com.doumee.dao.business.dao.*;
+import com.doumee.dao.business.vo.GeneralDataVO;
+import com.doumee.dao.business.vo.HiddenDangerDataVO;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -19,9 +21,6 @@
 import com.doumee.core.wx.wxPlat.WxPlatConstants;
 import com.doumee.core.wx.wxPlat.WxPlatNotice;
 import com.doumee.dao.business.*;
-import com.doumee.dao.business.dao.MemberMapper;
-import com.doumee.dao.business.dao.SmsConfigMapper;
-import com.doumee.dao.business.dao.SmsEmailMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.business.model.Member;
 import com.doumee.dao.system.MultifileMapper;
@@ -41,7 +40,9 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 闅愭偅淇℃伅琛⊿ervice瀹炵幇
@@ -73,6 +74,9 @@
     private HiddenDangerLogMapper hiddenDangerLogMapper;
     @Autowired
     private UserActionMapper userActionMapper;
+
+    @Autowired
+    private CompanyMapper companyMapper;
 
 
     @Autowired
@@ -471,8 +475,8 @@
 
                 .and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()), ms->ms.like(Member::getName,pageWrap.getModel().getMemberName())
                         .or().like(Member::getPhone,pageWrap.getModel().getMemberName()))
-                .ge(Objects.nonNull(pageWrap.getModel().getQueryStartTime()), Empower::getCreateDate,pageWrap.getModel().getQueryStartTime())
-                .le(Objects.nonNull(pageWrap.getModel().getQueryEndTime()),Empower::getCreateDate,pageWrap.getModel().getQueryEndTime())
+                .ge(Objects.nonNull(pageWrap.getModel().getQueryStartTime()), HiddenDanger::getCreateDate,pageWrap.getModel().getQueryStartTime())
+                .le(Objects.nonNull(pageWrap.getModel().getQueryEndTime()),HiddenDanger::getCreateDate,pageWrap.getModel().getQueryEndTime())
                 .orderByDesc(Visits::getCreateDate)
         ;
         for(PageWrap.SortData sortData: pageWrap.getSorts()) {
@@ -772,4 +776,74 @@
     }
 
 
+    /**
+     * 闅忔墜鎷嶇粺璁℃暟鎹�
+     */
+    @Override
+    public HiddenDangerDataVO hiddenDangerData(HiddenDanger hiddenDanger){
+        HiddenDangerDataVO hiddenDangerDataVO = new HiddenDangerDataVO();
+        List<HiddenDanger> hiddenDangerAllList = hiddenDangerMapper.selectJoinList(HiddenDanger.class,
+                new MPJLambdaWrapper<HiddenDanger>()
+                        .selectAll(HiddenDanger.class)
+                .selectAs(HiddenDangerParam::getCompanyId, HiddenDanger::getAreaCompanyId)
+                .leftJoin(HiddenDangerParam.class,HiddenDangerParam::getId,HiddenDanger::getAreaId) //闅愭偅鍖哄煙
+                .eq(Objects.nonNull(hiddenDanger.getStatus()),HiddenDanger::getStatus,hiddenDanger.getStatus())
+                .ge(Objects.nonNull(hiddenDanger.getQueryStartTime()), HiddenDanger::getCreateDate,hiddenDanger.getQueryStartTime())
+                .le(Objects.nonNull(hiddenDanger.getQueryEndTime()),HiddenDanger::getCreateDate,hiddenDanger.getQueryEndTime())
+        );
+        hiddenDangerDataVO.setTotal(hiddenDangerAllList.size());
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(hiddenDangerAllList)){
+            List<Integer> cateList =  hiddenDangerAllList.stream().map(i->i.getCateId()).collect(Collectors.toList());
+            //鍏ㄩ儴闅愭偅鍒嗙被鏁版嵁
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(cateList)){
+                List<GeneralDataVO> cateGeneralDataList = new ArrayList<>();
+                Set<Integer> cateSetList = new HashSet<>(cateList);
+                List<HiddenDangerParam> hiddenDangerParamList = hiddenDangerParamMapper.selectList(new QueryWrapper<HiddenDangerParam>()
+                        .lambda().eq(HiddenDangerParam::getIsdeleted,Constants.ZERO).eq(HiddenDangerParam::getType,Constants.ONE));
+                for (Integer cateId:cateSetList) {
+                    Optional<HiddenDangerParam> optionalHiddenDanger = hiddenDangerParamList.stream().filter(i->Constants.equalsInteger(i.getId(),cateId)).findAny();
+                    if(optionalHiddenDanger.isPresent()){
+                        GeneralDataVO generalDataVO = new GeneralDataVO();
+                        HiddenDangerParam hiddenDangerParam = optionalHiddenDanger.get();
+                        Integer total = hiddenDangerAllList.stream().filter(i->Constants.equalsInteger(i.getCateId(),hiddenDangerParam.getId())).collect(Collectors.toList()).size();
+                        generalDataVO.setName(hiddenDangerParam.getName());
+                        generalDataVO.setTotal(total);
+                        generalDataVO.setRata(
+                                    Constants.equalsInteger(total,Constants.ZERO)?
+                                        BigDecimal.ZERO:new BigDecimal(total.toString()).divide(new BigDecimal(hiddenDangerDataVO.getTotal().toString()),2).multiply(new BigDecimal("100"))
+                                );
+                        cateGeneralDataList.add(generalDataVO);
+                    }
+                }
+                hiddenDangerDataVO.setCateList(cateGeneralDataList);
+            }
+            //鍏ㄩ儴闅愭偅鍖哄煙閮ㄩ棬鏁版嵁
+            List<Integer> companyIdList =  hiddenDangerAllList.stream().map(i->i.getAreaCompanyId()).collect(Collectors.toList());
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(companyIdList)){
+                List<GeneralDataVO> companyGeneralDataList = new ArrayList<>();
+                Set<Integer> companyIdSetList = new HashSet<>(companyIdList);
+                List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>()
+                        .lambda().eq(Company::getIsdeleted,Constants.ZERO));
+                for (Integer companyId:companyIdSetList) {
+                    Optional<Company> optionalCompany = companyList.stream().filter(i->Constants.equalsInteger(i.getId(),companyId)).findAny();
+                    if(optionalCompany.isPresent()){
+                        GeneralDataVO generalDataVO = new GeneralDataVO();
+                        Company company = optionalCompany.get();
+                        Integer total = hiddenDangerAllList.stream().filter(i->Constants.equalsInteger(i.getAreaCompanyId(),company.getId())).collect(Collectors.toList()).size();
+                        generalDataVO.setName(company.getName());
+                        generalDataVO.setTotal(total);
+                        companyGeneralDataList.add(generalDataVO);
+                    }
+                }
+                hiddenDangerDataVO.setDepartmentList(companyGeneralDataList);
+            }
+        }
+
+        return hiddenDangerDataVO;
+    }
+
+
+
+
+
 }

--
Gitblit v1.9.3