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<ContractReviewMapper, ContractReview> 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<ContractReview> contractReviews = contractReviewMapper.selectReviewList(contractReview);
|
for (ContractReview review : contractReviews) {
|
List<ContractReviewMess> contractReviewMesses = contractReviewMessMapper.selectByReviewId(review.getId());
|
List<ContractReviewRequire> contractReviewRequires = contractReviewRequireMapper.selectByReviewId(review.getId());
|
review.setReviewMesses(contractReviewMesses);
|
review.setContractReviewRequires(contractReviewRequires);
|
}
|
return CommonPage.restPage(contractReviews);
|
}
|
|
@Override
|
@Transactional
|
public CommonResult insertContractReview(ContractReview contractReview) {
|
Integer i = contractReviewMapper.selectByContractId(contractReview.getContractId());
|
if (i>0){
|
return CommonResult.failed("请勿重复添加数据");
|
}
|
List<ContractReviewMess> reviewMesses = contractReview.getReviewMesses();
|
List<ContractReviewRequire> 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<ContractReviewMessb> allMessbs = new ArrayList<>();
|
for (ContractReviewMess reviewMess : reviewMesses) {
|
List<ContractReviewMessb> 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<ContractReviewMess> reviewMesses = contractReview.getReviewMesses();
|
List<ContractReviewRequire> 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<ContractReviewMessb> allMessbs = new ArrayList<>();
|
for (ContractReviewMess reviewMess : reviewMesses) {
|
List<ContractReviewMessb> 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();
|
}
|
}
|