Browse Source

删除common包

ptos
zhizhi wu 4 years ago
parent
commit
57748ab9ff
  1. 4
      pom.xml
  2. 92
      src/main/java/com/ccsens/ptccsens/api/project/MemberController.java
  3. 39
      src/main/java/com/ccsens/ptccsens/api/project/PluginController.java
  4. 38
      src/main/java/com/ccsens/ptccsens/api/project/PowerController.java
  5. 66
      src/main/java/com/ccsens/ptccsens/api/project/ProjectController.java
  6. 99
      src/main/java/com/ccsens/ptccsens/api/project/RoleController.java
  7. 48
      src/main/java/com/ccsens/ptccsens/api/project/ShareController.java
  8. 129
      src/main/java/com/ccsens/ptccsens/api/project/TaskController.java
  9. 46
      src/main/java/com/ccsens/ptccsens/api/project/UserController.java
  10. 74
      src/main/java/com/ccsens/ptccsens/api/project/WbsController.java
  11. 2
      src/main/java/com/ccsens/ptccsens/bean/dto/FinanceDto.java
  12. 2
      src/main/java/com/ccsens/ptccsens/persist/dao/PluginDao.java
  13. 13
      src/main/java/com/ccsens/ptccsens/persist/dao/ProMemberDao.java
  14. 12
      src/main/java/com/ccsens/ptccsens/persist/dao/ProTaskDetailDao.java
  15. 12
      src/main/java/com/ccsens/ptccsens/persist/dao/SPluginDao.java
  16. 29
      src/main/java/com/ccsens/ptccsens/persist/dao/SProjectDao.java
  17. 23
      src/main/java/com/ccsens/ptccsens/persist/dao/STaskDao.java
  18. 15
      src/main/java/com/ccsens/ptccsens/persist/dao/SubLabelDao.java
  19. 13
      src/main/java/com/ccsens/ptccsens/service/FinanceService.java
  20. 18
      src/main/java/com/ccsens/ptccsens/service/IImportService.java
  21. 17
      src/main/java/com/ccsens/ptccsens/service/IUserService.java
  22. 896
      src/main/java/com/ccsens/ptccsens/service/ImportService.java
  23. 4
      src/main/java/com/ccsens/ptccsens/service/ProjectFinanceService.java
  24. 33
      src/main/java/com/ccsens/ptccsens/service/UserService.java
  25. 2
      src/main/resources/application-dev.yml
  26. 2
      src/main/resources/application-prod.yml
  27. 2
      src/main/resources/application-test.yml
  28. 4
      src/main/resources/application.yml
  29. 2
      src/main/resources/logback-spring.xml
  30. 15
      src/main/resources/mapper_dao/ProMemberDao.xml
  31. 25
      src/main/resources/mapper_dao/ProTaskDetailDao.xml
  32. 25
      src/main/resources/mapper_dao/SPluginDao.xml
  33. 50
      src/main/resources/mapper_dao/SProjectDao.xml
  34. 38
      src/main/resources/mapper_dao/STaskDao.xml
  35. 29
      src/main/resources/mapper_dao/SubLableDao.xml

4
pom.xml

@ -28,11 +28,11 @@
<version>1.0-SNAPSHOT</version>
</dependency>
<!--公用接口-->
<dependency>
<!--<dependency>
<artifactId>common</artifactId>
<groupId>com.ccsens</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependency>-->
<!--util 工具类-->
<dependency>
<groupId>com.ccsens</groupId>

92
src/main/java/com/ccsens/ptccsens/api/project/MemberController.java

@ -1,92 +0,0 @@
package com.ccsens.ptccsens.api.project;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.common.bean.dto.CMemberDto;
import com.ccsens.common.bean.vo.CMemberVo;
import com.ccsens.common.service.MemberService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author
*/
@Api(tags = "角色相关" , description = "DebugController | ")
@RestController
@RequestMapping("/member")
@Slf4j
public class MemberController {
@Resource
private MemberService memberService;
@MustLogin
@ApiOperation(value = "查找项目下的成员", notes = "")
@RequestMapping(value = "/query", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<CMemberVo.MemberInfo>> queryByProjectId(@ApiParam @Validated @RequestBody QueryDto<CMemberDto.QueryMemberByProject> params) {
log.info("查找项目下的成员:{}",params);
List<CMemberVo.MemberInfo> memberInfoList = memberService.queryByProject(params.getParam(), params.getUserId());
log.info("项目下的成员列表:{}",memberInfoList);
return JsonResponse.newInstance().ok(memberInfoList);
}
@MustLogin
@ApiOperation(value = "根据id查找成员", notes = "")
@RequestMapping(value = "/getById", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<CMemberVo.MemberInfo>> getMemberById(@ApiParam @Validated @RequestBody QueryDto<CMemberDto.GetMember> params) {
log.info("根据id查找成员:{}",params);
CMemberVo.MemberInfo memberInfo = memberService.getMemberById(params.getParam(), params.getUserId());
log.info("根据id查找成员信息:{}",memberInfo);
return JsonResponse.newInstance().ok(memberInfo);
}
@MustLogin
@ApiOperation(value = "添加成员", notes = "")
@RequestMapping(value = "/save", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse saveMember(@ApiParam @Validated @RequestBody QueryDto<CMemberDto.SaveMemberInfo> params) {
log.info("添加成员:{}",params);
memberService.saveMember(params.getParam(), params.getUserId());
log.info("添加成员成功");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "修改成员信息", notes = "")
@RequestMapping(value = "/update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updateMember(@ApiParam @Validated @RequestBody QueryDto<CMemberDto.UpdateMemberInfo> params) {
log.info("修改成员信息:{}",params);
memberService.updateMember(params.getParam(), params.getUserId());
log.info("修改成员信息成功");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "删除成员信息", notes = "")
@RequestMapping(value = "/delete", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse delMember(@ApiParam @Validated @RequestBody QueryDto<CMemberDto.GetMember> params) {
log.info("删除成员信息:{}",params);
memberService.deleteMember(params.getParam(), params.getUserId());
log.info("删除成员信息成功");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "修改成员所属的角色", notes = "")
@RequestMapping(value = "/memberRoles", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updateMemberRoles(@ApiParam @Validated @RequestBody QueryDto<CMemberDto.UpdateMemberRoles> params) {
log.info("修改成员所属的角色:{}",params);
memberService.updateMemberRoles(params.getParam(), params.getUserId());
log.info("修改成员所属的角色成功");
return JsonResponse.newInstance().ok();
}
}

39
src/main/java/com/ccsens/ptccsens/api/project/PluginController.java

@ -1,39 +0,0 @@
package com.ccsens.ptccsens.api.project;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.common.bean.dto.CPluginDto;
import com.ccsens.common.service.IPluginService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author
*/
@Api(tags = "插件相关" , description = "DebugController | ")
@RestController
@RequestMapping("/plugin")
@Slf4j
public class PluginController {
@Resource
private IPluginService pluginService;
@MustLogin
@ApiOperation(value = "给任务添加插件", notes = "")
@RequestMapping(value = "/save", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse queryPatientList(@ApiParam @Validated @RequestBody QueryDto<List<CPluginDto.UpdateTaskPlugin>> params) throws Exception{
pluginService.updateTaskPlugin(params.getParam());
return JsonResponse.newInstance().ok();
}
}

38
src/main/java/com/ccsens/ptccsens/api/project/PowerController.java

@ -1,38 +0,0 @@
package com.ccsens.ptccsens.api.project;
import com.ccsens.common.bean.dto.CProjectDto;
import com.ccsens.common.service.IPowerService;
import com.ccsens.util.JsonResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author
*/
@Api(tags = "权限相关" , description = "")
@RestController
@RequestMapping("/power")
@Slf4j
public class PowerController {
@Resource
private IPowerService powerService;
@ApiOperation(value = "查询用户在项目中的权限", notes = "")
@RequestMapping(value = "/query", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<Integer> queryPatientList(@ApiParam @Validated @RequestBody CProjectDto.QueryPower params) throws Exception{
Integer power = powerService.queryUserPower(params.getProjectId(), params.getUserId());
return JsonResponse.newInstance().ok(power);
}
}

66
src/main/java/com/ccsens/ptccsens/api/project/ProjectController.java

@ -1,66 +0,0 @@
package com.ccsens.ptccsens.api.project;
import com.ccsens.common.bean.dto.CProjectDto;
import com.ccsens.common.bean.vo.CProjectVo;
import com.ccsens.common.service.IProjectService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author
*/
@Api(tags = "项目相关" , description = "DebugController | ")
@RestController
@RequestMapping("/project")
@Slf4j
public class ProjectController {
@Resource
private IProjectService projectService;
@ApiOperation(value = "根据id查询项目信息", notes = "根据id查询项目信息")
@RequestMapping(value = "/findProjectById", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CProjectVo.ProjectInfo> findProjectById(@ApiParam @Validated @RequestBody QueryDto<CProjectDto.ProjectById> params) throws Exception{
CProjectVo.ProjectInfo projectById = projectService.findProjectById(params.getParam(), params.getUserId());
return JsonResponse.newInstance().ok(projectById);
}
@ApiOperation(value = "查询子项目", notes = "查询子项目")
@RequestMapping(value = "/findSonProject", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<CProjectVo.ProjectInfo>> findSonProject(@ApiParam @Validated @RequestBody QueryDto<CProjectDto.FindSonProject> params) throws Exception{
log.info("查询子项目开始");
List<CProjectVo.ProjectInfo> projectInfoList = projectService.findSonProject(params.getParam(), params.getUserId());
log.info("查询子项目结束{}",projectInfoList);
return JsonResponse.newInstance().ok(projectInfoList);
}
@ApiOperation(value = "删除项目", notes = "删除项目")
@RequestMapping(value = "/deleteProject", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse deleteProject(@ApiParam @Validated @RequestBody QueryDto<CProjectDto.ProjectById> params) throws Exception{
log.info("删除项目开始");
projectService.deleteProjectById(params.getParam(), params.getUserId());
log.info("删除项目结束");
return JsonResponse.newInstance().ok();
}
@RequestMapping(value = "/tallDelProject", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse deleteProject(@ApiParam @Validated @RequestBody CProjectDto.ProjectById params) throws Exception{
log.info("删除项目开始");
projectService.deleteProjectById(params,null);
log.info("删除项目结束");
return JsonResponse.newInstance().ok();
}
}

99
src/main/java/com/ccsens/ptccsens/api/project/RoleController.java

@ -1,99 +0,0 @@
package com.ccsens.ptccsens.api.project;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.common.bean.dto.CRoleDto;
import com.ccsens.common.bean.vo.CRoleVo;
import com.ccsens.common.service.IProRoleService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author
*/
@Api(tags = "角色相关" , description = "DebugController | ")
@RestController
@RequestMapping("/role")
@Slf4j
public class RoleController {
@Resource
private IProRoleService roleService;
@MustLogin
@ApiOperation(value = "根据项目id查找角色", notes = "")
@RequestMapping(value = "/show", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CRoleVo.QueryRole> queryByProjectId(@ApiParam @Validated @RequestBody QueryDto<CRoleDto.QueryRoleById> params) {
CRoleVo.QueryRole queryRole = roleService.queryShowRole(params.getParam(), params.getUserId());
return JsonResponse.newInstance().ok(queryRole);
}
@MustLogin
@ApiOperation(value = "修改角色展示", notes = "")
@RequestMapping(value = "/updateShow", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updateShow(@ApiParam @Validated @RequestBody QueryDto<CRoleDto.UpdateRoleShow> params) {
roleService.updateShowRole(params.getParam(),params.getUserId());
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "查询角色下的所有成员", notes = "")
@RequestMapping(value = "/queryMemberOfRole", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<CRoleVo.MemberOfRoleInfo>> queryMemberOfRole(@ApiParam @Validated @RequestBody QueryDto<CRoleDto.QueryMemberOfRole> params) {
log.info("查询角色下的所有成员开始{}",params);
List<CRoleVo.MemberOfRoleInfo> member = roleService.queryMemberOfRole(params.getParam(),params.getUserId());
log.info("查询角色下的所有成员开始{}",params);
return JsonResponse.newInstance().ok(member);
}
@MustLogin
@ApiOperation(value = "添加角色", notes = "")
@RequestMapping(value = "/save", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse saveRole(@ApiParam @Validated @RequestBody QueryDto<CRoleDto.SaveRole> params) {
log.info("添加角色{}",params);
roleService.saveRole(params.getParam(),params.getUserId());
log.info("添加角色成功");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "修改角色信息", notes = "")
@RequestMapping(value = "/update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updateRole(@ApiParam @Validated @RequestBody QueryDto<CRoleDto.UpdateRole> params) {
log.info("修改角色信息{}",params);
roleService.updateRole(params.getParam(),params.getUserId());
log.info("修改角色信息成功");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "删除角色", notes = "")
@RequestMapping(value = "/delete", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse deleteRole(@ApiParam @Validated @RequestBody QueryDto<CRoleDto.QueryMemberOfRole> params) {
log.info("删除角色{}",params);
roleService.delRole(params.getParam(),params.getUserId());
log.info("删除角色成功");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "修改角色下的成员", notes = "")
@RequestMapping(value = "/roleMembers", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updateRoleMembers(@ApiParam @Validated @RequestBody QueryDto<CRoleDto.UpdateRoleMembers> params) {
log.info("修改角色下的成员{}",params);
roleService.updateRoleMembers(params.getParam(),params.getUserId());
log.info("修改角色下的成员成功");
return JsonResponse.newInstance().ok();
}
}

48
src/main/java/com/ccsens/ptccsens/api/project/ShareController.java

@ -1,48 +0,0 @@
package com.ccsens.ptccsens.api.project;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.common.bean.dto.CShareDto;
import com.ccsens.common.bean.vo.CShareVo;
import com.ccsens.common.service.IShareService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author AUSU
*/
@Api(tags = "分享相关")
@RestController
@RequestMapping("/share")
@Slf4j
public class ShareController {
@Resource
private IShareService shareService;
@MustLogin
@ApiOperation(value = "创建分享连接", notes = "")
@RequestMapping(value = "/create", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CShareVo.CreateShareUrl> createShareUrl(@ApiParam @Validated @RequestBody QueryDto<CShareDto.CreateShareUrl> params) {
CShareVo.CreateShareUrl shareUrl = shareService.createShareUrl(params.getParam(), params.getUserId());
return JsonResponse.newInstance().ok(shareUrl);
}
@MustLogin
@ApiOperation(value = "点击分享连接", notes = "")
@RequestMapping(value = "/click", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<CShareVo.ClickShareInfo> queryByProjectId(@ApiParam @Validated @RequestBody QueryDto<CShareDto.ClickShareUrl> params) {
CShareVo.ClickShareInfo clickShareInfo = shareService.clickShareUrl(params.getParam(), params.getUserId(),params.getUserName(),params.getPhone());
return JsonResponse.newInstance().ok(clickShareInfo);
}
}

129
src/main/java/com/ccsens/ptccsens/api/project/TaskController.java

@ -1,129 +0,0 @@
package com.ccsens.ptccsens.api.project;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.common.bean.dto.CPluginDto;
import com.ccsens.common.bean.dto.CTaskDto;
import com.ccsens.common.bean.vo.CPluginVo;
import com.ccsens.common.bean.vo.CTaskVo;
import com.ccsens.common.service.ITaskService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author
*/
@Api(tags = "任务相关" , description = "DebugController | ")
@RestController
@RequestMapping("/task")
@Slf4j
public class TaskController {
@Resource
private ITaskService taskService;
@MustLogin
@ApiOperation(value = "查找永久日常任务", notes = "")
@RequestMapping(value = "/permanent", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<CTaskVo.QueryTask>> queryPermanentGlobalTask(@ApiParam @Validated @RequestBody QueryDto<CTaskDto.QueryPermanentGlobalTask> params) {
List<CTaskVo.QueryTask> queryTasks = taskService.queryPermanentGlobalTask(params.getParam(), params.getUserId());
return JsonResponse.newInstance().ok(queryTasks);
}
@MustLogin
@ApiOperation(value = "查找带时间的日常任务", notes = "")
@RequestMapping(value = "/global", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<CTaskVo.QueryTask>> queryGlobalTask(@ApiParam @Validated @RequestBody QueryDto<CTaskDto.QueryGlobalTask> params) {
List<CTaskVo.QueryTask> queryTasks = taskService.queryGlobalTask(params.getParam(), params.getUserId());
return JsonResponse.newInstance().ok(queryTasks);
}
@MustLogin
@ApiOperation(value = "查找定期任务", notes = "")
@RequestMapping(value = "/regular", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<CTaskVo.QueryTask>> queryRegularTask(@ApiParam @Validated @RequestBody QueryDto<CTaskDto.QueryRegularTask> params) {
List<CTaskVo.QueryTask> queryTasks = taskService.queryRegularTask(params.getParam(), params.getUserId());
return JsonResponse.newInstance().ok(queryTasks);
}
@MustLogin
@ApiOperation(value = "修改任务状态", notes = "")
@RequestMapping(value = "/type", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updateTaskType(@ApiParam @Validated @RequestBody QueryDto<CTaskDto.UpdateTaskType> params) throws Exception {
taskService.updateTaskType(params.getParam(),params.getUserId());
return JsonResponse.newInstance().ok();
}
@ApiOperation(value = "查询子任务", notes = "")
@RequestMapping(value = "/findSonTask", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<CTaskVo.SonTaskDetail>> findSonTask(@ApiParam @Validated @RequestBody QueryDto<CTaskDto.FindSonTask> params) throws Exception {
log.info("查询子任务开始");
List<CTaskVo.SonTaskDetail> sonTask = taskService.findSonTask(params.getParam(), params.getUserId());
log.info("查询子任务开始{}",sonTask);
return JsonResponse.newInstance().ok(sonTask);
}
@ApiOperation(value = "添加任务", notes = "")
@RequestMapping(value = "/save", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<CTaskVo.QueryTask>> saveTask(@ApiParam @Validated @RequestBody QueryDto<CTaskDto.SaveTask> params) throws Exception {
log.info("添加任务开始");
List<CTaskVo.QueryTask> taskList = taskService.saveTask(params.getParam(), params.getUserId());
log.info("添加任务结束{}",taskList);
return JsonResponse.newInstance().ok(taskList);
}
@ApiOperation(value = "查找项目下的任务", notes = "")
@RequestMapping(value = "/queryTaskOfProject", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<CTaskVo.TaskOfProject>> queryTaskOfProject(@ApiParam @Validated @RequestBody QueryDto<CTaskDto.QueryTaskOfProject> params) throws Exception {
log.info("查找项目下的任务开始{}",params);
List<CTaskVo.TaskOfProject> taskList = taskService.queryTaskOfProject(params.getParam(), params.getUserId());
log.info("查找项目下的任务结束{}",taskList);
return JsonResponse.newInstance().ok(taskList);
}
@ApiOperation(value = "修改任务信息", notes = "")
@RequestMapping(value = "/update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updateTask(@ApiParam @Validated @RequestBody QueryDto<CTaskDto.UpdateTask> params) throws Exception {
log.info("修改任务信息开始{}",params);
taskService.updateTaskDetail(params.getParam(), params.getUserId());
log.info("修改任务信息结束");
return JsonResponse.newInstance().ok();
}
@ApiOperation(value = "删除任务", notes = "")
@RequestMapping(value = "/delete", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse deleteTask(@ApiParam @Validated @RequestBody QueryDto<CTaskDto.FindSonTask> params) throws Exception {
log.info("删除任务开始{}",params);
taskService.deleteTaskDetail(params.getParam(), params.getUserId());
log.info("删除任务结束");
return JsonResponse.newInstance().ok();
}
@ApiOperation(value = "查找任务下的插件列表", notes = "")
@RequestMapping(value = "/queryTaskPlugin", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<CPluginVo.TaskPlugin>> queryTaskPlugin(@ApiParam @Validated @RequestBody QueryDto<CTaskDto.FindSonTask> params) throws Exception {
log.info("查找任务下的插件列表开始{}",params);
List<CPluginVo.TaskPlugin> taskPlugins = taskService.queryPluginByTaskId(params.getParam(), params.getUserId());
log.info("查找任务下的插件列表结束:{}",taskPlugins);
return JsonResponse.newInstance().ok(taskPlugins);
}
@ApiOperation(value = "给任务添加关联插件", notes = "")
@RequestMapping(value = "/saveTaskPlugin", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse saveTaskPlugin(@ApiParam @Validated @RequestBody QueryDto<CPluginDto.SaveTaskPlugin> params) throws Exception {
log.info("给任务添加关联插件{}",params);
taskService.saveTaskPlugin(params.getParam(), params.getUserId());
log.info("给任务添加关联插件结束");
return JsonResponse.newInstance().ok();
}
}

46
src/main/java/com/ccsens/ptccsens/api/project/UserController.java

@ -1,46 +0,0 @@
package com.ccsens.ptccsens.api.project;
import com.ccsens.common.bean.dto.CMemberDto;
import com.ccsens.ptccsens.service.IUserService;
import com.ccsens.util.JsonResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@Api(tags = "DEBUG" , description = "DebugController | ")
@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
@Resource
private IUserService userService;
@ApiOperation(value = "根据手机号更新成员的userId",notes = "")
@ApiImplicitParams({
})
@RequestMapping(value="/memberWithPhone",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
public JsonResponse memberWithPhone(@ApiParam @Validated @RequestBody CMemberDto.PhoneAndUserId params) throws Exception {
log.info("根据手机号更新成员userId");
userService.memberWithPhone(params);
return JsonResponse.newInstance().ok();
}
@ApiOperation(value = "合并用户后修改userId",notes = "")
@ApiImplicitParams({
})
@RequestMapping(value="/mergeUser",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
public JsonResponse mergeUser(@ApiParam @Validated @RequestBody CMemberDto.MergeUser params) throws Exception {
log.info("合并用户后修改userId");
userService.mergeUser(params);
return JsonResponse.newInstance().ok();
}
}

74
src/main/java/com/ccsens/ptccsens/api/project/WbsController.java

@ -1,74 +0,0 @@
package com.ccsens.ptccsens.api.project;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.ptccsens.util.BasicsConstant;
import com.ccsens.ptccsens.util.BasicsCodeError;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.ptccsens.bean.vo.ProjectVo;
import com.ccsens.ptccsens.service.IImportService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.WebConstant;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.util.exception.BaseException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.util.Date;
/**
* @author
*/
@Api(tags = "导入wbs" , description = "DebugController | ")
@RestController
@RequestMapping("/wbs")
@Slf4j
public class WbsController {
@Resource
private IImportService importService;
@MustLogin
@ApiOperation(value = "导入WBS",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx")
@ApiImplicitParams({
// @ApiImplicitParam(name = "file", value = "WBS表", required = true, paramType = "form",dataType = "__file")
})
@RequestMapping(value = "", method = RequestMethod.POST)
public JsonResponse<ProjectVo.ProjectInfo> importWbs(QueryDto<MultipartFile> params, Long projectId) throws Exception {
MultipartFile f = params.getParam();
String ext = FileUtil.extName(f.getOriginalFilename());
if(StrUtil.isEmpty(ext) || !BasicsConstant.WbsExcel.WBS_FILE_FORMAT.contains(ext)){
throw new BaseException(BasicsCodeError.FILE_FORMAT_ERROR);
}
//文件路径
String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator;
String extraPath = DateUtil.format(new Date(), "yyyyMMdd");
String path = extraPath + File.separator + IdUtil.simpleUUID() + "." + ext;
//转成file
File file = new File(dir + extraPath);
if (!file.exists()) {
file.mkdirs();
}
String fullPath = dir + File.separator + path;
FileUtil.writeFromStream(f.getInputStream(), fullPath);
//导入数据库
ProjectVo.ProjectInfo projectInfo = importService.importWbs(fullPath,params.getUserId(),projectId);
return JsonResponse.newInstance().ok(projectInfo);
}
}

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

@ -49,10 +49,8 @@ public class FinanceDto {
@NotNull
@ApiModelProperty("类型id")
private Long typeId;
@NotNull
@ApiModelProperty("类目id")
private Long categoryId;
@NotNull
@ApiModelProperty("名目id")
private Long rowId;
@NotNull

2
src/main/java/com/ccsens/ptccsens/persist/dao/PluginDao.java

@ -1,7 +1,5 @@
package com.ccsens.ptccsens.persist.dao;
import com.ccsens.common.persist.dao.ProTaskPluginDao;
import com.ccsens.ptccsens.bean.po.ProTaskPlugin;
import com.ccsens.ptccsens.persist.mapper.ProTaskPluginMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

13
src/main/java/com/ccsens/ptccsens/persist/dao/ProMemberDao.java

@ -0,0 +1,13 @@
package com.ccsens.ptccsens.persist.dao;
import org.apache.ibatis.annotations.Param;
public interface ProMemberDao {
/**
* 根据项目ID和userId查找memberId
* @param projectId 项目ID
* @param userId 用户ID
* @return memberId
*/
Long findUserOfMemberId(@Param("projectId") Long projectId,@Param("userId")Long userId);
}

12
src/main/java/com/ccsens/ptccsens/persist/dao/ProTaskDetailDao.java

@ -0,0 +1,12 @@
package com.ccsens.ptccsens.persist.dao;
import org.apache.ibatis.annotations.Param;
public interface ProTaskDetailDao {
/**
* 根据任务详情id查找项目id
* @param taskDetailId 任务ID
* @return 项目ID
*/
Long projectIdByTaskDetailId(@Param("taskDetailId") Long taskDetailId);
}

12
src/main/java/com/ccsens/ptccsens/persist/dao/SPluginDao.java

@ -1,12 +0,0 @@
package com.ccsens.ptccsens.persist.dao;
import org.apache.ibatis.annotations.Param;
/**
* @author
*/
public interface SPluginDao {
Long getPluginIdByName(@Param("pluginName") String pluginName);
void updateParamById(@Param("param")String param,@Param("taskPluginId")Long taskPluginId);
}

29
src/main/java/com/ccsens/ptccsens/persist/dao/SProjectDao.java

@ -1,29 +0,0 @@
package com.ccsens.ptccsens.persist.dao;
import com.ccsens.ptccsens.bean.vo.ProjectVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author
*/
@Repository
public interface SProjectDao {
List<ProjectVo.SysProject> queryByCreator(@Param("userId") Long userId);
/**
* 根据项目id查询项目
* @param projectId 项目id
* @return 项目信息
*/
ProjectVo.SysProject selectById(@Param("projectId") Long projectId);
/**
* 逻辑删除项目
* @param projectId 项目id
*/
void updateStatusById(@Param("projectId") Long projectId);
}

23
src/main/java/com/ccsens/ptccsens/persist/dao/STaskDao.java

@ -1,23 +0,0 @@
package com.ccsens.ptccsens.persist.dao;
import com.ccsens.common.bean.po.ProTaskSub;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author
*/
public interface STaskDao {
void insertSelectiveList(@Param("proTaskSubList") List<ProTaskSub> proTaskSubList);
/**
* 根据任务名和项目id查找当前时间下的任务的分解id
* @param taskName 任务名
* @param projectId 项目id
* @param now 当前时间
* @return 返回任务分解id
*/
Long getNowTask(@Param("taskName") String taskName, @Param("projectId") Long projectId, @Param("now") long now);
}

15
src/main/java/com/ccsens/ptccsens/persist/dao/SubLabelDao.java

@ -1,15 +0,0 @@
package com.ccsens.ptccsens.persist.dao;
import com.ccsens.common.persist.dao.LabelDao;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
/**
* @author
*/
@Repository
public interface SubLabelDao extends LabelDao {
Long getLabelByName(@Param("type") int type, @Param("sysRole") String sysRole);
Long getLabelByTypeAndLevel(@Param("type") int type, @Param("level") int level);
}

13
src/main/java/com/ccsens/ptccsens/service/FinanceService.java

@ -1,9 +1,7 @@
package com.ccsens.ptccsens.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import com.ccsens.common.persist.dao.ProMemberDao;
import com.ccsens.ptccsens.bean.dto.FinanceDto;
import com.ccsens.ptccsens.bean.po.*;
import com.ccsens.ptccsens.bean.vo.FinanceVo;
@ -11,7 +9,6 @@ import com.ccsens.ptccsens.persist.dao.FinanceDao;
import com.ccsens.ptccsens.persist.mapper.*;
import com.ccsens.ptccsens.util.BasicsCodeError;
import com.ccsens.ptccsens.util.BasicsConstant;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@ -24,9 +21,9 @@ import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: whj
* @time: 2022/1/24 16:44
* @description
* @author whj
* @time 2022/1/24 16:44
*/
@Slf4j
@Service
@ -64,6 +61,7 @@ public class FinanceService implements IFinanceService {
switch (expense.getType()) {
case "项目申请" : item.setProjectExpend(expense.getMoney());break;
case "日常报销" : item.setDailyExpend(expense.getMoney());break;
default: break;
}
});
}
@ -72,8 +70,7 @@ public class FinanceService implements IFinanceService {
@Override
public List<FinanceVo.Type> queryType(FinanceDto.Type param, Long userId) {
List<FinanceVo.Type> types = financeDao.queryType(param.getType(), param.getParentId());
return types;
return financeDao.queryType(param.getType(), param.getParentId());
}
@Override

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

@ -1,18 +0,0 @@
package com.ccsens.ptccsens.service;
import com.ccsens.ptccsens.bean.vo.ProjectVo;
/**
* @author
*/
public interface IImportService {
/**
* 读取excel
* @param path 路径
* @param userId userId
* @throws Exception 异常
*/
ProjectVo.ProjectInfo importWbs(String path, Long userId, Long projectId) throws Exception;
}

17
src/main/java/com/ccsens/ptccsens/service/IUserService.java

@ -1,17 +0,0 @@
package com.ccsens.ptccsens.service;
import com.ccsens.common.bean.dto.CMemberDto;
public interface IUserService {
/**
* 根据手机号修改成员的userId
* @param params 手机号和userId
*/
void memberWithPhone(CMemberDto.PhoneAndUserId params);
/**
* 合并用户后修改userId
* @param params 新旧userId
*/
void mergeUser(CMemberDto.MergeUser params);
}

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

@ -1,896 +0,0 @@
package com.ccsens.ptccsens.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.ptccsens.util.BasicsCodeError;
import com.ccsens.cloudutil.bean.tall.dto.ProjectDto;
import com.ccsens.cloudutil.feign.Tall3FeignClient;
import com.ccsens.common.bean.po.*;
import com.ccsens.common.persist.dao.*;
import com.ccsens.common.persist.mapper.ProMemberStakeholderMapper;
import com.ccsens.ptccsens.bean.dto.RoleDto;
import com.ccsens.ptccsens.bean.dto.TaskDto;
import com.ccsens.ptccsens.bean.vo.ProjectVo;
import com.ccsens.ptccsens.persist.dao.SPluginDao;
import com.ccsens.ptccsens.persist.dao.SProjectDao;
import com.ccsens.ptccsens.persist.dao.STaskDao;
import com.ccsens.ptccsens.persist.dao.SubLabelDao;
import com.ccsens.ptccsens.util.BasicsConstant;
import com.ccsens.util.ExcelUtil;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.PropUtil;
import com.ccsens.util.StringUtil;
import com.ccsens.util.cron.CronConstant;
import com.ccsens.util.cron.NatureToDate;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ImportService implements IImportService {
@Resource
private Snowflake snowflake;
@Resource
private ProTaskDetailDao taskDetailDao;
@Resource
private ProTaskSubDao taskSubDao;
@Resource
private ProTaskVersionDao taskVersionMapper;
@Resource
private SubLabelDao subLabelDao;
@Resource
private LabelDao labelDao;
@Resource
private ProRoleDao roleDao;
@Resource
private ProMemberDao memberDao;
@Resource
private ProRoleMemberDao roleMemberDao;
@Resource
private ProMemberStakeholderMapper memberStakeholderMapper;
@Resource
private ProRoleRepulsionDao repulsionDao;
@Resource
private LabelBusinessDao labelBusinessDao;
@Resource
private ProParentTaskDao parentTaskMapper;
@Resource
private ProRoleTaskDao roleTaskMapper;
@Resource
private UserDao userDao;
@Resource
private SProjectDao projectDao;
@Resource
private STaskDao sTaskDao;
@Resource
private SPluginDao sTaskPluginDao;
@Resource
private ProTaskPluginDao proTaskPluginDao;
@Resource
private Tall3FeignClient tall3FeignClient;
/**
* 读取wbs文件
* @param path 路径
* @param userId userId
* @throws Exception 异常
*/
@Override
public ProjectVo.ProjectInfo importWbs(String path, Long userId,Long projectId) throws Exception {
ProjectVo.ProjectInfo projectInfo = new ProjectVo.ProjectInfo();
//获取excel文件
InputStream is = new FileInputStream(path);
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
//角色
Map<String, Long> roleMap = new HashMap<>();
//成员
Map<String, RoleDto.WbsMember> memberMap = new HashMap<>();
//任务
Map<String, Object> taskMap = new HashMap<>();
//读取文件
readExcel(xssfWorkbook, userId, roleMap, memberMap, taskMap,projectId,projectInfo);
//读取插件配置表
readPluginConfig(xssfWorkbook,taskMap);
return projectInfo;
}
/**
* 读取插件配置表
*/
private void readPluginConfig(XSSFWorkbook wb, Map<String, Object> taskMap) {
//获取插件配置表Sheet
XSSFSheet wbsSheet = wb.getSheet(BasicsConstant.WbsExcel.WBS_PLUGIN_CONFIG);
if (ObjectUtil.isNotNull(wbsSheet)) {
for (int i = 0; i <= wbsSheet.getLastRowNum(); i++) {
//获取行
XSSFRow row = wbsSheet.getRow(i);
if (row == null) {
continue;
}
//序号
String sequence = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(0)));
//任务名
String taskName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(1)));
if(StrUtil.isEmpty(taskName)){
continue;
}
//插件1
String pluginParam1 = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(2)));
//插件2
String pluginParam2 = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(3)));
//插件3
String pluginParam3 = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(4)));
Object o = taskMap.get(sequence + "_" + taskName);
if(ObjectUtil.isNull(o)){
continue;
}
TaskDto.TaskPluginId taskPlugin = (TaskDto.TaskPluginId) o;
if(StrUtil.isNotEmpty(pluginParam1)){
//修改插件表的param
sTaskPluginDao.updateParamById(pluginParam1,taskPlugin.getTaskPluginId1());
}
if(StrUtil.isNotEmpty(pluginParam2)){
//修改插件表的param
sTaskPluginDao.updateParamById(pluginParam2,taskPlugin.getTaskPluginId2());
}
if(StrUtil.isNotEmpty(pluginParam3)){
//修改插件表的param
sTaskPluginDao.updateParamById(pluginParam3,taskPlugin.getTaskPluginId3());
}
}
}
}
/**
* 读取每个sheet
*/
private void readExcel(XSSFWorkbook wb, Long userId, Map<String, Long> roleMap, Map<String, RoleDto.WbsMember> memberMap, Map<String, Object> taskMap,Long projectId,ProjectVo.ProjectInfo projectInfo) {
//获取wbsSheet
XSSFSheet wbsSheet = wb.getSheet(BasicsConstant.WbsExcel.WBS_SHEET);
if (ObjectUtil.isNull(wbsSheet)) {
throw new BaseException(BasicsCodeError.NOT_WBS_SHEET);
}
//获取项目成员表
XSSFSheet memberSheet = wb.getSheet(BasicsConstant.WbsExcel.MEMBER_SHEET);
if (ObjectUtil.isNull(memberSheet)) {
throw new BaseException(BasicsCodeError.NOT_MEMBER_SHEET);
}
//读取项目信息和任务分解信息的开始结束行
int projectStart = 0;
int taskStart = 0;
for (int i = 0; i <= wbsSheet.getLastRowNum(); i++) {
//获取行
XSSFRow xssfRow = wbsSheet.getRow(i);
if (xssfRow == null) {
continue;
}
//获取第一列
XSSFCell xssfCell = xssfRow.getCell(0);
if (xssfCell == null) {
continue;
}
String s = ExcelUtil.getCellValue(xssfCell);
//获取项目开始行
if (s.indexOf(BasicsConstant.WbsExcel.PROJECT_INFO_TITLE) == 0) {
projectStart = i + 1;
}
//获取任务开始行
if (s.indexOf(BasicsConstant.WbsExcel.TASK_INFO_TITLE) == 0) {
taskStart = i + 1;
}
}
if (projectStart == 0) {
throw new BaseException(BasicsCodeError.WSB_NOT_PROJECT_HEADER);
}
if (taskStart == 0) {
throw new BaseException(BasicsCodeError.WSB_NOT_TASK_HEADER);
}
//添加项目
ProjectVo.SysProject project = readProject(wbsSheet, projectStart, userId,projectId);
if(ObjectUtil.isNull(project)){
throw new BaseException(BasicsCodeError.WSB_NOT_PROJECT_HEADER);
}
//读取成员表
readMemberSheet(memberSheet,project,roleMap,memberMap);
//添加任务
readTask(wbsSheet,taskStart,project,roleMap,taskMap);
//获取用户列表
Set<Long> userIdSet = new HashSet<>();
userIdSet.add(userId);
//处理创建人的权限问题(添加创建人角色)
//查找创建者标签id
Long roleLabelId = labelDao.getLabelByTypeAndLevel(5, 5);
//添加创建者角色
ProRole role = new ProRole();
role.setId(snowflake.nextId());
role.setName("创建者");
role.setProjectId(project.getId());
role.setLabelId(roleLabelId);
roleDao.insertSelective(role);
//查找创建者在项目下的成员信息
Long memberId = null;
if(CollectionUtil.isNotEmpty(memberMap)){
for(RoleDto.WbsMember member : memberMap.values()){
if(ObjectUtil.isNotNull(member.getUserId())){
if(member.getUserId().equals(userId)){
memberId = member.getId();
}
userIdSet.add(member.getUserId());
}
}
}
//如果当前用户不是项目成员,则添加为成员
if(ObjectUtil.isNull(memberId)){
//添加成员至数据库
ProMember proMember = new ProMember();
proMember.setId(snowflake.nextId());
proMember.setProjectId(projectId);
proMember.setUserId(userId);
memberDao.insertSelective(proMember);
memberId = proMember.getId();
}
//添加当前用户未创建者
//添加角色成员关联信息
ProRoleMember roleMember = new ProRoleMember();
roleMember.setId(snowflake.nextId());
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(BasicsCodeError.FEIGN_ERROR);
}
//获取项目信息
BeanUtil.copyProperties(saveProjectDto,projectInfo);
}
/**
* 读取项目信息
*/
private ProjectVo.SysProject readProject(XSSFSheet wbsSheet, int projectStart, Long userId,Long projectId) {
ProjectVo.SysProject project = new ProjectVo.SysProject();
// TODO 查询是否项目是否存在
if (ObjectUtil.isNotNull(projectId)) {
project = projectDao.selectById(projectId);
if (ObjectUtil.isNotNull(project)) {
project.setId(projectId);
project.setImportType((byte)1);
//删除之前的项目详情
projectDao.updateStatusById(projectId);
//删除之前的项目分解
ProTaskSubExample taskSubExample = new ProTaskSubExample();
taskSubExample.createCriteria().andTaskDetailIdEqualTo(projectId);
ProTaskSub taskSub = new ProTaskSub();
taskSub.setRecStatus((byte)2);
taskSubDao.updateByExampleSelective(taskSub,taskSubExample);
//删除之前的版本信息
ProTaskVersion taskVersion = new ProTaskVersion();
taskVersion.setRecStatus((byte)2);
ProTaskVersionExample taskVersionExample = new ProTaskVersionExample();
taskVersionExample.createCriteria().andTaskDetailIdEqualTo(projectId);
taskVersionMapper.updateByExampleSelective(taskVersion,taskVersionExample);
//删除项目标签相关的
LabelBusiness labelBusiness = new LabelBusiness();
labelBusiness.setRecStatus((byte)2);
LabelBusinessExample labelBusinessExample = new LabelBusinessExample();
labelBusinessExample.createCriteria().andBusinessIdEqualTo(projectId);
labelBusinessDao.updateByExampleSelective(labelBusiness,labelBusinessExample);
}
}
//获取项目信息的那一行
XSSFRow row = wbsSheet.getRow(projectStart + 1);
if (ObjectUtil.isNull(row)) {
throw new BaseException(BasicsCodeError.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(BasicsCodeError.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(BasicsCodeError.PROJECT_NAME_REPEAT.addMsg(wbsSheet.getSheetName(),projectStart+1,projectName));
}
});
}
//判断时间是否正确
String begin = ExcelUtil.getCellValue(row.getCell(3));
String end = ExcelUtil.getCellValue(row.getCell(4));
if (StrUtil.isEmpty(begin) || StrUtil.isEmpty(end)) {
throw new BaseException(BasicsCodeError.WBS_NOT_PROJECT_TIME.addMsg(wbsSheet.getSheetName(),projectStart+1));
}
long bTime;
long eTime;
try {
bTime = Long.parseLong(beginTime);
eTime = Long.parseLong(endTime);
} catch (Exception e) {
//日期格式错误
throw new BaseException(BasicsCodeError.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.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);
//添加(任务分解)
ProTaskSub taskSub = new ProTaskSub();
taskSub.setId(snowflake.nextId());
taskSub.setTaskDetailId(taskDetail.getId());
taskSub.setPlanStartTime(bTime);
taskSub.setPlanEndTime(eTime);
taskSub.setPlanDuration(eTime - bTime);
taskSubDao.insertSelective(taskSub);
project.setBeginTime(bTime);
project.setEndTime(eTime);
//添加版本信息
ProTaskVersion taskVersion = new ProTaskVersion();
taskVersion.setId(snowflake.nextId());
taskVersion.setTaskDetailId(taskDetail.getId());
taskVersion.setTaskVersionInfo(version);
taskVersion.setAddress(address);
taskVersionMapper.insertSelective(taskVersion);
//查找项目标签
Long labelId = labelDao.getLabelByTypeAndLevel(1, 0);
//添加任务标签关联信息
saveLabelTask(taskDetail.getId(), labelId);
return project;
}
/**
* 添加任务标签关联
*/
private void saveLabelTask(Long taskDetailId,Long labelId) {
//添加标签
LabelBusiness labelBusiness = new LabelBusiness();
labelBusiness.setId(snowflake.nextId());
labelBusiness.setBusinessType((byte) 0);
labelBusiness.setBusinessId(taskDetailId);
labelBusiness.setLabelId(labelId);
labelBusinessDao.insertSelective(labelBusiness);
}
/**
* 读取项目成员表
*/
private void readMemberSheet(XSSFSheet memberSheet,ProjectVo.SysProject project, Map<String, Long> roleMap, Map<String, RoleDto.WbsMember> memberMap) {
//系统角色id
Long sysRoleId = null;
//项目角色id
Long roleId = null;
//如果是修改WBS,先进行删除
if (1 == project.getImportType()){
//删除角色和成员
List<Long> roleIdList = roleDao.queryRoleListOfProject(project.getId());
ProRole role = new ProRole();
role.setRecStatus((byte)2);
ProRoleExample roleExample = new ProRoleExample();
roleExample.createCriteria().andIdIn(roleIdList);
roleDao.updateByExampleSelective(role,roleExample);
List<Long> memberIdList = memberDao.queryMembersOfProject(project.getId());
ProMember member = new ProMember();
member.setRecStatus((byte)2);
ProMemberExample memberExample = new ProMemberExample();
memberExample.createCriteria().andIdIn(memberIdList);
memberDao.updateByExampleSelective(member,memberExample);
//删除奖惩干系人
ProMemberStakeholder memberStakeholder = new ProMemberStakeholder();
memberStakeholder.setRecStatus((byte)2);
ProMemberStakeholderExample memberStakeholderExample = new ProMemberStakeholderExample();
memberStakeholderExample.createCriteria().andMemeberIdIn(memberIdList);
memberStakeholderMapper.updateByExampleSelective(memberStakeholder,memberStakeholderExample);
//删除对谁不可见
ProRoleRepulsion roleRepulsion = new ProRoleRepulsion();
roleRepulsion.setRecStatus((byte)2);
ProRoleRepulsionExample roleRepulsionExample = new ProRoleRepulsionExample();
roleRepulsionExample.createCriteria().andRoleIdIn(roleIdList);
repulsionDao.updateByExampleSelective(roleRepulsion,roleRepulsionExample);
//删除角色成员关联
ProRoleMember roleMember = new ProRoleMember();
roleMember.setRecStatus((byte)2);
ProRoleMemberExample roleMemberExample = new ProRoleMemberExample();
roleMemberExample.createCriteria().andRoleIdIn(roleIdList);
roleMemberDao.updateByExampleSelective(roleMember,roleMemberExample);
}
for (int i = 2; i <= memberSheet.getLastRowNum(); i++) {
//获取当前行
XSSFRow row = memberSheet.getRow(i);
if(ObjectUtil.isNull(row)){ continue; }
//系统角色名
String sysRole = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(1)));
if(StrUtil.isEmpty(sysRole) && ObjectUtil.isNull(sysRoleId)){
continue;
}
//验证系统角色(查询标签)
if(StrUtil.isNotEmpty(sysRole) && !"/".equalsIgnoreCase(sysRole)){
Long labelId = subLabelDao.getLabelByName(5,sysRole);
if(ObjectUtil.isNull(labelId)){
throw new BaseException(BasicsCodeError.WBS_NOT_FIRST_ROLE.addMsg(memberSheet.getSheetName(),i+1,sysRole));
}
sysRoleId = labelId;
}
//项目角色
String roleName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(2)));
if((StrUtil.isEmpty(roleName) || "/".equalsIgnoreCase(roleName)) && ObjectUtil.isNull(roleId)){ continue; }
//成员
String memberName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(3)));
//角色手机号
String memberPhone = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(4)));
if((StrUtil.isNotEmpty(memberName) && !"/".equalsIgnoreCase(memberName)) && (StrUtil.isEmpty(memberPhone) || !memberPhone.matches(BasicsConstant.PHONE_REGEX))){
throw new BaseException(BasicsCodeError.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(),i+1,memberPhone));
}
//奖惩干系人
String stakeholderName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(5)));
//干系人电话
String stakeholderPhone = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(6)));
if((StrUtil.isNotEmpty(stakeholderName) && !"/".equalsIgnoreCase(stakeholderName)) && (StrUtil.isEmpty(stakeholderPhone) || !stakeholderPhone.matches(BasicsConstant.PHONE_REGEX))){
throw new BaseException(BasicsCodeError.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(),i+1,stakeholderName));
}
//添加角色
if(StrUtil.isNotEmpty(roleName) && !"/".equalsIgnoreCase(roleName)){
ProRole role = new ProRole();
role.setId(snowflake.nextId());
role.setName(roleName);
role.setProjectId(project.getId());
role.setLabelId(sysRoleId);
roleDao.insertSelective(role);
roleId = role.getId();
roleMap.put(roleName,role.getId());
}
//添加成员
if(StrUtil.isNotEmpty(memberName) && !"/".equalsIgnoreCase(roleName)){
//如果成员名和手机号重复当做一个人来处理
RoleDto.WbsMember wbsMembers = memberMap.get(memberName + "_" + memberPhone);
Long memberId = null;
if(ObjectUtil.isNotNull(wbsMembers)){
memberId = wbsMembers.getId();
}
if(ObjectUtil.isNull(memberId)){
//根据成员手机号查找userId 成员关联userId
Long userId = userDao.getUserIdByPhone(memberPhone);
//添加成员至数据库
ProMember proMember = new ProMember();
proMember.setId(snowflake.nextId());
proMember.setName(memberName);
proMember.setPhone(memberPhone);
proMember.setProjectId(project.getId());
proMember.setUserId(userId);
memberDao.insertSelective(proMember);
RoleDto.WbsMember member = new RoleDto.WbsMember(proMember.getId(),userId);
memberMap.put(memberName+"_"+memberPhone,member);
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)){
//根据干系人手机号查找userId 奖惩干系人关联userId
Long userId = userDao.getUserIdByPhone(memberPhone);
ProMemberStakeholder memberStakeholder = new ProMemberStakeholder();
memberStakeholder.setId(snowflake.nextId());
memberStakeholder.setMemeberId(memberId);
memberStakeholder.setStakeholderName(stakeholderName);
memberStakeholder.setStakeholderPhone(stakeholderPhone);
memberStakeholder.setUserId(userId);
memberStakeholderMapper.insertSelective(memberStakeholder);
}
}
}
//添加对谁不可见
roleRepulsion(memberSheet, roleMap);
}
/**
* 处理对谁不可见
*/
private void roleRepulsion(XSSFSheet memberSheet, Map<String, Long> roleMap) {
//角色排斥表需要的角色id
Long roleIdRepulsion = null;
for (int i = 2; i <= memberSheet.getLastRowNum(); i++) {
//获取当前行
XSSFRow row = memberSheet.getRow(i);
if(ObjectUtil.isNull(row)){ continue; }
//项目角色
String roleName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(2)));
if(StrUtil.isNotEmpty(roleName)){
roleIdRepulsion = roleMap.get(roleName);
}
if(ObjectUtil.isNull(roleIdRepulsion)){
continue;
}
//对谁不可见
String repulsion = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(7)));
if(StrUtil.isEmpty(repulsion)){
continue;
}
//分解对谁不可见
String[] split = repulsion.split(BasicsConstant.STRING_REGEX);
for (String repulsionName : split) {
Long repulsionId = roleMap.get(repulsionName);
if (ObjectUtil.isNull(repulsionId)) {
throw new BaseException(BasicsCodeError.WBS_NOT_FIND_ROLE.addMsg(memberSheet.getSheetName(),i+1,repulsionName));
}
//添加数据
ProRoleRepulsion roleRepulsion = new ProRoleRepulsion();
roleRepulsion.setId(snowflake.nextId());
roleRepulsion.setRoleId(roleIdRepulsion);
roleRepulsion.setRepulsionRoleId(repulsionId);
repulsionDao.insertSelective(roleRepulsion);
}
}
}
/**
* 读取任务信息
*/
private void readTask(XSSFSheet wbsSheet, int taskStart, ProjectVo.SysProject project, Map<String, Long> roleMap, Map<String, Object> taskMap) {
//一级任务id
Long firstTaskId = null;
Long taskStartTime = project.getBeginTime();
//如果是修改WBS需要先删除
if (1 == project.getImportType()) {
List<Long> allTaskId = parentTaskMapper.queryAllTaskIdByProjectId(project.getId());
//删除所有的任务详情
ProTaskDetail taskDetail = new ProTaskDetail();
taskDetail.setRecStatus((byte)2);
ProTaskDetailExample taskDetailExample = new ProTaskDetailExample();
taskDetailExample.createCriteria().andIdIn(allTaskId);
taskDetailDao.updateByExampleSelective(taskDetail,taskDetailExample);
//删除所有的分解任务
ProTaskSub taskSub = new ProTaskSub();
taskSub.setRecStatus((byte)2);
ProTaskSubExample taskSubExample = new ProTaskSubExample();
taskSubExample.createCriteria().andTaskDetailIdIn(allTaskId);
taskSubDao.updateByExampleSelective(taskSub,taskSubExample);
//删除所有的任务标签
LabelBusiness labelBusiness = new LabelBusiness();
labelBusiness.setRecStatus((byte)2);
LabelBusinessExample labelBusinessExample = new LabelBusinessExample();
labelBusinessExample.createCriteria().andBusinessIdIn(allTaskId);
labelBusinessDao.updateByExampleSelective(labelBusiness,labelBusinessExample);
//删除任务角色关联表
ProRoleTask roleTask = new ProRoleTask();
roleTask.setRecStatus((byte)2);
ProRoleTaskExample roleTaskExample = new ProRoleTaskExample();
roleTaskExample.createCriteria().andTaskIdIn(allTaskId);
roleTaskMapper.updateByExampleSelective(roleTask,roleTaskExample);
//删除任务插件关联信息
ProTaskPlugin taskPlugin = new ProTaskPlugin();
taskPlugin.setRecStatus((byte)2);
ProTaskPluginExample taskPluginExample = new ProTaskPluginExample();
taskPluginExample.createCriteria().andTaskDetailIdIn(allTaskId);
proTaskPluginDao.updateByExampleSelective(taskPlugin,taskPluginExample);
//删除任务关系表
allTaskId.add(project.getId());
ProParentTask parentTask = new ProParentTask();
parentTask.setRecStatus((byte)2);
ProParentTaskExample parentTaskExample = new ProParentTaskExample();
parentTaskExample.createCriteria().andTaskDetailIdIn(allTaskId);
parentTaskMapper.updateByExampleSelective(parentTask,parentTaskExample);
}
for (int i = taskStart + 1; i <= wbsSheet.getLastRowNum(); i++) {
//获取当前行
XSSFRow row = wbsSheet.getRow(i);
if(ObjectUtil.isNull(row)){ continue; }
//序号
String sequence = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(0)));
//一级任务名
String firstTaskName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(1)));
if(StrUtil.isEmpty(firstTaskName) && ObjectUtil.isNull(firstTaskId)){
continue;
}
if(StrUtil.isNotEmpty(firstTaskName)){
//添加一级任务
firstTaskId = saveFirstTask(project, firstTaskName);
}
//二级任务名
String taskName = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(2)));
if(StrUtil.isEmpty(taskName)){
continue;
}
//任务描述
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 beginTime = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(4)));
//结束时间
String endTime = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(5)));
//时长
String duration = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(6)));
//插件
String plugin1 = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(12)));
String plugin2 = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(13)));
String plugin3 = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(14)));
if(StrUtil.isNotEmpty(taskName)){
//添加二级任务信息(任务详情)
ProTaskDetail taskDetail = new ProTaskDetail();
taskDetail.setId(snowflake.nextId());
taskDetail.setName(taskName);
taskDetail.setDescription(description);
taskDetailDao.insertSelective(taskDetail);
//任务关联信息(关联一级任务)
ProParentTask parentTask = new ProParentTask();
parentTask.setId(snowflake.nextId());
parentTask.setTaskDetailId(taskDetail.getId());
parentTask.setParentTaskDetailId(firstTaskId);
parentTaskMapper.insertSelective(parentTask);
//查找重要性标签
Long labelId = subLabelDao.getLabelByName(2,vitalLabel);
if(ObjectUtil.isNull(labelId)){
throw new BaseException(BasicsCodeError.TASK_VITAL_LABEL_ERROR.addMsg(wbsSheet.getSheetName(),i+1,vitalLabel));
}
LabelBusiness labelBusiness = new LabelBusiness();
labelBusiness.setId(snowflake.nextId());
labelBusiness.setBusinessType((byte) 0);
labelBusiness.setBusinessId(taskDetail.getId());
labelBusiness.setLabelId(labelId);
labelBusinessDao.insertSelective(labelBusiness);
//任务和角色关联
if(StrUtil.isEmpty(executorRole)){
throw new BaseException(BasicsCodeError.WBS_NOT_FIND_ROLE.addMsg(wbsSheet.getSheetName(),i+1,executorRole));
}
String[] split = executorRole.split(BasicsConstant.STRING_REGEX);
for (String repulsionName : split) {
Long executorRoleId = roleMap.get(repulsionName);
if(ObjectUtil.isNull(executorRoleId)){
throw new BaseException(BasicsCodeError.WBS_NOT_FIND_ROLE.addMsg(wbsSheet.getSheetName(),i+1,repulsionName));
}
ProRoleTask roleTask = new ProRoleTask();
roleTask.setId(snowflake.nextId());
roleTask.setRoleId(executorRoleId);
roleTask.setTaskId(taskDetail.getId());
roleTaskMapper.insertSelective(roleTask);
}
//处理时间、添加任务分解、添加任务标签
taskStartTime = taskSaveTime(taskStartTime, project, beginTime, endTime, duration, taskDetail.getId(),wbsSheet,i+1);
//添加时间颗粒度标签并关联
Long timeLabel = labelDao.getLabelByTypeAndLevel(0, 4);
saveLabelTask(taskDetail.getId(),timeLabel);
//插件
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);
TaskDto.TaskPluginId taskPlugin = new TaskDto.TaskPluginId(taskPlugin1,taskPlugin2,taskPlugin3);
taskMap.put(sequence + "_" + taskName, taskPlugin);
}
//TODO 检查人
//TODO 及时奖惩
//TODO 交付物
//TODO 添加默认插件
}
}
private Long plugin(String plugin,Long taskId,int row,XSSFSheet wbsSheet,int errorRow) {
Long taskPlugin = null;
if(StrUtil.isNotEmpty(plugin)){
//根据插件名称查找插件id
Long pluginId = sTaskPluginDao.getPluginIdByName(plugin);
if(ObjectUtil.isNull(pluginId)){
throw new BaseException(BasicsCodeError.PLUGIN_NAME_ERROR.addMsg(wbsSheet.getSheetName(),errorRow,plugin));
}
//添加插件
ProTaskPlugin proTaskPlugin = new ProTaskPlugin();
proTaskPlugin.setId(snowflake.nextId());
proTaskPlugin.setTaskDetailId(taskId);
proTaskPlugin.setPluginId(pluginId);
proTaskPlugin.setPlginRow(row);
proTaskPlugin.setPlginCol(1);
proTaskPlugin.setRowspan(1);
proTaskPlugin.setColspan(1);
proTaskPluginDao.insertSelective(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) {
if(StrUtil.isEmpty(beginTime) || "日常".equalsIgnoreCase(beginTime)){
if(StrUtil.isEmpty(beginTime) && StrUtil.isNotEmpty(duration)){
//获取时长内的字符串
String str = "[0-9]";
Pattern pStr = Pattern.compile(str);
Matcher mStr = pStr.matcher(duration);
String trimStr = mStr.replaceAll("").trim();
Long aLong = BasicsConstant.WBS_DURATION.get(trimStr);
if(ObjectUtil.isNull(aLong)){
throw new BaseException(BasicsCodeError.WBS_PROJECT_TIME_ERROR.addMsg(wbsSheet.getSheetName(),row));
}
//获取字符串内的数字
String num = "[^0-9]";
Pattern pNum = Pattern.compile(num);
Matcher mNum = pNum.matcher(duration);
String trimNum = mNum.replaceAll("").trim();
//计算时长
Long durationTime = Long.parseLong(trimNum) * aLong;
//添加任务分解
ProTaskSub taskSub = new ProTaskSub();
taskSub.setId(snowflake.nextId());
taskSub.setTaskDetailId(taskDetailId);
taskSub.setPlanDuration(durationTime);
taskSub.setPlanStartTime(taskStartTime);
taskStartTime += durationTime;
taskSub.setPlanEndTime(taskStartTime);
taskSubDao.insertSelective(taskSub);
//查找定期任务标签并关联任务
Long taskLabel = labelDao.getLabelByTypeAndLevel(1, 3);
saveLabelTask(taskDetailId,taskLabel);
}else {
//添加任务分解
ProTaskSub taskSub = new ProTaskSub();
taskSub.setId(snowflake.nextId());
taskSub.setTaskDetailId(taskDetailId);
taskSubDao.insertSelective(taskSub);
//查找日常任务标签并关联信息
Long label = labelDao.getLabelByTypeAndLevel(1, 2);
saveLabelTask(taskDetailId,label);
}
}else {
Long bTime;
Long eTime;
try {
bTime = Long.parseLong(beginTime);
eTime = StrUtil.isEmpty(endTime) ? project.getEndTime() : Long.parseLong(endTime);
//添加任务分解
ProTaskSub taskSub = new ProTaskSub();
taskSub.setId(snowflake.nextId());
taskSub.setTaskDetailId(taskDetailId);
taskSub.setPlanEndTime(eTime);
taskSub.setPlanStartTime(bTime);
taskSub.setPlanDuration(eTime - bTime);
taskSubDao.insertSelective(taskSub);
//查找定期任务标签并关联任务
Long taskLabel = labelDao.getLabelByTypeAndLevel(1, 3);
saveLabelTask(taskDetailId,taskLabel);
// //添加时间颗粒度标签并关联
// Long timeLabel = subLabelDao.getLabelByTypeAndLevel(0, 4);
// saveLabelTask(taskDetailId,timeLabel);
}catch (Exception e){
Date startDate = new Date(project.getBeginTime());
Date endDate = new Date(project.getEndTime());
try {
List<CronConstant.TaskDate> taskDateList =
NatureToDate.generateDates(beginTime, startDate, endDate);
if (CollectionUtil.isEmpty(taskDateList)) {
return taskStartTime;
}
List<ProTaskSub> proTaskSubList = new ArrayList<>();
for (CronConstant.TaskDate taskDate : taskDateList) {
ProTaskSub proTaskSub = new ProTaskSub();
proTaskSub.setId(snowflake.nextId());
proTaskSub.setTaskDetailId(taskDetailId);
proTaskSub.setPlanStartTime(taskDate.getStartDate().getTime());
proTaskSub.setPlanEndTime(taskDate.getEndDate().getTime());
proTaskSub.setPlanDuration(proTaskSub.getPlanEndTime() - proTaskSub.getPlanStartTime());
proTaskSubList.add(proTaskSub);
}
if(CollectionUtil.isNotEmpty(proTaskSubList)){
sTaskDao.insertSelectiveList(proTaskSubList);
}
//查找定期任务标签并关联任务
Long taskLabel = labelDao.getLabelByTypeAndLevel(1, 3);
saveLabelTask(taskDetailId,taskLabel);
}catch (Exception e1){
throw new BaseException(String.valueOf(e1));
// throw new BaseException(SportsCodeError.WBS_PROJECT_TIME_ERROR);
}
}
}
return taskStartTime;
}
/**
* 添加一级任务
*/
private Long saveFirstTask(ProjectVo.SysProject project, String firstTaskName) {
//TODO 一级任务负责人是项目经理
Long firstTaskId;
ProTaskDetail taskDetail = new ProTaskDetail();
taskDetail.setId(snowflake.nextId());
taskDetail.setName(firstTaskName);
taskDetailDao.insertSelective(taskDetail);
firstTaskId = taskDetail.getId();
//添加任务分解
ProTaskSub taskSub = new ProTaskSub();
taskSub.setId(snowflake.nextId());
taskSub.setTaskDetailId(taskDetail.getId());
taskSub.setPlanStartTime(project.getBeginTime());
taskSub.setPlanEndTime(project.getEndTime());
taskSub.setPlanDuration(project.getEndTime() - project.getBeginTime());
taskSubDao.insertSelective(taskSub);
//任务关联信息(关联项目)
ProParentTask parentTask = new ProParentTask();
parentTask.setId(snowflake.nextId());
parentTask.setTaskDetailId(taskDetail.getId());
parentTask.setParentTaskDetailId(project.getId());
parentTaskMapper.insertSelective(parentTask);
//查找一级任务标签
Long labelId = labelDao.getLabelByTypeAndLevel(1, 1);
//添加任务标签关联信息
saveLabelTask(taskDetail.getId(), labelId);
return firstTaskId;
}
}

4
src/main/java/com/ccsens/ptccsens/service/ProjectFinanceService.java

@ -4,16 +4,16 @@ package com.ccsens.ptccsens.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.common.persist.dao.ProMemberDao;
import com.ccsens.common.persist.dao.ProTaskDetailDao;
import com.ccsens.ptccsens.bean.dto.ProjectFinanceDto;
import com.ccsens.ptccsens.bean.po.PluFinance;
import com.ccsens.ptccsens.bean.po.PluFinanceAppendBudget;
import com.ccsens.ptccsens.bean.po.ProTaskPlugin;
import com.ccsens.ptccsens.bean.vo.ProjectFinanceVo;
import com.ccsens.ptccsens.persist.dao.ProMemberDao;
import com.ccsens.ptccsens.persist.dao.PluFinanceApplyDao;
import com.ccsens.ptccsens.persist.dao.PluFinanceDao;
import com.ccsens.ptccsens.persist.dao.PluginDao;
import com.ccsens.ptccsens.persist.dao.ProTaskDetailDao;
import com.ccsens.ptccsens.persist.mapper.PluFinanceAppendBudgetMapper;
import com.ccsens.ptccsens.util.BasicsCodeError;
import com.ccsens.util.exception.BaseException;

33
src/main/java/com/ccsens/ptccsens/service/UserService.java

@ -1,33 +0,0 @@
package com.ccsens.ptccsens.service;
import com.ccsens.common.bean.dto.CMemberDto;
import com.ccsens.common.service.IMemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class UserService implements IUserService{
@Resource
private IMemberService memberService;
@Override
public void memberWithPhone(CMemberDto.PhoneAndUserId params) {
memberService.relevancePhone(params);
}
@Override
public void mergeUser(CMemberDto.MergeUser params) {
//最小项目关联的userId
memberService.mergeUser(params);
//TODO 其他业务
}
}

2
src/main/resources/application-dev.yml

@ -1,7 +1,7 @@
server:
port: 7320
servlet:
context-path: v1.0
context-path: /v1.0
spring:
application:
name: ptccsens

2
src/main/resources/application-prod.yml

@ -1,7 +1,7 @@
server:
port: 7320
servlet:
context-path: v1.0
context-path: /v1.0
spring:
application:
name: ptccsens

2
src/main/resources/application-test.yml

@ -1,7 +1,7 @@
server:
port: 7320
servlet:
context-path: v1.0
context-path: /v1.0
spring:
application:
name: ptccsens

4
src/main/resources/application.yml

@ -1,4 +1,4 @@
spring:
profiles:
active: dev
include: common, util-dev
active: test
include: common, util-test

2
src/main/resources/logback-spring.xml

@ -9,7 +9,7 @@
<contextName>logback</contextName>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
<property name="log.path" value="/home/cloud/ccbasics/log/" />
<property name="log.path" value="/home/cloud/pt_ccsens/log/" />
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->

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

@ -0,0 +1,15 @@
<?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.ptccsens.persist.dao.ProMemberDao">
<select id="findUserOfMemberId" resultType="java.lang.Long">
SELECT
id
FROM
t_pro_member
WHERE
rec_status = 0
AND project_id = #{projectId}
AND user_id = #{userId}
limit 1
</select>
</mapper>

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

@ -0,0 +1,25 @@
<?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.ptccsens.persist.dao.ProTaskDetailDao">
<select id="projectIdByTaskDetailId" resultType="java.lang.Long">
SELECT
b.business_id
FROM
(SELECT l.id as labelId FROM t_label l LEFT JOIN t_label_type lt on l.label_type_id = lt.id WHERE lt.label_type = 1 and l.level = 0 and l.rec_status = 0 and lt.rec_status = 0) l,
(SELECT
@r as _id ,
@r:=(SELECT @r:=parent_task_detail_id FROM t_pro_parent_task WHERE task_detail_id = _id and rec_status = 0) as parentId
FROM
(SELECT @r := #{taskDetailId}) d,
t_pro_parent_task p
WHERE
@r is not null
)p,
t_label_business b
WHERE
l.labelId = b.label_id
and p.parentId = b.business_id
and b.rec_status = 0
limit 1
</select>
</mapper>

25
src/main/resources/mapper_dao/SPluginDao.xml

@ -1,25 +0,0 @@
<?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.ptccsens.persist.dao.SPluginDao">
<select id="getPluginIdByName" resultType="java.lang.Long">
SELECT
id
FROM
`plugin`.t_pro_plugin
WHERE
`name` = #{pluginName}
and rec_status = 0
limit 1
</select>
<update id="updateParamById">
update
t_pro_task_plugin
set
param = #{param}
where
id = #{taskPluginId}
and rec_status = 0
</update>
</mapper>

50
src/main/resources/mapper_dao/SProjectDao.xml

@ -1,50 +0,0 @@
<?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.ptccsens.persist.dao.SProjectDao">
<update id="updateStatusById">
UPDATE t_pro_task_detail
SET rec_status = 2
WHERE
id = #{projectId}
</update>
<select id="queryByCreator" resultType="com.ccsens.ptccsens.bean.vo.ProjectVo$SysProject">
SELECT
t.id,
t.`name`
FROM
t_pro_member m,
t_pro_role_member rm,
t_pro_role r,
t_label l,
t_pro_task_detail t
WHERE
m.id = rm.member_id
and r.id = rm.role_id
and r.label_id = l.id
and l.`level` = 5
and r.project_id = t.id
and m.user_id = #{userId}
and m.rec_status = 0
and rm.rec_status = 0
and r.rec_status = 0
and t.rec_status = 0
and l.rec_status = 0
</select>
<select id="selectById" resultType="com.ccsens.ptccsens.bean.vo.ProjectVo$SysProject">
SELECT
d.id,
d.`name`,
s.plan_start_time AS beginTime,
s.plan_end_time AS endTime
FROM
t_pro_task_detail AS d
LEFT JOIN t_pro_task_sub AS s ON d.id = s.task_detail_id
WHERE
d.rec_status = 0
AND s.rec_status = 0
AND d.id = #{projectId}
</select>
</mapper>

38
src/main/resources/mapper_dao/STaskDao.xml

@ -1,38 +0,0 @@
<?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.ptccsens.persist.dao.STaskDao">
<insert id="insertSelectiveList">
INSERT INTO t_pro_task_sub
(
id,
task_detail_id,
plan_start_time,
plan_end_time,
plan_duration
)
VALUES
<foreach collection="proTaskSubList" item="item" separator=",">
(#{item.id},#{item.taskDetailId},#{item.planStartTime},#{item.planEndTime},#{item.planDuration})
</foreach>
</insert>
<select id="getNowTask" resultType="java.lang.Long">
SELECT
s.id
FROM
t_pro_task_detail d
LEFT JOIN t_pro_parent_task p on d.id = p.task_detail_id
LEFT JOIN (SELECT * FROM t_pro_parent_task WHERE parent_task_detail_id = #{projectId}) p1 on p.parent_task_detail_id = p1.task_detail_id
LEFT JOIN
t_pro_task_sub s on d.id = s.task_detail_id and s.rec_status = 0
WHERE
`name` = #{taskName}
and s.plan_start_time &lt;= #{now}
and s.plan_end_time &gt;= #{now}
and d.rec_status = 0
and p.rec_status = 0
and p1.rec_status = 0
limit 1
</select>
</mapper>

29
src/main/resources/mapper_dao/SubLableDao.xml

@ -1,29 +0,0 @@
<?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.ptccsens.persist.dao.SubLabelDao">
<select id="getLabelByName" resultType="java.lang.Long">
SELECT
l.id
FROM
t_label l
LEFT JOIN t_label_type lt on l.label_type_id = lt.id
WHERE
lt.label_type = #{type}
and
l.description = #{sysRole}
limit 1
</select>
<select id="getLabelByTypeAndLevel" resultType="java.lang.Long">
SELECT
l.id
FROM
t_label l
LEFT JOIN t_label_type lt on l.label_type_id = lt.id
WHERE
lt.label_type = #{type}
and
l.level = #{level}
limit 1
</select>
</mapper>
Loading…
Cancel
Save