From 95d279653d8bc89dcb983e55d34e7a56b49c8c11 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=AE=B8=E5=85=81=E6=9E=9E?= <3422692813@qq.com>
Date: Sat, 12 Oct 2024 18:09:59 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B010.12?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
fuintAdmin/src/views/shopowner.vue | 4 +-
.../order/service/AllOrderInfoService.java | 12 +-
.../service/impl/AllOrderInfoServiceImpl.java | 174 ++++++++++++++++--
.../business/order/vo/HomeDataAnalysisVo.java | 10 +
4 files changed, 182 insertions(+), 18 deletions(-)
create mode 100644 fuintBackend/fuint-application/src/main/java/com/fuint/business/order/vo/HomeDataAnalysisVo.java
diff --git a/fuintAdmin/src/views/shopowner.vue b/fuintAdmin/src/views/shopowner.vue
index b8fe9b58e..5cc3a2a8b 100644
--- a/fuintAdmin/src/views/shopowner.vue
+++ b/fuintAdmin/src/views/shopowner.vue
@@ -55,7 +55,7 @@
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
- @change="getStoreAmount">
+ @blur="getStoreAmount">
@@ -92,7 +92,7 @@
diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/AllOrderInfoService.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/AllOrderInfoService.java
index 01bfe795a..3260267b3 100644
--- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/AllOrderInfoService.java
+++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/AllOrderInfoService.java
@@ -7,10 +7,7 @@ import com.fuint.business.order.dto.AllOrderInfoDto;
import com.fuint.business.order.entity.AllOrderInfo;
import com.fuint.business.order.entity.CashierOrder;
import com.fuint.business.order.entity.HandoverRecord;
-import com.fuint.business.order.vo.AllOrderActivityVo;
-import com.fuint.business.order.vo.AllOrderInfoUniVo;
-import com.fuint.business.order.vo.AllOrderInfoVo;
-import com.fuint.business.order.vo.CardBalanceChangeVo;
+import com.fuint.business.order.vo.*;
import com.fuint.framework.exception.BusinessCheckException;
import com.fuint.system.dept.vo.SysDeptVo;
import org.springframework.transaction.annotation.Transactional;
@@ -153,6 +150,13 @@ public interface AllOrderInfoService {
*/
Map
getDataBoard(Map map);
+ /**
+ * 油站首页数据分析
+ * @param map
+ * @return
+ */
+ List getDataAnalysis(Map map);
+
/**
* 消费记录
* @param page
diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/AllOrderInfoServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/AllOrderInfoServiceImpl.java
index 402ebcbaf..152da2055 100644
--- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/AllOrderInfoServiceImpl.java
+++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/AllOrderInfoServiceImpl.java
@@ -32,7 +32,9 @@ import com.fuint.business.order.vo.*;
import com.fuint.business.order.vo.Excel.*;
import com.fuint.business.petrolStationManagement.entity.OilGun;
import com.fuint.business.petrolStationManagement.entity.OilName;
+import com.fuint.business.petrolStationManagement.entity.OilNumber;
import com.fuint.business.petrolStationManagement.entity.OilTracking;
+import com.fuint.business.petrolStationManagement.mapper.OilNumberMapper;
import com.fuint.business.petrolStationManagement.service.OilGunService;
import com.fuint.business.petrolStationManagement.service.OilNameService;
import com.fuint.business.petrolStationManagement.service.OilTankService;
@@ -87,6 +89,8 @@ public class AllOrderInfoServiceImpl extends ServiceImpl getFenxiByDaili(Page page, AllOrderInfo allOrderInfo) {
if (ObjectUtil.isEmpty(allOrderInfo.getDeptId())) {
@@ -214,6 +219,7 @@ public class AllOrderInfoServiceImpl extends ServiceImpl getFenxiByDailiBydata(AllOrderInfo allOrderInfo) {
@@ -1617,6 +1623,8 @@ public class AllOrderInfoServiceImpl extends ServiceImpl getDataBoard(Map map) {
+ map.put("startTime", map.get("params[beginTime]"));
+ map.put("endTime", map.get("params[endTime]"));
Map map1 = new HashMap<>();
// 油品销售金额
Double oilAmount = 0.0;
@@ -1647,24 +1655,31 @@ public class AllOrderInfoServiceImpl extends ServiceImpl allOrderInfos = baseMapper.selectList(new LambdaQueryWrapper()
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper()
.eq(AllOrderInfo::getStatus, "paid")
.eq(AllOrderInfo::getStoreId, TokenUtil.getNowAccountInfo().getStoreId())
- .like(AllOrderInfo::getContent, "充值")
- .between(AllOrderInfo::getCreateTime, startTime, endTime));
+ .like(AllOrderInfo::getContent, "充值");
+ if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) {
+ queryWrapper.between(AllOrderInfo::getCreateTime, startTime, endTime);
+ }
+
+ //查询会员充值信息
+ List allOrderInfos = baseMapper.selectList(queryWrapper);
//会员充值笔数
userRechargeNum = allOrderInfos.size();
//会员充值金额
userRechargeAmount = allOrderInfos.stream().mapToDouble(AllOrderInfo::getPayMoney).sum();
- //查询便利店信息
- allOrderInfos = baseMapper.selectList(new LambdaQueryWrapper()
+ LambdaQueryWrapper proQueryWrapper = new LambdaQueryWrapper()
.eq(AllOrderInfo::getStatus, "paid")
.eq(AllOrderInfo::getStoreId, TokenUtil.getNowAccountInfo().getStoreId())
- .in(AllOrderInfo::getType, "2", "6")
- .between(AllOrderInfo::getCreateTime, startTime, endTime));
+ .in(AllOrderInfo::getType, "2", "6");
+ if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) {
+ proQueryWrapper.between(AllOrderInfo::getCreateTime, startTime, endTime);
+ }
+ //查询便利店信息
+ allOrderInfos = baseMapper.selectList(proQueryWrapper);
//便利店笔数
minimartNum = allOrderInfos.size();
List orderNos = allOrderInfos.stream()
@@ -1683,12 +1698,16 @@ public class AllOrderInfoServiceImpl extends ServiceImpl()
+ LambdaQueryWrapper pointQueryWrapper = new LambdaQueryWrapper()
.eq(AllOrderInfo::getStatus, "paid")
.eq(AllOrderInfo::getStoreId, TokenUtil.getNowAccountInfo().getStoreId())
- .eq(AllOrderInfo::getType, "4")
- .between(AllOrderInfo::getCreateTime, startTime, endTime));
+ .eq(AllOrderInfo::getType, "4");
+ if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) {
+ pointQueryWrapper.between(AllOrderInfo::getCreateTime, startTime, endTime);
+ }
+
+ //查询积分商城信息
+ allOrderInfos = baseMapper.selectList(pointQueryWrapper);
pointMallNum = allOrderInfos.size();
pointMallAmount = allOrderInfos.stream().mapToDouble(order -> order.getPayMoney() == null ? 0 : order.getPayMoney()).sum();
map1.put("oilAmount", oilAmount);
@@ -1703,6 +1722,136 @@ public class AllOrderInfoServiceImpl extends ServiceImpl getDataAnalysis(Map map) {
+ List list = new ArrayList<>();
+ String startTime = map.get("startTime");
+ String endTime = map.get("endTime");
+ AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
+
+
+ //查询所有油品
+ List oilNumbers = oilNumberMapper.selectList(new LambdaQueryWrapper()
+ .eq(OilNumber::getStoreId, nowAccountInfo.getStoreId())
+ .eq(OilNumber::getState, "1")
+ .eq(OilNumber::getIfDelete, "0"));
+
+ LambdaQueryWrapper oilOrderQuery = new LambdaQueryWrapper();
+ oilOrderQuery.eq(OilOrder::getStoreId, nowAccountInfo.getStoreId())
+ .eq(OilOrder::getUserId, nowAccountInfo.getId())
+ .eq(OilOrder::getOrderStatus, "paid");
+ if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) {
+ oilOrderQuery.between(OilOrder::getCreateTime, startTime, endTime);
+ }
+ List oilOrders = oilOrderMapper.selectList(oilOrderQuery);
+
+ //油号之间占比
+ for (OilNumber oilNumber : oilNumbers) {
+ HomeDataAnalysisVo homeDataAnalysisVo = new HomeDataAnalysisVo();
+ homeDataAnalysisVo.setName(oilNumber.getOilName());
+ homeDataAnalysisVo.setType(1);
+ List oilList = new ArrayList<>();
+ for (OilOrder oilOrder : oilOrders) {
+ if (oilNumber.getOilName().equals(oilOrder.getOils())) {
+ oilList.add(oilOrder);
+ }
+ }
+ DecimalFormat df = new DecimalFormat("#.00");
+ String formattedResult = df.format(oilList.size());
+ homeDataAnalysisVo.setValue(Double.parseDouble(formattedResult) / oilNumbers.size());
+ list.add(homeDataAnalysisVo);
+ }
+
+ //查询订单表
+ LambdaQueryWrapper allOrderInfoLambdaQueryWrapper = new LambdaQueryWrapper();
+ allOrderInfoLambdaQueryWrapper.eq(AllOrderInfo::getStoreId, nowAccountInfo.getStoreId())
+ .eq(AllOrderInfo::getStoreId, nowAccountInfo.getStoreId())
+ .eq(AllOrderInfo::getStatus, "paid");
+ if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) {
+ allOrderInfoLambdaQueryWrapper.between(AllOrderInfo::getCreateTime, startTime, endTime);
+ }
+ List allOrderInfos = baseMapper.selectList(allOrderInfoLambdaQueryWrapper);
+ Integer oilAllOrderInfos = 0;
+ Integer productionAllOrderInfos = 0;
+
+ //油品交易占比
+ Double shareOfOilTransactions = 0.0;
+ //非油品交易占比
+ Double shareOfNonOilTransactions = 0.0;
+ for (AllOrderInfo allOrderInfo : allOrderInfos) {
+ if ("1".equals(allOrderInfo.getType())) {
+ oilAllOrderInfos += 1;
+ } else if ("2".equals(allOrderInfo.getType()) || "3".equals(allOrderInfo.getType()) || "4".equals(allOrderInfo.getType()) || "5".equals(allOrderInfo.getType())) {
+ productionAllOrderInfos += 1;
+ }
+ }
+ shareOfOilTransactions = Double.parseDouble(String.valueOf(oilAllOrderInfos / (oilAllOrderInfos + productionAllOrderInfos)));
+ shareOfNonOilTransactions = Double.parseDouble(String.valueOf(productionAllOrderInfos / (oilAllOrderInfos + productionAllOrderInfos)));
+
+ HomeDataAnalysisVo oilhomeDataAnalysisVo = new HomeDataAnalysisVo();
+ oilhomeDataAnalysisVo.setName("油品交易占比");
+ oilhomeDataAnalysisVo.setType(2);
+ oilhomeDataAnalysisVo.setValue(shareOfOilTransactions);
+ list.add(oilhomeDataAnalysisVo);
+
+ HomeDataAnalysisVo noOilhomeDataAnalysisVo = new HomeDataAnalysisVo();
+ noOilhomeDataAnalysisVo.setName("非油品交易占比");
+ noOilhomeDataAnalysisVo.setType(2);
+ noOilhomeDataAnalysisVo.setValue(shareOfNonOilTransactions);
+ list.add(noOilhomeDataAnalysisVo);
+
+ //会员充值占比 便利店交易占比 油品交易占比 积分商城交易占比
+ Integer mtUser = 0;
+ Integer product = 0;
+ Integer oilRecharge = 0;
+ Integer pointMall = 0;
+ for (AllOrderInfo allOrderInfo : allOrderInfos) {
+ if ("3".equals(allOrderInfo.getType()) || "5".equals(allOrderInfo.getType())) {
+ mtUser += 1;
+ } else if ("2".equals(allOrderInfo.getType())) {
+ product += 1;
+ } else if ("1".equals(allOrderInfo.getType())) {
+ oilRecharge += 1;
+ } else if ("4".equals(allOrderInfo.getType())) {
+ pointMall += 1;
+ } else if ("6".equals(allOrderInfo.getType())) {
+ product += 1;
+ oilRecharge += 1;
+ }
+ }
+
+ HomeDataAnalysisVo mtUserVo = new HomeDataAnalysisVo();
+ mtUserVo.setName("会员充值占比");
+ mtUserVo.setType(3);
+ mtUserVo.setValue(Double.parseDouble(String.valueOf(mtUser / allOrderInfos.size())));
+ list.add(mtUserVo);
+
+ HomeDataAnalysisVo productVo = new HomeDataAnalysisVo();
+ productVo.setName("商品交易占比");
+ productVo.setType(3);
+ productVo.setValue(Double.parseDouble(String.valueOf(product / allOrderInfos.size())));
+ list.add(productVo);
+
+ HomeDataAnalysisVo oilRechargeVo = new HomeDataAnalysisVo();
+ oilRechargeVo.setName("油品充值占比");
+ oilRechargeVo.setType(3);
+ oilRechargeVo.setValue(Double.parseDouble(String.valueOf(oilRecharge / allOrderInfos.size())));
+ list.add(oilRechargeVo);
+
+ HomeDataAnalysisVo pointMallVo = new HomeDataAnalysisVo();
+ pointMallVo.setName("积分商城交易占比");
+ pointMallVo.setType(3);
+ pointMallVo.setValue(Double.parseDouble(String.valueOf(pointMall / allOrderInfos.size())));
+ list.add(pointMallVo);
+ return list;
+ }
+
/**
* 消费记录
*
@@ -1823,6 +1972,7 @@ public class AllOrderInfoServiceImpl extends ServiceImpl