0


Java开发问题记录--查询一段时间内的账单数据

文章目录


前言

今天写了一个接口功能,要求查询一段时间内的账单数据。之前没有写过类似功能,此次记录下来方便日后遇到没有头绪。


一、了解需求

开发之前最最重要的是要对需求进行充分了解。
主要就是要求查询一段时间内的账单数据,这里一段时间是只有年月,也就是几个连续的月份的账单数据,且没有账单的月份要填入0取出。月份最多不超过12个月,最少1个月。
数据库已经是写好了数据,剩下的就是写sql和后端方法将数据取出来。

二、代码开发

1.数据库获取数据

1.1、SQL语句:

SELECT
    order_id AS orderId,
    organ_id AS organId,GROUP_CONCAT( CASE WHEN sum_fee IS NULL THEN 0.0000 ELSE sum_fee END ) AS fee,GROUP_CONCAT( bill_month ) AS billMonth
FROM
    billTable
WHERE
    isvalid =1 
    AND bill_month IN('2021-01','2021-02','2021-03','2021-04','2021-05','2021-06','2021-07') 
GROUP BY
    orderId,
    organId 
ORDER BY
    orderId DESC 
    LIMIT 10;

此处使用了GROUP BY,对orderId,organId进行分组。
GROUP_CONCAT()方法可将分组的数据取出,用逗号隔开。
月份通过List传入数据库。


1.2、SQL查询效果展示:
在这里插入图片描述

可以看到获取的账单金额和月份一一对应,但是月份并不连续,这个sql只能查询到数据库中存在的数据。在后端进行处理,将不存在的账单填入0 。

2.后端数据处理

代码如下:

for(BillDto bill: pageInfo.getList()){//获取对应月份的账单数据
     String[] arr1 = bill.getBillMonth().split(",");for(int m =0; m < arr1.length; m++){for(int i =0; i < yearAndMonths.size(); i++){
             String[] arr2 = bill.getFee().split(",");if(!Objects.equals(yearAndMonths.get(i), arr1[m])){//月份不匹配将账单数据设为0switch(i){case0:if(bill.getMonth01()== null){
                             bill.setMonth01("0.0000");}break;case1:if(bill.getMonth02()== null){
                             bill.setMonth02("0.0000");}break;case2:...case12:if(bill.getMonth12()== null){
                            bill.setMonth12("0.0000");}break;}}else{//月份匹配,将对应账单数据插入switch(i){case0:
                         bill.setMonth01(arr2[m]);continue;case1:
                         bill.setMonth02(arr2[m]);continue;case2:...case12:
                         bill.setMonth12(arr2[m]);}}}}}

此处用了两个数组,arr1记录月份,arr2记录账单费用。
yearAndMonth是连续的月份。通过for循环和switch…case语句将月份和费用进行对比。如果yearAndMonth和arr1不匹配,则证明这个月没有费用数据,设为0;匹配,则将对应月份的费用填入。
填入对应数据的Switch…case语句中使用continue是为了填入对应数据后,跳出月份循环,获取数据库中下一条数据进行匹配。


总结

通过此次学习开发,对sql语句和switch…case的使用有了更充分的了解。下次再遇到此类问题,希望可以做一个参考。

标签: java 后端

本文转载自: https://blog.csdn.net/qq_41895810/article/details/121536050
版权归原作者 MAKBCAT 所有, 如有侵权,请联系我们删除。

“Java开发问题记录--查询一段时间内的账单数据”的评论:

还没有评论