根據查詢條件導出Excel文件

一、GET方式請求

前端頁面:頁面要點擊按鈕導出函數;

    //導出excel
    function exportExcel() {
        window.location.href = "CenterChainTaskController/exportExcel?CENTERTASKCODE=" + $("#searchCENTERTASKCODE").val().trim() + "" +
            "&TASK_SOURCEID=" + $("#TASK_SOURCEID_SEARCH").val() + "&TASK_TYPEID=" + $("#TASK_TYPEID_SEARCH").val()+ "&TASK_CLASSIFYID=" + $("#TASK_CLASSIFYID_SEARCH").val()
            + "&OBJECT_NAME=" + $("#OBJECT_NAME_SEARCH").val()+ "&checkPoint=" + $("#checkPoint").val()
            + "&TASK_BEGINDATE=" + $("#TASK_BEGINDATE_SEARCH").val()+ "&TASK_ENDDATE=" + $("#TASK_ENDDATE_SEARCH").val()
            + "&STATUS=";
    }

後臺代碼:

 @RequestMapping(value = "exportExcel", method = RequestMethod.GET)
    public void exportExcel(HttpServletRequest request, HttpServletResponse response, CenterChainTask centerChainTask){
        String json = "";
        try {
            List<Object> attributeList = new ArrayList<Object>();
            StringBuffer listSQL = new StringBuffer(QL.SQL.CenterChainTask.COMMON.TASKLISTEXCEL);
            //動態拼接sql 條件查詢
            if(StringUtils.isNotBlank(centerChainTask.getCENTERTASKCODE())){
                listSQL.append(" and a.CENTERTASKCODE like ?");
                attributeList.add("%"+centerChainTask.getCENTERTASKCODE()+"%");
            }
            if (StringUtils.isNotBlank(centerChainTask.getTASK_SOURCEID())){
                listSQL.append(" and a.TASK_SOURCEID = ?");
                attributeList.add(centerChainTask.getTASK_SOURCEID());
            }
            if (StringUtils.isNotBlank(centerChainTask.getTASK_TYPEID())){
                listSQL.append(" and a.TASK_TYPEID = ?");
                attributeList.add(centerChainTask.getTASK_TYPEID());
            }
            if (StringUtils.isNotBlank(centerChainTask.getTASK_CLASSIFYID())){
                listSQL.append(" and a.TASK_CLASSIFYID = ?");
                attributeList.add(centerChainTask.getTASK_CLASSIFYID());
            }
            if (centerChainTask.getTASK_BEGINDATE()!=null && centerChainTask.getTASK_ENDDATE()!=null){
                listSQL.append(" and a.TASK_BEGINDATE = ?");
                attributeList.add(centerChainTask.getTASK_BEGINDATE());
            }
            if (centerChainTask.getTASK_ENDDATE()!=null){
                listSQL.append(" and a.TASK_ENDDATE = ?");
                attributeList.add(centerChainTask.getTASK_BEGINDATE());
            }
            if (StringUtils.isNotBlank(centerChainTask.getOBJECT_NAME())){
                listSQL.append(" and instr(a.OBJECT_NAME,?) > 0");
                attributeList.add(centerChainTask.getOBJECT_NAME());
            }
            if (StringUtils.isNotBlank(centerChainTask.getSTATUS())){
                listSQL.append(" and a.STATUS = ?");
                attributeList.add(centerChainTask.getSTATUS());
            }
            if (StringUtils.isBlank(centerChainTask.getSTATUS())){
                listSQL.append(" and a.STATUS in ('0','1','2','3','4','5','6')");
            }
            listSQL.append(" order by a.create_date desc ");
            List<CenterChainTask> list = iCenterChainTaskServices.getListBySql(listSQL.toString(), attributeList,CenterChainTask.class);
            LinkedHashMap<String,String> fieldMap = new LinkedHashMap<String, String>();
            fieldMap.put("CENTERTASKCODE","任務單號");
            fieldMap.put("TASK_SOURCENAME","任務來源");
            fieldMap.put("TASK_TYPENAME","任務類型");
            fieldMap.put("TASK_CLASSIFYNAME","任務類別");
            fieldMap.put("OBJECT_NAME","交辦對象");
            fieldMap.put("TASK_BEGINDATE","任務開始時間");
            fieldMap.put("TASK_ENDDATE","任務結束時間");
            fieldMap.put("STATUS","狀態");
            ExcelUtils.listToExcel(list,fieldMap,"聯動中心任務統計",list.size()+2,response);
        } catch (ExcelException e) {
            this.print(e.getMessage(),response);
            e.printStackTrace();
        }
    }

sql語句中轉換狀態爲中文,不然導出的文件狀態值是數字:

public static final String TASKLISTEXCEL = "select GUID,CENTERTASKCODE,TASK_SOURCEID,TASK_SOURCENAME,TASK_TYPEID,TASK_TYPENAME,TASK_CLASSIFYID,TASK_CLASSIFYNAME,TASK_BEGINDATE," +
                        "TASK_ENDDATE,OBJECTTYPE,OBJECT_ID,OBJECT_NAME,TASK_CONTENT,ASSIGN_OPINION,ATTACHMENT,CASE STATUS WHEN '0' THEN '待派遣' WHEN '1' THEN '待簽收' WHEN '2' THEN '處理中' WHEN '3' THEN '已處置'" +
                        "WHEN '4' THEN '已回覆' WHEN '5' THEN '已辦結' WHEN '6' THEN '重新派遣' ELSE '已作廢' END AS STATUS, AFFIRM_USERID,AFFIRM_USERNAME,AFFIRM_DATE,CREATE_DATE,CREATE_USERID,CREATE_USERNAME,UPDATE_DATE,UPDATE_USERID,UPDATE_USERNAME from T_TASK_CENTER a where 1=1 ";

二、post方式請求

如果後臺要用到當前用戶的數據,要用post方式,get請求無法攜帶token之類的信息;

前段頁面:

 //導出excel
    function exportExcel() {
        var $eleForm = $("<form method='post'></form>");
        $eleForm.attr("action","/SubChainCenterTaskController/exportExcel");
        $(document.body).append($eleForm);
        $eleForm.append('<input type="text" name="CENTERTASKCODE" value="'+$("#searchCENTERTASKCODE").val().trim()+'">');
        $eleForm.append('<input type="text" name="TASK_SOURCEID" value="'+$("#TASK_SOURCEID_SEARCH").val()+'">');
        $eleForm.append('<input type="text" name="TASK_TYPEID" value="'+$("#TASK_TYPEID_SEARCH").val()+'">');
        $eleForm.append('<input type="text" name="TASK_CLASSIFYID" value="'+$("#TASK_CLASSIFYID_SEARCH").val()+'">');
        $eleForm.append('<input type="text" name="OBJECT_NAME" value="'+$("#OBJECT_NAME_SEARCH").val()+'">');
        $eleForm.append('<input type="text" name="checkPoint" value="'+$("#checkPoint").val()+'">');
        $eleForm.append('<input type="text" name="TASK_BEGINDATE" value="'+$("#TASK_BEGINDATE_SEARCH").val()+'">');
        $eleForm.append('<input type="text" name="TASK_ENDDATE" value="'+$("#TASK_ENDDATE_SEARCH").val()+'">');
        $eleForm.append('<input type="text" name="STATUS" value="">');
        //提交表單,實現下載
        $eleForm.submit();
    }

後臺:

@RequestMapping(value = "exportExcel", method = RequestMethod.POST)
    public void exportExcel(HttpServletRequest request, HttpServletResponse response, SubChainCenterTask subChainCenterTask){
        String json = "";
        //獲取當前用戶信息
        Claims b = JWTUtil.parseJWT(request.getParameter("token"), ConfigLoader.baseSecurity);
        String accountName = (String) b.get("accountName");
        Accounts account = iSubChainCenterTaskServicesImpl.getEntityBySql("select * from accounts where account_name = '" + accountName + "' and del_flag = 0", null, Accounts.class);
        User user = accountServicesImpl.getUserByAccount(account.getId());
        try {
            List<Object> attributeList = new ArrayList<Object>();
            StringBuffer listSQL = new StringBuffer(cn.o.comprehensivework.tasksubjectcenter.ql.QL.SQL.SubChainCenterTask.COMMON.LISTExcel);
            //動態拼接sql 條件查詢
            if(StringUtils.isNotBlank(subChainCenterTask.getCENTERTASKCODE())){
                listSQL.append(" and a.CENTERTASKCODE like ?");
                attributeList.add("%"+subChainCenterTask.getCENTERTASKCODE()+"%");
            }
            if (StringUtils.isNotBlank(subChainCenterTask.getTASK_SOURCEID())){
                listSQL.append(" and a.TASK_SOURCEID = ?");
                attributeList.add(subChainCenterTask.getTASK_SOURCEID());
            }
            if (StringUtils.isNotBlank(subChainCenterTask.getTASK_TYPEID())){
                listSQL.append(" and a.TASK_TYPEID = ?");
                attributeList.add(subChainCenterTask.getTASK_TYPEID());
            }
            if (StringUtils.isNotBlank(subChainCenterTask.getTASK_CLASSIFYID())){
                listSQL.append(" and a.TASK_CLASSIFYID = ?");
                attributeList.add(subChainCenterTask.getTASK_CLASSIFYID());
            }
            if (subChainCenterTask.getTASK_BEGINDATE()!=null && subChainCenterTask.getTASK_ENDDATE()!=null){
                listSQL.append(" and a.TASK_BEGINDATE = ?");
                attributeList.add(subChainCenterTask.getTASK_BEGINDATE());
            }
            if (subChainCenterTask.getTASK_ENDDATE()!=null){
                listSQL.append(" and a.TASK_ENDDATE = ?");
                attributeList.add(subChainCenterTask.getTASK_BEGINDATE());
            }
            if (StringUtils.isNotBlank(subChainCenterTask.getOBJECT_NAME())){
                listSQL.append(" and instr(a.OBJECT_NAME,?) > 0");
                attributeList.add(subChainCenterTask.getOBJECT_NAME());
            }
            if (StringUtils.isNotBlank(subChainCenterTask.getSTATUS())){
                listSQL.append(" and a.STATUS = ?");
                attributeList.add(subChainCenterTask.getSTATUS());
            }
            if (StringUtils.isBlank(subChainCenterTask.getSTATUS())){
                listSQL.append(" and a.STATUS in ('0','1','2','3','4','5','6')");
            }
            listSQL.append(" and a.SUBCENTERCODE = ?");
            attributeList.add(account.getDataAreaCode());
            listSQL.append(" order by a.create_date desc ");
            List<SubChainCenterTask> list = iSubChainCenterTaskServicesImpl.getListBySql(listSQL.toString(), attributeList,SubChainCenterTask.class);
            LinkedHashMap<String,String> fieldMap = new LinkedHashMap<String, String>();
            fieldMap.put("TASK_NATURE","任務分類");
            fieldMap.put("CENTERTASKCODE","任務單號");
            fieldMap.put("TASK_SOURCENAME","任務來源");
            fieldMap.put("TASK_TYPENAME","任務類型");
            fieldMap.put("TASK_CLASSIFYNAME","任務類別");
            fieldMap.put("OBJECT_NAME","交辦對象");
            fieldMap.put("TASK_BEGINDATE","任務開始時間");
            fieldMap.put("TASK_ENDDATE","任務結束時間");
            fieldMap.put("STATUS","狀態");
            ExcelUtils.listToExcel(list,fieldMap,"聯動分中心任務統計",list.size()+2,response);
        }catch (Exception e){
            this.print(e.getMessage(),response);
            e.printStackTrace();
        }

    }

注:ExcelUtils工具類可到本人的上傳資源內下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章