[英]Calculating processing time based on business hours instead of total hours
I'm trying to calculate the service hours that have passed since a ticket has been logged.我正在尝试计算自记录票以来经过的服务时间。 When a ticket gets logged a timestamp is saved with it ( date_logged ).当票证被记录时,时间戳会随之保存( date_logged )。 When it gets closed another timestamp is saved ( date_closed ).当它关闭时,会保存另一个时间戳( date_closed )。
What I need is the hours that have passed between the date_logged and the current datetime (for open tickets) or the hours between the date_logged and the date_closed (for closed tickets) based on the service hours of the department assigned to the ticket.我需要的是根据分配给工单的部门的服务时间,在 date_logged 和当前 datetime 之间经过的时间(对于打开的工单)或 date_logged 和 date_close 之间的时间(对于关闭的工单)。
Public holidays have to be included.公共假期必须包括在内。
The service hours of the assigned department are saved in the same table as the ticket.指定部门的服务时间与工单保存在同一个表中。 The table looks something like this:该表如下所示:
incident_ref事件参考 | department部 | date_logged date_logged | date_closed日期关闭 | sla_mon_start sla_mon_start | sla_mon_end sla_mon_end | sla_tue_start sla_tue_start | sla_tue_end sla_tue_end | sla_wed_start sla_wed_start | sla_wed_end sla_wed_end | sla_thr_start sla_thr_start | sla_thr_end sla_thr_end | sla_fri_start sla_fri_start | sla_fri_end sla_fri_end | sla_sat_start sla_sat_start | sla_sat_end sla_sat_end | sla_sun_start sla_sun_start | sla_sun_end sla_sun_end |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1660565 1660565 | A一个 | 06.01.21 11:30:52 06.01.21 11:30:52 | 01.01.01 07:30:00 01.01.01 07:30:00 | 01.01.01 16:45:00 01.01.01 16:45:00 | 01.01.01 07:30:00 01.01.01 07:30:00 | 01.01.01 16:45 01.01.01 16:45 | 01.01.01 07:30:00 01.01.01 07:30:00 | 01.01.01 16:45:00 01.01.01 16:45:00 | 01.01.01 07:30:00 01.01.01 07:30:00 | 01.01.01 16:45:00 01.01.01 16:45:00 | 01.01.01 07:30:00 01.01.01 07:30:00 | 01.01.01 13:00:00 01.01.01 13:00:00 | 01.01.01 00:00:00 01.01.01 00:00:00 | 01.01.01 00:00:00 01.01.01 00:00:00 | 01.01.01 00:00:00 01.01.01 00:00:00 | 01.01.01 00:00:00 01.01.01 00:00:00 | |
1660567 1660567 | B乙 | 13.01.21 09:14:16 13.01.21 09:14:16 | 01.01.01 07:00:00 01.01.01 07:00:00 | 01.01.01 16:30:00 01.01.01 16:30:00 | 01.01.01 07:00:00 01.01.01 07:00:00 | 01.01.01 16:30:00 01.01.01 16:30:00 | 01.01.01 07:00:00 01.01.01 07:00:00 | 01.01.01 16:30:00 01.01.01 16:30:00 | 01.01.01 07:00:00 01.01.01 07:00:00 | 01.01.01 16:30:00 01.01.01 16:30:00 | 01.01.01 07:00:00 01.01.01 07:00:00 | 01.01.01 16:30:00 01.01.01 16:30:00 | 01.01.01 07:00:00 01.01.01 07:00:00 | 01.01.01 15:00:00 01.01.01 15:00:00 | 01.01.01 00:00:00 01.01.01 00:00:00 | 01.01.01 00:00:00 01.01.01 00:00:00 | |
1660558 1660558 | C C | 31.12.20 07:04:46 31.12.20 07:04:46 | 31.12.20 07:36:59 31.12.20 07:36:59 | 01.01.01 07:00:00 01.01.01 07:00:00 | 01.01.01 16:30:00 01.01.01 16:30:00 | 01.01.01 07:00:00 01.01.01 07:00:00 | 01.01.01 16:30:00 01.01.01 16:30:00 | 01.01.01 07:00:00 01.01.01 07:00:00 | 01.01.01 16:30:00 01.01.01 16:30:00 | 01.01.01 07:00:00 01.01.01 07:00:00 | 01.01.01 16:30:00 01.01.01 16:30:00 | 01.01.01 07:00:00 01.01.01 07:00:00 | 01.01.01 16:30:00 01.01.01 16:30:00 | 01.01.01 07:00:00 01.01.01 07:00:00 | 01.01.01 15:00:00 01.01.01 15:00:00 | 01.01.01 00:00:00 01.01.01 00:00:00 | 01.01.01 00:00:00 01.01.01 00:00:00 |
3456789 3456789 | D D | 01.01.21 09:41:00 01.01.21 09:41:00 | 04.01.21 08:21:00 04.01.21 08:21:00 | 01.01.01 08:00:00 01.01.01 08:00:00 | 01.01.01 15:00:00 01.01.01 15:00:00 | 01.01.01 08:00:00 01.01.01 08:00:00 | 01.01.01 15:00:00 01.01.01 15:00:00 | 01.01.01 08:00:00 01.01.01 08:00:00 | 01.01.01 15:00:00 01.01.01 15:00:00 | 01.01.01 08:00:00 01.01.01 08:00:00 | 01.01.01 15:00:00 01.01.01 15:00:00 | 01.01.01 08:00:00 01.01.01 08:00:00 | 01.01.01 13:00:00 01.01.01 13:00:00 | 01.01.01 00:00:00 01.01.01 00:00:00 | 01.01.01 00:00:00 01.01.01 00:00:00 | 01.01.01 00:00:00 01.01.01 00:00:00 | 01.01.01 00:00:00 01.01.01 00:00:00 |
0123456 0123456 | D D | 02.01.21 13:12:00 02.01.21 13:12:00 | ... ... | ... ... | ... ... | ... ... | ... ... |
I only have the permission to read on this database, so I'm not allowed to alter existing tables or create new ones.我只有读取这个数据库的权限,所以我不能更改现有表或创建新表。
Based on an answer I got on a previous question of mine, I tried to solve it like shown in the following, but this way I only get the error "date+date not allowed".根据我对上一个问题的回答,我尝试如下所示解决它,但这样我只会收到错误“日期+日期不允许”。 I haven't tried to include public holidays yet, because the rest already didn't work.我还没有尝试包括公共假期,因为 rest 已经不起作用了。
SELECT incident_ref,
date_logged,
Inc_close_date,
TO_CHAR( FLOOR( service_time_seconds / 60 / 60 ), 'FM99990' )
|| ':'
|| TO_CHAR( MOD( FLOOR( service_time_seconds / 60 ), 60 ), 'FM00' )
|| ':'
|| TO_CHAR( MOD( service_time_seconds, 60 ), 'FM00' )
AS "service time [hh:mm]"
FROM (
SELECT inc.incident_ref,
inc.date_logged,
inc.Inc_close_date,
ROUND(
(
-- Calculate the full weeks difference from the start of ISO weeks.
(
TRUNC( COALESCE( Inc_close_date, SYSDATE ), 'IW' )
- TRUNC( date_logged, 'IW' )
) * ( (24*(sla_mon_end-sla_mon_start))
+ (24*(sla_tue_end-sla_tue_start))
+ (24*(sla_wed_end-sla_wed_start))
+ (24*(sla_thr_end-sla_thr_start))
+ (24*(sla_fri_end-sla_fri_start))
+ (24*(sla_sat_end-sla_sat_start))
+ (24*(sla_sun_end-sla_sun_start) )) / (7*24)
-- Add the hours for the full days for the final week.
+ DECODE(
TRUNC( COALESCE( Inc_close_date, SYSDATE ) )
- TRUNC( COALESCE( Inc_close_date, SYSDATE ), 'IW' ),
0, 0.0,
1, (24*(sla_mon_end-sla_mon_start)),
2, (24*(sla_mon_end-sla_mon_start)) + 24*(sla_wed_end-sla_tue_start),
3, (24*(sla_mon_end-sla_mon_start)) + 24*(sla_wed_end-sla_tue_start) + 24*(sla_wed_end-sla_wed_start),
4, (24*(sla_mon_end-sla_mon_start)) + 24*(sla_wed_end-sla_tue_start) + 24*(sla_wed_end-sla_wed_start) + 24*(sla_thr_end-sla_thr_start),
5, (24*(sla_mon_end-sla_mon_start)) + 24*(sla_wed_end-sla_tue_start) + 24*(sla_wed_end-sla_wed_start) + 24*(sla_thr_end-sla_thr_start) + 24*(sla_fri_end-sla_fri_start),
6, (24*(sla_mon_end-sla_mon_start)) + 24*(sla_wed_end-sla_tue_start) + 24*(sla_wed_end-sla_wed_start) + 24*(sla_thr_end-sla_thr_start) + 24*(sla_fri_end-sla_fri_start) + 24*(sla_sat_end-sla_sat_start)
) / 24
-- Subtract the hours for the full days from the days of the week
-- before the date logged.
- DECODE(
TRUNC( date_logged ) - TRUNC( date_logged, 'IW' ),
0, 0.0,
1, 24*(sla_mon_end-sla_mon_start),
2, 24*(sla_mon_end-sla_mon_start) + 24*(sla_wed_end-sla_tue_start),
3, 24*(sla_mon_end-sla_mon_start) + 24*(sla_wed_end-sla_tue_start) + 24*(sla_wed_end-sla_wed_start),
4, 24*(sla_mon_end-sla_mon_start) + 24*(sla_wed_end-sla_tue_start) + 24*(sla_wed_end-sla_wed_start) + 24*(sla_thr_end-sla_thr_start),
5, 24*(sla_mon_end-sla_mon_start) + 24*(sla_wed_end-sla_tue_start) + 24*(sla_wed_end-sla_wed_start) + 24*(sla_thr_end-sla_thr_start) + 24*(sla_fri_end-sla_fri_start),
6, 24*(sla_mon_end-sla_mon_start) + 24*(sla_wed_end-sla_tue_start) + 24*(sla_wed_end-sla_wed_start) + 24*(sla_thr_end-sla_thr_start) + 24*(sla_fri_end-sla_fri_start) + 24*(sla_sat_end-sla_sat_start)
) / 24
-- Add the hours of the final day
+ COALESCE(
GREATEST(
LEAST(
COALESCE( Inc_close_date, SYSDATE ),
TRUNC( COALESCE( Inc_close_date, SYSDATE ) )
+ DECODE(
TRUNC( COALESCE( Inc_close_date, SYSDATE ) )
- TRUNC( COALESCE( Inc_close_date, SYSDATE ), 'IW' ),
0, sla_mon_end,
1, sla_tue_end,
2, sla_wed_end,
3, sla_thr_end,
4, sla_fri_end,
5, sla_sat_end,
6, sla_sun_end
)
)
-
(
TRUNC( COALESCE( Inc_close_date, SYSDATE ) )
+ DECODE(
TRUNC( COALESCE( Inc_close_date, SYSDATE ) )
- TRUNC( COALESCE( Inc_close_date, SYSDATE ), 'IW' ),
0, sla_mon_start,
1, sla_tue_start,
2, sla_wed_start,
3, sla_thr_start,
4, sla_fri_start,
5, sla_sat_start,
6, sla_sun_start
)
),
0
) / 24,
0
)
-- Subtract the hours of the day before the range starts.
+ COALESCE(
GREATEST(
LEAST(
date_logged,
date_logged
+ DECODE(
TRUNC( COALESCE( Inc_close_date, SYSDATE ) )
- TRUNC( COALESCE( Inc_close_date, SYSDATE ), 'IW' ),
0, sla_mon_end,
1, sla_tue_end,
2, sla_wed_end,
3, sla_thr_end,
4, sla_fri_end,
5, sla_sat_end,
6, sla_sun_end
)
)
-
(
date_logged
+ DECODE(
TRUNC( COALESCE( Inc_close_date, SYSDATE ) )
- TRUNC( COALESCE( Inc_close_date, SYSDATE ), 'IW' ),
0, sla_mon_start,
1, sla_tue_start,
2, sla_wed_start,
3, sla_thr_start,
4, sla_fri_start,
5, sla_sat_start,
6, sla_sun_start
)
),
0
) / 24,
0
)
)
-- Multiply to give seconds rather than fractions of full days.
* 24 * 60 * 60
) AS service_time_seconds
FROM incident inc
);
(The tickets are the same ones as in the table above, if you should wonder about the departments. The current datetime column is just for reference, it isn't needed in the actual result) (门票与上表相同,如果您想了解部门,当前日期时间列仅供参考,实际结果中不需要)
incident_ref事件参考 | date_logged date_logged | date_closed日期关闭 | service time [hh:mm]服务时间 [hh:mm] | current datetime当前日期时间 |
---|---|---|---|---|
1660565 1660565 | 31.12.20 07:15:48 31.12.20 07:15:48 | 131:54 131:54 | 22.01.2021 10:09 22.01.2021 10:09 | |
1660567 1660567 | 31.12.20 07:17:56 31.12.20 07:17:56 | 160:21 160:21 | 22.01.2021 10:09 22.01.2021 10:09 | |
1660558 1660558 | 31.12.20 07:04:46 31.12.20 07:04:46 | 31.12.20 07:36:59 31.12.20 07:36:59 | 00:32 00:32 | 22.01.2021 10:09 22.01.2021 10:09 |
3456789 3456789 | 01.01.21 09:41:00 01.01.21 09:41:00 | 04.01.21 08:21:00 04.01.21 08:21:00 | 00:21 00:21 | 22.01.2021 10:09 22.01.2021 10:09 |
With the last ticket you can see that the assigned department didn't work on new year.通过最后一张票,您可以看到分配的部门在新年没有工作。
Maybe this would help:也许这会有所帮助:
WITH
sample AS -- sample data with DATE_CLOSED defined
(
SELECT DISTINCT
INCIDENT_REF,
DEPARTMENT, SLA_MON_START, SLA_MON_END, SLA_TUE_START, SLA_TUE_END, SLA_WED_START, SLA_WED_END, SLA_THR_START, SLA_THR_END, SLA_FRI_START, SLA_FRI_END, SLA_SAT_START, SLA_SAT_END, SLA_SUN_START, SLA_SUN_END,
DATE_LOGGED,
To_Char(DATE_LOGGED, 'hh:mi') "TIME_LOGGED",
Nvl(DATE_CLOSED, To_Date('01.22.2021 10:09', 'mm.dd.yyyy hh24:mi')) "DATE_CLOSED",
To_Char(Nvl(DATE_CLOSED, To_Date('01.22.2021 10:09', 'mm.dd.yyyy hh24:mi')), 'hh:mi') "TIME_CLOSED"
FROM
SAMPLEDATA s
),
days AS -- generate all the missing dates with the service hours depending on a day of week - calculate effective service time (hours) by date
(
SELECT DISTINCT
INCIDENT_REF "INCIDENT_REF",
DEPARTMENT "DEPARTMENT",
DATE_LOGGED "DATE_LOGGED",
DATE_LOGGED + LEVEL - 1 "WRK_DATE",
CASE
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '1' THEN To_Char(SLA_MON_START, 'hh24:mi') || '-' || To_Char(SLA_MON_END, 'hh24:mi')
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '2' THEN To_Char(SLA_TUE_START, 'hh24:mi') || '-' || To_Char(SLA_TUE_END, 'hh24:mi')
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '3' THEN To_Char(SLA_WED_START, 'hh24:mi') || '-' || To_Char(SLA_WED_END, 'hh24:mi')
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '4' THEN To_Char(SLA_THR_START, 'hh24:mi') || '-' || To_Char(SLA_THR_END, 'hh24:mi')
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '5' THEN To_Char(SLA_FRI_START, 'hh24:mi') || '-' || To_Char(SLA_FRI_END, 'hh24:mi')
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '6' THEN To_Char(SLA_SAT_START, 'hh24:mi') || '-' || To_Char(SLA_SAT_END, 'hh24:mi')
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '7' THEN To_Char(SLA_SUN_START, 'hh24:mi') || '-' || To_Char(SLA_SUN_END, 'hh24:mi')
END "SERVICE_HOURS_SPAN",
--
CASE
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '1' THEN (SLA_MON_END - SLA_MON_START) * 24
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '2' THEN (SLA_TUE_END - SLA_TUE_START) * 24
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '3' THEN (SLA_WED_END - SLA_WED_START) * 24
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '4' THEN (SLA_THR_END - SLA_THR_START) * 24
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '5' THEN (SLA_FRI_END - SLA_FRI_START) * 24
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '6' THEN (SLA_SAT_END - SLA_SAT_START) * 24
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '7' THEN (SLA_SUN_END - SLA_SUN_START) * 24
END "SCHEDULED_SERVICE_HOURS",
--
CASE
WHEN TRUNC(DATE_LOGGED, 'dd') = TRUNC(DATE_LOGGED + LEVEL - 1, 'dd') And To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '1' And TRUNC(DATE_LOGGED, 'dd') <> TRUNC(Nvl(DATE_CLOSED, To_Date('01.22.2021', 'mm.dd.yyyy')), 'dd') THEN (SLA_MON_END - To_Date(To_Char(SLA_MON_END, 'mm.dd.yyyy') || ' ' || TIME_LOGGED, 'mm.dd.yyyy hh24:mi')) * 24
WHEN TRUNC(DATE_LOGGED, 'dd') = TRUNC(DATE_LOGGED + LEVEL - 1, 'dd') And To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '2' And TRUNC(DATE_LOGGED, 'dd') <> TRUNC(Nvl(DATE_CLOSED, To_Date('01.22.2021', 'mm.dd.yyyy')), 'dd') THEN (SLA_TUE_END - To_Date(To_Char(SLA_TUE_END, 'mm.dd.yyyy') || ' ' || TIME_LOGGED, 'mm.dd.yyyy hh24:mi')) * 24
WHEN TRUNC(DATE_LOGGED, 'dd') = TRUNC(DATE_LOGGED + LEVEL - 1, 'dd') And To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '3' And TRUNC(DATE_LOGGED, 'dd') <> TRUNC(Nvl(DATE_CLOSED, To_Date('01.22.2021', 'mm.dd.yyyy')), 'dd') THEN (SLA_WED_END - To_Date(To_Char(SLA_WED_END, 'mm.dd.yyyy') || ' ' || TIME_LOGGED, 'mm.dd.yyyy hh24:mi')) * 24
WHEN TRUNC(DATE_LOGGED, 'dd') = TRUNC(DATE_LOGGED + LEVEL - 1, 'dd') And To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '4' And TRUNC(DATE_LOGGED, 'dd') <> TRUNC(Nvl(DATE_CLOSED, To_Date('01.22.2021', 'mm.dd.yyyy')), 'dd') THEN (SLA_THR_END - To_Date(To_Char(SLA_THR_END, 'mm.dd.yyyy') || ' ' || TIME_LOGGED, 'mm.dd.yyyy hh24:mi')) * 24
WHEN TRUNC(DATE_LOGGED, 'dd') = TRUNC(DATE_LOGGED + LEVEL - 1, 'dd') And To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '5' And TRUNC(DATE_LOGGED, 'dd') <> TRUNC(Nvl(DATE_CLOSED, To_Date('01.22.2021', 'mm.dd.yyyy')), 'dd') THEN (SLA_FRI_END - To_Date(To_Char(SLA_FRI_END, 'mm.dd.yyyy') || ' ' || TIME_LOGGED, 'mm.dd.yyyy hh24:mi')) * 24
WHEN TRUNC(DATE_LOGGED, 'dd') = TRUNC(DATE_LOGGED + LEVEL - 1, 'dd') And To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '6' And TRUNC(DATE_LOGGED, 'dd') <> TRUNC(Nvl(DATE_CLOSED, To_Date('01.22.2021', 'mm.dd.yyyy')), 'dd') THEN (SLA_SAT_END - To_Date(To_Char(SLA_SAT_END, 'mm.dd.yyyy') || ' ' || TIME_LOGGED, 'mm.dd.yyyy hh24:mi')) * 24
WHEN TRUNC(DATE_LOGGED, 'dd') = TRUNC(DATE_LOGGED + LEVEL - 1, 'dd') And To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '7' And TRUNC(DATE_LOGGED, 'dd') <> TRUNC(Nvl(DATE_CLOSED, To_Date('01.22.2021', 'mm.dd.yyyy')), 'dd') THEN (SLA_SUN_END - To_Date(To_Char(SLA_SUN_END, 'mm.dd.yyyy') || ' ' || TIME_LOGGED, 'mm.dd.yyyy hh24:mi')) * 24
--
WHEN TRUNC(DATE_LOGGED, 'dd') = TRUNC(Nvl(DATE_CLOSED, To_Date('01.22.2021', 'mm.dd.yyyy')), 'dd') THEN (DATE_CLOSED - DATE_LOGGED) * 24
ELSE
CASE
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '1' THEN (SLA_MON_END - SLA_MON_START) * 24
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '2' THEN (SLA_TUE_END - SLA_TUE_START) * 24
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '3' THEN (SLA_WED_END - SLA_WED_START) * 24
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '4' THEN (SLA_THR_END - SLA_THR_START) * 24
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '5' THEN (SLA_FRI_END - SLA_FRI_START) * 24
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '6' THEN (SLA_SAT_END - SLA_SAT_START) * 24
WHEN To_Char(DATE_LOGGED + LEVEL - 1, 'd') = '7' THEN (SLA_SUN_END - SLA_SUN_START) * 24
END
END "EFF_SERVICE_HOURS",
--
DATE_CLOSED "DATE_CLOSED"
FROM
sample
WHERE
TRUNC(DATE_LOGGED, 'dd') <= TRUNC(Nvl(DATE_CLOSED, To_Date('01.22.2021 10:09', 'mm.dd.yyyy hh:mi')), 'dd')
CONNECT BY
DATE_LOGGED + LEVEL - 1 <= DATE_CLOSED
ORDER BY
DEPARTMENT, DATE_LOGGED + LEVEL - 1
)
SELECT -- Get total service time as hh24:mi
INCIDENT_REF "INCIDENT_REF",
DEPARTMENT "DEPARTMENT",
To_Char(DATE_LOGGED, 'MON-dd-yyyy hh24:mi') "DATE_LOGGED",
To_Char(DATE_CLOSED, 'MON-dd-yyyy hh24:mi') "DATE_CLOSED",
LPAD(FLOOR(Sum(EFF_SERVICE_HOURS * 60) / 60), 2, '0') || ':' || LPAD(Round((Sum(EFF_SERVICE_HOURS) - FLOOR(Sum(EFF_SERVICE_HOURS * 60) / 60)) * 60, 0), 2, '0') "TOTAL_SERVICE_TIME"
FROM
days
GROUP BY
INCIDENT_REF,
DEPARTMENT,
DATE_LOGGED,
DATE_CLOSED
ORDER BY
DEPARTMENT,
INCIDENT_REF
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.