package com.hc.plan.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hc.common.exception.TrainingException;
import com.hc.plan.entity.Plan;
import com.hc.plan.entity.PlanCourse;
import com.hc.plan.entity.PlanStaff;
import com.hc.plan.entity.vo.PlanQuery;
import com.hc.plan.entity.vo.PlanVo;
import com.hc.plan.mapper.PlanMapper;
import com.hc.plan.service.PlanCourseService;
import com.hc.plan.service.PlanService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hc.plan.service.PlanStaffService;
import net.bytebuddy.implementation.bytecode.Throw;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
/**
* <p>
* 服务实现类
* </p>
*
* @author houcheng
* @since 2021-03-26
*/
@Service
public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements PlanService {
@Autowired
private PlanCourseService planCourseService;
@Autowired
private PlanStaffService planStaffService;
@Override
public void pageQueryPlan(Page<Plan> pageParam, PlanQuery planQuery) {
QueryWrapper<Plan> wrapper = new QueryWrapper<>();
if (planQuery != null) {
if (StringUtils.isNotEmpty(planQuery.getName())) {
wrapper.like("name", planQuery.getName());
}
if (StringUtils.isNotEmpty(planQuery.getTeacherId())) {
wrapper.eq("teacher_id", planQuery.getTeacherId());
}
if (StringUtils.isNotEmpty(planQuery.getBeginTime())) {
wrapper.ge("begin_time", planQuery.getBeginTime());
}
if (StringUtils.isNotEmpty(planQuery.getEndTime())) {
wrapper.le("end_time", planQuery.getEndTime());
}
}
baseMapper.selectPage(pageParam, wrapper);
}
@Override
public PlanVo getPlanVoById(String planId) {
PlanVo planVo = new PlanVo();
// 查询主表数据
Plan plan = baseMapper.selectById(planId);
// 封装主表数据
planVo.setName(plan.getName());
planVo.setContent(plan.getContent());
planVo.setPurpose(plan.getPurpose());
planVo.setScore(plan.getScore());
planVo.setTeacherId(plan.getTeacherId());
List<Date> dates = new ArrayList<>();
dates.add(plan.getBeginTime());
dates.add(plan.getEndTime());
planVo.setDate(dates);
// 查询计划课程表数据
QueryWrapper<PlanCourse> planCourseQueryWrapper = new QueryWrapper<>();
planCourseQueryWrapper.eq("plan_id", planId);
List<PlanCourse> list = planCourseService.list(planCourseQueryWrapper.select("course_id"));
List<String> courses = new ArrayList<>();
for (PlanCourse planCourse : list) {
courses.add(planCourse.getCourseId());
}
// 查询计划职工表
QueryWrapper<PlanStaff> planStaffQueryWrapper = new QueryWrapper<>();
planStaffQueryWrapper.eq("plan_id", planId);
List<PlanStaff> planStaffList = planStaffService.list(planStaffQueryWrapper.select("staff_id"));
List<String> staffs = new ArrayList<>();
for (PlanStaff planStaff : planStaffList) {
staffs.add(planStaff.getStaffId());
}
// 设置课程和职工相关信息
planVo.setCourses(courses);
planVo.setStaffs(staffs);
return planVo;
}
@Override
public boolean addPlan(PlanVo planVo, String status) {
Plan plan = new Plan();
// 主表插入计划基本信息
plan.setName(planVo.getName());
plan.setContent(planVo.getContent());
plan.setPurpose(planVo.getPurpose());
plan.setTeacherId(planVo.getTeacherId());
plan.setScore(planVo.getScore());
plan.setBeginTime(planVo.getDate().get(0));
plan.setEndTime(planVo.getDate().get(1));
plan.setStatus(status);
int planLine = baseMapper.insert(plan);
// 计划课程表插入计划内课程相关信息,在计划基本信息表插入成功的前提下才能解析计划课程表进行插入操作
if (planLine > 0) {
// 可能包含多条课程,挨个解析,课程list存储格式 courseId + "-" + courseName
for (String s : planVo.getCourses()) {
PlanCourse planCourse = new PlanCourse();
planCourse.setCourseId(s);
planCourse.setPlanId(plan.getId());
boolean planCourseSuccess = planCourseService.save(planCourse);
if (!planCourseSuccess) {
throw new TrainingException(500, "计划课程表表插入失败!");
}
}
// 计划职工表添加计划内职工相关信息,上面两个表插入成功才能进行第三步插入
// 多个职工信息,遍历获取
for (String s : planVo.getStaffs()) {
PlanStaff planStaff = new PlanStaff();
planStaff.setPlanId(plan.getId());
planStaff.setStaffId(s);
planStaff.setTeacherId(planVo.getTeacherId());
boolean planStaffSuccess = planStaffService.save(planStaff);
if (!planStaffSuccess) {
throw new TrainingException(500, "计划职工表插入失败!");
}
}
return true;
} else {
return false;
}
}
@Override
public boolean updatePlan(String planId, PlanVo planVo, String status) {
// 更新计划职工表信息
List<String> staffs = planVo.getStaffs();
// 先查询再更新
QueryWrapper<PlanStaff> planStaffQueryWrapper = new QueryWrapper<>();
planStaffQueryWrapper.eq("plan_id", planId);
List<PlanStaff> planStaffList = planStaffService.list(planStaffQueryWrapper);
List<String> oldStaffs = new ArrayList<>();
for (PlanStaff planStaff : planStaffList) {
// 项目负责人变更的话也需要及时更新
if (!planStaff.getTeacherId().equals(planVo.getTeacherId())) {
planStaff.setTeacherId(planVo.getTeacherId());
}
oldStaffs.add(planStaff.getStaffId());
// 不在最新职工信息中的都删掉
if (!staffs.contains(planStaff.getStaffId())) {
planStaffService.removeById(planStaff.getId());
}
}
// 对已有的更新
if (planStaffList.size() != 0) {
planStaffService.updateBatchById(planStaffList);
}
// 再次循环加入准备更新的list中
for (String s : staffs) {
// 不包括s,就要加入待更新队列中
if (!oldStaffs.contains(s)) {
PlanStaff planStaff = new PlanStaff();
planStaff.setPlanId(planId);
planStaff.setTeacherId(planVo.getTeacherId());
planStaff.setStaffId(s);
planStaffService.save(planStaff);
}
}
// 更新计划课程表信息
List<String> courses = planVo.getCourses();
QueryWrapper<PlanCourse> planCourseQueryWrapper = new QueryWrapper<>();
planCourseQueryWrapper.eq("plan_id", planId);
List<PlanCourse> planCourseList = planCourseService.list(planCourseQueryWrapper);
List<String> oldCourses = new ArrayList<>();
for (PlanCourse planCourse : planCourseList) {
oldCourses.add(planCourse.getCourseId());
if (!courses.contains(planCourse.getCourseId())) {
planCourseService.removeById(planCourse.getId());
}
}
// 执行更新
if (planCourseList.size() !=
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
毕设在线视频学习项目-基于java开发前后端分离的企业职工培训网站管理系统源码+项目使用说明+sql数据库.zip 开发环境 jdk1.8+MySQL5.7+maven3.6.3 技术栈 SpringCloud、Nacos、SpringBoot、Redis、MyBatis-Plus、Vue、element-ui、Nuxt 主要功能介绍 在线视频观看:播放进度记录、学习时长记录、学习课程记录 培训计划:后台规划计划课程和学习人员,相关学习人员学习计划课程并总结,后台评分 问答:简单的提问回答模块,回答实现楼中楼回复,问题按照最新提问和回答来排序 热门课程:按照学习人数和点击次数来排序 个人中心:我学习的课程、个人资料修改、我的提问、我的回答 各个服务模块介绍 training-gateway:网关服务,统一入口,目前就做了统一跨域处理和swagger整合 service-home:首页微服务,提供首页轮播图查询 service-learning:学习中心,提供课程、章节相关功能 service-oss:与阿里云oss对接,提供文件上传功能 service-plan:培训计划相关功能
资源推荐
资源详情
资源评论
收起资源包目录
毕设在线视频学习项目-基于java开发前后端分离的企业职工培训网站管理系统源码+项目使用说明+sql数据库.zip (448个子文件)
.babelrc 229B
skin.min.css 42KB
global.css 36KB
web.css 20KB
visualblocks.css 5KB
sign.css 4KB
content.min.css 4KB
content.inline.min.css 3KB
iconfont.css 3KB
prism.css 2KB
reset.css 1KB
theme.css 837B
.editorconfig 243B
.editorconfig 207B
tinymce.eot 18KB
tinymce-small.eot 9KB
iconfont.eot 3KB
.eslintignore 34B
loading.gif 13KB
default-img.gif 11KB
loding.gif 4KB
avatar-boy.gif 4KB
default-tea-img.gif 3KB
loader.gif 3KB
default-img_old.gif 2KB
v-loading.gif 1KB
smiley-cool.gif 354B
smiley-wink.gif 350B
smiley-smile.gif 344B
smiley-laughing.gif 343B
smiley-foot-in-mouth.gif 342B
smiley-frown.gif 340B
smiley-surprised.gif 338B
smiley-kiss.gif 338B
smiley-undecided.gif 337B
smiley-yell.gif 336B
smiley-innocent.gif 336B
smiley-embarassed.gif 331B
smiley-cry.gif 329B
smiley-tongue-out.gif 328B
smiley-sealed.gif 323B
smiley-money-mouth.gif 321B
object.gif 152B
anchor.gif 53B
trans.gif 43B
.gitignore 171B
.gitignore 92B
.gitkeep 0B
index.html 444B
favicon.ico 1KB
favicon.ico 1KB
aliyun-java-vod-upload-1.4.14.jar 116KB
PlanServiceImpl.java 9KB
CourseServiceImpl.java 7KB
ChapterServiceImpl.java 6KB
StaffServiceImpl.java 6KB
VodTest.java 6KB
VideoServiceImpl.java 5KB
StaffVideoController.java 5KB
AnswerServiceImpl.java 4KB
QuestionController.java 4KB
LoginController.java 4KB
CourseFrontController.java 4KB
VideoController.java 4KB
CourseController.java 4KB
AnswerController.java 4KB
BannerController.java 4KB
StaffVideoServiceImpl.java 4KB
PlanController.java 4KB
CourseCommentController.java 3KB
PlanStaffController.java 3KB
RedisConfig.java 3KB
CategoryListener.java 3KB
CodeGenerator.java 3KB
CodeGenerator.java 3KB
CodeGenerator.java 3KB
CodeGenerator.java 3KB
CodeGenerator.java 3KB
TeacherController.java 3KB
StaffCourseController.java 3KB
PlanStaffServiceImpl.java 3KB
JwtUtils.java 3KB
CourseService.java 3KB
StaffCourseServiceImpl.java 3KB
CourseCategoryServiceImpl.java 2KB
SwaggerConfig.java 2KB
SwaggerController.java 2KB
VideoServiceImpl.java 2KB
ChapterController.java 2KB
Course.java 2KB
StaffController.java 2KB
Plan.java 2KB
VideoController.java 2KB
AdminController.java 2KB
AdminServiceImpl.java 2KB
TrainingResult.java 2KB
FileServiceImpl.java 2KB
Video.java 2KB
CourseComment.java 2KB
Answer.java 2KB
共 448 条
- 1
- 2
- 3
- 4
- 5
资源评论
manylinux
- 粉丝: 4627
- 资源: 2490
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【新增】-140 -医美医院-全岗位薪酬方案(实用篇).doc
- 【新增】-146 -制药公司薪酬制度.doc
- 【新增】-145 -证券薪酬管理制度.doc
- 【新增】-144 -证券薪酬管理手册.doc
- 【新增】-150 -中小公司薪资方案.doc
- 【新增】-147 -制药有限公司薪酬体系设计.doc
- 【新增】-148 -制造生产薪酬体系方案及对策.doc
- 【新增】-005 -餐饮店员工薪酬制度与考核方案.docx
- 【新增】-006 -餐饮公司薪酬管理体系.docx
- 【新增】-012 -传媒公司薪酬方案.docx
- 【新增】-021 -店铺人员薪酬方案.docx
- 【新增】-019 -电子商务公司薪资体系.docx
- 【新增】-017 -电商运营体系薪酬激励与绩效考核方案.docx
- 【新增】-022 -房产中介薪酬管理规定.docx
- 【新增】-029 -服装店门店薪酬绩效考核方案.docx
- 【新增】-034 -服装行业终端导购薪资方案.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功