From 7d581f0f8c74beb999b4482bf2bbdc59e4d5846d Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Wed, 11 May 2022 10:36:38 +0800
Subject: [PATCH] 保安员,用户新增,保安员查询姓名修改,账号修改为姓+身份证号码后4位

---
 src/main/java/org/springblade/modules/system/mapper/UserMapper.xml             |   57 +++++++++++
 src/main/java/org/springblade/modules/FTP/DataHandler.java                     |    1 
 src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml             |    6 
 src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java |   11 +
 src/main/java/org/springblade/common/utils/DesensitizedUtil.java               |    5 +
 src/main/java/org/springblade/modules/system/controller/UserController.java    |  209 +++++++++++++++++++++++++++++++++++------
 6 files changed, 251 insertions(+), 38 deletions(-)

diff --git a/src/main/java/org/springblade/common/utils/DesensitizedUtil.java b/src/main/java/org/springblade/common/utils/DesensitizedUtil.java
index 7f74717..382b143 100644
--- a/src/main/java/org/springblade/common/utils/DesensitizedUtil.java
+++ b/src/main/java/org/springblade/common/utils/DesensitizedUtil.java
@@ -123,6 +123,11 @@
 		System.out.println("map = " + map);
 		Object o = map.get(a);
 		System.out.println("o = " + o);
+
+		String names = "张三";
+		System.out.println("names = " + names.substring(0,1));
+		String cardid ="360728199205120012";
+		System.out.println("cardid.substring(cardid.length()-4) = " + cardid.substring(cardid.length() - 4));
 	}
 
 
diff --git a/src/main/java/org/springblade/modules/FTP/DataHandler.java b/src/main/java/org/springblade/modules/FTP/DataHandler.java
index fba408d..06ebd4b 100644
--- a/src/main/java/org/springblade/modules/FTP/DataHandler.java
+++ b/src/main/java/org/springblade/modules/FTP/DataHandler.java
@@ -188,6 +188,7 @@
 		//返回的user,需处理敏感数据
 		User user1 = Objects.requireNonNull(BeanUtil.copy(user,User.class));
 		//敏感数据处理
+		user1.setRealName(DesensitizedUtil.desensitizedName(user.getRealName()));
 		user1.setCardid(DesensitizedUtil.desensitizedIdNumberBy4(user.getCardid()));
 		user1.setPhone(DesensitizedUtil.desensitizedPhoneNumber(user.getPhone()));
 		user1.setRegistered(DesensitizedUtil.desensitizedAddress(user.getRegistered()));
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 1b7e304..e62ded0 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -229,20 +229,37 @@
 	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R submit(@Valid @RequestBody User user) {
 		if (null == user.getId()) {
-			//新增
-			//密码加密
-			if (Func.isNotEmpty(user.getPassword())) {
-				user.setPassword(DigestUtil.encrypt(user.getPassword()));
-			}
 			Integer userCount = userService.selectCountAccount(user.getAccount());
 			if (userCount > 0) {
 				throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
 			}
+			//判断角色
+			if(user.getRoleId().equals("1412226235153731586")){
+				//如果是保安员,默认为无证
+				user.setHold("2");
+			}
 			user.setTenantId("000000");
+			user.setDispatch("1");
+			//待审查
+			user.setExaminationType("2");
+//			String realName = user.getRealName();
+//			String cardid = user.getCardid();
+////			user.setAccount(user.getRealName());
+//			user.setAccount(realName.substring(0,1)+cardid.substring(cardid.length()-4));
+			//默认在职
 			user.setStatus(1);
 			user.setIsDeleted(0);
 			user.setCreateTime(new Date());
 			user.setUpdateTime(new Date());
+
+			//密码加密
+			if (Func.isNotEmpty(user.getCardid())) {
+				//取身份证号码后6位作为密码
+				user.setPassword(DigestUtil.encrypt(user.getCardid().substring(user.getCardid().length() - 6)));
+			}
+			user.setCreateTime(new Date());
+			user.setTenantId("000000");
+
 			//判断是否为民警 code
 			if (null != user.getCode() && !user.getCode().equals("")) {
 				//民警
@@ -254,32 +271,72 @@
 				Jurisdiction one = jurisdictionService.getOne(Condition.getQueryWrapper(jurisdiction));
 				user.setJurisdiction(one.getId().toString());
 			}
-			//新增
-			boolean stats = userService.save(user);
-			if (stats) {
-				//内网同步
-				String s = "insert into blade_user(" +
-					"id,tenant_id,code,account,password,real_name,phone,sex,role_id,dept_id," +
-					"create_time,update_time,cardid,status,is_deleted,jurisdiction) " +
-					"values(" + "'" + user.getId() + "'" + "," +
-					"'" + user.getTenantId() + "'" + "," +
-					"'" + user.getCode() + "'" + "," +
-					"'" + user.getAccount() + "'" + "," +
-					"'" + user.getPassword() + "'" + "," +
-					"'" + user.getRealName() + "'" + "," +
-					"'" + user.getPhone() + "'" + "," +
-					"'" + user.getSex() + "'" + "," +
-					"'" + user.getRoleId() + "'" +
-					"," + "'" + user.getDeptId() + "'" +
-					"," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" +
-					"," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'" +
-					"," + "'" + user.getCardid() + "'" +
-					"," + "'" + user.getStatus() + "'" +
-					"," + "'" + user.getIsDeleted() + "'" +
-					"," + "'" + user.getJurisdiction() + "'"
-					+ ")";
-				myAsyncService.FTP(s);
+			//用户新增
+//		boolean status = userService.save(user);
+
+
+			User user1 = Objects.requireNonNull(BeanUtil.copy(user,User.class));
+
+			//生成随机数
+			String uuid = UUID.randomUUID().toString();
+			//将 user 存入 redis
+			redisTemplate.opsForValue().set(uuid,JSON.toJSONString(user));
+			//user1 临时设置uuid 到 reason_for_leav 离职原因字段
+			user1.setReasonForLeav(uuid);
+
+			//数据推送
+			Map<String, Object> map = new HashMap<>(1);
+			map.put("user",user1);
+			myAsyncService.FTPObject(map);
+
+			int count = 0;
+			int flag = 1;
+			Result result = new Result();
+			//调用ftp获取返回数据
+			while (true){
+				try {
+					Thread.sleep(1000);
+				} catch (InterruptedException e) {
+					e.printStackTrace();
+				}
+				//调用ftp获取返回数据
+				result = Monitor.isFTPFileExist(uuid);
+				//如果返回true,就退处
+				if (result.getCode()==200){
+					flag = 1;
+					break;
+				}else if (result.getCode()==201){
+					flag = 2;
+					break;
+				}else if (result.getCode()==202){
+					flag = 3;
+					break;
+				}else if (result.getCode()==203){
+					flag = 4;
+					break;
+				}else{
+					//计数
+					count++;
+					//如果超过10s 没有读取到,则退出
+					if (count == 30) {
+						break;
+					}
+				}
 			}
+			if (flag==1 || flag==2) {
+				//返回
+				return R.data(200, null, "新增成功!");
+			}else if (flag==3){
+				throw new ServiceException(result.getMsg());
+			}else if (flag==4){
+//			return R.data(201, null, "保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
+				return R.data(201, null, "保安证编号不匹配,请核实!");
+			}else{
+				//返回
+				return R.data(400, null, "新增失败!");
+			}
+
+
 		} else {
 			//修改
 			User user1 = userService.getById(user.getId());
@@ -306,6 +363,93 @@
 		//返回
 		return R.success("成功");
 	}
+
+	/**
+//	 * 新增或修改
+//	 */
+//	@PostMapping("/submit")
+//	@ApiOperationSupport(order = 4)
+//	@ApiOperation(value = "新增或修改", notes = "传入User")
+//	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+//	public R submit(@Valid @RequestBody User user) {
+//		if (null == user.getId()) {
+//			//新增
+//			//密码加密
+//			if (Func.isNotEmpty(user.getPassword())) {
+//				user.setPassword(DigestUtil.encrypt(user.getPassword()));
+//			}
+//			Integer userCount = userService.selectCountAccount(user.getAccount());
+//			if (userCount > 0) {
+//				throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
+//			}
+//			user.setTenantId("000000");
+//			user.setStatus(1);
+//			user.setIsDeleted(0);
+//			user.setCreateTime(new Date());
+//			user.setUpdateTime(new Date());
+//			//判断是否为民警 code
+//			if (null != user.getCode() && !user.getCode().equals("")) {
+//				//民警
+//				//根据 deptId 查询dept信息,公安管理员
+//				Dept dept = iDeptService.getById(user.getDeptId());
+//				//获取辖区的数据
+//				Jurisdiction jurisdiction = new Jurisdiction();
+//				jurisdiction.setDeptName(dept.getDeptName());
+//				Jurisdiction one = jurisdictionService.getOne(Condition.getQueryWrapper(jurisdiction));
+//				user.setJurisdiction(one.getId().toString());
+//			}
+//			//新增
+//			boolean stats = userService.save(user);
+//			if (stats) {
+//				//内网同步
+//				String s = "insert into blade_user(" +
+//					"id,tenant_id,code,account,password,real_name,phone,sex,role_id,dept_id," +
+//					"create_time,update_time,cardid,status,is_deleted,jurisdiction) " +
+//					"values(" + "'" + user.getId() + "'" + "," +
+//					"'" + user.getTenantId() + "'" + "," +
+//					"'" + user.getCode() + "'" + "," +
+//					"'" + user.getAccount() + "'" + "," +
+//					"'" + user.getPassword() + "'" + "," +
+//					"'" + user.getRealName() + "'" + "," +
+//					"'" + user.getPhone() + "'" + "," +
+//					"'" + user.getSex() + "'" + "," +
+//					"'" + user.getRoleId() + "'" +
+//					"," + "'" + user.getDeptId() + "'" +
+//					"," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" +
+//					"," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'" +
+//					"," + "'" + user.getCardid() + "'" +
+//					"," + "'" + user.getStatus() + "'" +
+//					"," + "'" + user.getIsDeleted() + "'" +
+//					"," + "'" + user.getJurisdiction() + "'"
+//					+ ")";
+//				myAsyncService.FTP(s);
+//			}
+//		} else {
+//			//修改
+//			User user1 = userService.getById(user.getId());
+//			user.setPassword(user1.getPassword());
+//			user.setUpdateTime(new Date());
+//			boolean b = userService.updateById(user);
+//			if (b) {
+//				String s1 =
+//					"update blade_user set account = " + "'" + user.getAccount() + "'"
+//						+ ",code = " + "'" + user.getCode() + "'"
+//						+ ",real_name = " + "'" + user.getRealName() + "'"
+//						+ ",phone = " + "'" + user.getPhone() + "'"
+//						+ ",sex = " + "'" + user.getSex() + "'"
+//						+ ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'"
+//						+ ",role_id = " + "'" + user.getRoleId() + "'"
+//						+ ",dept_id = " + "'" + user.getDeptId() + "'"
+//						+ ",cardid = " + "'" + user.getCardid() + "'"
+//						+ ",guncode = " + "'" + user.getGuncode() + "'"
+//						+ " " + "where id = " + "'" + user.getId() + "'";
+//				myAsyncService.FTP(s1);
+//			}
+//		}
+//
+//		//返回
+//		return R.success("成功");
+//	}
 
 	/**
 	 * 修改
@@ -1427,7 +1571,10 @@
 		user.setDispatch("1");
 		//待审查
 		user.setExaminationType("2");
-		user.setAccount(user.getRealName());
+		String realName = user.getRealName();
+		String cardid = user.getCardid();
+//			user.setAccount(user.getRealName());
+		user.setAccount(realName.substring(0,1)+cardid.substring(cardid.length()-4));
 		user.setStatus(1);
 
 		//密码加密
diff --git a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
index 40f24f0..163405d 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
@@ -486,7 +486,7 @@
         (select
         bu.id,
         bu.dept_id parentId,
-        bu.real_name AS title,
+        bu.account AS title,
         bu.id AS "value",
         bu.id AS "key",
         0 as "has_children"
@@ -552,7 +552,7 @@
         (select
         bu.id,
         bu.dept_id parentId,
-        bu.real_name AS title,
+        bu.account AS title,
         bu.id AS "value",
         bu.id AS "key",
         0 as "has_children"
@@ -608,7 +608,7 @@
         (select
         bu.id,
         bu.dept_id parentId,
-        bu.real_name AS title,
+        bu.account AS title,
         bu.id AS "value",
         bu.id AS "key",
         0 as "has_children"
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 176b471..eeabaa2 100644
--- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -572,7 +572,7 @@
                     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,
+                    bu.account as name,
                     #{user.deptId} parentId
                 from
                     blade_user bu
@@ -601,6 +601,59 @@
             </if>
         )
     </select>
+
+    <!--保安员列表树 安员列表树,帅选无保安证,下拉tree-->
+<!--    <select id="getSecurityApplyTree" resultType="org.springblade.modules.system.node.TreeNode">-->
+<!--        (-->
+<!--            select #{user.deptId} as id,-->
+<!--                '全部' as name,-->
+<!--                0 as parentId-->
+<!--                from blade_user limit 1-->
+<!--        )-->
+
+<!--        union all-->
+
+<!--        (-->
+<!--            select-->
+<!--            a.id,-->
+<!--            a.name,-->
+<!--            a.parentId-->
+<!--            from (-->
+<!--                select-->
+<!--                    distinct-->
+<!--                    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,-->
+<!--                    #{user.deptId} parentId-->
+<!--                from-->
+<!--                    blade_user bu-->
+<!--                left join-->
+<!--                blade_dept bd-->
+<!--                on-->
+<!--                bu.dept_id = bd.id-->
+<!--                left join-->
+<!--                blade_role br-->
+<!--                on-->
+<!--                br.id = bu.role_id-->
+<!--                where-->
+<!--                bu.is_deleted = 0-->
+<!--                and bu.status = 1-->
+<!--                and ((bu.examination_type != 1 and bu.examination_type != 2) or bu.examination_type is null)-->
+<!--                and (hold = 2 or hold = 3)-->
+<!--                and bd.id = #{user.deptId}-->
+<!--                and br.role_alias = '保安'-->
+<!--            ) a-->
+<!--            where 1 = 1-->
+<!--            <if test="user.examType==1">-->
+<!--                and a.isApply != 1-->
+<!--            </if>-->
+<!--            <if test="user.examType==2">-->
+<!--                and a.isTrain != 1-->
+<!--            </if>-->
+<!--        )-->
+<!--    </select>-->
 
 
     <select id="selectInr" resultType="java.util.HashMap">
@@ -847,7 +900,7 @@
         select
         distinct
         bu.id,
-        bu.real_name as name,
+        bu.account as name,
         #{user.deptId} parentId
         from
         blade_user bu
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 730a856..e6bf922 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
@@ -1339,7 +1339,10 @@
 			}
 
 			//设置账号
-			user.setAccount(user.getRealName());
+			String realName = user.getRealName();
+			String cardid = user.getCardid();
+//			user.setAccount(user.getRealName());
+			user.setAccount(realName.substring(0,1)+cardid.substring(cardid.length()-4));
 			//加密
 			user.setPassword(DigestUtil.encrypt(user.getCardid().substring(user.getCardid().length() - 6)));
 			user.setCreateTime(new Date());
@@ -1477,6 +1480,7 @@
 		//返回的user,需处理敏感数据
 		User user1 = Objects.requireNonNull(BeanUtil.copy(user,User.class));
 		//敏感数据处理
+		user1.setRealName(DesensitizedUtil.desensitizedName(user.getRealName()));
 		user1.setCardid(DesensitizedUtil.desensitizedIdNumberBy4(user.getCardid()));
 		user1.setPhone(DesensitizedUtil.desensitizedPhoneNumber(user.getPhone()));
 		user1.setRegistered(DesensitizedUtil.desensitizedAddress(user.getRegistered()));
@@ -1592,7 +1596,10 @@
 			}
 
 			//设置账号
-			user.setAccount(user.getRealName());
+			String realName = user.getRealName();
+			String cardid = user.getCardid();
+//			user.setAccount(user.getRealName());
+			user.setAccount(realName.substring(0,1)+cardid.substring(cardid.length()-4));
 			//加密
 			user.setPassword(DigestUtil.encrypt(user.getCardid().substring(user.getCardid().length() - 6)));
 			user.setCreateTime(new Date());

--
Gitblit v1.9.3