hxl13994548489 1 год назад
Родитель
Сommit
37c6f9c157

+ 14 - 0
src/main/java/com/ydtech/modules/admin/controller/SysUserController.java

@@ -1339,4 +1339,18 @@ public class SysUserController extends BaseController {
         return sysUserService.userLogout(userId);
     }
 
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2025/1/20 8:50
+     *  @Description:  转部门
+     */
+    @ApiOperation(value = "转部门")
+    @PostMapping("/transferPost")
+    public HttpResult<String> transferPost(@RequestBody TransferUserVo transferUserVo) {
+         String newUserId =  sysUserService.transferPost(transferUserVo);
+        return HttpResult.ok("转出部门成功,转出的新工号为:"+newUserId+",注意审核");
+    }
+
 }

+ 19 - 0
src/main/java/com/ydtech/modules/admin/model/vo/TransferUserVo.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "转出部门对象")
+public class TransferUserVo implements Serializable {
+
+
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+
+    @ApiModelProperty(value = "机构id")
+    private String  deptId;
+}

+ 16 - 1
src/main/java/com/ydtech/modules/admin/service/SysUserService.java

@@ -14,7 +14,6 @@ import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.base.model.dto.PageDto;
 import com.ydtech.modules.base.model.vo.PageVo;
-import org.springframework.http.HttpHeaders;
 
 import java.util.List;
 import java.util.Map;
@@ -352,6 +351,22 @@ public interface SysUserService extends BaseIService<SysUser> {
     List<SysUser> selectByUserId(List<String> ids);
 
     HttpResult userLogout(String userId);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2025/1/18 18:16
+     *  @Description: 转岗
+     */
+    String transferPost(TransferUserVo transferUserVo);
+
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2025/1/21 9:31
+     *  @Description: 获取最大的id
+     */
+    String findNewMaxId(String deptId);
 }
 
 

+ 100 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -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;
+    }
 
 }

+ 7 - 1
src/main/java/com/ydtech/modules/esm/dao/EsmUserImageMapper.java

@@ -16,7 +16,13 @@ import java.util.List;
 public interface EsmUserImageMapper extends BaseMapper<EsmUserImage> {
 
     List<EsmUserImageQueryVo> selectEsmUserImageQueryVo(@Param("userId") String userId);
-
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2025/1/20 18:49
+     *  @Description: 通过用户id查询对象
+     */
+    List<EsmUserImage> getEsmUserByUserId(@Param("userId") String userId);
 }
 
 

+ 10 - 0
src/main/java/com/ydtech/modules/esm/model/EsmUserImage.java

@@ -48,4 +48,14 @@ public class EsmUserImage implements Serializable {
         this.userId = userId;
         this.type = esmUserImageVo.getType();
     }
+
+    public EsmUserImage() {
+    }
+
+    public EsmUserImage(Long id, String imagesId, String userId, String type) {
+        this.id = id;
+        this.imagesId = imagesId;
+        this.userId = userId;
+        this.type = type;
+    }
 }

+ 3 - 0
src/main/java/com/ydtech/modules/esm/service/EsmUserImageService.java

@@ -16,4 +16,7 @@ public interface EsmUserImageService extends IService<EsmUserImage> {
 
     List<EsmUserImageQueryVo> getEsmUserImageQueryVo(String userId);
 
+
+    List<EsmUserImage> getEsmUserByUserId(String userId);
+
 }

+ 10 - 0
src/main/java/com/ydtech/modules/esm/service/impl/EsmUserImageServiceImpl.java

@@ -22,6 +22,16 @@ public class EsmUserImageServiceImpl extends ServiceImpl<EsmUserImageMapper, Esm
     public List<EsmUserImageQueryVo> getEsmUserImageQueryVo(String userId) {
         return baseMapper.selectEsmUserImageQueryVo(userId);
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2025/1/20 18:49
+     *  @Description: 通过用户id查询关联的对象
+     */
+    @Override
+    public List<EsmUserImage> getEsmUserByUserId(String userId) {
+        return baseMapper.getEsmUserByUserId(userId);
+    }
 
 }
 

+ 6 - 0
src/main/resources/mapper/modules/esm/EsmUserImageMapper.xml

@@ -30,4 +30,10 @@
                            on i.images_id = f.id
         where i.user_id = #{userId};
     </select>
+    <select id="getEsmUserByUserId" resultType="com.ydtech.modules.esm.model.EsmUserImage">
+        select
+            id,images_id,user_id,type
+        from esm_user_image
+        where user_id = #{userId};
+    </select>
 </mapper>