更新10.12

This commit is contained in:
许允枞 2024-10-12 18:09:59 +08:00
parent 48f29f4873
commit 95d279653d
4 changed files with 182 additions and 18 deletions

View File

@ -55,7 +55,7 @@
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="getStoreAmount">
@blur="getStoreAmount">
</el-date-picker>
</div>
</div>
@ -92,7 +92,7 @@
<div class="hui-hang"></div>
<div class="d-s" >
<div>
<div class="h-tt" >活跃油站</div>
<div class="h-tt" >数据分析</div>
<div id="ccc" style="width: 300px;height: 200px; "></div>
</div>
<div class="h-r-ba"></div>

View File

@ -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<String ,Object> getDataBoard(Map<String,String> map);
/**
* 油站首页数据分析
* @param map
* @return
*/
List<HomeDataAnalysisVo> getDataAnalysis(Map<String, String> map);
/**
* 消费记录
* @param page

View File

@ -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<AllOrderInfoMapper, All
@Resource
AllOrderInfoMapper allOrderInfoMapper;
@Autowired
OilNumberMapper oilNumberMapper;
@Override
@ -151,6 +155,7 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
row = baseMapper.insert(allOrderInfo);
return row;
}
// 支付通道分析 下面列表数据
public IPage<AllOrderInfoVo> getFenxiByDaili(Page page, AllOrderInfo allOrderInfo) {
if (ObjectUtil.isEmpty(allOrderInfo.getDeptId())) {
@ -214,6 +219,7 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
return fenxiByDailiTypeBydata;
}
// 支付通道分析 上面 统计数据
@Override
public Map<String, Object> getFenxiByDailiBydata(AllOrderInfo allOrderInfo) {
@ -1617,6 +1623,8 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
@Override
public Map<String, Object> getDataBoard(Map<String, String> map) {
map.put("startTime", map.get("params[beginTime]"));
map.put("endTime", map.get("params[endTime]"));
Map<String, Object> map1 = new HashMap<>();
// 油品销售金额
Double oilAmount = 0.0;
@ -1647,24 +1655,31 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
String endTime = map.get("endTime");
//查询会员充值信息
List<AllOrderInfo> allOrderInfos = baseMapper.selectList(new LambdaQueryWrapper<AllOrderInfo>()
LambdaQueryWrapper<AllOrderInfo> queryWrapper = new LambdaQueryWrapper<AllOrderInfo>()
.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<AllOrderInfo> allOrderInfos = baseMapper.selectList(queryWrapper);
//会员充值笔数
userRechargeNum = allOrderInfos.size();
//会员充值金额
userRechargeAmount = allOrderInfos.stream().mapToDouble(AllOrderInfo::getPayMoney).sum();
//查询便利店信息
allOrderInfos = baseMapper.selectList(new LambdaQueryWrapper<AllOrderInfo>()
LambdaQueryWrapper<AllOrderInfo> proQueryWrapper = new LambdaQueryWrapper<AllOrderInfo>()
.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<String> orderNos = allOrderInfos.stream()
@ -1683,12 +1698,16 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
}
//查询积分商城信息
allOrderInfos = baseMapper.selectList(new LambdaQueryWrapper<AllOrderInfo>()
LambdaQueryWrapper<AllOrderInfo> pointQueryWrapper = new LambdaQueryWrapper<AllOrderInfo>()
.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<AllOrderInfoMapper, All
return map1;
}
/**
* 油站首页数据分析
*
* @param map
* @return
*/
@Override
public List<HomeDataAnalysisVo> getDataAnalysis(Map<String, String> map) {
List<HomeDataAnalysisVo> list = new ArrayList<>();
String startTime = map.get("startTime");
String endTime = map.get("endTime");
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
//查询所有油品
List<OilNumber> oilNumbers = oilNumberMapper.selectList(new LambdaQueryWrapper<OilNumber>()
.eq(OilNumber::getStoreId, nowAccountInfo.getStoreId())
.eq(OilNumber::getState, "1")
.eq(OilNumber::getIfDelete, "0"));
LambdaQueryWrapper<OilOrder> oilOrderQuery = new LambdaQueryWrapper<OilOrder>();
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<OilOrder> oilOrders = oilOrderMapper.selectList(oilOrderQuery);
//油号之间占比
for (OilNumber oilNumber : oilNumbers) {
HomeDataAnalysisVo homeDataAnalysisVo = new HomeDataAnalysisVo();
homeDataAnalysisVo.setName(oilNumber.getOilName());
homeDataAnalysisVo.setType(1);
List<OilOrder> 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<AllOrderInfo> allOrderInfoLambdaQueryWrapper = new LambdaQueryWrapper<AllOrderInfo>();
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<AllOrderInfo> 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<AllOrderInfoMapper, All
/**
* 将支付金额转换为万圆
*
* @param payMoney
*/
public Double convertPayMoneyToWanYuan(Double payMoney) {

View File

@ -0,0 +1,10 @@
package com.fuint.business.order.vo;
import lombok.Data;
@Data
public class HomeDataAnalysisVo {
private String name;
private Double value;
private Integer type;
}