date_format( updateTime, '%Y%m%d' )) AS updateTime,
date_format( updateTime, '%Y%m%d' )) AS updateTime,
p.CREATED_TIME AS startTime,
p.CREATED_TIME AS startTime,
updateTime AS endTime,
updateTime AS endTime,
p.WORK_MINUTES DIV 60 AS timeSpent,
departmentCount,
departmentCount,
IFNULL( processCount, 0 ) AS processCount,
IFNULL( processCount, 0 ) AS processCount,
IFNULL( pp.PUBLIC_REPLY, '' ) AS publicReply
IFNULL( pp.PUBLIC_REPLY, '' ) AS publicReply
FROM
FROM
project p
project p
LEFT JOIN ( SELECT PROJECT_ID, GRID_ID FROM project_related_personnel WHERE DEL_FLAG = '0' AND SOURCE_TYPE = 'issue' ) prp ON p.ID = prp.PROJECT_ID
INNER JOIN ( SELECT PROJECT_ID, MAX( CREATED_TIME ) AS updateTime FROM project_process ppro WHERE CUSTOMER_ID = #{customerId} GROUP BY PROJECT_ID ) ppro ON p.ID = ppro.PROJECT_ID
INNER JOIN ( SELECT PROJECT_ID, MAX( CREATED_TIME ) AS updateTime FROM project_process ppro GROUP BY PROJECT_ID ) ppro ON p.ID = ppro.PROJECT_ID
INNER JOIN ( SELECT PROJECT_ID, COUNT( DISTINCT DEPARTMENT_NAME ) AS departmentCount FROM project_staff WHERE CUSTOMER_ID = #{customerId} GROUP BY PROJECT_ID ) ps ON ps.PROJECT_ID = p.ID
INNER JOIN ( SELECT PROJECT_ID, COUNT( DISTINCT DEPARTMENT_NAME ) AS departmentCount FROM project_staff GROUP BY PROJECT_ID ) ps ON ps.PROJECT_ID = p.ID
LEFT JOIN ( SELECT PROJECT_ID, COUNT( ID ) AS processCount FROM project_process WHERE DEL_FLAG = '0' AND OPERATION != 'created' AND CUSTOMER_ID = #{customerId} GROUP BY PROJECT_ID ) ppc ON ppc.PROJECT_ID = p.ID
LEFT JOIN ( SELECT PROJECT_ID, COUNT( ID ) AS processCount FROM project_process WHERE DEL_FLAG = '0' AND OPERATION != 'created' GROUP BY PROJECT_ID ) ppc ON ppc.PROJECT_ID = p.ID
LEFT JOIN project_process pp ON p.ID = pp.PROJECT_ID
LEFT JOIN project_process pp ON p.ID = pp.PROJECT_ID
AND pp.OPERATION = 'close' AND pp.DEL_FLAG = '0'
AND pp.CUSTOMER_ID = #{customerId}
AND pp.OPERATION = 'close'
WHERE
WHERE
p.DEL_FLAG = '0'
p.DEL_FLAG = '0'
AND p.CUSTOMER_ID = #{customerId}
AND p.ORG_ID_PATH LIKE concat('%', #{agencyId}, '%')
AND p.ORG_ID_PATH LIKE concat('%', #{agencyId}, '%')
<iftest="projectStatus != null and projectStatus != ''">
AND p.`STATUS` = #{projectStatus}
</if>
<choose>
<whentest="agencyIdList != null and agencyIdList.size() > 0">
<foreachcollection="agencyIdList"item="agency"open="AND ("close=" )"separator=" OR ">
p.ORG_ID_PATH LIKE concat('%', #{agency}, '%')
</foreach>
<iftest="gridIdList != null and gridIdList.size() > 0">
<iftest="gridIdList != null and gridIdList.size() > 0">
OR p.ID IN (
SELECT
PROJECT_ID
FROM
project_related_personnel
WHERE
DEL_FLAG = '0'
AND SOURCE_TYPE = 'issue'
AND CUSTOMER_ID = #{customerId}
<foreachcollection="gridIdList"item="gridId"open="AND ("close=" )"separator=" OR ">
GRID_ID = #{gridId}
</foreach>
UNION ALL
SELECT
PROJECT_ID
FROM
resi_event_report_org a
INNER JOIN resi_event b ON a.RESI_EVENT_ID = b.ID
AND b.CUSTOMER_ID = #{customerId}
AND b.SHIFT_PROJECT = 1
WHERE
a.DEL_FLAG = '0'
AND a.ORG_TYPE = 'grid'
AND a.CUSTOMER_ID = #{customerId}
<foreachcollection="gridIdList"item="gridId"open="AND ("close=" )"separator=" OR ">
<foreachcollection="gridIdList"item="gridId"open="AND ("close=" )"separator=" OR ">
prp.GRID_ID = #{gridId}
ORG_ID = #{gridId}
</foreach>
</foreach>
)
</if>
</if>
<iftest="projectStatus != null and projectStatus != ''">
</when>
AND p.`STATUS` = #{projectStatus}
<otherwise>
<iftest="gridIdList != null and gridIdList.size() > 0">
AND p.ID IN (
SELECT
PROJECT_ID
FROM
project_related_personnel
WHERE
DEL_FLAG = '0'
AND SOURCE_TYPE = 'issue'
AND CUSTOMER_ID = #{customerId}
<foreachcollection="gridIdList"item="gridId"open="AND ("close=" )"separator=" OR ">
GRID_ID = #{gridId}
</foreach>
UNION ALL
SELECT
PROJECT_ID
FROM
resi_event_report_org a
INNER JOIN resi_event b ON a.RESI_EVENT_ID = b.ID
AND b.CUSTOMER_ID = #{customerId}
AND b.SHIFT_PROJECT = 1
WHERE
a.DEL_FLAG = '0'
AND a.ORG_TYPE = 'grid'
AND a.CUSTOMER_ID = #{customerId}
<foreachcollection="gridIdList"item="gridId"open="AND ("close=" )"separator=" OR ">