package com.gkhy.exam.system.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.common.exception.ApiException; import com.gkhy.exam.common.utils.PageUtils; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.system.domain.ExpectContent; import com.gkhy.exam.system.domain.ExpectContentMess; import com.gkhy.exam.system.domain.ExpectDiscren; import com.gkhy.exam.system.domain.ExpectEvaluate; import com.gkhy.exam.system.mapper.ExpectContentMapper; import com.gkhy.exam.system.mapper.ExpectDiscrenMapper; import com.gkhy.exam.system.mapper.ExpectEvaluateMapper; import com.gkhy.exam.system.service.ExpectDiscrenService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Service public class ExpectDiscrenServiceImpl extends ServiceImpl implements ExpectDiscrenService { @Autowired private ExpectDiscrenMapper expectDiscrenMapper; @Autowired private ExpectContentMapper expectContentMapper; @Autowired private ExpectEvaluateMapper expectEvaluateMapper; @Override public CommonPage selectExpectDiscrenList(ExpectDiscren expectDiscren) { if (!SecurityUtils.adminUser()){ if (expectDiscren.getCompanyId()==null){ throw new ApiException("非管理员操作,企业id不可为空"); } } PageUtils.startPage(); List expectDiscrens = expectDiscrenMapper.selectDiscrenList(expectDiscren); for (ExpectDiscren discren : expectDiscrens) { List expectContents = expectContentMapper.selectByDiscrenId(discren.getId()); for (ExpectContent expectContent : expectContents) { List expectContentMesses = expectContentMapper.selectByContentId(expectContent.getId()); expectContent.setExpectContentMesses(expectContentMesses); } discren.setExpectContents(expectContents); } return CommonPage.restPage(expectDiscrens); } @Override @Transactional public CommonResult insertExpectDiscren(ExpectDiscren expectDiscren) { List expectDiscrens = expectDiscrenMapper.selectCompanyIdAndDeptId(expectDiscren); if (expectDiscrens.size()>0){ throw new ApiException("当前企业已有数据,请删除后重试"); } expectDiscren.setCreateBy(SecurityUtils.getUsername()); expectDiscren.setCreateTime(LocalDateTime.now()); expectDiscrenMapper.insert(expectDiscren); List expectContents = expectDiscren.getExpectContents(); //循环新增相关方需求 List expectContentMesseslist = new ArrayList<>(); for (ExpectContent expectContent : expectContents) { expectContent.setExpectDiscrenId(expectDiscren.getId()); expectContentMapper.insert(expectContent); //循环新增相关方需求详细内容 List expectContentMesses = expectContent.getExpectContentMesses(); for (ExpectContentMess expectContentMess : expectContentMesses) { expectContentMess.setExpectContentId(expectContent.getId()); } expectContentMesseslist.addAll(expectContentMesses); } expectContentMapper.insertContentMess(expectContentMesseslist); return CommonResult.success(); } @Override public CommonResult updateExpectDiscren(ExpectDiscren expectDiscren) { expectDiscren.setUpdateBy(SecurityUtils.getUsername()); expectDiscren.setUpdateTime(LocalDateTime.now()); expectDiscrenMapper.updateById(expectDiscren); List expectContents = expectDiscren.getExpectContents(); expectContentMapper.deletedByDiscrenId(expectDiscren.getId()); List expectContentMesses = new ArrayList<>(); for (ExpectContent expectContent : expectContents) { expectContent.setId(null); expectContentMapper.insert(expectContent); List expectContentMesses1 = expectContent.getExpectContentMesses(); for (ExpectContentMess expectContentMess : expectContentMesses1) { expectContentMess.setExpectContentId(expectContent.getId()); } expectContentMesses.addAll(expectContentMesses1); } expectContentMapper.insertContentMess(expectContentMesses); return CommonResult.success(); } @Override public CommonResult deletedExpectDiscren(Integer expectDiscrenId) { ExpectDiscren expectDiscren = new ExpectDiscren(); expectDiscren.setId(expectDiscrenId); expectDiscren.setUpdateBy(SecurityUtils.getUsername()); expectDiscren.setUpdateTime(LocalDateTime.now()); expectDiscren.setDelFlag(2); expectDiscrenMapper.updateById(expectDiscren); return CommonResult.success(); } @Override public CommonResult selectExpectDiscrenListAll(ExpectDiscren expectDiscren) { List expectDiscrens = expectDiscrenMapper.selectDiscrenList(expectDiscren); for (ExpectDiscren discren : expectDiscrens) { List expectContents = expectContentMapper.selectByDiscrenId(discren.getId()); for (ExpectContent expectContent : expectContents) { List expectContentMesses = expectContentMapper.selectByContentId(expectContent.getId()); expectContent.setExpectContentMesses(expectContentMesses); } discren.setExpectContents(expectContents); } return CommonResult.success(expectDiscrens); } @Override @Transactional public CommonResult copyExpectDiscren(Long companyId,String sourceYear, String targetYear) { if (companyId==null){ companyId = SecurityUtils.getCompanyId(); } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ExpectDiscren::getCompanyId, companyId) .eq(ExpectDiscren::getDelFlag, 1).eq(ExpectDiscren::getYear, targetYear); List expectDiscrensTarget = expectDiscrenMapper.selectList(queryWrapper); if (ObjectUtil.isNotEmpty(expectDiscrensTarget)){ for (ExpectDiscren expectDiscren : expectDiscrensTarget) { deletedExpectDiscren(expectDiscren.getId()); LambdaQueryWrapper queryWrapperContent = new LambdaQueryWrapper<>(); queryWrapperContent.eq(ExpectContent::getExpectDiscrenId, expectDiscren.getId()); List expectContents = expectContentMapper.selectList(queryWrapperContent); expectContentMapper.deletedByDiscrenId(expectDiscren.getId()); if (ObjectUtil.isNotEmpty(expectContents)){ expectContentMapper.deletedByConentId(expectDiscren.getId()); } LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.set(ExpectEvaluate::getDelFlag, 2).set(ExpectEvaluate::getUpdateBy, SecurityUtils.getUsername()) .eq(ExpectEvaluate::getUpdateTime, LocalDateTime.now()).eq(ExpectEvaluate::getExpectDiscrenId, expectDiscren.getId()); expectEvaluateMapper.update(new ExpectEvaluate(), updateWrapper); } } LambdaQueryWrapper queryWrapperSource = new LambdaQueryWrapper<>(); queryWrapperSource.eq(ExpectDiscren::getCompanyId, companyId) .eq(ExpectDiscren::getDelFlag, 1).eq(ExpectDiscren::getYear, sourceYear); List expectDiscrens = expectDiscrenMapper.selectList(queryWrapperSource); if (ObjectUtil.isEmpty(expectDiscrens)){ return CommonResult.success("无相关数据"); } for (ExpectDiscren expectDiscren : expectDiscrens) { Integer oldId = expectDiscren.getId(); expectDiscren.setId(null); expectDiscren.setYear(targetYear); expectDiscren.setCreateBy(SecurityUtils.getUsername()); expectDiscren.setCreateTime(LocalDateTime.now()); expectDiscren.setUpdateBy(SecurityUtils.getUsername()); expectDiscren.setUpdateTime(LocalDateTime.now()); expectDiscren.setFictionTime(LocalDateTime.now()); expectDiscrenMapper.insert(expectDiscren); List expectContents = expectContentMapper.selectByDiscrenId(oldId); if (ObjectUtil.isNotEmpty(expectContents)){ for (ExpectContent expectContent : expectContents) { List expectContentMesses = expectContentMapper.selectByContentId(expectContent.getId()); expectContent.setId(null); expectContent.setExpectDiscrenId(expectDiscren.getId()); expectContentMapper.insert(expectContent); if (ObjectUtil.isNotEmpty(expectContentMesses)){ for (ExpectContentMess expectContentMess : expectContentMesses) { expectContentMess.setId(null); expectContentMess.setExpectContentId(expectContent.getId()); } expectContentMapper.insertContentMess(expectContentMesses); } } } LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); queryWrapper1.eq(ExpectEvaluate::getExpectDiscrenId, oldId).eq(ExpectEvaluate::getDelFlag, 1); List expectEvaluates = expectEvaluateMapper.selectList(queryWrapper1); if (ObjectUtil.isNotEmpty(expectEvaluates)){ for (ExpectEvaluate expectEvaluate : expectEvaluates) { expectEvaluate.setId(null); expectEvaluate.setExpectDiscrenId(expectDiscren.getId()); expectEvaluate.setCreateBy(SecurityUtils.getUsername()); expectEvaluate.setCreateTime(LocalDateTime.now()); expectEvaluate.setUpdateBy(SecurityUtils.getUsername()); expectEvaluate.setUpdateTime(LocalDateTime.now()); expectEvaluate.setEvaluateTime(LocalDateTime.now()); expectEvaluateMapper.insert(expectEvaluate); } } } return CommonResult.success(); } }