Переглянути джерело

refactor(SysJobController):定时任务日志改为根据配置确定是否保存

HMY 11 місяців тому
батько
коміт
bb295e9ef2

+ 5 - 5
framework/src/main/java/com/dcs/framework/config/SecurityConfig.java

@@ -113,11 +113,11 @@ public class SecurityConfig
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
                 requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
                     // 静态资源,可匿名访问
-                    .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
-                    .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
-                    .antMatchers("/webSocket/**", "/modbus/getDataTwinEquipmentValues").permitAll()
-                    // 除上面外的所有请求全部需要鉴权认证
-                    .anyRequest().authenticated();
+                        .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
+                        .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
+                        .antMatchers("/webSocket/**", "/modbus/getDataTwinEquipmentValues/**", "/datatwin/**").permitAll()
+                        // 除上面外的所有请求全部需要鉴权认证
+                        .anyRequest().authenticated();
             })
             // 添加Logout filter
             .logout(logout -> logout.logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler))

+ 13 - 0
quartz/src/main/java/com/dcs/quartz/controller/SysJobController.java

@@ -153,6 +153,19 @@ public class SysJobController extends BaseController
         return toAjax(jobService.changeStatus(newJob));
     }
 
+
+    /**
+     * 定时任务日志状态修改
+     */
+    @PreAuthorize("@ss.hasPermi('monitor:job:changeStatus')")
+    @Log(title = "定时任务", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeSaveLog")
+    public AjaxResult changeSaveLog(@RequestBody SysJob job) throws SchedulerException, TaskException {
+        SysJob newJob = jobService.selectJobById(job.getJobId());
+        newJob.setSaveLog(job.isSaveLog());
+        return toAjax(jobService.updateJob(newJob));
+    }
+
     /**
      * 定时任务立即执行一次
      */

+ 11 - 0
quartz/src/main/java/com/dcs/quartz/domain/SysJob.java

@@ -54,6 +54,17 @@ public class SysJob extends BaseEntity
     @Excel(name = "任务状态", readConverterExp = "0=正常,1=暂停")
     private String status;
 
+    /** 是否记录日志 */
+    private boolean saveLog;
+
+    public boolean isSaveLog() {
+        return saveLog;
+    }
+
+    public void setSaveLog(boolean saveLog) {
+        this.saveLog = saveLog;
+    }
+
     public Long getJobId()
     {
         return jobId;

+ 1 - 1
quartz/src/main/java/com/dcs/quartz/util/AbstractQuartzJob.java

@@ -94,7 +94,7 @@ public abstract class AbstractQuartzJob implements Job
         }
 
         // 写入数据库当中
-        SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog);
+        if (sysJob.isSaveLog()) SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog);
     }
 
     /**

+ 10 - 3
quartz/src/main/resources/mapper/quartz/SysJobMapper.xml

@@ -18,12 +18,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="updateBy"       column="update_by"       />
 		<result property="updateTime"     column="update_time"     />
 		<result property="remark"         column="remark"          />
+		<result property="saveLog"      column="save_log"      />
 	</resultMap>
-	
+
 	<sql id="selectJobVo">
-        select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark 
+		select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark, save_log
 		from sys_job
-    </sql>
+	</sql>
 	
 	<select id="selectJobList" parameterType="SysJob" resultMap="SysJobResult">
 		<include refid="selectJobVo"/>
@@ -40,6 +41,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="invokeTarget != null and invokeTarget != ''">
 				AND invoke_target like concat('%', #{invokeTarget}, '%')
 			</if>
+			<if test="saveLog != null and saveLog != ''">
+				AND save_log like concat('%', #{saveLog}, '%')
+			</if>
 		</where>
 	</select>
 	
@@ -75,6 +79,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			<if test="status !=null">status = #{status},</if>
  			<if test="remark != null and remark != ''">remark = #{remark},</if>
  			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+			<if test="saveLog != null and saveLog != ''">save_log = #{saveLog},</if>
  			update_time = sysdate()
  		</set>
  		where job_id = #{jobId}
@@ -92,6 +97,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			<if test="status != null and status != ''">status,</if>
  			<if test="remark != null and remark != ''">remark,</if>
  			<if test="createBy != null and createBy != ''">create_by,</if>
+			<if test="saveLog != null and saveLog != ''">save_log = #{saveLog},</if>
  			create_time
  		)values(
  			<if test="jobId != null and jobId != 0">#{jobId},</if>
@@ -104,6 +110,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			<if test="status != null and status != ''">#{status},</if>
  			<if test="remark != null and remark != ''">#{remark},</if>
  			<if test="createBy != null and createBy != ''">#{createBy},</if>
+			<if test="saveLog != null and saveLog != ''">save_log = #{saveLog},</if>
  			sysdate()
  		)
 	</insert>

+ 14 - 1
ui/src/api/monitor/job.js

@@ -68,4 +68,17 @@ export function runJob(jobId, jobGroup) {
     method: 'put',
     data: data
   })
-}
+}
+
+// 任务状态修改
+export function changeJobSaveLog(jobId, saveLog) {
+  const data = {
+    jobId,
+    saveLog
+  }
+  return request({
+    url: '/monitor/job/changeSaveLog',
+    method: 'put',
+    data: data
+  })
+}

+ 35 - 2
ui/src/views/monitor/job/index.vue

@@ -108,6 +108,16 @@
                ></el-switch>
             </template>
          </el-table-column>
+         <!-- <el-table-column label="启用日志" align="center">
+            <template #default="scope">
+               <el-switch
+                  v-model="scope.row.saveLog"
+                  :active-value="true"
+                  :inactive-value="false"
+                  @change="handleSaveLogChange(scope.row)"
+               ></el-switch>
+            </template>
+         </el-table-column> -->
          <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
             <template #default="scope">
                <el-tooltip content="修改" placement="top">
@@ -201,6 +211,17 @@
                      </el-radio-group>
                   </el-form-item>
                </el-col>
+               <el-col :span="24" v-if="form.jobId == undefined">
+                  <el-form-item label="日志">
+                     <el-radio-group v-model="form.saveLog">
+                        <el-radio
+                           v-for="dict in sys_job_log"
+                           :key="dict.value"
+                           :value="dict.value"
+                        >{{ dict.label }}</el-radio>
+                     </el-radio-group>
+                  </el-form-item>
+               </el-col>
                <el-col :span="12">
                   <el-form-item label="执行策略" prop="misfirePolicy">
                      <el-radio-group v-model="form.misfirePolicy">
@@ -285,11 +306,11 @@
 </template>
 
 <script setup name="Job">
-import { listJob, getJob, delJob, addJob, updateJob, runJob, changeJobStatus } from "@/api/monitor/job";
+import { listJob, getJob, delJob, addJob, updateJob, runJob, changeJobStatus, changeJobSaveLog } from "@/api/monitor/job";
 import Crontab from '@/components/Crontab'
 const router = useRouter();
 const { proxy } = getCurrentInstance();
-const { sys_job_group, sys_job_status } = proxy.useDict("sys_job_group", "sys_job_status");
+const { sys_job_group, sys_job_status, sys_job_log } = proxy.useDict("sys_job_group", "sys_job_status", "sys_job_log");
 
 const jobList = ref([]);
 const open = ref(false);
@@ -405,6 +426,18 @@ function handleStatusChange(row) {
     row.status = row.status === "0" ? "1" : "0";
   });
 }
+// 任务日志状态修改
+function handleSaveLogChange(row) {
+   console.log('row.saveLog, ', row.saveLog)
+  let text = row.saveLog ? "启用" : "停用";
+  proxy.$modal.confirm('确认要"' + text + '""' + row.jobName + '"任务日志吗?').then(function () {
+    return changeJobSaveLog(row.jobId, row.saveLog);
+  }).then(() => {
+    proxy.$modal.msgSuccess(text + "成功");
+  }).catch(function () {
+    row.saveLog = row.saveLog ? true : false;
+  });
+}
 
 /* 立即执行一次 */
 function handleRun(row) {