class QuartzJob extends QuartzJobBean implements Job {
    @Autowired
    private JobsService jobsService;
    @Autowired
    private TestSuitesService testSuitesService;
    @Autowired
    private ResultsService resultsService;
    @Autowired
    private FolderFeignClient folderFeignClient;

    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) {<FILL_FUNCTION_BODY>}
}

        JobDataMap dataMap = jobExecutionContext.getJobDetail().getJobDataMap();
        int type = dataMap.getInt("type");
        switch (type) {
            case JobType.TEST_JOB -> {
                Jobs jobs = jobsService.findById(dataMap.getInt("id"));
                if (jobs != null) {
                    RespModel<Integer> r;
                    try {
                        r = testSuitesService.runSuite(jobs.getSuiteId(), "SYSTEM");
                    } catch (Throwable e) {
                        log.info(e.fillInStackTrace().toString());
                        return;
                    }
                    if (r.getCode() == 3001) {
                        log.info("Test suite " + jobs.getSuiteId() + " deleted. " + r);
                        jobsService.delete(dataMap.getInt("id"));
                    } else {
                        log.info("Job start: Test suite " + jobs.getSuiteId() + " " + r);
                    }
                } else {
                    log.info("Job id :" + dataMap.getInt("id") + " not found! ");
                }
            }
            case JobType.CLEAN_FILE_JOB -> {
                int day = Math.abs((int) ((jobExecutionContext.getNextFireTime().getTime() -
                        new Date().getTime()) / (1000 * 3600 * 24))) + 1;
                RespModel<String> r = folderFeignClient.delete(day);
                log.info("Clear file job..." + r);
            }
            case JobType.CLEAN_RESULT_JOB -> {
                int day = Math.abs((int) ((jobExecutionContext.getNextFireTime().getTime() -
                        new Date().getTime()) / (1000 * 3600 * 24))) + 1;
                resultsService.clean(day);
                log.info("Clean result job...");
            }
            case JobType.SEND_DAY_REPORT -> {
                resultsService.sendDayReport();
                log.info("Send day report...");
            }
            case JobType.SEND_WEEK_REPORT -> {
                resultsService.sendWeekReport();
                log.info("Send week report...");
            }
        }
    
<no_super_class>