lenos增加可配置化定时任务,可实现前端定时增删改查,个性化配置,定时可对数据库进行操作,新增定时表sys_job。
This commit is contained in:
parent
c03d9982a5
commit
6f101b03a8
|
@ -7,6 +7,7 @@
|
|||
<element id="module-output" name="len-web" />
|
||||
</element>
|
||||
<element id="directory" name="lib">
|
||||
<element id="library" level="project" name="Maven: org.mybatis.generator:mybatis-generator-core:1.3.5" />
|
||||
<element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-web:1.5.9.RELEASE" />
|
||||
<element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter:1.5.9.RELEASE" />
|
||||
<element id="library" level="project" name="Maven: org.springframework.boot:spring-boot:1.5.9.RELEASE" />
|
||||
|
@ -34,7 +35,23 @@
|
|||
<element id="archive" name="len-sys-1.0-SNAPSHOT.jar">
|
||||
<element id="module-output" name="len-sys" />
|
||||
</element>
|
||||
<element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.9.RELEASE" />
|
||||
<element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-test:1.5.9.RELEASE" />
|
||||
<element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.9.RELEASE" />
|
||||
<element id="library" level="project" name="Maven: com.jayway.jsonpath:json-path:2.2.0" />
|
||||
<element id="library" level="project" name="Maven: net.minidev:json-smart:2.2.1" />
|
||||
<element id="library" level="project" name="Maven: net.minidev:accessors-smart:1.1" />
|
||||
<element id="library" level="project" name="Maven: org.ow2.asm:asm:5.0.3" />
|
||||
<element id="library" level="project" name="Maven: org.assertj:assertj-core:2.6.0" />
|
||||
<element id="library" level="project" name="Maven: org.mockito:mockito-core:1.10.19" />
|
||||
<element id="library" level="project" name="Maven: org.objenesis:objenesis:2.1" />
|
||||
<element id="library" level="project" name="Maven: org.hamcrest:hamcrest-core:1.3" />
|
||||
<element id="library" level="project" name="Maven: org.hamcrest:hamcrest-library:1.3" />
|
||||
<element id="library" level="project" name="Maven: org.skyscreamer:jsonassert:1.4.0" />
|
||||
<element id="library" level="project" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" />
|
||||
<element id="library" level="project" name="Maven: org.springframework:spring-core:4.3.13.RELEASE" />
|
||||
<element id="library" level="project" name="Maven: org.springframework:spring-test:4.3.13.RELEASE" />
|
||||
<element id="library" level="project" name="Maven: junit:junit:4.12" />
|
||||
<element id="library" level="project" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1" />
|
||||
<element id="library" level="project" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:1.3.1" />
|
||||
<element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-cache:1.5.9.RELEASE" />
|
||||
|
@ -72,8 +89,6 @@
|
|||
<element id="library" level="project" name="Maven: log4j:log4j:1.2.17" />
|
||||
<element id="library" level="project" name="Maven: com.google.zxing:javase:3.1.0" />
|
||||
<element id="library" level="project" name="Maven: com.google.zxing:core:3.1.0" />
|
||||
<element id="library" level="project" name="Maven: org.quartz-scheduler:quartz:2.2.1" />
|
||||
<element id="library" level="project" name="Maven: c3p0:c3p0:0.9.1.1" />
|
||||
<element id="library" level="project" name="Maven: org.springframework.integration:spring-integration-mail:4.3.12.RELEASE" />
|
||||
<element id="library" level="project" name="Maven: org.springframework.integration:spring-integration-core:4.3.12.RELEASE" />
|
||||
<element id="library" level="project" name="Maven: org.springframework:spring-messaging:4.3.13.RELEASE" />
|
||||
|
@ -120,6 +135,11 @@
|
|||
<element id="library" level="project" name="Maven: io.springfox:springfox-swagger-ui:2.7.0" />
|
||||
<element id="library" level="project" name="Maven: org.springframework:spring-context-support:4.3.13.RELEASE" />
|
||||
<element id="library" level="project" name="Maven: org.springframework:spring-beans:4.3.13.RELEASE" />
|
||||
<element id="library" level="project" name="Maven: org.quartz-scheduler:quartz:2.3.0" />
|
||||
<element id="library" level="project" name="Maven: com.mchange:c3p0:0.9.5.2" />
|
||||
<element id="library" level="project" name="Maven: com.mchange:mchange-commons-java:0.2.11" />
|
||||
<element id="library" level="project" name="Maven: com.zaxxer:HikariCP-java6:2.3.13" />
|
||||
<element id="library" level="project" name="Maven: org.apache.shiro:shiro-quartz:1.2.3" />
|
||||
</element>
|
||||
</element>
|
||||
<element id="directory" name="META-INF">
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: c3p0:c3p0:0.9.1.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/c3p0/c3p0/0.9.1.1/c3p0-0.9.1.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/c3p0/c3p0/0.9.1.1/c3p0-0.9.1.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/c3p0/c3p0/0.9.1.1/c3p0-0.9.1.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.mchange:c3p0:0.9.5.2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/mchange/c3p0/0.9.5.2/c3p0-0.9.5.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/mchange/c3p0/0.9.5.2/c3p0-0.9.5.2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/mchange/c3p0/0.9.5.2/c3p0-0.9.5.2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.mchange:mchange-commons-java:0.2.11">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/mchange/mchange-commons-java/0.2.11/mchange-commons-java-0.2.11.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/mchange/mchange-commons-java/0.2.11/mchange-commons-java-0.2.11-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/mchange/mchange-commons-java/0.2.11/mchange-commons-java-0.2.11-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.zaxxer:HikariCP-java6:2.3.13">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP-java6/2.3.13/HikariCP-java6-2.3.13.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP-java6/2.3.13/HikariCP-java6-2.3.13-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP-java6/2.3.13/HikariCP-java6-2.3.13-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -1,13 +0,0 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: junit:junit:3.8.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/3.8.1/junit-3.8.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/3.8.1/junit-3.8.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/3.8.1/junit-3.8.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.apache.shiro:shiro-quartz:1.2.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-quartz/1.2.3/shiro-quartz-1.2.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-quartz/1.2.3/shiro-quartz-1.2.3-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-quartz/1.2.3/shiro-quartz-1.2.3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.mybatis.generator:mybatis-generator-core:1.3.5">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mybatis/generator/mybatis-generator-core/1.3.5/mybatis-generator-core-1.3.5.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mybatis/generator/mybatis-generator-core/1.3.5/mybatis-generator-core-1.3.5-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mybatis/generator/mybatis-generator-core/1.3.5/mybatis-generator-core-1.3.5-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -1,13 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.quartz-scheduler:quartz:2.2.1">
|
||||
<library name="Maven: org.quartz-scheduler:quartz:2.3.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/quartz-scheduler/quartz/2.2.1/quartz-2.2.1.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/quartz-scheduler/quartz/2.3.0/quartz-2.3.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/quartz-scheduler/quartz/2.2.1/quartz-2.2.1-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/quartz-scheduler/quartz/2.3.0/quartz-2.3.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/quartz-scheduler/quartz/2.2.1/quartz-2.2.1-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/quartz-scheduler/quartz/2.3.0/quartz-2.3.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
30
db/lenos.sql
30
db/lenos.sql
File diff suppressed because one or more lines are too long
|
@ -23,24 +23,24 @@
|
|||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.2.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:2.6.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.4.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path:2.2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.assertj:assertj-core:2.6.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: org.objenesis:objenesis:2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.skyscreamer:jsonassert:1.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-test:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.5.9.RELEASE" level="project" />
|
||||
|
@ -108,8 +108,6 @@
|
|||
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.zxing:javase:3.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.zxing:core:3.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: c3p0:c3p0:0.9.1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-mail:4.3.12.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:4.3.12.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-messaging:4.3.13.RELEASE" level="project" />
|
||||
|
@ -156,5 +154,10 @@
|
|||
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.7.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.mchange:c3p0:0.9.5.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.11" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP-java6:2.3.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-quartz:1.2.3" level="project" />
|
||||
</component>
|
||||
</module>
|
|
@ -25,5 +25,10 @@
|
|||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
package com.len.util;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/5.
|
||||
* @email 154040976@qq.com
|
||||
*/
|
||||
public class ApplicationContextUtil implements ApplicationContextAware {
|
||||
|
||||
private static ApplicationContext applicationContext;
|
||||
@Override
|
||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||
ApplicationContextUtil.applicationContext=applicationContext;
|
||||
}
|
||||
|
||||
public static ApplicationContext getContext(){
|
||||
return applicationContext;
|
||||
}
|
||||
|
||||
public static Object getBean(String arg){
|
||||
return applicationContext.getBean(arg);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
package com.len.util;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.stereotype.Component;
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/5.
|
||||
* @email 154040976@qq.com
|
||||
* 参照一些案例在此对 在此对网上分享者说声感谢 by:zxm
|
||||
* 通过封装applicationContext上线文
|
||||
* 获取 spring bean对象 bean启动时候 已经被打印出,可直接根据name、class、name class获取
|
||||
*
|
||||
* 很多地方能用得到
|
||||
*/
|
||||
@Component
|
||||
public class SpringUtil implements ApplicationContextAware {
|
||||
|
||||
private static ApplicationContext applicationContext;
|
||||
|
||||
@Override
|
||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||
if (SpringUtil.applicationContext == null) {
|
||||
SpringUtil.applicationContext = applicationContext;
|
||||
}
|
||||
}
|
||||
|
||||
public static ApplicationContext getApplicationContext() {
|
||||
return applicationContext;
|
||||
}
|
||||
|
||||
/***
|
||||
* 根据name获取bean
|
||||
* @param name
|
||||
* @param <T>
|
||||
* @return
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> T getBean(String name) {
|
||||
return (T) getApplicationContext().getBean(name);
|
||||
}
|
||||
|
||||
public static <T> T getBean(Class<T> clazz) {
|
||||
return getApplicationContext().getBean(clazz);
|
||||
}
|
||||
|
||||
public static <T> T getBean(String name, Class<T> clazz) {
|
||||
return getApplicationContext().getBean(name, clazz);
|
||||
}
|
||||
|
||||
}
|
|
@ -26,24 +26,24 @@
|
|||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="len-core" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: junit:junit:4.12" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.2.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:2.6.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.4.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path:2.2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.assertj:assertj-core:2.6.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: org.objenesis:objenesis:2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.skyscreamer:jsonassert:1.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-test:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.5.9.RELEASE" level="project" />
|
||||
|
@ -111,8 +111,6 @@
|
|||
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.zxing:javase:3.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.zxing:core:3.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: c3p0:c3p0:0.9.1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-mail:4.3.12.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:4.3.12.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-messaging:4.3.13.RELEASE" level="project" />
|
||||
|
@ -159,5 +157,10 @@
|
|||
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.7.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.mchange:c3p0:0.9.5.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.11" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP-java6:2.3.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-quartz:1.2.3" level="project" />
|
||||
</component>
|
||||
</module>
|
|
@ -27,8 +27,7 @@
|
|||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
<version>4.12</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -0,0 +1,197 @@
|
|||
package com.len.controller;
|
||||
|
||||
import com.len.base.BaseController;
|
||||
import com.len.core.annotation.Log;
|
||||
import com.len.core.annotation.Log.LOG_TYPE;
|
||||
import com.len.core.quartz.JobTask;
|
||||
import com.len.entity.SysJob;
|
||||
import com.len.entity.SysUser;
|
||||
import com.len.exception.MyException;
|
||||
import com.len.service.JobService;
|
||||
import com.len.util.BeanUtil;
|
||||
import com.len.util.Checkbox;
|
||||
import com.len.util.JsonUtil;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import java.util.List;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/6.
|
||||
* @email 154040976@qq.com
|
||||
*
|
||||
* 定时任务 controller
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/job")
|
||||
public class JobController extends BaseController<SysJob> {
|
||||
|
||||
@Autowired
|
||||
JobService jobService;
|
||||
|
||||
@Autowired
|
||||
JobTask jobTask;
|
||||
|
||||
@GetMapping(value = "showJob")
|
||||
public String showUser(Model model) {
|
||||
return "/system/job/jobList";
|
||||
}
|
||||
|
||||
@GetMapping(value = "showJobList")
|
||||
@ResponseBody
|
||||
public String showUser(Model model, SysJob job, String page, String limit) {
|
||||
return jobService.show(job,Integer.valueOf(page),Integer.valueOf(limit));
|
||||
}
|
||||
|
||||
@GetMapping(value = "showAddJob")
|
||||
public String addJob(Model model) {
|
||||
return "/system/job/add-job";
|
||||
}
|
||||
|
||||
@ApiOperation(value = "/addJob", httpMethod = "POST", notes = "添加任务类")
|
||||
@Log(desc = "添加任务")
|
||||
@PostMapping(value = "addJob")
|
||||
@ResponseBody
|
||||
public JsonUtil addJob(SysJob job) {
|
||||
JsonUtil j=new JsonUtil();
|
||||
String msg="保存成功";
|
||||
job.setStatus(false);
|
||||
try {
|
||||
jobService.insertSelective(job);
|
||||
}catch (MyException e){
|
||||
msg="保存失败";
|
||||
j.setFlag(false);
|
||||
e.printStackTrace();
|
||||
}
|
||||
j.setMsg(msg);
|
||||
return j;
|
||||
}
|
||||
|
||||
@GetMapping(value = "updateJob")
|
||||
public String updateJob(String id, Model model, boolean detail) {
|
||||
if (StringUtils.isNotEmpty(id)) {
|
||||
SysJob job = jobService.selectByPrimaryKey(id);
|
||||
model.addAttribute("job", job);
|
||||
}
|
||||
model.addAttribute("detail", detail);
|
||||
return "system/job/update-job";
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "/updateJob", httpMethod = "POST", notes = "更新任务")
|
||||
@Log(desc = "更新任务",type = LOG_TYPE.UPDATE)
|
||||
@PostMapping(value = "updateJob")
|
||||
@ResponseBody
|
||||
public JsonUtil updateJob(SysJob job){
|
||||
JsonUtil j=new JsonUtil();
|
||||
j.setFlag(false);
|
||||
if (job == null) {
|
||||
j.setMsg("获取数据失败");
|
||||
return j;
|
||||
}
|
||||
if(jobTask.checkJob(job)){
|
||||
j.setMsg("已经启动任务无法更新,请停止后更新");
|
||||
return j;
|
||||
}
|
||||
try{
|
||||
SysJob oldJob=jobService.selectByPrimaryKey(job.getId());
|
||||
BeanUtil.copyNotNullBean(job, oldJob);
|
||||
jobService.updateByPrimaryKey(oldJob);
|
||||
j.setFlag(true);
|
||||
j.setMsg("修改成功");
|
||||
}catch (MyException e){
|
||||
j.setMsg("更新失败");
|
||||
e.printStackTrace();
|
||||
}
|
||||
return j;
|
||||
}
|
||||
|
||||
@Log(desc = "删除任务",type = LOG_TYPE.DEL)
|
||||
@ApiOperation(value = "/del", httpMethod = "POST", notes = "删除任务")
|
||||
@PostMapping(value = "del")
|
||||
@ResponseBody
|
||||
public JsonUtil del(String id){
|
||||
JsonUtil j=new JsonUtil();
|
||||
j.setFlag(false);
|
||||
if (StringUtils.isEmpty(id)) {
|
||||
j.setMsg("获取数据失败");
|
||||
return j;
|
||||
}
|
||||
try{
|
||||
SysJob job=jobService.selectByPrimaryKey(id);
|
||||
boolean flag=jobTask.checkJob(job);
|
||||
if((flag&&!job.getStatus())||!flag&&job.getStatus()){
|
||||
j.setMsg("您任务表状态和web任务状态不一致,无法删除");
|
||||
return j;
|
||||
}
|
||||
if(flag){
|
||||
j.setMsg("该任务处于启动中,无法删除");
|
||||
return j;
|
||||
}
|
||||
jobService.deleteByPrimaryKey(id);
|
||||
j.setFlag(true);
|
||||
j.setMsg("任务删除成功");
|
||||
}catch (MyException e){
|
||||
j.setMsg("任务删除异常");
|
||||
e.printStackTrace();
|
||||
}
|
||||
return j;
|
||||
}
|
||||
|
||||
|
||||
@Log(desc = "启动任务")
|
||||
@PostMapping(value = "startJob")
|
||||
@ResponseBody
|
||||
public JsonUtil startJob(String id){
|
||||
JsonUtil j=new JsonUtil();
|
||||
String msg=null;
|
||||
if(StringUtils.isEmpty(id)){
|
||||
j.setMsg("获取数据失败");
|
||||
j.setFlag(false);
|
||||
return j;
|
||||
}
|
||||
try {
|
||||
SysJob job = jobService.selectByPrimaryKey(id);
|
||||
jobTask.startJob(job);
|
||||
job.setStatus(true);
|
||||
jobService.updateByPrimaryKey(job);
|
||||
msg="启动成功";
|
||||
}catch (MyException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
j.setMsg(msg);
|
||||
return j;
|
||||
}
|
||||
|
||||
@Log(desc = "停止任务")
|
||||
@PostMapping(value = "endJob")
|
||||
@ResponseBody
|
||||
public JsonUtil endJob(String id){
|
||||
JsonUtil j=new JsonUtil();
|
||||
String msg=null;
|
||||
if(StringUtils.isEmpty(id)){
|
||||
j.setMsg("获取数据失败");
|
||||
j.setFlag(false);
|
||||
return j;
|
||||
}
|
||||
try {
|
||||
SysJob job = jobService.selectByPrimaryKey(id);
|
||||
jobTask.remove(job);
|
||||
job.setStatus(false);
|
||||
jobService.updateByPrimaryKey(job);
|
||||
msg="停止成功";
|
||||
}catch (MyException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
j.setMsg(msg);
|
||||
return j;
|
||||
}
|
||||
|
||||
}
|
|
@ -3,6 +3,7 @@ package com.len.controller;
|
|||
import com.len.base.BaseController;
|
||||
import com.len.core.annotation.Log;
|
||||
import com.len.core.annotation.Log.LOG_TYPE;
|
||||
import com.len.core.quartz.JobTask;
|
||||
import com.len.entity.SysRoleUser;
|
||||
import com.len.entity.SysUser;
|
||||
import com.len.exception.MyException;
|
||||
|
@ -19,8 +20,6 @@ import java.util.Date;
|
|||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
|
@ -50,6 +49,10 @@ public class UserController extends BaseController{
|
|||
|
||||
@Autowired
|
||||
RoleUserService roleUserService;
|
||||
|
||||
@Autowired
|
||||
JobTask task;
|
||||
|
||||
@GetMapping(value = "mainTest")
|
||||
public String showTest() {
|
||||
return "system/user/mainTest";
|
||||
|
@ -63,7 +66,6 @@ public class UserController extends BaseController{
|
|||
@GetMapping(value = "showUserList")
|
||||
@ResponseBody
|
||||
public String showUser(Model model, SysUser user, String page, String limit) {
|
||||
// logger.error("show userList");
|
||||
return userService.show(user,Integer.valueOf(page),Integer.valueOf(limit));
|
||||
}
|
||||
|
||||
|
@ -165,7 +167,6 @@ public class UserController extends BaseController{
|
|||
@ResponseBody
|
||||
public String del(String id, boolean flag) {
|
||||
if (StringUtils.isEmpty(id)) {
|
||||
|
||||
return "获取数据失败";
|
||||
}
|
||||
|
||||
|
@ -174,6 +175,12 @@ public class UserController extends BaseController{
|
|||
if("admin".equals(sysUser.getUsername())){
|
||||
return "超管无法删除";
|
||||
}
|
||||
SysRoleUser roleUser=new SysRoleUser();
|
||||
roleUser.setUserId(id);
|
||||
int count=roleUserService.selectCountByCondition(roleUser);
|
||||
if(count>0){
|
||||
return "账户已经绑定角色,无法删除";
|
||||
}
|
||||
if (flag) {
|
||||
//逻辑
|
||||
sysUser.setDelFlag(Byte.parseByte("1"));
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
package com.len.core.BootListener;
|
||||
|
||||
import com.len.core.quartz.JobTask;
|
||||
import com.len.entity.SysJob;
|
||||
import com.len.service.JobService;
|
||||
import com.len.util.SpringUtil;
|
||||
import com.len.service.RoleService;
|
||||
import java.util.List;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/6.
|
||||
* @email 154040976@qq.com
|
||||
*
|
||||
* 启动数据库中已经设定为 启动状态(status:1)的任务 项目启动时init
|
||||
*/
|
||||
@Configuration
|
||||
public class DataSourceJobThread extends Thread {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(DataSourceJobThread.class);
|
||||
@Autowired
|
||||
RoleService roleService;
|
||||
|
||||
@Autowired
|
||||
JobService jobService;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
log.info("---------线程启动---------");
|
||||
JobTask jobTask = SpringUtil.getBean("jobTask");
|
||||
SysJob job = new SysJob();
|
||||
job.setStatus(true);
|
||||
List<SysJob> jobList = jobService.selectListByPage(job);
|
||||
//开启任务
|
||||
jobList.forEach(jobs -> {
|
||||
log.info("---任务["+jobs.getId()+"]系统 init--开始启动---------");
|
||||
jobTask.startJob(jobs);
|
||||
}
|
||||
);
|
||||
if(jobList.size()==0){
|
||||
log.info("---数据库暂无启动的任务---------");
|
||||
}else
|
||||
System.out.println("---任务启动完毕---------");
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package com.len.core.BootListener;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.context.event.ContextRefreshedEvent;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/6.
|
||||
* @email 154040976@qq.com
|
||||
*
|
||||
* 通过监听,开辟线程,执行定时任务 当然 也可以执行其他
|
||||
*/
|
||||
@Component
|
||||
public class MyApplicationListener implements ApplicationListener<ContextRefreshedEvent> {
|
||||
|
||||
Logger logger= LoggerFactory.getLogger(MyApplicationListener.class);
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(ContextRefreshedEvent event) {
|
||||
logger.info("-------------bean初始化完毕-------------");
|
||||
/**
|
||||
* 通过线程开启数据库中已经开启的定时任务 灵感来自spring
|
||||
* spring boot继续执行 mythread开辟线程,延迟后执行
|
||||
*/
|
||||
DataSourceJobThread myThread= (DataSourceJobThread) event.getApplicationContext().getBean(
|
||||
"dataSourceJobThread");
|
||||
myThread.start();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package com.len.core.BootListener;
|
||||
|
||||
import javax.servlet.ServletContextEvent;
|
||||
import javax.servlet.ServletContextListener;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/6.
|
||||
* @email 154040976@qq.com
|
||||
*/
|
||||
@Component
|
||||
public class MyServletContextListener implements ServletContextListener {
|
||||
|
||||
@Override
|
||||
public void contextInitialized(ServletContextEvent sce) {
|
||||
System.out.println("-------contextInitialized-----------");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void contextDestroyed(ServletContextEvent sce) {
|
||||
System.out.println("------------contextDestroyed-------------");
|
||||
}
|
||||
}
|
|
@ -78,8 +78,8 @@ public class LogAspect {
|
|||
*/
|
||||
@AfterThrowing(value="pointcut()",throwing="e")
|
||||
public void afterException(JoinPoint joinPoint,Exception e){
|
||||
System.out.print(e.getMessage());
|
||||
addLog(joinPoint,getDesc(joinPoint)+e.getMessage());
|
||||
System.out.print("-----------afterException:"+e.getMessage());
|
||||
// addLog(joinPoint,getDesc(joinPoint)+e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
package com.len.core.quartz.CustomQuartz;
|
||||
|
||||
import com.len.util.SpringUtil;
|
||||
import com.len.entity.SysUser;
|
||||
import com.len.service.SysUserService;
|
||||
import com.len.service.impl.SysUserServiceImpl;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/7.
|
||||
* @email 154040976@qq.com
|
||||
*
|
||||
* 定时
|
||||
*/
|
||||
public class JobDemo1 implements Job{
|
||||
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext context) throws JobExecutionException {
|
||||
System.out.println("JobDemo1:启动任务=======================");
|
||||
run();
|
||||
System.out.println("JobDemo1:下次执行时间====="+
|
||||
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
|
||||
.format(context.getNextFireTime())+"==============");
|
||||
}
|
||||
|
||||
public void run(){
|
||||
ApplicationContext applicationContext=SpringUtil.getApplicationContext();
|
||||
SysUserService sys=SpringUtil.getBean(SysUserServiceImpl.class);
|
||||
List<SysUser> userList=sys.selectListByPage(new SysUser());
|
||||
System.out.println(userList.get(0).getUsername());;
|
||||
System.out.println("JobDemo1:执行完毕=======================");
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package com.len.core.quartz.CustomQuartz;
|
||||
|
||||
import com.len.entity.SysUser;
|
||||
import com.len.service.SysUserService;
|
||||
import com.len.service.impl.SysUserServiceImpl;
|
||||
import com.len.util.SpringUtil;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/7.
|
||||
* @email 154040976@qq.com
|
||||
*
|
||||
* 定时测试类
|
||||
*/
|
||||
public class JobDemo2 implements Job{
|
||||
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext context) throws JobExecutionException {
|
||||
System.out.println("JobDemo2:启动任务=======================");
|
||||
run();
|
||||
System.out.println("JobDemo2:下次执行时间====="+
|
||||
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
|
||||
.format(context.getNextFireTime())+"==============");
|
||||
}
|
||||
|
||||
public void run(){
|
||||
ApplicationContext applicationContext=SpringUtil.getApplicationContext();
|
||||
SysUserService sys=SpringUtil.getBean(SysUserServiceImpl.class);
|
||||
List<SysUser> userList=sys.selectListByPage(new SysUser());
|
||||
System.out.println(userList.get(0).getUsername());;
|
||||
System.out.println("JobDemo2:执行完毕=======================");
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package com.len.core.quartz.CustomQuartz;
|
||||
|
||||
import com.len.entity.SysUser;
|
||||
import com.len.service.SysUserService;
|
||||
import com.len.service.impl.SysUserServiceImpl;
|
||||
import com.len.util.SpringUtil;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/7.
|
||||
* @email 154040976@qq.com
|
||||
*
|
||||
* 定时测试类
|
||||
*/
|
||||
public class JobDemo3 implements Job{
|
||||
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext context) throws JobExecutionException {
|
||||
System.out.println("JobDemo3:启动任务=======================");
|
||||
run();
|
||||
System.out.println("JobDemo3:下次执行时间====="+
|
||||
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
|
||||
.format(context.getNextFireTime())+"==============");
|
||||
}
|
||||
|
||||
public void run(){
|
||||
ApplicationContext applicationContext=SpringUtil.getApplicationContext();
|
||||
SysUserService sys=SpringUtil.getBean(SysUserServiceImpl.class);
|
||||
List<SysUser> userList=sys.selectListByPage(new SysUser());
|
||||
System.out.println(userList.get(0).getUsername());;
|
||||
System.out.println("JobDemo3:执行完毕=======================");
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package com.len.core.quartz.CustomQuartz;
|
||||
|
||||
import com.len.entity.SysUser;
|
||||
import com.len.service.SysUserService;
|
||||
import com.len.service.impl.SysUserServiceImpl;
|
||||
import com.len.util.SpringUtil;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/7.
|
||||
* @email 154040976@qq.com
|
||||
*
|
||||
* 定时测试类
|
||||
*/
|
||||
public class JobDemo4 implements Job{
|
||||
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext context) throws JobExecutionException {
|
||||
System.out.println("JobDemo4:启动任务=======================");
|
||||
run();
|
||||
System.out.println("JobDemo4:下次执行时间====="+
|
||||
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
|
||||
.format(context.getNextFireTime())+"==============");
|
||||
}
|
||||
|
||||
public void run(){
|
||||
ApplicationContext applicationContext=SpringUtil.getApplicationContext();
|
||||
SysUserService sys=SpringUtil.getBean(SysUserServiceImpl.class);
|
||||
List<SysUser> userList=sys.selectListByPage(new SysUser());
|
||||
System.out.println(userList.get(0).getUsername());;
|
||||
System.out.println("JobDemo4:执行完毕=======================");
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package com.len.core.quartz.CustomQuartz;
|
||||
|
||||
import com.len.entity.SysUser;
|
||||
import com.len.service.SysUserService;
|
||||
import com.len.service.impl.SysUserServiceImpl;
|
||||
import com.len.util.SpringUtil;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/7.
|
||||
* @email 154040976@qq.com
|
||||
*
|
||||
* 定时测试类
|
||||
*/
|
||||
public class JobDemo5 implements Job{
|
||||
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext context) throws JobExecutionException {
|
||||
System.out.println("JobDemo5:启动任务=======================");
|
||||
run();
|
||||
System.out.println("JobDemo5:下次执行时间====="+
|
||||
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
|
||||
.format(context.getNextFireTime())+"==============");
|
||||
}
|
||||
|
||||
public void run(){
|
||||
ApplicationContext applicationContext=SpringUtil.getApplicationContext();
|
||||
SysUserService sys=SpringUtil.getBean(SysUserServiceImpl.class);
|
||||
List<SysUser> userList=sys.selectListByPage(new SysUser());
|
||||
System.out.println(userList.get(0).getUsername());;
|
||||
System.out.println("JobDemo5:执行完毕=======================");
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,149 @@
|
|||
package com.len.core.quartz;
|
||||
|
||||
import com.len.core.annotation.Log;
|
||||
import com.len.core.annotation.Log.LOG_TYPE;
|
||||
import com.len.entity.SysJob;
|
||||
import java.text.ParseException;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import javax.annotation.PostConstruct;
|
||||
import org.apache.commons.lang3.time.DateFormatUtils;
|
||||
import org.quartz.CronScheduleBuilder;
|
||||
import org.quartz.CronTrigger;
|
||||
import org.quartz.JobBuilder;
|
||||
import org.quartz.JobDetail;
|
||||
import org.quartz.JobKey;
|
||||
import org.quartz.Scheduler;
|
||||
import org.quartz.SchedulerException;
|
||||
import org.quartz.Trigger;
|
||||
import org.quartz.TriggerBuilder;
|
||||
import org.quartz.TriggerKey;
|
||||
import org.quartz.impl.StdSchedulerFactory;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/5.
|
||||
* @email 154040976@qq.com
|
||||
*
|
||||
* 定时任务类 增删改 可参考api:http://www.quartz-scheduler.org/api/2.2.1/
|
||||
*
|
||||
* 任务名称 默认为 SysJob 类 id
|
||||
*/
|
||||
@Service
|
||||
public class JobTask {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(JobTask.class);
|
||||
|
||||
@Autowired
|
||||
SchedulerFactoryBean schedulerFactoryBean;
|
||||
|
||||
/**
|
||||
* true 存在 false 不存在
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
public boolean checkJob(SysJob job){
|
||||
Scheduler scheduler = schedulerFactoryBean.getScheduler();
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(job.getId(), Scheduler.DEFAULT_GROUP);
|
||||
try {
|
||||
if(scheduler.checkExists(triggerKey)){
|
||||
return true;
|
||||
}
|
||||
} catch (SchedulerException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启
|
||||
*/
|
||||
//@Log(desc = "开启定时任务")
|
||||
public boolean startJob(SysJob job) {
|
||||
Scheduler scheduler = schedulerFactoryBean.getScheduler();
|
||||
try {
|
||||
Class clazz = Class.forName(job.getClazzPath());
|
||||
JobDetail jobDetail = JobBuilder.newJob(clazz).build();
|
||||
// 触发器
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(job.getId(), Scheduler.DEFAULT_GROUP);
|
||||
CronTrigger trigger = TriggerBuilder.newTrigger()
|
||||
.withIdentity(triggerKey)
|
||||
.withSchedule(CronScheduleBuilder.cronSchedule(job.getCron())).build();
|
||||
scheduler.scheduleJob(jobDetail, trigger);
|
||||
// 启动
|
||||
if (!scheduler.isShutdown()) {
|
||||
scheduler.start();
|
||||
log.info("---任务[" + triggerKey.getName() + "]启动成功-------");
|
||||
return true;
|
||||
}else{
|
||||
log.info("---任务[" + triggerKey.getName() + "]已经运行,请勿再次启动-------");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*/
|
||||
@Log(desc = "更新定时任务", type = LOG_TYPE.UPDATE)
|
||||
public boolean updateJob(SysJob job) {
|
||||
Scheduler scheduler = schedulerFactoryBean.getScheduler();
|
||||
String createTime = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(job.getId(), Scheduler.DEFAULT_GROUP);
|
||||
try {
|
||||
if (scheduler.checkExists(triggerKey)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
JobKey jobKey = JobKey.jobKey(job.getId(), Scheduler.DEFAULT_GROUP);
|
||||
|
||||
CronScheduleBuilder schedBuilder = CronScheduleBuilder.cronSchedule(job.getCron())
|
||||
.withMisfireHandlingInstructionDoNothing();
|
||||
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(triggerKey)
|
||||
.withDescription(createTime).withSchedule(schedBuilder).build();
|
||||
Class clazz = null;
|
||||
JobDetail jobDetail = scheduler.getJobDetail(jobKey);
|
||||
HashSet<Trigger> triggerSet = new HashSet<>();
|
||||
triggerSet.add(trigger);
|
||||
scheduler.scheduleJob(jobDetail, triggerSet, true);
|
||||
log.info("---任务["+triggerKey.getName()+"]更新成功-------");
|
||||
return true;
|
||||
} catch (SchedulerException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
@Log(desc = "删除定时任务", type = LOG_TYPE.DEL)
|
||||
public boolean remove(SysJob job) {
|
||||
Scheduler scheduler = schedulerFactoryBean.getScheduler();
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(job.getId(), Scheduler.DEFAULT_GROUP);
|
||||
try {
|
||||
if (checkJob(job)) {
|
||||
scheduler.pauseTrigger(triggerKey);
|
||||
scheduler.unscheduleJob(triggerKey);
|
||||
scheduler.deleteJob(JobKey.jobKey(job.getId(), Scheduler.DEFAULT_GROUP));
|
||||
log.info("---任务[" + triggerKey.getName() + "]删除成功-------");
|
||||
return true;
|
||||
}
|
||||
} catch (SchedulerException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package com.len.core.quartz;
|
||||
|
||||
import org.quartz.spi.TriggerFiredBundle;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
|
||||
import org.springframework.scheduling.quartz.AdaptableJobFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class MyJobFactory extends AdaptableJobFactory {
|
||||
|
||||
@Autowired
|
||||
private AutowireCapableBeanFactory capableBeanFactory;
|
||||
|
||||
@Override
|
||||
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
|
||||
// 调用父类的方法
|
||||
Object jobInstance = super.createJobInstance(bundle);
|
||||
// 进行注入
|
||||
capableBeanFactory.autowireBean(jobInstance);
|
||||
return jobInstance;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package com.len.core.quartz;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
|
||||
|
||||
@Configuration
|
||||
public class MySchedulerListener {
|
||||
|
||||
@Autowired
|
||||
MyJobFactory myJobFactory;
|
||||
|
||||
|
||||
@Bean(name ="mySchedulerFactoryBean")
|
||||
public SchedulerFactoryBean mySchedulerFactory() {
|
||||
SchedulerFactoryBean bean = new SchedulerFactoryBean();
|
||||
bean.setOverwriteExistingJobs(true);
|
||||
bean.setStartupDelay(1);
|
||||
bean.setJobFactory(myJobFactory);
|
||||
return bean;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package com.len.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
public class SysJob implements Serializable {
|
||||
private String id;
|
||||
|
||||
private String jobName;
|
||||
|
||||
private String cron;
|
||||
|
||||
private Boolean status;
|
||||
|
||||
private String clazzPath;
|
||||
|
||||
private String jobDesc;
|
||||
|
||||
private String createBy;
|
||||
|
||||
private Date createDate;
|
||||
|
||||
private String updateBy;
|
||||
|
||||
private Date updateDate;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package com.len.mapper;
|
||||
|
||||
import com.len.base.BaseMapper;
|
||||
import com.len.entity.SysJob;
|
||||
|
||||
public interface SysJobMapper extends BaseMapper<SysJob,String> {
|
||||
int deleteByPrimaryKey(String id);
|
||||
|
||||
int insert(SysJob record);
|
||||
|
||||
int insertSelective(SysJob record);
|
||||
|
||||
SysJob selectByPrimaryKey(String id);
|
||||
|
||||
int updateByPrimaryKeySelective(SysJob record);
|
||||
|
||||
int updateByPrimaryKey(SysJob record);
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package com.len.service;
|
||||
|
||||
import com.len.base.BaseService;
|
||||
import com.len.entity.SysJob;
|
||||
import com.len.entity.SysMenu;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/6.
|
||||
* @email 154040976@qq.com
|
||||
*/
|
||||
public interface JobService extends BaseService<SysJob,String> {
|
||||
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package com.len.service.impl;
|
||||
|
||||
import com.len.base.BaseMapper;
|
||||
import com.len.base.impl.BaseServiceImpl;
|
||||
import com.len.entity.SysJob;
|
||||
import com.len.mapper.SysJobMapper;
|
||||
import com.len.service.JobService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/6.
|
||||
* @email 154040976@qq.com
|
||||
*/
|
||||
@Service
|
||||
public class JobServiceImpl extends BaseServiceImpl<SysJob,String> implements JobService {
|
||||
|
||||
@Autowired
|
||||
SysJobMapper jobMapper;
|
||||
@Override
|
||||
public BaseMapper<SysJob, String> getMappser() {
|
||||
return jobMapper;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,155 @@
|
|||
<#--Created by IntelliJ IDEA.
|
||||
User: zxm
|
||||
Date: 2017/12/20
|
||||
Time: 10:00
|
||||
To change this template use File | Settings | File Templates.-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>添加任务</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" href="${re.contextPath}/plugin/layui/css/layui.css">
|
||||
<link rel="stylesheet" href="${re.contextPath}/plugin/ztree/css/metroStyle/metroStyle.css">
|
||||
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="${re.contextPath}/plugin/layui/layui.all.js" charset="utf-8"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="x-body">
|
||||
<form class="layui-form layui-form-pane" style="margin-left: 20px;">
|
||||
<div style="width:100%;height:400px;overflow: auto;">
|
||||
<div class="layui-form-item">
|
||||
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 10px;">
|
||||
<legend style="font-size:16px;">任务信息</legend>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="jobName" class="layui-form-label">
|
||||
<span class="x-red">*</span>任务名称
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="jobName" name="jobName" lay-verify="jobName"
|
||||
autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<div id="ms" class="layui-form-mid layui-word-aux">
|
||||
<span class="x-red">*</span><span id="ums">名称必填</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label for="cron" class="layui-form-label">
|
||||
<span class="x-red">*</span>表达式
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="cron" name="cron" lay-verify="cron" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<div id="ms" class="layui-form-mid layui-word-aux">
|
||||
<span class="x-red">*</span><a href="http://cron.qqe2.com/" target="_blank">获取表达式</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 10px;">
|
||||
<legend style="font-size:16px;">执行类要实现Job</legend>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label for="clazzPath" class="layui-form-label">
|
||||
<span class="x-red">*</span>任务执行类
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="clazzPath" style="width: 300px;" name="clazzPath" lay-verify="clazzPath" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label for="jobDesc" class="layui-form-label">
|
||||
<span class="x-red">*</span>任务描述
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="jobDesc" name="jobDesc" lay-verify="jobDesc" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="height: 60px"></div>
|
||||
</div>
|
||||
<div style="width: 100%;height: 55px;background-color: white;border-top:1px solid #e6e6e6;
|
||||
position: fixed;bottom: 1px;margin-left:-20px;">
|
||||
<div class="layui-form-item" style=" float: right;margin-right: 30px;margin-top: 8px">
|
||||
|
||||
<button class="layui-btn layui-btn-normal" lay-filter="add" lay-submit>
|
||||
增加
|
||||
</button>
|
||||
<button class="layui-btn layui-btn-primary" id="close">
|
||||
取消
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
layui.use(['form','layer'], function(){
|
||||
$ = layui.jquery;
|
||||
var form = layui.form
|
||||
,layer = layui.layer;
|
||||
|
||||
//自定义验证规则
|
||||
form.verify({
|
||||
jobName: function(value){
|
||||
if(value.trim()==""){
|
||||
return "任务名称不能为空";
|
||||
}
|
||||
},
|
||||
cron:function(value) {
|
||||
if (value.trim() == "") {
|
||||
return "表达式不能为空";
|
||||
}
|
||||
},
|
||||
clazzPath:function(value){
|
||||
if(value.trim()==""){
|
||||
return "执行类不能为空";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('#close').click(function(){
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(index);
|
||||
});
|
||||
//监听提交
|
||||
form.on('submit(add)', function(data){
|
||||
$.ajax({
|
||||
url:'addJob',
|
||||
type:'post',
|
||||
data:data.field,
|
||||
async:false, traditional: true,
|
||||
success:function(d){
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
if(d.flag){
|
||||
parent.layer.close(index);
|
||||
window.parent.layui.table.reload('jobList');
|
||||
window.top.layer.msg(d.msg,{icon:6,offset: 'rb',area:['120px','80px'],anim:2});
|
||||
}else{
|
||||
layer.msg(d.msg,{icon:5});
|
||||
}
|
||||
},error:function(){
|
||||
layer.alert("请求失败", {icon: 6},function () {
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,387 @@
|
|||
<#-- Created by IntelliJ IDEA.
|
||||
User: zxm
|
||||
Date: 2017/1/7
|
||||
Time: 11:06
|
||||
To change this template use File | Settings | File Templates.-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>任务管理</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport"
|
||||
content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/>
|
||||
<link rel="stylesheet" href="${re.contextPath}/plugin/layui/css/layui.css">
|
||||
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="${re.contextPath}/plugin/layui/layui.all.js"
|
||||
charset="utf-8"></script>
|
||||
<style>
|
||||
.layui-input {
|
||||
height: 30px;
|
||||
width: 120px;
|
||||
}
|
||||
|
||||
.x-nav {
|
||||
padding: 0 20px;
|
||||
position: relative;
|
||||
z-index: 99;
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
height: 32px;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<br/>
|
||||
<div class="x-nav">
|
||||
<div class="select">
|
||||
任务名称:
|
||||
<div class="layui-inline">
|
||||
<input class="layui-input" height="20px" id="rolename" autocomplete="off">
|
||||
</div>
|
||||
描述:
|
||||
<div class="layui-inline">
|
||||
<input class="layui-input" height="20px" id="remark" autocomplete="off">
|
||||
</div>
|
||||
<button class="select-on layui-btn layui-btn-sm" data-type="select"><i class="layui-icon"></i>
|
||||
</button>
|
||||
<button class="layui-btn layui-btn-sm" id="refresh" style="float: right;"
|
||||
data-type="reload">
|
||||
<i class="layui-icon">ဂ</i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="layui-col-md12" style="height:40px;margin-top:3px;">
|
||||
<div class="layui-btn-group">
|
||||
<@shiro.hasPermission name="job:add">
|
||||
<button class="layui-btn layui-btn-normal" data-type="add">
|
||||
<i class="layui-icon"></i>新增
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="job:update">
|
||||
<button class="layui-btn layui-btn-normal" data-type="update">
|
||||
<i class="layui-icon"></i>编辑
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="job:select">
|
||||
<button class="layui-btn layui-btn-normal" data-type="detail">
|
||||
<i class="layui-icon"></i>查看
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
</div>
|
||||
<table id="jobList" class="layui-hide" lay-filter="job"></table>
|
||||
<script type="text/html" id="toolBar">
|
||||
<@shiro.hasPermission name="job:add">
|
||||
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
|
||||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="job:update">
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="edit">编辑</a>
|
||||
</@shiro.hasPermission>
|
||||
{{# if(!d.status){ }}
|
||||
<@shiro.hasPermission name="job:start">
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="start">启动</a>
|
||||
</@shiro.hasPermission>
|
||||
{{# } }}
|
||||
{{# if(d.status){ }}
|
||||
<@shiro.hasPermission name="job:end">
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="end">停止</a>
|
||||
</@shiro.hasPermission>
|
||||
{{# } }}
|
||||
<@shiro.hasPermission name="role:del">
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
|
||||
</@shiro.hasPermission>
|
||||
</script>
|
||||
<script>
|
||||
/**前端后期完美后 会进行封装 目前先不处理 精力在后端。。。*/
|
||||
layui.laytpl.toDateString = function(d, format){
|
||||
var date = new Date(d || new Date())
|
||||
,ymd = [
|
||||
this.digit(date.getFullYear(), 4)
|
||||
,this.digit(date.getMonth() + 1)
|
||||
,this.digit(date.getDate())
|
||||
]
|
||||
,hms = [
|
||||
this.digit(date.getHours())
|
||||
,this.digit(date.getMinutes())
|
||||
,this.digit(date.getSeconds())
|
||||
];
|
||||
|
||||
format = format || 'yyyy-MM-dd HH:mm:ss';
|
||||
|
||||
return format.replace(/yyyy/g, ymd[0])
|
||||
.replace(/MM/g, ymd[1])
|
||||
.replace(/dd/g, ymd[2])
|
||||
.replace(/HH/g, hms[0])
|
||||
.replace(/mm/g, hms[1])
|
||||
.replace(/ss/g, hms[2]);
|
||||
};
|
||||
|
||||
//数字前置补零
|
||||
layui.laytpl.digit = function(num, length, end){
|
||||
var str = '';
|
||||
num = String(num);
|
||||
length = length || 2;
|
||||
for(var i = num.length; i < length; i++){
|
||||
str += '0';
|
||||
}
|
||||
return num < Math.pow(10, length) ? str + (num|0) : num;
|
||||
};
|
||||
|
||||
document.onkeydown = function (e) { // 回车提交表单
|
||||
var theEvent = window.event || e;
|
||||
var code = theEvent.keyCode || theEvent.which;
|
||||
if (code == 13) {
|
||||
$(".select .select-on").click();
|
||||
}
|
||||
}
|
||||
layui.use('table', function () {
|
||||
var table = layui.table;
|
||||
//方法级渲染
|
||||
table.render({
|
||||
id: 'jobList',
|
||||
elem: '#jobList'
|
||||
, url: 'showJobList'
|
||||
, cols: [[
|
||||
{checkbox: true, fixed: true, width: '5%'}
|
||||
, {field: 'jobName', title: '任务名称', width: '10%', sort: true}
|
||||
, {field: 'cron', title: '表达式', width: '10%'}
|
||||
, {field: 'clazzPath', title: '任务类', width: '20%', sort: true}
|
||||
, {field: 'status', title: '状态', width: '10%', sort: true}
|
||||
, {field: 'jobDesc', title: '任务描述', width: '10%'}
|
||||
, {field: 'createDate', title: '创建时间', width: '10%',templet: '<div>{{ layui.laytpl.toDateString(d.createDate,"yyyy-MM-dd hh:mm:ss") }}</div>'}
|
||||
, {field: 'remark', title: '操作', width: '20%', toolbar: "#toolBar"}
|
||||
]]
|
||||
, page: true
|
||||
, height: 'full-105'
|
||||
});
|
||||
|
||||
var $ = layui.$, active = {
|
||||
select: function () {
|
||||
var rolename = $('#rolename').val();
|
||||
var remark = $('#remark').val();
|
||||
table.reload('jobList', {
|
||||
where: {
|
||||
roleName: rolename,
|
||||
remark: remark
|
||||
}
|
||||
});
|
||||
},
|
||||
reload:function(){
|
||||
$('#rolename').val('');
|
||||
$('#remark').val('');
|
||||
table.reload('jobList', {
|
||||
where: {
|
||||
roleName: null,
|
||||
remark: null
|
||||
}
|
||||
});
|
||||
},
|
||||
add: function () {
|
||||
add('添加任务', 'showAddJob', 700, 450);
|
||||
},
|
||||
update: function () {
|
||||
var checkStatus = table.checkStatus('jobList')
|
||||
, data = checkStatus.data;
|
||||
if (data.length != 1) {
|
||||
layer.msg('请选择一行编辑', {icon: 5});
|
||||
return false;
|
||||
}
|
||||
if(data[0].status){
|
||||
layer.msg('已经启动任务无法更新,请停止后更新',{icon:5,offset: 'rb',area:['200px','100px'],anim:2});
|
||||
return false;
|
||||
}
|
||||
update('编辑任务', 'updateJob?id=' + data[0].id, 700, 450);
|
||||
},
|
||||
detail: function () {
|
||||
var checkStatus = table.checkStatus('jobList')
|
||||
, data = checkStatus.data;
|
||||
if (data.length != 1) {
|
||||
layer.msg('请选择一行查看', {icon: 5});
|
||||
return false;
|
||||
}
|
||||
detail('查看任务信息', 'updateJob?id=' + data[0].id, 700, 450);
|
||||
}
|
||||
};
|
||||
|
||||
//监听表格复选框选择
|
||||
table.on('checkbox(job)', function (obj) {
|
||||
console.log(obj)
|
||||
});
|
||||
//监听工具条
|
||||
table.on('tool(job)', function (obj) {
|
||||
var data = obj.data;
|
||||
if (obj.event === 'detail') {
|
||||
detail('编辑角色', 'updateRole?id=' + data.id, 700, 450);
|
||||
} else if (obj.event === 'del') {
|
||||
if(!data.status) {
|
||||
layer.confirm('确定删除任务[<label style="color: #00AA91;">' + data.jobName + '</label>]?',
|
||||
function () {
|
||||
del(data.id);
|
||||
});
|
||||
}else{
|
||||
layer.msg('已经启动任务无法更新,请停止后删除',{icon:5,offset: 'rb',area:['200px','100px'],anim:2});
|
||||
}
|
||||
} else if (obj.event === 'edit') {
|
||||
if(!data.status){
|
||||
update('编辑任务', 'updateJob?id=' + data.id, 700, 450);
|
||||
}else{
|
||||
layer.msg('已经启动任务无法更新,请停止后更新',{icon:5,offset: 'rb',area:['200px','100px'],anim:2});
|
||||
}
|
||||
} else if(obj.event === 'start'){
|
||||
layer.confirm('确定开启任务[<label style="color: #00AA91;">' + data.jobName + '</label>]?', function(){
|
||||
reqByAjax(data.id,'startJob','jobList');
|
||||
});
|
||||
} else if(obj.event === 'end'){
|
||||
layer.confirm('确定停止任务[<label style="color: #00AA91;">' + data.jobName + '</label>]?', function(){
|
||||
reqByAjax(data.id,'endJob','jobList');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('.layui-col-md12 .layui-btn').on('click', function () {
|
||||
var type = $(this).data('type');
|
||||
active[type] ? active[type].call(this) : '';
|
||||
});
|
||||
$('.select .layui-btn').on('click', function () {
|
||||
var type = $(this).data('type');
|
||||
active[type] ? active[type].call(this) : '';
|
||||
});
|
||||
|
||||
});
|
||||
function reqByAjax(id,url,tableId){
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: "post",
|
||||
data: {id: id},
|
||||
success: function (d) {
|
||||
if(d.flag){
|
||||
layer.msg(d.msg,{icon:6,offset: 'rb',area:['120px','80px'],anim:2});
|
||||
layui.table.reload(tableId);
|
||||
}else{
|
||||
layer.msg(d.msg,{icon:5,offset: 'rb',area:['120px','80px'],anim:2});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function del(id) {
|
||||
$.ajax({
|
||||
url: "del",
|
||||
type: "post",
|
||||
data: {id: id},
|
||||
success: function (d) {
|
||||
if(d.flag){
|
||||
layer.msg(d.msg,{icon:6,offset: 'rb',area:['120px','80px'],anim:2});
|
||||
layui.table.reload('jobList');
|
||||
}else{
|
||||
layer.msg(d.msg,{icon:5,offset: 'rb',area:['120px','80px'],anim:2});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
function detail(title, url, w, h) {
|
||||
var number = 1;
|
||||
if (title == null || title == '') {
|
||||
title = false;
|
||||
}
|
||||
;
|
||||
if (url == null || url == '') {
|
||||
url = "404.html";
|
||||
}
|
||||
;
|
||||
if (w == null || w == '') {
|
||||
w = ($(window).width() * 0.9);
|
||||
}
|
||||
;
|
||||
if (h == null || h == '') {
|
||||
h = ($(window).height() - 50);
|
||||
}
|
||||
;
|
||||
layer.open({
|
||||
id: 'user-detail',
|
||||
type: 2,
|
||||
area: [w + 'px', h + 'px'],
|
||||
fix: false,
|
||||
maxmin: true,
|
||||
shadeClose: true,
|
||||
shade: 0.4,
|
||||
title: title,
|
||||
content: url + '&detail=true',
|
||||
// btn:['关闭']
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 更新用户
|
||||
*/
|
||||
function update(title, url, w, h) {
|
||||
if (title == null || title == '') {
|
||||
title = false;
|
||||
}
|
||||
if (url == null || url == '') {
|
||||
url = "404.html";
|
||||
}
|
||||
if (w == null || w == '') {
|
||||
w = ($(window).width() * 0.9);
|
||||
}
|
||||
if (h == null || h == '') {
|
||||
h = ($(window).height() - 50);
|
||||
}
|
||||
layer.open({
|
||||
id: 'user-update',
|
||||
type: 2,
|
||||
area: [w + 'px', h + 'px'],
|
||||
fix: false,
|
||||
maxmin: true,
|
||||
shadeClose: false,
|
||||
shade: 0.4,
|
||||
title: title,
|
||||
content: url + '&detail=false'
|
||||
});
|
||||
}
|
||||
|
||||
/*弹出层*/
|
||||
/*
|
||||
参数解释:
|
||||
title 标题
|
||||
url 请求的url
|
||||
id 需要操作的数据id
|
||||
w 弹出层宽度(缺省调默认值)
|
||||
h 弹出层高度(缺省调默认值)
|
||||
*/
|
||||
function add(title, url, w, h) {
|
||||
if (title == null || title == '') {
|
||||
title = false;
|
||||
}
|
||||
;
|
||||
if (url == null || url == '') {
|
||||
url = "404.html";
|
||||
}
|
||||
;
|
||||
if (w == null || w == '') {
|
||||
w = ($(window).width() * 0.9);
|
||||
}
|
||||
;
|
||||
if (h == null || h == '') {
|
||||
h = ($(window).height() - 50);
|
||||
}
|
||||
;
|
||||
layer.open({
|
||||
id: 'job-add',
|
||||
type: 2,
|
||||
area: [w + 'px', h + 'px'],
|
||||
fix: false,
|
||||
maxmin: true,
|
||||
shadeClose: false,
|
||||
shade: 0.4,
|
||||
title: title,
|
||||
content: url
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,173 @@
|
|||
<#--Created by IntelliJ IDEA.
|
||||
User: zxm
|
||||
Date: 2017/12/20
|
||||
Time: 10:00
|
||||
To change this template use File | Settings | File Templates.-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>更新任务</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" href="${re.contextPath}/plugin/layui/css/layui.css">
|
||||
<link rel="stylesheet" href="${re.contextPath}/plugin/ztree/css/metroStyle/metroStyle.css">
|
||||
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="${re.contextPath}/plugin/layui/layui.all.js" charset="utf-8"></script>
|
||||
</head>
|
||||
<script type="text/javascript">
|
||||
(function($) {
|
||||
$.fn.disable = function () {
|
||||
return $(this).find("*").each(function () {
|
||||
$(this).attr("disabled", "disabled");
|
||||
});
|
||||
}
|
||||
})(jQuery);
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
var flag='${detail}';
|
||||
if(flag){
|
||||
$("form").disable();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<body>
|
||||
<div class="x-body">
|
||||
<form class="layui-form layui-form-pane" style="margin-left: 20px;">
|
||||
<div style="width:100%;height:400px;overflow: auto;">
|
||||
<div class="layui-form-item">
|
||||
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 10px;">
|
||||
<legend style="font-size:16px;">任务信息</legend>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="jobName" class="layui-form-label">
|
||||
<span class="x-red">*</span>任务名称
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="hidden" value="${job.id}" name="id">
|
||||
<input type="text" value="${job.jobName}" id="jobName" name="jobName" lay-verify="jobName"
|
||||
autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<div id="ms" class="layui-form-mid layui-word-aux">
|
||||
<span class="x-red">*</span><span id="ums">名称必填</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label for="cron" class="layui-form-label">
|
||||
<span class="x-red">*</span>表达式
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="cron" name="cron" lay-verify="cron" value="${job.cron}" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<div id="ms" class="layui-form-mid layui-word-aux">
|
||||
<span class="x-red">*</span><a href="http://cron.qqe2.com/" target="_blank">获取表达式</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 10px;">
|
||||
<legend style="font-size:16px;">执行类要实现Job</legend>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label for="clazzPath" class="layui-form-label">
|
||||
<span class="x-red">*</span>任务执行类
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="clazzPath" style="width: 300px;" value="${job.clazzPath}" name="clazzPath" lay-verify="clazzPath" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label for="jobDesc" class="layui-form-label">
|
||||
<span class="x-red">*</span>任务描述
|
||||
</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="jobDesc" name="jobDesc" value="${job.jobDesc}" lay-verify="jobDesc" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="height: 60px"></div>
|
||||
</div>
|
||||
<#if !detail>
|
||||
<div style="width: 100%;height: 55px;background-color: white;border-top:1px solid #e6e6e6;
|
||||
position: fixed;bottom: 1px;margin-left:-20px;">
|
||||
<div class="layui-form-item" style=" float: right;margin-right: 30px;margin-top: 8px">
|
||||
<button class="layui-btn layui-btn-normal" lay-filter="add" lay-submit>
|
||||
确认
|
||||
</button>
|
||||
<button class="layui-btn layui-btn-primary" id="close">
|
||||
取消
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</#if>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
layui.use(['form','layer'], function(){
|
||||
$ = layui.jquery;
|
||||
var form = layui.form
|
||||
,layer = layui.layer;
|
||||
|
||||
//自定义验证规则
|
||||
form.verify({
|
||||
jobName: function(value){
|
||||
if(value.trim()==""){
|
||||
return "任务名称不能为空";
|
||||
}
|
||||
},
|
||||
cron:function(value) {
|
||||
if (value.trim() == "") {
|
||||
return "表达式不能为空";
|
||||
}
|
||||
},
|
||||
clazzPath:function(value){
|
||||
if(value.trim()==""){
|
||||
return "执行类不能为空";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('#close').click(function(){
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(index);
|
||||
});
|
||||
//监听提交
|
||||
form.on('submit(add)', function(data){
|
||||
$.ajax({
|
||||
url:'updateJob',
|
||||
type:'post',
|
||||
data:data.field,
|
||||
async:false, traditional: true,
|
||||
success:function(d){
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
if(d.flag){
|
||||
parent.layer.close(index);
|
||||
window.parent.layui.table.reload('jobList');
|
||||
window.top.layer.msg(d.msg,{icon:6,offset: 'rb',area:['120px','80px'],anim:2});
|
||||
}else{
|
||||
layer.msg(d.msg,{icon:5});
|
||||
}
|
||||
},error:function(){
|
||||
layer.alert("请求失败", {icon: 6},function () {
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -123,15 +123,15 @@
|
|||
, cols: [[
|
||||
{checkbox: true, fixed: true, width: '5%'}
|
||||
, {field: 'userName', title: '操作人', width: '10%', sort: true}
|
||||
, {field: 'type', title: '操作类型', width: '5%', sort: true}
|
||||
, {field: 'type', title: '操作类型', width: '10%', sort: true}
|
||||
, {field: 'text', title: '描述内容', width: '10%', sort: true}
|
||||
, {field: 'param', title: '参数', width: '45%', sort: true}
|
||||
, {field: 'createTime', title: '操作时间', width: '10%',templet: '<div>{{ layui.laytpl.toDateString(d.createTime,"yyyy-MM-dd HH:mm:ss") }}</div>'}
|
||||
, {field: 'text', title: '操作', width: '20%', toolbar:'#toolBar'}
|
||||
, {field: 'text', title: '操作', width: '10%', toolbar:'#toolBar'}
|
||||
|
||||
]]
|
||||
, page: true
|
||||
, height: 400
|
||||
, height: 'full-105'
|
||||
});
|
||||
|
||||
var $ = layui.$, active = {
|
||||
|
|
|
@ -143,7 +143,7 @@
|
|||
, {field: 'remark', title: '操作', width: '20%', toolbar: "#toolBar"}
|
||||
]]
|
||||
, page: true
|
||||
, height: 400
|
||||
, height: 'full-105'
|
||||
});
|
||||
|
||||
var $ = layui.$, active = {
|
||||
|
|
|
@ -19,6 +19,23 @@ To change this template use File | Settings | File Templates.-->
|
|||
<script type="text/javascript" src="${re.contextPath}/plugin/layui/layui.all.js" charset="utf-8"></script>
|
||||
<script type="text/javascript" src="${re.contextPath}/plugin/ztree/js/jquery.ztree.core.js"></script>
|
||||
<script type="text/javascript" src="${re.contextPath}/plugin/ztree/js/jquery.ztree.excheck.js" charset="utf-8"></script>
|
||||
<script type="text/javascript">
|
||||
(function($) {
|
||||
$.fn.disable = function () {
|
||||
return $(this).find("*").each(function () {
|
||||
$(this).attr("disabled", "disabled");
|
||||
});
|
||||
}
|
||||
})(jQuery);
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
var flag='${detail}';
|
||||
if(flag){
|
||||
$("form").disable();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
var setting = {
|
||||
check: {
|
||||
|
|
|
@ -125,9 +125,10 @@ To change this template use File | Settings | File Templates.-->
|
|||
<button class="layui-btn layui-btn-primary" id="close">
|
||||
取消
|
||||
</button>
|
||||
</#if>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</#if>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
</@shiro.hasPermission>
|
||||
<@shiro.hasPermission name="user:repass">
|
||||
<button class="layui-btn layui-btn-normal" data-type="changePwd">
|
||||
<i class="layui-icon"></i>修改密
|
||||
<i class="layui-icon"></i>修改密码
|
||||
</button>
|
||||
</@shiro.hasPermission>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,170 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.len.mapper.SysJobMapper">
|
||||
<resultMap id="BaseResultMap" type="com.len.entity.SysJob">
|
||||
<id column="id" jdbcType="VARCHAR" property="id" />
|
||||
<result column="job_name" jdbcType="VARCHAR" property="jobName" />
|
||||
<result column="cron" jdbcType="VARCHAR" property="cron" />
|
||||
<result column="status" jdbcType="BIT" property="status" />
|
||||
<result column="clazz_path" jdbcType="VARCHAR" property="clazzPath" />
|
||||
<result column="job_desc" jdbcType="VARCHAR" property="jobDesc" />
|
||||
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
|
||||
<result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
|
||||
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
|
||||
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
id, job_name, cron, status, clazz_path, job_desc, create_by, create_date, update_by,
|
||||
update_date
|
||||
</sql>
|
||||
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
|
||||
select
|
||||
<include refid="Base_Column_List" />
|
||||
from sys_job
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</select>
|
||||
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
|
||||
delete from sys_job
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</delete>
|
||||
<insert id="insert" parameterType="com.len.entity.SysJob">
|
||||
<selectKey resultType="String" keyProperty="id" order="BEFORE">
|
||||
select replace(uuid(),'-','') from dual
|
||||
</selectKey>
|
||||
insert into sys_job (id, job_name, cron,
|
||||
status, clazz_path, job_desc,
|
||||
create_by, create_date, update_by,
|
||||
update_date)
|
||||
values (#{id,jdbcType=VARCHAR}, #{jobName,jdbcType=VARCHAR}, #{cron,jdbcType=VARCHAR},
|
||||
#{status,jdbcType=BIT}, #{clazzPath,jdbcType=VARCHAR}, #{jobDesc,jdbcType=VARCHAR},
|
||||
#{createBy,jdbcType=VARCHAR}, #{createDate,jdbcType=TIMESTAMP}, #{updateBy,jdbcType=VARCHAR},
|
||||
#{updateDate,jdbcType=TIMESTAMP})
|
||||
</insert>
|
||||
<insert id="insertSelective" parameterType="com.len.entity.SysJob">
|
||||
<selectKey resultType="String" keyProperty="id" order="BEFORE">
|
||||
select replace(uuid(),'-','') from dual
|
||||
</selectKey>
|
||||
insert into sys_job
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">
|
||||
id,
|
||||
</if>
|
||||
<if test="jobName != null">
|
||||
job_name,
|
||||
</if>
|
||||
<if test="cron != null">
|
||||
cron,
|
||||
</if>
|
||||
<if test="status != null">
|
||||
status,
|
||||
</if>
|
||||
<if test="clazzPath != null">
|
||||
clazz_path,
|
||||
</if>
|
||||
<if test="jobDesc != null">
|
||||
job_desc,
|
||||
</if>
|
||||
<if test="createBy != null">
|
||||
create_by,
|
||||
</if>
|
||||
<if test="createDate != null">
|
||||
create_date,
|
||||
</if>
|
||||
<if test="updateBy != null">
|
||||
update_by,
|
||||
</if>
|
||||
<if test="updateDate != null">
|
||||
update_date,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">
|
||||
#{id,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="jobName != null">
|
||||
#{jobName,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="cron != null">
|
||||
#{cron,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="status != null">
|
||||
#{status,jdbcType=BIT},
|
||||
</if>
|
||||
<if test="clazzPath != null">
|
||||
#{clazzPath,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="jobDesc != null">
|
||||
#{jobDesc,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="createBy != null">
|
||||
#{createBy,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="createDate != null">
|
||||
#{createDate,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="updateBy != null">
|
||||
#{updateBy,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="updateDate != null">
|
||||
#{updateDate,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<update id="updateByPrimaryKeySelective" parameterType="com.len.entity.SysJob">
|
||||
update sys_job
|
||||
<set>
|
||||
<if test="jobName != null">
|
||||
job_name = #{jobName,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="cron != null">
|
||||
cron = #{cron,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="status != null">
|
||||
status = #{status,jdbcType=BIT},
|
||||
</if>
|
||||
<if test="clazzPath != null">
|
||||
clazz_path = #{clazzPath,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="jobDesc != null">
|
||||
job_desc = #{jobDesc,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="createBy != null">
|
||||
create_by = #{createBy,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="createDate != null">
|
||||
create_date = #{createDate,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="updateBy != null">
|
||||
update_by = #{updateBy,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="updateDate != null">
|
||||
update_date = #{updateDate,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
</set>
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
<update id="updateByPrimaryKey" parameterType="com.len.entity.SysJob">
|
||||
update sys_job
|
||||
set job_name = #{jobName,jdbcType=VARCHAR},
|
||||
cron = #{cron,jdbcType=VARCHAR},
|
||||
status = #{status,jdbcType=BIT},
|
||||
clazz_path = #{clazzPath,jdbcType=VARCHAR},
|
||||
job_desc = #{jobDesc,jdbcType=VARCHAR},
|
||||
create_by = #{createBy,jdbcType=VARCHAR},
|
||||
create_date = #{createDate,jdbcType=TIMESTAMP},
|
||||
update_by = #{updateBy,jdbcType=VARCHAR},
|
||||
update_date = #{updateDate,jdbcType=TIMESTAMP}
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
<select id="selectListByPage" parameterType="com.len.entity.SysJob" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
from sys_job
|
||||
<where>
|
||||
<if test="jobName!=null and jobName!=''"> and job_name like "%" #{job_name} "%"</if>
|
||||
<if test="clazzPath!=null and clazzPath!=''"> and clazz_path like "%" #{clazz_path} "%"</if>
|
||||
<if test="jobDesc!=null and jobDesc!=''"> and job_desc like "%" #{job_desc} "%"</if>
|
||||
<if test="status!=null and status!=''"> and status =#{status}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
</mapper>
|
|
@ -22,7 +22,7 @@
|
|||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.generator:mybatis-generator-core:1.3.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.5.9.RELEASE" level="project" />
|
||||
|
@ -46,22 +46,23 @@
|
|||
<orderEntry type="library" name="Maven: org.springframework:spring-expression:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="module" module-name="len-core" />
|
||||
<orderEntry type="module" module-name="len-sys" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.2.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:2.6.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.4.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path:2.2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.assertj:assertj-core:2.6.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: org.objenesis:objenesis:2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.skyscreamer:jsonassert:1.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-test:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: junit:junit:4.12" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:1.3.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-cache:1.5.9.RELEASE" level="project" />
|
||||
|
@ -109,8 +110,6 @@
|
|||
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.zxing:javase:3.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.zxing:core:3.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: c3p0:c3p0:0.9.1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-mail:4.3.12.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:4.3.12.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-messaging:4.3.13.RELEASE" level="project" />
|
||||
|
@ -157,5 +156,10 @@
|
|||
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.7.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.mchange:c3p0:0.9.5.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.11" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP-java6:2.3.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-quartz:1.2.3" level="project" />
|
||||
</component>
|
||||
</module>
|
|
@ -12,13 +12,13 @@
|
|||
<name>len-web Maven Webapp</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!--生成代码插件-->
|
||||
<dependency>
|
||||
<groupId>org.mybatis.generator</groupId>
|
||||
<artifactId>mybatis-generator-core</artifactId>
|
||||
<version>1.3.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
package com.len;
|
||||
|
||||
import java.util.Arrays;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
||||
|
||||
/**
|
||||
|
@ -17,7 +20,16 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
|||
public class Application {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Application.class,args);
|
||||
ApplicationContext applicationContext=SpringApplication.run(Application.class,args);
|
||||
String[] names = applicationContext.getBeanDefinitionNames();
|
||||
Arrays.asList(names).forEach(name -> System.out.println(name));//打印bean
|
||||
/* SchedulerFactory schedulerFactory = new StdSchedulerFactory();
|
||||
Scheduler scheduler = schedulerFactory.getScheduler();
|
||||
JobDetail jobDetail = JobBuilder.newJob(ScheduledTasks.class).withIdentity("testkey", "testvalue").withDescription("一个测试的类").build();
|
||||
jobDetail.getJobDataMap().put("ConfigurableApplicationContext",applicationContext);//重点是这句话
|
||||
Trigger trigger = TriggerBuilder.newTrigger().startNow().withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).startNow().build();
|
||||
scheduler.scheduleJob(jobDetail,trigger);
|
||||
scheduler.start();*/
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
package test;
|
||||
|
||||
import com.len.Application;
|
||||
import com.len.entity.SysUser;
|
||||
import com.len.service.SysUserService;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.test.context.web.WebAppConfiguration;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2018/1/5.
|
||||
* @email 154040976@qq.com
|
||||
*/
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@SpringBootTest(classes = Application.class)
|
||||
@WebAppConfiguration
|
||||
public class BootTest {
|
||||
|
||||
@Autowired
|
||||
SysUserService userService;
|
||||
|
||||
@Test
|
||||
public void testStartJob() throws Exception {
|
||||
SysUser user=userService.selectByPrimaryKey("2211fec3e17c11e795ed201a068c6482");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package test;
|
||||
|
||||
import org.mybatis.generator.api.ShellRunner;
|
||||
|
||||
/**
|
||||
* @author zhuxiaomeng
|
||||
* @date 2017/12/4.
|
||||
* @email 154040976@qq.com
|
||||
*/
|
||||
public class MybatisApp {
|
||||
|
||||
public static void main(String[] args) {
|
||||
args = new String[] { "-configfile", "len-web\\src\\main\\resources\\auto-config\\mybatis-config.xml", "-overwrite" };
|
||||
ShellRunner.main(args);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
|
||||
<generatorConfiguration>
|
||||
<context id="prod">
|
||||
<!-- RowBounds pagination -->
|
||||
<plugin type="org.mybatis.generator.plugins.RowBoundsPlugin" />
|
||||
<plugin type="org.mybatis.generator.plugins.CaseInsensitiveLikePlugin" />
|
||||
<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
|
||||
|
||||
<commentGenerator>
|
||||
<property name="suppressDate" value="true" />
|
||||
<property name="suppressAllComments" value="true" />
|
||||
</commentGenerator>
|
||||
|
||||
<!-- jdbc连接 -->
|
||||
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
|
||||
connectionURL="jdbc:mysql://localhost:3306/lenos" userId="root"
|
||||
password="" />
|
||||
<!--mode-->
|
||||
<javaModelGenerator targetPackage="com.len.entity"
|
||||
targetProject="len-sys/src/main/java">
|
||||
<property name="enableSubPackages" value="true"/>
|
||||
|
||||
<property name="trimStrings" value="true" />
|
||||
</javaModelGenerator>
|
||||
<!--生成映射文件存放位置-->
|
||||
<sqlMapGenerator targetPackage="com.len.mapper" targetProject="len-sys/src/main/java" >
|
||||
<property name="enableSubPackages" value="true"/>
|
||||
</sqlMapGenerator>
|
||||
<!--生成Dao类存放位置-->
|
||||
<javaClientGenerator targetPackage="com.len.mapper"
|
||||
targetProject="len-sys/src/main/java" type="XMLMAPPER" >
|
||||
<property name="enableSubPackages" value="true"/>
|
||||
</javaClientGenerator>
|
||||
<!--生成table 先建表 后生成 勿随意覆盖本身table 避免功能缺失 测试 自己找其他表测试 by zxm-->
|
||||
<!--<table tableName="sys_user" domainObjectName="SysUser"/>-->
|
||||
<!-- <table tableName="sys_job" domainObjectName="SysJob"
|
||||
enableCountByExample="false"
|
||||
enableUpdateByExample="false"
|
||||
enableDeleteByExample="false"
|
||||
enableSelectByExample="false"
|
||||
selectByExampleQueryId="false"
|
||||
/>-->
|
||||
|
||||
|
||||
</context>
|
||||
</generatorConfiguration>
|
|
@ -0,0 +1,40 @@
|
|||
# 固定前缀org.quartz
|
||||
# 主要分为scheduler、threadPool、jobStore、plugin等部分
|
||||
#
|
||||
#
|
||||
org.quartz.scheduler.instanceName = DefaultQuartzScheduler
|
||||
org.quartz.scheduler.rmi.export = false
|
||||
org.quartz.scheduler.rmi.proxy = false
|
||||
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
|
||||
|
||||
# 实例化ThreadPool时,使用的线程类为SimpleThreadPool
|
||||
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
|
||||
|
||||
# threadCount和threadPriority将以setter的形式注入ThreadPool实例
|
||||
# 并发个数
|
||||
org.quartz.threadPool.threadCount = 5
|
||||
# 优先级
|
||||
org.quartz.threadPool.threadPriority = 5
|
||||
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
|
||||
|
||||
org.quartz.jobStore.misfireThreshold = 5000
|
||||
|
||||
# 默认存储在内存中
|
||||
#org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
|
||||
|
||||
#持久化
|
||||
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
|
||||
|
||||
org.quartz.jobStore.tablePrefix = QRTZ_
|
||||
|
||||
org.quartz.jobStore.dataSource = qzDS
|
||||
|
||||
org.quartz.dataSource.qzDS.driver = com.mysql.jdbc.Driver
|
||||
|
||||
org.quartz.dataSource.qzDS.URL = jdbc:mysql://190.0.1.88:3306/hello_test?useUnicode=true&characterEncoding=UTF-8
|
||||
|
||||
org.quartz.dataSource.qzDS.user = root
|
||||
|
||||
org.quartz.dataSource.qzDS.password = root
|
||||
|
||||
org.quartz.dataSource.qzDS.maxConnections = 10
|
39
lenosp.iml
39
lenosp.iml
|
@ -13,24 +13,24 @@
|
|||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-test:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.2.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:2.6.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.4.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path:2.2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.assertj:assertj-core:2.6.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: org.objenesis:objenesis:2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.skyscreamer:jsonassert:1.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-test:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: junit:junit:4.12" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.5.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.5.9.RELEASE" level="project" />
|
||||
|
@ -98,8 +98,6 @@
|
|||
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.zxing:javase:3.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.zxing:core:3.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: c3p0:c3p0:0.9.1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-mail:4.3.12.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:4.3.12.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-messaging:4.3.13.RELEASE" level="project" />
|
||||
|
@ -146,5 +144,10 @@
|
|||
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.7.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.13.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.mchange:c3p0:0.9.5.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.11" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP-java6:2.3.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-quartz:1.2.3" level="project" />
|
||||
</component>
|
||||
</module>
|
39
pom.xml
39
pom.xml
|
@ -30,8 +30,11 @@
|
|||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<!-- 只在test测试里面运行 -->
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.12</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -225,6 +228,38 @@
|
|||
<artifactId>spring-context-support</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- <!– https://mvnrepository.com/artifact/org.quartz-scheduler/quartz –>
|
||||
<dependency>
|
||||
<groupId>org.quartz-scheduler</groupId>
|
||||
<artifactId>quartz</artifactId>
|
||||
<version>1.8.6</version>
|
||||
</dependency>-->
|
||||
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
|
||||
<dependency>
|
||||
<groupId>org.quartz-scheduler</groupId>
|
||||
<artifactId>quartz</artifactId>
|
||||
<version>2.3.0</version>
|
||||
</dependency>
|
||||
<!--
|
||||
<dependency>
|
||||
<groupId>org.liquibase</groupId>
|
||||
<artifactId>liquibase-core</artifactId>
|
||||
</dependency>-->
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.shiro</groupId>
|
||||
<artifactId>shiro-quartz</artifactId>
|
||||
<version>1.2.3</version>
|
||||
<!-- 解决 shiro和quartz 冲突-->
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.opensymphony.quartz</groupId>
|
||||
<artifactId>quartz</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
<dependencyManagement>
|
||||
|
|
Loading…
Reference in New Issue