policeSecurity/policeSecurityServer/src/main/resources/mapper/ServiceProjectMapper.xml

138 lines
7.6 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.changhu.module.management.mapper.ServiceProjectMapper">
<select id="pager" resultType="com.changhu.module.management.pojo.vo.ServiceProjectPagerVo">
select
sp.*,
JSON_ARRAY(eu.province,eu.city,eu.districts,eu.street) as 'enterprisesUnitAdministrativeDivisionCodes',
eu.name as 'enterprisesUnitName',
mpu.name as 'projectManagerMiniProgramUserName',
msuu.name as 'createUserName'
from service_project sp
left join enterprises_unit eu on sp.enterprises_unit_id = eu.snow_flake_id
left join mini_program_user mpu on sp.project_manager_mini_program_user_id = mpu.snow_flake_id
left join management_security_unit_user msuu on sp.create_by = msuu.snow_flake_id
where sp.delete_flag = 0
and sp.security_unit_id = ${@com.changhu.common.utils.UserUtil@getUnitId()}
<if test="params.name!=null and params.name!=''">
and sp.name like concat('%',#{params.name},'%')
</if>
<if test="params.type!=null">
and sp.type = #{params.type.value}
</if>
<if test="params.remark!=null and params.remark!=''">
and sp.remark like concat('%',#{params.remark},'%')
</if>
<if test="params.projectManagerMiniProgramUserName!=null and params.projectManagerMiniProgramUserName!=''">
and mpu.name like concat('%',#{params.projectManagerMiniProgramUserName},'%')
</if>
order by sp.create_time desc
</select>
<resultMap id="ProjectManageServiceProjectListVoResultMap"
type="com.changhu.module.miniProgram.pojo.vo.IndexServiceProjectListVo">
<result
column="contact_person_info"
typeHandler="com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler"
property="contactPersonInfo"/>
<result
column="service_project_list"
typeHandler="com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler"
property="serviceProjectList"/>
</resultMap>
<select id="getServiceProjectList"
resultMap="ProjectManageServiceProjectListVoResultMap">
select eu.*,
ad1.name as 'provinceName',
ad2.name as 'cityName',
ad3.name as 'districtsName',
ad4.name as 'streetName',
JSON_ARRAYAGG(JSON_OBJECT(
'snowFlakeId', sp.snow_flake_id,
'securityUnitId',sp.security_unit_id,
'name', sp.name,
'type', sp.type,
'isRecruitSecurity', sp.is_recruit_security,
'idNumber', sp.id_number,
'serviceArea', sp.service_area,
'buildingTotal', sp.building_total,
'houseTotal', sp.house_total,
'staffTotal', sp.staff_total,
'securityUserTotal', sp.security_user_total,
'projectManagerMiniProgramUserInfo',JSON_OBJECT(
'name',mpu.name,
'telephone',mpu.telephone,
'idCard',mpu.id_card),
'remark', sp.remark)) as 'service_project_list'
from enterprises_unit eu
join service_project sp on eu.snow_flake_id = sp.enterprises_unit_id and sp.delete_flag = 0
left join mini_program_user mpu on sp.project_manager_mini_program_user_id = mpu.snow_flake_id and mpu.delete_flag = 0
left join administrative_division ad1 on eu.province = ad1.code and ad1.delete_flag = 0
left join administrative_division ad2 on eu.city = ad2.code and ad2.delete_flag = 0
left join administrative_division ad3 on eu.districts = ad3.code and ad3.delete_flag = 0
left join administrative_division ad4 on eu.street = ad4.code and ad4.delete_flag = 0
where eu.delete_flag = 0
<choose>
<when test="policeUnitId!=null">
and eu.police_unit_id = #{policeUnitId}
</when>
<otherwise>
and sp.project_manager_mini_program_user_id = #{projectManagerMiniProgramUserId}
</otherwise>
</choose>
group by eu.snow_flake_id
order by any_value(sp.create_time) desc;
</select>
<resultMap id="ServiceProjectDTOResultMap" type="com.changhu.pojo.dto.ServiceProjectDTO">
<result
column="projectManagerInfo"
typeHandler="com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler"
property="projectManagerInfo"/>
<result
column="securityUnitInfo"
typeHandler="com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler"
property="securityUnitInfo" />
<result
column="securityUserList"
typeHandler="com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler"
property="securityUserList" />
</resultMap>
<select id="getServiceProjectByEnterprisesUnitId" resultMap="ServiceProjectDTOResultMap">
SELECT
sp.*,
IF(mpu.snow_flake_id IS NOT NULL,json_object( 'name', mpu.NAME, 'sex', mpu.sex, 'telephone', mpu.telephone, 'idCard', mpu.id_card ),NULL) AS 'projectManagerInfo',
json_object(
'name',su1.name,
'socialCode',su1.social_code,
'businessLicense',su1.business_license,
'legalPersonInfo',su1.legal_person_info,
'address',su1.address,
'nature',su1.nature
) as 'securityUnitInfo',
if(COUNT(su.snow_flake_id)>0,JSON_ARRAYAGG(json_object(
'snowFlakeId',su.snow_flake_id,
'name',su.name,
'telephone',su.telephone,
'workPost',su.work_post,
'sex',su.sex,
'nativePlace',su.native_place,
'idCard',su.id_card,
'dateOfBirth',su.date_of_birth,
'securityNumber',su.security_number,
'homeAddress',su.home_address,
'remark',su.remark,
'createTime',su.create_time
)),JSON_ARRAY()) as 'securityUserList'
FROM
service_project sp
left join security_unit su1 on sp.security_unit_id = su1.snow_flake_id
LEFT JOIN mini_program_user mpu ON sp.project_manager_mini_program_user_id = mpu.snow_flake_id AND mpu.identity = 'project_manager'
left join security_user su on su.service_project_id = sp.snow_flake_id and su.delete_flag = 0
WHERE
sp.delete_flag = 0
AND sp.enterprises_unit_id = #{enterprisesUnitId}
group by sp.snow_flake_id
ORDER BY
sp.create_time DESC
</select>
</mapper>