From 3349d0d93381d4bdec10ba39d4f321fe799fb7cd Mon Sep 17 00:00:00 2001
From: "1437892690@qq.com" <1437892690@qq.com>
Date: Fri, 24 May 2024 18:40:42 +0800
Subject: [PATCH 1/2] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]=20IT=E6=9C=8D=E5=8A=A1?=
=?UTF-8?q?-=E6=AD=A5=E9=AA=A4=E6=95=B0=E9=87=8F=E5=A4=9A=E6=97=B6?=
=?UTF-8?q?=EF=BC=8C=E6=B5=81=E8=BD=AC=E6=85=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
关联 #[1162398289854464]IT服务-步骤数量多时,流转慢 http://192.168.0.96:8090/demo/rdm.html#/bug-detail/939050947543040/939050947543057/1162398289854464
---
.../process/aop/MethodTimingAspect.java | 80 ++++++++++
.../dao/mapper/process/ProcessMapper.java | 2 +
.../dao/mapper/process/ProcessMapper.xml | 9 ++
.../mapper/processtask/ProcessTaskMapper.java | 21 ++-
.../mapper/processtask/ProcessTaskMapper.xml | 151 +++++++++++++-----
.../service/ProcessStepHandlerUtil.java | 20 ++-
.../ProcessTaskStepTaskServiceImpl.java | 4 +-
7 files changed, 237 insertions(+), 50 deletions(-)
create mode 100644 src/main/java/neatlogic/module/process/aop/MethodTimingAspect.java
diff --git a/src/main/java/neatlogic/module/process/aop/MethodTimingAspect.java b/src/main/java/neatlogic/module/process/aop/MethodTimingAspect.java
new file mode 100644
index 000000000..d917b7dd7
--- /dev/null
+++ b/src/main/java/neatlogic/module/process/aop/MethodTimingAspect.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2024 深圳极向量科技有限公司 All Rights Reserved.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package neatlogic.module.process.aop;
+
+import com.alibaba.fastjson.JSON;
+import neatlogic.framework.util.UuidUtil;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.time.Duration;
+import java.time.Instant;
+import java.util.Arrays;
+
+@Aspect
+@Component
+public class MethodTimingAspect {
+
+ private final static Logger logger = LoggerFactory.getLogger(MethodTimingAspect.class);
+
+ @Around("execution(* neatlogic.module.process.api..*(..))")
+ public Object logExecutionTime0(ProceedingJoinPoint joinPoint) throws Throwable {
+ return log(joinPoint);
+ }
+ @Around("execution(* neatlogic.module.process.service..*(..))")
+ public Object logExecutionTime1(ProceedingJoinPoint joinPoint) throws Throwable {
+ return log(joinPoint);
+ }
+ @Around("execution(* neatlogic.module.process.dao.mapper..*(..))")
+ public Object logExecutionTime2(ProceedingJoinPoint joinPoint) throws Throwable {
+ return log(joinPoint);
+ }
+ @Around("execution(* neatlogic.module.process.stephandler..*(..))")
+ public Object logExecutionTime3(ProceedingJoinPoint joinPoint) throws Throwable {
+ return log(joinPoint);
+ }
+ @Around("execution(* neatlogic.framework.process.stephandler..*(..))")
+ public Object logExecutionTime4(ProceedingJoinPoint joinPoint) throws Throwable {
+ return log(joinPoint);
+ }
+ @Around("execution(* neatlogic.framework.process.operationauth..*(..))")
+ public Object logExecutionTime5(ProceedingJoinPoint joinPoint) throws Throwable {
+ return log(joinPoint);
+ }
+ @Around("execution(* neatlogic.module.process.operationauth..*(..))")
+ public Object logExecutionTime6(ProceedingJoinPoint joinPoint) throws Throwable {
+ return log(joinPoint);
+ }
+
+ private Object log(ProceedingJoinPoint joinPoint) throws Throwable {
+ String uuid = UuidUtil.randomUuid();
+ Instant start = Instant.now();
+ Object[] args = joinPoint.getArgs();
+ logger.error(" " + uuid + " " + joinPoint.getSignature().toShortString() + " 参数: " + JSON.toJSONString(Arrays.asList(args)));
+ Object result = joinPoint.proceed(); // 继续执行目标方法
+ Instant finish = Instant.now();
+ long timeElapsed = Duration.between(start, finish).toMillis();
+ String format = (timeElapsed < 100 ? " " : "* ") + "% 5d ms %s %s -> %s";
+ logger.error(String.format(format, timeElapsed, uuid, joinPoint.getSignature().toShortString(), joinPoint.getSignature().toLongString()));
+ return result;
+ }
+}
diff --git a/src/main/java/neatlogic/module/process/dao/mapper/process/ProcessMapper.java b/src/main/java/neatlogic/module/process/dao/mapper/process/ProcessMapper.java
index 2840bcf12..f050fa3f3 100644
--- a/src/main/java/neatlogic/module/process/dao/mapper/process/ProcessMapper.java
+++ b/src/main/java/neatlogic/module/process/dao/mapper/process/ProcessMapper.java
@@ -94,6 +94,8 @@ public interface ProcessMapper extends IProcessCrossoverMapper {
List getProcessStepTagIdListByProcessStepUuid(String processStepUuid);
+ List getProcessStepTagListByProcessUuid(String processUuid);
+
int insertProcess(ProcessVo processVo);
int insertProcessStep(ProcessStepVo processStepVo);
diff --git a/src/main/java/neatlogic/module/process/dao/mapper/process/ProcessMapper.xml b/src/main/java/neatlogic/module/process/dao/mapper/process/ProcessMapper.xml
index eeb5d14d5..8e680c0b1 100644
--- a/src/main/java/neatlogic/module/process/dao/mapper/process/ProcessMapper.xml
+++ b/src/main/java/neatlogic/module/process/dao/mapper/process/ProcessMapper.xml
@@ -441,6 +441,15 @@
SELECT `tag_id` FROM `process_step_tag` WHERE `process_step_uuid` = #{value}
+
+
INSERT INTO `process_sla` (
`uuid`,
diff --git a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskMapper.java b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskMapper.java
index 70fa4b7e7..e30aff40b 100644
--- a/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskMapper.java
+++ b/src/main/java/neatlogic/module/process/dao/mapper/processtask/ProcessTaskMapper.java
@@ -191,8 +191,6 @@ public interface ProcessTaskMapper extends IProcessTaskCrossoverMapper {
List getProcessTaskStepListByIdList(List processTaskStepIdList);
-// ProcessTaskStepNotifyPolicyVo getProcessTaskStepNotifyPolicy(ProcessTaskStepNotifyPolicyVo processTaskStepNotifyPolicyVo);
-
Map getProcessTaskOldFormAndPropByTaskId(Long processTaskId);
List
+
+ INSERT INTO `processtask_step_worker_policy` (`processtask_id`,
+ `processtask_step_id`,
+ `process_step_uuid`,
+ `policy`,
+ `sort`,
+ `config`)
+ VALUES
+
+ (#{item.processTaskId},
+ #{item.processTaskStepId},
+ #{item.processStepUuid},
+ #{item.policy},
+ #{item.sort},
+ #{item.config})
+
+
+
INSERT ignore INTO `processtask_formattribute` (`processtask_id`, `form_attribute_data_id`)
VALUES (#{processTaskId}, #{id})
+
+ INSERT ignore INTO `processtask_formattribute` (`processtask_id`, `form_attribute_data_id`)
+ VALUES
+
+ (#{item.processTaskId}, #{item.id})
+
+
+
INSERT ignore INTO `processtask_extend_formattribute` (`processtask_id`, `form_attribute_data_id`, `tag`)
VALUES (#{processTaskId}, #{id}, #{tag})
+
+ INSERT ignore INTO `processtask_extend_formattribute` (`processtask_id`, `form_attribute_data_id`, `tag`)
+ VALUES
+
+ (#{item.processTaskId}, #{item.id}, #{item.tag})
+
+
+
INSERT IGNORE INTO `processtask_converge` (`converge_id`,
`processtask_step_id`,
@@ -3103,6 +3124,32 @@
#{type})
+
+ INSERT INTO `processtask_step_rel` (`processtask_id`,
+ `from_process_step_uuid`,
+ `to_process_step_uuid`,
+ `from_processtask_step_id`,
+ `to_processtask_step_id`,
+ `condition`,
+ `is_hit`,
+ `uuid`,
+ `name`,
+ `type`)
+ VALUES
+
+ (#{item.processTaskId},
+ #{item.fromProcessStepUuid},
+ #{item.toProcessStepUuid},
+ #{item.fromProcessTaskStepId},
+ #{item.toProcessTaskStepId},
+ #{item.condition},
+ #{item.isHit},
+ #{item.processStepRelUuid},
+ #{item.name},
+ #{item.type})
+
+
+
INSERT INTO `processtask_step` (
@@ -3130,6 +3177,34 @@
)
+
+ INSERT INTO `processtask_step` (
+ `id`,
+ `processtask_id`,
+ `name`,
+ `process_step_uuid`,
+ `status`,
+ `type`,
+ `handler`,
+ `is_active`,
+ `config_hash`
+ )
+ VALUES
+
+ (
+ #{item.id},
+ #{item.processTaskId},
+ #{item.name},
+ #{item.processStepUuid},
+ #{item.status},
+ #{item.type},
+ #{item.handler},
+ #{item.isActive},
+ #{item.configHash}
+ )
+
+
+
REPLACE INTO `processtask_step` (
@@ -3364,6 +3439,15 @@
VALUES (#{hash}, #{config})
+
+ insert ignore INTO `processtask_step_config` (`hash`, `config`)
+ VALUES
+
+ (#{item.hash}, #{item.config})
+
+
+
INSERT IGNORE INTO `processtask_config` (`hash`, `config`)
VALUES (#{hash}, #{config})
@@ -3400,26 +3484,6 @@
NOW(3))
-
-
-
- INSERT INTO `processtask_step_notify_policy` (`processtask_step_id`,
- `policy_id`,
- `policy_name`,
- `policy_handler`,
- `policy_config_hash`)
- VALUES (#{processTaskStepId},
- #{policyId},
- #{policyName},
- #{policyHandler},
- #{policyConfigHash})
-
-
REPLACE INTO `processtask_old_form_prop` (`processtask_id`, `form`, `prop`)
VALUES (#{processTaskId}, #{form}, #{prop})
@@ -3560,6 +3624,18 @@
#{tagId})
+
+ INSERT INTO `processtask_step_tag` (`processtask_id`,
+ `processtask_step_id`,
+ `tag_id`)
+ VALUES
+
+ (#{item.processTaskId},
+ #{item.processTaskStepId},
+ #{item.tagId})
+
+
+
REPLACE INTO `processtask_repeat` (`processtask_id`, `repeat_group_id`) VALUES
@@ -3931,7 +4007,7 @@
- DELETE ps,psa,psau,psaud,psc,psnp,psd,psf,psr,psrl,pss,pst,psu,psw,pswp
+ DELETE ps,psa,psau,psaud,psc,psd,psf,psr,psrl,pss,pst,psu,psw,pswp
FROM `processtask_step` ps
LEFT JOIN
`processtask_step_agent` psa
@@ -3941,7 +4017,6 @@
LEFT JOIN `processtask_step_audit_detail` psaud ON psau.id = psaud.audit_id
LEFT JOIN `processtask_step_content` psc ON psc.`processtask_id` =
ps.`processtask_id` AND psc.`processtask_step_id` = ps.id
- LEFT JOIN `processtask_step_notify_policy` psnp ON psnp.`processtask_step_id` = ps.id
LEFT JOIN `processtask_step_data` psd
ON psd.`processtask_id` = ps.`processtask_id` AND psd.`processtask_step_id` =
ps.id
diff --git a/src/main/java/neatlogic/module/process/service/ProcessStepHandlerUtil.java b/src/main/java/neatlogic/module/process/service/ProcessStepHandlerUtil.java
index a568bdf47..9f77350ab 100644
--- a/src/main/java/neatlogic/module/process/service/ProcessStepHandlerUtil.java
+++ b/src/main/java/neatlogic/module/process/service/ProcessStepHandlerUtil.java
@@ -981,6 +981,7 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil, IProcess
}
// 写入当前工单的表单属性值
+ List needSaveProcessTaskFormAttributeDataList = new ArrayList<>();
for (ProcessTaskFormAttributeDataVo dataVo : newProcessTaskFormAttributeDataList) {
String attributeUuid = dataVo.getAttributeUuid();
ProcessTaskFormAttributeDataVo oldProcessTaskFormAttributeDataVo = oldProcessTaskFormAttributeDataMap.get(attributeUuid);
@@ -999,14 +1000,20 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil, IProcess
dataVo.setData(dataObj.toString());
}
}*/
- formMapper.insertFormAttributeData(dataVo);
- processTaskMapper.insertProcessTaskFormAttribute(dataVo);
+// formMapper.insertFormAttributeData(dataVo);
+// processTaskMapper.insertProcessTaskFormAttribute(dataVo);
+ needSaveProcessTaskFormAttributeDataList.add(dataVo);
+ }
+ if (CollectionUtils.isNotEmpty(needSaveProcessTaskFormAttributeDataList)) {
+ formMapper.insertFormAttributeDataList(needSaveProcessTaskFormAttributeDataList);
+ processTaskMapper.insertProcessTaskFormAttributeList(needSaveProcessTaskFormAttributeDataList);
}
// 保存表单扩展组件值
List oldExtendAttributeDataList = processTaskMapper.getProcessTaskExtendFormAttributeDataListByProcessTaskId(processTaskId, null);
Map oldExtendAttributeDataMap = oldExtendAttributeDataList.stream().collect(Collectors.toMap(AttributeDataVo::getAttributeUuid, e -> e));
JSONArray formExtendAttributeDataList = paramObj.getJSONArray("formExtendAttributeDataList");
if (CollectionUtils.isNotEmpty(formExtendAttributeDataList)) {
+ List needSaveProcessTaskFormExtendAttributeDataList = new ArrayList<>();
for (int j = 0; j < formExtendAttributeDataList.size(); j++) {
JSONObject formExtendAttributeDataObj = formExtendAttributeDataList.getJSONObject(j);
if (MapUtils.isEmpty(formExtendAttributeDataObj)) {
@@ -1031,9 +1038,14 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil, IProcess
processTaskExtendFormAttributeDataVo.setAttributeUuid(formAttributeVo.getUuid());
processTaskExtendFormAttributeDataVo.setAttributeLabel(formAttributeVo.getLabel());
processTaskExtendFormAttributeDataVo.setData(dataList);
- formMapper.insertFormExtendAttributeData(processTaskExtendFormAttributeDataVo);
+// formMapper.insertFormExtendAttributeData(processTaskExtendFormAttributeDataVo);
processTaskExtendFormAttributeDataVo.setProcessTaskId(processTaskId);
- processTaskMapper.insertProcessTaskExtendFormAttribute(processTaskExtendFormAttributeDataVo);
+// processTaskMapper.insertProcessTaskExtendFormAttribute(processTaskExtendFormAttributeDataVo);
+ needSaveProcessTaskFormExtendAttributeDataList.add(processTaskExtendFormAttributeDataVo);
+ }
+ if (CollectionUtils.isNotEmpty(needSaveProcessTaskFormExtendAttributeDataList)) {
+ formMapper.insertFormExtendAttributeDataList(needSaveProcessTaskFormExtendAttributeDataList);
+ processTaskMapper.insertProcessTaskExtendFormAttributeList(needSaveProcessTaskFormExtendAttributeDataList);
}
}
}
diff --git a/src/main/java/neatlogic/module/process/service/ProcessTaskStepTaskServiceImpl.java b/src/main/java/neatlogic/module/process/service/ProcessTaskStepTaskServiceImpl.java
index 0f6eca5fc..10b3b1536 100644
--- a/src/main/java/neatlogic/module/process/service/ProcessTaskStepTaskServiceImpl.java
+++ b/src/main/java/neatlogic/module/process/service/ProcessTaskStepTaskServiceImpl.java
@@ -76,7 +76,7 @@ public class ProcessTaskStepTaskServiceImpl implements ProcessTaskStepTaskServic
@Resource
ProcessTaskService processTaskService;
@Resource
- ProcessTaskAgentServiceImpl processTaskAgentServiceImpl;
+ ProcessTaskAgentService processTaskAgentService;
@Resource
private FileMapper fileMapper;
@@ -713,7 +713,7 @@ public class ProcessTaskStepTaskServiceImpl implements ProcessTaskStepTaskServic
return 1;
}
}
- List fromUuidList = processTaskAgentServiceImpl.getFromUserUuidListByToUserUuidAndChannelUuid(UserContext.get().getUserUuid(true), processTaskVo.getChannelUuid());
+ List fromUuidList = processTaskAgentService.getFromUserUuidListByToUserUuidAndChannelUuid(UserContext.get().getUserUuid(true), processTaskVo.getChannelUuid());
if (fromUuidList.contains(stepTaskUserUuid)) {
return 1;
}
--
Gitee
From e43b9837c8fce4a20763e1e2579cfca2f6746371 Mon Sep 17 00:00:00 2001
From: "1437892690@qq.com" <1437892690@qq.com>
Date: Fri, 24 May 2024 19:11:08 +0800
Subject: [PATCH 2/2] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]=20IT=E6=9C=8D=E5=8A=A1?=
=?UTF-8?q?-=E6=AD=A5=E9=AA=A4=E6=95=B0=E9=87=8F=E5=A4=9A=E6=97=B6?=
=?UTF-8?q?=EF=BC=8C=E6=B5=81=E8=BD=AC=E6=85=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
关联 #[1162398289854464]IT服务-步骤数量多时,流转慢 http://192.168.0.96:8090/demo/rdm.html#/bug-detail/939050947543040/939050947543057/1162398289854464
---
.../java/neatlogic/module/process/aop/MethodTimingAspect.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/main/java/neatlogic/module/process/aop/MethodTimingAspect.java b/src/main/java/neatlogic/module/process/aop/MethodTimingAspect.java
index d917b7dd7..821cb6287 100644
--- a/src/main/java/neatlogic/module/process/aop/MethodTimingAspect.java
+++ b/src/main/java/neatlogic/module/process/aop/MethodTimingAspect.java
@@ -18,6 +18,7 @@
package neatlogic.module.process.aop;
import com.alibaba.fastjson.JSON;
+import neatlogic.framework.common.config.Config;
import neatlogic.framework.util.UuidUtil;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
@@ -66,6 +67,9 @@ public class MethodTimingAspect {
}
private Object log(ProceedingJoinPoint joinPoint) throws Throwable {
+ if (!Config.ENABLE_METHOD_TIMING_ASPECT()) {
+ return joinPoint.proceed();
+ }
String uuid = UuidUtil.randomUuid();
Instant start = Instant.now();
Object[] args = joinPoint.getArgs();
--
Gitee