Administrator
2021-09-17 50fdcb14bcd0ba57181d434a96d7d416edf1c29d
src/main/java/org/springblade/modules/information/mapper/InformationMapper.xml
@@ -1079,6 +1079,8 @@
        IFNULL( D.wpaiqnum, 0 ) AS wpaiqnum,
        IFNULL( E.sbnum, 0 ) AS sbnum,
        IFNULL( F.wcaijnum, 0 ) AS wcaijnum,
        IFNULL( H.ycaijzpnum, 0 ) AS ycaijzpnum,
        IFNULL( I.ycaijzwnum, 0 ) AS ycaijzwnum,
        IFNULL( G.yicnum, 0 ) AS yicnum,
        A.dept_id,
        d.enterpriseName AS deptname,
@@ -1132,8 +1134,10 @@
        ) D ON D.dept_id = A.dept_id
        LEFT JOIN (
        SELECT COUNT( * ) AS sbnum, deptid, jurisdiction FROM sys_socil GROUP BY deptid, jurisdiction
        ) E ON E.deptid = A.dept_id
        LEFT JOIN (
        ) E
        ON E.deptid = A.dept_id
        LEFT JOIN
        (
        SELECT
        COUNT( * ) AS wcaijnum,
        dept_id,
@@ -1146,7 +1150,40 @@
        GROUP BY
        dept_id,
        jurisdiction
        ) F ON F.dept_id = A.dept_id
        ) F
        ON F.dept_id = A.dept_id
        LEFT JOIN
        (
        SELECT
        COUNT( * ) AS ycaijzpnum,
        dept_id,
        jurisdiction
        FROM
        blade_user
        WHERE
        role_id = '1412226235153731586' and status=1 AND is_deleted=0
        AND photo=0
        GROUP BY
        dept_id,
        jurisdiction
        ) H
        ON H.dept_id = A.dept_id
        LEFT JOIN
        (
        SELECT
        COUNT( * ) AS ycaijzwnum,
        dept_id,
        jurisdiction
        FROM
        blade_user
        WHERE
        role_id = '1412226235153731586' and status=1 AND is_deleted=0
        AND fingerprint=0
        GROUP BY
        dept_id,
        jurisdiction
        ) I
        ON I.dept_id = A.dept_id
        LEFT JOIN (
        SELECT
        COUNT( * ) AS yicnum,
@@ -1387,7 +1424,10 @@
        A.jurisdiction,
        A.dept_name as jurname,
        IFNULL( B.num, 0 ) AS fwnum,
        IFNULL( C.znum, 0 ) AS znum
        IFNULL( C.znum, 0 ) AS znum,
        IFNULL( D.dqnum, 0 ) AS dqnum,
        IFNULL( E.cznum, 0 ) AS cznum,
        IFNULL( F.pqnum, 0 ) AS pqnum
        FROM
        (
        SELECT
@@ -1402,11 +1442,36 @@
        WHERE
        i.enterpriseName IS NOT NULL
        ) A
        LEFT JOIN ( SELECT COUNT( * ) AS num, dept_id FROM sys_dispatcher_unit GROUP BY dept_id ) B ON A.departmentid =
        B.dept_id
        LEFT JOIN ( SELECT COUNT( * ) AS znum, dept_id FROM blade_user WHERE role_id = '1412226235153731586' and
        status=1 GROUP BY
        dept_id ) C ON A.departmentid = C.dept_id
        LEFT JOIN
        (
        SELECT COUNT( * ) AS num, dept_id FROM sys_dispatcher_unit
        where
        start_time <= now() and end_time > now()
        GROUP BY dept_id
        ) B
        ON A.departmentid = B.dept_id
        LEFT JOIN
        (
        SELECT COUNT( * ) AS znum, dept_id FROM blade_user WHERE role_id = '1412226235153731586'
        and status=1
        GROUP BY dept_id
        ) C
        ON A.departmentid = C.dept_id
        LEFT JOIN
        (
        SELECT COUNT( * ) AS dqnum, dept_id FROM sys_dispatcher_unit where end_time < now() GROUP BY dept_id
        ) D
        ON A.departmentid = D.dept_id
        LEFT JOIN
        (
        SELECT COUNT( * ) AS cznum, dept_id FROM blade_user where hold = 1 GROUP BY dept_id
        ) E
        ON A.departmentid = E.dept_id
        LEFT JOIN
        (
        SELECT COUNT( * ) AS pqnum, dept_id FROM blade_user where dispatch = 0 GROUP BY dept_id
        ) F
        ON A.departmentid = F.dept_id
        where 1=1
        <if test="jurisdiction!=null and jurisdiction!=''and jurisdiction!='1372091709474910209'">
            AND A.jurisdiction in(${jurisdiction})
@@ -1765,4 +1830,375 @@
              ) = 1
          AND parent_id!=0
    </select>
    <!--获取保安公司信息(本市保安公司,分公司)包含经纬度-->
    <select id="getSecurityUnitPositionInfo" resultType="org.springblade.modules.information.vo.InformationVO">
        select
        si.*,sj.dept_name jurisdictionName
        from
        sys_information si
        left join
        sys_jurisdiction sj
        on
        si.jurisdiction = sj.id
        where 1=1
        and (stats = 2 or stats = 4)
    </select>
    <!--根据辖区查询保安公司分页信息(本市保安公司,分公司)-->
    <select id="getSecurityUnitInfoPage" resultType="org.springblade.modules.information.vo.InformationVO">
        select
        si.*,sj.dept_name jurisdictionName
        from
        sys_information si
        left join
        sys_jurisdiction sj
        on
        si.jurisdiction = sj.id
        where 1=1
        and (stats = 0 or stats = 1 or stats = 2 or stats = 4)
        <if test="information.jurisdiction!=null and information.jurisdiction!=''">
            and (sj.id = #{information.jurisdiction} or sj.parent_id =  #{information.jurisdiction})
        </if>
    </select>
    <sql id="getSecurity">
        select
            dept_id,ifnull(count(*),0) count
            from blade_user bu
            left join blade_role br
            on bu.role_id = br.id
            where
            role_alias = "安保人员"
            and bu.is_deleted = 0
            and bu.`status` = 1
    </sql>
    <!--根据辖区查询统计保安公司持证情况分页信息(本市保安公司,分公司)-->
    <select id="getSecurityUnitHoldInfoPage" resultType="org.springblade.modules.information.vo.InformationVO">
        select
        si.*,sj.dept_name jurisdictionName,
        ifnull(a.count,0) znum,
        ifnull(b.count,0) cnum,
        ifnull(c.count,0) pnum
        from sys_information si
        left join
        (
        <include refid="getSecurity"/>
        group by dept_id
        ) a
        on
        a.dept_id = si.departmentid
        left join
        (
        <include refid="getSecurity"/>
        and bu.hold = 1
        group by dept_id
        ) b
        on
        b.dept_id = si.departmentid
        left join
        (
        <include refid="getSecurity"/>
        and bu.hold = 2
        group by dept_id
        ) c
        on
        c.dept_id = si.departmentid
        left join
        sys_jurisdiction sj
        on
        si.jurisdiction = sj.id
        where 1=1
        and (si.stats = 2 or si.stats = 4)
        <if test="information.jurisdiction!=null and information.jurisdiction!=''">
            and (sj.id = #{information.jurisdiction} or sj.parent_id =  #{information.jurisdiction})
        </if>
    </select>
    <!--根据辖区查询统计保安公司(1:持证率低于50% 2:派遣率低于50%  3:缴纳社保率低于50% 的保安公司个数及保安公司分页信息(本市保安公司,分公司)-->
    <select id="getSecurityUnitLess50Page" resultType="org.springblade.modules.information.vo.InformationVO">
        select c.*,sj.dept_name jurisdictionName from (
        select
        si.*,
        ifnull(a.count,0) znum,
        ifnull(b.count,0) cnum,
        ifnull(FORMAT((b.count/a.count)*100,2),0) pnum
        from sys_information si
        left join
        (
        <include refid="getSecurity"/>
        group by dept_id
        ) a
        on
        a.dept_id = si.departmentid
        left join
        (
        <include refid="getSecurity"/>
        <if test="type==1">
            and bu.hold = 1
        </if>
        <if test="type==2">
            and bu.dispatch = 0
        </if>
        <if test="type==3">
            and bu.soil = 0
        </if>
        <if test="type==4">
            and bu.insurance = 0
        </if>
        group by dept_id
        ) b
        on
        b.dept_id = si.departmentid
        )c
        left join
        sys_jurisdiction sj
        on
        c.jurisdiction = sj.id
        where 1=1
        and (c.stats = 2 or c.stats = 4)
        and pnum &lt; #{information.proportion}
        <if test="information.jurisdiction!=null and information.jurisdiction!='' and information.jurisdiction!='1372091709474910209'">
            and (sj.id = #{information.jurisdiction} or sj.parent_id =  #{information.jurisdiction})
        </if>
        <if test="information.departmentid!=null and information.departmentid!=''">
            and c.departmentid = #{information.departmentid}
        </if>
    </select>
    <!--根据辖区查询统计保安公司考试通过率低于50%的保安公司个数及保安公司分页信息(本市保安公司,分公司)-->
    <select id="getSecurityUnitExamLess50Page" resultType="org.springblade.modules.information.vo.InformationVO">
        select d.*,sj.dept_name jurisdictionName from (
        select
        si.*,
        ifnull(a.count,0) znum,
        ifnull(b.count,0) cnum,
        ifnull(FORMAT((b.count/c.count)*100,2),0) pnum
        from sys_information si
        left join
        (
        <include refid="getSecurity"/>
        group by dept_id
        ) a
        on
        a.dept_id = si.departmentid
        left join
        (
        select b1.dept_id,ifnull(b2.count,0) count from
        (
        select
        bu.dept_id,ifnull(count(*),0) count
        from blade_user bu
        left join blade_role br
        on bu.role_id = br.id
        where
        role_alias = "安保人员"
        and bu.is_deleted = 0
        and bu.`status` = 1
        group by dept_id
        ) b1
        left join
        (
        select count(*) count,bu.dept_id from
        exam_score es
        left join
        blade_user bu
        on
        bu.id = es.user_id
        where qualified = 0 group by bu.dept_id
        ) b2
        on
        b1.dept_id = b2.dept_id
        ) b
        on
        b.dept_id = si.departmentid
        left join
        (
        select c1.dept_id,ifnull(c2.count,0) count from
        (
        select
        bu.dept_id,ifnull(count(*),0) count
        from blade_user bu
        left join blade_role br
        on bu.role_id = br.id
        where
        role_alias = "安保人员"
        and bu.is_deleted = 0
        and bu.`status` = 1
        group by dept_id
        ) c1
        left join
        (
        select count(*) count,bu.dept_id from
        exam_score es
        left join
        blade_user bu
        on
        bu.id = es.user_id
        where 1=1 group by bu.dept_id
        ) c2
        on
        c1.dept_id = c2.dept_id
        ) c
        on
        c.dept_id = si.departmentid
        )d
        left join
        sys_jurisdiction sj
        on
        d.jurisdiction = sj.id
        where 1=1
        and (d.stats = 2 or d.stats = 4)
        and pnum &lt; #{information.proportion}
        <if test="information.jurisdiction!=null and information.jurisdiction!='' and information.jurisdiction!='1372091709474910209'">
            and (sj.id = #{information.jurisdiction} or sj.parent_id =  #{information.jurisdiction})
        </if>
    </select>
    <sql id="getSubstationWarn">
        left join
            sys_information si
            on
            si.departmentid = bu.dept_id
            left join
            sys_jurisdiction sj
            on
            sj.id = si.jurisdiction
            where
            1=1
            and (si.stats = 2 or si.stats =4)
            and bu.is_deleted = 0
            and bu.`status` = 1
    </sql>
    <!--根据辖区查询统计当前辖区下的保安公司(本市保安公司,分公司)预警信息,包含(未持证,现实表现差,未缴纳社保,资格审查异常)-->
    <select id="getSubstationWarnInfoPage" resultType="org.springblade.modules.information.vo.InformationVO">
        select jurisdictionName,enterprisename,detail from (
        (
        select
        si.jurisdiction id,
        sj.parent_id,
        sj.dept_name jurisdictionName,
        si.enterprisename,
        "表现差" detail
        from sys_performance sp
        left join
        blade_user bu
        on
        bu.id = sp.securityId
        left join
        sys_information si
        on
        bu.dept_id = si.departmentid
        left join
        sys_jurisdiction sj
        on
        sj.id = si.jurisdiction
        where
        1=1
        and (si.stats = 2 or si.stats =4)
        and bu.is_deleted = 0
        and bu.`status` = 1
        and sp.score = 3
        )
        union
        (
        select
        sj.id,
        sj.parent_id,
        sj.dept_name jurisdictionName,
        si.enterprisename,
        if(bu.hold=2,"未持证","证件吊销") as detail
        from
        blade_user bu
        <include refid="getSubstationWarn"/>
        and (bu.hold = 2 or bu.hold = 3)
        )
        union
        (
        select
        sj.id,
        sj.parent_id,
        sj.dept_name jurisdictionName,
        si.enterprisename,
        "未缴纳社保" as detail
        from
        blade_user bu
        <include refid="getSubstationWarn"/>
        and bu.soil = 1
        )
        union
        (
        select
        sj.id,
        sj.parent_id,
        sj.dept_name jurisdictionName,
        si.enterprisename,
        "审查异常" as detail
        from
        blade_user bu
        <include refid="getSubstationWarn"/>
        and bu.examination_type = 1
        )
        ) a
        where 1=1
        <if test="information.jurisdiction!=null and information.jurisdiction!='' and information.jurisdiction!='1372091709474910209'">
            and (a.id = #{information.jurisdiction} or a.parent_id = #{information.jurisdiction})
        </if>
    </select>
    <!--根据辖区查询统计当前辖区下的保安公司(本市保安公司,分公司))服务对象小于2家的公司数量的分页信息-->
    <select id="getSecurityUnitServerLess2Page" resultType="org.springblade.modules.information.vo.InformationVO">
        select * from
        (
        select
        DISTINCT
        si.id,
        si.departmentid,
        si.jurisdiction,
        si.enterprisename,
        sj.dept_name jurisdictionName,
        ifnull(a.count,0) znum,
        sdu.name dispatchUnitName,
        sdu.end_time
        from sys_information si
        left join
        sys_dispatcher_unit sdu
        on
        si.departmentid = sdu.dept_id
        left join
        sys_jurisdiction sj
        on
        sj.id = si.jurisdiction
        left join
        (
        select  ifnull(count(*),0) count,dept_id from sys_dispatcher_unit
        where 1=1
        and start_time &lt;= now()
        and end_time &gt; now()
        GROUP BY dept_id
        ) a
        on
        a.dept_id = si.departmentid
        where 1=1
        <if test="information.jurisdiction!=null and information.jurisdiction!='' and information.jurisdiction!='1372091709474910209'">
            and (sj.id = #{information.jurisdiction} or sj.parent_id =  #{information.jurisdiction})
        </if>
        ) b
        where b.znum &lt; 2
        <if test="information.departmentid!=null and information.departmentid!=''">
            and b.departmentid = #{information.departmentid}
        </if>
    </select>
</mapper>