diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/controller/ProjectExceptionController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/controller/ProjectExceptionController.java index 04d0b81..d613a61 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/controller/ProjectExceptionController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/controller/ProjectExceptionController.java @@ -3,6 +3,7 @@ package com.chinaunicom.mall.ebtp.project.projectexception.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.baseoperlog.aop.OperLog; import com.chinaunicom.mall.ebtp.project.projectexception.entity.ProjectException; import com.chinaunicom.mall.ebtp.project.projectexception.entity.ProjectExceptionVO; import com.chinaunicom.mall.ebtp.project.projectexception.service.IProjectExceptionService; @@ -129,5 +130,23 @@ public class ProjectExceptionController{ return BaseResponse.success(projectExceptionService.getIsAgainPurchase(sectionId)); } + /** + * 项目中心提供异常调用接口 + * @param subprojectId 子项目ID + * @param projectPlanId 方案ID + * @param reason 异常原因 + * @return 返回结果 + */ + @OperLog("项目中心提供异常调用接口") + @ApiOperation("项目中心提供异常调用接口") + @PostMapping("initiateException") + public BaseResponse initiateException( + @ApiParam(value = "子项目ID", required = true) @RequestParam(name = "subprojectId") String subprojectId, + @ApiParam(value = "方案ID", required = true) @RequestParam(name = "projectPlanId") String projectPlanId, + @ApiParam(value = "异常原因") @RequestParam(name = "reason",required = false) String reason){ + + return BaseResponse.success(projectExceptionService.initiateException(subprojectId,projectPlanId,reason)); + } + } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/IProjectExceptionService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/IProjectExceptionService.java index 69f13cc..e8e284f 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/IProjectExceptionService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/IProjectExceptionService.java @@ -63,4 +63,13 @@ public interface IProjectExceptionService extends IBaseService * @return 返回结果 */ boolean getIsAgainPurchase(String sectionId); + + /** + * 项目中心提供异常调用接口 + * @param subprojectId 子项目ID + * @param projectPlanId 方案ID + * @param reason 异常原因 + * @return 返回结果 + */ + boolean initiateException(String subprojectId, String projectPlanId, String reason); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/impl/ProjectExceptionServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/impl/ProjectExceptionServiceImpl.java index a9d7a0c..1e27be6 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/impl/ProjectExceptionServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/impl/ProjectExceptionServiceImpl.java @@ -44,12 +44,14 @@ import com.chinaunicom.mall.ebtp.project.sectionsupplier.service.ISectionSupplie import io.seata.core.context.RootContext; import io.seata.spring.annotation.GlobalTransactional; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -188,6 +190,7 @@ public class ProjectExceptionServiceImpl extends BaseServiceImpl sectionList = projectSectionService.getList(projectSectionVO); //提取异常标段ID @@ -244,14 +247,25 @@ public class ProjectExceptionServiceImpl extends BaseServiceImpl sectionQueryWrapper = Wrappers.query(section); section = projectSectionService.getOne(sectionQueryWrapper); + + return extracted(section,inquiryNoticeVO.getReason()); + } + + /** + * 发起异常信息 + * @param section 标段ID + * @param reason 异常原因 + * @return 返回结果 + */ + private boolean extracted(ProjectSection section,String reason) { + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_NOT_FIND.customValid(null == section || StringUtils.isBlank(section.getId())); //校验标段是否处在归档阶段 ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_SECTION_BUSINESS_MODULE_ERROR.customValid(section.getBusinessModule() >= ProjectCommonUtil.BUSINESS_MODULE_12); if(ProjectCommonUtil.SECTION_STATUS_9 == section.getStatus()){ return true; } - - //2 插入异常信息和异常标段信息 + //1 插入异常信息和异常标段信息 ProjectExceptionVO exception = new ProjectExceptionVO(); exception.setProjectId(section.getProjectId()); exception.setId(PropertyUtils.getSnowflakeId()); @@ -259,7 +273,7 @@ public class ProjectExceptionServiceImpl extends BaseServiceImpl sectionList = projectSectionService.getList(projectSectionVO); + + //提取异常标段ID + List sectionExceptionIds = Arrays.asList(sectionArray); + + /*标段是否全部废止状态*/ + long isAllAbolish = sectionList.stream().filter(n -> !sectionExceptionIds.contains(n.getId())).count(); + + //2 修改项目和标段信息 + if(isAllAbolish <= 0){ + ProjectRecord projectRecord = new ProjectRecord(); + projectRecord.setStatus(ProjectCommonUtil.PROJECT_STATUS_9); + projectRecord.setId(exception.getProjectId()); + projectRecord.setTenderingContent(reason); + projectRecordService.updateById(projectRecord); + } section.setStatus(ProjectCommonUtil.SECTION_STATUS_9); projectSectionService.updateById(section); @@ -297,6 +325,13 @@ public class ProjectExceptionServiceImpl extends BaseServiceImpl