第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 }
个人计划部分(前端代码):
1 <style scoped lang="scss"> 2 .xiala { 3 position: fixed; 4 top: 0; 5 left: 25%; 6 width: 2em; 7 height: 90%; 8 .line { 9 position: absolute; 10 top: 0; 11 right: 75%; 12 width: 2px; 13 height: 100%; 14 background: #ffe55e; 15 } 16 .gou { 17 display: block; 18 position: absolute; 19 bottom: -2em; 20 right: 0; 21 width: 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>
4.2 运行截图
五、成员每日总结
成员 |
小结 |
郭沛 |
冲刺阶段剩下最后的两天,希望大家继续加油! |
柴政 |
临近期末,大家一起加油吧 |
洪梓豪 |
奥里给! |
王树干 |
最近课程作业较多,开发时间较少,得重新规划自己时间安排 |
黎其钻 |
爆肝敲代码 |
简蕙兰 |
喵呜喵呜QAQ |