From 1eb1dfd0cc9c0f5d5092532018b15bd54958f78d Mon Sep 17 00:00:00 2001 From: zengchenxi Date: Tue, 16 Jan 2024 11:11:05 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97+?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E3=80=91=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E5=8E=9F=E6=9C=89=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=A4=9A=E7=A7=8D=E4=B8=9A=E5=8A=A1=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../heli/enums/BusinessFileTypeEnum.java | 21 +++++++++++++++++++ .../mes/module/infra/api/file/FileApi.java | 3 ++- .../module/infra/api/file/FileApiImpl.java | 6 +++--- .../controller/admin/file/FileController.java | 4 ++-- .../file/vo/file/FileUploadBatchReqVO.java | 7 +++++-- .../admin/file/vo/file/FileUploadReqVO.java | 7 +++++-- .../app/file/AppFileController.java | 2 +- .../app/file/vo/AppFileUploadReqVO.java | 7 +++++-- .../infra/service/file/FileService.java | 9 ++++---- .../infra/service/file/FileServiceImpl.java | 2 +- .../vo/operatelog/OperateLogPageReqVO.java | 6 ++++++ .../vo/operatelog/OperateLogRespVO.java | 6 ++++++ .../dal/dataobject/logger/OperateLogDO.java | 8 +++++++ .../dal/mysql/logger/OperateLogMapper.java | 2 ++ .../UploadFile/src/UploadFileBatch.vue | 7 ++++--- sql/v1.1.0/heli.sql | 14 ++++++++++++- 16 files changed, 89 insertions(+), 22 deletions(-) create mode 100644 mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/BusinessFileTypeEnum.java diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/BusinessFileTypeEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/BusinessFileTypeEnum.java new file mode 100644 index 00000000..f210c61b --- /dev/null +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/BusinessFileTypeEnum.java @@ -0,0 +1,21 @@ +package com.chanko.yunxi.mes.module.heli.enums; + +import lombok.Getter; + +/** + * 业务文件类型 + * @author chenxi + * @date 2024-01-16 10:38 + */ +@Getter +public enum BusinessFileTypeEnum { + + CONTRACT("合同"), + TECHNOLOGY_PROTOCOL("技术协议"); + + private String description; + + BusinessFileTypeEnum(String description) { + this.description = description; + } +} diff --git a/mes-module-infra/mes-module-infra-api/src/main/java/com/chanko/yunxi/mes/module/infra/api/file/FileApi.java b/mes-module-infra/mes-module-infra-api/src/main/java/com/chanko/yunxi/mes/module/infra/api/file/FileApi.java index 660c3754..33f8d232 100644 --- a/mes-module-infra/mes-module-infra-api/src/main/java/com/chanko/yunxi/mes/module/infra/api/file/FileApi.java +++ b/mes-module-infra/mes-module-infra-api/src/main/java/com/chanko/yunxi/mes/module/infra/api/file/FileApi.java @@ -45,8 +45,9 @@ public interface FileApi { * @param content * @param businessType * @param businessId + * @param businessFileType * @return */ - String createFile(String name, String path, byte[] content, String businessType, Long businessId); + String createFile(String name, String path, byte[] content, String businessType, Long businessId, String businessFileType); } diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/api/file/FileApiImpl.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/api/file/FileApiImpl.java index 5beb1b24..6caaa331 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/api/file/FileApiImpl.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/api/file/FileApiImpl.java @@ -20,12 +20,12 @@ public class FileApiImpl implements FileApi { @Override public String createFile(String name, String path, byte[] content) { - return fileService.createFile(name, path, content, null, null); + return fileService.createFile(name, path, content, null, null, null); } @Override - public String createFile(String name, String path, byte[] content, String businessType, Long businessId) { - return fileService.createFile(name, path, content, businessType, businessId); + public String createFile(String name, String path, byte[] content, String businessType, Long businessId, String businessFileType) { + return fileService.createFile(name, path, content, businessType, businessId, businessFileType); } } diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/FileController.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/FileController.java index b2f37da3..4c8a792d 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/FileController.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/FileController.java @@ -48,7 +48,7 @@ public class FileController { public CommonResult uploadFile(FileUploadReqVO uploadReqVO) throws Exception { MultipartFile file = uploadReqVO.getFile(); String path = uploadReqVO.getPath(); - return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream()), uploadReqVO.getBusinessType(), uploadReqVO.getBusinessId())); + return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream()), uploadReqVO.getBusinessType(), uploadReqVO.getBusinessId(), uploadReqVO.getBusinessFileType())); } @PostMapping("/uploadBatch") @@ -57,7 +57,7 @@ public class FileController { public CommonResult uploadFileBatch(FileUploadBatchReqVO uploadReqVO) throws Exception { MultipartFile[] files = uploadReqVO.getFiles(); for (MultipartFile file : files) { - fileService.createFile(file.getOriginalFilename(), null, IoUtil.readBytes(file.getInputStream()), uploadReqVO.getBusinessType(), uploadReqVO.getBusinessId()); + fileService.createFile(file.getOriginalFilename(), null, IoUtil.readBytes(file.getInputStream()), uploadReqVO.getBusinessType(), uploadReqVO.getBusinessId(), uploadReqVO.getBusinessFileType()); } return success(null); } diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/vo/file/FileUploadBatchReqVO.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/vo/file/FileUploadBatchReqVO.java index 086ba3ce..f16bfd7c 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/vo/file/FileUploadBatchReqVO.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/vo/file/FileUploadBatchReqVO.java @@ -16,10 +16,13 @@ public class FileUploadBatchReqVO { @NotEmpty(message = "上传文件不能为空") private MultipartFile[] files; - @Schema(description = "文件业务类型") + @Schema(description = "业务类型") private String businessType; - @Schema(description = "文件业务id") + @Schema(description = "业务id") private Long businessId; + @Schema(description = "业务文件类型") + private String businessFileType; + } diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/vo/file/FileUploadReqVO.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/vo/file/FileUploadReqVO.java index 8f60a19b..9cd87a98 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/vo/file/FileUploadReqVO.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/vo/file/FileUploadReqVO.java @@ -17,10 +17,13 @@ public class FileUploadReqVO { @Schema(description = "文件附件", example = "mesyuanma.png") private String path; - @Schema(description = "文件业务类型") + @Schema(description = "业务类型") private String businessType; - @Schema(description = "文件业务id") + @Schema(description = "业务id") private Long businessId; + @Schema(description = "业务文件类型") + private String businessFileType; + } diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/app/file/AppFileController.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/app/file/AppFileController.java index b13e0b51..0131d619 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/app/file/AppFileController.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/app/file/AppFileController.java @@ -32,7 +32,7 @@ public class AppFileController { public CommonResult uploadFile(AppFileUploadReqVO uploadReqVO) throws Exception { MultipartFile file = uploadReqVO.getFile(); String path = uploadReqVO.getPath(); - return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream()), uploadReqVO.getBusinessType(), uploadReqVO.getBusinessId())); + return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream()), uploadReqVO.getBusinessType(), uploadReqVO.getBusinessId(), uploadReqVO.getBusinessFileType())); } } diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/app/file/vo/AppFileUploadReqVO.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/app/file/vo/AppFileUploadReqVO.java index 1c9e220b..b651b28a 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/app/file/vo/AppFileUploadReqVO.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/app/file/vo/AppFileUploadReqVO.java @@ -14,12 +14,15 @@ public class AppFileUploadReqVO { @NotNull(message = "文件附件不能为空") private MultipartFile file; - @Schema(description = "文件业务类型") + @Schema(description = "业务类型") private String businessType; - @Schema(description = "文件业务id") + @Schema(description = "业务id") private Long businessId; + @Schema(description = "业务文件类型") + private String businessFileType; + @Schema(description = "文件附件", example = "mesyuanma.png") private String path; diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/service/file/FileService.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/service/file/FileService.java index 8966e109..7caf5d11 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/service/file/FileService.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/service/file/FileService.java @@ -22,14 +22,15 @@ public interface FileService { /** * 保存文件,并返回文件的访问路径 * - * @param name 文件名称 - * @param path 文件路径 - * @param content 文件内容 + * @param name 文件名称 + * @param path 文件路径 + * @param content 文件内容 * @param businessType * @param businessId + * @param businessFileType * @return 文件路径 */ - String createFile(String name, String path, byte[] content, String businessType, Long businessId); + String createFile(String name, String path, byte[] content, String businessType, Long businessId, String businessFileType); /** * 删除文件 diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/service/file/FileServiceImpl.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/service/file/FileServiceImpl.java index 787cab51..d9b878a3 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/service/file/FileServiceImpl.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/service/file/FileServiceImpl.java @@ -38,7 +38,7 @@ public class FileServiceImpl implements FileService { @Override @SneakyThrows - public String createFile(String name, String path, byte[] content, String businessType, Long businessId) { + public String createFile(String name, String path, byte[] content, String businessType, Long businessId, String businessFileType) { // 计算默认的 path 名 String type = FileTypeUtils.getMineType(content, name); if (StrUtil.isEmpty(path)) { diff --git a/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/logger/vo/operatelog/OperateLogPageReqVO.java b/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/logger/vo/operatelog/OperateLogPageReqVO.java index a4507ae4..72b66589 100644 --- a/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/logger/vo/operatelog/OperateLogPageReqVO.java +++ b/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/logger/vo/operatelog/OperateLogPageReqVO.java @@ -16,6 +16,12 @@ public class OperateLogPageReqVO extends PageParam { @Schema(description = "操作模块,模拟匹配", example = "订单") private String module; + @Schema(description = "业务类型 用于业务关联", example = "2") + private String businessType; + + @Schema(description = "业务id", example = "18297") + private Long businessId; + @Schema(description = "用户昵称,模拟匹配", example = "芋道") private String userNickname; diff --git a/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/logger/vo/operatelog/OperateLogRespVO.java b/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/logger/vo/operatelog/OperateLogRespVO.java index 111ff86c..5efc20bb 100644 --- a/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/logger/vo/operatelog/OperateLogRespVO.java +++ b/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/logger/vo/operatelog/OperateLogRespVO.java @@ -24,6 +24,12 @@ public class OperateLogRespVO { @Schema(description = "链路追踪编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "89aca178-a370-411c-ae02-3f0d672be4ab") private String traceId; + @Schema(description = "业务类型 用于业务关联", example = "2") + private String businessType; + + @Schema(description = "业务id", example = "18297") + private Long businessId; + @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long userId; diff --git a/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/dal/dataobject/logger/OperateLogDO.java b/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/dal/dataobject/logger/OperateLogDO.java index 91a37619..47e3f7dd 100644 --- a/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/dal/dataobject/logger/OperateLogDO.java +++ b/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/dal/dataobject/logger/OperateLogDO.java @@ -47,6 +47,14 @@ public class OperateLogDO extends BaseDO { * 一般来说,通过链路追踪编号,可以将访问日志,错误日志,链路追踪日志,logger 打印日志等,结合在一起,从而进行排错。 */ private String traceId; + /** + * 业务类型 用于业务关联 + */ + private String businessType; + /** + * 业务id + */ + private Long businessId; /** * 用户编号 * diff --git a/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/dal/mysql/logger/OperateLogMapper.java b/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/dal/mysql/logger/OperateLogMapper.java index 5c181d00..5032f611 100644 --- a/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/dal/mysql/logger/OperateLogMapper.java +++ b/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/dal/mysql/logger/OperateLogMapper.java @@ -15,6 +15,8 @@ public interface OperateLogMapper extends BaseMapperX { default PageResult selectPage(OperateLogPageReqVO reqVO, Collection userIds) { LambdaQueryWrapperX query = new LambdaQueryWrapperX() + .eqIfPresent(OperateLogDO::getBusinessType, reqVO.getBusinessType()) + .eqIfPresent(OperateLogDO::getBusinessId, reqVO.getBusinessId()) .likeIfPresent(OperateLogDO::getModule, reqVO.getModule()) .inIfPresent(OperateLogDO::getUserId, userIds) .eqIfPresent(OperateLogDO::getType, reqVO.getType()) diff --git a/mes-ui/mes-ui-admin-vue3/src/components/UploadFile/src/UploadFileBatch.vue b/mes-ui/mes-ui-admin-vue3/src/components/UploadFile/src/UploadFileBatch.vue index 1cfe25a1..5d8a3c0a 100644 --- a/mes-ui/mes-ui-admin-vue3/src/components/UploadFile/src/UploadFileBatch.vue +++ b/mes-ui/mes-ui-admin-vue3/src/components/UploadFile/src/UploadFileBatch.vue @@ -10,7 +10,7 @@ :auto-upload="autoUpload" :action="updateUrl" :headers="uploadHeaders" - :data="{'businessType': businessType, 'businessId': businessId}" + :data="{'businessType': businessType, 'businessId': businessId, 'businessFileType': businessFileType}" :limit="props.limit" :drag="drag" :before-upload="beforeUpload" @@ -44,8 +44,9 @@ const message = useMessage() // 消息弹窗 const emit = defineEmits(['update:modelValue']) const props = defineProps({ - businessType: propTypes.string, - businessId: propTypes.number, + businessType: propTypes.string, // 业务类型 + businessId: propTypes.number, // 业务id + businessFileType: propTypes.string, // 业务文件类型 区分不同业务文件 modelValue: propTypes.oneOfType([String, Array]).isRequired, title: propTypes.string.def('文件上传'), updateUrl: propTypes.string.def(import.meta.env.VITE_UPLOAD_BATCH_URL), diff --git a/sql/v1.1.0/heli.sql b/sql/v1.1.0/heli.sql index 6455aa79..48ba9845 100644 --- a/sql/v1.1.0/heli.sql +++ b/sql/v1.1.0/heli.sql @@ -1,3 +1,15 @@ +ALTER TABLE system_operate_log MODIFY COLUMN `result_data` TEXT COMMENT '结果数据'; +ALTER TABLE system_operate_log MODIFY COLUMN `java_method_args` TEXT COMMENT 'Java 方法的参数'; +ALTER TABLE system_operate_log MODIFY COLUMN `content` TEXT COMMENT '操作内容'; + +ALTER TABLE system_operate_log ADD COLUMN `business_id` bigint(20) DEFAULT NULL COMMENT '业务id' AFTER trace_id; +ALTER TABLE system_operate_log ADD COLUMN `business_type` varchar(32) COMMENT '业务类型 用于业务关联' AFTER trace_id; + +ALTER TABLE system_operate_log add INDEX `idx_business`(`business_type`,`business_id`); + +ALTER TABLE infra_file ADD COLUMN business_file_type varchar(32) COMMENT '业务文件类型 用于区分不同业务类型文件' after business_id; +ALTER TABLE infra_file ADD INDEX `idx_business`(`business_type`,`business_id`,`business_file_type`); + DROP TABLE IF EXISTS `wms_storage`; CREATE TABLE `wms_storage` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id', @@ -42,4 +54,4 @@ CREATE TABLE `wms_storage_mat` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `tenant_id` bigint(20) NOT NULL COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 COMMENT = '入/出库物料表' ROW_FORMAT = DYNAMIC; \ No newline at end of file +) ENGINE = InnoDB AUTO_INCREMENT = 1 COMMENT = '入/出库物料表' ROW_FORMAT = DYNAMIC;