From 1bf4f952b35ee870082e0ec0b1026f47121fe2fe Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Tue, 04 Jan 2022 15:42:01 +0800
Subject: [PATCH] 按年龄段查询保安员分布情况

---
 src/main/java/org/springblade/modules/system/mapper/UserMapper.xml |  222 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 218 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
index e266d6a..a34edf2 100644
--- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -158,6 +158,15 @@
         <if test="user.isAvatar==2">
             and (bu.avatar is null or bu.avatar="")
         </if>
+        <if test="user.ageType==1">
+            and age >=18 and age &lt;=30
+        </if>
+        <if test="user.ageType==2">
+            and age >30 and age &lt;=45
+        </if>
+        <if test="user.ageType==3">
+            and age >45 and age &lt;=60
+        </if>
         <if test="user.isFingerprint==1">
             and bu.fingerprint is not null and bu.fingerprint!=""
         </if>
@@ -178,6 +187,153 @@
         </if>
         <if test="user.sortName==null or user.sortName==''">
             ORDER BY bu.id desc
+        </if>
+    </select>
+
+
+    <!--带坐标,按年龄分布查询-->
+    <select id="selectUserPagesByAge" resultMap="userResultMap">
+        select * from
+        (
+            select
+            distinct
+            bu.*,IF(mod(SUBSTR(bu.cardid,17,1),2),1,2) sexs,
+            ifnull(TIMESTAMPDIFF(YEAR, SUBSTRING(bu.cardid, 7, 8), CURDATE()),0) AS age,
+            sll.longitude,sll.latitude,
+            bd.dept_name
+            from
+            blade_user bu
+            left join
+            blade_dept bd
+            on
+            bu.dept_id = bd.id
+            left join
+            sys_information si
+            on
+            si.departmentid = bd.id
+            left join
+            sys_jurisdiction sj
+            on
+            sj.id = si.jurisdiction
+            left join
+            sys_live_location sll
+            on
+            sll.worker_id = bu.id
+            left join
+            blade_role br
+            on
+            br.id = bu.role_id
+            left join
+            sys_training_registration str
+            on
+            bu.id = str.user_id
+            where
+            bu.is_deleted = 0
+            <if test="user.examinationType!=null and user.examinationType != ''">
+                <if test="user.examinationType == 0">
+                    and (bu.examination_type = #{user.examinationType} or bu.examination_type is null or bu.examination_type ='')
+                </if>
+                <if test="user.examinationType == 1">
+                    and bu.examination_type = #{user.examinationType}
+                </if>
+            </if>
+            <if test="user.account!=null and user.account != ''">
+                and bu.account like concat('%', #{user.account},'%')
+            </if>
+            <if test="user.hold!=null and user.hold != ''">
+                and bu.hold = #{user.hold}
+            </if>
+            <if test="user.deptId!=null and user.deptId != ''">
+                and bd.id in
+                (
+                select id from blade_dept where id = #{user.deptId}
+                union
+                SELECT
+                id
+                FROM
+                (
+                SELECT
+                t1.id,t1.parent_id,t1.dept_name,
+                IF
+                ( find_in_set( parent_id, @pids ) > 0, @pids := concat( @pids, ',', id ), 0 ) AS ischild
+                FROM
+                ( SELECT id, parent_id,dept_name FROM blade_dept t ORDER BY parent_id, id ) t1,
+                ( SELECT @pids := #{user.deptId} ) t2
+                ) t3
+                WHERE
+                ischild != 0
+                )
+            </if>
+            <if test="user.roleId!=null and user.roleId != ''">
+                and bu.role_id = #{user.roleId}
+            </if>
+            <if test="user.roleAlias!=null and user.roleAlias != ''">
+                and br.role_alias = '保安'
+            </if>
+            <if test="user.status!=null and user.status != '' and user.status != 6">
+                and bu.status = #{user.status}
+            </if>
+            <if test="user.education!=null  and user.education != ''">
+                and bu.education = #{user.education}
+            </if>
+            <if test="user.trainingUnitId!=null and user.trainingUnitId != ''">
+                and str.training_unit_id = #{user.trainingUnitId}
+            </if>
+            <if test="user.deptName!=null and user.deptName != ''">
+                and  bd.dept_name like concat('%', #{user.deptName},'%')
+            </if>
+            <if test="user.jurisdiction!=null and user.jurisdiction != '' and user.jurisdiction!='1372091709474910209'">
+                and (sj.id = #{user.jurisdiction} or sj.parent_id = #{user.jurisdiction})
+            </if>
+            <if test="user.realName!=null and user.realName != ''">
+                and bu.real_name like concat('%', #{user.realName},'%')
+            </if>
+            <if test="user.dispatch!=null and user.dispatch != ''">
+                <if test="user.dispatch == 0">
+                    and bu.dispatch = #{user.dispatch}
+                </if>
+                <if test="user.dispatch == 1">
+                    and bu.dispatch = #{user.dispatch}
+                </if>
+            </if>
+            <if test="user.isAvatar==1">
+                and bu.avatar is not null and bu.avatar!=""
+            </if>
+            <if test="user.isAvatar==2">
+                and (bu.avatar is null or bu.avatar="")
+            </if>
+
+            <if test="user.isFingerprint==1">
+                and bu.fingerprint is not null and bu.fingerprint!=""
+            </if>
+            <if test="user.isFingerprint==2">
+                and (bu.fingerprint is null or bu.fingerprint="")
+            </if>
+            <if test="user.userType!=null and user.userType != ''">
+                and bu.user_type = #{user.userType}
+            </if>
+            <if test="user.securitynumber!=null and user.securitynumber != ''">
+                and bu.securitynumber like concat('%', #{user.securitynumber},'%')
+            </if>
+            <if test="user.cardid!=null and user.cardid != ''">
+                and bu.cardid like concat('%', #{user.cardid},'%')
+            </if>
+            <if test="user.sortName!=null and user.sortName!=''">
+                ORDER BY bu.${user.sortName} ${user.sort},bu.id desc
+            </if>
+            <if test="user.sortName==null or user.sortName==''">
+                ORDER BY bu.id desc
+            </if>
+        ) user
+        where 1=1
+        <if test="user.ageType==1">
+            and age >=18 and age &lt;=30
+        </if>
+        <if test="user.ageType==2">
+            and age >30 and age &lt;=45
+        </if>
+        <if test="user.ageType==3">
+            and age >45 and age &lt;=60
         </if>
     </select>
 
@@ -411,8 +567,8 @@
             from (
                 select
                     distinct
-                    bu.id,
-                    ifnull(DATE_FORMAT(NOW(), '%Y') - SUBSTRING(bu.cardid,7,4),0) age,
+                    bu.id
+                    ifnull(TIMESTAMPDIFF(YEAR, SUBSTRING(bu.cardid, 7, 8), CURDATE()),0) AS age,
                     bu.is_apply isApply,
                     bu.is_train isTrain,
                     bu.real_name as name,
@@ -479,7 +635,7 @@
 
     <!--计算保安人员年龄-->
     <select id="getUserAgeById" resultType="org.springblade.modules.system.vo.UserVO">
-        select id,real_name realName,ifnull(DATE_FORMAT(NOW(), '%Y') - SUBSTRING(cardid,7,4),0) age,securitynumber,cardid
+        select id,real_name realName,ifnull(TIMESTAMPDIFF(YEAR, SUBSTRING(cardid, 7, 8), CURDATE()),0) AS age,securitynumber,cardid
         from
         blade_user
         where
@@ -491,7 +647,7 @@
     <select id="getUserInfoBySecurityNumber" resultType="org.springblade.modules.system.vo.UserVO">
         select
         bu.*,
-        ifnull(DATE_FORMAT(NOW(), '%Y') - SUBSTRING( cardid,7,4),0) age,
+        ifnull(TIMESTAMPDIFF(YEAR, SUBSTRING(cardid, 7, 8), CURDATE()),0) AS age,
         bd.dept_name deptName
          from
          blade_user bu
@@ -896,6 +1052,64 @@
         </foreach>
     </insert>
 
+    <!--查询学历统计信息-->
+    <select id="getAgeStatistics" resultType="java.lang.Integer">
+        select count(*) c from (
+        select ifnull(TIMESTAMPDIFF(YEAR, SUBSTRING(bu.cardid, 7, 8), CURDATE()),0) AS age from blade_user bu
+        left join blade_dept bd on bu.dept_id = bd.id
+        left join sys_information si on si.departmentid = bd.id
+        left join sys_jurisdiction sj on sj.id = si.jurisdiction
+        where bu.status = 1
+        and bu.is_deleted = 0
+        and bu.role_id = 1412226235153731586
+        <if test="user.jurisdiction!=null and user.jurisdiction != '' and user.jurisdiction!='1372091709474910209'">
+            and (sj.id = #{user.jurisdiction} or sj.parent_id = #{user.jurisdiction})
+        </if>
+        <if test="user.deptId!=null and user.deptId != ''">
+            and bu.dept_id = #{user.deptId}
+        </if>
+        )a where age>=18 and age &lt;=30
+
+        union
+        (
+            select count(*) c from
+            (
+            select ifnull(TIMESTAMPDIFF(YEAR, SUBSTRING(bu.cardid, 7, 8), CURDATE()),0) AS age from blade_user bu
+            left join blade_dept bd on bu.dept_id = bd.id
+            left join sys_information si on si.departmentid = bd.id
+            left join sys_jurisdiction sj on sj.id = si.jurisdiction
+            where bu.status = 1
+            and bu.is_deleted = 0
+            and bu.role_id = 1412226235153731586
+            <if test="user.jurisdiction!=null and user.jurisdiction != '' and user.jurisdiction!='1372091709474910209'">
+                and (sj.id = #{user.jurisdiction} or sj.parent_id = #{user.jurisdiction})
+            </if>
+            <if test="user.deptId!=null and user.deptId != ''">
+                and bu.dept_id = #{user.deptId}
+            </if>
+            )a where age>30 and age &lt;=45
+        )
+        union
+        (
+            select count(*) c from
+            (
+            select ifnull(TIMESTAMPDIFF(YEAR, SUBSTRING(bu.cardid, 7, 8), CURDATE()),0) AS age from blade_user bu
+            left join blade_dept bd on bu.dept_id = bd.id
+            left join sys_information si on si.departmentid = bd.id
+            left join sys_jurisdiction sj on sj.id = si.jurisdiction
+            where bu.status = 1
+            and bu.is_deleted = 0
+            and bu.role_id = 1412226235153731586
+            <if test="user.jurisdiction!=null and user.jurisdiction != '' and user.jurisdiction!='1372091709474910209'">
+                and (sj.id = #{user.jurisdiction} or sj.parent_id = #{user.jurisdiction})
+            </if>
+            <if test="user.deptId!=null and user.deptId != ''">
+                and bu.dept_id = #{user.deptId}
+            </if>
+            )a where age>45 and age &lt;=60
+        )
+    </select>
+
 
 
 </mapper>

--
Gitblit v1.9.3