|
|
@@ -3083,5 +3083,105 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
|
sysUserMapper.updateById(sysUser);
|
|
|
return HttpResult.ok("账号注销成功");
|
|
|
}
|
|
|
+ /**
|
|
|
+ * @version
|
|
|
+ * @author: hxl
|
|
|
+ * @Date: 2025/1/18 18:17
|
|
|
+ * @Description: 转部门
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public String transferPost(TransferUserVo transferUserVo) {
|
|
|
+ //1.现复制用户表信息和用户信息表
|
|
|
+ SysUser sysUser = sysUserMapper.selectById(transferUserVo.getUserId());
|
|
|
+ String identity = sysUser.getIdentity();
|
|
|
+ String identityTime = sysUser.getIdentityTime();
|
|
|
+ String mobile = sysUser.getMobile();
|
|
|
+ sysUser.setIdentity("");
|
|
|
+ sysUser.setIdentityTime(null);
|
|
|
+ sysUser.setMobile("");
|
|
|
+ if(StringUtils.isBlank(transferUserVo.getDeptId())){
|
|
|
+ throw new SystemException("转出部门不能为空!");
|
|
|
+ }
|
|
|
+ if(transferUserVo.getDeptId().equals("9")){
|
|
|
+ throw new SystemException("转出部门不能为总部!");
|
|
|
+ }
|
|
|
+ if(transferUserVo.getDeptId().equals(sysUser.getDeptId())){
|
|
|
+ throw new SystemException("转出部门和用户当前部门一致,请重新选择");
|
|
|
+ }
|
|
|
+ SysDept dept = sysDeptMapper.selectById(transferUserVo.getDeptId());
|
|
|
+ if(dept.getDeptType()!=null && ("C".equals(dept.getDeptType()) || "M".equals(dept.getDeptType()))) {
|
|
|
+ throw new SystemException("转出部门为子公司或者门店,请重新选择");
|
|
|
+ }
|
|
|
+ if(dept.getManagementSource()!=null && ("1".equals(dept.getManagementSource()) || "2".equals(dept.getManagementSource()) || "3".equals(dept.getManagementSource()))){
|
|
|
+ throw new SystemException("转出部门类型不能为渠道、电销、个代,请重新选择");
|
|
|
+ }
|
|
|
+ if(sysUser.getType()!=null && sysUser.getType()!=0){
|
|
|
+ throw new SystemException("非后线人员不能转出");
|
|
|
+ }
|
|
|
+ //2.将原先的用户设置为离司
|
|
|
+ sysUser.setStatus(UserWorkStatus.UWS_0.getCode());
|
|
|
+ this.saveOrUpdate(sysUser);
|
|
|
+ //3.重新生成用户id保存用户为入司待审核
|
|
|
+ int noCount = 3;
|
|
|
+ String nextPK="";
|
|
|
+ String maxId = findNewMaxId(transferUserVo.getDeptId());
|
|
|
+ if (StringUtils.isNullOrEmpty(maxId) || "0".equals(maxId)) {
|
|
|
+ nextPK = transferUserVo.getDeptId() + "001";
|
|
|
+ } else {
|
|
|
+ nextPK = IdGenerate.nextCode(maxId, noCount);
|
|
|
+ }
|
|
|
+ sysUser.setId(nextPK);
|
|
|
+ sysUser.setIdentity(identity);
|
|
|
+ sysUser.setIdentityTime(identityTime);
|
|
|
+ sysUser.setMobile(mobile);
|
|
|
+ //清空领导人和管理人
|
|
|
+ sysUser.setLeaderId(null);
|
|
|
+ sysUser.setLeaderName(null);
|
|
|
+ sysUser.setOperatorCode(null);
|
|
|
+ sysUser.setDeptId(transferUserVo.getDeptId());
|
|
|
+ sysUser.setStatus(UserWorkStatus.UWS_2.getCode());
|
|
|
+ sysUser.setCreateBy(new BaseController().getUser().getId());
|
|
|
+ sysUser.setCreateTime(new Date());
|
|
|
+ sysUser.setUpdateBy(new BaseController().getUser().getId());
|
|
|
+ sysUser.setUpdateTime(new Date());
|
|
|
+ this.save(sysUser);
|
|
|
+ //4.添加角色
|
|
|
+ SysUserRole sysUserRole = sysUserRoleService.selectByUserId(transferUserVo.getUserId());
|
|
|
+ sysUserRole.setUserId(nextPK);
|
|
|
+ sysUserRole.setId(null);
|
|
|
+ sysUserRoleService.save(sysUserRole);
|
|
|
+ //5.添加用户基本信息
|
|
|
+ SysUserInfo userInfo = sysUserInfoService.getById(transferUserVo.getUserId());
|
|
|
+ userInfo.setId(nextPK);
|
|
|
+ sysUserInfoService.save(userInfo);
|
|
|
+ //6.添加影像
|
|
|
+ List<EsmUserImage> list = esmUserImageService.getEsmUserByUserId(transferUserVo.getUserId());
|
|
|
+ if(list!=null && !list.isEmpty()){
|
|
|
+ String finalNextPK = nextPK;
|
|
|
+ list.stream().forEach(item -> {
|
|
|
+ item.setUserId(finalNextPK);
|
|
|
+ item.setId(null);
|
|
|
+ });
|
|
|
+ esmUserImageService.saveBatch(list);
|
|
|
+ }
|
|
|
+ return nextPK;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @version
|
|
|
+ * @author: hxl
|
|
|
+ * @Date: 2025/1/21 9:28
|
|
|
+ * @Description: 获取部门最大的id
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public String findNewMaxId(String deptId) {
|
|
|
+ QueryWrapper<SysUser> qw = new QueryWrapper<>();
|
|
|
+ qw.select("IFNULL(MAX(id),0) maxId");
|
|
|
+ qw.like("id", deptId);
|
|
|
+ Map<String, Object> m = getMap(qw);
|
|
|
+ String maxId = m.get("maxId").toString();
|
|
|
+ return maxId;
|
|
|
+ }
|
|
|
|
|
|
}
|