Просмотр исходного кода

[update] 日货损统计优化

miajio 1 неделя назад
Родитель
Сommit
29d86c07b5
17 измененных файлов с 384 добавлено и 36 удалено
  1. 80 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/driver/data/DriverGoodsLossStatProfitLossDetail.java
  2. 62 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/driver/data/DriverGoodsLossStatUnReplenishSnapshot.java
  3. 3 1
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/driver/mapper/DriverGoodsLossIntervalMainMapper.java
  4. 16 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/driver/mapper/DriverGoodsLossStatProfitLossDetailMapper.java
  5. 16 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/driver/mapper/DriverGoodsLossStatUnReplenishSnapshotMapper.java
  6. 13 0
      warehouse-admin-data/src/main/java/com/yr/warehouse/admin/replenish/mapper/ReplenishOrderInfoMapper.java
  7. 6 2
      warehouse-admin-data/src/main/resources/mapper/driver/DriverGoodsLossIntervalMainMapper.xml
  8. 23 0
      warehouse-admin-data/src/main/resources/mapper/driver/DriverGoodsLossStatProfitLossDetailMapper.xml
  9. 20 0
      warehouse-admin-data/src/main/resources/mapper/driver/DriverGoodsLossStatUnReplenishSnapshotMapper.xml
  10. 18 0
      warehouse-admin-data/src/main/resources/mapper/replenish/ReplenishOrderInfoMapper.xml
  11. 3 14
      warehouse-admin-data/src/main/resources/mapper/statistics/BillingQuantityStatisticsMapper.xml
  12. 2 2
      warehouse-admin-data/src/main/test/com/supplychain/CodeGenerator.java
  13. 16 0
      warehouse-admin-server/src/main/java/com/yr/warehouse/admin/service/driver/DriverGoodsLossStatProfitLossDetailService.java
  14. 16 0
      warehouse-admin-server/src/main/java/com/yr/warehouse/admin/service/driver/DriverGoodsLossStatUnReplenishSnapshotService.java
  15. 50 17
      warehouse-admin-server/src/main/java/com/yr/warehouse/admin/service/driver/impl/DriverGoodsLossIntervalServiceImpl.java
  16. 20 0
      warehouse-admin-server/src/main/java/com/yr/warehouse/admin/service/driver/impl/DriverGoodsLossStatProfitLossDetailServiceImpl.java
  17. 20 0
      warehouse-admin-server/src/main/java/com/yr/warehouse/admin/service/driver/impl/DriverGoodsLossStatUnReplenishSnapshotServiceImpl.java

+ 80 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/driver/data/DriverGoodsLossStatProfitLossDetail.java

@@ -0,0 +1,80 @@
+package com.yr.warehouse.admin.driver.data;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 司机区域货损记录盈亏记录详情
+ * </p>
+ *
+ * @author 
+ * @since 2025-12-31 10:42:36
+ */
+@Getter
+@Setter
+@TableName("yr_driver_goods_loss_stat_profit_loss_detail")
+public class DriverGoodsLossStatProfitLossDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 自增主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 货损区间统计主表id(关联司机货损区间统计主表id)
+     */
+    @TableField("goodsLossMonthlyMainId")
+    private Long goodsLossMonthlyMainId;
+
+    /**
+     * 区域员工关系id
+     */
+    @TableField("areaStaffId")
+    private Long areaStaffId;
+
+    /**
+     * 商品id
+     */
+    @TableField("goodsId")
+    private Integer goodsId;
+
+    /**
+     * 在途库存数
+     */
+    @TableField("onRouteInventoryNum")
+    private Long onRouteInventoryNum;
+
+    /**
+     * 未补货数
+     */
+    @TableField("unReplenishedNum")
+    private Long unReplenishedNum;
+
+    /**
+     * 核算数
+     */
+    @TableField("verifiedNum")
+    private Long verifiedNum;
+
+    /**
+     * 盈亏数
+     */
+    @TableField("profitLossNum")
+    private Long profitLossNum;
+
+    /**
+     * 创建时间
+     */
+    @TableField("createTime")
+    private LocalDateTime createTime;
+}

+ 62 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/driver/data/DriverGoodsLossStatUnReplenishSnapshot.java

@@ -0,0 +1,62 @@
+package com.yr.warehouse.admin.driver.data;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 司机区域货损统计未补货补货单快照
+ * </p>
+ *
+ * @author 
+ * @since 2025-12-31 10:42:36
+ */
+@Getter
+@Setter
+@TableName("yr_driver_goods_loss_stat_un_replenish_snapshot")
+public class DriverGoodsLossStatUnReplenishSnapshot implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 自增主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 货损区间统计主表id(关联司机货损区间统计主表id)
+     */
+    @TableField("goodsLossMonthlyMainId")
+    private Long goodsLossMonthlyMainId;
+
+    /**
+     * 区域员工关系id
+     */
+    @TableField("areaStaffId")
+    private Long areaStaffId;
+
+    /**
+     * 未补货的补货单单号
+     */
+    @TableField("unReplenishOrderNumber")
+    private String unReplenishOrderNumber;
+
+    /**
+     * 未补货数
+     */
+    @TableField("unReplenishedNum")
+    private Long unReplenishedNum;
+
+    /**
+     * 创建时间
+     */
+    @TableField("createTime")
+    private LocalDateTime createTime;
+}

+ 3 - 1
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/driver/mapper/DriverGoodsLossIntervalMainMapper.java

@@ -37,8 +37,10 @@ public interface DriverGoodsLossIntervalMainMapper extends BaseMapper<DriverGood
     /**
      * 查询指定运营商最后生成统计记录
      * @param operatorId 运营商id
+     * @param warehouseId 仓库id
+     * @param intervalStartTime 区间开始时间
      * @return 司机货损统计记录
      */
-    DriverGoodsLossIntervalMain queryLastByOperatorId(@Param("operatorId") Long operatorId, @Param("warehouseId") Long warehouseId);
+    DriverGoodsLossIntervalMain queryLastByOperatorId(@Param("operatorId") Long operatorId, @Param("warehouseId") Long warehouseId, @Param("intervalStartTime") LocalDateTime intervalStartTime);
 
 }

+ 16 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/driver/mapper/DriverGoodsLossStatProfitLossDetailMapper.java

@@ -0,0 +1,16 @@
+package com.yr.warehouse.admin.driver.mapper;
+
+import com.yr.warehouse.admin.driver.data.DriverGoodsLossStatProfitLossDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 司机区域货损记录盈亏记录详情 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-12-31 10:42:36
+ */
+public interface DriverGoodsLossStatProfitLossDetailMapper extends BaseMapper<DriverGoodsLossStatProfitLossDetail> {
+
+}

+ 16 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/driver/mapper/DriverGoodsLossStatUnReplenishSnapshotMapper.java

@@ -0,0 +1,16 @@
+package com.yr.warehouse.admin.driver.mapper;
+
+import com.yr.warehouse.admin.driver.data.DriverGoodsLossStatUnReplenishSnapshot;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 司机区域货损统计未补货补货单快照 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-12-31 10:42:36
+ */
+public interface DriverGoodsLossStatUnReplenishSnapshotMapper extends BaseMapper<DriverGoodsLossStatUnReplenishSnapshot> {
+
+}

+ 13 - 0
warehouse-admin-data/src/main/java/com/yr/warehouse/admin/replenish/mapper/ReplenishOrderInfoMapper.java

@@ -2,6 +2,10 @@ package com.yr.warehouse.admin.replenish.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.yr.warehouse.admin.replenish.data.ReplenishOrderInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,13 @@ import com.yr.warehouse.admin.replenish.data.ReplenishOrderInfo;
  */
 public interface ReplenishOrderInfoMapper extends BaseMapper<ReplenishOrderInfo> {
 
+    /**
+     * 查询未补货的补货单
+     *
+     * @param areaStaffIds 区域员工id
+     * @param intervalStartTime 开始时间
+     * @param intervalEndTime 结束时间
+     * @return 未补货的补货单
+     */
+    List<ReplenishOrderInfo> selectUnReplenish(@Param("areaStaffIds") List<Long> areaStaffIds, @Param("intervalStartTime") LocalDateTime intervalStartTime, @Param("intervalEndTime") LocalDateTime intervalEndTime);
 }

+ 6 - 2
warehouse-admin-data/src/main/resources/mapper/driver/DriverGoodsLossIntervalMainMapper.xml

@@ -80,12 +80,16 @@
                 and #{bo.intervalEndTime} >= dglim.createTime
             </if>
         </where>
-        order by dglim.intervalEndTime desc
+        order by dglim.id desc
     </select>
     <select id="queryLastByOperatorId" resultType="com.yr.warehouse.admin.driver.data.DriverGoodsLossIntervalMain">
         select
             <include refid="Base_Column_List" />
-            from yr_driver_goods_loss_interval_main where operatorId = #{operatorId} and warehouseId = #{warehouseId} and stockTakingType = 'REGULAR'
+            from yr_driver_goods_loss_interval_main where
+                                                        operatorId = #{operatorId}
+                                                      and warehouseId = #{warehouseId}
+                                                      and stockTakingType = 'REGULAR'
+                                                    and #{intervalStartTime} >= intervalEndTime
         order by intervalEndTime desc limit 1
     </select>
 

+ 23 - 0
warehouse-admin-data/src/main/resources/mapper/driver/DriverGoodsLossStatProfitLossDetailMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yr.warehouse.admin.driver.mapper.DriverGoodsLossStatProfitLossDetailMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.yr.warehouse.admin.driver.data.DriverGoodsLossStatProfitLossDetail">
+        <id column="id" property="id" />
+        <result column="goodsLossMonthlyMainId" property="goodsLossMonthlyMainId" />
+        <result column="areaStaffId" property="areaStaffId" />
+        <result column="goodsId" property="goodsId" />
+        <result column="onRouteInventoryNum" property="onRouteInventoryNum" />
+        <result column="unReplenishedNum" property="unReplenishedNum" />
+        <result column="verifiedNum" property="verifiedNum" />
+        <result column="profitLossNum" property="profitLossNum" />
+        <result column="createTime" property="createTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, goodsLossMonthlyMainId, areaStaffId, goodsId, onRouteInventoryNum, unReplenishedNum, verifiedNum, profitLossNum, createTime
+    </sql>
+
+</mapper>

+ 20 - 0
warehouse-admin-data/src/main/resources/mapper/driver/DriverGoodsLossStatUnReplenishSnapshotMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yr.warehouse.admin.driver.mapper.DriverGoodsLossStatUnReplenishSnapshotMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.yr.warehouse.admin.driver.data.DriverGoodsLossStatUnReplenishSnapshot">
+        <id column="id" property="id" />
+        <result column="goodsLossMonthlyMainId" property="goodsLossMonthlyMainId" />
+        <result column="areaStaffId" property="areaStaffId" />
+        <result column="unReplenishOrderNumber" property="unReplenishOrderNumber" />
+        <result column="unReplenishedNum" property="unReplenishedNum" />
+        <result column="createTime" property="createTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, goodsLossMonthlyMainId, areaStaffId, unReplenishOrderNumber, unReplenishedNum, createTime
+    </sql>
+
+</mapper>

+ 18 - 0
warehouse-admin-data/src/main/resources/mapper/replenish/ReplenishOrderInfoMapper.xml

@@ -31,5 +31,23 @@
     <sql id="Base_Column_List">
         id, operator_id, operator_chain, order_number, parent_order_number, warehouse_info_id, device_id, area_staff_id, replenish_account_id, replenish_user_name, replenish_user_id, replenish_time, replenish_type, replenish_status, file_urls, create_time, create_uid, create_name, modify_time, modify_uid, modify_name
     </sql>
+    <select id="selectUnReplenish" resultType="com.yr.warehouse.admin.replenish.data.ReplenishOrderInfo">
+        select <include refid="Base_Column_List" /> from yr_replenish_order_info
+        where replenish_time is null
+        and replenish_status = 0
+        <if test="areaStaffIds != null and areaStaffIds.size > 0">
+            and area_staff_id in
+            <foreach item="item" collection="areaStaffIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="intervalStartTime != null">
+            and create_time >= #{intervalStartTime}
+        </if>
+        <if test="intervalEndTime != null">
+            and #{intervalEndTime} >= create_time
+        </if>
+        order by id desc
+    </select>
 
 </mapper>

+ 3 - 14
warehouse-admin-data/src/main/resources/mapper/statistics/BillingQuantityStatisticsMapper.xml

@@ -100,20 +100,14 @@
     <select id="queryDriverReplenishNum" resultType="com.yr.warehouse.admin.replenish.vo.DriverGoodsOrderNumVo">
         with replenish_data as (
         select
-        IF(roi.replenish_user_id != roi.replenish_account_id, IFNULL(oas.id, roi.area_staff_id), roi.area_staff_id) as
-        areaStaffId,
+        roi.area_staff_id as areaStaffId,
         rod.goods_id as goodsId,
         sum(rod.real_picking_number) as totalNum
         from yr_replenish_order_detail as rod
         left join yr_replenish_order_info as roi on rod.order_number = roi.order_number
-        left join (select id, accountId
-        from yr_operators_area_staff
-        where isDelete = 'NORMAL'
-        group by accountId) as oas on roi.replenish_user_id = oas.accountId
         where roi.replenish_time between #{beginTime} and #{endTime}
         and roi.replenish_status = 2
-        group by oas.id, rod.goods_id
-        )
+        group by roi.area_staff_id, rod.goods_id)
         select rd.areaStaffId as areaStaffId,
         rd.goodsId as goodsId,
         rd.totalNum as totalNum
@@ -130,15 +124,10 @@
 
     <select id="queryDeviceReplenishNum" resultType="com.yr.warehouse.admin.replenish.vo.DriverGoodsOrderNumVo">
         select
-        IF(roi.replenish_user_id != roi.replenish_account_id, IFNULL(oas.id, roi.area_staff_id), roi.area_staff_id) as
-        areaStaffId,
+        roi.area_staff_id as areaStaffId,
         sum(rod.real_picking_number) as totalNum
         from yr_replenish_order_detail as rod
         left join yr_replenish_order_info as roi on rod.order_number = roi.order_number
-        left join (select id, accountId
-        from yr_operators_area_staff
-        where isDelete = 'NORMAL'
-        group by accountId) as oas on roi.replenish_user_id = oas.accountId
         where roi.replenish_time between #{beginTime} and #{endTime}
         and roi.replenish_status = 2
         and rod.real_picking_number > 0

+ 2 - 2
warehouse-admin-data/src/main/test/com/supplychain/CodeGenerator.java

@@ -58,8 +58,8 @@ public class CodeGenerator {
      * 需要生成的表名,必填
      */
     private static final List<String> TABLES = List.of(
-
-            "yr_driver_device_stock_snapshot"
+            "yr_driver_goods_loss_stat_un_replenish_snapshot",
+            "yr_driver_goods_loss_stat_profit_loss_detail"
     );
 
 

+ 16 - 0
warehouse-admin-server/src/main/java/com/yr/warehouse/admin/service/driver/DriverGoodsLossStatProfitLossDetailService.java

@@ -0,0 +1,16 @@
+package com.yr.warehouse.admin.service.driver;
+
+import com.yr.warehouse.admin.driver.data.DriverGoodsLossStatProfitLossDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 司机区域货损记录盈亏记录详情 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-12-31 10:42:36
+ */
+public interface DriverGoodsLossStatProfitLossDetailService extends IService<DriverGoodsLossStatProfitLossDetail> {
+
+}

+ 16 - 0
warehouse-admin-server/src/main/java/com/yr/warehouse/admin/service/driver/DriverGoodsLossStatUnReplenishSnapshotService.java

@@ -0,0 +1,16 @@
+package com.yr.warehouse.admin.service.driver;
+
+import com.yr.warehouse.admin.driver.data.DriverGoodsLossStatUnReplenishSnapshot;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 司机区域货损统计未补货补货单快照 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-12-31 10:42:36
+ */
+public interface DriverGoodsLossStatUnReplenishSnapshotService extends IService<DriverGoodsLossStatUnReplenishSnapshot> {
+
+}

+ 50 - 17
warehouse-admin-server/src/main/java/com/yr/warehouse/admin/service/driver/impl/DriverGoodsLossIntervalServiceImpl.java

@@ -11,13 +11,17 @@ import com.yr.warehouse.admin.driver.data.*;
 import com.yr.warehouse.admin.driver.mapper.*;
 import com.yr.warehouse.admin.driver.menu.DriverGoodsLossIntervalStockTakingType;
 import com.yr.warehouse.admin.driver.vo.DriverGoodsLossIntervalVo;
+import com.yr.warehouse.admin.replenish.data.ReplenishOrderInfo;
+import com.yr.warehouse.admin.replenish.mapper.ReplenishOrderInfoMapper;
 import com.yr.warehouse.admin.service.driver.DriverGoodsLossIntervalService;
 import com.yr.warehouse.admin.service.statistics.DriverStatisticsService;
 import com.yr.warehouse.admin.statistics.vo.DriverStatisticsVo;
 import jakarta.annotation.Resource;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.support.TransactionTemplate;
 
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -31,6 +35,12 @@ public class DriverGoodsLossIntervalServiceImpl implements DriverGoodsLossInterv
     private DriverStatisticsService driverStatisticsService;
 
     @Resource
+    private DriverGoodsLossRecordMapper driverGoodsLossRecordMapper;
+
+    @Resource
+    private DriverEquipmentLossRecordMapper driverEquipmentLossRecordMapper;
+
+    @Resource
     private OperatorComponent operatorComponent;
 
     @Resource
@@ -49,6 +59,9 @@ public class DriverGoodsLossIntervalServiceImpl implements DriverGoodsLossInterv
     private DriverWarehouseMapper driverWarehouseMapper;
 
     @Resource
+    private ReplenishOrderInfoMapper replenishOrderInfoMapper;
+
+    @Resource
     private TransactionTemplate transactionTemplate;
 
 
@@ -59,6 +72,8 @@ public class DriverGoodsLossIntervalServiceImpl implements DriverGoodsLossInterv
         if (null == areaStaffVos || areaStaffVos.isEmpty()) {
             throw new MessageException("当前仓库下没有司机");
         }
+        bo.setIntervalStartTime(LocalDateTime.parse(bo.getIntervalStartTime().toLocalDate() + " 04:00:00"));
+        bo.setIntervalEndTime(LocalDateTime.parse(bo.getIntervalEndTime().toLocalDate() + " 03:59:59"));
 
         bo.setBeginStatDate(bo.getIntervalStartTime().toLocalDate());
         bo.setEndStatDate(bo.getIntervalEndTime().toLocalDate());
@@ -75,8 +90,11 @@ public class DriverGoodsLossIntervalServiceImpl implements DriverGoodsLossInterv
             bo.setAreaStaffIds(operatorAreaStaffIds);
         }
 
+        // 获取司机未补货的补货单列表
+        List<ReplenishOrderInfo> replenishOrderInfos = replenishOrderInfoMapper.selectUnReplenish(bo.getAreaStaffIds(), bo.getIntervalStartTime(), bo.getIntervalEndTime());
+
         // 获取上一次司机的货损统计记录
-        DriverGoodsLossIntervalMain lastDriverGoodsLossIntervalMain = driverGoodsLossIntervalMainMapper.queryLastByOperatorId(bo.getOperatorId(), bo.getWarehouseId());
+        DriverGoodsLossIntervalMain lastDriverGoodsLossIntervalMain = driverGoodsLossIntervalMainMapper.queryLastByOperatorId(bo.getOperatorId(), bo.getWarehouseId(), bo.getIntervalStartTime());
         List<DriverGoodsLossIntervalDetail> lastDriverGoodsLossIntervalDetails = null;
         List<EquipmentLossIntervalDetail> lastEquipmentLossIntervalDetails = null;
         if (null != lastDriverGoodsLossIntervalMain) {
@@ -89,18 +107,14 @@ public class DriverGoodsLossIntervalServiceImpl implements DriverGoodsLossInterv
         Map<Long, DriverOnRouteAccountRecordMain> driverOnRouteAccountRecordMainMap = driverOnRouteAccountRecordMains.stream().collect(Collectors.toMap(DriverOnRouteAccountRecordMain::getAreaStaffId, Function.identity()));
 
         // 基于开始时间及结束时间抽取这段时间内每日统计的司机货损记录及设备货损记录
-        // List<DriverGoodsLossRecord> driverGoodsLossRecords = driverGoodsLossRecordMapper.searchGeneratorParam(bo);
-
-        DriverStatisticsVo driverStatisticsVo = driverStatisticsService.generatorDriverStatisticsVo(bo.getAreaStaffIds(), bo.getIntervalStartTime(), bo.getIntervalEndTime());
-
-
-        // List<DriverEquipmentLossRecord> driverEquipmentLossRecords = driverEquipmentLossRecordMapper.searchGeneratorParam(bo);
+        List<DriverGoodsLossRecord> driverGoodsLossRecords = driverGoodsLossRecordMapper.searchGeneratorParam(bo);
+        List<DriverEquipmentLossRecord> driverEquipmentLossRecords = driverEquipmentLossRecordMapper.searchGeneratorParam(bo);
 
         // 基于司机货损记录及设备货损记录生成司机对应的货损统计记录
         Map<Long, DriverGoodsLossIntervalVo> driverGoodsLossIntervalDetailMap = generatorDriverGoodsLossIntervalDetailMap(bo.getAreaStaffIds(),
                 driverOnRouteAccountRecordMainMap,
-                driverStatisticsVo.getDriverGoodsLossRecords(),
-                driverStatisticsVo.getDriverEquipmentLossRecords(),
+                driverGoodsLossRecords,
+                driverEquipmentLossRecords,
                 lastDriverGoodsLossIntervalDetails,
                 lastEquipmentLossIntervalDetails);
 
@@ -217,34 +231,53 @@ public class DriverGoodsLossIntervalServiceImpl implements DriverGoodsLossInterv
         for (Long areaStaffId : areaStaffIds) {
             DriverOnRouteAccountRecordMain driverOnRouteAccountRecordMain = driverOnRouteAccountRecordMainMap.get(areaStaffId);
 
+            // 司机货损统计记录表
             List<DriverGoodsLossRecord> driverGoodsLossRecordList = areaStaffDriverGoodsLossRecordMap.get(areaStaffId);
+            // 司机设备货损统计记录表
             List<DriverEquipmentLossRecord> driverEquipmentLossRecordList = areaStaffDriverEquipmentLossRecordMap.get(areaStaffId);
 
+            // 上一次的司机货损统计记录表
             DriverGoodsLossIntervalDetail lastDriverGoodsLossIntervalDetail = lastDriverGoodsLossIntervalDetailMap.get(areaStaffId);
+            // 上一次的司机设备货损统计记录表
             EquipmentLossIntervalDetail lastEquipmentLossIntervalDetail = lastEquipmentLossIntervalDetailMap.get(areaStaffId);
 
-
+            // 生成司机货损统计
             DriverGoodsLossIntervalDetail driverGoodsLossIntervalDetail = new DriverGoodsLossIntervalDetail();
             driverGoodsLossIntervalDetail.setAreaStaffId(areaStaffId);
             buildDriverGoodsLossRecord(driverGoodsLossIntervalDetail, lastDriverGoodsLossIntervalDetail, driverGoodsLossRecordList, driverOnRouteAccountRecordMain);
 
+            // 生成设备货损统计
             EquipmentLossIntervalDetail equipmentLossIntervalDetail = new EquipmentLossIntervalDetail();
             equipmentLossIntervalDetail.setAreaStaffId(areaStaffId);
             buildDriverEquipmentLossRecord(equipmentLossIntervalDetail, lastEquipmentLossIntervalDetail, driverEquipmentLossRecordList);
 
-            DriverGoodsLossIntervalVo driverGoodsLossIntervalVo = new DriverGoodsLossIntervalVo();
-            driverGoodsLossIntervalVo.setDriverGoodsLossIntervalDetail(driverGoodsLossIntervalDetail);
-            driverGoodsLossIntervalVo.setEquipmentLossIntervalDetail(equipmentLossIntervalDetail);
-            if (null !=driverOnRouteAccountRecordMain) {
-                driverGoodsLossIntervalVo.setUseDriverOnRouteAccountRecordMainId(driverOnRouteAccountRecordMain.getId());
-            }
-
+            // 响应视图
+            DriverGoodsLossIntervalVo driverGoodsLossIntervalVo = buildGoodsLossIntervalVo(driverGoodsLossIntervalDetail, equipmentLossIntervalDetail, driverOnRouteAccountRecordMain);
             result.put(areaStaffId, driverGoodsLossIntervalVo);
         }
         return result;
     }
 
     /**
+     * 构建司机货损区间统计视图
+     *
+     * @param driverGoodsLossIntervalDetail 货损统计数据
+     * @param equipmentLossIntervalDetail 设备货损统计数据
+     * @param driverOnRouteAccountRecordMain 区域员工账户统计数据
+     * @return 货损区间统计视图
+     */
+    @NotNull
+    private static DriverGoodsLossIntervalVo buildGoodsLossIntervalVo(DriverGoodsLossIntervalDetail driverGoodsLossIntervalDetail, EquipmentLossIntervalDetail equipmentLossIntervalDetail, DriverOnRouteAccountRecordMain driverOnRouteAccountRecordMain) {
+        DriverGoodsLossIntervalVo driverGoodsLossIntervalVo = new DriverGoodsLossIntervalVo();
+        driverGoodsLossIntervalVo.setDriverGoodsLossIntervalDetail(driverGoodsLossIntervalDetail);
+        driverGoodsLossIntervalVo.setEquipmentLossIntervalDetail(equipmentLossIntervalDetail);
+        if (null != driverOnRouteAccountRecordMain) {
+            driverGoodsLossIntervalVo.setUseDriverOnRouteAccountRecordMainId(driverOnRouteAccountRecordMain.getId());
+        }
+        return driverGoodsLossIntervalVo;
+    }
+
+    /**
      * 构建司机货损统计数据
      *
      * @param driverGoodsLossIntervalDetail 货损统计数据

+ 20 - 0
warehouse-admin-server/src/main/java/com/yr/warehouse/admin/service/driver/impl/DriverGoodsLossStatProfitLossDetailServiceImpl.java

@@ -0,0 +1,20 @@
+package com.yr.warehouse.admin.service.driver.impl;
+
+import com.yr.warehouse.admin.driver.data.DriverGoodsLossStatProfitLossDetail;
+import com.yr.warehouse.admin.driver.mapper.DriverGoodsLossStatProfitLossDetailMapper;
+import com.yr.warehouse.admin.driver.service.DriverGoodsLossStatProfitLossDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 司机区域货损记录盈亏记录详情 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-12-31 10:42:36
+ */
+@Service
+public class DriverGoodsLossStatProfitLossDetailServiceImpl extends ServiceImpl<DriverGoodsLossStatProfitLossDetailMapper, DriverGoodsLossStatProfitLossDetail> implements DriverGoodsLossStatProfitLossDetailService {
+
+}

+ 20 - 0
warehouse-admin-server/src/main/java/com/yr/warehouse/admin/service/driver/impl/DriverGoodsLossStatUnReplenishSnapshotServiceImpl.java

@@ -0,0 +1,20 @@
+package com.yr.warehouse.admin.service.driver.impl;
+
+import com.yr.warehouse.admin.driver.data.DriverGoodsLossStatUnReplenishSnapshot;
+import com.yr.warehouse.admin.driver.mapper.DriverGoodsLossStatUnReplenishSnapshotMapper;
+import com.yr.warehouse.admin.driver.service.DriverGoodsLossStatUnReplenishSnapshotService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 司机区域货损统计未补货补货单快照 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-12-31 10:42:36
+ */
+@Service
+public class DriverGoodsLossStatUnReplenishSnapshotServiceImpl extends ServiceImpl<DriverGoodsLossStatUnReplenishSnapshotMapper, DriverGoodsLossStatUnReplenishSnapshot> implements DriverGoodsLossStatUnReplenishSnapshotService {
+
+}