From d74dd3d6f754a7dd3660ef025276f9a055111b6b Mon Sep 17 00:00:00 2001
From: chenjiantian <214228265@qq.com>
Date: 星期三, 15 十二月 2021 18:33:12 +0800
Subject: [PATCH] 灯模块
---
sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzService.java | 47 ++
dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskMapper.java | 15
sandu-common/src/main/java/com/sandu/common/quartz/ExecutionJob.java | 16
ximon-admin/src/main/java/com/sandu/ximon/admin/param/LightTaskParam.java | 47 ++
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskQuartzService.java | 58 +++
dao/src/main/java/com/sandu/ximon/dao/domain/LightTaskQuartz.java | 61 +++
ximon-admin/src/main/java/com/sandu/ximon/admin/dto/LightDataDto.java | 11
dao/src/main/java/com/sandu/ximon/dao/enums/WeekEnums.java | 52 ++
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/TaskOrderUtil.java | 76 ++++
dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskQuartzMapper.java | 17
ximon-admin/src/main/java/com/sandu/ximon/admin/dto/SingleLightOrderDto.java | 19 +
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java | 49 ++
dao/src/main/java/com/sandu/ximon/dao/domain/LightTask.java | 76 ++++
dao/src/main/java/com/sandu/ximon/dao/mapper/PoleBindingMapper.java | 2
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java | 14
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java | 2
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightController.java | 39 ++
sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzServiceImpl.java | 125 ++++++
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightTaskController.java | 38 ++
ximon-admin/src/test/java/com/sandu/ximon/admin/AdminApplicationTests.java | 27 +
sandu-common/src/main/java/com/sandu/common/quartz/config/QuartzConfig.java | 59 +++
dao/src/main/resources/mapper/LightTaskMapper.xml | 27 +
sandu-common/src/main/java/com/sandu/common/quartz/dto/QuartzJobDto.java | 61 +++
dao/src/main/java/com/sandu/ximon/dao/domain/LightTaskPoleRelation.java | 46 ++
dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskPoleRelationMapper.java | 17
dao/src/main/resources/mapper/LightTaskPoleRelationMapper.xml | 19 +
dao/src/main/resources/mapper/LightTaskQuartzMapper.xml | 23 +
27 files changed, 1,036 insertions(+), 7 deletions(-)
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/LightTask.java b/dao/src/main/java/com/sandu/ximon/dao/domain/LightTask.java
new file mode 100644
index 0000000..6d08c4e
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/LightTask.java
@@ -0,0 +1,76 @@
+package com.sandu.ximon.dao.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Data;
+
+/**
+ * 璺伅浠诲姟琛�
+ * @TableName light_task
+ */
+@TableName(value ="light_task")
+@Data
+public class LightTask implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ private Long taskId;
+
+ /**
+ * 瀹㈡埛id
+ */
+ private Long clientId;
+
+ /**
+ * 浠诲姟鍚嶇О
+ */
+ private String taskName;
+
+ /**
+ * 1鏆傚仠銆�0鍚敤
+ */
+ private Integer pause;
+
+ /**
+ * 鏄熸湡鍑狅紝浣嶈繍绠椾繚瀛橈紝1浠h〃鏄熸湡涓�锛�2鏄熸湡浜岋紝4鏄熸湡涓夛紝8鏄熸湡鍥涳紝16鏄熸湡浜旓紝32鏄熸湡鍏紝64鏄熸湡鏃�
+ */
+ private Integer week;
+
+ /**
+ * 寮�鐏懡浠�
+ */
+ private String openOrder;
+
+ /**
+ * 鍏抽棴鐏懡浠�
+ */
+ private String closeOrder;
+
+ /**
+ * 鐏帶鍛戒护
+ */
+ private String controlOrder;
+
+ /**
+ * 鍒涘缓鐢ㄦ埛
+ */
+ private String createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ private LocalDateTime createTime;
+
+ /**
+ *
+ */
+ private LocalDateTime updateTime;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/LightTaskPoleRelation.java b/dao/src/main/java/com/sandu/ximon/dao/domain/LightTaskPoleRelation.java
new file mode 100644
index 0000000..498d7a0
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/LightTaskPoleRelation.java
@@ -0,0 +1,46 @@
+package com.sandu.ximon.dao.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Data;
+
+/**
+ * 璺伅浠诲姟鍜岀伅鏉嗗叧绯昏〃
+ * @TableName light_task_pole_relation
+ */
+@TableName(value ="light_task_pole_relation")
+@Data
+public class LightTaskPoleRelation implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 浠诲姟id
+ */
+ private Long taskId;
+
+ /**
+ * 鐏潌id
+ */
+ private Long poleId;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ private LocalDateTime createTime;
+
+ /**
+ *
+ */
+ private LocalDateTime updateTime;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/LightTaskQuartz.java b/dao/src/main/java/com/sandu/ximon/dao/domain/LightTaskQuartz.java
new file mode 100644
index 0000000..7b63d09
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/LightTaskQuartz.java
@@ -0,0 +1,61 @@
+package com.sandu.ximon.dao.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Data;
+
+/**
+ * 璺伅浠诲姟瀹氭椂鍣ㄨ〃
+ * @TableName light_task_quartz
+ */
+@TableName(value ="light_task_quartz")
+@Data
+public class LightTaskQuartz implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 浠诲姟id
+ */
+ private Long taskId;
+
+ /**
+ * 瀹氭椂鍣ㄥ悕绉�
+ */
+ private String quartzName;
+
+ /**
+ * 瀹氭椂鍣╟ron
+ */
+ private String cronExpression;
+
+ /**
+ * 1鏆傚仠銆�0鍚敤
+ */
+ private Integer pause;
+
+ /**
+ * 瀹氭椂鍣ㄥ懡浠ゅ抚
+ */
+ private String order;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ private LocalDateTime createTime;
+
+ /**
+ *
+ */
+ private LocalDateTime updateTime;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/dao/src/main/java/com/sandu/ximon/dao/enums/WeekEnums.java b/dao/src/main/java/com/sandu/ximon/dao/enums/WeekEnums.java
new file mode 100644
index 0000000..20391d3
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/enums/WeekEnums.java
@@ -0,0 +1,52 @@
+package com.sandu.ximon.dao.enums;
+
+/**
+ * 鏄熸湡鏋氫妇绫�
+ *
+ * @author chenjiantian
+ */
+public enum WeekEnums {
+
+ /**
+ * TUESDAY
+ */
+ MONDAY(1),
+ /**
+ * TUESDAY
+ */
+ TUESDAY(2),
+ /**
+ * WEDNESDAY
+ */
+ WEDNESDAY(4),
+ /**
+ * THURSDAY
+ */
+ THURSDAY(8),
+ /**
+ * FRIDAY
+ */
+ FRIDAY(16),
+ /**
+ * SATURDAY
+ */
+ SATURDAY(32),
+ /**
+ * SUNDAY
+ */
+ SUNDAY(64),
+ ;
+
+ private final Integer code;
+
+ WeekEnums(Integer code) {
+ this.code = code;
+ }
+
+
+ public Integer getCode() {
+ return code;
+ }
+
+
+}
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskMapper.java
new file mode 100644
index 0000000..ea6a350
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskMapper.java
@@ -0,0 +1,15 @@
+package com.sandu.ximon.dao.mapper;
+
+import com.sandu.ximon.dao.domain.LightTask;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Entity com.sandu.ximon.dao.domain.LightTask
+ */
+public interface LightTaskMapper extends BaseMapper<LightTask> {
+
+}
+
+
+
+
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskPoleRelationMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskPoleRelationMapper.java
new file mode 100644
index 0000000..a4eca8e
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskPoleRelationMapper.java
@@ -0,0 +1,17 @@
+package com.sandu.ximon.dao.mapper;
+
+import com.sandu.ximon.dao.domain.LightTaskPoleRelation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.sandu.ximon.dao.domain.LightTaskPoleRelation
+ */
+@Mapper
+public interface LightTaskPoleRelationMapper extends BaseMapper<LightTaskPoleRelation> {
+
+}
+
+
+
+
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskQuartzMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskQuartzMapper.java
new file mode 100644
index 0000000..3ca8d53
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightTaskQuartzMapper.java
@@ -0,0 +1,17 @@
+package com.sandu.ximon.dao.mapper;
+
+import com.sandu.ximon.dao.domain.LightTaskQuartz;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.sandu.ximon.dao.domain.LightTaskQuartz
+ */
+@Mapper
+public interface LightTaskQuartzMapper extends BaseMapper<LightTaskQuartz> {
+
+}
+
+
+
+
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleBindingMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleBindingMapper.java
index 8e6085d..f9ea8b3 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleBindingMapper.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleBindingMapper.java
@@ -2,10 +2,12 @@
import com.sandu.ximon.dao.domain.PoleBinding;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
/**
* @Entity com.sandu.ximon.dao.domain.PoleBinding
*/
+@Mapper
public interface PoleBindingMapper extends BaseMapper<PoleBinding> {
}
diff --git a/dao/src/main/resources/mapper/LightTaskMapper.xml b/dao/src/main/resources/mapper/LightTaskMapper.xml
new file mode 100644
index 0000000..b3eb1db
--- /dev/null
+++ b/dao/src/main/resources/mapper/LightTaskMapper.xml
@@ -0,0 +1,27 @@
+<?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.sandu.ximon.dao.mapper.LightTaskMapper">
+
+ <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.LightTask">
+ <id property="taskId" column="task_id" jdbcType="BIGINT"/>
+ <result property="clientId" column="client_id" jdbcType="BIGINT"/>
+ <result property="taskName" column="task_name" jdbcType="VARCHAR"/>
+ <result property="pause" column="pause" jdbcType="TINYINT"/>
+ <result property="week" column="week" jdbcType="TINYINT"/>
+ <result property="openOrder" column="open_order" jdbcType="VARCHAR"/>
+ <result property="closeOrder" column="close_order" jdbcType="VARCHAR"/>
+ <result property="controlOrder" column="control_order" jdbcType="VARCHAR"/>
+ <result property="createUser" column="create_user" jdbcType="VARCHAR"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ task_id,client_id,task_name,
+ pause,week,open_order,
+ close_order,control_order,create_user,
+ create_time,update_time
+ </sql>
+</mapper>
diff --git a/dao/src/main/resources/mapper/LightTaskPoleRelationMapper.xml b/dao/src/main/resources/mapper/LightTaskPoleRelationMapper.xml
new file mode 100644
index 0000000..c50eafc
--- /dev/null
+++ b/dao/src/main/resources/mapper/LightTaskPoleRelationMapper.xml
@@ -0,0 +1,19 @@
+<?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.sandu.ximon.dao.mapper.LightTaskPoleRelationMapper">
+
+ <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.LightTaskPoleRelation">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="taskId" column="task_id" jdbcType="BIGINT"/>
+ <result property="poleId" column="pole_id" jdbcType="BIGINT"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,task_id,pole_id,
+ create_time,update_time
+ </sql>
+</mapper>
diff --git a/dao/src/main/resources/mapper/LightTaskQuartzMapper.xml b/dao/src/main/resources/mapper/LightTaskQuartzMapper.xml
new file mode 100644
index 0000000..38f6f3f
--- /dev/null
+++ b/dao/src/main/resources/mapper/LightTaskQuartzMapper.xml
@@ -0,0 +1,23 @@
+<?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.sandu.ximon.dao.mapper.LightTaskQuartzMapper">
+
+ <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.LightTaskQuartz">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="taskId" column="task_id" jdbcType="BIGINT"/>
+ <result property="quartzName" column="quartz_name" jdbcType="VARCHAR"/>
+ <result property="cronExpression" column="cron_expression" jdbcType="VARCHAR"/>
+ <result property="pause" column="pause" jdbcType="TINYINT"/>
+ <result property="order" column="order" jdbcType="VARCHAR"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,task_id,quartz_name,
+ cron_expression,pause,order,
+ create_time,update_time
+ </sql>
+</mapper>
diff --git a/sandu-common/src/main/java/com/sandu/common/quartz/ExecutionJob.java b/sandu-common/src/main/java/com/sandu/common/quartz/ExecutionJob.java
new file mode 100644
index 0000000..b01dd09
--- /dev/null
+++ b/sandu-common/src/main/java/com/sandu/common/quartz/ExecutionJob.java
@@ -0,0 +1,16 @@
+package com.sandu.common.quartz;
+
+import org.quartz.JobExecutionContext;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/15 10:28
+ */
+public class ExecutionJob extends QuartzJobBean {
+
+ @Override
+ protected void executeInternal(JobExecutionContext context) {
+ System.out.println(Thread.currentThread().toString());
+ }
+}
diff --git a/sandu-common/src/main/java/com/sandu/common/quartz/config/QuartzConfig.java b/sandu-common/src/main/java/com/sandu/common/quartz/config/QuartzConfig.java
new file mode 100644
index 0000000..c828724
--- /dev/null
+++ b/sandu-common/src/main/java/com/sandu/common/quartz/config/QuartzConfig.java
@@ -0,0 +1,59 @@
+package com.sandu.common.quartz.config;
+
+import com.sandu.common.quartz.service.QuartzService;
+import org.quartz.Scheduler;
+import org.quartz.spi.TriggerFiredBundle;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.quartz.AdaptableJobFactory;
+import org.springframework.scheduling.quartz.SchedulerFactoryBean;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/15 10:48
+ */
+@Configuration
+@ConditionalOnClass(QuartzService.class)
+public class QuartzConfig {
+
+ /**
+ * 瑙e喅Job涓敞鍏pring Bean涓簄ull鐨勯棶棰�
+ */
+ @Component("quartzJobFactory")
+ public static class QuartzJobFactory extends AdaptableJobFactory {
+
+ private final AutowireCapableBeanFactory capableBeanFactory;
+
+ public QuartzJobFactory(AutowireCapableBeanFactory capableBeanFactory) {
+ this.capableBeanFactory = capableBeanFactory;
+ }
+
+ @Override
+ protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
+
+ //璋冪敤鐖剁被鐨勬柟娉�
+ Object jobInstance = super.createJobInstance(bundle);
+ capableBeanFactory.autowireBean(jobInstance);
+ return jobInstance;
+ }
+ }
+
+ /**
+ * 娉ㄥ叆scheduler鍒皊pring
+ * @param quartzJobFactory /
+ * @return Scheduler
+ * @throws Exception /
+ */
+ @Bean(name = "scheduler")
+ public Scheduler scheduler(QuartzJobFactory quartzJobFactory) throws Exception {
+ SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
+ factoryBean.setJobFactory(quartzJobFactory);
+ factoryBean.afterPropertiesSet();
+ Scheduler scheduler = factoryBean.getScheduler();
+ scheduler.start();
+ return scheduler;
+ }
+}
diff --git a/sandu-common/src/main/java/com/sandu/common/quartz/dto/QuartzJobDto.java b/sandu-common/src/main/java/com/sandu/common/quartz/dto/QuartzJobDto.java
new file mode 100644
index 0000000..292044b
--- /dev/null
+++ b/sandu-common/src/main/java/com/sandu/common/quartz/dto/QuartzJobDto.java
@@ -0,0 +1,61 @@
+package com.sandu.common.quartz.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/14 17:41
+ * 浠诲姟璋冨害dto
+ */
+@Data
+public class QuartzJobDto implements Serializable {
+ public static final String JOB_KEY = "JOB_KEY";
+ /**
+ * 瀹氭椂浠诲姟ID
+ */
+ private Long id;
+
+ /**
+ * Bean鍚嶇О
+ */
+ private String beanName;
+
+ /**
+ * cron 琛ㄨ揪寮�
+ */
+ private String cronExpression;
+
+ /**
+ * 鐘舵�侊細1鏆傚仠銆�0鍚敤
+ */
+ private Boolean isPause;
+
+ /**
+ * 浠诲姟鍚嶇О
+ */
+ private String jobName;
+
+ /**
+ * 鏂规硶鍚嶇О
+ */
+ private String methodName;
+
+ /**
+ * 鍙傛暟
+ */
+ private String params;
+
+ /**
+ * 澶囨敞
+ */
+ private String remark;
+
+ /**
+ * 鍒涘缓鏃ユ湡
+ */
+ private Timestamp createTime;
+
+}
diff --git a/sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzService.java b/sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzService.java
new file mode 100644
index 0000000..70c3e2e
--- /dev/null
+++ b/sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzService.java
@@ -0,0 +1,47 @@
+package com.sandu.common.quartz.service;
+
+import com.sandu.common.quartz.dto.QuartzJobDto;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/15 10:36
+ */
+public interface QuartzService {
+
+ /**
+ * 澧炲姞涓�涓换鍔ob
+ * @param quartzJobDto 瀹氭椂浠诲姟瀹炰綋绫�
+ */
+ void addJob(Class<? extends QuartzJobBean> jobClass, QuartzJobDto quartzJobDto);
+
+ /**
+ * 淇敼涓�涓换鍔ob
+ * @param quartzJobDto 瀹氭椂浠诲姟瀹炰綋绫�
+ */
+ void updateJobCron(Class<? extends QuartzJobBean> jobClass,QuartzJobDto quartzJobDto);
+
+ /**
+ * 鍒犻櫎涓�涓换鍔ob
+ * @param jobId 瀹氭椂浠诲姟id
+ */
+ void deleteJob(Class<? extends QuartzJobBean> jobClass,Long jobId);
+
+ /**
+ * 鏆傚仠涓�涓换鍔ob
+ * @param jobId 瀹氭椂浠诲姟id
+ */
+ void pauseJob(Class<? extends QuartzJobBean> jobClass,Long jobId);
+
+ /**
+ * 鎭㈠涓�涓换鍔ob
+ * @param quartzJobDto 瀹氭椂浠诲姟瀹炰綋绫�
+ */
+ void resumeJob(Class<? extends QuartzJobBean> jobClass,QuartzJobDto quartzJobDto);
+
+ /**
+ * 绔嬪嵆鎵ц涓�涓换鍔ob
+ * @param quartzJobDto 瀹氭椂浠诲姟瀹炰綋绫�
+ */
+ void runJobNow(Class<? extends QuartzJobBean> jobClass,QuartzJobDto quartzJobDto);
+}
diff --git a/sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzServiceImpl.java b/sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzServiceImpl.java
new file mode 100644
index 0000000..ec54efb
--- /dev/null
+++ b/sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzServiceImpl.java
@@ -0,0 +1,125 @@
+package com.sandu.common.quartz.service;
+
+import com.sandu.common.execption.BusinessException;
+import com.sandu.common.quartz.ExecutionJob;
+import com.sandu.common.quartz.dto.QuartzJobDto;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.*;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/15 10:39
+ * quartz job绠$悊绫�
+ */
+@Slf4j
+@Service
+@ConditionalOnProperty(prefix = "sandu.quartz", name = "enable", havingValue = "true")
+public class QuartzServiceImpl implements QuartzService {
+
+ @Resource(name = "scheduler")
+ private Scheduler scheduler;
+
+ @Override
+ public void addJob(Class<? extends QuartzJobBean> jobClass, QuartzJobDto quartzJobDto) {
+ try {
+ String simpleName = jobClass.getSimpleName();
+ JobDetail jobDetail = JobBuilder.newJob(ExecutionJob.class)
+ .withIdentity(simpleName + quartzJobDto.getId())
+ .build();
+ CronTrigger cronTrigger = TriggerBuilder.newTrigger()
+ .withIdentity(simpleName + quartzJobDto.getId())
+ .withSchedule(CronScheduleBuilder.cronSchedule(quartzJobDto.getCronExpression()))
+ .build();
+ cronTrigger.getJobDataMap().put(QuartzJobDto.JOB_KEY, quartzJobDto);
+
+ scheduler.scheduleJob(jobDetail, cronTrigger);
+
+ } catch (SchedulerException e) {
+ log.error("鍒涘缓瀹氭椂浠诲姟澶辫触", e);
+ throw new BusinessException("鍒涘缓瀹氭椂浠诲姟澶辫触");
+ }
+ }
+
+ @Override
+ public void updateJobCron(Class<? extends QuartzJobBean> jobClass, QuartzJobDto quartzJobDto) {
+ try {
+ TriggerKey triggerKey = TriggerKey.triggerKey(jobClass.getSimpleName() + quartzJobDto.getId());
+ CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
+ if (trigger == null) {
+ addJob(jobClass, quartzJobDto);
+ trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
+ }
+ CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(quartzJobDto.getCronExpression());
+ trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
+ trigger.getJobDataMap().put(QuartzJobDto.JOB_KEY, quartzJobDto);
+
+ scheduler.rescheduleJob(triggerKey, trigger);
+ } catch (SchedulerException e) {
+ log.error("鏇存柊瀹氭椂浠诲姟澶辫触", e);
+ throw new BusinessException("鏇存柊瀹氭椂浠诲姟澶辫触");
+ }
+ }
+
+ @Override
+ public void deleteJob(Class<? extends QuartzJobBean> jobClass, Long jobId) {
+ try {
+ JobKey jobKey = JobKey.jobKey(jobClass.getSimpleName() + jobId);
+ scheduler.pauseJob(jobKey);
+ scheduler.deleteJob(jobKey);
+ } catch (SchedulerException e) {
+ log.error("鍒犻櫎瀹氭椂浠诲姟澶辫触", e);
+ throw new BusinessException("鍒犻櫎瀹氭椂浠诲姟澶辫触");
+ }
+ }
+
+ @Override
+ public void pauseJob(Class<? extends QuartzJobBean> jobClass, Long jobId) {
+ try {
+ JobKey jobKey = JobKey.jobKey(jobClass.getSimpleName() + jobId);
+ scheduler.pauseJob(jobKey);
+ } catch (Exception e) {
+ log.error("瀹氭椂浠诲姟鏆傚仠澶辫触", e);
+ throw new BusinessException("瀹氭椂浠诲姟鏆傚仠澶辫触");
+ }
+ }
+
+ @Override
+ public void resumeJob(Class<? extends QuartzJobBean> jobClass, QuartzJobDto quartzJobDto) {
+ try {
+ TriggerKey triggerKey = TriggerKey.triggerKey(jobClass.getSimpleName() + quartzJobDto.getId());
+ CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
+ // 濡傛灉涓嶅瓨鍦ㄥ垯鍒涘缓涓�涓畾鏃朵换鍔�
+ if (trigger == null) {
+ addJob(jobClass, quartzJobDto);
+ }
+ JobKey jobKey = JobKey.jobKey(jobClass.getSimpleName() + quartzJobDto.getId());
+ scheduler.resumeJob(jobKey);
+ } catch (Exception e) {
+ log.error("鎭㈠瀹氭椂浠诲姟澶辫触", e);
+ throw new BusinessException("鎭㈠瀹氭椂浠诲姟澶辫触");
+ }
+ }
+
+ @Override
+ public void runJobNow(Class<? extends QuartzJobBean> jobClass, QuartzJobDto quartzJobDto) {
+ try {
+ TriggerKey triggerKey = TriggerKey.triggerKey(jobClass.getSimpleName() + quartzJobDto.getId());
+ CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
+ // 濡傛灉涓嶅瓨鍦ㄥ垯鍒涘缓涓�涓畾鏃朵换鍔�
+ if (trigger == null) {
+ addJob(jobClass, quartzJobDto);
+ }
+ JobDataMap dataMap = new JobDataMap();
+ dataMap.put(QuartzJobDto.JOB_KEY, quartzJobDto);
+ JobKey jobKey = JobKey.jobKey(jobClass.getSimpleName() + quartzJobDto.getId());
+ scheduler.triggerJob(jobKey, dataMap);
+ } catch (Exception e) {
+ log.error("瀹氭椂浠诲姟鎵ц澶辫触", e);
+ throw new BusinessException("瀹氭椂浠诲姟鎵ц澶辫触");
+ }
+ }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightController.java
new file mode 100644
index 0000000..05cc0d0
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightController.java
@@ -0,0 +1,39 @@
+package com.sandu.ximon.admin.controller;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.sandu.common.domain.ResponseVO;
+import com.sandu.common.object.BaseConditionVO;
+import com.sandu.common.util.ResponseUtil;
+import com.sandu.ximon.admin.dto.LightDataDto;
+import com.sandu.ximon.admin.service.LightReportDataService;
+import com.sandu.ximon.dao.domain.Pole;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 璺伅鐩稿叧鎺у埗绫�
+ *
+ * @author chenjiantian
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/v1/light")
+public class LightController {
+
+ private final LightReportDataService lightReportDataService;
+
+
+ @GetMapping("/list")
+ public ResponseVO<Object> listLight(BaseConditionVO conditionVO, @RequestParam(required = false) String keyword) {
+ List<LightDataDto> list = lightReportDataService.listLight(conditionVO.getPageNo(),conditionVO.getPageSize(),keyword);
+ return ResponseUtil.success(list);
+ }
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightTaskController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightTaskController.java
new file mode 100644
index 0000000..69602df
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightTaskController.java
@@ -0,0 +1,38 @@
+package com.sandu.ximon.admin.controller;
+
+import com.sandu.common.domain.ResponseVO;
+import com.sandu.common.util.ResponseUtil;
+import com.sandu.ximon.admin.param.LightTaskParam;
+import com.sandu.ximon.admin.service.LightTaskService;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 璺伅浠诲姟鐩稿叧鎺у埗绫�
+ *
+ * @author chenjiantian
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/v1/light/task")
+public class LightTaskController {
+
+ private final LightTaskService lightTaskService;
+
+
+ @PostMapping("/add")
+ public ResponseVO<Object> addLightTask(@RequestBody @Validated LightTaskParam param) {
+ boolean result = lightTaskService.addLightTask(param);
+ if (result) {
+ return ResponseUtil.success("鏂板鎴愬姛");
+ } else {
+ return ResponseUtil.fail("鏂板澶辫触");
+ }
+ }
+
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/LightDataDto.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/LightDataDto.java
new file mode 100644
index 0000000..484a571
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/LightDataDto.java
@@ -0,0 +1,11 @@
+package com.sandu.ximon.admin.dto;
+
+import lombok.Data;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/14 14:36
+ */
+@Data
+public class LightDataDto {
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/SingleLightOrderDto.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/SingleLightOrderDto.java
new file mode 100644
index 0000000..a44e64b
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/SingleLightOrderDto.java
@@ -0,0 +1,19 @@
+package com.sandu.ximon.admin.dto;
+
+import lombok.Data;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/15 18:07
+ * 鍗曚釜璺伅浠诲姟鍛戒护鐨勫唴瀹�
+ */
+@Data
+public class SingleLightOrderDto {
+
+ private int hour;
+ private int minute;
+ /**
+ * 0-100
+ */
+ private int brightness;
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/param/LightTaskParam.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/LightTaskParam.java
new file mode 100644
index 0000000..1fd7a35
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/LightTaskParam.java
@@ -0,0 +1,47 @@
+package com.sandu.ximon.admin.param;
+
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @author chenjiantian
+ * 璺伅浠诲姟
+ */
+@Data
+public class LightTaskParam {
+ /**
+ * 浠诲姟鍚嶇О
+ */
+ @NotEmpty(message = "浠诲姟鍚嶇О涓嶈兘涓虹┖")
+ private String taskName;
+
+ /**
+ * 鏄熸湡鍑狅紝浣嶈繍绠椾繚瀛橈紝1浠h〃鏄熸湡涓�锛�2鏄熸湡浜岋紝4鏄熸湡涓夛紝8鏄熸湡鍥涳紝16鏄熸湡浜旓紝32鏄熸湡鍏紝64鏄熸湡鏃�
+ */
+ @NotNull(message = "鏄熸湡涓嶈兘涓虹┖")
+ private Integer week;
+
+
+ /**
+ * 寮�鐏懡浠�
+ */
+ @Length(min = 6, max = 6, message = "寮�鐏懡浠ら暱搴﹂敊璇�")
+ private String openOrder;
+
+ /**
+ * 鍏抽棴鐏懡浠�
+ */
+ @Length(min = 6, max = 6, message = "鍏崇伅鍛戒护闀垮害閿欒")
+ private String closeOrder;
+ /**
+ * 鐏帶鍛戒护
+ */
+ private String controlOrder;
+
+ private List<Long> poleIdList;
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java
index 213eaeb..5a79a77 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java
@@ -1,11 +1,15 @@
package com.sandu.ximon.admin.service;
+import com.github.pagehelper.PageHelper;
import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.dto.LightDataDto;
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5LightHeartbeatReportInnerFrame;
import com.sandu.ximon.dao.domain.LightReportData;
import com.sandu.ximon.dao.mapper.LightReportDataMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+
+import java.util.List;
/**
* @author chenjiantian
@@ -28,4 +32,14 @@
return save(lightReportData);
}
+
+ /**
+ * 鑾峰彇璺伅鍒楄〃
+ * @return 杩斿洖缁勫悎鏁版嵁dto
+ */
+ public List<LightDataDto> listLight(int pageNo, int pageSize, String keyword) {
+ PageHelper.startPage(pageNo,pageSize);
+
+ return null;
+ }
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskQuartzService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskQuartzService.java
new file mode 100644
index 0000000..3e16e33
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskQuartzService.java
@@ -0,0 +1,58 @@
+package com.sandu.ximon.admin.service;
+
+import cn.hutool.core.util.ArrayUtil;
+import com.sandu.common.execption.BusinessException;
+import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.dto.SingleLightOrderDto;
+import com.sandu.ximon.admin.utils.TaskOrderUtil;
+import com.sandu.ximon.dao.domain.LightTask;
+import com.sandu.ximon.dao.domain.LightTaskQuartz;
+import com.sandu.ximon.dao.mapper.LightTaskQuartzMapper;
+import org.quartz.CronScheduleBuilder;
+import org.quartz.DateBuilder;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/15 17:46
+ */
+@Service
+public class LightTaskQuartzService extends BaseServiceImpl<LightTaskQuartzMapper, LightTaskQuartz> {
+
+ /**
+ * 娣诲姞瀹氭椂鍣ㄤ换鍔�
+ *
+ * @param lightTask 璺伅浠诲姟瀹炰綋绫伙紝涓�涓矾鐏换鍔℃湁澶氫釜瀹氭椂鍣ㄤ换鍔�
+ */
+ public boolean addLightTaskQuartz(LightTask lightTask) {
+ List<LightTaskQuartz> list = new ArrayList<>();
+
+ // 娣诲姞寮�鐏畾鏃跺櫒
+ String openOrder = lightTask.getOpenOrder();
+ SingleLightOrderDto singleLightOrder = TaskOrderUtil.parseLightOrder(openOrder);
+ Integer[] weekArrays = TaskOrderUtil.parseLightWeek(lightTask.getWeek());
+ if (singleLightOrder == null) {
+ throw new BusinessException("瑙f瀽鍗曠伅鍛戒护澶辫触");
+ }
+ if(ArrayUtil.isEmpty(weekArrays)) {
+ throw new BusinessException("璇疯缃槦鏈�");
+ }
+ String cron = TaskOrderUtil.getHourAndMinuteOnGivenDaysOfWeek(singleLightOrder.getHour(), singleLightOrder.getMinute(), weekArrays);
+
+ LightTaskQuartz lightTaskQuartz = new LightTaskQuartz();
+ lightTaskQuartz.setTaskId(lightTask.getTaskId());
+ lightTaskQuartz.setCronExpression(cron);
+
+
+ return false;
+ }
+
+ public static void main(String[] args) {
+ System.out.println(CronScheduleBuilder.atHourAndMinuteOnGivenDaysOfWeek(0, 1, DateBuilder.SUNDAY).build().getCalendarName());
+ }
+
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java
new file mode 100644
index 0000000..6da0e0d
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java
@@ -0,0 +1,49 @@
+package com.sandu.ximon.admin.service;
+
+import cn.hutool.core.util.StrUtil;
+import com.sandu.common.execption.BusinessException;
+import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.param.LightTaskParam;
+import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.dao.domain.LightTask;
+import com.sandu.ximon.dao.mapper.LightTaskMapper;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/15 16:33
+ * 璺伅浠诲姟鎿嶄綔
+ */
+@Service
+@AllArgsConstructor
+public class LightTaskService extends BaseServiceImpl<LightTaskMapper, LightTask> {
+
+ private final static int ORDER_LENGTH = 6;
+
+ private final LightTaskQuartzService lightTaskQuartzService;
+
+ /**
+ * 鏂板璺伅浠诲姟
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public boolean addLightTask(LightTaskParam param) {
+ if(StrUtil.length(param.getControlOrder()) % ORDER_LENGTH != 0){
+ throw new BusinessException("鐏帶鍛戒护鏍煎紡涓嶆纭�");
+ }
+ LightTask lightTask = new LightTask();
+ lightTask.setClientId(SecurityUtils.getClientId());
+ lightTask.setTaskName(param.getTaskName());
+ lightTask.setWeek(param.getWeek());
+ lightTask.setCloseOrder(param.getCloseOrder());
+ lightTask.setOpenOrder(param.getOpenOrder());
+ lightTask.setControlOrder(param.getControlOrder());
+ lightTask.setCreateUser(SecurityUtils.getUsername());
+ if(!save(lightTask)) {
+ throw new BusinessException("淇濆瓨璺伅浠诲姟澶辫触");
+ }
+ boolean result = lightTaskQuartzService.addLightTaskQuartz(lightTask);
+ return false;
+ }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
index 193edc4..e837d24 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -64,7 +64,7 @@
/**
* 鐢熸垚鐏潌缂栧彿
*/
- private Long generatePoleCode() {
+ public Long generatePoleCode() {
StringBuilder sb = new StringBuilder();
String date = new SimpleDateFormat("yyMMdd").format(new Date());
sb.append(date);
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/TaskOrderUtil.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/TaskOrderUtil.java
new file mode 100644
index 0000000..e66b74e
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/TaskOrderUtil.java
@@ -0,0 +1,76 @@
+package com.sandu.ximon.admin.utils;
+
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.StrUtil;
+import com.sandu.ximon.admin.dto.SingleLightOrderDto;
+import com.sandu.ximon.dao.enums.WeekEnums;
+import org.quartz.DateBuilder;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/15 18:06
+ * 浠诲姟鍛戒护宸ュ叿绫�
+ */
+public class TaskOrderUtil {
+
+ public static SingleLightOrderDto parseLightOrder(String lightOrder) {
+ if (StrUtil.length(lightOrder) != 6) {
+ return null;
+ }
+ SingleLightOrderDto singleLightOrderDto = new SingleLightOrderDto();
+ singleLightOrderDto.setHour(NumberUtil.parseInt(lightOrder.substring(0, 2)));
+ singleLightOrderDto.setMinute(NumberUtil.parseInt(lightOrder.substring(2, 4)));
+ singleLightOrderDto.setBrightness(NumberUtil.parseInt(lightOrder.substring(4, 6)));
+ return singleLightOrderDto;
+ }
+
+ public static Integer[] parseLightWeek(Integer week) {
+ if (week == null) {
+ return null;
+ }
+ List<Integer> list = new ArrayList<>();
+ if((WeekEnums.SUNDAY.getCode() & week) > 0){
+ list.add(DateBuilder.SUNDAY);
+ }
+ if((WeekEnums.MONDAY.getCode() & week) > 0){
+ list.add(DateBuilder.MONDAY);
+ }
+ if((WeekEnums.TUESDAY.getCode() & week) > 0){
+ list.add(DateBuilder.TUESDAY);
+ }
+ if((WeekEnums.WEDNESDAY.getCode() & week) > 0){
+ list.add(DateBuilder.WEDNESDAY);
+ }
+ if((WeekEnums.THURSDAY.getCode() & week) > 0){
+ list.add(DateBuilder.THURSDAY);
+ }
+ if((WeekEnums.FRIDAY.getCode() & week) > 0){
+ list.add(DateBuilder.FRIDAY);
+ }
+ if((WeekEnums.SATURDAY.getCode() & week) > 0){
+ list.add(DateBuilder.SATURDAY);
+ }
+ return list.toArray(new Integer[0]);
+ }
+
+ /**
+ * 鏍规嵁缁欏畾鐨勬椂鍒嗗懆鐢熸垚cron
+ * @param hour 鏃�
+ * @param minute 鍒�
+ * @param daysOfWeek 1琛ㄧず鐨勬槸鏄熸湡鏃ワ紝7琛ㄧず鐨勬槦鏈熷叚
+ * @return cron
+ */
+ public static String getHourAndMinuteOnGivenDaysOfWeek(int hour, int minute, Integer... daysOfWeek) {
+ StringBuilder cronExpression = new StringBuilder(String.format("0 %d %d ? * %d", minute, hour,
+ daysOfWeek[0]));
+
+ for (int i = 1; i < daysOfWeek.length; i++) {
+ cronExpression.append(",").append(daysOfWeek[i]);
+ }
+ return cronExpression.toString();
+ }
+}
diff --git a/ximon-admin/src/test/java/com/sandu/ximon/admin/AdminApplicationTests.java b/ximon-admin/src/test/java/com/sandu/ximon/admin/AdminApplicationTests.java
index a85696a..a0e14ef 100644
--- a/ximon-admin/src/test/java/com/sandu/ximon/admin/AdminApplicationTests.java
+++ b/ximon-admin/src/test/java/com/sandu/ximon/admin/AdminApplicationTests.java
@@ -1,6 +1,9 @@
package com.sandu.ximon.admin;
+import com.sandu.ximon.admin.service.PoleService;
import org.junit.jupiter.api.Test;
+import org.quartz.*;
+import org.quartz.impl.StdSchedulerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.crypto.password.PasswordEncoder;
@@ -8,12 +11,24 @@
@SpringBootTest
class AdminApplicationTests {
- @Autowired
- private PasswordEncoder passwordEncoder;
- @Test
- void contextLoads() {
- System.out.println(passwordEncoder.encode("666666"));
- }
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+ @Autowired
+ private PoleService poleService;
+ @Test
+ void contextLoads() {
+ System.out.println(passwordEncoder.encode("666666"));
+ }
+
+ @Test
+ void poleService() {
+ System.out.println(poleService.generatePoleCode());
+ }
+
+ public static void main(String[] args) {
+
+
+ }
}
--
Gitblit v1.9.3