datagrid 生成动态列(二) 后台方法部分

/**加载页面*/
    @RequestMapping(value = "dwView", method = RequestMethod.GET)
    public String dwView(HttpServletRequest request,
            HttpServletResponse response) {
        return "dwView";
    }  

/**
     * 表头年份处理
     */
    @SuppressWarnings({ "deprecation" })
    @ResponseBody
    @RequestMapping(value = "/getYearHead", method = RequestMethod.POST, produces = { "text/plain;charset=UTF-8" })
    public String getYearHead(HttpServletRequest request) {
        /** 获取查询时间 */
        String startTime = request.getParameter("startTime");
        String endTime = request.getParameter("endTime");
        Date startDate = DateUtil.stringToDate(startTime,
                DateUtil.DATE_FORMAT_MONTH);
        Date endDate = DateUtil.stringToDate(endTime,
                DateUtil.DATE_FORMAT_MONTH);
        Integer startYear = startDate.getYear() + 1900;
        Integer endYear = endDate.getYear() + 1900;
        /** 获取年份表头 */
        List<ColumnVO> list = new ArrayList<ColumnVO>();
        for (int i = startYear; i <= endYear; i++) {
            ColumnVO vo = new ColumnVO();
            vo.setTitle(String.valueOf(i));
            if (startYear.intValue() == endYear.intValue()) {// 同一年合并列处理
                int startMonth = startDate.getMonth() + 1;
                int endMonth = endDate.getMonth() + 1;
                vo.setColspan(endMonth - startMonth + 1);
            } else if (i == startYear) {// 起始月是合并列处理
                vo.setColspan(12 - startDate.getMonth());
            } else if (i == endYear) {// 结束年合并列处理
                vo.setColspan(endDate.getMonth() + 1);
            } else {// 中间年份合并列处理
                vo.setColspan(12);
            }
            list.add(vo);
        }
        ColumnVO[] array1 = list.toArray(new ColumnVO[list.size()]);
        return JSON.toJSONString(array1);
    }

    /**
     * 获取月份
     */
    @ResponseBody
    @RequestMapping(value = "/getMonthHead", method = RequestMethod.POST, produces = { "text/plain;charset=UTF-8" })
    public String getMonthHead(HttpServletRequest request) {
        /** 获取查询时间 */
        String startTime = request.getParameter("startTime");
        String endTime = request.getParameter("endTime");
        String type = request.getParameter("type");
        Date startDate = DateUtil.stringToDate(startTime,
                DateUtil.DATE_FORMAT_MONTH);
        Date endDate = DateUtil.stringToDate(endTime,
                DateUtil.DATE_FORMAT_MONTH);
        List<ColumnVO> list = procMonth(startDate, endDate);
        ColumnVO[] array1 = list.toArray(new ColumnVO[list.size()]);
        if ("0".equals(type)) {
            return StringUtil.removeHistoryId(JSON.toJSONString(array1),
                    "title");
        } else {
            return StringUtil.removeHistoryId(JSON.toJSONString(array1),
                    new String[] { "field", "id" });
        }
    }

    /**
     * 表头月份处理
     */
    @SuppressWarnings("deprecation")
    public List<ColumnVO> procMonth(Date startDate, Date endDate) {
        List<ColumnVO> list = new ArrayList<ColumnVO>();
        Integer startYear = startDate.getYear() + 1900;
        Integer endYear = endDate.getYear() + 1900;
        for (int i = startYear; i <= endYear; i++) {
            if (startYear.intValue() == endYear.intValue()) {
                int startMonth = startDate.getMonth() + 1;
                int endMonth = endDate.getMonth() + 1;
                for (int m = startMonth; m <= endMonth; m++) {
                    ColumnVO vo = createColumnVo(i, m);
                    list.add(vo);
                }
            } else if (i == startYear) {
                int startMonth = startDate.getMonth() + 1;
                for (int k = startMonth; k <= 12; k++) {
                    ColumnVO vo = createColumnVo(i, k);
                    list.add(vo);
                }
            } else if (i == endYear) {
                int endMonth = endDate.getMonth() + 1;
                for (int n = 1; n <= endMonth; n++) {
                    ColumnVO vo = createColumnVo(i, n);
                    list.add(vo);
                }
            } else {
                for (int j = 1; j <= 12; j++) {
                    ColumnVO vo = createColumnVo(i, j);
                    list.add(vo);
                }
            }
        }
        return list;
    }

    /**
     * 创建新列
     */
    public ColumnVO createColumnVo(Integer year, Integer month) {
        ColumnVO column = new ColumnVO();
        column.setId("del_" + String.valueOf(year) + String.valueOf(month));
        column.setTitle(String.valueOf(month));
        column.setField(String.valueOf(year) + String.valueOf(month));
        column.setRowspan(1);
        column.setWidth(50);
        return column;
    }

posted @ 2017-06-16 16:14  albert_think  阅读(174)  评论(0编辑  收藏  举报