From db7e1237b5355dc83b4b39ddc5e34fe18777896c Mon Sep 17 00:00:00 2001 From: dxc Date: Wed, 10 Nov 2021 10:38:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=9B=91=E7=9D=A3=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E6=8E=A5=E5=8F=A3=E4=BB=A5=E5=8F=8A=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/common/ProjectCommonUtil.java | 5 ++ .../project/common/ProjectExceptionEnum.java | 2 + .../ebtp/project/feign/EbtpTenderApi.java | 12 ++- .../controller/ProjectRecordController.java | 24 +++++ .../service/IProjectRecordService.java | 14 +++ .../impl/ProjectRecordServiceImpl.java | 89 +++++++++++++++++++ 6 files changed, 143 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/common/ProjectCommonUtil.java b/src/main/java/com/chinaunicom/mall/ebtp/project/common/ProjectCommonUtil.java index e1b3221..1f6067d 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/project/common/ProjectCommonUtil.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/common/ProjectCommonUtil.java @@ -564,4 +564,9 @@ public class ProjectCommonUtil { //谈判 this.put("04",negotiationArray); }}; + + /** + * 集团编码 + */ + public static final String PROVINCES_BLOC = "001000"; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/common/ProjectExceptionEnum.java b/src/main/java/com/chinaunicom/mall/ebtp/project/common/ProjectExceptionEnum.java index 6172095..6721732 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/project/common/ProjectExceptionEnum.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/common/ProjectExceptionEnum.java @@ -175,6 +175,8 @@ public enum ProjectExceptionEnum implements BusinessExceptionAssert { FRAME_EXCEPTION_INQUIRY_ENTRUST_STATUS_ERROR(110081, "项目委托状态不正确(项目经理未接受)"), FRAME_EXCEPTION_PROJECT_ENTRUST_AGENCY_COMPANY_EMPTY(110082, "项目委托信息代理机构ID为空!"), + + FRAME_EXCEPTION_USER_PROVINCE_EMPTY(110083, "用户信息或者用户的所属省分编码为空!"), ; /** diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpTenderApi.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpTenderApi.java index 61dfb1a..a158c33 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpTenderApi.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpTenderApi.java @@ -2,10 +2,10 @@ package com.chinaunicom.mall.ebtp.project.feign; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.project.feign.entity.AgainRoomVO; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @@ -35,4 +35,10 @@ public interface EbtpTenderApi { */ @PostMapping("/v1/supplier_register/package/tenderCount") BaseResponse> getRegisterCountByPackage(@RequestBody List list); + + + @ApiOperation("查询供应商是否报名该项目") + @GetMapping("/v1/supplier_register/query/tendered/{projectId}/{userId}") + BaseResponse queryTenderedUser(@ApiParam(value = "项目id", required = true) @PathVariable String projectId, + @ApiParam(value = "用户id", required = true) @PathVariable String userId); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/controller/ProjectRecordController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/controller/ProjectRecordController.java index 2b40c90..ca61c6f 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/controller/ProjectRecordController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/controller/ProjectRecordController.java @@ -234,4 +234,28 @@ public class ProjectRecordController{ return BaseResponse.success(projectRecordService.getPageByPurchase(projectRecord)); } + /** + * 监督人员查询分页数据 + * @param projectRecord 分页信息 + * @return 返回结果 + */ + @ApiOperation("监督人员查询分页数据") + @PostMapping("/supervisor/getPage") + public BaseResponse> getPageBySupervisor(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectRecordVO projectRecord){ + + return BaseResponse.success(projectRecordService.getPageBySupervisor(projectRecord)); + } + + + /** + * 根据项目ID查看权限和项目信息 + * @param id 项目ID + * @return 返回结果 + */ + @ApiOperation("根据项目ID查看权限和项目信息") + @PostMapping("/getRoleVerification/{id}") + public BaseResponse> getRoleVerification(@ApiParam(value = "主键id", required = true) @PathVariable String id){ + + return BaseResponse.success(projectRecordService.getRoleVerification(id)); + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/service/IProjectRecordService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/service/IProjectRecordService.java index cfdc2f5..94c82c2 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/service/IProjectRecordService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/service/IProjectRecordService.java @@ -178,4 +178,18 @@ public interface IProjectRecordService extends IBaseService{ * @param vo 项目信息 */ void getLinkPercentage(ProjectSectionVO sectionVO, ProjectRecordVO vo); + + /** + * 检察人员查看分页信息 + * @param projectRecord 项目信息 + * @return 返回结果 + */ + IPage getPageBySupervisor(ProjectRecordVO projectRecord); + + /** + * 根据项目ID查看权限和项目信息 + * @param id 项目ID + * @return 返回结果 + */ + Map getRoleVerification(String id); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/service/impl/ProjectRecordServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/service/impl/ProjectRecordServiceImpl.java index f7e474f..caa7324 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/service/impl/ProjectRecordServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/service/impl/ProjectRecordServiceImpl.java @@ -7,11 +7,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.AuthorityEntity; import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService; import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; +import com.chinaunicom.mall.ebtp.common.constant.EbtpRoleEnum; import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum; import com.chinaunicom.mall.ebtp.common.util.JsonUtils; import com.chinaunicom.mall.ebtp.common.util.PropertyUtils; @@ -1117,4 +1119,91 @@ public class ProjectRecordServiceImpl extends BaseServiceImpl getPageBySupervisor(ProjectRecordVO projectRecordVO) { + + QueryWrapper query = getProjectRecordQueryWrapper(projectRecordVO); + + if(null == projectRecordVO.getBasePageRequest()){ + projectRecordVO.setBasePageRequest(new BasePageRequest()); + } + + BaseCacheUser cacheUser = cacheUserService.getCacheUser(); + + if(null == cacheUser || StringUtils.isEmpty(cacheUser.getProvince())){ + ProjectExceptionEnum.FRAME_EXCEPTION_USER_PROVINCE_EMPTY.throwException(); + } + + if(!StringUtils.equals(ProjectCommonUtil.PROVINCES_BLOC,cacheUser.getProvince())){ + query.eq("province", cacheUser.getProvince()); + } + + query.orderByDesc("create_date"); + //查询 + IPage p = new Page<>(projectRecordVO.getBasePageRequest().getPageNo(), projectRecordVO.getBasePageRequest().getPageSize()); + IPage result = this.page(p, query); + + IPage voPage = result.convert(c -> BeanUtil.toBean(c,ProjectRecordVO.class)); + assembleProjectPage(voPage.getRecords()); + + return voPage; + } + + /** + * 跳转判断查看项目权限 + * @param record 项目信息 + * @return 返回权限信息 + */ + private List checkSupervisor(ProjectRecord record){ + + //获取用户信息 + BaseCacheUser user = cacheUserService.getCacheUser(); + //获取用户角色信息 + List authorityList = user.getAuthorityList(); + //返回角色信息 + List resultList = new ArrayList<>(); + + //遍历用户角色 并进行相应的权限判断 + for (AuthorityEntity authority: authorityList) { + //是否项目经理角色 + if(StringUtils.equals(EbtpRoleEnum.AGENCY_PROJECT_MANAGER.getRole(),authority.getRoleCode()) && + StringUtils.equals(record.getAppManagerId(),user.getUserId())){ + resultList.add(authority); + } + //是否采购经理角色 + if(StringUtils.equals(EbtpRoleEnum.PURCHASE_MANAGER.getRole(),authority.getRoleCode()) && + StringUtils.equals(record.getOwnerContactId(),user.getUserId())){ + resultList.add(authority); + } + //是否供应商角色 + if(StringUtils.equals(EbtpRoleEnum.SUPPLIER.getRole(),authority.getRoleCode())){ + boolean retFlag = tenderApi.queryTenderedUser(record.getId(),user.getUserId()).getData(); + if(retFlag){ + resultList.add(authority); + } + } + //是否监督人员 + if(StringUtils.equals(EbtpRoleEnum.SYSTEM_SUPERVISION.getRole(),authority.getRoleCode())){ + if(StringUtils.equals(ProjectCommonUtil.PROVINCES_BLOC,user.getProvince()) || + StringUtils.equals(user.getProvince(),record.getProvince())){ + resultList.add(authority); + } + + } + } + return resultList; + } + + @Override + public Map getRoleVerification(String id) { + + Map resultMap = new LinkedHashMap<>(); + + ProjectRecord record = this.getById(id); + List authorityList = checkSupervisor(record); + + resultMap.put("record",record); + resultMap.put("authorityList",authorityList); + return resultMap; + } }