TaskController

package main.java.com.zte.controller.system;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import net.sf.json.JSONArray;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import main.java.com.zte.controller.base.BaseController;
import main.java.com.zte.entity.Page;
import main.java.com.zte.entity.Task;
import main.java.com.zte.entity.charts.Option;
import main.java.com.zte.entity.charts.Series;
import main.java.com.zte.service.TaskService;
import main.java.com.zte.util.AppUtil;
import main.java.com.zte.util.Const;
import main.java.com.zte.util.DateUtil;
import main.java.com.zte.util.FileUpload;
import main.java.com.zte.util.ObjectExcelView;
import main.java.com.zte.util.PageData;
import main.java.com.zte.util.PathUtil;
import main.java.com.zte.util.Tools;

/**
 * 任务Controller
 *
 * @author 10183302
 *
 */
@Controller
@RequestMapping(value = "/task")
public class TaskController extends BaseController {

    @Resource(name = "taskService")
    private TaskService taskService;

    /**
     * 显示任务列表
     *
     * @param model
     * @return
     */
    @RequestMapping(value = "/list")
    public ModelAndView list(Page page) throws Exception {
        ModelAndView mv = this.getModelAndView();
        PageData pd = new PageData();
        try {
            pd = this.getPageData();
            Subject currentUser = SecurityUtils.getSubject();
            Session session = currentUser.getSession();
            String userName = (String) session
                    .getAttribute(Const.SESSION_USERNAME); // 获取session中的用户名
            pd.put(Const.SESSION_USERNAME, userName);
            String keyw = pd.getString("keyword");
            if (Tools.notEmpty(keyw)) {
                keyw = keyw.trim();
                pd.put("keyw", keyw);
            }
            page.setPd(pd);
            List<PageData> taskList = taskService.listTaskPage(page);
            mv.addObject("taskList", taskList);
            mv.setViewName("task/task_list");
        } catch (Exception e) {
            logger.error(e.toString(), e);
        }
        return mv;
    }

    /**
     * 请求新增任务页面
     *
     * @param model
     * @return
     */
    @RequestMapping(value = "/toAdd")
    public ModelAndView toAdd() throws Exception {
        ModelAndView mv = this.getModelAndView();
        try {
            PageData pd = new PageData();
            pd = this.getPageData();
            String ffile = DateUtil.getDays();
            String filePath = PathUtil.getClasspath() + Const.FILEPATH_LOG
                    + ffile; // 文件上传路径
            Subject currentUser = SecurityUtils.getSubject();
            Session session = currentUser.getSession();
            String userName = (String) session
                    .getAttribute(Const.SESSION_USERNAME); // 获取session中的用户名
            String taskTime = DateUtil.getTime().toString();
            pd.put("taskId", this.get32UUID());
            pd.put("taskNumber", taskTime);
            pd.put("name", "分析任务" + Tools.date2Str(new Date()));
            pd.put("owner", userName);
            pd.put("time", Tools.date2Str(new Date()));
            pd.put("logPath", filePath);
            pd.put("logURL", filePath);
            pd.put("type", "离线任务"); // 状态
            pd.put("status", "待启动"); // 状态
            taskService.add(pd);
            mv.addObject("msg", "success");
        } catch (Exception e) {
            logger.error(e.toString(), e);
            mv.addObject("msg", "failed");
        }
        mv.setViewName("task/task_add");
        return mv;
    }

    /**
     * 新增
     */
    @RequestMapping(value = "/save")
    @ResponseBody
    public Object save(@RequestParam(required = false) MultipartFile file)
            throws Exception {
        logBefore(logger, "上传日志");
        PageData pd = new PageData();
        Map<String, String> map = new HashMap<String, String>();
        try {
            Subject currentUser = SecurityUtils.getSubject();
            Session session = currentUser.getSession();
            String userName = (String) session
                    .getAttribute(Const.SESSION_USERNAME); // 获取session中的用户名
            String ffile = DateUtil.getDays(), fileName = "", filePath = "";
            if (null != file && !file.isEmpty()) {
                filePath = PathUtil.getClasspath() + Const.FILEPATH_LOG + ffile; // 文件上传路径
                fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); // 执行上传
                System.out.println("文件名称:" + file.getName());
                System.out.println("文件路径:" + filePath);
            } else {
                System.out.println("上传失败");
            }
            pd.put("logId", this.get32UUID()); // 主键
            pd.put("taskNumber", getTaskNumber()); // 任务编号
            pd.put("userName", userName); // 上传者
            pd.put("fileName", fileName); // 文件名
            pd.put("filePath", filePath + "/" + fileName); // 路径
            pd.put("createTime", Tools.date2Str(new Date())); // 创建时间
            pd.put("remarks", ""); // 备注
            taskService.saveLogInfo(pd);
            map.put("result", "ok");
        } catch (Exception e) {
            logger.error(e.toString(), e);
        }
        return AppUtil.returnObject(pd, map);
    }

    public static String getTaskNumber() {
        int r1 = (int) (Math.random() * (10));// 产生2个0-9的随机数
        int r2 = (int) (Math.random() * (10));
        long now = System.currentTimeMillis();// 一个13位的时间戳
        String taskId = String.valueOf(now) + String.valueOf(r1)
                + String.valueOf(r2);// 任务ID
        return taskId;
    }

    public static void main(String[] args) {
        System.out.println(getTaskNumber());
    }

    /**
     * 保存任务信息
     *
     * @param menu
     * @param model
     * @return
     */
    @RequestMapping(value = "/add")
    public ModelAndView add(Task task) throws Exception {
        ModelAndView mv = this.getModelAndView();
        PageData pd = new PageData();
        pd = this.getPageData();
        Subject currentUser = SecurityUtils.getSubject();
        Session session = currentUser.getSession();
        String userName = (String) session.getAttribute(Const.SESSION_USERNAME); // 获取session中的用户名
        String taskName = pd.getString("taskName").trim();
        String taskTime = DateUtil.getTime().toString();
        try {
            pd.put("taskTime", taskTime);
            pd.put("taskStatus", "待启动"); // 状态
            // 目录格式:根目录/userName/taskName-时间
            pd.put("task_dir", Const.TASK_ROOT_DIR + userName + "/" + taskName
                    + "-" + taskTime);
            taskService.add(pd);
            mv.addObject("msg", "success");
        } catch (Exception e) {
            logger.error(e.toString(), e);
            mv.addObject("msg", "failed");
        }
        mv.setViewName("save_result");
        return mv;
    }

    /**
     * 请求编辑页面
     *
     * @param
     * @return
     */
    @RequestMapping(value = "/toEdit")
    public ModelAndView toEdit(String taskId) throws Exception {
        ModelAndView mv = this.getModelAndView();
        PageData pd = new PageData();
        try {
            pd = this.getPageData();
            pd.put("taskId", taskId);
            List<PageData> taskList = taskService.getTaskByTaskId(pd);
            mv.addObject("taskList", taskList);
            mv.addObject("pd", pd);
            mv.setViewName("task/task_edit");
        } catch (Exception e) {
            logger.error(e.toString(), e);
        }
        return mv;
    }

    /**
     * 保存编辑
     *
     * @param
     * @return
     */
    @RequestMapping(value = "/edit")
    public ModelAndView edit() throws Exception {
        ModelAndView mv = this.getModelAndView();
        PageData pd = new PageData();
        try {
            pd = this.getPageData();
            pd = taskService.edit(pd);
            mv.addObject("msg", "success");
        } catch (Exception e) {
            logger.error(e.toString(), e);
            mv.addObject("msg", "failed");
        }
        mv.setViewName("save_result");
        return mv;
    }

    /**
     * 获取任务分析结果
     *
     * @param
     * @return
     */
    @RequestMapping(value = "/reslut")
    public ModelAndView reslut(Page page, String taskId) throws Exception {
        ModelAndView mv = this.getModelAndView();
        PageData pd = new PageData();
        try {
            pd = this.getPageData();
            pd.put("taskId", taskId);
            page.setPd(pd);
            List<PageData> pmResults = taskService.listPmResult(page);
            mv.addObject("pmResults", pmResults);
            mv.addObject("pd", pd);
            if (!pmResults.isEmpty()) {
                mv.addObject("msg", "success");
            }
            mv.setViewName("pm/result_chart");
        } catch (Exception e) {
            logger.error(e.toString(), e);
        }
        return mv;
    }

    /**
     * 获取任务分析结果
     *
     * @param
     * @return
     */
    @RequestMapping(value = "/result_charts")
    @ResponseBody
    public String result_charts(Page page) throws Exception {
        Map<String, String> map = new HashMap<String, String>();
        PageData pd = new PageData();
        pd = this.getPageData();
        String taskId = pd.getString("taskId");
        JSONArray jsonArray = null;
        try {
            pd = this.getPageData();
            pd.put("taskId", taskId);
            page.setPd(pd);
            // List<PageData> pmResults = taskService.listPmResult(page);
            List<PageData> pmResultsForCharts = taskService
                    .listPmResultForCharts(page);
            List<Series> seriesList = new ArrayList<Series>();
            // 存放类别数据
            List<String> categoryList = new ArrayList<String>();

            // 存放所有
            Option options = new Option();

            if (!pmResultsForCharts.isEmpty()) {
                map.put("msg", "success");
                System.out.println("pmResultsForCharts"+pmResultsForCharts);

                int i=0;
                for (PageData pmResult : pmResultsForCharts) {
                    Series series = new Series();
                    System.out.println("pmResultsForCharts["+i+"]"+pmResult);
                    ++i;

                    String[] categorys = pmResult.getString("CATEGORY").trim().split(",");
                    for(String category:categorys){
                        if(!categoryList.contains(category.trim())){
                            categoryList.add(category.trim());
                        }
                    }

                    series.setName(pmResult.getString("NEID").trim());
                    series.setType("bar");

                    List<Double> datas = new ArrayList<Double>();
                    String[] pmDatas = pmResult.getString("DATAS").split(",");
                    for (String pmData : pmDatas) {
                        Double data = Double.valueOf(pmData.trim());
                        datas.add(data);
                    }
                    series.setData(datas);

                    System.out.println("series["+i+"]"+series);
                    seriesList.add(series);
                    System.out.println("seriesList["+i+"]"+seriesList);
                }

                options.setCategorys(categoryList);
                options.setSeries(seriesList);
                System.out.println("options:"+options);

                jsonArray = JSONArray.fromObject(options);
            }
        } catch (Exception e) {
            logger.error(e.toString(), e);
        }
        System.out.println("jsonObject:" + jsonArray);
        return jsonArray.toString();
    }

    /**
     * 获取任务分析结果
     *
     * @param
     * @return
     */
    @RequestMapping(value = "/echarts")
    @ResponseBody
    public String echarts(Page page) throws Exception {
        return null;
    }

    /**
     * 获取单个节点上报信息
     *
     * @param
     * @return
     */
    @RequestMapping(value = "/pm_detail")
    public ModelAndView pmDetail(Page page, String step) throws Exception {
        ModelAndView mv = this.getModelAndView();
        PageData pd = new PageData();
        try {
            pd = this.getPageData();
            String stepName = null;
            switch (step) {
            case "1":
                stepName = Const.RECEIVE_REPORT_MSG_TIME;
                break;
            case "2":
                stepName = Const.PROCESS_GET_FILE_TIME;
                break;
            case "3":
                stepName = Const.PROCESS_PARSE_TIME;
                break;
            case "5":
                stepName = Const.PROCESS_STORE_TIME;
                break;
            case "7":
                stepName = Const.PROCESS_FINISH_TIME;
                break;
            }

            pd.put("stepName", stepName);
            page.setPd(pd);
            List<PageData> poResultList = taskService.listPOResult(page);
            mv.addObject("poResultList", poResultList);
            mv.addObject("pd", pd);
            if (!poResultList.isEmpty()) {
                mv.addObject("msg", "success");
            }
            mv.setViewName("pm/po_charts");
        } catch (Exception e) {
            logger.error(e.toString(), e);
        }
        return mv;
    }

    /**
     * 删除任务
     *
     * @param task_id
     * @param out
     */
    @RequestMapping(value = "/delete")
    public void delete(@RequestParam String task_id, PrintWriter out)
            throws Exception {
        try {
            taskService.deleteByTaskId(task_id);
            out.write("success");
            out.flush();
            out.close();
        } catch (Exception e) {
            logger.error(e.toString(), e);
        }

    }

    /*
     * 导出到excel
     *
     * @return
     */
    @RequestMapping(value = "/excel")
    public ModelAndView exportExcel() {
        logBefore(logger, "导出Pictures到excel");
        ModelAndView mv = new ModelAndView();
        try {
            Map<String, Object> dataMap = new HashMap<String, Object>();
            List<String> titles = new ArrayList<String>();
            titles.add("编号"); // 1
            titles.add("任务名称"); // 2
            titles.add("创建人"); // 3
            titles.add("创建时间"); // 4
            titles.add("日志路径"); // 5
            titles.add("类型"); // 6
            titles.add("状态"); // 7
            dataMap.put("titles", titles);

            Subject currentUser = SecurityUtils.getSubject();
            Session session = currentUser.getSession();
            String userName = (String) session
                    .getAttribute(Const.SESSION_USERNAME); // 获取session中的用户名
            List<Task> taskList = taskService.listTaskByUname(userName);
            List<PageData> varList = new ArrayList<PageData>();

            for (int i = 0; i < taskList.size(); i++) {
                PageData vpd = new PageData();
                vpd.put("var1", taskList.get(i).getNumber()); // 1
                vpd.put("var2", taskList.get(i).getName()); // 2
                vpd.put("var3", taskList.get(i).getOwner()); // 3
                vpd.put("var4", taskList.get(i).getTime()); // 4
                vpd.put("var5", taskList.get(i).getLogPath()); // 5
                vpd.put("var6", taskList.get(i).getType()); // 6
                vpd.put("var7", taskList.get(i).getStatus()); // 7
                varList.add(vpd);
            }
            dataMap.put("varList", varList);
            ObjectExcelView erv = new ObjectExcelView();
            mv = new ModelAndView(erv, dataMap);
        } catch (Exception e) {
            logger.error(e.toString(), e);
        }
        return mv;
    }
}
时间: 2024-08-07 19:21:38

TaskController的相关文章

TaskController.java 20160712

package main.java.com.zte.controller.system; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import net.sf.json.JS

TaskController.java-20160611

package main.java.com.zte.controller.system; import java.io.PrintWriter;import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map; import javax.annotation.Resource; import net.sf.json.JSONA

Linux -&gt;&gt; UBuntu 14.04 LTE下安装Hadoop 1.2.1(集群分布式模式)

安装步骤: 1) JDK -- Hadoop是用Java写的,不安装Java虚拟机怎么运行Hadoop的程序: 2)创建专门用于运行和执行hadoop任务(比如map和reduce任务)的linux用户,就像windows下的服务账户,并且授权给他可以访问运行JDK目录权限,让他可以执行java虚拟机.这个账户最后用来运行bin\.start_all.sh启动hadoop的所有服务,那运行账户肯定是他了,他肯定要有足够的权限.再者,需要配置这个账户的个人环境变量,把Java虚拟机的主目录地址环境

spring boot 配置文件application

场景:在项目部署的过程中,对于spring boot的配置文件一直不很了解,直到项目出现一个莫名其妙的问题——工程classes中的配置文件被覆盖,程序启动总是报错! 1  配置文件的优先级 application.properties大家都不陌生,我们在开发的时候,经常使用它来配置一些可以手动修改而且不用编译的变量,这样的作用在于,打成war包或者jar用于生产环境时,我们可以手动修改环境变量而不用再重新编译. spring boo默认已经配置了很多环境变量,例如,tomcat的默认端口是80

编译Hadoop1.0.2历程和解决问题记录

1.安装eclipse3.6.2, 废止3.7, 这个有很多问题 2.安装eclipse插件ivy You can install Apache IvyDE plugins from the IvyDE update site:http://www.apache.org/dist/ant/ivyde/updatesite. First you have to configure Eclipse: add the IvyDE update site. In order to do it, foll

游戏开发手记:游戏逻辑模块组织及数据同步

这周工作主要分两部分,一是服务器这边的基础模块搭建,二是服务器与客户端通信模式以及数据同步等方案的协定和验证.总体来说进展不错. 服务器采用actor模式来构建,目前暂时把服务器上运行着的actor叫做service,每个service维护一个请求队列.一个goroutine不断取出请求并进行处理.一组负责处理消息的逻辑模块.游戏服务器里的每个玩家都是一个service,不隶属玩家的功能模块也作为service运行(如排行榜.聊天.公会),还有其他全局模块也作为独立的service运行(如玩家i

也说Autofac在MVC的简单实践:破解在Controller构造函数中的实例化 - winhu

相信大家对Autofac并不陌生,很多人都在使用.本文只是介绍一下本人在使用时的一点想法总结. 在使用一个框架时,肯定要去它的官网查阅一下.autofac的官网给出了一些经典的使用案例.如注册容器: var builder = new ContainerBuilder(); // Register individual components builder.RegisterInstance(new TaskRepository) .As<ITaskRepository>(); builder.

hadoop三个配置文件的参数含义说明core-site.xml,hdfs-site.xml,mapred-site.xml

配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知道这些配置文件有哪些配置可以生效,上网找的配置可能因为各个hadoop版本不同,导致无法生效.浏览更多的配置,有两个方法: 1.选择相应版本的hadoop,下载解压后,搜索*.xml,找到core-default.xml,hdfs-default.xml,mapred-default.xml,这些就是默认配置,可以参考这些配置的

Hadoop0.21.0部署安装以及mapreduce测试

鉴于hadoop的需要...但是并不限于此...有时候闲输入密码麻烦,也可以用这种办法从一个节点通过ssh进入另一个节点... 设要使master进入slave是免密码的,则可以在master(ip为192.168.169.9)中如下操作: 命令:ssh-keygen -t rsa  然后一路回车(该命令不需要进入特定目录) cd进入/root/.ssh/可以看见如下(橙色是新生成的) id_rsa  id_rsa.pub  known_hosts 然后用scp命令将id_rsa远程传输到sla