zouxuan 3 лет назад
Родитель
Сommit
c3ce0f693b
22 измененных файлов с 562 добавлено и 84 удалено
  1. 3 3
      codegen/src/main/resources/generateConfigration.xml
  2. 8 14
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/PhoneLoginAuthenticationFilter.java
  3. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysEmployeePositionDao.java
  4. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysPositionDao.java
  5. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EmployeeDto.java
  6. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SimpleUserDto.java
  7. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Employee.java
  8. 48 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysEmployeePosition.java
  9. 48 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysPosition.java
  10. 0 9
      mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java
  11. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysEmployeePositionService.java
  12. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysPositionService.java
  13. 19 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  14. 10 43
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java
  15. 62 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysEmployeePositionServiceImpl.java
  16. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysPositionServiceImpl.java
  17. 2 1
      mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  18. 98 0
      mec-biz/src/main/resources/config/mybatis/SysEmployeePositionMapper.xml
  19. 60 0
      mec-biz/src/main/resources/config/mybatis/SysPositionMapper.xml
  20. 0 2
      mec-web/src/main/java/com/ym/mec/web/controller/OrganizationController.java
  21. 36 0
      mec-web/src/main/java/com/ym/mec/web/controller/SysEmployeePositionController.java
  22. 30 0
      mec-web/src/main/java/com/ym/mec/web/controller/SysPositionController.java

+ 3 - 3
codegen/src/main/resources/generateConfigration.xml

@@ -2,11 +2,11 @@
 <GenerateConfiguration>
 	<dbConfiguration>
 		<driverClass>com.mysql.jdbc.Driver</driverClass>
-		<url>jdbc:mysql://47.114.1.200:3306/mec_test</url>
+		<url>jdbc:mysql://47.114.1.200:3306/mec_dev</url>
 		<username>mec_dev</username>
 		<password>dayaDataOnline@2019</password>
-		<catalog>mec_test</catalog>
-		<schema>mec_test</schema>
+		<catalog>mec_dev</catalog>
+		<schema>mec_dev</schema>
 	</dbConfiguration>
 	<srcBase>/Users/chenxiaoyu/Documents/javabean</srcBase>
 	<pojoPackageName>com.ym.mec.biz.dal.entity</pojoPackageName>

+ 8 - 14
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/PhoneLoginAuthenticationFilter.java

@@ -1,27 +1,21 @@
 package com.ym.mec.auth.core.filter;
 
-import java.io.IOException;
-import java.util.Map;
-import java.util.function.BiFunction;
-
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.auth.api.entity.LoginEntity;
+import com.ym.mec.auth.config.token.PhoneAuthenticationToken;
+import com.ym.mec.common.security.SecurityConstants;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.authentication.AbstractAuthenticationToken;
 import org.springframework.security.authentication.AuthenticationServiceException;
-import org.springframework.security.authentication.InternalAuthenticationServiceException;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 
-import com.ym.mec.auth.api.entity.LoginEntity;
-import com.ym.mec.auth.config.token.PhoneAuthenticationToken;
-import com.ym.mec.common.security.SecurityConstants;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 
 public class PhoneLoginAuthenticationFilter extends AbstractAuthenticationProcessingFilter {
 	private boolean postOnly = true;

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysEmployeePositionDao.java

@@ -0,0 +1,25 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.dto.SimpleUserDto;
+import com.ym.mec.biz.dal.entity.SysEmployeePosition;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface SysEmployeePositionDao extends BaseDAO<Integer, SysEmployeePosition> {
+
+
+    void batchAddPosition(@Param("userId") Integer userId,
+                          @Param("positionIds") List<Integer> positionIds,
+                          @Param("tenantId") Integer tenantId);
+
+    void delPosition(@Param("userId") Integer userId, @Param("tenantId") Integer tenantId);
+
+    List<Map<Integer, String>> queryPositionMap(@Param("userIds") List<Integer> userIds, @Param("tenantId") Integer tenantId);
+
+    List<Map<Integer, String>> queryPositionNameMap(@Param("userIds") List<Integer> userIds, @Param("tenantId") Integer tenantId);
+
+    List<SimpleUserDto> findOrganPosition(@Param("organIds") String organIds, @Param("tenantId") Integer tenantId);
+}

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysPositionDao.java

@@ -0,0 +1,16 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.biz.dal.entity.SysPosition;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public interface SysPositionDao extends BaseDAO<Integer, SysPosition> {
+
+
+    List<Map<Integer, String>> findMapByIds(@Param("positionIds") Collection<Integer> positionIds);
+}

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EmployeeDto.java

@@ -39,6 +39,12 @@ public class EmployeeDto {
     @ApiModelProperty(value = "角色编号",required = false)
     private List<Integer> roleIds;
 
+    @ApiModelProperty(value = "职位名称",required = false)
+    private String positionNames;
+
+    @ApiModelProperty(value = "职位编号",required = false)
+    private String positionIds;
+
     /** 工作性质(兼职、全职、临时) */
     private String jobNature;
 
@@ -72,6 +78,22 @@ public class EmployeeDto {
     @ApiModelProperty(value = "岗位管理范围",required = false)
     private String postDeptIds;
 
+    public String getPositionNames() {
+        return positionNames;
+    }
+
+    public void setPositionNames(String positionNames) {
+        this.positionNames = positionNames;
+    }
+
+    public String getPositionIds() {
+        return positionIds;
+    }
+
+    public void setPositionIds(String positionIds) {
+        this.positionIds = positionIds;
+    }
+
     public String getOrganIdStr() {
         return organIdStr;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SimpleUserDto.java

@@ -34,6 +34,16 @@ public class SimpleUserDto {
 
     private BigDecimal actualAmount;
 
+    private Integer positionId;
+
+    public Integer getPositionId() {
+        return positionId;
+    }
+
+    public void setPositionId(Integer positionId) {
+        this.positionId = positionId;
+    }
+
     public String getOrganIds() {
         return organIds;
     }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Employee.java

@@ -89,10 +89,21 @@ public class Employee extends SysUser {
 	@ApiModelProperty(value = "角色id列表",required = false)
 	private List<Integer> roleIds;
 
+	@ApiModelProperty(value = "职位id列表",required = false)
+	private List<Integer> positionIds;
+
 	private String contactAddress;
 
 	private String postalCode;
 
+	public List<Integer> getPositionIds() {
+		return positionIds;
+	}
+
+	public void setPositionIds(List<Integer> positionIds) {
+		this.positionIds = positionIds;
+	}
+
 	public String getContactAddress() {
 		return contactAddress;
 	}

+ 48 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysEmployeePosition.java

@@ -0,0 +1,48 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(sys_employee_position):
+ */
+public class SysEmployeePosition {
+
+	/** 用户ID */
+	private Integer userId;
+	
+	/** 角色ID */
+	private Integer roleId;
+	
+	/**  */
+	private Integer tenantId;
+	
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+	
+	public Integer getUserId(){
+		return this.userId;
+	}
+			
+	public void setRoleId(Integer roleId){
+		this.roleId = roleId;
+	}
+	
+	public Integer getRoleId(){
+		return this.roleId;
+	}
+			
+	public void setTenantId(Integer tenantId){
+		this.tenantId = tenantId;
+	}
+	
+	public Integer getTenantId(){
+		return this.tenantId;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 48 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysPosition.java

@@ -0,0 +1,48 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(sys_position):
+ */
+public class SysPosition{
+
+	/**  */
+	private Integer id;
+	
+	/**  */
+	private String roleName;
+	
+	/**  */
+	private String roleCode;
+	
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setRoleName(String roleName){
+		this.roleName = roleName;
+	}
+	
+	public String getRoleName(){
+		return this.roleName;
+	}
+			
+	public void setRoleCode(String roleCode){
+		this.roleCode = roleCode;
+	}
+	
+	public String getRoleCode(){
+		return this.roleCode;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 0 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java

@@ -8,8 +8,6 @@ import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
 import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
-import com.ym.mec.oa.entity.OAUser;
-
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -43,13 +41,6 @@ public interface EmployeeService extends BaseService<Integer, Employee> {
     void updateEmployee(Employee employee);
 
     /**
-     * @Author: Joburgess
-     * @Date: 2019/9/24
-     * 删除员工
-     */
-    void deleteEmployee(Long userId);
-
-    /**
      * @describe 根据角色和部门获取用户
      * @author Joburgess
      * @date 2020/3/12

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysEmployeePositionService.java

@@ -0,0 +1,24 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.dto.SimpleUserDto;
+import com.ym.mec.biz.dal.entity.SysEmployeePosition;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.List;
+import java.util.Map;
+
+public interface SysEmployeePositionService extends BaseService<Integer, SysEmployeePosition> {
+
+    void batchAddPosition(Integer userId, List<Integer> positionIds, Integer tenantId);
+
+    void delPosition(Integer userId, Integer tenantId);
+
+    /**
+    * @description: 获取机构所有职位,员工列表
+     * @param
+    * @return void
+    * @author zx
+    * @date 2022/1/8 11:29
+    */
+    Map<String, List<SimpleUserDto>> findOrganPosition(String organIds);
+}

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysPositionService.java

@@ -0,0 +1,8 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.SysPosition;
+import com.ym.mec.common.service.BaseService;
+
+public interface SysPositionService extends BaseService<Integer, SysPosition> {
+
+}

+ 19 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -3,7 +3,6 @@ package com.ym.mec.biz.service.impl;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysRole;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.EmployeeDto;
 import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
@@ -25,18 +24,17 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.im.entity.GroupMember;
 import com.ym.mec.im.entity.GroupModel;
 import com.ym.mec.util.collection.MapUtil;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
-
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -69,6 +67,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	private OaUserService oaUserService;
     @Autowired
     private TenantInfoService tenantInfoService;
+    @Autowired
+    private SysEmployeePositionService employeePositionService;
+    @Autowired
+    private SysEmployeePositionDao employeePositionDao;
 
 	@Override
 	public BaseDAO<Integer, Employee> getDAO() {
@@ -104,6 +106,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
         employeeDao.insert(employee);
 		//新增用户角色
 		employeeDao.batchAddEmployeeRole(employee.getId(),employee.getRoleIds(), employee.getTenantId());
+		//新增用户职位
+		employeePositionService.batchAddPosition(employee.getId(),employee.getPositionIds(), employee.getTenantId());
 		//添加用户现金账户
 		sysUserCashAccountDao.insert(new SysUserCashAccount(employee.getId(),"CNY"));
 		ImResult imResult = imFeignService.register(new ImUserModel(employee.getId().toString(), employee.getUsername(),null));
@@ -139,6 +143,11 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		employeeDao.delEmployeeRole(employee.getId());
 		//新增用户角色
 		employeeDao.batchAddEmployeeRole(employee.getId(),employee.getRoleIds(), sysUser.getTeacherId());
+
+		//删除用户职位
+		employeePositionService.delPosition(employee.getId(),employee.getTenantId());
+		//添加职位
+		employeePositionService.batchAddPosition(employee.getId(),employee.getPositionIds(), employee.getTenantId());
 		teacherDao.updateUser(employee);
 		imGroupDao.updateNickname(employee.getUserId(), employee.getRealName());
 		imGroupDao.updateUserFriendNickname(employee.getUserId(), employee.getRealName());
@@ -160,15 +169,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	}
 
 	@Override
-	public void deleteEmployee(Long userId) {
-		SysUser sysUser=new SysUser();
-		sysUser.setId(userId.intValue());
-		sysUser.setDelFlag(YesOrNoEnum.YES);
-		teacherDao.updateUser(sysUser);
-	}
-
-	@Override
-	public PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception {
+	public PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo){
 		SysUser user = sysUserFeignService.queryUserInfo();
 		if(user == null){
 			throw new BizException("获取用户信息失败");
@@ -182,8 +183,14 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 			pageInfo.setTotal(count);
 			params.put("offset", pageInfo.getOffset());
 			dataList = employeeDao.queryEmployByOrganId(params);
+			Integer tenantId = TenantContextHolder.getTenantId();
+			List<Integer> userIds = dataList.stream().map(e -> e.getId()).collect(Collectors.toList());
+			Map<Integer,String> positionMap = MapUtil.convertMybatisMap(employeePositionDao.queryPositionMap(userIds,tenantId));
+			Map<Integer,String> positionNameMap = MapUtil.convertMybatisMap(employeePositionDao.queryPositionNameMap(userIds,tenantId));
 			List<Integer> allOrganIds = new ArrayList<>();
 			for (EmployeeDto employeeDto : dataList) {
+				employeeDto.setPositionIds(positionMap.get(employeeDto.getId()));
+				employeeDto.setPositionNames(positionNameMap.get(employeeDto.getId()));
 				if(StringUtils.isBlank(employeeDto.getOrganIdStr())){
 					continue;
 				}

+ 10 - 43
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java

@@ -2,10 +2,7 @@ package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.EmployeeDao;
-import com.ym.mec.biz.dal.dao.OrganizationDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.enums.FivePlusGradeEnum;
@@ -72,22 +69,6 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 	}
 
 
-    private Organization getTree(Organization org){
-		//得到根节点对象
-		//获取子节点list
-		List<Organization> byParentId = organizationDao.findByParentId(org.getId(), null);
-		//如果存在子节点
-		if(byParentId != null && byParentId.size() > 0) {
-			//将子节点list放入父节点对象
-			org.setOrganizations(byParentId);
-			//遍历子节点....
-			for (Organization organization : byParentId) {
-				getTree(organization);
-			}
-		}
-			return org;
-	}
-
 	@Override
 	public Map<Integer, String> getGradeList(Integer id) {
 		Organization organization = organizationDao.get(id);
@@ -313,33 +294,19 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 		}
 		return map;
 	}
-
-	private String concatOrganManager(String... userIds){
-		StringJoiner stringJoiner = new StringJoiner(",");
-		for (String userId : userIds) {
-			if(StringUtils.isNotEmpty(userId)){
-				stringJoiner.add(userId);
-			}
+	private String getName(String userIds){
+		if(StringUtils.isNotEmpty(userIds)){
+			return teacherDao.queryTeacherNameByTeacherIds(userIds);
 		}
-		return stringJoiner.toString();
+		return "";
 	}
 
+
 	private Organization initOrganization(Organization organization){
-		if(StringUtils.isNotEmpty(organization.getOrganManager())){
-			organization.setOrganManagerName(teacherDao.queryTeacherNameByTeacherIds(organization.getOrganManager()));
-		}else {
-			organization.setOrganManagerName("");
-		}
-		if(StringUtils.isNotEmpty(organization.getEducationId())){
-			organization.setEducationName(teacherDao.queryTeacherNameByTeacherIds(organization.getEducationId()));
-		}else {
-			organization.setEducationName("");
-		}
-		if(StringUtils.isNotEmpty(organization.getRepairId())){
-			organization.setRepairName(teacherDao.queryTeacherNameByTeacherIds(organization.getRepairId()));
-		}else {
-			organization.setRepairName("");
-		}
+		organization.setOrganManagerName(getName(organization.getOrganManager()));
+		organization.setEducationName(getName(organization.getEducationId()));
+		organization.setRepairName(getName(organization.getRepairId()));
+		organization.setJoinTeacherName(getName(organization.getJoinTeacherId()));
 		return organization;
 	}
 }

+ 62 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysEmployeePositionServiceImpl.java

@@ -0,0 +1,62 @@
+package com.ym.mec.biz.service.impl;
+
+import com.mysql.cj.xdevapi.Collection;
+import com.ym.mec.biz.dal.dao.SysEmployeePositionDao;
+import com.ym.mec.biz.dal.dao.SysPositionDao;
+import com.ym.mec.biz.dal.dto.SimpleUserDto;
+import com.ym.mec.biz.dal.entity.SysEmployeePosition;
+import com.ym.mec.biz.service.SysEmployeePositionService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.common.tenant.TenantContextHolder;
+import com.ym.mec.util.collection.MapUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class SysEmployeePositionServiceImpl extends BaseServiceImpl<Integer, SysEmployeePosition>  implements SysEmployeePositionService {
+	
+	@Autowired
+	private SysEmployeePositionDao sysEmployeePositionDao;
+	@Autowired
+	private SysPositionDao positionDao;
+
+	@Override
+	public BaseDAO<Integer, SysEmployeePosition> getDAO() {
+		return sysEmployeePositionDao;
+	}
+
+    @Override
+	@Transactional(rollbackFor = Exception.class)
+    public void batchAddPosition(Integer userId, List<Integer> positionIds, Integer tenantId) {
+		if(positionIds != null && positionIds.size() > 0){
+			sysEmployeePositionDao.batchAddPosition(userId,positionIds,tenantId);
+		}
+    }
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delPosition(Integer userId, Integer tenantId) {
+		sysEmployeePositionDao.delPosition(userId,tenantId);
+	}
+
+    @Override
+    public Map<String, List<SimpleUserDto>> findOrganPosition(String organIds) {
+		Integer tenantId = TenantContextHolder.getTenantId();
+		List<SimpleUserDto> organPosition = sysEmployeePositionDao.findOrganPosition(organIds, tenantId);
+		if(organPosition != null && organPosition.size() > 0){
+			Map<Integer, List<SimpleUserDto>> collect = organPosition.stream().collect(Collectors.groupingBy(e -> e.getPositionId()));
+			Map<String,List<SimpleUserDto>> resultMap = new HashMap<>(collect.size());
+			Map<Integer,String> positionNameMap = MapUtil.convertMybatisMap(positionDao.findMapByIds(collect.keySet()));
+			collect.keySet().forEach(e->resultMap.put(positionNameMap.get(e),collect.get(e)));
+			return resultMap;
+		}
+		return new HashMap<>();
+    }
+}

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysPositionServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.common.dal.BaseDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.biz.dal.entity.SysPosition;
+import com.ym.mec.biz.service.SysPositionService;
+import com.ym.mec.biz.dal.dao.SysPositionDao;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SysPositionServiceImpl extends BaseServiceImpl<Integer, SysPosition>  implements SysPositionService {
+	
+	@Autowired
+	private SysPositionDao sysPositionDao;
+
+	@Override
+	public BaseDAO<Integer, SysPosition> getDAO() {
+		return sysPositionDao;
+	}
+	
+}

+ 2 - 1
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -229,7 +229,8 @@
     <select id="queryEmployByOrganId" resultMap="EmployeeDto">
         SELECT ue.*,ue.organ_id_ organ_id_str_,sr.role_name_,sr.id_ role_id_
         FROM (SELECT e.user_id_,su.real_name_,su.gender_,su.phone_,su.user_type_,e.job_nature_,su.lock_flag_,
-        e.entry_date_,e.demission_date_,e.organ_id_list_ organ_id_,e.create_time_,e.contact_address_,e.postal_code_,e.dept_id_,e.dept_ids_,e.post_ids_,e.post_dept_ids_
+        e.entry_date_,e.demission_date_,e.organ_id_list_ organ_id_,e.create_time_,e.contact_address_,
+                     e.postal_code_,e.dept_id_,e.dept_ids_,e.post_ids_,e.post_dept_ids_
         FROM employee e
         LEFT JOIN sys_user su ON e.user_id_ = su.id_
         <if test="roleId != null">

+ 98 - 0
mec-biz/src/main/resources/config/mybatis/SysEmployeePositionMapper.xml

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.SysEmployeePositionDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.SysEmployeePosition" id="SysEmployeePosition">
+		<result column="user_id_" property="userId" />
+		<result column="role_id_" property="roleId" />
+		<result column="tenant_id_" property="tenantId" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="SysEmployeePosition" parameterType="java.util.Map">
+		SELECT * FROM sys_employee_position
+		WHERE user_id_ = #{userId} AND role_id_ = #{roleId}
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="SysEmployeePosition">
+		SELECT * FROM sys_employee_position ORDER BY user_id_,role_id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysEmployeePosition" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO sys_employee_position (user_id_,role_id_,tenant_id_)
+		VALUES(#{userId},#{roleId},#{tenantId})
+	</insert>
+	<insert id="batchAddPosition">
+		INSERT INTO sys_employee_position(user_id_,role_id_,tenant_id_) VALUES
+		<foreach collection="positionIds" item="item" index="index" separator=",">
+			(#{userId},#{item},#{tenantId})
+		</foreach>
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.SysEmployeePosition">
+		UPDATE sys_employee_position <set>
+		<if test="userId != null">
+		user_id_ = #{userId},
+		</if>
+		<if test="tenantId != null">
+		tenant_id_ = #{tenantId},
+		</if>
+		<if test="roleId != null">
+		role_id_ = #{roleId},
+		</if>
+		</set> WHERE user_id_ = #{userId} AND role_id_ = #{roleId}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" parameterType="java.util.Map">
+		DELETE FROM sys_employee_position WHERE user_id_ = #{userId} AND role_id_ = #{roleId} 
+	</delete>
+
+	<delete id="delPosition">
+		DELETE FROM sys_employee_position WHERE user_id_ = #{userId} AND tenant_id_ = #{tenantId}
+	</delete>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="SysEmployeePosition" parameterType="map">
+		SELECT * FROM sys_employee_position ORDER BY user_id_,role_id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM sys_employee_position
+	</select>
+	<select id="queryPositionMap" resultType="java.util.Map">
+		SELECT user_id_ 'key',GROUP_CONCAT(role_id_) 'value' FROM sys_employee_position
+		WHERE tenant_id_ = #{tenantId} AND user_id_ IN
+		<foreach collection="userIds" separator="," open="(" item="userId" close=")">
+			#{userId}
+		</foreach>
+		GROUP BY user_id_
+	</select>
+	<select id="queryPositionNameMap" resultType="java.util.Map">
+		SELECT sep.user_id_ 'key',GROUP_CONCAT(sp.role_name_) 'value'  FROM sys_employee_position sep
+		LEFT JOIN sys_position sp ON sp.id_ = sep.role_id_
+		WHERE sep.tenant_id_ = #{tenantId} AND sep.user_id_ IN
+		<foreach collection="userIds" separator="," open="(" item="userId" close=")">
+			#{userId}
+		</foreach>
+		GROUP BY sep.user_id_
+	</select>
+	<select id="findOrganPosition" resultType="com.ym.mec.biz.dal.dto.SimpleUserDto">
+		SELECT su.id_ userId,su.real_name_ userName,su.avatar_ avatar,e.organ_id_list_ organIds,sep.role_id_ positionId
+		FROM sys_employee_position sep
+		LEFT JOIN sys_user su ON su.id_ = sep.user_id_
+		LEFT JOIN employee e ON e.user_id_ = su.id_
+		WHERE su.lock_flag_ = 0 AND su.del_flag_ = 0 AND sep.tenant_id_ = #{tenantId}
+		<if test="organIds!=null and organIds!=''">
+			AND INTE_ARRAY(e.organ_id_list_,#{organIds})
+		</if>
+	</select>
+</mapper>

+ 60 - 0
mec-biz/src/main/resources/config/mybatis/SysPositionMapper.xml

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.SysPositionDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.SysPosition" id="SysPosition">
+		<result column="id_" property="id" />
+		<result column="role_name_" property="roleName" />
+		<result column="role_code_" property="roleCode" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="SysPosition" >
+		SELECT * FROM sys_position WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="SysPosition">
+		SELECT * FROM sys_position ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysPosition" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO sys_position (role_name_,role_code_)
+		VALUES(#{roleName},#{roleCode})
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.SysPosition">
+		UPDATE sys_position <set>
+		<if test="roleCode != null">
+		role_code_ = #{roleCode},
+		</if>
+		<if test="roleName != null">
+		role_name_ = #{roleName},
+		</if>
+		</set> WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM sys_position WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="SysPosition" parameterType="map">
+		SELECT * FROM sys_position ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM sys_position
+	</select>
+	<select id="findMapByIds" resultType="java.util.Map">
+		SELECT id_ 'key',role_code_ 'value' FROM sys_position
+	</select>
+</mapper>

+ 0 - 2
mec-web/src/main/java/com/ym/mec/web/controller/OrganizationController.java

@@ -32,8 +32,6 @@ public class OrganizationController extends BaseController {
     private OrganizationService organizationService;
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
-	@Autowired
-	private EmployeeService employeeService;
 
     @ApiOperation(value = "分页查询分部列表")
     @GetMapping("/queryPage")

+ 36 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SysEmployeePositionController.java

@@ -0,0 +1,36 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.biz.service.SysEmployeePositionService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("employeePosition")
+@Api(tags = "员工职位管理")
+@RestController
+public class SysEmployeePositionController extends BaseController {
+
+    @Autowired
+    private SysEmployeePositionService employeePositionService;
+    @Autowired
+    private OrganizationService organizationService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "获取分部下员工职位列表")
+    @GetMapping("/findOrganPosition")
+    @PreAuthorize("@pcs.hasPermissions('employeePosition/findOrganPosition')")
+    public Object findAll(String organIds) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        organIds = organizationService.getEmployeeOrgan(sysUser.getId(),organIds,sysUser.getIsSuperAdmin());
+        return succeed(employeePositionService.findOrganPosition(organIds));
+    }
+}

+ 30 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SysPositionController.java

@@ -0,0 +1,30 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.service.SysPositionService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@RequestMapping("position")
+@Api(tags = "职位管理")
+@RestController
+public class SysPositionController extends BaseController {
+
+    @Autowired
+    private SysPositionService positionService;
+
+    @ApiOperation(value = "获取职位列表")
+    @GetMapping("/findAll")
+    @PreAuthorize("@pcs.hasPermissions('position/findAll')")
+    public Object findAll(Map<String,Object> paramMap) throws Exception {
+        return succeed(positionService.findAll(paramMap));
+    }
+}