diff --git a/productManager/src/main/java/com/ruoyi/productionManager/service/IStandardInfoService.java b/productManager/src/main/java/com/ruoyi/productionManager/service/IStandardInfoService.java index ef7837e2d..844617375 100644 --- a/productManager/src/main/java/com/ruoyi/productionManager/service/IStandardInfoService.java +++ b/productManager/src/main/java/com/ruoyi/productionManager/service/IStandardInfoService.java @@ -2,6 +2,7 @@ package com.ruoyi.productionManager.service; import java.util.List; import com.ruoyi.productionManager.domain.StandardInfo; +import org.springframework.web.multipart.MultipartFile; /** * 试验标准管理Service接口 @@ -58,4 +59,11 @@ public interface IStandardInfoService * @return 结果 */ public int deleteStandardInfoByStandardId(Long standardId); + + /** + * 上传文件 + * @param file + * @return + */ + public String uploadFile(MultipartFile file); } diff --git a/productManager/src/main/java/com/ruoyi/productionManager/service/impl/StandardInfoServiceImpl.java b/productManager/src/main/java/com/ruoyi/productionManager/service/impl/StandardInfoServiceImpl.java index ea8a868a0..b30632f42 100644 --- a/productManager/src/main/java/com/ruoyi/productionManager/service/impl/StandardInfoServiceImpl.java +++ b/productManager/src/main/java/com/ruoyi/productionManager/service/impl/StandardInfoServiceImpl.java @@ -1,12 +1,24 @@ package com.ruoyi.productionManager.service.impl; import java.util.List; +import java.util.concurrent.TimeUnit; + +import com.ruoyi.common.config.RuoYiConfig; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.file.FileUploadUtils; +import com.ruoyi.common.utils.uuid.IdUtils; +import io.netty.handler.codec.base64.Base64; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.productionManager.mapper.StandardInfoMapper; import com.ruoyi.productionManager.domain.StandardInfo; import com.ruoyi.productionManager.service.IStandardInfoService; +import org.springframework.web.multipart.MultipartFile; +import sun.misc.BASE64Encoder; /** * 试验标准管理Service业务层处理 @@ -20,6 +32,9 @@ public class StandardInfoServiceImpl implements IStandardInfoService @Autowired private StandardInfoMapper standardInfoMapper; + @Autowired + private RedisCache redisCache; + /** * 查询试验标准管理 * @@ -93,4 +108,38 @@ public class StandardInfoServiceImpl implements IStandardInfoService { return standardInfoMapper.deleteStandardInfoByStandardId(standardId); } + + @Override + public String uploadFile(MultipartFile file) { + try { + String filePath = RuoYiConfig.getUploadPath(); + IdUtils.fastUUID(); + // 上传并返回新文件名称 + String fileName = FileUploadUtils.upload(filePath, file); + String name =""; + for(String s:fileName.split("/",9)){ + System.out.println("path>>>"+s); + name = s; + } + Byte[] data = new Byte[file.getResource().getInputStream().available()]; + redisCache.setCacheObject(Constants.UPLOAD_FILE+name, + data, 30, TimeUnit.MINUTES); +// 取出缓存数据 + Byte[] bytes = redisCache.getCacheObject(Constants.UPLOAD_FILE+name); + + return fileName; + }catch (Exception e){ + throw new ServiceException("上传失败:" + e.getMessage()); + } + } + /** + * 设置cache key + * + * @param fileName 参数键 + * @return 缓存键key + */ + private String getCacheKey(String fileName) + { + return Constants.UPLOAD_FILE + fileName; + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/productionManager/StandardInfoController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/productionManager/StandardInfoController.java index 1b2552e83..df339b21a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/productionManager/StandardInfoController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/productionManager/StandardInfoController.java @@ -3,6 +3,7 @@ package com.ruoyi.web.controller.productionManager; import java.util.List; import com.ruoyi.common.config.RuoYiConfig; +import com.ruoyi.common.constant.Constants; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.framework.config.ServerConfig; import com.ruoyi.productionManager.domain.StandardInfo; @@ -111,18 +112,22 @@ public class StandardInfoController extends BaseController @PostMapping("/upload") public AjaxResult getFiles(@Param("file") MultipartFile file){ - try{ - String filePath = RuoYiConfig.getUploadPath(); - // 上传并返回新文件名称 - String fileName = FileUploadUtils.upload(filePath, file); +// String filePath = RuoYiConfig.getUploadPath(); +// // 上传并返回新文件名称 +// String fileName = FileUploadUtils.upload(filePath, file); + String fileName = standardInfoService.uploadFile(file); String url = serverConfig.getUrl() + fileName; AjaxResult ajax = AjaxResult.success(); ajax.put("fileName", fileName); - ajax.put("url", url); + url.split("/"); + String path =""; + for(String s:url.split("/",4)){ + System.out.println("path>>>"+s); + path = s; + } + ajax.put("url", path); return ajax; - }catch (Exception e){ - return AjaxResult.error(e.getMessage()); - } } + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index 9f55771bf..0d526f84b 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -148,4 +148,9 @@ public class Constants * LDAP 远程方法调用 */ public static final String LOOKUP_LDAP = "ldap://"; + + /** + * LDAP 远程方法调用 + */ + public static final String UPLOAD_FILE = "file:"; } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java index 76b647a10..2ba077998 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java @@ -2,7 +2,12 @@ package com.ruoyi.common.utils.file; import java.io.File; import java.io.IOException; +import java.util.Base64; +import java.util.concurrent.TimeUnit; + +import com.ruoyi.common.core.redis.RedisCache; import org.apache.commons.io.FilenameUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.multipart.MultipartFile; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.Constants; @@ -12,6 +17,7 @@ import com.ruoyi.common.exception.file.InvalidExtensionException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.uuid.IdUtils; +import sun.misc.BASE64Encoder; /** * 文件上传工具类 @@ -20,6 +26,7 @@ import com.ruoyi.common.utils.uuid.IdUtils; */ public class FileUploadUtils { + /** * 默认大小 50M */ @@ -110,8 +117,8 @@ public class FileUploadUtils String fileName = extractFilename(file); - File desc = getAbsoluteFile(baseDir, fileName); - file.transferTo(desc); +// File desc = getAbsoluteFile(baseDir, fileName); +// file.transferTo(desc); String pathFileName = getPathFileName(baseDir, fileName); return pathFileName; } diff --git a/ruoyi-ui/src/components/Editor/index.vue b/ruoyi-ui/src/components/Editor/index.vue index 6bb5a18d3..fb603e084 100644 --- a/ruoyi-ui/src/components/Editor/index.vue +++ b/ruoyi-ui/src/components/Editor/index.vue @@ -1,19 +1,19 @@ @@ -58,7 +58,7 @@ export default { default: "url", } }, - data() { + data () { return { uploadUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址 headers: { @@ -91,7 +91,7 @@ export default { }; }, computed: { - styles() { + styles () { let style = {}; if (this.minHeight) { style.minHeight = `${this.minHeight}px`; @@ -104,7 +104,7 @@ export default { }, watch: { value: { - handler(val) { + handler (val) { if (val !== this.currentValue) { this.currentValue = val === null ? "" : val; if (this.Quill) { @@ -115,14 +115,14 @@ export default { immediate: true, }, }, - mounted() { + mounted () { this.init(); }, - beforeDestroy() { + beforeDestroy () { this.Quill = null; }, methods: { - init() { + init () { const editor = this.$refs.editor; this.Quill = new Quill(editor, this.options); // 如果设置了上传地址则自定义图片上传事件 @@ -157,7 +157,7 @@ export default { }); }, // 上传前校检格式和大小 - handleBeforeUpload(file) { + handleBeforeUpload (file) { // 校检文件大小 if (this.fileSize) { const isLt = file.size / 1024 / 1024 < this.fileSize; @@ -168,7 +168,7 @@ export default { } return true; }, - handleUploadSuccess(res, file) { + handleUploadSuccess (res, file) { // 获取富文本组件实例 let quill = this.Quill; // 如果上传成功 @@ -183,7 +183,7 @@ export default { this.$message.error("图片插入失败"); } }, - handleUploadError() { + handleUploadError () { this.$message.error("图片插入失败"); }, }, @@ -191,7 +191,8 @@ export default { diff --git a/sql/ry_20210908.sql b/sql/ry_20210908.sql index af0868fbd..7a89a1774 100644 --- a/sql/ry_20210908.sql +++ b/sql/ry_20210908.sql @@ -693,9 +693,9 @@ create table STANDARD_INFO ( standard_id bigint(20) not null auto_increment comment '标准id', area_category varchar(120) not null comment '区域分类', standard_name varchar(200) not null comment '标准名称', - standard_category varchar(200) not null comment '标准类型',(字典处理) + standard_category varchar(200) not null comment '标准类型', standard_begin_date varchar(250) null comment '标准实施日期', - standard_status varchar(20) not null comment '标准状态',(字典处理) + standard_status varchar(20) not null comment '标准状态', create_by varchar(64) default '' comment '创建者', create_time datetime comment '创建时间', update_by varchar(64) default '' comment '更新者', @@ -703,16 +703,18 @@ create table STANDARD_INFO ( remark varchar(500) default null comment '备注', primary key (standard_id) ) engine=innodb comment = '标准信息表'; + + drop table if exists STANDARD_INFO_DETAILS; create table STANDARD_INFO_DETAILS ( - standard_id bigint(20) not null auto_increment comment '标准id', - details_id bigint(20) not null comment '岗位ID', - file_name varchar(200) not null comment '文件名称', + details_id bigint(20) not null auto_increment comment '标准明细ID', + standard_id bigint(20) not null comment '标准id', + file_name varchar(200) not null comment '文件名称', file_url varchar(200) not null comment '文件路径', create_by varchar(64) default '' comment '创建者', create_time datetime comment '创建时间', update_by varchar(64) default '' comment '更新者', update_time datetime comment '更新时间', remark varchar(500) default null comment '备注', - primary key (standard_id, details_id) + primary key (details_id,standard_id) ) engine=innodb comment = '标准信息文件表';