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 e5cdff9..f41c9d6 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 @@ -1,14 +1,12 @@ package com.ruoyi.web.controller.IndexController; -import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson2.JSON; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.core.domain.entity.AsUser; -import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.system.domain.EtOperatingArea; import com.ruoyi.system.domain.vo.IndexAdminVo; import com.ruoyi.system.domain.vo.IndexVo; +import com.ruoyi.system.domain.vo.LeaderboardVo; import com.ruoyi.system.service.IEtOperatingAreaService; import com.ruoyi.system.service.IEtOrderService; import org.springframework.beans.factory.annotation.Autowired; @@ -74,4 +72,18 @@ public class IndexController extends BaseController return success(indexAdminVo); } + + /** + * 首页统计-排行榜 + * type:1-根据订单数排序,2-根据订单金额排序 + * timeLimit:1-今天,2-本周 + */ + @GetMapping(value = "/admim/leaderboard") + public AjaxResult leaderboard(String type,String timeLimit) + { + logger.info("【首页统计】排行榜"); + List leaderboard = etOrderService.leaderboard(type, timeLimit); + return success(leaderboard); + } + } diff --git a/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppController.java b/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppController.java index 0c19c01..909ecad 100644 --- a/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppController.java +++ b/electripper-admin/src/main/java/com/ruoyi/web/controller/app/AppController.java @@ -207,13 +207,13 @@ public class AppController extends BaseController * 根据经纬度查询附近500米的所有车辆 */ @GetMapping(value = "/vehicleLocalization") - public AjaxResult vehicleLocalization(String longitude,String latitude) + public AjaxResult vehicleLocalization(String longitude,String latitude,String deptId) { if(StrUtil.isBlank(longitude) || StrUtil.isBlank(latitude)){ logger.info("没有经纬度参数:【longitude={}】,【latitude={}】",longitude,latitude); return error("请传经纬度参数"+"【longitude="+longitude+"】,【latitude="+latitude+"】"); } - List asDevices = asDeviceService.vehicleLocalization(longitude,latitude); + List asDevices = asDeviceService.vehicleLocalization(longitude,latitude,deptId); return success(asDevices); } 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 9797282..98c072e 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 @@ -342,6 +342,10 @@ public class AppVerifyController extends BaseController if(inOrder.size()>0){ throw new ServiceException("提现失败,用户还有未完成订单"); } + List inAuditOrder = etOrderService.isInAuditOrder(etOrder.getUserId(), null); + if(inAuditOrder.size()>0){ + throw new ServiceException("提现失败,用户还有未审核完成的订单"); + } if(etOrders.size()>1){ logger.info("有多条status="+ServiceConstants.ORDER_STATUS_ORDER_END+"(已完成),paid="+ServiceConstants.ORDER_PAY_STATUS_PAID+"(已支付)的押金订单"); logger.info("获取最后一条押金充值记录"); @@ -1002,6 +1006,9 @@ public class AppVerifyController extends BaseController { logger.info("还车审核通过请求:【{}】", orderNo); EtOrder order = etOrderService.selectEtOrderByOrderNo(orderNo); + if(!order.getStatus().equals(ServiceConstants.ORDER_STATUS_TO_BE_AUDIT)){ + throw new ServiceException("该订单用户未支付!"); + } if(ObjectUtil.isNotNull(order)){ order.setStatus(ServiceConstants.ORDER_STATUS_ORDER_END); return toAjax(etOrderService.passAudit(order)); diff --git a/electripper-admin/src/main/java/com/ruoyi/web/controller/iot/receive/ReceiveController.java b/electripper-admin/src/main/java/com/ruoyi/web/controller/iot/receive/ReceiveController.java index 8a97128..6ab6c61 100644 --- a/electripper-admin/src/main/java/com/ruoyi/web/controller/iot/receive/ReceiveController.java +++ b/electripper-admin/src/main/java/com/ruoyi/web/controller/iot/receive/ReceiveController.java @@ -104,6 +104,7 @@ public class ReceiveController { /*************明文模式 start****************/ BodyObj obj = Util.resolveBody(body, false); log.info("receive方法解析对象: body Object --- " + JSON.toJSONString(obj)); + log.info("接收到receive方法时间: " + System.currentTimeMillis()); // 起一个异步线程处理数据 scheduledExecutorService.schedule(() -> { new Thread(() -> { @@ -300,7 +301,9 @@ public class ReceiveController { optimizeRoute(jsonArray, newPoint,lon,lat,etOrder); }else{ - if(ServiceConstants.LOCK_STATUS_CLOSE.equals(device.getLockStatus())){ + long difference = System.currentTimeMillis() - logEntry.getAt(); + log.info("当前时间戳:【"+System.currentTimeMillis()+"】,消息时间:【"+logEntry.getAt()+"】,时间差:【"+difference+"】"); + if (difference < 60 * 1000 && ServiceConstants.LOCK_STATUS_CLOSE.equals(device.getLockStatus())) { asDeviceService.sendCommand(asDevice.getMac(), Token.getToken(), IotConstants.COMMAND_CLOSE + IotConstants.COMMAND_FREQUENCY_3600, "车辆锁同步关锁", null, null, msg); } } diff --git a/electripper-system/src/main/java/com/ruoyi/system/domain/AsDevice.java b/electripper-system/src/main/java/com/ruoyi/system/domain/AsDevice.java index dedced1..7d5b8c3 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/domain/AsDevice.java +++ b/electripper-system/src/main/java/com/ruoyi/system/domain/AsDevice.java @@ -56,7 +56,7 @@ public class AsDevice extends BaseEntityPlus implements Serializable { /** 运营商id */ @Excel(name = "运营商id") - @TableField(exist = false) +// @TableField(exist = false) private Long deptId; /** 分区 */ @@ -200,4 +200,10 @@ public class AsDevice extends BaseEntityPlus implements Serializable { @TableField(exist = false) private String unBand; + /** appId*/ + public String appid; + + /** 小程序名称*/ + public String appName; + } diff --git a/electripper-system/src/main/java/com/ruoyi/system/domain/vo/LeaderboardVo.java b/electripper-system/src/main/java/com/ruoyi/system/domain/vo/LeaderboardVo.java new file mode 100644 index 0000000..597924f --- /dev/null +++ b/electripper-system/src/main/java/com/ruoyi/system/domain/vo/LeaderboardVo.java @@ -0,0 +1,29 @@ +package com.ruoyi.system.domain.vo; + + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 排行榜 + * + * @author 邱贞招 + * @date 2024-08-09 + */ +@Data +public class LeaderboardVo { + + /** 运营区id */ + private Long areaId; + + /** 运营区 */ + private String areaName; + + /** 订单数 */ + private Integer orderCount=0; + + /** 订单金额 */ + private BigDecimal orderFee= BigDecimal.ZERO; + +} diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/IAsDeviceService.java b/electripper-system/src/main/java/com/ruoyi/system/service/IAsDeviceService.java index 9c4175b..8b7490b 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/IAsDeviceService.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/IAsDeviceService.java @@ -155,7 +155,7 @@ public interface IAsDeviceService extends IService * @param latitude 纬度 * @return 结果 */ - List vehicleLocalization(String longitude, String latitude); + List vehicleLocalization(String longitude, String latitude,String deptId); /** * 所有车辆定位 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 d6a1ef2..2801b6c 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 @@ -238,4 +238,9 @@ public interface IEtOrderService * 首页统计-总管理 */ IndexAdminVo admimStatistics(); + + /** + * 首页统计-排行榜 + */ + List leaderboard(String type,String timeLimit); } 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 d8c1254..0e0a7b0 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 @@ -307,8 +307,19 @@ public class AsDeviceServiceImpl extends ServiceImpl i @Override public int insertAsDevice(AsDevice asDevice) { + if(ObjectUtil.isNotNull(asDevice.getAreaId())){ + SysDept sysDept = wxPayService.getDeptObjByAreaId(asDevice.getAreaId()); + if(ObjectUtil.isNotNull(sysDept)){ + asDevice.setAppid(sysDept.getAppid()); + asDevice.setAppName(sysDept.getAppName()); + if(sysDept.getIsUsePlatformApp().equals("true")){ + asDevice.setDeptId(100L); + }else{ + asDevice.setDeptId(sysDept.getDeptId()); + } + } + } asDevice.setCreateTime(DateUtils.getNowDate()); -// asDevice.setAreaId(); return asDeviceMapper.insertAsDevice(asDevice); } @@ -321,6 +332,18 @@ public class AsDeviceServiceImpl extends ServiceImpl i @Override public int updateAsDevice(AsDevice asDevice) { + if(ObjectUtil.isNotNull(asDevice.getAreaId())){ + SysDept sysDept = wxPayService.getDeptObjByAreaId(asDevice.getAreaId()); + if(ObjectUtil.isNotNull(sysDept)){ + asDevice.setAppid(sysDept.getAppid()); + asDevice.setAppName(sysDept.getAppName()); + if(sysDept.getIsUsePlatformApp().equals("true")){ + asDevice.setDeptId(100L); + }else{ + asDevice.setDeptId(sysDept.getDeptId()); + } + } + } asDevice.setUpdateTime(DateUtils.getNowDate()); int i = asDeviceMapper.updateAsDevice(asDevice); //预约后开始计费 @@ -337,6 +360,18 @@ public class AsDeviceServiceImpl extends ServiceImpl i @Override public int updateAsDevice2(AsDevice asDevice) { + if(ObjectUtil.isNotNull(asDevice.getAreaId())){ + SysDept sysDept = wxPayService.getDeptObjByAreaId(asDevice.getAreaId()); + if(ObjectUtil.isNotNull(sysDept)){ + asDevice.setAppid(sysDept.getAppid()); + asDevice.setAppName(sysDept.getAppName()); + if(sysDept.getIsUsePlatformApp().equals("true")){ + asDevice.setDeptId(100L); + }else{ + asDevice.setDeptId(sysDept.getDeptId()); + } + } + } asDevice.setUpdateTime(DateUtils.getNowDate()); if(asDevice.getAreaId() == null){ asDevice.setStatus(ServiceConstants.VEHICLE_STATUS_NOT_BAND); @@ -526,9 +561,10 @@ public class AsDeviceServiceImpl extends ServiceImpl i * @return 结果 */ @Override - public List vehicleLocalization(String longitude, String latitude) { + public List vehicleLocalization(String longitude, String latitude,String deptId) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("status", "1"); // 设备状态正常 + wrapper.eq("dept_id", deptId); // 查询所有设备 List allDevices = asDeviceMapper.selectList(wrapper); @@ -1642,15 +1678,15 @@ public class AsDeviceServiceImpl extends ServiceImpl i * 5. 更新骑行订单状态为已支付,支付方式为 押金抵扣 * 6. 更新用户余额 * */ - String isDepositDeduction = area.getIsDepositDeduction(); - /** 1. 判断是否开启押金抵扣*/ - if(ObjectUtil.isNotNull(isDepositDeduction) && "1".equals(isDepositDeduction)){ - if(ServiceConstants.RETURN_VERIFY_NO.equals(area.getReturnVerify())){//关闭还车审核,订单直接用押金支付 - depositDeduction(order); - }else{ - throw new ServiceException("拍照审核和押金点开不能同时开启"); - } - } +// String isDepositDeduction = area.getIsDepositDeduction(); +// /** 1. 判断是否开启押金抵扣*/ +// if(ObjectUtil.isNotNull(isDepositDeduction) && "1".equals(isDepositDeduction)){ +// if(ServiceConstants.RETURN_VERIFY_NO.equals(area.getReturnVerify())){//关闭还车审核,订单直接用押金支付 +// depositDeduction(order); +// }else{ +// throw new ServiceException("拍照审核和押金点开不能同时开启"); +// } +// } int i = etOrderService.updateEtOrder(order); if(i==0){ throw new ServiceException("更新订单状态失败"); @@ -1670,73 +1706,73 @@ public class AsDeviceServiceImpl extends ServiceImpl i } } - /** 押金抵扣 */ - private void depositDeduction(EtOrder order) { - EtFeeRule rule = etFeeRuleService.selectEtFeeRuleByRuleIdIncludeDelete(order.getRuleId()); - Integer autoRefundDeposit = rule.getAutoRefundDeposit(); - log.info("【还车关锁】进入押金抵扣环节--------"+autoRefundDeposit+"个小时后退还押金"); - /** 2. 获取最后一次押金*/ - EtOrder depositOrder = etOrderService.getDepositOrder(order.getUserId()); - BigDecimal deposit = depositOrder.getTotalFee(); - BigDecimal ridingFee = order.getTotalFee(); - BigDecimal afterDeductionFee; - String mark; - if(deposit.compareTo(ridingFee) <= 0){// 骑行费大于押金,订单为未支付, 抵扣后的金额 = 骑行费 - 押金 - afterDeductionFee = BigDecimal.ZERO; - mark = "押金抵扣成功,骑行费【"+ridingFee+"】大于押金【"+deposit+"】"; - order.setStatus(ServiceConstants.ORDER_STATUS_RIDING_END); - order.setPayFee(deposit); - }else{ - // 押金大于订单金额 扣除后 - afterDeductionFee = deposit.subtract(ridingFee); - mark = "押金抵扣成功,骑行费【"+ridingFee+"】小于押金【"+deposit+"】,扣除后金额【"+afterDeductionFee+"】"; - order.setStatus(ServiceConstants.ORDER_STATUS_ORDER_END); - } - /** 更新骑行订单*/ - order.setPaid(ServiceConstants.ORDER_PAY_STATUS_PAID); - order.setPayTime(DateUtils.getNowDate()); - order.setPayType(ServiceConstants.PAY_TYPE_YJ); - order.setMark(mark); - order.setDepositDeduction(ServiceConstants.IS_DEPOSIT_DEDUCTION); - /** 更新押金订单*/ - depositOrder.setDepositDeduction(ServiceConstants.IS_DEPOSIT_DEDUCTION); - int updateEtOrder1 = etOrderMapper.updateEtOrder(depositOrder); - if(updateEtOrder1 == 0){ - throw new ServiceException("押金抵扣失败,更新押金订单失败"); - } - /** 押金抵扣后生成资金流水记录 */ - callbackService.capitalFlowRecords(order,ServiceConstants.FLOW_TYPE_INCOME,ServiceConstants.ORDER_TYPE_RIDING,ServiceConstants.OWNER_TYPE_OPERATOR,null,ServiceConstants.PAY_TYPE_YJ); - //创建一个定时器,计算出退还时间后,执行退款操作 - // 往后推autoRefundDeposit小时执行 - if(autoRefundDeposit!=null){ - scheduledExecutorService.schedule(() -> { - if(afterDeductionFee.compareTo(BigDecimal.ZERO) > 0){ - /** 退款剩余押金*/ - Refund refund = wxPayService.refund(depositOrder, "押金抵扣退款",afterDeductionFee,IdUtils.getOrderNo("ref")); - /** 2.记录退款表 创建退款对象*/ - depositOrder.setReason("押金抵扣退款"); - EtRefund refund1= etOrderService.createRefund(depositOrder, afterDeductionFee, null, null, null, null, refund.getOutRefundNo(),ServiceConstants.REFUND_TYPE_DEPOSIT); - int i = etRefundService.insertEtRefund(refund1); - if(i == 0){ - log.info("【押金抵扣】保存退款对象失败"); - throw new ServiceException("【押金抵扣】,保存退款对象失败"); - } - /** 更新用户余额*/ - AsUser asUser = asUserService.selectUserById(depositOrder.getUserId()); - if(asUser!=null){ - // 更新用户并更新缓存 - asUser.setBalance(BigDecimal.ZERO); - if (asUserService.updateUserProfile(asUser) > 0) - { - log.info("【押金抵扣成功】更新用户信息成功:"+ JSON.toJSON(asUser)); - }else{ - throw new ServiceException("【押金抵扣】,更新用户信息失败"); - } - } - } - }, autoRefundDeposit , TimeUnit.HOURS); - } - } +// /** 押金抵扣 */ +// private void depositDeduction(EtOrder order) { +//// EtFeeRule rule = etFeeRuleService.selectEtFeeRuleByRuleIdIncludeDelete(order.getRuleId()); +//// Integer autoRefundDeposit = rule.getAutoRefundDeposit(); +//// log.info("【还车关锁】进入押金抵扣环节--------"+autoRefundDeposit+"个小时后退还押金"); +// /** 2. 获取最后一次押金*/ +// EtOrder depositOrder = etOrderService.getDepositOrder(order.getUserId()); +// BigDecimal deposit = depositOrder.getTotalFee(); +// BigDecimal ridingFee = order.getTotalFee(); +// BigDecimal afterDeductionFee; +// String mark; +// if(deposit.compareTo(ridingFee) <= 0){// 骑行费大于押金,订单为未支付, 抵扣后的金额 = 骑行费 - 押金 +// afterDeductionFee = BigDecimal.ZERO; +// mark = "押金抵扣成功,骑行费【"+ridingFee+"】大于押金【"+deposit+"】"; +// order.setStatus(ServiceConstants.ORDER_STATUS_RIDING_END); +// order.setPayFee(deposit); +// }else{ +// // 押金大于订单金额 扣除后 +// afterDeductionFee = deposit.subtract(ridingFee); +// mark = "押金抵扣成功,骑行费【"+ridingFee+"】小于押金【"+deposit+"】,扣除后金额【"+afterDeductionFee+"】"; +// order.setStatus(ServiceConstants.ORDER_STATUS_ORDER_END); +// } +// /** 更新骑行订单*/ +// order.setPaid(ServiceConstants.ORDER_PAY_STATUS_PAID); +// order.setPayTime(DateUtils.getNowDate()); +// order.setPayType(ServiceConstants.PAY_TYPE_YJ); +// order.setMark(mark); +// order.setDepositDeduction(ServiceConstants.IS_DEPOSIT_DEDUCTION); +// /** 更新押金订单*/ +// depositOrder.setDepositDeduction(ServiceConstants.IS_DEPOSIT_DEDUCTION); +// int updateEtOrder1 = etOrderMapper.updateEtOrder(depositOrder); +// if(updateEtOrder1 == 0){ +// throw new ServiceException("押金抵扣失败,更新押金订单失败"); +// } +// /** 押金抵扣后生成资金流水记录 */ +// callbackService.capitalFlowRecords(order,ServiceConstants.FLOW_TYPE_INCOME,ServiceConstants.ORDER_TYPE_RIDING,ServiceConstants.OWNER_TYPE_OPERATOR,null,ServiceConstants.PAY_TYPE_YJ); +// //创建一个定时器,计算出退还时间后,执行退款操作 +// // 往后推autoRefundDeposit小时执行 +//// if(autoRefundDeposit!=null){ +//// scheduledExecutorService.schedule(() -> { +// if(afterDeductionFee.compareTo(BigDecimal.ZERO) > 0){ +// /** 退款剩余押金*/ +// Refund refund = wxPayService.refund(depositOrder, "押金抵扣退款",afterDeductionFee,IdUtils.getOrderNo("ref")); +// /** 2.记录退款表 创建退款对象*/ +// depositOrder.setReason("押金抵扣退款"); +// EtRefund refund1= etOrderService.createRefund(depositOrder, afterDeductionFee, null, null, null, null, refund.getOutRefundNo(),ServiceConstants.REFUND_TYPE_DEPOSIT); +// int i = etRefundService.insertEtRefund(refund1); +// if(i == 0){ +// log.info("【押金抵扣】保存退款对象失败"); +// throw new ServiceException("【押金抵扣】,保存退款对象失败"); +// } +// /** 更新用户余额*/ +// AsUser asUser = asUserService.selectUserById(depositOrder.getUserId()); +// if(asUser!=null){ +// // 更新用户并更新缓存 +// asUser.setBalance(BigDecimal.ZERO); +// if (asUserService.updateUserProfile(asUser) > 0) +// { +// log.info("【押金抵扣成功】更新用户信息成功:"+ JSON.toJSON(asUser)); +// }else{ +// throw new ServiceException("【押金抵扣】,更新用户信息失败"); +// } +// } +// } +//// }, autoRefundDeposit , TimeUnit.HOURS); +//// } +// } /** * 计算订单费用 diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsUserServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsUserServiceImpl.java index d77e3bb..1046fe8 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsUserServiceImpl.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/AsUserServiceImpl.java @@ -92,14 +92,14 @@ public class AsUserServiceImpl implements IAsUserService /** 获取设备绑定数量*/ List users = asUserMapper.selectUserList(user); for(AsUser u:users){ - EtOrder etOrder = new EtOrder(); - etOrder.setUserId(u.getUserId()); - EtOrder order = etOrderService.latestOrder(etOrder); - if(ObjectUtil.isNotNull(order)){ - EtOrderDto etOrderVo = new EtOrderDto(); - BeanUtils.copyBeanProp(etOrderVo,order); - u.setLatestOrder(etOrderVo); - } +// EtOrder etOrder = new EtOrder(); +// etOrder.setUserId(u.getUserId()); +// EtOrder order = etOrderService.latestOrder(etOrder); +// if(ObjectUtil.isNotNull(order)){ +// EtOrderDto etOrderVo = new EtOrderDto(); +// BeanUtils.copyBeanProp(etOrderVo,order); +// u.setLatestOrder(etOrderVo); +// } if(ObjectUtil.isNotNull(u.getSysUserId())){ Long sysUserId = u.getSysUserId(); SysUser sysUser = userMapper.selectUserById(sysUserId); diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtAdminOrderServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtAdminOrderServiceImpl.java index 44fe954..64efa11 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtAdminOrderServiceImpl.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtAdminOrderServiceImpl.java @@ -10,6 +10,7 @@ import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.vo.AdminOrderVo; +import com.ruoyi.system.mapper.AsDeviceMapper; import com.ruoyi.system.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -47,8 +48,8 @@ public class EtAdminOrderServiceImpl implements IEtAdminOrderService @Autowired private IEtAdminOrderHistoryService etAdminOrderHistoryService; - @Autowired - private IAsDeviceService asDeviceService; + @Resource + private AsDeviceMapper asDeviceMapper; /** * 查询系统工单 @@ -60,7 +61,7 @@ public class EtAdminOrderServiceImpl implements IEtAdminOrderService public EtAdminOrder selectEtAdminOrderById(Long id) { EtAdminOrder adminOrder = etAdminOrderMapper.selectEtAdminOrderById(id); - AsDevice asDevice = asDeviceService.selectAsDeviceBySn(adminOrder.getSn()); + AsDevice asDevice = asDeviceMapper.selectAsDeviceBySn(adminOrder.getSn()); if(ObjectUtil.isNotNull(asDevice)){ adminOrder.setDevice(asDevice); } @@ -91,18 +92,18 @@ public class EtAdminOrderServiceImpl implements IEtAdminOrderService { List etAdminOrders = etAdminOrderMapper.selectEtAdminOrderList(etAdminOrder); for (EtAdminOrder adminOrder : etAdminOrders){ - SysUser sysUser = userService.selectUserById(adminOrder.getAdminId()); - if(ObjectUtil.isNotNull(sysUser)){ - adminOrder.setAdminName(sysUser.getUserName()); - adminOrder.setPhone(sysUser.getPhonenumber()); - } +// SysUser sysUser = userService.selectUserById(adminOrder.getAdminId()); +// if(ObjectUtil.isNotNull(sysUser)){ +// adminOrder.setAdminName(sysUser.getUserName()); +// adminOrder.setPhone(sysUser.getPhonenumber()); +// } EtFault etFault = etFaultService.selectEtFaultByFaultId(adminOrder.getFaultId()); if(ObjectUtil.isNotNull(etFault)){ adminOrder.setFaultType(etFault.getType()); adminOrder.setFaultTypes(etFault.getTypes()); adminOrder.setFaultTypeStr(etFault.getTypeStr()); } - AsDevice asDevice = asDeviceService.selectAsDeviceBySn(adminOrder.getSn()); + AsDevice asDevice = asDeviceMapper.selectAsDeviceBySn(adminOrder.getSn()); adminOrder.setLatitude(asDevice.getLatitude()); adminOrder.setLongitude(asDevice.getLongitude()); } diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtFaultServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtFaultServiceImpl.java index c9fadb8..93c9909 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtFaultServiceImpl.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtFaultServiceImpl.java @@ -8,11 +8,11 @@ import com.ruoyi.common.constant.ServiceConstants; import com.ruoyi.common.core.domain.entity.AsUser; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.CommonUtil; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.system.domain.*; import com.ruoyi.system.mapper.AsDeviceMapper; +import com.ruoyi.system.mapper.AsUserMapper; import com.ruoyi.system.mapper.EtFaultMapper; import com.ruoyi.system.service.*; import lombok.extern.slf4j.Slf4j; @@ -40,7 +40,7 @@ public class EtFaultServiceImpl implements IEtFaultService private EtFaultMapper etFaultMapper; @Resource - private IAsUserService asUserService; + private AsUserMapper asUserMapper; @Resource private ISysDictDataService sysDictDataService; @@ -113,7 +113,7 @@ public class EtFaultServiceImpl implements IEtFaultService { List etFaults = etFaultMapper.selectEtFaultList(etFault); for(EtFault etFault1:etFaults){ - AsUser asUser = asUserService.selectUserById(etFault1.getUserId()); + AsUser asUser = asUserMapper.selectUserById(etFault1.getUserId()); if(ObjectUtils.isNotEmpty(asUser)){ etFault1.setUserName(asUser.getUserName()); } 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 c5d21af..b959e25 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 @@ -436,8 +436,6 @@ public class EtOrderServiceImpl implements IEtOrderService throw new ServiceException("押金抵扣失败,更新骑行订单失败"); } /** 更新押金订单*/ -// depositOrder.setPayFee(afterDeductionFee); -// depositOrder.setTotalFee(afterDeductionFee); depositOrder.setDepositDeduction(ServiceConstants.IS_DEPOSIT_DEDUCTION); int updateEtOrder1 = etOrderMapper.updateEtOrder(depositOrder); if(updateEtOrder1 == 0){ @@ -821,6 +819,58 @@ public class EtOrderServiceImpl implements IEtOrderService return indexAdminVo; } + /** + * 首页统计-总管理 + */ + @Override + public List leaderboard(String type,String timeLimit) { + List etOperatingAreas = etOperatingAreaService.selectAreaAll(); + ArrayList leaderboardVos = new ArrayList<>(); + + String startDateStr = null; + String endDateStr = null; + Calendar calendar = Calendar.getInstance(); + calendar.setTime(DateUtils.getNowDate()); + if("1".equals(timeLimit)) {//1-今日 + String formattedDate = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()); + startDateStr = formattedDate + " " + Constants.DATE_FORMAT_START_PEREND; + endDateStr = formattedDate + " " + Constants.DATE_FORMAT_END_PEREND; + }else if("2".equals(timeLimit)){// 一周 + // 设置结束日期为现在 + endDateStr = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()) + " " + Constants.DATE_FORMAT_END_PEREND; + // 设置开始日期为7天前 + calendar.add(Calendar.DAY_OF_YEAR, -7); + startDateStr = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()) + " " + Constants.DATE_FORMAT_START_PEREND; + } + for (EtOperatingArea area : etOperatingAreas) { + Long areaId = area.getAreaId(); + LeaderboardVo leaderboardVo = new LeaderboardVo(); + leaderboardVo.setOrderCount(etOrderMapper.getOrderNum(startDateStr, endDateStr, areaId));//订单数 + leaderboardVo.setOrderFee(etOrderMapper.getPayFee(startDateStr, endDateStr, null, areaId));//订单金额 + leaderboardVo.setAreaId(areaId); + leaderboardVo.setAreaName(area.getAreaName()); + leaderboardVos.add(leaderboardVo); + } + if("1".equals(type)){//1-根据订单数排序 + Collections.sort(leaderboardVos, new Comparator() { + @Override + public int compare(LeaderboardVo o1, LeaderboardVo o2) { + // 降序排列,订单数最多的排在最前面 + return o2.getOrderCount().compareTo(o1.getOrderCount()); + } + }); + }else{// 2-根据订单金额排序 + Collections.sort(leaderboardVos, new Comparator() { + @Override + public int compare(LeaderboardVo o1, LeaderboardVo o2) { + // 降序排列,订单金额最多的排在最前面 + return o2.getOrderFee().compareTo(o1.getOrderFee()); + } + }); + } + return leaderboardVos; + } + private IndexAdminVo createIndexAdminVo() { IndexAdminVo indexAdminVo = new IndexAdminVo(); Calendar calendar = Calendar.getInstance(); diff --git a/electripper-system/src/main/resources/mapper/system/AsDeviceMapper.xml b/electripper-system/src/main/resources/mapper/system/AsDeviceMapper.xml index 64491a2..bb2d79b 100644 --- a/electripper-system/src/main/resources/mapper/system/AsDeviceMapper.xml +++ b/electripper-system/src/main/resources/mapper/system/AsDeviceMapper.xml @@ -35,17 +35,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + - select device_id, picture, device_name, mac, sn, model_id, hardware_version_id, vehicle_num, area_id, activation_time, online_status, create_by, create_time, update_by, update_time, last_time, last_location_time, gps, remark, status, lock_status, location, remaining_power, voltage, qrcode, longitude, latitude, is_area_out_outage, is_admin_unlocking from et_device + select device_id, picture, device_name, mac, sn, model_id, hardware_version_id, vehicle_num, area_id, activation_time, + online_status, create_by, create_time, update_by, update_time, last_time, last_location_time, gps, remark, status, + lock_status, location, remaining_power, voltage, qrcode, longitude, latitude, is_area_out_outage, is_admin_unlocking,appid, app_name, dept_id from et_device