package com.gkhy.exam.system.service.impl; 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.ContractReview; import com.gkhy.exam.system.domain.ContractReviewMess; import com.gkhy.exam.system.domain.ContractReviewMessb; import com.gkhy.exam.system.domain.ContractReviewRequire; import com.gkhy.exam.system.mapper.ContractReviewMapper; import com.gkhy.exam.system.mapper.ContractReviewMessMapper; import com.gkhy.exam.system.mapper.ContractReviewRequireMapper; import com.gkhy.exam.system.service.ContractReviewService; import org.apache.tomcat.websocket.AuthenticationException; 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; import java.util.Map; import java.util.stream.Collectors; @Service public class ContractReviewServiceImpl extends ServiceImpl implements ContractReviewService { @Autowired private ContractReviewMapper contractReviewMapper; @Autowired private ContractReviewMessMapper contractReviewMessMapper; @Autowired private ContractReviewRequireMapper contractReviewRequireMapper; @Override public CommonPage selectContractReviewList(ContractReview contractReview) { if (!SecurityUtils.adminUser()){ if (contractReview.getCompanyId()==null){ throw new ApiException("非管理员操作,查询条件不可为空"); } } PageUtils.startPage(); List contractReviews = contractReviewMapper.selectReviewList(contractReview); for (ContractReview review : contractReviews) { List contractReviewMesses = contractReviewMessMapper.selectByReviewId(review.getId()); List contractReviewRequires = contractReviewRequireMapper.selectByReviewId(review.getId()); review.setReviewMesses(contractReviewMesses); review.setContractReviewRequires(contractReviewRequires); } return CommonPage.restPage(contractReviews); } @Override @Transactional public CommonResult insertContractReview(ContractReview contractReview) { if(contractReview.getType().equals(1)){ Integer i = contractReviewMapper.selectByContractId(contractReview.getContractId()); if (i>0){ return CommonResult.failed("请勿重复添加数据"); } } List reviewMesses = contractReview.getReviewMesses(); List contractReviewRequires = contractReview.getContractReviewRequires(); contractReview.setCreateBy(SecurityUtils.getUsername()); contractReview.setCreateTime(LocalDateTime.now()); int insert = contractReviewMapper.insert(contractReview); if (insert>0){ Integer reviewId = contractReview.getId(); // 批量插入ContractReviewMess for (ContractReviewMess reviewMess : reviewMesses) { reviewMess.setReviewId(reviewId); } contractReviewMessMapper.insertMesses(reviewMesses); // 收集所有ContractReviewMessb List allMessbs = new ArrayList<>(); for (ContractReviewMess reviewMess : reviewMesses) { List contractReviewMessbs = reviewMess.getContractReviewMessbs(); if (contractReviewMessbs != null && !contractReviewMessbs.isEmpty()) { for (ContractReviewMessb contractReviewMessb : contractReviewMessbs) { contractReviewMessb.setMessId(reviewMess.getId()); } allMessbs.addAll(contractReviewMessbs); } } // 批量插入ContractReviewMessb if (!allMessbs.isEmpty()) { contractReviewMessMapper.insertMessbs(allMessbs); } // 批量插入ContractReviewRequire for (ContractReviewRequire contractReviewRequire : contractReviewRequires) { contractReviewRequire.setReviewId(reviewId); } contractReviewRequireMapper.insertRequires(contractReviewRequires); } return CommonResult.success(); } @Override @Transactional public CommonResult updateContractReview(ContractReview contractReview) { try { List reviewMesses = contractReview.getReviewMesses(); List contractReviewRequires = contractReview.getContractReviewRequires(); // 更新主表信息 contractReview.setUpdateBy(SecurityUtils.getUsername()); contractReview.setUpdateTime(LocalDateTime.now()); int i = contractReviewMapper.updateById(contractReview); if (i > 0) { Integer reviewId = contractReview.getId(); // 删除旧的关联数据 contractReviewMessMapper.deleteByReviewId(reviewId); contractReviewRequireMapper.deleteByReviewId(reviewId); // 插入新的ContractReviewMess数据并处理其子项 if (reviewMesses != null && !reviewMesses.isEmpty()) { // 设置reviewId并插入主表数据 for (ContractReviewMess reviewMess : reviewMesses) { reviewMess.setReviewId(reviewId); } contractReviewMessMapper.insertMesses(reviewMesses); // 处理ContractReviewMessb子项 List allMessbs = new ArrayList<>(); for (ContractReviewMess reviewMess : reviewMesses) { List contractReviewMessbs = reviewMess.getContractReviewMessbs(); if (contractReviewMessbs != null && !contractReviewMessbs.isEmpty()) { for (ContractReviewMessb contractReviewMessb : contractReviewMessbs) { contractReviewMessb.setMessId(reviewMess.getId()); } allMessbs.addAll(contractReviewMessbs); } } // 批量插入ContractReviewMessb if (!allMessbs.isEmpty()) { contractReviewMessMapper.insertMessbs(allMessbs); } } // 插入新的ContractReviewRequire数据 if (contractReviewRequires != null && !contractReviewRequires.isEmpty()) { for (ContractReviewRequire contractReviewRequire : contractReviewRequires) { contractReviewRequire.setReviewId(reviewId); } contractReviewRequireMapper.insertRequires(contractReviewRequires); } } return CommonResult.success(); } catch (Exception e) { // 记录日志 log.error("更新合同评审失败", e); return CommonResult.failed("更新失败"); } } @Override public CommonResult deletedContractReview(Integer reviewId) { ContractReview contractReview = new ContractReview(); contractReview.setDelFlag(2); contractReview.setUpdateBy(SecurityUtils.getUsername()); contractReview.setUpdateTime(LocalDateTime.now()); contractReview.setId(reviewId); int i = contractReviewMapper.updateById(contractReview); if (i>0){ return CommonResult.success(); } return CommonResult.failed(); } }