sozsoft-platform/configs/seeds/postgres/object/Prj_V_ManMonthGantt.sql

43 lines
2 KiB
MySQL
Raw Normal View History

2026-10-08 10:51:14 +00:00
CREATE OR REPLACE VIEW public."Prj_V_ManMonthGantt"
AS
WITH base AS (
SELECT r."TenantId", p."BranchId", w."ProjectId", r."UserId", w."Id" AS "WorkPackageId",
2026-10-08 10:51:14 +00:00
w."Code", w."Name", r."Rate", make_date(r."Year", r."Month", 1) AS "PeriodDate"
FROM public."Prj_T_WorkPackageMonthRate" r
INNER JOIN public."Prj_T_WorkPackage" w ON w."Id" = r."WorkPackageId" AND w."IsDeleted" = FALSE
INNER JOIN public."Prj_T_Project" p ON p."Id" = w."ProjectId" AND p."IsDeleted" = FALSE
WHERE r."IsDeleted" = FALSE AND r."Rate" > 0
)
SELECT
(b."ProjectId"::text || '|' || b."UserId"::text)::varchar(120) AS "Id",
NULL::varchar(120) AS "ParentId",
b."TenantId", b."ProjectId", b."UserId", NULL::uuid AS "WorkPackageId",
FALSE AS "IsDeleted", 1 AS "RowLevel",
COALESCE(MAX(u."Name" || ' ' || u."Surname"), MAX(u."UserName"))::varchar(256) AS "Title",
MIN(b."PeriodDate") AS "StartDate",
(MAX(b."PeriodDate") + INTERVAL '1 month' - INTERVAL '1 day')::date AS "EndDate",
AVG(b."Rate")::numeric(18,4) AS "Progress",
AVG(b."Rate")::numeric(18,4) AS "AvgRate",
SUM(b."Rate")::numeric(18,4) AS "TotalRate",
COUNT(DISTINCT b."PeriodDate")::integer AS "MonthCount",
b."BranchId"
2026-10-08 10:51:14 +00:00
FROM base b
LEFT JOIN public."AbpUsers" u ON u."Id" = b."UserId"
GROUP BY b."TenantId", b."BranchId", b."ProjectId", b."UserId"
2026-10-08 10:51:14 +00:00
UNION ALL
SELECT
(b."ProjectId"::text || '|' || b."UserId"::text || '|' || b."WorkPackageId"::text)::varchar(120),
(b."ProjectId"::text || '|' || b."UserId"::text)::varchar(120),
b."TenantId", b."ProjectId", b."UserId", b."WorkPackageId",
FALSE, 2,
(MAX(b."Code") || ' ' || MAX(b."Name"))::varchar(256),
MIN(b."PeriodDate"),
(MAX(b."PeriodDate") + INTERVAL '1 month' - INTERVAL '1 day')::date,
AVG(b."Rate")::numeric(18,4),
AVG(b."Rate")::numeric(18,4),
SUM(b."Rate")::numeric(18,4),
COUNT(DISTINCT b."PeriodDate")::integer,
b."BranchId"
2026-10-08 10:51:14 +00:00
FROM base b
GROUP BY b."TenantId", b."BranchId", b."ProjectId", b."UserId", b."WorkPackageId";