| | |
| | | package com.gkhy.exam.system.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | 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.FactorContent; |
| | | import com.gkhy.exam.system.domain.FactorControl; |
| | | import com.gkhy.exam.system.domain.FactorDiscern; |
| | | import com.gkhy.exam.system.domain.req.CopyReq; |
| | | import com.gkhy.exam.system.mapper.FactorContentMapper; |
| | | import com.gkhy.exam.system.mapper.FactorControlMapper; |
| | | import com.gkhy.exam.system.mapper.FactorDiscernMapper; |
| | | import com.gkhy.exam.system.service.FactorDiscernService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | public class FactorDiscernServiceImpl extends ServiceImpl<FactorDiscernMapper, FactorDiscern> implements FactorDiscernService { |
| | |
| | | |
| | | @Autowired |
| | | private FactorContentMapper factorContentMapper; |
| | | |
| | | @Autowired |
| | | private FactorControlMapper factorControlMapper; |
| | | |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public CommonResult copyFactorDiscern(CopyReq copyReq) { |
| | | // 参数校验 |
| | | if (copyReq.getCompanyId() == null) { |
| | | throw new ApiException("企业ID不能为空"); |
| | | } |
| | | if (copyReq.getCopyYear() == null || copyReq.getCopyYear().isEmpty()) { |
| | | throw new ApiException("选择年份不能为空"); |
| | | } |
| | | if (copyReq.getTargetYear() == null || copyReq.getTargetYear().isEmpty()) { |
| | | throw new ApiException("目标年份不能为空"); |
| | | } |
| | | |
| | | // 查询源数据:根据企业ID和选择年份查询要素识别记录 |
| | | FactorDiscern queryParam = new FactorDiscern(); |
| | | queryParam.setCompanyId(Long.valueOf(copyReq.getCompanyId())); |
| | | queryParam.setYear(copyReq.getCopyYear()); |
| | | |
| | | List<FactorDiscern> sourceFactorDiscerns = factorDiscernMapper.selectFactorDiscernList(queryParam); |
| | | |
| | | if (sourceFactorDiscerns == null || sourceFactorDiscerns.isEmpty()) { |
| | | throw new ApiException("未找到源年份[" + copyReq.getCopyYear() + "]的要素识别数据"); |
| | | } |
| | | |
| | | // 检查目标年份是否已存在数据 |
| | | FactorDiscern targetCheck = new FactorDiscern(); |
| | | targetCheck.setCompanyId(Long.valueOf(copyReq.getCompanyId())); |
| | | targetCheck.setYear(copyReq.getTargetYear()); |
| | | List<FactorDiscern> existingTargetData = factorDiscernMapper.selectFactorDiscernList(targetCheck); |
| | | |
| | | if (existingTargetData != null && !existingTargetData.isEmpty()) { |
| | | // 收集所有需要删除的ID |
| | | List<Integer> deleteIds = existingTargetData.stream() |
| | | .map(FactorDiscern::getId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // 批量逻辑删除这些ID对应的要素识别记录 |
| | | FactorDiscern updateEntity = new FactorDiscern(); |
| | | updateEntity.setDelFlag(2); |
| | | updateEntity.setUpdateTime(LocalDateTime.now()); |
| | | updateEntity.setUpdateBy(SecurityUtils.getUsername()); |
| | | |
| | | UpdateWrapper<FactorDiscern> updateWrapper = new UpdateWrapper<>(); |
| | | updateWrapper.in("id", deleteIds); |
| | | factorDiscernMapper.update(updateEntity, updateWrapper); |
| | | |
| | | // 同时删除这些要素识别下的所有内容记录 |
| | | // UpdateWrapper<FactorContent> contentWrapper = new UpdateWrapper<>(); |
| | | // contentWrapper.in("factor_discern_id", deleteIds); |
| | | // factorContentMapper.delete(contentWrapper); |
| | | //删除要素识别控制对应数据 |
| | | FactorControl factorControl = new FactorControl(); |
| | | factorControl.setDelFlag(2); |
| | | factorControl.setUpdateTime(LocalDateTime.now()); |
| | | factorControl.setUpdateBy(SecurityUtils.getUsername()); |
| | | |
| | | factorControlMapper.update(factorControl, new UpdateWrapper<FactorControl>().in("factor_discern_id", deleteIds)); |
| | | |
| | | } |
| | | |
| | | // 遍历源数据进行复制 |
| | | for (FactorDiscern sourceDiscern : sourceFactorDiscerns) { |
| | | // 创建新的要素识别记录 |
| | | FactorDiscern newFactorDiscern = new FactorDiscern(); |
| | | newFactorDiscern.setCompanyId(sourceDiscern.getCompanyId()); |
| | | newFactorDiscern.setDeptId(sourceDiscern.getDeptId()); |
| | | newFactorDiscern.setYear(copyReq.getTargetYear()); |
| | | newFactorDiscern.setFictionId(sourceDiscern.getFictionId()); |
| | | newFactorDiscern.setCheckId(sourceDiscern.getCheckId()); |
| | | newFactorDiscern.setRatifyId(sourceDiscern.getRatifyId()); |
| | | newFactorDiscern.setFictionTime(sourceDiscern.getFictionTime()); |
| | | newFactorDiscern.setDelFlag(1); |
| | | newFactorDiscern.setCreateBy(SecurityUtils.getUsername()); |
| | | newFactorDiscern.setCreateTime(LocalDateTime.now()); |
| | | |
| | | // 插入新的要素识别记录 |
| | | factorDiscernMapper.insert(newFactorDiscern); |
| | | |
| | | // 查询源要素识别的内容 |
| | | List<FactorContent> sourceContents = factorContentMapper.selectByFactorId(sourceDiscern.getId()); |
| | | //添加要素识别控制 |
| | | List<FactorControl> factorControls = factorControlMapper.selectFactorDiscernId(sourceDiscern.getId()); |
| | | for (FactorControl factorControl : factorControls) { |
| | | FactorControl newControl = new FactorControl(); |
| | | newControl.setCompanyId(factorControl.getCompanyId()); |
| | | newControl.setFactorDiscernId(newFactorDiscern.getId()); |
| | | newControl.setNumber(factorControl.getNumber()); |
| | | newControl.setFrequency(factorControl.getFrequency()); |
| | | newControl.setFictionId(factorControl.getFictionId()); |
| | | newControl.setCheckId(factorControl.getCheckId()); |
| | | newControl.setRatifyId(factorControl.getRatifyId()); |
| | | newControl.setDelFlag(1); |
| | | newControl.setCreateBy(SecurityUtils.getUsername()); |
| | | newControl.setCreateTime(LocalDateTime.now()); |
| | | factorControlMapper.insert(newControl); |
| | | } |
| | | |
| | | if (sourceContents != null && !sourceContents.isEmpty()) { |
| | | List<FactorContent> newContents = new ArrayList<>(); |
| | | |
| | | // 遍历内容进行复制 |
| | | for (FactorContent sourceContent : sourceContents) { |
| | | FactorContent newContent = new FactorContent(); |
| | | newContent.setFactorDiscernId(newFactorDiscern.getId()); |
| | | newContent.setFactorName(sourceContent.getFactorName()); |
| | | newContent.setFactorMess(sourceContent.getFactorMess()); |
| | | newContent.setInfluence(sourceContent.getInfluence()); |
| | | newContent.setMonitorMethod(sourceContent.getMonitorMethod()); |
| | | newContent.setReview(sourceContent.getReview()); |
| | | newContent.setSolutions(sourceContent.getSolutions()); |
| | | newContent.setResult(sourceContent.getResult()); |
| | | newContent.setRemark(sourceContent.getRemark()); |
| | | newContent.setType(sourceContent.getType()); |
| | | |
| | | newContents.add(newContent); |
| | | } |
| | | |
| | | // 批量插入内容记录 |
| | | if (!newContents.isEmpty()) { |
| | | factorContentMapper.insertBatch(newContents); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return CommonResult.success("成功从年份[" + copyReq.getCopyYear() + "]复制到年份[" + copyReq.getTargetYear() + "]"); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public CommonResult insertFactorDiscern(FactorDiscern factorDiscern) { |
| | | List<FactorDiscern> factorDiscerns = factorDiscernMapper.selectByCompanyIdAndDeptId(factorDiscern); |
| | | if (factorDiscerns.size()>0){ |