Commit fac8b470d03f0b9e1cd782a716aec11e15cae7ec

Authored by liujun001
1 parent 94b83dba

优化图片上传和显示

Bsth-admin/src/main/java/com/ruoyi/controller/dss/DssEquipmentController.java
@@ -103,7 +103,7 @@ public class DssEquipmentController extends BaseController { @@ -103,7 +103,7 @@ public class DssEquipmentController extends BaseController {
103 //LoginUser loginUser = (LoginUser) authentication.getPrincipal(); 103 //LoginUser loginUser = (LoginUser) authentication.getPrincipal();
104 LoginUser loginUser = new LoginUser(); 104 LoginUser loginUser = new LoginUser();
105 loginUser.setUserId(Convert.toLong(equipment.getId())); 105 loginUser.setUserId(Convert.toLong(equipment.getId()));
106 - loginUser.setDeptId(Convert.toLong(equipment.getDeviceId())); 106 + loginUser.setDeviceId(equipment.getDeviceId());
107 loginUser.setUser(new SysUser()); 107 loginUser.setUser(new SysUser());
108 108
109 109
Bsth-admin/src/main/java/com/ruoyi/driver/controller/DriverController.java
@@ -3,6 +3,7 @@ package com.ruoyi.driver.controller; @@ -3,6 +3,7 @@ package com.ruoyi.driver.controller;
3 import com.ruoyi.common.annotation.Log; 3 import com.ruoyi.common.annotation.Log;
4 import com.ruoyi.common.core.controller.BaseController; 4 import com.ruoyi.common.core.controller.BaseController;
5 import com.ruoyi.common.core.domain.AjaxResult; 5 import com.ruoyi.common.core.domain.AjaxResult;
  6 +import com.ruoyi.common.core.domain.entity.SysDictData;
6 import com.ruoyi.common.core.page.TableDataInfo; 7 import com.ruoyi.common.core.page.TableDataInfo;
7 import com.ruoyi.common.enums.BusinessType; 8 import com.ruoyi.common.enums.BusinessType;
8 import com.ruoyi.common.global.Result; 9 import com.ruoyi.common.global.Result;
@@ -13,9 +14,11 @@ import com.ruoyi.pojo.request.DriverRequestVo; @@ -13,9 +14,11 @@ import com.ruoyi.pojo.request.DriverRequestVo;
13 import com.ruoyi.pojo.request.DriverSignInRequestVo; 14 import com.ruoyi.pojo.request.DriverSignInRequestVo;
14 import com.ruoyi.pojo.request.FaceRegistrationFeedbackVo; 15 import com.ruoyi.pojo.request.FaceRegistrationFeedbackVo;
15 import com.ruoyi.pojo.request.FaceUpdateReqVo; 16 import com.ruoyi.pojo.request.FaceUpdateReqVo;
  17 +import com.ruoyi.system.service.ISysDictDataService;
16 import io.swagger.annotations.Api; 18 import io.swagger.annotations.Api;
17 import io.swagger.annotations.ApiOperation; 19 import io.swagger.annotations.ApiOperation;
18 import io.swagger.annotations.ApiParam; 20 import io.swagger.annotations.ApiParam;
  21 +import org.apache.commons.lang3.StringUtils;
19 import org.springframework.beans.factory.annotation.Autowired; 22 import org.springframework.beans.factory.annotation.Autowired;
20 import org.springframework.validation.annotation.Validated; 23 import org.springframework.validation.annotation.Validated;
21 import org.springframework.web.bind.annotation.*; 24 import org.springframework.web.bind.annotation.*;
@@ -24,6 +27,7 @@ import org.springframework.web.multipart.MultipartFile; @@ -24,6 +27,7 @@ import org.springframework.web.multipart.MultipartFile;
24 import javax.servlet.http.HttpServletRequest; 27 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse; 28 import javax.servlet.http.HttpServletResponse;
26 import java.util.List; 29 import java.util.List;
  30 +import java.util.Objects;
27 31
28 /** 32 /**
29 * 驾驶员信息Controller 33 * 驾驶员信息Controller
@@ -37,6 +41,8 @@ import java.util.List; @@ -37,6 +41,8 @@ import java.util.List;
37 public class DriverController extends BaseController { 41 public class DriverController extends BaseController {
38 @Autowired 42 @Autowired
39 private IDriverService driverService; 43 private IDriverService driverService;
  44 + @Autowired
  45 + private ISysDictDataService sysDictDataService;
40 46
41 47
42 /** 48 /**
@@ -106,7 +112,14 @@ public class DriverController extends BaseController { @@ -106,7 +112,14 @@ public class DriverController extends BaseController {
106 @GetMapping(value = "/{id}") 112 @GetMapping(value = "/{id}")
107 @ApiOperation("获取驾驶员信息详细信息") 113 @ApiOperation("获取驾驶员信息详细信息")
108 public AjaxResult getInfo(@ApiParam(value = "id", required = true) @PathVariable("id") Long id) { 114 public AjaxResult getInfo(@ApiParam(value = "id", required = true) @PathVariable("id") Long id) {
109 - return success(driverService.selectDriverById(id)); 115 + Driver driver = driverService.selectDriverById(id);
  116 + if (Objects.nonNull(driver)) {
  117 + SysDictData source = sysDictDataService.getResourceBaseUrl();
  118 + if (source.isCombationVal()) {
  119 + driver.setImage(sysDictDataService.combationValue(driver.getImage(), source));
  120 + }
  121 + }
  122 + return success(driver);
110 } 123 }
111 124
112 /** 125 /**
@@ -117,6 +130,7 @@ public class DriverController extends BaseController { @@ -117,6 +130,7 @@ public class DriverController extends BaseController {
117 @PostMapping 130 @PostMapping
118 @ApiOperation("新增驾驶员信息(后台)") 131 @ApiOperation("新增驾驶员信息(后台)")
119 public AjaxResult add(@ApiParam @RequestBody Driver driver) { 132 public AjaxResult add(@ApiParam @RequestBody Driver driver) {
  133 + driver.setImage(sysDictDataService.splitURL(driver.getImage()));
120 return toAjax(driverService.insertDriver(driver)); 134 return toAjax(driverService.insertDriver(driver));
121 } 135 }
122 136
@@ -139,9 +153,12 @@ public class DriverController extends BaseController { @@ -139,9 +153,12 @@ public class DriverController extends BaseController {
139 */ 153 */
140 // @PreAuthorize("@ss.hasPermi('driver:driver:edit')") 154 // @PreAuthorize("@ss.hasPermi('driver:driver:edit')")
141 // @Log(title = "驾驶员信息", businessType = BusinessType.UPDATE) 155 // @Log(title = "驾驶员信息", businessType = BusinessType.UPDATE)
142 - @PutMapping 156 + @PutMapping("/edit")
143 @ApiOperation("修改驾驶员信息") 157 @ApiOperation("修改驾驶员信息")
144 public AjaxResult edit(@ApiParam("driver") @RequestBody Driver driver) { 158 public AjaxResult edit(@ApiParam("driver") @RequestBody Driver driver) {
  159 + if (StringUtils.isNotEmpty(driver.getImage())) {
  160 + driver.setImage(sysDictDataService.splitURL(driver.getImage()));
  161 + }
145 return toAjax(driverService.updateDriver(driver) + 1); 162 return toAjax(driverService.updateDriver(driver) + 1);
146 } 163 }
147 164
@@ -191,7 +208,17 @@ public class DriverController extends BaseController { @@ -191,7 +208,17 @@ public class DriverController extends BaseController {
191 @ApiOperation("驾驶员人脸上传接口") 208 @ApiOperation("驾驶员人脸上传接口")
192 public AjaxResult uploadImage(MultipartFile file) { 209 public AjaxResult uploadImage(MultipartFile file) {
193 try { 210 try {
194 - return driverService.uploadImage(file); 211 + return driverService.uploadImage(file, null);
  212 + } catch (Exception e) {
  213 + return AjaxResult.error(e.getMessage());
  214 + }
  215 + }
  216 +
  217 + @PostMapping("/upload/{id}")
  218 + @ApiOperation("驾驶员人脸上传接口")
  219 + public AjaxResult uploadImage(MultipartFile file, @PathVariable("id") Integer id) {
  220 + try {
  221 + return driverService.uploadImage(file, id);
195 } catch (Exception e) { 222 } catch (Exception e) {
196 return AjaxResult.error(e.getMessage()); 223 return AjaxResult.error(e.getMessage());
197 } 224 }
Bsth-admin/src/main/java/com/ruoyi/driver/service/IDriverService.java
@@ -88,7 +88,7 @@ public interface IDriverService extends IService<Driver> @@ -88,7 +88,7 @@ public interface IDriverService extends IService<Driver>
88 88
89 AjaxResult checkJobCode(Driver jobCode); 89 AjaxResult checkJobCode(Driver jobCode);
90 90
91 - AjaxResult uploadImage(MultipartFile file) throws InvalidExtensionException, IOException; 91 + AjaxResult uploadImage(MultipartFile file,Integer id) throws InvalidExtensionException, IOException;
92 92
93 void downloadHeadImage(String jobCode, HttpServletResponse response); 93 void downloadHeadImage(String jobCode, HttpServletResponse response);
94 94
Bsth-admin/src/main/java/com/ruoyi/driver/service/impl/DriverServiceImpl.java
@@ -45,6 +45,7 @@ import com.ruoyi.utils.ConstDateUtil; @@ -45,6 +45,7 @@ import com.ruoyi.utils.ConstDateUtil;
45 import com.ruoyi.utils.ListUtils; 45 import com.ruoyi.utils.ListUtils;
46 import org.apache.commons.collections4.CollectionUtils; 46 import org.apache.commons.collections4.CollectionUtils;
47 import org.apache.commons.io.FilenameUtils; 47 import org.apache.commons.io.FilenameUtils;
  48 +import org.apache.commons.lang3.RandomUtils;
48 import org.apache.commons.lang3.StringUtils; 49 import org.apache.commons.lang3.StringUtils;
49 import org.slf4j.Logger; 50 import org.slf4j.Logger;
50 import org.slf4j.LoggerFactory; 51 import org.slf4j.LoggerFactory;
@@ -269,9 +270,11 @@ public class DriverServiceImpl extends ServiceImpl<DriverMapper, Driver> impleme @@ -269,9 +270,11 @@ public class DriverServiceImpl extends ServiceImpl<DriverMapper, Driver> impleme
269 // 修改排班表scheduling 以及缓存信息 270 // 修改排班表scheduling 以及缓存信息
270 List<DriverScheduling> driverSchedulings = cache.getCacheScheduling(ConstDateUtil.getStringNowLocalDate("-")).get(driver.getJobCode()); 271 List<DriverScheduling> driverSchedulings = cache.getCacheScheduling(ConstDateUtil.getStringNowLocalDate("-")).get(driver.getJobCode());
271 // 只改变车队信息 其他信息由调度接口 和 人事系统决定 本来是不修改的但是人事数据有问题 272 // 只改变车队信息 其他信息由调度接口 和 人事系统决定 本来是不修改的但是人事数据有问题
272 - for (DriverScheduling scheduling : driverSchedulings) {  
273 - if (StringUtil.isNotEmpty(driver.getFleetName())) {  
274 - scheduling.setFleetName(driver.getFleetName()); 273 + if(CollectionUtils.isNotEmpty(driverSchedulings)) {
  274 + for (DriverScheduling scheduling : driverSchedulings) {
  275 + if (StringUtil.isNotEmpty(driver.getFleetName())) {
  276 + scheduling.setFleetName(driver.getFleetName());
  277 + }
275 } 278 }
276 } 279 }
277 return driverMapper.updateDriver(driver); 280 return driverMapper.updateDriver(driver);
@@ -356,7 +359,7 @@ public class DriverServiceImpl extends ServiceImpl&lt;DriverMapper, Driver&gt; impleme @@ -356,7 +359,7 @@ public class DriverServiceImpl extends ServiceImpl&lt;DriverMapper, Driver&gt; impleme
356 } 359 }
357 360
358 @Override 361 @Override
359 - public AjaxResult uploadImage(MultipartFile file) throws InvalidExtensionException, IOException { 362 + public AjaxResult uploadImage(MultipartFile file,Integer id) throws InvalidExtensionException, IOException {
360 // 上传并返回新文件名称 363 // 上传并返回新文件名称
361 // 上传文件路径 364 // 上传文件路径
362 String baseUrl = RuoYiConfig.getUploadPath() + headImagePre; 365 String baseUrl = RuoYiConfig.getUploadPath() + headImagePre;
@@ -364,13 +367,23 @@ public class DriverServiceImpl extends ServiceImpl&lt;DriverMapper, Driver&gt; impleme @@ -364,13 +367,23 @@ public class DriverServiceImpl extends ServiceImpl&lt;DriverMapper, Driver&gt; impleme
364 FileUploadUtils.assertAllowed(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION); 367 FileUploadUtils.assertAllowed(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
365 // 后期可以通过请求头拿到对应的工号 368 // 后期可以通过请求头拿到对应的工号
366 String fileName = FilenameUtils.getBaseName(file.getOriginalFilename()) + "." + FileUploadUtils.getExtension(file); 369 String fileName = FilenameUtils.getBaseName(file.getOriginalFilename()) + "." + FileUploadUtils.getExtension(file);
  370 + if(Objects.nonNull(id)){
  371 + fileName = StringUtils.join(id,"/",fileName);
  372 + }else{
  373 + fileName = StringUtils.join("head/", RandomUtils.nextInt(1,90000),"/",fileName);
  374 + }
  375 + String urlFileName = fileName;
367 String absPath = FileUploadUtils.getAbsoluteFile(baseUrl, fileName).getAbsolutePath(); 376 String absPath = FileUploadUtils.getAbsoluteFile(baseUrl, fileName).getAbsolutePath();
368 fileName = FileUploadUtils.getPathFileName(baseUrl, fileName); 377 fileName = FileUploadUtils.getPathFileName(baseUrl, fileName);
369 file.transferTo(Paths.get(absPath)); 378 file.transferTo(Paths.get(absPath));
370 - String url = serverConfig.getUrl() + fileName; 379 +
  380 + SysDictData source = sysDictDataService.getResourceBaseUrl();
  381 + String url = sysDictDataService.combationValue(urlFileName,source);
  382 +
  383 +
371 AjaxResult ajax = AjaxResult.success(); 384 AjaxResult ajax = AjaxResult.success();
372 ajax.put("url", url); 385 ajax.put("url", url);
373 - ajax.put("fileName", fileName); 386 + ajax.put("fileName", url);
374 ajax.put("newFileName", FileUtils.getName(fileName)); 387 ajax.put("newFileName", FileUtils.getName(fileName));
375 ajax.put("originalFilename", file.getOriginalFilename()); 388 ajax.put("originalFilename", file.getOriginalFilename());
376 return ajax; 389 return ajax;
Bsth-admin/src/main/java/com/ruoyi/equipment/controller/EquipmentController.java
@@ -3,6 +3,7 @@ package com.ruoyi.equipment.controller; @@ -3,6 +3,7 @@ package com.ruoyi.equipment.controller;
3 import com.ruoyi.common.annotation.Log; 3 import com.ruoyi.common.annotation.Log;
4 import com.ruoyi.common.core.controller.BaseController; 4 import com.ruoyi.common.core.controller.BaseController;
5 import com.ruoyi.common.core.domain.AjaxResult; 5 import com.ruoyi.common.core.domain.AjaxResult;
  6 +import com.ruoyi.common.core.domain.entity.SysDictData;
6 import com.ruoyi.common.core.page.TableDataInfo; 7 import com.ruoyi.common.core.page.TableDataInfo;
7 import com.ruoyi.common.enums.BusinessType; 8 import com.ruoyi.common.enums.BusinessType;
8 import com.ruoyi.common.utils.poi.ExcelUtil; 9 import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -11,6 +12,7 @@ import com.ruoyi.equipment.domain.Equipment; @@ -11,6 +12,7 @@ import com.ruoyi.equipment.domain.Equipment;
11 import com.ruoyi.equipment.domain.EquipmentLog; 12 import com.ruoyi.equipment.domain.EquipmentLog;
12 import com.ruoyi.equipment.service.IEquipmentService; 13 import com.ruoyi.equipment.service.IEquipmentService;
13 import com.ruoyi.service.venue.info.LinggangVenueInfoService; 14 import com.ruoyi.service.venue.info.LinggangVenueInfoService;
  15 +import com.ruoyi.system.service.ISysDictDataService;
14 import io.swagger.annotations.Api; 16 import io.swagger.annotations.Api;
15 import io.swagger.annotations.ApiOperation; 17 import io.swagger.annotations.ApiOperation;
16 import org.apache.commons.collections4.CollectionUtils; 18 import org.apache.commons.collections4.CollectionUtils;
@@ -38,6 +40,8 @@ public class EquipmentController extends BaseController { @@ -38,6 +40,8 @@ public class EquipmentController extends BaseController {
38 private IEquipmentService equipmentService; 40 private IEquipmentService equipmentService;
39 @Autowired 41 @Autowired
40 private LinggangVenueInfoService venueInfoService; 42 private LinggangVenueInfoService venueInfoService;
  43 + @Autowired
  44 + private ISysDictDataService sysDictDataService;
41 45
42 /** 46 /**
43 * 查询设备信息列表 47 * 查询设备信息列表
@@ -49,18 +53,21 @@ public class EquipmentController extends BaseController { @@ -49,18 +53,21 @@ public class EquipmentController extends BaseController {
49 startPage(); 53 startPage();
50 List<Equipment> list = equipmentService.selectEquipmentList(equipment); 54 List<Equipment> list = equipmentService.selectEquipmentList(equipment);
51 if (CollectionUtils.isNotEmpty(list)) { 55 if (CollectionUtils.isNotEmpty(list)) {
  56 + SysDictData sysDictData = sysDictDataService.getResourceBaseUrl();
52 Collection<Integer> yarIds = list.stream().map(Equipment::getYardId).collect(Collectors.toSet()); 57 Collection<Integer> yarIds = list.stream().map(Equipment::getYardId).collect(Collectors.toSet());
53 List<LinggangVenueInfo> venueInfos = venueInfoService.listOfIds(yarIds); 58 List<LinggangVenueInfo> venueInfos = venueInfoService.listOfIds(yarIds);
54 - if (CollectionUtils.isNotEmpty(venueInfos)) {  
55 - list = list.stream().map(eq -> { 59 + list = list.stream().map(eq -> {
  60 + if (CollectionUtils.isNotEmpty(venueInfos)) {
56 Optional<LinggangVenueInfo> optional = venueInfos.stream().filter(v -> Objects.equals(v.getId(), eq.getYardId())).findFirst(); 61 Optional<LinggangVenueInfo> optional = venueInfos.stream().filter(v -> Objects.equals(v.getId(), eq.getYardId())).findFirst();
57 if (optional.isPresent()) { 62 if (optional.isPresent()) {
58 eq.setYardName(optional.get().getName()); 63 eq.setYardName(optional.get().getName());
59 } 64 }
  65 + }
  66 + eq.setImage(sysDictDataService.combationValue(eq.getImage(),sysDictData));
  67 +
  68 + return eq;
  69 + }).collect(Collectors.toList());
60 70
61 - return eq;  
62 - }).collect(Collectors.toList());  
63 - }  
64 71
65 } 72 }
66 return getDataTable(list); 73 return getDataTable(list);
@@ -104,7 +111,11 @@ public class EquipmentController extends BaseController { @@ -104,7 +111,11 @@ public class EquipmentController extends BaseController {
104 @GetMapping(value = "/{id}") 111 @GetMapping(value = "/{id}")
105 @ApiOperation("获取设备信息详细信息") 112 @ApiOperation("获取设备信息详细信息")
106 public AjaxResult getInfo(@PathVariable("id") Long id) { 113 public AjaxResult getInfo(@PathVariable("id") Long id) {
107 - return success(equipmentService.selectEquipmentById(id)); 114 + Equipment equipment = equipmentService.selectEquipmentById(id);
  115 + if(Objects.nonNull(equipment)){
  116 + equipment.setImage(sysDictDataService.combationValue(equipment.getImage()));
  117 + }
  118 + return success(equipment);
108 } 119 }
109 120
110 /** 121 /**
@@ -115,6 +126,7 @@ public class EquipmentController extends BaseController { @@ -115,6 +126,7 @@ public class EquipmentController extends BaseController {
115 @PostMapping 126 @PostMapping
116 @ApiOperation("新增设备信息") 127 @ApiOperation("新增设备信息")
117 public AjaxResult add(@RequestBody Equipment equipment) { 128 public AjaxResult add(@RequestBody Equipment equipment) {
  129 + equipment.setImage(sysDictDataService.splitURL(equipment.getImage()));
118 return toAjax(equipmentService.insertEquipment(equipment)); 130 return toAjax(equipmentService.insertEquipment(equipment));
119 } 131 }
120 132
@@ -126,6 +138,7 @@ public class EquipmentController extends BaseController { @@ -126,6 +138,7 @@ public class EquipmentController extends BaseController {
126 @PutMapping 138 @PutMapping
127 @ApiOperation("修改设备信息") 139 @ApiOperation("修改设备信息")
128 public AjaxResult edit(@RequestBody Equipment equipment) { 140 public AjaxResult edit(@RequestBody Equipment equipment) {
  141 + equipment.setImage(sysDictDataService.splitURL(equipment.getImage()));
129 return toAjax(equipmentService.updateEquipment(equipment)); 142 return toAjax(equipmentService.updateEquipment(equipment));
130 } 143 }
131 144
Bsth-admin/src/main/java/com/ruoyi/service/impl/driver/NewDriverServiceImpl.java
@@ -232,6 +232,7 @@ public class NewDriverServiceImpl extends ServiceImpl&lt;NewDriverMapper, NewDriver @@ -232,6 +232,7 @@ public class NewDriverServiceImpl extends ServiceImpl&lt;NewDriverMapper, NewDriver
232 if (opt.isPresent()) { 232 if (opt.isPresent()) {
233 d.setId(opt.get().getId()); 233 d.setId(opt.get().getId());
234 d.setImage(null); 234 d.setImage(null);
  235 + d.setPosts(opt.get().getPosts());
235 } 236 }
236 return d; 237 return d;
237 }).collect(Collectors.toList()); 238 }).collect(Collectors.toList());
Bsth-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
1 package com.ruoyi.web.controller.common; 1 package com.ruoyi.web.controller.common;
2 2
3 -import java.util.ArrayList;  
4 -import java.util.List;  
5 -import javax.servlet.http.HttpServletRequest;  
6 -import javax.servlet.http.HttpServletResponse; 3 +import com.ruoyi.common.config.RuoYiConfig;
  4 +import com.ruoyi.common.constant.Constants;
  5 +import com.ruoyi.common.core.domain.AjaxResult;
  6 +import com.ruoyi.common.utils.StringUtils;
  7 +import com.ruoyi.common.utils.file.FileUploadUtils;
  8 +import com.ruoyi.common.utils.file.FileUtils;
  9 +import com.ruoyi.common.utils.spring.SpringUtils;
  10 +import com.ruoyi.framework.config.ServerConfig;
  11 +import com.ruoyi.system.service.ISysDictDataService;
7 import org.slf4j.Logger; 12 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory; 13 import org.slf4j.LoggerFactory;
9 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,13 +18,11 @@ import org.springframework.web.bind.annotation.PostMapping; @@ -13,13 +18,11 @@ import org.springframework.web.bind.annotation.PostMapping;
13 import org.springframework.web.bind.annotation.RequestMapping; 18 import org.springframework.web.bind.annotation.RequestMapping;
14 import org.springframework.web.bind.annotation.RestController; 19 import org.springframework.web.bind.annotation.RestController;
15 import org.springframework.web.multipart.MultipartFile; 20 import org.springframework.web.multipart.MultipartFile;
16 -import com.ruoyi.common.config.RuoYiConfig;  
17 -import com.ruoyi.common.constant.Constants;  
18 -import com.ruoyi.common.core.domain.AjaxResult;  
19 -import com.ruoyi.common.utils.StringUtils;  
20 -import com.ruoyi.common.utils.file.FileUploadUtils;  
21 -import com.ruoyi.common.utils.file.FileUtils;  
22 -import com.ruoyi.framework.config.ServerConfig; 21 +
  22 +import javax.servlet.http.HttpServletRequest;
  23 +import javax.servlet.http.HttpServletResponse;
  24 +import java.util.ArrayList;
  25 +import java.util.List;
23 26
24 /** 27 /**
25 * 通用请求处理 28 * 通用请求处理
@@ -37,6 +40,10 @@ public class CommonController @@ -37,6 +40,10 @@ public class CommonController
37 40
38 private static final String FILE_DELIMETER = ","; 41 private static final String FILE_DELIMETER = ",";
39 42
  43 + private ISysDictDataService sysDictDataService;
  44 + @Autowired
  45 + private SpringUtils springUtils;
  46 +
40 /** 47 /**
41 * 通用下载请求 48 * 通用下载请求
42 * 49 *
@@ -78,13 +85,17 @@ public class CommonController @@ -78,13 +85,17 @@ public class CommonController
78 try 85 try
79 { 86 {
80 // 上传文件路径 87 // 上传文件路径
81 - String filePath = RuoYiConfig.getUploadPath(); 88 + String filePath = org.apache.commons.lang3.StringUtils.join(RuoYiConfig.getUploadPath(),"/image");
  89 +
82 // 上传并返回新文件名称 90 // 上传并返回新文件名称
83 String fileName = FileUploadUtils.upload(filePath, file); 91 String fileName = FileUploadUtils.upload(filePath, file);
84 - String url = serverConfig.getUrl() + fileName; 92 + fileName = org.apache.commons.lang3.StringUtils.substringAfter(fileName, "upload/image");
  93 + String url = getSysDictDataService().combationValue(fileName);
85 AjaxResult ajax = AjaxResult.success(); 94 AjaxResult ajax = AjaxResult.success();
  95 +
  96 + log.info("filePath:[{}],fileName:[{}]", filePath, fileName);
86 ajax.put("url", url); 97 ajax.put("url", url);
87 - ajax.put("fileName", fileName); 98 + ajax.put("fileName", url);
88 ajax.put("newFileName", FileUtils.getName(fileName)); 99 ajax.put("newFileName", FileUtils.getName(fileName));
89 ajax.put("originalFilename", file.getOriginalFilename()); 100 ajax.put("originalFilename", file.getOriginalFilename());
90 return ajax; 101 return ajax;
@@ -95,6 +106,13 @@ public class CommonController @@ -95,6 +106,13 @@ public class CommonController
95 } 106 }
96 } 107 }
97 108
  109 + public ISysDictDataService getSysDictDataService(){
  110 + if(sysDictDataService == null){
  111 + sysDictDataService = SpringUtils.getBean(ISysDictDataService.class);
  112 + }
  113 + return sysDictDataService;
  114 + }
  115 +
98 /** 116 /**
99 * 通用上传请求(多个) 117 * 通用上传请求(多个)
100 */ 118 */
Bsth-admin/src/main/resources/application-druid-dev.yml
@@ -174,7 +174,7 @@ api: @@ -174,7 +174,7 @@ api:
174 apk: 174 apk:
175 path: /apk/dev 175 path: /apk/dev
176 # 用户头像存放位置 176 # 用户头像存放位置
177 - headImage: /head/image 177 + headImage: /image
178 sign: 178 sign:
179 image: /image 179 image: /image
180 video: 180 video:
@@ -221,5 +221,5 @@ bsth: @@ -221,5 +221,5 @@ bsth:
221 faceFeature: 221 faceFeature:
222 url: http://222.76.217.238:8880/fcgi-bin/entry.fcgi/system 222 url: http://222.76.217.238:8880/fcgi-bin/entry.fcgi/system
223 skip: 223 skip:
224 - url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/test/**;/login/no/code;/actuator/health; 224 + url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/test/**;/login/no/code;/actuator/health;/upload/image/**;
225 225
Bsth-admin/src/main/resources/application-druid-devTest.yml
@@ -173,8 +173,8 @@ api: @@ -173,8 +173,8 @@ api:
173 nonce: adfsad 173 nonce: adfsad
174 apk: 174 apk:
175 path: /apk/dev 175 path: /apk/dev
176 - # 用户头像存放位置  
177 - headImage: /head/image 176 + # 用户头像存放位置f
  177 + headImage: /image
178 sign: 178 sign:
179 image: /image 179 image: /image
180 video: 180 video:
@@ -215,4 +215,4 @@ bsth: @@ -215,4 +215,4 @@ bsth:
215 faceFeature: 215 faceFeature:
216 url: http://222.76.217.238:8880/fcgi-bin/entry.fcgi/system 216 url: http://222.76.217.238:8880/fcgi-bin/entry.fcgi/system
217 skip: 217 skip:
218 - url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/login/no/code 218 + url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/login/no/code;/uploadPath/**
Bsth-admin/src/main/resources/application-druid-lingangTest.yml 0 → 100644
  1 +
  2 +# 数据源配置
  3 +spring:
  4 + # 邮箱配置
  5 + mail:
  6 + # 只发送不接收
  7 + host: smtp.163.com
  8 + # 自己的邮箱
  9 + username: m18980249160@163.com
  10 + # 提供的密码 不是自己的登录密码
  11 + password: RZHJXWXPCALIAOCG1
  12 + # 占用端口号
  13 + port: 465
  14 + nickname: 酒精测试异常通知
  15 + form: m18980249160@163.com
  16 + protocol: smtp
  17 + properties:
  18 + mail:
  19 + smtp:
  20 + ssl:
  21 + enable: true
  22 + socketFactory:
  23 + class: javax.net.ssl.SSLSocketFactory
  24 + datasource:
  25 + type: com.alibaba.druid.pool.DruidDataSource
  26 + driverClassName: com.mysql.cj.jdbc.Driver
  27 + druid:
  28 + # 主库数据源
  29 + master:
  30 + # 测试地址
  31 + # url: jdbc:mysql://localhost:3306/all-in-one?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&useAffectedRows=true&allowMultiQueries=true
  32 + #url: jdbc:mysql://192.168.168.124:3306/lingang_all_in_one?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
  33 + url: jdbc:mysql://192.168.168.124:3306/lingang_all_in_one1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
  34 + # url: jdbc:mysql://127.0.0.1:3306/lingang_all_in_one?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
  35 + username: root
  36 + password: guzijian
  37 + # password: 1
  38 + # 从库数据源
  39 + slave:
  40 + # 从数据源开关/默认关闭
  41 + enabled: false
  42 + url:
  43 + username:
  44 + password:
  45 + # 初始连接数
  46 + initialSize: 5
  47 + # 最小连接池数量
  48 + minIdle: 10
  49 + # 最大连接池数量
  50 + maxActive: 20
  51 + # 配置获取连接等待超时的时间
  52 + maxWait: 60000
  53 + # 配置连接超时时间
  54 + connectTimeout: 30000
  55 + # 配置网络超时时间
  56 + socketTimeout: 60000
  57 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  58 + timeBetweenEvictionRunsMillis: 60000
  59 + # 配置一个连接在池中最小生存的时间,单位是毫秒
  60 + minEvictableIdleTimeMillis: 300000
  61 + # 配置一个连接在池中最大生存的时间,单位是毫秒
  62 + maxEvictableIdleTimeMillis: 900000
  63 + # 配置检测连接是否有效
  64 + validationQuery: SELECT 1 FROM DUAL
  65 + testWhileIdle: true
  66 + testOnBorrow: false
  67 + testOnReturn: false
  68 + webStatFilter:
  69 + enabled: true
  70 + statViewServlet:
  71 + enabled: true
  72 + # 设置白名单,不填则允许所有访问
  73 + allow:
  74 + url-pattern: /druid/*
  75 + # 控制台管理用户名和密码
  76 + login-username: ruoyi
  77 + login-password: 123456
  78 + filter:
  79 + stat:
  80 + enabled: true
  81 + # 慢SQL记录
  82 + log-slow-sql: true
  83 + slow-sql-millis: 1000
  84 + merge-sql: true
  85 + wall:
  86 + config:
  87 + multi-statement-allow: true
  88 + # 文件上传
  89 + servlet:
  90 + multipart:
  91 + # 单个文件大小
  92 + max-file-size: 100MB
  93 + # 设置总上传的文件大小
  94 + max-request-size: 100MB
  95 + # 服务模块
  96 + devtools:
  97 + restart:
  98 + # 热部署开关
  99 + enabled: true
  100 + # redis 配置
  101 + redis:
  102 + # 地址
  103 +# host: 121.41.83.61
  104 + host: localhost
  105 + database: 4
  106 +# password: "guzijian"
  107 + port: 6379
  108 + # 连接超时时间
  109 + timeout: 10s
  110 + lettuce:
  111 + pool:
  112 + # 连接池中的最小空闲连接
  113 + min-idle: 0
  114 + # 连接池中的最大空闲连接
  115 + max-idle: 8
  116 + # 连接池的最大数据库连接数
  117 + max-active: 8
  118 + # #连接池最大阻塞等待时间(使用负值表示没有限制)
  119 + max-wait: -1ms
  120 + # token配置
  121 + token:
  122 + # 令牌自定义标识
  123 + header: Authorization
  124 + # 令牌密钥
  125 + secret: abcdefghijklmnopqrstuvwxyz
  126 + # 令牌有效期(默认30分钟)
  127 + expireTime: 30
  128 +
  129 +# 项目相关配置
  130 +ruoyi:
  131 + # 名称
  132 + name: RuoYi
  133 + # 版本
  134 + version: 3.8.5
  135 + # 版权年份
  136 + copyrightYear: 2023
  137 + # 实例演示开关
  138 + demoEnabled: true
  139 + # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
  140 + profile: /data/test/bath-alcoho-sign/apache-tomcat-8.5.61/webapps/uploadPath
  141 + # 获取ip地址开关
  142 + addressEnabled: false
  143 + # 验证码类型 math 数字计算 char 字符验证
  144 + captchaType: math
  145 +mybatis-plus:
  146 + # 搜索指定包别名
  147 + typeAliasesPackage: com.ruoyi.**.domain
  148 + # 配置mapper的扫描,找到所有的mapper.xml映射文件
  149 + mapperLocations: classpath*:mapper/**/*Mapper.xml
  150 + # 加载全局的配置文件
  151 + configLocation: classpath:mybatis/mybatis-config.xml
  152 +# Swagger配置
  153 +swagger:
  154 + # 是否开启swagger
  155 + enabled: true
  156 + # 请求前缀
  157 + # pathMapping: /dev-api
  158 + pathMapping: /
  159 +api:
  160 + template: 车队与线路匹配模板
  161 + url:
  162 + # all 为获取所有驾驶员信息
  163 + getDriverInfo: http://dsh.bdo2o.com:6280/shr
  164 + # 获取公司编码下的员工信息 暂时没用
  165 + getCompanyInfo:
  166 + # 获取排班信息
  167 + getSchedulingInfo: http://58.34.47.74:9089/webservice/rest/schedule_real/sch_jk/%s/%s?timestamp=%d&nonce=%s&password=%s&sign=%s
  168 + getSchedulingInfoNew: http://58.34.47.74:9089/webservice/rest/schedule_real/sch_jk/%s/%s?timestamp=%d&nonce=%s&password=%s&sign=%s
  169 + getSchedulingInfoPlan: http://58.34.47.74:9089/webservice/rest/schedule/sch_jk/%s/%s?timestamp=%d&nonce=%s&password=%s&sign=%s
  170 + config:
  171 + password: c4dd3d8cb9a82f6d6a625818618b28ca7bebb464
  172 + # 随机字符串
  173 + nonce: adfsad
  174 + apk:
  175 + path: /apk/dev
  176 + # 用户头像存放位置
  177 + headImage: /head/image
  178 + sign:
  179 + image: /image
  180 + video:
  181 + basePath: /video
  182 +
  183 + personnel:
  184 + token:
  185 + tokenUrl: https://api.dingtalk.com/v1.0/oauth2/accessToken
  186 + appKey: dingsclwvxui5zilg1xk
  187 + appSecret: ckV20k3jMKJpUkfXXSGhLk077rQQjsSaAusiSVY-nm4glwweCmb_SMJ62Cpf4YQ5
  188 + people:
  189 + url: https://api.dingtalk.com/v1.0/yida/forms/instances/search
  190 +log:
  191 + path: logs
  192 +server:
  193 + port: 8102
  194 +netty:
  195 + # 是否开启netty服务
  196 + enabled: true
  197 + socket:
  198 + # 相对路径 classpath
  199 + catalogue:
  200 + image: device/image
  201 + speech: device/speech
  202 + port: 8989
  203 +
  204 +
  205 +bsth:
  206 + face:
  207 + app:
  208 + id: 8jPk3SNnaoGsd9SidMefgZXg1zbst64jB44vVyx9Cijq
  209 + sdk:
  210 + key: C21s5J1n1rHwXPkvVjubKshtfYuvuSe2GHus41Q1NPcT
  211 + # key: C21s5J1n1rHwXPkvVjubKshtofV5sHXvyUQqSWYxHp2b
  212 + lib:
  213 + path: /data/test/bath-alcoho-sign/LINUX64
  214 + # path: D:/work/code/jienengjiancha/bsth-alcohol-sign/Bsth-admin/src/main/resources/libs/WIN64
  215 + faceFeature:
  216 + url: http://222.76.217.238:8880/fcgi-bin/entry.fcgi/system
  217 + skip:
  218 + url: /big/view/queryNumberByType;/big/view/queryLineInfo/*;/big/view/querySignDetails;/report/list/**;/system/dict/data/**;/app/version/check/**;/app/checkDeviceHeart;/app/download;"/driver/**;/in/**;/eexception/**;/equipment/**;/report/**;/login;/register;/captchaImage;/dss/Driver/Auth;/login/no/code
Bsth-common/src/main/java/com/ruoyi/common/constant/Constants.java
@@ -116,7 +116,7 @@ public class Constants { @@ -116,7 +116,7 @@ public class Constants {
116 /** 116 /**
117 * 资源映射路径 前缀 117 * 资源映射路径 前缀
118 */ 118 */
119 - public static final String RESOURCE_PREFIX = "/profile"; 119 + public static final String RESOURCE_PREFIX = "";
120 120
121 /** 121 /**
122 * RMI 远程方法调用 122 * RMI 远程方法调用
Bsth-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
@@ -72,6 +72,16 @@ public class LoginUser implements UserDetails @@ -72,6 +72,16 @@ public class LoginUser implements UserDetails
72 */ 72 */
73 private SysUser user; 73 private SysUser user;
74 74
  75 + private String deviceId;
  76 +
  77 + public String getDeviceId() {
  78 + return deviceId;
  79 + }
  80 +
  81 + public void setDeviceId(String deviceId) {
  82 + this.deviceId = deviceId;
  83 + }
  84 +
75 public Long getUserId() 85 public Long getUserId()
76 { 86 {
77 return userId; 87 return userId;
Bsth-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
@@ -62,7 +62,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { @@ -62,7 +62,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
62 return "没有登陆信息"; 62 return "没有登陆信息";
63 } 63 }
64 64
65 - if(org.apache.commons.lang3.StringUtils.equals(device,Convert.toStr(loginUser.getDeptId()))){ 65 + if(org.apache.commons.lang3.StringUtils.equals(device,Convert.toStr(loginUser.getDeviceId()))){
66 return null; 66 return null;
67 } 67 }
68 68
Bsth-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
@@ -30,6 +30,10 @@ public interface ISysDictDataService extends IService&lt;SysDictData&gt; { @@ -30,6 +30,10 @@ public interface ISysDictDataService extends IService&lt;SysDictData&gt; {
30 30
31 String combationValue(String url,SysDictData dictData); 31 String combationValue(String url,SysDictData dictData);
32 32
  33 + String combationValue(String url);
  34 +
  35 + String splitURL(String url);
  36 +
33 /** 37 /**
34 * 根据字典类型和字典键值查询字典数据信息 38 * 根据字典类型和字典键值查询字典数据信息
35 * 39 *
Bsth-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
1 package com.ruoyi.system.service.impl; 1 package com.ruoyi.system.service.impl;
2 2
  3 +import com.alibaba.fastjson2.JSON;
3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5 import com.ruoyi.common.core.domain.entity.SysDictData; 6 import com.ruoyi.common.core.domain.entity.SysDictData;
@@ -8,7 +9,10 @@ import com.ruoyi.system.mapper.SysDictDataMapper; @@ -8,7 +9,10 @@ import com.ruoyi.system.mapper.SysDictDataMapper;
8 import com.ruoyi.system.service.ISysDictDataService; 9 import com.ruoyi.system.service.ISysDictDataService;
9 import org.apache.commons.collections4.CollectionUtils; 10 import org.apache.commons.collections4.CollectionUtils;
10 import org.apache.commons.lang3.StringUtils; 11 import org.apache.commons.lang3.StringUtils;
  12 +import org.slf4j.Logger;
  13 +import org.slf4j.LoggerFactory;
11 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.data.redis.core.RedisTemplate;
12 import org.springframework.stereotype.Service; 16 import org.springframework.stereotype.Service;
13 17
14 import java.util.Collection; 18 import java.util.Collection;
@@ -24,6 +28,10 @@ import java.util.Objects; @@ -24,6 +28,10 @@ import java.util.Objects;
24 public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService { 28 public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService {
25 @Autowired 29 @Autowired
26 private SysDictDataMapper dictDataMapper; 30 private SysDictDataMapper dictDataMapper;
  31 + @Autowired
  32 + private RedisTemplate<String, String> redisTemplate;
  33 +
  34 + private static final Logger LOGGER = LoggerFactory.getLogger(SysDictDataServiceImpl.class);
27 35
28 /** 36 /**
29 * 根据条件分页查询字典数据 37 * 根据条件分页查询字典数据
@@ -59,9 +67,13 @@ public class SysDictDataServiceImpl extends ServiceImpl&lt;SysDictDataMapper, SysDi @@ -59,9 +67,13 @@ public class SysDictDataServiceImpl extends ServiceImpl&lt;SysDictDataMapper, SysDi
59 67
60 @Override 68 @Override
61 public SysDictData getResourceBaseUrl() { 69 public SysDictData getResourceBaseUrl() {
62 - SysDictData source = new SysDictData();  
63 - source.setDictType("resource_base_url");  
64 - List<SysDictData> sysDictDatas = queryDictDateList(source); 70 + List<SysDictData> sysDictDatas = getDataOfRedis("resource_base_url");
  71 + if (CollectionUtils.isEmpty(sysDictDatas)) {
  72 + SysDictData source = new SysDictData();
  73 + source.setDictType("resource_base_url");
  74 + sysDictDatas = queryDictDateList(source);
  75 + }
  76 +
65 77
66 String url1 = ""; 78 String url1 = "";
67 String flag1 = null; 79 String flag1 = null;
@@ -87,6 +99,18 @@ public class SysDictDataServiceImpl extends ServiceImpl&lt;SysDictDataMapper, SysDi @@ -87,6 +99,18 @@ public class SysDictDataServiceImpl extends ServiceImpl&lt;SysDictDataMapper, SysDi
87 return target; 99 return target;
88 } 100 }
89 101
  102 + public List<SysDictData> getDataOfRedis(String dicType) {
  103 + try {
  104 + String key = StringUtils.join("sys_dict:", dicType);
  105 + String json = redisTemplate.opsForValue().get(key);
  106 + return JSON.parseArray(json, SysDictData.class);
  107 + } catch (Exception e) {
  108 + LOGGER.info("从redis中获取数据异常:[{}]", dicType, e);
  109 + }
  110 + return null;
  111 + }
  112 +
  113 +
90 @Override 114 @Override
91 public String combationValue(String url, SysDictData dictData) { 115 public String combationValue(String url, SysDictData dictData) {
92 if (Objects.isNull(dictData) || StringUtils.isEmpty(url)) { 116 if (Objects.isNull(dictData) || StringUtils.isEmpty(url)) {
@@ -106,6 +130,25 @@ public class SysDictDataServiceImpl extends ServiceImpl&lt;SysDictDataMapper, SysDi @@ -106,6 +130,25 @@ public class SysDictDataServiceImpl extends ServiceImpl&lt;SysDictDataMapper, SysDi
106 return url; 130 return url;
107 } 131 }
108 132
  133 + @Override
  134 + public String combationValue(String url) {
  135 + SysDictData source = getResourceBaseUrl();
  136 + return combationValue(url, source);
  137 + }
  138 +
  139 + @Override
  140 + public String splitURL(String url) {
  141 + if (StringUtils.isEmpty(url)) {
  142 + return url;
  143 + }
  144 +
  145 + SysDictData sysDictData = getResourceBaseUrl();
  146 + if (Objects.nonNull(sysDictData) && StringUtils.isNotEmpty(sysDictData.getDictValueStr())) {
  147 + return StringUtils.substringAfter(url, sysDictData.getDictValueStr());
  148 + }
  149 + return url;
  150 + }
  151 +
109 /** 152 /**
110 * 根据字典类型和字典键值查询字典数据信息 153 * 根据字典类型和字典键值查询字典数据信息
111 * 154 *