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.core.toolkit.Wrappers; 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.InternalAuditPlan; import com.gkhy.exam.system.mapper.InternalAuditPlanMapper; import com.gkhy.exam.system.service.InternalAuditPlanService; 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.List; @Service public class InternalAuditPlanServiceImpl extends ServiceImpl implements InternalAuditPlanService { @Autowired private InternalAuditPlanMapper planMapper; @Override public CommonPage selectPlanList(InternalAuditPlan plan) { if (!SecurityUtils.adminUser()){ if (plan.getCompanyId()==null){ throw new ApiException("非管理员操作,企业id不可为空"); } } PageUtils.startPage(); List internalAuditPlans = planMapper.selectPlanList(plan); return CommonPage.restPage(internalAuditPlans); } @Override public CommonResult insertPlan(InternalAuditPlan plan) { List internalAuditPlans = planMapper.selectList( Wrappers.lambdaQuery() .eq(InternalAuditPlan::getCompanyId, plan.getCompanyId()) .eq(InternalAuditPlan::getYear, plan.getYear()) .eq(InternalAuditPlan::getDelFlag,1)); if (internalAuditPlans.size()>0){ throw new ApiException("当前企业已有相关数据"); } plan.setCreateBy(SecurityUtils.getUsername()); plan.setCreateTime(LocalDateTime.now()); planMapper.insert(plan); return CommonResult.success(); } @Override public CommonResult updatePlan(InternalAuditPlan plan) { plan.setUpdateBy(SecurityUtils.getUsername()); plan.setUpdateTime(LocalDateTime.now()); planMapper.updateById(plan); return CommonResult.success(); } @Override public CommonResult deletedPlan(Integer planId) { InternalAuditPlan internalAuditPlan = new InternalAuditPlan(); internalAuditPlan.setDelFlag(2); internalAuditPlan.setUpdateTime(LocalDateTime.now()); internalAuditPlan.setUpdateBy(SecurityUtils.getUsername()); internalAuditPlan.setId(planId); planMapper.updateById(internalAuditPlan); return CommonResult.success(); } @Override @Transactional public CommonResult copyInternalAuditPlan(Integer companyId, String sourceYear, String targetYear) { if (companyId == null) { companyId = SecurityUtils.getCompanyId().intValue(); } if (sourceYear == null || sourceYear.trim().isEmpty()) { return CommonResult.failed("源年份不能为空"); } if (targetYear == null || targetYear.trim().isEmpty()) { return CommonResult.failed("目标年份不能为空"); } LambdaUpdateWrapper deleteWrapper = new LambdaUpdateWrapper<>(); deleteWrapper.eq(InternalAuditPlan::getCompanyId, companyId) .eq(InternalAuditPlan::getYear, targetYear) .eq(InternalAuditPlan::getDelFlag, 1) .set(InternalAuditPlan::getDelFlag, 2) .set(InternalAuditPlan::getUpdateBy, SecurityUtils.getUsername()) .set(InternalAuditPlan::getUpdateTime, LocalDateTime.now()); planMapper.update(new InternalAuditPlan(), deleteWrapper); LambdaQueryWrapper queryWrapperSource = new LambdaQueryWrapper<>(); queryWrapperSource.eq(InternalAuditPlan::getCompanyId, companyId) .eq(InternalAuditPlan::getYear, sourceYear) .eq(InternalAuditPlan::getDelFlag, 1); List sourcePlans = planMapper.selectList(queryWrapperSource); if (ObjectUtil.isEmpty(sourcePlans)) { return CommonResult.success("源年份无相关数据"); } for (InternalAuditPlan sourcePlan : sourcePlans) { InternalAuditPlan newPlan = new InternalAuditPlan(); newPlan.setCompanyId(sourcePlan.getCompanyId()); newPlan.setYear(targetYear); newPlan.setPurpose(sourcePlan.getPurpose()); newPlan.setAuditPurpose(sourcePlan.getAuditPurpose()); newPlan.setReviewBasis(sourcePlan.getReviewBasis()); newPlan.setReviewScope(sourcePlan.getReviewScope()); newPlan.setReviewCarry(sourcePlan.getReviewCarry()); newPlan.setReviewConstitute(sourcePlan.getReviewConstitute()); newPlan.setReviewRequire(sourcePlan.getReviewRequire()); newPlan.setCompilationId(sourcePlan.getCompilationId()); newPlan.setProofreadId(sourcePlan.getProofreadId()); newPlan.setCheckId(sourcePlan.getCheckId()); newPlan.setRatifyId(sourcePlan.getRatifyId()); newPlan.setDelFlag(1); newPlan.setCreateBy(SecurityUtils.getUsername()); newPlan.setCreateTime(LocalDateTime.now()); int insert = planMapper.insert(newPlan); if (insert <= 0) { throw new RuntimeException("复制内审策划数据失败"); } } return CommonResult.success("成功从年份[" + sourceYear + "]复制到年份[" + targetYear + "]"); } }