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.extension.service.impl.ServiceImpl;
import com.gkhy.exam.common.api.CommonPage;
import com.gkhy.exam.common.api.CommonResult;
import com.gkhy.exam.common.utils.PageUtils;
import com.gkhy.exam.common.utils.SecurityUtils;
import com.gkhy.exam.system.domain.ManagementPlan;
import com.gkhy.exam.system.mapper.ManagementPlanMapper;
import com.gkhy.exam.system.service.ManagementPlanService;
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;
/**
*
* 管理审批计划 服务实现类
*
*
* @author hh
* @since 2025-07-10 15:11:50
*/
@Service
public class ManagementPlanServiceImpl extends ServiceImpl implements ManagementPlanService {
@Autowired
private ManagementPlanMapper managementPlanMapper;
@Override
public CommonPage selectManagementPlanList(ManagementPlan managementPlan) {
PageUtils.startPage();
List managementPlans = managementPlanMapper.selectManagementPlanById(managementPlan);
return CommonPage.restPage(managementPlans);
}
@Override
public CommonResult insertManagementPlan(ManagementPlan managementPlan) {
if (managementPlan == null || managementPlan.getCompanyId() == null){
return CommonResult.failed("企业id不能为空");
}
List managementPlans = managementPlanMapper.selectManagementPlanById(managementPlan);
if (ObjectUtil.isNotEmpty(managementPlans)) {
return CommonResult.failed("当前企业已有数据,请勿重复添加");
}
managementPlan.setCreateBy(SecurityUtils.getUsername());
managementPlan.setCreateTime(LocalDateTime.now());
int insert = managementPlanMapper.insert(managementPlan);
if (insert > 0) {
return CommonResult.success(insert);
}
return CommonResult.failed();
}
@Override
public CommonResult updateManagementPlan(ManagementPlan managementPlan) {
managementPlan.setUpdateBy(SecurityUtils.getUsername());
managementPlan.setUpdateTime(LocalDateTime.now());
int update = managementPlanMapper.updateById(managementPlan);
if (update > 0) {
return CommonResult.success(update);
}
return CommonResult.failed();
}
@Override
public CommonResult deletedManagementPlan(Integer id) {
ManagementPlan managementPlan = new ManagementPlan();
managementPlan.setId(id);
managementPlan.setDelFlag(1);
managementPlan.setUpdateBy(SecurityUtils.getUsername());
managementPlan.setUpdateTime(LocalDateTime.now());
int delete = managementPlanMapper.updateById(managementPlan);
if (delete > 0) {
return CommonResult.success(delete);
}
return CommonResult.failed();
}
@Override
@Transactional
public CommonResult copyManagementPlan(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("目标年份不能为空");
}
LambdaQueryWrapper queryWrapperTarget = new LambdaQueryWrapper<>();
queryWrapperTarget.eq(ManagementPlan::getCompanyId, companyId)
.eq(ManagementPlan::getYear, targetYear)
.eq(ManagementPlan::getDelFlag, 0);
List existingPlans = managementPlanMapper.selectList(queryWrapperTarget);
if (ObjectUtil.isNotEmpty(existingPlans)) {
for (ManagementPlan existingPlan : existingPlans) {
ManagementPlan deletePlan = new ManagementPlan();
deletePlan.setId(existingPlan.getId());
deletePlan.setDelFlag(1);
deletePlan.setUpdateBy(SecurityUtils.getUsername());
deletePlan.setUpdateTime(LocalDateTime.now());
managementPlanMapper.updateById(deletePlan);
}
}
LambdaQueryWrapper queryWrapperSource = new LambdaQueryWrapper<>();
queryWrapperSource.eq(ManagementPlan::getCompanyId, companyId)
.eq(ManagementPlan::getYear, sourceYear)
.eq(ManagementPlan::getDelFlag, 0);
List sourcePlans = managementPlanMapper.selectList(queryWrapperSource);
if (ObjectUtil.isEmpty(sourcePlans)) {
return CommonResult.success("源年份无相关数据");
}
for (ManagementPlan sourcePlan : sourcePlans) {
ManagementPlan newPlan = new ManagementPlan();
newPlan.setCompanyId(sourcePlan.getCompanyId());
newPlan.setNumber(sourcePlan.getNumber());
newPlan.setYear(targetYear);
newPlan.setFictionId(sourcePlan.getFictionId());
newPlan.setFictionName(sourcePlan.getFictionName());
newPlan.setFictionTime(sourcePlan.getFictionTime());
newPlan.setCheckId(sourcePlan.getCheckId());
newPlan.setCheckName(sourcePlan.getCheckName());
newPlan.setCheckTime(sourcePlan.getCheckTime());
newPlan.setRatifyId(sourcePlan.getRatifyId());
newPlan.setRatifyName(sourcePlan.getRatifyName());
newPlan.setRatifyTime(sourcePlan.getRatifyTime());
newPlan.setContent(sourcePlan.getContent());
newPlan.setObjective(sourcePlan.getObjective());
newPlan.setLocation(sourcePlan.getLocation());
newPlan.setStaff(sourcePlan.getStaff());
newPlan.setReport(sourcePlan.getReport());
newPlan.setDelFlag(0);
newPlan.setCreateBy(SecurityUtils.getUsername());
newPlan.setCreateTime(LocalDateTime.now());
int insert = managementPlanMapper.insert(newPlan);
if (insert <= 0) {
throw new RuntimeException("复制管理审批计划失败");
}
}
return CommonResult.success("复制成功");
}
}