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. 371
      src/main/java/com/ccsens/ptos_zero/service/ImportService.java
  9. 528
      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 {
void insertReplace(PluDeliver pluDeliver);
/**
* 查询任务下的交付物信息
* @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;
import com.ccsens.ptos_zero.bean.po.ProMember;
import com.ccsens.ptos_zero.persist.mapper.ProMemberMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@ -13,6 +14,8 @@ import java.util.List;
@Repository
public interface ProMemberDao extends ProMemberMapper {
void insertReplace(ProMember proMember);
/**
* 查找用户的成员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
public interface ProRoleDao extends ProRoleMapper {
void insertReplace(ProRole role);
/**
* 根据角色id查找项目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.po.ProTaskDetail;
import com.ccsens.ptos_zero.bean.po.ProTaskSub;
import com.ccsens.ptos_zero.bean.vo.TaskVo;
import com.ccsens.ptos_zero.persist.mapper.ProTaskDetailMapper;
@ -18,6 +19,8 @@ import java.util.List;
*/
@Repository
public interface ProTaskDetailDao extends ProTaskDetailMapper {
void insertReplace(ProTaskDetail taskDetail);
/**
* 根据角色查找永久日常任务
* @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);
/**
* 分页查找定期任务
* @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
// */

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

@ -1,5 +1,6 @@
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.ccsensptos.tallsdk.bean.vo.TallTaskVo;
import org.apache.ibatis.annotations.Param;
@ -26,6 +27,7 @@ public interface ProTaskPluginDao extends ProTaskPluginMapper {
*/
String queryParamByTaskId(@Param("detailTaskId")Long taskDetailId);
void insertReplace(ProTaskPlugin proTaskPlugin);
// /**
// * 根据任务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
*/
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);
}

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

528
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;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.BooleanUtil;
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.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.vo.DeliverVo;
import com.ccsens.ptos_zero.persist.dao.*;
import com.ccsens.ptos_zero.util.Constant;
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.TallTokenDto;
import com.ccsensptos.tallsdk.bean.vo.*;
import com.ccsensptos.tallsdk.bean.vo.TallProjectVo;
import com.ccsensptos.tallsdk.service.ITallService;
import com.ccsensptos.tallsdk.util.TokenUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -187,6 +53,8 @@ public class TallService implements ITallService {
@Resource
private ProTaskDetailDao taskDetailDao;
@Resource
private ProTaskSubDao proTaskSubDao;
@Resource
private ProRoleDao roleDao;
@Resource
private ProMemberDao memberDao;
@ -201,36 +69,31 @@ public class TallService implements ITallService {
@Resource
private IImportService importService;
@Resource
private UserDao userDao;
@Resource
private ProProjectDao proProjectDao;
@Resource
private UserDao userDao;
@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;
}
private PluDeliverDao pluDeliverDao;
@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());
}
if(user == null){
throw new BaseException(CodeEnum.NOT_LOGIN);
log.info("本服务下的用户信息:{}", user);
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());
if(StrUtil.isEmpty(ext) || !Constant.WbsExcel.WBS_FILE_FORMAT.contains(ext)){
throw new BaseException(ZeroCodeError.FILE_FORMAT_ERROR);
@ -248,23 +111,59 @@ public class TallService implements ITallService {
FileUtil.writeFromStream(params.getInputStream(), fullPath);
//导入数据库
return importService.importWbs(fullPath,userByToken.getId(),null);
return importService.importWbs(fullPath,user.getId(),null);
}
@SneakyThrows
@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));
public TallWbsVo.WbsPath exportWbs(String token, TallProjectDto.ProjectById param) {
// //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<>();
// TallProjectVo.ProjectInfo projectInfo = new TallProjectVo.ProjectInfo();
// projectInfo.setId(1485932638408675328L);
// projectInfo.setName("我的");
// projectInfo.setUrl("http://101.201.226.163:7310");
// projectInfo.setBusinessCode("ZERO");
// projectInfo.setDomainCode("tall_dh");
// projectInfos.add(projectInfo);
// TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
@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;
}
@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;
}
@ -300,9 +199,9 @@ public class TallService implements ITallService {
}
@Override
public TallRoleVo.QueryRole queryShowRole(String token,TallRoleDto.QueryRoleById param) {
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));
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);
}
@ -318,43 +217,15 @@ public class TallService implements ITallService {
//查询当前用户在项目下的角色,没有则算作关注者
List<ProRole> userRoleList = proRoleDao.queryRoleByUserId(param.getProjectId(),user == null ? null : user.getId());
//查询用户可见的角色
List<TallRoleVo.RoleInfo> roleInfoList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(userRoleList)){
//不是关注者,查询可见的角色(完全屏蔽才不可见)
roleInfoList = proRoleDao.notAttentionQueryRole(param.getProjectId(),userRoleList);
if(CollectionUtil.isNotEmpty(roleInfoList)){
roleInfoList.forEach(roleInfo -> {
if("我".equals(roleInfo.getName())){
roleInfo.setMine(1);
}
});
}
}else {
// //是关注者查询可见的角色(未设置过对谁不可见信息的角色)
// 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);
}
}
}
//是关注者查询可见的角色(未设置过对谁不可见信息的角色)
roleInfoList = proRoleDao.attentionQueryRole(param.getProjectId());
}
//查询配置信息
List<Long> showRoleList = proRoleDao.queryShowByUserAndProject(param.getProjectId(),userByToken.getId());
@ -413,15 +284,20 @@ public class TallService implements ITallService {
}
@Override
public List<TallTaskVo.QueryTask> queryPermanentGlobalTask(String token,TallTaskDto.QueryPermanentGlobalTask param) {
//TODO 通过token向tall获取用户信息,
Long userId = null;
//查找当前角色是否有查看权限
Boolean isLook = queryRoleIsLook(param.getRoleId(), userId);
if (BooleanUtil.isFalse(isLook)) {
throw new BaseException(CodeEnum.NO_POWER);
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(ZeroCodeError.NOT_USER_SERVER);
// }
List<Long> roleIds = new ArrayList<>();
roleIds.add(param.getRoleId());
@ -430,19 +306,27 @@ public class TallService implements ITallService {
queryPluginForTask(permanentGlobalTask);
//查询任务下的检查人
queryCheckerOfTask(permanentGlobalTask);
//TODO 查询插件展示信息
queryPluginShow(permanentGlobalTask,user == null ? null : user.getId());
return permanentGlobalTask;
}
@Override
public List<TallTaskVo.QueryTask> queryGlobalTask(String token,TallTaskDto.QueryGlobalTask param) {
//TODO 通过token向tall获取用户信息,
Long userId = null;
//查找当前角色是否有查看权限
Boolean isLook = queryRoleIsLook(param.getRoleId(), userId);
if (BooleanUtil.isFalse(isLook)) {
throw new BaseException(CodeEnum.NO_POWER);
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(ZeroCodeError.NOT_USER_SERVER);
// }
List<Long> roleIds = new ArrayList<>();
roleIds.add(param.getRoleId());
//查询当前角色是否项目经理
@ -450,14 +334,21 @@ public class TallService implements ITallService {
queryPluginForTask(globalTask);
//查询任务下的检查人
queryCheckerOfTask(globalTask);
//TODO 查询插件展示信息
queryPluginShow(globalTask,user == null ? null : user.getId());
return globalTask;
}
@Override
public List<TallTaskVo.QueryTask> queryRegularTask(String token,TallTaskDto.QueryRegularTask param) {
public List<TallTaskVo.QueryTask> queryRegularTask(String token, TallTaskDto.QueryRegularTask param) {
//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向下查找(默认),下查包含自己,上查不包含
//根据参数配置sql语句
String query = "";
@ -468,11 +359,7 @@ public class TallService implements ITallService {
} else {
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<>();
roleIds.add(param.getRoleId());
@ -562,15 +449,15 @@ public class TallService implements ITallService {
//创建任务面板的二维数组
createSecondPanel(plugins, panelRow, panelCol);
//将插件放入二维数组对应的位置中
List<TallTaskVo.TaskPluginInfo> taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getDetailId());
List<TallTaskVo.TaskPluginInfo> taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getId());
putDateInList(taskPluginInfoList, plugins, queryTask);
} else {
//根据插件最大的行和列创建二维数组
createPanelByPlugin(queryTask.getDetailId(), plugins, queryTask);
createPanelByPlugin(plugins, queryTask);
}
} else {
//根据插件最大的行和列创建二维数组
createPanelByPlugin(queryTask.getDetailId(), plugins, queryTask);
createPanelByPlugin(plugins, queryTask);
}
}
}
@ -625,12 +512,11 @@ public class TallService implements ITallService {
/**
* 根据插件的最大行列创建面板
*
* @param taskDetailId 任务详情id
* @param plugins 插件列表
* @param queryTask 任务
*/
public void createPanelByPlugin(Long taskDetailId, List<List<TallTaskVo.TaskPluginInfo>> plugins, TallTaskVo.QueryTask queryTask) {
List<TallTaskVo.TaskPluginInfo> taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(taskDetailId);
public void createPanelByPlugin(List<List<TallTaskVo.TaskPluginInfo>> plugins, TallTaskVo.QueryTask queryTask) {
List<TallTaskVo.TaskPluginInfo> taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getId());
if (CollectionUtil.isNotEmpty(taskPluginInfoList)) {
List<Integer> col = taskPluginInfoList.stream().map(TallTaskVo.TaskPluginInfo::getCol).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
public List<TallTaskVo.QueryTask> queryRegularTaskAndPlugin(String header, TallTaskDto.QueryRegularTask param) {
return null;
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(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
*/
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_MEMBER_SHEET = new Code(502,"找不到项目成员表",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>
</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 AS memberId,

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

@ -10,6 +10,74 @@
AND rec_status = 0
</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

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">
<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
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">
<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">
<id column="id" property="id"/>
<result column="detailId" property="detailId"/>
@ -391,6 +441,80 @@
and s.plan_end_time &gt;= #{startTime}
</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-->
<!-- 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">
<mapper namespace="com.ccsens.ptos_zero.persist.dao.ProTaskPluginDao">
<!-- <insert id="insertAllTaskPlugin">-->
<!-- INSERT INTO t_pro_task_plugin (-->
<!-- id,-->
<!-- param,-->
<!-- plgin_row,-->
<!-- plgin_col,-->
<!-- task_detail_id,-->
<!-- plugin_id,-->
<!-- colspan,-->
<!-- rowspan-->
<!-- )-->
<!-- VALUES-->
<!-- <foreach collection="taskPluginList" item="item" separator=",">-->
<!-- (#{item.id},#{item.param},#{item.plginRow},#{item.plginCol},#{item.taskDetailId},#{item.pluginId},#{item.colspan},#{item.rowspan})-->
<!-- </foreach>-->
<!-- </insert>-->
<!-- <update id="delByTaskDetailId">-->
<!-- update-->
<!-- t_pro_task_plugin-->
<!-- set-->
<!-- rec_status = 2-->
<!-- where-->
<!-- task_detail_id = #{taskDetailId}-->
<!-- </update>-->
<insert id="insertReplace" parameterType="com.ccsens.ptos_zero.bean.po.ProTaskPlugin">
replace into t_pro_task_plugin
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="param != null">
param,
</if>
<if test="plginRow != null">
plgin_row,
</if>
<if test="plginCol != null">
plgin_col,
</if>
<if test="taskDetailId != null">
task_detail_id,
</if>
<if test="pluginId != null">
plugin_id,
</if>
<if test="businessPluginId != null">
business_plugin_id,
</if>
<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

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

@ -15,6 +15,87 @@
(#{item.id},#{item.planStartTime},#{item.planDuration},#{item.planEndTime},#{item.taskDetailId})
</foreach>
</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
t_pro_task_sub
@ -60,4 +141,23 @@
LIMIT 1
</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>
Loading…
Cancel
Save