主页的数据统计
This commit is contained in:
parent
6e233b3f6a
commit
026b7e6d0b
68
fuintAdmin/src/api/indexStatistics.js
Normal file
68
fuintAdmin/src/api/indexStatistics.js
Normal file
@ -0,0 +1,68 @@
|
||||
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 流水统计
|
||||
export function turnoverStatisticsApi(query) {
|
||||
return request({
|
||||
url: 'business/oilOrder/turnoverStatistics',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 员工销售
|
||||
export function employeeSalesApi(query) {
|
||||
return request({
|
||||
url: 'business/oilOrder/employeeSales',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 储值卡销售额
|
||||
export function prepaidCardSalesApi(query) {
|
||||
return request({
|
||||
url: 'business/oilOrder/prepaidCardSales',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 屯油卡销售
|
||||
export function tunFuelCardSalesApi(query) {
|
||||
return request({
|
||||
url: 'business/oilOrder/tunFuelCardSales',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 商品销售额
|
||||
export function merchandiseSalesApi(query) {
|
||||
return request({
|
||||
url: 'business/oilOrder/merchandiseSales',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 油品销售额
|
||||
export function oilSalesApi(query) {
|
||||
return request({
|
||||
url: 'business/oilOrder/oilSales',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 各油品销售额
|
||||
export function salesByOilProductApi(query) {
|
||||
return request({
|
||||
url: 'business/oilOrder/salesByOilProduct',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
@ -2,17 +2,20 @@
|
||||
<div class="center" >
|
||||
<div class="left-box">
|
||||
<div class="but-box">
|
||||
<div class="hui"><span class="title-hei">各油品销售额</span> <span>15天交易金额总计:</span><span class="title-lan">79701</span> <span>元</span> </div>
|
||||
<div class="hui"><span class="title-hei">各油品销售额</span>
|
||||
<!-- <span>15天交易金额总计:</span><span class="title-lan">79701</span> <span>元</span> -->
|
||||
</div>
|
||||
<div >
|
||||
<el-radio-group v-model="radio" size="mini">
|
||||
<el-radio-button label="周"></el-radio-button>
|
||||
<el-radio-button label="月"></el-radio-button>
|
||||
<el-radio-button label="年"></el-radio-button>
|
||||
<el-radio-group v-model="radio" @change="getSalesByOilProduct()" size="mini">
|
||||
<el-radio-button label="week">周
|
||||
</el-radio-button>
|
||||
<el-radio-button label="month">月</el-radio-button>
|
||||
<el-radio-button label="year">年</el-radio-button>
|
||||
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div id="chart" style="width: 100%; height: 400px;"></div>
|
||||
<div v-loading="Loading" id="chart" style="width: 100%; height: 400px;"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -20,18 +23,45 @@
|
||||
|
||||
<script>
|
||||
import echarts from "echarts";
|
||||
import { salesByOilProductApi } from "@/api/indexStatistics";
|
||||
import { parseTime } from "@/utils/fuint"
|
||||
|
||||
export default {
|
||||
name: "centenrindex",
|
||||
data(){
|
||||
return{
|
||||
radio:'周'
|
||||
radio:'week',
|
||||
|
||||
data:[],
|
||||
|
||||
rowData:[],
|
||||
Loading :false,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initChart()
|
||||
},
|
||||
created() {
|
||||
this.getSalesByOilProduct()
|
||||
},
|
||||
methods:{
|
||||
|
||||
getSalesByOilProduct() {
|
||||
this.Loading = true
|
||||
salesByOilProductApi({type: this.radio}).then(res=>{
|
||||
this.data = res.data
|
||||
this.rowData = []
|
||||
for (let i = 0; i<res.data.length ; i++) {
|
||||
let series = { type: 'bar', barCategoryGap: '40%' }
|
||||
this.rowData.push(series)
|
||||
}
|
||||
this.initChart()
|
||||
this.Loading = false
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
initChart() {
|
||||
const chart = echarts.init(document.getElementById('chart'))
|
||||
|
||||
@ -52,21 +82,11 @@ export default {
|
||||
legend: {},
|
||||
tooltip: {},
|
||||
dataset: {
|
||||
source: [
|
||||
['product', '#92', '#95', '#98'],
|
||||
['2023.1.1', 50, 85.8, 93.7],
|
||||
['2023.2.1', 83.1, 73.4, 55.1],
|
||||
['2023.3.1', 86.4, 65.2, 82.5],
|
||||
['2023.4.1', 72.4, 53.9, 39.1],
|
||||
['2023.5.1', 72.4, 53.9, 39.1],
|
||||
['2023.6.1', 72.4, 53.9, 39.1]
|
||||
]
|
||||
source: this.data
|
||||
},
|
||||
xAxis: { type: 'category' },
|
||||
yAxis: {},
|
||||
// Declare several bar series, each will be mapped
|
||||
// to a column of dataset.source by default.
|
||||
series: [{ type: 'bar', barCategoryGap: '40%' }, { type: 'bar', barCategoryGap: '40%' }, { type: 'bar', barCategoryGap: '40%' }]
|
||||
series: this.rowData
|
||||
};
|
||||
|
||||
chart.setOption(option)
|
||||
|
@ -5,31 +5,34 @@
|
||||
<div class="hui"><span class="title-hei">油站商品交易笔数</span> </div>
|
||||
|
||||
<div >
|
||||
<el-radio-group v-model="radio" size="mini">
|
||||
<el-radio-button label="周"></el-radio-button>
|
||||
<el-radio-button label="月"></el-radio-button>
|
||||
<el-radio-button label="年"></el-radio-button>
|
||||
<el-radio-group @change="getMerchandiseSales()" v-model="goodsRadio" size="mini">
|
||||
<el-radio-button label="7天"></el-radio-button>
|
||||
<el-radio-button label="15天"></el-radio-button>
|
||||
<el-radio-button label="30天"></el-radio-button>
|
||||
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div><span>15天交易金额总计:</span><span class="title-lan">79701</span> <span>元</span></div>
|
||||
<div id="charts" style="width: 100%; height: 400px;"></div>
|
||||
<div><span>{{ goodsRadio }}交易金额总计:</span><span class="title-lan">{{ goodsSum }}</span> <span>元</span></div>
|
||||
<div v-loading="goodsLoading" id="charts" style="width: 100%; height: 400px;"></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="left-box">
|
||||
<div class="but-box">
|
||||
<div class="hui"><span class="title-hei">油站油品交易笔数</span> </div>
|
||||
<div class="hui"><span class="title-hei">油站储值卡交易笔数</span> </div>
|
||||
<div >
|
||||
<el-radio-group v-model="radio" size="mini">
|
||||
<el-radio-button label="周"></el-radio-button>
|
||||
<el-radio-button label="月"></el-radio-button>
|
||||
<el-radio-button label="年"></el-radio-button>
|
||||
<el-radio-group @change="getPrepaidCardSales()" v-model="cardRadio" size="mini">
|
||||
<el-radio-button label="7天"></el-radio-button>
|
||||
<el-radio-button label="15天"></el-radio-button>
|
||||
<el-radio-button label="30天"></el-radio-button>
|
||||
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div><span>15天交易金额总计:</span><span class="title-lan">79701</span> <span>元</span></div>
|
||||
<div id="chartx" style="width: 100%; height: 400px;"></div>
|
||||
<div><span>{{ cardRadio }}交易金额总计:</span><span class="title-lan">{{ cardSum }}</span> <span>元</span></div>
|
||||
<div v-loading="cardLoading" id="chartx" style="width: 100%; height: 400px;"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -37,19 +40,132 @@
|
||||
|
||||
<script>
|
||||
import echarts from "echarts";
|
||||
import { merchandiseSalesApi,prepaidCardSalesApi,tunFuelCardSalesApi } from "@/api/indexStatistics";
|
||||
import { parseTime } from "@/utils/fuint"
|
||||
|
||||
export default {
|
||||
name: "bottomindex",
|
||||
data(){
|
||||
return{
|
||||
radio:'周'
|
||||
goodsRadio:'7天',
|
||||
cardRadio:'7天',
|
||||
|
||||
goodsSum:0,
|
||||
cardSum:0,
|
||||
|
||||
// 时间轴
|
||||
goodsTimeDate:[],
|
||||
goodsDate:[],
|
||||
|
||||
cardTimeDate:[],
|
||||
cardDate:[],
|
||||
|
||||
// goodsTimeDate:[],
|
||||
fuelDate:[],
|
||||
|
||||
|
||||
goodsLoading:false,
|
||||
cardLoading:false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initChart()
|
||||
this.initChartwo()
|
||||
},
|
||||
created() {
|
||||
this.getMerchandiseSales()
|
||||
this.getPrepaidCardSales()
|
||||
// this.getTunFuelCardSales()
|
||||
|
||||
},
|
||||
methods:{
|
||||
|
||||
|
||||
// 商品销售
|
||||
getMerchandiseSales() {
|
||||
this.goodsLoading=true,
|
||||
merchandiseSalesApi().then(res=>{
|
||||
if (res.code === 200) {
|
||||
this.goodsTimeDate=[]
|
||||
this.goodsDate=[]
|
||||
this.goodsSum = 0
|
||||
let dataList = res.data
|
||||
if (this.goodsRadio === '7天' && dataList.length >= 7) {
|
||||
dataList = dataList.slice(0, 7);
|
||||
} else if (this.goodsRadio === '15天' && dataList.length >= 15) {
|
||||
dataList = dataList.slice(0, 15);
|
||||
} else if (this.goodsRadio === '30天' && dataList.length >= 30) {
|
||||
dataList = dataList.slice(0, 30);
|
||||
}
|
||||
|
||||
dataList.forEach(element => {
|
||||
this.goodsTimeDate.push(parseTime(element.sales_day,'{y}-{m}-{d}'));
|
||||
this.goodsDate.push(element.total_sales);
|
||||
this.goodsSum+=element.total_sales
|
||||
});
|
||||
this.initChart()
|
||||
this.goodsLoading = false
|
||||
// this.changeLabel();
|
||||
}
|
||||
})
|
||||
},
|
||||
// 储值卡销售
|
||||
getPrepaidCardSales() {
|
||||
this.cardLoading=true
|
||||
|
||||
prepaidCardSalesApi().then(res=>{
|
||||
if (res.code === 200) {
|
||||
this.cardTimeDate=[]
|
||||
this.cardDate=[]
|
||||
this.cardSum = 0
|
||||
let dataList = res.data
|
||||
if (this.cardRadio === '7天' && dataList.length >= 7) {
|
||||
dataList = dataList.slice(0, 7);
|
||||
} else if (this.cardRadio === '15天' && dataList.length >= 15) {
|
||||
dataList = dataList.slice(0, 15);
|
||||
} else if (this.cardRadio === '30天' && dataList.length >= 30) {
|
||||
dataList = dataList.slice(0, 30);
|
||||
}
|
||||
|
||||
dataList.forEach(element => {
|
||||
this.cardTimeDate.push(parseTime(element.sales_day,'{y}-{m}-{d}'));
|
||||
this.cardDate.push(element.total_sales);
|
||||
this.cardSum+=element.total_sales
|
||||
});
|
||||
this.getTunFuelCardSales()
|
||||
// this.changeLabel();
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
// 屯油卡销售
|
||||
getTunFuelCardSales() {
|
||||
tunFuelCardSalesApi().then(res=>{
|
||||
if (res.code === 200) {
|
||||
this.fuelDate=[]
|
||||
// this.cardSum = 0
|
||||
let dataList = res.data
|
||||
if (this.cardRadio === '7天' && dataList.length >= 7) {
|
||||
dataList = dataList.slice(0, 7);
|
||||
} else if (this.cardRadio === '15天' && dataList.length >= 15) {
|
||||
dataList = dataList.slice(0, 15);
|
||||
} else if (this.cardRadio === '30天' && dataList.length >= 30) {
|
||||
dataList = dataList.slice(0, 30);
|
||||
}
|
||||
|
||||
dataList.forEach(element => {
|
||||
this.fuelDate.push(element.total_sales);
|
||||
this.cardSum+=element.total_sales
|
||||
});
|
||||
this.initChartwo()
|
||||
// this.changeLabel();
|
||||
this.cardLoading=false
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
initChart() {
|
||||
const chart = echarts.init(document.getElementById('charts'))
|
||||
|
||||
@ -59,28 +175,35 @@ export default {
|
||||
'#86E1BB',
|
||||
'#8195F5',
|
||||
],
|
||||
legend: {
|
||||
orient: 'horizontal',
|
||||
x: 'left',
|
||||
y: 'top',
|
||||
data: ['猜想','预期','实际']
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['2023.1.1', '2023.2.1', '2023.3.1', '2023.4.1', '2023.5.1', '2023.6.1', '2023.7.1']
|
||||
// data: ['2023.1.1', '2023.2.1', '2023.3.1', '2023.4.1', '2023.5.1', '2023.6.1', '2023.7.1']
|
||||
data: this.goodsTimeDate
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: [250, 230, 224, 218, 135, 147, 260],
|
||||
data: this.goodsDate,
|
||||
type: 'line'
|
||||
},
|
||||
{
|
||||
data: [210, 230, 264, 318, 235, 247, 360],
|
||||
// {
|
||||
// data: [210, 230, 264, 318, 235, 247, 360],
|
||||
|
||||
|
||||
type: 'line'
|
||||
},
|
||||
{
|
||||
data: [120, 220, 214, 118, 235, 227, 110],
|
||||
type: 'line'
|
||||
}
|
||||
// type: 'line'
|
||||
// },
|
||||
// {
|
||||
// data: [120, 220, 214, 118, 235, 227, 110],
|
||||
// type: 'line'
|
||||
// }
|
||||
]
|
||||
};
|
||||
|
||||
@ -93,30 +216,28 @@ export default {
|
||||
color: [
|
||||
'#77A8F9',
|
||||
'#86E1BB',
|
||||
'#8195F5',
|
||||
// '#8195F5',
|
||||
],
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['2023.1.1', '2023.2.1', '2023.3.1', '2023.4.1', '2023.5.1', '2023.6.1', '2023.7.1']
|
||||
data: this.cardTimeDate
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: [250, 230, 224, 218, 135, 147, 140],
|
||||
data: this.cardDate,
|
||||
type: 'line'
|
||||
},
|
||||
{
|
||||
data: [210, 230, 264, 318, 235, 247, 160],
|
||||
|
||||
|
||||
data: this.fuelDate,
|
||||
type: 'line'
|
||||
},
|
||||
{
|
||||
data: [120, 220, 214, 118, 235, 227, 110],
|
||||
type: 'line'
|
||||
}
|
||||
// {
|
||||
// data: [120, 220, 214, 118, 235, 227, 110],
|
||||
// type: 'line'
|
||||
// }
|
||||
]
|
||||
};
|
||||
|
||||
|
@ -1,58 +1,148 @@
|
||||
<template>
|
||||
<div class="center" >
|
||||
|
||||
<div class="left-box">
|
||||
<div class="but-box">
|
||||
<div class="hui"><span class="title-hei">储值卡销售额</span> </div>
|
||||
<div class="hui"><span class="title-hei">油品销售额</span> </div>
|
||||
|
||||
<div >
|
||||
<el-radio-group v-model="radio" size="mini">
|
||||
<el-radio-button label="周"></el-radio-button>
|
||||
<el-radio-button label="月"></el-radio-button>
|
||||
<el-radio-button label="年"></el-radio-button>
|
||||
<el-radio-group @change="getOilSales()" v-model="radio" size="mini">
|
||||
<el-radio-button label="7天"></el-radio-button>
|
||||
<el-radio-button label="15天"></el-radio-button>
|
||||
<el-radio-button label="30天"></el-radio-button>
|
||||
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div><span>15天交易金额总计:</span><span class="title-lan">79801</span> <span>元</span></div>
|
||||
<div id="ccccc" style="width: 100%; height: 400px;"></div>
|
||||
|
||||
<div><span>{{radio}}交易金额总计:</span><span class="title-lan">{{sum}}</span> <span>元</span></div>
|
||||
<div v-loading="oilLoading" id="ccccc" style="width: 100%; height: 400px;"></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="right-box">
|
||||
<div class="title-hei">员工销售排行</div>
|
||||
<div class="four-box">
|
||||
<div class="pm">排名</div>
|
||||
<div class="mc">员工名称</div>
|
||||
<div class="xs">销售笔数</div>
|
||||
<div class="xse">销售额(万)</div>
|
||||
<div class="xs">储值卡销售额</div>
|
||||
<div class="xs">屯油卡销售额</div>
|
||||
<div class="xs">油品销售额</div>
|
||||
<div class="xse">总销售额(万)</div>
|
||||
</div>
|
||||
<div class="four-boxx" v-for="(item,index) in 10" key="index">
|
||||
<template v-loading="employeLoading" >
|
||||
<div class="four-boxx" v-for="(item,index) in employeList" :key="index" >
|
||||
<div class="pm">{{index+1}}</div>
|
||||
<div class="dis">
|
||||
<div class="touxiang">
|
||||
<img src="../../../src/assets/images/avatar.png" class="touxiang">
|
||||
</div>
|
||||
<div class="name">名字</div>
|
||||
<div class="name">{{item.realName}}</div>
|
||||
</div>
|
||||
<div class="xs">9999</div>
|
||||
<div class="xse">18975</div>
|
||||
<div class="xs">{{item.cardSum}}</div>
|
||||
<div class="xs">{{item.fuelSum}}</div>
|
||||
<div class="xs">{{item.oilSum}}</div>
|
||||
<div class="xse">{{item.totalSum}}</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import echarts from "echarts";
|
||||
import { employeeSalesApi,oilSalesApi } from "@/api/indexStatistics";
|
||||
|
||||
import { parseTime } from "@/utils/fuint"
|
||||
|
||||
export default {
|
||||
name: "centenrindex",
|
||||
data(){
|
||||
return{
|
||||
radio:'周'
|
||||
radio:'7天',
|
||||
oilLoading:false,
|
||||
employeLoading:false,
|
||||
// 时间轴
|
||||
timeDate:[],
|
||||
oilDate:[],
|
||||
sum:0,
|
||||
employeList:{
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initChart()
|
||||
async mounted() {
|
||||
await this.getOilSales()
|
||||
// this.initChart()
|
||||
},
|
||||
async created() {
|
||||
// this.getOilSales()
|
||||
this.getEmployeList()
|
||||
},
|
||||
methods:{
|
||||
// 油品销售
|
||||
async getOilSales() {
|
||||
this.oilLoading = true
|
||||
await oilSalesApi().then(res=>{
|
||||
if (res.code === 200) {
|
||||
this.timeDate=[]
|
||||
this.oilDate=[]
|
||||
this.sum = 0
|
||||
let dataList = res.data
|
||||
if (this.radio === '7天' && dataList.length >= 7) {
|
||||
dataList = dataList.slice(0, 7);
|
||||
} else if (this.radio === '15天' && dataList.length >= 15) {
|
||||
dataList = dataList.slice(0, 15);
|
||||
} else if (this.radio === '30天' && dataList.length >= 30) {
|
||||
dataList = dataList.slice(0, 30);
|
||||
}
|
||||
|
||||
dataList.forEach(element => {
|
||||
this.timeDate.push(parseTime(element.sales_day,'{y}-{m}-{d}'));
|
||||
this.oilDate.push(element.total_sales);
|
||||
this.sum+=element.total_sales
|
||||
});
|
||||
this.initChart()
|
||||
// this.changeLabel();
|
||||
this.oilLoading = false
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
getEmployeList() {
|
||||
this.employeLoading = true
|
||||
employeeSalesApi().then(res=>{
|
||||
if(res.code == 200) {
|
||||
if (res.data.length >=10) {
|
||||
this.employeList = res.data.slice(0, 10);
|
||||
} else {
|
||||
this.employeList = res.data
|
||||
}
|
||||
this.employeLoading = false
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
changeLabel() {
|
||||
if (this.radio === '7天' && this.timeDate.length >= 7) {
|
||||
this.timeDate = this.timeDate.slice(0, 7);
|
||||
this.oilDate = this.oilDate.slice(0, 7);
|
||||
} else if (this.radio === '15天' && this.timeDate.length >= 15) {
|
||||
this.timeDate = this.timeDate.slice(0, 15);
|
||||
this.oilDate = this.oilDate.slice(0, 15);
|
||||
} else if (this.radio === '30天' && this.timeDate.length >= 30) {
|
||||
this.timeDate = this.timeDate.slice(0, 30);
|
||||
this.oilDate = this.oilDate.slice(0, 30);
|
||||
}
|
||||
this.initChart()
|
||||
},
|
||||
|
||||
|
||||
initChart() {
|
||||
const chart = echarts.init(document.getElementById('ccccc'))
|
||||
|
||||
@ -70,26 +160,27 @@ export default {
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['2023.1.1', '2023.2.1', '2023.3.1', '2023.4.1', '2023.5.1', '2023.6.1', '2023.7.1']
|
||||
// data: ['2023.1.1', '2023.2.1', '2023.3.1', '2023.4.1', '2023.5.1', '2023.6.1', '2023.7.1']
|
||||
data: this.timeDate
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: [250, 230, 224, 218, 135, 147, 140],
|
||||
data: this.oilDate,
|
||||
type: 'line'
|
||||
},
|
||||
{
|
||||
data: [210, 230, 264, 318, 235, 247, 160],
|
||||
// {
|
||||
// data: [210, 230, 264, 318, 235, 247, 160],
|
||||
|
||||
|
||||
type: 'line'
|
||||
},
|
||||
{
|
||||
data: [120, 220, 214, 118, 235, 227, 110],
|
||||
type: 'line'
|
||||
}
|
||||
// type: 'line'
|
||||
// },
|
||||
// {
|
||||
// data: [120, 220, 214, 118, 235, 227, 110],
|
||||
// type: 'line'
|
||||
// }
|
||||
]
|
||||
};
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="top-box">
|
||||
<div class="top-box" v-loading="loading">
|
||||
<div class="top-sl" >
|
||||
<div class="box-title">
|
||||
<span style="margin-right: 5px">本日流水总额</span>
|
||||
<el-popover
|
||||
<!-- <el-popover
|
||||
placement="top-start"
|
||||
title="标题"
|
||||
width="200"
|
||||
@ -12,16 +12,54 @@
|
||||
content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。">
|
||||
|
||||
<i class="el-icon-warning-outline" slot="reference" ></i>
|
||||
</el-popover>
|
||||
</el-popover> -->
|
||||
</div>
|
||||
<div class="box-size">
|
||||
4023
|
||||
{{ this.statisticsData.today_sum ? this.statisticsData.today_sum : 0 }}
|
||||
</div>
|
||||
<div class="box-but">
|
||||
<div class="icon-lv">
|
||||
<i class="el-icon-bottom"></i>
|
||||
<span>20.5%</span>
|
||||
|
||||
<div class="icon-lv2" v-if="this.statisticsData.today_sum_chain<=0">
|
||||
<i v-if="this.statisticsData.today_sum_chain==0" class="el-icon-minus"></i>
|
||||
<i v-else class="el-icon-bottom"></i>
|
||||
<span>{{ this.statisticsData.today_sum_chain }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="icon-lv" v-else>
|
||||
<i class="el-icon-top"></i>
|
||||
<span>{{ this.statisticsData.today_sum_chain }}</span>
|
||||
</div>
|
||||
|
||||
<div>环比</div>
|
||||
<div> <i class="el-icon-arrow-right"></i> </div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="top-sl" >
|
||||
<div class="box-title">
|
||||
<span style="margin-right: 5px">本周流水总额</span>
|
||||
</div>
|
||||
<div class="box-size">
|
||||
{{ this.statisticsData.this_week_sum?this.statisticsData.this_week_sum:0 }}
|
||||
</div>
|
||||
<div class="box-but">
|
||||
|
||||
|
||||
<div class="icon-lv2" v-if="this.statisticsData.week_sum_chain<=0">
|
||||
<i v-if="this.statisticsData.week_sum_chain==0" class="el-icon-minus"></i>
|
||||
<i v-else class="el-icon-bottom"></i>
|
||||
<span>{{ this.statisticsData.week_sum_chain?this.statisticsData.week_sum_chain:0 }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="icon-lv" v-else>
|
||||
<i class="el-icon-top"></i>
|
||||
<span>{{ this.statisticsData.week_sum_chain?this.statisticsData.week_sum_chain:0 }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div>环比</div>
|
||||
<div> <i class="el-icon-arrow-right"></i> </div>
|
||||
</div>
|
||||
@ -29,25 +67,30 @@
|
||||
|
||||
<div class="top-sl" >
|
||||
<div class="box-title">
|
||||
<span style="margin-right: 5px">本日流水总额</span>
|
||||
<el-popover
|
||||
placement="top-start"
|
||||
title="标题"
|
||||
width="200"
|
||||
trigger="hover"
|
||||
content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。">
|
||||
|
||||
<i class="el-icon-warning-outline" slot="reference" ></i>
|
||||
</el-popover>
|
||||
<span style="margin-right: 5px">本月流水总额</span>
|
||||
</div>
|
||||
<div class="box-size">
|
||||
4023
|
||||
{{this.statisticsData.this_month_sum}}
|
||||
</div>
|
||||
<div class="box-but">
|
||||
<div class="icon-lv">
|
||||
<i class="el-icon-bottom"></i>
|
||||
<span>20.5%</span>
|
||||
|
||||
|
||||
<div class="icon-lv2" v-if="this.statisticsData.month_sum_chain<=0">
|
||||
<i v-if="this.statisticsData.month_sum_chain==0" class="el-icon-minus"></i>
|
||||
<i v-else class="el-icon-bottom"></i>
|
||||
<span>{{ this.statisticsData.month_sum_chain?this.statisticsData.month_sum_chain:0 }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="icon-lv" v-else>
|
||||
<i class="el-icon-top"></i>
|
||||
<span>{{ this.statisticsData.month_sum_chain?this.statisticsData.month_sum_chain:0 }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div>环比</div>
|
||||
<div> <i class="el-icon-arrow-right"></i> </div>
|
||||
</div>
|
||||
@ -55,25 +98,26 @@
|
||||
|
||||
<div class="top-sl" >
|
||||
<div class="box-title">
|
||||
<span style="margin-right: 5px">本日流水总额</span>
|
||||
<el-popover
|
||||
placement="top-start"
|
||||
title="标题"
|
||||
width="200"
|
||||
trigger="hover"
|
||||
content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。">
|
||||
|
||||
<i class="el-icon-warning-outline" slot="reference" ></i>
|
||||
</el-popover>
|
||||
<span style="margin-right: 5px">本日流水笔数</span>
|
||||
</div>
|
||||
<div class="box-size">
|
||||
4023
|
||||
{{ this.statisticsData.today_count }}
|
||||
</div>
|
||||
<div class="box-but">
|
||||
<div class="icon-lv">
|
||||
<i class="el-icon-bottom"></i>
|
||||
<span>20.5%</span>
|
||||
|
||||
<div class="icon-lv2" v-if="this.statisticsData.today_count_chain<=0">
|
||||
<i v-if="this.statisticsData.today_count_chain==0" class="el-icon-minus"></i>
|
||||
<i v-else class="el-icon-bottom"></i>
|
||||
<span>{{ this.statisticsData.today_count_chain?this.statisticsData.today_count_chain:0 }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="icon-lv" v-else>
|
||||
<i class="el-icon-top"></i>
|
||||
<span>{{ this.statisticsData.today_count_chain?this.statisticsData.today_count_chain:0 }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div>环比</div>
|
||||
<div> <i class="el-icon-arrow-right"></i> </div>
|
||||
</div>
|
||||
@ -81,25 +125,31 @@
|
||||
|
||||
<div class="top-sl" >
|
||||
<div class="box-title">
|
||||
<span style="margin-right: 5px">本日流水总额</span>
|
||||
<el-popover
|
||||
placement="top-start"
|
||||
title="标题"
|
||||
width="200"
|
||||
trigger="hover"
|
||||
content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。">
|
||||
|
||||
<i class="el-icon-warning-outline" slot="reference" ></i>
|
||||
</el-popover>
|
||||
<span style="margin-right: 5px">本周流水笔数</span>
|
||||
</div>
|
||||
<div class="box-size">
|
||||
4023
|
||||
{{ this.statisticsData.this_week_count }}
|
||||
</div>
|
||||
<div class="box-but">
|
||||
<div class="icon-lv">
|
||||
<!-- <div class="icon-lv">
|
||||
<i class="el-icon-bottom"></i>
|
||||
<span>20.5%</span>
|
||||
<span>{{ this.statisticsData.week_count_chain }}%</span>
|
||||
</div> -->
|
||||
|
||||
|
||||
<div class="icon-lv2" v-if="this.statisticsData.week_count_chain<=0">
|
||||
<i v-if="this.statisticsData.week_count_chain==0" class="el-icon-minus"></i>
|
||||
<i v-else class="el-icon-bottom"></i>
|
||||
<span>{{ this.statisticsData.week_count_chain?this.statisticsData.week_count_chain:0 }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="icon-lv" v-else>
|
||||
<i class="el-icon-top"></i>
|
||||
<span>{{ this.statisticsData.week_count_chain?this.statisticsData.week_count_chain:0 }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div>环比</div>
|
||||
<div> <i class="el-icon-arrow-right"></i> </div>
|
||||
</div>
|
||||
@ -107,51 +157,31 @@
|
||||
|
||||
<div class="top-sl" >
|
||||
<div class="box-title">
|
||||
<span style="margin-right: 5px">本日流水总额</span>
|
||||
<el-popover
|
||||
placement="top-start"
|
||||
title="标题"
|
||||
width="200"
|
||||
trigger="hover"
|
||||
content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。">
|
||||
|
||||
<i class="el-icon-warning-outline" slot="reference" ></i>
|
||||
</el-popover>
|
||||
<span style="margin-right: 5px">本月流水笔数</span>
|
||||
</div>
|
||||
<div class="box-size">
|
||||
4023
|
||||
{{ this.statisticsData.this_month_count }}
|
||||
</div>
|
||||
<div class="box-but">
|
||||
<div class="icon-lv">
|
||||
<!-- <div class="icon-lv">
|
||||
<i class="el-icon-bottom"></i>
|
||||
<span>20.5%</span>
|
||||
</div>
|
||||
<div>环比</div>
|
||||
<div> <i class="el-icon-arrow-right"></i> </div>
|
||||
</div>
|
||||
</div>
|
||||
<span>{{ this.statisticsData.month_count_chain }}%</span>
|
||||
</div> -->
|
||||
|
||||
<div class="top-sl" >
|
||||
<div class="box-title">
|
||||
<span style="margin-right: 5px">本日流水总额</span>
|
||||
<el-popover
|
||||
placement="top-start"
|
||||
title="标题"
|
||||
width="200"
|
||||
trigger="hover"
|
||||
content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。">
|
||||
|
||||
<i class="el-icon-warning-outline" slot="reference" ></i>
|
||||
</el-popover>
|
||||
</div>
|
||||
<div class="box-size">
|
||||
4023
|
||||
</div>
|
||||
<div class="box-but">
|
||||
<div class="icon-lv">
|
||||
<i class="el-icon-bottom"></i>
|
||||
<span>20.5%</span>
|
||||
|
||||
<div class="icon-lv2" v-if="this.statisticsData.month_count_chain<=0">
|
||||
<i v-if="this.statisticsData.month_count_chain==0" class="el-icon-minus"></i>
|
||||
<i v-else class="el-icon-bottom"></i>
|
||||
<span>{{ this.statisticsData.month_count_chain?this.statisticsData.month_count_chain:0 }}</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="icon-lv" v-else>
|
||||
<i class="el-icon-top"></i>
|
||||
<span>{{ this.statisticsData.month_count_chain?this.statisticsData.month_count_chain:0 }}</span>
|
||||
</div>
|
||||
|
||||
<div>环比</div>
|
||||
<div> <i class="el-icon-arrow-right"></i> </div>
|
||||
</div>
|
||||
@ -162,15 +192,50 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { turnoverStatisticsApi } from "@/api/indexStatistics";
|
||||
|
||||
export default {
|
||||
name: "topindex",
|
||||
data(){
|
||||
return{
|
||||
|
||||
loading:false,
|
||||
statisticsData: {
|
||||
today_count: 0,
|
||||
today_sum: 0,
|
||||
// yesterday_count: 0,
|
||||
// yesterday_sum: 0.0,
|
||||
today_count_chain: 0.0,
|
||||
today_sum_chain: 0.0,
|
||||
// last_month_count: 0,
|
||||
// last_month_sum: 0.0,
|
||||
this_month_count: 0,
|
||||
this_month_sum: 0.0,
|
||||
month_count_chain: 0.0,
|
||||
month_sum_chain: 0.0,
|
||||
// last_week_count: 0,
|
||||
// last_week_sum: 0.0,
|
||||
this_week_count: 0,
|
||||
this_week_sum: 0.0,
|
||||
week_count_chain: 0.0,
|
||||
week_sum_chain: 0.0,
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDate()
|
||||
},
|
||||
methods:{
|
||||
|
||||
getDate() {
|
||||
this.loading = true
|
||||
turnoverStatisticsApi().then(res=>{
|
||||
if (res.code == 200) {
|
||||
this.statisticsData = res.data
|
||||
this.loading = false
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -223,4 +288,16 @@ export default {
|
||||
font-size: 14px;
|
||||
color: #2BA471;
|
||||
}
|
||||
|
||||
.icon-lv2{
|
||||
width: 71px;
|
||||
height: 24px;
|
||||
background: #f9e3e3;
|
||||
border-radius: 3px 3px 3px 3px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 14px;
|
||||
color: #a42b3b;
|
||||
}
|
||||
</style>
|
||||
|
@ -7,6 +7,7 @@ import com.fuint.business.marketingActivity.cardFule.entity.CardFuelRecord;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 燃油充值表(CardFuelRecord)表数据库访问层
|
||||
@ -92,5 +93,7 @@ public interface CardFuelRecordMapper {
|
||||
*/
|
||||
IPage<CardFuelRecordDTO> selectFuelRecord(@Param("page") Page page, CardFuelRecord cardFuelRecord);
|
||||
|
||||
Map<String, String> fuelStream(@Param("storeId") Integer storeId);
|
||||
|
||||
}
|
||||
|
||||
|
@ -355,6 +355,32 @@
|
||||
SELECT '屯油卡' AS recordName, recharge_balance rechargeBalance, income_litres obtain, create_time createTime FROM card_fuel_record
|
||||
ORDER BY create_time;
|
||||
</select>
|
||||
<select id="fuelStream" resultType="java.util.Map">
|
||||
SELECT
|
||||
-- 当天的数据和条数
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE DATE(create_time) = CURDATE()) AS CHAR) AS today_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE DATE(create_time) = CURDATE()) AS CHAR) AS today_sum,
|
||||
|
||||
-- 当周的数据和条数
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE WEEK(create_time) = WEEK(CURDATE())) AS CHAR) AS this_week_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE WEEK(create_time) = WEEK(CURDATE())) AS CHAR) AS this_week_sum,
|
||||
|
||||
-- 当月的数据和条数
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE MONTH(create_time) = MONTH(CURDATE())) AS CHAR) AS this_month_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE MONTH(create_time) = MONTH(CURDATE())) AS CHAR) AS this_month_sum,
|
||||
|
||||
-- 昨天的数据
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AS CHAR) AS yesterday_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AS CHAR) AS yesterday_sum,
|
||||
|
||||
-- 上周的数据
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE WEEK(create_time) = WEEK(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))) AS CHAR) AS last_week_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE WEEK(create_time) = WEEK(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))) AS CHAR) AS last_week_sum,
|
||||
|
||||
-- 上个月的数据
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE MONTH(create_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) AS CHAR) AS last_month_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE MONTH(create_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) AS CHAR) AS last_month_sum;
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
@ -10,6 +10,7 @@ import com.fuint.business.marketingActivity.cardValue.vo.Excel.CardValueRecordEx
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 储值充值表(CardValueRecord)表数据库访问层
|
||||
@ -26,6 +27,12 @@ public interface CardValueRecordMapper extends BaseMapper<CardValueRecord> {
|
||||
|
||||
List<CardValueRecordExcel> selectListExport(@Param("cardValueRecord") CardValueRecord cardValueRecord);
|
||||
|
||||
Map<String, String> cardStream(@Param("storeId") Integer storeId);
|
||||
|
||||
List<Map<String, String>> prepaidCardSales(@Param("storeId") Integer storeId);
|
||||
List<Map<String, String>> tunFuelCardSales(@Param("storeId") Integer storeId);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -123,6 +123,78 @@
|
||||
|
||||
</where>
|
||||
</select>
|
||||
<select id="cardStream" resultType="java.util.Map">
|
||||
SELECT
|
||||
-- 当天的数据和条数
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE DATE(create_time) = CURDATE()) AS CHAR) AS today_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE DATE(create_time) = CURDATE()) AS CHAR) AS today_sum,
|
||||
|
||||
-- 当周的数据和条数
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE WEEK(create_time) = WEEK(CURDATE())) AS CHAR) AS this_week_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE WEEK(create_time) = WEEK(CURDATE())) AS CHAR) AS this_week_sum,
|
||||
|
||||
-- 当月的数据和条数
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE MONTH(create_time) = MONTH(CURDATE())) AS CHAR) AS this_month_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE MONTH(create_time) = MONTH(CURDATE())) AS CHAR) AS this_month_sum,
|
||||
|
||||
-- 昨天的数据
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AS CHAR) AS yesterday_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AS CHAR) AS yesterday_sum,
|
||||
|
||||
-- 上周的数据
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE WEEK(create_time) = WEEK(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))) AS CHAR) AS last_week_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE WEEK(create_time) = WEEK(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))) AS CHAR) AS last_week_sum,
|
||||
|
||||
-- 上个月的数据
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE MONTH(create_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) AS CHAR) AS last_month_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE MONTH(create_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) AS CHAR) AS last_month_sum;
|
||||
</select>
|
||||
|
||||
<select id="prepaidCardSales" resultType="java.util.Map">
|
||||
|
||||
SELECT
|
||||
date_range.date AS sales_day,
|
||||
COALESCE(SUM(card_value_record.recharge_balance), 0) AS total_sales
|
||||
FROM
|
||||
(
|
||||
SELECT CURDATE() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY AS date
|
||||
FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
|
||||
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
|
||||
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) c
|
||||
) date_range
|
||||
LEFT JOIN
|
||||
card_value_record ON DATE(card_value_record.create_time) = date_range.date
|
||||
WHERE
|
||||
date_range.date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
|
||||
GROUP BY
|
||||
date_range.date
|
||||
ORDER BY
|
||||
date_range.date
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
<select id="tunFuelCardSales" resultType="java.util.Map">
|
||||
|
||||
SELECT
|
||||
date_range.date AS sales_day,
|
||||
COALESCE(SUM(card_fuel_record.recharge_balance), 0) AS total_sales
|
||||
FROM
|
||||
(
|
||||
SELECT CURDATE() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY AS date
|
||||
FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
|
||||
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
|
||||
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) c
|
||||
) date_range
|
||||
LEFT JOIN
|
||||
card_fuel_record ON DATE(card_fuel_record.create_time) = date_range.date
|
||||
WHERE
|
||||
date_range.date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
|
||||
GROUP BY
|
||||
date_range.date
|
||||
ORDER BY
|
||||
date_range.date
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
||||
|
@ -232,8 +232,8 @@ public class CardValueRecordServiceImpl extends ServiceImpl<CardValueRecordMappe
|
||||
|
||||
Map<String, Object> msg = new HashMap<>();
|
||||
msg.put("tag","cardTag");
|
||||
msg.put("ordId",cardValueRecordDTO.getId().toString());
|
||||
msg.put("ordNo",orderNo);
|
||||
msg.put("orderId",cardValueRecordDTO.getId().toString());
|
||||
msg.put("orderNo",orderNo);
|
||||
msg.put("storeId",nowAccountInfo.getStoreId());
|
||||
msg.put("chainStoreId",nowAccountInfo.getChainStoreId());
|
||||
|
||||
|
@ -8,6 +8,8 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 店铺员工表 Mapper 接口
|
||||
@ -36,4 +38,6 @@ public interface LJStaffMapper extends BaseMapper<LJStaff> {
|
||||
*/
|
||||
int auditPrem(@Param("id")Integer id,@Param("auditPrem") String auditPrem);
|
||||
|
||||
List<Map<String,String>> employeeSales(@Param("storeId") Integer storeId);
|
||||
|
||||
}
|
||||
|
@ -37,4 +37,24 @@
|
||||
from mt_staff
|
||||
where id = #{id} and audit_prem like concat('%', #{auditPrem}, '%')
|
||||
</select>
|
||||
<select id="employeeSales" resultType="java.util.Map">
|
||||
SELECT
|
||||
ms.id,
|
||||
ms.real_name realName,
|
||||
COALESCE(SUM(oo.pay_amount), 0) AS oilSum,
|
||||
COALESCE(SUM(cvr.recharge_balance), 0) AS cardSum,
|
||||
COALESCE(SUM(cfr.recharge_balance), 0) AS fuelSum,
|
||||
COALESCE(SUM(oo.pay_amount), 0) +
|
||||
COALESCE(SUM(cvr.recharge_balance), 0) +
|
||||
COALESCE(SUM(cfr.recharge_balance), 0) AS totalSum
|
||||
FROM
|
||||
mt_staff ms
|
||||
LEFT JOIN oil_order oo ON ms.id = oo.staff_id
|
||||
LEFT JOIN card_value_record cvr ON ms.id = cvr.mt_staff_id
|
||||
LEFT JOIN card_fuel_record cfr ON ms.id = cfr.mt_staff_id
|
||||
GROUP BY
|
||||
ms.id, ms.real_name
|
||||
ORDER BY
|
||||
totalSum DESC
|
||||
</select>
|
||||
</mapper>
|
||||
|
@ -159,4 +159,58 @@ public class OilOrderController extends BaseController {
|
||||
public ResponseObject addOilOrder(@Validated @RequestBody OilOrder oilOrder){
|
||||
return getSuccessResult(orderService.addOilOrder(oilOrder));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 信息统计
|
||||
*/
|
||||
|
||||
// 流水统计
|
||||
@GetMapping("turnoverStatistics")
|
||||
public ResponseObject turnoverStatistics() {
|
||||
return getSuccessResult(orderService.turnoverStatistics());
|
||||
|
||||
}
|
||||
// 员工销售
|
||||
@GetMapping("employeeSales")
|
||||
public ResponseObject employeeSales() {
|
||||
return getSuccessResult(orderService.employeeSales());
|
||||
|
||||
}
|
||||
// 储值卡销售额
|
||||
@GetMapping("prepaidCardSales")
|
||||
public ResponseObject prepaidCardSales() {
|
||||
return getSuccessResult(orderService.prepaidCardSales());
|
||||
}
|
||||
|
||||
// 屯油卡销售额
|
||||
@GetMapping("tunFuelCardSales")
|
||||
public ResponseObject tunFuelCardSales() {
|
||||
return getSuccessResult(orderService.tunFuelCardSales());
|
||||
}
|
||||
|
||||
// 商品销售额
|
||||
@GetMapping("merchandiseSales")
|
||||
public ResponseObject merchandiseSales() {
|
||||
return getSuccessResult(orderService.merchandiseSales());
|
||||
|
||||
}
|
||||
// 油品销售额
|
||||
@GetMapping("oilSales")
|
||||
public ResponseObject oilSales() {
|
||||
return getSuccessResult(orderService.oilSales());
|
||||
|
||||
}
|
||||
// 各油品销售额
|
||||
|
||||
/**
|
||||
* 根据传入的type判断年月周
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("salesByOilProduct")
|
||||
public ResponseObject salesByOilProduct(String type) {
|
||||
return getSuccessResult(orderService.salesByOilProduct(type));
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import com.fuint.business.order.vo.LJOrderVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 订单信息 Mapper层
|
||||
@ -26,4 +27,8 @@ public interface LJOrderMapper extends BaseMapper<LJOrder> {
|
||||
|
||||
|
||||
IPage<LJOrderVo> getMtOrderList(Page page, @Param("order") LJOrder order);
|
||||
|
||||
Map<String, String> goodsStream(@Param("storeId") Integer storeId);
|
||||
|
||||
List<Map<String, String>> merchandiseSales(@Param("storeId") Integer storeId);
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.fuint.business.order.entity.OilOrder;
|
||||
import com.fuint.business.order.vo.Excel.OilOrderExcel;
|
||||
import com.fuint.business.order.vo.OilOrderVo;
|
||||
import com.fuint.business.petrolStationManagement.entity.OilNumber;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
@ -44,4 +45,11 @@ public interface OilOrderMapper extends BaseMapper<OilOrder> {
|
||||
|
||||
public Map<String, String> orderAmountStatistics(@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("storeId") Integer storeId);
|
||||
|
||||
|
||||
Map<String, String> oilStream(@Param("storeId") Integer storeId);
|
||||
|
||||
List<Map<String, String>> oilSales(@Param("storeId") Integer storeId);
|
||||
|
||||
// List<Map<String, String>> salesByOilProductByWeek(@Param("list") List<OilNumber> oilName,@Param("storeId") Integer storeId);
|
||||
List<Map<String, String>> salesByOilProduct(@Param("list") List<OilNumber> oilName,@Param("storeId") Integer storeId,@Param("type") String type);
|
||||
}
|
||||
|
@ -94,5 +94,52 @@
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
<select id="goodsStream" resultType="java.util.Map">
|
||||
SELECT
|
||||
-- 当天的数据和条数
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE DATE(create_time) = CURDATE()) AS CHAR) AS today_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE DATE(create_time) = CURDATE()) AS CHAR) AS today_sum,
|
||||
|
||||
-- 当周的数据和条数
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE WEEK(create_time) = WEEK(CURDATE())) AS CHAR) AS this_week_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE WEEK(create_time) = WEEK(CURDATE())) AS CHAR) AS this_week_sum,
|
||||
|
||||
-- 当月的数据和条数
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE MONTH(create_time) = MONTH(CURDATE())) AS CHAR) AS this_month_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE MONTH(create_time) = MONTH(CURDATE())) AS CHAR) AS this_month_sum,
|
||||
|
||||
-- 昨天的数据
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AS CHAR) AS yesterday_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AS CHAR) AS yesterday_sum,
|
||||
|
||||
-- 上周的数据
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE WEEK(create_time) = WEEK(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))) AS CHAR) AS last_week_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE WEEK(create_time) = WEEK(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))) AS CHAR) AS last_week_sum,
|
||||
|
||||
-- 上个月的数据
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE MONTH(create_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) AS CHAR) AS last_month_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE MONTH(create_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) AS CHAR) AS last_month_sum;
|
||||
</select>
|
||||
<select id="merchandiseSales" resultType="java.util.Map">
|
||||
|
||||
SELECT
|
||||
date_range.date AS sales_day,
|
||||
COALESCE(SUM(mt_order.pay_amount), 0) AS total_sales
|
||||
FROM
|
||||
(
|
||||
SELECT CURDATE() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY AS date
|
||||
FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
|
||||
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
|
||||
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) c
|
||||
) date_range
|
||||
LEFT JOIN
|
||||
mt_order ON DATE(mt_order.create_time) = date_range.date
|
||||
WHERE
|
||||
date_range.date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
|
||||
GROUP BY
|
||||
date_range.date
|
||||
ORDER BY
|
||||
date_range.date;
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
@ -162,5 +162,95 @@
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
<select id="oilStream" resultType="java.util.Map">
|
||||
|
||||
SELECT
|
||||
-- 当天的数据和条数
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE DATE(create_time) = CURDATE()) AS CHAR) AS today_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE DATE(create_time) = CURDATE()) AS CHAR) AS today_sum,
|
||||
|
||||
-- 当周的数据和条数
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE WEEK(create_time) = WEEK(CURDATE())) AS CHAR) AS this_week_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE WEEK(create_time) = WEEK(CURDATE())) AS CHAR) AS this_week_sum,
|
||||
|
||||
-- 当月的数据和条数
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE MONTH(create_time) = MONTH(CURDATE())) AS CHAR) AS this_month_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE MONTH(create_time) = MONTH(CURDATE())) AS CHAR) AS this_month_sum,
|
||||
|
||||
-- 昨天的数据
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AS CHAR) AS yesterday_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AS CHAR) AS yesterday_sum,
|
||||
|
||||
-- 上周的数据
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE WEEK(create_time) = WEEK(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))) AS CHAR) AS last_week_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE WEEK(create_time) = WEEK(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))) AS CHAR) AS last_week_sum,
|
||||
|
||||
-- 上个月的数据
|
||||
CAST((SELECT COUNT(*) FROM oil_order WHERE MONTH(create_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) AS CHAR) AS last_month_count,
|
||||
CAST((SELECT SUM(pay_amount) FROM oil_order WHERE MONTH(create_time) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))) AS CHAR) AS last_month_sum;
|
||||
|
||||
</select>
|
||||
<select id="oilSales" resultType="java.util.Map">
|
||||
SELECT
|
||||
date_range.date AS sales_day,
|
||||
COALESCE(SUM(oil_order.pay_amount), 0) AS total_sales
|
||||
FROM
|
||||
(
|
||||
SELECT CURDATE() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY AS date
|
||||
FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
|
||||
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
|
||||
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) c
|
||||
) date_range
|
||||
LEFT JOIN
|
||||
oil_order ON DATE(oil_order.create_time) = date_range.date
|
||||
WHERE
|
||||
date_range.date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
|
||||
GROUP BY
|
||||
date_range.date
|
||||
ORDER BY
|
||||
date_range.date;
|
||||
</select>
|
||||
<!-- COUNT(*) AS count-->
|
||||
|
||||
<select id="salesByOilProduct" resultType="java.util.Map">
|
||||
SELECT
|
||||
<if test="type == 'week'">
|
||||
CONCAT(YEAR(oo.create_time), '年第', WEEK(oo.create_time),'周') AS year_week,
|
||||
</if>
|
||||
<if test="type == 'month'">
|
||||
CONCAT(YEAR(oo.create_time), '年', MONTH(oo.create_time),'月') AS year_week,
|
||||
</if>
|
||||
<if test="type == 'year'">
|
||||
CONCAT(YEAR(oo.create_time), '年') AS year_week,
|
||||
</if>
|
||||
|
||||
<foreach collection="list" item="list" separator=",">
|
||||
SUM(CASE WHEN oo.oils = #{list.id} THEN oo.pay_amount ELSE 0 END) AS #{list.oilName}
|
||||
</foreach>
|
||||
|
||||
FROM
|
||||
oil_order oo
|
||||
left join oil_name onn on onn.id = oo.oils
|
||||
WHERE
|
||||
<if test="type == 'week'">
|
||||
oo.create_time >= CURDATE() - INTERVAL 6 WEEK
|
||||
</if>
|
||||
<if test="type == 'month'">
|
||||
oo.create_time >= CURDATE() - INTERVAL 6 MONTH
|
||||
</if>
|
||||
<if test="type == 'year'">
|
||||
oo.create_time >= CURDATE() - INTERVAL 6 YEAR
|
||||
</if>
|
||||
GROUP BY
|
||||
YEAR(oo.create_time)
|
||||
<if test="type == 'week'">
|
||||
, WEEK(oo.create_time)
|
||||
</if>
|
||||
<if test="type == 'month'">
|
||||
, MONTH(oo.create_time)
|
||||
</if>
|
||||
ORDER BY
|
||||
year_week
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.fuint.business.order.entity.CashierOrder;
|
||||
import com.fuint.business.order.entity.OilOrder;
|
||||
import com.fuint.business.order.vo.OilOrderVo;
|
||||
import com.fuint.framework.web.ResponseObject;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
@ -104,4 +106,18 @@ public interface OilOrderService extends IService<OilOrder> {
|
||||
* @return
|
||||
*/
|
||||
public int updateOilOrder(OilOrder order);
|
||||
|
||||
|
||||
// 流水统计
|
||||
Map<String, Double> turnoverStatistics();
|
||||
List<Map<String, String>> employeeSales();
|
||||
List<Map<String, String>> prepaidCardSales();
|
||||
List<Map<String, String>> tunFuelCardSales();
|
||||
List<Map<String, String>> merchandiseSales();
|
||||
List<Map<String, String>> oilSales();
|
||||
List<List<Object>> salesByOilProduct(String type);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -14,7 +14,13 @@ import com.fuint.api.fuyou.service.MerchantConfigService;
|
||||
import com.fuint.api.fuyou.service.OilConfigService;
|
||||
import com.fuint.business.convenienceSore.entity.LJGoods;
|
||||
import com.fuint.business.convenienceSore.service.LJGoodsService;
|
||||
import com.fuint.business.marketingActivity.cardFule.entity.CardFuelRecord;
|
||||
import com.fuint.business.marketingActivity.cardFule.mapper.CardFuelRecordMapper;
|
||||
import com.fuint.business.marketingActivity.cardValue.entity.CardValueRecord;
|
||||
import com.fuint.business.marketingActivity.cardValue.mapper.CardValueRecordMapper;
|
||||
import com.fuint.business.member.mapper.LJStaffMapper;
|
||||
import com.fuint.business.order.entity.*;
|
||||
import com.fuint.business.order.mapper.LJOrderMapper;
|
||||
import com.fuint.business.order.mapper.OilOrderMapper;
|
||||
import com.fuint.business.order.service.*;
|
||||
import com.fuint.business.order.vo.Excel.OilOrderExcel;
|
||||
@ -23,6 +29,7 @@ import com.fuint.business.petrolStationManagement.entity.OilName;
|
||||
import com.fuint.business.petrolStationManagement.entity.OilNumber;
|
||||
import com.fuint.business.petrolStationManagement.entity.OilTank;
|
||||
import com.fuint.business.petrolStationManagement.entity.OilTracking;
|
||||
import com.fuint.business.petrolStationManagement.mapper.OilNumberMapper;
|
||||
import com.fuint.business.petrolStationManagement.service.OilNameService;
|
||||
import com.fuint.business.petrolStationManagement.service.OilNumberService;
|
||||
import com.fuint.business.petrolStationManagement.service.OilTankService;
|
||||
@ -42,9 +49,14 @@ import com.fuint.system.config.service.SysConfigService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Service
|
||||
public class OilOrderServiceImpl extends ServiceImpl<OilOrderMapper, OilOrder> implements OilOrderService {
|
||||
@ -592,6 +604,7 @@ public class OilOrderServiceImpl extends ServiceImpl<OilOrderMapper, OilOrder> i
|
||||
return row;
|
||||
}
|
||||
|
||||
|
||||
@Autowired
|
||||
private SysConfigService sysConfigService;
|
||||
@Autowired
|
||||
@ -690,4 +703,176 @@ public class OilOrderServiceImpl extends ServiceImpl<OilOrderMapper, OilOrder> i
|
||||
|
||||
cardBalanceChangeService.insertCardBalance(cardBalanceChange);
|
||||
}
|
||||
|
||||
@Resource
|
||||
OilOrderMapper oilOrderMapper;
|
||||
@Resource
|
||||
LJOrderMapper ljOrderMapper;
|
||||
@Resource
|
||||
CardValueRecordMapper cardValueRecordMapper;
|
||||
@Resource
|
||||
CardFuelRecordMapper cardFuelRecordMapper;
|
||||
@Resource
|
||||
LJStaffMapper ljStaffMapper;
|
||||
@Override
|
||||
public Map<String, Double> turnoverStatistics() {
|
||||
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
|
||||
Integer storeId = nowAccountInfo.getStoreId();
|
||||
// 油品流水
|
||||
Map<String, String> oilStreamMap = oilOrderMapper.oilStream(storeId);
|
||||
// 商品流水
|
||||
Map<String, String> goodsStreamMap = ljOrderMapper.goodsStream(storeId);
|
||||
// 储值卡流水
|
||||
Map<String, String> cardStreamMap = cardValueRecordMapper.cardStream(storeId);
|
||||
// 屯油卡流水
|
||||
Map<String, String> fuelStreamMap = cardFuelRecordMapper.fuelStream(storeId);
|
||||
// 计算总流水
|
||||
// sumStream
|
||||
// 进行Map的合并
|
||||
Map<String, Double> mergedMap = mergeMaps(
|
||||
oilStreamMap,
|
||||
goodsStreamMap,
|
||||
cardStreamMap,
|
||||
fuelStreamMap
|
||||
);
|
||||
|
||||
// 计算对应的环比
|
||||
chainMaps(mergedMap);
|
||||
// 数据组装
|
||||
|
||||
|
||||
return mergedMap;
|
||||
}
|
||||
|
||||
// 员工统计
|
||||
@Override
|
||||
public List<Map<String, String>> employeeSales() {
|
||||
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
|
||||
Integer storeId = nowAccountInfo.getStoreId();
|
||||
// 员工统计油品
|
||||
List<Map<String, String>> maps = ljStaffMapper.employeeSales(storeId);
|
||||
return maps;
|
||||
}
|
||||
// 储值卡销售额
|
||||
@Override
|
||||
public List<Map<String, String>> prepaidCardSales() {
|
||||
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
|
||||
Integer storeId = nowAccountInfo.getStoreId();
|
||||
|
||||
return cardValueRecordMapper.prepaidCardSales(storeId);
|
||||
}
|
||||
|
||||
// 储值卡销售额
|
||||
@Override
|
||||
public List<Map<String, String>> tunFuelCardSales() {
|
||||
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
|
||||
Integer storeId = nowAccountInfo.getStoreId();
|
||||
|
||||
return cardValueRecordMapper.tunFuelCardSales(storeId);
|
||||
}
|
||||
// 商品销售额
|
||||
@Override
|
||||
public List<Map<String, String>> merchandiseSales() {
|
||||
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
|
||||
Integer storeId = nowAccountInfo.getStoreId();
|
||||
List<Map<String, String>> maps = ljOrderMapper.merchandiseSales(storeId);
|
||||
return maps;
|
||||
}
|
||||
// 油品销售额
|
||||
@Override
|
||||
public List<Map<String, String>> oilSales() {
|
||||
|
||||
|
||||
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
|
||||
Integer storeId = nowAccountInfo.getStoreId();
|
||||
|
||||
return oilOrderMapper.oilSales(storeId);
|
||||
}
|
||||
|
||||
@Resource
|
||||
OilNumberMapper oilNumberMapper;
|
||||
|
||||
// 各油品销售额
|
||||
@Override
|
||||
public List<List<Object>> salesByOilProduct(String type) {
|
||||
AccountInfo currentAccountInfo = TokenUtil.getNowAccountInfo();
|
||||
Integer storeId = currentAccountInfo.getStoreId();
|
||||
|
||||
if (ObjectUtil.isEmpty(type)) {
|
||||
type = "week";
|
||||
}
|
||||
// 获取所有油品名称
|
||||
List<OilNumber> oilNames = oilNumberMapper.getOilName(storeId);
|
||||
|
||||
// 构建结果列表
|
||||
List<List<Object>> resultList = new ArrayList<>();
|
||||
|
||||
// 添加油品名称作为第一行
|
||||
List<Object> headerRow = new ArrayList<>();
|
||||
headerRow.add("product");
|
||||
for (OilNumber oilNumber : oilNames) {
|
||||
headerRow.add(oilNumber.getOilName());
|
||||
}
|
||||
resultList.add(headerRow);
|
||||
|
||||
// 获取销售数据
|
||||
List<Map<String, String>> salesData = oilOrderMapper.salesByOilProduct(oilNames, storeId, type);
|
||||
|
||||
// 将销售数据转换为结果列表格式
|
||||
for (Map<String, String> salesDataRow : salesData) {
|
||||
List<Object> dataRow = new ArrayList<>();
|
||||
dataRow.add(salesDataRow.get("year_week"));
|
||||
for (OilNumber oilNumber : oilNames) {
|
||||
dataRow.add(salesDataRow.get(oilNumber.getOilName()));
|
||||
}
|
||||
resultList.add(dataRow);
|
||||
}
|
||||
|
||||
return resultList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private static Map<String, Double> mergeMaps(Map<String, String>... maps) {
|
||||
// 使用Stream API进行Map的合并
|
||||
return Stream.of(maps)
|
||||
.flatMap(map -> map.entrySet().stream())
|
||||
.collect(Collectors.toMap(
|
||||
Map.Entry::getKey,
|
||||
entry -> entry.getValue() == null ? 0.0 : Double.parseDouble(entry.getValue()),
|
||||
Double::sum));
|
||||
}
|
||||
|
||||
// 环比计算 chain
|
||||
private static Map<String, Double> chainMaps(Map<String, Double> maps) {
|
||||
// 当天流水
|
||||
maps.put("today_sum_chain",calculateTheRingComparison (maps.getOrDefault("today_sum",0.0),maps.getOrDefault("yesterday_sum",0.0)));
|
||||
// 当天笔数
|
||||
maps.put("today_count_chain",calculateTheRingComparison (maps.getOrDefault("today_count",0.0),maps.getOrDefault("yesterday_count",0.0)));
|
||||
// 当周流水
|
||||
maps.put("week_sum_chain",calculateTheRingComparison (maps.getOrDefault("this_week_sum",0.0),maps.getOrDefault("last_week_sum",0.0)));
|
||||
// 当周笔数
|
||||
maps.put("week_count_chain",calculateTheRingComparison (maps.getOrDefault("this_week_count",0.0),maps.getOrDefault("last_week_count",0.0)));
|
||||
// 当月流水
|
||||
maps.put("month_sum_chain",calculateTheRingComparison (maps.getOrDefault("this_month_sum",0.0),maps.getOrDefault("last_month_sum",0.0)));
|
||||
// 当月笔数
|
||||
maps.put("month_count_chain",calculateTheRingComparison (maps.getOrDefault("this_month_count",0.0),maps.getOrDefault("last_month_count",0.0)));
|
||||
|
||||
return maps;
|
||||
}
|
||||
|
||||
|
||||
private static Double calculateTheRingComparison(Double res, Double last) {
|
||||
if (ObjectUtil.isEmpty(last) || last == 0) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
// 计算环比增长率
|
||||
double growthRate = (res - last) / last * 100;
|
||||
|
||||
// 使用DecimalFormat将结果格式化为两位小数
|
||||
DecimalFormat decimalFormat = new DecimalFormat("#.##");
|
||||
return Double.valueOf(decimalFormat.format(growthRate));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user