feat: 同步至若依最新版
commit
e080553f78
2
pom.xml
2
pom.xml
|
|
@ -23,7 +23,7 @@
|
|||
<swagger.version>3.0.0</swagger.version>
|
||||
<kaptcha.version>2.3.3</kaptcha.version>
|
||||
<pagehelper.boot.version>1.4.6</pagehelper.boot.version>
|
||||
<fastjson.version>2.0.20</fastjson.version>
|
||||
<fastjson.version>2.0.23</fastjson.version>
|
||||
<oshi.version>6.4.0</oshi.version>
|
||||
<commons.io.version>2.11.0</commons.io.version>
|
||||
<commons.fileupload.version>1.4</commons.fileupload.version>
|
||||
|
|
|
|||
|
|
@ -24,6 +24,10 @@ spring:
|
|||
maxActive: 20
|
||||
# 配置获取连接等待超时的时间
|
||||
maxWait: 60000
|
||||
# 配置连接超时时间
|
||||
connectTimeout: 30000
|
||||
# 配置网络超时时间
|
||||
socketTimeout: 60000
|
||||
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
||||
timeBetweenEvictionRunsMillis: 60000
|
||||
# 配置一个连接在池中最小生存的时间,单位是毫秒
|
||||
|
|
|
|||
|
|
@ -481,7 +481,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
|
|||
}
|
||||
|
||||
/**
|
||||
* 驼峰式命名法 例如:user_name->userName
|
||||
* 驼峰式命名法
|
||||
* 例如:user_name->userName
|
||||
*/
|
||||
public static String toCamelCase(String s)
|
||||
{
|
||||
|
|
@ -489,6 +490,10 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
|
|||
{
|
||||
return null;
|
||||
}
|
||||
if (s.indexOf(SEPARATOR) == -1)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
s = s.toLowerCase();
|
||||
StringBuilder sb = new StringBuilder(s.length());
|
||||
boolean upperCase = false;
|
||||
|
|
|
|||
|
|
@ -24,6 +24,12 @@ public class DruidProperties
|
|||
@Value("${spring.datasource.druid.maxWait}")
|
||||
private int maxWait;
|
||||
|
||||
@Value("${spring.datasource.druid.connectTimeout}")
|
||||
private int connectTimeout;
|
||||
|
||||
@Value("${spring.datasource.druid.socketTimeout}")
|
||||
private int socketTimeout;
|
||||
|
||||
@Value("${spring.datasource.druid.timeBetweenEvictionRunsMillis}")
|
||||
private int timeBetweenEvictionRunsMillis;
|
||||
|
||||
|
|
@ -55,6 +61,12 @@ public class DruidProperties
|
|||
/** 配置获取连接等待超时的时间 */
|
||||
datasource.setMaxWait(maxWait);
|
||||
|
||||
/** 配置驱动连接超时时间,检测数据库建立连接的超时时间,单位是毫秒 */
|
||||
datasource.setConnectTimeout(connectTimeout);
|
||||
|
||||
/** 配置网络超时时间,等待数据库操作完成的网络超时时间,单位是毫秒 */
|
||||
datasource.setSocketTimeout(socketTimeout);
|
||||
|
||||
/** 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 */
|
||||
datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.ruoyi.framework.config.properties;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.regex.Pattern;
|
||||
import org.apache.commons.lang3.RegExUtils;
|
||||
|
|
@ -44,12 +45,12 @@ public class PermitAllUrlProperties implements InitializingBean, ApplicationCont
|
|||
|
||||
// 获取方法上边的注解 替代path variable 为 *
|
||||
Anonymous method = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class);
|
||||
Optional.ofNullable(method).ifPresent(anonymous -> info.getPatternsCondition().getPatterns()
|
||||
Optional.ofNullable(method).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns())
|
||||
.forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
|
||||
|
||||
// 获取类上边的注解, 替代path variable 为 *
|
||||
Anonymous controller = AnnotationUtils.findAnnotation(handlerMethod.getBeanType(), Anonymous.class);
|
||||
Optional.ofNullable(controller).ifPresent(anonymous -> info.getPatternsCondition().getPatterns()
|
||||
Optional.ofNullable(controller).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns())
|
||||
.forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -134,6 +134,8 @@ public class ScheduleUtils
|
|||
return StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR);
|
||||
}
|
||||
Object obj = SpringUtils.getBean(StringUtils.split(invokeTarget, ".")[0]);
|
||||
return StringUtils.containsAnyIgnoreCase(obj.getClass().getPackage().getName(), Constants.JOB_WHITELIST_STR);
|
||||
String beanPackageName = obj.getClass().getPackage().getName();
|
||||
return StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_WHITELIST_STR)
|
||||
&& !StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_ERROR_STR);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
"core-js": "3.25.3",
|
||||
"diagram-js": "^11.4.1",
|
||||
"echarts": "5.4.0",
|
||||
"element-ui": "2.15.10",
|
||||
"element-ui": "2.15.12",
|
||||
"file-saver": "2.0.5",
|
||||
"fuse.js": "6.4.3",
|
||||
"highlight.js": "9.18.5",
|
||||
|
|
|
|||
|
|
@ -76,34 +76,57 @@ export default {
|
|||
},
|
||||
mounted() {
|
||||
// this.formData.signal = this.element.businessObject.extensionElements?.values.map(item => {
|
||||
// let type
|
||||
// if ('class' in item.$attrs) type = 'class'
|
||||
// if ('expression' in item.$attrs) type = 'expression'
|
||||
// if ('delegateExpression' in item.$attrs) type = 'delegateExpression'
|
||||
// return {
|
||||
// event: item.$attrs.event,
|
||||
// type: type,
|
||||
// className: item.$attrs[type]
|
||||
// }
|
||||
// }) ?? []
|
||||
this.formData.signal = this.element.businessObject.extensionElements?.values
|
||||
.filter(item => item.$type === 'bpmn:Signal')
|
||||
.map(item => {
|
||||
return {
|
||||
scope: item.scope,
|
||||
id: item.id,
|
||||
name: item.name
|
||||
}
|
||||
}) ?? []
|
||||
},
|
||||
methods: {
|
||||
updateElement() {
|
||||
// if (this.formData.signal?.length) {
|
||||
// let extensionElements = this.element.businessObject.get('extensionElements')
|
||||
// if (!extensionElements) {
|
||||
// console.log(this.modeler.get('moddle'),"this.modeler.get('moddle')")
|
||||
// extensionElements = this.modeler.get('moddle').create('bpmn:Signal')
|
||||
// }
|
||||
// extensionElements.values = extensionElements.values?.filter(item => item.$type !== 'bpmn:Signal') ?? []
|
||||
// console.log(extensionElements,"extensionElements")
|
||||
// const length = extensionElements.get('values').length
|
||||
// for (let i = 0; i < length; i++) {
|
||||
// // 清除旧值
|
||||
// extensionElements.get('values').pop()
|
||||
// }
|
||||
// this.updateProperties({ extensionElements: extensionElements })
|
||||
// } else {
|
||||
// const extensionElements = this.element.businessObject[`extensionElements`]
|
||||
// if (extensionElements) {
|
||||
// extensionElements.values = extensionElements.values?.filter(item => item.$type !== 'flowable:ExecutionListener')
|
||||
// }
|
||||
// }
|
||||
if (this.formData.signal?.length) {
|
||||
let extensionElements = this.element.businessObject.get('extensionElements')
|
||||
if (!extensionElements) {
|
||||
extensionElements = this.modeler.get('moddle').create('bpmn:signal')
|
||||
}
|
||||
const length = extensionElements.get('values').length
|
||||
for (let i = 0; i < length; i++) {
|
||||
// 清除旧值
|
||||
extensionElements.get('values').pop()
|
||||
extensionElements = this.modeler.get('moddle').create('bpmn:ExtensionElements')
|
||||
}
|
||||
// 清除旧值
|
||||
extensionElements.values = extensionElements.values?.filter(item => item.$type !== 'bpmn:Signal') ?? []
|
||||
this.formData.signal.forEach(item => {
|
||||
const signal = this.modeler.get('moddle').create('bpmn:Signal')
|
||||
signal['scope'] = item.scope
|
||||
signal['id'] = item.id
|
||||
signal['name'] = item.name
|
||||
extensionElements.get('values').push(signal)
|
||||
})
|
||||
this.updateProperties({ extensionElements: extensionElements })
|
||||
} else {
|
||||
const extensionElements = this.element.businessObject[`extensionElements`]
|
||||
if (extensionElements) {
|
||||
extensionElements.values = extensionElements.values?.filter(item => item.$type !== 'flowable:ExecutionListener')
|
||||
extensionElements.values = extensionElements.values?.filter(item => item.$type !== 'bpmn:Signal') ?? []
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -945,7 +945,8 @@
|
|||
"bpmn:BoundaryEvent",
|
||||
"bpmn:CallActivity",
|
||||
"bpmn:SubProcess",
|
||||
"bpmn:Process"
|
||||
"bpmn:Process",
|
||||
"bpmn:Signal"
|
||||
]
|
||||
},
|
||||
"properties": [
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ export default {
|
|||
},
|
||||
isFirstView() {
|
||||
try {
|
||||
return this.selectedTag.fullPath === this.visitedViews[1].fullPath || this.selectedTag.fullPath === '/index'
|
||||
return this.selectedTag.fullPath === '/index' || this.selectedTag.fullPath === this.visitedViews[1].fullPath
|
||||
} catch (err) {
|
||||
return false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { isRelogin } from '@/utils/request'
|
|||
|
||||
NProgress.configure({ showSpinner: false })
|
||||
|
||||
const whiteList = ['/login', '/auth-redirect', '/bind', '/register']
|
||||
const whiteList = ['/login', '/register']
|
||||
|
||||
router.beforeEach((to, from, next) => {
|
||||
NProgress.start()
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@
|
|||
</el-form>
|
||||
<!-- 底部 -->
|
||||
<div class="el-login-footer">
|
||||
<span>Copyright © 2018-2022 ruoyi.vip All Rights Reserved.</span>
|
||||
<span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
</el-form>
|
||||
<!-- 底部 -->
|
||||
<div class="el-register-footer">
|
||||
<span>Copyright © 2018-2022 ruoyi.vip All Rights Reserved.</span>
|
||||
<span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
Loading…
Reference in New Issue