第6篇 Scrum 冲刺博客

一、站立式会议

1.1 会议照片

1.2 成员完成情况

成员

昨天完成的任务

今天计划完成的任务

工作中的困难

郭沛

对团队计划增删改接口进行测试并添加了查看接口

将获取子任务接口与排序算法进行整合

接口文档不断地更新迭代较为麻烦

柴政

思考判断条件的设置

完成获取待排计划列表与排序后返回新列表的对接

好多实验算法要写

洪梓豪

修改之前的文档

编写消息推荐的模块

临近期末,其他作业也很多

王树干

完善个人计划静态页面

继续完善个人计划的编辑、添加页面

作业繁多,时间匆忙

黎其钻

修改了团队页面的数据流和样式

继续完善团队页面

ddl使我癫狂

简蕙兰

画了会议照片,对UI进行调整

修改了 设置 页面,修改了团队计划页面

脑子不大好使,记不住需求orz


二、项目燃尽图


三、成员代码/文档签入记录

3.1 代码签入

后台

前端

3.2 Issue链接

成员  Issue链接
郭沛
柴政
洪梓豪
王树干
黎其钻
简蕙兰

(设计好像没有这玩意儿)


3.3 CodeReview代码规范文档

 


四、最新项目程序/模块

4.1 程序代码

子任务部分(后台代码):

 1 @Service
 2 @Log4j2
 3 public class TaskServiceImpl implements TaskService {
 4 
 5     @Resource
 6     private TaskMapper taskMapper;
 7 
 8     /**
 9      * 更新子任务状态
10      * @param task
11      * @return
12      */
13     @Override
14     public Task updateTaskStatus(Task task) {
15 
16         if (VerifyUtil.isNull(task) || VerifyUtil.isEmpty(task.getTaskId()) || VerifyUtil.isEmpty(task.getStatus())) {
17             log.info("前端传过来的部分数据为空");
18             throw new ErrorException("请选择要修改的子任务");
19         }
20         if (task.getStatus() != 1 && task.getStatus() != 0) {
21             log.info("前端传过来的数据格式错误");
22             throw new ErrorException("请正确填写子任务状态");
23         }
24         if (taskMapper.updateTaskStatus(task) != 1) {
25             log.info("更新子任务{}失败", task.getTaskId());
26             throw new ErrorException("系统异常,请稍后重试");
27         }
28         return task;
29     }
30 
31     @Override
32     public List<Task> getSortTasks(SortVo sortVo, UserPo userPo) {
33         if (VerifyUtil.isNull(sortVo) || VerifyUtil.isEmpty(sortVo.getAlgorithm()) || VerifyUtil.isEmpty(sortVo.getDate())) {
34             log.info("前端传过来的部分数据为空");
35             throw new ErrorException("请选择要获取的子任务时间");
36         }
37         sortVo.setUserId(userPo.getUserId());
38         List<Task> taskList = taskMapper.getTasksByUserIdAndTime(sortVo);
39         if (VerifyUtil.isEmpty(taskList)) {
40             log.info("用户暂无子任务");
41             return null;
42         }
43         StartSortService startSortService = new StartSortService();
44         return startSortService.startSort(taskList, sortVo.getAlgorithm());
45     }
46 
47     @Override
48     public boolean deleteTask(Integer taskId, UserPo userPo) {
49         if (VerifyUtil.isEmpty(taskId)) {
50             log.info("前端的taskId参数为空");
51             throw new ErrorException("请选择要删除的子任务");
52         }
53         Task task = taskMapper.getTaskByTaskId(taskId);
54         if (VerifyUtil.isNull(task)) {
55             log.info("id为{}的子任务不存在", taskId);
56             throw new ErrorException("该子计划不存在");
57         }
58         if (task.getUserId().equals(userPo.getUserId())) {
59             //说明该计划是用户创建的
60             taskMapper.deleteTaskByTaskId(taskId);
61             return true;
62         }
63         else {
64             log.info("id为{}的子任务不是用户{}所创建的", taskId, userPo.getUserId());
65             throw new ErrorException("该子任务不是您创建的,您无权限删除");
66         }
67     }
68 }
View Code

个人计划部分(前端代码):

  1 <style scoped lang="scss">
  2 .xiala {
  3   position: fixed;
  4   top: 0;
  5   left: 25%;
  6    2em;
  7   height: 90%;
  8   .line {
  9     position: absolute;
 10     top: 0;
 11     right: 75%;
 12      2px;
 13     height: 100%;
 14     background: #ffe55e;
 15   }
 16   .gou {
 17     display: block;
 18     position: absolute;
 19     bottom: -2em;
 20     right: 0;
 21      2em;
 22     height: 2em;
 23     transform-style: preserve-3d;
 24     transform: rotateY(-180deg);
 25   }
 26 }
 27 </style>
 28 
 29 <template>
 30   <div class="Individual">
 31     <div class="xiala">
 32       <div class="line"></div>
 33       <img class="gou" src="../../../static/images/gou.png" />
 34     </div>
 35     <planList v-if="planData" :planData="planData"></planList>
 36     <mypicker></mypicker>
 37   </div>
 38 </template>
 39 
 40 <script>
 41 // Use Vuex
 42 import store from "./store";
 43 import planList from "./planList/planList.vue";
 44 import mypicker from "./mypicker/mypicker.vue";
 45 export default {
 46   data() {
 47     return {
 48       planData: null
 49     };
 50   },
 51   computed: {},
 52   methods: {
 53     // 处理日程列表里面开始时间的显示格式
 54     handleStartTime(planData) {
 55       planData.forEach(plan => {
 56         plan.taskList.forEach(task=>{
 57           let endTime = new Date(task.endTime);
 58           task.end_clock = `${endTime.getHours()}:00`;
 59           task.end_date = endTime.toLocaleDateString();
 60         })
 61       });
 62     },
 63     getplanData() {
 64       setTimeout(() => {
 65         let res = [
 66           {
 67             planName: "测试计划八八零六零",
 68             planId: 1,
 69             taskList: [
 70               {
 71                 taskName: "测试子任务1",
 72                 lasting: 30,
 73                 startTime: "2020-05-10 20:21:00",
 74                 endTime: "2020-05-11 20:21:00",
 75                 priority: 3,
 76                 status: 0
 77               }
 78             ]
 79           },
 80           {
 81             planName: "测试计划八八零的六零",
 82             planId: 8,
 83             taskList: [
 84               {
 85                 taskName: "测试子任务1测试子任务1测试子任务1测试子任务1测试子任务1测试子任务1测试子任务1",
 86                 lasting: 30,
 87                 startTime: "2020-05-10 20:21:00",
 88                 endTime: "2020-05-11 20:21:00",
 89                 priority: 3,
 90                 status: 1
 91               },
 92               {
 93                 taskName: "测试子任务2",
 94                 lasting: 40,
 95                 startTime: "2020-05-10 16:21:00",
 96                 endTime: "2020-05-11 20:21:00",
 97                 priority: 3,
 98                 status: 0
 99               }
100             ]
101           },
102           {
103             planName: "测试计划八八零的六零",
104             planId: 8,
105             taskList: [
106               {
107                 taskName: "测试子任务1测试子任务1测试子任务1测试子任务1测试子任务1测试子任务1测试子任务1",
108                 lasting: 30,
109                 startTime: "2020-05-10 20:21:00",
110                 endTime: "2020-05-11 20:21:00",
111                 priority: 3,
112                 status: 1
113               },
114               {
115                 taskName: "测试子任务2",
116                 lasting: 40,
117                 startTime: "2020-05-10 16:21:00",
118                 endTime: "2020-05-11 20:21:00",
119                 priority: 3,
120                 status: 0
121               },
122               {
123                 taskName: "测试子任务2",
124                 lasting: 40,
125                 startTime: "2020-05-10 16:21:00",
126                 endTime: "2020-05-11 20:21:00",
127                 priority: 3,
128                 status: 0
129               },
130               {
131                 taskName: "测试子任务2",
132                 lasting: 40,
133                 startTime: "2020-05-10 16:21:00",
134                 endTime: "2020-05-11 20:21:00",
135                 priority: 3,
136                 status: 0
137               }
138             ]
139           }
140         ];
141         this.handleStartTime(res);
142         this.planData = res;
143         console.log(this.planData)
144       }, 1000);
145     }
146   },
147   components: {
148     planList,
149     mypicker
150   },
151   mounted() {
152     this.getplanData();
153   }
154 };
155 </script>
View Code

4.2 运行截图


五、成员每日总结

成员

小结

郭沛

冲刺阶段剩下最后的两天,希望大家继续加油!

柴政

临近期末,大家一起加油吧

洪梓豪

奥里给!

王树干

最近课程作业较多,开发时间较少,得重新规划自己时间安排

黎其钻

爆肝敲代码

简蕙兰

喵呜喵呜QAQ

 

原文地址:https://www.cnblogs.com/Allforward/p/12969633.html