linwei
2024-01-31 b3b566ebdfed4005aaa513da3d5d2fd3924903cc
src/main/java/org/springblade/modules/house/mapper/HouseholdMapper.xml
@@ -9,15 +9,12 @@
        <result column="name" property="name"/>
        <result column="phone_number" property="phoneNumber"/>
        <result column="associated_user_id" property="associatedUserId"/>
        <result column="associated_user_name" property="associatedUserName"/>
        <result column="relationship" property="relationship"/>
        <!--        <result column="primary_contact" property="primaryContact"/>-->
        <result column="residential_status" property="residentialStatus"/>
        <result column="gender" property="gender"/>
        <result column="birthday" property="birthday"/>
        <result column="id_card" property="idCard"/>
        <result column="hkmt_pass" property="hkmtPass"/>
        <result column="passport" property="passport"/>
        <result column="ethnicity" property="ethnicity"/>
        <result column="education" property="education"/>
        <result column="hukou_registration" property="hukouRegistration"/>
@@ -49,15 +46,12 @@
            phone_number,
            associated_user_id,
            role_type,
            associated_user_name,
            relationship,
            is_primary_contact,
            residential_status,
            gender,
            birthday,
            id_card,
            hkmt_pass,
            passport,
            ethnicity,
            education,
            hukou_registration,
@@ -122,7 +116,6 @@
        jh.phone_number,
        jh.associated_user_id,
        jh.role_type,
        jh.associated_user_name,
        jh.relationship,
        jh.is_primary_contact,
        jh.residential_status,
@@ -130,9 +123,7 @@
        jh.birthday,
        jh.id_card,
        jh.card_type,
        jh.hkmt_pass,
        ifnull( jh.gender, CASE WHEN substring( jh.id_card, 17, 1 )% 2 = 1 THEN 1 ELSE 0 END ) AS gender,
        jh.passport,
        jh.ethnicity,
        jh.education,
        jh.resident_type,
@@ -174,11 +165,11 @@
        jczz_household jh
        LEFT JOIN jczz_house jhs ON jh.house_code = jhs.house_code and jhs.is_deleted = 0
        LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jh.house_code
        LEFT JOIN jczz_grid_range jgr on jgr.house_code=jda.address_code
        LEFT JOIN jczz_grid jg on jg.id = jgr.grid_id and jg.is_deleted = 0
        LEFT JOIN jczz_grid jg on jg.grid_code = jhs.grid_code and jg.is_deleted = 0
        <where>
            <if test="household.userId!=null">
                AND jg.id IN ( SELECT DISTINCT jgm.grid_id FROM jczz_gridman jgm WHERE jgm.user_id = #{household.userId}
                AND jg.grid_code IN ( SELECT DISTINCT jgm.grid_code FROM jczz_gridman jgm WHERE jgm.user_id =
                #{household.userId}
                )
            </if>
            <if test="household.name!=null and household.name !=''">
@@ -211,8 +202,18 @@
            <if test="household.startTime != null and household.startTime != '' and household.endTime != null and household.endTime != '' ">
                AND jh.create_time BETWEEN #{household.startTime} and #{household.endTime}
            </if>
            <if test="household.regionCode!=null and household.regionCode!=''">
                and jg.community_code like concat(#{household.regionCode},'%')
            <if test="isAdministrator==2">
                <choose>
                    <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
                        and jg.community_code in
                        <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
                            #{code}
                        </foreach>
                    </when>
                    <otherwise>
                        and jg.community_code in ('')
                    </otherwise>
                </choose>
            </if>
            <if test="household.building!=null and household.building!=''">
                and jhs.building like concat(#{household.building},'%')
@@ -238,14 +239,11 @@
        jh.phone_number,
        jh.associated_user_id,
        jh.role_type,
        jh.associated_user_name,
        jh.relationship,
        jh.is_primary_contact,
        jh.residential_status,
        jh.birthday,
        jh.id_card,
        jh.hkmt_pass,
        jh.passport,
        ifnull( jh.gender, CASE WHEN substring( jh.id_card, 17, 1 )% 2 = 1 THEN 1 ELSE 0 END ) AS gender,
        jh.ethnicity,
        jh.education,
@@ -273,51 +271,51 @@
        jczz_household jh
        LEFT JOIN jczz_house jhs ON jh.house_code = jhs.house_code and jhs.is_deleted = 0
        LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jh.house_code
        LEFT JOIN jczz_grid_range jgr on jgr.house_code=jda.address_code
        LEFT JOIN jczz_grid jg on jg.id = jgr.grid_id and jg.is_deleted = 0
        where  jh.is_deleted = 0
            and jh.name != '' and jh.name is not null
            <if test="household.userId!=null">
                AND jg.id IN ( SELECT DISTINCT jgm.grid_id FROM jczz_gridman jgm WHERE jgm.user_id = #{household.userId}
                )
            </if>
            <if test="household.name!=null and household.name !=''">
                and jh.name like concat('%',#{household.name},'%')
            </if>
            <if test="household.houseCode!=null and household.houseCode !=''">
                and jh.house_code = #{household.houseCode}
            </if>
            <if test="household.phoneNumber!=null and household.phoneNumber !=''">
                and jh.phone_number like concat('%',#{household.phoneNumber},'%')
            </if>
            <if test="household.idCard!=null and household.idCard !=''">
                and jh.id_card like concat('%',#{household.idCard},'%')
            </if>
            <if test="household.aoiName!=null and household.aoiName !=''">
                and jhs.district_name like concat('%',#{household.aoiName},'%')
            </if>
            <if test="household.confirmFlag != null ">
                and jh.confirm_flag = #{household.confirmFlag}
            </if>
            <if test="household.townStreetName!=null and household.townStreetName!=''">
                and jda.town_street_name like concat('%',#{household.townStreetName},'%')
            </if>
            <if test="household.neiName!=null and household.neiName!=''">
                and jda.nei_name like concat('%',#{household.neiName},'%')
            </if>
            <if test="household.housingRentalId != null ">
                and jh.housing_rental_id = #{household.housingRentalId}
            </if>
            <if test="household.startTime != null and household.startTime != '' and household.endTime != null and household.endTime != '' ">
                AND jh.create_time BETWEEN #{household.startTime} and #{household.endTime}
            </if>
            <if test="household.regionCode!=null and household.regionCode!=''">
                and jg.community_code like concat('%',#{household.regionCode},'%')
            </if>
            <if test="household.id!=null and household.id!=''">
                and jh.id = #{household.id}
            </if>
            order by jh.create_time desc
        LEFT JOIN jczz_grid jg on jg.grid_code = jhs.grid_code and jg.is_deleted = 0
        where jh.is_deleted = 0
        and jh.name != '' and jh.name is not null
        <if test="household.userId!=null">
            AND jg.grid_code IN ( SELECT DISTINCT jgm.grid_code FROM jczz_gridman jgm WHERE jgm.user_id =
            #{household.userId}
            )
        </if>
        <if test="household.name!=null and household.name !=''">
            and jh.name like concat('%',#{household.name},'%')
        </if>
        <if test="household.houseCode!=null and household.houseCode !=''">
            and jh.house_code = #{household.houseCode}
        </if>
        <if test="household.phoneNumber!=null and household.phoneNumber !=''">
            and jh.phone_number like concat('%',#{household.phoneNumber},'%')
        </if>
        <if test="household.idCard!=null and household.idCard !=''">
            and jh.id_card like concat('%',#{household.idCard},'%')
        </if>
        <if test="household.aoiName!=null and household.aoiName !=''">
            and jhs.district_name like concat('%',#{household.aoiName},'%')
        </if>
        <if test="household.confirmFlag != null ">
            and jh.confirm_flag = #{household.confirmFlag}
        </if>
        <if test="household.townStreetName!=null and household.townStreetName!=''">
            and jda.town_street_name like concat('%',#{household.townStreetName},'%')
        </if>
        <if test="household.neiName!=null and household.neiName!=''">
            and jda.nei_name like concat('%',#{household.neiName},'%')
        </if>
        <if test="household.housingRentalId != null ">
            and jh.housing_rental_id = #{household.housingRentalId}
        </if>
        <if test="household.startTime != null and household.startTime != '' and household.endTime != null and household.endTime != '' ">
            AND jh.create_time BETWEEN #{household.startTime} and #{household.endTime}
        </if>
        <if test="household.regionCode!=null and household.regionCode!=''">
            and jg.community_code like concat('%',#{household.regionCode},'%')
        </if>
        <if test="household.id!=null and household.id!=''">
            and jh.id = #{household.id}
        </if>
        order by jh.create_time desc
    </select>
@@ -362,9 +360,9 @@
    <select id="getHouseholdListById" resultMap="householdAndLabelMap">
        select
            jh.id,jh.house_code,jh.name,jh.phone_number,jh.associated_user_id,
            jh.role_type,jh.associated_user_name,jh.relationship,jh.is_primary_contact,
            jh.role_type,jh.relationship,jh.is_primary_contact,
            jh.residential_status,jh.gender,jh.birthday,jh.id_card,
            jh.card_type,jh.card_no,jh.hkmt_pass,jh.passport,
            jh.card_type,jh.card_no,
            jh.ethnicity,jh.education,jh.resident_type,
            jh.hukou_registration,jh.resident_adcode,jh.native_place_adcode,
         jh.religious_belief,jh.health_status,jh.disease_name,
@@ -407,7 +405,7 @@
        jh.house_code houseCode,
        jh.name,jh.phone_number phoneNumber,jh.role_type roleType,jh.relationship relationship,
        jh.is_primary_contact isPrimaryContact,jh.residential_status residentialStatus,jh.gender,
        jh.birthday,jh.id_card idCard,jh.hkmt_pass hkmtPass,jh.passport,jh.ethnicity,jh.education,
        jh.birthday,jh.id_card idCard,jh.ethnicity,jh.education,
        jh.hukou_registration hukouRegistration,jh.work_status workStatus,jh.employer,jh.marital_status maritalStatus,
        jh.card_number cardNumber,jh.other_contact otherContact,jh.current_address currentAddress,
        jh.disability_cert disabilityCert,jh.party_ember partyEmber,jh.remark,
@@ -535,7 +533,7 @@
            jczz_doorplate_address jda
            LEFT JOIN jczz_community jc ON jc.CODE = jda.nei_code
            WHERE
            jc.res_police_user_id = #{userId})
            jc.res_police_user_id like concat('%',#{userId},'%'))
            )
        </if>
        ) a
@@ -587,7 +585,7 @@
            jczz_doorplate_address jda
            LEFT JOIN jczz_community jc ON jc.CODE = jda.nei_code
            WHERE
            jc.res_police_user_id = #{userId})
            jc.res_police_user_id like concat('%',#{userId},'%'))
            )
        </if>
        GROUP BY age
@@ -622,14 +620,11 @@
        jh.phone_number,
        jh.associated_user_id,
        jh.role_type,
        jh.associated_user_name,
        jh.relationship,
        jh.is_primary_contact,
        jh.residential_status,
        jh.birthday,
        jh.id_card,
        jh.hkmt_pass,
        jh.passport,
        ifnull( jh.gender, CASE WHEN substring( jh.id_card, 17, 1 )% 2 = 1 THEN 1 ELSE 0 END ) AS gender,
        jh.ethnicity,
        jh.education,
@@ -658,12 +653,12 @@
        jczz_household jh
        LEFT JOIN jczz_house jhs ON jh.house_code = jhs.house_code and jhs.is_deleted = 0
        LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jh.house_code
        LEFT JOIN jczz_grid_range jgr on jgr.house_code=jda.address_code
        LEFT JOIN jczz_grid jg on jg.id = jgr.grid_id and jg.is_deleted = 0
        LEFT JOIN jczz_grid jg on jg.grid_code = jhs.grid_code and jg.is_deleted = 0
        LEFT JOIN jczz_user_house_label juhl on juhl.house_code = jda.address_code and lable_type=1
        <where>
            <if test="household.userId!=null">
                AND jg.id IN ( SELECT DISTINCT jgm.grid_id FROM jczz_gridman jgm WHERE jgm.user_id = #{household.userId}
                AND jg.grid_code IN ( SELECT DISTINCT jgm.grid_code FROM jczz_gridman jgm WHERE jgm.user_id =
                #{household.userId}
                )
            </if>
            <if test="household.name!=null and household.name !=''">
@@ -717,4 +712,306 @@
        </where>
    </select>
    <select id="getKeynotePersonnelPage" resultMap="householdPageAndLabelMap">
        SELECT
        jh.id,
        jh.house_code,
        jh.NAME,
        jh.phone_number,
        jh.associated_user_id,
        jh.role_type,
        jh.relationship,
        jh.is_primary_contact,
        jh.residential_status,
        jh.gender,
        jh.birthday,
        jh.id_card,
        jh.card_type,
        ifnull( jh.gender, CASE WHEN substring( jh.id_card, 17, 1 )% 2 = 1 THEN 1 ELSE 0 END ) AS gender,
        jh.ethnicity,
        jh.education,
        jh.resident_type,
        jh.hukou_registration,
        jh.resident_adcode,
        jh.native_place_adcode,
        jh.religious_belief,
        jh.health_status,
        jh.disease_name,
        jh.work_status,
        jh.employer,
        jh.occupation,
        jh.cmpy_reg_addr,
        jh.go_out_addr,
        jh.go_out_where,
        jh.go_out_time,
        jh.go_out_reason,
        jh.marital_status,
        jh.card_number,
        jh.other_contact,
        IF
        ( jda.id IS NOT NULL, jda.address_name, jh.current_address ) AS current_address,
        jh.disability_cert,
        jh.party_ember,
        jh.remark,
        jh.confirm_flag,
        jh.housing_rental_id,
        IF
        ( jda.id IS NOT NULL, substring( jda.town_street_code, 1, 9 ), jh.home_adcode ) AS home_adcode,
        jhs.district_name aoiName,
        concat( jhs.building, " ", unit, " ", room ) AS address,
        jda.town_street_name AS townStreetName,
        jda.nei_name AS neiName,
        jg.grid_name,
        jhs.building,
        jhs.district_code aoiCode,
        jhs.unit
        FROM
        jczz_household jh
        LEFT JOIN jczz_house jhs ON jh.house_code = jhs.house_code and jhs.is_deleted = 0
        LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jh.house_code
        LEFT JOIN jczz_grid jg on jg.grid_code = jhs.grid_code and jg.is_deleted = 0
        <where>
            <if test="household.userId!=null">
                AND jg.grid_code IN ( SELECT DISTINCT jgm.grid_code FROM jczz_gridman jgm WHERE jgm.user_id =
                #{household.userId}
                )
            </if>
            <if test="household.name!=null and household.name !=''">
                and jh.name like concat('%',#{household.name},'%')
            </if>
            <if test="household.houseCode!=null and household.houseCode !=''">
                and jh.house_code = #{household.houseCode}
            </if>
            <if test="household.phoneNumber!=null and household.phoneNumber !=''">
                and jh.phone_number like concat('%',#{household.phoneNumber},'%')
            </if>
            <if test="household.idCard!=null and household.idCard !=''">
                and jh.id_card like concat('%',#{household.idCard},'%')
            </if>
            <if test="household.aoiName!=null and household.aoiName !=''">
                and jhs.district_name like concat('%',#{household.aoiName},'%')
            </if>
            <if test="household.confirmFlag != null ">
                and jh.confirm_flag = #{household.confirmFlag}
            </if>
            <if test="household.townStreetName!=null and household.townStreetName!=''">
                and jda.town_street_name like concat('%',#{household.townStreetName},'%')
            </if>
            <if test="household.neiName!=null and household.neiName!=''">
                and jda.nei_name like concat('%',#{household.neiName},'%')
            </if>
            <if test="household.housingRentalId != null ">
                and jh.housing_rental_id = #{household.housingRentalId}
            </if>
            <if test="household.startTime != null and household.startTime != '' and household.endTime != null and household.endTime != '' ">
                AND jh.create_time BETWEEN #{household.startTime} and #{household.endTime}
            </if>
            <if test="household.regionCode!=null and household.regionCode!=''">
                and jg.community_code like concat(#{household.regionCode},'%')
            </if>
            <if test="household.building!=null and household.building!=''">
                and jhs.building like concat(#{household.building},'%')
            </if>
            <if test="household.unit!=null and household.unit!=''">
                and jhs.unit like concat(#{household.unit},'%')
            </if>
            <if test="household.aoiCode!=null and household.aoiCode!=''">
                and jhs.district_code = #{household.aoiCode}
            </if>
            and jh.id in (
            SELECT DISTINCT
            juhl.household_id
            FROM
            jczz_user_house_label juhl
            LEFT JOIN jczz_label jl ON juhl.label_id = jl.id
            WHERE
            juhl.lable_type = 1
            <if test="household.labelId != null ">
                AND jl.id = #{household.labelId}
            </if>
            <if test="household.parentId != null ">
                AND jl.parent_id = #{household.parentId}
            </if>
            AND juhl.label_id IS NOT NULL
            )
            and jh.is_deleted = 0
            order by jh.create_time desc
        </where>
    </select>
    <!--根据人员标签编号集合查询对应的住户(按颜色区分近多少天没有发过任务的住户)-->
    <select id="getHouseholdListByParam" resultType="org.springblade.modules.house.vo.HouseholdVO">
        select jh.* from jczz_household jh
        left join jczz_user_house_label juhl on juhl.household_id = jh.id
        where jh.is_deleted = 0
        and juhl.lable_type = 1
        and juhl.color = 'green'
        and jh.id in (
        select household_id from jczz_grid_work_log where is_deleted = 0 and source = 2 and TIMESTAMPDIFF( day, now(),
        create_time )=30
        )
        <choose>
            <when test="list!=null and list.size()>0">
                and juhl.label_id in
                <foreach collection="list" item="id" separator="," open="(" close=")">
                    #{id}
                </foreach>
            </when>
            <otherwise>
                and juhl.label_id in ('')
            </otherwise>
        </choose>
        union all
        (
        select jh.* from jczz_household jh
        left join jczz_user_house_label juhl on juhl.household_id = jh.id
        where jh.is_deleted = 0
        and juhl.lable_type = 1
        and juhl.color = 'yellow'
        and jh.id in (
        select household_id from jczz_grid_work_log where is_deleted = 0 and source = 2 and TIMESTAMPDIFF( day, now(),
        create_time )=14
        )
        <choose>
            <when test="list!=null and list.size()>0">
                and juhl.label_id in
                <foreach collection="list" item="id" separator="," open="(" close=")">
                    #{id}
                </foreach>
            </when>
            <otherwise>
                and juhl.label_id in ('')
            </otherwise>
        </choose>
        )
        union all
        (
        select jh.* from jczz_household jh
        left join jczz_user_house_label juhl on juhl.household_id = jh.id
        where jh.is_deleted = 0
        and juhl.lable_type = 1
        and juhl.color = 'red'
        and jh.id in (
        select household_id from jczz_grid_work_log where is_deleted = 0 and source = 2 and TIMESTAMPDIFF( day, now(),
        create_time )=7
        )
        <choose>
            <when test="list!=null and list.size()>0">
                and juhl.label_id in
                <foreach collection="list" item="id" separator="," open="(" close=")">
                    #{id}
                </foreach>
            </when>
            <otherwise>
                and juhl.label_id in ('')
            </otherwise>
        </choose>
        )
        union all
        (
        select jh.* from jczz_household jh
        left join jczz_user_house_label juhl on juhl.household_id = jh.id
        where jh.is_deleted = 0 and juhl.lable_type = 1
        and jh.id not in (
        select household_id from jczz_grid_work_log where is_deleted = 0
        and household_id is not null
        and source = 2
        group by household_id
        )
        <choose>
            <when test="list!=null and list.size()>0">
                and juhl.label_id in
                <foreach collection="list" item="id" separator="," open="(" close=")">
                    #{id}
                </foreach>
            </when>
            <otherwise>
                and juhl.label_id in ('')
            </otherwise>
        </choose>
        )
    </select>
    <select id="getlabelStatistics" resultType="org.springblade.common.node.TreeIntegerNode">
        SELECT
        jl.id AS id,
        jl.parent_id AS parentId,
        jl.label_name AS name,
        jl.sort,
        (SELECT
        count(juhl.household_id ) counts
        FROM
        jczz_user_house_label juhl
        LEFT JOIN jczz_household jh ON juhl.household_id = jh.id
        LEFT JOIN jczz_house jhs ON jh.house_code = jhs.house_code AND jhs.is_deleted = 0
        LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jh.house_code
        LEFT JOIN jczz_grid jg ON jg.grid_code = jhs.grid_code AND jg.is_deleted = 0
        <where>
            <if test="household.userId!=null">
                AND jg.grid_code IN ( SELECT DISTINCT jgm.grid_code FROM jczz_gridman jgm WHERE jgm.user_id =
                #{household.userId}
                )
            </if>
            <if test="household.name!=null and household.name !=''">
                and jh.name like concat('%',#{household.name},'%')
            </if>
            <if test="household.houseCode!=null and household.houseCode !=''">
                and jh.house_code = #{household.houseCode}
            </if>
            <if test="household.phoneNumber!=null and household.phoneNumber !=''">
                and jh.phone_number like concat('%',#{household.phoneNumber},'%')
            </if>
            <if test="household.idCard!=null and household.idCard !=''">
                and jh.id_card like concat('%',#{household.idCard},'%')
            </if>
            <if test="household.aoiName!=null and household.aoiName !=''">
                and jhs.district_name like concat('%',#{household.aoiName},'%')
            </if>
            <if test="household.confirmFlag != null ">
                and jh.confirm_flag = #{household.confirmFlag}
            </if>
            <if test="household.townStreetName!=null and household.townStreetName!=''">
                and jda.town_street_name like concat('%',#{household.townStreetName},'%')
            </if>
            <if test="household.neiName!=null and household.neiName!=''">
                and jda.nei_name like concat('%',#{household.neiName},'%')
            </if>
            <if test="household.housingRentalId != null ">
                and jh.housing_rental_id = #{household.housingRentalId}
            </if>
            <if test="household.startTime != null and household.startTime != '' and household.endTime != null and household.endTime != '' ">
                AND jh.create_time BETWEEN #{household.startTime} and #{household.endTime}
            </if>
            <if test="household.regionCode!=null and household.regionCode!=''">
                and jg.community_code like concat(#{household.regionCode},'%')
            </if>
            <if test="household.building!=null and household.building!=''">
                and jhs.building like concat(#{household.building},'%')
            </if>
            <if test="household.unit!=null and household.unit!=''">
                and jhs.unit like concat(#{household.unit},'%')
            </if>
            <if test="household.aoiCode!=null and household.aoiCode!=''">
                and jhs.district_code = #{household.aoiCode}
            </if>
            <if test="household.labelId != null ">
                AND jl.id = #{household.labelId}
            </if>
            <if test="household.parentId != null ">
                AND jl.parent_id = #{household.parentId}
            </if>
            AND juhl.label_id IS NOT NULL
            and juhl.lable_type = 1
            and jh.is_deleted = 0
            AND juhl.label_id = jl.id
        </where>
        ) count
        FROM
        jczz_label jl where is_deleted = 0
        and jl.id != '1002'
        and jl.id != '1001'
        and jl.parent_id != '1001'
    </select>
</mapper>