From f45ad5ef5de7287d9d5b36f56a7f66a9ec8604c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=8E=E6=96=87=E6=88=90?= <416970882@qq.com> Date: Fri, 25 Oct 2024 09:10:53 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=BD=91=E5=85=B3DataBufferLimitException:?= =?UTF-8?q?=20Exceeded=20limit=20on=20max=20bytes=20to=20buffer=20:262144?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/codec/AbstractDataBufferDecoder.java | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 yudao-gateway/src/main/java/org/springframework/core/codec/AbstractDataBufferDecoder.java diff --git a/yudao-gateway/src/main/java/org/springframework/core/codec/AbstractDataBufferDecoder.java b/yudao-gateway/src/main/java/org/springframework/core/codec/AbstractDataBufferDecoder.java new file mode 100644 index 000000000..40a211142 --- /dev/null +++ b/yudao-gateway/src/main/java/org/springframework/core/codec/AbstractDataBufferDecoder.java @@ -0,0 +1,112 @@ +/* + * Copyright 2002-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.core.codec; + +import org.reactivestreams.Publisher; +import org.springframework.core.ResolvableType; +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.core.io.buffer.DataBufferUtils; +import org.springframework.lang.Nullable; +import org.springframework.util.MimeType; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.util.Map; + +/** + * 重写SpringWebFex底层 为了解决GateWay报错:Exceeded limit on max bytes to buffer : 262144 错误 + * Abstract base class for {@code Decoder} implementations that can decode + * a {@code DataBuffer} directly to the target element type. + * + *

Sub-classes must implement {@link #decodeDataBuffer} to provide a way to + * transform a {@code DataBuffer} to the target data type. The default + * {@link #decode} implementation transforms each individual data buffer while + * {@link #decodeToMono} applies "reduce" and transforms the aggregated buffer. + * + *

Sub-classes can override {@link #decode} in order to split the input stream + * along different boundaries (e.g. on new line characters for {@code String}) + * or always reduce to a single data buffer (e.g. {@code Resource}). + * + * @author Rossen Stoyanchev + * @since 5.0 + * @param the element type + */ +@SuppressWarnings("deprecation") +public abstract class AbstractDataBufferDecoder extends AbstractDecoder { + + private int maxInMemorySize = 1024*1024*8;//8M + + + protected AbstractDataBufferDecoder(MimeType... supportedMimeTypes) { + super(supportedMimeTypes); + } + + + /** + * Configure a limit on the number of bytes that can be buffered whenever + * the input stream needs to be aggregated. This can be a result of + * decoding to a single {@code DataBuffer}, + * {@link java.nio.ByteBuffer ByteBuffer}, {@code byte[]}, + * {@link org.springframework.core.io.Resource Resource}, {@code String}, etc. + * It can also occur when splitting the input stream, e.g. delimited text, + * in which case the limit applies to data buffered between delimiters. + *

By default this is set to 256K. + * @param byteCount the max number of bytes to buffer, or -1 for unlimited + * @since 5.1.11 + */ + public void setMaxInMemorySize(int byteCount) { + this.maxInMemorySize = byteCount; + } + + /** + * Return the {@link #setMaxInMemorySize configured} byte count limit. + * @since 5.1.11 + */ + public int getMaxInMemorySize() { + return this.maxInMemorySize; + } + + + @Override + public Flux decode(Publisher input, ResolvableType elementType, + @Nullable MimeType mimeType, @Nullable Map hints) { + + return Flux.from(input).map(buffer -> decodeDataBuffer(buffer, elementType, mimeType, hints)); + } + + @Override + public Mono decodeToMono(Publisher input, ResolvableType elementType, + @Nullable MimeType mimeType, @Nullable Map hints) { + + return DataBufferUtils.join(input, this.maxInMemorySize) + .map(buffer -> decodeDataBuffer(buffer, elementType, mimeType, hints)); + } + + /** + * How to decode a {@code DataBuffer} to the target element type. + * @deprecated as of 5.2, please implement + * {@link #decode(DataBuffer, ResolvableType, MimeType, Map)} instead + */ + @Deprecated + @Nullable + protected T decodeDataBuffer(DataBuffer buffer, ResolvableType elementType, + @Nullable MimeType mimeType, @Nullable Map hints) { + + return decode(buffer, elementType, mimeType, hints); + } + +} From 874dfca337b53656b16fcad6cde6f750b837f3a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=8E=E6=96=87=E6=88=90?= <416970882@qq.com> Date: Fri, 25 Oct 2024 09:22:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E4=BB=BB=E5=8A=A1=E8=87=AA=E5=8A=A8=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autoapprove/AutoApproveTaskListener.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/autoapprove/AutoApproveTaskListener.java diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/autoapprove/AutoApproveTaskListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/autoapprove/AutoApproveTaskListener.java new file mode 100644 index 000000000..437bd56df --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/listener/autoapprove/AutoApproveTaskListener.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.bpm.framework.flowable.core.listener.autoapprove; + +/** + * @author ywc + * @date 2024 年 10 月 25 日 9:19 + */ + +import cn.hutool.extra.spring.SpringUtil; +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskApproveReqVO; +import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; +import lombok.extern.slf4j.Slf4j; +import org.flowable.engine.TaskService; +import org.flowable.engine.delegate.TaskListener; +import org.flowable.task.service.delegate.DelegateTask; + +/** + * 自动审批任务监听 + * @author ywc + * @date 2024 年 09 月 14 日 18:10 + */ +@Slf4j +public class AutoApproveTaskListener implements TaskListener { + BpmTaskService bpmTaskService= SpringUtil.getBean(BpmTaskService.class); + @Override + public void notify(DelegateTask delegateTask) { + BpmTaskApproveReqVO bpmTaskApproveReqVO = new BpmTaskApproveReqVO(); + bpmTaskApproveReqVO.setId(delegateTask.getId()); + bpmTaskApproveReqVO.setReason("自动审核"); + bpmTaskApproveReqVO.setVariables(delegateTask.getVariables()); + bpmTaskService.approveTask(Long.valueOf(delegateTask.getAssignee()),bpmTaskApproveReqVO); + } + + +}