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);
+ }
+
+
+}