58 lines
3.1 KiB
XML
58 lines
3.1 KiB
XML
<?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.dite.znpt.mapper.ProjectMapper">
|
|
<select id="queryBySelective" resultType="com.dite.znpt.domain.vo.ProjectListResp">
|
|
with taskProgress as (SELECT count(1) task_count,
|
|
sum(status = 0) taskPendingCount,
|
|
sum(status = 1) task_progress_count,
|
|
sum(status = 2) task_complete_count,
|
|
project_id
|
|
FROM project_task
|
|
group by project_id),
|
|
constructor as (
|
|
select project_id, GROUP_CONCAT(DISTINCT con.name) AS constructor_name
|
|
FROM project prj
|
|
LEFT JOIN user con ON FIND_IN_SET(con.user_id,prj.constructor_ids) > 0 AND con.del_flag = '0'
|
|
GROUP BY prj.project_id
|
|
)
|
|
SELECT
|
|
prj.project_id, prj.project_name, prj.farm_name, prj.status, prj.cover_url, prj.farm_address, prj.client, prj.client_contact, prj.client_phone, prj.inspection_unit,
|
|
prj.inspection_contact, prj.inspection_phone, prj.scale, prj.turbine_model, prj.project_manager_id, pm.name AS project_manager_name, prj.constructor_ids,
|
|
prj.start_date, prj.end_date, con.constructor_name, tp.taskPendingCount, tp.task_progress_count, tp.task_complete_count, tp.task_count, prj.auditor_id,
|
|
prj.construct_team_leader_id, prj.quality_officer_id
|
|
FROM project prj
|
|
LEFT JOIN user pm ON pm.user_id = prj.project_manager_id
|
|
LEFT JOIN constructor con on prj.project_id = con.project_id
|
|
left join taskProgress tp on prj.project_id = tp.project_id
|
|
<where>
|
|
<if test="projectName != null and projectName != ''">
|
|
AND prj.project_name LIKE concat ('%', #{projectName}, '%')
|
|
</if>
|
|
<if test="farmName != null and farmName != ''">
|
|
AND prj.farm_name LIKE concat ('%', #{farmName}, '%')
|
|
</if>
|
|
<if test="farmAddress != null and farmAddress != ''">
|
|
AND prj.farm_address LIKE concat ('%', #{farmAddress}, '%')
|
|
</if>
|
|
<if test="client != null and client != ''">
|
|
AND prj.client LIKE concat ('%', #{client}, '%')
|
|
</if>
|
|
<if test="status != null and status != ''">
|
|
AND prj.status = #{status}
|
|
</if>
|
|
<if test="startDate != null">
|
|
and prj.start_date >= #{startDate}
|
|
</if>
|
|
<if test="endDate != null">
|
|
and prj.end_date <= #{endDate}
|
|
</if>
|
|
<if test="userId != null and userId != ''">
|
|
and (prj.auditor_id = #{userId} or prj.construct_team_leader_id = #{userId}
|
|
or prj.project_manager_id = #{userId} or prj.quality_officer_id = #{userId}
|
|
or prj.constructor_ids like concat('%', #{userId},'%'))
|
|
</if>
|
|
</where>
|
|
</select>
|
|
</mapper>
|
|
|