更新
20241219 更新 1.处理审核审批分页接口中由于当一个用户拥有一级审核、二级审核、审批的权限导致的权限冲突,使分页列表数据返回错误 2.处理审核审批接口权限冲突,导致只能进行一级审核 3.配置文件添加sql日志打印,便于追踪错误
This commit is contained in:
@@ -1,15 +1,14 @@
|
|||||||
package digital.laboratory.platform.imr.controller;
|
package digital.laboratory.platform.imr.controller;
|
||||||
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import digital.laboratory.platform.common.core.util.R;
|
import digital.laboratory.platform.common.core.util.R;
|
||||||
import digital.laboratory.platform.common.log.annotation.SysLog;
|
import digital.laboratory.platform.common.log.annotation.SysLog;
|
||||||
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
|
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
|
||||||
import digital.laboratory.platform.imr.dto.QueryApplyDTO;
|
import digital.laboratory.platform.imr.dto.QueryApplyDTO;
|
||||||
import digital.laboratory.platform.imr.dto.ReviewApprovalDTO;
|
import digital.laboratory.platform.imr.dto.ReviewApprovalDTO;
|
||||||
import digital.laboratory.platform.imr.entity.SampleApply;
|
import digital.laboratory.platform.imr.entity.SampleApply;
|
||||||
|
import digital.laboratory.platform.imr.enums.ApplyStatus;
|
||||||
import digital.laboratory.platform.imr.service.ReviewApprovalService;
|
import digital.laboratory.platform.imr.service.ReviewApprovalService;
|
||||||
import digital.laboratory.platform.imr.service.SampleApplyService;
|
import digital.laboratory.platform.imr.service.SampleApplyService;
|
||||||
import digital.laboratory.platform.imr.vo.SampleApplyVO;
|
import digital.laboratory.platform.imr.vo.SampleApplyVO;
|
||||||
@@ -22,7 +21,6 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.security.Principal;
|
import java.security.Principal;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -81,88 +79,8 @@ public class ReviewApprovalController {
|
|||||||
Principal principal = theHttpServletRequest.getUserPrincipal();
|
Principal principal = theHttpServletRequest.getUserPrincipal();
|
||||||
DLPUser dlpUser = (DLPUser) ((OAuth2Authentication) principal).getUserAuthentication().getPrincipal();
|
DLPUser dlpUser = (DLPUser) ((OAuth2Authentication) principal).getUserAuthentication().getPrincipal();
|
||||||
|
|
||||||
|
IPage<SampleApplyVO> page = reviewApprovalService.auditPage(dto, dlpUser);
|
||||||
Page<SampleApply> page = new Page<>(dto.getCurrent(),dto.getSize());
|
return R.ok(page,"查询成功");
|
||||||
QueryWrapper<SampleApply> queryWrapper = new QueryWrapper<>();
|
|
||||||
ArrayList<Integer> list = new ArrayList<>();
|
|
||||||
|
|
||||||
Set<String> permissions = dlpUser.getPermissions();//判断权限
|
|
||||||
|
|
||||||
//System.out.println(permissions);
|
|
||||||
for (String permission : permissions) {
|
|
||||||
if ("imr_sample_apply_first_audit".equals(permission)) {
|
|
||||||
//
|
|
||||||
queryWrapper.eq("apply_type",1);
|
|
||||||
if(dto.getStatus()==null){//审核初页面(不应该有销毁申请)
|
|
||||||
queryWrapper.eq("application_status",1);
|
|
||||||
}else {//点击通过页面时
|
|
||||||
if(dto.getStatus()==0){
|
|
||||||
//返回全部
|
|
||||||
queryWrapper.and(Wrapper->Wrapper.le("application_status",-2)
|
|
||||||
.or().ge("application_status",2)
|
|
||||||
);
|
|
||||||
}else {
|
|
||||||
//通过status==1/不通过status==-1
|
|
||||||
if(dto.getStatus()==1){
|
|
||||||
queryWrapper.ge("application_status",2);
|
|
||||||
}
|
|
||||||
if(dto.getStatus()==-1){
|
|
||||||
queryWrapper.le("application_status",-2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
} else if ("imr_sample_apply_secondary_audit".equals(permission)) {
|
|
||||||
//二级审核员(不应该有销毁申请)
|
|
||||||
queryWrapper.eq("apply_type",1);
|
|
||||||
if(dto.getStatus()==null){
|
|
||||||
queryWrapper.eq("application_status",2);
|
|
||||||
}else {
|
|
||||||
if(dto.getStatus()==0){
|
|
||||||
//返回全部
|
|
||||||
queryWrapper.and(Wrapper->Wrapper.le("application_status",-3)
|
|
||||||
.or().ge("application_status",3)
|
|
||||||
);
|
|
||||||
/*queryWrapper.le("application_status",-3).or()
|
|
||||||
.ge("application_status",3);//大于=3的后面所有*/
|
|
||||||
}else {
|
|
||||||
//通过status==1/不通过status==-1
|
|
||||||
if(dto.getStatus()==1){
|
|
||||||
queryWrapper.ge("application_status",3);
|
|
||||||
}
|
|
||||||
if(dto.getStatus()==-1){
|
|
||||||
queryWrapper.le("application_status",-3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}else if ("imr_sample_apply_approval".equals(permission)) {
|
|
||||||
//审批人
|
|
||||||
if(dto.getStatus()==null){
|
|
||||||
queryWrapper.eq("application_status",3);
|
|
||||||
}else {
|
|
||||||
if(dto.getStatus()==0){
|
|
||||||
list.add(-4);//二级不通过
|
|
||||||
list.add(4);//通过/不通过
|
|
||||||
queryWrapper.in("application_status",list);
|
|
||||||
}else {
|
|
||||||
//通过status==1/不通过status==-1
|
|
||||||
if(dto.getStatus()==1){
|
|
||||||
queryWrapper.eq("application_status",4);
|
|
||||||
}
|
|
||||||
if(dto.getStatus()==-1){
|
|
||||||
queryWrapper.eq("application_status",-4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//判断权限查询条件设置完毕
|
|
||||||
queryWrapper.between(dto.getBeginDate()!=null && dto.getFinishDate()!=null,"application_date",dto.getBeginDate(),dto.getFinishDate());
|
|
||||||
queryWrapper.orderByDesc("application_date");
|
|
||||||
IPage<SampleApplyVO> applyVOPage = sampleApplyService.getApplyPage(page, queryWrapper);
|
|
||||||
return R.ok(applyVOPage,"查询成功");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -179,25 +97,41 @@ public class ReviewApprovalController {
|
|||||||
Principal principal = theHttpServletRequest.getUserPrincipal();
|
Principal principal = theHttpServletRequest.getUserPrincipal();
|
||||||
DLPUser dlpUser = (DLPUser) ((OAuth2Authentication) principal).getUserAuthentication().getPrincipal();
|
DLPUser dlpUser = (DLPUser) ((OAuth2Authentication) principal).getUserAuthentication().getPrincipal();
|
||||||
|
|
||||||
|
//查找对应的申请
|
||||||
|
SampleApply sampleApply = sampleApplyService.getById(dto.getApplyId());
|
||||||
|
ApplyStatus applicationStatus = null;
|
||||||
|
if(sampleApply == null){
|
||||||
|
return R.failed("当前申请数据不存在!");
|
||||||
|
}
|
||||||
|
|
||||||
|
applicationStatus = sampleApply.getApplicationStatus();
|
||||||
|
if(applicationStatus == ApplyStatus.TO_BE_SUBMITTED || applicationStatus == ApplyStatus.WITHDRAWN){
|
||||||
|
return R.failed("该申请并未提交审核或已撤回申请,请提交申请后在审核!");
|
||||||
|
}
|
||||||
|
if (!ApplyStatus.getPendingApprovalStatuses().contains(applicationStatus)) {
|
||||||
|
return R.failed("该申请已经审核过,请勿重复操作!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Set<String> permissions = dlpUser.getPermissions();//判断权限
|
Set<String> permissions = dlpUser.getPermissions();//判断权限
|
||||||
|
|
||||||
SampleApplyVO sampleApplyVO = null;
|
SampleApplyVO sampleApplyVO = null;
|
||||||
|
|
||||||
for (String permission : permissions) {
|
for (String permission : permissions) {
|
||||||
if ("imr_sample_apply_first_audit".equals(permission)) {
|
if ("imr_sample_apply_first_audit".equals(permission) && applicationStatus.equals(ApplyStatus.FIRST_LEVEL)) {
|
||||||
//一级审核员
|
//一级审核员权限和当前申请状态为待一级审核
|
||||||
sampleApplyVO = reviewApprovalService.firstAudit(dto, dlpUser);
|
sampleApplyVO = reviewApprovalService.firstAudit(dto, sampleApply, dlpUser);
|
||||||
break;
|
break;
|
||||||
} else if ("imr_sample_apply_secondary_audit".equals(permission)) {
|
} else if ("imr_sample_apply_secondary_audit".equals(permission) && applicationStatus.equals(ApplyStatus.SECOND_LEVEL)) {
|
||||||
//二级审核员
|
//二级审核员权限和当前申请状态为待二级审核
|
||||||
reviewApprovalService.secondaryAudit(dto, dlpUser);
|
reviewApprovalService.secondaryAudit(dto, sampleApply, dlpUser);
|
||||||
break;
|
break;
|
||||||
}else if ("imr_sample_apply_approval".equals(permission)) {
|
}else if ("imr_sample_apply_approval".equals(permission) && applicationStatus.equals(ApplyStatus.PENDING_APPROVAL)) {
|
||||||
//审批人
|
//审批人权限和当前申请状态为待审批
|
||||||
reviewApprovalService.approval(dto,dlpUser);
|
reviewApprovalService.approval(dto, sampleApply, dlpUser);
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return R.ok(sampleApplyVO,"审核成功");
|
return R.ok(sampleApplyVO,"审核成功");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,10 @@ import com.fasterxml.jackson.annotation.JsonValue;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 申请的状态
|
* 申请的状态
|
||||||
*/
|
*/
|
||||||
@@ -28,4 +32,12 @@ public enum ApplyStatus {
|
|||||||
@JsonValue//标记返回前端字段
|
@JsonValue//标记返回前端字段
|
||||||
private final String description;
|
private final String description;
|
||||||
|
|
||||||
|
// 返回待审核审批的状态
|
||||||
|
public static List<ApplyStatus> getPendingApprovalStatuses() {
|
||||||
|
return Arrays.stream(ApplyStatus.values())
|
||||||
|
.filter(status -> status == ApplyStatus.FIRST_LEVEL ||
|
||||||
|
status == ApplyStatus.SECOND_LEVEL ||
|
||||||
|
status == ApplyStatus.PENDING_APPROVAL)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,42 +1,52 @@
|
|||||||
package digital.laboratory.platform.imr.service;
|
package digital.laboratory.platform.imr.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
|
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
|
||||||
|
import digital.laboratory.platform.imr.dto.QueryApplyDTO;
|
||||||
import digital.laboratory.platform.imr.dto.ReviewApprovalDTO;
|
import digital.laboratory.platform.imr.dto.ReviewApprovalDTO;
|
||||||
import digital.laboratory.platform.imr.entity.SampleApply;
|
import digital.laboratory.platform.imr.entity.SampleApply;
|
||||||
import digital.laboratory.platform.imr.vo.SampleApplyVO;
|
import digital.laboratory.platform.imr.vo.SampleApplyVO;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface ReviewApprovalService {
|
public interface ReviewApprovalService {
|
||||||
/**
|
/**
|
||||||
* 一级审核
|
* 一级审核
|
||||||
|
*
|
||||||
* @param dto
|
* @param dto
|
||||||
|
* @param sampleApply
|
||||||
* @param dlpUser
|
* @param dlpUser
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SampleApplyVO firstAudit(ReviewApprovalDTO dto, DLPUser dlpUser);
|
SampleApplyVO firstAudit(ReviewApprovalDTO dto, SampleApply sampleApply, DLPUser dlpUser);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 二级审核
|
* 二级审核
|
||||||
|
*
|
||||||
* @param dto
|
* @param dto
|
||||||
|
* @param sampleApply
|
||||||
* @param dlpUser
|
* @param dlpUser
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SampleApplyVO secondaryAudit(ReviewApprovalDTO dto, DLPUser dlpUser);
|
SampleApplyVO secondaryAudit(ReviewApprovalDTO dto, SampleApply sampleApply, DLPUser dlpUser);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 审批
|
* 审批
|
||||||
|
*
|
||||||
* @param dto
|
* @param dto
|
||||||
|
* @param sampleApply
|
||||||
* @param dlpUser
|
* @param dlpUser
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SampleApplyVO approval(ReviewApprovalDTO dto, DLPUser dlpUser);
|
SampleApplyVO approval(ReviewApprovalDTO dto, SampleApply sampleApply, DLPUser dlpUser);
|
||||||
|
|
||||||
//IPage<SampleApplyVO> getAuditPage(Page<SampleApply> page, QueryWrapper<SampleApply> qw);
|
/**
|
||||||
|
* 获取审核分页列表
|
||||||
//List<SampleApplyVO> getAuditList(QueryWrapper<SampleApply> qw);
|
*
|
||||||
|
* 根据查询参数和当前用户的权限,返回对应的审核分页列表。
|
||||||
|
*
|
||||||
|
* @param dto 查询申请DTO对象,包含分页和查询条件参数
|
||||||
|
* @param dlpUser 当前用户信息,用于判断权限
|
||||||
|
* @return 审核分页列表对象,包含查询结果和分页信息
|
||||||
|
*/
|
||||||
|
IPage<SampleApplyVO> auditPage(QueryApplyDTO dto, DLPUser dlpUser);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,21 @@
|
|||||||
package digital.laboratory.platform.imr.service.impl;
|
package digital.laboratory.platform.imr.service.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
|
import digital.laboratory.platform.common.mybatis.security.service.DLPUser;
|
||||||
|
import digital.laboratory.platform.imr.dto.QueryApplyDTO;
|
||||||
import digital.laboratory.platform.imr.dto.ReviewApprovalDTO;
|
import digital.laboratory.platform.imr.dto.ReviewApprovalDTO;
|
||||||
import digital.laboratory.platform.imr.dto.ReviewSampleDetail;
|
import digital.laboratory.platform.imr.dto.ReviewSampleDetail;
|
||||||
import digital.laboratory.platform.imr.entity.SampleApply;
|
import digital.laboratory.platform.imr.entity.SampleApply;
|
||||||
import digital.laboratory.platform.imr.entity.SampleApplyDetailed;
|
import digital.laboratory.platform.imr.entity.SampleApplyDetailed;
|
||||||
import digital.laboratory.platform.imr.entity.SampleStorage;
|
import digital.laboratory.platform.imr.entity.SampleStorage;
|
||||||
import digital.laboratory.platform.imr.enums.ApplyStatus;
|
import digital.laboratory.platform.imr.enums.ApplyStatus;
|
||||||
//import digital.laboratory.platform.imr.entity.enums.SampleStatus;
|
|
||||||
import digital.laboratory.platform.imr.feign.TransferFeignService;
|
import digital.laboratory.platform.imr.feign.TransferFeignService;
|
||||||
import digital.laboratory.platform.imr.mapper.SampleApplyDetailedMapper;
|
import digital.laboratory.platform.imr.mapper.SampleApplyDetailedMapper;
|
||||||
import digital.laboratory.platform.imr.mapper.SampleApplyMapper;
|
|
||||||
import digital.laboratory.platform.imr.mapper.SampleStorageMapper;
|
import digital.laboratory.platform.imr.mapper.SampleStorageMapper;
|
||||||
import digital.laboratory.platform.imr.service.ReviewApprovalService;
|
import digital.laboratory.platform.imr.service.ReviewApprovalService;
|
||||||
import digital.laboratory.platform.imr.service.SampleApplyService;
|
import digital.laboratory.platform.imr.service.SampleApplyService;
|
||||||
@@ -24,7 +26,9 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -32,7 +36,7 @@ public class ReviewApprovalServiceImpl implements ReviewApprovalService {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
private final SampleApplyMapper sampleApplyMapper;
|
private final SampleApplyService sampleApplyService;
|
||||||
|
|
||||||
private final SampleApplyDetailedMapper detailedMapper;
|
private final SampleApplyDetailedMapper detailedMapper;
|
||||||
|
|
||||||
@@ -48,38 +52,40 @@ public class ReviewApprovalServiceImpl implements ReviewApprovalService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 一级审核员审核
|
* 一级审核员审核
|
||||||
|
*
|
||||||
* @param dto
|
* @param dto
|
||||||
|
* @param sampleApply
|
||||||
* @param dlpUser
|
* @param dlpUser
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public SampleApplyVO firstAudit(ReviewApprovalDTO dto, DLPUser dlpUser) {
|
public SampleApplyVO firstAudit(ReviewApprovalDTO dto, SampleApply sampleApply, DLPUser dlpUser) {
|
||||||
|
|
||||||
//查找对应的申请
|
//查找对应的申请
|
||||||
SampleApply sampleApply = sampleApplyMapper.selectById(dto.getApplyId());
|
// SampleApply sampleApply = sampleApplyMapper.selectById(dto.getApplyId());
|
||||||
if(sampleApply == null){
|
// if(sampleApply == null){
|
||||||
throw new RuntimeException("当前数据不存在");
|
// throw new RuntimeException("当前数据不存在");
|
||||||
} else if (sampleApply.getApplyType()==1) {//外带申请
|
// } else if (sampleApply.getApplyType()==1) {//外带申请
|
||||||
if(sampleApply.getApplicationStatus()!=ApplyStatus.FIRST_LEVEL){
|
// if(sampleApply.getApplicationStatus()!=ApplyStatus.FIRST_LEVEL){
|
||||||
throw new RuntimeException("当前数据不是待一级审核状态");
|
// throw new RuntimeException("当前数据不是待一级审核状态");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
//判断无误
|
//判断无误
|
||||||
sampleApply.setFirstAuditDate(LocalDateTime.now());//时间
|
sampleApply.setFirstAuditDate(LocalDateTime.now());//时间
|
||||||
sampleApply.setFirstAuditOpinion(dto.getOpinion());//意见
|
sampleApply.setFirstAuditOpinion(dto.getOpinion());//意见
|
||||||
sampleApply.setFirstAuditorId(dlpUser.getId());//一级审核员
|
sampleApply.setFirstAuditorId(dlpUser.getId());//一级审核员
|
||||||
|
|
||||||
QueryWrapper<SampleApplyDetailed> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SampleApplyDetailed> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("apply_id",dto.getApplyId());
|
queryWrapper.eq("apply_id", dto.getApplyId());
|
||||||
List<SampleApplyDetailed> applyDetailed = detailedMapper.selectList(queryWrapper);
|
List<SampleApplyDetailed> applyDetailed = detailedMapper.selectList(queryWrapper);
|
||||||
ArrayList<String> idList = new ArrayList<>();
|
ArrayList<String> idList = new ArrayList<>();
|
||||||
List<ReviewSampleDetail> sampleDetails = dto.getReviewSampleDetails();
|
List<ReviewSampleDetail> sampleDetails = dto.getReviewSampleDetails();
|
||||||
|
|
||||||
if(dto.getStatus()==-1){//点击不通过按钮;勾选的数据为不通过
|
if (dto.getStatus() == -1) {//点击不通过按钮;勾选的数据为不通过
|
||||||
|
|
||||||
//循环有的
|
//循环有的
|
||||||
for (ReviewSampleDetail detail:sampleDetails) {
|
for (ReviewSampleDetail detail : sampleDetails) {
|
||||||
//传值为不通过样本
|
//传值为不通过样本
|
||||||
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
||||||
sampleApplyDetailed.setStatus(-1);
|
sampleApplyDetailed.setStatus(-1);
|
||||||
@@ -89,27 +95,27 @@ public class ReviewApprovalServiceImpl implements ReviewApprovalService {
|
|||||||
//循环没有的
|
//循环没有的
|
||||||
QueryWrapper<SampleApplyDetailed> not = queryWrapper.notIn("id", idList);
|
QueryWrapper<SampleApplyDetailed> not = queryWrapper.notIn("id", idList);
|
||||||
List<SampleApplyDetailed> detaileds = detailedMapper.selectList(not);
|
List<SampleApplyDetailed> detaileds = detailedMapper.selectList(not);
|
||||||
if(!detaileds.isEmpty()) {
|
if (!detaileds.isEmpty()) {
|
||||||
for (SampleApplyDetailed detail : detaileds) {
|
for (SampleApplyDetailed detail : detaileds) {
|
||||||
detail.setStatus(1);//没有传值的为不通过
|
detail.setStatus(1);//没有传值的为不通过
|
||||||
detailedMapper.updateById(detail);
|
detailedMapper.updateById(detail);
|
||||||
}
|
}
|
||||||
sampleApply.setApplicationStatus(ApplyStatus.SECOND_LEVEL);
|
sampleApply.setApplicationStatus(ApplyStatus.SECOND_LEVEL);
|
||||||
}else {
|
} else {
|
||||||
sampleApply.setApplicationStatus(ApplyStatus.FIRST_LEVEL_FAIL);
|
sampleApply.setApplicationStatus(ApplyStatus.FIRST_LEVEL_FAIL);
|
||||||
for (ReviewSampleDetail detail:sampleDetails) {
|
for (ReviewSampleDetail detail : sampleDetails) {
|
||||||
//申请不通过的要恢复状态
|
//申请不通过的要恢复状态
|
||||||
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
||||||
if(sampleApply.getApplyType()==2){
|
if (sampleApply.getApplyType() == 2) {
|
||||||
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(),2);
|
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(), 2);
|
||||||
}else {
|
} else {
|
||||||
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(),1);
|
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
//循环有的
|
//循环有的
|
||||||
for (ReviewSampleDetail detail:sampleDetails) {
|
for (ReviewSampleDetail detail : sampleDetails) {
|
||||||
//传值为通过样本
|
//传值为通过样本
|
||||||
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
||||||
sampleApplyDetailed.setStatus(1);
|
sampleApplyDetailed.setStatus(1);
|
||||||
@@ -119,7 +125,7 @@ public class ReviewApprovalServiceImpl implements ReviewApprovalService {
|
|||||||
//循环没有的
|
//循环没有的
|
||||||
QueryWrapper<SampleApplyDetailed> not = queryWrapper.notIn("id", idList);
|
QueryWrapper<SampleApplyDetailed> not = queryWrapper.notIn("id", idList);
|
||||||
List<SampleApplyDetailed> detaileds = detailedMapper.selectList(not);
|
List<SampleApplyDetailed> detaileds = detailedMapper.selectList(not);
|
||||||
if(!detaileds.isEmpty()) {
|
if (!detaileds.isEmpty()) {
|
||||||
for (SampleApplyDetailed detail : detaileds) {
|
for (SampleApplyDetailed detail : detaileds) {
|
||||||
detail.setStatus(-1);//没有传值的为不通过
|
detail.setStatus(-1);//没有传值的为不通过
|
||||||
detailedMapper.updateById(detail);
|
detailedMapper.updateById(detail);
|
||||||
@@ -160,28 +166,30 @@ public class ReviewApprovalServiceImpl implements ReviewApprovalService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
sampleApplyMapper.updateById(sampleApply);
|
sampleApplyService.updateById(sampleApply);
|
||||||
|
|
||||||
return sampleApprovalService.getDetail(dto.getApplyId());
|
return sampleApprovalService.getDetail(dto.getApplyId());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 二级审核
|
* 二级审核
|
||||||
|
*
|
||||||
* @param dto
|
* @param dto
|
||||||
|
* @param sampleApply
|
||||||
* @param dlpUser
|
* @param dlpUser
|
||||||
* @return
|
* @returnge
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public SampleApplyVO secondaryAudit(ReviewApprovalDTO dto, DLPUser dlpUser) {
|
public SampleApplyVO secondaryAudit(ReviewApprovalDTO dto, SampleApply sampleApply, DLPUser dlpUser) {
|
||||||
//查找对应的申请
|
//查找对应的申请
|
||||||
SampleApply sampleApply = sampleApplyMapper.selectById(dto.getApplyId());
|
// SampleApply sampleApply = sampleApplyMapper.selectById(dto.getApplyId());
|
||||||
if(sampleApply == null){
|
// if(sampleApply == null){
|
||||||
throw new RuntimeException(String.format("当前数据不存在"));
|
// throw new RuntimeException(String.format("当前数据不存在"));
|
||||||
} else if (sampleApply.getApplyType()==1) {//外带申请
|
// } else if (sampleApply.getApplyType()==1) {//外带申请
|
||||||
if(sampleApply.getApplicationStatus()!=ApplyStatus.SECOND_LEVEL){
|
// if(sampleApply.getApplicationStatus()!=ApplyStatus.SECOND_LEVEL){
|
||||||
throw new RuntimeException(String.format("当前数据不是待二级审核状态"));
|
// throw new RuntimeException(String.format("当前数据不是待二级审核状态"));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
//判断无误
|
//判断无误
|
||||||
sampleApply.setSecondaryAuditDate(LocalDateTime.now());//时间
|
sampleApply.setSecondaryAuditDate(LocalDateTime.now());//时间
|
||||||
sampleApply.setSecondaryAuditOpinion(dto.getOpinion());//意见
|
sampleApply.setSecondaryAuditOpinion(dto.getOpinion());//意见
|
||||||
@@ -189,15 +197,15 @@ public class ReviewApprovalServiceImpl implements ReviewApprovalService {
|
|||||||
|
|
||||||
|
|
||||||
QueryWrapper<SampleApplyDetailed> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SampleApplyDetailed> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("apply_id",dto.getApplyId());
|
queryWrapper.eq("apply_id", dto.getApplyId());
|
||||||
List<SampleApplyDetailed> applyDetailed = detailedMapper.selectList(queryWrapper);
|
List<SampleApplyDetailed> applyDetailed = detailedMapper.selectList(queryWrapper);
|
||||||
ArrayList<String> idList = new ArrayList<>();
|
ArrayList<String> idList = new ArrayList<>();
|
||||||
List<ReviewSampleDetail> sampleDetails = dto.getReviewSampleDetails();
|
List<ReviewSampleDetail> sampleDetails = dto.getReviewSampleDetails();
|
||||||
|
|
||||||
if(dto.getStatus()==-1){//点击不通过按钮;勾选的数据为不通过
|
if (dto.getStatus() == -1) {//点击不通过按钮;勾选的数据为不通过
|
||||||
|
|
||||||
//循环有的
|
//循环有的
|
||||||
for (ReviewSampleDetail detail:sampleDetails) {
|
for (ReviewSampleDetail detail : sampleDetails) {
|
||||||
//传值为不通过样本
|
//传值为不通过样本
|
||||||
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
||||||
sampleApplyDetailed.setStatus(-1);
|
sampleApplyDetailed.setStatus(-1);
|
||||||
@@ -207,28 +215,28 @@ public class ReviewApprovalServiceImpl implements ReviewApprovalService {
|
|||||||
//循环没有的
|
//循环没有的
|
||||||
QueryWrapper<SampleApplyDetailed> not = queryWrapper.notIn("id", idList);
|
QueryWrapper<SampleApplyDetailed> not = queryWrapper.notIn("id", idList);
|
||||||
List<SampleApplyDetailed> detaileds = detailedMapper.selectList(not);
|
List<SampleApplyDetailed> detaileds = detailedMapper.selectList(not);
|
||||||
if(!detaileds.isEmpty()) {
|
if (!detaileds.isEmpty()) {
|
||||||
for (SampleApplyDetailed detail : detaileds) {
|
for (SampleApplyDetailed detail : detaileds) {
|
||||||
detail.setStatus(1);//没有传值的为不通过
|
detail.setStatus(1);//没有传值的为不通过
|
||||||
detailedMapper.updateById(detail);
|
detailedMapper.updateById(detail);
|
||||||
}
|
}
|
||||||
sampleApply.setApplicationStatus(ApplyStatus.PENDING_APPROVAL);
|
sampleApply.setApplicationStatus(ApplyStatus.PENDING_APPROVAL);
|
||||||
}else {
|
} else {
|
||||||
sampleApply.setApplicationStatus(ApplyStatus.SECOND_LEVEL_FAIL);
|
sampleApply.setApplicationStatus(ApplyStatus.SECOND_LEVEL_FAIL);
|
||||||
for (ReviewSampleDetail detail:sampleDetails) {
|
for (ReviewSampleDetail detail : sampleDetails) {
|
||||||
//申请不通过的要恢复状态
|
//申请不通过的要恢复状态
|
||||||
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
||||||
if(sampleApply.getApplyType()==2){
|
if (sampleApply.getApplyType() == 2) {
|
||||||
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(),2);
|
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(), 2);
|
||||||
}else {
|
} else {
|
||||||
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(),1);
|
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
//循环有的
|
//循环有的
|
||||||
for (ReviewSampleDetail detail:sampleDetails) {
|
for (ReviewSampleDetail detail : sampleDetails) {
|
||||||
//传值为通过样本
|
//传值为通过样本
|
||||||
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
||||||
sampleApplyDetailed.setStatus(1);
|
sampleApplyDetailed.setStatus(1);
|
||||||
@@ -238,7 +246,7 @@ public class ReviewApprovalServiceImpl implements ReviewApprovalService {
|
|||||||
//循环没有的
|
//循环没有的
|
||||||
QueryWrapper<SampleApplyDetailed> not = queryWrapper.notIn("id", idList);
|
QueryWrapper<SampleApplyDetailed> not = queryWrapper.notIn("id", idList);
|
||||||
List<SampleApplyDetailed> detaileds = detailedMapper.selectList(not);
|
List<SampleApplyDetailed> detaileds = detailedMapper.selectList(not);
|
||||||
if(detaileds!=null) {
|
if (detaileds != null) {
|
||||||
for (SampleApplyDetailed detail : detaileds) {
|
for (SampleApplyDetailed detail : detaileds) {
|
||||||
detail.setStatus(-1);//没有传值的为不通过
|
detail.setStatus(-1);//没有传值的为不通过
|
||||||
detailedMapper.updateById(detail);
|
detailedMapper.updateById(detail);
|
||||||
@@ -246,22 +254,30 @@ public class ReviewApprovalServiceImpl implements ReviewApprovalService {
|
|||||||
}
|
}
|
||||||
sampleApply.setApplicationStatus(ApplyStatus.PENDING_APPROVAL);
|
sampleApply.setApplicationStatus(ApplyStatus.PENDING_APPROVAL);
|
||||||
}
|
}
|
||||||
sampleApplyMapper.updateById(sampleApply);
|
sampleApplyService.updateById(sampleApply);
|
||||||
return sampleApprovalService.getDetail(dto.getApplyId());
|
return sampleApprovalService.getDetail(dto.getApplyId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批样本申请
|
||||||
|
*
|
||||||
|
* @param dto 审批信息DTO
|
||||||
|
* @param sampleApply 样本申请信息
|
||||||
|
* @param dlpUser 审批人用户信息
|
||||||
|
* @return 审批后的样本申请视图对象
|
||||||
|
* @throws RuntimeException 如果数据不存在或不是待审批状态,则抛出异常
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public SampleApplyVO approval(ReviewApprovalDTO dto, DLPUser dlpUser) {
|
public SampleApplyVO approval(ReviewApprovalDTO dto, SampleApply sampleApply, DLPUser dlpUser) {
|
||||||
//查找对应的申请
|
//查找对应的申请
|
||||||
SampleApply sampleApply = sampleApplyMapper.selectById(dto.getApplyId());
|
// SampleApply sampleApply = sampleApplyMapper.selectById(dto.getApplyId());
|
||||||
if(sampleApply == null){
|
// if(sampleApply == null){
|
||||||
throw new RuntimeException(String.format("当前数据不存在"));
|
// throw new RuntimeException(String.format("当前数据不存在"));
|
||||||
}else if(sampleApply.getApplicationStatus()!=ApplyStatus.PENDING_APPROVAL){
|
// }else if(sampleApply.getApplicationStatus()!=ApplyStatus.PENDING_APPROVAL){
|
||||||
throw new RuntimeException(String.format("当前数据不是待审批状态"));
|
// throw new RuntimeException(String.format("当前数据不是待审批状态"));
|
||||||
}
|
// }
|
||||||
//判断无误
|
//判断无误
|
||||||
sampleApply.setApprovalDate(LocalDateTime.now());//时间
|
sampleApply.setApprovalDate(LocalDateTime.now());//时间
|
||||||
sampleApply.setApproverOpinion(dto.getOpinion());//意见
|
sampleApply.setApproverOpinion(dto.getOpinion());//意见
|
||||||
@@ -269,22 +285,22 @@ public class ReviewApprovalServiceImpl implements ReviewApprovalService {
|
|||||||
|
|
||||||
|
|
||||||
QueryWrapper<SampleApplyDetailed> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SampleApplyDetailed> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("apply_id",dto.getApplyId());
|
queryWrapper.eq("apply_id", dto.getApplyId());
|
||||||
List<SampleApplyDetailed> applyDetailed = detailedMapper.selectList(queryWrapper);
|
List<SampleApplyDetailed> applyDetailed = detailedMapper.selectList(queryWrapper);
|
||||||
ArrayList<String> idList = new ArrayList<>();
|
ArrayList<String> idList = new ArrayList<>();
|
||||||
List<ReviewSampleDetail> sampleDetails = dto.getReviewSampleDetails();
|
List<ReviewSampleDetail> sampleDetails = dto.getReviewSampleDetails();
|
||||||
|
|
||||||
if(dto.getStatus()==-1){//点击不通过按钮;勾选的数据为不通过
|
if (dto.getStatus() == -1) {//点击不通过按钮;勾选的数据为不通过
|
||||||
|
|
||||||
//循环有的
|
//循环有的
|
||||||
for (ReviewSampleDetail detail:sampleDetails) {
|
for (ReviewSampleDetail detail : sampleDetails) {
|
||||||
//传值为不通过样本
|
//传值为不通过样本
|
||||||
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
||||||
sampleApplyDetailed.setStatus(-1);
|
sampleApplyDetailed.setStatus(-1);
|
||||||
if(sampleApply.getApplyType()==2){
|
if (sampleApply.getApplyType() == 2) {
|
||||||
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(),2);
|
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(), 2);
|
||||||
}else {
|
} else {
|
||||||
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(),1);
|
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(), 1);
|
||||||
}
|
}
|
||||||
detailedMapper.updateById(sampleApplyDetailed);
|
detailedMapper.updateById(sampleApplyDetailed);
|
||||||
idList.add(detail.getId());
|
idList.add(detail.getId());
|
||||||
@@ -292,63 +308,226 @@ public class ReviewApprovalServiceImpl implements ReviewApprovalService {
|
|||||||
//循环没有的
|
//循环没有的
|
||||||
QueryWrapper<SampleApplyDetailed> not = queryWrapper.notIn("id", idList);
|
QueryWrapper<SampleApplyDetailed> not = queryWrapper.notIn("id", idList);
|
||||||
List<SampleApplyDetailed> detaileds = detailedMapper.selectList(not);
|
List<SampleApplyDetailed> detaileds = detailedMapper.selectList(not);
|
||||||
if(!detaileds.isEmpty()) {
|
if (!detaileds.isEmpty()) {
|
||||||
for (SampleApplyDetailed detail : detaileds) {
|
for (SampleApplyDetailed detail : detaileds) {
|
||||||
detail.setStatus(1);//没有传值的为不通过
|
detail.setStatus(1);//没有传值的为不通过
|
||||||
detailedMapper.updateById(detail);
|
detailedMapper.updateById(detail);
|
||||||
if(sampleApply.getApplyType()==2){//如果是销毁申请需要改变预警状态
|
if (sampleApply.getApplyType() == 2) {//如果是销毁申请需要改变预警状态
|
||||||
UpdateWrapper<SampleStorage> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<SampleStorage> updateWrapper = new UpdateWrapper<>();
|
||||||
updateWrapper.eq("sample_id",detail.getSampleId());
|
updateWrapper.eq("sample_id", detail.getSampleId());
|
||||||
updateWrapper.set("early_warning",2);//销毁预警状态修改为2--通过审核审批
|
updateWrapper.set("early_warning", 2);//销毁预警状态修改为2--通过审核审批
|
||||||
sampleStorageMapper.update(null,updateWrapper);
|
sampleStorageMapper.update(null, updateWrapper);
|
||||||
transferFeignService.updateStatus(detail.getSampleId(),7);//样本状态为待销毁
|
transferFeignService.updateStatus(detail.getSampleId(), 7);//样本状态为待销毁
|
||||||
}else {
|
} else {
|
||||||
//外带申请需要恢复状态
|
//外带申请需要恢复状态
|
||||||
transferFeignService.updateStatus(detail.getSampleId(),1);
|
transferFeignService.updateStatus(detail.getSampleId(), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sampleApply.setApplicationStatus(ApplyStatus.APPROVED);
|
sampleApply.setApplicationStatus(ApplyStatus.APPROVED);
|
||||||
}else {
|
} else {
|
||||||
sampleApply.setApplicationStatus(ApplyStatus.APPROVAL_FAILED);
|
sampleApply.setApplicationStatus(ApplyStatus.APPROVAL_FAILED);
|
||||||
}
|
}
|
||||||
}else {//点击通过按钮
|
} else {//点击通过按钮
|
||||||
//循环有的
|
//循环有的
|
||||||
for (ReviewSampleDetail detail:sampleDetails) {
|
for (ReviewSampleDetail detail : sampleDetails) {
|
||||||
//传值为通过样本
|
//传值为通过样本
|
||||||
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
SampleApplyDetailed sampleApplyDetailed = detailedMapper.selectById(detail.getId());
|
||||||
sampleApplyDetailed.setStatus(1);
|
sampleApplyDetailed.setStatus(1);
|
||||||
detailedMapper.updateById(sampleApplyDetailed);
|
detailedMapper.updateById(sampleApplyDetailed);
|
||||||
idList.add(detail.getId());
|
idList.add(detail.getId());
|
||||||
|
|
||||||
if(sampleApply.getApplyType()==2){//如果是销毁申请需要改变预警状态
|
if (sampleApply.getApplyType() == 2) {//如果是销毁申请需要改变预警状态
|
||||||
UpdateWrapper<SampleStorage> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<SampleStorage> updateWrapper = new UpdateWrapper<>();
|
||||||
updateWrapper.eq("sample_id",sampleApplyDetailed.getSampleId());
|
updateWrapper.eq("sample_id", sampleApplyDetailed.getSampleId());
|
||||||
updateWrapper.set("early_warning",2);//销毁预警状态修改为2--通过审核审批
|
updateWrapper.set("early_warning", 2);//销毁预警状态修改为2--通过审核审批
|
||||||
sampleStorageMapper.update(null,updateWrapper);
|
sampleStorageMapper.update(null, updateWrapper);
|
||||||
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(),7);//样本状态为待销毁
|
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(), 7);//样本状态为待销毁
|
||||||
}else {
|
} else {
|
||||||
//外带申请需要恢复状态
|
//外带申请需要恢复状态
|
||||||
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(),1);
|
transferFeignService.updateStatus(sampleApplyDetailed.getSampleId(), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//循环没有的
|
//循环没有的
|
||||||
QueryWrapper<SampleApplyDetailed> not = queryWrapper.notIn("id", idList);
|
QueryWrapper<SampleApplyDetailed> not = queryWrapper.notIn("id", idList);
|
||||||
List<SampleApplyDetailed> detaileds = detailedMapper.selectList(not);
|
List<SampleApplyDetailed> detaileds = detailedMapper.selectList(not);
|
||||||
if(!detaileds.isEmpty()) {
|
if (!detaileds.isEmpty()) {
|
||||||
for (SampleApplyDetailed detail : detaileds) {
|
for (SampleApplyDetailed detail : detaileds) {
|
||||||
detail.setStatus(-1);//没有传值的为不通过
|
detail.setStatus(-1);//没有传值的为不通过
|
||||||
detailedMapper.updateById(detail);
|
detailedMapper.updateById(detail);
|
||||||
if(sampleApply.getApplyType()==2){
|
if (sampleApply.getApplyType() == 2) {
|
||||||
transferFeignService.updateStatus(detail.getSampleId(),2);
|
transferFeignService.updateStatus(detail.getSampleId(), 2);
|
||||||
}else {
|
} else {
|
||||||
transferFeignService.updateStatus(detail.getSampleId(),1);
|
transferFeignService.updateStatus(detail.getSampleId(), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sampleApply.setApplicationStatus(ApplyStatus.APPROVED);
|
sampleApply.setApplicationStatus(ApplyStatus.APPROVED);
|
||||||
}
|
}
|
||||||
sampleApplyMapper.updateById(sampleApply);
|
sampleApplyService.updateById(sampleApply);
|
||||||
return sampleApprovalService.getDetail(dto.getApplyId());
|
return sampleApprovalService.getDetail(dto.getApplyId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取审核分页列表
|
||||||
|
*
|
||||||
|
* 根据查询参数和当前用户的权限,返回对应的审核分页列表。
|
||||||
|
*
|
||||||
|
* @param dto 查询申请DTO对象,包含分页和查询条件参数
|
||||||
|
* @param dlpUser 当前用户信息,用于判断权限
|
||||||
|
* @return 审核分页列表对象,包含查询结果和分页信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public IPage<SampleApplyVO> auditPage(QueryApplyDTO dto, DLPUser dlpUser) {
|
||||||
|
Page<SampleApply> page = new Page<>(dto.getCurrent(), dto.getSize());
|
||||||
|
QueryWrapper<SampleApply> queryWrapper = new QueryWrapper<>();
|
||||||
|
|
||||||
|
Set<String> permissions = dlpUser.getPermissions();//判断权限
|
||||||
|
/** 20241219 因为当一个用户同时拥有三个权限时,查询条件会发生冲突
|
||||||
|
* 目前想通过一个list 收集要查询的状态,最后in查询
|
||||||
|
*/
|
||||||
|
List<Integer> statusList = new ArrayList<>();
|
||||||
|
List<Integer> geStatusList = new ArrayList<>();
|
||||||
|
List<Integer> leStatusList = new ArrayList<>();
|
||||||
|
Boolean isApproved = false;
|
||||||
|
//System.out.println(permissions);
|
||||||
|
for (String permission : permissions) {
|
||||||
|
switch (permission) {
|
||||||
|
case "imr_sample_apply_first_audit":
|
||||||
|
handleFirstAudit(dto, statusList, geStatusList, leStatusList);
|
||||||
|
break;
|
||||||
|
case "imr_sample_apply_secondary_audit":
|
||||||
|
handleSecondaryAudit(dto, statusList, geStatusList, leStatusList);
|
||||||
|
break;
|
||||||
|
case "imr_sample_apply_approval":
|
||||||
|
handleApproval(dto, statusList, geStatusList, leStatusList);
|
||||||
|
isApproved = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// 其他权限的处理,如果有需要
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (dto.getStatus() != null) {
|
||||||
|
switch (dto.getStatus()) {
|
||||||
|
case 0:
|
||||||
|
queryWrapper.le("application_status", Collections.min(leStatusList))
|
||||||
|
.or()
|
||||||
|
.ge("application_status", Collections.max(geStatusList));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
queryWrapper.ge("application_status", Collections.max(geStatusList));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
queryWrapper.le("application_status", Collections.min(leStatusList));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
queryWrapper.in(CollUtil.isNotEmpty(statusList), "application_status", statusList)
|
||||||
|
.eq(!isApproved, "apply_type", 1) // 没有审批权限则只查询外出申请的
|
||||||
|
.between(dto.getBeginDate() != null && dto.getFinishDate() != null, "application_date", dto.getBeginDate(), dto.getFinishDate())
|
||||||
|
.orderByDesc("application_date");
|
||||||
|
IPage<SampleApplyVO> applyVOPage = sampleApplyService.getApplyPage(
|
||||||
|
page,
|
||||||
|
queryWrapper
|
||||||
|
);
|
||||||
|
return applyVOPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理审批状态的逻辑
|
||||||
|
*
|
||||||
|
* @param dto 查询申请DTO对象,包含状态查询参数
|
||||||
|
* @param statusList 待审批状态的列表,用于构造查询条件
|
||||||
|
* @param geStatus 大于等于状态的列表,用于构造查询条件
|
||||||
|
* @param leStatus 小于等于状态的列表,用于构造查询条件
|
||||||
|
*/
|
||||||
|
private void handleApproval(QueryApplyDTO dto, List<Integer> statusList, List<Integer> geStatus, List<Integer> leStatus) {
|
||||||
|
if(dto.getStatus()==null){
|
||||||
|
statusList.add(ApplyStatus.PENDING_APPROVAL.getStatus());
|
||||||
|
}else {
|
||||||
|
if(dto.getStatus()==0){
|
||||||
|
leStatus.add(ApplyStatus.APPROVAL_FAILED.getStatus());
|
||||||
|
geStatus.add(ApplyStatus.APPROVED.getStatus());
|
||||||
|
}else {
|
||||||
|
//通过status==1/不通过status==-1
|
||||||
|
if(dto.getStatus()==1){
|
||||||
|
geStatus.add(ApplyStatus.APPROVED.getStatus());
|
||||||
|
}
|
||||||
|
if(dto.getStatus()==-1){
|
||||||
|
leStatus.add(ApplyStatus.APPROVAL_FAILED.getStatus());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理二级审核的逻辑
|
||||||
|
*
|
||||||
|
* @param dto 查询申请DTO对象,包含状态查询参数
|
||||||
|
* @param statusList 待二级审核状态的列表,用于构造查询条件
|
||||||
|
* @param geStatus 大于等于状态的列表,用于构造查询条件
|
||||||
|
* @param leStatus 小于等于状态的列表,用于构造查询条件
|
||||||
|
*
|
||||||
|
* 此方法用于处理二级审核员的查询逻辑。如果dto中的状态为null,则表示查询所有待二级审核的申请。
|
||||||
|
* 如果dto中的状态为0,则表示查询所有二级审核状态的申请,包括通过和未通过的情况。
|
||||||
|
* 如果dto中的状态为1,则表示查询所有已通过二级审核的申请。
|
||||||
|
* 如果dto中的状态为-1,则表示查询所有未通过二级审核的申请。
|
||||||
|
* 注意:二级审核员不应处理销毁申请。
|
||||||
|
*/
|
||||||
|
private void handleSecondaryAudit(QueryApplyDTO dto, List<Integer> statusList, List<Integer> geStatus, List<Integer> leStatus) {
|
||||||
|
//二级审核员(不应该有销毁申请)
|
||||||
|
if(dto.getStatus()==null){
|
||||||
|
statusList.add(ApplyStatus.SECOND_LEVEL.getStatus());
|
||||||
|
}else {
|
||||||
|
if(dto.getStatus()==0){
|
||||||
|
//返回全部
|
||||||
|
leStatus.add(ApplyStatus.SECOND_LEVEL_FAIL.getStatus());
|
||||||
|
geStatus.add(ApplyStatus.PENDING_APPROVAL.getStatus());
|
||||||
|
}else {
|
||||||
|
//通过status==1/不通过status==-1
|
||||||
|
if(dto.getStatus()==1){
|
||||||
|
geStatus.add(ApplyStatus.PENDING_APPROVAL.getStatus());
|
||||||
|
}
|
||||||
|
if(dto.getStatus()==-1){
|
||||||
|
leStatus.add(ApplyStatus.SECOND_LEVEL_FAIL.getStatus());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理一级审核的逻辑
|
||||||
|
*
|
||||||
|
* @param dto 查询申请DTO对象,包含状态查询参数
|
||||||
|
* @param statusList 待一级审核状态的列表,用于构造查询条件
|
||||||
|
* @param geStatus 大于等于状态的列表,用于构造查询条件
|
||||||
|
* @param leStatus 小于等于状态的列表,用于构造查询条件
|
||||||
|
*
|
||||||
|
* 如果dto中的状态为null,则表示查询所有待一级审核的申请(不包含销毁申请)。
|
||||||
|
* 如果dto中的状态不为null,则表示查询特定状态的申请:
|
||||||
|
* - 如果状态为0,表示查询所有一级审核状态的申请,包括通过和未通过的情况。
|
||||||
|
* - 如果状态为1,表示查询所有已通过一级审核的申请。
|
||||||
|
* - 如果状态为-1,表示查询所有未通过一级审核的申请。
|
||||||
|
*/
|
||||||
|
private void handleFirstAudit(QueryApplyDTO dto, List<Integer> statusList, List<Integer> geStatus, List<Integer> leStatus) {
|
||||||
|
if(dto.getStatus() == null){//审核初页面(不应该有销毁申请)
|
||||||
|
statusList.add(ApplyStatus.FIRST_LEVEL.getStatus());
|
||||||
|
}else {//点击通过页面时
|
||||||
|
if(dto.getStatus()==0){
|
||||||
|
//返回全部
|
||||||
|
leStatus.add(ApplyStatus.FIRST_LEVEL_FAIL.getStatus());
|
||||||
|
geStatus.add(ApplyStatus.SECOND_LEVEL.getStatus());
|
||||||
|
} else {
|
||||||
|
//通过status==1/不通过status==-1
|
||||||
|
if(dto.getStatus()==1){
|
||||||
|
geStatus.add(ApplyStatus.SECOND_LEVEL.getStatus());
|
||||||
|
}
|
||||||
|
if(dto.getStatus()==-1){
|
||||||
|
leStatus.add(ApplyStatus.FIRST_LEVEL_FAIL.getStatus());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user