Browse Source

导入导出wbs

master
zy_Java 3 years ago
parent
commit
904169ec71
  1. 1
      src/main/java/com/ccsens/ptos_zero/persist/dao/PluDeliverDao.java
  2. 3
      src/main/java/com/ccsens/ptos_zero/persist/dao/ProMemberDao.java
  3. 12
      src/main/java/com/ccsens/ptos_zero/persist/dao/ProMemberStakeholderDao.java
  4. 2
      src/main/java/com/ccsens/ptos_zero/persist/dao/ProRoleDao.java
  5. 10
      src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskDetailDao.java
  6. 2
      src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskPluginDao.java
  7. 10
      src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskSubDao.java
  8. 359
      src/main/java/com/ccsens/ptos_zero/service/ImportService.java
  9. 526
      src/main/java/com/ccsens/ptos_zero/service/TallService.java
  10. 2
      src/main/java/com/ccsens/ptos_zero/util/ZeroCodeError.java
  11. 56
      src/main/resources/mapper_dao/PluDeliverDao.xml
  12. 68
      src/main/resources/mapper_dao/ProMemberDao.xml
  13. 66
      src/main/resources/mapper_dao/ProMemberStakeholderDao.xml
  14. 55
      src/main/resources/mapper_dao/ProRoleDao.xml
  15. 124
      src/main/resources/mapper_dao/ProTaskDetailDao.xml
  16. 116
      src/main/resources/mapper_dao/ProTaskPluginDao.xml
  17. 100
      src/main/resources/mapper_dao/ProTaskSubDao.xml

1
src/main/java/com/ccsens/ptos_zero/persist/dao/PluDeliverDao.java

@ -12,6 +12,7 @@ import java.util.List;
*/ */
public interface PluDeliverDao extends PluDeliverMapper { public interface PluDeliverDao extends PluDeliverMapper {
void insertReplace(PluDeliver pluDeliver);
/** /**
* 查询任务下的交付物信息 * 查询任务下的交付物信息
* @param taskId 任务id * @param taskId 任务id

3
src/main/java/com/ccsens/ptos_zero/persist/dao/ProMemberDao.java

@ -1,5 +1,6 @@
package com.ccsens.ptos_zero.persist.dao; package com.ccsens.ptos_zero.persist.dao;
import com.ccsens.ptos_zero.bean.po.ProMember;
import com.ccsens.ptos_zero.persist.mapper.ProMemberMapper; import com.ccsens.ptos_zero.persist.mapper.ProMemberMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@ -13,6 +14,8 @@ import java.util.List;
@Repository @Repository
public interface ProMemberDao extends ProMemberMapper { public interface ProMemberDao extends ProMemberMapper {
void insertReplace(ProMember proMember);
/** /**
* 查找用户的成员id * 查找用户的成员id
* @param projectId 项目id * @param projectId 项目id

12
src/main/java/com/ccsens/ptos_zero/persist/dao/ProMemberStakeholderDao.java

@ -0,0 +1,12 @@
package com.ccsens.ptos_zero.persist.dao;
import com.ccsens.ptos_zero.bean.po.ProMemberStakeholder;
import com.ccsens.ptos_zero.persist.mapper.ProMemberStakeholderMapper;
/**
* @author
*/
public interface ProMemberStakeholderDao extends ProMemberStakeholderMapper {
void insertReplace(ProMemberStakeholder memberStakeholder);
}

2
src/main/java/com/ccsens/ptos_zero/persist/dao/ProRoleDao.java

@ -14,6 +14,8 @@ import java.util.List;
@Repository @Repository
public interface ProRoleDao extends ProRoleMapper { public interface ProRoleDao extends ProRoleMapper {
void insertReplace(ProRole role);
/** /**
* 根据角色id查找项目id * 根据角色id查找项目id
* @param roleId 角色id * @param roleId 角色id

10
src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskDetailDao.java

@ -2,6 +2,7 @@ package com.ccsens.ptos_zero.persist.dao;
import com.ccsens.ptos_zero.bean.dto.TaskDto; import com.ccsens.ptos_zero.bean.dto.TaskDto;
import com.ccsens.ptos_zero.bean.po.ProTaskDetail;
import com.ccsens.ptos_zero.bean.po.ProTaskSub; import com.ccsens.ptos_zero.bean.po.ProTaskSub;
import com.ccsens.ptos_zero.bean.vo.TaskVo; import com.ccsens.ptos_zero.bean.vo.TaskVo;
import com.ccsens.ptos_zero.persist.mapper.ProTaskDetailMapper; import com.ccsens.ptos_zero.persist.mapper.ProTaskDetailMapper;
@ -18,6 +19,8 @@ import java.util.List;
*/ */
@Repository @Repository
public interface ProTaskDetailDao extends ProTaskDetailMapper { public interface ProTaskDetailDao extends ProTaskDetailMapper {
void insertReplace(ProTaskDetail taskDetail);
/** /**
* 根据角色查找永久日常任务 * 根据角色查找永久日常任务
* @param roleIdList 角色id * @param roleIdList 角色id
@ -91,6 +94,13 @@ public interface ProTaskDetailDao extends ProTaskDetailMapper {
List<TallProjectVo.ProjectInfo> queryPwbs( @Param("startTime")Long startTime, @Param("endTime")Long endTime, @Param("userId")Long userId, @Param("parentId")Long parentId); List<TallProjectVo.ProjectInfo> queryPwbs( @Param("startTime")Long startTime, @Param("endTime")Long endTime, @Param("userId")Long userId, @Param("parentId")Long parentId);
/**
* 分页查找定期任务
* @param roleId 角色id
* @return 返回任务列表
*/
List<TallTaskVo.QueryTask> pageQueryRegularTask(@Param("roleId")Long roleId, @Param("timeNode")Long timeNode, @Param("timeUnit")int timeUnit, @Param("queryType")int queryType);
// /** // /**
// * 根据任务详情id查找项目id // * 根据任务详情id查找项目id
// */ // */

2
src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskPluginDao.java

@ -1,5 +1,6 @@
package com.ccsens.ptos_zero.persist.dao; package com.ccsens.ptos_zero.persist.dao;
import com.ccsens.ptos_zero.bean.po.ProTaskPlugin;
import com.ccsens.ptos_zero.persist.mapper.ProTaskPluginMapper; import com.ccsens.ptos_zero.persist.mapper.ProTaskPluginMapper;
import com.ccsensptos.tallsdk.bean.vo.TallTaskVo; import com.ccsensptos.tallsdk.bean.vo.TallTaskVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -26,6 +27,7 @@ public interface ProTaskPluginDao extends ProTaskPluginMapper {
*/ */
String queryParamByTaskId(@Param("detailTaskId")Long taskDetailId); String queryParamByTaskId(@Param("detailTaskId")Long taskDetailId);
void insertReplace(ProTaskPlugin proTaskPlugin);
// /** // /**
// * 根据任务id列表查询任务插件 // * 根据任务id列表查询任务插件
// * @param oldTaskIdList 任务id列表 // * @param oldTaskIdList 任务id列表

10
src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskSubDao.java

@ -39,4 +39,14 @@ public interface ProTaskSubDao extends ProTaskSubMapper {
* @param taskDetailId 任务详情id * @param taskDetailId 任务详情id
*/ */
void deleteOldSubTask(@Param("taskDetailId") Long taskDetailId); void deleteOldSubTask(@Param("taskDetailId") Long taskDetailId);
/**
* 查询规定时间时进行的任务的开始时间
* @param timeNode 时间点
* @param roleId 角色id
* @return 返回开始时间
*/
Long getTimeByProgressTask(@Param("timeNode")Long timeNode, @Param("roleId")Long roleId);
void insertReplace(ProTaskSub taskSub);
} }

359
src/main/java/com/ccsens/ptos_zero/service/ImportService.java

@ -6,14 +6,13 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.ccsens.ptos_zero.bean.dto.RoleDto; import com.ccsens.ptos_zero.bean.dto.RoleDto;
import com.ccsens.ptos_zero.bean.dto.TaskDto; import com.ccsens.ptos_zero.bean.dto.TaskDto;
import com.ccsens.ptos_zero.bean.po.*; import com.ccsens.ptos_zero.bean.po.*;
import com.ccsens.ptos_zero.bean.vo.ProjectVo; import com.ccsens.ptos_zero.bean.vo.ProjectVo;
import com.ccsens.ptos_zero.persist.dao.*; import com.ccsens.ptos_zero.persist.dao.*;
import com.ccsens.ptos_zero.persist.mapper.ProMemberStakeholderMapper;
import com.ccsens.ptos_zero.util.Constant; import com.ccsens.ptos_zero.util.Constant;
import com.ccsens.ptos_zero.util.ZeroCodeError; import com.ccsens.ptos_zero.util.ZeroCodeError;
import com.ccsens.util.ExcelUtil; import com.ccsens.util.ExcelUtil;
import com.ccsens.util.PropUtil;
import com.ccsens.util.StringUtil; import com.ccsens.util.StringUtil;
import com.ccsens.util.cron.CronConstant; import com.ccsens.util.cron.CronConstant;
import com.ccsens.util.cron.NatureToDate; import com.ccsens.util.cron.NatureToDate;
@ -62,7 +61,7 @@ public class ImportService implements IImportService {
@Resource @Resource
private ProRoleMemberDao roleMemberDao; private ProRoleMemberDao roleMemberDao;
@Resource @Resource
private ProMemberStakeholderMapper memberStakeholderMapper; private ProMemberStakeholderDao memberStakeholderDao;
@Resource @Resource
private ProRoleRepulsionDao repulsionDao; private ProRoleRepulsionDao repulsionDao;
@Resource @Resource
@ -79,7 +78,8 @@ public class ImportService implements IImportService {
private PluginDao taskPluginDao; private PluginDao taskPluginDao;
@Resource @Resource
private ProTaskPluginDao proTaskPluginDao; private ProTaskPluginDao proTaskPluginDao;
@Resource
private PluDeliverDao pluDeliverDao;
/** /**
@ -202,7 +202,7 @@ public class ImportService implements IImportService {
throw new BaseException(ZeroCodeError.WSB_NOT_TASK_HEADER); throw new BaseException(ZeroCodeError.WSB_NOT_TASK_HEADER);
} }
//添加项目 //添加项目
ProjectVo.SysProject project = readProject(wbsSheet, projectStart, userId,projectId); ProjectVo.SysProject project = readProject(wbsSheet, projectStart, userId);
if(ObjectUtil.isNull(project)){ if(ObjectUtil.isNull(project)){
throw new BaseException(ZeroCodeError.WSB_NOT_PROJECT_HEADER); throw new BaseException(ZeroCodeError.WSB_NOT_PROJECT_HEADER);
} }
@ -252,36 +252,54 @@ public class ImportService implements IImportService {
roleMember.setRoleId(role.getId()); roleMember.setRoleId(role.getId());
roleMember.setMemberId(memberId); roleMember.setMemberId(memberId);
roleMemberDao.insertSelective(roleMember); roleMemberDao.insertSelective(roleMember);
//返回项目信息
// //TODO 在tall客户端添加项目和用户的关联信息 projectInfo.setId(project.getId());
// ProjectDto.SaveProjectDto saveProjectDto = new ProjectDto.SaveProjectDto(); projectInfo.setName(project.getName());
// saveProjectDto.setId(project.getId()); projectInfo.setStartTime(project.getBeginTime());
// saveProjectDto.setName(project.getName()); projectInfo.setEndTime(project.getEndTime());
// saveProjectDto.setStartTime(project.getBeginTime()); projectInfo.setUrl(PropUtil.notGatewayUrl);
// saveProjectDto.setEndTime(project.getEndTime()); projectInfo.setBusinessCode(Constant.BUSINESS_CODE);
// saveProjectDto.setUrl(PropUtil.domain);
//
// saveProjectDto.setUserIdList(userIdSet);
// JsonResponse jsonResponse = tall3FeignClient.saveProjectList(saveProjectDto);
// if (null == jsonResponse){
// throw new BaseException(ZeroCodeError.FEIGN_ERROR);
// }
//获取项目信息
// BeanUtil.copyProperties(saveProjectDto,projectInfo);
} }
/** /**
* 读取项目信息 * 读取项目信息
*/ */
private ProjectVo.SysProject readProject(XSSFSheet wbsSheet, int projectStart, Long userId, Long projectId) { private ProjectVo.SysProject readProject(XSSFSheet wbsSheet, int projectStart, Long userId) {
ProjectVo.SysProject project = new ProjectVo.SysProject(); ProjectVo.SysProject project = new ProjectVo.SysProject();
// TODO 查询是否项目是否存在 //获取项目信息的那一行
if (ObjectUtil.isNotNull(projectId)) { XSSFRow row = wbsSheet.getRow(projectStart + 1);
if (ObjectUtil.isNull(row)) {
throw new BaseException(ZeroCodeError.WSB_NOT_PROJECT_HEADER);
}
//项目名
String projectName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(0)));
//项目id
String projectIdCell = ExcelUtil.getCellComment(row.getCell(0));
//详情
String description = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(1)));
//项目地点
String address = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(2)));
//开始时间
String beginTime = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(3)));
//结束时间
String endTime = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(4)));
//版本
String version = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(5)));
if (StrUtil.isEmpty(projectName)) {
throw new BaseException(ZeroCodeError.WBS_NOT_PROJECT_NAME.addMsg(wbsSheet.getSheetName(),projectStart+1));
}
//TODO 验证是否有项目id且项目id合法
Long projectId = null;
if(StrUtil.isNotBlank(projectIdCell)){
try {
projectId = Long.parseLong(projectIdCell);
}catch (Exception e) {
log.info("项目id分解异常");
}
project = projectDao.selectById(projectId); project = projectDao.selectById(projectId);
if (ObjectUtil.isNotNull(project)) { if (ObjectUtil.isNotNull(project)) {
project.setId(projectId); project.setId(projectId);
project.setImportType((byte)1); project.setImportType((byte) 1);
//删除之前的项目详情 //删除之前的项目详情
projectDao.updateStatusById(projectId); projectDao.updateStatusById(projectId);
//删除之前的项目分解 //删除之前的项目分解
@ -304,37 +322,19 @@ public class ImportService implements IImportService {
labelBusinessDao.updateByExampleSelective(labelBusiness,labelBusinessExample); labelBusinessDao.updateByExampleSelective(labelBusiness,labelBusinessExample);
} }
} }
//获取项目信息的那一行
XSSFRow row = wbsSheet.getRow(projectStart + 1);
if (ObjectUtil.isNull(row)) {
throw new BaseException(ZeroCodeError.WSB_NOT_PROJECT_HEADER);
}
//项目名
String projectName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(0)));
//详情
String description = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(1)));
//项目时间
String address = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(2)));
//开始时间
String beginTime = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(3)));
//结束时间
String endTime = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(4)));
//版本
String version = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(5)));
if (StrUtil.isEmpty(projectName)) {
throw new BaseException(ZeroCodeError.WBS_NOT_PROJECT_NAME.addMsg(wbsSheet.getSheetName(),projectStart+1));
}
//项目名不能重复(当前用户创建的项目内名字不能重复) //项目名不能重复(当前用户创建的项目内名字不能重复)
//根据userId查找已创建的项目 //根据userId查找已创建的项目
if(0 == project.getImportType()) {
List<ProjectVo.SysProject> sysProjectList = projectDao.queryByCreator(userId); List<ProjectVo.SysProject> sysProjectList = projectDao.queryByCreator(userId);
if(CollectionUtil.isNotEmpty(sysProjectList)){ if (CollectionUtil.isNotEmpty(sysProjectList)) {
sysProjectList.forEach(p -> { sysProjectList.forEach(p -> {
if(projectName.equalsIgnoreCase(p.getName())){ if (projectName.equalsIgnoreCase(p.getName())) {
//如果名称重复则提示错误信息 //如果名称重复则提示错误信息
throw new BaseException(ZeroCodeError.PROJECT_NAME_REPEAT.addMsg(wbsSheet.getSheetName(),projectStart+1,projectName)); throw new BaseException(ZeroCodeError.PROJECT_NAME_REPEAT.addMsg(wbsSheet.getSheetName(), projectStart + 1, projectName));
} }
}); });
} }
}
//判断时间是否正确 //判断时间是否正确
String begin = ExcelUtil.getCellValue(row.getCell(3)); String begin = ExcelUtil.getCellValue(row.getCell(3));
String end = ExcelUtil.getCellValue(row.getCell(4)); String end = ExcelUtil.getCellValue(row.getCell(4));
@ -350,24 +350,14 @@ public class ImportService implements IImportService {
//日期格式错误 //日期格式错误
throw new BaseException(ZeroCodeError.WBS_PROJECT_TIME_ERROR.addMsg(wbsSheet.getSheetName(),projectStart+1)); throw new BaseException(ZeroCodeError.WBS_PROJECT_TIME_ERROR.addMsg(wbsSheet.getSheetName(),projectStart+1));
} }
//添加项目信息(任务详情) //添加项目信息(任务详情)
ProTaskDetail taskDetail = new ProTaskDetail(); ProTaskDetail taskDetail = new ProTaskDetail();
if (0 == project.getImportType()) { taskDetail.setId((1 == project.getImportType() && projectId != null) ? projectId : snowflake.nextId());
taskDetail.setId(snowflake.nextId());
}
if (1 == project.getImportType()) {
taskDetail.setId(projectId);
}
taskDetail.setName(projectName); taskDetail.setName(projectName);
taskDetail.setDescription(description); taskDetail.setDescription(description);
if (0 == project.getImportType()){ // taskDetailDao.insertSelective(taskDetail);
taskDetailDao.insertSelective(taskDetail); taskDetailDao.insertReplace(taskDetail);
}
if (1 == project.getImportType()){
taskDetailDao.updateByPrimaryKeySelective(taskDetail);
}
project.setId(taskDetail.getId());
project.setName(projectName);
//添加(任务分解) //添加(任务分解)
ProTaskSub taskSub = new ProTaskSub(); ProTaskSub taskSub = new ProTaskSub();
taskSub.setId(snowflake.nextId()); taskSub.setId(snowflake.nextId());
@ -376,8 +366,6 @@ public class ImportService implements IImportService {
taskSub.setPlanEndTime(eTime); taskSub.setPlanEndTime(eTime);
taskSub.setPlanDuration(eTime - bTime); taskSub.setPlanDuration(eTime - bTime);
taskSubDao.insertSelective(taskSub); taskSubDao.insertSelective(taskSub);
project.setBeginTime(bTime);
project.setEndTime(eTime);
//添加版本信息 //添加版本信息
ProTaskVersion taskVersion = new ProTaskVersion(); ProTaskVersion taskVersion = new ProTaskVersion();
taskVersion.setId(snowflake.nextId()); taskVersion.setId(snowflake.nextId());
@ -390,6 +378,10 @@ public class ImportService implements IImportService {
//添加任务标签关联信息 //添加任务标签关联信息
saveLabelTask(taskDetail.getId(), labelId); saveLabelTask(taskDetail.getId(), labelId);
project.setId(taskDetail.getId());
project.setName(projectName);
project.setBeginTime(bTime);
project.setEndTime(eTime);
return project; return project;
} }
@ -434,7 +426,7 @@ public class ImportService implements IImportService {
memberStakeholder.setRecStatus((byte)2); memberStakeholder.setRecStatus((byte)2);
ProMemberStakeholderExample memberStakeholderExample = new ProMemberStakeholderExample(); ProMemberStakeholderExample memberStakeholderExample = new ProMemberStakeholderExample();
memberStakeholderExample.createCriteria().andMemeberIdIn(memberIdList); memberStakeholderExample.createCriteria().andMemeberIdIn(memberIdList);
memberStakeholderMapper.updateByExampleSelective(memberStakeholder,memberStakeholderExample); memberStakeholderDao.updateByExampleSelective(memberStakeholder,memberStakeholderExample);
//删除对谁不可见 //删除对谁不可见
ProRoleRepulsion roleRepulsion = new ProRoleRepulsion(); ProRoleRepulsion roleRepulsion = new ProRoleRepulsion();
roleRepulsion.setRecStatus((byte)2); roleRepulsion.setRecStatus((byte)2);
@ -469,9 +461,12 @@ public class ImportService implements IImportService {
//项目角色 //项目角色
String roleName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(2))); String roleName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(2)));
if((StrUtil.isEmpty(roleName) || "/".equalsIgnoreCase(roleName)) && ObjectUtil.isNull(roleId)){ continue; } if((StrUtil.isEmpty(roleName) || "/".equalsIgnoreCase(roleName)) && ObjectUtil.isNull(roleId)){ continue; }
//角色id
String roleIdCell = ExcelUtil.getCellComment(row.getCell(2));
//成员 //成员
String memberName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(3))); String memberName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(3)));
//成员id
String memberIdCell = ExcelUtil.getCellComment(row.getCell(3));
//角色手机号 //角色手机号
String memberPhone = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(4))); String memberPhone = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(4)));
if((StrUtil.isNotEmpty(memberName) && !"/".equalsIgnoreCase(memberName)) && (StrUtil.isEmpty(memberPhone) || !memberPhone.matches(Constant.PHONE_REGEX))){ if((StrUtil.isNotEmpty(memberName) && !"/".equalsIgnoreCase(memberName)) && (StrUtil.isEmpty(memberPhone) || !memberPhone.matches(Constant.PHONE_REGEX))){
@ -479,6 +474,8 @@ public class ImportService implements IImportService {
} }
//奖惩干系人 //奖惩干系人
String stakeholderName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(5))); String stakeholderName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(5)));
//奖惩干系人id
String stakeholderIdCell = ExcelUtil.getCellComment(row.getCell(5));
//干系人电话 //干系人电话
String stakeholderPhone = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(6))); String stakeholderPhone = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(6)));
if((StrUtil.isNotEmpty(stakeholderName) && !"/".equalsIgnoreCase(stakeholderName)) && (StrUtil.isEmpty(stakeholderPhone) || !stakeholderPhone.matches(Constant.PHONE_REGEX))){ if((StrUtil.isNotEmpty(stakeholderName) && !"/".equalsIgnoreCase(stakeholderName)) && (StrUtil.isEmpty(stakeholderPhone) || !stakeholderPhone.matches(Constant.PHONE_REGEX))){
@ -486,12 +483,19 @@ public class ImportService implements IImportService {
} }
//添加角色 //添加角色
if(StrUtil.isNotEmpty(roleName) && !"/".equalsIgnoreCase(roleName)){ if(StrUtil.isNotEmpty(roleName) && !"/".equalsIgnoreCase(roleName)){
if(StrUtil.isNotBlank(roleIdCell)){
try {
roleId = Long.parseLong(roleIdCell);
}catch (Exception e){
log.info("角色id解析失败");
}
}
ProRole role = new ProRole(); ProRole role = new ProRole();
role.setId(snowflake.nextId()); role.setId((1 == project.getImportType() && roleId != null) ? roleId : snowflake.nextId());
role.setName(roleName); role.setName(roleName);
role.setProjectId(project.getId()); role.setProjectId(project.getId());
role.setLabelId(sysRoleId); role.setLabelId(sysRoleId);
roleDao.insertSelective(role); roleDao.insertReplace(role);
roleId = role.getId(); roleId = role.getId();
roleMap.put(roleName,role.getId()); roleMap.put(roleName,role.getId());
} }
@ -504,8 +508,13 @@ public class ImportService implements IImportService {
memberId = wbsMembers.getId(); memberId = wbsMembers.getId();
} }
if(ObjectUtil.isNull(memberId)){ if(ObjectUtil.isNull(memberId)){
//TODO 根据成员手机号查找userId 成员关联userId if(StrUtil.isNotBlank(memberIdCell)){
try {
memberId = Long.parseLong(memberIdCell);
}catch (Exception e){
log.info("成员id解析失败");
}
}
//根据手机号获取userId //根据手机号获取userId
ProUser user = userDao.getUserIdByPhone(memberPhone); ProUser user = userDao.getUserIdByPhone(memberPhone);
if(ObjectUtil.isNull(user)){ if(ObjectUtil.isNull(user)){
@ -518,43 +527,50 @@ public class ImportService implements IImportService {
Long userId = user.getId(); Long userId = user.getId();
//添加成员至数据库 //添加成员至数据库
ProMember proMember = new ProMember(); ProMember proMember = new ProMember();
proMember.setId(snowflake.nextId()); proMember.setId((1 == project.getImportType() && memberId != null) ? memberId : snowflake.nextId());
proMember.setName(memberName); proMember.setName(memberName);
proMember.setPhone(memberPhone); proMember.setPhone(memberPhone);
proMember.setProjectId(project.getId()); proMember.setProjectId(project.getId());
proMember.setUserId(userId); proMember.setUserId(userId);
memberDao.insertSelective(proMember); memberDao.insertReplace(proMember);
RoleDto.WbsMember member = new RoleDto.WbsMember(proMember.getId(),userId); RoleDto.WbsMember member = new RoleDto.WbsMember(proMember.getId(),userId);
memberMap.put(memberName+"_"+memberPhone,member); memberMap.put(memberName+"_"+memberPhone,member);
memberId = proMember.getId(); memberId = proMember.getId();
}
//添加角色成员关联信息
ProRoleMember roleMember = new ProRoleMember();
roleMember.setId(snowflake.nextId());
roleMember.setRoleId(roleId);
roleMember.setMemberId(memberId);
roleMemberDao.insertSelective(roleMember);
//添加奖惩干系人 //添加奖惩干系人
if(StrUtil.isNotEmpty(stakeholderName) && !"/".equalsIgnoreCase(roleName)){ if(StrUtil.isNotEmpty(stakeholderName) && !"/".equalsIgnoreCase(roleName)){
//TODO 根据干系人手机号查找userId 奖惩干系人关联userId //根据干系人手机号查找userId 奖惩干系人关联userId
ProUser user = userDao.getUserIdByPhone(stakeholderPhone); ProUser stakeholderUser = userDao.getUserIdByPhone(stakeholderPhone);
if(ObjectUtil.isNull(user)){ if(ObjectUtil.isNull(stakeholderUser)){
//TODO 如果未查到用户则添加一条新的用户信息 //如果未查到用户则添加一条新的用户信息
user = new ProUser(); stakeholderUser = new ProUser();
user.setId(snowflake.nextId()); stakeholderUser.setId(snowflake.nextId());
user.setPhone(stakeholderPhone); stakeholderUser.setPhone(stakeholderPhone);
userDao.insertSelective(user); userDao.insertSelective(stakeholderUser);
}
Long stakeholderId = null;
if(StrUtil.isNotBlank(stakeholderIdCell)){
try {
stakeholderId = Long.parseLong(stakeholderIdCell);
}catch (Exception e){
log.info("奖惩干系人id解析失败");
}
} }
Long userId = user.getId();
ProMemberStakeholder memberStakeholder = new ProMemberStakeholder(); ProMemberStakeholder memberStakeholder = new ProMemberStakeholder();
memberStakeholder.setId(snowflake.nextId()); memberStakeholder.setId((1 == project.getImportType() && stakeholderId != null) ? stakeholderId : snowflake.nextId());
memberStakeholder.setMemeberId(memberId); memberStakeholder.setMemeberId(memberId);
memberStakeholder.setStakeholderName(stakeholderName); memberStakeholder.setStakeholderName(stakeholderName);
memberStakeholder.setStakeholderPhone(stakeholderPhone); memberStakeholder.setStakeholderPhone(stakeholderPhone);
memberStakeholder.setUserId(userId); memberStakeholder.setUserId(stakeholderUser.getId());
memberStakeholderMapper.insertSelective(memberStakeholder); memberStakeholderDao.insertReplace(memberStakeholder);
} }
} }
//添加角色成员关联信息
ProRoleMember roleMember = new ProRoleMember();
roleMember.setId(snowflake.nextId());
roleMember.setRoleId(roleId);
roleMember.setMemberId(memberId);
roleMemberDao.insertSelective(roleMember);
}
} }
//添加对谁不可见 //添加对谁不可见
roleRepulsion(memberSheet, roleMap); roleRepulsion(memberSheet, roleMap);
@ -663,21 +679,29 @@ public class ImportService implements IImportService {
if(StrUtil.isEmpty(firstTaskName) && ObjectUtil.isNull(firstTaskId)){ if(StrUtil.isEmpty(firstTaskName) && ObjectUtil.isNull(firstTaskId)){
continue; continue;
} }
//一级任务id
String firstTaskIdCell = ExcelUtil.getCellComment(row.getCell(1));
if(StrUtil.isNotEmpty(firstTaskName)){ if(StrUtil.isNotEmpty(firstTaskName)){
//添加一级任务 //添加一级任务
firstTaskId = saveFirstTask(project, firstTaskName); firstTaskId = saveFirstTask(project, firstTaskName,firstTaskIdCell);
} }
//二级任务名 //二级任务名
String taskName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(2))); String taskName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(2)));
if(StrUtil.isEmpty(taskName)){ if(StrUtil.isEmpty(taskName)){
continue; continue;
} }
//二级任务分解id
String subIdCell = ExcelUtil.getCellComment(row.getCell(2));
//二级任务详情id
String detailIdCell = ExcelUtil.getCellComment(row.getCell(3));
//任务描述 //任务描述
String description = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(3))); String description = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(3)));
//重要性标签 //重要性标签
String vitalLabel = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(7))); String vitalLabel = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(7)));
//负责人 //负责人
String executorRole = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(8))); String executorRole = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(8)));
//检查人
String checkerRole = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(9)));
//开始时间 //开始时间
String beginTime = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(4))); String beginTime = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(4)));
//结束时间 //结束时间
@ -686,17 +710,30 @@ public class ImportService implements IImportService {
String duration = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(6))); String duration = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(6)));
//交付物 //交付物
String deliver = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(10))); String deliver = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(10)));
//二级任务详情id
String deliverIdCell = ExcelUtil.getCellComment(row.getCell(10));
//插件 //插件
String plugin1 = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(12))); String plugin1 = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(12)));
String pluginIdCell1 = ExcelUtil.getCellComment(row.getCell(12));
String plugin2 = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(13))); String plugin2 = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(13)));
String pluginIdCell2 = ExcelUtil.getCellComment(row.getCell(13));
String plugin3 = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(14))); String plugin3 = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(14)));
String pluginIdCell3 = ExcelUtil.getCellComment(row.getCell(14));
if(StrUtil.isNotEmpty(taskName)){ if(StrUtil.isNotEmpty(taskName)){
Long detailId = null;
if(StrUtil.isNotBlank(detailIdCell)){
try {
detailId = Long.parseLong(detailIdCell);
}catch (Exception e){
log.info("任务详情id解析失败");
}
}
//添加二级任务信息(任务详情) //添加二级任务信息(任务详情)
ProTaskDetail taskDetail = new ProTaskDetail(); ProTaskDetail taskDetail = new ProTaskDetail();
taskDetail.setId(snowflake.nextId()); taskDetail.setId((1 == project.getImportType() && detailId != null) ? detailId : snowflake.nextId());
taskDetail.setName(taskName); taskDetail.setName(taskName);
taskDetail.setDescription(description); taskDetail.setDescription(description);
taskDetailDao.insertSelective(taskDetail); taskDetailDao.insertReplace(taskDetail);
//任务关联信息(关联一级任务) //任务关联信息(关联一级任务)
ProParentTask parentTask = new ProParentTask(); ProParentTask parentTask = new ProParentTask();
parentTask.setId(snowflake.nextId()); parentTask.setId(snowflake.nextId());
@ -714,7 +751,7 @@ public class ImportService implements IImportService {
labelBusiness.setBusinessId(taskDetail.getId()); labelBusiness.setBusinessId(taskDetail.getId());
labelBusiness.setLabelId(labelId); labelBusiness.setLabelId(labelId);
labelBusinessDao.insertSelective(labelBusiness); labelBusinessDao.insertSelective(labelBusiness);
//任务和角色关联 //任务和负责人关联
if(StrUtil.isEmpty(executorRole)){ if(StrUtil.isEmpty(executorRole)){
throw new BaseException(ZeroCodeError.WBS_NOT_FIND_ROLE.addMsg(wbsSheet.getSheetName(),i+1,executorRole)); throw new BaseException(ZeroCodeError.WBS_NOT_FIND_ROLE.addMsg(wbsSheet.getSheetName(),i+1,executorRole));
} }
@ -731,15 +768,47 @@ public class ImportService implements IImportService {
roleTaskMapper.insertSelective(roleTask); roleTaskMapper.insertSelective(roleTask);
} }
//任务和检查人关联
if(StrUtil.isNotEmpty(checkerRole)){
Long checkerRoleId = roleMap.get(checkerRole);
if(ObjectUtil.isNull(checkerRoleId)){
throw new BaseException(ZeroCodeError.WBS_NOT_FIND_ROLE.addMsg(wbsSheet.getSheetName(),i+1,checkerRole));
}
ProRoleTask roleTask = new ProRoleTask();
roleTask.setId(snowflake.nextId());
roleTask.setRoleDuty((byte) 1);
roleTask.setRoleId(checkerRoleId);
roleTask.setTaskId(taskDetail.getId());
roleTaskMapper.insertSelective(roleTask);
}else {
throw new BaseException(ZeroCodeError.WBS_NOT_FIND_ROLE.addMsg(wbsSheet.getSheetName(),i+1,executorRole));
}
//处理时间、添加任务分解、添加任务标签 //处理时间、添加任务分解、添加任务标签
taskStartTime = taskSaveTime(taskStartTime, project, beginTime, endTime, duration, taskDetail.getId(),wbsSheet,i+1,deliver); Long subId = null;
if(StrUtil.isNotBlank(subIdCell)){
try {
subId = Long.parseLong(subIdCell);
}catch (Exception e){
log.info("任务分解id解析失败");
}
}
Long deliverId = null;
if(StrUtil.isNotBlank(deliverIdCell)){
try {
deliverId = Long.parseLong(deliverIdCell);
}catch (Exception e){
log.info("交付物id解析失败");
}
}
taskStartTime = taskSaveTime(subId, taskStartTime, project, beginTime, endTime, duration, taskDetail.getId(),wbsSheet,i+1,deliver,deliverId);
//添加时间颗粒度标签并关联 //添加时间颗粒度标签并关联
Long timeLabel = labelDao.getLabelByTypeAndLevel(0, 4); Long timeLabel = labelDao.getLabelByTypeAndLevel(0, 4);
saveLabelTask(taskDetail.getId(),timeLabel); saveLabelTask(taskDetail.getId(),timeLabel);
//TODO 插件 //TODO 插件
Long taskPlugin1 = plugin(plugin1,taskDetail.getId(),1,wbsSheet,i+1); Long taskPlugin1 = plugin(project,pluginIdCell1,plugin1,taskDetail.getId(),1,wbsSheet,i+1);
Long taskPlugin2 = plugin(plugin2,taskDetail.getId(),2,wbsSheet,i+1); Long taskPlugin2 = plugin(project,pluginIdCell2,plugin2,taskDetail.getId(),2,wbsSheet,i+1);
Long taskPlugin3 = plugin(plugin3,taskDetail.getId(),3,wbsSheet,i+1); Long taskPlugin3 = plugin(project,pluginIdCell3,plugin3,taskDetail.getId(),3,wbsSheet,i+1);
TaskDto.TaskPluginId taskPlugin = new TaskDto.TaskPluginId(taskPlugin1,taskPlugin2,taskPlugin3); TaskDto.TaskPluginId taskPlugin = new TaskDto.TaskPluginId(taskPlugin1,taskPlugin2,taskPlugin3);
taskMap.put(sequence + "_" + taskName, taskPlugin); taskMap.put(sequence + "_" + taskName, taskPlugin);
} }
@ -750,22 +819,23 @@ public class ImportService implements IImportService {
//TODO 添加默认插件 //TODO 添加默认插件
} }
} }
private Long plugin(String plugin, Long taskId, int row, XSSFSheet wbsSheet, int errorRow) { private Long plugin(ProjectVo.SysProject project, String pluginIdCell, String plugin, Long taskId, int row, XSSFSheet wbsSheet, int errorRow) {
Long taskPlugin = null; Long taskPlugin = null;
if(StrUtil.isNotEmpty(plugin)){ if(StrUtil.isNotEmpty(plugin)){
//根据插件名称查找插件id if(StrUtil.isNotBlank(pluginIdCell)){
// Long pluginId = taskPluginDao.getPluginIdByName(plugin); try {
// Long pluginId = 1L; taskPlugin = Long.parseLong(pluginIdCell);
// if(ObjectUtil.isNull(pluginId)){ }catch (Exception e){
// throw new BaseException(ZeroCodeError.PLUGIN_NAME_ERROR.addMsg(wbsSheet.getSheetName(),errorRow,plugin)); log.info("任务插件id解析失败");
// } }
}
TallPluginVo.BusinessPluginInfo pluginByCodeAndName = PluginUtil.getPluginByCodeAndName(Constant.BUSINESS_CODE, plugin); TallPluginVo.BusinessPluginInfo pluginByCodeAndName = PluginUtil.getPluginByCodeAndName(Constant.BUSINESS_CODE, plugin);
if(ObjectUtil.isNull(pluginByCodeAndName)){ if(ObjectUtil.isNull(pluginByCodeAndName)){
throw new BaseException(ZeroCodeError.PLUGIN_NAME_ERROR.addMsg(wbsSheet.getSheetName(),errorRow,plugin)); throw new BaseException(ZeroCodeError.PLUGIN_NAME_ERROR.addMsg(wbsSheet.getSheetName(),errorRow,plugin));
} }
//添加插件 //添加插件
ProTaskPlugin proTaskPlugin = new ProTaskPlugin(); ProTaskPlugin proTaskPlugin = new ProTaskPlugin();
proTaskPlugin.setId(snowflake.nextId()); proTaskPlugin.setId((1 == project.getImportType() && taskPlugin != null) ? taskPlugin : snowflake.nextId());
proTaskPlugin.setTaskDetailId(taskId); proTaskPlugin.setTaskDetailId(taskId);
proTaskPlugin.setPluginId(pluginByCodeAndName.getPluginId()); proTaskPlugin.setPluginId(pluginByCodeAndName.getPluginId());
proTaskPlugin.setBusinessPluginId(pluginByCodeAndName.getBusinessPluginId()); proTaskPlugin.setBusinessPluginId(pluginByCodeAndName.getBusinessPluginId());
@ -775,13 +845,14 @@ public class ImportService implements IImportService {
proTaskPlugin.setPlginCol(1); proTaskPlugin.setPlginCol(1);
proTaskPlugin.setRowspan(1); proTaskPlugin.setRowspan(1);
proTaskPlugin.setColspan(1); proTaskPlugin.setColspan(1);
proTaskPluginDao.insertSelective(proTaskPlugin); proTaskPlugin.setCode(plugin);
proTaskPluginDao.insertReplace(proTaskPlugin);
taskPlugin = proTaskPlugin.getId(); taskPlugin = proTaskPlugin.getId();
} }
return taskPlugin; return taskPlugin;
} }
private Long taskSaveTime(Long taskStartTime, ProjectVo.SysProject project, String beginTime, String endTime, String duration, Long taskDetailId, XSSFSheet wbsSheet, int row,String deliver) { private Long taskSaveTime(Long subId, Long taskStartTime, ProjectVo.SysProject project, String beginTime, String endTime, String duration, Long taskDetailId, XSSFSheet wbsSheet, int row, String deliver, Long deliverId) {
if(StrUtil.isEmpty(beginTime) || "日常".equalsIgnoreCase(beginTime)){ if(StrUtil.isEmpty(beginTime) || "日常".equalsIgnoreCase(beginTime)){
if(StrUtil.isEmpty(beginTime) && StrUtil.isNotEmpty(duration)){ if(StrUtil.isEmpty(beginTime) && StrUtil.isNotEmpty(duration)){
@ -803,18 +874,18 @@ public class ImportService implements IImportService {
Long durationTime = Long.parseLong(trimNum) * aLong; Long durationTime = Long.parseLong(trimNum) * aLong;
//添加任务分解 //添加任务分解
ProTaskSub taskSub = new ProTaskSub(); ProTaskSub taskSub = new ProTaskSub();
taskSub.setId(snowflake.nextId()); taskSub.setId((1 == project.getImportType() && subId != null) ? subId : snowflake.nextId());
taskSub.setTaskDetailId(taskDetailId); taskSub.setTaskDetailId(taskDetailId);
taskSub.setPlanDuration(durationTime); taskSub.setPlanDuration(durationTime);
taskSub.setPlanStartTime(taskStartTime); taskSub.setPlanStartTime(taskStartTime);
taskStartTime += durationTime; taskStartTime += durationTime;
taskSub.setPlanEndTime(taskStartTime); taskSub.setPlanEndTime(taskStartTime);
taskSubDao.insertSelective(taskSub); taskSubDao.insertReplace(taskSub);
//TODO 添加交付物信息 //TODO 添加交付物信息
//添加交付物信息 //添加交付物信息
// if(StrUtil.isNotBlank(deliver)) { if(StrUtil.isNotBlank(deliver)) {
// saveDeliver(deliver, taskSub); saveDeliver(project, deliverId, deliver, taskSub);
// } }
//查找定期任务标签并关联任务 //查找定期任务标签并关联任务
Long taskLabel = labelDao.getLabelByTypeAndLevel(1, 3); Long taskLabel = labelDao.getLabelByTypeAndLevel(1, 3);
saveLabelTask(taskDetailId,taskLabel); saveLabelTask(taskDetailId,taskLabel);
@ -822,13 +893,13 @@ public class ImportService implements IImportService {
}else { }else {
//添加任务分解 //添加任务分解
ProTaskSub taskSub = new ProTaskSub(); ProTaskSub taskSub = new ProTaskSub();
taskSub.setId(snowflake.nextId()); taskSub.setId((1 == project.getImportType() && subId != null) ? subId : snowflake.nextId());
taskSub.setTaskDetailId(taskDetailId); taskSub.setTaskDetailId(taskDetailId);
taskSubDao.insertSelective(taskSub); taskSubDao.insertReplace(taskSub);
//添加交付物信息 //添加交付物信息
// if(StrUtil.isNotBlank(deliver)) { if(StrUtil.isNotBlank(deliver)) {
// saveDeliver(deliver, taskSub); saveDeliver(project, deliverId, deliver, taskSub);
// } }
//查找日常任务标签并关联信息 //查找日常任务标签并关联信息
Long label = labelDao.getLabelByTypeAndLevel(1, 2); Long label = labelDao.getLabelByTypeAndLevel(1, 2);
saveLabelTask(taskDetailId,label); saveLabelTask(taskDetailId,label);
@ -841,16 +912,16 @@ public class ImportService implements IImportService {
eTime = StrUtil.isEmpty(endTime) ? project.getEndTime() : Long.parseLong(endTime); eTime = StrUtil.isEmpty(endTime) ? project.getEndTime() : Long.parseLong(endTime);
//添加任务分解 //添加任务分解
ProTaskSub taskSub = new ProTaskSub(); ProTaskSub taskSub = new ProTaskSub();
taskSub.setId(snowflake.nextId()); taskSub.setId((1 == project.getImportType() && subId != null) ? subId : snowflake.nextId());
taskSub.setTaskDetailId(taskDetailId); taskSub.setTaskDetailId(taskDetailId);
taskSub.setPlanEndTime(eTime); taskSub.setPlanEndTime(eTime);
taskSub.setPlanStartTime(bTime); taskSub.setPlanStartTime(bTime);
taskSub.setPlanDuration(eTime - bTime); taskSub.setPlanDuration(eTime - bTime);
taskSubDao.insertSelective(taskSub); taskSubDao.insertReplace(taskSub);
//添加交付物信息 //添加交付物信息
// if(StrUtil.isNotBlank(deliver)) { if(StrUtil.isNotBlank(deliver)) {
// saveDeliver(deliver, taskSub); saveDeliver(project, deliverId, deliver, taskSub);
// } }
//查找定期任务标签并关联任务 //查找定期任务标签并关联任务
Long taskLabel = labelDao.getLabelByTypeAndLevel(1, 3); Long taskLabel = labelDao.getLabelByTypeAndLevel(1, 3);
saveLabelTask(taskDetailId,taskLabel); saveLabelTask(taskDetailId,taskLabel);
@ -886,9 +957,9 @@ public class ImportService implements IImportService {
} }
if(CollectionUtil.isNotEmpty(proTaskSubList)){ if(CollectionUtil.isNotEmpty(proTaskSubList)){
taskDetailDao.insertSelectiveList(proTaskSubList); taskDetailDao.insertSelectiveList(proTaskSubList);
// if(StrUtil.isNotBlank(deliver)) { if(StrUtil.isNotBlank(deliver)) {
// pluDeliverDao.insertSelectiveList(deliverList); pluDeliverDao.insertSelectiveList(deliverList);
// } }
} }
//查找定期任务标签并关联任务 //查找定期任务标签并关联任务
Long taskLabel = labelDao.getLabelByTypeAndLevel(1, 3); Long taskLabel = labelDao.getLabelByTypeAndLevel(1, 3);
@ -902,25 +973,33 @@ public class ImportService implements IImportService {
return taskStartTime; return taskStartTime;
} }
// private void saveDeliver(String deliver, ProTaskSub taskSub) { private void saveDeliver(ProjectVo.SysProject project, Long deliverId, String deliver, ProTaskSub taskSub) {
// PluDeliver pluDeliver = new PluDeliver(); PluDeliver pluDeliver = new PluDeliver();
// pluDeliver.setId(snowflake.nextId()); pluDeliver.setId((1 == project.getImportType() && deliverId != null) ? deliverId : snowflake.nextId());
// pluDeliver.setTaskSubId(taskSub.getId()); pluDeliver.setTaskSubId(taskSub.getId());
// pluDeliver.setName(deliver); pluDeliver.setName(deliver);
// pluDeliverDao.insertSelective(pluDeliver); pluDeliverDao.insertReplace(pluDeliver);
// } }
/** /**
* 添加一级任务 * 添加一级任务
*/ */
private Long saveFirstTask(ProjectVo.SysProject project, String firstTaskName) { private Long saveFirstTask(ProjectVo.SysProject project, String firstTaskName, String firstIdCell) {
Long firstTaskId = null;
if(StrUtil.isNotBlank(firstIdCell)){
try {
firstTaskId = Long.parseLong(firstIdCell);
}catch (Exception e){
log.info("一级任务id解析失败");
}
}
//TODO 一级任务负责人是项目经理 //TODO 一级任务负责人是项目经理
Long firstTaskId;
ProTaskDetail taskDetail = new ProTaskDetail(); ProTaskDetail taskDetail = new ProTaskDetail();
taskDetail.setId(snowflake.nextId()); taskDetail.setId((1 == project.getImportType() && firstTaskId != null) ? firstTaskId : snowflake.nextId());
taskDetail.setName(firstTaskName); taskDetail.setName(firstTaskName);
taskDetailDao.insertSelective(taskDetail); taskDetailDao.insertReplace(taskDetail);
firstTaskId = taskDetail.getId(); firstTaskId = taskDetail.getId();
//添加任务分解 //添加任务分解
ProTaskSub taskSub = new ProTaskSub(); ProTaskSub taskSub = new ProTaskSub();
@ -943,3 +1022,5 @@ public class ImportService implements IImportService {
return firstTaskId; return firstTaskId;
} }
} }

526
src/main/java/com/ccsens/ptos_zero/service/TallService.java

@ -1,151 +1,16 @@
//package com.ccsens.ptos_zero.service;
//
//import cn.hutool.core.collection.CollectionUtil;
//import com.ccsens.ptos_zero.bean.po.ProRole;
//import com.ccsens.ptos_zero.persist.dao.ProRoleDao;
//import com.ccsensptos.tallsdk.bean.dto.ProjectDto;
//import com.ccsensptos.tallsdk.bean.dto.RoleDto;
//import com.ccsensptos.tallsdk.bean.dto.TaskDto;
//import com.ccsensptos.tallsdk.bean.vo.ProjectVo;
//import com.ccsensptos.tallsdk.bean.vo.RoleVo;
//import com.ccsensptos.tallsdk.bean.vo.TaskVo;
//import com.ccsensptos.tallsdk.service.ITallService;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Propagation;
//import org.springframework.transaction.annotation.Transactional;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.annotation.Resource;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * @author 逗
// */
//@Slf4j
//@Service
//@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
//public class TallService implements ITallService {
//
// @Resource
// private ProRoleDao proRoleDao;
//
//
// @Override
// public List<ProjectVo.ProjectInfo> queryProjectByUser(String token,ProjectDto.QueryProjectDto param) {
// return null;
// }
//
// @Override
// public RoleVo.QueryRole queryShowRole(String token,RoleDto.QueryRoleById param) {
// //TODO 通过token向tall获取用户信息,
// Long userId = null;
//
// //返回的对象
// RoleVo.QueryRole queryRole = new RoleVo.QueryRole();
// List<RoleVo.RoleInfo> visibleList = new ArrayList<>();
// List<RoleVo.RoleInfo> invisibleList = new ArrayList<>();
//
// //查询当前用户在项目下的角色,没有则算作关注者
// List<ProRole> userRoleList = proRoleDao.queryRoleByUserId(param.getProjectId(),userId);
// //查询用户可见的角色
// List<RoleVo.RoleInfo> roleInfoList;
// if(CollectionUtil.isNotEmpty(userRoleList)){
// //不是关注者,查询可见的角色(完全屏蔽才不可见)
// roleInfoList = proRoleDao.notAttentionQueryRole(param.getProjectId(),userRoleList);
// }else {
// //是关注者查询可见的角色(未设置过对谁不可见信息的角色)
// roleInfoList = proRoleDao.attentionQueryRole(param.getProjectId());
// }
// //查询配置信息
// List<Long> showRoleList = proRoleDao.queryShowByUserAndProject(param.getProjectId(),userId);
// if(CollectionUtil.isNotEmpty(showRoleList)){
// for (Long showRoleId : showRoleList) {
// //循环配置内的信息去匹配角色列表,来确定角色该放在什么地方
// for (RoleVo.RoleInfo roleInfo : roleInfoList) {
// if(showRoleId.equals(roleInfo.getId())){
// //和配置内的信息相同则放入展示角色列表
// visibleList.add(roleInfo);
// //同时删除数组内的信息
// roleInfoList.remove(roleInfo);
// //跳出循环,开始配置信息内的下一个
// break;
// }
// }
// }
// //剩下的角色全部放在不可见角色列表
// invisibleList.addAll(roleInfoList);
// }else {
// //没有配置信息则按默认规则
// if (CollectionUtil.isNotEmpty(roleInfoList)) {
// //循环所有角色
// for (RoleVo.RoleInfo roleInfo : roleInfoList) {
// //如果是项目经理,放入展示的角色
// if (roleInfo.getPm() == 1) {
// visibleList.add(roleInfo);
// continue;
// }
// //是用户所属的角色,放入展示的角色列表
// if (roleInfo.getMine() == 1) {
// visibleList.add(roleInfo);
// continue;
// } else {
// //不是用户所属的角色,但展示角色列表数量不足设置的数量
//
// //展示数量等于0,展示全部
// if(param.getNum() == 0){
// visibleList.add(roleInfo);
// continue;
// }
// //不是用户所属的角色,但展示角色列表数量不足五个,
// if (visibleList.size() < param.getNum()) {
// visibleList.add(roleInfo);
// continue;
// }
// }
// //不满足上面条件的,放入不展示的角色列表
// invisibleList.add(roleInfo);
// }
// }
// }
// queryRole.setVisibleList(visibleList);
// queryRole.setInvisibleList(invisibleList);
// return queryRole;
// }
//
// @Override
// public List<TaskVo.QueryTask> queryPermanentGlobalTask(String token,TaskDto.QueryPermanentGlobalTask param) {
// return null;
// }
//
// @Override
// public List<TaskVo.QueryTask> queryGlobalTask(String token,TaskDto.QueryGlobalTask param) {
// return null;
// }
//
// @Override
// public List<TaskVo.QueryTask> queryRegularTask(String token,TaskDto.QueryRegularTask param) {
// return null;
// }
//
// @Override
// public List<ProjectVo.ProjectInfo> importWbs(String token,MultipartFile params) {
// return null;
// }
//}
package com.ccsens.ptos_zero.service; package com.ccsens.ptos_zero.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.ccsens.ptos_zero.bean.po.ProRole; import com.ccsens.ptos_zero.bean.po.ProRole;
import com.ccsens.ptos_zero.bean.po.ProRoleExample; import com.ccsens.ptos_zero.bean.po.ProTaskSub;
import com.ccsens.ptos_zero.bean.po.ProUser; import com.ccsens.ptos_zero.bean.po.ProUser;
import com.ccsens.ptos_zero.bean.vo.DeliverVo;
import com.ccsens.ptos_zero.persist.dao.*; import com.ccsens.ptos_zero.persist.dao.*;
import com.ccsens.ptos_zero.util.Constant; import com.ccsens.ptos_zero.util.Constant;
import com.ccsens.ptos_zero.util.ZeroCodeError; import com.ccsens.ptos_zero.util.ZeroCodeError;
@ -158,9 +23,10 @@ import com.ccsensptos.tallsdk.bean.dto.TallRoleDto;
import com.ccsensptos.tallsdk.bean.dto.TallTaskDto; import com.ccsensptos.tallsdk.bean.dto.TallTaskDto;
import com.ccsensptos.tallsdk.bean.dto.TallTokenDto; import com.ccsensptos.tallsdk.bean.dto.TallTokenDto;
import com.ccsensptos.tallsdk.bean.vo.*; import com.ccsensptos.tallsdk.bean.vo.*;
import com.ccsensptos.tallsdk.bean.vo.TallProjectVo;
import com.ccsensptos.tallsdk.service.ITallService; import com.ccsensptos.tallsdk.service.ITallService;
import com.ccsensptos.tallsdk.util.TokenUtil; import com.ccsensptos.tallsdk.util.TokenUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -187,6 +53,8 @@ public class TallService implements ITallService {
@Resource @Resource
private ProTaskDetailDao taskDetailDao; private ProTaskDetailDao taskDetailDao;
@Resource @Resource
private ProTaskSubDao proTaskSubDao;
@Resource
private ProRoleDao roleDao; private ProRoleDao roleDao;
@Resource @Resource
private ProMemberDao memberDao; private ProMemberDao memberDao;
@ -201,36 +69,31 @@ public class TallService implements ITallService {
@Resource @Resource
private IImportService importService; private IImportService importService;
@Resource @Resource
private UserDao userDao;
@Resource
private ProProjectDao proProjectDao; private ProProjectDao proProjectDao;
@Resource @Resource
private UserDao userDao; private PluDeliverDao pluDeliverDao;
@Override
public TallProjectVo.ProjectInfo findProjectById(String header, TallProjectDto.ProjectById params) {
TallProjectVo.ProjectInfo projectById = proProjectDao.findProjectById(params.getProjectId());
if (ObjectUtil.isNull(projectById)){
throw new BaseException(ZeroCodeError.PROJECT_NOT_FOUND);
}
return projectById;
}
@SneakyThrows @SneakyThrows
@Override @Override
public TallProjectVo.ProjectInfo importWbs(String token, MultipartFile params) { public TallProjectVo.ProjectInfo importWbs(String token, MultipartFile params) {
//TODO 根据token获取用户信息 //TODO 根据token获取用户信息
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET)); 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 //通过手机号获取用户在服务内的userId
ProUser user = null; ProUser user = null;
if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){ if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone()); user = userDao.getUserIdByPhone(userByToken.getPhone());
} }
if(user == null){ log.info("本服务下的用户信息:{}", user);
throw new BaseException(CodeEnum.NOT_LOGIN); if(ObjectUtil.isNull(user)){
throw new BaseException(ZeroCodeError.NOT_USER_SERVER);
} }
if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
}
String ext = FileUtil.extName(params.getOriginalFilename()); String ext = FileUtil.extName(params.getOriginalFilename());
if(StrUtil.isEmpty(ext) || !Constant.WbsExcel.WBS_FILE_FORMAT.contains(ext)){ if(StrUtil.isEmpty(ext) || !Constant.WbsExcel.WBS_FILE_FORMAT.contains(ext)){
throw new BaseException(ZeroCodeError.FILE_FORMAT_ERROR); throw new BaseException(ZeroCodeError.FILE_FORMAT_ERROR);
@ -248,23 +111,59 @@ public class TallService implements ITallService {
FileUtil.writeFromStream(params.getInputStream(), fullPath); FileUtil.writeFromStream(params.getInputStream(), fullPath);
//导入数据库 //导入数据库
return importService.importWbs(fullPath,userByToken.getId(),null); return importService.importWbs(fullPath,user.getId(),null);
} }
@SneakyThrows
@Override @Override
public List<TallProjectVo.ProjectInfo> queryProjectByUser(String token,TallProjectDto.QueryProjectDto param) { public TallWbsVo.WbsPath exportWbs(String token, TallProjectDto.ProjectById param) {
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET)); // //TODO 验证项目id是否正确
// //TODO 暂时只查询二级任务,不管二级以下的子任务
//
// //查询下项目信息
// TallWbsVo.WbsProjectInfo wbsProjectInfo = proProjectDao.getWbsProjectId(param.getProjectId());
// if(ObjectUtil.isNull(wbsProjectInfo)){
// throw new BaseException(ZeroCodeError.PROJECT_NOT_FOUND);
// }
// //查询一级任务信息
// List<TallWbsVo.WbsTaskInfo> wbsTaskInfo = taskDetailDao.getWbsTaskByProjectId(param.getProjectId());
// if(CollectionUtil.isNotEmpty(wbsTaskInfo)){
// wbsTaskInfo.forEach(taskInfo -> {
// //查询二级任务
// List<TallWbsVo.WbsSecondTask> secondTaskList = taskDetailDao.getSecondTask(taskInfo.getFirstId());
// taskInfo.setSecondTaskList(secondTaskList);
// });
// }
// //查询角色成员信息
// TallWbsVo.WbsRoleInfo wbsRoleInfo = new TallWbsVo.WbsRoleInfo();
// //查询项目经理的角色信息
// List<TallWbsVo.WbsRole> pmList = proRoleDao.getWbsRoleInfo(param.getProjectId(),0);
// //查询项目成员的角色信息
// List<TallWbsVo.WbsRole> roleList = proRoleDao.getWbsRoleInfo(param.getProjectId(),1);
// wbsRoleInfo.setPmList(pmList);
// wbsRoleInfo.setRoleList(roleList);
//
// //生成excel数据并导入文件
// String url = exportService.exportWbs(wbsProjectInfo,wbsTaskInfo,wbsRoleInfo);
//
// TallWbsVo.WbsPath wbsPath = new TallWbsVo.WbsPath();
// wbsPath.setUrl(url);
// return wbsPath;
return null;
}
// List<TallProjectVo.ProjectInfo> projectInfos = new ArrayList<>(); @Override
// TallProjectVo.ProjectInfo projectInfo = new TallProjectVo.ProjectInfo(); public TallProjectVo.ProjectInfo findProjectById(String header, TallProjectDto.ProjectById params) {
// projectInfo.setId(1485932638408675328L); TallProjectVo.ProjectInfo projectById = proProjectDao.findProjectById(params.getProjectId());
// projectInfo.setName("我的"); if (ObjectUtil.isNull(projectById)){
// projectInfo.setUrl("http://101.201.226.163:7310"); throw new BaseException(ZeroCodeError.PROJECT_NOT_FOUND);
// projectInfo.setBusinessCode("ZERO"); }
// projectInfo.setDomainCode("tall_dh"); return projectById;
// projectInfos.add(projectInfo); }
// TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET)); @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)){ if(ObjectUtil.isNull(userByToken)){
return null; return null;
} }
@ -300,7 +199,7 @@ public class TallService implements ITallService {
} }
@Override @Override
public TallRoleVo.QueryRole queryShowRole(String token,TallRoleDto.QueryRoleById param) { public TallRoleVo.QueryRole queryShowRole(String token, TallRoleDto.QueryRoleById param) {
//TODO 通过token向tall获取用户信息, //TODO 通过token向tall获取用户信息,
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET)); TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){ if(ObjectUtil.isNull(userByToken)){
@ -318,43 +217,15 @@ public class TallService implements ITallService {
//查询当前用户在项目下的角色,没有则算作关注者 //查询当前用户在项目下的角色,没有则算作关注者
List<ProRole> userRoleList = proRoleDao.queryRoleByUserId(param.getProjectId(),user == null ? null : user.getId()); List<ProRole> userRoleList = proRoleDao.queryRoleByUserId(param.getProjectId(),user == null ? null : user.getId());
//查询用户可见的角色 //查询用户可见的角色
List<TallRoleVo.RoleInfo> roleInfoList = new ArrayList<>(); List<TallRoleVo.RoleInfo> roleInfoList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(userRoleList)){ if(CollectionUtil.isNotEmpty(userRoleList)){
//不是关注者,查询可见的角色(完全屏蔽才不可见) //不是关注者,查询可见的角色(完全屏蔽才不可见)
roleInfoList = proRoleDao.notAttentionQueryRole(param.getProjectId(),userRoleList); roleInfoList = proRoleDao.notAttentionQueryRole(param.getProjectId(),userRoleList);
if(CollectionUtil.isNotEmpty(roleInfoList)){
roleInfoList.forEach(roleInfo -> {
if("我".equals(roleInfo.getName())){
roleInfo.setMine(1);
}
});
}
}else { }else {
// //是关注者查询可见的角色(未设置过对谁不可见信息的角色) //是关注者查询可见的角色(未设置过对谁不可见信息的角色)
// roleInfoList = proRoleDao.attentionQueryRole(param.getProjectId()); roleInfoList = proRoleDao.attentionQueryRole(param.getProjectId());
//TODO 0号项目游客查看所有,默认属于管理员
ProRoleExample proRoleExample = new ProRoleExample();
proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId());
List<ProRole> proRoles = proRoleDao.selectByExample(proRoleExample);
if(CollectionUtil.isNotEmpty(proRoles)){
for (ProRole proRole : proRoles) {
if("我".equals(proRole.getName())){
TallRoleVo.RoleInfo roleInfo = new TallRoleVo.RoleInfo();
roleInfo.setId(proRole.getId());
roleInfo.setName(proRole.getName());
roleInfo.setMine(1);
roleInfoList.add(roleInfo);
}else if("管理员".equals(proRole.getName())){
TallRoleVo.RoleInfo roleInfo = new TallRoleVo.RoleInfo();
roleInfo.setId(proRole.getId());
roleInfo.setName(proRole.getName());
roleInfo.setMine(1);
roleInfoList.add(roleInfo);
}
}
}
} }
//查询配置信息 //查询配置信息
List<Long> showRoleList = proRoleDao.queryShowByUserAndProject(param.getProjectId(),userByToken.getId()); List<Long> showRoleList = proRoleDao.queryShowByUserAndProject(param.getProjectId(),userByToken.getId());
@ -413,15 +284,20 @@ public class TallService implements ITallService {
} }
@Override @Override
public List<TallTaskVo.QueryTask> queryPermanentGlobalTask(String token,TallTaskDto.QueryPermanentGlobalTask param) { public List<TallTaskVo.QueryTask> queryPermanentGlobalTask(String token, TallTaskDto.QueryPermanentGlobalTask param) {
//TODO 通过token向tall获取用户信息, TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
Long userId = null; if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
//查找当前角色是否有查看权限 }
Boolean isLook = queryRoleIsLook(param.getRoleId(), userId); //通过手机号获取用户在服务内的userId
if (BooleanUtil.isFalse(isLook)) { ProUser user = null;
throw new BaseException(CodeEnum.NO_POWER); if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone());
} }
// if(ObjectUtil.isNull(user)){
// throw new BaseException(ZeroCodeError.NOT_USER_SERVER);
// }
List<Long> roleIds = new ArrayList<>(); List<Long> roleIds = new ArrayList<>();
roleIds.add(param.getRoleId()); roleIds.add(param.getRoleId());
@ -430,19 +306,27 @@ public class TallService implements ITallService {
queryPluginForTask(permanentGlobalTask); queryPluginForTask(permanentGlobalTask);
//查询任务下的检查人 //查询任务下的检查人
queryCheckerOfTask(permanentGlobalTask); queryCheckerOfTask(permanentGlobalTask);
//TODO 查询插件展示信息
queryPluginShow(permanentGlobalTask,user == null ? null : user.getId());
return permanentGlobalTask; return permanentGlobalTask;
} }
@Override @Override
public List<TallTaskVo.QueryTask> queryGlobalTask(String token,TallTaskDto.QueryGlobalTask param) { public List<TallTaskVo.QueryTask> queryGlobalTask(String token, TallTaskDto.QueryGlobalTask param) {
//TODO 通过token向tall获取用户信息, TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
Long userId = null; if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
//查找当前角色是否有查看权限 }
Boolean isLook = queryRoleIsLook(param.getRoleId(), userId); //通过手机号获取用户在服务内的userId
if (BooleanUtil.isFalse(isLook)) { ProUser user = null;
throw new BaseException(CodeEnum.NO_POWER); if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone());
} }
// if(ObjectUtil.isNull(user)){
// throw new BaseException(ZeroCodeError.NOT_USER_SERVER);
// }
List<Long> roleIds = new ArrayList<>(); List<Long> roleIds = new ArrayList<>();
roleIds.add(param.getRoleId()); roleIds.add(param.getRoleId());
//查询当前角色是否项目经理 //查询当前角色是否项目经理
@ -450,14 +334,21 @@ public class TallService implements ITallService {
queryPluginForTask(globalTask); queryPluginForTask(globalTask);
//查询任务下的检查人 //查询任务下的检查人
queryCheckerOfTask(globalTask); queryCheckerOfTask(globalTask);
//TODO 查询插件展示信息
queryPluginShow(globalTask,user == null ? null : user.getId());
return globalTask; return globalTask;
} }
@Override @Override
public List<TallTaskVo.QueryTask> queryRegularTask(String token,TallTaskDto.QueryRegularTask param) { public List<TallTaskVo.QueryTask> queryRegularTask(String token, TallTaskDto.QueryRegularTask param) {
//TODO 通过token向tall获取用户信息, //TODO 通过token向tall获取用户信息,
Long userId = null; // Long userId = null;
// //查找当前角色是否有查看权限
// Boolean isLook = queryRoleIsLook(param.getRoleId(), userId);
// if (BooleanUtil.isFalse(isLook)) {
// throw new BaseException(ZeroCodeError.NOT_PERMISSION);
// }
//查找类型:0向上查找,1向下查找(默认),下查包含自己,上查不包含 //查找类型:0向上查找,1向下查找(默认),下查包含自己,上查不包含
//根据参数配置sql语句 //根据参数配置sql语句
String query = ""; String query = "";
@ -468,11 +359,7 @@ public class TallService implements ITallService {
} else { } else {
query += "interval " + (param.getQueryNum() - 1) + " " + unit; query += "interval " + (param.getQueryNum() - 1) + " " + unit;
} }
//查找当前角色是否有查看权限
Boolean isLook = queryRoleIsLook(param.getRoleId(), userId);
if (BooleanUtil.isFalse(isLook)) {
throw new BaseException(ZeroCodeError.NOT_PERMISSION);
}
List<Long> roleIds = new ArrayList<>(); List<Long> roleIds = new ArrayList<>();
roleIds.add(param.getRoleId()); roleIds.add(param.getRoleId());
@ -562,15 +449,15 @@ public class TallService implements ITallService {
//创建任务面板的二维数组 //创建任务面板的二维数组
createSecondPanel(plugins, panelRow, panelCol); createSecondPanel(plugins, panelRow, panelCol);
//将插件放入二维数组对应的位置中 //将插件放入二维数组对应的位置中
List<TallTaskVo.TaskPluginInfo> taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getDetailId()); List<TallTaskVo.TaskPluginInfo> taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getId());
putDateInList(taskPluginInfoList, plugins, queryTask); putDateInList(taskPluginInfoList, plugins, queryTask);
} else { } else {
//根据插件最大的行和列创建二维数组 //根据插件最大的行和列创建二维数组
createPanelByPlugin(queryTask.getDetailId(), plugins, queryTask); createPanelByPlugin(plugins, queryTask);
} }
} else { } else {
//根据插件最大的行和列创建二维数组 //根据插件最大的行和列创建二维数组
createPanelByPlugin(queryTask.getDetailId(), plugins, queryTask); createPanelByPlugin(plugins, queryTask);
} }
} }
} }
@ -625,12 +512,11 @@ public class TallService implements ITallService {
/** /**
* 根据插件的最大行列创建面板 * 根据插件的最大行列创建面板
* *
* @param taskDetailId 任务详情id
* @param plugins 插件列表 * @param plugins 插件列表
* @param queryTask 任务 * @param queryTask 任务
*/ */
public void createPanelByPlugin(Long taskDetailId, List<List<TallTaskVo.TaskPluginInfo>> plugins, TallTaskVo.QueryTask queryTask) { public void createPanelByPlugin(List<List<TallTaskVo.TaskPluginInfo>> plugins, TallTaskVo.QueryTask queryTask) {
List<TallTaskVo.TaskPluginInfo> taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(taskDetailId); List<TallTaskVo.TaskPluginInfo> taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getId());
if (CollectionUtil.isNotEmpty(taskPluginInfoList)) { if (CollectionUtil.isNotEmpty(taskPluginInfoList)) {
List<Integer> col = taskPluginInfoList.stream().map(TallTaskVo.TaskPluginInfo::getCol).collect(Collectors.toList()); List<Integer> col = taskPluginInfoList.stream().map(TallTaskVo.TaskPluginInfo::getCol).collect(Collectors.toList());
List<Integer> row = taskPluginInfoList.stream().map(TallTaskVo.TaskPluginInfo::getRow).collect(Collectors.toList()); List<Integer> row = taskPluginInfoList.stream().map(TallTaskVo.TaskPluginInfo::getRow).collect(Collectors.toList());
@ -643,8 +529,186 @@ public class TallService implements ITallService {
} }
} }
/**
* 查看定期任务和任务下的插件展示信息
* @param token token
* @param param 查询条件
* @return 返回任务列表和对应的插件展示信息
*/
@Override @Override
public List<TallTaskVo.QueryTask> queryRegularTaskAndPlugin(String header, TallTaskDto.QueryRegularTask param) { public List<TallTaskVo.QueryTask> queryRegularTaskAndPlugin(String token, TallTaskDto.QueryRegularTask param) {
return null; //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(ZeroCodeError.NOT_USER_SERVER);
// }
//查找类型: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)){
return;
}
for (TallTaskVo.QueryTask queryTask : regularTask) {
if(CollectionUtil.isNotEmpty(queryTask.getPlugins())){
for (List<TallTaskVo.TaskPluginInfo> plugins : queryTask.getPlugins()) {
if(CollectionUtil.isNotEmpty(plugins)){
for (TallTaskVo.TaskPluginInfo plugin : plugins) {
System.out.println("====" + 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));
}
}
}
}
// 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(ZeroCodeError.NOT_USER_SERVER);
// }
//查询用的时间
Long queryTime = System.currentTimeMillis();
if(ObjectUtil.isNotNull(param.getTaskId())){
//根据任务id查找任务,以任务的开始时间当做查询的时间点
ProTaskSub proTaskSub = proTaskSubDao.selectByPrimaryKey(param.getTaskId());
if(ObjectUtil.isNotNull(proTaskSub) && proTaskSub.getPlanStartTime() != 0L){
queryTime = proTaskSub.getPlanStartTime();
}
}else {
if(ObjectUtil.isNotNull(param.getTimeNode())){
//没有任务id则根据时间基准线查询当前正在进行的任务(如果多个则选择时间最早的一个)
Long startTime = proTaskSubDao.getTimeByProgressTask(param.getTimeNode(),param.getRoleId());
if(ObjectUtil.isNotNull(startTime)){
queryTime = startTime;
}
}else {
//如果没有时间基准线则按当前时间查询查询任务
Long startTime = proTaskSubDao.getTimeByProgressTask(System.currentTimeMillis(),param.getRoleId());
if(ObjectUtil.isNotNull(startTime)){
queryTime = startTime;
}
}
}
//获取任务列表
PageHelper.startPage(param.getPageNum(),param.getPageSize());
List<TallTaskVo.QueryTask> regularTask = taskDetailDao.pageQueryRegularTask(param.getRoleId(),queryTime,param.getTimeUnit(),param.getQueryType());
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;
} }
} }

2
src/main/java/com/ccsens/ptos_zero/util/ZeroCodeError.java

@ -6,7 +6,7 @@ import com.ccsens.util.CodeError;
* @author * @author
*/ */
public class ZeroCodeError extends CodeError { public class ZeroCodeError extends CodeError {
public static final Code NOT_USER_SERVER = new Code(407,"您不属于该服务的成员", true);
public static final Code NOT_WBS_SHEET = new Code(501,"找不到wbs表",true); public static final Code NOT_WBS_SHEET = new Code(501,"找不到wbs表",true);
public static final Code NOT_MEMBER_SHEET = new Code(502,"找不到项目成员表",true); public static final Code NOT_MEMBER_SHEET = new Code(502,"找不到项目成员表",true);
public static final Code WSB_NOT_PROJECT_HEADER = new Code(503,"读取项目信息异常",true); public static final Code WSB_NOT_PROJECT_HEADER = new Code(503,"读取项目信息异常",true);

56
src/main/resources/mapper_dao/PluDeliverDao.xml

@ -36,6 +36,62 @@
</foreach> </foreach>
</insert> </insert>
<insert id="insertReplace" parameterType="com.ccsens.ptos_zero.bean.po.PluDeliver">
replace into t_plu_deliver
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="taskSubId != null">
task_sub_id,
</if>
<if test="name != null">
name,
</if>
<if test="description != null">
description,
</if>
<if test="operator != null">
operator,
</if>
<if test="createdAt != null">
created_at,
</if>
<if test="updatedAt != null">
updated_at,
</if>
<if test="recStatus != null">
rec_status,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIGINT},
</if>
<if test="taskSubId != null">
#{taskSubId,jdbcType=BIGINT},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="description != null">
#{description,jdbcType=VARCHAR},
</if>
<if test="operator != null">
#{operator,jdbcType=BIGINT},
</if>
<if test="createdAt != null">
#{createdAt,jdbcType=TIMESTAMP},
</if>
<if test="updatedAt != null">
#{updatedAt,jdbcType=TIMESTAMP},
</if>
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
</trim>
</insert>
<select id="queryChecker" resultType="com.ccsens.ptos_zero.bean.vo.DeliverVo$Checker"> <select id="queryChecker" resultType="com.ccsens.ptos_zero.bean.vo.DeliverVo$Checker">
SELECT SELECT
id AS memberId, id AS memberId,

68
src/main/resources/mapper_dao/ProMemberDao.xml

@ -10,6 +10,74 @@
AND rec_status = 0 AND rec_status = 0
</update> </update>
<insert id="insertReplace" parameterType="com.ccsens.ptos_zero.bean.po.ProMember">
replace into t_pro_member
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="userId != null">
user_id,
</if>
<if test="projectId != null">
project_id,
</if>
<if test="phone != null">
phone,
</if>
<if test="name != null">
name,
</if>
<if test="avatarUrl != null">
avatar_url,
</if>
<if test="operator != null">
operator,
</if>
<if test="createdAt != null">
created_at,
</if>
<if test="updatedAt != null">
updated_at,
</if>
<if test="recStatus != null">
rec_status,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIGINT},
</if>
<if test="userId != null">
#{userId,jdbcType=BIGINT},
</if>
<if test="projectId != null">
#{projectId,jdbcType=BIGINT},
</if>
<if test="phone != null">
#{phone,jdbcType=VARCHAR},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="avatarUrl != null">
#{avatarUrl,jdbcType=VARCHAR},
</if>
<if test="operator != null">
#{operator,jdbcType=BIGINT},
</if>
<if test="createdAt != null">
#{createdAt,jdbcType=TIMESTAMP},
</if>
<if test="updatedAt != null">
#{updatedAt,jdbcType=TIMESTAMP},
</if>
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
</trim>
</insert>
<select id="findUserOfMemberId" resultType="java.lang.Long"> <select id="findUserOfMemberId" resultType="java.lang.Long">
SELECT SELECT
id id

66
src/main/resources/mapper_dao/ProMemberStakeholderDao.xml

@ -0,0 +1,66 @@
<?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.ccsens.ptos_zero.persist.dao.ProMemberStakeholderDao">
<insert id="insertReplace" parameterType="com.ccsens.ptos_zero.bean.po.ProMemberStakeholder">
replace into t_pro_member_stakeholder
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="memeberId != null">
memeber_id,
</if>
<if test="stakeholderName != null">
stakeholder_name,
</if>
<if test="stakeholderPhone != null">
stakeholder_phone,
</if>
<if test="userId != null">
user_id,
</if>
<if test="operator != null">
operator,
</if>
<if test="createdAt != null">
created_at,
</if>
<if test="updatedAt != null">
updated_at,
</if>
<if test="recStatus != null">
rec_status,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIGINT},
</if>
<if test="memeberId != null">
#{memeberId,jdbcType=BIGINT},
</if>
<if test="stakeholderName != null">
#{stakeholderName,jdbcType=VARCHAR},
</if>
<if test="stakeholderPhone != null">
#{stakeholderPhone,jdbcType=VARCHAR},
</if>
<if test="userId != null">
#{userId,jdbcType=BIGINT},
</if>
<if test="operator != null">
#{operator,jdbcType=BIGINT},
</if>
<if test="createdAt != null">
#{createdAt,jdbcType=TIMESTAMP},
</if>
<if test="updatedAt != null">
#{updatedAt,jdbcType=TIMESTAMP},
</if>
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
</trim>
</insert>
</mapper>

55
src/main/resources/mapper_dao/ProRoleDao.xml

@ -2,6 +2,61 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.ptos_zero.persist.dao.ProRoleDao"> <mapper namespace="com.ccsens.ptos_zero.persist.dao.ProRoleDao">
<insert id="insertReplace" parameterType="com.ccsens.ptos_zero.bean.po.ProRole">
replace into t_pro_role
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="name != null">
name,
</if>
<if test="labelId != null">
label_id,
</if>
<if test="projectId != null">
project_id,
</if>
<if test="operator != null">
operator,
</if>
<if test="createdAt != null">
created_at,
</if>
<if test="updatedAt != null">
updated_at,
</if>
<if test="recStatus != null">
rec_status,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIGINT},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="labelId != null">
#{labelId,jdbcType=BIGINT},
</if>
<if test="projectId != null">
#{projectId,jdbcType=BIGINT},
</if>
<if test="operator != null">
#{operator,jdbcType=BIGINT},
</if>
<if test="createdAt != null">
#{createdAt,jdbcType=TIMESTAMP},
</if>
<if test="updatedAt != null">
#{updatedAt,jdbcType=TIMESTAMP},
</if>
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
</trim>
</insert>
<select id="findRoleOfProjectId" resultType="java.lang.Long"> <select id="findRoleOfProjectId" resultType="java.lang.Long">
SELECT SELECT
project_id project_id

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

@ -2,6 +2,56 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.ptos_zero.persist.dao.ProTaskDetailDao"> <mapper namespace="com.ccsens.ptos_zero.persist.dao.ProTaskDetailDao">
<insert id="insertReplace" parameterType="com.ccsens.ptos_zero.bean.po.ProTaskDetail">
replace into t_pro_task_detail
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="name != null">
name,
</if>
<if test="description != null">
description,
</if>
<if test="cycle != null">
cycle,
</if>
<if test="createdAt != null">
created_at,
</if>
<if test="updatedAt != null">
updated_at,
</if>
<if test="recStatus != null">
rec_status,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIGINT},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="description != null">
#{description,jdbcType=VARCHAR},
</if>
<if test="cycle != null">
#{cycle,jdbcType=VARCHAR},
</if>
<if test="createdAt != null">
#{createdAt,jdbcType=TIMESTAMP},
</if>
<if test="updatedAt != null">
#{updatedAt,jdbcType=TIMESTAMP},
</if>
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
</trim>
</insert>
<resultMap id="queryTask" type="com.ccsensptos.tallsdk.bean.vo.TallTaskVo$QueryTask"> <resultMap id="queryTask" type="com.ccsensptos.tallsdk.bean.vo.TallTaskVo$QueryTask">
<id column="id" property="id"/> <id column="id" property="id"/>
<result column="detailId" property="detailId"/> <result column="detailId" property="detailId"/>
@ -391,6 +441,80 @@
and s.plan_end_time &gt;= #{startTime} and s.plan_end_time &gt;= #{startTime}
</select> </select>
<select id="pageQueryRegularTask" resultType="com.ccsensptos.tallsdk.bean.vo.TallTaskVo$QueryTask">
SELECT
alltask.*
FROM
(
SELECT
ts.id,
td.id AS detailId,
td.`name`,
td.description,
ts.plan_start_time AS planStart,
ts.plan_duration,
ts.plan_end_time,
ts.real_end_time,
ts.real_start_time AS realStart,
ts.real_duration,
ts.task_status AS process,
tf.flow_type AS skip,
tf.jump_task_detail_id AS skipTaskId,
tpi.back_color AS backgroundColor,
tpi.round_corner AS borderRadius,
tpi.border AS border,
tpi.shadow AS shadow,
tpi.width AS width,
tpi.height AS height,
tpi.`row` AS `row`,
tpi.col AS col
FROM
t_pro_task_detail AS td
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id AND tf.rec_status = 0
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id AND tpi.rec_status = 0
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id
LEFT JOIN t_label AS l ON l.id = lb.label_id
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id
WHERE
td.rec_status = 0
AND ts.rec_status = 0
AND lb.rec_status = 0
AND l.rec_status = 0
AND lt.rec_status = 0
AND rt.rec_status = 0
AND lb.business_type = 0
AND l.`level` = 3
AND lt.label_type = 1
AND ts.plan_start_time != 0
AND ts.plan_duration != 0
AND rt.role_id = #{roleId}
<if test="queryType == 0">
AND plan_start_time &lt; #{timeNode}
</if>
<if test="queryType == 1">
AND plan_start_time >= #{timeNode}
</if>
) 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
LEFT JOIN t_label_type AS lltt ON ll.label_type_id = lltt.id
WHERE
llbb.rec_status = 0
AND ll.rec_status = 0
AND lltt.rec_status = 0
AND lltt.label_type = 0
AND llbb.business_type = 0
AND ll.`level` >= #{timeUnit}
<if test="queryType == 0">
ORDER BY alltask.planStart DESC,id DESC
</if>
<if test="queryType == 1">
ORDER BY alltask.planStart,id
</if>
</select>
<!-- <select id="projectIdByTaskDetailId" resultType="java.lang.Long">--> <!-- <select id="projectIdByTaskDetailId" resultType="java.lang.Long">-->
<!-- SELECT--> <!-- SELECT-->
<!-- b.business_id--> <!-- b.business_id-->

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

@ -2,31 +2,97 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.ptos_zero.persist.dao.ProTaskPluginDao"> <mapper namespace="com.ccsens.ptos_zero.persist.dao.ProTaskPluginDao">
<!-- <insert id="insertAllTaskPlugin">--> <insert id="insertReplace" parameterType="com.ccsens.ptos_zero.bean.po.ProTaskPlugin">
<!-- INSERT INTO t_pro_task_plugin (--> replace into t_pro_task_plugin
<!-- id,--> <trim prefix="(" suffix=")" suffixOverrides=",">
<!-- param,--> <if test="id != null">
<!-- plgin_row,--> id,
<!-- plgin_col,--> </if>
<!-- task_detail_id,--> <if test="param != null">
<!-- plugin_id,--> param,
<!-- colspan,--> </if>
<!-- rowspan--> <if test="plginRow != null">
<!-- )--> plgin_row,
<!-- VALUES--> </if>
<!-- <foreach collection="taskPluginList" item="item" separator=",">--> <if test="plginCol != null">
<!-- (#{item.id},#{item.param},#{item.plginRow},#{item.plginCol},#{item.taskDetailId},#{item.pluginId},#{item.colspan},#{item.rowspan})--> plgin_col,
<!-- </foreach>--> </if>
<!-- </insert>--> <if test="taskDetailId != null">
task_detail_id,
<!-- <update id="delByTaskDetailId">--> </if>
<!-- update--> <if test="pluginId != null">
<!-- t_pro_task_plugin--> plugin_id,
<!-- set--> </if>
<!-- rec_status = 2--> <if test="businessPluginId != null">
<!-- where--> business_plugin_id,
<!-- task_detail_id = #{taskDetailId}--> </if>
<!-- </update>--> <if test="code != null">
code,
</if>
<if test="pluginInner != null">
plugin_inner,
</if>
<if test="createdAt != null">
created_at,
</if>
<if test="updatedAt != null">
updated_at,
</if>
<if test="recStatus != null">
rec_status,
</if>
<if test="colspan != null">
colspan,
</if>
<if test="rowspan != null">
rowspan,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIGINT},
</if>
<if test="param != null">
#{param,jdbcType=VARCHAR},
</if>
<if test="plginRow != null">
#{plginRow,jdbcType=INTEGER},
</if>
<if test="plginCol != null">
#{plginCol,jdbcType=INTEGER},
</if>
<if test="taskDetailId != null">
#{taskDetailId,jdbcType=BIGINT},
</if>
<if test="pluginId != null">
#{pluginId,jdbcType=BIGINT},
</if>
<if test="businessPluginId != null">
#{businessPluginId,jdbcType=BIGINT},
</if>
<if test="code != null">
#{code,jdbcType=VARCHAR},
</if>
<if test="pluginInner != null">
#{pluginInner,jdbcType=TINYINT},
</if>
<if test="createdAt != null">
#{createdAt,jdbcType=TIMESTAMP},
</if>
<if test="updatedAt != null">
#{updatedAt,jdbcType=TIMESTAMP},
</if>
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
<if test="colspan != null">
#{colspan,jdbcType=INTEGER},
</if>
<if test="rowspan != null">
#{rowspan,jdbcType=INTEGER},
</if>
</trim>
</insert>
<select id="queryTaskOfPlugin" resultType="com.ccsensptos.tallsdk.bean.vo.TallTaskVo$TaskPluginInfo"> <select id="queryTaskOfPlugin" resultType="com.ccsensptos.tallsdk.bean.vo.TallTaskVo$TaskPluginInfo">
SELECT SELECT

100
src/main/resources/mapper_dao/ProTaskSubDao.xml

@ -15,6 +15,87 @@
(#{item.id},#{item.planStartTime},#{item.planDuration},#{item.planEndTime},#{item.taskDetailId}) (#{item.id},#{item.planStartTime},#{item.planDuration},#{item.planEndTime},#{item.taskDetailId})
</foreach> </foreach>
</insert> </insert>
<insert id="insertReplace" parameterType="com.ccsens.ptos_zero.bean.po.ProTaskSub">
replace into t_pro_task_sub
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="planStartTime != null">
plan_start_time,
</if>
<if test="planDuration != null">
plan_duration,
</if>
<if test="planEndTime != null">
plan_end_time,
</if>
<if test="realStartTime != null">
real_start_time,
</if>
<if test="realDuration != null">
real_duration,
</if>
<if test="realEndTime != null">
real_end_time,
</if>
<if test="taskStatus != null">
task_status,
</if>
<if test="taskDetailId != null">
task_detail_id,
</if>
<if test="createdAt != null">
created_at,
</if>
<if test="updatedAt != null">
updated_at,
</if>
<if test="recStatus != null">
rec_status,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIGINT},
</if>
<if test="planStartTime != null">
#{planStartTime,jdbcType=BIGINT},
</if>
<if test="planDuration != null">
#{planDuration,jdbcType=BIGINT},
</if>
<if test="planEndTime != null">
#{planEndTime,jdbcType=BIGINT},
</if>
<if test="realStartTime != null">
#{realStartTime,jdbcType=BIGINT},
</if>
<if test="realDuration != null">
#{realDuration,jdbcType=BIGINT},
</if>
<if test="realEndTime != null">
#{realEndTime,jdbcType=BIGINT},
</if>
<if test="taskStatus != null">
#{taskStatus,jdbcType=TINYINT},
</if>
<if test="taskDetailId != null">
#{taskDetailId,jdbcType=BIGINT},
</if>
<if test="createdAt != null">
#{createdAt,jdbcType=TIMESTAMP},
</if>
<if test="updatedAt != null">
#{updatedAt,jdbcType=TIMESTAMP},
</if>
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
</trim>
</insert>
<update id="deleteOldSubTask"> <update id="deleteOldSubTask">
update update
t_pro_task_sub t_pro_task_sub
@ -60,4 +141,23 @@
LIMIT 1 LIMIT 1
</select> </select>
<select id="getTimeByProgressTask" resultType="java.lang.Long">
SELECT
s.plan_start_time
FROM
t_pro_task_detail d,
t_pro_task_sub s,
t_pro_role_task r
WHERE
d.id = s.task_detail_id
and d.id = r.task_id
and r.role_id = #{roleId}
and s.plan_start_time &lt;= #{timeNode}
and s.plan_end_time &gt; #{timeNode}
and d.rec_status = 0
and s.rec_status = 0
and r.rec_status = 0
ORDER BY s.plan_start_time
limit 1
</select>
</mapper> </mapper>
Loading…
Cancel
Save