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.domain.req.ContractReviewReq;
|
import com.gkhy.exam.system.domain.vo.ContractReviewVo;
|
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.*;
|
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) {
|
if(contractReview.getType().equals(1)){
|
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);
|
|
|
// 批量插入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);
|
}
|
// 插入新的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();
|
}
|
|
@Override
|
public CommonResult contractList(Integer userId) {
|
List<ContractReviewVo> result = new ArrayList<>();
|
List<ContractReviewVo> contractReviewVos = contractReviewMapper.selectByUserId(userId);
|
List<ContractReviewVo> contractReviewVos1 = contractReviewMapper.selectByUserIdMain(userId);
|
Set<Integer> existIdSet = new HashSet<>();
|
|
// 处理signType=1并缓存id
|
for (ContractReviewVo contractReviewVo : contractReviewVos) {
|
List<ContractReviewMess> contractReviewMesses = contractReviewMessMapper.selectByReviewIdAndUserId(contractReviewVo.getId(),userId);
|
contractReviewVo.setReviewMesses(contractReviewMesses);
|
contractReviewVo.setSignType(1);
|
result.add(contractReviewVo);
|
existIdSet.add(contractReviewVo.getId()); // 存入已存在的id
|
}
|
|
// 处理signType=2,通过Set快速判断id是否存在
|
for (ContractReviewVo contractReviewVo : contractReviewVos1) {
|
int update = contractReviewMessMapper.CountByReviewId(contractReviewVo.getId());
|
if (update==0){
|
if (!existIdSet.contains(contractReviewVo.getId())) {
|
List<ContractReviewMess> contractReviewMesses = contractReviewMessMapper.selectByReviewIdAndUserId(contractReviewVo.getId(),userId);
|
contractReviewVo.setReviewMesses(contractReviewMesses);
|
contractReviewVo.setSignType(2);
|
result.add(contractReviewVo);
|
existIdSet.add(contractReviewVo.getId()); // 同步更新Set
|
}
|
}
|
}
|
return CommonResult.success(result);
|
}
|
|
@Override
|
public CommonResult contractcheck(ContractReviewReq contractReviewReq) {
|
if (contractReviewReq.getType()==2){
|
ContractReview contractReview = new ContractReview();
|
contractReview.setId(contractReviewReq.getId());
|
contractReview.setLegalPerson(contractReviewReq.getUserId());
|
contractReview.setSuggest(contractReviewReq.getReviewOpinion());
|
contractReviewMapper.updateByUserid(contractReview);
|
}
|
if (contractReviewReq.getType()==1){
|
ContractReviewMess contractReviewMess = new ContractReviewMess();
|
contractReviewMess.setId(contractReviewReq.getId());
|
contractReviewMess.setReviewOpinion(contractReviewReq.getReviewOpinion());
|
contractReviewMess.setReviewUser(contractReviewReq.getUserId());
|
contractReviewMessMapper.updateByUserId(contractReviewMess);
|
}
|
return CommonResult.success();
|
}
|
}
|