更新统计相关内容

This commit is contained in:
xuyuncong 2025-11-03 10:00:54 +08:00
parent a82544241f
commit 23f81a3911
7 changed files with 90 additions and 2 deletions

View File

@ -290,7 +290,7 @@ public class RepairStatisticsController {
public CommonResult<?> procurementOrPickingStatistics(QueryBusinessReqVO reqVO) {
return CommonResult.success(statisticsService.procurementOrPickingStatistics(reqVO));
}
/**
* @description :整车配件完成率统计
* @author AI
@ -303,4 +303,16 @@ public class RepairStatisticsController {
return CommonResult.success(statisticsService.vehiclesAccessoriesCompletionRate(reqVO));
}
/**
* @description :配件列表申请统计
* @author xyc
* @date 10:46 2025/10/31
* @param reqVO {@link QueryBusinessReqVO}
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<?>
**/
@GetMapping("/accessoriesRequestListStatistics")
public CommonResult<?> accessoriesRequestListStatistics(QueryBusinessReqVO reqVO) {
return CommonResult.success(statisticsService.accessoriesRequestListStatistics(reqVO));
}
}

View File

@ -206,4 +206,13 @@ public interface RepairStatisticsMapper {
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
List<Map<String, Object>> vehiclesAccessoriesCompletionRate(QueryBusinessReqVO reqVO);
/**
* @description // TODO: 配件详情统计
* @author lf
* @date 10:57 2025/10/31
* @param reqVO
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
**/
List<Map<String, Object>> accessoriesRequestListStatistics(QueryBusinessReqVO reqVO);
}

View File

@ -199,4 +199,13 @@ public interface RepairStatisticsService {
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
List<Map<String, Object>> vehiclesAccessoriesCompletionRate(QueryBusinessReqVO reqVO);
/**
* @description // TODO: 配件详情统计
* @author lf
* @date 10:56 2025/10/31
* @param reqVO
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
**/
List<Map<String, Object>> accessoriesRequestListStatistics(QueryBusinessReqVO reqVO);
}

View File

@ -369,4 +369,16 @@ public class RepairStatisticsServiceImpl implements RepairStatisticsService {
public List<Map<String, Object>> vehiclesAccessoriesCompletionRate(QueryBusinessReqVO reqVO) {
return statisticsMapper.vehiclesAccessoriesCompletionRate(reqVO);
}
/**
* @param reqVO
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @description // TODO: 配件详情统计
* @author lf
* @date 10:56 2025/10/31
**/
@Override
public List<Map<String, Object>> accessoriesRequestListStatistics(QueryBusinessReqVO reqVO) {
return statisticsMapper.accessoriesRequestListStatistics(reqVO);
}
}

View File

@ -936,6 +936,8 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
// 构建查询条件
QueryWrapper<DlRepairTickets> queryWrapper = new QueryWrapper<>();
queryWrapper.ne("tickets_status", "03");
if (startDate != null && endDate != null) {
// 如果有时间范围添加时间条件
queryWrapper.between("create_time",
@ -1058,6 +1060,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
// 直接使用 mapper 查询已交车工单并按 repairType 分组
QueryWrapper<DlRepairTickets> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_handover", "1"); // 已交车
queryWrapper.ne("tickets_status", "03");
if (startDate != null && endDate != null) {
queryWrapper.between("create_time",

View File

@ -504,4 +504,46 @@
AND so.so_time BETWEEN #{dateRange[0]} AND #{dateRange[1]} -- 自定义时间段
</if>
</select>
<select id="accessoriesRequestListStatistics" resultType="java.util.Map">
SELECT
drt.id AS ticketId,
drt.ticket_no AS ticketNo, <!-- 工单号 -->
drt.car_no AS carNo, <!-- 车牌号 -->
drt.car_vin AS carVin, <!-- 车架号 -->
drt.user_name AS userName, <!-- 客户姓名 -->
COUNT(DISTINCT dtw.id) AS partsApplyCount, <!-- 配件申请次数 -->
GROUP_CONCAT(DISTINCT DATE_FORMAT(dtw.create_time, '%Y-%m-%d %H:%i:%s') SEPARATOR '; ') AS applyTimeList, <!-- 申请时间列表 -->
SUM(dti.wares_count) AS totalApplyQuantity, <!-- 申请配件总数量 -->
SUM(COALESCE(dti.wares_already_count, 0)) AS receivedQuantity, <!-- 已领取配件数量 -->
GROUP_CONCAT(DISTINCT
CASE
WHEN drso.so_type = '02' THEN DATE_FORMAT(drso.so_time, '%Y-%m-%d %H:%i:%s')
ELSE NULL
END
SEPARATOR '; '
) AS receiveTimeList, <!-- 领料时间列表 -->
drt.now_repair_name AS currentRepairer, <!-- 当前施工人 -->
drt.adviser_name AS serviceAdviser <!-- 服务顾问 -->
FROM
dl_repair_tickets drt
LEFT JOIN
dl_ticket_wares dtw ON drt.id = dtw.ticket_id AND dtw.deleted = 0
LEFT JOIN
dl_tw_item dti ON dtw.id = dti.tw_id AND dti.deleted = 0
LEFT JOIN
dl_repair_so drso ON dtw.id = drso.tw_id AND drso.so_type = '02' AND drso.deleted = 0
WHERE
drt.deleted = 0
<!-- AND drt.ticket_no = '具体的工单号' 按具体工单查询 -->
<!-- AND drt.car_no = '具体的车牌号' 或者按车牌号查询 -->
<if test="dateRange != null and dateRange.size() == 2">
AND dtw.create_time BETWEEN #{dateRange[0]} AND #{dateRange[1]}
</if>
<!-- AND dtw.create_time BETWEEN '开始时间' AND '结束时间' 按时间筛选 -->
GROUP BY
drt.id, drt.ticket_no, drt.car_no, drt.car_vin, drt.user_name,
drt.now_repair_name, drt.adviser_name
ORDER BY
drt.create_time DESC;
</select>
</mapper>

View File

@ -206,12 +206,13 @@
</if>
FROM dl_repair_tickets drt
LEFT JOIN repair_order_info rorder ON rorder.goods_id = drt.id
INNER JOIN repair_order_info rorder ON rorder.goods_id = drt.id
<if test="(map.payStatus != null and map.payStatus != '' and (map.payStatus == '01' or map.payStatus == '04')) or (map.payStatuses != null and map.payStatuses.size() > 0 and (map.payStatuses.indexOf('01') >= 0 or map.payStatuses.indexOf('04') >= 0))">
LEFT JOIN dl_repair_records drr ON drt.id = drr.ticket_id AND drr.type = 'jssq'
</if>
<where>
drt.deleted = '0'
AND rorder.deleted = '0'
<!-- 已结算的 -->
<if test="map.ticketsStatus != null and map.ticketsStatus != '' and map.ticketsStatus == '02'">