From 7cf1dcb5bec150d87d7a4f740615a7dce12bddc0 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Fri, 6 Aug 2021 15:34:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 - .../defaultwbs/api/PluginController.java | 17 +- .../defaultwbs/api/ProjectController.java | 15 +- .../ccsens/defaultwbs/api/RoleController.java | 10 +- .../ccsens/defaultwbs/api/TaskController.java | 21 +- .../ccsens/defaultwbs/api/WbsController.java | 7 +- .../defaultwbs/bean/dto/ProjectDto.java | 10 + .../defaultwbs/persist/dao/ProMemberDao.java | 11 - .../defaultwbs/persist/dao/ProRoleDao.java | 11 - .../persist/dao/ProTaskDetailDao.java | 11 - .../defaultwbs/persist/dao/SPluginDao.java | 10 + .../defaultwbs/persist/dao/SProjectDao.java | 16 + .../defaultwbs/persist/dao/STaskDao.java | 23 ++ .../defaultwbs/service/IImportService.java | 2 +- .../defaultwbs/service/ImportService.java | 333 +++++++++++++----- .../com/ccsens/defaultwbs/util/Constant.java | 16 + .../defaultwbs/util/DefaultCodeError.java | 3 + src/main/resources/application-dev.yml | 11 +- src/main/resources/application-prod.yml | 10 +- src/main/resources/application-test.yml | 2 +- src/main/resources/application.yml | 4 +- src/main/resources/druid-prod.yml | 8 +- src/main/resources/mapper_dao/SPluginDao.xml | 15 + src/main/resources/mapper_dao/SProjectDao.xml | 26 ++ src/main/resources/mapper_dao/STaskDao.xml | 38 ++ 25 files changed, 470 insertions(+), 167 deletions(-) delete mode 100644 src/main/java/com/ccsens/defaultwbs/persist/dao/ProMemberDao.java delete mode 100644 src/main/java/com/ccsens/defaultwbs/persist/dao/ProRoleDao.java delete mode 100644 src/main/java/com/ccsens/defaultwbs/persist/dao/ProTaskDetailDao.java create mode 100644 src/main/java/com/ccsens/defaultwbs/persist/dao/SPluginDao.java create mode 100644 src/main/java/com/ccsens/defaultwbs/persist/dao/SProjectDao.java create mode 100644 src/main/java/com/ccsens/defaultwbs/persist/dao/STaskDao.java create mode 100644 src/main/resources/mapper_dao/SPluginDao.xml create mode 100644 src/main/resources/mapper_dao/SProjectDao.xml create mode 100644 src/main/resources/mapper_dao/STaskDao.xml diff --git a/pom.xml b/pom.xml index 205837a..0a66f3c 100644 --- a/pom.xml +++ b/pom.xml @@ -43,13 +43,6 @@ - - - - - - - diff --git a/src/main/java/com/ccsens/defaultwbs/api/PluginController.java b/src/main/java/com/ccsens/defaultwbs/api/PluginController.java index 93d95d5..8e3b65a 100644 --- a/src/main/java/com/ccsens/defaultwbs/api/PluginController.java +++ b/src/main/java/com/ccsens/defaultwbs/api/PluginController.java @@ -1,5 +1,8 @@ package com.ccsens.defaultwbs.api; +import com.ccsens.cloudutil.annotation.MustLogin; +import com.ccsens.common.bean.dto.CPluginDto; +import com.ccsens.common.service.IPluginService; import com.ccsens.defaultwbs.bean.dto.PluginDto; import com.ccsens.defaultwbs.bean.dto.ProjectDto; import com.ccsens.defaultwbs.bean.vo.PluginVo; @@ -16,6 +19,9 @@ 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 逗 */ @@ -24,11 +30,14 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/plugin") @Slf4j public class PluginController { + @Resource + private IPluginService pluginService; - @ApiOperation(value = "根据id查询插件信息", notes = "根据id查询项目信息") - @RequestMapping(value = "", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse getPluginById(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{ - + @MustLogin + @ApiOperation(value = "给任务添加插件", notes = "") + @RequestMapping(value = "/save", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse queryPatientList(@ApiParam @Validated @RequestBody QueryDto> params) throws Exception{ + pluginService.updateTaskPlugin(params.getParam()); return JsonResponse.newInstance().ok(); } } diff --git a/src/main/java/com/ccsens/defaultwbs/api/ProjectController.java b/src/main/java/com/ccsens/defaultwbs/api/ProjectController.java index 457b1e6..58d22b3 100644 --- a/src/main/java/com/ccsens/defaultwbs/api/ProjectController.java +++ b/src/main/java/com/ccsens/defaultwbs/api/ProjectController.java @@ -1,7 +1,9 @@ package com.ccsens.defaultwbs.api; +import com.ccsens.common.bean.dto.CProjectDto; +import com.ccsens.common.bean.vo.CProjectVo; +import com.ccsens.common.service.IProjectService; import com.ccsens.defaultwbs.bean.dto.ProjectDto; -import com.ccsens.defaultwbs.bean.vo.ProjectVo; import com.ccsens.util.JsonResponse; import com.ccsens.util.bean.dto.QueryDto; import io.swagger.annotations.Api; @@ -14,6 +16,8 @@ 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 逗 */ @@ -23,10 +27,13 @@ import org.springframework.web.bind.annotation.RestController; @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 findProjectById(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{ - - return JsonResponse.newInstance().ok(); + public JsonResponse findProjectById(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{ + CProjectVo.ProjectInfo projectById = projectService.findProjectById(params.getParam(), params.getUserId()); + return JsonResponse.newInstance().ok(projectById); } } diff --git a/src/main/java/com/ccsens/defaultwbs/api/RoleController.java b/src/main/java/com/ccsens/defaultwbs/api/RoleController.java index 3b31d39..579cb86 100644 --- a/src/main/java/com/ccsens/defaultwbs/api/RoleController.java +++ b/src/main/java/com/ccsens/defaultwbs/api/RoleController.java @@ -1,9 +1,9 @@ package com.ccsens.defaultwbs.api; import com.ccsens.cloudutil.annotation.MustLogin; -import com.ccsens.common.bean.vo.RoleVo; +import com.ccsens.common.bean.dto.CRoleDto; +import com.ccsens.common.bean.vo.CRoleVo; import com.ccsens.common.service.IProRoleService; -import com.ccsens.common.bean.dto.RoleDto; import com.ccsens.util.JsonResponse; import com.ccsens.util.bean.dto.QueryDto; import io.swagger.annotations.Api; @@ -32,15 +32,15 @@ public class RoleController { @MustLogin @ApiOperation(value = "根据项目id查找角色", notes = "") @RequestMapping(value = "/show", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse queryByProjectId(@ApiParam @Validated @RequestBody QueryDto params) { - RoleVo.QueryRole queryRole = roleService.QueryShowRole(params.getParam(), params.getUserId()); + public JsonResponse queryByProjectId(@ApiParam @Validated @RequestBody QueryDto 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 params) { + public JsonResponse updateShow(@ApiParam @Validated @RequestBody QueryDto params) { roleService.updateShowRole(params.getParam(),params.getUserId()); return JsonResponse.newInstance().ok(); } diff --git a/src/main/java/com/ccsens/defaultwbs/api/TaskController.java b/src/main/java/com/ccsens/defaultwbs/api/TaskController.java index b2acb6a..d92a2d6 100644 --- a/src/main/java/com/ccsens/defaultwbs/api/TaskController.java +++ b/src/main/java/com/ccsens/defaultwbs/api/TaskController.java @@ -1,9 +1,10 @@ package com.ccsens.defaultwbs.api; import com.ccsens.cloudutil.annotation.MustLogin; -import com.ccsens.common.bean.dto.TaskDto; -import com.ccsens.common.bean.vo.TaskVo; +import com.ccsens.common.bean.dto.CTaskDto; +import com.ccsens.common.bean.vo.CTaskVo; import com.ccsens.common.service.ITaskService; +import com.ccsens.defaultwbs.bean.vo.TaskVo; import com.ccsens.util.JsonResponse; import com.ccsens.util.bean.dto.QueryDto; import io.swagger.annotations.Api; @@ -33,32 +34,32 @@ public class TaskController { @MustLogin @ApiOperation(value = "查找永久日常任务", notes = "") @RequestMapping(value = "/permanent", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse> queryPermanentGlobalTask(@ApiParam @Validated @RequestBody QueryDto params) { - List queryTasks = taskService.queryPermanentGlobalTask(params.getParam(), params.getUserId()); + public JsonResponse> queryPermanentGlobalTask(@ApiParam @Validated @RequestBody QueryDto params) { + List 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> queryGlobalTask(@ApiParam @Validated @RequestBody QueryDto params) { - List queryTasks = taskService.queryGlobalTask(params.getParam(), params.getUserId()); + public JsonResponse> queryGlobalTask(@ApiParam @Validated @RequestBody QueryDto params) { + List 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> queryRegularTask(@ApiParam @Validated @RequestBody QueryDto params) { - List queryTasks = taskService.queryRegularTask(params.getParam(), params.getUserId()); + public JsonResponse> queryRegularTask(@ApiParam @Validated @RequestBody QueryDto params) { + List 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 params) { - + public JsonResponse updateTaskType(@ApiParam @Validated @RequestBody QueryDto params) throws Exception { + taskService.updateTaskType(params.getParam(),params.getUserId()); return JsonResponse.newInstance().ok(); } } diff --git a/src/main/java/com/ccsens/defaultwbs/api/WbsController.java b/src/main/java/com/ccsens/defaultwbs/api/WbsController.java index d539159..08b4b68 100644 --- a/src/main/java/com/ccsens/defaultwbs/api/WbsController.java +++ b/src/main/java/com/ccsens/defaultwbs/api/WbsController.java @@ -5,6 +5,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.ccsens.cloudutil.annotation.MustLogin; +import com.ccsens.defaultwbs.bean.dto.ProjectDto; import com.ccsens.defaultwbs.service.IImportService; import com.ccsens.defaultwbs.util.Constant; import com.ccsens.defaultwbs.util.DefaultCodeError; @@ -38,10 +39,10 @@ public class WbsController { @MustLogin @ApiOperation(value = "导入WBS",notes = "文件大小不能超过20M,支持后缀:.xls|.xlsx") @ApiImplicitParams({ - @ApiImplicitParam(name = "file", value = "WBS表", required = true, paramType = "form",dataType = "__file") +// @ApiImplicitParam(name = "file", value = "WBS表", required = true, paramType = "form",dataType = "__file") }) @RequestMapping(value = "", method = RequestMethod.POST) - public JsonResponse importWbs( QueryDto params) throws Exception { + public JsonResponse importWbs(QueryDto params,Long projectId) throws Exception { MultipartFile f = params.getParam(); String ext = FileUtil.extName(f.getOriginalFilename()); @@ -61,7 +62,7 @@ public class WbsController { FileUtil.writeFromStream(f.getInputStream(), fullPath); //导入数据库 - importService.importWbs(fullPath,params.getUserId()); + importService.importWbs(fullPath,params.getUserId(),projectId); return JsonResponse.newInstance().ok(); } diff --git a/src/main/java/com/ccsens/defaultwbs/bean/dto/ProjectDto.java b/src/main/java/com/ccsens/defaultwbs/bean/dto/ProjectDto.java index 37c1daf..242570f 100644 --- a/src/main/java/com/ccsens/defaultwbs/bean/dto/ProjectDto.java +++ b/src/main/java/com/ccsens/defaultwbs/bean/dto/ProjectDto.java @@ -3,6 +3,7 @@ package com.ccsens.defaultwbs.bean.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.springframework.web.multipart.MultipartFile; import javax.validation.constraints.NotNull; @@ -16,4 +17,13 @@ public class ProjectDto { @ApiModelProperty("项目id") private Long projectId; } + + @Data + @ApiModel("导入wbs") + public static class ImportWbs { + @ApiModelProperty("wbs文件") + private MultipartFile file; + @ApiModelProperty("项目id") + private Long id; + } } diff --git a/src/main/java/com/ccsens/defaultwbs/persist/dao/ProMemberDao.java b/src/main/java/com/ccsens/defaultwbs/persist/dao/ProMemberDao.java deleted file mode 100644 index 678f9c3..0000000 --- a/src/main/java/com/ccsens/defaultwbs/persist/dao/ProMemberDao.java +++ /dev/null @@ -1,11 +0,0 @@ -//package com.ccsens.defaultwbs.persist.dao; -// -//import com.ccsens.common.persist.mapper.ProMemberMapper; -//import org.springframework.stereotype.Repository; -// -///** -// * @author 逗 -// */ -//@Repository -//public interface ProMemberDao extends ProMemberMapper { -//} diff --git a/src/main/java/com/ccsens/defaultwbs/persist/dao/ProRoleDao.java b/src/main/java/com/ccsens/defaultwbs/persist/dao/ProRoleDao.java deleted file mode 100644 index 325c44e..0000000 --- a/src/main/java/com/ccsens/defaultwbs/persist/dao/ProRoleDao.java +++ /dev/null @@ -1,11 +0,0 @@ -//package com.ccsens.defaultwbs.persist.dao; -// -//import com.ccsens.common.persist.mapper.ProRoleMapper; -//import org.springframework.stereotype.Repository; -// -///** -// * @author 逗 -// */ -//@Repository -//public interface ProRoleDao extends ProRoleMapper { -//} diff --git a/src/main/java/com/ccsens/defaultwbs/persist/dao/ProTaskDetailDao.java b/src/main/java/com/ccsens/defaultwbs/persist/dao/ProTaskDetailDao.java deleted file mode 100644 index 2f6ba78..0000000 --- a/src/main/java/com/ccsens/defaultwbs/persist/dao/ProTaskDetailDao.java +++ /dev/null @@ -1,11 +0,0 @@ -//package com.ccsens.defaultwbs.persist.dao; -// -//import com.ccsens.common.persist.mapper.ProTaskDetailMapper; -//import org.springframework.stereotype.Repository; -// -///** -// * @author 逗 -// */ -//@Repository -//public interface ProTaskDetailDao extends ProTaskDetailMapper { -//} diff --git a/src/main/java/com/ccsens/defaultwbs/persist/dao/SPluginDao.java b/src/main/java/com/ccsens/defaultwbs/persist/dao/SPluginDao.java new file mode 100644 index 0000000..9886ffc --- /dev/null +++ b/src/main/java/com/ccsens/defaultwbs/persist/dao/SPluginDao.java @@ -0,0 +1,10 @@ +package com.ccsens.defaultwbs.persist.dao; + +import org.apache.ibatis.annotations.Param; + +/** + * @author 逗 + */ +public interface SPluginDao { + Long getPluginIdByName(@Param("pluginName") String pluginName); +} diff --git a/src/main/java/com/ccsens/defaultwbs/persist/dao/SProjectDao.java b/src/main/java/com/ccsens/defaultwbs/persist/dao/SProjectDao.java new file mode 100644 index 0000000..20fa25a --- /dev/null +++ b/src/main/java/com/ccsens/defaultwbs/persist/dao/SProjectDao.java @@ -0,0 +1,16 @@ +package com.ccsens.defaultwbs.persist.dao; + +import com.ccsens.defaultwbs.bean.vo.ProjectVo; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author 逗 + */ +@Repository +public interface SProjectDao { + + List queryByCreator(@Param("userId") Long userId); +} diff --git a/src/main/java/com/ccsens/defaultwbs/persist/dao/STaskDao.java b/src/main/java/com/ccsens/defaultwbs/persist/dao/STaskDao.java new file mode 100644 index 0000000..5ac80c6 --- /dev/null +++ b/src/main/java/com/ccsens/defaultwbs/persist/dao/STaskDao.java @@ -0,0 +1,23 @@ +package com.ccsens.defaultwbs.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 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); +} diff --git a/src/main/java/com/ccsens/defaultwbs/service/IImportService.java b/src/main/java/com/ccsens/defaultwbs/service/IImportService.java index e9716ff..30668fa 100644 --- a/src/main/java/com/ccsens/defaultwbs/service/IImportService.java +++ b/src/main/java/com/ccsens/defaultwbs/service/IImportService.java @@ -11,6 +11,6 @@ public interface IImportService { * @param userId userId * @throws Exception 异常 */ - void importWbs(String path, Long userId) throws Exception; + void importWbs(String path, Long userId,Long projectId) throws Exception; } diff --git a/src/main/java/com/ccsens/defaultwbs/service/ImportService.java b/src/main/java/com/ccsens/defaultwbs/service/ImportService.java index f4a8dd4..f97d0be 100644 --- a/src/main/java/com/ccsens/defaultwbs/service/ImportService.java +++ b/src/main/java/com/ccsens/defaultwbs/service/ImportService.java @@ -1,23 +1,25 @@ package com.ccsens.defaultwbs.service; +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.cloudutil.bean.tall.vo.UserVo; -import com.ccsens.cloudutil.feign.TallFeignClient; import com.ccsens.common.persist.dao.*; import com.ccsens.common.bean.po.*; -import com.ccsens.common.bean.vo.ProjectVo; import com.ccsens.common.persist.mapper.*; +import com.ccsens.defaultwbs.bean.vo.ProjectVo; +import com.ccsens.defaultwbs.persist.dao.SProjectDao; +import com.ccsens.defaultwbs.persist.dao.SPluginDao; +import com.ccsens.defaultwbs.persist.dao.STaskDao; import com.ccsens.defaultwbs.persist.dao.SubLabelDao; import com.ccsens.common.bean.po.LabelBusiness; import com.ccsens.common.bean.po.ProMemberStakeholder; import com.ccsens.defaultwbs.util.DefaultCodeError; import com.ccsens.defaultwbs.util.Constant; -import com.ccsens.util.CodeEnum; import com.ccsens.util.ExcelUtil; -import com.ccsens.util.JsonResponse; 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; @@ -31,8 +33,9 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.FileInputStream; import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * @author 逗 @@ -47,9 +50,9 @@ public class ImportService implements IImportService { @Resource private ProTaskDetailDao taskDetailDao; @Resource - private ProTaskSubMapper taskSubMapper; + private ProTaskSubDao taskSubDao; @Resource - private ProTaskVersionMapper taskVersionMapper; + private ProTaskVersionDao taskVersionMapper; @Resource private SubLabelDao subLabelDao; @Resource @@ -63,13 +66,21 @@ public class ImportService implements IImportService { @Resource private ProRoleRepulsionDao repulsionDao; @Resource - private LabelBusinessMapper labelBusinessMapper; + private LabelBusinessDao labelBusinessDao; @Resource - private ProParentTaskMapper parentTaskMapper; + private ProParentTaskDao parentTaskMapper; @Resource - private ProRoleTaskMapper roleTaskMapper; + private ProRoleTaskDao roleTaskMapper; @Resource - private TallFeignClient tallFeignClient; + private UserDao userDao; + @Resource + private SProjectDao projectDao; + @Resource + private STaskDao sTaskDao; + @Resource + private SPluginDao sTaskPluginDao; + @Resource + private ProTaskPluginDao proTaskPluginDao; /** * 读取wbs文件 @@ -78,12 +89,10 @@ public class ImportService implements IImportService { * @throws Exception 异常 */ @Override - public void importWbs(String path, Long userId) throws Exception { + public void importWbs(String path, Long userId,Long projectId) throws Exception { //获取excel文件 InputStream is = new FileInputStream(path); XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); - //项目 - ProjectVo.SysProject project = new ProjectVo.SysProject(); //角色 Map roleMap = new HashMap<>(); //成员 @@ -92,13 +101,13 @@ public class ImportService implements IImportService { Map taskMap = new HashMap<>(); //读取文件 - readExcel(xssfWorkbook, userId, project, roleMap, memberMap, taskMap); + readExcel(xssfWorkbook, userId, roleMap, memberMap, taskMap,projectId); } /** * 读取每个sheet */ - private void readExcel(XSSFWorkbook wb, Long userId, ProjectVo.SysProject project, Map roleMap, Map memberMap, Map taskMap) { + private void readExcel(XSSFWorkbook wb, Long userId, Map roleMap, Map memberMap, Map taskMap,Long projectId) { //获取wbsSheet XSSFSheet wbsSheet = wb.getSheet(Constant.WbsExcel.WBS_SHEET); if (ObjectUtil.isNull(wbsSheet)) { @@ -140,7 +149,7 @@ public class ImportService implements IImportService { throw new BaseException(DefaultCodeError.WSB_NOT_TASK_HEADER); } //添加项目 - project = readProject(wbsSheet, projectStart, userId); + ProjectVo.SysProject project = readProject(wbsSheet, projectStart, userId,projectId); if(ObjectUtil.isNull(project)){ throw new BaseException(DefaultCodeError.WSB_NOT_PROJECT_HEADER); } @@ -148,12 +157,14 @@ public class ImportService implements IImportService { readMemberSheet(memberSheet,project.getId(),roleMap,memberMap); //添加任务 readTask(wbsSheet,taskStart,project,roleMap); + //TODO 在tall客户端添加项目和用户的关联信息 + } /** * 读取项目信息 */ - private ProjectVo.SysProject readProject(XSSFSheet wbsSheet, int projectStart, Long userId) { + private ProjectVo.SysProject readProject(XSSFSheet wbsSheet, int projectStart, Long userId,Long projectId) { ProjectVo.SysProject project = new ProjectVo.SysProject(); //获取项目信息的那一行 XSSFRow row = wbsSheet.getRow(projectStart + 1); @@ -173,9 +184,19 @@ public class ImportService implements IImportService { //版本 String version = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(row.getCell(5))); if (StrUtil.isEmpty(projectName)) { - throw new BaseException(CodeEnum.WBS_NOT_PROJECT_NAME); + throw new BaseException(DefaultCodeError.WBS_NOT_PROJECT_NAME); + } + //项目名不能重复(当前用户创建的项目内名字不能重复) + //根据userId查找已创建的项目 + List sysProjectList = projectDao.queryByCreator(userId); + if(CollectionUtil.isNotEmpty(sysProjectList)){ + sysProjectList.forEach(p -> { + if(projectName.equalsIgnoreCase(p.getName())){ + //如果名称重复则提示错误信息 + throw new BaseException(DefaultCodeError.PROJECT_NAME_REPEAT); + } + }); } - //TODO 项目名不能重复(当前用户创建的项目内名字不能重复) //判断时间是否正确 String begin = ExcelUtil.getCellValue(row.getCell(3)); String end = ExcelUtil.getCellValue(row.getCell(4)); @@ -205,7 +226,7 @@ public class ImportService implements IImportService { taskSub.setPlanStartTime(bTime); taskSub.setPlanEndTime(eTime); taskSub.setPlanDuration(eTime - bTime); - taskSubMapper.insertSelective(taskSub); + taskSubDao.insertSelective(taskSub); project.setBeginTime(bTime); project.setEndTime(eTime); //添加版本信息 @@ -219,8 +240,18 @@ public class ImportService implements IImportService { Long labelId = subLabelDao.getLabelByTypeAndLevel(1, 0); //添加任务标签关联信息 saveLabelTask(taskDetail.getId(), labelId); - //TODO 在tall客户端添加项目和用户的关联信息 - //TODO 处理创建人的权限问题 + + //处理创建人的权限问题(添加创建人角色) + //查找创建者标签id + Long roleLabelId = subLabelDao.getLabelByTypeAndLevel(5, 5); + //添加创建者角色 + ProRole role = new ProRole(); + role.setId(snowflake.nextId()); + role.setName("创建者"); + role.setProjectId(taskDetail.getId()); + role.setLabelId(roleLabelId); + roleDao.insertSelective(role); + return project; } @@ -234,7 +265,7 @@ public class ImportService implements IImportService { labelBusiness.setBusinessType((byte) 0); labelBusiness.setBusinessId(taskDetailId); labelBusiness.setLabelId(labelId); - labelBusinessMapper.insertSelective(labelBusiness); + labelBusinessDao.insertSelective(labelBusiness); } /** @@ -293,41 +324,38 @@ public class ImportService implements IImportService { } //添加成员 if(StrUtil.isNotEmpty(memberName) && !"/".equalsIgnoreCase(roleName)){ - //TODO 根据成员手机号查找userId 成员关联userId - Long memberUserId = null; - JsonResponse result = tallFeignClient.getUserIdByPhone(memberPhone); - if (result.getCode() == CodeEnum.SUCCESS.getCode().longValue()) { - memberUserId = result.getData(); + //如果成员名和手机号重复当做一个人来处理 + Long memberId = memberMap.get(memberName + "_" + memberPhone); + if(ObjectUtil.isNull(memberId)){ + //TODO 根据成员手机号查找userId 成员关联userId + Long userId = userDao.getUserIdByPhone(memberPhone); + //添加成员至数据库 + ProMember proMember = new ProMember(); + proMember.setId(snowflake.nextId()); + proMember.setName(memberName); + proMember.setPhone(memberPhone); + proMember.setProjectId(projectId); + proMember.setUserId(userId); + memberDao.insertSelective(proMember); + memberMap.put(memberName+"_"+memberPhone,proMember.getId()); + memberId = proMember.getId(); } - //添加成员至数据库 - ProMember proMember = new ProMember(); - proMember.setId(snowflake.nextId()); - proMember.setName(memberName); - proMember.setPhone(memberPhone); - proMember.setProjectId(projectId); - proMember.setUserId(memberUserId); - memberDao.insertSelective(proMember); - memberMap.put(memberName+"_"+memberPhone,proMember.getId()); //添加角色成员关联信息 ProRoleMember roleMember = new ProRoleMember(); roleMember.setId(snowflake.nextId()); roleMember.setRoleId(roleId); - roleMember.setMemberId(proMember.getId()); + roleMember.setMemberId(memberId); roleMemberDao.insertSelective(roleMember); //添加奖惩干系人 if(StrUtil.isNotEmpty(stakeholderName) && !"/".equalsIgnoreCase(roleName)){ //TODO 根据干系人手机号查找userId 奖惩干系人关联userId - Long stakeholderUserId = null; - JsonResponse stakeholderUser = tallFeignClient.getUserIdByPhone(stakeholderPhone); - if (result.getCode() == CodeEnum.SUCCESS.getCode().longValue()) { - stakeholderUserId = stakeholderUser.getData(); - } + Long userId = userDao.getUserIdByPhone(memberPhone); ProMemberStakeholder memberStakeholder = new ProMemberStakeholder(); memberStakeholder.setId(snowflake.nextId()); - memberStakeholder.setMemeberId(proMember.getId()); + memberStakeholder.setMemeberId(memberId); memberStakeholder.setStakeholderName(stakeholderName); memberStakeholder.setStakeholderPhone(stakeholderPhone); - memberStakeholder.setUserId(stakeholderUserId); + memberStakeholder.setUserId(userId); memberStakeholderMapper.insertSelective(memberStakeholder); } } @@ -384,6 +412,7 @@ public class ImportService implements IImportService { //一级任务id Long firstTaskId = null; + Long taskStartTime = project.getBeginTime(); for (int i = taskStart + 1; i <= wbsSheet.getLastRowNum(); i++) { //获取当前行 XSSFRow row = wbsSheet.getRow(i); @@ -412,6 +441,12 @@ public class ImportService implements IImportService { 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(); @@ -435,7 +470,7 @@ public class ImportService implements IImportService { labelBusiness.setBusinessType((byte) 0); labelBusiness.setBusinessId(taskDetail.getId()); labelBusiness.setLabelId(labelId); - labelBusinessMapper.insertSelective(labelBusiness); + labelBusinessDao.insertSelective(labelBusiness); //任务和角色关联 if(StrUtil.isEmpty(executorRole)){ throw new BaseException(DefaultCodeError.WBS_NOT_FIND_ROLE); @@ -452,54 +487,180 @@ public class ImportService implements IImportService { roleTask.setTaskId(taskDetail.getId()); roleTaskMapper.insertSelective(roleTask); } + //处理时间、添加任务分解、添加任务标签 - if(StrUtil.isEmpty(beginTime) || "日常".equalsIgnoreCase(beginTime)){ - //添加任务分解 - ProTaskSub taskSub = new ProTaskSub(); - taskSub.setId(snowflake.nextId()); - taskSub.setTaskDetailId(taskDetail.getId()); - taskSubMapper.insertSelective(taskSub); - //查找日常任务标签并关联信息 - Long label = subLabelDao.getLabelByTypeAndLevel(1, 2); - saveLabelTask(taskDetail.getId(),label); - }else { - Long bTime; - Long eTime; - try { - bTime = Long.parseLong(beginTime); - eTime = Long.parseLong(endTime); - //添加任务分解 - ProTaskSub taskSub = new ProTaskSub(); - taskSub.setId(snowflake.nextId()); - taskSub.setTaskDetailId(taskDetail.getId()); - taskSub.setPlanEndTime(eTime); - taskSub.setPlanStartTime(bTime); - taskSub.setPlanDuration(eTime - bTime); - taskSubMapper.insertSelective(taskSub); - //查找定期任务标签并关联任务 - Long taskLabel = subLabelDao.getLabelByTypeAndLevel(1, 3); - saveLabelTask(taskDetail.getId(),taskLabel); - //添加时间颗粒度标签并关联 - Long timeLabel = subLabelDao.getLabelByTypeAndLevel(0, 4); - saveLabelTask(taskDetail.getId(),timeLabel); - }catch (Exception e){ - //TODO 其他情况暂不处理 - throw new BaseException(DefaultCodeError.WBS_PROJECT_TIME_ERROR); - } - } + taskStartTime = taskSaveTime(taskStartTime, project, beginTime, endTime, duration, taskDetail.getId()); + //添加时间颗粒度标签并关联 + Long timeLabel = subLabelDao.getLabelByTypeAndLevel(0, 4); + saveLabelTask(taskDetail.getId(),timeLabel); + //TODO 插件 + plugin(plugin1,taskDetail.getId(),1); + plugin(plugin2,taskDetail.getId(),2); + plugin(plugin3,taskDetail.getId(),3); +// //处理时间、添加任务分解、添加任务标签 +// if(StrUtil.isEmpty(beginTime) || "日常".equalsIgnoreCase(beginTime)){ +// //添加任务分解 +// ProTaskSub taskSub = new ProTaskSub(); +// taskSub.setId(snowflake.nextId()); +// taskSub.setTaskDetailId(taskDetail.getId()); +// taskSubMapper.insertSelective(taskSub); +// //查找日常任务标签并关联信息 +// Long label = subLabelDao.getLabelByTypeAndLevel(1, 2); +// saveLabelTask(taskDetail.getId(),label); +// }else { +// Long bTime; +// Long eTime; +// try { +// bTime = Long.parseLong(beginTime); +// eTime = Long.parseLong(endTime); +// //添加任务分解 +// ProTaskSub taskSub = new ProTaskSub(); +// taskSub.setId(snowflake.nextId()); +// taskSub.setTaskDetailId(taskDetail.getId()); +// taskSub.setPlanEndTime(eTime); +// taskSub.setPlanStartTime(bTime); +// taskSub.setPlanDuration(eTime - bTime); +// taskSubMapper.insertSelective(taskSub); +// //查找定期任务标签并关联任务 +// Long taskLabel = subLabelDao.getLabelByTypeAndLevel(1, 3); +// saveLabelTask(taskDetail.getId(),taskLabel); +// //添加时间颗粒度标签并关联 +// Long timeLabel = subLabelDao.getLabelByTypeAndLevel(0, 4); +// saveLabelTask(taskDetail.getId(),timeLabel); +// }catch (Exception e){ +// //TODO 其他情况暂不处理 +// throw new BaseException(DefaultCodeError.WBS_PROJECT_TIME_ERROR); +// } +// } } //TODO 检查人 //TODO 及时奖惩 //TODO 交付物 - //TODO 插件 + //TODO 添加默认插件 } } + private void plugin(String plugin,Long taskId,int row) { + if(StrUtil.isNotEmpty(plugin)){ + //根据插件名称查找插件id + Long pluginId = sTaskPluginDao.getPluginIdByName(plugin); + if(ObjectUtil.isNull(pluginId)){ + throw new BaseException(DefaultCodeError.PLUGIN_NAME_ERROR); + } + //添加插件 + 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); + } + } + + private Long taskSaveTime(Long taskStartTime,ProjectVo.SysProject project, String beginTime, String endTime, String duration, Long taskDetailId) { + + 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 = Constant.WBS_DURATION.get(trimStr); + if(ObjectUtil.isNull(aLong)){ + throw new BaseException(DefaultCodeError.WBS_PROJECT_TIME_ERROR); + } + //获取字符串内的数字 + 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 = subLabelDao.getLabelByTypeAndLevel(1, 3); + saveLabelTask(taskDetailId,taskLabel); + + }else { + //添加任务分解 + ProTaskSub taskSub = new ProTaskSub(); + taskSub.setId(snowflake.nextId()); + taskSub.setTaskDetailId(taskDetailId); + taskSubDao.insertSelective(taskSub); + //查找日常任务标签并关联信息 + Long label = subLabelDao.getLabelByTypeAndLevel(1, 2); + saveLabelTask(taskDetailId,label); + } + }else { + Long bTime; + Long eTime; + try { + bTime = Long.parseLong(beginTime); + eTime = 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 = subLabelDao.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 taskDateList = + NatureToDate.generateDates(beginTime, startDate, endDate); + if (CollectionUtil.isEmpty(taskDateList)) { + return taskStartTime; + } + List 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); + } + }catch (Exception e1){ + throw new BaseException(String.valueOf(e1)); +// throw new BaseException(DefaultCodeError.WBS_PROJECT_TIME_ERROR); + } + } + } + return taskStartTime; + } + /** * 添加一级任务 */ private Long saveFirstTask(ProjectVo.SysProject project, String firstTaskName) { - Long firstTaskId;//添加一级任务信息(任务详情) + //TODO 一级任务负责人是项目经理 + Long firstTaskId; ProTaskDetail taskDetail = new ProTaskDetail(); taskDetail.setId(snowflake.nextId()); taskDetail.setName(firstTaskName); @@ -512,7 +673,7 @@ public class ImportService implements IImportService { taskSub.setPlanStartTime(project.getBeginTime()); taskSub.setPlanEndTime(project.getEndTime()); taskSub.setPlanDuration(project.getEndTime() - project.getBeginTime()); - taskSubMapper.insertSelective(taskSub); + taskSubDao.insertSelective(taskSub); //任务关联信息(关联项目) ProParentTask parentTask = new ProParentTask(); parentTask.setId(snowflake.nextId()); diff --git a/src/main/java/com/ccsens/defaultwbs/util/Constant.java b/src/main/java/com/ccsens/defaultwbs/util/Constant.java index 08f4783..92a0b22 100644 --- a/src/main/java/com/ccsens/defaultwbs/util/Constant.java +++ b/src/main/java/com/ccsens/defaultwbs/util/Constant.java @@ -1,5 +1,8 @@ package com.ccsens.defaultwbs.util; +import java.util.HashMap; +import java.util.Map; + /** * @author 逗 */ @@ -22,4 +25,17 @@ public class Constant { /**excel文件格式验证*/ public static final String WBS_FILE_FORMAT = "xls,xlsx"; } + + /**wbs表时长对应关系表*/ + public static final Map WBS_DURATION = new HashMap<>(); + static { + WBS_DURATION.put("s",1000L); + WBS_DURATION.put("min",60 * 1000L); + WBS_DURATION.put("h",60 * 60 * 1000L); + WBS_DURATION.put("d",24 * 60 * 60 * 1000L); + WBS_DURATION.put("w",7 * 24 * 60 * 60 * 1000L); + WBS_DURATION.put("m",30 * 24 * 60 * 60 * 1000L); + WBS_DURATION.put("y",365 * 24 * 60 * 60 * 1000L); + } + } diff --git a/src/main/java/com/ccsens/defaultwbs/util/DefaultCodeError.java b/src/main/java/com/ccsens/defaultwbs/util/DefaultCodeError.java index 7eb3078..8063125 100644 --- a/src/main/java/com/ccsens/defaultwbs/util/DefaultCodeError.java +++ b/src/main/java/com/ccsens/defaultwbs/util/DefaultCodeError.java @@ -18,5 +18,8 @@ public class DefaultCodeError extends CodeError { public static final Code FILE_FORMAT_ERROR = new Code(8,"不支持的格式类型", true); public static final Code WBS_NOT_PROJECT_TIME = new Code(9,"项目时间不能为空", true); public static final Code TASK_VITAL_LABEL_ERROR = new Code(9,"任务标签异常", true); + public static final Code WBS_NOT_PROJECT_NAME = new Code(10,"项目名称不能为空", true); + public static final Code PROJECT_NAME_REPEAT = new Code(11,"项目名称重复", true); + public static final Code PLUGIN_NAME_ERROR = new Code(12,"请填写正确的插件名称", true); } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 9755e33..aeb5062 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -7,11 +7,16 @@ spring: name: defaultwbs datasource: type: com.alibaba.druid.pool.DruidDataSource +# rabbitmq: +# host: 192.168.0.99 +# password: 111111 +# port: 5672 +# username: admin rabbitmq: - host: 192.168.0.99 - password: 111111 + host: 127.0.0.1 + password: guest port: 5672 - username: admin + username: guest redis: database: 0 host: 127.0.0.1 diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index c85eac1..d4185c2 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -1,5 +1,5 @@ server: - port: 7130 + port: 7210 servlet: context-path: spring: @@ -8,7 +8,7 @@ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource rabbitmq: - host: 127.0.0.1 + host: 121.36.3.207 password: 111111 port: 5672 username: admin @@ -21,15 +21,15 @@ spring: max-idle: 10 max-wait: -1ms min-idle: 0 -# password: '' - password: 'areowqr!@43ef' + password: '' +# password: 'areowqr!@43ef' port: 6379 timeout: 1000ms swagger: enable: true eureka: instance: - ip-address: 121.36.3.207 + ip-address: 121.36.106.168 gatewayUrl: https://www.tall.wiki/gateway/ notGatewayUrl: https://www.tall.wiki/ diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 94502d3..9db4609 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -40,7 +40,7 @@ mybatisCache: timeout: 1000 eureka: instance: - ip-address: 192.168.0.99 + ip-address: 127.0.0.1 file: path: /home/cloud/defaultwbs/uploads/ diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2fb38e5..c3b11fb 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: dev - include: common, util-dev + active: test + include: common, util-test diff --git a/src/main/resources/druid-prod.yml b/src/main/resources/druid-prod.yml index cf8d8b7..5f47ce4 100644 --- a/src/main/resources/druid-prod.yml +++ b/src/main/resources/druid-prod.yml @@ -15,7 +15,8 @@ spring: maxWait: 60000 minEvictableIdleTimeMillis: 300000 minIdle: 5 - password: +# password: + password: 68073a279b399baa1fa12cf39bfbb65bfc1480ffee7b659ccc81cf19be8c4473 poolPreparedStatements: true servletLogSlowSql: true servletLoginPassword: 111111 @@ -27,7 +28,8 @@ spring: testOnReturn: false testWhileIdle: true timeBetweenEvictionRunsMillis: 60000 - url: jdbc:mysql://127.0.0.1/defaultwbs?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true +# url: jdbc:mysql://127.0.0.1/defaultwbs?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true + url: jdbc:mysql://test.tall.wiki/defaultwbs?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true username: root validationQuery: SELECT 1 FROM DUAL - env: CCSENS_GAME \ No newline at end of file + env: CCSENS_TALL \ No newline at end of file diff --git a/src/main/resources/mapper_dao/SPluginDao.xml b/src/main/resources/mapper_dao/SPluginDao.xml new file mode 100644 index 0000000..684198c --- /dev/null +++ b/src/main/resources/mapper_dao/SPluginDao.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_dao/SProjectDao.xml b/src/main/resources/mapper_dao/SProjectDao.xml new file mode 100644 index 0000000..31cf462 --- /dev/null +++ b/src/main/resources/mapper_dao/SProjectDao.xml @@ -0,0 +1,26 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_dao/STaskDao.xml b/src/main/resources/mapper_dao/STaskDao.xml new file mode 100644 index 0000000..226fb9f --- /dev/null +++ b/src/main/resources/mapper_dao/STaskDao.xml @@ -0,0 +1,38 @@ + + + + + + INSERT INTO t_pro_task_sub + ( + id, + task_detail_id, + plan_start_time, + plan_end_time, + plan_duration + ) + VALUES + + (#{item.id},#{item.taskDetailId},#{item.planStartTime},#{item.planEndTime},#{item.planDuration}) + + + + + \ No newline at end of file