wangbx日志

该代码示例展示了如何使用Mybatis-Plus的LambdaQueryWrapper进行单表查询,以及如何通过Easypoi库导出Excel模板。在查询过程中,对专业ID和年级为空的情况进行了异常处理。在导出Excel时,创建了模板参数,填充数据到模板中,然后生成Excel文件并返回给前端。同时,提供了导出按钮的JS事件处理,包括选择数据、导出操作及状态提示。
摘要由CSDN通过智能技术生成

关于mybatis-plus单表查询 LambdaQueryWrapper

@Override
    public DictMajorGradeResult findByMajorIdAndGrade(String majorId, String grade) {
        if (majorId.isEmpty() || grade.isEmpty()) {
            throw new ServiceException(500, "专业ID是空");
        }
        LambdaQueryWrapper<DictMajorGrade> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(DictMajorGrade::getMajorId, majorId)
                .eq(DictMajorGrade::getGrade, grade);
        DictMajorGrade dictMajorGrade = this.getOne(lambdaQueryWrapper);
        if (dictMajorGrade == null) {
            throw new ServiceException(500, "找不到专业年级记录,请检查查询条件");
        }
        DictMajorGradeResult dictMajorGradeResult = new DictMajorGradeResult();
        ToolUtil.copyProperties(dictMajorGrade, dictMajorGradeResult);
        return dictMajorGradeResult;
    }
QueryWrapper<Topic> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("THESIS_SUBMIT_ID", thesisId);
List<Topic> tops = this.topicService.list(queryWrapper);

关于easypoi模板导出案例

    @ResponseBody
    @RequestMapping("/thesis/export")
    public ResponseEntity<InputStreamResource> export(/*TopicParam topicParam*/) throws IOException {
        
        //LayuiPageInfo layuiPageInfo = this.competitionSignStuService.hjmxStudent(competitionSignStuParam);
        //List<CompetitionSignStuResult> data = layuiPageInfo.getData();
        
        List<TopicResult> topicResults = this.topicService.thesisExportList(/*topicParam*/);

        TemplateExportParams params = new TemplateExportParams(
                "templet/thesisTopic.xlsx");
        Map<String, Object> map = new HashMap<>();
        //map.put("maplist", data);
        
        map.put("maplist", topicResults);
        Workbook workbook = ExcelExportUtil.exportExcel(params, map);
        
        //String titleValue;
        //titleValue = "本科生毕设汇总表";
        //workbook.getSheetAt(0).getRow(0).getCell(0).setCellValue(titleValue);
        
        HttpServletResponse response = super.getHttpServletResponse();
        response.reset();
        
        //String fileName = "学科竞赛信息导出表.xlsx";
        String fileName = IdWorker.getId()+".xlsx";
        
        // 将 Workbook 对象转成 InputStream
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        workbook.write(bos);
        InputStream is = new ByteArrayInputStream(bos.toByteArray());
        return super.renderFile(fileName, is);
    }

excel模板: thesisTopic.xlsx

关于导出按钮的js事件以及url

(注意:在修改完js记得及时清理浏览器缓存)
layui.use(['table', 'admin', 'ax', 'func','layer','form','element'], function () {
    var $ = layui.$;
    var table = layui.table;
    var $ax = layui.ax;
    var admin = layui.admin;
    var func = layui.func;
    var form = layui.form;
    var layer = layui.layer;
    var element = layui.element;

    var load_index;
    let cookieName = $('#cookieName').val();

    element.render('nav');

    /**
     * 课题信息表管理
     */
    var Topic = {
        tableId: "topicTable"
    };

    /**
     * 初始化表格的列
     */
    Topic.initColumn = function () {
        return [[
            {type: 'checkbox'},
            {field: 'seqId', hide: true, title: '主键'},
            {field: 'topicName', sort: true, title: '课题名称'},
            {field: 'teacherName', sort: true, title: '指导教师'},
            {field: 'collegeName', sort: true, title: '学院'},
            {field: 'major', sort: true, title: '专业'},
            {field: 'studentId', sort: true, title: '学生学号'},
            {field: 'studentName', sort: true, title: '学生姓名'},
        ]];
    };

    /**
     * 点击查询按钮
     */
    Topic.search = function () {
        var queryData = {};
        queryData['year'] = $('#YEAR').val();
        queryData['studentName'] = $('#studentName').val();
        queryData['collegeId'] = $('#collegeId').val();
        table.reload(Topic.tableId, {
            where: queryData, page: {curr: 1}
        });
    };

    /**
     * 跳转到添加页面
     */
    Topic.jumpAddPage = function () {
        window.location.href = Feng.ctxPath + '/topic/add'
    };

    /**
    * 跳转到编辑页面
    *
    * @param data 点击按钮时候的行数据
    */
    Topic.jumpEditPage = function (data) {
        window.location.href = Feng.ctxPath + '/topic/edit?seqId=' + data.seqId
    };

    /**
     * 导出excel按钮
     */
    Topic.exportExcel = function () {
        var checkRows = table.checkStatus(Topic.tableId);
        if (checkRows.data.length === 0) {
            Feng.error("至少选择一条数据!");
        } else {
            var ids = '';
            for (var i = 0; i < checkRows.data.length; i++) {
                ids = ids + checkRows.data[i].thesisSubmitId + ','
            }

            var cookieValue = 'start';
            var Days = 1;
            var exp = new Date();
            exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
            document.cookie = cookieName + "=" + escape(cookieValue) + ";expires=" + exp.toGMTString();
            load_index = layer.load(1);
            window.location.href = Feng.ctxPath + '/lwxz/plxz?ids=' +ids+ '&cookieName=' + cookieName;
        }

    };

    //循环执行,每隔3秒钟执行一次showalert()
    window.setInterval(function () {
        var arr, reg = new RegExp("(^| )" + cookieName + "=([^;]*)(;|$)");
        if (arr = document.cookie.match(reg)) {
            if (arr[2] == 'finish') {
                $('#btnExp').removeAttr("disabled");//将按钮可用
                layer.close(load_index)
            } else {
                $('#btnExp').attr({"disabled":"disabled"});
            }
        }
    }, 3000);



    // 渲染表格
    var tableResult = table.render({
        elem: '#' + Topic.tableId,
        url: Feng.ctxPath + '/lwxz/list',
        page: true,
        height: "full-98",
        cellMinWidth: 100,
        where:{
            "year" : $('#YEAR').val()
        },
        cols: Topic.initColumn()
    });

    // 搜索按钮点击事件
    $('#btnSearch').click(function () {
        Topic.search();
    });
    // 重置按钮点击事件
    $('#btnReset').click(function () {
        $("#YEAR").val($("#yearHidden").val());
        $("#collegeId").val('');
        $("#studentName").val('');
        form.render()
    });
    // 导出excel
    $('#btnExp').click(function () {
        Topic.exportExcel();
    });
    $('#btnExpAll').click(function () {
        window.location.href = Feng.ctxPath + '/lwxz/thesis/export?year=' + $("#YEAR").val();
    });

    // 工具条点击事件
    table.on('tool(' + Topic.tableId + ')', function (obj) {
        var data = obj.data;
        var layEvent = obj.event;

        if (layEvent === 'edit') {
            Topic.jumpEditPage(data);
        } else if (layEvent === 'delete') {
            Topic.onDeleteItem(data);
        }
    });
});

复制按钮点击事件

 /**
     * 点击复制并更换届数
     */
    WkLeadingGroup.copyYear = function () {
        var checkRows = table.checkStatus(WkLeadingGroup.tableId);
        if (checkRows.data.length === 0) {
            Feng.error("请选择要复制的数据!");
        } else {
            var ids = '';
            var years='';
            for(var i=0; i< checkRows.data.length;i++){
                ids = ids + checkRows.data[i].staffId + ','
                years = years + checkRows.data[i].year+ ','
            }

            var ajax = new $ax(Feng.ctxPath + "/wkLeadingGroup/copy", function (data) {
                Feng.success("复制成功!");
                table.reload(WkLeadingGroup.tableId);
            }, function (data) {
                Feng.error("复制失败!" + data.responseJSON.message+ "!")
            });
            ajax.set({staffIds: ids});
            ajax.set({years: years});
            ajax.start();

            // window.location.href = Feng.ctxPath + '/employee/addItem?staffIds=' + ids;
        }
    };


    //复制按钮点击事件
    $('#btnCopy').click(function () {
        WkLeadingGroup.copyYear();
    })

后端

    @Override
    public void copy(WkLeadingGroupParam param) {
        String staffIds = param.getStaffIds();
        String years = param.getYears();

        param.setStaffIdList(Arrays.asList(staffIds.split(",")));
        param.setYearList(Arrays.asList(years.split(",")));

        List<String> staffIdList = param.getStaffIdList();
        List<String> yearList = param.getYearList();

        String currentYear = yearManageService.currentYear();


        ArrayList<WkLeadingGroup> wkLeadingGroups = new ArrayList<>();
        for (int i = 0; i < staffIdList.size(); i++) {
            LambdaQueryWrapper<WkLeadingGroup> lambdaQueryWrapper = Wrappers.lambdaQuery();
            lambdaQueryWrapper.eq(WkLeadingGroup::getStaffId, staffIdList.get(i))
                    .eq(WkLeadingGroup::getYear,yearList.get(i));
            WkLeadingGroup wkLeadingGroup = this.getOne(lambdaQueryWrapper);
            wkLeadingGroups.add(wkLeadingGroup);
        }
        for (WkLeadingGroup wkLeadingGroup : wkLeadingGroups) {
            boolean save = this.save(wkLeadingGroup);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值