实习修炼第十九天

整体进程

get请求方式导出excel表
错误查看
开发报告文档的书写

get请求方式导出excel数据表

在实际项目中由于对于toString方法的错误使用使得导致空指针错误(不知道为什么我老是碰到这个错误)最后加了一层限定条件使得正常运行

public ExportGoodTestDataVO(GoodsTestDataVO gvo){
    if (gvo.getTestBeginTime() != null || gvo.getTestEndTime() != null){
        this.time = gvo.getTestBeginTime().toString()+"-"+gvo.getTestEndTime().toString();
    }
    else this.time = "NULL";

在完成后做了一个小查询发现还可以利用如下方式来避免空指针

public ExportGoodTestDataVO(GoodsTestDataVO gvo){
        this.time = String.valueOf(gvo.getTestBeginTime())+"-"+String.valueOf(gvo.getTestEndTime());
}

前面文章实现中请求的方式是POST请求所以各种参数要在body中用json传递,但是考虑到一般来说导出数据需要的是GET请求,所以今天的实现时GET请求;
具体Controller包下实现如下所示相应的导出数据类不再赘述;

/**
     * 导出est_data表部分信息
     *
     * @throws Exception
     */
    /*
    private Long goodsId;
    private String goodsName;
    private Date beginDate;
    private Date endDate;
    public Integer testStatus;
    private Integer pageNumber = 1;
    private Integer pageSize = 10;
     */
    @RequestMapping("/exportgoodstestdata/downTestToExcel")
    public void exportGoodsTestToexcel(@RequestParam(required = false)Long goodsId,
                                       @RequestParam(required = false) String goodsName, @RequestParam(required = false) Date beginDate,
                                       @RequestParam(required = false) Date endDate, @RequestParam(required = false) Integer testStatus,
                                       @RequestParam(required = false) Integer pageNumber, @RequestParam(required = false)  Integer pageSize,
                                       HttpServletResponse response) throws Exception {
        if (testStatus == null) {
            throw new RuntimeException("参数有误");
        }
        pageNumber = 1;
        pageSize = 10;
        CSVExportHelper.doExport("exportDataExcel",new CSVExportTemplate<ExportGoodTestDataVO>() {

            @Override
            public List<ExportGoodTestDataVO> getRecordList(int startIndx, int pageSize) {

                List<ExportGoodTestDataVO> list = new ArrayList<>();
                QueryGoodsTestDataReq param = new QueryGoodsTestDataReq();
                int pNumber = startIndx / pageSize + 1;

                param.setPageNumber(pNumber);
                param.setPageSize(pageSize);
                param.setGoodsId(goodsId);
                param.setGoodsName(goodsName);
                param.setBeginDate(beginDate);
                param.setEndDate(endDate);
                
                ServiceResponse<PaginationInfo<List<GoodsTestDataVO>>> paginationInfoServiceResponse = goodsTestService.queryGoodsTestData(param);
                logger.error("paginationInfoServiceResponse " + JSON.toJSONString(paginationInfoServiceResponse));
                if (paginationInfoServiceResponse.isSuccess() && !CollectionUtils.isEmpty(paginationInfoServiceResponse.getData().getData())) {
                    for (GoodsTestDataVO rs : paginationInfoServiceResponse.getData().getData()) {
                        ExportGoodTestDataVO rt = new ExportGoodTestDataVO(rs);
                        //ExportGoodTestDataVO rx = new ExportGoodMessageVO().convert(rs);
                        list.add(rt);
                    }
                    logger.error("goodsTest  " + JSON.toJSONString(list));
                    return list;
                }
                return null;
            }


            @Override
            public List<String> getCols() {
                return Arrays.asList("time", "goodsId", "goodsName", "exposureClickRate", "buyRate", "exposureRate",
                        "judgeResult", "suggestion","testStatus", "testResult");
            }

            @Override
            public List<String> getColsDesc() {
                return Arrays.asList("时间", "商品ID", "商品名称", "曝光点击率", "购买转化率", "曝光转化率", "判定", "建议", "测款状态", "测款结果");
            }
        },response);
    }

部署过程
部署过程与上一篇文章所讲的一般;

  1. 先合并到相应的git分支
  2. 再用jenkins进行项目构建
    在这里插入图片描述
    如上图构建成功后等待SpringBoot环境运行完成;
  3. 进行接口测试
    在这里插入图片描述

错误查看

一般来说项目总会有一些错误发生,这是不可避免的,但是对于它的查找与纠错一般会查看服务器日志,但仅仅服务器自己的日志还不够,有时需要手动添加日志记录,比如在关键的、觉得可能会出错的地方添加相关变量的检测;就好像上述Controller中的做如下布置

ServiceResponse<PaginationInfo<List<GoodsTestDataVO>>> paginationInfoServiceResponse = goodsTestService.queryGoodsTestData(param);
logger.error("paginationInfoServiceResponse " + JSON.toJSONString(paginationInfoServiceResponse));

就可以在服务器的other日志里查看相关信息的打印;服务器日志有running,request,other等;
其中的logger是日志记录器,它是日志处理的核心组件。属于log4j,在log4j中具有5种正常级别(Level)。日志记录器(Logger)的可用级别Level (不包括自定义级别 Level)如下所示

  1. DEBUG:调试信息,业务处理进行状态,当前的变量值等
  2. INFO : 有必要的事件信息记录
  3. WARN :表明会出现潜在错误的情形
  4. ERROR:指出虽然发生错误事件,但仍然不影响系统的继续运行;
  5. FATAL :指出每个严重的错误事件将会导致应用程序的退出;

可参考 https://blog.csdn.net/zalan01408980/article/details/79653386

开发报告文档的书写

简要描述:

  • 测款信息导出excel接口

请求URL:

  • http://devapi.nm001.com/exportgoodstestdata/downTestToExcel

请求方式:

  • GET

参数:

参数名必选类型说明
testStatusInteger测款状态
goodsIdLong商品ID
goodsNamestring商品名称
beginDateDate测款开始时间
endDateDate测款结束时间
pageNumberInteger页数
pageSizeInteger页大小

返回示例

时间,商品ID,商品名称,曝光点击率,购买转化率,曝光转化率,判定,建议,测款状态,测款结果
"Fri Jul 19 00:00:00 CST 2019-Fri Jul 19 00:00:00 CST 2019","1235","商品名","1","1","1","0","0","1","0"
"Fri Jul 19 00:00:00 CST 2019-Fri Jul 19 00:00:00 CST 2019","1234","商品名","1","1","2","2","2","2","2"

返回参数说明

参数名类型说明
时间String测款时间区间 :testBeginTime~testEndTime
商品IDLong商品ID
商品名称String商品名称
曝光点击率Long曝光点击率
购买转化率Integer购买转化率
曝光转化率Integer曝光转化率
判定Integer测款判定结果;-1:差,0:一般,1:较好,2:优秀
建议Integer测款建议;-1:十分不好,0:较为满意,1:满意,2:很满意
测款状态Integer测款完成状态;-1:未完成,0:正在进行,1:已完成,2:出现错误
测款结果Integer测款结果;;-1:偏低,0:正常,1:很好

备注

  • 更多返回错误代码请看首页的错误代码描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值