2 Commits d2f015ee1b ... af95607d25

Author SHA1 Message Date
  459242451@qq.com af95607d25 add 漏打点导出 2 years ago
  459242451@qq.com 7ab19fb349 add 数据权限 2 years ago

+ 0 - 10
Dockerfile

@@ -1,10 +0,0 @@
-# jdk的版本
-FROM anapsix/alpine-java:8_server-jre_unlimited
-# 作者
-MAINTAINER xt
-ARG workdir=/app
-VOLUME ${workdir}
-WORKDIR ${workdir}
-ADD ruoyi-admin/target/ruoyi-admin.jar app.jar
-EXPOSE 8080
-ENTRYPOINT ["java","-Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC","-jar","app.jar"]

+ 18 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/qdtl/TlElectricDeviceController.java

@@ -5,13 +5,16 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.qdtl.domain.TlElectricDevice;
 import com.ruoyi.qdtl.service.ITlElectricDeviceService;
+import com.ruoyi.system.service.ISysRoleService;
 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.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 电动车定位设备Controller
@@ -24,6 +27,8 @@ import java.util.List;
 public class TlElectricDeviceController extends BaseController {
     @Autowired
     private ITlElectricDeviceService tlElectricDeviceService;
+    @Autowired
+    private ISysRoleService sysRoleService;
 
     /**
      * 查询电动车定位设备列表
@@ -47,7 +52,19 @@ public class TlElectricDeviceController extends BaseController {
 
     @GetMapping("/queryAllList")
     public AjaxResult queryAllList() {
-        return AjaxResult.success(tlElectricDeviceService.queryAllEnableList());
+        Set<String> roleSet = sysRoleService.selectRolePermissionByUserId(getUserId());
+        List<TlElectricDevice> list = tlElectricDeviceService.queryAllEnableList();
+        if (!roleSet.contains("admin")) {
+            List<TlElectricDevice> newList = new ArrayList<>();
+            // 筛选
+            for (TlElectricDevice tlElectricDevice : list) {
+                if (roleSet.contains(tlElectricDevice.getAreaId())) {
+                    newList.add(tlElectricDevice);
+                }
+            }
+            return AjaxResult.success(newList);
+        }
+        return AjaxResult.success(list);
     }
 
     /**

+ 28 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/qdtl/TlElectricDeviceLocationController.java

@@ -9,6 +9,8 @@ import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.qdtl.domain.ElectricDeviceLocationRecord;
 import com.ruoyi.qdtl.domain.TlElectricDeviceLocation;
 import com.ruoyi.qdtl.service.ITlElectricDeviceLocationService;
+import com.ruoyi.system.service.ISysDictDataService;
+import com.ruoyi.system.service.ISysRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -17,7 +19,10 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 电动车定位设备轨迹Controller
@@ -30,6 +35,10 @@ import java.util.List;
 public class TlElectricDeviceLocationController extends BaseController {
     @Autowired
     private ITlElectricDeviceLocationService tlElectricDeviceLocationService;
+    @Autowired
+    private ISysRoleService sysRoleService;
+    @Autowired
+    private ISysDictDataService dictDataService;
 
     /**
      * 查询电动车定位设备轨迹列表
@@ -48,7 +57,25 @@ public class TlElectricDeviceLocationController extends BaseController {
                                           @RequestParam(required = false) String imei) {
         startDate = startDate + " 00:00:00";
         endDate = endDate + " 23:59:59";
-        return AjaxResult.success(tlElectricDeviceLocationService.queryLocationRecord(startDate, endDate, areaName, imei));
+        List<ElectricDeviceLocationRecord> list = tlElectricDeviceLocationService.queryLocationRecord(startDate, endDate, areaName, imei);
+        Set<String> roleSet = sysRoleService.selectRolePermissionByUserId(getUserId());
+        if (!roleSet.contains("admin")) {
+            Set<String> areaSet = new HashSet<>();
+            for (String s : roleSet) {
+                String tl_xun_area = dictDataService.selectDictLabel("tl_xun_area", s);
+                areaSet.add(tl_xun_area);
+            }
+            if (areaSet.size() > 0) {
+                List<ElectricDeviceLocationRecord> newList = new ArrayList<>();
+                for (ElectricDeviceLocationRecord electricDeviceLocationRecord : list) {
+                    if (areaSet.contains(electricDeviceLocationRecord.getDeviceName().substring(0, 3))) {
+                        newList.add(electricDeviceLocationRecord);
+                    }
+                }
+                return AjaxResult.success(newList);
+            }
+        }
+        return AjaxResult.success(list);
     }
 
     @PostMapping("/syncDeviceLocation")

+ 73 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/qdtl/TlInspectionLocationLogController.java

@@ -1,5 +1,8 @@
 package com.ruoyi.web.controller.qdtl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
@@ -7,8 +10,12 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.qdtl.domain.MissLoactionPoint;
+import com.ruoyi.qdtl.domain.TlInspectionLocation;
 import com.ruoyi.qdtl.domain.TlInspectionLocationLog;
 import com.ruoyi.qdtl.service.ITlInspectionLocationLogService;
+import com.ruoyi.qdtl.service.ITlInspectionLocationService;
+import com.ruoyi.system.service.ISysRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -20,7 +27,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 巡检记录管理Controller
@@ -33,16 +45,29 @@ import java.util.List;
 public class TlInspectionLocationLogController extends BaseController {
     @Autowired
     private ITlInspectionLocationLogService tlInspectionLocationLogService;
+    @Autowired
+    private ISysRoleService sysRoleService;
+    @Autowired
+    private ITlInspectionLocationService locationService;
 
     /**
      * 查询巡检记录管理列表
      */
     @GetMapping("/list")
     public TableDataInfo list(TlInspectionLocationLog tlInspectionLocationLog) {
+        Set<String> roleSet = sysRoleService.selectRolePermissionByUserId(getUserId());
         startPage();
         if (StrUtil.isNotBlank(tlInspectionLocationLog.getAreaId())) {
-            tlInspectionLocationLog.setAreaIds(StrUtil.split(tlInspectionLocationLog.getAreaId(), ','));
+            Set<String> split = new HashSet<>(StrUtil.split(tlInspectionLocationLog.getAreaId(), ','));
+            if (!roleSet.contains("admin")) {
+                split = CollUtil.intersectionDistinct(roleSet, split);
+            }
+            tlInspectionLocationLog.setAreaIds(split);
             tlInspectionLocationLog.setAreaId("");
+        } else {
+            if (!roleSet.contains("admin")) {
+                tlInspectionLocationLog.setAreaIds(roleSet);
+            }
         }
         List<TlInspectionLocationLog> list = tlInspectionLocationLogService.selectTlInspectionLocationLogList(tlInspectionLocationLog);
         return getDataTable(list);
@@ -57,7 +82,7 @@ public class TlInspectionLocationLogController extends BaseController {
     @GetMapping("/trail/list")
     public AjaxResult trailList(TlInspectionLocationLog tlInspectionLocationLog) {
         if (StrUtil.isNotBlank(tlInspectionLocationLog.getAreaId())) {
-            tlInspectionLocationLog.setAreaIds(StrUtil.split(tlInspectionLocationLog.getAreaId(), ','));
+            tlInspectionLocationLog.setAreaIds(new HashSet<>(StrUtil.split(tlInspectionLocationLog.getAreaId(), ',')));
             tlInspectionLocationLog.setAreaId("");
         }
         List<TlInspectionLocationLog> list = tlInspectionLocationLogService.selectTlInspectionLocationLogTrailList(tlInspectionLocationLog);
@@ -70,15 +95,60 @@ public class TlInspectionLocationLogController extends BaseController {
     @Log(title = "巡检记录管理", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, TlInspectionLocationLog tlInspectionLocationLog) {
+        Set<String> roleSet = sysRoleService.selectRolePermissionByUserId(getUserId());
         if (StrUtil.isNotBlank(tlInspectionLocationLog.getAreaId())) {
-            tlInspectionLocationLog.setAreaIds(StrUtil.split(tlInspectionLocationLog.getAreaId(), ','));
+            Set<String> split = new HashSet<>(StrUtil.split(tlInspectionLocationLog.getAreaId(), ','));
+            if (!roleSet.contains("admin")) {
+                split = CollUtil.intersectionDistinct(roleSet, split);
+            }
+            tlInspectionLocationLog.setAreaIds(split);
             tlInspectionLocationLog.setAreaId("");
+        } else {
+            if (!roleSet.contains("admin")) {
+                tlInspectionLocationLog.setAreaIds(roleSet);
+            }
         }
         List<TlInspectionLocationLog> list = tlInspectionLocationLogService.selectTlInspectionLocationLogList(tlInspectionLocationLog);
         ExcelUtil<TlInspectionLocationLog> util = new ExcelUtil<TlInspectionLocationLog>(TlInspectionLocationLog.class);
         util.exportExcel(response, list, "巡检记录管理数据");
     }
 
+    @Log(title = "漏打巡检点导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/missExport")
+    public void missExport(HttpServletResponse response, TlInspectionLocationLog tlInspectionLocationLog) {
+        // 查询每个镇所有的点位
+        List<TlInspectionLocation> locations = locationService.selectLocationList();
+        Set<String> locationsSet = locations.stream().map(TlInspectionLocation::getLocationCode).collect(Collectors.toSet());
+        Map<String, TlInspectionLocation> locationName = locations.stream().collect(Collectors.toMap(TlInspectionLocation::getLocationCode, a -> a));
+//        Map<Long, List<TlInspectionLocation>> locationCollect = locations.stream().collect(Collectors.groupingBy(TlInspectionLocation::getAreaId));
+        // 查询近一个月内所有打卡记录
+        TlInspectionLocationLog bean = new TlInspectionLocationLog();
+        DateTime endDate = DateUtil.date();
+        DateTime startDate = DateUtil.offsetDay(endDate, -30);
+        bean.setBeginTime(DateUtil.formatDateTime(startDate));
+        bean.setEndTime(DateUtil.formatDateTime(endDate));
+        List<TlInspectionLocationLog> locationLogList = tlInspectionLocationLogService.selectTlInspectionLocationLogList(bean);
+        // 解析根据日期分组
+        Map<String, List<TlInspectionLocationLog>> dateCollect = locationLogList.stream().collect(Collectors.groupingBy(a -> DateUtil.formatDate(a.getCreateTime())));
+        List<MissLoactionPoint> list = new ArrayList<>();
+        for (Map.Entry<String, List<TlInspectionLocationLog>> stringListEntry : dateCollect.entrySet()) {
+            String dateStr = stringListEntry.getKey();
+            List<TlInspectionLocationLog> value = stringListEntry.getValue();
+            Set<String> cardCollect = value.stream().map(TlInspectionLocationLog::getCheckpointCard).collect(Collectors.toSet());
+            List<String> pointList = CollUtil.subtractToList(locationsSet, cardCollect);
+            for (String s : pointList) {
+                MissLoactionPoint add = new MissLoactionPoint();
+                add.setDateStr(dateStr);
+                add.setLocationName(locationName.get(s).getLocationName());
+                add.setLocationCode(locationName.get(s).getLocationCode());
+                list.add(add);
+            }
+        }
+        CollUtil.sortByProperty(list, "dateStr");
+        ExcelUtil<MissLoactionPoint> util = new ExcelUtil<>(MissLoactionPoint.class);
+        util.exportExcel(response, list, "近一个月内漏打记录数据");
+    }
+
     /**
      * 获取巡检记录管理详细信息
      */

+ 17 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java

@@ -10,6 +10,7 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.service.ISysDictDataService;
 import com.ruoyi.system.service.ISysDictTypeService;
+import com.ruoyi.system.service.ISysRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 数据字典信息
@@ -39,6 +41,9 @@ public class SysDictDataController extends BaseController {
     @Autowired
     private ISysDictTypeService dictTypeService;
 
+    @Autowired
+    private ISysRoleService sysRoleService;
+
     @GetMapping("/list")
     public TableDataInfo list(SysDictData dictData) {
         startPage();
@@ -71,6 +76,18 @@ public class SysDictDataController extends BaseController {
         if (StringUtils.isNull(data)) {
             data = new ArrayList<SysDictData>();
         }
+        // 特殊处理一下,怎么简单实现怎么来
+        Set<String> roleSet = sysRoleService.selectRolePermissionByUserId(getUserId());
+        if (!roleSet.contains("admin")) {
+            List<SysDictData> newData = new ArrayList<>();
+            // 筛选出相应的区域
+            for (SysDictData datum : data) {
+                if (roleSet.contains(datum.getDictValue())) {
+                    newData.add(datum);
+                }
+            }
+            return AjaxResult.success(newData);
+        }
         return AjaxResult.success(data);
     }
 

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -107,7 +107,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
                         "/qdtl/plan/exportSchedule",
                         "/profile/**"
                 ).permitAll()
-                .antMatchers("/common/upload", "/common/download/resource").permitAll()
+                .antMatchers("/common/upload", "/common/download/resource", "/qdtl/log/missExport").permitAll()
                 .antMatchers("/swagger-ui.html").anonymous()
                 .antMatchers("/swagger-resources/**").anonymous()
                 .antMatchers("/webjars/**").anonymous()

+ 20 - 0
ruoyi-system/src/main/java/com/ruoyi/qdtl/domain/MissLoactionPoint.java

@@ -0,0 +1,20 @@
+package com.ruoyi.qdtl.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import lombok.Data;
+
+/**
+ * @Description: TODO
+ * @Author: huangcheng
+ * @Date: 2023/3/7
+ * @Version V1.0
+ */
+@Data
+public class MissLoactionPoint {
+    @Excel(name = "漏打日期")
+    private String dateStr;
+    @Excel(name = "漏打地点", width = 35)
+    private String locationName;
+    @Excel(name = "巡检点编号", width = 20)
+    private String locationCode;
+}

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/qdtl/domain/TlElectricDevice.java

@@ -117,4 +117,6 @@ public class TlElectricDevice extends BaseEntity {
     @Excel(name = "电机发动机号")
     private String engineNumber;
 
+    private String areaId;
+
 }

+ 4 - 4
ruoyi-system/src/main/java/com/ruoyi/qdtl/domain/TlInspectionLocationLog.java

@@ -7,7 +7,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
 import java.util.Date;
-import java.util.List;
+import java.util.Set;
 
 /**
  * 巡检记录管理对象 tl_inspection_location_log
@@ -82,7 +82,7 @@ public class TlInspectionLocationLog extends BaseEntity {
      */
     private String areaId;
 
-    private List<String> areaIds;
+    private Set<String> areaIds;
 
     /**
      * 经纬度
@@ -237,11 +237,11 @@ public class TlInspectionLocationLog extends BaseEntity {
         this.endTime = endTime;
     }
 
-    public List<String> getAreaIds() {
+    public Set<String> getAreaIds() {
         return areaIds;
     }
 
-    public void setAreaIds(List<String> areaIds) {
+    public void setAreaIds(Set<String> areaIds) {
         this.areaIds = areaIds;
     }
 

+ 3 - 1
ruoyi-system/src/main/resources/mapper/qdtl/TlElectricDeviceMapper.xml

@@ -23,6 +23,7 @@
         <result property="driverPhone" column="driver_phone"/>
         <result property="enabledFlag" column="enabled_flag"/>
         <result property="engineNumber" column="engine_number"/>
+        <result property="areaId" column="area_id"/>
     </resultMap>
 
     <sql id="selectTlElectricDeviceVo">
@@ -43,7 +44,8 @@
                driver_name,
                driver_phone,
                enabled_flag,
-               engine_number
+               engine_number,
+               area_id
         from tl_electric_device
     </sql>