Browse Source

新增获取电塔文件

gjs 4 years ago
parent
commit
d3eeb30f9b
18 changed files with 274 additions and 83 deletions
  1. 1 0
      pom.xml
  2. 46 3
      src/main/java/com/macro/mall/tiny/common/util/MyFileUtils.java
  3. 2 0
      src/main/java/com/macro/mall/tiny/config/UploadConfig.java
  4. 2 2
      src/main/java/com/macro/mall/tiny/modules/business/controller/BLineController.java
  5. 1 1
      src/main/java/com/macro/mall/tiny/modules/business/controller/BLineUploadLogController.java
  6. 36 3
      src/main/java/com/macro/mall/tiny/modules/business/controller/BTowerController.java
  7. 11 11
      src/main/java/com/macro/mall/tiny/modules/business/controller/FileController.java
  8. 1 1
      src/main/java/com/macro/mall/tiny/modules/business/converter/EnumConvertFactory.java
  9. 1 1
      src/main/java/com/macro/mall/tiny/modules/business/enums/DirectoryEnum.java
  10. 1 1
      src/main/java/com/macro/mall/tiny/modules/business/enums/IEnum.java
  11. 5 1
      src/main/java/com/macro/mall/tiny/modules/business/mapper/BTowerMapper.java
  12. 8 0
      src/main/java/com/macro/mall/tiny/modules/business/service/BTowerService.java
  13. 2 1
      src/main/java/com/macro/mall/tiny/modules/business/service/FileService.java
  14. 10 17
      src/main/java/com/macro/mall/tiny/modules/business/service/impl/AsyncHandler.java
  15. 88 2
      src/main/java/com/macro/mall/tiny/modules/business/service/impl/BTowerServiceImpl.java
  16. 3 34
      src/main/java/com/macro/mall/tiny/modules/business/service/impl/FileServiceImpl.java
  17. 21 0
      src/main/java/com/macro/mall/tiny/security/util/AuthUtil.java
  18. 35 5
      src/main/resources/mapper/business/BTowerMapper.xml

+ 1 - 0
pom.xml

@@ -96,6 +96,7 @@
             <artifactId>spring-boot-starter-data-redis</artifactId>
         </dependency>
         <!--SpringSecurity依赖配置-->
+        <!--SpringSecurity依赖配置-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-security</artifactId>

+ 46 - 3
src/main/java/com/macro/mall/tiny/common/util/MyFileUtils.java

@@ -1,10 +1,16 @@
 package com.macro.mall.tiny.common.util;
 
 
+import com.google.common.collect.Lists;
+import com.macro.mall.tiny.config.UploadConfig;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.*;
+import java.util.Arrays;
+import java.util.List;
 import java.util.UUID;
+import java.util.stream.Collectors;
 
 /**
  * 文件操作工具类
@@ -13,6 +19,7 @@ public class MyFileUtils {
 
     /**
      * 写入文件
+     *
      * @param target
      * @param src
      * @throws IOException
@@ -22,7 +29,7 @@ public class MyFileUtils {
         byte[] buf = new byte[1024];
         int len;
         while (-1 != (len = src.read(buf))) {
-            os.write(buf,0,len);
+            os.write(buf, 0, len);
         }
         os.flush();
         os.close();
@@ -30,6 +37,7 @@ public class MyFileUtils {
 
     /**
      * 分块写入文件
+     *
      * @param target
      * @param targetSize
      * @param src
@@ -39,7 +47,7 @@ public class MyFileUtils {
      * @throws IOException
      */
     public static void writeWithBlock(String target, Long targetSize, InputStream src, Long srcSize, Integer chunks, Integer chunk) throws IOException {
-        RandomAccessFile randomAccessFile = new RandomAccessFile(target,"rw");
+        RandomAccessFile randomAccessFile = new RandomAccessFile(target, "rw");
         randomAccessFile.setLength(targetSize);
         if (chunk == chunks - 1 && chunk != 0) {
             randomAccessFile.seek(chunk * (targetSize - srcSize) / chunk);
@@ -49,13 +57,14 @@ public class MyFileUtils {
         byte[] buf = new byte[1024];
         int len;
         while (-1 != (len = src.read(buf))) {
-            randomAccessFile.write(buf,0,len);
+            randomAccessFile.write(buf, 0, len);
         }
         randomAccessFile.close();
     }
 
     /**
      * 生成随机文件名
+     *
      * @return
      */
     public static String generateFileName() {
@@ -64,6 +73,7 @@ public class MyFileUtils {
 
     /**
      * 获取文件扩展名
+     *
      * @param file
      * @return
      */
@@ -71,4 +81,37 @@ public class MyFileUtils {
         String fileName = file.getOriginalFilename();
         return fileName.substring(fileName.lastIndexOf(".") + 1);
     }
+
+    public static String getAuthFilePath(String basePath, String fileName, boolean auth) {
+        if (StringUtils.isBlank(basePath)||StringUtils.isBlank(fileName)) return "";
+        String resultPath = basePath + UploadConfig.SEPARATOR + fileName;
+        File file = new File(resultPath);
+        if (file.exists()) {
+            return resultPath;
+        }
+        resultPath = basePath + UploadConfig.SEPARATOR + UploadConfig.AUTH_STR + fileName;
+        file = new File(resultPath);
+        if (auth && file.exists()) {
+            return resultPath;
+        }
+        return "";
+    }
+
+    public static List<String> getSonPaths(String basePath, boolean auth) {
+        return getSonPaths(basePath, null, auth);
+    }
+
+    public static List<String> getSonPaths(String basePath, FilenameFilter filter, boolean auth) {
+        if (StringUtils.isBlank(basePath)) return Lists.newArrayList();
+        File file = new File(basePath);
+        if (file.exists() && file.isDirectory()) {
+            String[] sonStrs = filter == null ? file.list() : file.list(filter);
+            if (sonStrs == null) return Lists.newArrayList();
+            return Arrays.stream(sonStrs)
+                    .filter(son -> auth || !son.contains("~"))
+                    .map(son -> basePath + UploadConfig.SEPARATOR + son)
+                    .collect(Collectors.toList());
+        }
+        return Lists.newArrayList();
+    }
 }

+ 2 - 0
src/main/java/com/macro/mall/tiny/config/UploadConfig.java

@@ -9,6 +9,8 @@ public class UploadConfig {
     public static String path;
     public static String tempPath;
     public static String powerPath;
+    public static final String SEPARATOR = "/";
+    public static final char AUTH_STR = '~';
 
     @Value("${upload.path}")
     public void setPath(String path) {

+ 2 - 2
src/main/java/com/macro/mall/tiny/modules/business/controller/BLineController.java

@@ -22,8 +22,8 @@ import java.util.List;
  * @since 2021-03-24
  */
 @RestController
-@Api(tags = "BLineController", description = "线路管理")
-@RequestMapping("line")
+@Api(tags = "BLineController", description = "提供线路相关API")
+@RequestMapping("/line")
 public class BLineController {
 
     @Autowired

+ 1 - 1
src/main/java/com/macro/mall/tiny/modules/business/controller/BLineUploadLogController.java

@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
  * @since 2021-03-28
  */
 @RestController
-@RequestMapping("/business/bLineUploadLog")
+@RequestMapping("/lineUploadLog")
 public class BLineUploadLogController {
 
 }

+ 36 - 3
src/main/java/com/macro/mall/tiny/modules/business/controller/BTowerController.java

@@ -1,9 +1,21 @@
 package com.macro.mall.tiny.modules.business.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.macro.mall.tiny.common.api.CommonResult;
+import com.macro.mall.tiny.domain.AdminUserDetails;
+import com.macro.mall.tiny.modules.business.model.BTower;
+import com.macro.mall.tiny.modules.business.service.BTowerService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import java.security.Principal;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -14,8 +26,29 @@ import org.springframework.web.bind.annotation.RestController;
  * @since 2021-03-24
  */
 @RestController
-@RequestMapping("/business/bTower")
+@RequestMapping("/tower")
+@Api(tags = "BTowerController", description = "提供电塔相关API")
 public class BTowerController {
 
+    @Autowired
+    BTowerService towerService;
+
+    @ApiOperation("获取电塔基本资料")
+    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
+    @ResponseBody
+    public CommonResult<BTower> getItem(@PathVariable Long id) {
+        BTower tower = towerService.getById(id);
+        return CommonResult.success(tower);
+    }
+
+    @ApiOperation("获取电塔文件资料")
+    @RequestMapping(value = "/getData/{id}", method = RequestMethod.GET)
+    @ResponseBody
+    public CommonResult<Map<String, List<String>>> getData(@PathVariable Long id) {
+        AdminUserDetails userDetails = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+        Map<String, List<String>> data = towerService.getData(id, userDetails);
+        return CommonResult.success(data);
+    }
+
 }
 

+ 11 - 11
src/main/java/com/macro/mall/tiny/modules/business/controller/FileController.java

@@ -1,27 +1,25 @@
 package com.macro.mall.tiny.modules.business.controller;
 
 import com.macro.mall.tiny.common.api.CommonResult;
-import com.macro.mall.tiny.config.UploadConfig;
+import com.macro.mall.tiny.domain.AdminUserDetails;
 import com.macro.mall.tiny.modules.business.dto.FileUploadParam;
 import com.macro.mall.tiny.modules.business.service.FileService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.apache.tomcat.util.http.fileupload.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.ClassPathResource;
+import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.*;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import java.security.Principal;
 
 /**
  * 大文件上传
@@ -46,7 +44,7 @@ public class FileController {
      */
     @ApiOperation("文件上传接口")
     @PostMapping("/upload")
-    public void upload(FileUploadParam fileUploadParam, Principal principal) throws IOException {
+    public CommonResult<String> upload(FileUploadParam fileUploadParam) throws IOException {
         String name = fileUploadParam.getName();
         String lineName = fileUploadParam.getLineName();
         Long provinceId = fileUploadParam.getProvince();
@@ -54,15 +52,17 @@ public class FileController {
         Integer chunks = fileUploadParam.getChunks();
         Integer chunk = fileUploadParam.getChunk();
         MultipartFile file = fileUploadParam.getFile();
+        AdminUserDetails userDetails = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
 
         if (chunks != null && chunks != 0) {
-            fileService.uploadWithBlock(name, lineName, provinceId, size, chunks, chunk, file, principal);
+            fileService.uploadWithBlock(name, lineName, provinceId, size, chunks, chunk, file, userDetails);
         } else {
             fileService.upload(file);
         }
+        return CommonResult.success("上传成功,后台正在处理...");
     }
 
-    @ApiOperation("文件下载接口")
+    /*@ApiOperation("文件下载接口")
     @GetMapping("/download")
     public Object downloadFile(@RequestParam String fileName, final HttpServletResponse response) {
         OutputStream os = null;
@@ -101,7 +101,7 @@ public class FileController {
             }
         }
         return null;
-    }
+    }*/
 
     /**
      * 下载模板

+ 1 - 1
src/main/java/com/macro/mall/tiny/modules/business/converter/EnumConvertFactory.java

@@ -1,6 +1,6 @@
 package com.macro.mall.tiny.modules.business.converter;
 
-import com.macro.mall.tiny.modules.business.enume.IEnum;
+import com.macro.mall.tiny.modules.business.enums.IEnum;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.core.convert.converter.Converter;
 import org.springframework.core.convert.converter.ConverterFactory;

+ 1 - 1
src/main/java/com/macro/mall/tiny/modules/business/enume/DirectoryEnum.java → src/main/java/com/macro/mall/tiny/modules/business/enums/DirectoryEnum.java

@@ -1,4 +1,4 @@
-package com.macro.mall.tiny.modules.business.enume;
+package com.macro.mall.tiny.modules.business.enums;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;

+ 1 - 1
src/main/java/com/macro/mall/tiny/modules/business/enume/IEnum.java → src/main/java/com/macro/mall/tiny/modules/business/enums/IEnum.java

@@ -1,4 +1,4 @@
-package com.macro.mall.tiny.modules.business.enume;
+package com.macro.mall.tiny.modules.business.enums;
 
 /**
  * @author gjs

+ 5 - 1
src/main/java/com/macro/mall/tiny/modules/business/mapper/BTowerMapper.java

@@ -2,6 +2,9 @@ package com.macro.mall.tiny.modules.business.mapper;
 
 import com.macro.mall.tiny.modules.business.model.BTower;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,5 +16,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface BTowerMapper extends BaseMapper<BTower> {
 
-    
+    long saveAndUpdate(@Param("towerList") List<BTower> towerList);
+
 }

+ 8 - 0
src/main/java/com/macro/mall/tiny/modules/business/service/BTowerService.java

@@ -1,8 +1,13 @@
 package com.macro.mall.tiny.modules.business.service;
 
+import com.macro.mall.tiny.domain.AdminUserDetails;
 import com.macro.mall.tiny.modules.business.model.BTower;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.security.Principal;
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 塔表 服务类
@@ -13,4 +18,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface BTowerService extends IService<BTower> {
 
+    long saveAndUpdate(List<BTower> towerList);
+
+    Map<String, List<String>> getData(Long id, AdminUserDetails userDetails);
 }

+ 2 - 1
src/main/java/com/macro/mall/tiny/modules/business/service/FileService.java

@@ -1,5 +1,6 @@
 package com.macro.mall.tiny.modules.business.service;
 
+import com.macro.mall.tiny.domain.AdminUserDetails;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -14,5 +15,5 @@ public interface FileService {
 
     void upload(MultipartFile file) throws IOException;
 
-    void uploadWithBlock(String name, String lineName, Long provinceId, Long size, Integer chunks, Integer chunk, MultipartFile file, Principal principal) throws IOException;
+    void uploadWithBlock(String name, String lineName, Long provinceId, Long size, Integer chunks, Integer chunk, MultipartFile file, AdminUserDetails userDetails) throws IOException;
 }

+ 10 - 17
src/main/java/com/macro/mall/tiny/modules/business/service/impl/AsyncHandler.java

@@ -6,14 +6,15 @@ import com.macro.mall.tiny.common.exception.ApiException;
 import com.macro.mall.tiny.common.exception.Asserts;
 import com.macro.mall.tiny.common.util.CommonUtils;
 import com.macro.mall.tiny.config.UploadConfig;
-import com.macro.mall.tiny.modules.business.enume.DirectoryEnum;
+import com.macro.mall.tiny.domain.AdminUserDetails;
+import com.macro.mall.tiny.modules.business.enums.DirectoryEnum;
 import com.macro.mall.tiny.modules.business.model.*;
 import com.macro.mall.tiny.modules.business.service.BLineService;
 import com.macro.mall.tiny.modules.business.service.BLineUploadLogService;
 import com.macro.mall.tiny.modules.business.service.BTowerService;
 import com.macro.mall.tiny.modules.ums.model.UmsAdmin;
-import com.macro.mall.tiny.modules.ums.model.UmsRole;
 import com.macro.mall.tiny.modules.ums.service.UmsAdminService;
+import com.macro.mall.tiny.security.util.AuthUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -30,7 +31,6 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.StandardOpenOption;
-import java.security.Principal;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -68,26 +68,19 @@ public class AsyncHandler {
 
     @Async
     @Transactional
-    public void handleDocument(Long provinceId, String fileSource, String lineName, Principal principal) {
+    public void handleDocument(Long provinceId, String fileSource, String lineName, AdminUserDetails userDetails) {
         StringBuilder warnMsg = new StringBuilder();
         try {
             if (provinceId == null) Asserts.fail("上传失败,省份不能为空,provinceId:" + provinceId);
-            if (principal == null) Asserts.fail("上传失败,未获取到当前用户");
+            if (userDetails == null) Asserts.fail("上传失败,未获取到当前用户");
 
             BProvince province = provinceService.getById(provinceId);
             String provinceName = province.getProvince();
 
-            String username = principal.getName();
+            String username = userDetails.getUsername();
             UmsAdmin umsAdmin = adminService.getAdminByUsername(username);
             Long userId = umsAdmin.getId();
-            boolean canCover = false;
-            List<UmsRole> roleList = adminService.getRoleList(umsAdmin.getId());
-            for (UmsRole umsRole : roleList) {
-                if (umsRole.getName().equals("超级管理员")) {
-                    canCover = true;
-                    break;
-                }
-            }
+            boolean canCover = AuthUtil.checkAccess(userDetails, "/cover");
             // 查看是否为线路创建者
             QueryWrapper<BLine> wrapper = new QueryWrapper<>();
             wrapper.lambda().eq(BLine::getName, lineName);
@@ -132,11 +125,11 @@ public class AsyncHandler {
                         String entryName = zipEntry.getName();
 
                         // 解析各项路径
-                        String[] pathStr = entryName.split("/");
+                        String[] pathStr = entryName.split(UploadConfig.SEPARATOR);
                         if (pathStr.length < 2) {
                             continue;
                         }
-                        String SecDirectoryName = pathStr[1].charAt(0) == '#' ? pathStr[1].substring(1) : pathStr[1];
+                        String SecDirectoryName = pathStr[1].charAt(0) == UploadConfig.AUTH_STR ? pathStr[1].substring(1) : pathStr[1];
                         if (booleanHashMap.get(SecDirectoryName) != null) {
                             booleanHashMap.put(SecDirectoryName, true);
                         } else if ("杆塔信息录入.xlsx".equals(SecDirectoryName) || "杆塔信息录入.xls".equals(SecDirectoryName)) {
@@ -158,7 +151,7 @@ public class AsyncHandler {
                                 tower.setLineId(finalLine.getId());
                                 return tower;
                             }).collect(Collectors.toList());
-                            towerService.saveBatch(towerList);
+                            towerService.saveAndUpdate(towerList);
                             continue;
                         } else {
                             warnMsg.append(entryName).append("第二层目录解析出错;");

+ 88 - 2
src/main/java/com/macro/mall/tiny/modules/business/service/impl/BTowerServiceImpl.java

@@ -1,11 +1,31 @@
 package com.macro.mall.tiny.modules.business.service.impl;
 
-import com.macro.mall.tiny.modules.business.model.BTower;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.macro.mall.tiny.common.exception.Asserts;
+import com.macro.mall.tiny.common.util.MyFileUtils;
+import com.macro.mall.tiny.config.UploadConfig;
+import com.macro.mall.tiny.domain.AdminUserDetails;
+import com.macro.mall.tiny.modules.business.enums.DirectoryEnum;
+import com.macro.mall.tiny.modules.business.mapper.BLineMapper;
+import com.macro.mall.tiny.modules.business.mapper.BProvinceMapper;
 import com.macro.mall.tiny.modules.business.mapper.BTowerMapper;
+import com.macro.mall.tiny.modules.business.model.BLine;
+import com.macro.mall.tiny.modules.business.model.BProvince;
+import com.macro.mall.tiny.modules.business.model.BTower;
 import com.macro.mall.tiny.modules.business.service.BTowerService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.macro.mall.tiny.modules.ums.service.UmsAdminService;
+import com.macro.mall.tiny.security.util.AuthUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 塔表 服务实现类
@@ -17,4 +37,70 @@ import org.springframework.stereotype.Service;
 @Service
 public class BTowerServiceImpl extends ServiceImpl<BTowerMapper, BTower> implements BTowerService {
 
+    @Autowired
+    BTowerMapper towerMapper;
+
+    @Autowired
+    BLineMapper lineMapper;
+
+    @Autowired
+    BProvinceMapper provinceMapper;
+
+    @Override
+    public long saveAndUpdate(List<BTower> towerList) {
+        return towerMapper.saveAndUpdate(towerList);
+    }
+
+    @Override
+    public Map<String, List<String>> getData(Long id, AdminUserDetails userDetails) {
+        if (userDetails == null) {
+            Asserts.fail("查询失败,未获取到当前用户");
+        }
+        boolean auth = AuthUtil.checkAccess(userDetails, "/visit");
+
+        HashMap<String, List<String>> resultMap = new HashMap<>();
+
+        BTower tower = towerMapper.selectById(id);
+        if (tower == null) Asserts.fail("该电塔不存在,id:" + id);
+        BLine line = lineMapper.selectById(tower.getLineId());
+        if (line == null) Asserts.fail("该电塔所在的线路不存在,lineId:" + tower.getLineId());
+        BProvince province = provinceMapper.selectById(line.getProvinceId());
+        String basePath = UploadConfig.powerPath +
+                province.getProvince() + UploadConfig.SEPARATOR +
+                line.getName();
+
+        String SecBasePath;
+        String ThirdBasePath;
+        List<String> sonList;
+        // 获取3杆塔图纸
+        String shape = tower.getShape();
+        int lastIndex = shape.lastIndexOf('-');
+        if (lastIndex > 0) {
+            shape = shape.substring(0, lastIndex).replace('/', ' ');
+        }
+        if (StringUtils.isNotBlank(shape)) {
+            SecBasePath = MyFileUtils.getAuthFilePath(basePath, DirectoryEnum.TOWER_PIC.getName(), auth);
+            ThirdBasePath = MyFileUtils.getAuthFilePath(SecBasePath, shape, auth);
+            sonList = MyFileUtils.getSonPaths(ThirdBasePath, auth);
+        } else {
+            sonList = Lists.newArrayList();
+        }
+        resultMap.put("shapeFileList", sonList);
+
+        // 获取6地线金具串图
+        SecBasePath = MyFileUtils.getAuthFilePath(basePath, DirectoryEnum.EARTH_WIRE_HARD_PIC.getName(), auth);
+        String hardwareType = tower.getHardwareType().replace('/', ' ');
+        FilenameFilter hardwareTypeFilter = (dir, name) -> name.startsWith(hardwareType) || (name.startsWith(UploadConfig.AUTH_STR + hardwareType) && auth);
+        sonList = MyFileUtils.getSonPaths(SecBasePath, hardwareTypeFilter, auth);
+        resultMap.put("hardwareFileList", sonList);
+
+        // 获取7班组巡检照片
+        SecBasePath = MyFileUtils.getAuthFilePath(basePath, DirectoryEnum.TEAM_CHECK_PIC.getName(), auth);
+        String towerName = tower.getName();
+        ThirdBasePath = MyFileUtils.getAuthFilePath(SecBasePath, towerName, auth);
+        sonList = MyFileUtils.getSonPaths(ThirdBasePath, auth);
+        resultMap.put("teamCheckFileList", sonList);
+
+        return resultMap;
+    }
 }

+ 3 - 34
src/main/java/com/macro/mall/tiny/modules/business/service/impl/FileServiceImpl.java

@@ -1,47 +1,16 @@
 package com.macro.mall.tiny.modules.business.service.impl;
 
-import com.alibaba.excel.EasyExcel;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.macro.mall.tiny.common.exception.ApiException;
-import com.macro.mall.tiny.common.exception.Asserts;
-import com.macro.mall.tiny.common.util.CommonUtils;
 import com.macro.mall.tiny.common.util.MyFileUtils;
 import com.macro.mall.tiny.config.UploadConfig;
-import com.macro.mall.tiny.modules.business.enume.DirectoryEnum;
-import com.macro.mall.tiny.modules.business.model.*;
-import com.macro.mall.tiny.modules.business.service.BLineService;
-import com.macro.mall.tiny.modules.business.service.BLineUploadLogService;
-import com.macro.mall.tiny.modules.business.service.BTowerService;
+import com.macro.mall.tiny.domain.AdminUserDetails;
 import com.macro.mall.tiny.modules.business.service.FileService;
-import com.macro.mall.tiny.modules.ums.model.UmsAdmin;
-import com.macro.mall.tiny.modules.ums.model.UmsRole;
-import com.macro.mall.tiny.modules.ums.service.UmsAdminService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.aop.framework.AopContext;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.math.BigDecimal;
-import java.nio.charset.Charset;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
-import java.security.Principal;
-import java.util.*;
-import java.util.stream.Collectors;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import java.util.zip.ZipInputStream;
 
 import static com.macro.mall.tiny.common.util.UploadUtils.*;
 
@@ -83,14 +52,14 @@ public class FileServiceImpl implements FileService {
                                 Integer chunks,
                                 Integer chunk,
                                 MultipartFile file,
-                                Principal principal) throws IOException {
+                                AdminUserDetails userDetails) throws IOException {
         putChunkMap(name, chunks);
         String target = UploadConfig.tempPath + name;
         MyFileUtils.writeWithBlock(target, size, file.getInputStream(), file.getSize(), chunks, chunk);
         addChunk(name, chunk);
         if (isUploaded(name)) {
             removeKey(name);
-            asyncHandler.handleDocument(provinceId, target, lineName, principal);
+            asyncHandler.handleDocument(provinceId, target, lineName, userDetails);
         }
     }
 

+ 21 - 0
src/main/java/com/macro/mall/tiny/security/util/AuthUtil.java

@@ -0,0 +1,21 @@
+package com.macro.mall.tiny.security.util;
+
+import com.macro.mall.tiny.domain.AdminUserDetails;
+import org.springframework.security.core.GrantedAuthority;
+
+/**
+ * @author gjs
+ * @description
+ * @date 2021/3/29 22:01
+ */
+public class AuthUtil {
+
+    public static boolean checkAccess(AdminUserDetails userDetails, String resource) {
+        for (GrantedAuthority authority : userDetails.getAuthorities()) {
+            if (resource.equals(authority.getAuthority())) {
+                return true;
+            }
+        }
+        return false;
+    }
+}

+ 35 - 5
src/main/resources/mapper/business/BTowerMapper.xml

@@ -2,13 +2,43 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.macro.mall.tiny.modules.business.mapper.BTowerMapper">
 
+    <insert id="saveAndUpdate" parameterType="List">
+        INSERT INTO b_tower (
+        sort,
+        name,
+        shape,
+        hardware_type,
+        line_id,
+        lon,
+        lat
+        )
+        VALUES
+        <foreach collection="towerList" item="item" separator=",">
+            (
+            #{item.sort},
+            #{item.name},
+            #{item.shape},
+            #{item.hardwareType},
+            #{item.lineId},
+            #{item.lon},
+            #{item.lat}
+            )
+        </foreach>
+        ON DUPLICATE KEY UPDATE
+        sort = VALUES(sort),
+        shape = VALUES(shape),
+        hardware_type = VALUES(hardware_type),
+        lon = VALUES(lon),
+        lat = VALUES(lat)
+    </insert>
+
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.macro.mall.tiny.modules.business.model.BTower">
-        <id column="id" property="id" />
-        <result column="name" property="name" />
-        <result column="shape" property="shape" />
-        <result column="hardware_type" property="hardwareType" />
-        <result column="line_id" property="lineId" />
+        <id column="id" property="id"/>
+        <result column="name" property="name"/>
+        <result column="shape" property="shape"/>
+        <result column="hardware_type" property="hardwareType"/>
+        <result column="line_id" property="lineId"/>
     </resultMap>
 
 </mapper>