Browse Source

20220330合并

contest
zy_Java 3 years ago
parent
commit
f1282279d7
  1. 4
      pom.xml
  2. 8
      src/main/java/com/ccsens/ptccsens/api/DebugController.java
  3. 2
      src/main/java/com/ccsens/ptccsens/api/DeliverController.java
  4. 2
      src/main/java/com/ccsens/ptccsens/bean/dto/DeliverDto.java
  5. 15
      src/main/java/com/ccsens/ptccsens/service/DeliverService.java
  6. 2
      src/main/java/com/ccsens/ptccsens/service/IImportService.java
  7. 37
      src/main/java/com/ccsens/ptccsens/service/ImportService.java
  8. 441
      src/main/java/com/ccsens/ptccsens/service/TallService.java
  9. 5
      src/main/resources/mapper_dao/ProTaskDetailDao.xml
  10. 8
      src/main/resources/mapper_dao/ProTaskPluginDao.xml

4
pom.xml

@ -5,9 +5,9 @@
<groupId>com.ccsens</groupId>
<artifactId>contest</artifactId>
<artifactId>ptccsens</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>contest</name>
<name>ptccsens</name>
<description>Demo project for Spring Boot</description>
<properties>

8
src/main/java/com/ccsens/ptccsens/api/DebugController.java

@ -33,14 +33,6 @@ import java.util.List;
@RequestMapping("/debug")
@Slf4j
public class DebugController {
@Resource
private PluDeliverDao pluDeliverDao;
@Resource
private Snowflake snowflake;
@Resource
private ProTaskPluginDao proTaskPluginDao;
@Resource
private ProTaskSubDao proTaskSubDao;
@ApiOperation(value = "/测试",notes = "")
@ApiImplicitParams({

2
src/main/java/com/ccsens/ptccsens/api/DeliverController.java

@ -66,7 +66,7 @@ public class DeliverController {
@ApiOperation(value = "提交交付物信息", notes = "")
@RequestMapping(value = "/submitDeliver", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse submitDeliver(@ApiParam @Validated @RequestBody QueryDto<DeliverDto.SubmitDeliver> params) throws Exception{
log.info("查看任务下的交付物--{}",params);
log.info("提交交付物信息--{}",params);
deliverService.submitDeliver(params.getParam(), params.getUserId());
return JsonResponse.newInstance().ok();
}

2
src/main/java/com/ccsens/ptccsens/bean/dto/DeliverDto.java

@ -64,6 +64,8 @@ public class DeliverDto {
@NotNull(message = "请选择项目")
@ApiModelProperty("项目id")
private Long projectId;
@ApiModelProperty("角色id")
private Long roleId;
@NotNull(message = "请选择交付物")
@ApiModelProperty("交付物id")
private Long deliverId;

15
src/main/java/com/ccsens/ptccsens/service/DeliverService.java

@ -150,18 +150,23 @@ public class DeliverService implements IDeliverService {
}
//----------------消息------------------------
//获取任务的角色信息
Long roleId = param.getRoleId();
if(ObjectUtil.isNull(roleId)){
List<Long> roleIdList = proRoleDao.getRoleIdBySubTaskId(pluDeliver.getTaskSubId());
if(CollectionUtil.isNotEmpty(roleIdList)){
roleId = roleIdList.get(0);
}
}
//查询任务是定期还是日常
Byte taskType = proTaskDetailDao.getTaskTypeBySubTaskId(pluDeliver.getTaskSubId());
//查询当前任务的交付物插件id
Long pluginId = proTaskDetailDao.getDeliverPluginIdBySubTaskId(pluDeliver.getTaskSubId());
if(CollectionUtil.isNotEmpty(roleIdList)){
// roleIdList.forEach(roleId -> {
// //生成消息内容
RemindMessageDto remindMessageDto = new RemindMessageDto(param.getProjectId(),roleIdList.get(0),pluDeliver.getTaskSubId(),pluginId,taskType,"提交交付物");
if(ObjectUtil.isNotNull(roleId)){
//生成消息内容
RemindMessageDto remindMessageDto = new RemindMessageDto(param.getProjectId(),roleId,pluDeliver.getTaskSubId(),pluginId,taskType,"提交交付物");
//TODO 发送消息
MessageUtil.sendToUser(phoneList,null,remindMessageDto,MessageConstant.DomainType.User,null);
// });
}
}

2
src/main/java/com/ccsens/ptccsens/service/IImportService.java

@ -12,6 +12,6 @@ public interface IImportService {
* @param userId userId
* @throws Exception 异常
*/
TallProjectVo.ProjectInfo importWbs(String path, Long userId, Long projectId) throws Exception;
TallProjectVo.ProjectInfo importWbs(String path, Long userId, Long parentId) throws Exception;
}

37
src/main/java/com/ccsens/ptccsens/service/ImportService.java

@ -90,7 +90,7 @@ public class ImportService implements IImportService {
* @throws Exception 异常
*/
@Override
public TallProjectVo.ProjectInfo importWbs(String path, Long userId, Long projectId) throws Exception {
public TallProjectVo.ProjectInfo importWbs(String path, Long userId, Long parentId) throws Exception {
TallProjectVo.ProjectInfo projectInfo = new TallProjectVo.ProjectInfo();
//获取excel文件
InputStream is = new FileInputStream(path);
@ -103,7 +103,7 @@ public class ImportService implements IImportService {
Map<String, Object> taskMap = new HashMap<>();
//读取文件
readExcel(xssfWorkbook, userId, roleMap, memberMap, taskMap,projectId,projectInfo);
readExcel(xssfWorkbook, userId, roleMap, memberMap, taskMap,parentId,projectInfo);
//读取插件配置表
readPluginConfig(xssfWorkbook,taskMap);
@ -161,7 +161,7 @@ public class ImportService implements IImportService {
/**
* 读取每个sheet
*/
private void readExcel(XSSFWorkbook wb, Long userId, Map<String, Long> roleMap, Map<String, RoleDto.WbsMember> memberMap, Map<String, Object> taskMap, Long projectId, TallProjectVo.ProjectInfo projectInfo) {
private void readExcel(XSSFWorkbook wb, Long userId, Map<String, Long> roleMap, Map<String, RoleDto.WbsMember> memberMap, Map<String, Object> taskMap, Long parentId, TallProjectVo.ProjectInfo projectInfo) {
//获取wbsSheet
XSSFSheet wbsSheet = wb.getSheet(BasicsConstant.WbsExcel.WBS_SHEET);
if (ObjectUtil.isNull(wbsSheet)) {
@ -207,13 +207,19 @@ public class ImportService implements IImportService {
if(ObjectUtil.isNull(project)){
throw new BaseException(BasicsCodeError.WSB_NOT_PROJECT_HEADER);
}
//如果parentId不为空,添加层级关系
if(ObjectUtil.isNotNull(parentId)){
ProParentTask proParentTask = new ProParentTask();
proParentTask.setId(snowflake.nextId());
proParentTask.setTaskDetailId(project.getId());
proParentTask.setParentTaskDetailId(parentId);
parentTaskMapper.insertSelective(proParentTask);
}
//读取成员表
readMemberSheet(memberSheet,project,roleMap,memberMap);
//添加任务
readTask(wbsSheet,taskStart,project,roleMap,taskMap);
//获取用户列表
Set<Long> userIdSet = new HashSet<>();
userIdSet.add(userId);
//处理创建人的权限问题(添加创建人角色)
//查找创建者标签id
Long roleLabelId = labelDao.getLabelByTypeAndLevel(5, 5);
@ -232,7 +238,7 @@ public class ImportService implements IImportService {
if(member.getUserId().equals(userId)){
memberId = member.getId();
}
userIdSet.add(member.getUserId());
// userIdSet.add(member.getUserId());
}
}
}
@ -241,13 +247,12 @@ public class ImportService implements IImportService {
//添加成员至数据库
ProMember proMember = new ProMember();
proMember.setId(snowflake.nextId());
proMember.setProjectId(projectId);
proMember.setProjectId(project.getId());
proMember.setUserId(userId);
memberDao.insertSelective(proMember);
memberId = proMember.getId();
// memberId = proMember.getId();
}
//添加当前用户未创建者
//添加角色成员关联信息
//添加当前用户为创建者
ProRoleMember roleMember = new ProRoleMember();
roleMember.setId(snowflake.nextId());
roleMember.setRoleId(role.getId());
@ -321,11 +326,17 @@ public class ImportService implements IImportService {
LabelBusinessExample labelBusinessExample = new LabelBusinessExample();
labelBusinessExample.createCriteria().andBusinessIdEqualTo(projectId);
labelBusinessDao.updateByExampleSelective(labelBusiness,labelBusinessExample);
//删除项目的关联关系
ProParentTask proParentTask = new ProParentTask();
proParentTask.setRecStatus((byte) 2);
ProParentTaskExample proParentTaskExample = new ProParentTaskExample();
proParentTaskExample.createCriteria().andTaskDetailIdEqualTo(projectId);
parentTaskMapper.updateByExampleSelective(proParentTask,proParentTaskExample);
}
}
//项目名不能重复(当前用户创建的项目内名字不能重复)
//根据userId查找已创建的项目
if(0 == project.getImportType()) {
// if(0 == project.getImportType()) {
List<ProjectVo.SysProject> sysProjectList = projectDao.queryByCreator(userId);
if (CollectionUtil.isNotEmpty(sysProjectList)) {
sysProjectList.forEach(p -> {
@ -335,7 +346,7 @@ public class ImportService implements IImportService {
}
});
}
}
// }
//判断时间是否正确
String begin = ExcelUtil.getCellValue(row.getCell(3));
String end = ExcelUtil.getCellValue(row.getCell(4));

441
src/main/java/com/ccsens/ptccsens/service/TallService.java

@ -3,13 +3,13 @@ package com.ccsens.ptccsens.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.ccsens.ptccsens.bean.dto.FinanceDto;
import com.ccsens.ptccsens.bean.po.*;
import com.ccsens.ptccsens.bean.vo.ClockingInVo;
import com.ccsens.ptccsens.bean.vo.DeliverVo;
import com.ccsens.ptccsens.bean.vo.FinanceVo;
import com.ccsens.ptccsens.persist.dao.*;
@ -50,6 +50,8 @@ import java.util.stream.Collectors;
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class TallService implements ITallService {
@Resource
private Snowflake snowflake;
@Resource
private ProRoleDao proRoleDao;
@Resource
@ -108,18 +110,8 @@ public class TallService implements ITallService {
@SneakyThrows
@Override
public TallProjectVo.ProjectInfo importWbs(String token, MultipartFile params) {
//TODO 根据token获取用户信息
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
}
log.info("token获取的用户信息:{}", userByToken);
//通过手机号获取用户在服务内的userId
ProUser user = null;
if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone());
}
public TallProjectVo.ProjectInfo importWbs(String token, MultipartFile params,Long parentId) {
ProUser user = getUserByToken(token);
log.info("本服务下的用户信息:{}", user);
if(ObjectUtil.isNull(user)){
throw new BaseException(BasicsCodeError.NOT_USER_SERVER);
@ -142,15 +134,27 @@ public class TallService implements ITallService {
FileUtil.writeFromStream(params.getInputStream(), fullPath);
//导入数据库
return importService.importWbs(fullPath,user.getId(),null);
return importService.importWbs(fullPath,user.getId(),parentId);
}
private ProUser getUserByToken(String token) {
//根据token获取用户信息
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
}
log.info("token获取的用户信息:{}", userByToken);
//通过手机号获取用户在服务内的userId
ProUser user = null;
if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone());
}
return user;
}
@SneakyThrows
@Override
public TallWbsVo.WbsPath exportWbs(String token, TallProjectDto.ProjectById param) {
//TODO 验证项目id是否正确
//TODO 暂时只查询二级任务,不管二级以下的子任务
//查询下项目信息
TallWbsVo.WbsProjectInfo wbsProjectInfo = proProjectDao.getWbsProjectId(param.getProjectId());
if(ObjectUtil.isNull(wbsProjectInfo)){
@ -193,18 +197,8 @@ public class TallService implements ITallService {
@Override
public List<TallProjectVo.ProjectInfo> queryProjectByUser(String token, TallProjectDto.QueryProjectDto param) {
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){
return null;
}
//通过手机号获取用户在服务内的userId
ProUser user = null;
if(StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone());
}
//TODO 暂时查询全部,无论是否查到user
// List<TallProjectVo.ProjectInfo> projectInfos = new ArrayList<>();
//查找所有没有上级的项目,作为MWBS
List<TallProjectVo.ProjectInfo> mWbs = taskDetailDao.queryMwbs(param.getStartTime(),param.getEndTime(),null);
if(CollectionUtil.isNotEmpty(mWbs)){
@ -230,16 +224,9 @@ public class TallService implements ITallService {
@Override
public TallRoleVo.QueryRole queryShowRole(String token, TallRoleDto.QueryRoleById param) {
//TODO 通过token向tall获取用户信息,
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
}
//通过手机号获取用户在服务内的userId
ProUser user = null;
if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone());
}
ProUser user = getUserByToken(token);
log.info("本服务下的用户信息:{}", user);
//返回的对象
TallRoleVo.QueryRole queryRole = new TallRoleVo.QueryRole();
List<TallRoleVo.RoleInfo> visibleList = new ArrayList<>();
@ -249,7 +236,7 @@ public class TallService implements ITallService {
List<ProRole> userRoleList = proRoleDao.queryRoleByUserId(param.getProjectId(),user == null ? null : user.getId());
//查询用户可见的角色
List<TallRoleVo.RoleInfo> roleInfoList = new ArrayList<>();
List<TallRoleVo.RoleInfo> roleInfoList;
if(CollectionUtil.isNotEmpty(userRoleList)){
//不是关注者,查询可见的角色(完全屏蔽才不可见)
roleInfoList = proRoleDao.notAttentionQueryRole(param.getProjectId(),userRoleList);
@ -258,7 +245,7 @@ public class TallService implements ITallService {
roleInfoList = proRoleDao.attentionQueryRole(param.getProjectId());
}
//查询配置信息
List<Long> showRoleList = proRoleDao.queryShowByUserAndProject(param.getProjectId(),userByToken.getId());
List<Long> showRoleList = proRoleDao.queryShowByUserAndProject(param.getProjectId(),user == null ? null : user.getId());
if(CollectionUtil.isNotEmpty(showRoleList)){
for (Long showRoleId : showRoleList) {
//循环配置内的信息去匹配角色列表,来确定角色该放在什么地方
@ -315,18 +302,9 @@ public class TallService implements ITallService {
@Override
public List<TallTaskVo.QueryTask> queryPermanentGlobalTask(String token, TallTaskDto.QueryPermanentGlobalTask param) {
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
}
//通过手机号获取用户在服务内的userId
ProUser user = null;
if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone());
}
// if(ObjectUtil.isNull(user)){
// throw new BaseException(BasicsCodeError.NOT_USER_SERVER);
// }
ProUser user = getUserByToken(token);
log.info("本服务下的用户信息:{}", user);
List<Long> roleIds = new ArrayList<>();
roleIds.add(param.getRoleId());
@ -337,25 +315,16 @@ public class TallService implements ITallService {
//查询任务下的检查人
queryCheckerOfTask(permanentGlobalTask);
//TODO 查询插件展示信息
//查询插件展示信息
queryPluginShow(permanentGlobalTask,user == null ? null : user.getId());
return permanentGlobalTask;
}
@Override
public List<TallTaskVo.QueryTask> queryGlobalTask(String token, TallTaskDto.QueryGlobalTask param) {
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
}
//通过手机号获取用户在服务内的userId
ProUser user = null;
if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone());
}
// if(ObjectUtil.isNull(user)){
// throw new BaseException(BasicsCodeError.NOT_USER_SERVER);
// }
ProUser user = getUserByToken(token);
log.info("本服务下的用户信息:{}", user);
List<Long> roleIds = new ArrayList<>();
roleIds.add(param.getRoleId());
@ -365,20 +334,14 @@ public class TallService implements ITallService {
//查询任务下的检查人
queryCheckerOfTask(globalTask);
//TODO 查询插件展示信息
//查询插件展示信息
queryPluginShow(globalTask,user == null ? null : user.getId());
return globalTask;
}
@Override
public List<TallTaskVo.QueryTask> queryRegularTask(String token, TallTaskDto.QueryRegularTask param) {
//TODO 通过token向tall获取用户信息,
// Long userId = null;
// //查找当前角色是否有查看权限
// Boolean isLook = queryRoleIsLook(param.getRoleId(), userId);
// if (BooleanUtil.isFalse(isLook)) {
// throw new BaseException(BasicsCodeError.NOT_PERMISSION);
// }
//查找类型:0向上查找,1向下查找(默认),下查包含自己,上查不包含
//根据参数配置sql语句
String query = "";
@ -393,7 +356,6 @@ public class TallService implements ITallService {
List<Long> roleIds = new ArrayList<>();
roleIds.add(param.getRoleId());
//TODO 季度未实现
List<TallTaskVo.QueryTask> regularTask = taskDetailDao.queryRegularTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat);
//如果该时段没有任务向上或向下补充
if (CollectionUtil.isEmpty(regularTask)) {
@ -423,44 +385,45 @@ public class TallService implements ITallService {
return regularTask;
}
/**
* 判断当前用户的角色是否被设置不可见(是否有权限查看任务)
*
* @param roleId 查看的角色id
* @param userId 用户id
* @return 是否可见(true可见, false不可见)
*/
public Boolean queryRoleIsLook(Long roleId, Long userId) {
byte visitor = 0;
Long projectId = roleDao.findRoleOfProjectId(roleId);
if (ObjectUtil.isNull(projectId)) {
throw new BaseException(BasicsCodeError.ROLE_ERROR);
}
Long memberId = memberDao.findUserOfMemberId(projectId, userId);
//不是项目成员则为游客
if (ObjectUtil.isNull(memberId)) {
visitor = 1;
}
//查看角色互斥表是否有对所属角色不可见
List<Long> repulsionRoleIds = roleRepulsionDao.findRepulsionByRoleId(roleId);
//如果为游客
if (1 == visitor) {
return !CollectionUtil.isNotEmpty(repulsionRoleIds);
}
//查找成员所属的所有角色
List<Long> roleIds = roleMemberDao.findMemberOfRoleIds(memberId);
if (CollectionUtil.isEmpty(roleIds)) {
if (CollectionUtil.isNotEmpty(repulsionRoleIds)) {
return false;
}
}
//排斥角色包含所有所属角色则不可见
if (CollectionUtil.isNotEmpty(repulsionRoleIds) && CollectionUtil.isNotEmpty(roleIds)) {
boolean isLook = repulsionRoleIds.containsAll(roleIds);
return !isLook;
}
return true;
}
// /**
// * 判断当前用户的角色是否被设置不可见(是否有权限查看任务)
// *
// * @param roleId 查看的角色id
// * @param userId 用户id
// * @return 是否可见(true可见, false不可见)
// */
// public Boolean queryRoleIsLook(Long roleId, Long userId) {
// byte visitor = 0;
// Long projectId = roleDao.findRoleOfProjectId(roleId);
// if (ObjectUtil.isNull(projectId)) {
// throw new BaseException(BasicsCodeError.ROLE_ERROR);
// }
// Long memberId = memberDao.findUserOfMemberId(projectId, userId);
// //不是项目成员则为游客
// if (ObjectUtil.isNull(memberId)) {
// visitor = 1;
// }
// //查看角色互斥表是否有对所属角色不可见
// List<Long> repulsionRoleIds = roleRepulsionDao.findRepulsionByRoleId(roleId);
// //如果为游客
// if (1 == visitor) {
// return !CollectionUtil.isNotEmpty(repulsionRoleIds);
// }
// //查找成员所属的所有角色
// List<Long> roleIds = roleMemberDao.findMemberOfRoleIds(memberId);
// if (CollectionUtil.isEmpty(roleIds)) {
// if (CollectionUtil.isNotEmpty(repulsionRoleIds)) {
// return false;
// }
// }
// //排斥角色包含所有所属角色则不可见
// if (CollectionUtil.isNotEmpty(repulsionRoleIds) && CollectionUtil.isNotEmpty(roleIds)) {
// boolean isLook = repulsionRoleIds.containsAll(roleIds);
// return !isLook;
// }
// return true;
// }
/**
* 查询任务的插件相关信息
@ -560,77 +523,65 @@ public class TallService implements ITallService {
}
/**
* 查看定期任务和任务下的插件展示信息
* @param token token
* @param param 查询条件
* @return 返回任务列表和对应的插件展示信息
*/
@Override
public List<TallTaskVo.QueryTask> queryRegularTaskAndPlugin(String token, TallTaskDto.QueryRegularTask param) {
//TODO 根据token获取用户信息
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
}
//通过手机号获取用户在服务内的userId
ProUser user = null;
if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone());
}
// if(ObjectUtil.isNull(user)){
// throw new BaseException(BasicsCodeError.NOT_USER_SERVER);
// /**
// * 查看定期任务和任务下的插件展示信息
// * @param token token
// * @param param 查询条件
// * @return 返回任务列表和对应的插件展示信息
// */
// @Override
// public List<TallTaskVo.QueryTask> queryRegularTaskAndPlugin(String token, TallTaskDto.QueryRegularTask param) {
// ProUser user = getUserByToken(token);
// log.info("本服务下的用户信息:{}", user);
//
// //查找类型:0向上查找,1向下查找(默认),下查包含自己,上查不包含
// //根据参数配置sql语句
// String query = "";
// String timeFormat = Constant.timeFormat.get(param.getTimeUnit());
// String unit = Constant.timeUnit.get(param.getTimeUnit());
// if (0 == param.getQueryType()) {
// query = "interval -" + param.getQueryNum() + " " + unit;
// } else {
// query += "interval " + (param.getQueryNum() - 1) + " " + unit;
// }
//
// List<Long> roleIds = new ArrayList<>();
// roleIds.add(param.getRoleId());
//
// List<TallTaskVo.QueryTask> regularTask = taskDetailDao.queryRegularTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat);
// //如果该时段没有任务向上或向下补充
// if (CollectionUtil.isEmpty(regularTask)) {
// List<TallTaskVo.QueryTask> replenishTask = taskDetailDao.continueQueryTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat);
// Map<String, List<TallTaskVo.QueryTask>> taskMap = replenishTask.stream().collect(Collectors.groupingBy(task -> new SimpleDateFormat("yyyy-MM-dd").format(new Date(task.getPlanStart()))));
// List<String> mapOfKey = new ArrayList<>();
// taskMap.forEach((key, val) -> mapOfKey.add(key));
// if (CollectionUtil.isNotEmpty(mapOfKey)) {
// if (0 == param.getQueryType()) {
// String max = Collections.max(mapOfKey);
// queryPluginForTask(taskMap.get(max));
// return taskMap.get(max);
// } else {
// String min = Collections.min(mapOfKey);
// queryPluginForTask(taskMap.get(min));
// return taskMap.get(min);
// }
// }
// queryPluginForTask(replenishTask);
// //查询任务下的检查人
// queryCheckerOfTask(replenishTask);
// //查询插件展示信息
// queryPluginShow(regularTask,user == null ? null : user.getId());
// return replenishTask;
// }
// queryPluginForTask(regularTask);
// //查询任务下的检查人
// queryCheckerOfTask(regularTask);
//
// //查询插件展示信息
// queryPluginShow(regularTask,user == null ? null : user.getId());
//
// return null;
// }
//查找类型:0向上查找,1向下查找(默认),下查包含自己,上查不包含
//根据参数配置sql语句
String query = "";
String timeFormat = Constant.timeFormat.get(param.getTimeUnit());
String unit = Constant.timeUnit.get(param.getTimeUnit());
if (0 == param.getQueryType()) {
query = "interval -" + param.getQueryNum() + " " + unit;
} else {
query += "interval " + (param.getQueryNum() - 1) + " " + unit;
}
List<Long> roleIds = new ArrayList<>();
roleIds.add(param.getRoleId());
//TODO 季度未实现
List<TallTaskVo.QueryTask> regularTask = taskDetailDao.queryRegularTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat);
//如果该时段没有任务向上或向下补充
if (CollectionUtil.isEmpty(regularTask)) {
List<TallTaskVo.QueryTask> replenishTask = taskDetailDao.continueQueryTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat);
Map<String, List<TallTaskVo.QueryTask>> taskMap = replenishTask.stream().collect(Collectors.groupingBy(task -> new SimpleDateFormat("yyyy-MM-dd").format(new Date(task.getPlanStart()))));
List<String> mapOfKey = new ArrayList<>();
taskMap.forEach((key, val) -> mapOfKey.add(key));
if (CollectionUtil.isNotEmpty(mapOfKey)) {
if (0 == param.getQueryType()) {
String max = Collections.max(mapOfKey);
queryPluginForTask(taskMap.get(max));
return taskMap.get(max);
} else {
String min = Collections.min(mapOfKey);
queryPluginForTask(taskMap.get(min));
return taskMap.get(min);
}
}
queryPluginForTask(replenishTask);
//查询任务下的检查人
queryCheckerOfTask(replenishTask);
//TODO 查询插件展示信息
queryPluginShow(regularTask,user == null ? null : user.getId());
return replenishTask;
}
queryPluginForTask(regularTask);
//查询任务下的检查人
queryCheckerOfTask(regularTask);
//TODO 查询插件展示信息
queryPluginShow(regularTask,user == null ? null : user.getId());
return regularTask;
}
private void queryPluginShow(List<TallTaskVo.QueryTask> regularTask,Long userId) {
if(CollectionUtil.isEmpty(regularTask)){
@ -646,53 +597,27 @@ public class TallService implements ITallService {
//TODO 判断插件类型,暂时一个个的判断,之后应该是统一的接口
Long pluginId = plugin.getPluginId();
if (pluginId == 15L) {
//TODO 查找交付物的信息
//查找交付物的信息
DeliverVo.DeliverOfTask deliverByTask = pluDeliverDao.getDeliverByTask(queryTask.getId(), userId);
plugin.setData(JSON.toJSONString(deliverByTask));
} else if (pluginId == 18L) {
//TODO 查找财务条的信息
//查找财务条的信息
FinanceVo.FinanceItem byTask = financeService.getByTask(new FinanceDto.TaskId(queryTask.getDetailId()));
plugin.setData(JSON.toJSONString(byTask));
}
}
}
}
// queryTask.getPlugins().forEach(pluginInfos -> {
// if(CollectionUtil.isNotEmpty(pluginInfos)){
// pluginInfos.forEach(plugin ->{
// //TODO 判断插件类型,暂时一个个的判断,之后应该是统一的接口
// Long pluginId = plugin.getPluginId();
// if (pluginId == 15L) {
// //TODO 查找交付物的信息
// DeliverVo.DeliverOfTask deliverByTask = pluDeliverDao.getDeliverByTask(queryTask.getId(), userId);
// plugin.setData(JSON.toJSONString(deliverByTask));
// } else if (pluginId == 18L) {
// //TODO 查找财务条的信息
// FinanceVo.FinanceItem byTask = financeService.getByTask(new FinanceDto.TaskId(queryTask.getDetailId()));
// plugin.setData(JSON.toJSONString(byTask));
// }
// });
// }
// });
}
}
}
@Override
public PageInfo<TallTaskVo.QueryTask> pageQueryRegularTask(String token, TallTaskDto.PageQueryRegularTask param) {
//TODO 根据token获取用户信息
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
}
//通过手机号获取用户在服务内的userId
ProUser user = null;
if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone());
}
// if(ObjectUtil.isNull(user)){
// throw new BaseException(BasicsCodeError.NOT_USER_SERVER);
// }
ProUser user = getUserByToken(token);
log.info("本服务下的用户信息:{}", user);
//查询用的时间
Long queryTime = System.currentTimeMillis();
@ -717,8 +642,8 @@ public class TallService implements ITallService {
}
}
}
//如果查看的角色项目经理,则查看所有任务
//如果查看的角色项目经理,则查看所有任务
int isPm = 0;
ProRole role = proRoleDao.selectByPrimaryKey(param.getRoleId());
if(ObjectUtil.isNotNull(role)){
@ -727,7 +652,7 @@ public class TallService implements ITallService {
//获取任务列表
PageHelper.startPage(param.getPageNum(),param.getPageSize());
List<TallTaskVo.QueryTask> regularTask = taskDetailDao.pageQueryRegularTask(isPm, role.getProjectId(), param.getRoleId(),queryTime,param.getTimeUnit(),param.getQueryType(),param.getTaskId(),param.getTriggerType());
List<TallTaskVo.QueryTask> regularTask = taskDetailDao.pageQueryRegularTask(isPm, param.getProjectId(), param.getRoleId(),queryTime,param.getTimeUnit(),param.getQueryType(),param.getTaskId(),param.getTriggerType());
PageInfo<TallTaskVo.QueryTask> queryTaskPageInfo = new PageInfo<>(regularTask);
if(CollectionUtil.isNotEmpty(queryTaskPageInfo.getList())){
if(param.getQueryType() == 0){
@ -742,36 +667,16 @@ public class TallService implements ITallService {
queryPluginForTask(queryTaskPageInfo.getList());
//查询任务下的检查人
queryCheckerOfTask(queryTaskPageInfo.getList());
//TODO 查询插件展示信息
//查询插件展示信息
queryPluginShow(queryTaskPageInfo.getList(),user == null ? null : user.getId());
}
// //获取任务列表
// PageHelper.startPage(param.getPageNum(),param.getPageSize());
// List<TallTaskVo.QueryTask> regularTask = taskDetailDao.pageQueryRegularTask(param.getRoleId(),queryTime,param.getTimeUnit(),param.getQueryType(),param.getTaskId(),param.getTriggerType());
// PageInfo<TallTaskVo.QueryTask> queryTaskPageInfo = new PageInfo<>(regularTask);
// if(CollectionUtil.isNotEmpty(queryTaskPageInfo.getList())){
// if(param.getQueryType() == 0){
// //向上查找任务顺序是倒的,需要改成正序
// List<TallTaskVo.QueryTask> taskList = new ArrayList<>();
// for (int i = queryTaskPageInfo.getList().size() - 1; i >= 0; i--) {
// taskList.add(queryTaskPageInfo.getList().get(i));
// }
// queryTaskPageInfo.setList(taskList);
// }
// //查询任务下的插件
// queryPluginForTask(queryTaskPageInfo.getList());
// //查询任务下的检查人
// queryCheckerOfTask(queryTaskPageInfo.getList());
// //TODO 查询插件展示信息
// queryPluginShow(queryTaskPageInfo.getList(),user == null ? null : user.getId());
// }
return queryTaskPageInfo;
}
@Override
public List<TallTaskVo.QueryTask> queryAllTask(TallTaskDto.QueryAllTask param) {
List<TallTaskVo.QueryTask> queryTaskList = null;
List<TallTaskVo.QueryTask> queryTaskList = new ArrayList<>();
//通过手机号查找服务内的用户
ProUser user = userDao.getUserIdByPhone(param.getPhone());
if(ObjectUtil.isNull(user)){
@ -802,16 +707,10 @@ public class TallService implements ITallService {
@Override
public void deleteProject(String token, TallProjectDto.ProjectById params) {
//根据token获取用户信息
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
}
//通过手机号获取用户在服务内的userId
ProUser user = null;
if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone());
}
//查找用户
ProUser user = getUserByToken(token);
log.info("本服务下的用户信息:{}", user);
if(ObjectUtil.isNull(user)){
throw new BaseException(BasicsCodeError.NOT_USER_SERVER);
}
@ -820,7 +719,7 @@ public class TallService implements ITallService {
if (power < 1) {
throw new BaseException(BasicsCodeError.NO_POWER);
}
//TODO 删除项目 暂时只删除项目
//删除项目
ProTaskDetail project = new ProTaskDetail();
project.setId(params.getProjectId());
project.setRecStatus((byte) 2);
@ -961,4 +860,50 @@ public class TallService implements ITallService {
taskPanelInfoExample.createCriteria().andTaskDetailIdIn(allTaskId);
taskPanelInfoMapper.updateByExampleSelective(taskPanelInfo,taskPanelInfoExample);
}
@Override
public void dragProject(String token, TallProjectDto.MoveProject params) {
//获取用户信息
ProUser user = getUserByToken(token);
log.info("本服务下的用户信息:{}", user);
if(ObjectUtil.isNull(user)){
throw new BaseException(BasicsCodeError.NOT_USER_SERVER);
}
//检查移动的项目是否存在
ProTaskDetail moveProject = taskDetailDao.selectByPrimaryKey(params.getMoveProjectId());
if(ObjectUtil.isNull(moveProject)){
throw new BaseException(BasicsCodeError.PROJECT_NOT_FOUND);
}
//如果目标项目id不为空,检查项目是否存在
if(ObjectUtil.isNotNull(params.getTargetProjectId())){
ProTaskDetail targetProject = taskDetailDao.selectByPrimaryKey(params.getTargetProjectId());
if(ObjectUtil.isNull(targetProject)){
throw new BaseException(BasicsCodeError.PROJECT_NOT_FOUND);
}
}
//TODO 检查用户权限(用户必须是移动项目的项目经理)
//判断用户是否是项目经理
Integer power = powerService.queryUserPower(params.getMoveProjectId(), user.getId());
if (power < 1) {
throw new BaseException(BasicsCodeError.NO_POWER);
}
//删除之前的层级关系
ProParentTaskExample parentTaskExample = new ProParentTaskExample();
parentTaskExample.createCriteria().andTaskDetailIdEqualTo(params.getMoveProjectId());
List<ProParentTask> proParentTasks = parentTaskDao.selectByExample(parentTaskExample);
if(CollectionUtil.isNotEmpty(proParentTasks)){
proParentTasks.forEach(proParentTask -> {
proParentTask.setRecStatus((byte) 2);
parentTaskDao.updateByPrimaryKeySelective(proParentTask);
});
}
//重新添加
if(ObjectUtil.isNotNull(params.getTargetProjectId())){
ProParentTask proParentTask = new ProParentTask();
proParentTask.setId(snowflake.nextId());
proParentTask.setTaskDetailId(params.getMoveProjectId());
proParentTask.setParentTaskDetailId(params.getTargetProjectId());
parentTaskDao.insertSelective(proParentTask);
}
}
}

5
src/main/resources/mapper_dao/ProTaskDetailDao.xml

@ -455,9 +455,10 @@
LEFT JOIN t_label_business lb on d.id = lb.business_id and lb.rec_status = 0
LEFT JOIN t_label l on l.id = lb.label_id and l.rec_status = 0
LEFT JOIN t_pro_parent_task p on d.id = p.task_detail_id and p.rec_status = 0
LEFT JOIN t_pro_task_detail d2 on d2.id = p.parent_task_detail_id and d2.rec_status = 0
WHERE
l.label_type_id = 2
and p.parent_task_detail_id is null
and d2.id is null
and
l.`level` = 0
and
@ -553,7 +554,7 @@
<if test="triggerType == 0 and taskId != null">
and ts.id != #{taskId}
</if>
group by ts.id
) AS alltask
LEFT JOIN t_label_business AS llbb ON alltask.detailId = llbb.business_id
LEFT JOIN t_label AS ll ON llbb.label_id = ll.id

8
src/main/resources/mapper_dao/ProTaskPluginDao.xml

@ -131,11 +131,11 @@
p.rowspan AS rowspan,
p.id AS pluginTaskId
FROM
t_pro_task_sub s
LEFT JOIN t_pro_task_detail d on s.task_detail_id = d.id and d.rec_status = 0
LEFT JOIN t_pro_task_plugin p on d.id = p.task_detail_id and p.rec_status = 0
t_pro_task_plugin p
LEFT JOIN t_pro_task_detail d on d.id = p.task_detail_id and d.rec_status = 0
LEFT JOIN t_pro_task_sub s on s.task_detail_id = d.id and s.rec_status = 0
WHERE
s.rec_status = 0
p.rec_status = 0
and s.id = #{subId}
</select>
<!-- <select id="findPluginByTaskIdList" resultType="com.ccsens.common.bean.po.ProTaskPlugin">-->

Loading…
Cancel
Save