JAVA全系列 教程
3762个小节阅读:7091k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
序号 | 接口名称 | 接口地址 | 请求类型 |
---|---|---|---|
1 | 根据日期范围查询收支情况 | /statistics/revenue/queryAllRevenueData | get |
参数名称 | 是否必须 |
---|---|
beginTime | 否 |
endTime | 否 |
queryDate | 否 |
返回JSON数据
名称 | 类型 | 其他信息 |
---|---|---|
msg | String | |
code | int | |
data | object | |
├─ revenueObj | object | |
├─ overview | object | 概况 |
├─ toll | int | 总收入 |
├─ refund | int | 总退费 |
├─ channel | object | 收费渠道 |
├─ alipayRefund | int | 支付宝退费金额 |
├─ cashRefund | int | 现金退费金额 |
├─ cashIncome | int | 现金收费额 |
├─ alipayIncome | int | 支付宝收费额 |
├─ totalRevenue | int | 合计收入=总收入-总退费 |
├─ incomeChannel | object | 收入渠道 |
├─ data | object [] | item 类型: object |
├─ name | String | 渠道名称 |
├─ value | int | 收费次数 |
├─ title | String | 收入渠道 |
├─ revenueOverview | object | 声明图表的数据 |
├─ data | object [] | item 类型: object |
├─ name | String | 收费金额、退费金额 |
├─ value | int | xxx元 |
├─ title | String | 收支概况 |
├─ refund | object | 退款金额和渠道 |
├─ data | object [] | item 类型: object |
├─ name | String | 现金退费、支付宝退费 |
├─ value | int | xxx元 |
├─ title | String | 退款 |
收支查询Dto、Income、Refund
xpackage com.bjsxt.dto;
import ...
value="com-bjsxt-dto-RevenueQueryDto") (
callSuper = false) (
public class RevenueQueryDto extends BaseDto {
private String queryDate;
}
xxxxxxxxxx
package com.bjsxt.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
callSuper=true) (
public class Income extends BaseEntity {
private Double orderAmount; //收费总额度
private String payType;//收费类型
}
xxxxxxxxxx
package com.bjsxt.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
*
*/
callSuper=true) (
public class Refund extends BaseEntity {
private Double backAmount; //退费额度
private String backType; //退费类型
}
xxxxxxxxxx
package com.bjsxt.mapper;
import ...
public interface RevenueMapper {
/**
* 查询收入的数据
*
* @param revenueQueryDto
* @return
*/
List<Income> queryIncome( ("revenue") RevenueQueryDto revenueQueryDto);
/**
* 查询退费的数据
*
* @param revenueQueryDto
* @return
*/
List<Refund> queryRefund( ("revenue") RevenueQueryDto revenueQueryDto);
}
创建RevenueMapper.xml
xxxxxxxxxx
<mapper namespace="com.bjsxt.mapper.RevenueMapper">
<resultMap id="IncomeBaseResultMap" type="com.bjsxt.domain.Income">
<result column="order_amount" property="orderAmount" />
<result column="pay_type" property="payType" />
</resultMap>
<resultMap id="RefundBaseResultMap" type="com.bjsxt.domain.Refund">
<result column="back_amount" property="backAmount" />
<result column="back_type" property="backType" />
</resultMap>
<sql id="Income_Base_Column_List">
order_amount, pay_type
</sql>
<sql id="Refund_Base_Column_List">
back_amount, back_type
</sql>
<!--查询收入-->
<select id="queryIncome" resultMap="IncomeBaseResultMap">
select
<include refid="Income_Base_Column_List"></include>
from his_order_charge
<where>
order_status='1'
<if test="revenue.queryDate!=null and revenue.queryDate!=''">
and date_format(create_time,'%Y-%m-%d') =#{revenue.queryDate}
</if>
<if test="revenue.beginTime!=null">
and create_time>=#{revenue.beginTime}
</if>
<if test="revenue.endTime!=null">
and create_time <![CDATA[<=]]>
#{revenue.endTime}
</if>
</where>
</select>
<!--查询退费的-->
<select id="queryRefund" resultMap="RefundBaseResultMap">
select <include refid="Refund_Base_Column_List"></include>
from his_order_backfee
<where>
back_status='1'
<if test="revenue.queryDate!=null and revenue.queryDate!=''">
and date_format(create_time,'%Y-%m-%d') =#{revenue.queryDate}
</if>
<if test="revenue.beginTime!=null">
and create_time>=#{revenue.beginTime}
</if>
<if test="revenue.endTime!=null">
and create_time <![CDATA[<=]]>
#{revenue.endTime}
</if>
</where>
</select>
</mapper>
xxxxxxxxxx
package com.bjsxt.service;
import com.bjsxt.dto.RevenueQueryDto;
import java.util.Map;
public interface RevenueService {
/**
* 查询收支统计的数据
* @param revenueQueryDto
* @return
*/
Map<String, Object> queryAllRevenueData(RevenueQueryDto revenueQueryDto);
}
xxxxxxxxxx
package com.bjsxt.service.impl;
import ...
public class RevenueServiceImpl implements RevenueService {
private RevenueMapper revenueMapper;
public Map<String, Object> queryAllRevenueData(RevenueQueryDto revenueQueryDto) {
//最后的返回对象
Map<String,Object> map=new HashMap<>();
//查询收入的
List<Income> incomes=this.revenueMapper.queryIncome(revenueQueryDto);
//查询退费的
List<Refund> refunds=this.revenueMapper.queryRefund(revenueQueryDto);
//声明需要的数据对象
Double totalRevenue=0.00; //合计收入
Double toll=0.00;//总收入
Double refund=0.00;//总退费
Double cashIncome=0.00;//现金支付
Double alipayIncome=0.00;//支付宝支付
Double cashRefund=0.00;//现金退费
Double alipayRefund=0.00;//支付宝退费
Integer incomeChanelCash=0;//现金收取次数
Integer incomeChanelAlipay=0;//支付宝收取的次数
for (Income income : incomes) {
toll+=income.getOrderAmount();
if(income.getPayType().equals(Constants.PAY_TYPE_0)){//现金
cashIncome+=income.getOrderAmount();
incomeChanelCash++;
}else if(income.getPayType().equals(Constants.PAY_TYPE_1)){//支付宝
alipayIncome+=income.getOrderAmount();
incomeChanelAlipay++;
}
}
for (Refund refund1 : refunds) {
refund+=refund1.getBackAmount();
if(refund1.getBackType().equals(Constants.PAY_TYPE_0)){//现金退费
cashRefund+=refund1.getBackAmount();
}else if(refund1.getBackType().equals(Constants.PAY_TYPE_1)){//支付宝退费
alipayRefund+=refund1.getBackAmount();
}
}
//计算合计收入=总收入-总退费
totalRevenue=toll-refund;
Map<String,Object> revenueObj=new HashMap<>();
revenueObj.put("totalRevenue",totalRevenue);
Map<String,Object> overview=new HashMap<>();
overview.put("toll",toll);
overview.put("refund",refund);
Map<String,Object> channel=new HashMap<>();
channel.put("cashIncome",cashIncome);
channel.put("alipayIncome",alipayIncome);
channel.put("cashRefund",cashRefund);
channel.put("alipayRefund",alipayRefund);
revenueObj.put("overview",overview);
revenueObj.put("channel",channel);
map.put("revenueObj",revenueObj);
/*******收支概况***************/
Map<String,Object> revenueOverview =new HashMap<>();
revenueOverview.put("title","收支概况");
List<Map<String,Object>> revenueOverviewData=new ArrayList<>();
Map<String,Object> revenueOverviewData1=new HashMap<>();
revenueOverviewData1.put("name","收费金额");
revenueOverviewData1.put("value",toll);
Map<String,Object> revenueOverviewData2=new HashMap<>();
revenueOverviewData2.put("name","退费金额");
revenueOverviewData2.put("value",refund);
revenueOverviewData.add(revenueOverviewData1);
revenueOverviewData.add(revenueOverviewData2);
revenueOverview.put("data",revenueOverviewData);
//放到返回的map里面
map.put("revenueOverview",revenueOverview);
/*******收入渠道***************/
Map<String,Object> incomeChanel =new HashMap<>();
incomeChanel.put("title","收入渠道");
List<Map<String,Object>> incomeChanelData=new ArrayList<>();
Map<String,Object> incomeChanelData1=new HashMap<>();
incomeChanelData1.put("name","现金笔数");
incomeChanelData1.put("value",incomeChanelCash);
Map<String,Object> incomeChanelData2=new HashMap<>();
incomeChanelData2.put("name","支付宝笔数");
incomeChanelData2.put("value",incomeChanelAlipay);
incomeChanelData.add(incomeChanelData1);
incomeChanelData.add(incomeChanelData2);
incomeChanel.put("data",incomeChanelData);
//放到返回的map里面
map.put("incomeChanel",incomeChanel);
/*******退款金额和渠道***************/
Map<String,Object> refundMap =new HashMap<>();
refundMap.put("title","退款");
List<Map<String,Object>> refundMapData=new ArrayList<>();
Map<String,Object> refundMapData1=new HashMap<>();
refundMapData1.put("name","现金退款");
refundMapData1.put("value",cashRefund);
Map<String,Object> refundMapData2=new HashMap<>();
refundMapData2.put("name","支付宝退款");
refundMapData2.put("value",alipayRefund);
refundMapData.add(refundMapData1);
refundMapData.add(refundMapData2);
refundMap.put("data",refundMapData);
//放到返回的map里面
map.put("refund",refundMap);
return map;
}
}
xxxxxxxxxx
package com.bjsxt.controller.statistics;
import ...
/**
* 收支统计控制器
*/
"statistics/revenue") (
public class RevenueController {
private RevenueService revenueService;
"queryAllRevenueData") (
public AjaxResult queryAllRevenueData(RevenueQueryDto revenueQueryDto){
//如果没有选择开始日期和结果日期,就查询当天的数据
if(revenueQueryDto.getBeginTime()==null){
revenueQueryDto.setQueryDate(DateUtil.format(DateUtil.date(),"yyyy-MM-dd"));
}
Map<String,Object> res=this.revenueService.queryAllRevenueData(revenueQueryDto);
return AjaxResult.success(res);
}
}
根据日期范围查询收支情况/statistics/revenue/queryAllRevenueData