From fd9bbc1ab0a2b264568d580b42ca1ad4fae50c8b Mon Sep 17 00:00:00 2001 From: luojian <1327479187@qq.com> Date: Thu, 9 Jan 2025 15:23:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E6=8E=A5=E5=8F=A3=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/biz/LargeScreenController.java | 76 +++++++++++++++++++ .../controller/biz/StatDriverController.java | 9 +++ .../com/cpxt/biz/domain/BizCustomerRoute.java | 6 ++ .../biz/domain/BizCustomerRouteState.java | 6 ++ .../com/cpxt/biz/domain/BizCustomerShop.java | 48 ++++++++++++ .../cpxt/biz/domain/LargeScreenEntity.java | 10 +++ .../com/cpxt/biz/mapper/StatDriverMapper.java | 3 + .../cpxt/biz/service/IStatDriverService.java | 5 +- .../service/impl/BizCarStateServiceImpl.java | 4 +- .../service/impl/StatDriverServiceImpl.java | 29 ++++++- .../com/cpxt/system/domain/SysNotice.java | 10 +++ .../mapper/system/SysNoticeMapper.xml | 6 +- 12 files changed, 204 insertions(+), 8 deletions(-) diff --git a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/LargeScreenController.java b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/LargeScreenController.java index ff4607f..c650a6e 100644 --- a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/LargeScreenController.java +++ b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/LargeScreenController.java @@ -14,6 +14,7 @@ import com.cpxt.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; @@ -46,9 +47,18 @@ public class LargeScreenController extends BaseController { @Autowired private BizCustomerShopMapper bizCustomerShopMapper; + @Autowired + private BizCustomerRouteShopMapper bizCustomerRouteShopMapper; + + @Autowired + private BizCustomerShopStateMapper bizCustomerShopStateMapper; + @Autowired private BizCustomerRouteMapper bizCustomerRouteMapper; + @Autowired + private BizCustomerRouteStateMapper bizCustomerRouteStateMapper; + @Autowired private StatCarMapper statCarMapper; @@ -233,6 +243,70 @@ public class LargeScreenController extends BaseController { return AjaxResult.success(largeScreenEntity); } + /** + * 查询所有路线信息 + */ + @GetMapping("/route/list") + public AjaxResult routeList() + { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BizCustomerRoute::getStatus,1); + List bizCustomerRoutes = bizCustomerRouteMapper.selectList(queryWrapper); + for (BizCustomerRoute bizCustomerRoute : bizCustomerRoutes) { + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(BizCustomerRouteState::getRouteId,bizCustomerRoute.getId()); + BizCustomerRouteState bizCustomerRouteState = bizCustomerRouteStateMapper.selectOne(queryWrapper1); + bizCustomerRouteState.setFinishRate(commonComputeRatio(bizCustomerRouteState.getFinishOrders(),bizCustomerRouteState.getTodayOrders())); + bizCustomerRoute.setBizCustomerRouteState(bizCustomerRouteState); + } + + largeScreenEntity.setRouteList(bizCustomerRoutes); + return AjaxResult.success(largeScreenEntity); + } + + /** + * 查询路线下的店铺信息以及店铺状态 + */ + @GetMapping("/route/shop/list") + public AjaxResult routeShopList(@RequestParam Integer routeId) + { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BizCustomerRoute::getId,routeId); + queryWrapper.eq(BizCustomerRoute::getStatus,1); + BizCustomerRoute bizCustomerRoute = bizCustomerRouteMapper.selectOne(queryWrapper); + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(BizCustomerRouteShop::getRouteId,bizCustomerRoute.getId()); + List bizCustomerRouteShops = bizCustomerRouteShopMapper.selectList(queryWrapper1); + List shopIdList = bizCustomerRouteShops.stream().map(BizCustomerRouteShop::getShopId).collect(Collectors.toList()); + LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); + queryWrapper2.in(BizCustomerShop::getId,shopIdList); + List bizCustomerShops = bizCustomerShopMapper.selectList(queryWrapper2); + for (BizCustomerShop bizCustomerShop : bizCustomerShops) { + LambdaQueryWrapper queryWrapper3 = new LambdaQueryWrapper<>(); + queryWrapper3.eq(BizCustomerShopState::getShopId,bizCustomerShop.getId()); + BizCustomerShopState bizCustomerShopState = bizCustomerShopStateMapper.selectOne(queryWrapper3); + if (bizCustomerShopState != null){ + bizCustomerShop.setIsFinish(bizCustomerShopState.getIsFinish()); + LambdaQueryWrapper queryWrapper4 = new LambdaQueryWrapper<>(); + queryWrapper4.eq(BizOrder::getOrderSn,bizCustomerShopState.getCurrentOrder()); + BizOrder bizOrder = bizOrderMapper.selectOne(queryWrapper4); + if (bizOrder != null){ + bizCustomerShop.setCurrentOrder(bizOrder.getOrderSn()); + bizCustomerShop.setCarNo(bizOrder.getCarNo()); + bizCustomerShop.setDriveName(bizOrder.getDriverName()); + bizCustomerShop.setCopilotName(bizOrder.getCopilotName()); + bizCustomerShop.setStartTime(bizOrder.getStartTime()); + bizCustomerShop.setArriveImg(bizOrder.getArriveImg()); + } + } + } + bizCustomerRoute.setShopList(bizCustomerShops); + largeScreenEntity.setBizCustomerRoute(bizCustomerRoute); + return AjaxResult.success(largeScreenEntity); + } + + + /** * 地区分布情况 */ @@ -272,6 +346,7 @@ public class LargeScreenController extends BaseController { queryWrapper.eq(BizCustomerRoute::getStatus, 1); return bizCustomerRouteMapper.selectCount(queryWrapper); } + private long getWarehouse(){ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(BizCustomerWarehouse::getStatus, 1); @@ -351,4 +426,5 @@ public class LargeScreenController extends BaseController { } return 0d; } + } diff --git a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/StatDriverController.java b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/StatDriverController.java index 652fe3d..f5c55c3 100644 --- a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/StatDriverController.java +++ b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/StatDriverController.java @@ -47,6 +47,15 @@ public class StatDriverController extends BaseController return getDataTable(list); } + /** + * 查询司机统计 + */ + @GetMapping("/statics") + public AjaxResult statics(StatDriver statDriver) + { + return AjaxResult.success(statDriverService.statics(statDriver)); + } + /** * 导出司机统计列表 */ diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCustomerRoute.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCustomerRoute.java index 84b6120..945d6fc 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCustomerRoute.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCustomerRoute.java @@ -56,4 +56,10 @@ public class BizCustomerRoute @TableField(exist = false) private List shops; + + @TableField(exist = false) + private List shopList; + + @TableField(exist = false) + private BizCustomerRouteState bizCustomerRouteState; } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCustomerRouteState.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCustomerRouteState.java index 1627520..2c52712 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCustomerRouteState.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCustomerRouteState.java @@ -35,6 +35,12 @@ public class BizCustomerRouteState implements Serializable { */ private Integer finishOrders; + /** + * 完成率 + */ + @TableField(exist = false) + private Double finishRate; + /** * 平均配送时长(秒) */ diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCustomerShop.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCustomerShop.java index 1b3e32d..08121b1 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCustomerShop.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCustomerShop.java @@ -3,6 +3,7 @@ package com.cpxt.biz.domain; import java.math.BigDecimal; import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -76,4 +77,51 @@ public class BizCustomerShop /** 备注 */ private String remark; + + /** + * 当前订单 + */ + @TableField(exist = false) + private String currentOrder; + + /** + * 配送车辆 + */ + @TableField(exist = false) + private String carNo; + + /** + * 主驾司机名称 + */ + @TableField(exist = false) + private String driveName; + + /** + * 副驾司机名称 + */ + @TableField(exist = false) + private String copilotName; + + /** + * 配送时间 + */ + @TableField(exist = false) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + /** + * 现场照片 + */ + @TableField(exist = false) + private String arriveImg; + + /** + * 完成状态 + */ + @TableField(exist = false) + private Integer isFinish; + + + + } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/LargeScreenEntity.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/LargeScreenEntity.java index eb0049e..36c06f7 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/domain/LargeScreenEntity.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/LargeScreenEntity.java @@ -106,4 +106,14 @@ public class LargeScreenEntity */ private Map areaOverview; + /** + * 路线信息 + */ + private List routeList; + + /** + * 路线下的店铺信息 + */ + private BizCustomerRoute bizCustomerRoute; + } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/mapper/StatDriverMapper.java b/cpxt-system/src/main/java/com/cpxt/biz/mapper/StatDriverMapper.java index eaa530b..5ebb425 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/mapper/StatDriverMapper.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/mapper/StatDriverMapper.java @@ -45,4 +45,7 @@ public interface StatDriverMapper extends BaseMapper @Select("select t.sumo from (SELECT driver_name,SUM(odometer) sumo FROM `stat_driver` where stat_date >= #{startTime} and stat_date <= #{endTime} GROUP BY driver_name ORDER BY sumo desc limit 5) t") List selectOdometerTop5Odometer(@Param("startTime") String startTime,@Param("endTime") String endTime); + + @Select("SELECT driver_name,SUM(odometer) as odometer,SUM(order_count) as order_count,SUM(online_time) as online_time FROM stat_driver WHERE driver_id = ${driverId}") + Map selectSum(Long driverId); } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/IStatDriverService.java b/cpxt-system/src/main/java/com/cpxt/biz/service/IStatDriverService.java index cd9eb09..f05a59d 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/IStatDriverService.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/IStatDriverService.java @@ -1,8 +1,8 @@ package com.cpxt.biz.service; import com.cpxt.biz.domain.StatDriver; - import java.util.List; +import java.util.Map; /** * 司机统计Service接口 @@ -59,4 +59,7 @@ public interface IStatDriverService * @return 结果 */ public int deleteStatDriverById(Long id); + + Map> statics(StatDriver statDriver); + } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarStateServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarStateServiceImpl.java index c5db61c..36589c5 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarStateServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarStateServiceImpl.java @@ -80,12 +80,12 @@ public class BizCarStateServiceImpl implements IBizCarStateService LambdaQueryWrapper queryWrapper = buildQueryWrapper(bizCarState); List bizCarStateList = bizCarStateMapper.selectList(queryWrapper); for (BizCarState carState : bizCarStateList) { - Date gpsTime = carState.getGpsTime(); +// Date gpsTime = carState.getGpsTime(); String carNo = carState.getCarNo(); LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); queryWrapper1.eq(BizOrder::getCarNo,carNo); queryWrapper1.in(BizOrder::getOrderStatus,"1","2"); - queryWrapper1.le(BizOrder::getUpdateTime,gpsTime); +// queryWrapper1.le(BizOrder::getUpdateTime,gpsTime); queryWrapper1.orderByDesc(BizOrder::getUpdateTime); queryWrapper1.last("limit 1"); BizOrder bizOrder = bizOrderMapper.selectOne(queryWrapper1); diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/StatDriverServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/StatDriverServiceImpl.java index d6d79d6..d338ce0 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/StatDriverServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/StatDriverServiceImpl.java @@ -1,12 +1,13 @@ package com.cpxt.biz.service.impl; -import java.util.Arrays; -import java.util.List; +import java.util.*; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.cpxt.biz.domain.StatDriver; import com.cpxt.biz.mapper.StatDriverMapper; import com.cpxt.biz.service.IStatDriverService; +import com.cpxt.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -94,4 +95,28 @@ public class StatDriverServiceImpl implements IStatDriverService { return statDriverMapper.deleteById(id); } + + @Override + public Map> statics(StatDriver statDriver) { + String statDate = DateUtil.format(new Date(), DateUtils.YYYY_MM_DD); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StatDriver::getDriverId,statDriver.getDriverId()); + queryWrapper.eq(StatDriver::getStatDate,statDate); + StatDriver driver = statDriverMapper.selectOne(queryWrapper); + Map today = new HashMap<>(); + today.put("driverName",driver.getDriverName()); + today.put("odometer",driver.getOdometer()); + today.put("orderCount",driver.getOrderCount()); + today.put("onlineTime",driver.getOnlineTime()); + Map> result = new HashMap<>(); + Map map = statDriverMapper.selectSum(statDriver.getDriverId()); + Map sum = new HashMap<>(); + today.put("driverName",map.get("driver_name")); + today.put("odometer",map.get("odometer")); + today.put("orderCount",map.get("order_count")); + today.put("onlineTime",map.get("online_time")); + result.put("today",today); + result.put("sum",sum); + return result; + } } diff --git a/cpxt-system/src/main/java/com/cpxt/system/domain/SysNotice.java b/cpxt-system/src/main/java/com/cpxt/system/domain/SysNotice.java index cf494c7..f683b75 100644 --- a/cpxt-system/src/main/java/com/cpxt/system/domain/SysNotice.java +++ b/cpxt-system/src/main/java/com/cpxt/system/domain/SysNotice.java @@ -31,6 +31,16 @@ public class SysNotice extends BaseEntity /** 公告状态(0正常 1关闭) */ private String status; + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + private String startTime; + public Long getNoticeId() { return noticeId; diff --git a/cpxt-system/src/main/resources/mapper/system/SysNoticeMapper.xml b/cpxt-system/src/main/resources/mapper/system/SysNoticeMapper.xml index 4684139..d62483d 100644 --- a/cpxt-system/src/main/resources/mapper/system/SysNoticeMapper.xml +++ b/cpxt-system/src/main/resources/mapper/system/SysNoticeMapper.xml @@ -33,12 +33,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND notice_title like concat('%', #{noticeTitle}, '%') + + AND update_time >= #{startTime} + AND notice_type = #{noticeType} - - AND create_by like concat('%', #{createBy}, '%') - order by update_time desc