From e5c2b1a3cd1bc314e70df59eb3d4b4c5f3d5af8a Mon Sep 17 00:00:00 2001 From: 18650502300 <18650502300@163.com> Date: Tue, 5 Nov 2024 17:27:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=90=A5=E6=94=B6=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=EF=BC=88=E6=8C=89=E6=9C=88=E4=BB=BD=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IndexController/IndexController.java | 17 ++ .../controller/app/AppVerifyController.java | 12 +- .../controller/system/SysDeptController.java | 8 +- .../ruoyi/system/domain/vo/DeviceNumVo.java | 6 + .../com/ruoyi/system/domain/vo/IndexVo.java | 4 + .../system/mapper/EtCapitalFlowMapper.java | 4 +- .../ruoyi/system/mapper/EtOrderMapper.java | 6 +- .../ruoyi/system/service/IEtOrderService.java | 5 + .../service/impl/AsDeviceServiceImpl.java | 3 + .../service/impl/EtOrderServiceImpl.java | 193 +++++++++++++----- .../mapper/system/EtCapitalFlowMapper.xml | 2 +- .../resources/mapper/system/EtOrderMapper.xml | 6 + 12 files changed, 195 insertions(+), 71 deletions(-) diff --git a/electripper-admin/src/main/java/com/ruoyi/web/controller/IndexController/IndexController.java b/electripper-admin/src/main/java/com/ruoyi/web/controller/IndexController/IndexController.java index f9efbb5..20ce0cb 100644 --- a/electripper-admin/src/main/java/com/ruoyi/web/controller/IndexController/IndexController.java +++ b/electripper-admin/src/main/java/com/ruoyi/web/controller/IndexController/IndexController.java @@ -100,6 +100,23 @@ public class IndexController extends BaseController return success(result); } + /** + * 获取营收统计(按月份) + */ + @GetMapping(value = "/getIncomeList") + public AjaxResult getIncomeList(Long deptId,String date)// 2024-11 + { + logger.info("【获取营收统计(按月份)】请求参数: deptId={}", deptId); + if(deptId == null){ + throw new ServiceException("运营商id不能为空:deptId"); + } + if(date == null){ + throw new ServiceException("时间参数不能为空:date"); + } + List incomeList = etOrderService.getIncomeList(deptId, date); + return success(incomeList); + } + private static void assign(IndexVo result, IndexVo areaIndexVo) { result.setBalance(result.getBalance().add(areaIndexVo.getBalance())); result.setWithdraw(result.getWithdraw().add(areaIndexVo.getWithdraw())); diff --git a/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppVerifyController.java b/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppVerifyController.java index e8fd31d..ff97d0d 100644 --- a/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppVerifyController.java +++ b/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppVerifyController.java @@ -1030,10 +1030,10 @@ public class AppVerifyController extends BaseController BigDecimal todayOrderAmount = BigDecimal.ZERO; List longs = etOperatingAreaMapper.selectAreaListByDeptId(sysDept.getDeptId()); for (Long id:longs) { - BigDecimal payFee = defaultIfNull(etOrderMapper.getPayFee(startDateStr, endDateStr, null, id), BigDecimal.ZERO);//新增 - BigDecimal refundFee = defaultIfNull(etOrderMapper.getRefundFee(startDateStr, endDateStr, null, id), BigDecimal.ZERO);//退款 - BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null, id,null);//手续费,扣除掉退款部分的 - BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null,id,null);//平台服务费 ,扣除掉退款部分的 + BigDecimal payFee = defaultIfNull(etOrderMapper.getPayFee(startDateStr, endDateStr, null, id,null), BigDecimal.ZERO);//新增 + BigDecimal refundFee = defaultIfNull(etOrderMapper.getRefundFee(startDateStr, endDateStr, null, id,null), BigDecimal.ZERO);//退款 + BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null, id,null,null);//手续费,扣除掉退款部分的 + BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null,id,null,null);//平台服务费 ,扣除掉退款部分的 BigDecimal areaOrderAmount = defaultIfNull(payFee.subtract(serviceFee).subtract(refundFee).subtract(platformServiceFee), BigDecimal.ZERO);//营收 = 新增 - 手续费 - 退款 - 平台服务费 if (areaOrderAmount != null) { todayOrderAmount = todayOrderAmount.add(areaOrderAmount); @@ -1058,8 +1058,8 @@ public class AppVerifyController extends BaseController // 统计et_capital_flow中 合伙人 BigDecimal payFee = defaultIfNull(etCapitalFlowMapper.getTotalAmountByUserId(startDateStr, endDateStr,userId), BigDecimal.ZERO); BigDecimal refundFee = defaultIfNull(etCapitalFlowMapper.getPartnerRefundFee(startDateStr, endDateStr, userId), BigDecimal.ZERO);//退款 - BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null, null, userId);//手续费,扣除掉退款部分的 0.01 - BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null,null,userId);//平台服务费 ,扣除掉退款部分的 + BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null, null, null,userId);//手续费,扣除掉退款部分的 0.01 + BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null,null,null,userId);//平台服务费 ,扣除掉退款部分的 BigDecimal areaOrderAmount = defaultIfNull(payFee.subtract(serviceFee).subtract(refundFee).subtract(platformServiceFee), BigDecimal.ZERO);//营收 = 新增 - 手续费 - 退款 - 平台服务费 if (areaOrderAmount != null) { todayOrderAmount = todayOrderAmount.add(areaOrderAmount); diff --git a/electripper-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java b/electripper-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java index 0889e44..2b8cc2b 100644 --- a/electripper-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java +++ b/electripper-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java @@ -134,10 +134,10 @@ public class SysDeptController extends BaseController BigDecimal todayOrderAmount = BigDecimal.ZERO; List longs = etOperatingAreaMapper.selectAreaListByDeptId(deptId); for (Long areaId:longs) { - BigDecimal payFee = defaultIfNull(etOrderMapper.getPayFee(startDateStr, endDateStr, null, areaId), BigDecimal.ZERO);//新增 - BigDecimal refundFee = defaultIfNull(etOrderMapper.getRefundFee(startDateStr, endDateStr, null, areaId), BigDecimal.ZERO);//退款 - BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null, areaId,null);//手续费,扣除掉退款部分的 - BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null,areaId,null);//平台服务费 ,扣除掉退款部分的 + BigDecimal payFee = defaultIfNull(etOrderMapper.getPayFee(startDateStr, endDateStr, null, areaId,null), BigDecimal.ZERO);//新增 + BigDecimal refundFee = defaultIfNull(etOrderMapper.getRefundFee(startDateStr, endDateStr, null, areaId,null), BigDecimal.ZERO);//退款 + BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null, areaId,null,null);//手续费,扣除掉退款部分的 + BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null,areaId,null,null);//平台服务费 ,扣除掉退款部分的 BigDecimal areaOrderAmount = defaultIfNull(payFee.subtract(serviceFee).subtract(refundFee).subtract(platformServiceFee), BigDecimal.ZERO);//营收 = 新增 - 手续费 - 退款 - 平台服务费 if (areaOrderAmount != null) { todayOrderAmount = todayOrderAmount.add(areaOrderAmount); diff --git a/electripper-system/src/main/java/com/ruoyi/system/domain/vo/DeviceNumVo.java b/electripper-system/src/main/java/com/ruoyi/system/domain/vo/DeviceNumVo.java index 767aee1..0b68afb 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/domain/vo/DeviceNumVo.java +++ b/electripper-system/src/main/java/com/ruoyi/system/domain/vo/DeviceNumVo.java @@ -1,8 +1,11 @@ package com.ruoyi.system.domain.vo; +import com.ruoyi.system.domain.AsDevice; import lombok.Data; +import java.util.List; + /** * 设备数量视图对象 * @@ -42,4 +45,7 @@ public class DeviceNumVo { /** 运营中 */ private Integer inOperation; + /** 已离线设备 */ + private List offlineDevices; + } diff --git a/electripper-system/src/main/java/com/ruoyi/system/domain/vo/IndexVo.java b/electripper-system/src/main/java/com/ruoyi/system/domain/vo/IndexVo.java index 859e1c8..71fbf72 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/domain/vo/IndexVo.java +++ b/electripper-system/src/main/java/com/ruoyi/system/domain/vo/IndexVo.java @@ -1,5 +1,6 @@ package com.ruoyi.system.domain.vo; +import com.ruoyi.system.domain.AsDevice; import lombok.Data; import java.math.BigDecimal; @@ -115,6 +116,9 @@ public class IndexVo { /** 运营中 */ private Integer inOperation; + + /** 已离线设备 */ + private List offlineDevices; } /** diff --git a/electripper-system/src/main/java/com/ruoyi/system/mapper/EtCapitalFlowMapper.java b/electripper-system/src/main/java/com/ruoyi/system/mapper/EtCapitalFlowMapper.java index d7073bd..38876d6 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/mapper/EtCapitalFlowMapper.java +++ b/electripper-system/src/main/java/com/ruoyi/system/mapper/EtCapitalFlowMapper.java @@ -79,7 +79,7 @@ public interface EtCapitalFlowMapper * @param areaId 运营区id * @return */ - BigDecimal getHandlingFee(@Param("timeStart") String timeStart, @Param("timeEnd") String timeEnd, @Param("sn") String sn, @Param("areaId") Long areaId, @Param("ownerId") Long ownerId); + BigDecimal getHandlingFee(@Param("timeStart") String timeStart, @Param("timeEnd") String timeEnd, @Param("sn") String sn, @Param("areaId") Long areaId, @Param("areaIds") List areaIds, @Param("ownerId") Long ownerId); /** * 手续费 @@ -95,7 +95,7 @@ public interface EtCapitalFlowMapper * @param areaId 运营区id * @return */ - BigDecimal getServiceFee(@Param("timeStart") String timeStart, @Param("timeEnd") String timeEnd, @Param("sn") String sn, @Param("areaId") Long areaId, @Param("ownerId") Long ownerId); + BigDecimal getServiceFee(@Param("timeStart") String timeStart, @Param("timeEnd") String timeEnd, @Param("sn") String sn, @Param("areaId") Long areaId, @Param("areaIds") List areaIds, @Param("ownerId") Long ownerId); /** * 平台服务费 * diff --git a/electripper-system/src/main/java/com/ruoyi/system/mapper/EtOrderMapper.java b/electripper-system/src/main/java/com/ruoyi/system/mapper/EtOrderMapper.java index a46f0e2..d5e66f2 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/mapper/EtOrderMapper.java +++ b/electripper-system/src/main/java/com/ruoyi/system/mapper/EtOrderMapper.java @@ -230,7 +230,7 @@ public interface EtOrderMapper /** * 获取订单数 */ - int getOrderNum(@Param("timeStart") String timeStart, @Param("timeEnd") String timeEnd, @Param("areaId") Long areaId); + int getOrderNum(@Param("timeStart") String timeStart, @Param("timeEnd") String timeEnd, @Param("areaId") Long areaId, @Param("areaIds") List areaIds); /** * 订单总金额 @@ -245,12 +245,12 @@ public interface EtOrderMapper /** * 支付金额 */ - BigDecimal getPayFee(@Param("startDateStr") String startDateStr , @Param("endDateStr") String endDateStr, @Param("sn") String sn, @Param("areaId") Long areaId); + BigDecimal getPayFee(@Param("startDateStr") String startDateStr , @Param("endDateStr") String endDateStr, @Param("sn") String sn, @Param("areaId") Long areaId, @Param("areaIds") List areaIds); /** * 已退款 */ - BigDecimal getRefundFee(@Param("startDateStr") String startDateStr , @Param("endDateStr") String endDateStr, @Param("sn") String sn, @Param("areaId") Long areaId); + BigDecimal getRefundFee(@Param("startDateStr") String startDateStr , @Param("endDateStr") String endDateStr, @Param("sn") String sn, @Param("areaId") Long areaId, @Param("areaIds") List areaIds); /** * 已退款 diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/IEtOrderService.java b/electripper-system/src/main/java/com/ruoyi/system/service/IEtOrderService.java index 26677f5..0c3300e 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/IEtOrderService.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/IEtOrderService.java @@ -279,4 +279,9 @@ public interface IEtOrderService * 使用优惠券 */ int useCoupon(String orderNo, Long logId); + + /** + * 获取营收统计(按月份) + */ + List getIncomeList(Long deptId, String date); } diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsDeviceServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsDeviceServiceImpl.java index 04ca053..1493ccf 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsDeviceServiceImpl.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsDeviceServiceImpl.java @@ -813,6 +813,9 @@ public class AsDeviceServiceImpl extends ServiceImpl i Integer offlineNum = asDeviceMapper.selectCount(wrapperForOffline); deviceNumVo.setOfflineNum(offlineNum);//已离线 + List devices = asDeviceMapper.selectList(wrapperForOffline); + deviceNumVo.setOfflineDevices(devices); + Integer inAppointmentNum = setNum(powerStart, powerEnd, ServiceConstants.VEHICLE_STATUS_IN_APPOINTMENT,areaId); deviceNumVo.setInAppointmentNum(inAppointmentNum);//预约中 diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtOrderServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtOrderServiceImpl.java index ad85ec9..23b5755 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtOrderServiceImpl.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtOrderServiceImpl.java @@ -43,14 +43,13 @@ import org.springframework.web.bind.annotation.RequestBody; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static com.ruoyi.common.constant.CacheConstants.INDEX_DATA; - /** * 订单Service业务层处理 * @@ -853,7 +852,6 @@ public class EtOrderServiceImpl implements IEtOrderService SysDept sysDept = wxPayService.getDeptObjByAreaId(areaId); IndexVo indexVo = createIndexVo(areaId,sysDept); - int defualtDays; /** 营收统计*/ if(type.equals("1")){ /** 运维统计*/ @@ -869,30 +867,27 @@ public class EtOrderServiceImpl implements IEtOrderService operationVo.setCompletedRepairCount(etAdminOrderMapper.getOrderCount(ServiceConstants.ADMIN_ORDER_TYPE_REPAIR,ServiceConstants.REPLACEMENT_ELECTRICITY_STATUS_COMPLETED,areaId)); indexVo.setOperationVo(operationVo); - defualtDays = 13; - }else{ - defualtDays = 29; - } - ArrayList incomeVos = new ArrayList<>(); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(DateUtils.getNowDate()); + ArrayList incomeVos = new ArrayList<>(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(DateUtils.getNowDate()); - for (int i = 0; i < defualtDays; i++) { - String formattedDate = dateFormat.format(calendar.getTime()); - String startDateStr = formattedDate + " " + Constants.DATE_FORMAT_START_PEREND; - String endDateStr = formattedDate + " " + Constants.DATE_FORMAT_END_PEREND; - IndexVo.OrderFeeStatisticsVo todayOrderInfo = getOrderFeeStatistics(startDateStr, endDateStr, areaId); - log.info("【首页统计】营收统计----------todayOrderInfo: {}" , JSON.toJSON(todayOrderInfo)); - IndexVo.IncomeVo incomeVo = new IndexVo.IncomeVo(); - incomeVo.setDay(formattedDate); - incomeVo.setOrderNum(todayOrderInfo.getOrderCount()); - incomeVo.setIncome(todayOrderInfo.getIncomeFee()); - incomeVos.add(incomeVo); - calendar.add(Calendar.DATE, -1); - } + for (int i = 0; i < 13; i++) { + String formattedDate = dateFormat.format(calendar.getTime()); + String startDateStr = formattedDate + " " + Constants.DATE_FORMAT_START_PEREND; + String endDateStr = formattedDate + " " + Constants.DATE_FORMAT_END_PEREND; + IndexVo.OrderFeeStatisticsVo todayOrderInfo = getOrderFeeStatistics(startDateStr, endDateStr, areaId); + log.info("【首页统计】营收统计----------todayOrderInfo: {}" , JSON.toJSON(todayOrderInfo)); + IndexVo.IncomeVo incomeVo = new IndexVo.IncomeVo(); + incomeVo.setDay(formattedDate); + incomeVo.setOrderNum(todayOrderInfo.getOrderCount()); + incomeVo.setIncome(todayOrderInfo.getIncomeFee()); + incomeVos.add(incomeVo); + calendar.add(Calendar.DATE, -1); + } - indexVo.setIncomeVoList(incomeVos); + indexVo.setIncomeVoList(incomeVos); + } /** 车辆统计*/ IndexVo.VehicleVo vehicleVo = new IndexVo.VehicleVo(); @@ -943,12 +938,38 @@ public class EtOrderServiceImpl implements IEtOrderService */ private IndexVo.OrderFeeStatisticsVo getOrderFeeStatistics(String startDateStr, String endDateStr, Long areaId) { IndexVo.OrderFeeStatisticsVo feeStatisticsVo = new IndexVo.OrderFeeStatisticsVo(); - BigDecimal payFee = defaultIfNull(etOrderMapper.getPayFee(startDateStr, endDateStr, null, areaId), BigDecimal.ZERO);//新增 - BigDecimal refundFee = defaultIfNull(etOrderMapper.getRefundFee(startDateStr, endDateStr, null, areaId), BigDecimal.ZERO);//退款 - BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null, areaId,null);//手续费,扣除掉退款部分的 - BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null,areaId,null);//平台服务费 ,扣除掉退款部分的 + BigDecimal payFee = defaultIfNull(etOrderMapper.getPayFee(startDateStr, endDateStr, null, areaId,null), BigDecimal.ZERO);//新增 + BigDecimal refundFee = defaultIfNull(etOrderMapper.getRefundFee(startDateStr, endDateStr, null, areaId,null), BigDecimal.ZERO);//退款 + BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null, areaId,null,null);//手续费,扣除掉退款部分的 + BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null,areaId,null,null);//平台服务费 ,扣除掉退款部分的 BigDecimal incomeFee = defaultIfNull(payFee.subtract(serviceFee).subtract(refundFee).subtract(platformServiceFee), BigDecimal.ZERO);//营收 = 新增 - 手续费 - 退款 - 平台服务费 - int orderCount = etOrderMapper.getOrderNum(startDateStr, endDateStr, areaId); + int orderCount = etOrderMapper.getOrderNum(startDateStr, endDateStr, areaId,null); + feeStatisticsVo.setOrderFee(payFee); + feeStatisticsVo.setIncomeFee(incomeFee); + feeStatisticsVo.setOrderCount(orderCount); + return feeStatisticsVo; + } + + /** + * 订单信息统计 + */ + private IndexVo.OrderFeeStatisticsVo getOrderFeeStatisticsByDeptId(String startDateStr, String endDateStr, List areaIds) { + IndexVo.OrderFeeStatisticsVo feeStatisticsVo = new IndexVo.OrderFeeStatisticsVo(); + + // 查询整个日期范围内的各项费用 + BigDecimal payFee = defaultIfNull(etOrderMapper.getPayFee(startDateStr, endDateStr, null,null, areaIds), BigDecimal.ZERO); // 新增支付金额 + BigDecimal refundFee = defaultIfNull(etOrderMapper.getRefundFee(startDateStr, endDateStr, null, null, areaIds), BigDecimal.ZERO); // 退款金额 + BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null, null, areaIds, null); // 手续费,扣除退款 + BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null, null, areaIds, null); // 平台服务费,扣除退款 + + + // 计算营收 = 新增支付 - 手续费 - 退款 - 平台服务费 + BigDecimal incomeFee = defaultIfNull(payFee.subtract(serviceFee).subtract(refundFee).subtract(platformServiceFee), BigDecimal.ZERO); + + // 获取订单数量 + int orderCount = etOrderMapper.getOrderNum(startDateStr, endDateStr, null, areaIds); + + // 设置统计数据 feeStatisticsVo.setOrderFee(payFee); feeStatisticsVo.setIncomeFee(incomeFee); feeStatisticsVo.setOrderCount(orderCount); @@ -982,7 +1003,7 @@ public class EtOrderServiceImpl implements IEtOrderService String formattedDate = dateFormat.format(calendar.getTime()); String startDateStr = formattedDate + " " + Constants.DATE_FORMAT_START_PEREND; String endDateStr = formattedDate + " " + Constants.DATE_FORMAT_END_PEREND; - int orderCount = etOrderMapper.getOrderNum(startDateStr, endDateStr, null); + int orderCount = etOrderMapper.getOrderNum(startDateStr, endDateStr, null,null); IndexAdminVo.IncomeVo incomeVo = new IndexAdminVo.IncomeVo(); incomeVo.setDay(formattedDate); incomeVo.setOrderNum(orderCount); @@ -1045,9 +1066,9 @@ public class EtOrderServiceImpl implements IEtOrderService for (EtOperatingArea area : etOperatingAreas) { Long areaId = area.getAreaId(); LeaderboardVo leaderboardVo = new LeaderboardVo(); - leaderboardVo.setOrderCount(etOrderMapper.getOrderNum(startDateStr, endDateStr, areaId));//订单数 - BigDecimal payFee = etOrderMapper.getPayFee(startDateStr, endDateStr, null, areaId); - BigDecimal refundFee = etOrderMapper.getRefundFee(startDateStr, endDateStr, null, areaId); + leaderboardVo.setOrderCount(etOrderMapper.getOrderNum(startDateStr, endDateStr, areaId,null));//订单数 + BigDecimal payFee = etOrderMapper.getPayFee(startDateStr, endDateStr, null, areaId,null); + BigDecimal refundFee = etOrderMapper.getRefundFee(startDateStr, endDateStr, null, areaId,null); leaderboardVo.setOrderFee(payFee.subtract(refundFee));//订单金额 String inOrderCount = etOrderMapper.getRidingOrder(startDateStr, endDateStr,areaId+""); leaderboardVo.setInProgressOrderCount(Integer.parseInt(inOrderCount)); @@ -1109,11 +1130,11 @@ public class EtOrderServiceImpl implements IEtOrderService indexAdminVo.setUserCount(asUserMapper.selectAllCount(null,null));//用户总数 indexAdminVo.setTodayUserCount(asUserMapper.selectAllCount(startDateStr,endDateStr));//今日新增 - indexAdminVo.setTodayOrderCount(etOrderMapper.getOrderNum(startDateStr, endDateStr, null));//今日订单数 - indexAdminVo.setTodayOrderFee(etOrderMapper.getPayFee(startDateStr, endDateStr, null, null));//今日订单金额 + indexAdminVo.setTodayOrderCount(etOrderMapper.getOrderNum(startDateStr, endDateStr, null,null));//今日订单数 + indexAdminVo.setTodayOrderFee(etOrderMapper.getPayFee(startDateStr, endDateStr, null, null,null));//今日订单金额 - indexAdminVo.setTotalOrderCount(etOrderMapper.getOrderNum(null, null, null));//总订单数 - indexAdminVo.setTotalOrderFee(etOrderMapper.getPayFee(null, null, null, null));//总订单金额 + indexAdminVo.setTotalOrderCount(etOrderMapper.getOrderNum(null, null, null,null));//总订单数 + indexAdminVo.setTotalOrderFee(etOrderMapper.getPayFee(null, null, null, null,null));//总订单金额 indexAdminVo.setTodayRefundFee(new BigDecimal(etOrderMapper.getTotalRefund(startDateStr,endDateStr,null)));// 今日退款金额 indexAdminVo.setTotalRefundFee(new BigDecimal(etOrderMapper.getTotalRefund(null,null,null)));// 总退款金额 @@ -1124,11 +1145,11 @@ public class EtOrderServiceImpl implements IEtOrderService indexAdminVo.setReturnOrderCount(etOrderMapper.getAuditOrderNum(null,null,null));//还车待审核订单 indexAdminVo.setReturnOrderDeductFee(etOrderMapper.getReturnOrderDeductFee(null,null,null));// 待审核还车押金扣款 - indexAdminVo.setTodayHandlingFee(etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null,null,null));// 今日支付手续费 - indexAdminVo.setTotalHandlingFee(etCapitalFlowMapper.getHandlingFee(null, null, null,null,null));// 总手续费 + indexAdminVo.setTodayHandlingFee(etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null,null,null,null));// 今日支付手续费 + indexAdminVo.setTotalHandlingFee(etCapitalFlowMapper.getHandlingFee(null, null, null,null,null,null));// 总手续费 - indexAdminVo.setTodayServiceFee(etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null,null,null));//今日服务费 - indexAdminVo.setTotalServiceFee(etCapitalFlowMapper.getServiceFee(null, null, null,null,null));// 总服务费 + indexAdminVo.setTodayServiceFee(etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null,null,null,null));//今日服务费 + indexAdminVo.setTotalServiceFee(etCapitalFlowMapper.getServiceFee(null, null, null,null,null,null));// 总服务费 return indexAdminVo; } @@ -1393,8 +1414,8 @@ public class EtOrderServiceImpl implements IEtOrderService String totalRefund = etOrderMapper.getTotalRefund(timeStart, timeEnd, areaId);//已退款 income.setTotalPaid(totalPaid);//已支付 //handlingFee 手续费 = 0.0054 * 已支付金额 - BigDecimal handlingFee = etCapitalFlowMapper.getHandlingFee(timeStart, timeEnd, null, Long.parseLong(areaId),null);//手续费,扣除掉退款部分的 - BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(timeStart, timeEnd, null,Long.parseLong(areaId),null);//平台服务费 ,扣除掉退款部分的 + BigDecimal handlingFee = etCapitalFlowMapper.getHandlingFee(timeStart, timeEnd, null, Long.parseLong(areaId),null,null);//手续费,扣除掉退款部分的 + BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(timeStart, timeEnd, null,Long.parseLong(areaId),null,null);//平台服务费 ,扣除掉退款部分的 income.setHandlingFee(handlingFee.add(platformServiceFee).toString()); // 总营收 = 已支付 - 已退款 - 手续费 @@ -1465,10 +1486,10 @@ public class EtOrderServiceImpl implements IEtOrderService income.setDepositPaid(depositAmount); /** 总支出*/ - BigDecimal refundFee = defaultIfNull(etOrderMapper.getRefundFee(timeStart, timeEnd, null, aLong), BigDecimal.ZERO);//订单退款 + BigDecimal refundFee = defaultIfNull(etOrderMapper.getRefundFee(timeStart, timeEnd, null, aLong,null), BigDecimal.ZERO);//订单退款 BigDecimal depositRefundFee = defaultIfNull(etOrderMapper.getDepositRefundFee(timeStart, timeEnd, null, aLong,null), BigDecimal.ZERO);//押金退款 24795 - BigDecimal serviceFee = defaultIfNull(etCapitalFlowMapper.getHandlingFee(timeStart, timeEnd, null, aLong,null),BigDecimal.ZERO);//手续费,扣除掉退款部分的 - BigDecimal platformServiceFee = defaultIfNull(etCapitalFlowMapper.getServiceFee(timeStart, timeEnd, null,aLong,null),BigDecimal.ZERO);//平台服务费 ,扣除掉退款部分的 + BigDecimal serviceFee = defaultIfNull(etCapitalFlowMapper.getHandlingFee(timeStart, timeEnd, null, aLong,null,null),BigDecimal.ZERO);//手续费,扣除掉退款部分的 + BigDecimal platformServiceFee = defaultIfNull(etCapitalFlowMapper.getServiceFee(timeStart, timeEnd, null,aLong,null,null),BigDecimal.ZERO);//平台服务费 ,扣除掉退款部分的 BigDecimal totalExpenditure = defaultIfNull(refundFee.add(depositRefundFee).add(serviceFee).add(platformServiceFee), BigDecimal.ZERO); income.setOrderRefund(refundFee); @@ -1765,10 +1786,10 @@ public class EtOrderServiceImpl implements IEtOrderService SysDept deptObjByAreaId = wxPayService.getDeptObjByAreaId(areaId); reconciliation.setDeptName(deptObjByAreaId.getDeptName()); reconciliation.setDay(formattedDate); - BigDecimal payFee = defaultIfNull(etOrderMapper.getPayFee(startDateStr, endDateStr, null, areaId), BigDecimal.ZERO);//新增 - BigDecimal refundFee = defaultIfNull(etOrderMapper.getRefundFee(startDateStr, endDateStr, null, areaId), BigDecimal.ZERO);//退款 - BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null, areaId,null);//手续费,扣除掉退款部分的 - BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null,areaId,null);//平台服务费 ,扣除掉退款部分的 + BigDecimal payFee = defaultIfNull(etOrderMapper.getPayFee(startDateStr, endDateStr, null, areaId,null), BigDecimal.ZERO);//新增 + BigDecimal refundFee = defaultIfNull(etOrderMapper.getRefundFee(startDateStr, endDateStr, null, areaId,null), BigDecimal.ZERO);//退款 + BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(startDateStr, endDateStr, null, areaId,null,null);//手续费,扣除掉退款部分的 + BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(startDateStr, endDateStr, null,areaId,null,null);//平台服务费 ,扣除掉退款部分的 BigDecimal incomeFee = defaultIfNull(payFee.subtract(serviceFee).subtract(refundFee).subtract(platformServiceFee), BigDecimal.ZERO);//营收 = 新增 - 手续费 - 退款 - 平台服务费 reconciliation.setPayFee(payFee); @@ -1798,12 +1819,12 @@ public class EtOrderServiceImpl implements IEtOrderService private ReconciliationVo.Reconciliation createReconciliationByVehicle(String timeStart, String timeEnd, String sn,Long areaId) { ReconciliationVo.Reconciliation reconciliation = new ReconciliationVo.Reconciliation(); reconciliation.setSn(sn); - BigDecimal payFee = etOrderMapper.getPayFee(timeStart, timeEnd, sn, null); + BigDecimal payFee = etOrderMapper.getPayFee(timeStart, timeEnd, sn, null,null); reconciliation.setPayFee(payFee); - BigDecimal refundFee = etOrderMapper.getRefundFee(timeStart, timeEnd, sn, null); + BigDecimal refundFee = etOrderMapper.getRefundFee(timeStart, timeEnd, sn, null,null); reconciliation.setRefundFee(refundFee); - BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(timeStart, timeEnd, sn, areaId,null);//手续费 - BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(timeStart, timeEnd, sn, areaId,null);//平台服务费 + BigDecimal serviceFee = etCapitalFlowMapper.getHandlingFee(timeStart, timeEnd, sn, areaId,null,null);//手续费 + BigDecimal platformServiceFee = etCapitalFlowMapper.getServiceFee(timeStart, timeEnd, sn, areaId,null,null);//平台服务费 reconciliation.setIncome(payFee.subtract(refundFee).subtract(serviceFee).subtract(platformServiceFee)); reconciliation.setServiceFee(serviceFee); reconciliation.setPlatformServiceFee(platformServiceFee); @@ -2221,6 +2242,68 @@ public class EtOrderServiceImpl implements IEtOrderService return updateEtOrder; } + /** + * 获取营收统计(按月份) + */ + @Override + public List getIncomeList(Long deptId, String date) { + // 定义缓存的键 + String cacheKey = "income:deptId_" + deptId + ":date_" + date; + + // 尝试从缓存中获取数据 + List cachedIncomeVos = redisCache.getCacheObject(cacheKey); + if (cachedIncomeVos != null) { + log.info("【营收统计】从缓存中获取数据:" + cacheKey); + return cachedIncomeVos; // 如果缓存中有数据,直接返回 + } + + ArrayList incomeVos = new ArrayList<>(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM"); + SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(DateUtils.getNowDate()); + List areaIds = etOperatingAreaService.selectAreaListByDeptId(deptId); + + try { + // 将传入的 date 字符串解析为日期 + Date parsedDate = dateFormat.parse(date); + calendar.setTime(parsedDate); + } catch (ParseException e) { + log.error("日期解析失败, 请检查日期格式,错误信息: {}", e.getMessage()); + return incomeVos; + } + + // 获取当前月的最后一天 + int lastDayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + + for (int day = 1; day <= lastDayOfMonth; day ++) { + // 设置当前日期为每一天 + calendar.set(Calendar.DAY_OF_MONTH, day); + String formattedDate = dayFormat.format(calendar.getTime()); + + // 拼接查询的开始和结束时间 + String startDateStr = formattedDate + " " + Constants.DATE_FORMAT_START_PEREND; + String endDateStr = formattedDate + " " + Constants.DATE_FORMAT_END_PEREND; + + // 获取当天的订单统计信息 + IndexVo.OrderFeeStatisticsVo todayOrderInfo = getOrderFeeStatisticsByDeptId(startDateStr, endDateStr, areaIds); + log.info("【获取营收统计】营收统计----------todayOrderInfo: {}" , JSON.toJSON(todayOrderInfo)); + + // 构建收入统计对象 + IndexVo.IncomeVo incomeVo = new IndexVo.IncomeVo(); + incomeVo.setDay(formattedDate); + incomeVo.setOrderNum(todayOrderInfo.getOrderCount()); + incomeVo.setIncome(todayOrderInfo.getIncomeFee()); + + // 添加到结果列表中 + incomeVos.add(incomeVo); + } + + // 将计算得到的数据存入缓存,缓存有效期为30分钟 + redisCache.setCacheObject(cacheKey, incomeVos, 30, TimeUnit.MINUTES); + return incomeVos; + } + /** * 使用优惠券后的价格 * 1. 先判断是否过期?并且是否是未使用的状态 diff --git a/electripper-system/src/main/resources/mapper/system/EtCapitalFlowMapper.xml b/electripper-system/src/main/resources/mapper/system/EtCapitalFlowMapper.xml index 87df91e..2c06ee9 100644 --- a/electripper-system/src/main/resources/mapper/system/EtCapitalFlowMapper.xml +++ b/electripper-system/src/main/resources/mapper/system/EtCapitalFlowMapper.xml @@ -275,7 +275,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" et_capital_flow f where f.bus_type = 4 and f.type = 2 and owner_type = 2 - and f.owner_id = #{ownerId} + and f.owner_id = #{ownerId} AND DATE(f.create_time) >= #{timeStart} diff --git a/electripper-system/src/main/resources/mapper/system/EtOrderMapper.xml b/electripper-system/src/main/resources/mapper/system/EtOrderMapper.xml index f4d970d..e4a7d4d 100644 --- a/electripper-system/src/main/resources/mapper/system/EtOrderMapper.xml +++ b/electripper-system/src/main/resources/mapper/system/EtOrderMapper.xml @@ -679,6 +679,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and sn = #{sn} and area_id = #{areaId} + + and area_id IN + + #{item} + + and DATE(pay_time) >= #{startDateStr}