shiyj
2019-09-09 37575a4531124ac9c3413f4ed58b60b588d1e908
JOB测试 功能以完成 使用业务模板时有问题 调试中
1个文件已删除
12个文件已修改
1 文件已重命名
1个文件已添加
285 ■■■■ 已修改文件
JobService/src/main/java/com/java110/job/Api/HcFtpToFileSystemConfigAction.java 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/java/com/java110/job/common/CustomizedPropertyPlaceholderConfigurer.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/java/com/java110/job/controller/JobController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/java/com/java110/job/dao/impl/HcFtpFileDAOImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/java/com/java110/job/smo/DownloadFileFromFtpToTable.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/java/com/java110/job/smo/HcFtpToFileSystemQuartz.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/java/com/java110/job/smo/JobFuLeiQuartz.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/java/com/java110/job/smo/impl/HcFtpFileBMOImpl.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/java/com/java110/job/smo/impl/HcFtpFileSMOImpl.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/java/com/java110/job/task/HcFtpToFileSystemJob.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/java/com/java110/job/util/FTPClientTemplate.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/resources/application-dev.yml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/resources/static/js/HcFtpToFileSystemConfigList.js 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/factory/GenerateCodeFactory.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/job/IHcFtpFileDAO.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
JobService/src/main/java/com/java110/job/Api/HcFtpToFileSystemConfigAction.java
@@ -2,9 +2,7 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.util.SpringBeanInvoker;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.job.common.CustomizedPropertyPlaceholderConfigurer;
import com.java110.job.dao.IHcFtpFileDAO;
import com.java110.job.smo.DownloadFileFromFtpToTable;
import com.java110.job.task.HcFtpToFileSystemJob;
@@ -22,7 +20,6 @@
import java.util.*;
/**
 * 将ftp上的文件保存到支持的文件系统
 *
 * @author wuxw7 add by 20170103
 *            shiyj update by 2019.08.29
@@ -36,6 +33,7 @@
    private static final String defaultCronExpression = "0 * * * * ?";// 每分钟执行一次
    private static final String prefixJobName = "HcFtpToSystem_"; // job
    private static final String triggerNames = "HcFtpToData_"; // job
    // 名称前缀,防止和其他的job名称产生冲突
    private static final String RUNFLAG_START = "1";
@@ -134,9 +132,9 @@
        // 数据规范性校验
        Object dealClassObj = null;
        // 在prvncCrm.properties 文件中获取对应处理类
        //目前写死他
        if ("DT".equals(paramIn.get("uOrD").toString())) {
             dealClassObj = DownloadFileFromFtpToTable.class;
             dealClassObj = "downloadFileFromFtpToTable";
        }else{
            resultMsg = this.createResultMsg("1999", "对应模板不存在,请联系管理员", "");
            return resultMsg;
@@ -185,7 +183,7 @@
     *
     * @return
     */
    public String editFtpItem(HttpServletRequest request) {
    public JSONObject editFtpItem(HttpServletRequest request) {
        // 请求参数为{"taskId":"12","taskName":"经办人照片同步处理","ftpUserName":"weblogic",.....}
        String ftpItemJson = request.getParameter("ftpItemJson");
@@ -196,18 +194,25 @@
        } catch (Exception e) {
            logger.error("传入参数格式不正确:" + ftpItemJson, e);
            resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson, "");
            return "editFtpItem";
            return resultMsg;
        }
        // 将ftpItemJson装为Map保存操作
        Map paramIn = JSONObject.parseObject(ftpItemJsonObj.getJSONObject("taskInfo").toJSONString(), Map.class);
        // 在prvncCrm.properties 文件中获取对应处理类
        Object dealClassObj = CustomizedPropertyPlaceholderConfigurer.getContextProperty("task.deal.class." + paramIn.get("uOrD"));
        Object dealClassObj = null;
        //目前写死他
        if ("DT".equals(paramIn.get("uOrD").toString())) {
            dealClassObj = "downloadFileFromFtpToTable";
        }else{
            resultMsg = this.createResultMsg("1999", "对应模板不存在,请联系管理员", "");
            return resultMsg;
        }
        // Object dealClassObj = "provInner.DownloadFileFromFtpToTFS";
        if (dealClassObj == null) {
            resultMsg = this.createResultMsg("1999", "对应模板不存在,请联系管理员", "");
            return "editFtpItem";
            return resultMsg;
        }
        String dealClass = dealClassObj.toString();
@@ -239,13 +244,13 @@
                } else {
                    resultMsg = this.createResultMsg("1999", "更新属性失败", "");
                }
                return "editFtpItem";
                return resultMsg;
            }
            resultMsg = this.createResultMsg("1999", "修改的数据不存在或修改失败", "");
            return "editFtpItem";
            return resultMsg;
        }
        resultMsg = this.createResultMsg("1999", "未找到对应的数据更新失败【" + paramIn.get("taskId") + "】", "");
        return "editFtpItem";
        return resultMsg;
    }
    /**
@@ -253,7 +258,7 @@
     *
     * @return
     */
    public String deleteFtpItem(HttpServletRequest request) {
    public JSONObject deleteFtpItem(HttpServletRequest request) {
        // 请求参数为{"tasks":[{"taskId":1},{"taskId":2}],"state":"DELETE"}
        String ftpItemJson = request.getParameter("ftpItemJson");
@@ -269,21 +274,21 @@
        } catch (Exception e) {
            logger.error("传入参数格式不正确:" + ftpItemJson, e);
            resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson + e, "");
            return "deleteFtpItem";
            return resultMsg;
        }
        // 传入报文不为空
        if (paramIn == null || !paramIn.containsKey("tasks") || !paramIn.containsKey("state")) {
            resultMsg = createResultMsg("1999", "传入参数格式不正确(必须包含tasks 和  state节点):" + ftpItemJson, "");
            return "deleteFtpItem";
            return resultMsg;
        }
        // 校验当前是否为启动侦听
        if (!"DELETE".equals(paramIn.get("state"))) {
            resultMsg = createResultMsg("1999", "传入参数格式不正确(state的值必须是DELETE):" + ftpItemJson, "");
            return "deleteFtpItem";
            return resultMsg;
        }
        // 查询需要操作的任务
@@ -304,12 +309,12 @@
        int updateFtpItemFlag = iHcFtpFileDAO.deleteFtpItemByTaskId(paramInfo);
        if (updateFtpItemFlag > 0) {
            resultMsg = this.createResultMsg("0000", "成功", ftpItemJson);
            return "deleteFtpItem";
            return resultMsg;
        }
        resultMsg = this.createResultMsg("1999", "删除数据已经不存在,或删除失败", "");
        return "deleteFtpItem";
        return resultMsg;
    }
    /**
@@ -425,7 +430,7 @@
     *
     * @return
     */
    public String startJob(HttpServletRequest request) {
    public JSONObject startJob(HttpServletRequest request) {
        // 请求参数为{"tasks":[{"taskId":1},{"taskId":2}],"state":"START"}
        String ftpItemJson = request.getParameter("ftpItemJson");
@@ -439,21 +444,21 @@
        } catch (Exception e) {
            logger.error("传入参数格式不正确:" + ftpItemJson, e);
            resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson, "");
            return "startJob";
            return resultMsg;
        }
        // 传入报文不为空
        if (paramIn == null || !paramIn.containsKey("tasks") || !paramIn.containsKey("state")) {
            resultMsg = createResultMsg("1999", "传入参数格式不正确(必须包含tasks 和  state节点):" + ftpItemJson, "");
            return "startJob";
            return resultMsg;
        }
        // 校验当前是否为启动侦听
        if (!"START".equals(paramIn.get("state"))) {
            resultMsg = createResultMsg("1999", "传入参数格式不正确(state的值必须是START):" + ftpItemJson, "");
            return "startJob";
            return resultMsg;
        }
        // 查询需要操作的任务
@@ -475,8 +480,6 @@
        List<Map> doFtpItems = iHcFtpFileDAO.queryFtpItemsByTaskIds(info);
        // 获取Spring调度器
        Scheduler scheduler = (Scheduler) SpringBeanInvoker.getBean("schedulerFactoryBean");
        int linstenCount = 0;
        int updateTaskStateFailCount = 0;
        try {
@@ -496,11 +499,11 @@
                String jobName = prefixJobName + taskId;
                String triggerName = prefixJobName + taskId;
                String triggerName = triggerNames + taskId;
                //设置任务名称
                JobKey jobKey = new JobKey(jobName);
                JobDetail jobDetail = scheduler.getJobDetail(jobKey);                // 说明这个没有启动,则需要重新启动,如果启动着不做处理
                JobKey jobKey = new JobKey(jobName,HcFtpToFileSystemJob.JOB_GROUP_NAME);
                JobDetail jobDetail = scheduler.getJobDetail(jobKey);
                if (jobDetail == null) {
                    // 任务名称
@@ -513,7 +516,7 @@
                    warnJob.getJobDataMap().put(HcFtpToFileSystemJob.JOB_DATA_TASK_ID, taskId);
                    // 触发时间点
                    CronTrigger warnTrigger = TriggerBuilder.newTrigger().withIdentity(triggerName, triggerName).withSchedule(cronScheduleBuilder).build();
                    CronTrigger warnTrigger = TriggerBuilder.newTrigger().withIdentity(triggerName, triggerName+"_group").withSchedule(cronScheduleBuilder).build();
                    // 错过执行后,立即执行
                    //warnTrigger(CronTrigger.MISFIRE_INSTRUCTION_FIRE_ONCE_NOW);
@@ -545,13 +548,13 @@
            // TODO Auto-generated catch block
            logger.error("调度器启动出错:" + ftpItemJson, e);
            resultMsg = createResultMsg("1999", "调度器启动出错:" + e, "");
            return "startJob";
            return resultMsg;
        }
        if (logger.isDebugEnabled()) {
            logger.debug("---【PrvncFtpToFileSystemConfigAction.startJob】出参为:" + resultMsg, resultMsg);
        }
        return "startJob";
        return resultMsg;
    }
    /**
@@ -559,7 +562,7 @@
     *
     * @return
     */
    public String stopJob(HttpServletRequest request) {
    public JSONObject stopJob(HttpServletRequest request) {
        // 请求参数为{"tasks":[{"taskId":1},{"taskId":2}],"state":"STOP"}
        String ftpItemJson = request.getParameter("ftpItemJson");
@@ -573,21 +576,21 @@
        } catch (Exception e) {
            logger.error("传入参数格式不正确:" + ftpItemJson, e);
            resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson, "");
            return "stopJob";
            return resultMsg;
        }
        // 传入报文不为空
        if (paramIn == null || !paramIn.containsKey("tasks") || !paramIn.containsKey("state")) {
            resultMsg = createResultMsg("1999", "传入参数格式不正确(必须包含tasks 和  state节点):" + ftpItemJson, "");
            return "stopJob";
            return resultMsg;
        }
        // 校验当前是否为启动侦听
        if (!"STOP".equals(paramIn.get("state"))) {
            resultMsg = createResultMsg("1999", "传入参数格式不正确(state的值必须是START):" + ftpItemJson, "");
            return "stopJob";
            return resultMsg;
        }
        // 查询需要操作的任务
@@ -608,9 +611,6 @@
        info.put("taskIds", taskIds.split(","));
        List<Map> doFtpItems = iHcFtpFileDAO.queryFtpItemsByTaskIds(info);
        // 获取Spring调度器
        Scheduler scheduler = (Scheduler) SpringBeanInvoker.getBean("schedulerFactoryBean");
        int linstenCount = 0;
        int updateTaskStateFailCount = 0;
@@ -660,13 +660,13 @@
            // TODO Auto-generated catch block
            logger.error("调度器停止出错:" + ftpItemJson, e);
            resultMsg = createResultMsg("1999", "调度器停止出错:" + e, "");
            return "stopJob";
            return resultMsg;
        }
        if (logger.isDebugEnabled()) {
            logger.debug("---【PrvncFtpToFileSystemConfigAction.startJob】出参为:" + resultMsg, resultMsg);
        }
        return "stopJob";
        return resultMsg;
    }
    /**
@@ -721,7 +721,7 @@
            for (Map ftpItemMap : ftpItems) {
                // 处理时间显示和界面显示传输类型
                ftpItemMap.put("U_OR_D_NAME", CustomizedPropertyPlaceholderConfigurer.getContextProperty("task.tamplete.name." + ftpItemMap.get("U_OR_D")));// 暂且写死,最终还是读取配置
                ftpItemMap.put("U_OR_D_NAME", ftpItemMap.get("U_OR_D"));// 暂且写死,最终还是读取配置
                ftpItemMap.put("CREATE_DATE", df.format(ftpItemMap.get("CREATE_DATE")));// 暂且写死,最终还是读取配置
                rows.add(JSONObject.parseObject(JSONObject.toJSONString(ftpItemMap)));
            }
JobService/src/main/java/com/java110/job/common/CustomizedPropertyPlaceholderConfigurer.java
File was deleted
JobService/src/main/java/com/java110/job/controller/JobController.java
@@ -88,4 +88,52 @@
        return JSON.toJSONString();
    }
    /**
     * 根据TaskId 启动任务
     * @return
     */
    @RequestMapping(path = "/startJob")
    @ResponseBody
    public String startJob(HttpServletRequest request) {
        logger.debug("请求流程 {},{}", new StringBuffer("startJob  我看到请求了"), new Date());
        JSONObject JSON = ftpToFileSystemConfigAction.startJob(request);
        return JSON.toJSONString();
    }
    /**
     * 根据TaskId 停止任务
     * @return
     */
    @RequestMapping(path = "/stopJob")
    @ResponseBody
    public String stopJob(HttpServletRequest request) {
        logger.debug("请求流程 {},{}", new StringBuffer("stopJob  我看到请求了"), new Date());
        JSONObject JSON = ftpToFileSystemConfigAction.stopJob(request);
        return JSON.toJSONString();
    }
    /**
     * 根据TaskId 删除任务
     * @return
     */
    @RequestMapping(path = "/deleteFtpItem")
    @ResponseBody
    public String deleteFtpItem(HttpServletRequest request) {
        logger.debug("请求流程 {},{}", new StringBuffer("deleteFtpItem  我看到请求了"), new Date());
        JSONObject JSON = ftpToFileSystemConfigAction.deleteFtpItem(request);
        return JSON.toJSONString();
    }
    /**
     * 根据TaskId 删除任务
     * @return
     */
    @RequestMapping(path = "/editFtpItem")
    @ResponseBody
    public String editFtpItem(HttpServletRequest request) {
        logger.debug("请求流程 {},{}", new StringBuffer("editFtpItem  我看到请求了"), new Date());
        JSONObject JSON = ftpToFileSystemConfigAction.editFtpItem(request);
        return JSON.toJSONString();
    }
}
JobService/src/main/java/com/java110/job/dao/impl/HcFtpFileDAOImpl.java
@@ -11,7 +11,7 @@
import java.util.List;
import java.util.Map;
@Service("IHcFtpFileDAO")
@Service("hcFtpFileDAOImpl")
@Transactional
public class HcFtpFileDAOImpl extends BaseServiceDao implements IHcFtpFileDAO {
JobService/src/main/java/com/java110/job/smo/DownloadFileFromFtpToTable.java
@@ -4,6 +4,7 @@
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.RandomAccessFile;
@@ -16,12 +17,12 @@
import java.util.concurrent.ThreadPoolExecutor;
/**
 * 从Ftp文件系统下载文件内容存到对应配置的表中
 *
 * 
 *
 * @author wuxw7 2016-01-04
 * @author
 * 
 */
@Component
public class DownloadFileFromFtpToTable extends HcFtpToFileSystemQuartz {
    private static final String ITEM_SPEC_CD_10011 = "10011";// FTP地址
JobService/src/main/java/com/java110/job/smo/HcFtpToFileSystemQuartz.java
@@ -16,15 +16,11 @@
import java.util.*;
/**
 * Ftp定时任务执行类,所有的任务都在这里执行,主要为了ftp文件保存到文件系统,业务逻辑单独处理
 * 
 * 特别注意,事前过程调用是没有传递参数的,事后过程调用是需要传递一个param的参数,需要在子类process方法中写入,如果不需要传也要传个""过来,
 * 相应过程需要两个参数,一个是入参一个是出参
 *
 * @author wuxw7 add by 2016-01-03
 * @author
 * 
 */
public abstract class HcFtpToFileSystemQuartz {
public abstract class HcFtpToFileSystemQuartz implements JobFuLeiQuartz{
    protected static final Logger logger = LoggerFactory.getLogger(HcFtpToFileSystemQuartz.class);
    @Autowired
JobService/src/main/java/com/java110/job/smo/JobFuLeiQuartz.java
New file
@@ -0,0 +1,8 @@
package com.java110.job.smo;
import java.util.Map;
public interface JobFuLeiQuartz {
    void startFtpTask(Map ftpItemConfigInfo) throws Exception;
}
JobService/src/main/java/com/java110/job/smo/impl/HcFtpFileBMOImpl.java
File was renamed from JobService/src/main/java/com/java110/job/smo/impl/HcPrvncFtpFileBMOImpl.java
@@ -3,50 +3,51 @@
import com.java110.job.dao.IHcFtpFileDAO;
import com.java110.job.model.*;
import com.java110.job.smo.IHcFtpFileBMO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Map;
@Service("prvncFtpFileBMOImpl")
@Service("hcFtpFileBMOImpl")
@Transactional
public class HcPrvncFtpFileBMOImpl implements IHcFtpFileBMO {
    @Autowired
    private IHcFtpFileDAO iHcFtpFileDAO;
public class HcFtpFileBMOImpl implements IHcFtpFileBMO {
    @Resource(name = "hcFtpFileDAOImpl")
    private IHcFtpFileDAO hcFtpFileDAOImpl;
    @Override
    public long saveTaskRunLog(FtpTaskLog loginfo) {
        // TODO Auto-generated method stub
        return iHcFtpFileDAO.saveTaskRunLog(loginfo);
        return hcFtpFileDAOImpl.saveTaskRunLog(loginfo);
    }
    public void updateTaskRunLog(FtpTaskLog loginfo) {
        // TODO Auto-generated method stub
        iHcFtpFileDAO.updateTaskRunLog(loginfo);
        hcFtpFileDAOImpl.updateTaskRunLog(loginfo);
    }
    public int saveTaskRunDetailLog(FtpTaskLogDetail logdetail) {
        // TODO Auto-generated method stub
        return iHcFtpFileDAO.saveTaskRunDetailLog(logdetail);
        return hcFtpFileDAOImpl.saveTaskRunDetailLog(logdetail);
    }
    /**
     * 执行存过,处理任务执行前后的事情
     */
    public void saveDbFunction(String function){
        iHcFtpFileDAO.saveDbFunction(function);
        hcFtpFileDAOImpl.saveDbFunction(function);
    }
    /**
     * 执行存过(带参数),处理任务执行前后的事情
     */
    public void saveDbFunctionWithParam(Map info){
        iHcFtpFileDAO.saveDbFunctionWithParam(info);
        hcFtpFileDAOImpl.saveDbFunctionWithParam(info);
    }
    @Override
    public void insertFileData2Table(String insertSQL) {
        // TODO Auto-generated method stub
        iHcFtpFileDAO.insertFileData2Table(insertSQL);
        hcFtpFileDAOImpl.insertFileData2Table(insertSQL);
    }
    
}
JobService/src/main/java/com/java110/job/smo/impl/HcFtpFileSMOImpl.java
@@ -4,52 +4,53 @@
import com.java110.job.smo.IHcFtpFileBMO;
import com.java110.job.smo.IHcFtpFileSMO;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Map;
@Service("prvncFtpFileSMOImpl")
@Service("hcFtpFileSMOImpl")
@Transactional
public class HcFtpFileSMOImpl implements IHcFtpFileSMO {
    /** logger */  
    protected final Logger log= Logger.getLogger(getClass());
    @Autowired
    private IHcFtpFileBMO iPrvncFtpFileBMO;
    @Resource(name = "hcFtpFileBMOImpl")
    private IHcFtpFileBMO hcFtpFileBMOImpl;
    @Override
    public long saveTaskRunLog(FtpTaskLog loginfo) {
        // TODO Auto-generated method stub
        return iPrvncFtpFileBMO.saveTaskRunLog(loginfo);
        return hcFtpFileBMOImpl.saveTaskRunLog(loginfo);
    }
    public void updateTaskRunLog(FtpTaskLog loginfo) {
        // TODO Auto-generated method stub
        iPrvncFtpFileBMO.updateTaskRunLog(loginfo);
        hcFtpFileBMOImpl.updateTaskRunLog(loginfo);
    }
    @Override
    public int saveTaskRunDetailLog(FtpTaskLogDetail logdetail) {
        // TODO Auto-generated method stub
        return iPrvncFtpFileBMO.saveTaskRunDetailLog(logdetail);
        return hcFtpFileBMOImpl.saveTaskRunDetailLog(logdetail);
    }
    /**
     * 执行存过,处理任务执行前后的事情
     */
    public void saveDbFunction(String function){
        iPrvncFtpFileBMO.saveDbFunction(function);
        hcFtpFileBMOImpl.saveDbFunction(function);
    }
    /**
     * 执行存过(带参数),处理任务执行前后的事情
     */
    public void saveDbFunctionWithParam(Map info){
        iPrvncFtpFileBMO.saveDbFunctionWithParam(info);
        hcFtpFileBMOImpl.saveDbFunctionWithParam(info);
    }
    @Override
    public void insertFileData2Table(String insertSQL) {
        // TODO Auto-generated method stub
        iPrvncFtpFileBMO.insertFileData2Table(insertSQL);
        hcFtpFileBMOImpl.insertFileData2Table(insertSQL);
    }
}
JobService/src/main/java/com/java110/job/task/HcFtpToFileSystemJob.java
@@ -3,6 +3,7 @@
import com.java110.common.util.SpringBeanInvoker;
import com.java110.job.dao.IHcFtpFileDAO;
import com.java110.job.smo.HcFtpToFileSystemQuartz;
import com.java110.job.smo.JobFuLeiQuartz;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
@@ -15,9 +16,8 @@
/**
 * 将集团文件同步至本地支持的文件系统
 *
 * @author wuxw7
 * @author
 *
 */
@@ -30,8 +30,8 @@
    public static String JOB_GROUP_NAME = "ftpToFileSystemJobGroup"; // 任务的 分组名称
    @Autowired
    private IHcFtpFileDAO iHcFtpFileDAO;
    @Autowired
    private HcFtpToFileSystemQuartz hcFtpToFileSystemQuartz;
    private JobFuLeiQuartz jobFuLeiQuartz;
    protected void executeInternal(JobExecutionContext context) {
        try {
@@ -56,8 +56,8 @@
            }
            String dealClass = ftpItemConfigInfo.get("DEAL_CLASS").toString();
            hcFtpToFileSystemQuartz = (HcFtpToFileSystemQuartz) SpringBeanInvoker.getBean(dealClass);
            hcFtpToFileSystemQuartz.startFtpTask(ftpItemConfigInfo);
            jobFuLeiQuartz = (HcFtpToFileSystemQuartz) SpringBeanInvoker.getBean(dealClass);
            jobFuLeiQuartz.startFtpTask(ftpItemConfigInfo);
        } catch (Throwable ex) {
            logger.error("执行任务失败:", ex);
        }
JobService/src/main/java/com/java110/job/util/FTPClientTemplate.java
@@ -1,6 +1,5 @@
package com.java110.job.util;
import com.java110.common.util.SpringBeanInvoker;
import com.java110.job.dao.IHcFtpFileDAO;
import com.java110.job.model.FtpTaskLogDetail;
import com.java110.job.smo.IHcFtpFileSMO;
@@ -10,8 +9,8 @@
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import javax.annotation.Resource;
import java.io.*;
import java.net.SocketException;
import java.util.*;
@@ -47,10 +46,10 @@
    private String localfilename;                                            //本地保存的文件名
    private String transferflag;                                            //传输类型
    private Map threadpara;                                                //线程执行参数
    @Autowired
    private IHcFtpFileDAO iHcFtpFileDAO;
    @Autowired
    private IHcFtpFileSMO iHcFtpFileSMO;
    @Resource(name = "hcFtpFileDAOImpl")
    private IHcFtpFileDAO hcFtpFileDAOImpl;
    @Resource(name = "hcFtpFileSMOImpl")
    private IHcFtpFileSMO hcFtpFileSMOImpl;
    public static String SPECIAL_SINGLESPLIT_a="+*|";                                        //字符串分隔符特殊字符需要用加"\\"来转译
    //传输类型(“U"是上传      upload     ”D“是下载   download)
    public static class TransferType{
@@ -104,8 +103,7 @@
        init();
    }
    private void init(){
        this.iHcFtpFileDAO = ((IHcFtpFileDAO) SpringBeanInvoker.getBean("provInner.iHcFtpFileDAO"));
        this.iHcFtpFileSMO=((IHcFtpFileSMO) SpringBeanInvoker.getBean("provInner.iHcFtpFileSMO"));
    }
    public Map call() throws Exception {
        Map result=null;
@@ -500,7 +498,7 @@
            tablename=tablename.trim();
            tablename=tablename.substring(tablename.lastIndexOf(" "), tablename.length());
            //查字段的数据类型
            List<Map> collist=iHcFtpFileDAO.queryTableColInfo(tablename.trim(), colnames.trim());
            List<Map> collist=hcFtpFileDAOImpl.queryTableColInfo(tablename.trim(), colnames.trim());
            RandomAccessFile raf = new RandomAccessFile(localfilename, "r");
            long filelen=raf.length();
            if (filelen != 0L) {  
@@ -569,7 +567,7 @@
        logdetail.setRemark((String)threadpara.get("remark"));
        logdetail.setServerfilename((String)threadpara.get("serverfilename"));
        logdetail.setLocalfilename((String)threadpara.get("localfilename"));
        iHcFtpFileSMO.saveTaskRunDetailLog(logdetail);
        hcFtpFileSMOImpl.saveTaskRunDetailLog(logdetail);
    }
    public void saveStringToData(String data, String insertsql, String colnames, List<Map> collist){
        //拼接数据保存的SQL语句,日期型的值要格式化下
@@ -588,7 +586,7 @@
        }
        insertsql=getInsertTableSQL(colnames,collist,datarows,insertsql);
        //执行SQL语句,保存数据
        iHcFtpFileSMO.insertFileData2Table(insertsql);
        hcFtpFileSMOImpl.insertFileData2Table(insertsql);
    }
    /**
     * 拼接数据保存的SQL语句,日期型的值要格式化下
JobService/src/main/resources/application-dev.yml
@@ -6,6 +6,8 @@
      maxWaitMillis: 20000
    host: dev.redis.java110.com
    port: 6379
    timeout: 3000
    password:
eureka:
  instance:
JobService/src/main/resources/static/js/HcFtpToFileSystemConfigList.js
@@ -101,9 +101,9 @@
                   +"<td class='text-center'>"+taskCreateDate+"</td>"
                   +"<td class='text-center'>"+taskRunStateName+"</td>";
       if(taskRUNFlag == "1"){
                trStr += "<td class='text-center'><span class='glyphicon glyphicon-ok-sign task_run' ></span></td>";
                trStr += "<td class='text-center'><span class='glyphicon glyphicon-ok-sign task_run' >运行</span></td>";
       }else{
                trStr +=  "<td class='text-center'><span class='glyphicon glyphicon-remove-sign task_stop' ></span></td>"
                trStr +=  "<td class='text-center'><span class='glyphicon glyphicon-remove-sign task_stop' >停止</span></td>"
       }
       trStr = trStr
@@ -175,7 +175,7 @@
    // 请求处理
     $.ajax({
          type: 'POST',
          url: '../FtpToFileSystem_startJob.action',
          url: '/HcFtpToFileSystemConfigList/startJob',
          data: {
                ftpItemJson:requestParam
          },
@@ -248,7 +248,7 @@
       // 请求处理
        $.ajax({
             type: 'POST',
             url: '../FtpToFileSystem_stopJob.action',
             url: '/HcFtpToFileSystemConfigList/stopJob',
             data: {
                   ftpItemJson:requestParam
             },
@@ -318,7 +318,7 @@
        // 请求处理
         $.ajax({
              type: 'POST',
              url: '../FtpToFileSystem_deleteFtpItem.action',
              url: '/HcFtpToFileSystemConfigList/deleteFtpItem',
              data: {
                    ftpItemJson:requestParam
              },
@@ -589,7 +589,7 @@
    var taskId = -1;
    var url = "/HcFtpToFileSystemConfigList/addFtpItem";// 新增时的URL
    if(doType == 'Edit'){
        url = '../FtpToFileSystem_editFtpItem.action';// 编辑时的URL
        url = '/HcFtpToFileSystemConfigList/editFtpItem';// 编辑时的URL
        taskId = $('#taskId'+doType).val();
    }
    var taskAttrsInputs = $("div[name='taskAttrs"+doType+"'] input");
java110-core/src/main/java/com/java110/core/factory/GenerateCodeFactory.java
@@ -84,6 +84,8 @@
    public static final String CODE_PREFIX_HCJOBId="96";
    public static final String CODE_PREFIX_HCJOBLOCId="99";
    //BUSINESSTYPE
    public static final String CODE_PREFIX_id="99";
    public static final String CODE_PREFIX_service_id="98";
java110-db/src/main/resources/mapper/job/IHcFtpFileDAO.xml
@@ -201,7 +201,7 @@
            <!-- 修改ftp配置信息 -->
            <update id="updateFtpItemByTaskId" parameterType="Map">
                update hc_ftp_task sft
                set update_date = sysdate
                set update_date = SYSDATE()
                <if test="taskName !=null and taskName != ''">,sft.taskname = #{taskName}
                </if>
                <if test="fileName !=null and fileName != ''">,sft.file_name = #{fileName}