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 ++++++++++++++++++++++++++++++++++++
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java | 91 +++++++++++----
src/main/java/org/springblade/modules/system/controller/UserController.java | 11 +
src/main/java/org/springblade/modules/system/mapper/UserMapper.java | 16 ++
src/main/java/org/springblade/modules/system/service/IUserService.java | 8 +
src/main/java/org/springblade/modules/system/vo/UserVO.java | 4
6 files changed, 321 insertions(+), 31 deletions(-)
diff --git a/src/main/java/org/springblade/modules/system/controller/UserController.java b/src/main/java/org/springblade/modules/system/controller/UserController.java
index 1975482..0beac1d 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -1448,8 +1448,15 @@
}
}
-
-
+ /**
+ * 年龄分布查询
+ * @param user
+ * @return
+ */
+ @PostMapping("/getAgeStatistics")
+ public R getAgeStatistics(UserVO user){
+ return R.data(userService.getAgeStatistics(user));
+ }
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/UserMapper.java b/src/main/java/org/springblade/modules/system/mapper/UserMapper.java
index 9db23a7..dcdd9f4 100644
--- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.java
+++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.java
@@ -50,6 +50,16 @@
@SqlParser(filter = true)
List<UserVO> selectUserPages(IPage<UserVO> page, @Param("user") UserVO user);
+ /**
+ * 自定义分页,带坐标
+ *
+ * @param page
+ * @param user
+ * @return
+ */
+ @SqlParser(filter = true)
+ List<UserVO> selectUserPagesByAge(IPage<UserVO> page, @Param("user") UserVO user);
+
/**
* 自定义分页
@@ -249,5 +259,9 @@
*/
void batchExperienceList(@Param("list") List<Experience> experienceList);
-
+ /**
+ * 年龄分布查询
+ * @return
+ */
+ List<Integer> getAgeStatistics(@Param("user") UserVO user);
}
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 <=30
+ </if>
+ <if test="user.ageType==2">
+ and age >30 and age <=45
+ </if>
+ <if test="user.ageType==3">
+ and age >45 and age <=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 <=30
+ </if>
+ <if test="user.ageType==2">
+ and age >30 and age <=45
+ </if>
+ <if test="user.ageType==3">
+ and age >45 and age <=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 <=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 <=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 <=60
+ )
+ </select>
+
</mapper>
diff --git a/src/main/java/org/springblade/modules/system/service/IUserService.java b/src/main/java/org/springblade/modules/system/service/IUserService.java
index d842d6e..dd66bee 100644
--- a/src/main/java/org/springblade/modules/system/service/IUserService.java
+++ b/src/main/java/org/springblade/modules/system/service/IUserService.java
@@ -18,6 +18,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.support.Query;
import org.springblade.modules.auth.enums.UserEnum;
@@ -366,4 +367,11 @@
*/
List<Map<String, Object>> selectEquipent();
+ /**
+ * 年龄分布查询
+ * @param user
+ * @return
+ */
+ Object getAgeStatistics(UserVO user);
+
}
diff --git a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
index 8e44bba..a703122 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
@@ -186,35 +186,67 @@
@Override
public IPage<UserVO> selectUserPages(IPage<UserVO> page, UserVO user) {
- List<UserVO> userVOS = baseMapper.selectUserPages(page, user);
- //机构名称拼接
- userVOS.forEach(userVO -> {
- if (null != userVO.getCardid() && userVO.getCardid() != "") {
- userVO.setAge(AgeUtil.idCardToAge(userVO.getCardid()));
- } else {
- userVO.setAge(null);
- }
- if (null!=userVO.getDeptId()) {
- List<String> list = baseMapper.getDeptName(userVO.getDeptId());
- if (list.size() > 1) {
- if (null != list.get(1) && list.get(1) != "") {
- String s = list.get(1).toString();
- if (s.equals("本市保安公司") || s.equals("保安培训学校") || s.equals("自招保安单位") || s.equals("武装押运公司") || s.equals("分公司") || s.equals("其他")){
+ if (null!=user.getAgeType() && user.getAgeType()!=4){
+ List<UserVO> userVOS = baseMapper.selectUserPagesByAge(page, user);
+ //机构名称拼接
+ userVOS.forEach(userVO -> {
+ if (null != userVO.getCardid() && userVO.getCardid() != "") {
+ userVO.setAge(AgeUtil.idCardToAge(userVO.getCardid()));
+ } else {
+ userVO.setAge(null);
+ }
+ if (null!=userVO.getDeptId()) {
+ List<String> list = baseMapper.getDeptName(userVO.getDeptId());
+ if (list.size() > 1) {
+ if (null != list.get(1) && list.get(1) != "") {
+ String s = list.get(1).toString();
+ if (s.equals("本市保安公司") || s.equals("保安培训学校") || s.equals("自招保安单位") || s.equals("武装押运公司") || s.equals("分公司") || s.equals("其他")){
+ userVO.setDeptName(list.get(0));
+ }
+ else {
+ userVO.setDeptName(list.get(1) + "," + list.get(0));
+ }
+ } else {
userVO.setDeptName(list.get(0));
}
- else {
- userVO.setDeptName(list.get(1) + "," + list.get(0));
- }
- } else {
+ }
+ if (list.size() == 1) {
userVO.setDeptName(list.get(0));
}
}
- if (list.size() == 1) {
- userVO.setDeptName(list.get(0));
+ });
+ return page.setRecords(userVOS);
+ }else {
+ List<UserVO> userVOS = baseMapper.selectUserPages(page, user);
+ //机构名称拼接
+ userVOS.forEach(userVO -> {
+ if (null != userVO.getCardid() && userVO.getCardid() != "") {
+ userVO.setAge(AgeUtil.idCardToAge(userVO.getCardid()));
+ } else {
+ userVO.setAge(null);
}
- }
- });
- return page.setRecords(userVOS);
+ if (null!=userVO.getDeptId()) {
+ List<String> list = baseMapper.getDeptName(userVO.getDeptId());
+ if (list.size() > 1) {
+ if (null != list.get(1) && list.get(1) != "") {
+ String s = list.get(1).toString();
+ if (s.equals("本市保安公司") || s.equals("保安培训学校") || s.equals("自招保安单位") || s.equals("武装押运公司") || s.equals("分公司") || s.equals("其他")){
+ userVO.setDeptName(list.get(0));
+ }
+ else {
+ userVO.setDeptName(list.get(1) + "," + list.get(0));
+ }
+ } else {
+ userVO.setDeptName(list.get(0));
+ }
+ }
+ if (list.size() == 1) {
+ userVO.setDeptName(list.get(0));
+ }
+ }
+ });
+ return page.setRecords(userVOS);
+ }
}
@Override
@@ -1697,5 +1729,16 @@
}
-
+ /**
+ * 年龄分布查询
+ * @param user
+ * @return
+ */
+ @Override
+ public Object getAgeStatistics(UserVO user) {
+ //获取年龄分布数据
+ List<Integer> list = baseMapper.getAgeStatistics(user);
+ //返回
+ return list;
+ }
}
diff --git a/src/main/java/org/springblade/modules/system/vo/UserVO.java b/src/main/java/org/springblade/modules/system/vo/UserVO.java
index 572a42f..56e219f 100644
--- a/src/main/java/org/springblade/modules/system/vo/UserVO.java
+++ b/src/main/java/org/springblade/modules/system/vo/UserVO.java
@@ -170,4 +170,8 @@
*/
private String sort;
+ /**
+ * 年龄段类型 1:18-30周岁 2:30-45周岁 3:45-60周岁 4:全部
+ */
+ private Integer ageType;
}
--
Gitblit v1.9.3