更新10.12

This commit is contained in:
许允枞 2024-10-14 14:19:22 +08:00
parent 254295a0c1
commit 3cbed13ed9
11 changed files with 232 additions and 108 deletions

View File

@ -163,3 +163,20 @@ export function getDataBoard(query) {
}); });
} }
// 油站首页数据分析
export function getDataAnalysis(query) {
return request({
url: 'business/allOrderInfo/getDataAnalysis',
method: 'get',
params:query
});
}
// 油站首页数据展示
export function getDataShow(query) {
return request({
url: 'business/allOrderInfo/getDataShow',
method: 'get',
params:query
});
}

View File

@ -2,7 +2,7 @@
<div class="home-index"> <div class="home-index">
<el-carousel height="230px"> <el-carousel height="230px">
<el-carousel-item v-for="(item,index) in bannerList" :key="index"> <el-carousel-item v-for="(item,index) in bannerList" :key="index">
<div class="bannser">- <div class="bannser">
<img :src="imagePath+item.productImage" alt="" > <img :src="imagePath+item.productImage" alt="" >
</div> </div>
@ -10,7 +10,7 @@
</el-carousel> </el-carousel>
<div class="b-bs"> <div class="b-bs">
<div class="left-box"> <div class="left-box">
<div class="h-tt">核心数据</div> <div>核心数据</div>
<div style="display: flex;justify-content: space-between"> <div style="display: flex;justify-content: space-between">
<div class="san-box"> <div class="san-box">
<div class="r-title">{{ storeTotal.allAmount || 0 }}</div> <div class="r-title">{{ storeTotal.allAmount || 0 }}</div>
@ -56,10 +56,12 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<div class="h-anniu" :class="{'q-anniu' : timeShow == true}" @click="timeShow = true" > <img src="../assets/images/zdy.png" style="width: 14px; height: 14px" > 自定义</div> <div class="h-anniu" :class="{'q-anniu' : timeShow == true}" @click="timeShow = true" > <img src="../assets/images/zdy.png" style="width: 14px; height: 14px" > 自定义</div>
<div class="h-tt">数据看板</div>
<div class="q-anniu">近一周</div>
<div style="margin-right: 40px"> <div style="margin-right: 40px">
<el-date-picker <el-date-picker
v-model="value1" v-model="value1"
type="daterange" type="datetimerange"
value-format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
@ -72,28 +74,28 @@
<div class="k-box"> <div class="k-box">
<div class="d-s" style="font-size: 12px;color: #999999;"> <div class="d-s" style="font-size: 12px;color: #999999;">
<div class="sian"></div> <div class="sian"></div>
<div style="color: #333">油品销售金额/交易笔数</div> <div>油品销售金额/交易笔数</div>
</div> </div>
<div class="num-size">{{ storeAmount.oilAmount || 0 }}/{{ storeAmount.oilNum || 0 }}</div> <div class="num-size">{{ storeAmount.oilAmount || 0 }}/{{ storeAmount.oilNum || 0 }}</div>
</div> </div>
<div class="k-box"> <div class="k-box">
<div class="d-s" style="font-size: 12px;color: #999999;"> <div class="d-s" style="font-size: 12px;color: #999999;">
<div class="sian"></div> <div class="sian"></div>
<div style="color: #333">会员充值金额/充值笔数</div> <div>会员充值金额/充值笔数</div>
</div> </div>
<div class="num-size">{{ storeAmount.userRechargeAmount || 0 }}/{{ storeAmount.userRechargeNum || 0 }}</div> <div class="num-size">{{ storeAmount.userRechargeAmount || 0 }}/{{ storeAmount.userRechargeNum || 0 }}</div>
</div> </div>
<div class="k-box"> <div class="k-box">
<div class="d-s" style="font-size: 12px;color: #999999;"> <div class="d-s" style="font-size: 12px;color: #999999;">
<div class="sian"></div> <div class="sian"></div>
<div style="color: #333">便利店销售金额/交易笔数</div> <div>便利店销售金额/交易笔数</div>
</div> </div>
<div class="num-size">{{ storeAmount.minimartAmount || 0 }}/{{ storeAmount.minimartNum || 0 }}</div> <div class="num-size">{{ storeAmount.minimartAmount || 0 }}/{{ storeAmount.minimartNum || 0 }}</div>
</div> </div>
<div class="k-box"> <div class="k-box">
<div class="d-s" style="font-size: 12px;color: #999999;"> <div class="d-s" style="font-size: 12px;color: #999999;">
<div class="sian"></div> <div class="sian"></div>
<div style="color: #333">积分商城销售金额/兑换笔数</div> <div>积分商城销售金额/兑换笔数</div>
</div> </div>
<div class="num-size">{{ storeAmount.pointMallAmount || 0 }}/{{ storeAmount.pointMallNum || 0 }}</div> <div class="num-size">{{ storeAmount.pointMallAmount || 0 }}/{{ storeAmount.pointMallNum || 0 }}</div>
</div> </div>
@ -133,66 +135,30 @@
</div> </div>
<div style="font-size: 14px">{{ item.name }}</div> <div style="font-size: 14px">{{ item.name }}</div>
</div> </div>
<div>{{ item.name }}</div>
</div> </div>
</div> </div>
</div> </div>
<div class="b-bs"> <div class="b-bs">
<div class="left-box-t"> <div class="left-box-t">
<div class="d-s"> <div>数据展示</div>
<div class="h-tt" style="margin-right: 15px" >油品交易分析</div>
<el-dropdown placement="bottom-start" >
<div class="h-anniu" :class="{'q-anniu' : timeShow == false}" @click="timeShow = false ">近一周 <i class="el-icon-arrow-down el-icon--right"></i></div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>今日</el-dropdown-item>
<el-dropdown-item>昨日</el-dropdown-item>
<el-dropdown-item>近一周</el-dropdown-item>
<el-dropdown-item>近一月</el-dropdown-item>
<el-dropdown-item>近一周</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<div class="h-anniu" :class="{'q-anniu' : timeShow == true}" @click="timeShow = true" > <img src="../assets/images/zdy.png" style="width: 14px; height: 14px" > 自定义</div>
<div style="margin-right: 40px">
<el-date-picker
v-model="value1"
type="daterange"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@blur="getStoreAmount">
</el-date-picker>
</div>
</div>
</div> </div>
<div class="right-box-t"> <div class="right-box-t">
<div style="font-size: 16px;font-weight: bold"><span style="margin-right: 15px">员工排行</span> <el-dropdown placement="bottom-start" > <div style="font-size: 16px;font-weight: bold">员工排行</div>
<div class="h-anniu" :class="{'q-anniu' : timeShow == false}" @click="timeShow = false ">近一周 <i class="el-icon-arrow-down el-icon--right"></i></div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>今日</el-dropdown-item>
<el-dropdown-item>昨日</el-dropdown-item>
<el-dropdown-item>近一周</el-dropdown-item>
<el-dropdown-item>近一月</el-dropdown-item>
<el-dropdown-item>近一周</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown></div>
<div class="hui-box"> <div class="hui-box">
<div style="width: 10%">排名</div> <div style="width: 10%">排名</div>
<div>员工姓名</div> <div>员工姓名</div>
<div style="width: 25%">会员充值金额</div> <div style="width: 25%">会员充值金额)</div>
<div style="width: 25%">油品销售金额</div> <div style="width: 25%">油品销售金额)</div>
<div>总销售额</div> <div>总销售额</div>
</div> </div>
<div style="overflow: auto; scrollbar-width: none; height: 74% "> <div class="hang-box" v-for="(item,index) in employeList" :key="index">
<div class="hang-box" v-for="(item,index) in employeList" :key="index"> <div style="width: 10%">{{index +1}}</div>
<div style="width: 10%">{{index +1}}</div> <div>{{ item.realName }}</div>
<div>{{ item.realName }}</div> <div style="width: 25%">{{item.cardSum}}</div>
<div style="width: 25%">{{item.cardSum}}</div> <div style="width: 25%">{{item.oilSum}}</div>
<div style="width: 25%">{{item.oilSum}}</div> <div>{{item.totalSum}}</div>
<div>{{item.totalSum}}</div>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="bottom_"> <div class="bottom_">
@ -305,14 +271,47 @@ export default {
this.getHardwareList() this.getHardwareList()
this.getNoticeList() this.getNoticeList()
this.getEmployeList() this.getEmployeList()
this.getDataAnalysis()
this.getDataShow()
}, },
mounted() { mounted() {
// this.initChart() // this.initChart()
}, },
methods:{ methods: {
goList(){ goList() {
this.$router.push('/notificationList/index') this.$router.push('/notificationList/index')
}, },
//
getDataAnalysis() {
getDataAnalysis().then(res => {
console.log('数据分析的数据',res)
if (res.code == 200) {
for (let i = 0; i < res.data.length; i++) {
if (res.data[i].type == 1) {
this.dataAnalysisOilNumberList.push(res.data[i])
}else if (res.data[i].type == 2) {
this.dataAnalysisIfOilList.push(res.data[i])
}else if (res.data[i].type == 3) {
this.dataAnalysisAllList.push(res.data[i])
}
}
console.log('dataAnalysisOilNumberList',this.dataAnalysisOilNumberList)
console.log('dataAnalysisIfOilList',this.dataAnalysisIfOilList)
console.log('dataAnalysisAllList',this.dataAnalysisAllList)
this.initChart()
}
})
},
//
getDataShow(){
const a = {
startTime: "2024-01-01",
endTime: "2024-11-01",
}
getDataShow(a).then(res => {
console.log('数据展示的数据',res)
})
},
// //
getEmployeList() { getEmployeList() {
this.employeLoading = true this.employeLoading = true
@ -928,17 +927,17 @@ export default {
height: 380px; height: 380px;
box-sizing: border-box; box-sizing: border-box;
padding: 15px; padding: 15px;
overflow: auto;
scrollbar-width: none;
} }
.san-box{ .san-box{
width: 24%; width: 24%;
height: 100px; height: 120px;
box-sizing: border-box; box-sizing: border-box;
border-radius: 8px; border-radius: 8px;
background: #fe8c4a; background: #fe8c4a;
margin: 15px auto; margin: 15px 0px;
margin-right: 15px;
box-sizing: border-box; box-sizing: border-box;
padding: 20px 40px; padding: 20px 40px;
} }
@ -968,53 +967,37 @@ export default {
overflow: hidden; // overflow: hidden; //
text-overflow: ellipsis; // text-overflow: ellipsis; //
font-size: 14px; font-size: 14px;
color: #333; color: #777777;
margin: 14px auto; margin: 14px auto;
} }
.h-tt{ .h-tt{
font-size: 16px; font-size: 16px;
color: #333333; color: #333333;
font-weight: bold; font-weight: bold;
display: flex; margin-right: 40px;
justify-content: space-between;
} }
.q-anniu{ .q-anniu{
width: 80px; width: 80px;
height: 26px; height: 26px;
background: #FF9655 !important; background: #FF9655;
border-radius: 4px 4px 4px 4px; border-radius: 4px 4px 4px 4px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
color: #fff !important; color: #fff;
font-size: 12px;
cursor: pointer; cursor: pointer;
margin-right: 20px; margin-right: 20px;
} }
.h-anniu{
width: 80px;
height: 26px;
background: #fafafa;
border-radius: 4px 4px 4px 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
margin-right: 20px;
font-weight: 400;
font-size: 12px;
color: #555555;
}
.k-box{ .k-box{
width: 24%; width: 220px;
height: 68px; height: 68px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 8px; border-radius: 8px;
border: 1px solid #e1e0e0; border: 1px solid #e1e0e0;
box-sizing: border-box; box-sizing: border-box;
margin: 0 auto;
padding: 10px; padding: 10px;
margin-right: 10px;
} }
.num-size{ .num-size{
font-weight: bold; font-weight: bold;
@ -1087,7 +1070,6 @@ export default {
box-sizing: border-box; box-sizing: border-box;
padding: 10px; padding: 10px;
display: flex; display: flex;
font-size: 14px;
justify-content: space-between; justify-content: space-between;
margin: 10px auto; margin: 10px auto;
div{ div{
@ -1097,13 +1079,12 @@ export default {
} }
.hang-box{ .hang-box{
border-radius: 8px; border-radius: 8px;
font-size: 14px;
width: 100%; width: 100%;
box-sizing: border-box; box-sizing: border-box;
padding: 5px; padding: 10px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin: 0px auto; margin: 10px auto;
div{ div{
width: 20%; width: 20%;
text-align: center; text-align: center;

View File

@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -309,6 +310,29 @@ public class AllOrderInfoController extends BaseController {
return getSuccessResult(allOrderInfoService.getDataBoard(map)); return getSuccessResult(allOrderInfoService.getDataBoard(map));
} }
/**
* 油站首页数据分析
* @param map
* @return
*/
@GetMapping("getDataAnalysis")
public ResponseObject getDataAnalysis(Map<String, String> map){
return getSuccessResult(allOrderInfoService.getDataAnalysis(map));
}
/**
* 油站首页数据展示
* @param map
* @return
*/
@GetMapping("getDataShow")
public ResponseObject getDataShow(String startTime, String endTime) {
Map<String, String> map = new HashMap<>();
map.put("startTime", startTime);
map.put("endTime", endTime);
return getSuccessResult(allOrderInfoService.getDataShow(map));
}
/** /**
* 消费记录小程序 * 消费记录小程序
* @param pageNo * @param pageNo

View File

@ -140,4 +140,6 @@ public interface OilOrderMapper extends BaseMapper<OilOrder> {
OilOrderVo getInfoByOrderNo(String orderNo); OilOrderVo getInfoByOrderNo(String orderNo);
Double selectSumMoeny(@Param("orderNos") List<String> orderNos); Double selectSumMoeny(@Param("orderNos") List<String> orderNos);
double selectSumMoneyByDayAndOilNumber(@Param("oilName") String oilName, @Param("day") String day, @Param("storeId") Integer storeId);
} }

View File

@ -804,4 +804,8 @@
#{item} #{item}
</foreach> </foreach>
</select> </select>
<select id="selectSumMoneyByDayAndOilNumber" resultType="java.lang.Double">
select IFNULL(SUM(pay_amount), 0) from oil_order
where DATE(pay_time) = #{day} and oils = #{oilName} and store_id = #{storeId}
</select>
</mapper> </mapper>

View File

@ -157,6 +157,13 @@ public interface AllOrderInfoService {
*/ */
List<HomeDataAnalysisVo> getDataAnalysis(Map<String, String> map); List<HomeDataAnalysisVo> getDataAnalysis(Map<String, String> map);
/**
* 油站首页数据展示
* @param map
* @return
*/
HomeDataShowVo getDataShow(Map<String, String> map);
/** /**
* 消费记录 * 消费记录
* @param page * @param page

View File

@ -1737,14 +1737,15 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
//查询所有油品 //查询所有油品
List<OilNumber> oilNumbers = oilNumberMapper.selectList(new LambdaQueryWrapper<OilNumber>() // List<OilNumber> oilNumbers = oilNumberMapper.selectList(new LambdaQueryWrapper<OilNumber>()
.eq(OilNumber::getStoreId, nowAccountInfo.getStoreId()) // .eq(OilNumber::getStoreId, nowAccountInfo.getStoreId())
.eq(OilNumber::getState, "1") // .eq(OilNumber::getState, "启用")
.eq(OilNumber::getIfDelete, "0")); // .ne(OilNumber::getIfDelete, "1"));
List<OilNumber> oilNumbers = oilNumberMapper.selectAllOil(nowAccountInfo.getStoreId());
LambdaQueryWrapper<OilOrder> oilOrderQuery = new LambdaQueryWrapper<OilOrder>(); LambdaQueryWrapper<OilOrder> oilOrderQuery = new LambdaQueryWrapper<OilOrder>();
oilOrderQuery.eq(OilOrder::getStoreId, nowAccountInfo.getStoreId()) oilOrderQuery.eq(OilOrder::getStoreId, nowAccountInfo.getStoreId())
.eq(OilOrder::getUserId, nowAccountInfo.getId()) .eq(OilOrder::getStoreId, nowAccountInfo.getStoreId())
.eq(OilOrder::getOrderStatus, "paid"); .eq(OilOrder::getOrderStatus, "paid");
if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) { if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) {
oilOrderQuery.between(OilOrder::getCreateTime, startTime, endTime); oilOrderQuery.between(OilOrder::getCreateTime, startTime, endTime);
@ -1754,7 +1755,7 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
//油号之间占比 //油号之间占比
for (OilNumber oilNumber : oilNumbers) { for (OilNumber oilNumber : oilNumbers) {
HomeDataAnalysisVo homeDataAnalysisVo = new HomeDataAnalysisVo(); HomeDataAnalysisVo homeDataAnalysisVo = new HomeDataAnalysisVo();
homeDataAnalysisVo.setName(oilNumber.getOilName()); homeDataAnalysisVo.setName(oilNumber.getOilNames() + oilNumber.getOilType() + "占比");
homeDataAnalysisVo.setType(1); homeDataAnalysisVo.setType(1);
List<OilOrder> oilList = new ArrayList<>(); List<OilOrder> oilList = new ArrayList<>();
for (OilOrder oilOrder : oilOrders) { for (OilOrder oilOrder : oilOrders) {
@ -1762,9 +1763,9 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
oilList.add(oilOrder); oilList.add(oilOrder);
} }
} }
DecimalFormat df = new DecimalFormat("#.00"); double averageValue = (Double.parseDouble(String.valueOf(oilList.size())) / oilOrders.size()) * 100;
String formattedResult = df.format(oilList.size()); String formattedResult = getFormattedResult(averageValue);
homeDataAnalysisVo.setValue(Double.parseDouble(formattedResult) / oilNumbers.size()); homeDataAnalysisVo.setValue(Double.parseDouble(formattedResult));
list.add(homeDataAnalysisVo); list.add(homeDataAnalysisVo);
} }
@ -1780,10 +1781,10 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
Integer oilAllOrderInfos = 0; Integer oilAllOrderInfos = 0;
Integer productionAllOrderInfos = 0; Integer productionAllOrderInfos = 0;
//油品交易占比 // //油品交易占比
Double shareOfOilTransactions = 0.0; // shareOfOilTransactions = 0.0;
//非油品交易占比 // //非油品交易占比
Double shareOfNonOilTransactions = 0.0; // shareOfNonOilTransactions = 0.0;
for (AllOrderInfo allOrderInfo : allOrderInfos) { for (AllOrderInfo allOrderInfo : allOrderInfos) {
if ("1".equals(allOrderInfo.getType())) { if ("1".equals(allOrderInfo.getType())) {
oilAllOrderInfos += 1; oilAllOrderInfos += 1;
@ -1791,8 +1792,9 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
productionAllOrderInfos += 1; productionAllOrderInfos += 1;
} }
} }
shareOfOilTransactions = Double.parseDouble(String.valueOf(oilAllOrderInfos / (oilAllOrderInfos + productionAllOrderInfos))); Double i = ((double)oilAllOrderInfos / (oilAllOrderInfos + productionAllOrderInfos)) * 100;
shareOfNonOilTransactions = Double.parseDouble(String.valueOf(productionAllOrderInfos / (oilAllOrderInfos + productionAllOrderInfos))); Double shareOfOilTransactions = Double.valueOf((getFormattedResult(i)));
Double shareOfNonOilTransactions = Double.valueOf(getFormattedResult(((double)productionAllOrderInfos / (oilAllOrderInfos + productionAllOrderInfos)) * 100));
HomeDataAnalysisVo oilhomeDataAnalysisVo = new HomeDataAnalysisVo(); HomeDataAnalysisVo oilhomeDataAnalysisVo = new HomeDataAnalysisVo();
oilhomeDataAnalysisVo.setName("油品交易占比"); oilhomeDataAnalysisVo.setName("油品交易占比");
@ -1825,33 +1827,97 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
oilRecharge += 1; oilRecharge += 1;
} }
} }
Integer sum = mtUser + product + oilRecharge + pointMall;
HomeDataAnalysisVo mtUserVo = new HomeDataAnalysisVo(); HomeDataAnalysisVo mtUserVo = new HomeDataAnalysisVo();
mtUserVo.setName("会员充值占比"); mtUserVo.setName("会员充值占比");
mtUserVo.setType(3); mtUserVo.setType(3);
mtUserVo.setValue(Double.parseDouble(String.valueOf(mtUser / allOrderInfos.size()))); mtUserVo.setValue(Double.parseDouble(getFormattedResult(((double)mtUser / sum) * 100)));
list.add(mtUserVo); list.add(mtUserVo);
HomeDataAnalysisVo productVo = new HomeDataAnalysisVo(); HomeDataAnalysisVo productVo = new HomeDataAnalysisVo();
productVo.setName("商品交易占比"); productVo.setName("商品交易占比");
productVo.setType(3); productVo.setType(3);
productVo.setValue(Double.parseDouble(String.valueOf(product / allOrderInfos.size()))); productVo.setValue(Double.parseDouble(getFormattedResult(((double)product / sum) * 100)));
list.add(productVo); list.add(productVo);
HomeDataAnalysisVo oilRechargeVo = new HomeDataAnalysisVo(); HomeDataAnalysisVo oilRechargeVo = new HomeDataAnalysisVo();
oilRechargeVo.setName("油品充值占比"); oilRechargeVo.setName("油品交易占比");
oilRechargeVo.setType(3); oilRechargeVo.setType(3);
oilRechargeVo.setValue(Double.parseDouble(String.valueOf(oilRecharge / allOrderInfos.size()))); oilRechargeVo.setValue(Double.parseDouble(getFormattedResult(((double)oilRecharge / sum) * 100)));
list.add(oilRechargeVo); list.add(oilRechargeVo);
HomeDataAnalysisVo pointMallVo = new HomeDataAnalysisVo(); HomeDataAnalysisVo pointMallVo = new HomeDataAnalysisVo();
pointMallVo.setName("积分商城交易占比"); pointMallVo.setName("积分商城交易占比");
pointMallVo.setType(3); pointMallVo.setType(3);
pointMallVo.setValue(Double.parseDouble(String.valueOf(pointMall / allOrderInfos.size()))); pointMallVo.setValue(Double.parseDouble(getFormattedResult((double)pointMall / sum * 100)));
list.add(pointMallVo); list.add(pointMallVo);
return list; return list;
} }
/**
* 油站首页数据展示
*
* @param map
* @return
*/
@Override
public HomeDataShowVo getDataShow(Map<String, String> map) {
HomeDataShowVo homeDataShowVo = new HomeDataShowVo();
String startTime = map.get("startTime");
String endTime = map.get("endTime");
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) {
//查询出所有油号
List<OilNumber> oilNumbers = oilNumberMapper.selectAllOil(nowAccountInfo.getStoreId());
List<String> oilNames = oilNumbers.stream().map(oil -> oil.getOilNames() + oil.getOilType()).collect(Collectors.toList());
homeDataShowVo.setOilNames(oilNames);
//根据开始时间与结束时间获取所有天数
List<String> days = getAllDatesBetween(startTime, endTime);
List<Map<String, Object>> oilData = new ArrayList<>();
for (String day : days) {
Map<String, Object> mapData = new HashMap<>();
mapData.put("day", day);
List<Double> oilPrices = new ArrayList<>();
for (OilNumber oilNumber : oilNumbers) {
//查询油品交易总金额
double price = oilOrderMapper.selectSumMoneyByDayAndOilNumber(oilNumber.getOilName(), day, nowAccountInfo.getStoreId());
oilPrices.add(price);
}
mapData.put("oilPrices", oilPrices);
oilData.add(mapData);
}
homeDataShowVo.setOilData(oilData);
}
return homeDataShowVo;
}
/**
* 获取时间段内的所有日期
* @param startTime
* @return
*/
public List<String> getAllDatesBetween(String startTime, String endTime) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate startDate = LocalDate.parse(startTime, formatter);
LocalDate endDate = LocalDate.parse(endTime, formatter);
List<String> dateList = new ArrayList<>();
while (!startDate.isAfter(endDate)) {
dateList.add(startDate.format(formatter));
startDate = startDate.plusDays(1);
}
return dateList;
}
private static String getFormattedResult(double averageValue) {
DecimalFormat df = new DecimalFormat("#.00");
String formattedResult = df.format(averageValue);
return formattedResult;
}
/** /**
* 消费记录 * 消费记录
* *

View File

@ -0,0 +1,12 @@
package com.fuint.business.order.vo;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class HomeDataShowVo {
private List<String> oilNames;
private List<Map<String, Object>> oilData;
}

View File

@ -41,6 +41,8 @@ public class OilNumber extends BaseEntity {
public Integer id; //id主键) public Integer id; //id主键)
public Integer upOrDown;//油价涨幅 1- 2- public Integer upOrDown;//油价涨幅 1- 2-
public String amplitudeOfChange; //涨幅 public String amplitudeOfChange; //涨幅
@TableField(exist = false)
public String oilNames;

View File

@ -63,5 +63,7 @@ public interface OilNumberMapper extends BaseMapper<OilNumber> {
List<OilNumberNameVo> selectOilNumberNameByStoreId(@Param("storeId") Integer storeId); List<OilNumberNameVo> selectOilNumberNameByStoreId(@Param("storeId") Integer storeId);
double getOilPriceById(@Param("oilId") Integer oilId,@Param("storeId") Integer storeId); double getOilPriceById(@Param("oilId") Integer oilId,@Param("storeId") Integer storeId);
List<OilNumber> selectAllOil(Integer storeId);
} }

View File

@ -155,4 +155,11 @@
<select id="getOilPriceById" resultType="double"> <select id="getOilPriceById" resultType="double">
select oil_price from oil_number where oil_name = #{oilId} and store_id = #{storeId} select oil_price from oil_number where oil_name = #{oilId} and store_id = #{storeId}
</select> </select>
<select id="selectAllOil" resultType="com.fuint.business.petrolStationManagement.entity.OilNumber"
parameterType="java.lang.Integer">
select oin.*, ona.oil_name oilNames
from oil_number oin
left join oil_name ona on oin.oil_name = ona.id
where oin.store_id = #{storeId}
</select>
</mapper> </mapper>