package com.java110.job.Api; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.java110.core.factory.GenerateCodeFactory; import com.java110.job.dao.IHcFtpFileDAO; import com.java110.job.smo.DownloadFileFromFtpToTable; import com.java110.job.task.HcFtpToFileSystemJob; import org.apache.commons.validator.GenericValidator; import org.apache.commons.validator.util.ValidatorUtils; import org.quartz.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; /** * * @author wuxw7 add by 20170103 * shiyj update by 2019.08.29 * */ @Service public class HcFtpToFileSystemConfigAction { private static final Logger logger = LoggerFactory.getLogger(HcFtpToFileSystemConfigAction.class); 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"; private static final String RUNFLAG_STOP = "0"; @Autowired private IHcFtpFileDAO iHcFtpFileDAO; @Autowired private Scheduler scheduler; // 每页数据条数 private static int pageSize = 20; public JSONObject resultMsg; /** * */ private static final long serialVersionUID = 1L; private DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); /** * 查询配置的需要下载任务的列表 * * @return */ public JSONObject queryFtpItems(HttpServletRequest request) { String curPage = request.getParameter("curPage"); curPage = curPage == null || "".equals(curPage) ? "1" : curPage; // 查询在用状态时的下载任务列表 Map info = new HashMap(); info.put("curPage", (Integer.parseInt(curPage)-1)*pageSize); info.put("pageSize", pageSize*Integer.parseInt(curPage)); Map resultInfo = iHcFtpFileDAO.queryFtpItems(info); // 获取总数据数 int dataCount = resultInfo.get("ITEMSCOUNT") == null ? 0 : Integer.parseInt(resultInfo.get("ITEMSCOUNT").toString()); // 计算页数 if (dataCount % pageSize == 0) { dataCount /= pageSize; } else { dataCount = dataCount / pageSize + 1; } // 获取数据 List ftpItems = resultInfo.get("DATA") == null ? null : (List) resultInfo.get("DATA"); // {"total":10,"rows":[{},{}]} JSONObject data = new JSONObject(); data.put("total", dataCount); data.put("currentPage", curPage); if (ftpItems != null && ftpItems.size() > 0) { JSONArray rows = new JSONArray(); for (int itemIndex = 0; itemIndex < ftpItems.size(); itemIndex++) { // 处理时间显示和界面显示传输类型 Map ftpItemMap = ftpItems.get(itemIndex); 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(ftpItems.get(itemIndex)))); } data.put("rows", rows); resultMsg = data; return data; } data.put("rows", "[]"); resultMsg = data; return data; } /** * 增加Ftp配置 * * @return */ public JSONObject addFtpItem(HttpServletRequest request) { // 请求参数 String ftpItemJson = request.getParameter("ftpItemJson"); JSONObject ftpItemJsonObj = null; try { // 校验格式是否正确 ftpItemJsonObj = JSONObject.parseObject(ftpItemJson); } catch (Exception e) { logger.error("传入参数格式不正确:" + ftpItemJson, e); resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson, ""); return resultMsg; } // 将ftpItemJson装为Map保存操作 Map paramIn = JSONObject.parseObject(ftpItemJsonObj.getJSONObject("taskInfo").toJSONString(), Map.class); // 数据规范性校验 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 resultMsg; } String dealClass = dealClassObj.toString(); String taskId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_HCJOBId); // 保存数据 paramIn.put("taskId", taskId); paramIn.put("dealClass", dealClass); int addFtpItemFlag = iHcFtpFileDAO.addFtpItem(paramIn); if (addFtpItemFlag > 0) { // #taskId#,#itemSpecId#,#value# // 保存属性信息 JSONArray taskAttrs = ftpItemJsonObj.getJSONArray("taskAttrs"); List taskAttrsList = new ArrayList(); for (int taskAttrIndex = 0; taskAttrIndex < taskAttrs.size(); taskAttrIndex++) { JSONObject taskAttr = taskAttrs.getJSONObject(taskAttrIndex); Map taskAttrMap = new HashMap(); taskAttrMap.put("taskId", taskId); taskAttrMap.put("itemSpecId", taskAttr.get("itemSpecId")); taskAttrMap.put("value", taskAttr.get("value")); taskAttrsList.add(taskAttrMap); } int addFtpItemAttrFlag = iHcFtpFileDAO.addFtpItemAttrs(taskAttrsList); if (addFtpItemAttrFlag > 0) { resultMsg = this.createResultMsg("0000", "成功", ftpItemJson); } else { resultMsg = this.createResultMsg("1999", "保存属性失败", ""); } return resultMsg; } resultMsg = this.createResultMsg("1999", "保存数据失败", ""); return resultMsg; } /** * 编辑Ftp配置,编辑时将会修改所有的ftpItem 信息,所以传递是所有字段需要传递全 * * @return */ public JSONObject editFtpItem(HttpServletRequest request) { // 请求参数为{"taskId":"12","taskName":"经办人照片同步处理","ftpUserName":"weblogic",.....} String ftpItemJson = request.getParameter("ftpItemJson"); JSONObject ftpItemJsonObj = null; try { // 校验格式是否正确 ftpItemJsonObj = JSONObject.parseObject(ftpItemJson); } catch (Exception e) { logger.error("传入参数格式不正确:" + ftpItemJson, e); resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson, ""); return resultMsg; } // 将ftpItemJson装为Map保存操作 Map paramIn = JSONObject.parseObject(ftpItemJsonObj.getJSONObject("taskInfo").toJSONString(), Map.class); 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 resultMsg; } String dealClass = dealClassObj.toString(); paramIn.put("dealClass", dealClass); // 根据taskId 查询记录是否存在,如果不存在直接返回失败 Map ftpItem = iHcFtpFileDAO.queryFtpItemByTaskId(paramIn); // 判断是否有对应的数据 if (ftpItem != null && ftpItem.containsKey("TASKID")) { // 更新数据 int updateFtpItemFlag = iHcFtpFileDAO.updateFtpItemByTaskId(paramIn); if (updateFtpItemFlag > 0) { // 首先先删除 iHcFtpFileDAO.deleteFtpItemAttrsbyTaskId(paramIn); // 保存属性信息 JSONArray taskAttrs = ftpItemJsonObj.getJSONArray("taskAttrs"); List taskAttrsList = new ArrayList(); for (int taskAttrIndex = 0; taskAttrIndex < taskAttrs.size(); taskAttrIndex++) { JSONObject taskAttr = taskAttrs.getJSONObject(taskAttrIndex); Map taskAttrMap = new HashMap(); taskAttrMap.put("taskId", paramIn.get("taskId")); taskAttrMap.put("itemSpecId", taskAttr.get("itemSpecId")); taskAttrMap.put("value", taskAttr.get("value")); taskAttrsList.add(taskAttrMap); } int addFtpItemAttrFlag = iHcFtpFileDAO.addFtpItemAttrs(taskAttrsList); if (addFtpItemAttrFlag > 0) { resultMsg = this.createResultMsg("0000", "成功", ftpItemJson); } else { resultMsg = this.createResultMsg("1999", "更新属性失败", ""); } return resultMsg; } resultMsg = this.createResultMsg("1999", "修改的数据不存在或修改失败", ""); return resultMsg; } resultMsg = this.createResultMsg("1999", "未找到对应的数据更新失败【" + paramIn.get("taskId") + "】", ""); return resultMsg; } /** * 删除ftp配置 * * @return */ public JSONObject deleteFtpItem(HttpServletRequest request) { // 请求参数为{"tasks":[{"taskId":1},{"taskId":2}],"state":"DELETE"} String ftpItemJson = request.getParameter("ftpItemJson"); if (logger.isDebugEnabled()) { logger.debug("---【PrvncFtpToFileSystemConfigAction.deleteFtpItem】入参为:" + ftpItemJson, ftpItemJson); } JSONObject paramIn = null; try { // 校验格式是否正确 paramIn = JSONObject.parseObject(ftpItemJson); } catch (Exception e) { logger.error("传入参数格式不正确:" + ftpItemJson, e); resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson + e, ""); return resultMsg; } // 传入报文不为空 if (paramIn == null || !paramIn.containsKey("tasks") || !paramIn.containsKey("state")) { resultMsg = createResultMsg("1999", "传入参数格式不正确(必须包含tasks 和 state节点):" + ftpItemJson, ""); return resultMsg; } // 校验当前是否为启动侦听 if (!"DELETE".equals(paramIn.get("state"))) { resultMsg = createResultMsg("1999", "传入参数格式不正确(state的值必须是DELETE):" + ftpItemJson, ""); return resultMsg; } // 查询需要操作的任务 JSONArray taskInfos = paramIn.getJSONArray("tasks"); String taskIds = ""; for (int taskIndex = 0; taskIndex < taskInfos.size(); taskIndex++) { taskIds += (taskInfos.getJSONObject(taskIndex).getString("taskId") + ","); } if (taskIds.length() > 0) { taskIds = taskIds.substring(0, taskIds.length() - 1); } // 将ftpItemJson装为Map保存操作 Map paramInfo = new HashMap(); paramInfo.put("taskIds", taskIds.split(",")); // 更新数据 int updateFtpItemFlag = iHcFtpFileDAO.deleteFtpItemByTaskId(paramInfo); if (updateFtpItemFlag > 0) { resultMsg = this.createResultMsg("0000", "成功", ftpItemJson); return resultMsg; } resultMsg = this.createResultMsg("1999", "删除数据已经不存在,或删除失败", ""); return resultMsg; } /** * 根据taskId 获取 ftp配置信息 * * @return */ public String queryFtpItemByTaskId(HttpServletRequest request) { // 请求参数为{"taskId":"12"} String ftpItemJson = request.getParameter("ftpItemJson"); if (logger.isDebugEnabled()) { logger.debug("---【PrvncFtpToFileSystemConfigAction.queryFtpItemByTaskId】入参为:" + ftpItemJson, ftpItemJson); } try { // 校验格式是否正确 JSONObject.parseObject(ftpItemJson); } catch (Exception e) { logger.error("传入参数格式不正确:" + ftpItemJson, e); resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson, ""); return "queryFtpItemByTaskId"; } // 将ftpItemJson装为Map保存操作 Map paramIn = JSONObject.parseObject(ftpItemJson, Map.class); // 根据taskId 查询记录是否存在,如果不存在直接返回失败 Map ftpItem = iHcFtpFileDAO.queryFtpItemByTaskId(paramIn); // 判断是否有对应的数据 if (ftpItem != null && ftpItem.containsKey("TASKID")) { // 更新数据 this.createResultMsg("0000", "成功", JSONObject.toJSONString(ftpItem)); return "queryFtpItemByTaskId"; } resultMsg = this.createResultMsg("1999", "删除数据已经不存在,或删除失败", ""); return "queryFtpItemByTaskId"; } /** * 查询任务模板 ftpItemJson:{'uOrD':'U'} * * @return */ public JSONObject questTaskTample(HttpServletRequest request) { // 请求参数为{"taskId":"12"} String ftpItemJson = request.getParameter("ftpItemJson"); if (logger.isDebugEnabled()) { logger.debug("---【PrvncFtpToFileSystemConfigAction.queryFtpItemByTaskId】入参为:" + ftpItemJson, ftpItemJson); } JSONObject paramIn = null; try { // 校验格式是否正确 paramIn = JSONObject.parseObject(ftpItemJson); } catch (Exception e) { logger.error("传入参数格式不正确:" + ftpItemJson, e); resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson, ""); return resultMsg; } String tample = paramIn.getString("uOrD"); Map info = new HashMap(); info.put("domain", tample); List itemSpecs = iHcFtpFileDAO.queryItemSpec(info); String taskItems = JSONObject.toJSONString(itemSpecs); resultMsg = this.createResultMsg("0000", "成功", "{\"U_OR_D\":\"" + tample + "\",\"TASK_ITEMS\":" + taskItems + "}"); return resultMsg; } /** * 根据TaskId 获取任务属性 * * @return */ public JSONObject queryTaskAttrs(HttpServletRequest request) { // 请求参数为{"taskId":"12"} String ftpItemJson = request.getParameter("ftpItemJson"); if (logger.isDebugEnabled()) { logger.debug("---【PrvncFtpToFileSystemConfigAction.queryTaskAttrs】入参为:" + ftpItemJson, ftpItemJson); } JSONObject paramIn = null; try { // 校验格式是否正确 paramIn = JSONObject.parseObject(ftpItemJson); } catch (Exception e) { logger.error("传入参数格式不正确:" + ftpItemJson, e); resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson, ""); return resultMsg; } long taskId = paramIn.getLong("taskId"); Map info = new HashMap(); info.put("taskId", taskId); List itemAttrs = iHcFtpFileDAO.queryFtpItemAttrsByTaskId(info); String itemsAttrs = JSONObject.toJSONString(itemAttrs); resultMsg = this.createResultMsg("0000", "成功", "{\"TASK_ATTRS\":" + itemsAttrs + "}"); return resultMsg; } /** * 启动侦听(多节点启动) * * @return */ public JSONObject startJob(HttpServletRequest request) { // 请求参数为{"tasks":[{"taskId":1},{"taskId":2}],"state":"START"} String ftpItemJson = request.getParameter("ftpItemJson"); if (logger.isDebugEnabled()) { logger.debug("---【PrvncFtpToFileSystemConfigAction.startJob】入参为:" + ftpItemJson, ftpItemJson); } JSONObject paramIn = null; try { // 校验格式是否正确 paramIn = JSONObject.parseObject(ftpItemJson); } catch (Exception e) { logger.error("传入参数格式不正确:" + ftpItemJson, e); resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson, ""); return resultMsg; } // 传入报文不为空 if (paramIn == null || !paramIn.containsKey("tasks") || !paramIn.containsKey("state")) { resultMsg = createResultMsg("1999", "传入参数格式不正确(必须包含tasks 和 state节点):" + ftpItemJson, ""); return resultMsg; } // 校验当前是否为启动侦听 if (!"START".equals(paramIn.get("state"))) { resultMsg = createResultMsg("1999", "传入参数格式不正确(state的值必须是START):" + ftpItemJson, ""); return resultMsg; } // 查询需要操作的任务 JSONArray taskInfos = paramIn.getJSONArray("tasks"); String taskIds = ""; for (int taskIndex = 0; taskIndex < taskInfos.size(); taskIndex++) { taskIds += (taskInfos.getJSONObject(taskIndex).getString("taskId") + ","); } if (taskIds.length() > 0) { taskIds = taskIds.substring(0, taskIds.length() - 1); } Map info = new HashMap(); info.put("taskIds", taskIds.split(",")); List doFtpItems = iHcFtpFileDAO.queryFtpItemsByTaskIds(info); int linstenCount = 0; int updateTaskStateFailCount = 0; try { for (int doIndex = 0; doIndex < doFtpItems.size(); doIndex++) { Map doFtpItem = doFtpItems.get(doIndex); // 侦听运行状态 String runState = doFtpItem.get("RUN_STATE") == null ? "1" : doFtpItem.get("RUN_STATE").toString();// 如果为空,为了操作正常,默认为1,也就是启动状态,在后面再关闭一次 // 获取taskId String taskId = doFtpItem.get("TASKID").toString();// 这个就不用三目判断了,因为如果为空,则直接抛出异常,正常情况下不会出现空的情况 // 获取定时时间 String cronExpression = doFtpItem.get("TASKCRON") == null ? defaultCronExpression : doFtpItem.get("TASKCRON").toString();// 如果没有配置则,每一分运行一次 // 设置触发时间点 CronScheduleBuilder cronScheduleBuilder =CronScheduleBuilder.cronSchedule(cronExpression); String jobName = prefixJobName + taskId; String triggerName = triggerNames + taskId; //设置任务名称 JobKey jobKey = new JobKey(jobName,HcFtpToFileSystemJob.JOB_GROUP_NAME); JobDetail jobDetail = scheduler.getJobDetail(jobKey); if (jobDetail == null) { // 任务名称 String taskCfgName = (String) doFtpItem.get("TASKNAME"); //构建job信息 JobDetail warnJob = JobBuilder.newJob(HcFtpToFileSystemJob.class).withIdentity(jobName, HcFtpToFileSystemJob.JOB_GROUP_NAME).withDescription("任务启动").build(); warnJob.getJobDataMap().put(HcFtpToFileSystemJob.JOB_DATA_CONFIG_NAME, taskCfgName); warnJob.getJobDataMap().put(HcFtpToFileSystemJob.JOB_DATA_TASK_ID, taskId); // 触发时间点 CronTrigger warnTrigger = TriggerBuilder.newTrigger().withIdentity(triggerName, triggerName+"_group").withSchedule(cronScheduleBuilder).build(); // 错过执行后,立即执行 //warnTrigger(CronTrigger.MISFIRE_INSTRUCTION_FIRE_ONCE_NOW); //交由Scheduler安排触发 scheduler.scheduleJob(warnJob, warnTrigger); // 修改数据状态,将任务数据状态改为运行状态 Map updateTaskInfo = new HashMap(); updateTaskInfo.put("taskId", taskId); updateTaskInfo.put("runFlag", RUNFLAG_START); // 这里更新状态没有成功的,只是在后台打印日志,再前台不进行展示 int updateTaskStateFlag = iHcFtpFileDAO.updateFtpItemByTaskId(updateTaskInfo); if (updateTaskStateFlag < 1) { logger.error("---侦听【" + taskId + "】启动成功,但是更新任务状态失败,请关注!!!", info); updateTaskStateFailCount++; } } linstenCount++; } String resultMsgStr = "侦听启动成功,启动目标侦听个数为【" + doFtpItems.size() + "】,成功启动个数为【" + linstenCount + "】"; if (updateTaskStateFailCount > 0) { resultMsgStr += (",有【" + updateTaskStateFailCount + "】任务启动成功,更新数据失败"); } resultMsg = this.createResultMsg("0000", resultMsgStr, taskIds); } catch (Exception e) { // TODO Auto-generated catch block logger.error("调度器启动出错:" + ftpItemJson, e); resultMsg = createResultMsg("1999", "调度器启动出错:" + e, ""); return resultMsg; } if (logger.isDebugEnabled()) { logger.debug("---【PrvncFtpToFileSystemConfigAction.startJob】出参为:" + resultMsg, resultMsg); } return resultMsg; } /** * 停止侦听 * * @return */ public JSONObject stopJob(HttpServletRequest request) { // 请求参数为{"tasks":[{"taskId":1},{"taskId":2}],"state":"STOP"} String ftpItemJson = request.getParameter("ftpItemJson"); if (logger.isDebugEnabled()) { logger.debug("---【PrvncFtpToFileSystemConfigAction.stopJob】入参为:" + ftpItemJson, ftpItemJson); } JSONObject paramIn = null; try { // 校验格式是否正确 paramIn = JSONObject.parseObject(ftpItemJson); } catch (Exception e) { logger.error("传入参数格式不正确:" + ftpItemJson, e); resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson, ""); return resultMsg; } // 传入报文不为空 if (paramIn == null || !paramIn.containsKey("tasks") || !paramIn.containsKey("state")) { resultMsg = createResultMsg("1999", "传入参数格式不正确(必须包含tasks 和 state节点):" + ftpItemJson, ""); return resultMsg; } // 校验当前是否为启动侦听 if (!"STOP".equals(paramIn.get("state"))) { resultMsg = createResultMsg("1999", "传入参数格式不正确(state的值必须是START):" + ftpItemJson, ""); return resultMsg; } // 查询需要操作的任务 JSONArray taskInfos = paramIn.getJSONArray("tasks"); String taskIds = ""; for (int taskIndex = 0; taskIndex < taskInfos.size(); taskIndex++) { taskIds += (taskInfos.getJSONObject(taskIndex).getString("taskId") + ","); } if (taskIds.length() > 0) { taskIds = taskIds.substring(0, taskIds.length() - 1); } Map info = new HashMap(); info.put("taskIds", taskIds.split(",")); List doFtpItems = iHcFtpFileDAO.queryFtpItemsByTaskIds(info); int linstenCount = 0; int updateTaskStateFailCount = 0; try { for (Map doFtpItem : doFtpItems) { // 获取taskId String taskId = doFtpItem.get("TASKID").toString();// 这个就不用三目判断了,因为如果为空,则直接抛出异常,正常情况下不会出现空的情况 // 获取定时时间 String cronExpression = doFtpItem.get("TASKCRON") == null ? defaultCronExpression : doFtpItem.get("TASKCRON").toString();// 如果没有配置则,每一分运行一次 String jobName = prefixJobName + taskId; String triggerName = prefixJobName + taskId; TriggerKey triggerKey = TriggerKey.triggerKey(jobName, HcFtpToFileSystemJob.JOB_GROUP_NAME); // 停止触发器 scheduler.pauseTrigger(triggerKey); // 移除触发器 scheduler.unscheduleJob(triggerKey); JobKey jobKey = new JobKey(jobName, HcFtpToFileSystemJob.JOB_GROUP_NAME); // 删除任务 scheduler.deleteJob(jobKey); // 修改数据状态,将任务数据状态改为运行状态 Map updateTaskInfo = new HashMap(); updateTaskInfo.put("taskId", taskId); updateTaskInfo.put("runFlag", RUNFLAG_STOP); // 这里更新状态没有成功的,只是在后台打印日志,再前台不进行展示 int updateTaskStateFlag = iHcFtpFileDAO.updateFtpItemByTaskId(updateTaskInfo); if (updateTaskStateFlag < 1) { logger.error("---侦听【" + taskId + "】停止成功,但是更新任务状态失败,请关注!!!", info); updateTaskStateFailCount++; } linstenCount++; String resultMsgStr = "侦听停止成功,停止目标侦听个数为【" + doFtpItems.size() + "】,成功停止个数为【" + linstenCount + "】"; if (updateTaskStateFailCount > 0) { resultMsgStr += (",有【" + updateTaskStateFailCount + "】任务停止成功,更新数据失败"); } resultMsg = this.createResultMsg("0000", resultMsgStr, taskIds); } } catch (Exception e) { // TODO Auto-generated catch block logger.error("调度器停止出错:" + ftpItemJson, e); resultMsg = createResultMsg("1999", "调度器停止出错:" + e, ""); return resultMsg; } if (logger.isDebugEnabled()) { logger.debug("---【PrvncFtpToFileSystemConfigAction.startJob】出参为:" + resultMsg, resultMsg); } return resultMsg; } /** * 根据任务名称或任务ID模糊查询 * * @return */ public String searchTaskByNameOrId(HttpServletRequest request) { String ftpItemJson = request.getParameter("ftpItemJson"); JSONObject ftpItemJsonObj = null; try { // 校验格式是否正确 // {"taskName":"经办人照片同步处理"} ftpItemJsonObj = JSONObject.parseObject(ftpItemJson); } catch (Exception e) { logger.error("传入参数格式不正确:" + ftpItemJson, e); resultMsg = createResultMsg("1999", "传入参数格式不正确:" + ftpItemJson, ""); return "addFtpItem"; } // 将ftpItemJson装为Map保存操作 Map paramIn = JSONObject.parseObject(ftpItemJsonObj.toJSONString(), Map.class); String taskNameOrTaskId = paramIn.get("taskName") == null ? "1" : paramIn.get("taskName").toString(); taskNameOrTaskId = ValidatorUtils.getValueAsString(paramIn, "taskName"); // 规则校验 JSONObject data = new JSONObject(); data.put("total", 1); // 搜索不进行分页处理 data.put("currentPage", 1); List ftpItems = null; // 说明是taskId if (GenericValidator.isInt(taskNameOrTaskId) || GenericValidator.isLong(taskNameOrTaskId)) { // 根据taskId 查询记录 paramIn.put("taskId", taskNameOrTaskId); Map ftpItem = iHcFtpFileDAO.queryFtpItemByTaskId(paramIn); if (ftpItem != null && ftpItem.containsKey("FTP_ITEM_ATTRS")) { ftpItem.remove("FTP_ITEM_ATTRS");// 前台暂时用不到,所以这里将属性移除 ftpItems = new ArrayList(); ftpItems.add(ftpItem); } } else { ftpItems = iHcFtpFileDAO.searchFtpItemByTaskName(paramIn); } JSONArray rows = new JSONArray(); if (ftpItems != null && ftpItems.size() > 0) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); for (Map ftpItemMap : ftpItems) { // 处理时间显示和界面显示传输类型 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))); } } data.put("rows", rows); resultMsg = data; return "searchTaskByNameOrId"; } /** * 创建公用输出 * * @return */ private JSONObject createResultMsg(String resultCode, String resultMsg, String resultInfo) { JSONObject data = new JSONObject(); data.put("RESULT_CODE", resultCode); data.put("RESULT_MSG", resultMsg); data.put("RESULT_INFO", resultInfo); return data; } }