Merge branch 'master' into 'pro'

合并请求

See merge request eshop/biz_service_ebtp_project!32
This commit is contained in:
代兴成
2021-03-31 08:42:42 +08:00
11 changed files with 106 additions and 19 deletions

View File

@ -403,6 +403,11 @@ public class ProjectCommonUtil {
*/ */
public static final int RE_EVALUATION_STATUS_2 = 2; public static final int RE_EVALUATION_STATUS_2 = 2;
/**
* 重新评审 3 重评生效
*/
public static final int RE_EVALUATION_STATUS_3 = 3;
/** /**
* 重新评审 9 审批不通过 * 重新评审 9 审批不通过
*/ */

View File

@ -167,6 +167,8 @@ public enum ProjectExceptionEnum implements BusinessExceptionAssert {
FRAME_EXCEPTION_PROJECT_SECTION_NOT_STATUS(110074, "项目标段信息已经异常处理不可以进行操作!"), FRAME_EXCEPTION_PROJECT_SECTION_NOT_STATUS(110074, "项目标段信息已经异常处理不可以进行操作!"),
FRAME_EXCEPTION_PROJECT_SUPP_REL_VO_LIST_EMPTY(110075, "供应商ID不能为空"), FRAME_EXCEPTION_PROJECT_SUPP_REL_VO_LIST_EMPTY(110075, "供应商ID不能为空"),
FRAME_EXCEPTION_PROJECT_CHECK_STATUS_ERROR(110079, "调用采购系统校验是否可以发起接口错误"),
; ;
/** /**

View File

@ -9,6 +9,9 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
/** /**
* 评审 * 评审
* @author daixc * @author daixc
@ -34,4 +37,12 @@ public interface EbtpRsmsApi {
@GetMapping("/v1/jury/copy") @GetMapping("/v1/jury/copy")
BaseResponse<Boolean> copyJury(@RequestParam(name = "oldRoomId") String oldRoomId, BaseResponse<Boolean> copyJury(@RequestParam(name = "oldRoomId") String oldRoomId,
@RequestParam(name = "newRoomId") String newRoomId); @RequestParam(name = "newRoomId") String newRoomId);
/**
* 根据标段ID集合查询是否能够发起异常处理
* @param bsIds 标段id集合
* @return 返回结果
*/
@PostMapping("/v1/reviewresult/getToExceptionByBsId")
BaseResponse<Map<String,Boolean>> getToExceptionByBsId(@RequestBody List<String> bsIds);
} }

View File

@ -66,4 +66,17 @@ public class ProjectSectionExceptionController{
return BaseResponse.success(projectSectionException); return BaseResponse.success(projectSectionException);
} }
/**
* 获取标段是否有异常信息
* @param sectionId 标段id
* @return 返回结果 ture 没有异常信息 false 有异常信息
*/
@ApiOperation("查询标段是否有异常信息")
@GetMapping ("/getBySectionId/{sectionId}")
public BaseResponse<Boolean> getBySectionId(@ApiParam(value = "标段ID", required = true) @PathVariable String sectionId){
return BaseResponse.success(projectSectionExceptionService.getBySectionId(sectionId));
}
} }

View File

@ -18,4 +18,12 @@ public interface IProjectSectionExceptionService extends IBaseService<ProjectSec
* @return * @return
*/ */
boolean deleteByExceptionId(String exceptionId); boolean deleteByExceptionId(String exceptionId);
/**
* 获取标段是否有异常信息
* @param sectionId 标段id
* @return 返回结果
*/
boolean getBySectionId(String sectionId);
} }

View File

@ -1,6 +1,7 @@
package com.chinaunicom.mall.ebtp.project.projectexception.service.impl; package com.chinaunicom.mall.ebtp.project.projectexception.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl;
import com.chinaunicom.mall.ebtp.project.projectexception.dao.ProjectSectionExceptionMapper; import com.chinaunicom.mall.ebtp.project.projectexception.dao.ProjectSectionExceptionMapper;
import com.chinaunicom.mall.ebtp.project.projectexception.entity.ProjectSectionException; import com.chinaunicom.mall.ebtp.project.projectexception.entity.ProjectSectionException;
@ -24,4 +25,11 @@ public class ProjectSectionExceptionServiceImpl extends BaseServiceImpl<ProjectS
public boolean deleteByExceptionId(String exceptionId) { public boolean deleteByExceptionId(String exceptionId) {
return exceptionMapper.deleteByExceptionId(exceptionId) > 0; return exceptionMapper.deleteByExceptionId(exceptionId) > 0;
} }
@Override
public boolean getBySectionId(String sectionId) {
LambdaQueryWrapper<ProjectSectionException> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProjectSectionException::getSectionId,sectionId);
return this.count(queryWrapper) <= 0;
}
} }

View File

@ -215,4 +215,17 @@ public class ProjectReEvaluationController {
return BaseResponse.success(projectReEvaluationService.findTraceDetail(instanceId)); return BaseResponse.success(projectReEvaluationService.findTraceDetail(instanceId));
} }
/**
* 项目重评生效
* @param id 主键ID
* @return 返回结果
*/
@ApiOperation("项目重评生效")
@GetMapping("/achieve/{id}")
@PreAuthorize("hasAnyAuthority('ebtp-purchase','ebtp-agency-project-manager')")
public BaseResponse<Boolean> achieve(@ApiParam(value = "流程实例id", required = true) @PathVariable("id") String id) {
return BaseResponse.success(projectReEvaluationService.achieve(id));
}
} }

View File

@ -105,4 +105,11 @@ public interface IProjectReEvaluationService extends IBaseService<ProjectReEvalu
* @return 返回结果 * @return 返回结果
*/ */
TraceDetail findTraceDetail(String instanceId); TraceDetail findTraceDetail(String instanceId);
/**
* 项目重评生效
* @param id 主键ID
* @return 返回结果
*/
boolean achieve(String id);
} }

View File

@ -2,6 +2,7 @@ package com.chinaunicom.mall.ebtp.project.projectreevaluation.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.exceptions.ExceptionUtil;
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;
@ -181,20 +182,21 @@ public class ProjectReEvaluationServiceImpl extends BaseServiceImpl<ProjectReEva
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean submitForApproval(String id) { public boolean submitForApproval(String id) {
// boolean result = updateStatus(id,ProjectCommonUtil.RE_EVALUATION_STATUS_0,ProjectCommonUtil.RE_EVALUATION_STATUS_2);
// initSection(id);
//1 去采购系统校验子项目信息是否发生改变 如果发生改变不可以重新评审 //1 去采购系统校验子项目信息是否发生改变 如果发生改变不可以重新评审
ProjectReEvaluation evaluation = this.getById(id); ProjectReEvaluation evaluation = this.getById(id);
ProjectSection section = sectionService.getById(evaluation.getSectionId()); ProjectSection section = sectionService.getById(evaluation.getSectionId());
log.info("重评校验子项目信息请求参数 子项目ID{}",section.getSubprojectId()); try {
BaseResponse<Boolean> baseResponse = mallResuApi.findStatusByPurpIdForEval(Long.parseLong(section.getSubprojectId())); log.info("重评校验子项目信息请求参数 子项目ID{}",section.getSubprojectId());
log.info("重评校验子项目信息返回结果:{}",JsonUtils.objectToJson(baseResponse)); BaseResponse<Boolean> baseResponse = mallResuApi.findStatusByPurpIdForEval(Long.parseLong(section.getSubprojectId()));
if(!baseResponse.isSuccess()){ log.info("重评校验子项目信息返回结果:{}",JsonUtils.objectToJson(baseResponse));
CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValidName(baseResponse.getMessage(),!baseResponse.isSuccess()); if(!baseResponse.isSuccess()){
} CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValidName(baseResponse.getMessage(),!baseResponse.isSuccess());
if(!baseResponse.getData()){ }
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_CHECK_STATUS_ERROR.throwException(); if(!baseResponse.getData()){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_CHECK_STATUS_ERROR.throwException();
}
}catch (Exception e){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_CHECK_STATUS_ERROR.throwException();
} }
//3、调用流程中心 发起重新评审流程 //3、调用流程中心 发起重新评审流程
@ -213,12 +215,10 @@ public class ProjectReEvaluationServiceImpl extends BaseServiceImpl<ProjectReEva
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class,timeoutMills = 60000 * 2)
public boolean callbackApproval(WasUpdateBizDTO dto) { public boolean callbackApproval(WasUpdateBizDTO dto) {
boolean result = false; boolean result = false;
if(StringUtils.equals(EbpProjectCommonUtil.CALLBACK_APPROVAL_STATUS_YES,dto.getAuditState())){ if(StringUtils.equals(EbpProjectCommonUtil.CALLBACK_APPROVAL_STATUS_YES,dto.getAuditState())){
result = updateStatus(dto.getId(),ProjectCommonUtil.RE_EVALUATION_STATUS_1,ProjectCommonUtil.RE_EVALUATION_STATUS_2); result = updateStatus(dto.getId(),ProjectCommonUtil.RE_EVALUATION_STATUS_1,ProjectCommonUtil.RE_EVALUATION_STATUS_2);
initSection(dto.getId());
}else if(StringUtils.equals(EbpProjectCommonUtil.CALLBACK_APPROVAL_STATUS_NO,dto.getAuditState())){ }else if(StringUtils.equals(EbpProjectCommonUtil.CALLBACK_APPROVAL_STATUS_NO,dto.getAuditState())){
result = updateStatus(dto.getId(),ProjectCommonUtil.RE_EVALUATION_STATUS_1,ProjectCommonUtil.RE_EVALUATION_STATUS_9); result = updateStatus(dto.getId(),ProjectCommonUtil.RE_EVALUATION_STATUS_1,ProjectCommonUtil.RE_EVALUATION_STATUS_9);
} }
@ -296,7 +296,7 @@ public class ProjectReEvaluationServiceImpl extends BaseServiceImpl<ProjectReEva
/** /**
* 校验发起审批的标段所处流程是否正确 状态是否正确 * 校验发起审批的标段所处流程是否正确 状态是否正确
* 只有当标段所处定标环节才可以重新评标 * 只有当标段所处定标环节才可以重新评标
* 如果重新评审数据有审批中 初始化 不可以新增 只能修改或进行评审 * 如果重新评审数据有审批中 初始化 审批通过 不可以新增 只能修改或进行评审
* @param sectionId 标段ID * @param sectionId 标段ID
*/ */
@Override @Override
@ -320,10 +320,11 @@ public class ProjectReEvaluationServiceImpl extends BaseServiceImpl<ProjectReEva
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_SAVE_ERROR.throwException(); ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_SAVE_ERROR.throwException();
} }
//校验查询状态是 0 初始化 1 提交审批 2 审批通过 则不允许有新增操作
Integer[] statusArray = {ProjectCommonUtil.RE_EVALUATION_STATUS_0,ProjectCommonUtil.RE_EVALUATION_STATUS_1,ProjectCommonUtil.RE_EVALUATION_STATUS_2};
QueryWrapper<ProjectReEvaluation> evaluationQueryWrapper = new QueryWrapper<>(); QueryWrapper<ProjectReEvaluation> evaluationQueryWrapper = new QueryWrapper<>();
evaluationQueryWrapper.eq(ProjectReEvaluationField.SECTION_ID,sectionId); evaluationQueryWrapper.eq(ProjectReEvaluationField.SECTION_ID,sectionId);
evaluationQueryWrapper.and(wrapper -> wrapper.eq(ProjectReEvaluationField.STATUS,ProjectCommonUtil.RE_EVALUATION_STATUS_0).or().eq(ProjectReEvaluationField.STATUS,ProjectCommonUtil.RE_EVALUATION_STATUS_1)); evaluationQueryWrapper.in(ProjectReEvaluationField.STATUS, ListUtil.toList(statusArray));
int count = this.count(evaluationQueryWrapper); int count = this.count(evaluationQueryWrapper);
if(count > 0){ if(count > 0){
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_FIND_STATUS_ERROR.throwException(); ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_FIND_STATUS_ERROR.throwException();
@ -364,6 +365,14 @@ public class ProjectReEvaluationServiceImpl extends BaseServiceImpl<ProjectReEva
return response.getData(); return response.getData();
} }
@Override
@GlobalTransactional(timeoutMills = 60000 * 2)
public boolean achieve(String id) {
boolean result = updateStatus(id,ProjectCommonUtil.RE_EVALUATION_STATUS_2,ProjectCommonUtil.RE_EVALUATION_STATUS_3);
initSection(id);
return result;
}
/** /**
* 初始化标段信息 * 初始化标段信息

View File

@ -16,6 +16,7 @@ import com.chinaunicom.mall.ebtp.project.common.ProjectExceptionEnum;
import com.chinaunicom.mall.ebtp.project.dictchooseprocess.entity.DictChooseProcess; import com.chinaunicom.mall.ebtp.project.dictchooseprocess.entity.DictChooseProcess;
import com.chinaunicom.mall.ebtp.project.dictchooseprocess.service.IDictChooseProcessService; import com.chinaunicom.mall.ebtp.project.dictchooseprocess.service.IDictChooseProcessService;
import com.chinaunicom.mall.ebtp.project.feign.EbtpMallProcessApi; import com.chinaunicom.mall.ebtp.project.feign.EbtpMallProcessApi;
import com.chinaunicom.mall.ebtp.project.feign.EbtpRsmsApi;
import com.chinaunicom.mall.ebtp.project.feign.entity.BizAssessRoom; import com.chinaunicom.mall.ebtp.project.feign.entity.BizAssessRoom;
import com.chinaunicom.mall.ebtp.project.feign.entity.DictProjectConfig; import com.chinaunicom.mall.ebtp.project.feign.entity.DictProjectConfig;
import com.chinaunicom.mall.ebtp.project.feign.entity.SectionFlowVO; import com.chinaunicom.mall.ebtp.project.feign.entity.SectionFlowVO;
@ -29,14 +30,12 @@ import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSectionVO;
import com.chinaunicom.mall.ebtp.project.projectsection.service.IProjectSectionFlowService; import com.chinaunicom.mall.ebtp.project.projectsection.service.IProjectSectionFlowService;
import com.chinaunicom.mall.ebtp.project.projectsection.service.IProjectSectionService; import com.chinaunicom.mall.ebtp.project.projectsection.service.IProjectSectionService;
import io.seata.core.context.RootContext; import io.seata.core.context.RootContext;
import io.seata.spring.annotation.GlobalTransactional;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -67,6 +66,9 @@ public class ProjectSectionServiceImpl extends BaseServiceImpl<ProjectSectionMap
@Resource @Resource
private IDictChooseProcessService chooseProcessService; private IDictChooseProcessService chooseProcessService;
@Resource
private EbtpRsmsApi rsmsApi;
/** /**
* 默认轮次 * 默认轮次
*/ */
@ -495,6 +497,15 @@ public class ProjectSectionServiceImpl extends BaseServiceImpl<ProjectSectionMap
List<ProjectSectionVO> sectionVOList = projectSectionMapper.selectEditSectionBySave(projectId); List<ProjectSectionVO> sectionVOList = projectSectionMapper.selectEditSectionBySave(projectId);
sectionVOList = sectionVOList.stream().filter(n -> (n.getBusinessModule() > (isReviewMethod ? ProjectCommonUtil.BUSINESS_MODULE_2 : ProjectCommonUtil.BUSINESS_MODULE_7) sectionVOList = sectionVOList.stream().filter(n -> (n.getBusinessModule() > (isReviewMethod ? ProjectCommonUtil.BUSINESS_MODULE_2 : ProjectCommonUtil.BUSINESS_MODULE_7)
&& n.getStatus() < ProjectCommonUtil.BUSINESS_MODULE_12)).collect(Collectors.toList()); && n.getStatus() < ProjectCommonUtil.BUSINESS_MODULE_12)).collect(Collectors.toList());
//查询接口过滤已推送数据的标段信息
List<String> sectionIds = sectionVOList.stream().map(ProjectSectionVO::getId).collect(Collectors.toList());
BaseResponse<Map<String,Boolean>> baseResponse = rsmsApi.getToExceptionByBsId(sectionIds);
ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_NOT_FIND.customValidName(baseResponse.getMessage(),!baseResponse.isSuccess());
Map<String,Boolean> pushResultMap = baseResponse.getData();
sectionVOList = sectionVOList.stream().filter(n -> pushResultMap.get(n.getId())).collect(Collectors.toList());
return sectionVOList; return sectionVOList;
} }

View File

@ -112,7 +112,7 @@ mybatis-plus:
map-underscore-to-camel-case: true map-underscore-to-camel-case: true
auto-mapping-behavior: full auto-mapping-behavior: full
# 这个配置会将执行的sql打印出来在开发或测试的时候可以用 # 这个配置会将执行的sql打印出来在开发或测试的时候可以用
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath*:com/chinaunicom/mall/ebtp/**/mapper/*Mapper.xml mapper-locations: classpath*:com/chinaunicom/mall/ebtp/**/mapper/*Mapper.xml
global-config: global-config:
# 逻辑删除配置 # 逻辑删除配置