zoukankan      html  css  js  c++  java
  • selleck --手机端-- 销售打卡记录下载

    1. check-in-log.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
    <html lang="cmn">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="shortcut icon" href="<c:url value="/favicon.ico"/>">
        <title>Excel</title>
        <%@include file="include-libs.jsp"%>
    </head>
    <body>
    <jsp:include page="header.jsp">
        <jsp:param name="path" value="check-in-log"/>
    </jsp:include>
    <div id="url"
        data-download="<spring:url value="/admin/mobile/check-in-log/excel"/>">
    </div>
    <div class="container">
        <form class="form-horizontal">
            <div class="form-group">
                <p class="col-md-1 control-label">Date</p>
                <div class="col-md-2">
                    <input class="form-control" id="dateFrom" data-bind="value: dateFrom" readonly>
                </div>
                <div class="col-md-2">
                    <input class="form-control" id="dateTo" data-bind="value: dateTo" readonly>
                </div>
                <div class="col-md-3">
                    <button type="button" class="btn btn-primary" data-bind="click: download">Download</button>
                </div>
            </div>
            <div class="form-group">
            </div>
        </form>
    </div>
    <script src="<c:url value="/resources/app/wechat/excel.min.js"/>"></script>
    </body>
    </html>
    

     2. MobileAdminController.groovy

        @RequestMapping('check-in-log/excel')
        def downloadExcel(String dateFrom, String dateTo, HttpServletResponse response) {
            def dateFormat = new SimpleDateFormat('yyyy-M-d')
            def dateDateFrom = null
            def dateDateTo = null
            if (StringUtils.isNotBlank(dateFrom)) {
                dateDateFrom = dateFormat.parse(dateFrom)
            }
            if (StringUtils.isNotBlank(dateTo)) {
                dateDateTo = dateFormat.parse(dateTo)
            }
            def list = mobileService.listCheckInLog(dateDateFrom, dateDateTo)
            def workbook = new XSSFWorkbook()
            def sheet = workbook.createSheet()
            def row = sheet.createRow(0)
            def c = 0
            row.createCell(c++).cellValue = 'username'
            row.createCell(c++).cellValue = 'display_name'
            row.createCell(c++).cellValue = 'date'
            row.createCell(c++).cellValue = 'check_in'
            row.createCell(c++).cellValue = 'check_out'
            for (int i = 0; i < list.size(); i++) {
                Object[] val = list.get(i)
                row = sheet.createRow(i + 1)
                c = 0
                row.createCell(c++).setCellValue(val[0].toString())
                row.createCell(c++).setCellValue((String) val[1])
                row.createCell(c++).setCellValue((String) val[2])
                row.createCell(c++).setCellValue((String) val[3])
                row.createCell(c++).setCellValue((String) val[4])
            }
            response.setHeader('Content-Disposition', 'attachment;filename=check-in-log_' + dateFrom + '_' + dateTo + '.xlsx')
            response.setContentType('application/vnd.ms-excel')
            def buffer = new ByteArrayOutputStream()
            workbook.write(buffer)
            def bytes = buffer.toByteArray()
            response.setContentLength(bytes.length)
            response.getOutputStream().write(bytes)
        }
    

     3. MobileServiceImpl

        public List<Object[]> listCheckInLog(Date dateFrom, Date dateTo) {
            Map<String, Object> params = new HashMap<>();
            StringBuilder sql = new StringBuilder();
            sql.append("select u.username, u.display_name, date_format(c.created_at, '%Y-%m-%d') date")
                    .append("
     , date_format(min(c.created_at), '%H:%i:%S') check_in")
                    .append("
     , date_format(max(c.created_at), '%H:%i:%S') check_out")
                    .append("
     from user u")
                    .append("
     join mobile_check_in_image c on c.user=u.id")
                    .append("
     where ifnull(view_english,0)=0 and ifnull(if_resign,0)=0 and role='sales' and ifnull(locked,0)=0");
            if (dateFrom != null) {
                sql.append("
     and c.created_at >= :dateFrom");
                params.put("dateFrom", dateFrom);
            }
            if (dateTo != null) {
                DateTime date = new DateTime(dateTo.getTime());
                date = date.plusDays(1).withTimeAtStartOfDay();
                sql.append("
     and c.created_at < :dateTo");
                params.put("dateTo", date.toDate());
            }
            sql.append("
     group by u.username, u.display_name, date_format(c.created_at, '%y-%m-%d')")
                    .append("
     order by 1, 2");
            Query query = entityManager.createNativeQuery(sql.toString());
            params.forEach(query::setParameter);
            return (List<Object[]>) query.getResultList();
        }
    

     4.附录

    /*
    Date todayTime = new DateTime().withTimeAtStartOfDay().toDate();//今天凌晨
    Date tomorrowTime = new DateTime().plusDays(1).withTimeAtStartOfDay().toDate();//明日凌晨
    Date theWeekStartTime = new DateTime().minusDays(new DateTime().getDayOfWeek()-1).withTimeAtStartOfDay().toDate();//本周开始时间
    Date theWeekEndTime = new DateTime().plusDays(8-new DateTime().getDayOfWeek()).withTimeAtStartOfDay().toDate();//本周结束时间
    Date theMonthStartTime = new DateTime().minusDays(new DateTime().getDayOfMonth()-1).withTimeAtStartOfDay().toDate();//本月开始时间
    Date theMonthEndTime = new DateTime().minusDays(new DateTime().getDayOfMonth()-1).plusMonths(1).withTimeAtStartOfDay().toDate();//本月结束时间
    */
    
  • 相关阅读:
    PHP做Web开发的MVC框架(Smarty使用说明 )
    PHP + Smarty + MySQL
    PHP中smarty与MYSQL数据库的连接
    linux上安装phpstudy
    ThinkPHP使用smarty模板引擎的方法
    smarty 模板几个例子(变量调节器)
    Smarty的基本使用与总结
    gcd 控制线程执行顺序(供参考)
    手动实现 NSTabViewController 的 Rect Transition 及 Propagate Title-b
    Mac、Linux与Windows
  • 原文地址:https://www.cnblogs.com/bravolove/p/5973735.html
Copyright © 2011-2022 走看看