合并development代码到master #1
|
@ -1,45 +0,0 @@
|
||||||
package com.dite.znpt.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModel;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author wangna
|
|
||||||
* @date 2025/08/05
|
|
||||||
* @Description: 项目人员查询请求VO
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@ApiModel(value="ProjectMemberListReq对象", description="项目人员查询请求")
|
|
||||||
public class ProjectMemberListReq {
|
|
||||||
|
|
||||||
@ApiModelProperty("项目ID")
|
|
||||||
private String projectId;
|
|
||||||
|
|
||||||
@ApiModelProperty("机组ID")
|
|
||||||
private String turbineId;
|
|
||||||
|
|
||||||
@ApiModelProperty("任务组ID")
|
|
||||||
private String taskGroupId;
|
|
||||||
|
|
||||||
@ApiModelProperty("任务ID")
|
|
||||||
private String taskId;
|
|
||||||
|
|
||||||
@ApiModelProperty("用户ID")
|
|
||||||
private String userId;
|
|
||||||
|
|
||||||
@ApiModelProperty("角色类型")
|
|
||||||
private String roleType;
|
|
||||||
|
|
||||||
@ApiModelProperty("岗位代码")
|
|
||||||
private String jobCode;
|
|
||||||
|
|
||||||
@ApiModelProperty("状态")
|
|
||||||
private String status;
|
|
||||||
|
|
||||||
@ApiModelProperty("用户姓名(模糊查询)")
|
|
||||||
private String userName;
|
|
||||||
|
|
||||||
@ApiModelProperty("用户账号(模糊查询)")
|
|
||||||
private String userAccount;
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
package com.dite.znpt.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModel;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author wangna
|
|
||||||
* @date 2025/08/05
|
|
||||||
* @Description: 项目人员请求VO
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@ApiModel(value="ProjectMemberReq对象", description="项目人员请求")
|
|
||||||
public class ProjectMemberReq {
|
|
||||||
|
|
||||||
@ApiModelProperty("关联ID(更新时必填)")
|
|
||||||
private String memberId;
|
|
||||||
|
|
||||||
@NotBlank(message = "项目ID不能为空")
|
|
||||||
@ApiModelProperty("项目ID")
|
|
||||||
private String projectId;
|
|
||||||
|
|
||||||
@ApiModelProperty("机组ID(可选)")
|
|
||||||
private String turbineId;
|
|
||||||
|
|
||||||
@ApiModelProperty("任务组ID(可选)")
|
|
||||||
private String taskGroupId;
|
|
||||||
|
|
||||||
@ApiModelProperty("任务ID(可选)")
|
|
||||||
private String taskId;
|
|
||||||
|
|
||||||
@NotBlank(message = "用户ID不能为空")
|
|
||||||
@ApiModelProperty("用户ID")
|
|
||||||
private String userId;
|
|
||||||
|
|
||||||
@NotBlank(message = "角色类型不能为空")
|
|
||||||
@ApiModelProperty("角色类型")
|
|
||||||
private String roleType;
|
|
||||||
|
|
||||||
@ApiModelProperty("岗位代码")
|
|
||||||
private String jobCode;
|
|
||||||
|
|
||||||
@ApiModelProperty("岗位描述")
|
|
||||||
private String jobDesc;
|
|
||||||
|
|
||||||
@NotNull(message = "加入时间不能为空")
|
|
||||||
@ApiModelProperty("加入时间")
|
|
||||||
private LocalDate joinDate;
|
|
||||||
|
|
||||||
@ApiModelProperty("离开时间")
|
|
||||||
private LocalDate leaveDate;
|
|
||||||
|
|
||||||
@ApiModelProperty("状态")
|
|
||||||
private String status;
|
|
||||||
|
|
||||||
@ApiModelProperty("备注")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
|
@ -2,7 +2,6 @@ package com.dite.znpt.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.dite.znpt.domain.entity.ProjectMemberEntity;
|
import com.dite.znpt.domain.entity.ProjectMemberEntity;
|
||||||
import com.dite.znpt.domain.vo.ProjectMemberListReq;
|
|
||||||
import com.dite.znpt.domain.vo.ProjectMemberResp;
|
import com.dite.znpt.domain.vo.ProjectMemberResp;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
@ -17,38 +16,8 @@ import java.util.List;
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface ProjectMemberMapper extends BaseMapper<ProjectMemberEntity> {
|
public interface ProjectMemberMapper extends BaseMapper<ProjectMemberEntity> {
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据条件查询项目人员列表
|
|
||||||
*/
|
|
||||||
List<ProjectMemberResp> queryBySelective(ProjectMemberListReq req);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据项目ID查询项目人员列表
|
* 根据项目ID查询项目人员列表
|
||||||
*/
|
*/
|
||||||
List<ProjectMemberResp> queryByProjectId(@Param("projectId") String projectId);
|
List<ProjectMemberResp> queryByProjectId(@Param("projectId") String projectId);
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据机组ID查询机组人员列表
|
|
||||||
*/
|
|
||||||
List<ProjectMemberResp> queryByTurbineId(@Param("turbineId") String turbineId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据任务组ID查询任务组人员列表
|
|
||||||
*/
|
|
||||||
List<ProjectMemberResp> queryByTaskGroupId(@Param("taskGroupId") String taskGroupId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据任务ID查询任务人员列表
|
|
||||||
*/
|
|
||||||
List<ProjectMemberResp> queryByTaskId(@Param("taskId") String taskId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据用户ID查询用户参与的项目列表
|
|
||||||
*/
|
|
||||||
List<ProjectMemberResp> queryByUserId(@Param("userId") String userId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据项目ID和角色类型查询人员列表
|
|
||||||
*/
|
|
||||||
List<ProjectMemberResp> queryByProjectIdAndRoleType(@Param("projectId") String projectId, @Param("roleType") String roleType);
|
|
||||||
}
|
}
|
|
@ -14,80 +14,10 @@ import java.util.List;
|
||||||
public interface ProjectMemberService extends IService<ProjectMemberEntity> {
|
public interface ProjectMemberService extends IService<ProjectMemberEntity> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询项目人员列表
|
* 根据项目ID查询项目人员列表(看板功能需要)
|
||||||
*/
|
|
||||||
List<ProjectMemberResp> selectList(ProjectMemberListReq req);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据项目ID查询项目人员列表
|
|
||||||
*/
|
*/
|
||||||
List<ProjectMemberResp> selectByProjectId(String projectId);
|
List<ProjectMemberResp> selectByProjectId(String projectId);
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据机组ID查询机组人员列表
|
|
||||||
*/
|
|
||||||
List<ProjectMemberResp> selectByTurbineId(String turbineId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据任务组ID查询任务组人员列表
|
|
||||||
*/
|
|
||||||
List<ProjectMemberResp> selectByTaskGroupId(String taskGroupId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据任务ID查询任务人员列表
|
|
||||||
*/
|
|
||||||
List<ProjectMemberResp> selectByTaskId(String taskId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据用户ID查询用户参与的项目列表
|
|
||||||
*/
|
|
||||||
List<ProjectMemberResp> selectByUserId(String userId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据项目ID和角色类型查询人员列表
|
|
||||||
*/
|
|
||||||
List<ProjectMemberResp> selectByProjectIdAndRoleType(String projectId, String roleType);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增项目人员
|
|
||||||
*/
|
|
||||||
void saveData(ProjectMemberReq req);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新项目人员
|
|
||||||
*/
|
|
||||||
void updateData(ProjectMemberReq req);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除项目人员
|
|
||||||
*/
|
|
||||||
void deleteById(String memberId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量添加项目人员
|
|
||||||
*/
|
|
||||||
void batchAddMembers(List<ProjectMemberReq> reqList);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据项目ID删除所有项目人员
|
|
||||||
*/
|
|
||||||
void deleteByProjectId(String projectId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据机组ID删除所有机组人员
|
|
||||||
*/
|
|
||||||
void deleteByTurbineId(String turbineId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据任务组ID删除所有任务组人员
|
|
||||||
*/
|
|
||||||
void deleteByTaskGroupId(String taskGroupId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据任务ID删除所有任务人员
|
|
||||||
*/
|
|
||||||
void deleteByTaskId(String taskId);
|
|
||||||
|
|
||||||
// ========================== 项目看板相关方法 ==========================
|
// ========================== 项目看板相关方法 ==========================
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -6,18 +6,17 @@ import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.dite.znpt.constant.Message;
|
import com.dite.znpt.constant.Message;
|
||||||
import com.dite.znpt.domain.entity.*;
|
import com.dite.znpt.domain.entity.*;
|
||||||
import com.dite.znpt.domain.vo.*;
|
import com.dite.znpt.domain.vo.ProjectDetailResp;
|
||||||
import com.dite.znpt.enums.ProjectJobCodeEnum;
|
import com.dite.znpt.domain.vo.ProjectKanbanDataResp;
|
||||||
import com.dite.znpt.enums.ProjectRoleTypeEnum;
|
import com.dite.znpt.domain.vo.ProjectKanbanStatsResp;
|
||||||
|
import com.dite.znpt.domain.vo.ProjectMemberResp;
|
||||||
import com.dite.znpt.enums.ProjectStatusEnum;
|
import com.dite.znpt.enums.ProjectStatusEnum;
|
||||||
import com.dite.znpt.enums.ProjectTaskStateEnum;
|
import com.dite.znpt.enums.ProjectTaskStateEnum;
|
||||||
import com.dite.znpt.exception.ServiceException;
|
import com.dite.znpt.exception.ServiceException;
|
||||||
import com.dite.znpt.mapper.ProjectMemberMapper;
|
import com.dite.znpt.mapper.ProjectMemberMapper;
|
||||||
import com.dite.znpt.service.*;
|
import com.dite.znpt.service.*;
|
||||||
import com.dite.znpt.util.PageUtil;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -43,14 +42,6 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
|
||||||
private final ProjectBudgetInfoService projectBudgetInfoService;
|
private final ProjectBudgetInfoService projectBudgetInfoService;
|
||||||
private final ProjectDailyReportService projectDailyReportService;
|
private final ProjectDailyReportService projectDailyReportService;
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ProjectMemberResp> selectList(ProjectMemberListReq req) {
|
|
||||||
PageUtil.startPage();
|
|
||||||
List<ProjectMemberResp> list = this.baseMapper.queryBySelective(req);
|
|
||||||
enrichMemberInfo(list);
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ProjectMemberResp> selectByProjectId(String projectId) {
|
public List<ProjectMemberResp> selectByProjectId(String projectId) {
|
||||||
List<ProjectMemberResp> list = this.baseMapper.queryByProjectId(projectId);
|
List<ProjectMemberResp> list = this.baseMapper.queryByProjectId(projectId);
|
||||||
|
@ -58,139 +49,8 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ProjectMemberResp> selectByTurbineId(String turbineId) {
|
|
||||||
List<ProjectMemberResp> list = this.baseMapper.queryByTurbineId(turbineId);
|
|
||||||
enrichMemberInfo(list);
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ProjectMemberResp> selectByTaskGroupId(String taskGroupId) {
|
|
||||||
List<ProjectMemberResp> list = this.baseMapper.queryByTaskGroupId(taskGroupId);
|
|
||||||
enrichMemberInfo(list);
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ProjectMemberResp> selectByTaskId(String taskId) {
|
|
||||||
List<ProjectMemberResp> list = this.baseMapper.queryByTaskId(taskId);
|
|
||||||
enrichMemberInfo(list);
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ProjectMemberResp> selectByUserId(String userId) {
|
|
||||||
List<ProjectMemberResp> list = this.baseMapper.queryByUserId(userId);
|
|
||||||
enrichMemberInfo(list);
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ProjectMemberResp> selectByProjectIdAndRoleType(String projectId, String roleType) {
|
|
||||||
List<ProjectMemberResp> list = this.baseMapper.queryByProjectIdAndRoleType(projectId, roleType);
|
|
||||||
enrichMemberInfo(list);
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void saveData(ProjectMemberReq req) {
|
|
||||||
// 验证用户是否存在
|
|
||||||
UserEntity user = userService.getById(req.getUserId());
|
|
||||||
if (user == null) {
|
|
||||||
throw new ServiceException(Message.USER_ID_NOT_EXIST_OR_ILLEGAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查是否已存在相同的关联
|
|
||||||
boolean exists = lambdaQuery()
|
|
||||||
.eq(ProjectMemberEntity::getProjectId, req.getProjectId())
|
|
||||||
.eq(ProjectMemberEntity::getUserId, req.getUserId())
|
|
||||||
.eq(StrUtil.isNotEmpty(req.getTurbineId()), ProjectMemberEntity::getTurbineId, req.getTurbineId())
|
|
||||||
.eq(StrUtil.isNotEmpty(req.getTaskGroupId()), ProjectMemberEntity::getTaskGroupId, req.getTaskGroupId())
|
|
||||||
.eq(StrUtil.isNotEmpty(req.getTaskId()), ProjectMemberEntity::getTaskId, req.getTaskId())
|
|
||||||
.eq(ProjectMemberEntity::getRoleType, req.getRoleType())
|
|
||||||
.exists();
|
|
||||||
|
|
||||||
if (exists) {
|
|
||||||
throw new ServiceException("该用户在此项目中已存在相同角色");
|
|
||||||
}
|
|
||||||
|
|
||||||
ProjectMemberEntity entity = BeanUtil.copyProperties(req, ProjectMemberEntity.class);
|
|
||||||
if (StrUtil.isEmpty(entity.getStatus())) {
|
|
||||||
entity.setStatus("ACTIVE");
|
|
||||||
}
|
|
||||||
save(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void updateData(ProjectMemberReq req) {
|
|
||||||
if (StrUtil.isEmpty(req.getMemberId())) {
|
|
||||||
throw new ServiceException("关联ID不能为空");
|
|
||||||
}
|
|
||||||
|
|
||||||
ProjectMemberEntity entity = getById(req.getMemberId());
|
|
||||||
if (entity == null) {
|
|
||||||
throw new ServiceException(Message.PROJECT_ID_IS_NOT_EXIST);
|
|
||||||
}
|
|
||||||
|
|
||||||
BeanUtil.copyProperties(req, entity);
|
|
||||||
updateById(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void deleteById(String memberId) {
|
|
||||||
removeById(memberId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void batchAddMembers(List<ProjectMemberReq> reqList) {
|
|
||||||
if (CollUtil.isEmpty(reqList)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (ProjectMemberReq req : reqList) {
|
|
||||||
saveData(req);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void deleteByProjectId(String projectId) {
|
|
||||||
lambdaUpdate()
|
|
||||||
.eq(ProjectMemberEntity::getProjectId, projectId)
|
|
||||||
.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void deleteByTurbineId(String turbineId) {
|
|
||||||
lambdaUpdate()
|
|
||||||
.eq(ProjectMemberEntity::getTurbineId, turbineId)
|
|
||||||
.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void deleteByTaskGroupId(String taskGroupId) {
|
|
||||||
lambdaUpdate()
|
|
||||||
.eq(ProjectMemberEntity::getTaskGroupId, taskGroupId)
|
|
||||||
.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void deleteByTaskId(String taskId) {
|
|
||||||
lambdaUpdate()
|
|
||||||
.eq(ProjectMemberEntity::getTaskId, taskId)
|
|
||||||
.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 丰富成员信息(用户信息、角色描述、岗位描述)
|
* 丰富成员信息
|
||||||
*/
|
*/
|
||||||
private void enrichMemberInfo(List<ProjectMemberResp> list) {
|
private void enrichMemberInfo(List<ProjectMemberResp> list) {
|
||||||
if (CollUtil.isEmpty(list)) {
|
if (CollUtil.isEmpty(list)) {
|
||||||
|
@ -200,31 +60,26 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
|
||||||
// 获取所有用户ID
|
// 获取所有用户ID
|
||||||
List<String> userIds = list.stream()
|
List<String> userIds = list.stream()
|
||||||
.map(ProjectMemberResp::getUserId)
|
.map(ProjectMemberResp::getUserId)
|
||||||
|
.filter(StrUtil::isNotBlank)
|
||||||
.distinct()
|
.distinct()
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
// 查询用户信息
|
if (CollUtil.isEmpty(userIds)) {
|
||||||
Map<String, UserEntity> userMap = userService.listByIds(userIds)
|
return;
|
||||||
.stream()
|
}
|
||||||
|
|
||||||
|
// 批量查询用户信息
|
||||||
|
List<UserEntity> users = userService.listByIds(userIds);
|
||||||
|
Map<String, UserEntity> userMap = users.stream()
|
||||||
.collect(Collectors.toMap(UserEntity::getUserId, Function.identity()));
|
.collect(Collectors.toMap(UserEntity::getUserId, Function.identity()));
|
||||||
|
|
||||||
// 填充用户信息和描述
|
// 填充用户信息
|
||||||
list.forEach(member -> {
|
list.forEach(member -> {
|
||||||
// 填充用户信息
|
|
||||||
UserEntity user = userMap.get(member.getUserId());
|
UserEntity user = userMap.get(member.getUserId());
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
member.setUserName(user.getName());
|
member.setUserName(user.getName());
|
||||||
member.setUserAccount(user.getAccount());
|
|
||||||
member.setUserAvatar(user.getAvatar());
|
member.setUserAvatar(user.getAvatar());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 填充角色类型描述
|
|
||||||
member.setRoleTypeDesc(ProjectRoleTypeEnum.getDescByCode(member.getRoleType()));
|
|
||||||
|
|
||||||
// 填充岗位代码描述
|
|
||||||
if (StrUtil.isNotEmpty(member.getJobCode())) {
|
|
||||||
member.setJobCodeDesc(ProjectJobCodeEnum.getDescByCode(member.getJobCode()));
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,72 +28,6 @@
|
||||||
<result column="remark" property="remark" jdbcType="VARCHAR"/>
|
<result column="remark" property="remark" jdbcType="VARCHAR"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<!-- 根据条件查询项目人员列表 -->
|
|
||||||
<select id="queryBySelective" resultMap="BaseResultMap">
|
|
||||||
SELECT
|
|
||||||
pm.member_id,
|
|
||||||
pm.project_id,
|
|
||||||
p.project_name,
|
|
||||||
pm.turbine_id,
|
|
||||||
t.turbine_name,
|
|
||||||
pm.task_group_id,
|
|
||||||
ptg.group_name as task_group_name,
|
|
||||||
pm.task_id,
|
|
||||||
pt.task_name,
|
|
||||||
pm.user_id,
|
|
||||||
u.name as user_name,
|
|
||||||
u.account as user_account,
|
|
||||||
u.avatar as user_avatar,
|
|
||||||
pm.role_type,
|
|
||||||
pm.role_type as role_type_desc,
|
|
||||||
pm.job_code,
|
|
||||||
pm.job_code as job_code_desc,
|
|
||||||
pm.job_desc,
|
|
||||||
pm.join_date,
|
|
||||||
pm.leave_date,
|
|
||||||
pm.status,
|
|
||||||
pm.remark
|
|
||||||
FROM project_member pm
|
|
||||||
LEFT JOIN project p ON pm.project_id COLLATE utf8mb4_general_ci = p.project_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN turbine t ON pm.turbine_id COLLATE utf8mb4_general_ci = t.turbine_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN project_task_group ptg ON pm.task_group_id COLLATE utf8mb4_general_ci = ptg.group_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN project_task pt ON pm.task_id COLLATE utf8mb4_general_ci = pt.task_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN user u ON pm.user_id COLLATE utf8mb4_general_ci = u.user_id COLLATE utf8mb4_general_ci
|
|
||||||
<where>
|
|
||||||
<if test="projectId != null and projectId != ''">
|
|
||||||
AND pm.project_id = #{projectId}
|
|
||||||
</if>
|
|
||||||
<if test="turbineId != null and turbineId != ''">
|
|
||||||
AND pm.turbine_id = #{turbineId}
|
|
||||||
</if>
|
|
||||||
<if test="taskGroupId != null and taskGroupId != ''">
|
|
||||||
AND pm.task_group_id = #{taskGroupId}
|
|
||||||
</if>
|
|
||||||
<if test="taskId != null and taskId != ''">
|
|
||||||
AND pm.task_id = #{taskId}
|
|
||||||
</if>
|
|
||||||
<if test="userId != null and userId != ''">
|
|
||||||
AND pm.user_id = #{userId}
|
|
||||||
</if>
|
|
||||||
<if test="roleType != null and roleType != ''">
|
|
||||||
AND pm.role_type = #{roleType}
|
|
||||||
</if>
|
|
||||||
<if test="jobCode != null and jobCode != ''">
|
|
||||||
AND pm.job_code = #{jobCode}
|
|
||||||
</if>
|
|
||||||
<if test="status != null and status != ''">
|
|
||||||
AND pm.status = #{status}
|
|
||||||
</if>
|
|
||||||
<if test="userName != null and userName != ''">
|
|
||||||
AND u.name LIKE CONCAT('%', #{userName}, '%')
|
|
||||||
</if>
|
|
||||||
<if test="userAccount != null and userAccount != ''">
|
|
||||||
AND u.account LIKE CONCAT('%', #{userAccount}, '%')
|
|
||||||
</if>
|
|
||||||
</where>
|
|
||||||
ORDER BY pm.create_time DESC
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<!-- 根据项目ID查询项目人员列表 -->
|
<!-- 根据项目ID查询项目人员列表 -->
|
||||||
<select id="queryByProjectId" resultMap="BaseResultMap">
|
<select id="queryByProjectId" resultMap="BaseResultMap">
|
||||||
SELECT
|
SELECT
|
||||||
|
@ -130,185 +64,4 @@
|
||||||
ORDER BY pm.create_time DESC
|
ORDER BY pm.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据机组ID查询机组人员列表 -->
|
|
||||||
<select id="queryByTurbineId" resultMap="BaseResultMap">
|
|
||||||
SELECT
|
|
||||||
pm.member_id,
|
|
||||||
pm.project_id,
|
|
||||||
p.project_name,
|
|
||||||
pm.turbine_id,
|
|
||||||
t.turbine_name,
|
|
||||||
pm.task_group_id,
|
|
||||||
ptg.group_name as task_group_name,
|
|
||||||
pm.task_id,
|
|
||||||
pt.task_name,
|
|
||||||
pm.user_id,
|
|
||||||
u.name as user_name,
|
|
||||||
u.account as user_account,
|
|
||||||
u.avatar as user_avatar,
|
|
||||||
pm.role_type,
|
|
||||||
pm.role_type as role_type_desc,
|
|
||||||
pm.job_code,
|
|
||||||
pm.job_code as job_code_desc,
|
|
||||||
pm.job_desc,
|
|
||||||
pm.join_date,
|
|
||||||
pm.leave_date,
|
|
||||||
pm.status,
|
|
||||||
pm.remark
|
|
||||||
FROM project_member pm
|
|
||||||
LEFT JOIN project p ON pm.project_id COLLATE utf8mb4_general_ci = p.project_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN turbine t ON pm.turbine_id COLLATE utf8mb4_general_ci = t.turbine_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN project_task_group ptg ON pm.task_group_id COLLATE utf8mb4_general_ci = ptg.group_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN project_task pt ON pm.task_id COLLATE utf8mb4_general_ci = pt.task_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN user u ON pm.user_id COLLATE utf8mb4_general_ci = u.user_id COLLATE utf8mb4_general_ci
|
|
||||||
WHERE pm.turbine_id = #{turbineId}
|
|
||||||
AND pm.status = 'ACTIVE'
|
|
||||||
ORDER BY pm.create_time DESC
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<!-- 根据任务组ID查询任务组人员列表 -->
|
|
||||||
<select id="queryByTaskGroupId" resultMap="BaseResultMap">
|
|
||||||
SELECT
|
|
||||||
pm.member_id,
|
|
||||||
pm.project_id,
|
|
||||||
p.project_name,
|
|
||||||
pm.turbine_id,
|
|
||||||
t.turbine_name,
|
|
||||||
pm.task_group_id,
|
|
||||||
ptg.group_name as task_group_name,
|
|
||||||
pm.task_id,
|
|
||||||
pt.task_name,
|
|
||||||
pm.user_id,
|
|
||||||
u.name as user_name,
|
|
||||||
u.account as user_account,
|
|
||||||
u.avatar as user_avatar,
|
|
||||||
pm.role_type,
|
|
||||||
pm.role_type as role_type_desc,
|
|
||||||
pm.job_code,
|
|
||||||
pm.job_code as job_code_desc,
|
|
||||||
pm.job_desc,
|
|
||||||
pm.join_date,
|
|
||||||
pm.leave_date,
|
|
||||||
pm.status,
|
|
||||||
pm.remark
|
|
||||||
FROM project_member pm
|
|
||||||
LEFT JOIN project p ON pm.project_id COLLATE utf8mb4_general_ci = p.project_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN turbine t ON pm.turbine_id COLLATE utf8mb4_general_ci = t.turbine_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN project_task_group ptg ON pm.task_group_id COLLATE utf8mb4_general_ci = ptg.group_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN project_task pt ON pm.task_id COLLATE utf8mb4_general_ci = pt.task_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN user u ON pm.user_id COLLATE utf8mb4_general_ci = u.user_id COLLATE utf8mb4_general_ci
|
|
||||||
WHERE pm.task_group_id = #{taskGroupId}
|
|
||||||
AND pm.status = 'ACTIVE'
|
|
||||||
ORDER BY pm.create_time DESC
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<!-- 根据任务ID查询任务人员列表 -->
|
|
||||||
<select id="queryByTaskId" resultMap="BaseResultMap">
|
|
||||||
SELECT
|
|
||||||
pm.member_id,
|
|
||||||
pm.project_id,
|
|
||||||
p.project_name,
|
|
||||||
pm.turbine_id,
|
|
||||||
t.turbine_name,
|
|
||||||
pm.task_group_id,
|
|
||||||
ptg.group_name as task_group_name,
|
|
||||||
pm.task_id,
|
|
||||||
pt.task_name,
|
|
||||||
pm.user_id,
|
|
||||||
u.name as user_name,
|
|
||||||
u.account as user_account,
|
|
||||||
u.avatar as user_avatar,
|
|
||||||
pm.role_type,
|
|
||||||
pm.role_type as role_type_desc,
|
|
||||||
pm.job_code,
|
|
||||||
pm.job_code as job_code_desc,
|
|
||||||
pm.job_desc,
|
|
||||||
pm.join_date,
|
|
||||||
pm.leave_date,
|
|
||||||
pm.status,
|
|
||||||
pm.remark
|
|
||||||
FROM project_member pm
|
|
||||||
LEFT JOIN project p ON pm.project_id COLLATE utf8mb4_general_ci = p.project_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN turbine t ON pm.turbine_id COLLATE utf8mb4_general_ci = t.turbine_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN project_task_group ptg ON pm.task_group_id COLLATE utf8mb4_general_ci = ptg.group_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN project_task pt ON pm.task_id COLLATE utf8mb4_general_ci = pt.task_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN user u ON pm.user_id COLLATE utf8mb4_general_ci = u.user_id COLLATE utf8mb4_general_ci
|
|
||||||
WHERE pm.task_id = #{taskId}
|
|
||||||
AND pm.status = 'ACTIVE'
|
|
||||||
ORDER BY pm.create_time DESC
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<!-- 根据用户ID查询用户参与的项目列表 -->
|
|
||||||
<select id="queryByUserId" resultMap="BaseResultMap">
|
|
||||||
SELECT
|
|
||||||
pm.member_id,
|
|
||||||
pm.project_id,
|
|
||||||
p.project_name,
|
|
||||||
pm.turbine_id,
|
|
||||||
t.turbine_name,
|
|
||||||
pm.task_group_id,
|
|
||||||
ptg.group_name as task_group_name,
|
|
||||||
pm.task_id,
|
|
||||||
pt.task_name,
|
|
||||||
pm.user_id,
|
|
||||||
u.name as user_name,
|
|
||||||
u.account as user_account,
|
|
||||||
u.avatar as user_avatar,
|
|
||||||
pm.role_type,
|
|
||||||
pm.role_type as role_type_desc,
|
|
||||||
pm.job_code,
|
|
||||||
pm.job_code as job_code_desc,
|
|
||||||
pm.job_desc,
|
|
||||||
pm.join_date,
|
|
||||||
pm.leave_date,
|
|
||||||
pm.status,
|
|
||||||
pm.remark
|
|
||||||
FROM project_member pm
|
|
||||||
LEFT JOIN project p ON pm.project_id COLLATE utf8mb4_general_ci = p.project_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN turbine t ON pm.turbine_id COLLATE utf8mb4_general_ci = t.turbine_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN project_task_group ptg ON pm.task_group_id COLLATE utf8mb4_general_ci = ptg.group_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN project_task pt ON pm.task_id COLLATE utf8mb4_general_ci = pt.task_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN user u ON pm.user_id COLLATE utf8mb4_general_ci = u.user_id COLLATE utf8mb4_general_ci
|
|
||||||
WHERE pm.user_id = #{userId}
|
|
||||||
AND pm.status = 'ACTIVE'
|
|
||||||
ORDER BY pm.create_time DESC
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<!-- 根据项目ID和角色类型查询人员列表 -->
|
|
||||||
<select id="queryByProjectIdAndRoleType" resultMap="BaseResultMap">
|
|
||||||
SELECT
|
|
||||||
pm.member_id,
|
|
||||||
pm.project_id,
|
|
||||||
p.project_name,
|
|
||||||
pm.turbine_id,
|
|
||||||
t.turbine_name,
|
|
||||||
pm.task_group_id,
|
|
||||||
ptg.group_name as task_group_name,
|
|
||||||
pm.task_id,
|
|
||||||
pt.task_name,
|
|
||||||
pm.user_id,
|
|
||||||
u.name as user_name,
|
|
||||||
u.account as user_account,
|
|
||||||
u.avatar as user_avatar,
|
|
||||||
pm.role_type,
|
|
||||||
pm.role_type as role_type_desc,
|
|
||||||
pm.job_code,
|
|
||||||
pm.job_code as job_code_desc,
|
|
||||||
pm.job_desc,
|
|
||||||
pm.join_date,
|
|
||||||
pm.leave_date,
|
|
||||||
pm.status,
|
|
||||||
pm.remark
|
|
||||||
FROM project_member pm
|
|
||||||
LEFT JOIN project p ON pm.project_id COLLATE utf8mb4_general_ci = p.project_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN turbine t ON pm.turbine_id COLLATE utf8mb4_general_ci = t.turbine_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN project_task_group ptg ON pm.task_group_id COLLATE utf8mb4_general_ci = ptg.group_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN project_task pt ON pm.task_id COLLATE utf8mb4_general_ci = pt.task_id COLLATE utf8mb4_general_ci
|
|
||||||
LEFT JOIN user u ON pm.user_id COLLATE utf8mb4_general_ci = u.user_id COLLATE utf8mb4_general_ci
|
|
||||||
WHERE pm.project_id = #{projectId}
|
|
||||||
AND pm.role_type = #{roleType}
|
|
||||||
AND pm.status = 'ACTIVE'
|
|
||||||
ORDER BY pm.create_time DESC
|
|
||||||
</select>
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
|
@ -1,18 +1,16 @@
|
||||||
package com.dite.znpt.web.controller;
|
package com.dite.znpt.web.controller;
|
||||||
|
|
||||||
import com.dite.znpt.domain.PageResult;
|
|
||||||
import com.dite.znpt.domain.Result;
|
import com.dite.znpt.domain.Result;
|
||||||
import com.dite.znpt.domain.vo.*;
|
import com.dite.znpt.domain.Result;
|
||||||
|
import com.dite.znpt.domain.vo.ProjectKanbanStatsResp;
|
||||||
|
import com.dite.znpt.domain.vo.ProjectKanbanDataResp;
|
||||||
|
import com.dite.znpt.domain.vo.ProjectDetailResp;
|
||||||
import com.dite.znpt.service.ProjectMemberService;
|
import com.dite.znpt.service.ProjectMemberService;
|
||||||
import com.dite.znpt.util.PageUtil;
|
|
||||||
import com.dite.znpt.util.ValidationGroup;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author wangna
|
* @author wangna
|
||||||
|
@ -28,105 +26,6 @@ public class ProjectMemberController {
|
||||||
@Resource
|
@Resource
|
||||||
private ProjectMemberService projectMemberService;
|
private ProjectMemberService projectMemberService;
|
||||||
|
|
||||||
@ApiOperation(value = "查询项目人员列表", httpMethod = "GET")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public PageResult<ProjectMemberResp> list(ProjectMemberListReq req) {
|
|
||||||
PageUtil.startPage();
|
|
||||||
return PageResult.ok(projectMemberService.selectList(req));
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "根据项目ID查询项目人员", httpMethod = "GET")
|
|
||||||
@GetMapping("/project/{projectId}")
|
|
||||||
public Result<List<ProjectMemberResp>> getByProjectId(@PathVariable String projectId) {
|
|
||||||
return Result.ok(projectMemberService.selectByProjectId(projectId));
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "根据机组ID查询机组人员", httpMethod = "GET")
|
|
||||||
@GetMapping("/turbine/{turbineId}")
|
|
||||||
public Result<List<ProjectMemberResp>> getByTurbineId(@PathVariable String turbineId) {
|
|
||||||
return Result.ok(projectMemberService.selectByTurbineId(turbineId));
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "根据任务组ID查询任务组人员", httpMethod = "GET")
|
|
||||||
@GetMapping("/task-group/{taskGroupId}")
|
|
||||||
public Result<List<ProjectMemberResp>> getByTaskGroupId(@PathVariable String taskGroupId) {
|
|
||||||
return Result.ok(projectMemberService.selectByTaskGroupId(taskGroupId));
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "根据任务ID查询任务人员", httpMethod = "GET")
|
|
||||||
@GetMapping("/task/{taskId}")
|
|
||||||
public Result<List<ProjectMemberResp>> getByTaskId(@PathVariable String taskId) {
|
|
||||||
return Result.ok(projectMemberService.selectByTaskId(taskId));
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "根据用户ID查询用户参与的项目", httpMethod = "GET")
|
|
||||||
@GetMapping("/user/{userId}")
|
|
||||||
public Result<List<ProjectMemberResp>> getByUserId(@PathVariable String userId) {
|
|
||||||
return Result.ok(projectMemberService.selectByUserId(userId));
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "根据项目ID和角色类型查询人员", httpMethod = "GET")
|
|
||||||
@GetMapping("/project/{projectId}/role/{roleType}")
|
|
||||||
public Result<List<ProjectMemberResp>> getByProjectIdAndRoleType(@PathVariable String projectId, @PathVariable String roleType) {
|
|
||||||
return Result.ok(projectMemberService.selectByProjectIdAndRoleType(projectId, roleType));
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "新增项目人员", httpMethod = "POST")
|
|
||||||
@PostMapping
|
|
||||||
public Result<?> add(@Validated(ValidationGroup.Insert.class) @RequestBody ProjectMemberReq req) {
|
|
||||||
projectMemberService.saveData(req);
|
|
||||||
return Result.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "修改项目人员", httpMethod = "PUT")
|
|
||||||
@PutMapping
|
|
||||||
public Result<?> edit(@Validated(ValidationGroup.Update.class) @RequestBody ProjectMemberReq req) {
|
|
||||||
projectMemberService.updateData(req);
|
|
||||||
return Result.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "删除项目人员", httpMethod = "DELETE")
|
|
||||||
@DeleteMapping("/{memberId}")
|
|
||||||
public Result<?> remove(@PathVariable String memberId) {
|
|
||||||
projectMemberService.deleteById(memberId);
|
|
||||||
return Result.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "批量添加项目人员", httpMethod = "POST")
|
|
||||||
@PostMapping("/batch")
|
|
||||||
public Result<?> batchAdd(@RequestBody List<ProjectMemberReq> reqList) {
|
|
||||||
projectMemberService.batchAddMembers(reqList);
|
|
||||||
return Result.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "根据项目ID删除所有项目人员", httpMethod = "DELETE")
|
|
||||||
@DeleteMapping("/project/{projectId}")
|
|
||||||
public Result<?> removeByProjectId(@PathVariable String projectId) {
|
|
||||||
projectMemberService.deleteByProjectId(projectId);
|
|
||||||
return Result.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "根据机组ID删除所有机组人员", httpMethod = "DELETE")
|
|
||||||
@DeleteMapping("/turbine/{turbineId}")
|
|
||||||
public Result<?> removeByTurbineId(@PathVariable String turbineId) {
|
|
||||||
projectMemberService.deleteByTurbineId(turbineId);
|
|
||||||
return Result.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "根据任务组ID删除所有任务组人员", httpMethod = "DELETE")
|
|
||||||
@DeleteMapping("/task-group/{taskGroupId}")
|
|
||||||
public Result<?> removeByTaskGroupId(@PathVariable String taskGroupId) {
|
|
||||||
projectMemberService.deleteByTaskGroupId(taskGroupId);
|
|
||||||
return Result.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "根据任务ID删除所有任务人员", httpMethod = "DELETE")
|
|
||||||
@DeleteMapping("/task/{taskId}")
|
|
||||||
public Result<?> removeByTaskId(@PathVariable String taskId) {
|
|
||||||
projectMemberService.deleteByTaskId(taskId);
|
|
||||||
return Result.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
// ========================== 项目看板相关接口 ==========================
|
// ========================== 项目看板相关接口 ==========================
|
||||||
|
|
||||||
@ApiOperation(value = "获取项目看板统计数据", httpMethod = "GET")
|
@ApiOperation(value = "获取项目看板统计数据", httpMethod = "GET")
|
||||||
|
|
Loading…
Reference in New Issue