jhprjv2/ruoyi-wechat/src/main/resources/mapper/ProjectInfoMapper.xml

574 lines
21 KiB
XML
Raw Normal View History

2023-08-10 21:09:49 +08:00
<?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.ruoyi.web.projectInfo.mapper.WxProjectInfoMapper">
<!--查询出人员类型信息-->
<select id="getPostIdByUserId" parameterType="String" resultType="String">
SELECT
spu.project_id as projectId
FROM
`sur_project_userinfo` spu
LEFT JOIN sys_user su ON spu.user_id = su.user_id
WHERE
su.user_id =#{userId}
AND su.del_flag = 0
</select>
<!-- 查询组织架构下一层级 -->
<select id="getDeptSubordinate" parameterType="map" resultType="map">
SELECT
ca.cityId AS id,
ca.cityName AS text
FROM
sur_project spi
LEFT JOIN china_area ca ON spi.projectRegional = ca.id
left join sur_project_userinfo spu on spu.project_id = spi.id
WHERE
spi.isDel = 0
and spu.is_del=0
<if test="userId != null and userId != ''"> AND spu.user_id =#{userId} </if>
<if test="provinceId != null and provinceId != ''">AND ca.provinceId =#{provinceId}</if>
GROUP BY ca.cityId,ca.cityName
</select>
<!-- 查询区级层级 -->
<select id="getQUDeptSubordinate" parameterType="map" resultType="map">
SELECT
#{id} AS id,
'全部' AS text
UNION ALL
SELECT
ca.id,
ca.areaName AS text
FROM
sur_project spi
LEFT JOIN china_area ca ON spi.projectRegional = ca.id
left join sur_project_userinfo spu on spu.project_id = spi.id
WHERE
spi.isDel = 0
and spu.is_del=0
AND spu.user_id =#{userId}
AND ca.cityId =#{id}
GROUP BY ca.id,ca.areaName
</select>
<!--根据组织架构id查询数据-->
<select id="getDeptData" parameterType="String" resultType="map">
select
dept_id id,
dept_name text
from
sys_dept
where
1 = 1
AND del_flag = 0
and dept_id=#{deptId}
</select>
<!--查询出项目用户公司项目信息-->
<select id="getCompanyAndProjectByUserId" parameterType="String" resultType="map">
SELECT
IFNULL(spi.projectCode,'') streamNumber,
spi.longitude,
spi.latitude,
spi.id,
spi.projectName AS projectName,
spi.projectAddress,
sd.dept_name AS companyName,
count(sew.id ) AS projectCount
FROM
sur_project_userinfo spu
LEFT JOIN sur_project spi ON spu.project_id = spi.id
LEFT JOIN sys_dept sd ON spi.deptId = sd.dept_id
LEFT JOIN sur_early_warning sew ON sew.projectId = spi.id
AND sew.createTime BETWEEN str_to_date( DATE_FORMAT( NOW( ), '%Y-%m-%d' ), '%Y-%m-%d %H:%i:%s' )
AND str_to_date( now( ), '%Y-%m-%d %H:%i:%s' )
WHERE
1 = 1
AND spu.user_id =#{userId}
AND spi.isDel = 0
</select>
<!--查询所有省级-->
<select id="getShengList" parameterType="map" resultType="map">
SELECT
LEFT ( deptId, 12 ) id,
( SELECT dept_name FROM sys_dept WHERE 1 = 1 AND dept_id = LEFT ( deptId, 12 ) ) text
FROM
`sur_project_info`
WHERE
1 = 1
AND isDel = 0
AND companyId IN ( SELECT id FROM sur_company_info WHERE 1 = 1 AND LEFT ( superiorCompany, length(#{superiorCompanyId}) ) =#{superiorCompanyId} )
GROUP BY
LEFT ( deptId, 12 )
</select>
<!--根据所选层级或者公司查询登录用户的项目-->
<select id="getProjectByDeptIdAndCompanyId" parameterType="map" resultType="map">
SELECT
spi.id AS projectId,
spi.projectName AS projectName,
spi.longitude,
spi.latitude,
spi.projectAddress,
IFNULL( spi.projectCode, '' ) AS streamNumber,
sd.dept_id AS deptId,
sd.dept_name AS companyName,
0 AS projectCount
FROM
sur_project spi
LEFT JOIN china_area ca ON spi.projectRegional = ca.id
LEFT JOIN sys_dept sd ON spi.deptId = sd.dept_id
<!--监理单位/总包公司/分包单位-->
<if test='nowRole == "5" or nowRole == "6" or nowRole == "7"'> left join sur_project_unit_info spui on spui.projectId = spi.id</if>
<!--普通用户查询项目人员-->
<if test='nowRole == "99"'> left join sur_project_userinfo spu on spu.project_id = spi.id</if>
WHERE
spi.isDel = 0
<!--子部门数据-->
<if test='nowRole == "4"'> and spi.deptId = #{nowDeptId}</if>
<!--监理单位/总包公司/分包单位查询当前关联数据-->
<if test='nowRole == "5" or nowRole == "6" or nowRole == "7"'> and spui.unitId = #{nowDeptId}</if>
<!--普通用户查询项目人员-->
<if test='nowRole == "99"'> and spu.user_id = #{userId} and spu.is_del=0</if>
<!--子公司选择-->
<if test='nowRole == "3"'>
<if test='deptId != null and deptId != "0"'>AND spi.deptId =#{deptId}</if>
</if>
GROUP BY spi.id
</select>
<!--根据登录账号查询出企业信息-->
<select id="getCompanyByUserId" parameterType="map" resultType="map">
SELECT
sci.id,
sci.companyName,
IFNULL(sci.superiorCompany,'') superiorCompanyId
FROM
sur_company_user scu
LEFT JOIN sur_company_info sci ON scu.manager_id = sci.id
WHERE
1 = 1
AND scu.user_Id =#{userId}
and sci.isDel=0
</select>
<!--企业人员根据组织架构查询出公司列表-->
<select id="getCompanyQY" parameterType="map" resultType="map">
SELECT
case when sci.superiorCompany=#{companyId} THEN '全部' ELSE (SELECT companyName FROM sur_company_info WHERE superiorCompany=SUBSTRING( sci.superiorCompany, 1, #{num} )) END text,
SUBSTRING( sci.superiorCompany, 1, #{num} ) id
FROM
sur_project_info spi
LEFT JOIN sur_company_info sci ON spi.companyId = sci.id
WHERE
1 = 1
AND sci.isDel = 0
AND spi.deptId IN ( SELECT dept_id FROM sys_dept WHERE 1 = 1 AND LEFT ( dept_id, length( #{deptId} ) ) =#{deptId} )
AND LEFT ( superiorCompany, length( #{companyId}) ) =#{companyId}
<if test="num != null and num != '' and num1 !=null and num1 !=''">
AND (LENGTH(SUBSTRING( sci.superiorCompany, 1, #{num} )) = #{num} OR LENGTH(sci.superiorCompany) = #{num1} )
</if>
GROUP BY
SUBSTRING( sci.superiorCompany, 1, #{num})
ORDER BY
sci.id
</select>
<!--根据公司id查询出公司名称-->
<select id="getCompanyInfo" parameterType="map" resultType="map">
select * from sur_company_info where 1=1 and superiorCompany=#{superiorCompany} and isDel=0
</select>
<!--监管人员根据组织架构查询出公司列表-->
<select id="getCompanyJG" parameterType="map" resultType="map">
SELECT
SUBSTRING( sci.superiorCompany, 1, 4 ) id,
(SELECT companyName FROM sur_company_info WHERE superiorCompany= SUBSTRING( sci.superiorCompany, 1, 4 )) text
FROM
sur_project_info spi
LEFT JOIN sur_company_info sci ON spi.companyId = sci.id
WHERE
1 = 1
AND sci.isDel = 0
AND spi.deptId IN ( SELECT dept_id FROM sys_dept WHERE 1 = 1 AND LEFT ( dept_id, length( #{deptId} ) ) =#{deptId} )
GROUP BY
SUBSTRING( sci.superiorCompany, 1, 4 )
ORDER BY
id
</select>
<!--根据总公司层级查询出集团公司列表-->
<select id="getCompanySonData" parameterType="map" resultType="map">
SELECT
superiorCompany id,
'全部' text
FROM
sur_company_info
WHERE
1 = 1
AND isDel = 0
AND superiorCompany =#{superiorCompanyId}
UNION
SELECT
superiorCompany id,
companyName text
FROM
`sur_company_info`
WHERE
1 = 1
AND isDel = 0
AND LEFT ( superiorCompany, length( #{superiorCompanyId} ) ) = #{superiorCompanyId}
AND LENGTH( superiorCompany ) = length( #{superiorCompanyId} ) + 4
</select>
<!--查询上一级公司-->
<select id="getNextLevelCompany" parameterType="map" resultType="map">
SELECT
superiorCompany superiorCompanyId,
companyName text
FROM
sur_company_info
WHERE
1 = 1
AND isDel = 0
AND superiorCompany = LEFT (#{superiorCompanyId}, length( #{superiorCompanyId}) - 4 )
</select>
<!-- 查询项目的经度纬度列表 -->
<select id="selectProjectPoint" parameterType="String" resultType="map">
SELECT
id projectId,
longitude,
latitude,
projectName
FROM
sur_project
WHERE
deptId = #{deptId}
AND isDel = '0'
</select>
<!-- 查询建设单位下的项目个数 -->
<select id="selectProjectSize" parameterType="String" resultType="Integer">
SELECT
COUNT(*)
FROM
sur_project
WHERE
deptId = #{deptId}
AND isDel = '0'
</select>
<!-- 查询项目的基本信息 -->
<select id="selectProjectInfo" parameterType="map" resultType="map">
SELECT
pro.id,
man.companyName engineeringName,
pro.projectName name,
IFNULL(pro.projectAddress,'') projectAddress,
IFNULL(pro.streamNumber,'') streamNumber
FROM
sur_project_info pro
LEFT JOIN sur_company_info man ON pro.companyId = man.id
WHERE
pro.isDel = '0'
<if test="deptId != null and deptId !=''">AND companyId = #{deptId}</if>
<if test="id != null and id !=''">AND pro.id = #{id}</if>
</select>
<!-- 查询项目的概况信息 -->
<select id="selectProjectOverview" parameterType="String" resultType="map">
SELECT
spi.id,
IFNULL( spi.projectName, '' ) AS projectName,
IFNULL( spi.simpleName, '' ) AS simpleName,
CONCAT(
IFNULL(sdd1.dict_label, ''),
' ',
IFNULL(sdd2.dict_label, ''),
' ',
IFNULL(sdd3.dict_label, '')
) AS projectType,
IFNULL( CONCAT( ca.provinceName, '-', ca.cityName, '-', ca.areaName ), '' ) AS areaName,
IFNULL( spi.projectAddress, '' ) AS projectAddress,
IFNULL( spi.longitude,'') AS longitude,
IFNULL( spi.latitude,'') AS latitude,
IFNULL( spi.floorArea, '' ) AS totalBuildingArea,
IFNULL( spi.licenceNumber, '' ) AS licenceNumber,
IFNULL( spi.projectApproval, '' ) AS projectApproval,
IFNULL( sdd4.dict_label, '' ) AS projectSchedule,
CONCAT(IFNULL(spi.projectTimeLimit, ''),' 天') AS projectTimeLimit,
IFNULL( spi.projectSummarize, '' ) AS projectSummarize,
'' AS scopeOfWork,
IFNULL( spi.scheduledStartTime, '' ) AS planStartTime,
IFNULL( spi.actualOperatingTime, '' ) AS actualStartTime,
IFNULL( spi.plannedCompletionTime, '' ) AS planCompletedTime,
'' AS totalManHours,
IFNULL( sup2.nick_name, '' ) AS projectPerson,
IFNULL( sup2.phonenumber, '' ) AS projectPhone
FROM
sur_project spi
LEFT JOIN china_area ca ON spi.projectRegional = ca.id
left join sys_dict_data sdd1 on sdd1.dict_type = 'project_category' and sdd1.dict_value = spi.projectType
left join sys_dict_data sdd2 on sdd2.dict_type = 'project_level' and sdd2.dict_value = spi.projiectLevel
left join sys_dict_data sdd3 on sdd3.dict_type = 'project_build_type' and sdd3.dict_value = spi.projectNature
left join sys_dict_data sdd4 on sdd4.dict_type = 'sur_project_xmjd' and sdd4.dict_value = spi.projectSchedule
LEFT JOIN (
SELECT
su.user_id,
su.nick_name,
su.phonenumber
FROM
sur_project_userinfo sup1
LEFT JOIN sys_user su ON sup1.user_id = su.user_id
WHERE
sup1.project_id =#{id}
AND sup1.job_type = '21'
ORDER BY
sup1.create_time DESC
LIMIT 1
) sup2 ON 1 = 1
WHERE
spi.id =#{id}
AND spi.isDel = 0
</select>
<!-- 查询项目的管理概况 -->
<select id="selectProjectManage" parameterType="String" resultType="map">
SELECT
companyName engineeringName
FROM
sur_company_info man
LEFT JOIN sur_project pro ON man.id = pro.companyId
WHERE
pro.id = #{id}
AND pro.isDel = '0'
</select>
<!--模糊查询项目信息-->
<select id="getProjectInfoByName" parameterType="map" resultType="map">
SELECT
spi.id projectId,
spi.projectName,
spi.longitude,
spi.latitude,
spi.projectAddress,
IFNULL( spi.projectCode, '' ) streamNumber,
sd.dept_id AS deptId,
sd.dept_name AS companyName,
SUM(CASE WHEN sew.type = 5 THEN 1 ELSE 0 END) AS videoNum,
COUNT( DISTINCT sew.id ) projectCount
FROM
sur_project spi
LEFT JOIN china_area ca ON spi.projectRegional = ca.id
LEFT JOIN sys_dept sd ON spi.deptId = sd.dept_id
LEFT JOIN sur_early_warning sew ON spi.id = sew.projectId
AND DATE( sew.createTime ) = DATE_FORMAT( NOW( ), '%Y-%m-%d' )
WHERE
spi.isDel = 0
<if test="deptId != null and deptId != ''">
and deptId IN ( SELECT dept_id FROM sys_dept WHERE 1 = 1 AND LEFT ( dept_id, length( #{deptId}) ) =#{deptId} )
</if>
<if test="projectId != null and projectId != ''">and spi.id=#{projectId}</if>
AND spi.projectName LIKE CONCAT( '%', #{projectName}, '%')
AND spi.isDel = 0
GROUP BY spi.id
</select>
<!--模糊查询出预警项目-->
<select id="getProjectInfoEnviron" parameterType="map" resultType="map">
SELECT
spi.id projectId,
spi.projectName,
spi.projectAddress,
IFNULL(spi.streamNumber,'') streamNumber,
( SELECT companyName FROM sur_company_info WHERE 1 = 1 AND id = spi.companyId ) companyName,
sum( 1 ) projectCount,
sum( CASE WHEN sew.type = 5 THEN 1 ELSE 0 END ) videoNum,
sum( CASE WHEN sew.type = 6 THEN 1 ELSE 0 END ) progressNum
FROM
sur_project_info spi
LEFT JOIN sur_company_info sci ON spi.companyId = sci.id
LEFT JOIN `sur_early_warning` sew ON sew.projectId = spi.id
WHERE
1 = 1
AND spi.isDel = 0
AND sci.isDel = 0
AND sew.createTime BETWEEN str_to_date( #{startTime}, '%Y-%m-%d %H:%i:%s' )
AND str_to_date( #{endTime}, '%Y-%m-%d %H:%i:%s' )
<if test="projectId != null and projectId !=''">and spi.id=#{projectId}</if>
<if test="companyId != null and companyId != '' and ifSonCompany ==1">
AND spi.companyId in( SELECT id FROM sur_company_info WHERE 1 = 1 AND LEFT ( superiorCompany, length( #{companyId}) ) =#{companyId})
</if>
<if test="companyId != null and companyId != '' and ifSonCompany ==2">
AND spi.companyId in( SELECT id FROM sur_company_info WHERE 1 = 1 AND LEFT ( superiorCompany, length( #{companyId}) ) =#{companyId})
</if>
<if test="companyId != null and companyId != '' and ifSonCompany == 3">
AND spi.companyId =(SELECT id FROM sur_company_info WHERE 1 = 1 and superiorCompany=#{companyId})
</if>
<if test="deptId != null and deptId != ''"> AND deptId IN ( SELECT dept_id FROM sys_dept WHERE 1 = 1 AND LEFT ( dept_id, length( #{deptId} ) ) =#{deptId} ) </if>
<if test="projectId != null and projectId != ''">and spi.id=#{projectId}</if>
AND spi.projectName LIKE CONCAT( '%', #{projectName}, '%')
GROUP BY
spi.projectName
</select>
<select id="getChinaProvince" resultType="map">
select * from china_city
</select>
<insert id="addChinaCity" parameterType="map">
insert into china_area
(
areaName,
provinceId,
provinceName,
cityId,
cityName,
adcode,
lat,
lng
)values
<foreach item="item" index="index" collection="list" separator=",">
(
#{item.areaName},
#{item.provinceId},
#{item.provinceName},
#{item.cityId},
#{item.cityName},
#{item.adcode},
#{item.lat},
#{item.lng}
)
</foreach>
</insert>
<!--查询项目相关信息-->
<select id="getProjectAndChinaData" parameterType="String" resultType="map">
SELECT
ca.provinceId,
ca.provinceName,
ca.cityId,
ca.cityName,
ca.id AS areaId,
ca.areaName,
spi.id AS projectId,
spi.projectName AS projectName,
spi.deptId
FROM
`china_area` ca
LEFT JOIN sur_project spi ON ca.id = spi.projectRegional
WHERE
spi.isDel = 0
AND spi.id =#{projectId}
</select>
<!--查询公司信息-->
<select id="getDeptInfo" resultType="map">
SELECT
sd.dept_id,
sd.dept_name
FROM
sys_dept sd
WHERE
sd.dept_id = 101
</select>
<!--查询公司信息-->
<select id="getDeptInfoByMap" parameterType="map" resultType="map">
SELECT
sd.dept_id,
sd.dept_name,
sd.type_flag
FROM
sys_user su
LEFT JOIN sys_dept sd ON su.dept_id = sd.dept_id
WHERE
su.del_flag = 0
AND su.user_id =#{userId}
</select>
<!--查询公司信息-->
<select id="getZGSDeptInfoByMap" parameterType="map" resultType="map">
SELECT
sd.dept_id,
sd.dept_name
FROM
sys_dept sd
WHERE
sd.del_flag = 0
AND sd.com_flag = '1'
</select>
<!--查询出省份信息-->
<select id="getChinaProvinceList" parameterType="map" resultType="map">
SELECT
ca.provinceId AS id,
ca.provinceName AS text
FROM
sur_project spi
LEFT JOIN china_area ca ON spi.projectRegional = ca.id
left join sur_project_userinfo spu on spu.project_id = spi.id
WHERE
spi.isDel = 0
and spu.is_del=0
and spu.user_id = #{userId}
GROUP BY ca.provinceId,ca.provinceName
</select>
<!--获取公司下一层级-->
<select id="getDeptIdNext" parameterType="map" resultType="map">
SELECT
#{deptId} AS id,
'全部' AS text
UNION ALL
SELECT
dept_id AS id,
dept_name AS text
FROM
sys_dept
WHERE
del_flag = 0
AND LENGTH( dept_id ) = length( #{deptId}) + 4
</select>
<!--获取建设单位-->
<select id="getProjectUnitList" parameterType="String" resultType="map">
SELECT
IFNULL( spi.projectName, '' ) AS projectName,
IFNULL( spui.unitType, '' ) AS unitType,
IFNULL( spuii.unit_name,'') AS unitTypeName,
IFNULL( spuii.unit_icon,'') AS unitTypeIcon,
IFNULL( spui.unitName, '' ) AS unitName,
IFNULL( spui.unitPersonName, '' ) AS unitPersonName,
IFNULL( spui.unitPersonPhone, '' ) AS unitPersonPhone
FROM
`sur_project_unit_info` spui
LEFT JOIN sur_project_unit_icon spuii ON spui.unitType = spuii.id
LEFT JOIN sur_project spi ON spui.projectId = spi.id
WHERE
spui.projectId =#{projectId}
AND spui.del_flag = 0
</select>
<select id="selectDeptByProjectId" parameterType="Long" resultType="map">
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.com_flag, d.type_flag
from sys_dept d
left join sur_project sp on sp.deptId = d.dept_id
where sp.id = #{projectId}
</select>
<select id="selectDeptByUserName" parameterType="String" resultType="map">
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.com_flag, d.type_flag
from sys_dept d
left join sys_user u on u.dept_id = d.dept_id
where u.user_name = #{userName}
</select>
</mapper>