Prechádzať zdrojové kódy

预估工时,项目模板,预估工时展示

cs 2 rokov pred
rodič
commit
b7892d4487
12 zmenil súbory, kde vykonal 213 pridanie a 29 odobranie
  1. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/GroupTemplateController.java
  2. 94 18
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java
  3. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/GroupTemplate.java
  4. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Stages.java
  5. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/StageCost.java
  6. 23 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/setTemplate.java
  7. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/GroupTemplateService.java
  8. 4 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskGroupService.java
  9. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/GroupTemplateServiceImpl.java
  10. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  11. 73 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskGroupServiceImpl.java
  12. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/GroupTemplateMapper.xml

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/GroupTemplateController.java

@@ -97,9 +97,9 @@ public class GroupTemplateController {
     }
 
     @RequestMapping("/addTemplate")
-    public HttpRespMsg addTemplate(Integer groupId, String name, Boolean saveTask, Boolean saveMileStone, Boolean saveRisk) {
+    public HttpRespMsg addTemplate(Integer groupId, String name, Boolean saveTask, Boolean saveMileStone, Boolean saveRisk,Boolean automatically) {
         String uid = request.getHeader("Token");
-        return groupTemplateService.addTemplate(uid, groupId, name, saveTask, saveMileStone, saveRisk);
+        return groupTemplateService.addTemplate(uid, groupId, name, saveTask, saveMileStone, saveRisk,automatically);
     }
 
     @RequestMapping("/deleteTemplate")

+ 94 - 18
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java

@@ -1,29 +1,24 @@
 package com.management.platform.controller;
 
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.*;
-import com.management.platform.mapper.GroupParticipatorMapper;
-import com.management.platform.mapper.ProjectMapper;
-import com.management.platform.mapper.TimeTypeMapper;
-import com.management.platform.mapper.UserMapper;
-import com.management.platform.service.GroupTmpstagesService;
-import com.management.platform.service.StagesService;
-import com.management.platform.service.TaskGroupService;
-import com.management.platform.service.TaskService;
+import com.management.platform.entity.vo.setTemplate;
+import com.management.platform.mapper.*;
+import com.management.platform.service.*;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
 import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -56,6 +51,14 @@ public class TaskGroupController {
     private UserMapper userMapper;
     @Resource
     private TimeTypeMapper timeTypeMapper;
+    @Resource
+    private GroupTemplateMapper GroupTemplateMapper;
+    @Resource
+    private GroupTmpstagesMapper groupTmpstagesMapper;
+    @Resource
+    private GtemplateTaskMapper gtemplateTaskMapper;
+    @Resource
+    private TaskExecutorService taskExecutorService;
     /**
      * 保存任务分组
      */
@@ -136,12 +139,80 @@ public class TaskGroupController {
         QueryWrapper<TaskGroup> queryWrapper = new QueryWrapper<TaskGroup>();
         queryWrapper.eq("project_id", item.getProjectId());
         if (taskGroupService.count(queryWrapper) == 0) {
-            //创建默认分组
-            TaskGroup group = new TaskGroup();
-            group.setProjectId(item.getProjectId());
-            //group.setName("项目阶段");
-            group.setName(MessageUtils.message("entry.projectStage"));
-            taskGroupService.save(group);
+            //创建随项目创建而创建的模板
+            QueryWrapper<User> eq = new QueryWrapper<User>().eq("id", request.getHeader("token"));
+            User user = userMapper.selectOne(eq);
+            List<GroupTemplate> groupTemplates = GroupTemplateMapper.selectList(new QueryWrapper<GroupTemplate>().eq("company_id", user.getCompanyId()).eq("cre_with_pro", true));
+            if (groupTemplates.size()==0){
+                //创建默认分组
+                TaskGroup group = new TaskGroup();
+                group.setProjectId(item.getProjectId());
+                //group.setName("项目阶段");
+                group.setName(MessageUtils.message("entry.projectStage"));
+                taskGroupService.save(group);
+            }else{
+                for (GroupTemplate groupTemplate : groupTemplates) {
+                    TaskGroup group = new TaskGroup();
+                    group.setProjectId(item.getProjectId());
+                    group.setName(groupTemplate.getName());
+                    taskGroupService.save(group);
+                    //从模板创建任务列表
+                    Project project = projectMapper.selectById(item.getProjectId());
+                    String inchargerId = project.getInchargerId();
+                    User inchargerUser = userMapper.selectById(inchargerId);
+                    List<GroupTmpstages> stages = groupTmpstagesMapper.selectList(new QueryWrapper<GroupTmpstages>().eq("template_id", groupTemplate.getId()));
+                    List<Stages> batchList = new ArrayList<>();
+                    stages.forEach(s->{
+                        Stages stageItem = new Stages();
+                        stageItem.setGroupId(group.getId());
+                        stageItem.setStagesName(s.getStagesName());
+                        stageItem.setSequence(s.getSequence());
+                        stageItem.setProjectId(item.getProjectId());
+                        batchList.add(stageItem);
+                    });
+                    stagesService.saveBatch(batchList);
+                    //阶段的任务,里程碑,风险
+                    List<GtemplateTask> gtemplateTaskList = gtemplateTaskMapper.selectList(
+                            new QueryWrapper<GtemplateTask>().eq("gtemplate_id", groupTemplate.getId())
+                                    .orderByAsc("seq"));
+                    if (gtemplateTaskList.size() > 0) {
+                        List<Task> taskList = new ArrayList<>();
+                        List<TaskExecutor> taskExecutorList = new ArrayList<>();
+                        gtemplateTaskList.forEach(gt->{
+                            Task task = gt.toTask();
+                            task.setProjectId(item.getProjectId());
+                            task.setGroupId(group.getId());
+                            String sName = stages.stream().filter(s->s.getId().equals(gt.getTstagesId())).findFirst().get().getStagesName();
+                            Integer realStageId = batchList.stream().filter(bat->bat.getStagesName().equals(sName)).findFirst().get().getId();
+                            task.setStagesId(realStageId);
+                            task.setCreaterId(user.getId());
+                            task.setCreaterName(user.getName());
+                            task.setCreatorColor(user.getColor());
+                            if(task.getTaskType()==1 && inchargerUser != null){
+                                task.setExecutorId(inchargerUser.getId());
+                                task.setExecutorName(inchargerUser.getName());
+                                task.setExecutorColor(inchargerUser.getColor());
+                            }
+
+                            taskList.add(task);
+                        });
+                        taskService.saveBatch(taskList);
+                        taskList.forEach(tl->{
+                            TaskExecutor taskExecutor=new TaskExecutor();
+                            //当为里程碑任务时
+                            if(tl.getTaskType()==1 && inchargerUser != null){
+                                taskExecutor.setTaskId(tl.getId());
+                                taskExecutor.setExecutorId(inchargerUser.getId());
+                                taskExecutor.setExecutorName(inchargerUser.getName());
+                                taskExecutor.setExecutorColor(inchargerUser.getColor());
+                                taskExecutor.setProjectId(item.getProjectId());
+                                taskExecutorList.add(taskExecutor);
+                            }
+                        });
+                        taskExecutorService.saveBatch(taskExecutorList);
+                    }
+                }
+            }
         }
         msg.data = taskGroupService.list(queryWrapper);
         return msg;
@@ -275,5 +346,10 @@ public class TaskGroupController {
         return httpRespMsg;
     }
 
+    @RequestMapping("/setTemplate")
+    public HttpRespMsg setTemplate(setTemplate setTemplate){
+        User user = userMapper.selectById(request.getHeader("token"));
+        return taskGroupService.setTemplate(user,setTemplate);
+    }
 }
 

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/GroupTemplate.java

@@ -35,6 +35,9 @@ public class GroupTemplate extends Model<GroupTemplate> {
     @TableField("is_system")
     private Integer isSystem;
 
+    @TableField("cre_with_pro")
+    private Boolean creWithPro;
+
     /**
      * 公司id
      */

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Stages.java

@@ -53,6 +53,12 @@ public class Stages extends Model<Stages> {
     @TableField("group_id")
     private Integer groupId;
 
+    /**
+     * 预估工时
+     */
+    @TableField("stages_time")
+    private float stagesTime;
+
     @TableField(exist = false)
     private List<Task> taskList;
 

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/StageCost.java

@@ -4,4 +4,5 @@ public class StageCost {
     public String stageName;
     public Double cost;
     public Double workingTime;
+    public float stagesTime;
 }

+ 23 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/setTemplate.java

@@ -0,0 +1,23 @@
+package com.management.platform.entity.vo;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author cs
+ * @version 1.0
+ * @ClassName setTemplate
+ * @Description
+ * @date 2022-09-28 15:36
+ */
+@Data
+public class setTemplate {
+    private int id;
+    private String name;
+    private Boolean creWithPro;
+    private int companyId;
+    private List<Map<String,String>> stagesList;
+    private List<String> needDelete;
+}

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/GroupTemplateService.java

@@ -13,5 +13,5 @@ import com.management.platform.util.HttpRespMsg;
  * @since 2021-05-05
  */
 public interface GroupTemplateService extends IService<GroupTemplate> {
-    public HttpRespMsg addTemplate(String token, Integer groupId, String name, Boolean saveTask, Boolean saveMileStone, Boolean saveRisk);
+    public HttpRespMsg addTemplate(String token, Integer groupId, String name, Boolean saveTask, Boolean saveMileStone, Boolean saveRisk, Boolean automatically);
 }

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskGroupService.java

@@ -1,8 +1,10 @@
 package com.management.platform.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.GroupTemplate;
 import com.management.platform.entity.TaskGroup;
 import com.management.platform.entity.User;
+import com.management.platform.entity.vo.setTemplate;
 import com.management.platform.util.HttpRespMsg;
 
 /**
@@ -15,6 +17,8 @@ import com.management.platform.util.HttpRespMsg;
  */
 public interface TaskGroupService extends IService<TaskGroup> {
 
+    HttpRespMsg setTemplate(User user, setTemplate setTemplate);
+
     void saveGroupIncharger(TaskGroup taskGroup, User user);
 
     HttpRespMsg createFromTemplate(String templateJson, Integer projectId);

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/GroupTemplateServiceImpl.java

@@ -45,7 +45,7 @@ public class GroupTemplateServiceImpl extends ServiceImpl<GroupTemplateMapper, G
     TaskMapper taskMapper;
 
     @Override
-    public HttpRespMsg addTemplate(String token, Integer groupId, String name, Boolean saveTask, Boolean saveMileStone, Boolean saveRisk) {
+    public HttpRespMsg addTemplate(String token, Integer groupId, String name, Boolean saveTask, Boolean saveMileStone, Boolean saveRisk,Boolean automatically) {
         User user = userMapper.selectById(token);
         HttpRespMsg msg = new HttpRespMsg();
         QueryWrapper<GroupTemplate> templateQueryWrapper = new QueryWrapper<>();
@@ -64,6 +64,7 @@ public class GroupTemplateServiceImpl extends ServiceImpl<GroupTemplateMapper, G
                 template.setIsSystem(0);
                 template.setCompanyId(user.getCompanyId());
                 template.setName(name);
+                template.setCreWithPro(automatically);
                 groupTemplateMapper.insert(template);
 
                 //保存相关的任务列表名称

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -183,7 +183,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     ProjectSeparateService projectSeparateService;
     @Resource
     TaskGroupService taskGroupService;
-
+    @Resource
+    GroupTemplateMapper GroupTemplateMapper;
 
     @Resource
     private HttpServletResponse response;

+ 73 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskGroupServiceImpl.java

@@ -3,12 +3,10 @@ package com.management.platform.service.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.*;
+import com.management.platform.entity.vo.setTemplate;
 import com.management.platform.mapper.*;
-import com.management.platform.service.StagesService;
-import com.management.platform.service.TaskExecutorService;
-import com.management.platform.service.TaskGroupService;
+import com.management.platform.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.management.platform.service.TaskService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
 import org.springframework.stereotype.Service;
@@ -20,6 +18,8 @@ import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -150,4 +150,73 @@ public class TaskGroupServiceImpl extends ServiceImpl<TaskGroupMapper, TaskGroup
         msg.data = list;
         return msg;
     }
+
+    @Override
+    @Transactional
+    public HttpRespMsg setTemplate(User user,setTemplate setTemplate){
+        HttpRespMsg msg = new HttpRespMsg();
+        List<Map<String, String>> stagesList = setTemplate.getStagesList();
+        List<String> needDelete = setTemplate.getNeedDelete();
+        GroupTemplate groupTemplate = new GroupTemplate();
+        groupTemplate.setId(setTemplate.getId());
+        groupTemplate.setName(setTemplate.getName());
+        groupTemplate.setCreWithPro(setTemplate.getCreWithPro());
+        groupTemplateMapper.updateById(groupTemplate);
+        //新增或修改模板任务列表
+        for (Map<String, String> stringStringMap : stagesList) {
+            GroupTmpstages groupTmpstages = new GroupTmpstages();
+            groupTmpstages.setStagesName(stringStringMap.get("stagesName"));
+            Integer templateId = Integer.parseInt(stringStringMap.get("templateId"));
+            boolean findSameName = false;
+            if (stringStringMap.containsKey("id")){
+                //检查是否重名
+                groupTmpstages.setId(Integer.parseInt(stringStringMap.get("id")));
+                QueryWrapper<GroupTmpstages> queryWrapper = new QueryWrapper<GroupTmpstages>();
+                queryWrapper.eq("template_id", templateId).eq("stages_name", groupTmpstages.getStagesName()).ne("id", groupTmpstages.getId());
+                int cnt = groupTmpstagesMapper.selectCount(queryWrapper);
+                findSameName = cnt>0?true: false;
+                if (findSameName) {
+                    //msg.setError("当前分组中已存在该任务列表,无法重复添加");
+                    msg.setError(MessageUtils.message("Stages.RepeatInGroup"));
+                    return msg;
+                }
+                groupTmpstagesMapper.updateById(groupTmpstages);
+            }else{
+                QueryWrapper<GroupTmpstages> qw = new QueryWrapper<GroupTmpstages>();
+                qw.eq("template_id", templateId).eq("stages_name", groupTmpstages.getStagesName());
+                int cnt = groupTmpstagesMapper.selectCount(qw);
+                findSameName = cnt>0?true: false;
+                if (findSameName) {
+                    //msg.setError("当前分组中已存在该任务列表,无法重复添加");
+                    msg.setError(MessageUtils.message("Stages.RepeatInGroup"));
+                    return msg;
+                }
+                groupTmpstages.setTemplateId(templateId);
+                //给seq排序
+                QueryWrapper<GroupTmpstages> queryWrapper = new QueryWrapper<GroupTmpstages>();
+                queryWrapper.eq("template_id", templateId);
+                queryWrapper.orderByDesc("sequence");
+                queryWrapper.last("limit 1");
+                List<GroupTmpstages> one = groupTmpstagesMapper.selectList(queryWrapper);
+                if (one.size() == 0) {
+                    groupTmpstages.setSequence(1);
+                } else {
+                    groupTmpstages.setSequence(one.get(0).getSequence() + 1);
+                }
+                groupTmpstagesMapper.insert(groupTmpstages);
+            }
+        }
+        //删除模板阶段及相关任务
+        Integer companyId = user.getCompanyId();
+        if (needDelete!=null){
+            for (String s : needDelete) {
+                groupTmpstagesMapper.deleteById(s);
+                gtemplateTaskMapper.delete(new QueryWrapper<GtemplateTask>().eq("company_id",companyId)
+                        .eq("gtemplate_id",setTemplate.getId())
+                        .eq("tstages_id",s)
+                );
+            }
+        }
+        return msg;
+    }
 }

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/GroupTemplateMapper.xml

@@ -8,11 +8,11 @@
         <result column="name" property="name" />
         <result column="is_system" property="isSystem" />
         <result column="company_id" property="companyId" />
+        <result column="cre_with_pro" property="creWithPro" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, name, is_system, company_id
+        id, name, is_system, company_id,cre_with_pro
     </sql>
-
 </mapper>