Excel报表导出之动态合并单元格

要求

代码: 

JSP页面代码:

<body>
<div id="div1">
    <fieldset style="border: 0; margin-top: 20px;">
            <legend>
                <span style="font-weight: bold; font-size: 15px;">讲师津贴明细查询导出</span>
            </legend>
            <hr>
    </fieldset>

//这个请求千万不要忘记!!!!我会写在最后,这是动态拼Excel表格样式的代码
    <form action="${ctx}/teacherManage/exportMXExcel.do" id="queryTeacherForm" name="fm"  class="form-horizontal">
        <table id="manageUserForm1" style="width: 85%;">
            <tr>
                开始日期:<input name="start_date"
                    id="start_date" class="mini-datepicker" format="yyyy-MM-dd"
                    timeFormat="H:mm:ss" showTime="false" allowInput="false" />
            </tr>  
            <tr>        
                结束日期:<input name="end_date"
                    id="end_date" class="mini-datepicker" format="yyyy-MM-dd"
                    timeFormat="H:mm:ss" showTime="false" allowInput="false" />
            </tr>
        </table>
    </form>
        <br/>
        <div class="mini-button" οnclick="checkOutMX()" style="width:150px; margin-right: 32px;">导出讲师津贴明细</div>
</body>

JS中代码:

mini.parse();

var ctx = mini.get("ctx").getValue();
var form = new mini.Form("#exportForm");
function resetF() {
    form.reset();
}


    //津贴明细导出
function checkOutMX() {
    
    var start_date = mini.get("start_date").getText();
    var end_date = mini.get("end_date").getText();
    if((start_date!=null&&start_date!='') && (end_date != null&&end_date!='')){
        if(start_date>end_date){
            mini.alert("开始时间不能大于结束时间!");
            return;
        }
    }
    
    if(!exportExcelCheckMX()){
        return;
    }
    $("#queryTeacherForm").submit();
}

//津贴明细导出前校验
function exportExcelCheckMX() {
    var flag = false;
    var start_date = mini.get("start_date").getText();
    var end_date = mini.get("end_date").getText();
   
    $.ajax({
        type : 'POST',
        async : false,
        url : ctx + "/teacherManage/exportExcelCheckMX.do",
        data : {
            start_date:start_date,
            end_date:end_date
        },
        dataType : "json",
        success : function(data) {
            if(data.flag == "0"){
                flag = true;
            }else{
                mini.alert(data.msg);
            }
        },
        error : function(e) {
            mini.alert("系统异常,请稍后再试!");
        }
    });
    
    return flag;
}
 

Controller中代码:

/**
             * 讲师津贴明细报表导出前校验
             * @param trainee
             * @return
             * @throws ParseException
             */
            @RequestMapping(value = "/exportExcelCheckMX.do")
            public @ResponseBody ComResultDTO CReportExportExcelCheckMX(HttpServletRequest request,HttpSession session,PageDTO pageDTO){
                logger.info("============讲师津贴明细导出前校验============");
                TeacherManagerDto req = new TeacherManagerDto();
                String start_date = request.getParameter("start_date");
                String end_date = request.getParameter("end_date");
                req.setStart_date(start_date);
                req.setEnd_date(end_date);
                String manage_com =SessionUtil.getUser().getManageCom();
                req.setManage_com(manage_com);
                pageDTO.setParameters(req);
                
                int startNum = (pageDTO.getPageIndex()-1)*pageDTO.getPageSize();
                pageDTO.setStartNum(startNum);
                List<TeacherManagerDto> queryList = teacherManagerService.selectTeacherChargeByPageDTO(pageDTO);
                ComResultDTO comResultDTO = new ComResultDTO();
                if(queryList != null && queryList.size() > 50000){
                    comResultDTO.setFlag("1");
                    comResultDTO.setMsg("导出报表上限为50000条,数据量过大,导出失败!");
                    logger.info("============导出报表上限为50000条,数据量过大,导出失败!============");
                }else if(queryList != null && queryList.size() == 0){
                    comResultDTO.setFlag("1");
                    comResultDTO.setMsg("导出数据为空,导出失败!");
                    logger.info("============导出数据为空,导出失败!============");
                }else{
                    comResultDTO.setFlag("0");
                }
                return comResultDTO;
            }


service中代码:

@Override
    public List<TeacherManagerDto> selectTeacherChargeByPageDTO(PageDTO pageDTO) {
        
        return teacherManagerMapper.selectTeacherChargeByPageDTO(pageDTO);
        
    }

mapper.xml中代码:

<!-- 查询讲师报表导出数据 -->
   <select id="selectTeacherChargeByPageDTO" resultMap="teacherManage" parameterType="com.hualife.bit.util.PageDTO" >
           select 
               a.teacher_id,
               (select b.short_name from managecom_info b where b.manage_com=SUBSTRING(a.manage_com,1,4)) fen_gongsi,
                     (select b.short_name from managecom_info b where b.manage_com=SUBSTRING(a.manage_com,1,6)) zhong_zhi,
               (select b.manage_com from managecom_info b where b.manage_com=a.manage_com) manage_com,
               a.name,
               (select c.value from def_code_info c where c.code=a.if_employee and c.code_type='if_employee') if_employee,
               (select e.value from def_code_info e where e.code=a.teacher_type and e.code_type='teacher_type') teacher_type,
               (select e.value from def_code_info e where e.code=a.teacher_grade and e.code_type='teacher_grade') teacher_grade,
               DATE_FORMAT(a.created_time,'%Y-%m-%d %H:%i') created_time,
                            case when tc.charge_type='1' then IFNULL(SUM(tc.charge*tc.charge_total*tc.rate),0) end shou_ke,
                            case when tc.charge_type='2' then IFNULL(SUM(tc.charge*tc.charge_total*tc.rate),0) end yan_fa,
                            case when tc.charge_type='3' then IFNULL(SUM(tc.charge*tc.charge_total*tc.rate),0) end xiang_mu,
                            case when tc.charge_type='4' then IFNULL(SUM(tc.charge*tc.charge_total*tc.rate),0) end zhu_jiao,
                            IFNULL(SUM(tc.charge*tc.charge_total*tc.rate),0) zongji

       from teacher a LEFT JOIN teacher_charge tc on a.teacher_id=tc.teacher_id where a.created_time &gt;= #{parameters.start_date} and a.created_time &lt;= #{parameters.end_date} and a.manage_com like concat(#{parameters.manage_com},'%')  
GROUP BY a.teacher_id  
    
        limit #{startNum,jdbcType=DECIMAL},#{pageSize,jdbcType=DECIMAL}
   </select>
动态拼Excel表格样式的代码:

Controller中代码:

 /**
             * 讲师津贴明细报表导出功能
             * @param requestDTO
             * @param request
             * @param response
             * @throws Exception
             */
            @RequestMapping(value = "/exportMXExcel.do")
            public void CReportExportExcelMX(TeacherManagerDto requestDTO,HttpServletRequest request, 
                    HttpServletResponse response,PageDTO pageDTO)
                            throws Exception {
                String manage_com =SessionUtil.getUser().getManageCom();
                requestDTO.setManage_com(manage_com);
                pageDTO.setParameters(requestDTO);
                //封装搜索引擎参数
                //Map<String, Object> map = new HashMap<String, Object>();
                /*map =*/
                teacherChargeQueryService.reportExcelMX(request,response,pageDTO);
                /*ExcelView viewExcel = new ExcelView();
                HSSFWorkbook arg1= new HSSFWorkbook();
                viewExcel.buildExcelDocument1(map, arg1, request, response);*/
            }
 

Service中代码:

public Map<String, Object> reportExcelMX(HttpServletRequest request, HttpServletResponse response,PageDTO pageDTO) throws Exception {
        
        
    
        // 表头
        //String[] tableHeader = {  "分公司", "中支", "构编编码", "姓名", "人员类别(前线、后线)","讲师类别(专职讲师、督训、兼职讲师)","岗位职级 (xx级督训)", "研发津贴",
        //        "授课津贴","助教津贴","项目津贴","金额合计"};
        
        // 表名
        //String tableName = "讲师津贴明细报表";
        //Map<String, Object> map = new HashMap<String, Object>();
        //map.put("teacherList", teacherList);
        //map.put("tableHeader", tableHeader);
        //map.put("tableName", tableName);
        //return map;
        
        String filename = "TeacherCharge";

        // 获得输出流,该输出流的输出介质是客户端浏览器

        OutputStream output = response.getOutputStream();

        response.reset();

        response.setHeader("Content-disposition", "attachment;filename=" + filename + ".xls");

        response.setContentType("application/msexcel");

        // 创建可写入的Excel工作薄,且内容将写入到输出流,并通过输出流输出给客户端浏览

        WritableWorkbook wk = Workbook.createWorkbook(output);

        /// 创建可写入的Excel工作表

        WritableSheet sheet = wk.createSheet("讲师津贴明细报表", 0);
        sheet.setColumnView(0, 10);
        sheet.setColumnView(1, 15);
        sheet.setColumnView(2, 20);
        sheet.setColumnView(3, 13);
        sheet.setColumnView(4, 13);
        sheet.setColumnView(5, 15);
        sheet.setColumnView(6, 15);
        sheet.setColumnView(7, 15);
        sheet.setColumnView(8, 15);
        sheet.setColumnView(9, 15);
        sheet.setColumnView(10, 15);
        sheet.setColumnView(11, 15);
        sheet.setColumnView(12, 15);
        sheet.setColumnView(13, 15);
        sheet.setColumnView(14, 15);
        sheet.setColumnView(15, 15);
        sheet.setColumnView(16, 15);

        // 把单元格(column, row)到单元格(column1, row1)进行合并。

        // mergeCells(column, row, column1, row1);

        //sheet.mergeCells(0, 0, 5, 0);// 单元格合并方法
        

        // 创建WritableFont 字体对象,参数依次表示黑体、字号12、粗体、非斜体、不带下划线、亮蓝色
        WritableFont titleFont0 = new WritableFont(WritableFont.createFont("宋体"), 18, WritableFont.BOLD, false,
                UnderlineStyle.NO_UNDERLINE, Colour.BLACK);

        WritableFont titleFont1 = new WritableFont(WritableFont.createFont("宋体"), 12, WritableFont.BOLD, false,
                UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
        WritableFont titleFont2 = new WritableFont(WritableFont.createFont("宋体"), 11, WritableFont.NO_BOLD, false,
                UnderlineStyle.NO_UNDERLINE, Colour.BLACK);

        // 创建WritableCellFormat对象,将该对象应用于单元格从而设置单元格的样式

        WritableCellFormat titleFormat0 = new WritableCellFormat();
        titleFormat0.setFont(titleFont0);
        titleFormat0.setAlignment(Alignment.CENTRE);
        titleFormat0.setVerticalAlignment(VerticalAlignment.CENTRE);
        titleFormat0.setBorder(Border.ALL, BorderLineStyle.THIN);
        titleFormat0.setWrap(true);

        WritableCellFormat titleFormat1 = new WritableCellFormat();

        // 设置字体格式

        titleFormat1.setFont(titleFont1);

        // 设置文本水平居中对齐

        titleFormat1.setAlignment(Alignment.CENTRE);

        // 设置文本垂直居中对齐

        titleFormat1.setVerticalAlignment(VerticalAlignment.CENTRE);

        // 设置背景颜色

        titleFormat1.setBackground(Colour.YELLOW);
        titleFormat1.setBorder(Border.ALL, BorderLineStyle.THIN);
        // 设置自动换行
        titleFormat1.setWrap(true);

        WritableCellFormat titleFormat2 = new WritableCellFormat();
        titleFormat2.setFont(titleFont2);
        titleFormat2.setAlignment(Alignment.CENTRE);
        titleFormat2.setVerticalAlignment(VerticalAlignment.CENTRE);
        titleFormat2.setWrap(true);
        titleFormat2.setBorder(Border.ALL, BorderLineStyle.THIN);

        /*ClassInfo classInfo = classInfoMapper.selectByPrimaryKey(Long.valueOf(class_id));
        List<TraineeSignInfo> signlist = classInfoHelperMapper.querySignInTraineeInfoByClassId(Long.valueOf(class_id));*/
        //String[] tableHeader = {  "分公司", "中支", "机构编码", "姓名", "人员类别(前线、后线)","讲师类别(专职讲师、督训、兼职讲师)",
        //"岗位职级 (xx级督训)", "研发津贴",
                //        "授课津贴","助教津贴","项目津贴","金额合计"};
        //sheet.addCell(new Label(0, 0, "讲师津贴明细报表", titleFormat0));
        sheet.addCell(new Label(0, 0, "序号", titleFormat1));
        sheet.addCell(new Label(1, 0, "分公司", titleFormat1));
        sheet.addCell(new Label(2, 0, "中支", titleFormat1));
        sheet.addCell(new Label(3, 0, "机构编码", titleFormat1));
        sheet.addCell(new Label(4, 0, "姓名", titleFormat1));
        sheet.addCell(new Label(5, 0, "人员类别(前线、后线)", titleFormat1));
        sheet.addCell(new Label(6, 0, "讲师类别(专职讲师、督训、兼职讲师)", titleFormat1));
        sheet.addCell(new Label(7, 0, "岗位职级 (xx级督训)", titleFormat1));
        sheet.mergeCells(8, 0, 9, 0);// 单元格合并方法
        sheet.addCell(new Label(8, 0, "研发津贴", titleFormat1));
        /*sheet.addCell(new Label(9, 1, "研发津贴", titleFormat1));*/
        sheet.mergeCells(10, 0, 11, 0);
        sheet.addCell(new Label(10, 0, "授课津贴", titleFormat1));
        /*sheet.addCell(new Label(11, 1, "授课津贴", titleFormat1));*/
        sheet.mergeCells(12, 0, 13, 0);
        sheet.addCell(new Label(12, 0, "助教津贴", titleFormat1));
        /*sheet.addCell(new Label(13, 1, "助教津贴", titleFormat1));*/
        sheet.mergeCells(14, 0, 15, 0);
        sheet.addCell(new Label(14, 0, "项目津贴", titleFormat1));
        /*sheet.addCell(new Label(15, 1, "项目津贴", titleFormat1));*/
        /*sheet.addCell(new Label(16, 1, "金额合计", titleFormat1));*/
        sheet.addCell(new Label(16, 0, "金额合计", titleFormat1));
        
        sheet.addCell(new Label(8, 1, "项目", titleFormat1));
        sheet.addCell(new Label(9, 1, "金额", titleFormat1));
        sheet.addCell(new Label(10, 1, "项目", titleFormat1));
        sheet.addCell(new Label(11, 1, "金额", titleFormat1));
        sheet.addCell(new Label(12, 1, "项目", titleFormat1));
        sheet.addCell(new Label(13, 1, "金额", titleFormat1));
        sheet.addCell(new Label(14, 1, "项目", titleFormat1));
        sheet.addCell(new Label(15, 1, "金额", titleFormat1));
        
        sheet.mergeCells(0, 0, 0, 1);
        sheet.mergeCells(1, 0, 1, 1);
        sheet.mergeCells(2, 0, 2, 1);
        sheet.mergeCells(3, 0, 3, 1);
        sheet.mergeCells(4, 0, 4, 1);
        sheet.mergeCells(5, 0, 5, 1);
        sheet.mergeCells(6, 0, 6, 1);
        sheet.mergeCells(7, 0, 7, 1);
        sheet.mergeCells(16, 0, 16, 1);
        
        List<TeacherManagerDto> teacherList = TeacherManagerMapper.selectTeacherChargeByPageDTO(pageDTO);
        
        if(teacherList.size()!=0){
            int flag2 = 0 ;
            for (int i = 0; i < teacherList.size(); i++) {

                int flag1 = 0 ;
                Long teacher_id =teacherList.get(i).getTeacher_id();
                
                
                List<TeacherChargeDto> list1 =TeacherManagerMapper.selectChargeType1(teacher_id);
                for (int j = 0; j < list1.size(); j++) {
                    sheet.addCell(new Label(8, 2 + j+flag2, list1.get(j).getCourse_name(), titleFormat2));
                    sheet.addCell(new Label(9, 2 + j+flag2, list1.get(j).getJin_e(), titleFormat2));
                }
                
                    flag1=list1.size();
                
                
                List<TeacherChargeDto> list2 =TeacherManagerMapper.selectChargeType2(teacher_id);
                for (int j = 0; j < list2.size(); j++) {
                    
                    sheet.addCell(new Label(10, 2 + j+flag2, list2.get(j).getCourse_name(), titleFormat2));
                    sheet.addCell(new Label(11, 2 + j+flag2, list2.get(j).getJin_e(), titleFormat2));
                }
                if(list2.size() > flag1){
                    flag1=list2.size();
                }
                
                List<TeacherChargeDto> list3 =TeacherManagerMapper.selectChargeType3(teacher_id);
                for (int j = 0; j < list3.size(); j++) {
                    sheet.addCell(new Label(12, 2 + j+flag2, list3.get(j).getCourse_name(), titleFormat2));
                    sheet.addCell(new Label(13, 2 + j+flag2, list3.get(j).getJin_e(), titleFormat2));
                }
            

           if(list3.size() >flag1 ){
                    flag1=list3.size();
                }
                
                List<TeacherChargeDto> list4 =TeacherManagerMapper.selectChargeType2(teacher_id);
                for (int j = 0; j < list4.size(); j++) {
                    
                    sheet.addCell(new Label(14, 2 + j+flag2, list4.get(j).getCourse_name(), titleFormat2));
                    sheet.addCell(new Label(15, 2 + j+flag2, list4.get(j).getJin_e(), titleFormat2));
                }
                if(list4.size() > flag1){
                    flag1=list4.size();
                }
                sheet.mergeCells(0,2+flag2+i, 0, 2+flag2+flag1-1+i);
                sheet.mergeCells(1,2+flag2+i, 1, 2+flag2+flag1-1+i);
                sheet.mergeCells(2,2+flag2+i, 2, 2+flag2+flag1-1+i);
                sheet.mergeCells(3,2+flag2+i, 3, 2+flag2+flag1-1+i);
                sheet.mergeCells(4,2+flag2+i, 4, 2+flag2+flag1-1+i);
                sheet.mergeCells(5,2+flag2+i, 5, 2+flag2+flag1-1+i);
                sheet.mergeCells(6,2+flag2+i, 6, 2+flag2+flag1-1+i);
                sheet.mergeCells(7,2+flag2+i, 7, 2+flag2+flag1-1+i);
                sheet.mergeCells(16,2+flag2+i,16, 2+flag2+flag1-1+i);
                
                sheet.addCell(new Label(0, 2+flag2, String.valueOf(i + 1), titleFormat2));
                sheet.addCell(new Label(1, 2+flag2, teacherList.get(i).getFen_gongsi(), titleFormat2));
                sheet.addCell(new Label(2, 2+flag2, teacherList.get(i).getZhong_zhi(), titleFormat2));
                sheet.addCell(new Label(3, 2+flag2, teacherList.get(i).getManage_com(), titleFormat2));
                sheet.addCell(new Label(4, 2+flag2, teacherList.get(i).getName(), titleFormat2));
                sheet.addCell(new Label(5, 2+flag2, teacherList.get(i).getIf_employee(), titleFormat2));
                sheet.addCell(new Label(6, 2+flag2, teacherList.get(i).getTeacher_type(), titleFormat2));
                sheet.addCell(new Label(7, 2+flag2, teacherList.get(i).getTeacher_grade(), titleFormat2));
                sheet.addCell(new Label(16,2+flag2, teacherList.get(i).getZongji(), titleFormat2));
                flag2=flag2+(flag1==0?1:flag1);
            }
            
            
        }


        // 添加Label对象,参数依次表示在第一列,第一行,内容,使用的格式

        // Label lab_00=new Label(0,0,"学员考试成绩一览表",titleFormat1);

        // 将定义好的Label对象添加到工作表上,这样工作表的第一列第一行的内容为‘学员考试成绩一览表’并应用了titleFormat定义的样式

        // sheet.addCell(lab_00);
        //
        // WritableCellFormat cloumnTitleFormat=new WritableCellFormat();
        //
        // cloumnTitleFormat.setFont(new
        // WritableFont(WritableFont.createFont("宋体"),10,WritableFont.BOLD,false));
        //
        // cloumnTitleFormat.setAlignment(Alignment.CENTRE);
        //
        // Label lab_01=new Label(0,1,"姓名",cloumnTitleFormat);
        //
        // Label lab_11=new Label(1,1,"班级",cloumnTitleFormat);
        //
        // Label lab_21=new Label(2,1,"笔试成绩",cloumnTitleFormat);
        //
        // Label lab_31=new Label(3,1,"上机成绩",cloumnTitleFormat);
        //
        // Label lab_41=new Label(4,1,"考试日期",cloumnTitleFormat);
        //
        // sheet.addCell(lab_01);
        //
        // sheet.addCell(lab_11);
        //
        // sheet.addCell(lab_21);
        //
        // sheet.addCell(lab_31);
        //
        // sheet.addCell(lab_41);
        //
        // sheet.addCell(new Label(0,2,"李明"));
        //
        // sheet.addCell(new Label(1,2,"As178"));

        // 定义数字格式

        // NumberFormat nf=new NumberFormat("0.00");
        //
        // WritableCellFormat wcf=new WritableCellFormat(nf);

        // 类似于Label对象,区别Label表示文本数据,Number表示数值型数据

        // Number numlab_22=new Number(2,2,78,wcf);
        //
        // sheet.addCell(numlab_22);
        //
        // sheet.addCell(newNumber(3,2,87,new WritableCellFormat(new
        // NumberFormat("#.##") )));

        // 定义日期格式
        //
        // DateFormat df=new DateFormat("yyyy-MM-dd hh:mm:ss");

        // 创建WritableCellFormat对象

        // WritableCellFormat datewcf=new WritableCellFormat(df);

        // 类似于Label对象,区别Label表示文本数据,DateTime表示日期型数据

        // DateTime dtLab_42=new DateTime(4,2,new Date(),datewcf);
        //
        // sheet.addCell(dtLab_42);

        // 将定义的工作表输出到之前指定的介质中(这里是客户端浏览器)

        wk.write();

        // 操作完成时,关闭对象,释放占用的内存空间

        wk.close();
        // 加下划线这部分代码是B/S模式中采用的输出方式,而不是输出到本地指定的磁盘目录。该代码表示将temp.xls的Excel文件通过应答实体(response)输出给请求的客户端浏览器,下载到客户端本地(保存或直接打开)。若要直接输出到磁盘文件可采用下列代码替换加下划线这部分代码
        // File file=new File("D://temp.xls");
        // WritableWorkbook wwb = Workbook.createWorkbook(file);

        return null;

    }
四个红色下划线需要的SQL语句查询:

<!-- 查询讲师报表导出数据 -->
   <select id="selectTeacherChargeByPageDTO" resultMap="teacherManage" parameterType="com.hualife.bit.util.PageDTO" >
           select 
               a.teacher_id,
               (select b.short_name from managecom_info b where b.manage_com=SUBSTRING(a.manage_com,1,4)) fen_gongsi,
                     (select b.short_name from managecom_info b where b.manage_com=SUBSTRING(a.manage_com,1,6)) zhong_zhi,
               (select b.manage_com from managecom_info b where b.manage_com=a.manage_com) manage_com,
               a.name,
               (select c.value from def_code_info c where c.code=a.if_employee and c.code_type='if_employee') if_employee,
               (select e.value from def_code_info e where e.code=a.teacher_type and e.code_type='teacher_type') teacher_type,
               (select e.value from def_code_info e where e.code=a.teacher_grade and e.code_type='teacher_grade') teacher_grade,
               DATE_FORMAT(a.created_time,'%Y-%m-%d %H:%i') created_time,
                            case when tc.charge_type='1' then IFNULL(SUM(tc.charge*tc.charge_total*tc.rate),0) end shou_ke,
                            case when tc.charge_type='2' then IFNULL(SUM(tc.charge*tc.charge_total*tc.rate),0) end yan_fa,
                            case when tc.charge_type='3' then IFNULL(SUM(tc.charge*tc.charge_total*tc.rate),0) end xiang_mu,
                            case when tc.charge_type='4' then IFNULL(SUM(tc.charge*tc.charge_total*tc.rate),0) end zhu_jiao,
                            IFNULL(SUM(tc.charge*tc.charge_total*tc.rate),0) zongji

       from teacher a LEFT JOIN teacher_charge tc on a.teacher_id=tc.teacher_id where a.created_time &gt;= #{parameters.start_date} and a.created_time &lt;= #{parameters.end_date} and a.manage_com like concat(#{parameters.manage_com},'%')  
GROUP BY a.teacher_id  
    
        limit #{startNum,jdbcType=DECIMAL},#{pageSize,jdbcType=DECIMAL}
   </select>
  <!-- 查询讲师津贴详细信息报表导出 -->
   <select id="selectChargeType1" resultMap="teacherCharge" parameterType="java.lang.Long" >
 select 
 a.id,
(select course_name from class_course c where a.course_id = c.course_id )course_name,
IFNULL(SUM(a.charge*a.charge_total*a.rate),0) jin_e
from teacher_charge a where a.teacher_id = #{parameters.teacher_id} and a.charge_type = '1'
GROUP BY a.id 
   </select>
   
   <select id="selectChargeType2" resultMap="teacherCharge" parameterType="java.lang.Long" >
select 
 a.id,
(select class_name from class_info c where a.class_id = c.class_id )course_name,
IFNULL(SUM(a.charge*a.charge_total*a.rate),0) jin_e
from teacher_charge a where a.teacher_id = #{parameters.teacher_id} and a.charge_type = '2'
GROUP BY a.id 
   </select>
   
   <select id="selectChargeType3" resultMap="teacherCharge" parameterType="java.lang.Long" >
select 
 a.id,
(select project_name from project_manage c where a.project_id = c.project_id )course_name,
IFNULL(SUM(a.charge*a.charge_total*a.rate),0) jin_e
from teacher_charge a where a.teacher_id = #{parameters.teacher_id} and a.charge_type = '3'
GROUP BY a.id 
   </select>

 

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值