From 4f58c8d6ca4087b71855030655da8e31487adbf9 Mon Sep 17 00:00:00 2001 From: ajaxfan <909938737@qq.com> Date: Fri, 15 Jan 2021 11:03:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BB=BA=E6=A1=A3=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 33 + Dockerfile-gz | 7 + README.md | 30 + READNE.md | 1 - config-gz | 17 + deployment-gz.yaml | 83 +++ pom.xml | 108 +++ .../BizServiceEbtpProjectApplication.java | 26 + .../ebtp/project/baseoperlog/aop/OperLog.java | 21 + .../baseoperlog/aop/OperLogAspect.java | 140 ++++ .../baseoperlog/dao/BaseOperLogMapper.java | 16 + .../dao/mapper/BaseOperLogMapper.xml | 25 + .../baseoperlog/entity/BaseOperLog.java | 89 +++ .../service/IBaseOperLogService.java | 38 + .../service/impl/BaseOperLogServiceImpl.java | 100 +++ .../project/common/EbpProjectCommonUtil.java | 272 +++++++ .../project/common/ProjectCommonUtil.java | 428 +++++++++++ .../project/common/ProjectExceptionEnum.java | 123 ++++ .../project/config/SwaggerConfiguration.java | 52 ++ .../controller/DictProjectController.java | 105 +++ .../dict/controller/DictRegionController.java | 92 +++ .../project/dict/dao/DictProjectMapper.java | 16 + .../project/dict/dao/DictRegionMapper.java | 10 + .../dict/dao/mapper/DictProjectMapper.xml | 25 + .../dict/dao/mapper/DictRegionMapper.xml | 20 + .../ebtp/project/dict/entity/DictProject.java | 80 ++ .../ebtp/project/dict/entity/DictRegion.java | 50 ++ .../dict/service/IDictProjectService.java | 40 + .../dict/service/IDictRegionService.java | 24 + .../service/impl/DictProjectServiceImpl.java | 78 ++ .../service/impl/DictRegionServiceImpl.java | 35 + .../DictChooseProcessController.java | 86 +++ .../dao/DictChooseProcessMapper.java | 10 + .../dao/mapper/DictChooseProcessMapper.xml | 35 + .../entity/DictChooseProcess.java | 99 +++ .../service/IDictChooseProcessService.java | 23 + .../impl/DictChooseProcessServiceImpl.java | 54 ++ .../project/feign/EbtpCalibrationApi.java | 26 + .../ebtp/project/feign/EbtpMallBidApi.java | 62 ++ .../project/feign/EbtpMallProcessApi.java | 73 ++ .../mall/ebtp/project/feign/EbtpRespsApi.java | 25 + .../mall/ebtp/project/feign/EbtpRsmsApi.java | 25 + .../ebtp/project/feign/EbtpTenderApi.java | 28 + .../mall/ebtp/project/feign/MallPurpApi.java | 45 ++ .../mall/ebtp/project/feign/WfapApi.java | 26 + .../project/feign/entity/AgainRoomVO.java | 28 + .../ebtp/project/feign/entity/AnnoVO.java | 57 ++ .../ebtp/project/feign/entity/Approve.java | 73 ++ .../project/feign/entity/BizAgainSection.java | 36 + .../project/feign/entity/BizAssessRoom.java | 122 +++ .../feign/entity/DictProjectConfig.java | 55 ++ .../project/feign/entity/ReviewFlowVO.java | 90 +++ .../project/feign/entity/SectionFlowVO.java | 25 + .../project/feign/entity/WasUpdateBizDTO.java | 48 ++ .../feign/entity/WfProjectConfigTask.java | 54 ++ .../fallback/EbtpMallBidClientFallback.java | 54 ++ .../EbtpMallProcessClientFallback.java | 62 ++ .../fallback/EbtpProjectClientFallback.java | 42 ++ .../controller/ProjectAuctionController.java | 108 +++ .../dao/ProjectAuctionMapper.java | 10 + .../dao/mapper/ProjectAuctionMapper.xml | 56 ++ .../projectauction/entity/ProjectAuction.java | 223 ++++++ .../entity/ProjectAuctionVO.java | 40 + .../service/IProjectAuctionService.java | 47 ++ .../impl/ProjectAuctionServiceImpl.java | 280 +++++++ .../ProjectAuctionMaterialController.java | 71 ++ .../dao/ProjectAuctionMaterialMapper.java | 10 + .../mapper/ProjectAuctionMaterialMapper.xml | 41 ++ .../entity/ProjectAuctionMaterial.java | 133 ++++ .../IProjectAuctionMaterialService.java | 16 + .../ProjectAuctionMaterialServiceImpl.java | 18 + .../controller/ProjectEntrustController.java | 217 ++++++ .../dao/ProjectEntrustExpandMapper.java | 10 + .../dao/ProjectEntrustMapper.java | 17 + .../dao/mapper/ProjectEntrustExpandMapper.xml | 27 + .../dao/mapper/ProjectEntrustMapper.xml | 52 ++ .../projectentrust/entity/ProjectEntrust.java | 207 ++++++ .../entity/ProjectEntrustExpand.java | 50 ++ .../entity/ProjectEntrustVO.java | 38 + .../entity/ebpentity/ProjBaseInfoVO.java | 359 +++++++++ .../entity/ebpentity/ProjSuppRelVO.java | 132 ++++ .../entity/ebpentity/PurpBaseInfoVO.java | 182 +++++ .../entity/ebpentity/PurpImplementSendVO.java | 95 +++ .../entity/ebpentity/PurpMaterialVO.java | 161 ++++ .../entity/ebpentity/PurpSuperVO.java | 117 +++ .../service/IProjectEntrustExpandService.java | 16 + .../service/IProjectEntrustService.java | 85 +++ .../impl/ProjectEntrustExpandServiceImpl.java | 18 + .../impl/ProjectEntrustServiceImpl.java | 543 ++++++++++++++ .../ProjectExceptionController.java | 121 +++ .../ProjectSectionExceptionController.java | 69 ++ .../dao/ProjectExceptionMapper.java | 32 + .../dao/ProjectSectionExceptionMapper.java | 17 + .../dao/mapper/ProjectExceptionMapper.xml | 69 ++ .../mapper/ProjectSectionExceptionMapper.xml | 32 + .../entity/ProjectException.java | 98 +++ .../entity/ProjectExceptionVO.java | 46 ++ .../entity/ProjectSectionException.java | 51 ++ .../service/IProjectExceptionService.java | 51 ++ .../IProjectSectionExceptionService.java | 21 + .../impl/ProjectExceptionServiceImpl.java | 484 ++++++++++++ .../ProjectSectionExceptionServiceImpl.java | 27 + .../controller/ProjectRecordController.java | 166 +++++ .../dao/ProjectRecordMapper.java | 29 + .../dao/mapper/ProjectRecordMapper.xml | 112 +++ .../projectrecord/entity/ProjectRecord.java | 347 +++++++++ .../projectrecord/entity/ProjectRecordVO.java | 63 ++ .../service/IProjectRecordService.java | 115 +++ .../impl/ProjectRecordServiceImpl.java | 694 ++++++++++++++++++ .../column/ProjectReEvaluationField.java | 82 +++ .../ProjectReEvaluationController.java | 172 +++++ .../dao/ProjectReEvaluationMapper.java | 15 + .../dao/mapper/ProjectReEvaluationMapper.xml | 35 + .../entity/ProjectReEvaluation.java | 93 +++ .../entity/ProjectReEvaluationVO.java | 41 ++ .../service/IProjectReEvaluationService.java | 85 +++ .../impl/ProjectReEvaluationServiceImpl.java | 361 +++++++++ .../controller/ProjectSectionController.java | 294 ++++++++ .../dao/ProjectSectionFlowMapper.java | 10 + .../dao/ProjectSectionMapper.java | 63 ++ .../dao/mapper/ProjectSectionFlowMapper.xml | 28 + .../dao/mapper/ProjectSectionMapper.xml | 170 +++++ .../projectsection/entity/ProjectSection.java | 241 ++++++ .../entity/ProjectSectionFlow.java | 51 ++ .../entity/ProjectSectionVO.java | 76 ++ .../service/IProjectSectionFlowService.java | 25 + .../service/IProjectSectionService.java | 155 ++++ .../impl/ProjectSectionFlowServiceImpl.java | 39 + .../impl/ProjectSectionServiceImpl.java | 438 +++++++++++ .../ProjectUpdateFieldController.java | 75 ++ .../dao/ProjectUpdateFieldMapper.java | 10 + .../dao/mapper/ProjectUpdateFieldMapper.xml | 29 + .../entity/ProjectUpdateField.java | 71 ++ .../service/IProjectUpdateFieldService.java | 17 + .../impl/ProjectUpdateFieldServiceImpl.java | 19 + .../controller/SectionMaterialController.java | 81 ++ .../dao/SectionMaterialMapper.java | 22 + .../dao/mapper/SectionMaterialMapper.xml | 44 ++ .../entity/SectionMaterial.java | 121 +++ .../entity/SectionMaterialVO.java | 21 + .../service/ISectionMaterialService.java | 40 + .../impl/SectionMaterialServiceImpl.java | 58 ++ .../controller/SectionSupplierController.java | 96 +++ .../dao/SectionSupplierMapper.java | 22 + .../dao/mapper/SectionSupplierMapper.xml | 37 + .../entity/SectionSupplier.java | 72 ++ .../entity/SectionSupplierVO.java | 23 + .../service/ISectionSupplierService.java | 41 ++ .../impl/SectionSupplierServiceImpl.java | 62 ++ src/main/resources/application-dev.yml | 207 ++++++ src/main/resources/application-test.yml | 220 ++++++ src/main/resources/application.yml | 3 + src/main/resources/file.conf | 66 ++ src/main/resources/logback.xml | 89 +++ src/main/resources/registry.conf | 79 ++ src/main/resources/seata.conf | 21 + .../swagger-configuration.properties | 7 + 157 files changed, 13696 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 Dockerfile-gz create mode 100644 README.md delete mode 100644 READNE.md create mode 100644 config-gz create mode 100644 deployment-gz.yaml create mode 100644 pom.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/BizServiceEbtpProjectApplication.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/aop/OperLog.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/aop/OperLogAspect.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/dao/BaseOperLogMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/dao/mapper/BaseOperLogMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/entity/BaseOperLog.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/service/IBaseOperLogService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/service/impl/BaseOperLogServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/common/EbpProjectCommonUtil.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/common/ProjectCommonUtil.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/common/ProjectExceptionEnum.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/config/SwaggerConfiguration.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dict/controller/DictProjectController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dict/controller/DictRegionController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/DictProjectMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/DictRegionMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/mapper/DictProjectMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/mapper/DictRegionMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dict/entity/DictProject.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dict/entity/DictRegion.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/IDictProjectService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/IDictRegionService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/impl/DictProjectServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/impl/DictRegionServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/controller/DictChooseProcessController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/dao/DictChooseProcessMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/dao/mapper/DictChooseProcessMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/entity/DictChooseProcess.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/service/IDictChooseProcessService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/service/impl/DictChooseProcessServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpCalibrationApi.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpMallBidApi.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpMallProcessApi.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpRespsApi.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpRsmsApi.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpTenderApi.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/MallPurpApi.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/WfapApi.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/AgainRoomVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/AnnoVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/Approve.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/BizAgainSection.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/BizAssessRoom.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/DictProjectConfig.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/ReviewFlowVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/SectionFlowVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/WasUpdateBizDTO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/WfProjectConfigTask.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/fallback/EbtpMallBidClientFallback.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/fallback/EbtpMallProcessClientFallback.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/feign/fallback/EbtpProjectClientFallback.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/controller/ProjectAuctionController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/dao/ProjectAuctionMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/dao/mapper/ProjectAuctionMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/entity/ProjectAuction.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/entity/ProjectAuctionVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/service/IProjectAuctionService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/service/impl/ProjectAuctionServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/controller/ProjectAuctionMaterialController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/dao/ProjectAuctionMaterialMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/dao/mapper/ProjectAuctionMaterialMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/entity/ProjectAuctionMaterial.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/service/IProjectAuctionMaterialService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/service/impl/ProjectAuctionMaterialServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/controller/ProjectEntrustController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/ProjectEntrustExpandMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/ProjectEntrustMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/mapper/ProjectEntrustExpandMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/mapper/ProjectEntrustMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ProjectEntrust.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ProjectEntrustExpand.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ProjectEntrustVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/ProjBaseInfoVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/ProjSuppRelVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpBaseInfoVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpImplementSendVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpMaterialVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpSuperVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/IProjectEntrustExpandService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/IProjectEntrustService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/impl/ProjectEntrustExpandServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/impl/ProjectEntrustServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/controller/ProjectExceptionController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/controller/ProjectSectionExceptionController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/ProjectExceptionMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/ProjectSectionExceptionMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/mapper/ProjectExceptionMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/mapper/ProjectSectionExceptionMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/entity/ProjectException.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/entity/ProjectExceptionVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/entity/ProjectSectionException.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/IProjectExceptionService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/IProjectSectionExceptionService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/impl/ProjectExceptionServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/impl/ProjectSectionExceptionServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/controller/ProjectRecordController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/dao/ProjectRecordMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/dao/mapper/ProjectRecordMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/entity/ProjectRecord.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/entity/ProjectRecordVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/service/IProjectRecordService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/service/impl/ProjectRecordServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/column/ProjectReEvaluationField.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/controller/ProjectReEvaluationController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/dao/ProjectReEvaluationMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/dao/mapper/ProjectReEvaluationMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/entity/ProjectReEvaluation.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/entity/ProjectReEvaluationVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/service/IProjectReEvaluationService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/service/impl/ProjectReEvaluationServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/controller/ProjectSectionController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/ProjectSectionFlowMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/ProjectSectionMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/mapper/ProjectSectionFlowMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/mapper/ProjectSectionMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/entity/ProjectSection.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/entity/ProjectSectionFlow.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/entity/ProjectSectionVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/IProjectSectionFlowService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/IProjectSectionService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/impl/ProjectSectionFlowServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/impl/ProjectSectionServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/controller/ProjectUpdateFieldController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/dao/ProjectUpdateFieldMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/dao/mapper/ProjectUpdateFieldMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/entity/ProjectUpdateField.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/service/IProjectUpdateFieldService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/service/impl/ProjectUpdateFieldServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/controller/SectionMaterialController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/dao/SectionMaterialMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/dao/mapper/SectionMaterialMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/entity/SectionMaterial.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/entity/SectionMaterialVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/service/ISectionMaterialService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/service/impl/SectionMaterialServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/controller/SectionSupplierController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/dao/SectionSupplierMapper.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/dao/mapper/SectionSupplierMapper.xml create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/entity/SectionSupplier.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/entity/SectionSupplierVO.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/service/ISectionSupplierService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/service/impl/SectionSupplierServiceImpl.java create mode 100644 src/main/resources/application-dev.yml create mode 100644 src/main/resources/application-test.yml create mode 100644 src/main/resources/application.yml create mode 100644 src/main/resources/file.conf create mode 100644 src/main/resources/logback.xml create mode 100644 src/main/resources/registry.conf create mode 100644 src/main/resources/seata.conf create mode 100644 src/main/resources/swagger-configuration.properties diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/Dockerfile-gz b/Dockerfile-gz new file mode 100644 index 0000000..c348a9f --- /dev/null +++ b/Dockerfile-gz @@ -0,0 +1,7 @@ +FROM harbor.dcos.guangzhou.unicom.local/eshop/skywalking_agent_springboot_8.1.0:v1.0 +ENV LC_ALL=zh_CN.utf8 +ENV LANG=zh_CN.utf8 +ENV LANGUAGE=zh_CN.utf8 +RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 +ADD /target/biz_service_ebtp_project -0.0.1.jar /biz_service_ebtp_project -0.0.1.jar +ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/biz_service_ebtp_project -0.0.1.jar"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..d9fbd5d --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +# 项目建档微服务组件 + + 项目建档组件主要完成项目建档操作,对项目涉及的字典和流程提供查询功能 + +## 组件模块 + +1. baseoperlog 和外部接口调用日志(接收项目推送信息进行记录) + +2. common 公共字段或者辅助类存放位置 + +3. dict 项目字典信息(前端使用进行缓存的数据) + +4. dictchooseprocess 项目的标段评审流程字典配置 + +5. expand 外部推送项目信息记录信息(包括项目信息、标段信息、供应商信息、物资信息、附件信息) + +6. projectentrust 项目委托信息 项目委托单 代理机构进行分派项目等操作 + +7. projectexception 项目异常处理信息 项目进行异常处理之后相应操作 + +8. projectrecord 项目建档信息 项目经理对项目建档信息编辑 + +9. projectsection 项目标段信息 项目标段记录 + +10. projectupdatefield 项目建档字段发生改变进行记录(当前只记录更换项目经理进行记录) + +11. sectionmaterial 物资信息 + +12. sectionsupplier 供应商信息 + diff --git a/READNE.md b/READNE.md deleted file mode 100644 index c57eff5..0000000 --- a/READNE.md +++ /dev/null @@ -1 +0,0 @@ -Hello World! \ No newline at end of file diff --git a/config-gz b/config-gz new file mode 100644 index 0000000..6fe3b43 --- /dev/null +++ b/config-gz @@ -0,0 +1,17 @@ +apiVersion: v1 +clusters: +- cluster: + insecure-skip-tls-verify: true + server: https://10.125.164.35:48662 + name: demok8s +contexts: +- context: + cluster: demok8s + user: cluster-admin + name: default +current-context: default +kind: Config +users: +- name: cluster-admin + user: + token: df5e4896a4f6d1b1447b2584ca7405f7 diff --git a/deployment-gz.yaml b/deployment-gz.yaml new file mode 100644 index 0000000..c35f3ed --- /dev/null +++ b/deployment-gz.yaml @@ -0,0 +1,83 @@ +# 接口版本 +apiVersion: apps/v1 +# 接口类型 +kind: Deployment +metadata: + name: biz-service-ebtp-project + namespace: default + labels: + app: biz-service-ebtp-project + +# 必选,详细定义 +spec: + # pod 副本数量 + replicas: 1 + + # 滚动升级配置信息 + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + + # 选择器,匹配pod模板 + selector: + matchLabels: + app: biz-service-ebtp-project + + template: + metadata: + labels: + # 模板名称 + app: biz-service-ebtp-project + + # 定义容器模板,该模板可以包含多个容器 + spec: + # 挂载日志存储 + volumes: + - name: log + persistentVolumeClaim: + claimName: log-pvc + readOnly: false + - name: storage + persistentVolumeClaim: + claimName: file-pvc + readOnly: false + + # 必选,Pod中容器列表 + containers: + - name: biz-service-ebtp-project + image: harbor.dcos.guangzhou.unicom.local/eshop/biz-service-ebtp-project:latest + # 在容器中挂载日志存储区 + volumeMounts: + - name: log + mountPath: /log + - name: storage + mountPath: /storage + # 需要暴露的端口库号列表 + ports: + - containerPort: 18012 + # 容器运行前需设置的环境变量列表 + env: + # Apollo 配置中心变量设置 + - name: APOLLO_CONFIGSERVICE + value: http://10.242.31.158:6001 +--- +kind: Service +apiVersion: v1 +metadata: + name: biz-service-ebtp-project + namespace: default + labels: + app: biz-service-ebtp-project + annotations: + lb.cke.tg.unicom/target-vports: 18012-18012 +spec: + ports: + - port: 18012 + targetPort: 18012 + selector: + app: biz-service-ebtp-project +status: + loadBalancer: {} + +--- \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..5be14b1 --- /dev/null +++ b/pom.xml @@ -0,0 +1,108 @@ + + + 4.0.0 + + + com.chinaunicom.ebtp + mall-ebtp-cloud-parent + 0.0.1-SNAPSHOT + + com.chinaunicom.mall.ebtp + biz_service_ebtp_project + 0.0.1 + biz_service_ebtp_project + + + + com.chinaunicom.mall.ebtp + uboot-core + 0.0.2-SNAPSHOT + + + com.chinaunicom.ebtp + mall-ebtp-cloud-security-starter + + + + + + com.alibaba + druid-spring-boot-starter + + + + io.seata + seata-spring-boot-starter + + + + com.chinaunicom.ebtp + mall-ebtp-cloud-apollo-starter + + + + org.apache.shardingsphere + sharding-jdbc-spring-boot-starter + + + + mysql + mysql-connector-java + + + + com.chinaunicom.ebtp + mall-ebtp-cloud-redis-starter + + + + com.chinaunicom.ebtp + mall-ebtp-cloud-attachment-sdk + 0.0.1-SNAPSHOT + + + + + com.github.xiaoymin + knife4j-spring-boot-starter + 2.0.0 + + + + + + maven-snapshot-local + maven-snapshot-local + http://ccp.tianti.tg.unicom.local/artifactory/tianti-maven-snapshot-local/ + + false + + + true + + + + + + + + src/main/resources + true + + + src/main/java + + **/mapper/*Mapper.xml + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/BizServiceEbtpProjectApplication.java b/src/main/java/com/chinaunicom/mall/ebtp/project/BizServiceEbtpProjectApplication.java new file mode 100644 index 0000000..76f05ab --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/BizServiceEbtpProjectApplication.java @@ -0,0 +1,26 @@ +package com.chinaunicom.mall.ebtp.project; + +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.ComponentScan; + +@SpringBootApplication(exclude = { + DataSourceAutoConfiguration.class, + DruidDataSourceAutoConfigure.class +}) +@EnableFeignClients +@EnableEurekaClient +@MapperScan({"com.chinaunicom.mall.ebtp.project.**.dao"}) +@ComponentScan("com.chinaunicom.mall.ebtp.*") +public class BizServiceEbtpProjectApplication { + + public static void main(String[] args) { + SpringApplication.run(BizServiceEbtpProjectApplication.class, args); + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/aop/OperLog.java b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/aop/OperLog.java new file mode 100644 index 0000000..831d224 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/aop/OperLog.java @@ -0,0 +1,21 @@ +package com.chinaunicom.mall.ebtp.project.baseoperlog.aop; + +import java.lang.annotation.*; + +/** + * 以该注解标记的controller函数需要记录操作日志 + * + * @author daixc + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface OperLog { + /** + * 被注解方法的描述 + * + * @return + */ + String value() default ""; + +} \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/aop/OperLogAspect.java b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/aop/OperLogAspect.java new file mode 100644 index 0000000..4ae7992 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/aop/OperLogAspect.java @@ -0,0 +1,140 @@ +package com.chinaunicom.mall.ebtp.project.baseoperlog.aop; + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; +import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService; +import com.chinaunicom.mall.ebtp.common.util.HttpContextUtils; +import com.chinaunicom.mall.ebtp.common.util.IPUtils; +import com.chinaunicom.mall.ebtp.common.util.JsonUtils; +import com.chinaunicom.mall.ebtp.project.baseoperlog.service.IBaseOperLogService; +import groovy.util.logging.Slf4j; +import io.swagger.annotations.ApiOperation; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.aspectj.lang.reflect.MethodSignature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +/** + * 操作审计日志切面类 + * + * @author huangjl + */ +@Slf4j +@Aspect +@Component +public class OperLogAspect { + + /** + * slf4j日志 + */ + private static final Logger LOGGER = LoggerFactory.getLogger(OperLogAspect.class); + + private static final int MAX_ARGS_LENGTH = 500; + + @Autowired + private IBaseOperLogService baseOperLogService; + + @Autowired + private IBaseCacheUserService userService; + + /** + * 定义切点 + */ + @Pointcut("@annotation(com.chinaunicom.mall.ebtp.project.baseoperlog.aop.OperLog)") + public void operLog() { + // 以注解OperLog为切点条件 + } + + @Around("operLog()") + public Object around(ProceedingJoinPoint joinPoint) throws Throwable { + final HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); + final MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + final String methodName = extractMethodName(signature); + final String remark = extractRemark(signature); + final String ip = extractIp(request); + String args; + try { + args = JsonUtils.objectToJson(baseOperLogService.adjustArgs(signature, joinPoint.getArgs())); + if (args.length() > MAX_ARGS_LENGTH) { + args = args.substring(0, MAX_ARGS_LENGTH); + } + } catch (Exception e) { + args = e.getClass().getName() + " : " + e.getMessage(); + } + boolean success = true; + try { + return joinPoint.proceed(); + } catch (Throwable e) { + success = false; + throw e; + } finally { + BaseCacheUser user = extractUser(); + baseOperLogService.addLog(methodName, args, remark, user, ip, success); + } + } + + /** + * 解析函数名 + * + * @param methodSignature 切点描述 + * @return 解析后的函数名 + */ + private String extractMethodName(MethodSignature methodSignature) { + final List paramTypes = new ArrayList<>(); + for (Class type : methodSignature.getParameterTypes()) { + paramTypes.add(type.getName()); + } + return methodSignature.getDeclaringTypeName() + "." + methodSignature.getName() + "(" + StringUtils.collectionToCommaDelimitedString(paramTypes) + ")"; + } + + /** + * 解析函数描述 + * + * @param methodSignature 切点描述 + * @return 解析后的描述 + */ + private String extractRemark(MethodSignature methodSignature) { + final ApiOperation apiOperation = methodSignature.getMethod().getAnnotation(ApiOperation.class); + final OperLog operLog = methodSignature.getMethod().getAnnotation(OperLog.class); + if (operLog != null && !StringUtils.isEmpty(operLog.value())) { + return operLog.value(); + } + if (apiOperation != null && !StringUtils.isEmpty(apiOperation.value())) { + return apiOperation.value(); + } + return null; + } + + /** + * 解析当前用户 + * + * @return 用户实体 + */ + private BaseCacheUser extractUser() { + try { + return userService.getCacheUser(); + } catch (Exception e) { + LOGGER.debug("未登录访问"); + } + return null; + } + + /** + * 解析访问者ip + * + * @return ip + */ + private String extractIp(HttpServletRequest request) { + return request.getRemoteAddr() + "," + IPUtils.getIpAddr(request); + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/dao/BaseOperLogMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/dao/BaseOperLogMapper.java new file mode 100644 index 0000000..a83f52b --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/dao/BaseOperLogMapper.java @@ -0,0 +1,16 @@ +package com.chinaunicom.mall.ebtp.project.baseoperlog.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.baseoperlog.entity.BaseOperLog; + +/** + * 接口日志信息mapper映射 + * + * @author daixc + * @date 2020/10/30 + */ +public interface BaseOperLogMapper extends IBaseMapper { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/dao/mapper/BaseOperLogMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/dao/mapper/BaseOperLogMapper.xml new file mode 100644 index 0000000..4430b04 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/dao/mapper/BaseOperLogMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + update base_oper_log + set + delete_flag="deleted" + where ID=#{id} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/entity/BaseOperLog.java b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/entity/BaseOperLog.java new file mode 100644 index 0000000..f257b05 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/entity/BaseOperLog.java @@ -0,0 +1,89 @@ +package com.chinaunicom.mall.ebtp.project.baseoperlog.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.chinaunicom.mall.ebtp.common.config.CustomLocalDateTimeTypeHandler; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 接口日志实体类 BaseOperLog + * + * @author daixc + * @date 2020/10/30 + */ +@Data +@Accessors(chain = true) +@ApiModel("接口日志实体类") +@TableName(value = "base_oper_log", autoResultMap = true) +public class BaseOperLog implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "主键") + private Long id; + + /** + * 调用的函数 + */ + @ApiModelProperty(value = "调用的函数") + private String method; + + /** + * 调用参数 + */ + @ApiModelProperty(value = "调用参数") + private String params; + + /** + * 记录时间 + */ + @ApiModelProperty(value = "记录时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(typeHandler = CustomLocalDateTimeTypeHandler.class) + private LocalDateTime logTime; + + /** + * 操作人id + */ + @ApiModelProperty(value = "操作人id") + private String userId; + + /** + * 操作人名称 + */ + @ApiModelProperty(value = "操作人名称") + private String userName; + + /** + * 描述 + */ + @ApiModelProperty(value = "描述") + private String description; + + /** + * 操作人请求发起ip + */ + @ApiModelProperty(value = "操作人请求发起ip") + private String ip; + + /** + * 是否执行成功 + */ + @ApiModelProperty(value = "是否执行成功") + private String success; + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/service/IBaseOperLogService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/service/IBaseOperLogService.java new file mode 100644 index 0000000..9474169 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/service/IBaseOperLogService.java @@ -0,0 +1,38 @@ +package com.chinaunicom.mall.ebtp.project.baseoperlog.service; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.baseoperlog.entity.BaseOperLog; +import org.aspectj.lang.reflect.MethodSignature; + +import java.util.List; + +/** + * 对数据表 base_oper_log 操作的 service + * @author daixc + * @date 2020/10/30 + * + */ +public interface IBaseOperLogService extends IBaseService{ + + /** + * 添加日志 + * + * @param method 函数名 + * @param args 序列化的参数值 + * @param description 描述 + * @param user 当前用户 + * @param requestIp 调用者ip + * @param success 是否成功 + */ + void addLog(String method, String args, String description, BaseCacheUser user, String requestIp, boolean success); + + /** + * 处理调用参数,处理一些无法序列化的参数 + * @param signature 方法 + * @param args 待解析的参数 + * @return 解析后的参数 + */ + List adjustArgs(MethodSignature signature, Object[] args); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/service/impl/BaseOperLogServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/service/impl/BaseOperLogServiceImpl.java new file mode 100644 index 0000000..963446c --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/baseoperlog/service/impl/BaseOperLogServiceImpl.java @@ -0,0 +1,100 @@ +package com.chinaunicom.mall.ebtp.project.baseoperlog.service.impl; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; +import com.chinaunicom.mall.ebtp.common.util.JsonUtils; +import com.chinaunicom.mall.ebtp.common.util.PropertyUtils; +import com.chinaunicom.mall.ebtp.project.baseoperlog.dao.BaseOperLogMapper; +import com.chinaunicom.mall.ebtp.project.baseoperlog.entity.BaseOperLog; +import com.chinaunicom.mall.ebtp.project.baseoperlog.service.IBaseOperLogService; +import org.aspectj.lang.reflect.MethodSignature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.ui.Model; +import org.springframework.ui.ModelMap; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + * 对数据表 base_oper_log 操作的 serviceImpl + * @author daixc + * @date 2020/10/30 + */ +@Service +public class BaseOperLogServiceImpl extends BaseServiceImpl implements IBaseOperLogService { + + private static final Logger LOGGER = LoggerFactory.getLogger(BaseOperLogServiceImpl.class); + + /** + * 添加日志 + * + * @param method 函数名 + * @param args 序列化的参数值 + * @param description 描述 + * @param user 当前用户 + * @param requestIp 调用者ip + * @param success 是否成功 + */ + @Override + public void addLog(String method, String args, String description, BaseCacheUser user, String requestIp, boolean success) { + BaseOperLog entity = new BaseOperLog(); + if (user != null) { + entity.setUserId(user.getUserId().toString()); + entity.setUserName(user.getLastName()); + } + entity.setId(PropertyUtils.getSnowflakeId()); + entity.setMethod(method); + entity.setParams(args); + entity.setDescription(description); + entity.setIp(requestIp); + entity.setLogTime(LocalDateTime.now()); + entity.setSuccess(success ? "1" : "0"); + + LOGGER.info(JsonUtils.objectToJson(entity)); + + this.save(entity); + } + + private static final String LOGIN_METHOD_NAME = "loginByAccountPasswordCode"; + + /** + * 处理调用参数,处理一些无法序列化的参数 + * + * @param args 待解析的参数 + * @return 解析后的参数 + */ + @Override + public List adjustArgs(MethodSignature signature, Object[] args) { + final List paramValues = new ArrayList<>(); + for (Object param : args) { + if (//signature.getDeclaringType().equals(BaseSelfController.class) && + LOGIN_METHOD_NAME.equals(signature.getMethod().getName())) { + paramValues.add("*"); + } else if (param instanceof HttpServletRequest) { + paramValues.add("HttpServletRequest"); + } else if (param instanceof HttpServletResponse) { + paramValues.add("HttpServletResponse"); + } else if (param instanceof HttpSession) { + paramValues.add("HttpSession:" + ((HttpSession) param).getId()); + } else if (param instanceof MultipartFile) { + paramValues.add("MultipartFile:" + ((MultipartFile) param).getOriginalFilename()); + } else if (param instanceof ModelMap) { + paramValues.add("ModelMap(" + (String.join(",", ((ModelMap) param).keySet()))); + } else if (param instanceof Model) { + paramValues.add("Model"); + } else { + paramValues.add(param); + } + } + return paramValues; + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/common/EbpProjectCommonUtil.java b/src/main/java/com/chinaunicom/mall/ebtp/project/common/EbpProjectCommonUtil.java new file mode 100644 index 0000000..97db028 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/common/EbpProjectCommonUtil.java @@ -0,0 +1,272 @@ +package com.chinaunicom.mall.ebtp.project.common; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 项目委托推送数据辅助类 + * @author daixc + * @date 2020/12/04 + * @version V1.0 + */ +public class EbpProjectCommonUtil { + + /** + * 业务类型 寻源业务 + */ + public static final String BUSINESS_TYPE_001 = "001"; + + /** + * 业务类型 招募业务 + */ + public static final String BUSINESS_TYPE_002 = "002"; + + /** + * 业务类型 处置业务 + */ + public static final String BUSINESS_TYPE_003 = "003"; + + + /** + * 组织形式 自主执行 + */ + public static final String ORGANIZATIONAL_FORM_001="001"; + + /** + * 组织形式 代理执行 + */ + public static final String ORGANIZATIONAL_FORM_002="002"; + + /** + * 采购方式 001 公开招标 + */ + public static final String PURC_MODE_001 = "001"; + + /** + * 采购方式 002 邀请招标 + */ + public static final String PURC_MODE_002 = "002"; + + /** + * 采购方式 003 竞争性谈判 + */ + public static final String PURC_MODE_003 = "003"; + + /** + * 采购方式 004 单一来源采购 + */ + public static final String PURC_MODE_004 = "004"; + + /** + * 采购方式 005 公开比选 + */ + public static final String PURC_MODE_005 = "005"; + + /** + * 001 货物 标的类型 + */ + public static final String TARGET_TYPE_001 = "001"; + + /** + * 002 工程 标的类型 + */ + public static final String TARGET_TYPE_002 = "002"; + + /** + * 003 服务 标的类型 + */ + public static final String TARGET_TYPE_003 = "003"; + + /** + * 004 其它 标的类型 + */ + public static final String TARGET_TYPE_004 = "004"; + + /** + * 比选方式 001 一阶段评审 + */ + public static final String COMPAR_SELECT_MODE_001 = "001"; + + /** + * 比选方式 002 多阶段评审 + */ + public static final String COMPAR_SELECT_MODE_002 = "002"; + + /** + * 资审方式 001 预审 + */ + public static final String SUPP_QUALIFY_001 = "001"; + + /** + * 资审方式 002 后审 + */ + public static final String SUPP_QUALIFY_002 = "002"; + + /** + * 评审次数 001:单次评审 + */ + public static final String REVIEW_NUM_001 = "001"; + + /** + * 评审次数 002:多次评审 + */ + public static final String REVIEW_NUM_002 = "002"; + + /** + * 评审次数 003:不定期评审 + */ + public static final String REVIEW_NUM_003 = "003"; + + /** + * 评价方法 001 最低价中标法 + */ + public static final String SCORE_TYPE_001 = "001"; + + /** + * 评价方法 002 综合评估法 + */ + public static final String SCORE_TYPE_002 = "002"; + + /** + * 资金来源 001 国企自筹 + */ + public static final String FUND_ORIGN_001 = "001"; + + /** + * 资金来源 002 中央投资 + */ + public static final String FUND_ORIGN_002 = "002"; + + /** + * 资金来源 003 地方政府投资 + */ + public static final String FUND_ORIGN_003 = "003"; + + /** + * 资金来源 004 财政资金 + */ + public static final String FUND_ORIGN_004 = "004"; + + /** + * 资金来源 005 外贷 + */ + public static final String FUND_ORIGN_005 = "005"; + + /** + * 资金来源 006 其他 + */ + public static final String FUND_ORIGN_006 = "006"; + + /** + * 子业务类型(001:需求; 002:项目; 003:公告;) + */ + public static final String SUB_BUSINESS_TYPE ="002"; + + /** + * 审批返回 审批通过 + */ + public static final String CALLBACK_APPROVAL_STATUS_YES = "003"; + + /** + * 审批返回 退回 + */ + public static final String CALLBACK_APPROVAL_STATUS_NO = "004"; + + + /** + * 组织形式转换 MAP + */ + public static Map ORGANIZATIONAL_MAP = new HashMap(){{ + put(ORGANIZATIONAL_FORM_001,ProjectCommonUtil.ORGANIZATION_2); + put(ORGANIZATIONAL_FORM_002,ProjectCommonUtil.ORGANIZATION_1); + }}; + + + /** + * 采购类型转换 MAP + */ + public static Map PROCUREMENT_TYPE_MAP = new HashMap(){{ + put(TARGET_TYPE_001,ProjectCommonUtil.PROCUREMENT_TYPE_1); + put(TARGET_TYPE_002,ProjectCommonUtil.PROCUREMENT_TYPE_2); + put(TARGET_TYPE_003,ProjectCommonUtil.PROCUREMENT_TYPE_3); + put(TARGET_TYPE_004,ProjectCommonUtil.PROCUREMENT_TYPE_4); + }}; + + /** + * 采购方式转换 MAP + */ + public static Map PROCUREMENT_MODE_MAP = new HashMap(){{ + put(PURC_MODE_001,ProjectCommonUtil.PROCUREMENT_MODE_1); + put(PURC_MODE_002,ProjectCommonUtil.PROCUREMENT_MODE_2); + put(PURC_MODE_003,ProjectCommonUtil.PROCUREMENT_MODE_5); + put(PURC_MODE_004,ProjectCommonUtil.PROCUREMENT_MODE_6); + put(PURC_MODE_005,ProjectCommonUtil.PROCUREMENT_MODE_3); + }}; + + /** + * 资金来源转换 MAP + */ + public static Map FUNDS_PROVIDER_MAP = new HashMap(){{ + put(FUND_ORIGN_001,ProjectCommonUtil.FUNDS_PROVIDER_2); + put(FUND_ORIGN_002,ProjectCommonUtil.FUNDS_PROVIDER_1); + put(FUND_ORIGN_003,ProjectCommonUtil.FUNDS_PROVIDER_3); + put(FUND_ORIGN_004,ProjectCommonUtil.FUNDS_PROVIDER_4); + put(FUND_ORIGN_005,ProjectCommonUtil.FUNDS_PROVIDER_5); + put(FUND_ORIGN_006,ProjectCommonUtil.FUNDS_PROVIDER_6); + }}; + + /** + * 比选方式转换 MAP + */ + public static Map SELECTION_METHOD_MAP = new HashMap(){{ + put(COMPAR_SELECT_MODE_001,ProjectCommonUtil.SELECTION_METHOD_1); + put(COMPAR_SELECT_MODE_002,ProjectCommonUtil.SELECTION_METHOD_2); + }}; + + /** + * 资审方式转换 MAP + */ + public static Map EXAMINATION_METHOD_MAP = new HashMap(){{ + put(SUPP_QUALIFY_001,ProjectCommonUtil.EXAMINATION_METHOD_1); + put(SUPP_QUALIFY_002,ProjectCommonUtil.EXAMINATION_METHOD_2); +// put(COMPAR_SELECT_MODE_002,ProjectCommonUtil.EXAMINATION_METHOD_3); +// put(COMPAR_SELECT_MODE_002,ProjectCommonUtil.EXAMINATION_METHOD_4); + }}; + + /** + * 评审次数转换 MAP + */ + public static Map RECRUITMENT_METHOD_MAP = new HashMap(){{ + put(REVIEW_NUM_001,ProjectCommonUtil.RECRUITMENT_METHOD_1); + put(REVIEW_NUM_002,ProjectCommonUtil.RECRUITMENT_METHOD_2); + put(REVIEW_NUM_003,ProjectCommonUtil.RECRUITMENT_METHOD_3); + }}; + + /** + * 评审方法转换 MAP + */ + public static Map EVAL_METHOD_MAP = new HashMap(){{ + put(SCORE_TYPE_001,ProjectCommonUtil.EVAL_METHOD_1); + put(SCORE_TYPE_002,ProjectCommonUtil.EVAL_METHOD_2); + }}; + + /** + * 获取map的key + * @param map 集合 + * @param value value值 + * @param 泛型 key + * @param 泛型 value + * @return 返回结果 + */ + public static Set getKeysByStream(Map map, V value) { + return map.entrySet() + .stream() + .filter(kvEntry -> Objects.equals(kvEntry.getValue(), value)) + .map(Map.Entry::getKey) + .collect(Collectors.toSet()); + } + +} 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 new file mode 100644 index 0000000..ff859cd --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/common/ProjectCommonUtil.java @@ -0,0 +1,428 @@ +package com.chinaunicom.mall.ebtp.project.common; + +/** + * 项目建档辅助字段实体类 + * + * @author daixc + * @date 2020/10/26 + */ +public class ProjectCommonUtil { + + + /** + * 委托单未分派 + */ + public static final int ENTRUS_STATUS_1 = 1; + + + /** + * 委托单已分派 + */ + public static final int ENTRUS_STATUS_2 = 2; + + + /** + * 委托单已建档 + */ + public static final int ENTRUS_STATUS_3 = 3; + + + /** + * 委托单已拒绝 + */ + public static final int ENTRUS_STATUS_9 = 9; + + + /** + * 项目/标段业务模块 建档 + */ + public static final int BUSINESS_MODULE_1 = 1; + + /** + * 项目/标段业务模块 资审招标 + */ + public static final int BUSINESS_MODULE_2 = 2; + + /** + * 项目/标段业务模块 资审投标 + */ + public static final int BUSINESS_MODULE_3 = 3; + + /** + * 项目/标段业务模块 资审开标 + */ + public static final int BUSINESS_MODULE_4 = 4; + + /** + * 项目/标段业务模块 资审评标 + */ + public static final int BUSINESS_MODULE_5 = 5; + + /** + * 项目/标段业务模块 资审定标 + */ + public static final int BUSINESS_MODULE_6 = 6; + + /** + * 项目/标段业务模块 招标 + */ + public static final int BUSINESS_MODULE_7 = 7; + + /** + * 项目/标段业务模块 投标 + */ + public static final int BUSINESS_MODULE_8 = 8; + + /** + * 项目/标段业务模块 开标 + */ + public static final int BUSINESS_MODULE_9 = 9; + + /** + * 项目/标段业务模块 评标 + */ + public static final int BUSINESS_MODULE_10 = 10; + + /** + * 项目/标段业务模块 定标 + */ + public static final int BUSINESS_MODULE_11 = 11; + + /** + * 项目/标段业务模块 归档 + */ + public static final int BUSINESS_MODULE_12 = 12; + + + /** + * 项目状态初始化 + */ + public static final int PROJECT_STATUS_0 = 0; + + + /** + * 已修改 + */ + public static final int PROJECT_STATUS_1 = 1; + + /** + * 进行中 + */ + public static final int PROJECT_STATUS_2 = 2; + + /** + * 已完成 + */ + public static final int PROJECT_STATUS_3 = 3; + + /** + * 项目状态 已废止 + */ + public static final int PROJECT_STATUS_9 = 9; + + + + /** + * 标段项目状态 初始化/未修改 + */ + public static final int SECTION_STATUS_0 = 0; + + /** + * 标段项目状态 已编辑 + */ + public static final int SECTION_STATUS_1 = 1; + + /** + * 标段项目状态 进行中 + */ + public static final int SECTION_STATUS_2 = 2; + + /** + * 标段项目状态 已完成 + */ + public static final int SECTION_STATUS_3 = 3; + + /** + * 标段项目状态 已废止 + */ + public static final int SECTION_STATUS_9 = 9; + + /** + * 项目异常处理状态 0 草稿 + */ + public static final int SECTION_EXCEPTION_STATE_0 = 0; + + /** + * 项目异常处理状态 1 已生效 + */ + public static final int SECTION_EXCEPTION_STATE_1 = 1; + + /** + * 项目异常处理状态 1 项目终止 + */ + public static final String SECTION_EXCEPTION_HANDLE_TYPE_1 = "handle_type_1"; + + /** + * 项目异常处理状态 2 再次发起采购 + */ + public static final String SECTION_EXCEPTION_HANDLE_TYPE_2 = "handle_type_2"; + + + /** + * 项目资审方式 资格预审 + */ + public static final String EXAMINATION_METHOD_1 = "examination_method_1"; + + /** + * 项目资审方式 资格后审 + */ + public static final String EXAMINATION_METHOD_2 = "examination_method_2"; + + /** + * 项目资审方式 集中资格预审 + */ + public static final String EXAMINATION_METHOD_3 = "examination_method_3"; + + /** + * 项目资审方式 资格预审招标 + */ + public static final String EXAMINATION_METHOD_4 = "examination_method_4"; + + + /** + * 组织方式 委托采购 + */ + public static final String ORGANIZATION_1 = "organization_1"; + + /** + * 组织方式 自主采购 + */ + public static final String ORGANIZATION_2 = "organization_2"; + + + /** + * 采购类型 货物 + */ + public static final String PROCUREMENT_TYPE_1 = "procurement_type_1"; + + + /** + * 采购类型 工程 + */ + public static final String PROCUREMENT_TYPE_2 = "procurement_type_2"; + + /** + * 采购类型 服务 + */ + public static final String PROCUREMENT_TYPE_3 = "procurement_type_3"; + + /** + * 采购类型 其他 + */ + public static final String PROCUREMENT_TYPE_4 = "procurement_type_4"; + + /** + * 项目采购方式 公开招标 + */ + public static final String PROCUREMENT_MODE_1 = "procurement_mode_1"; + + /** + * 项目采购方式 邀请招标 + */ + public static final String PROCUREMENT_MODE_2 = "procurement_mode_2"; + + /** + * 项目采购方式 公开比选 + */ + public static final String PROCUREMENT_MODE_3 = "procurement_mode_3"; + + /** + * 项目采购方式 公开招募 + */ + public static final String PROCUREMENT_MODE_4 = "procurement_mode_4"; + + /** + * 项目采购方式 竞争性谈判 + */ + public static final String PROCUREMENT_MODE_5 = "procurement_mode_5"; + + /** + * 项目采购方式 单一来源 + */ + public static final String PROCUREMENT_MODE_6 = "procurement_mode_6"; + + /** + * 项目采购方式 公开询价 + */ + public static final String PROCUREMENT_MODE_7 = "procurement_mode_7"; + + /** + * 项目采购方式 竞拍 + */ + public static final String PROCUREMENT_MODE_8 = "procurement_mode_8"; + + /** + * 项目采购方式 单一来源简化流程 + */ + public static final String PROCUREMENT_MODE_9 = "procurement_mode_9"; + + /** + * 资金来源 中央投资 + */ + public static final String FUNDS_PROVIDER_1 = "funds_provider_1"; + + /** + * 资金来源 国企自筹 + */ + public static final String FUNDS_PROVIDER_2 = "funds_provider_2"; + + /** + * 资金来源 地方政府投资 + */ + public static final String FUNDS_PROVIDER_3 = "funds_provider_3"; + + /** + * 资金来源 财政资金 + */ + public static final String FUNDS_PROVIDER_4 = "funds_provider_4"; + + /** + * 资金来源 外贷 + */ + public static final String FUNDS_PROVIDER_5 = "funds_provider_5"; + + /** + * 资金来源 其他 + */ + public static final String FUNDS_PROVIDER_6 = "funds_provider_6"; + + /** + * 评审次数 一次评审 + */ + public static final String RECRUITMENT_METHOD_1 = "recruitment_method_1"; + + /** + * 评审次数 多次评审 + */ + public static final String RECRUITMENT_METHOD_2 = "recruitment_method_2"; + + /** + * 评审次数 不定期评审 + */ + public static final String RECRUITMENT_METHOD_3 = "recruitment_method_3"; + + /** + * 比选方式 一阶段评审 + */ + public static final String SELECTION_METHOD_1 = "selection_method_1"; + + /** + * 比选方式 多阶段评审 + */ + public static final String SELECTION_METHOD_2 = "selection_method_2"; + + /** + * 评审方法 最低价法 + */ + public static final String EVAL_METHOD_1 = "eval_method_1"; + + /** + * 评审方法 综合评估法 + */ + public static final String EVAL_METHOD_2 = "eval_method_2"; + + /** + * 项目异常处理操作 新增 + */ + public static final String SECTION_EXCEPTION_SAVE = "1"; + + /** + * 项目异常处理操作 修改 + */ + public static final String SECTION_EXCEPTION_UPDATE = "2"; + + /** + * 项目异常处理操作 查询 + */ + public static final String SECTION_EXCEPTION_SELECT = "3"; + + /** + * 参与方式 邀请参与 + */ + public static final String PARTAKE_TYPE_1 = "partake_type_1"; + + /** + * 项目失败描述字典名 + */ + public static final String EXCEPTION_DESC = "exception_desc"; + + /** + * 项目异常字典名 + */ + public static final String EXCEPTION = "exception"; + + /** + * 重新评审 0 初始化 + */ + public static final int RE_EVALUATION_STATUS_0 = 0; + + /** + * 重新评审 1 申请审批 + */ + public static final int RE_EVALUATION_STATUS_1 = 1; + + /** + * 重新评审 2 审批通过 + */ + public static final int RE_EVALUATION_STATUS_2 = 2; + + /** + * 重新评审 9 审批不通过 + */ + public static final int RE_EVALUATION_STATUS_9 = 9; + + /** + * 项目评审 评审室 正常评标 标识 + */ + public static final int REVIEW_MARK_0 = 0; + + /** + * 项目异常处理是否发送失败公告 + */ + public static final int IS_SEND_MESSAGE_0 = 0; + + /** + * internal:用户中心人员; partner:合作方人员 + */ + public static final String START_USER_TYPE_PARTNER = "partner"; + + /** + * 是否使用客户端工具加解密 0 是 + */ + public static final String IS_IPASS_YES = "0"; + + /** + * 是否使用客户端工具加解密 1 否 + */ + public static final String IS_IPASS_NO = "1"; + + /** + * 评标专家是否与上次评标一致 0 是 1 否 + */ + public static final String IS_AGREEMENT_YES = "0"; + + /** + * 项目异常处理 公告状态0 未编辑 + */ + public static final int SEND_MESSAGE_STATUS_0 = 0; + + /** + * 项目异常处理 公告状态7 无需发布公告 + */ + public static final int SEND_MESSAGE_STATUS_7 = 7; + + /** + * 项目异常处理 公告状态5 发布成功 + */ + public static final int SEND_MESSAGE_STATUS_5 = 5; +} 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 new file mode 100644 index 0000000..bb8cdd1 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/common/ProjectExceptionEnum.java @@ -0,0 +1,123 @@ +package com.chinaunicom.mall.ebtp.project.common; + +import com.chinaunicom.mall.ebtp.common.exception.service.BusinessExceptionAssert; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 项目建档错误提示信息 + * @author daixc + * @date 2020/10/10 + */ +@Getter +@AllArgsConstructor +public enum ProjectExceptionEnum implements BusinessExceptionAssert { + + /** + * 数据为空 + */ + FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_FIND(110001, "项目委托单信息为空!"), + + FRAME_EXCEPTION_PROJECT_RECORD_NOT_FIND(110002, "项目建档信息为空!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_SAVE(110003, "项目委托单插入失败!"), + + FRAME_EXCEPTION_PROJECT_RECORD_NOT_SAVE(110004, "项目建档信息插入失败!"), + + FRAME_EXCEPTION_PROJECT_SECTION_NOT_FIND(110005, "项目标段信息为空!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_UPDATE(110006, "项目委托单信息修改失败!"), + + FRAME_EXCEPTION_PROJECT_RECORD_NOT_UPDATE(110007, "项目建档信息修改失败!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_STATE(110008, "项目委托信息状态发生改变,请刷新后重试!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_ERROR_STATE(110009, "推送接口数据已进入流程,不可以在改变数据!"), + + FRAME_EXCEPTION_PROJECT_RECORD_CHECK(110010, "标段有未维护信息,请先维护标段信息!"), + + FRAME_EXCEPTION_PROJECT_EXCEPTION_SAVE(110011, "项目异常信息插入失败!"), + + FRAME_EXCEPTION_PROJECT_EXCEPTION_UPDATE(110012, "项目异常信息修改失败"), + + FRAME_EXCEPTION_PROJECT_EXCEPTION_DELETE(110013, "项目异常信息删除失败!"), + + FRAME_EXCEPTION_PROJECT_EXCEPTION_NOT_FIND(110014, "项目异常信息为空!"), + + FRAME_EXCEPTION_PROJECT_EXCEPTION_NOT_STATE(110015, "项目异常信息状态发生改变,请刷新后重试!"), + + FRAME_EXCEPTION_PROJECT_SECTION_INIT_ERROR(110016, "标段信息初始化流程失败,请联系管理员!"), + + FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE(110017, "标段信息业务模块修改不正确,请先确认标段当前所在模块!"), + + FRAME_EXCEPTION_PROJECT_SECTION_FLOW_UPDATE_MODULE(110018, "标段信息业务模块记录插入失败,请联系管理员!"), + + FRAME_EXCEPTION_PROJECT_SECTION_INIT_SUPPLIER_ERROR(110019, "标段信息初始化邀请供应商信息失败,请联系管理员!"), + + FRAME_EXCEPTION_PROJECT_EXCEPTION_NOT_SECTION(110020, "项目标段通知招标服务异常,请联系管理员!"), + + FRAME_EXCEPTION_PROJECT_SECTION_FLOW_INIT_NOT_FIND(110021, "项目标段信息为空,请联系管理员!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_PURP_IMPLEMENT_NAME_EMPTY(110022, "项目委托信息实施项目为空!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_PURP_IMPLEMENT_ID_EMPTY(110023, "项目委托信息实施项目ID为空!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_BUSINESS_TYPE_EMPTY(110024, "项目委托信息业务类型为空!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_ORGANIZATIONAL_FORM_EMPTY(110025, "项目委托信息组织形式为空!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_ORGAN_NAME_EMPTY(110026, "项目委托信息机构名称为空!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_SUBOR_PROVINCE_EMPTY(110027, "项目委托信息所属省分为空!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_FUND_ORIGN_EMPTY(110028, "项目委托信息资金来源为空!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_TARGET_TYPE_EMPTY(110029, "项目委托信息标的类型为空!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_PURC_MODE_EMPTY(110030, "项目委托信息采购方式为空!"), + + FRAME_EXCEPTION_PROJECT_PURP_SUPER_VO_EMPTY(110031, "项目委托信息父项目信息为空!"), + + FRAME_EXCEPTION_PROJECT_PURP_BASE_INFO_VO_EMPTY(110032, "项目委托信息父项目子项目信息为空!"), + + FRAME_EXCEPTION_PROJECT_PROJ_BASE_INFO_VO_EMPTY(110033, "项目委托方案信息为空!"), + + FRAME_EXCEPTION_PROJECT_ASSET_TYPE_EMPTY(110034, "项目委托方案信息资产类型信息为空!"), + + FRAME_EXCEPTION_PROJECT_ASSET_VALUE_EMPTY(110035, "项目委托方案信息资产价值信息为空!"), + + FRAME_EXCEPTION_PROJECT_NUM_EMPTY(110036, "项目委托方案信息数量信息为空!"), + + FRAME_EXCEPTION_PROJECT_UNIT_EMPTY(110037, "项目委托方案信息计量单位信息为空!"), + + FRAME_EXCEPTION_PROJECT_SECTION_EXCEPTION_DELETE(110038, "项目异常标段信息删除失败!"), + + FRAME_EXCEPTION_PROJECT_EXCEPTION_UPDATE_ERROR(110039, "异常处理标段信息为空,请联系管理员!"), + + FRAME_EXCEPTION_PROJECT_EXCEPTION_INVITATION_FAIL_ERROR(110040, "异常通知采购系统失败,请联系管理员!"), + + FRAME_EXCEPTION_PROJECT_ENTRUST_FIND_PUR_ERROR(110041, "查询采购实施项目信息失败!"), + + FRAME_EXCEPTION_PROJECT_RE_EVAL_SAVE_ERROR(110042, "标段所处环节不可以进行重新评标!"), + + FRAME_EXCEPTION_PROJECT_RE_EVAL_FIND_STATUS_ERROR(110043, "当前重新评审数据有初始化和申请审批状态,不可以新增!"), + + FRAME_EXCEPTION_PROJECT_RE_EVAL_NOT_FIND(110044, "重新评标信息为空!"), + + FRAME_EXCEPTION_PROJECT_ASSESS_ROOM_NOT_FIND(110045, "项目标段轮次信息查询失败!"), + + FRAME_EXCEPTION_PROJECT_EXCEPTION_STATUS_ERROR(110046, "项目异常信息的失败公告状态为审批通过才可以生效!"), + + FRAME_EXCEPTION_ASSESS_ROOM_NOT_FIND(110047, "项目标段评审室信息查询失败!"), + + ; + + /** + * 返回码 + */ + private int code; + /** + * 返回消息 + */ + private String message; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/config/SwaggerConfiguration.java b/src/main/java/com/chinaunicom/mall/ebtp/project/config/SwaggerConfiguration.java new file mode 100644 index 0000000..6a98dab --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/config/SwaggerConfiguration.java @@ -0,0 +1,52 @@ +package com.chinaunicom.mall.ebtp.project.config; + + +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; + +@EnableKnife4j +@Configuration +public class SwaggerConfiguration { + + @Value("${spring.application.name}") + private String groupName; + + @Value("${server.port}") + private String port; + + @Value("${mconfig.host-name}") + private String hostName; + + @Bean + public Docket tenderRestApi() { + return new Docket(DocumentationType.SWAGGER_2) + .groupName(groupName) + .apiInfo(tenderApiInfo()) + .select() + .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) + .paths(PathSelectors.any()) + .build(); + } + + @Bean + public ApiInfo tenderApiInfo() { + String url = hostName+":"+port; + return new ApiInfoBuilder() + .title("商城3.0项目建档接口文档") + .description("商城3.0平台项目建档接口文档") + .termsOfServiceUrl(url) + .contact(new Contact("商城3.0项目建档", url, "daixingcheng@163.com")) + .version("1.0") + .build(); + } +} \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dict/controller/DictProjectController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/controller/DictProjectController.java new file mode 100644 index 0000000..dc8698b --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/controller/DictProjectController.java @@ -0,0 +1,105 @@ +package com.chinaunicom.mall.ebtp.project.dict.controller; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.dict.entity.DictProject; +import com.chinaunicom.mall.ebtp.project.dict.service.IDictProjectService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; +import java.util.Map; + +/** + * 字典查询 + * + * @author daixc + * @date 2020/11/02 + */ +@RestController +@Api(tags = "字典查询") +@RequestMapping("/v1/dictProject") +public class DictProjectController{ + + @Resource + private IDictProjectService dictProjectService; + + /** + * 插入新数据 + * + * @param dictProject 字典对象 + * + * @return 返回结果 + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid DictProject dictProject){ + + boolean save = dictProjectService.save(dictProject); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param dictProject 字典对象 + * + * @return 返回结果 + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "对象数据", required = true) @RequestBody DictProject dictProject){ + + + return BaseResponse.success(dictProjectService.updateById(dictProject)); + } + + /** + * 查询数据 + * + * @param id ID + * + * @return 返回结果 + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable String id){ + + DictProject dictProject = dictProjectService.getById(id); + + return BaseResponse.success(dictProject); + } + + + /** + * 查询字典数据 + * @param parentCode 字典父类code + * @param toParentCode 字典父类对应的父类code + * @return 返回结果 + */ + @ApiOperation("查询数据集合") + @GetMapping("/getDictList") + public BaseResponse> getDictList(@ApiParam(value = "字典父类code", required = true)String parentCode, + @ApiParam(value = "字典父类对应的父类code", required = true)String toParentCode){ + + return BaseResponse.success(dictProjectService.getDictList(parentCode,toParentCode)); + } + + + /** + * 字典缓存查询数据 + * @return 返回结果 + */ + @ApiOperation("字典缓存查询数据") + @GetMapping("/refreshDictCache") + public BaseResponse>> refreshDictCache(){ + + return BaseResponse.success(dictProjectService.refreshDictCache()); + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dict/controller/DictRegionController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/controller/DictRegionController.java new file mode 100644 index 0000000..5a05d1a --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/controller/DictRegionController.java @@ -0,0 +1,92 @@ +package com.chinaunicom.mall.ebtp.project.dict.controller; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.dict.entity.DictRegion; +import com.chinaunicom.mall.ebtp.project.dict.service.IDictRegionService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +/** + * 全国行政区域信息 + * @author daixc + * @date 2020/10/29 + */ +@RestController +@Api(tags = "全国行政区划表") +@RequestMapping("/v1/dictRegion") +public class DictRegionController{ + + @Resource + private IDictRegionService idictRegionService; + + /** + * 插入新数据 + * + * @param dictRegion 字典信息 + * + * @return 返回结果 + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid DictRegion dictRegion){ + + boolean save = idictRegionService.save(dictRegion); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param dictRegion 字典信息 + * + * @return 返回结果 + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "对象数据", required = true) @RequestBody DictRegion dictRegion){ + + return BaseResponse.success(idictRegionService.updateById(dictRegion)); + } + + /** + * 查询数据 + * + * @param id id值 + * + * @return 返回结果 + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable String id){ + + DictRegion dictRegion = idictRegionService.getById(id); + + return BaseResponse.success(dictRegion); + } + + /** + * 查询数据 + * + * @param pId 父类id值 + * + * @return 返回结果 + */ + @ApiOperation("查询数据") + @GetMapping("/getChild") + public BaseResponse> getChild(@ApiParam(value = "主键id", required = true) @RequestParam(name = "pId") String pId){ + + List dictRegion = idictRegionService.getChild(pId); + + return BaseResponse.success(dictRegion); + } + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/DictProjectMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/DictProjectMapper.java new file mode 100644 index 0000000..65d38be --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/DictProjectMapper.java @@ -0,0 +1,16 @@ +package com.chinaunicom.mall.ebtp.project.dict.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.dict.entity.DictProject; + + +/** + * 字典表mapper + * @author daixc + * @date 2020/11/03 + */ +public interface DictProjectMapper extends IBaseMapper { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/DictRegionMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/DictRegionMapper.java new file mode 100644 index 0000000..3578c3f --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/DictRegionMapper.java @@ -0,0 +1,10 @@ +package com.chinaunicom.mall.ebtp.project.dict.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.dict.entity.DictRegion; + +public interface DictRegionMapper extends IBaseMapper { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/mapper/DictProjectMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/mapper/DictProjectMapper.xml new file mode 100644 index 0000000..517c6ce --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/mapper/DictProjectMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + update dict_project + set + delete_flag="deleted" + where ID=#{id} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/mapper/DictRegionMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/mapper/DictRegionMapper.xml new file mode 100644 index 0000000..34a80a0 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/dao/mapper/DictRegionMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + update dict_region + set + delete_flag="deleted" + where ID=#{id} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dict/entity/DictProject.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/entity/DictProject.java new file mode 100644 index 0000000..ac81012 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/entity/DictProject.java @@ -0,0 +1,80 @@ +package com.chinaunicom.mall.ebtp.project.dict.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 实体类 DictProject + * + * @author daixc + * @date 2020/11/02 + */ +@Data +@Accessors(chain = true) +@ApiModel +@TableName(value = "dict_project", autoResultMap = true) +public class DictProject implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @ApiModelProperty(value = "编号") + private Integer id; + + /** + * 字典code + */ + @ApiModelProperty(value = "字典code") + private String code; + + /** + * 字典名称 + */ + @ApiModelProperty(value = "字典名称") + private String dicName; + + /** + * 父类code + */ + @ApiModelProperty(value = "父类code") + private String parentCode; + + /** + * 父类类型 + */ + @ApiModelProperty(value = "父类类型") + private String parentType; + + /** + * 是否应用 + */ + @ApiModelProperty(value = "是否应用") + private String useFlag; + + /** + * 是否默认 + */ + @ApiModelProperty(value = "是否默认") + private String defaultFlag; + + /** + * 排序 + */ + @ApiModelProperty(value = "排序") + private Integer orderFlag; + + + /** + * 描述 + */ + @ApiModelProperty(value = "描述") + private String description; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dict/entity/DictRegion.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/entity/DictRegion.java new file mode 100644 index 0000000..90ecc16 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/entity/DictRegion.java @@ -0,0 +1,50 @@ +package com.chinaunicom.mall.ebtp.project.dict.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 全国行政区域实体类 DictRegion + * + * @author daixc + * @date 2020/10/29 + */ +@Data +@Accessors(chain = true) +@ApiModel("全国行政区域实体类") +@TableName(value = "dict_region", autoResultMap = true) +public class DictRegion implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ApiModelProperty(value = "id") + private String id; + + /** + * 上级id + */ + @ApiModelProperty(value = "上级id") + private String pId; + + /** + * 名称 + */ + @ApiModelProperty(value = "名称") + private String name; + + /** + * 类型:0-省,1-市,2-县 + */ + @ApiModelProperty(value = "类型:0-省,1-市,2-县") + private String level; + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/IDictProjectService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/IDictProjectService.java new file mode 100644 index 0000000..585d83f --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/IDictProjectService.java @@ -0,0 +1,40 @@ +package com.chinaunicom.mall.ebtp.project.dict.service; + + +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.dict.entity.DictProject; + +import java.util.List; +import java.util.Map; + +/** + * 对数据表 dict_project 操作的 service + * @author daixc + * @date 2020/11/03 + */ +public interface IDictProjectService extends IBaseService{ + + + /** + * 字典缓存查询数据 + * @return 返回结果 + */ + Map> refreshDictCache(); + + /** + * 查询字典数据 + * @param parentCode 字典父类code + * @param toParentCode 字典父类对应的父类code + * @return 返回结果 + */ + List getDictList(String parentCode, String toParentCode); + + /** + * 查询字典数据 + * @param parentCode 字典父类code + * @param toParentCode 字典父类对应的父类code + * @param code 字典code + * @return 返回结果 + */ + DictProject getDict(String code,String parentCode, String toParentCode); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/IDictRegionService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/IDictRegionService.java new file mode 100644 index 0000000..ddebe68 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/IDictRegionService.java @@ -0,0 +1,24 @@ +package com.chinaunicom.mall.ebtp.project.dict.service; + + +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.dict.entity.DictRegion; + + +import java.util.List; + +/** + * 对数据表 dict_region 操作的 service + * @author Auto create + * + */ +public interface IDictRegionService extends IBaseService{ + + + /** + * 查询子元素 + * @param pId 父ID + * @return + */ + List getChild(String pId); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/impl/DictProjectServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/impl/DictProjectServiceImpl.java new file mode 100644 index 0000000..fcc1f97 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/impl/DictProjectServiceImpl.java @@ -0,0 +1,78 @@ +package com.chinaunicom.mall.ebtp.project.dict.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; + +import com.chinaunicom.mall.ebtp.project.dict.dao.DictProjectMapper; +import com.chinaunicom.mall.ebtp.project.dict.entity.DictProject; +import com.chinaunicom.mall.ebtp.project.dict.service.IDictProjectService; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 对数据表 dict_project 操作的 serviceImpl + * @author daixc + * @date 2020/11/03 + */ +@Service +public class DictProjectServiceImpl extends BaseServiceImpl implements IDictProjectService { + + + + + private static final String COMMON_STR = "="; + + private static final String USE_FLAG_YES = "0"; + + /** + * 字典缓存查询数据 + */ + @Override + public Map> refreshDictCache(){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("use_flag",USE_FLAG_YES); + + queryWrapper.orderByAsc("id").orderByAsc("order_flag"); + + List dictProjects = this.list(queryWrapper); + + Map> dictMap = dictProjects.stream().collect(Collectors.groupingBy(DictProject::getParentType)); + + return dictMap; + } + + + /** + * 查询字典集合 + * @param parentCode 字典父类code + * @param toParentCode 字典父类对应的父类code + * @return + */ + @Override + public List getDictList(String parentCode, String toParentCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("use_flag", USE_FLAG_YES); + queryWrapper.eq("parent_type", parentCode + COMMON_STR + toParentCode); + queryWrapper.orderByAsc("order_flag"); + + return this.list(queryWrapper); + + } + + @Override + public DictProject getDict(String code, String parentCode, String toParentCode) { + + DictProject dictProject = null; + List dictProjectList = getDictList(parentCode,toParentCode); + if(dictProjectList.size() > 0){ + dictProject = dictProjectList.stream().filter(n -> n.getCode().equals(code)).collect(Collectors.toList()).get(0); + } + return dictProject; + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/impl/DictRegionServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/impl/DictRegionServiceImpl.java new file mode 100644 index 0000000..45c575c --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dict/service/impl/DictRegionServiceImpl.java @@ -0,0 +1,35 @@ +package com.chinaunicom.mall.ebtp.project.dict.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; +import com.chinaunicom.mall.ebtp.project.dict.dao.DictRegionMapper; +import com.chinaunicom.mall.ebtp.project.dict.entity.DictRegion; +import com.chinaunicom.mall.ebtp.project.dict.service.IDictRegionService; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 对数据表 dict_region 操作的 serviceImpl + * @author Auto create + * + */ +@Service +public class DictRegionServiceImpl extends BaseServiceImpl implements IDictRegionService { + + /** + * 父类ID默认值 + */ + private static final String P_ID = "0"; + + @Override + public List getChild(String pId) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("p_id", StringUtils.isNotBlank(pId)?pId : P_ID); + queryWrapper.orderByAsc("id"); + return this.list(queryWrapper); + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/controller/DictChooseProcessController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/controller/DictChooseProcessController.java new file mode 100644 index 0000000..9310ac3 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/controller/DictChooseProcessController.java @@ -0,0 +1,86 @@ +package com.chinaunicom.mall.ebtp.project.dictchooseprocess.controller; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; + +import com.chinaunicom.mall.ebtp.project.dictchooseprocess.entity.DictChooseProcess; +import com.chinaunicom.mall.ebtp.project.dictchooseprocess.service.IDictChooseProcessService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +@RestController +@Api(tags = "标段审核流程字典项") +@RequestMapping("/v1/dictchooseprocess") +public class DictChooseProcessController{ + + @Resource + private IDictChooseProcessService dictChooseProcessService; + + /** + * 插入新数据 + * + * @param dictChooseProcess 审核流程字典 + * + * @return 返回结果 + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid DictChooseProcess dictChooseProcess){ + + boolean save = dictChooseProcessService.save(dictChooseProcess); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param dictChooseProcess 审核流程字典 + * + * @return 返回结果 + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "对象数据", required = true) @RequestBody DictChooseProcess dictChooseProcess){ + + return BaseResponse.success(dictChooseProcessService.updateById(dictChooseProcess)); + } + + /** + * 查询数据 + * + * @param id 审核流程字典id + * + * @return 返回结果 + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable String id){ + + DictChooseProcess dictChooseProcess = dictChooseProcessService.getById(id); + + return BaseResponse.success(dictChooseProcess); + } + + /** + * 查询审核流程字典集合 + * + * @param dictChooseProcess 查询条件 + * + * @return 返回结果 + */ + @ApiOperation("查询审核流程字典集合") + @PostMapping("/getList") + public BaseResponse> getList(@ApiParam(value = "对象数据", required = true) @RequestBody DictChooseProcess dictChooseProcess){ + + return BaseResponse.success(dictChooseProcessService.getList(dictChooseProcess)); + } + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/dao/DictChooseProcessMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/dao/DictChooseProcessMapper.java new file mode 100644 index 0000000..ad11fa0 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/dao/DictChooseProcessMapper.java @@ -0,0 +1,10 @@ +package com.chinaunicom.mall.ebtp.project.dictchooseprocess.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.dictchooseprocess.entity.DictChooseProcess; + +public interface DictChooseProcessMapper extends IBaseMapper { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/dao/mapper/DictChooseProcessMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/dao/mapper/DictChooseProcessMapper.xml new file mode 100644 index 0000000..c95ffda --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/dao/mapper/DictChooseProcessMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update dict_choose_process + set + delete_flag="deleted" + where ID=#{id} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/entity/DictChooseProcess.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/entity/DictChooseProcess.java new file mode 100644 index 0000000..a93f787 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/entity/DictChooseProcess.java @@ -0,0 +1,99 @@ +package com.chinaunicom.mall.ebtp.project.dictchooseprocess.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 实体类 DictChooseProcess + * + * @author daixc + * @date 2020/11/23 + */ +@Data +@Accessors(chain = true) +@ApiModel +@TableName(value = "dict_choose_process", autoResultMap = true) +public class DictChooseProcess extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @ApiModelProperty(value = "编号") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 流程标识 + */ + @ApiModelProperty(value = "流程标识") + private String chooseProcess; + + /** + * 流程名称 + */ + @ApiModelProperty(value = "流程名称") + private String chooseProcessName; + + /** + * 采购方式 + */ + @ApiModelProperty(value = "采购方式") + private String procurementMode; + + /** + * 资审|招募方式 + */ + @ApiModelProperty(value = "资审|招募方式") + private String examinationMethod; + + /** + * 比选方式(比选) + */ + @ApiModelProperty(value = "评价方法") + private String levelOne; + + /** + * 比选方式(比选) + */ + @ApiModelProperty(value = "比选方式(比选)") + private String levelTwo; + + /** + * 评审规则 + */ + @ApiModelProperty(value = "评审规则") + private String levelThree; + + /** + * 资审入围方式(合格制 | 有限数量制) + */ + @ApiModelProperty(value = "资审入围方式(合格制 | 有限数量制)") + private String levelFour; + + + /** + * 流程ID + */ + @ApiModelProperty(value = "流程ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long flowId; + + /** + * 候审流程ID + */ + @ApiModelProperty(value = "候审流程ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long qualFlowId; + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/service/IDictChooseProcessService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/service/IDictChooseProcessService.java new file mode 100644 index 0000000..7181202 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/service/IDictChooseProcessService.java @@ -0,0 +1,23 @@ +package com.chinaunicom.mall.ebtp.project.dictchooseprocess.service; + + +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.dictchooseprocess.entity.DictChooseProcess; + +import java.util.List; + +/** + * 对数据表 dict_choose_process 操作的 service + * @author Auto create + * + */ +public interface IDictChooseProcessService extends IBaseService{ + + + /** + * 查询审核流程字典集合 + * @param chooseProcess 流程字典集合 + * @return + */ + List getList(DictChooseProcess chooseProcess); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/service/impl/DictChooseProcessServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/service/impl/DictChooseProcessServiceImpl.java new file mode 100644 index 0000000..741bdbb --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/dictchooseprocess/service/impl/DictChooseProcessServiceImpl.java @@ -0,0 +1,54 @@ +package com.chinaunicom.mall.ebtp.project.dictchooseprocess.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.chinaunicom.mall.ebtp.project.dictchooseprocess.dao.DictChooseProcessMapper; +import com.chinaunicom.mall.ebtp.project.dictchooseprocess.entity.DictChooseProcess; +import com.chinaunicom.mall.ebtp.project.dictchooseprocess.service.IDictChooseProcessService; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Service; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; + +import java.util.List; + +/** + * 对数据表 dict_choose_process 操作的 serviceImpl + * @author Auto create + * + */ +@Service +public class DictChooseProcessServiceImpl extends BaseServiceImpl implements IDictChooseProcessService { + + + @Override + public List getList(DictChooseProcess chooseProcess) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + + if(StringUtils.isNotBlank(chooseProcess.getProcurementMode())){ + queryWrapper.eq("procurement_mode",chooseProcess.getProcurementMode()); + } + + if(StringUtils.isNotBlank(chooseProcess.getChooseProcess())){ + queryWrapper.eq("choose_process",chooseProcess.getChooseProcess()); + } + + if(StringUtils.isNotBlank(chooseProcess.getExaminationMethod())){ + queryWrapper.eq("examination_method",chooseProcess.getExaminationMethod()); + } + + if(StringUtils.isNotBlank(chooseProcess.getLevelOne())){ + queryWrapper.eq("level_one",chooseProcess.getLevelOne()); + } + + if(StringUtils.isNotBlank(chooseProcess.getLevelTwo())){ + queryWrapper.eq("level_two",chooseProcess.getLevelTwo()); + } + + if(StringUtils.isNotBlank(chooseProcess.getLevelThree())){ + queryWrapper.eq("level_three",chooseProcess.getLevelThree()); + } + + return this.list(queryWrapper); + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpCalibrationApi.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpCalibrationApi.java new file mode 100644 index 0000000..e168a1b --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpCalibrationApi.java @@ -0,0 +1,26 @@ +package com.chinaunicom.mall.ebtp.project.feign; + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.common.constant.ServiceNameConstants; +import com.chinaunicom.mall.ebtp.project.feign.entity.BizAgainSection; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * 标段定标接口 + * @author daixc + * @date 2020/11/25 + */ +@FeignClient(value = ServiceNameConstants.CALIBRATION_SERVICE) +public interface EbtpCalibrationApi { + + /** + * 查询可发起重新评标的标段以及当前轮次 + * + * @param bsId 标段ID + * @return 返回结果 + */ + @GetMapping("/v1/bizbidresultnotice/getReEvaluationBsByBsId") + BaseResponse getReEvaluationBsByBsId(@RequestParam(name = "bsId") String bsId); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpMallBidApi.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpMallBidApi.java new file mode 100644 index 0000000..e6795f1 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpMallBidApi.java @@ -0,0 +1,62 @@ +package com.chinaunicom.mall.ebtp.project.feign; + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.common.constant.ServiceNameConstants; +import com.chinaunicom.mall.ebtp.project.feign.entity.AgainRoomVO; +import com.chinaunicom.mall.ebtp.project.feign.entity.AnnoVO; +import com.chinaunicom.mall.ebtp.project.feign.fallback.EbtpMallBidClientFallback; +import com.chinaunicom.mall.ebtp.project.feign.fallback.EbtpMallProcessClientFallback; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplierVO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * 标段出始化流程 + * @author daixc + * @date 2020/11/25 + */ +@FeignClient(value = ServiceNameConstants.BID_SERVICE,fallbackFactory = EbtpMallBidClientFallback.class) +public interface EbtpMallBidApi { + + /** + * 标段异常通知项目招标接口 + * @param sectionIds 标段ID集合 + * @return 返回结果 + */ + @PutMapping("/v1/anno/abnormal") + BaseResponse abnormal(@RequestBody List sectionIds); + + + /** + * 根据委托的供应商插入邀请函供应商列表 + * + * @param list 供应商集合 + * @return 返回结果 + */ + @PostMapping("/v1/resp/entrustInsert") + BaseResponse entrustInsert(@RequestBody List list); + + /** + * 复制招标文件 + * + * @param againRoomVO + * @return + */ + + @PostMapping("/v1/document/copyDocument") + BaseResponse copyDocument(@RequestBody AgainRoomVO againRoomVO); + + /** + * 根据异常主键ids 查询关联的公告 + * + * @param abnormalIds 异常主键id + * @return + */ + @PostMapping("/v1/anno/failList") + BaseResponse> getAnnoStatus(@RequestBody List abnormalIds); + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpMallProcessApi.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpMallProcessApi.java new file mode 100644 index 0000000..8a92c9a --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpMallProcessApi.java @@ -0,0 +1,73 @@ +package com.chinaunicom.mall.ebtp.project.feign; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.common.config.FeignConfig; +import com.chinaunicom.mall.ebtp.common.constant.ServiceNameConstants; +import com.chinaunicom.mall.ebtp.project.feign.entity.*; +import com.chinaunicom.mall.ebtp.project.feign.fallback.EbtpMallProcessClientFallback; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * 标段出始化流程 + * @author daixc + * @date 2020/11/25 + */ +@FeignClient(value = ServiceNameConstants.PROCESS_SERVICE,fallbackFactory = EbtpMallProcessClientFallback.class) +public interface EbtpMallProcessApi { + + /** + * 评审室信息初始化 + * @param tpId 项目Id + * @param sectionMap 标包信息 + * @param preStatus 是否资格预审 + * @return 返回结果 + */ + @PostMapping("/v1/bizassessroom/initialize") + BaseResponse initialize(@RequestParam(name = "tpId") Long tpId, + @RequestBody Map sectionMap, + @RequestParam(name = "preStatus") Boolean preStatus); + /** + * 评审室信息初始化 + * @param tpId 项目Id + * @param sectionId 标包信息 + * @param roomSort 第几轮评审(招募多轮) 不是招募多轮 默认 1 + * @return 返回结果 + */ + @PostMapping("/v1/bizassessroom/again/initialize") + BaseResponse againinitialize(@RequestParam(name = "tpId") Long tpId, + @RequestParam(name = "sectionId") Long sectionId, + @RequestParam(name = "roomSort") Integer roomSort); + + + /** + * 获取评审流程信息 + * @param dictProjectConfig + * @return + */ + @PostMapping("/v1/projectconfig/query") + BaseResponse> getManagerList(@RequestBody DictProjectConfig dictProjectConfig); + + /** + * 获取标段评审室信息 + * @param bizAssessRoomVO 评审室信息 + * @return 返回结果 + */ + @PostMapping("/v1/bizassessroom/listAll") + BaseResponse> listAll(@RequestBody BizAssessRoom bizAssessRoomVO); + + + /** + * 复制评委会成员信息 + * @param oldRoomId 被复制的评审室ID + * @param newRoomId 新的评审室ID + * @return 返回结果 + */ + @GetMapping("/v1/jury/copy") + BaseResponse copyJury(@RequestParam(name = "oldRoomId") Long oldRoomId, + @RequestParam(name = "newRoomId") Long newRoomId); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpRespsApi.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpRespsApi.java new file mode 100644 index 0000000..a08b530 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpRespsApi.java @@ -0,0 +1,25 @@ +package com.chinaunicom.mall.ebtp.project.feign; + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.common.constant.ServiceNameConstants; +import com.chinaunicom.mall.ebtp.project.feign.entity.AgainRoomVO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * 标段应答文件 + * @author daixc + * @date 2020/11/25 + */ +@FeignClient(value = ServiceNameConstants.RESPS_SERVICE) +public interface EbtpRespsApi { + + /** + * 复制应答文件信息 + * @param againRoom 参数 + * @return 返回结果 + */ + @PostMapping("/copyTdocByAgainRoom") + BaseResponse copyTdocByAgainRoom(@RequestBody AgainRoomVO againRoom); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpRsmsApi.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpRsmsApi.java new file mode 100644 index 0000000..3b7c8c2 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpRsmsApi.java @@ -0,0 +1,25 @@ +package com.chinaunicom.mall.ebtp.project.feign; + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.common.constant.ServiceNameConstants; +import com.chinaunicom.mall.ebtp.project.feign.entity.AgainRoomVO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * 标段应答文件 + * @author daixc + * @date 2020/11/25 + */ +@FeignClient(value = ServiceNameConstants.RSMS_SERVICE) +public interface EbtpRsmsApi { + + /** + * 评审设置copy + * @param againRoomVO 参数 + * @return 返回结果 + */ + @PostMapping("/v1/review/config/detail/again") + BaseResponse again(@RequestBody AgainRoomVO againRoomVO); +} 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 new file mode 100644 index 0000000..c62bd2c --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/EbtpTenderApi.java @@ -0,0 +1,28 @@ +package com.chinaunicom.mall.ebtp.project.feign; + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.common.constant.ServiceNameConstants; +import com.chinaunicom.mall.ebtp.project.feign.entity.AgainRoomVO; +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; + +/** + * 标段投标微服务 + * @author daixc + * @date 2020/11/25 + */ +@FeignClient(value = ServiceNameConstants.TENDER_SERVICE) +public interface EbtpTenderApi { + + /** + * 重新评标复制供应商相关信息 + * @param againRoomVO 重新评标入参 + * @param roomId 旧评审室id + * @return 返回结果 + */ + @PostMapping("/v1/supplier_register/review_again") + BaseResponse reviewAgain(@RequestBody AgainRoomVO againRoomVO, + @RequestParam("roomId") Long roomId); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/MallPurpApi.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/MallPurpApi.java new file mode 100644 index 0000000..9089c86 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/MallPurpApi.java @@ -0,0 +1,45 @@ +package com.chinaunicom.mall.ebtp.project.feign; + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.feign.fallback.EbtpProjectClientFallback; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpImplementSendVO; +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 java.util.List; + +/** + * 调用采购微服务 + * @author daixc + * @date 2020/11/25 + */ +//@FeignClient(value = "${mconfig.service-name-purp}") +@FeignClient(name="mall-purp", url = "http://10.92.119.64:7777/api/mall-purp" ,fallbackFactory = EbtpProjectClientFallback.class) +public interface MallPurpApi { + /** + * 方案招标失败接口 + * + * @param purpImplmentId 实施项目id + * @param projIds 方案id集合 + * @param failStatus 招标失败code + * @param failCause 招标失败原因 + */ + @PostMapping("/v1/purpImplement/projInvitationFail") + BaseResponse projInvitationFail(@RequestParam("purpImplmentId") String purpImplmentId, + @RequestBody List projIds, + @RequestParam("failStatus") String failStatus, + @RequestParam("failCause") String failCause); + + + /** + * 推送信息查询实施项目信息 + * @param purpImplmentId 项目实施ID + * @return 返回结果 + */ + @PostMapping("/v1/purpBaseInfo/findDataByPurpImplmentId") + BaseResponse findDataByPurpImplmentId(@RequestParam("purpImplmentId") Long purpImplmentId); + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/WfapApi.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/WfapApi.java new file mode 100644 index 0000000..b4f74f7 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/WfapApi.java @@ -0,0 +1,26 @@ +package com.chinaunicom.mall.ebtp.project.feign; + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.feign.entity.Approve; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * 重新评审 流程发起API + * @author daixc + * @date 2020/12/21 + */ +//@FeignClient(value = "${mconfig.service-name-wfap}") +@FeignClient(name="mall-wfap",url = "http://353u66p423.wicp.vip:48187/api/wfap/") +public interface WfapApi { + + + /** + * 方案招标失败接口 + * @param approve 实施项目id + * @return 返回结果 + */ + @PostMapping("/v1/approve/auto/audit/start") + BaseResponse start(@RequestBody Approve approve); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/AgainRoomVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/AgainRoomVO.java new file mode 100644 index 0000000..11213bd --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/AgainRoomVO.java @@ -0,0 +1,28 @@ +package com.chinaunicom.mall.ebtp.project.feign.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +/** + * @author dino + * @date 2020/10/21 13:14 + */ +@Data +public class AgainRoomVO { + + + @ApiModelProperty(value = "重新评审的新的评审室ID") + private Long roomId; + + + @ApiModelProperty(value = "评审轮次<旧轮次ID,新轮次ID>") + private Map turnMap; + + + @ApiModelProperty(value = "业务数据对象") + private Map dataMap; + +} + diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/AnnoVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/AnnoVO.java new file mode 100644 index 0000000..d2b0809 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/AnnoVO.java @@ -0,0 +1,57 @@ +package com.chinaunicom.mall.ebtp.project.feign.entity; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; + +/** + * 实体类 BizBidAnno + * + * @auto.generated + */ +@Data +@Accessors(chain = true) +@ApiModel +public class AnnoVO implements Serializable { + + @ApiModelProperty(value = "主键id") + @JsonInclude(JsonInclude.Include.NON_NULL) + private Long id; + + /** + * 异常ID + */ + @ApiModelProperty(value = "异常ID") + @JsonInclude(JsonInclude.Include.NON_NULL) + private String csAnnoId; + + + /** + * 附件集id + */ + @ApiModelProperty(value = "附件集id") + @JsonInclude(JsonInclude.Include.NON_NULL) + private Long attDatasetId; + + + /** + * 标题 + */ + @ApiModelProperty(value = "标题") + @NotEmpty(message = "标题不能为空") + private String annoTitle; + + + /** + * 业务状态(1:起草,2:已提交,3已审批,4:已拒绝,5已发布,6:发布失败,9:异常) + */ + @ApiModelProperty(value = "业务状态(1:起草,2:已提交,3已审批,4:已拒绝,5已发布,6:发布失败,9:异常)") + private Integer status; + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/Approve.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/Approve.java new file mode 100644 index 0000000..7c55986 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/Approve.java @@ -0,0 +1,73 @@ +package com.chinaunicom.mall.ebtp.project.feign.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 调用外部流程信息 + * @author daixc + * @date 2020/12/21 + */ +@Data +@Accessors(chain = true) +@ApiModel("调用外部流程信息") +@TableName(autoResultMap = true) +public class Approve implements Serializable { + + @ApiModelProperty(value = "单据主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long dataPrimarykeyId; + + @ApiModelProperty(value = "单据编号") + private String proFormNo; + + @ApiModelProperty(value = "单据名称") + private String proFormName; + + @ApiModelProperty(value = "业务单据主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long bizId; + + @ApiModelProperty(value = "业务单据编号") + private String bizNo; + + @ApiModelProperty(value = "业务单据名称") + private String bizName; + + @ApiModelProperty(value = "流程类别编码") + private String wfSectionNo; + + @ApiModelProperty(value = "流程类别名称") + private String wfSectionName; + + @ApiModelProperty(value = "租户id") + private String tenantId; + + @ApiModelProperty(value = "orgOu") + private String orgOu; + + @ApiModelProperty(value = "cumail") + private String cumail; + + @ApiModelProperty(value = "业务类型(001:寻源; 002:招募; 003:处置;)") + private String businessType; + + @ApiModelProperty(value = "子业务类型(001:需求; 002:项目; 003:公告;)") + private String subBusinessType; + + @ApiModelProperty(value = "子业务类型(001:需求; 002:项目; 003:公告;)") + private String auctionType; + + @ApiModelProperty(value = "发起人姓名") + private String startUserName; + + @ApiModelProperty(value = "发起人类型 是否联通内部用户 partner 不是") + private String startUserType; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/BizAgainSection.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/BizAgainSection.java new file mode 100644 index 0000000..862cddb --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/BizAgainSection.java @@ -0,0 +1,36 @@ +package com.chinaunicom.mall.ebtp.project.feign.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 重新评标实体类 + * + * @auto.generated + */ +@Data +@Accessors(chain = true) +public class BizAgainSection implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 是否可以重新评标 + */ + private Boolean againType; + /** + * 说明 + */ + private String message; + /** + * 标段名称 + */ + private String sectionId; + /** + * 评审室ID + */ + private String assessId; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/BizAssessRoom.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/BizAssessRoom.java new file mode 100644 index 0000000..4d02cff --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/BizAssessRoom.java @@ -0,0 +1,122 @@ +package com.chinaunicom.mall.ebtp.project.feign.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.chinaunicom.mall.ebtp.common.config.CustomLocalDateTimeTypeHandler; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 实体类 BizAssessRoom + * + * @auto.generated + */ +@Data +@Accessors(chain = true) +@ApiModel("实体类") +@TableName(autoResultMap = true) +public class BizAssessRoom extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "主键") + private Long id; + + /** + * 项目id + */ + @ApiModelProperty(value = "项目id") + private Long tpId; + + /** + * 标包id + */ + @ApiModelProperty(value = "标包id") + private Long sectionId; + + /** + * 评审室名称 + */ + @ApiModelProperty(value = "评审室名称") + private String roomName; + + /** + * 验证码 + */ + @ApiModelProperty(value = "验证码") + private Integer verificationCode; + + /** + * 评审室类型 + */ + @ApiModelProperty(value = "评审室类型") + private Integer roomType; + + /** + * 评审室排序 + */ + @ApiModelProperty(value = "评审室排序") + private Integer roomSort; + + /** + * 重新评审标识:0-正常评审(默认),1-重新评审 + */ + @ApiModelProperty(value = "重新评审标识:0-正常评审(默认),1-重新评审") + private Integer reviewMark; + + /** + * 重新评审排序 + */ + @ApiModelProperty(value = "重新评审排序") + private Integer reviewSort; + + /** + * 状态 + */ + @ApiModelProperty(value = "状态") + private Integer status; + + /** + * 开始评审时间 + */ + @ApiModelProperty(value = "开始评审时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(typeHandler = CustomLocalDateTimeTypeHandler.class) + private LocalDateTime openTime; + + /** + * 评审地点 + */ + @ApiModelProperty(value = "评审地点") + private String openAddress; + + /** + * 关闭评审室原因 + */ + @ApiModelProperty(value = "关闭评审室原因") + private String closeReson; + + /** + * 本轮次评审应答截止时间 + */ + @ApiModelProperty(value = "本轮次评审应答截止时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(typeHandler = CustomLocalDateTimeTypeHandler.class) + private LocalDateTime responseEndTime; + + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/DictProjectConfig.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/DictProjectConfig.java new file mode 100644 index 0000000..cc0c3d8 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/DictProjectConfig.java @@ -0,0 +1,55 @@ +package com.chinaunicom.mall.ebtp.project.feign.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 实体类 DictProjectConfig + * + * @auto.generated + */ +@Data +@Accessors(chain = true) +@ApiModel +@TableName(autoResultMap = true) +public class DictProjectConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "主键") + private Long id; + + /** + * 项目配置定义表主键ID + */ + @ApiModelProperty(value = "项目配置定义表主键ID") + private Long defId; + + /** + * 采购方式(bid_method_dict) + */ + @ApiModelProperty(value = "采购方式(bid_method_dict)") + private String modeCode; + + /** + * 审查方式(examination_method_dict) + */ + @ApiModelProperty(value = "审查方式(examination_method_dict)") + private String methodCode; + + /** + * 比选方式(bidding_sign_dict) + */ + @ApiModelProperty(value = "比选方式(bidding_sign_dict)") + private String signCode; + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/ReviewFlowVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/ReviewFlowVO.java new file mode 100644 index 0000000..7eb39ed --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/ReviewFlowVO.java @@ -0,0 +1,90 @@ +package com.chinaunicom.mall.ebtp.project.feign.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ReviewFlowVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 项目id + */ + @ApiModelProperty(value = "项目id") + private Long tpId; + + /** + * 标包id + */ + @ApiModelProperty(value = "标包id") + private Long sectionId; + + /** + * 评审室ID + */ + @ApiModelProperty(value = "评审室ID") + private Long assessRoomId; + + /** + * 评审室ID + */ + @ApiModelProperty(value = "评审室轮次") + private Integer assessRoomSort; + + /** + * 流程ID + */ + @ApiModelProperty(value = "流程ID") + private Long flowId; + + /** + * 流程状态1:进行中;2:已结束; + */ + @ApiModelProperty(value = "流程状态-1:进行中;2:已结束;") + private Integer flowStatus; + + /** + * 轮次ID + */ + @ApiModelProperty(value = "轮次ID") + private Long turnId; + + /** + * 评审轮次实例名称 + */ + @ApiModelProperty(value = "评审轮次实例名称") + private String turnName; + + /** + * 评审轮次实例顺序 + */ + @ApiModelProperty(value = "评审轮次实例顺序") + private Integer turnSort; + + /** + * 轮次状态-1:进行中;2:已结束;3:未开启; + */ + @ApiModelProperty(value = "轮次状态-1:进行中;2:已结束;3:未开启;") + private Integer turnStatus; + + /** + * 节点ID + */ + @ApiModelProperty(value = "节点ID") + private Long nodeId; + + /** + * 评审节点实例顺序 + */ + @ApiModelProperty(value = "评审节点实例顺序") + private Integer nodeSort; + + /** + * 节点状态-1:进行中;2:已结束;3:未开启; + */ + @ApiModelProperty(value = "节点状态-1:进行中;2:已结束;3:未开启;") + private Integer nodeStatus; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/SectionFlowVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/SectionFlowVO.java new file mode 100644 index 0000000..f5c6e42 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/SectionFlowVO.java @@ -0,0 +1,25 @@ +package com.chinaunicom.mall.ebtp.project.feign.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 标段(方案)流程返回信息 + * @author daixc + * @date 2020/12/23 + * @version V1.0 + */ +@Data +public class SectionFlowVO { + + @ApiModelProperty(value = "轮次") + private Integer rounds; + + @ApiModelProperty(value = "所处流程环节") + private Integer businessModule; + + @ApiModelProperty(value = "所处流程信息") + private List flowList; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/WasUpdateBizDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/WasUpdateBizDTO.java new file mode 100644 index 0000000..3e620bd --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/WasUpdateBizDTO.java @@ -0,0 +1,48 @@ +package com.chinaunicom.mall.ebtp.project.feign.entity; + +import lombok.Data; + + +/** + * WasUpdateBizDTO for 流程中心后置脚本更新业务表单状态信息 + * + * @author shiliang 2020-11-11 + */ +@Data +public class WasUpdateBizDTO { + + /** + * 相关表单id + */ + private String id; + + /** + * 业务表单id + */ + private String bizId; + + /** + * 审批状态(001:未提交; 002:审批中; 003:审批通过; 004:退回; 005:废止; 006:简要退回; 010:默认;) + */ + private String auditState; + + /** + * 流程类别编码 + */ + private String wfSectionNo; + + /** + * 流程类别名称 + */ + private String wfSectionName; + + /** + * 流程实例id + */ + private String processId; + + /** + * 审批时间(格式 2020-12-12 12:12:12) + */ + private String auditTime; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/WfProjectConfigTask.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/WfProjectConfigTask.java new file mode 100644 index 0000000..8b2972b --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/entity/WfProjectConfigTask.java @@ -0,0 +1,54 @@ +package com.chinaunicom.mall.ebtp.project.feign.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 实体类 WfProjectConfigTask + * + * @author daixc + */ +@Data +@Accessors(chain = true) +@ApiModel +@TableName(autoResultMap = true) +public class WfProjectConfigTask implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty(value = "主键") + private Long id; + + /** + * 流程节点名称 + */ + @ApiModelProperty(value = "流程节点名称") + private String taskName; + + /** + * 流程定义ID + */ + @ApiModelProperty(value = "流程定义ID") + private Long defId; + + /** + * 流程节点顺序 + */ + @ApiModelProperty(value = "流程节点顺序") + private Integer sort; + + /** + * 角色Id + */ + @ApiModelProperty(value = "角色Id") + private Long roleId; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/fallback/EbtpMallBidClientFallback.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/fallback/EbtpMallBidClientFallback.java new file mode 100644 index 0000000..488f3fe --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/fallback/EbtpMallBidClientFallback.java @@ -0,0 +1,54 @@ +package com.chinaunicom.mall.ebtp.project.feign.fallback; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.feign.EbtpMallBidApi; +import com.chinaunicom.mall.ebtp.project.feign.EbtpMallProcessApi; +import com.chinaunicom.mall.ebtp.project.feign.entity.*; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplierVO; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + + +/** + * + * + * @author yuzining + * @version 1.0 + * @date 2020-10-05 14:57:11 + */ +@Slf4j +@Component +public class EbtpMallBidClientFallback implements FallbackFactory { + + + @Override + public EbtpMallBidApi create(Throwable throwable) { + throwable.printStackTrace(); + return new EbtpMallBidApi() { + @Override + public BaseResponse abnormal(List sectionIds) { + return null; + } + + @Override + public BaseResponse entrustInsert(List list) { + return null; + } + + @Override + public BaseResponse copyDocument(AgainRoomVO againRoomVO) { + return null; + } + + @Override + public BaseResponse> getAnnoStatus(List abnormalIds) { + return null; + } + }; + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/fallback/EbtpMallProcessClientFallback.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/fallback/EbtpMallProcessClientFallback.java new file mode 100644 index 0000000..b787437 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/fallback/EbtpMallProcessClientFallback.java @@ -0,0 +1,62 @@ +package com.chinaunicom.mall.ebtp.project.feign.fallback; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.feign.EbtpMallProcessApi; +import com.chinaunicom.mall.ebtp.project.feign.MallPurpApi; +import com.chinaunicom.mall.ebtp.project.feign.entity.AgainRoomVO; +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.WfProjectConfigTask; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpImplementSendVO; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + + +/** + * + * + * @author yuzining + * @version 1.0 + * @date 2020-10-05 14:57:11 + */ +@Slf4j +@Component +public class EbtpMallProcessClientFallback implements FallbackFactory { + + + @Override + public EbtpMallProcessApi create(Throwable throwable) { + throwable.printStackTrace(); + return new EbtpMallProcessApi() { + @Override + public BaseResponse initialize(Long tpId, Map sectionMap, Boolean preStatus) { + return null; + } + + @Override + public BaseResponse againinitialize(Long tpId, Long sectionId, Integer roomSort) { + return null; + } + + @Override + public BaseResponse> getManagerList(DictProjectConfig dictProjectConfig) { + return null; + } + + @Override + public BaseResponse> listAll(BizAssessRoom bizAssessRoomVO) { + return null; + } + + @Override + public BaseResponse copyJury(Long oldRoomId, Long newRoomId) { + return null; + } + }; + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/feign/fallback/EbtpProjectClientFallback.java b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/fallback/EbtpProjectClientFallback.java new file mode 100644 index 0000000..1532d95 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/feign/fallback/EbtpProjectClientFallback.java @@ -0,0 +1,42 @@ +package com.chinaunicom.mall.ebtp.project.feign.fallback; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.feign.MallPurpApi; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpImplementSendVO; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + + +/** + * + * + * @author yuzining + * @version 1.0 + * @date 2020-10-05 14:57:11 + */ +@Slf4j +@Component +public class EbtpProjectClientFallback implements FallbackFactory { + + + @Override + public MallPurpApi create(Throwable throwable) { + throwable.printStackTrace(); + return new MallPurpApi() { + @Override + public BaseResponse projInvitationFail(String purpImplmentId, List projIds, String failStatus, String failCause) { + + return null; + } + + @Override + public BaseResponse findDataByPurpImplmentId(Long purpImplmentId) { + return null; + } + }; + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/controller/ProjectAuctionController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/controller/ProjectAuctionController.java new file mode 100644 index 0000000..d829db4 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/controller/ProjectAuctionController.java @@ -0,0 +1,108 @@ +package com.chinaunicom.mall.ebtp.project.projectauction.controller; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.projectauction.entity.ProjectAuction; +import com.chinaunicom.mall.ebtp.project.projectauction.entity.ProjectAuctionVO; +import com.chinaunicom.mall.ebtp.project.projectauction.service.IProjectAuctionService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 竞拍项目建档controller + * @author daixc + * @date 2020/12/01 + */ + +@RestController +@Api(tags = "竞拍项目建档信息") +@RequestMapping("/v1/projectAuction") +public class ProjectAuctionController{ + + @Resource + private IProjectAuctionService projectAuctionService; + + /** + * 插入新数据 + * + * @param projectAuction 查询条件 + * + * @return 返回结果 + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid ProjectAuction projectAuction){ + + boolean save = projectAuctionService.save(projectAuction); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param projectAuction 查询条件 + * + * @return 返回结果 + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectAuction projectAuction){ + + return BaseResponse.success(projectAuctionService.updateById(projectAuction)); + } + + /** + * 查询数据 + * + * @param id 主键ID + * + * @return 返回结果 + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + ProjectAuction projectAuction = projectAuctionService.getById(id); + + return BaseResponse.success(projectAuction); + } + + /** + * 查询分页数据 + * + * @param projectAuctionVO 分页数据 + * + * @return 返回结果 + */ + @ApiOperation("查询分页数据") + @PostMapping("/getPage") + public BaseResponse> getPage(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectAuctionVO projectAuctionVO){ + + return BaseResponse.success(projectAuctionService.getPage(projectAuctionVO)); + } + + /** + * 查询数据(包括竞拍物资信息) + * + * @param id 主键ID + * + * @return 返回结果 + */ + @ApiOperation("查询数据(包括竞拍物资信息)") + @GetMapping("/getAllById/{id}") + public BaseResponse getAllById(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + ProjectAuction projectAuction = projectAuctionService.getAllById(id); + + return BaseResponse.success(projectAuction); + } + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/dao/ProjectAuctionMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/dao/ProjectAuctionMapper.java new file mode 100644 index 0000000..798c14c --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/dao/ProjectAuctionMapper.java @@ -0,0 +1,10 @@ +package com.chinaunicom.mall.ebtp.project.projectauction.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.projectauction.entity.ProjectAuction; + +public interface ProjectAuctionMapper extends IBaseMapper { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/dao/mapper/ProjectAuctionMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/dao/mapper/ProjectAuctionMapper.xml new file mode 100644 index 0000000..dc6086d --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/dao/mapper/ProjectAuctionMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update biz_project_auction + set + delete_flag="deleted" + where ID=#{id} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/entity/ProjectAuction.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/entity/ProjectAuction.java new file mode 100644 index 0000000..f62b5c4 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/entity/ProjectAuction.java @@ -0,0 +1,223 @@ +package com.chinaunicom.mall.ebtp.project.projectauction.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 实体类 ProjectAuction + * + * @author daixc + * @date 2020/11/30 + */ +@Data +@Accessors(chain = true) +@ApiModel("竞拍项目建档信息") +@TableName(value = "biz_project_auction", autoResultMap = true) +public class ProjectAuction extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @ApiModelProperty(value = "编号") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 处置名称(项目名称) + */ + @ApiModelProperty(value = "处置名称(项目名称)") + private String projectName; + + /** + * 项目流水号 + */ + @ApiModelProperty(value = "项目流水号") + private Long projectNum; + + /** + * 父项目编号 + */ + @ApiModelProperty(value = "父项目编号") + private String ebpParentProjectNumber; + + /** + * 父项目名称 + */ + @ApiModelProperty(value = "父项目名称") + private String ebpParentProjectName; + + /** + * 父项目ID + */ + @ApiModelProperty(value = "父项目ID") + private String ebpParentProjectId; + + /** + * 业务类型 + */ + @ApiModelProperty(value = "业务类型") + private String businessType; + + /** + * 拍卖类型 + */ + @ApiModelProperty(value = "拍卖类型") + private String auctionType; + + /** + * 处置实施项目编号 + */ + @ApiModelProperty(value = "处置实施项目编号") + private String ebpProjectNumber; + + /** + * 处置实施项目名称 + */ + @ApiModelProperty(value = "处置实施项目名称") + private String ebpProjectName; + + /** + * 处置实施项目ID + */ + @ApiModelProperty(value = "处置实施项目ID") + private String ebpProjectId; + + /** + * 处置编号 + */ + @ApiModelProperty(value = "处置编号") + private String disposalNum; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + private String disposalProjectId; + + /** + * 处置经理 + */ + @ApiModelProperty(value = "处置经理") + private String disposalManager; + + /** + * 处置经理名称 + */ + @ApiModelProperty(value = "处置经理名称") + private String disposalManagerName; + + /** + * 处置经理电话 + */ + @ApiModelProperty(value = "处置经理电话") + private String disposalManagerTel; + + /** + * 处置实施部门 + */ + @ApiModelProperty(value = "处置实施部门") + private String disposalDepartment; + + /** + * 处置实施部门名称 + */ + @ApiModelProperty(value = "处置实施部门名称") + private String disposalDepartmentName; + + /** + * 需求归属部门 + */ + @ApiModelProperty(value = "需求归属部门") + private String demandDepartment; + + /** + * 需求归属部门名称 + */ + @ApiModelProperty(value = "需求归属部门名称") + private String demandDepartmentName; + + /** + * 处置类型 + */ + @ApiModelProperty(value = "处置类型") + private String disposalType; + + /** + * 方案ID + */ + @ApiModelProperty(value = "方案ID") + private String planId; + + /** + * 报价方式(竞价拍卖) + */ + @ApiModelProperty(value = "报价方式(竞价拍卖)") + private String quotationMethod; + + /** + * 起拍总价(元) + */ + @ApiModelProperty(value = "起拍总价(元)") + private BigDecimal startingPrice; + + /** + * 资产类型 + */ + @ApiModelProperty(value = "资产类型") + private String assetType; + + /** + * 资产价值 + */ + @ApiModelProperty(value = "资产价值") + private BigDecimal assetValue; + + /** + * 数量 + */ + @ApiModelProperty(value = "数量") + private BigDecimal amount; + + /** + * 计量单位 + */ + @ApiModelProperty(value = "计量单位") + private String materialUnit; + + /** + * 序号 + */ + @ApiModelProperty(value = "序号") + private String serialNumber; + + /** + * 项目模块 + */ + @ApiModelProperty(value = "项目模块") + private String businessMoudle; + + /** + * 状态 + */ + @ApiModelProperty(value = "状态") + private Integer status; + + /** + * 附件组ID + */ + @ApiModelProperty(value = "附件组ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long fileUploadId; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/entity/ProjectAuctionVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/entity/ProjectAuctionVO.java new file mode 100644 index 0000000..139c6be --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/entity/ProjectAuctionVO.java @@ -0,0 +1,40 @@ +package com.chinaunicom.mall.ebtp.project.projectauction.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest; +import com.chinaunicom.mall.ebtp.project.projectauctionmaterial.entity.ProjectAuctionMaterial; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 实体类 ProjectAuction + * + * @author daixc + * @date 2020/11/30 + */ +@Data +@Accessors(chain = true) +@ApiModel("竞拍项目建档信息VO类") +@TableName(autoResultMap = true) +public class ProjectAuctionVO extends ProjectAuction implements Serializable { + + /** + * 分页数据 + */ + @ApiModelProperty(value = "分页对象信息") + private BasePageRequest basePageRequest; + + /** + * 项目建档信息 + */ + @ApiModelProperty(value = "项目建档信息") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List materialList; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/service/IProjectAuctionService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/service/IProjectAuctionService.java new file mode 100644 index 0000000..811a889 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/service/IProjectAuctionService.java @@ -0,0 +1,47 @@ +package com.chinaunicom.mall.ebtp.project.projectauction.service; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.projectauction.entity.ProjectAuction; +import com.chinaunicom.mall.ebtp.project.projectauction.entity.ProjectAuctionVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpImplementSendVO; + +/** + * 对数据表 biz_project_auction 操作的 service + * @author daixc + * + */ +public interface IProjectAuctionService extends IBaseService{ + + + /** + * 竞拍项目列表分页查询 + * @param projectAuctionVO 项目分页信息 + * @return 返回结果 + */ + IPage getPage(ProjectAuctionVO projectAuctionVO); + + /** + * 查询详情 + * @param id 项目ID + * @return 返回结果 + */ + ProjectAuctionVO getAllById(Long id); + + /** + * 出始化竞拍项目信息 + * @param purpImplementSendVO 竞拍 + * @return 返回结果 + */ + boolean initProjectAuction(PurpImplementSendVO purpImplementSendVO); + + /** + * 出始化竞拍项目信息 + * @param ebpProjectId 实施项目ID + * @param purpImplementSendVO 竞拍 + * @return 返回结果 + */ + boolean initProjectAuction(Long ebpProjectId,PurpImplementSendVO purpImplementSendVO); + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/service/impl/ProjectAuctionServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/service/impl/ProjectAuctionServiceImpl.java new file mode 100644 index 0000000..1ffb68f --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauction/service/impl/ProjectAuctionServiceImpl.java @@ -0,0 +1,280 @@ +package com.chinaunicom.mall.ebtp.project.projectauction.service.impl; + + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; +import com.chinaunicom.mall.ebtp.common.util.PropertyUtils; +import com.chinaunicom.mall.ebtp.project.common.ProjectCommonUtil; +import com.chinaunicom.mall.ebtp.project.common.ProjectExceptionEnum; +import com.chinaunicom.mall.ebtp.project.projectauction.dao.ProjectAuctionMapper; +import com.chinaunicom.mall.ebtp.project.projectauction.entity.ProjectAuction; +import com.chinaunicom.mall.ebtp.project.projectauction.entity.ProjectAuctionVO; +import com.chinaunicom.mall.ebtp.project.projectauction.service.IProjectAuctionService; +import com.chinaunicom.mall.ebtp.project.projectauctionmaterial.entity.ProjectAuctionMaterial; +import com.chinaunicom.mall.ebtp.project.projectauctionmaterial.service.IProjectAuctionMaterialService; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustExpand; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpBaseInfoVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpImplementSendVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpMaterialVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpSuperVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.service.IProjectEntrustExpandService; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * 对数据表 _project_auction 操作的 serviceImpl + * @author daixc + * + */ +@Service +public class ProjectAuctionServiceImpl extends BaseServiceImpl implements IProjectAuctionService { + + @Resource + private IProjectAuctionMaterialService auctionMaterialService; + + @Resource + private IProjectEntrustExpandService entrustExpandService; + + private QueryWrapper getAuctionQueryWrapper(ProjectAuctionVO ProjectAuctionVO) { + QueryWrapper queryWrapper = new QueryWrapper(); + + queryWrapper.like("project_name",ProjectAuctionVO.getProjectName()); + + return queryWrapper; + } + + + @Override + public IPage getPage(ProjectAuctionVO ProjectAuctionVO) { + + QueryWrapper queryWrapper = getAuctionQueryWrapper(ProjectAuctionVO); + + queryWrapper.orderByDesc("create_date"); + + if(null == ProjectAuctionVO.getBasePageRequest()){ + ProjectAuctionVO.setBasePageRequest(new BasePageRequest()); + } + + //查询 + IPage p = new Page<>(ProjectAuctionVO.getBasePageRequest().getPageNo(), ProjectAuctionVO.getBasePageRequest().getPageSize()); + IPage result = this.page(p, queryWrapper); + + return result; + } + + @Override + public ProjectAuctionVO getAllById(Long id) { + + ProjectAuction projectAuction = this.getById(id); + + ProjectAuctionVO result = null; + + if(null != projectAuction){ + result = BeanUtil.toBean(projectAuction,ProjectAuctionVO.class); + + result.setMaterialList(auctionMaterialService.list(new QueryWrapper().eq("auction_id",id))); + } + + return result; + } + + @Override + public boolean initProjectAuction(PurpImplementSendVO purpImplementSendVO) { + + //校验信息 + checkPurpImplementSendVO(purpImplementSendVO); + //子项目信息 + PurpBaseInfoVO purpBaseInfoVO = purpImplementSendVO.getPurpBaseInfoVoList().get(0); + + ProjectAuction projectAuction = getProjectAuction(purpImplementSendVO); + + List materialList = assembleAuctionMaterial(projectAuction.getId(),purpBaseInfoVO.getPurpMaterialVOList()); + + boolean result = this.save(projectAuction); + auctionMaterialService.saveBatch(materialList); + + ProjectEntrustExpand expand = new ProjectEntrustExpand(); + expand.setId(PropertyUtils.getSnowflakeId()); + expand.setPurpImplementSendVO(purpImplementSendVO); + expand.setEntrustId(projectAuction.getId()); + entrustExpandService.save(expand); + + return result; + } + + @Override + public boolean initProjectAuction(Long ebpProjectId, PurpImplementSendVO purpImplementSendVO) { + + Integer count = this.count(new QueryWrapper().eq("ebp_project_id",ebpProjectId)); + if(count > 0){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_ERROR_STATE.throwException(); + } + return initProjectAuction(purpImplementSendVO); + } + + private ProjectAuction getProjectAuction(PurpImplementSendVO purpImplementSendVO) { + + //父项目信息 + PurpSuperVO purpSuperVO = purpImplementSendVO.getPurpSuperVo(); + + //子项目信息 + PurpBaseInfoVO purpBaseInfoVO = purpImplementSendVO.getPurpBaseInfoVoList().get(0); + ProjectAuction projectAuction = new ProjectAuction(); + projectAuction.setId(PropertyUtils.getSnowflakeId()); + projectAuction.setProjectNum(PropertyUtils.getSnowflakeId()); + projectAuction.setEbpProjectId(purpImplementSendVO.getId()); + projectAuction.setEbpProjectName(purpImplementSendVO.getPurpImplementName()); + projectAuction.setEbpProjectNumber(purpImplementSendVO.getPurpImplementNo()); + projectAuction.setEbpParentProjectId(purpSuperVO.getId()); + projectAuction.setEbpParentProjectNumber(purpSuperVO.getPurpSuperNo()); + projectAuction.setEbpParentProjectName(purpSuperVO.getPurpSuperName()); + projectAuction.setBusinessType(purpSuperVO.getBusinessType()); + projectAuction.setAuctionType(purpSuperVO.getAuctionType()); + projectAuction.setDisposalNum(purpBaseInfoVO.getPurpNo()); + projectAuction.setDisposalProjectId(purpBaseInfoVO.getId()); + projectAuction.setDisposalManager(purpBaseInfoVO.getUndertakerCode()); + projectAuction.setDisposalManagerName(purpBaseInfoVO.getUndertaker()); + projectAuction.setDisposalManagerTel(purpBaseInfoVO.getTelNo()); + projectAuction.setDisposalDepartment(purpBaseInfoVO.getProcImplDeptCode()); + projectAuction.setDisposalDepartmentName(purpBaseInfoVO.getProcImplDept()); + projectAuction.setDemandDepartment(purpBaseInfoVO.getRequAscriptionDeptCode()); + projectAuction.setDemandDepartmentName(purpBaseInfoVO.getRequAscriptionDept()); + projectAuction.setDisposalType(purpBaseInfoVO.getDisposalType()); + projectAuction.setPlanId(String.valueOf(purpBaseInfoVO.getProjBaseInfoVO().getId())); + projectAuction.setQuotationMethod(purpBaseInfoVO.getDisposalType()); + projectAuction.setStartingPrice(purpBaseInfoVO.getProjBaseInfoVO().getStartPrice()); + projectAuction.setAssetType(purpBaseInfoVO.getProjBaseInfoVO().getAssetType()); + projectAuction.setAssetValue(new BigDecimal(purpBaseInfoVO.getProjBaseInfoVO().getAssetValue())); + projectAuction.setStartingPrice(purpBaseInfoVO.getProjBaseInfoVO().getStartPrice()); + projectAuction.setAmount(new BigDecimal(null == purpBaseInfoVO.getProjBaseInfoVO().getNum()? 0 : purpBaseInfoVO.getProjBaseInfoVO().getNum())); + projectAuction.setMaterialUnit(purpBaseInfoVO.getProjBaseInfoVO().getUnit()); + projectAuction.setStatus(ProjectCommonUtil.PROJECT_STATUS_2); + return projectAuction; + } + + /** + * 拼装竞拍物资数据 + * @param auctionId 竞拍项目ID + * @param purpMaterialVOList 物资信息 + * @return 返回结果 + */ + private List assembleAuctionMaterial(Long auctionId,List purpMaterialVOList){ + + List materialList = new ArrayList<>(); + + for(PurpMaterialVO purpMaterialVO:purpMaterialVOList){ + ProjectAuctionMaterial material = new ProjectAuctionMaterial(); + material.setId(PropertyUtils.getSnowflakeId()); + //竞拍项目编号 + material.setAuctionId(auctionId); + //物资行ID + material.setMaterialBankId(purpMaterialVO.getMaterialId()); + //所属OU组织 + material.setOrganizationName(purpMaterialVO.getOrgName()); + //物资名称 + material.setMaterialName(purpMaterialVO.getPurpName()); + //需求单名称 + material.setDemandId(purpMaterialVO.getRequName()); + //物料编码 + material.setMaterialCode(purpMaterialVO.getMaterialCode()); + //物资厂家 + material.setManufacturer(purpMaterialVO.getMaterialManufacturer()); + //规格型号 + material.setSpecification(purpMaterialVO.getSpecModel()); + //库龄 + material.setReservoirAge(purpMaterialVO.getLibraryAge()); + //数量 + material.setAmount(purpMaterialVO.getRequNum()); + //计量单位 + material.setMaterialUnit(purpMaterialVO.getUnit()); + //单价 + material.setUnitPrice(purpMaterialVO.getUnitAmt()); + //资产价值 + material.setAssetValue(purpMaterialVO.getClapUnitPrice()); + //统一目录名称 + material.setDirectoryName(purpMaterialVO.getUniftCatalogName()); + //统一目录编码 + material.setDirectoryCode(purpMaterialVO.getUniftCatalogCode()); + + materialList.add(material); + + } + return materialList; + } + + /** + * 校验推送信息是否符合 + * + * @param implementSendVO 采购委托推送数据 + */ + private void checkPurpImplementSendVO(PurpImplementSendVO implementSendVO) { + + + //实施项目 + if (StringUtils.isEmpty(implementSendVO.getPurpImplementName())) { + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_PURP_IMPLEMENT_NAME_EMPTY.throwException(); + } + + //实施项目ID + if(StringUtils.isEmpty(implementSendVO.getId())){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_PURP_IMPLEMENT_ID_EMPTY.throwException(); + } + + //父项目信息 + PurpSuperVO purpSuperVO = implementSendVO.getPurpSuperVo(); + + if(null == purpSuperVO){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_PURP_SUPER_VO_EMPTY.throwException(); + } + + //业务类型 + if(StringUtils.isEmpty(purpSuperVO.getBusinessType())){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_BUSINESS_TYPE_EMPTY.throwException(); + } + + + List purpBaseInfoVOList = implementSendVO.getPurpBaseInfoVoList(); + if(null == purpBaseInfoVOList || purpBaseInfoVOList.size() <= 0){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_PURP_BASE_INFO_VO_EMPTY.throwException(); + } + + //子项目信息 + PurpBaseInfoVO purpBaseInfoVO = implementSendVO.getPurpBaseInfoVoList().get(0); + + if(null == purpBaseInfoVO.getProjBaseInfoVO()){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_PROJ_BASE_INFO_VO_EMPTY.throwException(); + } + + //资产类型 + if(StringUtils.isEmpty(purpBaseInfoVO.getProjBaseInfoVO().getAssetType())){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ASSET_TYPE_EMPTY.throwException(); + } + + //资产价值 + if(StringUtils.isEmpty(purpBaseInfoVO.getProjBaseInfoVO().getAssetValue())){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ASSET_VALUE_EMPTY.throwException(); + } + + //数量 + if(null == purpBaseInfoVO.getProjBaseInfoVO().getNum()){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_NUM_EMPTY.throwException(); + } + + //计量单位 + if(StringUtils.isEmpty(purpBaseInfoVO.getProjBaseInfoVO().getUnit())){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_UNIT_EMPTY.throwException(); + } + + + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/controller/ProjectAuctionMaterialController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/controller/ProjectAuctionMaterialController.java new file mode 100644 index 0000000..8183ca8 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/controller/ProjectAuctionMaterialController.java @@ -0,0 +1,71 @@ +package com.chinaunicom.mall.ebtp.project.projectauctionmaterial.controller; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.projectauctionmaterial.entity.ProjectAuctionMaterial; +import com.chinaunicom.mall.ebtp.project.projectauctionmaterial.service.IProjectAuctionMaterialService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +@RestController +@Api(tags = "竞拍项目物资信息") +@RequestMapping("/v1/bizprojectauctionmaterial") +public class ProjectAuctionMaterialController{ + + @Resource + private IProjectAuctionMaterialService projectAuctionMaterialService; + + /** + * 插入新数据 + * + * @param projectAuctionMaterial + * + * @return + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid ProjectAuctionMaterial projectAuctionMaterial){ + + boolean save = projectAuctionMaterialService.save(projectAuctionMaterial); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param projectAuctionMaterial + * + * @return + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectAuctionMaterial projectAuctionMaterial){ + + + return BaseResponse.success(projectAuctionMaterialService.updateById(projectAuctionMaterial)); + } + + /** + * 查询数据 + * + * @param id + * + * @return + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable String id){ + + ProjectAuctionMaterial projectAuctionMaterial = projectAuctionMaterialService.getById(id); + + return BaseResponse.success(projectAuctionMaterial); + } + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/dao/ProjectAuctionMaterialMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/dao/ProjectAuctionMaterialMapper.java new file mode 100644 index 0000000..5d89fae --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/dao/ProjectAuctionMaterialMapper.java @@ -0,0 +1,10 @@ +package com.chinaunicom.mall.ebtp.project.projectauctionmaterial.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.projectauctionmaterial.entity.ProjectAuctionMaterial; + +public interface ProjectAuctionMaterialMapper extends IBaseMapper { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/dao/mapper/ProjectAuctionMaterialMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/dao/mapper/ProjectAuctionMaterialMapper.xml new file mode 100644 index 0000000..9cd2244 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/dao/mapper/ProjectAuctionMaterialMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update biz_project_auction_material + set + delete_flag="deleted" + where ID=#{id} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/entity/ProjectAuctionMaterial.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/entity/ProjectAuctionMaterial.java new file mode 100644 index 0000000..e853fa9 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/entity/ProjectAuctionMaterial.java @@ -0,0 +1,133 @@ +package com.chinaunicom.mall.ebtp.project.projectauctionmaterial.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 实体类 ProjectAuctionMaterial + * + * @author daixc + * @date 2020/11/30 + */ +@Data +@Accessors(chain = true) +@ApiModel("竞拍项目物资信息") +@TableName(value = "biz_project_auction_material", autoResultMap = true) +public class ProjectAuctionMaterial extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @ApiModelProperty(value = "编号") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 竞拍项目编号 + */ + @ApiModelProperty(value = "竞拍项目编号") + @JsonSerialize(using = ToStringSerializer.class) + private Long auctionId; + + /** + * 物资行ID + */ + @ApiModelProperty(value = "物资行ID") + private String materialBankId; + + /** + * 所属OU组织 + */ + @ApiModelProperty(value = "所属OU组织") + private String organization; + + /** + * 所属OU组织名称 + */ + @ApiModelProperty(value = "所属OU组织名称") + private String organizationName; + + /** + * 物资名称 + */ + @ApiModelProperty(value = "物资名称") + private String materialName; + + /** + * 需求单名称 + */ + @ApiModelProperty(value = "需求单名称") + private String demandId; + + /** + * 物料编码 + */ + @ApiModelProperty(value = "物料编码") + private String materialCode; + + /** + * 物资厂家 + */ + @ApiModelProperty(value = "物资厂家") + private String manufacturer; + + /** + * 规格型号 + */ + @ApiModelProperty(value = "规格型号") + private String specification; + + /** + * 库龄 + */ + @ApiModelProperty(value = "库龄") + private String reservoirAge; + + /** + * 数量 + */ + @ApiModelProperty(value = "数量") + private BigDecimal amount; + + /** + * 计量单位 + */ + @ApiModelProperty(value = "计量单位") + private String materialUnit; + + /** + * 单价 + */ + @ApiModelProperty(value = "单价") + private BigDecimal unitPrice; + + /** + * 资产价值 + */ + @ApiModelProperty(value = "资产价值") + private BigDecimal assetValue; + + /** + * 统一目录名称 + */ + @ApiModelProperty(value = "统一目录名称") + private String directoryName; + + /** + * 统一目录编码 + */ + @ApiModelProperty(value = "统一目录编码") + private String directoryCode; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/service/IProjectAuctionMaterialService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/service/IProjectAuctionMaterialService.java new file mode 100644 index 0000000..f12c6e2 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/service/IProjectAuctionMaterialService.java @@ -0,0 +1,16 @@ +package com.chinaunicom.mall.ebtp.project.projectauctionmaterial.service; + + +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.projectauctionmaterial.entity.ProjectAuctionMaterial; + +/** + * 对数据表 biz_project_auction_material 操作的 service + * @author Auto create + * + */ +public interface IProjectAuctionMaterialService extends IBaseService{ + + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/service/impl/ProjectAuctionMaterialServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/service/impl/ProjectAuctionMaterialServiceImpl.java new file mode 100644 index 0000000..cbe2d4a --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectauctionmaterial/service/impl/ProjectAuctionMaterialServiceImpl.java @@ -0,0 +1,18 @@ +package com.chinaunicom.mall.ebtp.project.projectauctionmaterial.service.impl; + + +import com.chinaunicom.mall.ebtp.project.projectauctionmaterial.dao.ProjectAuctionMaterialMapper; +import com.chinaunicom.mall.ebtp.project.projectauctionmaterial.entity.ProjectAuctionMaterial; +import com.chinaunicom.mall.ebtp.project.projectauctionmaterial.service.IProjectAuctionMaterialService; +import org.springframework.stereotype.Service; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; +/** + * 对数据表 biz_project_auction_material 操作的 serviceImpl + * @author Auto create + * + */ +@Service +public class ProjectAuctionMaterialServiceImpl extends BaseServiceImpl implements IProjectAuctionMaterialService { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/controller/ProjectEntrustController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/controller/ProjectEntrustController.java new file mode 100644 index 0000000..8fc38ba --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/controller/ProjectEntrustController.java @@ -0,0 +1,217 @@ +package com.chinaunicom.mall.ebtp.project.projectentrust.controller; + + +import cn.hutool.core.bean.BeanUtil; +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.projectentrust.entity.ProjectEntrust; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpImplementSendVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.service.IProjectEntrustService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +/** + * 项目委托信息controller + * + * @author daixc + * @date 2029/10/23 + * @version 1.0 + */ +@RestController +@Api(tags = "项目委托表") +@RequestMapping("/v1/projectEntrust") +public class ProjectEntrustController{ + + @Resource + private IProjectEntrustService projectEntrustService; + + /** + * 插入新数据 + * + * @param projectEntrust 委托单信息 + * + * @return 返回结果 + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid ProjectEntrust projectEntrust){ + + boolean save = projectEntrustService.save(projectEntrust); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param projectEntrust 修改信息 + * + * @return 返回结果 + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectEntrust projectEntrust){ + + return BaseResponse.success(projectEntrustService.updateById(projectEntrust)); + } + + /** + * 查询数据 + * + * @param id 委托单ID + * + * @return 返回结果 + */ +// @OperLog() + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + ProjectEntrust projectEntrust = projectEntrustService.getById(id); + return BaseResponse.success(BeanUtil.toBean(projectEntrust,ProjectEntrustVO.class)); + } + + /** + * 查询分页数据 + * + * @param projectEntrust 分页信息 + * + * @return 返回结果 + */ + @ApiOperation("查询分页数据") + @PostMapping("/getPage") + public BaseResponse> getPage(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectEntrustVO projectEntrust){ + + return BaseResponse.success(projectEntrustService.getPage(projectEntrust)); + } + + + /** + * 分派项目经理 + * + * @param id 委托单ID + * @param projectEntrust 分页信息 + * + * @return 返回结果 + */ + @ApiOperation("分派项目经理") + @PostMapping("/dispatch/{id}") + public BaseResponse dispatch( + @ApiParam(value = "主键id", required = true) @PathVariable Long id, + @ApiParam(value = "主键id", required = true) @RequestBody ProjectEntrustVO projectEntrust){ + + projectEntrust.setId(id); + return BaseResponse.success(projectEntrustService.dispatch(projectEntrust)); + } + + /** + * 取消分派项目经理 + * + * @param id 委托单ID + * + * @return 返回结果 + */ + @ApiOperation("取消分派项目经理") + @GetMapping("/retractDispatch/{id}") + public BaseResponse retractDispatch(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + return BaseResponse.success(projectEntrustService.retractDispatch(id)); + } + + + /** + * 委托机构拒绝 + * + * @param id 委托单ID + * @param remarks 决绝说明 + * @return 返回结果 + */ + @ApiOperation("委托机构拒绝") + @GetMapping("/agencyCompanyDispatch/{id}") + public BaseResponse agencyCompanyDispatch(@ApiParam(value = "主键id", required = true) @PathVariable Long id, + @ApiParam(value = "拒绝信息", required = true) String remarks){ + + return BaseResponse.success(projectEntrustService.agencyCompanyDispatch(id,remarks)); + } + + /** + * 项目经理同意 + * + * @param id 委托单ID + * + * @return 返回结果 + */ + @ApiOperation("项目经理同意") + @GetMapping("/projectManagerAgree/{id}") + public BaseResponse projectManagerAgree(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + return BaseResponse.success(projectEntrustService.projectManagerAgree(id)); + } + + /** + * 项目经理拒绝 + * + * @param id 委托单ID + * + * @return 返回结果 + */ + @ApiOperation("项目经理拒绝") + @GetMapping("/projectManagerRefuse/{id}") + public BaseResponse projectManagerRefuse(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + return BaseResponse.success(projectEntrustService.projectManagerRefuse(id)); + } + + + /** + * 查询数据(所有关于项目信息) + * + * @param id 委托单ID + * + * @return 返回结果 + */ + @ApiOperation("查询数据(所有关于项目信息)") + @GetMapping("/getProject/{id}") + public BaseResponse getProjectAll(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + ProjectEntrustVO projectEntrust = projectEntrustService.getProjectAll(id); + + return BaseResponse.success(projectEntrust); + } + + /** + * 委托项目信息出始化 + * + * @param ebpProjectId 实施项目ID + * @return 返回结果 + */ + @ApiOperation("委托项目信息出始化") + @PostMapping("/initProjectEntrust") + public BaseResponse initProjectEntrust(@ApiParam(value = "实施项目编码", required = true) @RequestParam(name = "ebpProjectId") Long ebpProjectId) { + + return BaseResponse.success(projectEntrustService.initProjectEntrust(ebpProjectId)); + } + + /** + * 委托项目信息出始化 + * + * @param purpImplementSendVO 测试数据 + * @return 返回结果 + */ + @ApiOperation("委托项目信息出始化") + @PostMapping("/testProjectEntrust") + public BaseResponse testProjectEntrust(@ApiParam(value = "实施项目编码", required = true) @RequestBody PurpImplementSendVO purpImplementSendVO) { + + return BaseResponse.success(projectEntrustService.testProjectEntrust(purpImplementSendVO)); + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/ProjectEntrustExpandMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/ProjectEntrustExpandMapper.java new file mode 100644 index 0000000..30eeb34 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/ProjectEntrustExpandMapper.java @@ -0,0 +1,10 @@ +package com.chinaunicom.mall.ebtp.project.projectentrust.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustExpand; + +public interface ProjectEntrustExpandMapper extends IBaseMapper { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/ProjectEntrustMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/ProjectEntrustMapper.java new file mode 100644 index 0000000..2ea9d20 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/ProjectEntrustMapper.java @@ -0,0 +1,17 @@ +package com.chinaunicom.mall.ebtp.project.projectentrust.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrust; + +/** + * 项目建档信息mapper + * + * @author daixc + * @date 2020/10/28 + */ + +public interface ProjectEntrustMapper extends IBaseMapper { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/mapper/ProjectEntrustExpandMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/mapper/ProjectEntrustExpandMapper.xml new file mode 100644 index 0000000..17fd17b --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/mapper/ProjectEntrustExpandMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + update biz_project_entrust_expand + set + delete_flag="deleted" + where ID=#{id} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/mapper/ProjectEntrustMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/mapper/ProjectEntrustMapper.xml new file mode 100644 index 0000000..07583fe --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/dao/mapper/ProjectEntrustMapper.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update biz_project_entrust + set + delete_flag="deleted" + where ID=#{id} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ProjectEntrust.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ProjectEntrust.java new file mode 100644 index 0000000..da508b9 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ProjectEntrust.java @@ -0,0 +1,207 @@ +package com.chinaunicom.mall.ebtp.project.projectentrust.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 实体类 ProjectEntrust + * 项目委托信息 + * + * @author daixc + * @version 1.0 + * @date 2029/10/23 + */ +@Data +@Accessors(chain = true) +@ApiModel("项目委托信息") +@TableName(value = "biz_project_entrust", autoResultMap = true) +public class ProjectEntrust extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @ApiModelProperty(value = "编号") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 采购人,GG_JGBH,JGBH + */ + @ApiModelProperty(value = "采购人") + private String purchaser; + + /** + * 委托部门 + */ + @ApiModelProperty(value = "委托部门") + private String entrustDepartment; + + /** + * 委托部门名称 + */ + @ApiModelProperty(value = "委托部门名称") + private String entrustDepartmentName; + + /** + * 代理公司 + */ + @ApiModelProperty(value = "代理公司") + private String agencyCompany; + + /** + * 代理公司名称 + */ + @ApiModelProperty(value = "代理公司名称") + private String agencyCompanyName; + + /** + * 项目名称 + */ + @ApiModelProperty(value = "项目名称") + private String projectName; + + /** + * 采购内容 + */ + @ApiModelProperty(value = "采购内容") + private String procurementContent; + + /** + * 采购类型,1-货物,2-工程,3-服务,4-其他 + */ + @ApiModelProperty(value = "采购类型,1-货物,2-工程,3-服务,4-其他") + private String procurementType; + + /** + * 采购依据 + */ + @ApiModelProperty(value = "采购依据") + private String procurementBasis; + + /** + * 预算金额 + */ + @ApiModelProperty(value = "预算金额") + private BigDecimal budgetAmount; + + /** + * 资金来源 + */ + @ApiModelProperty(value = "资金来源") + private String sourcesFunds; + + /** + * 采购方式,参考XM_ZBXM.CGFS描述 + */ + @ApiModelProperty(value = "采购方式,参考XM_ZBXM.CGFS描述") + private String procurementMode; + + /** + * 采购经理,GG_CZYB,ID + */ + @ApiModelProperty(value = "采购经理") + private String purchasingManager; + + + /** + * 采购经理 + */ + @ApiModelProperty(value = "采购经理名称") + private String purchasingManagerName; + + /** + * 采购经理联系电话 + */ + @ApiModelProperty(value = "采购经理联系电话") + private String purchasingManagerPhone; + + /** + * 起草人 + */ + @ApiModelProperty(value = "起草人") + private String draftUser; + + /** + * 起草时间 + */ + @ApiModelProperty(value = "起草时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime draftTime; + + /** + * 项目经理 + */ + @ApiModelProperty(value = "项目经理") + private String projectManager; + + /** + * 项目经理名称 + */ + @ApiModelProperty(value = "项目经理") + private String projectManagerName; + + /** + * 项目经理联系电话 + */ + @ApiModelProperty(value = "项目经理联系电话") + private String projectManagerPhone; + + /** + * 购买文件地点 + */ + @ApiModelProperty(value = "购买文件地点") + private String documentsLocation; + + /** + * 状态,0-初始化,10-已提交,11-已退回,20-已分派,30-已建档,-1-已拒绝 + */ + @ApiModelProperty(value = "状态,0-初始化,10-已提交,11-已退回,20-已分派,30-已建档,-1-已拒绝") + private Integer status; + + /** + * 项目编号 + */ + @ApiModelProperty(value = "项目编号") + private String projectNumber; + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remarks; + + /** + * 对应采购平台的采购方案id(项目实施ID) + */ + @ApiModelProperty(value = "对应采购平台的采购方案id") + private String procurementPlanId; + + + /** + * 采购系统新增系统标识 0 采购系统 1 控制台 + */ + @ApiModelProperty(value = "采购系统新增系统标识 0 采购系统 1 控制台") + private String systemLogo; + + /** + * 组织方式 1:委托采购 2:自主采购 + */ + @ApiModelProperty(value = "组织方式 1:委托采购 2:自主采购") + private String organization; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ProjectEntrustExpand.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ProjectEntrustExpand.java new file mode 100644 index 0000000..1b96cdf --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ProjectEntrustExpand.java @@ -0,0 +1,50 @@ +package com.chinaunicom.mall.ebtp.project.projectentrust.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.chinaunicom.mall.ebtp.common.config.CustomJacksonTypeHandler; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpImplementSendVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 实体类 ProjectEntrustExpand + * + * @author daixc + */ +@Data +@Accessors(chain = true) +@ApiModel +@EqualsAndHashCode(callSuper = false) +@TableName(value = "biz_project_entrust_expand", autoResultMap = true) +public class ProjectEntrustExpand extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @ApiModelProperty(value = "编号") + private Long id; + + /** + * 委托单ID + */ + @ApiModelProperty(value = "委托单ID") + private Long entrustId; + + /** + * 采购系统推送项目信息 + */ + @ApiModelProperty(value = "采购系统推送项目信息") + @TableField(typeHandler = CustomJacksonTypeHandler.class) + private PurpImplementSendVO purpImplementSendVO; + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ProjectEntrustVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ProjectEntrustVO.java new file mode 100644 index 0000000..7107431 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ProjectEntrustVO.java @@ -0,0 +1,38 @@ +package com.chinaunicom.mall.ebtp.project.projectentrust.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 委托单信息组装VO类 + * + * @author daixc + * @date 2020/10/27 + */ +@Data +@Accessors(chain = true) +@ApiModel("项目委托信息VO类") +@TableName(autoResultMap = true) +public class ProjectEntrustVO extends ProjectEntrust implements Serializable { + + /** + * 分页数据 + */ + @ApiModelProperty(value = "分页对象信息") + private BasePageRequest basePageRequest; + + /** + * 项目建档信息 + */ + @ApiModelProperty(value = "项目建档信息") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private ProjectEntrustExpand projectEntrustExpand; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/ProjBaseInfoVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/ProjBaseInfoVO.java new file mode 100644 index 0000000..ceeb14d --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/ProjBaseInfoVO.java @@ -0,0 +1,359 @@ +/* + * Copyright (c) 2020, SDCNCSI. All rights reserved. + */ +package com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 方案主表 + *

+ * + * @author wmm + * @date 2020-10-06 + * @version: V1.0 + * @update [序号][日期YYYY-MM-DD] [更改人姓名][变更描述] + */ +@Data +@Accessors(chain = true) +@ApiModel(value="ProjBaseInfo对象", description="方案主表") +public class ProjBaseInfoVO{ + + @ApiModelProperty(value = "方案主键id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @TableId(value = "id") + private Long id; + + @ApiModelProperty(value = "采购方案编号") + private String projNo; + + @ApiModelProperty(value = "采购方案名称") + private String projName; + + @ApiModelProperty(value = "业务类型") + private String businessType; + + @ApiModelProperty(value = "业务流程类型") + private String businessProcessType; + + @ApiModelProperty(value = "物资利旧情况") + private String materialUtilization; + + @ApiModelProperty(value = "标的类型") + private String targetType; + + @ApiModelProperty(value = "资金性质") + private String fundProperty; + + @ApiModelProperty(value = "采购建项id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long purpId; + + @ApiModelProperty(value = "采购建项编号") + private String purpNo; + + @ApiModelProperty(value = "采购建项名称") + private String purpName; + + @ApiModelProperty(value = "pms项目编号") + private String pmsPurpNo; + + @ApiModelProperty(value = "pms项目名称") + private String pmsPurpName; + + @ApiModelProperty(value = "pms批复文号") + private String pmsPassNo; + + @ApiModelProperty(value = "审批单状态") + private String auditStatus; + + @ApiModelProperty(value = "审批单编号") + private String auditNo; + + @ApiModelProperty(value = "审批单名称") + private String auditName; + + @ApiModelProperty(value = "审批通过时间") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime auditTime; + + @ApiModelProperty(value = "审批表选择") + private String processInstanceId; + + @ApiModelProperty(value = "采购模式") + private String purcModel; + + @ApiModelProperty(value = "采购形式") + private String purcForm; + + @ApiModelProperty(value = "采购方式") + private String purcMode; + + @ApiModelProperty(value = "招标限额情况") + private String bidLimit; + + @ApiModelProperty(value = "可研是否核准采购方式") + private String isApprove; + + @ApiModelProperty(value = "资审方式") + private String suppQualify; + + @ApiModelProperty(value = "评价方法") + private String scoreType; + + @ApiModelProperty(value = "单一来源原因") + private String singleReason; + + @ApiModelProperty(value = "选择此采购方式原因") + private String purcSelectReason; + + @ApiModelProperty(value = "报价方式") + private String quotType; + + @ApiModelProperty(value = "评审方法") + private String reviewMethod; + + @ApiModelProperty(value = "评审次数") + private String reviewNum; + + @ApiModelProperty(value = "比选方式") + private String comparSelectMode; + + @ApiModelProperty(value = "资产归属") + private String assetType; + + @ApiModelProperty(value = "建设(采购)依据") + private String enginBasic; + + @ApiModelProperty(value = "资金来源") + private String fundOrign; + + @ApiModelProperty(value = "购买文件地址") + private String purcRegionAllot; + + @ApiModelProperty(value = "中标原则") + private String judgePrinciple; + + @ApiModelProperty(value = "中选供应商限制数量") + private String winSupplierNum; + + @ApiModelProperty(value = "谈判策略") + private String judgeRules; + + @ApiModelProperty(value = "是否经总裁办公会审批") + private String isLeaderAudit; + + @ApiModelProperty(value = "评委个数") + private Integer evaluationPeopleNum; + + @ApiModelProperty(value = "抽取评委个数") + private Integer extractEvaluationNum; + + @ApiModelProperty(value = "评委来源") + private String evaluationOrign; + + @ApiModelProperty(value = "代理是否可见") + private String isAgentVisible; + + @ApiModelProperty(value = "付款比例") + private String payProportion; + + @ApiModelProperty(value = "付款比例说明") + private String payProportionDesc; + + @ApiModelProperty(value = "终验后免费保修时限(月)") + private Integer afterServiceYear; + + @ApiModelProperty(value = "特殊条款(含赔偿条款)") + private String specialItems; + + @ApiModelProperty(value = "签约付款方式") + private String agreContedMode; + + @ApiModelProperty(value = "版本升级原因说明") + private String upgradeReason; + + @ApiModelProperty(value = "招标失败") + private String isBidFail; + + @ApiModelProperty(value = "招标失败原因") + private String bidFailReason; + + @ApiModelProperty(value = "当前状态") + private String currentStatus; + + @ApiModelProperty(value = "是否编制结果") + private String isMakeResult; + + @ApiModelProperty(value = "版本号") + private String versionNo; + + @ApiModelProperty(value = "是否为最新版本方案") + private String isNewVersion; + + @ApiModelProperty(value = "方案组id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long versionGroupId; + + @ApiModelProperty(value = "上一个方案版本id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long upVersionId; + + @ApiModelProperty(value = "编制人编码") + private String makerCode; + + @ApiModelProperty(value = "编制人") + private String maker; + + @ApiModelProperty(value = "产品经理编码") + private String undertakerCode; + + @ApiModelProperty(value = "产品经理") + private String undertaker; + + @ApiModelProperty(value = "供应商编号") + private String supplierNo; + + @ApiModelProperty(value = "供应商名称") + private String supplierName; + + @ApiModelProperty(value = "起拍总价") + private BigDecimal startPrice; + + @ApiModelProperty(value = "保留价") + private BigDecimal reservePrice; + + @ApiModelProperty(value = "评估价") + private BigDecimal appraisalPrice; + + @ApiModelProperty(value = "原值") + private BigDecimal originalValue; + + @ApiModelProperty(value = "净值") + private BigDecimal netWorth; + + @ApiModelProperty(value = "数量") + private Integer num; + + @ApiModelProperty(value = "单位名称") + private String unit; + + @ApiModelProperty(value = "分值") + private Integer score; + + @ApiModelProperty(value = "主要评分因素") + private String mainScoringFactors; + + @ApiModelProperty(value = "资产价值") + private String assetValue; + + @ApiModelProperty(value = "谈判目标") + private BigDecimal negotiationObjectives; + + @ApiModelProperty(value = "最高限价") + private BigDecimal priceCeiling; + + @ApiModelProperty(value = "标包划分") + private String packageDivision; + + @ApiModelProperty(value = "联动要求") + private String linkageRequirement; + + @ApiModelProperty(value = "运保费") + private String freightPremium; + + @ApiModelProperty(value = "履约保证措施") + private String performanceGuaranteeMeasure; + + @ApiModelProperty(value = "份额分配") + private String shareAllocation; + + @ApiModelProperty(value = "份额落地") + private String shareLand; + + @ApiModelProperty(value = "评标委员会") + private String bidEvaluationCommittee; + + @ApiModelProperty(value = "专家来源") + private String expertSource; + + @ApiModelProperty(value = "选派评委个数") + private Integer selectJudgesNum; + + @ApiModelProperty(value = "中标候选人公示") + private String announcementSuccessfulCandidate; + + @ApiModelProperty(value = "合同签订") + private String contractSign; + + @ApiModelProperty(value = "购买文件地址") + private String purchaseDocumentAddress; + + @ApiModelProperty(value = "推送状态") + private String pushStatus; + + @ApiModelProperty(value = "不进行公示原因") + private String noPublicityReason; + + @ApiModelProperty(value = "评审小组成员组成规则") + private String reviewTeamMemberFormRule; + + @ApiModelProperty(value = "说明") + private String explainDesc; + + @ApiModelProperty(value = "招募开始时间") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime recruitStartTime; + + @ApiModelProperty(value = "招募结束时间") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime recruitEndTime; + + @ApiModelProperty(value = "创建人") + private Long createBy; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime createDate; + + @ApiModelProperty(value = "租户标识") + private String tenantId; + + @ApiModelProperty(value = "租户名称") + private String tenantName; + + @ApiModelProperty(value = "逻辑删除") + private String deleteFlag; + + @ApiModelProperty(value = "最后更新时间戳") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime lastUpdateTime; + + @ApiModelProperty(value = "备用字段1") + private String attribute1; + + @ApiModelProperty(value = "备用字段2") + private String attribute2; + + @ApiModelProperty(value = "备用字段3") + private String attribute3; + + @ApiModelProperty(value = "备用字段4") + private String attribute4; + + @ApiModelProperty(value = "备用字段5") + private String attribute5; + + @ApiModelProperty(value = "供应商列表") + private List projSuppRelVOList; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/ProjSuppRelVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/ProjSuppRelVO.java new file mode 100644 index 0000000..1abcce4 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/ProjSuppRelVO.java @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2020, SDCNCSI. All rights reserved. + */ +package com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +/** + *

+ * proj_supp_rel 供应商实体 + *

+ * + * @author wmm + * @date 2020-11-13 + * @version: V1.0 + * @update [序号][日期YYYY-MM-DD] [更改人姓名][变更描述] + */ +@Data +@Accessors(chain = true) +@ApiModel(value="ProjSuppRel对象", description="proj_supp_rel") +public class ProjSuppRelVO{ + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @TableId(value = "id") + private Long id; + + @ApiModelProperty(value = "采购方案id") + private Long projId; + + @ApiModelProperty(value = "供应商编号") + private String suppNo; + + @ApiModelProperty(value = "供应商来源") + private String suppSource; + + @ApiModelProperty(value = "推荐理由") + private String recommendReason; + + @ApiModelProperty(value = "供应商名称") + private String suppName; + + @ApiModelProperty(value = "供应商id") + private Long suppId; + + @ApiModelProperty(value = "终止环节ID") + private Long disuseStageId; + + @ApiModelProperty(value = "供应商别名") + private String suppRename; + + @ApiModelProperty(value = "终止时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime disuseTime; + + @ApiModelProperty(value = "供应商状态") + private String suppStatus; + + @ApiModelProperty(value = "终止理由") + private String disuseReason; + + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "供应商联系人id") + private Long suppLinkManId; + + @ApiModelProperty(value = "供应商联系人姓名") + private String suppLinkManName; + + @ApiModelProperty(value = "供应商联系人email") + private String suppLinkManEmail; + + @ApiModelProperty(value = "供应商描述") + private String suppDesc; + + @ApiModelProperty(value = "是否有代理公司") + private String isSurrogate; + + @ApiModelProperty(value = "代理公司名称") + private String surrogateName; + + @ApiModelProperty(value = "系统团体编码") + private String sysPartyCode; + + @ApiModelProperty(value = "是否推荐") + private String isRecommend; + + @ApiModelProperty(value = "是否中标") + private String isWin; + + @ApiModelProperty(value = "账户") + private String account; + + @ApiModelProperty(value = "租户标识") + private String tenantId; + + @ApiModelProperty(value = "租户名称") + private String tenantName; + + @ApiModelProperty(value = "最后更新时间戳") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime lastUpdateTime; + + @ApiModelProperty(value = "备用字段1") + private String attribute1; + + @ApiModelProperty(value = "备用字段2") + private String attribute2; + + @ApiModelProperty(value = "备用字段3") + private String attribute3; + + @ApiModelProperty(value = "备用字段4") + private String attribute4; + + @ApiModelProperty(value = "备用字段5") + private String attribute5; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpBaseInfoVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpBaseInfoVO.java new file mode 100644 index 0000000..bb6f034 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpBaseInfoVO.java @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2020, SDCNCSI. All rights reserved. + */ +package com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + *

+ * 采购建项 + *

+ * + * @author liuyx + * @date 2020-10-06 + * @version V1.0 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="PurpBaseInfo对象", description="采购建项") +public class PurpBaseInfoVO { + + @ApiModelProperty(value = "采购建项主键") + @TableId(value = "id") + private String id; + + @ApiModelProperty(value = "父项目id") + private String purpSuperId; + + @ApiModelProperty(value = "父项目编号") + private String purpSuperNo; + + @ApiModelProperty(value = "父项目名称") + private String purpSuperName; + + @ApiModelProperty(value = "业务类型") + private String businessType; + + @ApiModelProperty(value = "拍卖类型") + private String auctionType; + + @ApiModelProperty(value = "竞价平台") + private String biddingPlatform; + + @ApiModelProperty(value = "采购项目编号") + private String purpNo; + + @ApiModelProperty(value = "采购项目名称") + private String purpName; + + @ApiModelProperty(value = "编制人编码") + private String makerCode; + + @ApiModelProperty(value = "编制人姓名") + private String maker; + + @ApiModelProperty(value = "产品经理编码") + private String undertakerCode; + + @ApiModelProperty(value = "产品经理姓名") + private String undertaker; + + @ApiModelProperty(value = "采购实施部门编码") + private String procImplDeptCode; + + @ApiModelProperty(value = "采购实施部门") + private String procImplDept; + + @ApiModelProperty(value = "需求归属部门编码") + private String requAscriptionDeptCode; + + @ApiModelProperty(value = "需求归属部门") + private String requAscriptionDept; + + @ApiModelProperty(value = "采购预算(不含税)") + private BigDecimal budgetAmount; + + @ApiModelProperty(value = "项目级别") + private String projectLevel; + + @ApiModelProperty(value = "专业线") + private String professionalLine; + + @ApiModelProperty(value = "业务流程类型") + private String businessProcessType; + + @ApiModelProperty(value = "项目是否需求公示") + private String isPublicity; + + @ApiModelProperty(value = "当前状态") + private String currentStatus; + + @ApiModelProperty(value = "项目状态") + private String purpStatus; + + @ApiModelProperty(value = "处置类型") + private String disposalType; + + @ApiModelProperty(value = "资金性质") + private String fundsType; + + @ApiModelProperty(value = "公式期间是否收到质疑") + private String isQuestion; + + @ApiModelProperty(value = "质疑是否成立") + private String isEstablished; + + @ApiModelProperty(value = "公示结论") + private String noticeCompletion; + + @ApiModelProperty(value = "项目完结状态") + private String purpEndStatus; + + @ApiModelProperty(value = "是否编制方案") + private String isProj; + + @ApiModelProperty(value = "租户标识") + private String tenantId; + + @ApiModelProperty(value = "租户名称") + private String tenantName; + + @ApiModelProperty(value = "最后更新时间戳") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date lastUpdateTime; + + @ApiModelProperty(value = "备用字段1") + private String attribute1; + + @ApiModelProperty(value = "备用字段2") + private String attribute2; + + @ApiModelProperty(value = "备用字段3") + private String attribute3; + + @ApiModelProperty(value = "备用字段4") + private String attribute4; + + @ApiModelProperty(value = "备用字段5") + private String attribute5; + + @ApiModelProperty(value = "父项目代理公司") + private String agencyComp; + + @ApiModelProperty(value = "父项目组织形式") + private String organizationalForm; + + @ApiModelProperty(value = "联系电话") + private String telNo; + + @ApiModelProperty(value = "采购建项时间") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createDate; + + @ApiModelProperty(value = "批复时间") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date auditDate; + + @ApiModelProperty(value = "采购内容") + private List purpMaterialVOList; + + @ApiModelProperty(value = "当前所在阶段") + private String purpStageName; + + @ApiModelProperty(value = "方案实体") + private ProjBaseInfoVO projBaseInfoVO; + + @ApiModelProperty(value = "机构名称") + private String organName; + + @ApiModelProperty(value = "所属省分") + private String suborProvince; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpImplementSendVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpImplementSendVO.java new file mode 100644 index 0000000..d6d800e --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpImplementSendVO.java @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2020, SDCNCSI. All rights reserved. + */ +package com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

+ * 实施项目表 + *

+ * + * @author liuyx + * @date 2020-10-06 + * @version V1.0 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="PurpImplement对象", description="实施项目表") +public class PurpImplementSendVO{ + + @ApiModelProperty(value = "实施项目id") + @TableId(value = "id") + private String id; + + @ApiModelProperty(value = "实施项目编号") + private String purpImplementNo; + + @ApiModelProperty(value = "实施项目名称") + private String purpImplementName; + + @ApiModelProperty(value = "采购建项id") + private String purpId; + + @ApiModelProperty(value = "采购实施子项目数量") + private BigDecimal purpImplementDetailNum; + + @ApiModelProperty(value = "编制人编码") + private String makerCode; + + @ApiModelProperty(value = "编制人") + private String maker; + + @ApiModelProperty(value = "发送状态") + private String sendStatus; + + @ApiModelProperty(value = "发送完成日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date sendCompleteTime; + + @ApiModelProperty(value = "租户标识") + private String tenantId; + + @ApiModelProperty(value = "租户名称") + private String tenantName; + + @ApiModelProperty(value = "最后更新时间戳") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime lastUpdateTime; + + @ApiModelProperty(value = "备用字段1") + private String attribute1; + + @ApiModelProperty(value = "备用字段2") + private String attribute2; + + @ApiModelProperty(value = "备用字段3") + private String attribute3; + + @ApiModelProperty(value = "备用字段4") + private String attribute4; + + @ApiModelProperty(value = "备用字段5") + private String attribute5; + + @ApiModelProperty(value = "子项目实体集合") + private List purpBaseInfoVoList; + + @ApiModelProperty(value = "父项目实体信息") + private PurpSuperVO purpSuperVo; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpMaterialVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpMaterialVO.java new file mode 100644 index 0000000..da124f0 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpMaterialVO.java @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2020, SDCNCSI. All rights reserved. + */ +package com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.Date; + +/** + *

+ * 项目物料表 + *

+ * + * @author liuyx + * @date 2020-10-06 + * @version V1.0 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="PurpMaterial对象", description="项目物料表") +public class PurpMaterialVO{ + + + @ApiModelProperty(value = "采购处置内容主键") + @TableId(value = "id") + private String id; + + @ApiModelProperty(value = "项目id") + private String purpId; + + @ApiModelProperty(value = "项目编号") + private String purpNo; + + @ApiModelProperty(value = "项目名称") + private String purpName; + + @ApiModelProperty(value = "需求单id") + private String requId; + + @ApiModelProperty(value = "需求单编号") + private String requNo; + + @ApiModelProperty(value = "需求单名称") + private String requName; + + @ApiModelProperty(value = "需求部门编号") + private String deptCode; + + @ApiModelProperty(value = "需求部门名称") + private String deptName; + + @ApiModelProperty(value = "pms项目编号") + private String pmsProjNo; + + @ApiModelProperty(value = "pms项目名称") + private String pmsProjName; + + @ApiModelProperty(value = "批复文号") + private String pmsPassNo; + + @ApiModelProperty(value = "ou组织名") + private String orgName; + + @ApiModelProperty(value = "库存地址") + private String reservePlace; + + @ApiModelProperty(value = "物料编码") + private String materialCode; + + @ApiModelProperty(value = "物料行id") + private String materialId; + + @ApiModelProperty(value = "物料说明") + private String materialDesc; + + @ApiModelProperty(value = "物料厂家") + private String materialManufacturer; + + @ApiModelProperty(value = "物料类别编码") + private String materialCategoryCode; + + @ApiModelProperty(value = "物料类别名称") + private String materialCategoryName; + + @ApiModelProperty(value = "规格型号") + private String specModel; + + @ApiModelProperty(value = "库存id") + private String inventId; + + @ApiModelProperty(value = "商品SKU") + private String goodsSKU; + + @ApiModelProperty(value = "库龄") + private String libraryAge; + + @ApiModelProperty(value = "评估价") + private BigDecimal estimatedAmt; + + @ApiModelProperty(value = "原值") + private BigDecimal originalVal; + + @ApiModelProperty(value = "净值") + private BigDecimal netVal; + + @ApiModelProperty(value = "本次采购数量") + private BigDecimal num; + + @ApiModelProperty(value = "需求数量") + private BigDecimal requNum; + + @ApiModelProperty(value = "单位") + private String unit; + + @ApiModelProperty(value = "单价") + private BigDecimal unitAmt; + + @ApiModelProperty(value = "采购预算(不含税)") + private BigDecimal budgetAmt; + + @ApiModelProperty(value = "起拍单价") + private BigDecimal clapUnitPrice; + + @ApiModelProperty(value = "起拍总价") + private BigDecimal totalStartAmt; + + @ApiModelProperty(value = "统一目录名称") + private String uniftCatalogName; + + @ApiModelProperty(value = "统一目录编码") + private String uniftCatalogCode; + + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "最后更新时间戳") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date lastUpdateTime; + + @ApiModelProperty(value = "备用字段1") + private String attribute1; + + @ApiModelProperty(value = "备用字段2") + private String attribute2; + + @ApiModelProperty(value = "备用字段3") + private String attribute3; + + @ApiModelProperty(value = "备用字段4") + private String attribute4; + + @ApiModelProperty(value = "备用字段5") + private String attribute5; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpSuperVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpSuperVO.java new file mode 100644 index 0000000..e494cfd --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/entity/ebpentity/PurpSuperVO.java @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2020, SDCNCSI. All rights reserved. + */ +package com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +/** + *

+ * 采购父项目 父项目实体 + *

+ * + * @author liuyx + * @date 2020-10-06 + * @version V1.0 + */ +@Data +@Accessors(chain = true) +@TableName("purp_super") +@ApiModel(value="Super对象", description="采购父项目") +public class PurpSuperVO{ + + @ApiModelProperty(value = "父项目主键") + @TableId(value = "id") + private String id; + + @ApiModelProperty(value = "父项目编号") + private String purpSuperNo; + + @ApiModelProperty(value = "父项目名称") + private String purpSuperName; + + @ApiModelProperty(value = "业务类型") + private String businessType; + + @ApiModelProperty(value = "编制人编码") + private String makerCode; + + @ApiModelProperty(value = "编制人姓名") + private String maker; + + @ApiModelProperty(value = "采购实施部门编码") + private String procImplDeptCode; + + @ApiModelProperty(value = "采购实施部门名称") + private String procImplDept; + + @ApiModelProperty(value = "组织形式") + private String organizationalForm; + + @ApiModelProperty(value = "代理公司编码") + private String agencyCompCode; + + @ApiModelProperty(value = "代理公司") + private String agencyComp; + + @ApiModelProperty(value = "拍卖类型") + private String auctionType; + + @ApiModelProperty(value = "竞价平台") + private String biddingPlatform; + + @ApiModelProperty(value = "当前状态") + private String currentStatus; + + @ApiModelProperty(value = "租户标识") + private String tenantId; + + @ApiModelProperty(value = "租户名称") + private String tenantName; + + @ApiModelProperty(value = "最后更新时间戳") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime lastUpdateTime; + + @ApiModelProperty("创建人") + private Long createBy; + + @ApiModelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime createDate; + + @ApiModelProperty("编辑人") + private Long updateBy; + + @ApiModelProperty("编辑时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateDate; + + @ApiModelProperty(value = "备用字段1") + private String attribute1; + + @ApiModelProperty(value = "备用字段2") + private String attribute2; + + @ApiModelProperty(value = "备用字段3") + private String attribute3; + + @ApiModelProperty(value = "备用字段4") + private String attribute4; + + @ApiModelProperty(value = "备用字段5") + private String attribute5; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/IProjectEntrustExpandService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/IProjectEntrustExpandService.java new file mode 100644 index 0000000..163903a --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/IProjectEntrustExpandService.java @@ -0,0 +1,16 @@ +package com.chinaunicom.mall.ebtp.project.projectentrust.service; + + +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustExpand; + +/** + * 对数据表 biz_project_entrust_expand 操作的 service + * @author Auto create + * + */ +public interface IProjectEntrustExpandService extends IBaseService{ + + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/IProjectEntrustService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/IProjectEntrustService.java new file mode 100644 index 0000000..3804c36 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/IProjectEntrustService.java @@ -0,0 +1,85 @@ +package com.chinaunicom.mall.ebtp.project.projectentrust.service; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrust; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpImplementSendVO; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 对数据表 biz_project_entrust 操作的 service + * @author daixc + * @date 2020/10/27 + * + */ +public interface IProjectEntrustService extends IBaseService{ + + /** + * 委托单分页信息 + * @param projectEntrust 委托单查询信息 + * @return 返回结果 + */ + IPage getPage(ProjectEntrustVO projectEntrust); + + /** + * 分派项目经理 + * @param projectEntrust 委托单信息 + * @return 返回结果 + */ + boolean dispatch(ProjectEntrustVO projectEntrust); + + /** + * 取消分派项目经理 + * @param id 委托单ID + * @return 返回结果 + */ + boolean retractDispatch(Long id); + + /** + * 委托机构拒绝 + * @param id 委托单ID + * @param remarks 决绝说明 + * @return 返回结果 + */ + boolean agencyCompanyDispatch(Long id, String remarks); + + /** + * 项目经理同意 + * @param id 委托单ID + * @return 返回结果 + */ + boolean projectManagerAgree(Long id); + + /** + * 项目经理拒绝 + * @param id 委托单ID + * @return 返回结果 + */ + boolean projectManagerRefuse(Long id); + + /** + * 获取项目相关所有信息 + * @param id 委托单ID + * @return 返回结果 + */ + ProjectEntrustVO getProjectAll(Long id); + + /** + * 委托项目信息出始化 + * + * @param ebpProjectId 实施项目ID + * @return 返回结果 + */ + boolean initProjectEntrust(Long ebpProjectId); + + /** + * 接口测试 + * @param purpImplementSendVO + * @return + */ + boolean testProjectEntrust(PurpImplementSendVO purpImplementSendVO); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/impl/ProjectEntrustExpandServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/impl/ProjectEntrustExpandServiceImpl.java new file mode 100644 index 0000000..a9ea03b --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/impl/ProjectEntrustExpandServiceImpl.java @@ -0,0 +1,18 @@ +package com.chinaunicom.mall.ebtp.project.projectentrust.service.impl; + + +import com.chinaunicom.mall.ebtp.project.projectentrust.dao.ProjectEntrustExpandMapper; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustExpand; +import com.chinaunicom.mall.ebtp.project.projectentrust.service.IProjectEntrustExpandService; +import org.springframework.stereotype.Service; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; +/** + * 对数据表 biz_project_entrust_expand 操作的 serviceImpl + * @author Auto create + * + */ +@Service +public class ProjectEntrustExpandServiceImpl extends BaseServiceImpl implements IProjectEntrustExpandService { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/impl/ProjectEntrustServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/impl/ProjectEntrustServiceImpl.java new file mode 100644 index 0000000..34128f8 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectentrust/service/impl/ProjectEntrustServiceImpl.java @@ -0,0 +1,543 @@ +package com.chinaunicom.mall.ebtp.project.projectentrust.service.impl; + +import cn.hutool.core.bean.BeanUtil; +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.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.enums.ResponseEnum; +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.exception.common.CommonExceptionEnum; +import com.chinaunicom.mall.ebtp.common.util.JsonUtils; +import com.chinaunicom.mall.ebtp.common.util.PropertyUtils; +import com.chinaunicom.mall.ebtp.project.baseoperlog.service.IBaseOperLogService; +import com.chinaunicom.mall.ebtp.project.common.EbpProjectCommonUtil; +import com.chinaunicom.mall.ebtp.project.common.ProjectCommonUtil; +import com.chinaunicom.mall.ebtp.project.common.ProjectExceptionEnum; +import com.chinaunicom.mall.ebtp.project.feign.MallPurpApi; +import com.chinaunicom.mall.ebtp.project.projectauction.service.IProjectAuctionService; +import com.chinaunicom.mall.ebtp.project.projectentrust.dao.ProjectEntrustMapper; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrust; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustExpand; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.ProjBaseInfoVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpBaseInfoVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpImplementSendVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.PurpSuperVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.service.IProjectEntrustExpandService; +import com.chinaunicom.mall.ebtp.project.projectentrust.service.IProjectEntrustService; +import com.chinaunicom.mall.ebtp.project.projectrecord.service.IProjectRecordService; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + +/** + * 对数据表 biz_project_entrust 操作的 serviceImpl + * @author daixc + * @date 2020/10/27 + * + */ +@Service +public class ProjectEntrustServiceImpl extends BaseServiceImpl implements IProjectEntrustService { + + @Resource + private IProjectRecordService projectRecordService; + + @Resource + private IProjectEntrustExpandService entrustExpandService; + + @Resource + private IBaseOperLogService baseOperLogService; + + @Resource + private IBaseCacheUserService cacheUserService; + + @Resource + private IProjectAuctionService auctionService; + + @Resource + private MallPurpApi mallPurpApi; + + private static final String METHOD = "initProjectEntrust"; + + private static final String DESCRIPTION = "项目委托查询采购数据"; + + + + /** + * 获取查询条件 + * @param projectEntrust 查询条件 + * @return 返回查询条件 + */ + private QueryWrapper getProjectEntrustQueryWrapper(ProjectEntrustVO projectEntrust) { + QueryWrapper query = new QueryWrapper<>(); + //项目名称 + if(StringUtils.isNotBlank(projectEntrust.getProjectName())){ + query.like("project_name", projectEntrust.getProjectName()); + } + + //项目经理 + if(StringUtils.isNotBlank(projectEntrust.getProjectManager())){ + query.eq("project_manager", projectEntrust.getProjectManager()); + } + + //代理机构 + if(StringUtils.isNotBlank(projectEntrust.getAgencyCompany())){ + query.eq("agency_company", projectEntrust.getAgencyCompany()); + } + + //采购方式 + if(StringUtils.isNotBlank(projectEntrust.getProcurementMode())){ + query.eq("procurement_mode", projectEntrust.getProcurementMode()); + } + + //状态 + if(null != projectEntrust.getStatus()){ + query.eq("status", projectEntrust.getStatus()); + } + + //项目编号 + if(StringUtils.isNotBlank(projectEntrust.getProjectNumber())){ + query.eq("project_number", projectEntrust.getProjectNumber()); + } + + return query; + } + + @Override + public IPage getPage(ProjectEntrustVO projectEntrust) { + + QueryWrapper query = getProjectEntrustQueryWrapper(projectEntrust); + + query.orderByDesc("id"); + + if(null == projectEntrust.getBasePageRequest()){ + projectEntrust.setBasePageRequest(new BasePageRequest()); + } + + //查询 + IPage p = new Page<>(projectEntrust.getBasePageRequest().getPageNo(), projectEntrust.getBasePageRequest().getPageSize()); + IPage result = this.page(p, query); + + IPage voPage = result.convert(c -> BeanUtil.toBean(c,ProjectEntrustVO.class)); + voPage.setRecords(JsonUtils.jsonToList(result.getRecords(),ProjectEntrustVO.class)); + + return voPage; + } + + @Override + public boolean dispatch(ProjectEntrustVO projectEntrustVO) { + projectEntrustVO.setStatus(ProjectCommonUtil.ENTRUS_STATUS_1); + boolean result = updateStatus(projectEntrustVO,ProjectCommonUtil.ENTRUS_STATUS_2); + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValid(!result); + return result; + } + + @Override + public boolean retractDispatch(Long id) { + ProjectEntrust projectEntrust = this.getById(id); + projectEntrust.setId(id); + projectEntrust.setStatus(ProjectCommonUtil.ENTRUS_STATUS_2); + boolean result = updateStatus(projectEntrust,ProjectCommonUtil.ENTRUS_STATUS_1); + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValid(!result); + return result; + } + + @Override + public boolean agencyCompanyDispatch(Long id,String remarks) { + ProjectEntrust projectEntrust = this.getById(id); + projectEntrust.setId(id); + projectEntrust.setStatus(ProjectCommonUtil.ENTRUS_STATUS_1); + projectEntrust.setRemarks(remarks); + boolean result = updateStatus(projectEntrust,ProjectCommonUtil.ENTRUS_STATUS_9); + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValid(!result); + //调用采购系统退回通知接口 1期不进行实现 + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean projectManagerAgree(Long id) { + + boolean result = false; + ProjectEntrust projectEntrust = this.getById(id); + + //判断项目经理同意项目状态是否正确 + if(null != projectEntrust && null != projectEntrust.getStatus() && projectEntrust.getStatus().equals(ProjectCommonUtil.ENTRUS_STATUS_2)){ + result = updateStatus(projectEntrust,ProjectCommonUtil.ENTRUS_STATUS_3); + + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValid(!result); + //修改项目信息 + result = projectRecordService.assent(id); + }else{ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_FIND.customValid(null == projectEntrust); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_STATE.throwException(); + } + return result; + } + + @Override + public boolean projectManagerRefuse(Long id) { + + boolean result = false; + ProjectEntrust projectEntrust = this.getById(id); + + //判断项目经理拒绝时状态是否正确 + if(null != projectEntrust && null != projectEntrust.getStatus() && projectEntrust.getStatus().equals(ProjectCommonUtil.ENTRUS_STATUS_2)){ + result = updateStatus(projectEntrust,ProjectCommonUtil.ENTRUS_STATUS_1); + }else{ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_FIND.customValid(null == projectEntrust); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_STATE.throwException(); + } + return result; + } + + /** + * 查询所有信息 + * @param id 委托单ID + * @return 返回结果 + */ + @Override + public ProjectEntrustVO getProjectAll(Long id) { + + ProjectEntrustVO vo = BeanUtil.toBean(this.getById(id),ProjectEntrustVO.class); + + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_FIND.customValid(null == vo); + + ProjectEntrustExpand expand = entrustExpandService.getOne(new QueryWrapper().eq("entrust_id",id)); + + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_FIND.customValid(null == expand); + + if(null != vo){ + vo.setProjectEntrustExpand(expand); + } + + return vo; + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean initProjectEntrust(Long ebpProjectId){ + + boolean result = false; + + ProjectEntrust projectEntrust = this.getOne(new QueryWrapper().eq("procurement_plan_id",ebpProjectId)); + + //是否需要请求接口 + boolean isRequestClient = false; + + //是否调用修改 + boolean isUpdate =false; + //判断如果为空 或者之前拒绝 重新插入 + if(null == projectEntrust || projectEntrust.getStatus().equals(ProjectCommonUtil.ENTRUS_STATUS_9)){ + isRequestClient = true; + }else{ + //如果为分派或者未同意 可以进行修改 + if(projectEntrust.getStatus().equals(ProjectCommonUtil.ENTRUS_STATUS_1) || + projectEntrust.getStatus().equals(ProjectCommonUtil.ENTRUS_STATUS_2)){ + isRequestClient = true; + isUpdate = true; + }else{ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_ERROR_STATE.throwException(); + } + } + + if(isRequestClient){ + + BaseResponse baseResponse = mallPurpApi.findDataByPurpImplmentId(ebpProjectId); + + //调用接口 拼装数据 + baseOperLogService.addLog(METHOD,JsonUtils.objectToJson(baseResponse),DESCRIPTION,cacheUserService.getCacheUser(),"",true); + + if(!baseResponse.isSuccess()){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_FIND_PUR_ERROR.throwException(); + } + + PurpImplementSendVO purpImplementSendVO = baseResponse.getData(); + + if(null == purpImplementSendVO || null == purpImplementSendVO.getPurpSuperVo()){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_PURP_SUPER_VO_EMPTY.throwException(); + } + + //竞拍 + if(StringUtils.equals(purpImplementSendVO.getPurpSuperVo().getBusinessType(),EbpProjectCommonUtil.BUSINESS_TYPE_003)){ + //直接调用竞拍 + result = auctionService.initProjectAuction(ebpProjectId,purpImplementSendVO); + }else{ + + //校验数据 + checkPurpImplementSendVO(purpImplementSendVO); + //初始化委托单信息 + ProjectEntrustVO projectEntrustVO = assembleProjectEntrust(purpImplementSendVO); + if(isUpdate){ + result = updateProject(projectEntrustVO); + }else{ + result = saveProject(projectEntrustVO); + } + } + } + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean testProjectEntrust(PurpImplementSendVO purpImplementSendVO) { + + baseOperLogService.addLog(METHOD,JsonUtils.objectToJson(purpImplementSendVO),DESCRIPTION,cacheUserService.getCacheUser(),"",true); + + boolean result; + + if(null == purpImplementSendVO || null == purpImplementSendVO.getPurpSuperVo()){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_PURP_SUPER_VO_EMPTY.throwException(); + } + + //竞拍 + if(StringUtils.equals(purpImplementSendVO.getPurpSuperVo().getBusinessType(),EbpProjectCommonUtil.BUSINESS_TYPE_003)){ + //直接调用竞拍 + result = auctionService.initProjectAuction(purpImplementSendVO); + }else{ + + //校验数据 + checkPurpImplementSendVO(purpImplementSendVO); + //初始化委托单信息 + ProjectEntrustVO projectEntrust = assembleProjectEntrust(purpImplementSendVO); + //插入数据 + result = saveProject(projectEntrust); + } + return result; + } + + + private ProjectEntrustVO assembleProjectEntrust(PurpImplementSendVO purpImplementSendVO){ + + PurpBaseInfoVO purpBaseInfoVO = purpImplementSendVO.getPurpBaseInfoVoList().get(0); + + ProjectEntrustVO result = new ProjectEntrustVO(); + //编号 + result.setId(PropertyUtils.getSnowflakeId()); + //状态 + result.setStatus(ProjectCommonUtil.ENTRUS_STATUS_1); + //项目名称 + result.setProjectName(purpImplementSendVO.getPurpImplementName()); + //实施项目编号 + result.setProjectNumber(purpImplementSendVO.getPurpImplementNo()); + //对应采购平台的采购方案id(项目实施ID) + result.setProcurementPlanId(purpImplementSendVO.getId()); + //起草人 + result.setDraftUser(purpImplementSendVO.getMakerCode()); + //起草时间 + result.setDraftTime(purpImplementSendVO.getLastUpdateTime()); + //采购人 + result.setPurchaser(purpBaseInfoVO.getOrganName()); + //委托部门 + result.setEntrustDepartment(purpBaseInfoVO.getProcImplDeptCode()); + //委托部门名称 + result.setEntrustDepartmentName(purpBaseInfoVO.getProcImplDept()); + //代理公司 + result.setAgencyCompany(purpImplementSendVO.getPurpSuperVo().getAgencyCompCode()); + //代理公司名称 + result.setAgencyCompanyName(purpImplementSendVO.getPurpSuperVo().getAgencyComp()); + //采购类型 + result.setProcurementType(EbpProjectCommonUtil.PROCUREMENT_TYPE_MAP.get(purpBaseInfoVO.getProjBaseInfoVO().getPurcMode())); + //组织方式 + result.setOrganization(EbpProjectCommonUtil.ORGANIZATIONAL_MAP.get(purpImplementSendVO.getPurpSuperVo().getOrganizationalForm())); + //采购方式 + result.setProcurementMode(getProcurementMode(purpBaseInfoVO.getProjBaseInfoVO())); + //采购经理 + result.setPurchasingManager(purpBaseInfoVO.getUndertakerCode()); + result.setPurchasingManagerName(purpBaseInfoVO.getUndertaker()); + result.setPurchasingManagerPhone(purpBaseInfoVO.getTelNo()); + + if(StringUtils.equals(ProjectCommonUtil.ORGANIZATION_2,result.getOrganization())){ + result.setProjectManager(purpBaseInfoVO.getUndertakerCode()); + result.setProjectManagerName(purpBaseInfoVO.getUndertaker()); + result.setProjectManagerPhone(purpBaseInfoVO.getTelNo()); + } + + ProjectEntrustExpand expand = new ProjectEntrustExpand(); + expand.setEntrustId(result.getId()); + expand.setPurpImplementSendVO(purpImplementSendVO); + result.setProjectEntrustExpand(expand); + return result; + + } + + /** + * 初始化项目相关信息 + * @param projectEntrustVO 项目所有信息 + * @return 返回结果 + */ + @Transactional(rollbackFor = Exception.class) + public boolean saveProject(ProjectEntrustVO projectEntrustVO){ + + boolean result = this.save(BeanUtil.toBean(projectEntrustVO,ProjectEntrust.class)); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_SAVE.customValid(!result); + + result = assistInitProject(projectEntrustVO); + + if(StringUtils.equals(projectEntrustVO.getOrganization(),ProjectCommonUtil.ORGANIZATION_2)){ + + projectRecordService.initProjectByIndependentProcurement(projectEntrustVO); + } + + return result; + } + + /** + * 初始化项目相关信息 + * @param projectEntrustVO 项目所有信息 + * @return 返回结果 + */ + @Transactional(rollbackFor = Exception.class) + public boolean updateProject(ProjectEntrustVO projectEntrustVO){ + + boolean result = this.updateById(projectEntrustVO); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_NOT_UPDATE.customValid(!result); + + entrustExpandService.remove(new QueryWrapper().eq("entrust_id",projectEntrustVO.getId())); + + result = assistInitProject(projectEntrustVO); + + return result; + } + + /** + * 出始化项目辅助相关信息 + * @param projectEntrustVO 插入信息 + * @return 返回结果 + */ + private boolean assistInitProject(ProjectEntrustVO projectEntrustVO) { + boolean result; + if(null == projectEntrustVO.getProjectEntrustExpand()){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RECORD_NOT_FIND.throwException(); + } + + result = entrustExpandService.save(projectEntrustVO.getProjectEntrustExpand()); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RECORD_NOT_SAVE.customValid(!result); + + return result; + } + + /** + * 修改相应信息(分派、撤回分派、同意、拒绝、退回) + * @param projectEntrust 查询 + * @param newStatus 修改成新的状态 + * @return 返回结果 + */ + private boolean updateStatus(ProjectEntrust projectEntrust,Integer newStatus){ + UpdateWrapper entrustUpdateWrapper = new UpdateWrapper<>(); + entrustUpdateWrapper.eq("id",projectEntrust.getId()); + entrustUpdateWrapper.eq("status", projectEntrust.getStatus()); + + entrustUpdateWrapper.set("status",newStatus); + entrustUpdateWrapper.set("project_manager",projectEntrust.getProjectManager()); + entrustUpdateWrapper.set("project_manager_name",projectEntrust.getProjectManagerName()); + entrustUpdateWrapper.set("project_manager_phone",projectEntrust.getProjectManagerPhone()); + + boolean result = this.update(entrustUpdateWrapper); + + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValid(!result); + + return result; + } + + /** + * 转换采购方式 + * @param projBaseInfoVO 采购方案信息 + * @return 返回结果 + */ + private String getProcurementMode(ProjBaseInfoVO projBaseInfoVO){ + + String procurementMode; + + if(StringUtils.equals(EbpProjectCommonUtil.BUSINESS_TYPE_002,projBaseInfoVO.getBusinessType())){ + procurementMode = ProjectCommonUtil.PROCUREMENT_MODE_4; + }else if(StringUtils.equals(EbpProjectCommonUtil.BUSINESS_TYPE_003,projBaseInfoVO.getBusinessType())){ + procurementMode = ProjectCommonUtil.PROCUREMENT_MODE_8; + }else{ + procurementMode = EbpProjectCommonUtil.PROCUREMENT_MODE_MAP.get(projBaseInfoVO.getPurcMode()); + } + + return procurementMode; + } + + /** + * 校验推送信息是否符合 + * @param implementSendVO 采购委托推送数据 + */ + private void checkPurpImplementSendVO(PurpImplementSendVO implementSendVO){ + + //实施项目 + if (StringUtils.isEmpty(implementSendVO.getPurpImplementName())){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_PURP_IMPLEMENT_NAME_EMPTY.throwException(); + } + + //实施项目ID + if(StringUtils.isEmpty(implementSendVO.getId())){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_PURP_IMPLEMENT_ID_EMPTY.throwException(); + } + + + PurpSuperVO purpSuperVo = implementSendVO.getPurpSuperVo(); + if(null == purpSuperVo){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_PURP_SUPER_VO_EMPTY.throwException(); + } + + //业务类型 + if(StringUtils.isEmpty(purpSuperVo.getBusinessType())){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_BUSINESS_TYPE_EMPTY.throwException(); + } + + //组织形式 + if(StringUtils.isEmpty(purpSuperVo.getOrganizationalForm())){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_ORGANIZATIONAL_FORM_EMPTY.throwException(); + } + + List purpBaseInfoVOList = implementSendVO.getPurpBaseInfoVoList(); + if(null == purpBaseInfoVOList || purpBaseInfoVOList.size() <= 0){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_PURP_BASE_INFO_VO_EMPTY.throwException(); + } + + PurpBaseInfoVO purpBaseInfo = purpBaseInfoVOList.get(0); + + //机构名称 + if(StringUtils.isEmpty(purpBaseInfo.getOrganName())){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_ORGAN_NAME_EMPTY.throwException(); + } + //所属省分 + if(StringUtils.isEmpty((purpBaseInfo.getSuborProvince()))){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_SUBOR_PROVINCE_EMPTY.throwException(); + } + + //资金来源 寻源业务 + if(StringUtils.equals(EbpProjectCommonUtil.BUSINESS_TYPE_001,purpSuperVo.getBusinessType())&& + StringUtils.isEmpty((purpBaseInfo.getProjBaseInfoVO().getFundOrign()))){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_FUND_ORIGN_EMPTY.throwException(); + } + + //标的类型 + if(StringUtils.isEmpty(purpBaseInfo.getProjBaseInfoVO().getTargetType())){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_TARGET_TYPE_EMPTY.throwException(); + } + + //采购方式 寻源业务 + if(StringUtils.equals(EbpProjectCommonUtil.BUSINESS_TYPE_001,purpSuperVo.getBusinessType())&& + StringUtils.isEmpty((purpBaseInfo.getProjBaseInfoVO().getPurcMode()))){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ENTRUST_TARGET_TYPE_EMPTY.throwException(); + } + + } + +} 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 new file mode 100644 index 0000000..1df2076 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/controller/ProjectExceptionController.java @@ -0,0 +1,121 @@ +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.common.util.PropertyUtils; +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; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 项目异常处理信息 + * @author daixc + * @date 2020/11/05 + */ +@RestController +@Api(tags = "项目异常处理信息") +@RequestMapping("/v1/projectException") +public class ProjectExceptionController{ + + @Resource + private IProjectExceptionService projectExceptionService; + + /** + * 插入新数据 + * + * @param projectExceptionVO 异常信息 + * + * @return + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid ProjectExceptionVO projectExceptionVO){ + + boolean save = projectExceptionService.insert(projectExceptionVO); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param projectException 异常信息 + * + * @return + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectException projectException){ + + + return BaseResponse.success(projectExceptionService.updateById(projectException)); + } + + /** + * 查询数据 + * + * @param id 异常信息ID + * + * @return + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable String id){ + + ProjectException projectException = projectExceptionService.getById(id); + + return BaseResponse.success(projectException); + } + + /** + * 查询分页数据 + * + * @param projectExceptionVO 分页信息 + * + * @return 返回结果 + */ + @ApiOperation("查询分页数据") + @PostMapping("/getPage") + public BaseResponse> getPage(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectExceptionVO projectExceptionVO){ + + return BaseResponse.success(projectExceptionService.getPage(projectExceptionVO)); + } + + /** + * 移除异常信息 + * + * @param id 异常信息ID + * + * @return + */ + @ApiOperation("移除异常信息") + @DeleteMapping("/{id}") + public BaseResponse delete(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + return BaseResponse.success(projectExceptionService.delete(id)); + } + + /** + * 项目异常生效 + * + * @param id 异常信息ID + * + * @return + */ + @ApiOperation("项目异常生效") + @PutMapping("/{id}") + public BaseResponse updateState(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + return BaseResponse.success(projectExceptionService.updateState(id)); + } + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/controller/ProjectSectionExceptionController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/controller/ProjectSectionExceptionController.java new file mode 100644 index 0000000..ed44d78 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/controller/ProjectSectionExceptionController.java @@ -0,0 +1,69 @@ +package com.chinaunicom.mall.ebtp.project.projectexception.controller; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.projectexception.entity.ProjectSectionException; +import com.chinaunicom.mall.ebtp.project.projectexception.service.IProjectSectionExceptionService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +@RestController +@Api(tags = "项目标段异常信息") +@RequestMapping("/v1/projectsectionException") +public class ProjectSectionExceptionController{ + + @Resource + private IProjectSectionExceptionService projectSectionExceptionService; + + /** + * 插入新数据 + * + * @param projectSectionException + * + * @return + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid ProjectSectionException projectSectionException){ + + boolean save = projectSectionExceptionService.save(projectSectionException); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param projectSectionException + * + * @return + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectSectionException projectSectionException){ + + return BaseResponse.success(projectSectionExceptionService.updateById(projectSectionException)); + } + + /** + * 查询数据 + * + * @param id + * + * @return + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable String id){ + + ProjectSectionException projectSectionException = projectSectionExceptionService.getById(id); + + return BaseResponse.success(projectSectionException); + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/ProjectExceptionMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/ProjectExceptionMapper.java new file mode 100644 index 0000000..770fd73 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/ProjectExceptionMapper.java @@ -0,0 +1,32 @@ +package com.chinaunicom.mall.ebtp.project.projectexception.dao; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.projectexception.entity.ProjectException; +import com.chinaunicom.mall.ebtp.project.projectexception.entity.ProjectExceptionVO; +import org.apache.ibatis.annotations.Param; + +/** + * 项目异常mapper + * @author daixc + * @date 2020/11/06 + */ +public interface ProjectExceptionMapper extends IBaseMapper { + + /** + * 项目异常分页 + * @param page 分页信息 + * @param projectExceptionVO 异常查询条件 + * @return 返回结果 + */ + Page getProjectExceptionPage(IPage page, @Param("vo") ProjectExceptionVO projectExceptionVO); + + /** + * 物理删除信息 + * @param id 项目异常信息ID + * @return + */ + boolean deletePhysical(@Param(value = "id") Long id); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/ProjectSectionExceptionMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/ProjectSectionExceptionMapper.java new file mode 100644 index 0000000..92c2d4b --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/ProjectSectionExceptionMapper.java @@ -0,0 +1,17 @@ +package com.chinaunicom.mall.ebtp.project.projectexception.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.projectexception.entity.ProjectSectionException; +import org.apache.ibatis.annotations.Param; + +public interface ProjectSectionExceptionMapper extends IBaseMapper { + + + /** + * 物理删除信息 + * @param exceptionId 异常信息ID + * @return 返回结果 + */ + int deleteByExceptionId(@Param(value = "exceptionId") Long exceptionId); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/mapper/ProjectExceptionMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/mapper/ProjectExceptionMapper.xml new file mode 100644 index 0000000..75526f3 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/mapper/ProjectExceptionMapper.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + update biz_project_exception + set + delete_flag="deleted" + where ID=#{id} + + + + + + + delete from biz_project_exception where id = #{id} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/mapper/ProjectSectionExceptionMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/mapper/ProjectSectionExceptionMapper.xml new file mode 100644 index 0000000..700e5ce --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/dao/mapper/ProjectSectionExceptionMapper.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + update biz_project_section_exception + set + delete_flag="deleted" + where ID=#{id} + + + + + delete from biz_project_section_exception where exception_id = #{exceptionId} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/entity/ProjectException.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/entity/ProjectException.java new file mode 100644 index 0000000..dbde6a0 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/entity/ProjectException.java @@ -0,0 +1,98 @@ +package com.chinaunicom.mall.ebtp.project.projectexception.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 实体类 BizProjectException + * + * @author daixc + * @date 2020/11/05 + */ +@Data +@Accessors(chain = true) +@ApiModel("项目标段异常处理") +@TableName(value = "biz_project_exception", autoResultMap = true) +public class ProjectException extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @ApiModelProperty(value = "编号") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @NotNull(message = "项目ID不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long projectId; + + /** + * 标段ID + */ + @ApiModelProperty(value = "标段ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long sectionId; + + /** + * 项目异常类别 + */ + @ApiModelProperty(value = "项目异常类别") + private String exceptionType; + + /** + * 项目失败描述 + */ + @ApiModelProperty(value = "项目失败描述") + private String exceptionDesc; + + /** + * 处理意见(1 项目终止 2 再次发起采购) + */ + @ApiModelProperty(value = "处理意见(1 项目终止 2 再次发起采购)") + @NotEmpty(message = "处理意见不能为空") + private String handleType; + + /** + * 处理情况说明 + */ + @ApiModelProperty(value = "处理情况说明") + @Length(max = 500, message = "处理情况说明长度不能大于500字符") + private String exceptionComments; + + /** + * 附件ID + */ + @ApiModelProperty(value = "附件ID") + private String fileId; + + /** + * 状态 0:草稿;1:已生效;2:已删除 + */ + @ApiModelProperty(value = "状态 0:草稿;1:已生效;2:已删除") + private Integer status; + + /** + * 是否发送公告 0 是 1 否 + */ + @ApiModelProperty(value = "是否发送公告 0 是 1 否") + private Integer isSendMessage; + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/entity/ProjectExceptionVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/entity/ProjectExceptionVO.java new file mode 100644 index 0000000..79c3064 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/entity/ProjectExceptionVO.java @@ -0,0 +1,46 @@ +package com.chinaunicom.mall.ebtp.project.projectexception.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 项目异常信息VO + * @author daixc + * @date 2020/11/05 + */ +@Data +@Accessors(chain = true) +@ApiModel("项目异常信息VO") +@TableName(autoResultMap = true) +public class ProjectExceptionVO extends ProjectException implements Serializable { + + + /** + * 分页数据 + */ + @ApiModelProperty(value = "分页对象信息") + private BasePageRequest basePageRequest; + + + /** + * 采购包名称 + */ + @ApiModelProperty(value = "采购包名称") + private String sectionName; + + /** + * 采购包ID数组 + */ + @ApiModelProperty(value = "采购包ID数组") + private String[] sectionArray; + + @ApiModelProperty(value = "异常失败公告状态 0 未编辑 1 已编辑 2 已提交 3 已审批 4 已拒绝 5 已发布 6 发布失败 7 无需发送公告 9 异常") + private Integer sendMessageStatus; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/entity/ProjectSectionException.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/entity/ProjectSectionException.java new file mode 100644 index 0000000..5df7d66 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/entity/ProjectSectionException.java @@ -0,0 +1,51 @@ +package com.chinaunicom.mall.ebtp.project.projectexception.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; + +/** + * 实体类 BizProjectSectionException + * + * @author daixc + * @date 2020/11/06 + */ +@Data +@Accessors(chain = true) +@ApiModel +@TableName(value = "biz_project_section_exception", autoResultMap = true) +public class ProjectSectionException extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @ApiModelProperty(value = "编号") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 标段ID + */ + @ApiModelProperty(value = "标段ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long sectionId; + + /** + * 异常处理ID + */ + @ApiModelProperty(value = "异常处理ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long exceptionId; + + +} 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 new file mode 100644 index 0000000..75f2be0 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/IProjectExceptionService.java @@ -0,0 +1,51 @@ +package com.chinaunicom.mall.ebtp.project.projectexception.service; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.projectexception.entity.ProjectException; +import com.chinaunicom.mall.ebtp.project.projectexception.entity.ProjectExceptionVO; + +/** + * 对数据表 biz_project_exception 操作的 service + * @author daixc + * @date 2020/11/06 + */ +public interface IProjectExceptionService extends IBaseService{ + + /** + * 分页信息查询 + * @param projectExceptionVO 项目分页信息 + * @return 返回结果 + */ + IPage getPage(ProjectExceptionVO projectExceptionVO); + + /** + * 新增信息 + * @param projectExceptionVO 项目异常信息 + * @return 返回结果 + */ + boolean insert(ProjectExceptionVO projectExceptionVO); + + /** + * 修改项目异常信息 + * @param projectExceptionVO 项目异常信息 + * @return 返回结果 + */ + boolean update(ProjectExceptionVO projectExceptionVO); + + /** + * 移除异常信息 + * @param id 异常ID + * @return 返回结果 + */ + boolean delete(Long id); + + + /** + * 项目异常信息生效 + * @param id 异常ID + * @return 返回结果 + */ + boolean updateState(Long id); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/IProjectSectionExceptionService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/IProjectSectionExceptionService.java new file mode 100644 index 0000000..9ad03dd --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/IProjectSectionExceptionService.java @@ -0,0 +1,21 @@ +package com.chinaunicom.mall.ebtp.project.projectexception.service; + + +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.projectexception.entity.ProjectSectionException; + +/** + * 对数据表 biz_project_section_exception 操作的 service + * @author Auto create + * + */ +public interface IProjectSectionExceptionService extends IBaseService{ + + + /** + * 物理删除信息 + * @param exceptionId 异常信息ID + * @return + */ + boolean deleteByExceptionId(Long exceptionId); +} 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 new file mode 100644 index 0000000..af3942c --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/impl/ProjectExceptionServiceImpl.java @@ -0,0 +1,484 @@ +package com.chinaunicom.mall.ebtp.project.projectexception.service.impl; + + +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.common.base.entity.BasePageRequest; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.common.base.enums.ResponseEnum; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; +import com.chinaunicom.mall.ebtp.common.constant.CommonConstants; +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; +import com.chinaunicom.mall.ebtp.project.common.ProjectCommonUtil; +import com.chinaunicom.mall.ebtp.project.common.ProjectExceptionEnum; +import com.chinaunicom.mall.ebtp.project.dict.entity.DictProject; +import com.chinaunicom.mall.ebtp.project.dict.service.IDictProjectService; +import com.chinaunicom.mall.ebtp.project.feign.EbtpMallBidApi; +import com.chinaunicom.mall.ebtp.project.feign.MallPurpApi; +import com.chinaunicom.mall.ebtp.project.feign.entity.AnnoVO; +import com.chinaunicom.mall.ebtp.project.projectexception.dao.ProjectExceptionMapper; +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.entity.ProjectSectionException; +import com.chinaunicom.mall.ebtp.project.projectexception.service.IProjectExceptionService; +import com.chinaunicom.mall.ebtp.project.projectexception.service.IProjectSectionExceptionService; +import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecord; +import com.chinaunicom.mall.ebtp.project.projectrecord.service.IProjectRecordService; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSection; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.project.projectsection.service.IProjectSectionService; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.entity.SectionMaterial; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.service.ISectionMaterialService; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplier; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplierVO; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.service.ISectionSupplierService; +import io.seata.spring.annotation.GlobalTransactional; +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.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 对数据表 biz_project_exception 操作的 serviceImpl + * 项目异常信息service实现层 + * @author daixc + * @date 2020/11/06 + * + */ +@Service +public class ProjectExceptionServiceImpl extends BaseServiceImpl implements IProjectExceptionService { + + @Resource + private ProjectExceptionMapper exceptionMapper; + + @Resource + private IProjectRecordService projectRecordService; + + @Resource + private IProjectSectionService projectSectionService; + + @Resource + private ISectionSupplierService sectionSupplierService; + + @Resource + private ISectionMaterialService sectionMaterialService; + + @Resource + private IProjectSectionExceptionService sectionExceptionService; + + @Resource + private EbtpMallBidApi ebtpMallBidApi; + + @Resource + private MallPurpApi mallPurpApi; + + @Resource + private IDictProjectService projectService; + + + @Override + public IPage getPage(ProjectExceptionVO projectExceptionVO) { + + if(null == projectExceptionVO.getBasePageRequest()){ + projectExceptionVO.setBasePageRequest(new BasePageRequest()); + } + + IPage page = new Page<>(projectExceptionVO.getBasePageRequest().getPageNo(), projectExceptionVO.getBasePageRequest().getPageSize()); + + page = exceptionMapper.getProjectExceptionPage(page,projectExceptionVO); + + page.setRecords(getSendMessageStatus(page.getRecords())); + + return page; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean insert(ProjectExceptionVO projectExceptionVO) { + + projectExceptionVO.setId(PropertyUtils.getSnowflakeId()); + projectExceptionVO.setStatus(ProjectCommonUtil.SECTION_EXCEPTION_STATE_0); + + boolean result = this.save(projectExceptionVO); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_SAVE.customValid(!result); + + result = saveSectionList(projectExceptionVO); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean update(ProjectExceptionVO projectExceptionVO){ + + //修改校验 + updateCheck(this.getById(projectExceptionVO.getId())); + + boolean result = this.updateById(projectExceptionVO); + + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValid(!result); + + sectionExceptionService.deleteByExceptionId(projectExceptionVO.getId()); + + saveSectionList(projectExceptionVO); + + return result; + } + + /** + * 移除异常信息 + * @param id 异常ID + * @return 返回结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean delete(Long id) { + + boolean result = this.remove(new QueryWrapper().eq("id",id).eq("status",ProjectCommonUtil.SECTION_EXCEPTION_STATE_0)); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_DELETE.customValid(!result); + + result = sectionExceptionService.remove(new QueryWrapper().eq("exception_id",id)); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_EXCEPTION_DELETE.customValid(!result); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + @GlobalTransactional + public boolean updateState(Long id) { + ProjectException projectException = this.getById(id); + + /*检验信息*/ + updateCheck(projectException); + + //提交校验失败公告状态信息 + submitCheckSendMessageStatus(projectException); + + /*查询异常标段信息*/ + QueryWrapper sectionExceptionQueryWrapper = new QueryWrapper() + .eq("exception_id", projectException.getId()); + + List sectionExceptionList = sectionExceptionService.list(sectionExceptionQueryWrapper); + + //异常标段信息为空报异常 + if(sectionExceptionList.size() <= 0){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_UPDATE_ERROR.throwException(); + } + + /*查询标段信息*/ + ProjectSectionVO projectSectionVO = new ProjectSectionVO(); + projectSectionVO.setProjectId(projectException.getProjectId()); + List sectionList = projectSectionService.getList(projectSectionVO); + + + //修改项目异常信息状态 + ProjectException updateProjectException = new ProjectException(); + updateProjectException.setId(projectException.getId()); + updateProjectException.setStatus(ProjectCommonUtil.SECTION_EXCEPTION_STATE_1); + boolean result = this.updateById(updateProjectException); + + + //修改标段信息状态 + List sectionExceptionIds = sectionExceptionList.stream().map(ProjectSectionException::getSectionId).collect(Collectors.toList()); + UpdateWrapper sectionUpdateWrapper = new UpdateWrapper<>(); + sectionUpdateWrapper.in("id",sectionExceptionIds); + sectionUpdateWrapper.set("status",ProjectCommonUtil.SECTION_STATUS_9); + projectSectionService.update(sectionUpdateWrapper); + + /*是否全部废止状态*/ + int isAllAbolish = sectionList.stream().filter(n -> n.getStatus() != ProjectCommonUtil.SECTION_STATUS_9).collect(Collectors.toList()).size(); + + /*如果项目标段全部废止 修改项目建档信息为废止*/ + if(isAllAbolish <= 0){ + ProjectRecord projectRecord = new ProjectRecord(); + projectRecord.setStatus(ProjectCommonUtil.PROJECT_STATUS_9); + projectRecord.setId(projectException.getProjectId()); + projectRecordService.updateById(projectRecord); + } + sectionList = sectionList.stream().filter(n -> sectionExceptionIds.contains(n.getId())).collect(Collectors.toList()); + /*项目终止 通知采购平台接 */ + if(StringUtils.equals(ProjectCommonUtil.SECTION_EXCEPTION_HANDLE_TYPE_1,projectException.getHandleType())){ + //发送接口 + projInvitationFail(projectException,sectionList); + }else{ //项目再次购买 + launchAgainProject(projectException.getProjectId(), sectionList); + } + //通知招标服务停止 + abnormal(sectionExceptionIds); + + return result; + } + + + /** + * 再次发起项目 + * @param projectId 项目ID + * @param sectionList 项目标段 + */ + private void launchAgainProject(Long projectId,List sectionList) { + + //查询项目信息 + ProjectRecord projectRecord = projectRecordService.getById(projectId); + + //重新给项目赋值 + //新项目copy项目ID + projectRecord.setParentProjectId(projectRecord.getId()); + //项目主键 + projectRecord.setId(PropertyUtils.getSnowflakeId()); + //项目流水号 + projectRecord.setProjectBizNum(PropertyUtils.getSnowflakeId().toString()); + //项目状态 + projectRecord.setStatus(ProjectCommonUtil.PROJECT_STATUS_2); + + //转换标包ID方便物资和供应商查询 + List sectionIds = sectionList.stream().map(ProjectSection::getId).collect(Collectors.toList()); + + //查询供应商信息 + QueryWrapper supplierQueryWrapper = new QueryWrapper<>(); + supplierQueryWrapper.in("section_id",sectionIds); + List sectionSupplierList = sectionSupplierService.list(supplierQueryWrapper); + //转换成map形式方便处理数据 + Map> sectionSupplierMap = sectionSupplierList.stream().collect(Collectors.groupingBy(SectionSupplier::getSectionId)); + + //查询物资信息 + QueryWrapper meMaterialQueryWrapper = new QueryWrapper<>(); + meMaterialQueryWrapper.in("section_id",sectionIds); + List sectionMaterialList = sectionMaterialService.list(meMaterialQueryWrapper); + //转换成map形式方便处理数据 + Map> sectionMaterialMap = sectionMaterialList.stream().collect(Collectors.groupingBy(SectionMaterial::getSectionId)); + + //最终要插入的数据结果 + List sectionSupplierAddList = new ArrayList<>(); + List materialAddList = new ArrayList<>(); + + //是否资审预审项目 + boolean isReviewMethod = projectRecordService.isReviewMethod(projectRecord); + + int sectionOrderNumber = 1; + //处理标段和供应商、物资信息 + for(ProjectSection section : sectionList){ + section.setParentSectionId(section.getId()); + section.setId(PropertyUtils.getSnowflakeId()); + //顺序号 + section.setBidSectCode(String.valueOf(sectionOrderNumber++)); + //标段流水号 + section.setBidSectBizNum(projectRecord.getProjectBizNum()+"/"+section.getBidSectCode()); + section.setBusinessModule(isReviewMethod ? ProjectCommonUtil.BUSINESS_MODULE_2:ProjectCommonUtil.BUSINESS_MODULE_7); + section.setStatus(ProjectCommonUtil.SECTION_STATUS_2); + + //重新赋值新的项目ID和物资ID + List supplierList = sectionSupplierMap.get(section.getId()); + if (null != supplierList && supplierList.size() > 0) { + for (SectionSupplier supplier : supplierList) { + supplier.setSectionId(section.getId()); + supplier.setProjectId(projectRecord.getId()); + } + sectionSupplierAddList.addAll(supplierList); + } + + //重新赋值新的项目ID和物资ID + List materialList = sectionMaterialMap.get(section.getId()); + if (null != materialList && materialList.size() > 0) { + for (SectionMaterial material : materialList) { + material.setSectionId(section.getId()); + material.setProjectId(projectRecord.getId()); + } + materialAddList.addAll(sectionMaterialList); + } + } + + //插入项目信息 + projectRecordService.save(projectRecord); + //插入标段信息 + projectSectionService.saveBatch(sectionList); + + //插入供应商信息 + if (sectionSupplierAddList.size() > 0) { + sectionSupplierService.saveBatch(sectionSupplierAddList); + } + + //插入物资信息 + if (materialAddList.size() > 0) { + sectionMaterialService.saveBatch(materialAddList); + } + //通知招标服务邀请函信息 + callEbtpMallBidApi(projectRecord, sectionSupplierList); + + //出始化标段评审室信息 + callInitialize(projectId, isReviewMethod); + } + + + /** + * 项目异常信息 通知采购系统项目失败 + * @param projectException 失败信息 + * @param sectionList 标段信息 + */ + private void projInvitationFail(ProjectException projectException,List sectionList){ + + //查询项目信息 获取项目实施ID + ProjectRecord projectRecord = projectRecordService.getById(projectException.getProjectId()); + //获取项目方案ID + List projIds = sectionList.stream().map(ProjectSection::getProjectPlanId).collect(Collectors.toList()); + //获取异常原因对应字典的名称解释 + DictProject dictProject = projectService.getDict(projectException.getExceptionDesc(),ProjectCommonUtil.EXCEPTION_DESC,ProjectCommonUtil.EXCEPTION); + //调用接口 + boolean isSuccess = mallPurpApi.projInvitationFail(projectRecord.getEbpProjectId(), + projIds,projectException.getExceptionDesc(),dictProject.getDicName()).isSuccess(); + + if(!isSuccess){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_INVITATION_FAIL_ERROR.throwException(); + } + } + + /** + * 调用通知服务 + *

1 异常标段不可以报名 2 如果邀请发送初始化数据

+ * @param projectRecord 项目信息 + * @param sectionSupplierList 供应商信息 + */ + private void callEbtpMallBidApi(ProjectRecord projectRecord,List sectionSupplierList) { + + //是否发邀请函 如果流程发送邀请函 调用招标接口 发送供应商信息 + boolean isInvitation= projectRecordService.isInvitation(projectRecord); + + if(isInvitation){ + Integer code = ebtpMallBidApi.entrustInsert(JsonUtils.jsonToList(sectionSupplierList,SectionSupplierVO.class)).getCode(); + if(code != ResponseEnum.SUCCESS.getCode()){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_INIT_SUPPLIER_ERROR.throwException(); + } + } + } + + /** + * 项目异常调用招标 通知进行修改状态 + * @param projectSectionIds 标段ID + */ + private void abnormal(List projectSectionIds) { + Integer resultCode = ebtpMallBidApi.abnormal(projectSectionIds).getCode(); + + if(resultCode != ResponseEnum.SUCCESS.getCode()){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_NOT_SECTION.throwException(); + } + } + + /** + * 调用流程初始化信息 + * @param projectId 项目ID + * @param isReviewMethod 是否资审预审项目 + */ + private void callInitialize(Long projectId, boolean isReviewMethod) { + Map sectionMaps = projectSectionService.getFlowList(projectId); + projectRecordService.initialize(projectId,isReviewMethod,sectionMaps); + } + + /** + * 生效或移除之前进行判断项目异常信息以及状态 + * @param projectException 项目异常信息 + */ + private void updateCheck(ProjectException projectException) { + + /* + * 如果异常状态为空 返回错误信息 + */ + if(null == projectException){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_NOT_FIND.throwException(); + }else{ + /* + * 项目异常状态为空 或者不为草稿状态 返回错误信息 + */ + if(null == projectException.getStatus() || + ProjectCommonUtil.SECTION_EXCEPTION_STATE_0 != projectException.getStatus()){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_NOT_STATE.throwException(); + } + } + } + + /** + * 批量插入异常标段信息 + * @param projectExceptionVO 异常信息 + * @return 返回结果 + */ + private boolean saveSectionList(ProjectExceptionVO projectExceptionVO) { + + List sectionExceptionList = new ArrayList<>(); + for (int i = 0; i < projectExceptionVO.getSectionArray().length; i++) { + + ProjectSectionException sectionException = new ProjectSectionException(); + sectionException.setId(PropertyUtils.getSnowflakeId()); + sectionException.setExceptionId(projectExceptionVO.getId()); + sectionException.setSectionId(Long.parseLong(projectExceptionVO.getSectionArray()[i])); + + sectionExceptionList.add(sectionException); + } + + return sectionExceptionService.saveBatch(sectionExceptionList); + } + + /** + * 获取失败公告信息 + * @param voList 获取失败公告的集合信息 + * @return 返回结果 + */ + private List getSendMessageStatus(List voList) { + + List exceptionIds = voList.stream().filter(n -> ProjectCommonUtil.IS_SEND_MESSAGE_0 == n.getIsSendMessage()) + .map(ProjectExceptionVO::getId).map(n -> String.valueOf(n)).collect(Collectors.toList()); + + BaseResponse> bidResponse = ebtpMallBidApi.getAnnoStatus(exceptionIds); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_NOT_SECTION.customValidName(bidResponse.getMessage(), !bidResponse.isSuccess()); + + Map> resultMap = bidResponse.getData().stream().collect(Collectors.groupingBy(AnnoVO::getCsAnnoId)); + + for(ProjectExceptionVO vo : voList){ + + if(ProjectCommonUtil.IS_SEND_MESSAGE_0 == vo.getIsSendMessage()){ + List annoVOList = resultMap.get(vo.getId().toString()); + if(null != annoVOList && annoVOList.size() > 0){ + vo.setSendMessageStatus(annoVOList.get(0).getStatus()); + }else{ + vo.setSendMessageStatus(ProjectCommonUtil.SEND_MESSAGE_STATUS_0); + } + }else{ + vo.setSendMessageStatus(ProjectCommonUtil.SEND_MESSAGE_STATUS_7); + } + } + + return voList; + } + + /** + * 提交校验失败公告状态信息 + * @param projectException 需要校验的异常信息 + */ + private void submitCheckSendMessageStatus(ProjectException projectException){ + + if(ProjectCommonUtil.IS_SEND_MESSAGE_0 == projectException.getIsSendMessage()){ + List exceptionIds = new ArrayList<>(); + exceptionIds.add(String.valueOf(projectException.getId())); + BaseResponse> bidResponse = ebtpMallBidApi.getAnnoStatus(exceptionIds); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_NOT_SECTION.customValidName(bidResponse.getMessage(), !bidResponse.isSuccess()); + List annoVOList = bidResponse.getData(); + if(null != annoVOList && annoVOList.size() > 0){ + if(ProjectCommonUtil.SEND_MESSAGE_STATUS_5 == annoVOList.get(0).getStatus()){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_STATUS_ERROR.throwException(); + } + }else{ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_EXCEPTION_STATUS_ERROR.throwException(); + } + } + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/impl/ProjectSectionExceptionServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/impl/ProjectSectionExceptionServiceImpl.java new file mode 100644 index 0000000..8ac3883 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectexception/service/impl/ProjectSectionExceptionServiceImpl.java @@ -0,0 +1,27 @@ +package com.chinaunicom.mall.ebtp.project.projectexception.service.impl; + + +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.entity.ProjectSectionException; +import com.chinaunicom.mall.ebtp.project.projectexception.service.IProjectSectionExceptionService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 对数据表 biz_project_section_exception 操作的 serviceImpl + * @author Auto create + * + */ +@Service +public class ProjectSectionExceptionServiceImpl extends BaseServiceImpl implements IProjectSectionExceptionService { + + @Resource + private ProjectSectionExceptionMapper exceptionMapper; + + @Override + public boolean deleteByExceptionId(Long exceptionId) { + return exceptionMapper.deleteByExceptionId(exceptionId) > 0; + } +} 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 new file mode 100644 index 0000000..d74b4e4 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/controller/ProjectRecordController.java @@ -0,0 +1,166 @@ +package com.chinaunicom.mall.ebtp.project.projectrecord.controller; + + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecord; +import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecordVO; +import com.chinaunicom.mall.ebtp.project.projectrecord.service.IProjectRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +/** + * 项目建档信息 controller + * 项目建档信息操作控制层 + * + * @author daixc + * @date 2020/10/26 + */ +@RestController +@Api(tags = "项目建档信息") +@RequestMapping("/v1/projectRecord") +public class ProjectRecordController{ + + @Resource + private IProjectRecordService projectRecordService; + + /** + * 插入新数据 + * + * @param projectRecord 项目建档信息 + * + * @return + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid ProjectRecordVO projectRecord){ + + boolean save = projectRecordService.save(projectRecord); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param projectRecord 项目建档信息 + * + * @return + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update( + @ApiParam(value = "对象数据", required = true) @RequestBody ProjectRecordVO projectRecord){ + + return BaseResponse.success(projectRecordService.updateProject(projectRecord)); + } + + /** + * 查询数据 + * + * @param id 项目ID + * + * @return + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + ProjectRecord projectRecord = projectRecordService.getById(id); + + return BaseResponse.success(BeanUtil.toBean(projectRecord,ProjectRecordVO.class)); + } + + /** + * 查询分页数据 + * + * @param projectRecord 分页信息 + * + * @return + */ + @ApiOperation("查询分页数据") + @PostMapping("/getPage") + public BaseResponse> getPage(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectRecordVO projectRecord){ + + return BaseResponse.success(projectRecordService.getPage(projectRecord)); + } + + /** + * 更换项目经理 + * + * @param projectRecord 项目经理信息 + * + * @return 返回结果 + */ + @ApiOperation("更换项目经理") + @PutMapping("/updateAppManager") + public BaseResponse updateAppManager(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectRecordVO projectRecord){ + + return BaseResponse.success(projectRecordService.updateAppManager(projectRecord)); + } + + /** + * 获取项目信息集合 + * + * @param projectRecordVO 项目查询条件 + * + * @return + */ + @ApiOperation("查询集合数据") + @PostMapping("/getList") + public BaseResponse> getList(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectRecordVO projectRecordVO){ + + return BaseResponse.success(projectRecordService.getList(projectRecordVO)); + } + + /** + * 提交整体信息 + * + * @param id 项目ID + * + * @return 返回结果 + */ + @ApiOperation("提交整体信息") + @PostMapping("/submitProject/{id}") + public BaseResponse submitProject(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + return BaseResponse.success(projectRecordService.submitProject(id)); + } + + /** + * 查询询价项目数据 + * + * @param id 项目ID + * + * @return 返回结果 + */ + @ApiOperation("查询询价项目数据") + @GetMapping("/getInquiryProjectRecord/{id}") + public BaseResponse getInquiryProjectRecord(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + return BaseResponse.success(projectRecordService.getInquiryProjectRecord(id)); + } + + + /** + * 项目是否可以修改信息 + * + * @param id 项目ID + * + * @return 返回结果 + */ + @ApiOperation("项目是否可以修改信息") + @PostMapping("/getProjectIsUpdate/{id}") + public BaseResponse getProjectIsUpdate(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + return BaseResponse.success(projectRecordService.getProjectIsUpdate(id)); + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/dao/ProjectRecordMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/dao/ProjectRecordMapper.java new file mode 100644 index 0000000..167dc17 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/dao/ProjectRecordMapper.java @@ -0,0 +1,29 @@ +package com.chinaunicom.mall.ebtp.project.projectrecord.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecord; +import org.apache.ibatis.annotations.Param; + +/** + * 项目建档mapper + * @author daixc + * @date 2020/10/25 + * + */ +public interface ProjectRecordMapper extends IBaseMapper { + + /** + * 项目经理修改信息补全项目建档信息 + * @param projectRecord 项目建档信息 + * @return 返回数据 + */ + int updateProject(ProjectRecord projectRecord); + + /** + * 物理删除 + * @param id 项目ID + * @return 返回结果 + */ + int deletePhysical(@Param(value = "id") Long id); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/dao/mapper/ProjectRecordMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/dao/mapper/ProjectRecordMapper.xml new file mode 100644 index 0000000..58b6f31 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/dao/mapper/ProjectRecordMapper.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update biz_project_record + set + delete_flag="deleted" + where ID=#{id} + + + + update biz_project_record set + + agency_company_project_num = #{agencyCompanyProjectNum}, + + + is_ipass_decode = #{isIPassDecode}, + + + eval_method = #{evalMethod}, + + + tendering_content = #{tenderingContent}, + + + bidding_sign_dict = #{biddingSignDict}, + + + region_dict_id = #{regionDictId}, + + + province = #{province}, + + + tenderee_id = #{tendereeId}, + + update_by = #{updateBy}, + update_date= #{updateDate} + where ID=#{id} + + + + + delete from biz_project_record where id = #{id} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/entity/ProjectRecord.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/entity/ProjectRecord.java new file mode 100644 index 0000000..99ec171 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/entity/ProjectRecord.java @@ -0,0 +1,347 @@ +package com.chinaunicom.mall.ebtp.project.projectrecord.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 项目建档实体类 BizProjectRecord + * + * @author daixc + * @date 2020/10/26 + */ +@Data +@Accessors(chain = true) +@ApiModel("项目建档信息") +@TableName(value = "biz_project_record", autoResultMap = true) +public class ProjectRecord extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 委托单ID + */ + @ApiModelProperty(value = "委托单ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long entrustId; + + /** + * 父项目序号 + */ + @ApiModelProperty(value = "父项目序号") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentProjectId; + + /** + * 项目流水号 + */ + @ApiModelProperty(value = "项目流水号") + private String projectBizNum; + + /** + * 招标项目名称 + */ + @ApiModelProperty(value = "招标项目名称") + private String projectName; + + + /** + * 采购类型,1-货物,2-工程,3-服务,4-其他 + */ + @ApiModelProperty(value = "采购类型,1-货物,2-工程,3-服务,4-其他") + private String procurementType; + + /** + * 项目所在行政区域字典编号 + */ + @ApiModelProperty(value = "项目所在行政区域字典编号") + private String regionDictId; + + /** + * 项目所在行政区域(dict_region表) + */ + @ApiModelProperty(value = "项目所在行政区域(dict_region表)") + private String regionDictName; + + /** + * 资金来源字典编号 + */ + @ApiModelProperty(value = "资金来源字典编号") + private String fundsProviderDict; + + /** + * 预算金额(数值取自委托-预算金额,自动填入,可修改) + */ + @ApiModelProperty(value = "预算金额(数值取自委托-预算金额,自动填入,可修改)") + private BigDecimal budgetAmount; + + /** + * 组织形式(自主|委托) + */ + @ApiModelProperty(value = "组织形式字典编号(自主|委托)") + private String bidOrgDict; + + /** + * 招标方式字典编号(采购方式) + */ + @ApiModelProperty(value = "招标方式字典编号") + private String bidMethodDict; + + /** + * 业务类型字典编号 + */ + @ApiModelProperty(value = "业务类型字典编号") + private String bidMethodSubDict; + + /** + * 招标内容与范围(手工输入) + */ + @ApiModelProperty(value = "招标内容与范围(手工输入)") + @Length(max = 2000,message = "招标内容与范围最长为2000字符") + private String tenderingContent; + + /** + * 所属省分 + */ + @ApiModelProperty(value = "所属省分") + private String province; + + /** + * 招标项目责任人(代理机构项目经理)id + */ + @ApiModelProperty(value = "招标项目责任人(代理机构项目经理)id") + private String appManagerId; + + /** + * 招标项目责任人(代理机构项目经理,根据当前账号对应人员联系方式自动填入,可修改) + */ + @ApiModelProperty(value = "招标项目责任人(代理机构项目经理,根据当前账号对应人员联系方式自动填入,可修改)") + private String appManagerName; + + /** + * 招标项目责任人联系方式(代理机构项目经理联系方式,根据当前账号对应人员联系方式自动填入,可修改) + */ + @ApiModelProperty(value = "招标项目责任人联系方式(代理机构项目经理联系方式,根据当前账号对应人员联系方式自动填入,可修改)") + private String appManagerTel; + + /** + * 采购经理id + */ + @ApiModelProperty(value = "采购经理id") + private String ownerContactId; + + /** + * 采购经理名称 + */ + @ApiModelProperty(value = "采购经理名称") + private String ownerContactName; + + /** + * 采购经理联系方式 + */ + @ApiModelProperty(value = "采购经理联系方式") + private String ownerContactTel; + + /** + * 采购部门ID + */ + @ApiModelProperty(value = "采购部门ID") + private String tendereeId; + + /** + * 采购部门名称 + */ + @ApiModelProperty(value = "采购部门名称") + private String tendereeName; + + + /** + * 采购组织机构id + */ + @ApiModelProperty(value = "招标人组织机构id") + private String tendereeOrgId; + + /** + * 采购组织机构名称 + */ + @ApiModelProperty(value = "采购组织机构名称") + private String tendereeOrgName; + + /** + * 招标代理机构id + */ + @ApiModelProperty(value = "招标代理机构id") + private String tenderAgencyId; + + /** + * 招标代理机构名称 + */ + @ApiModelProperty(value = "招标代理机构名称") + private String tenderAgencyName; + + /** + * 监督部门id + */ + @ApiModelProperty(value = "监督部门id") + private String supervisoryAuthId; + + /** + * 监督部门名称 + */ + @ApiModelProperty(value = "监督部门名称") + private String supervisoryAuthName; + + /** + * 审核部门id + */ + @ApiModelProperty(value = "审核部门id") + private String reviewAuthId; + + /** + * 审核部门名称 + */ + @ApiModelProperty(value = "审核部门名称") + private String reviewAuthName; + + /** + * 项目批复文件集id(上传pdf格式文件,只能上传一个。文件可删除重新上传) + */ + @ApiModelProperty(value = "项目批复文件集id(上传pdf格式文件,只能上传一个。文件可删除重新上传)") + private String projResponseDocId; + + /** + * 其他附件集id(上传pdf格式文件,可上传多个附件。文件可删除重新上传。) + */ + @ApiModelProperty(value = "其他附件集id(上传pdf格式文件,可上传多个附件。文件可删除重新上传。)") + private String otherDocId; + + /** + * 单一来源简化流程附件 + */ + @ApiModelProperty(value = "单一来源简化流程附件") + private String approvalDocId; + + @ApiModelProperty(value = "业务状态") + private Integer status; + + /** + * 系统标识:0-采购 1-工作台 2-工作台合并 + */ + @ApiModelProperty(value = "系统标识:0-采购 1-工作台 2-工作台合并") + private String systemLogo; + + /** + * 推送工信部项目创建人账号 + */ + @ApiModelProperty(value = "推送工信部项目创建人账号") + @Length(max = 32, message = "推送工信部项目创建人账号最长为32个字符") + private String miitUserId; + + /** + * 推送工信部项目部门信息 + */ + @ApiModelProperty(value = "推送工信部项目部门信息") + @Length(max = 32, message = "推送工信部项目部门信息最长为32个字符") + private String miitDeptId; + + /** + * 比选方式 + */ + @ApiModelProperty(value = "比选方式") + private String biddingSignDict; + + /** + * 资格审查方式|招募方式(评审次数)|竞争性谈判(参与方式) + */ + @ApiModelProperty(value = "资格审查方式|招募方式(评审次数)|竞争性谈判(参与方式)") + private String examinationMethodDict; + + /** + * 项目编号(采购系统推送项目ID 项目实施编号) + */ + @ApiModelProperty(value = "项目编号(采购系统推送项目ID 项目实施编号)") + private String ebpProjectNumber; + + /** + * 项目实施ID + */ + @ApiModelProperty(value = "项目实施ID") + private String ebpProjectId; + + /** + * 父项目编号 + */ + @ApiModelProperty(value = "采购系统父项目编号") + private String ebpParentProjectNumber; + + /** + * 父项目ID + */ + @ApiModelProperty(value = "采购系统父项目ID") + private String ebpParentProjectId; + + /** + * 代理机构项目编号(委托采购专用字段) + */ + @ApiModelProperty(value = "代理机构项目编号(委托采购专用字段)") + @Length(max = 50,message = "代理机构项目编号最长为50个字符") + private String agencyCompanyProjectNum; + + /** + * 是否使用客户端工具制作应答文件 + */ + @ApiModelProperty(value = "是否使用客户端工具制作应答文件 0 是 1 否") + private String isClientFile; + + /** + * 是否使用IPass制作应答文件 + */ + @ApiModelProperty(value = "是否使用IPass制作应答文件 0 是 1 否") + private String isIPassFile; + + /** + * 是否开标使用IPass进行解密 + */ + @ApiModelProperty(value = "是否开标使用IPass进行解密 0 是 1 否") + private String isIPassDecode; + + @ApiModelProperty(value = "招募开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime recruitStartTime; + + @ApiModelProperty(value = "招募结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime recruitEndTime; + + /** + * 是否使用简化流程 + */ + @ApiModelProperty(value = "是否使用简化流程 0 是 1 否") + private String isApproval; + + + @ApiModelProperty(value = "邀请方式(作废 和 参与方式重复)") + private String invitationMethod; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/entity/ProjectRecordVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/entity/ProjectRecordVO.java new file mode 100644 index 0000000..75f9474 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/entity/ProjectRecordVO.java @@ -0,0 +1,63 @@ +package com.chinaunicom.mall.ebtp.project.projectrecord.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest; +import com.chinaunicom.mall.ebtp.common.config.CustomLocalDateTimeTypeHandler; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.entity.SectionMaterial; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 项目建档VO实体类 + * + * @author daixc + * @date 2020/10/26 + */ +@Data +@Accessors(chain = true) +@ApiModel("项目建档信息VO类") +@TableName(autoResultMap = true) +public class ProjectRecordVO extends ProjectRecord implements Serializable { + + /** + * 分页数据 + */ + @ApiModelProperty(value = "分页对象信息") + private BasePageRequest basePageRequest; + + /** + * 立项开始时间 + */ + @ApiModelProperty(value = "立项开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(typeHandler = CustomLocalDateTimeTypeHandler.class) + private LocalDateTime startApprovalTime; + + /** + * 立项结束时间 + */ + @ApiModelProperty(value = "立项结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(typeHandler = CustomLocalDateTimeTypeHandler.class) + private LocalDateTime endApprovalTime; + + @ApiModelProperty(value = "商品信息") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List materialList; + + @ApiModelProperty(value = "项目ID集合") + private List selectIds; + +} 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 new file mode 100644 index 0000000..ebf0665 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/service/IProjectRecordService.java @@ -0,0 +1,115 @@ +package com.chinaunicom.mall.ebtp.project.projectrecord.service; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.ProjBaseInfoVO; +import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecord; +import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecordVO; + +import java.util.List; +import java.util.Map; + +/** + * 对数据表 biz_project_record 操作的 service + * @author daixc + * @date 2020/10/27 + * + */ +public interface IProjectRecordService extends IBaseService{ + + + /** + * 分页信息 + * @param projectRecord 查询条件 + * @return 返回结果 + */ + IPage getPage(ProjectRecordVO projectRecord); + + /** + * 获取所有项目信息 + * @param projectRecordVO 项目建档信息 + * @return 返回结果 + */ + List getList(ProjectRecordVO projectRecordVO); + + /** + * 项目经理修改信息补全项目建档信息 + * @param projectRecord 项目建档信息 + * @return 返回数据 + */ + boolean updateProject(ProjectRecord projectRecord); + + /** + * 项目经理同意修改项目信息 + * @param entrustId 委托单ID + * @return 返回结果 + */ + boolean assent(Long entrustId); + + /** + * 删除项目建档信息 + * @param id 项目建档ID + * @return 返回结果 + */ + boolean deletePhysical(Long id); + + + /** + * 修改项目经理 + * @param projectRecordVO 项目信息 + * @return 返回结果 + */ + boolean updateAppManager(ProjectRecordVO projectRecordVO); + + /** + * 提交项目信息 + * @param id 项目ID + * @return 返回结果 + */ + boolean submitProject(Long id); + + /** + * 判断项目是否是资审项目 + * @param projectRecord 项目信息 + * @return 返回结果 + */ + boolean isReviewMethod(ProjectRecord projectRecord); + + /** + * 初始化标段评审流程 + * @param id 项目ID + * @param isReviewMethod 是否资审项目 + * @param sectionMaps 流程ID集合 + */ + void initialize(Long id, boolean isReviewMethod, Map sectionMaps); + + /** + * 获取询价项目信息 + * @param id 项目ID + * @return 返回结果 + */ + ProjectRecordVO getInquiryProjectRecord(Long id); + + /** + * 获取项目是否可以修改 + * @param id 项目ID + * @return + */ + boolean getProjectIsUpdate(Long id); + + /** + * 自主采购直接初始化信息 + * @param projectEntrustVO 自主采购信息 + * @return + */ + boolean initProjectByIndependentProcurement(ProjectEntrustVO projectEntrustVO); + + /** + * 项目是否是邀请函 + * @param projectRecord 项目信息 + * @return 返回结果 + */ + boolean isInvitation(ProjectRecord projectRecord); +} 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 new file mode 100644 index 0000000..e34bbe5 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectrecord/service/impl/ProjectRecordServiceImpl.java @@ -0,0 +1,694 @@ +package com.chinaunicom.mall.ebtp.project.projectrecord.service.impl; + + +import cn.hutool.core.bean.BeanUtil; +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.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.enums.ResponseEnum; +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.exception.common.CommonExceptionEnum; +import com.chinaunicom.mall.ebtp.common.util.JsonUtils; +import com.chinaunicom.mall.ebtp.common.util.PropertyUtils; +import com.chinaunicom.mall.ebtp.project.common.EbpProjectCommonUtil; +import com.chinaunicom.mall.ebtp.project.common.ProjectCommonUtil; +import com.chinaunicom.mall.ebtp.project.common.ProjectExceptionEnum; +import com.chinaunicom.mall.ebtp.project.feign.EbtpMallBidApi; +import com.chinaunicom.mall.ebtp.project.feign.EbtpMallProcessApi; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrust; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustExpand; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ProjectEntrustVO; +import com.chinaunicom.mall.ebtp.project.projectentrust.entity.ebpentity.*; +import com.chinaunicom.mall.ebtp.project.projectentrust.service.IProjectEntrustExpandService; +import com.chinaunicom.mall.ebtp.project.projectentrust.service.IProjectEntrustService; +import com.chinaunicom.mall.ebtp.project.projectrecord.dao.ProjectRecordMapper; +import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecord; +import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecordVO; +import com.chinaunicom.mall.ebtp.project.projectrecord.service.IProjectRecordService; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSection; +import com.chinaunicom.mall.ebtp.project.projectsection.service.IProjectSectionFlowService; +import com.chinaunicom.mall.ebtp.project.projectsection.service.IProjectSectionService; +import com.chinaunicom.mall.ebtp.project.projectupdatefield.entity.ProjectUpdateField; +import com.chinaunicom.mall.ebtp.project.projectupdatefield.service.IProjectUpdateFieldService; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.entity.SectionMaterial; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.entity.SectionMaterialVO; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.service.ISectionMaterialService; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplier; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplierVO; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.service.ISectionSupplierService; +import io.seata.spring.annotation.GlobalTransactional; +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.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 对数据表 biz_project_record 操作的 serviceImpl + * @author daixc + * @date 2020/10/26 + * + */ +@Service +public class ProjectRecordServiceImpl extends BaseServiceImpl implements IProjectRecordService { + + + @Resource + private ProjectRecordMapper projectRecordMapper; + + @Resource + private IProjectSectionService projectSectionService; + + @Resource + private IProjectUpdateFieldService projectUpdateFieldService; + + @Resource + private ISectionMaterialService sectionMaterialService; + + @Resource + private EbtpMallProcessApi ebtpMallProcessApi; + + @Resource + private EbtpMallBidApi ebtpMallBidApi; + + @Resource + private ISectionSupplierService sectionSupplierService; + + @Resource + private IProjectEntrustExpandService entrustExpandService; + + @Resource + private IProjectEntrustService entrustService; + + @Resource + private IProjectSectionFlowService sectionFlowService; + + @Resource + private IBaseCacheUserService cacheUserService; + + + /** + * 查询条件拼接 + * @param projectRecordVO 项目建档信息 + * @return 返回查询条件 + */ + private QueryWrapper getProjectRecordQueryWrapper(ProjectRecordVO projectRecordVO) { + QueryWrapper query = new QueryWrapper<>(); + if(StringUtils.isNotBlank(projectRecordVO.getProjectName())){ + query.like("project_name", projectRecordVO.getProjectName()); + } + if(null != projectRecordVO.getStartApprovalTime()){ + query.ge("approval_time", projectRecordVO.getStartApprovalTime()); + } + + if(null != projectRecordVO.getEndApprovalTime()){ + query.le("approval_time", projectRecordVO.getEndApprovalTime()); + } + + if(StringUtils.isNotBlank(projectRecordVO.getProjectBizNum())){ + query.eq("project_biz_num", projectRecordVO.getProjectBizNum()); + } + + if(StringUtils.isNotBlank(projectRecordVO.getProcurementType())){ + query.eq("procurement_type", projectRecordVO.getProcurementType()); + } + + if(StringUtils.isNotBlank(projectRecordVO.getBidMethodDict())){ + query.eq("bid_method_dict", projectRecordVO.getBidMethodDict()); + } + + if(null != projectRecordVO.getStatus()){ + query.eq("status", projectRecordVO.getStatus()); + } + + if(null != projectRecordVO.getSelectIds() && projectRecordVO.getSelectIds().size() > 0){ + query.in("id",projectRecordVO.getSelectIds()); + } + + if(StringUtils.isNotBlank(projectRecordVO.getEbpProjectId())){ + query.eq("ebp_project_id", projectRecordVO.getEbpProjectId()); + } + + return query; + } + + @Override + public IPage getPage(ProjectRecordVO projectRecordVO) { + + QueryWrapper query = getProjectRecordQueryWrapper(projectRecordVO); + + if(null == projectRecordVO.getBasePageRequest()){ + projectRecordVO.setBasePageRequest(new BasePageRequest()); + } + + BaseCacheUser cacheUser = cacheUserService.getCacheUser(); + if(null != cacheUser){ + query.eq("app_manager_id", cacheUser.getUserId()); + } + 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)); + voPage.setRecords(JsonUtils.jsonToList(result.getRecords(),ProjectRecordVO.class)); + + return voPage; + } + + @Override + public List getList(ProjectRecordVO projectRecordVO){ + + return JsonUtils.jsonToList(this.list(getProjectRecordQueryWrapper(projectRecordVO)),ProjectRecordVO.class); + } + + + @Override + public boolean updateProject(ProjectRecord projectRecord) { + + if(ProjectCommonUtil.PROJECT_STATUS_0 == projectRecord.getStatus()){ + projectRecord.setStatus(ProjectCommonUtil.PROJECT_STATUS_1); + } + + return this.updateById(projectRecord); + } + + @Override + @Transactional(rollbackFor = Exception.class) + @GlobalTransactional + public boolean submitProject(Long id){ + + checkSubmitProject(id); + + ProjectRecord projectRecord = this.getById(id); + boolean isReviewMethod = isReviewMethod(projectRecord); + + //修改项目信息 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("status", ProjectCommonUtil.PROJECT_STATUS_1); + updateWrapper.eq("id",id); + updateWrapper.set("status",ProjectCommonUtil.PROJECT_STATUS_2); + + + boolean result = this.update(updateWrapper); + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValid(!result); + + int businessModule = isReviewMethod ? ProjectCommonUtil.BUSINESS_MODULE_2:ProjectCommonUtil.BUSINESS_MODULE_7; + //修改标段信息 + UpdateWrapper sectionUpdateWrapper = new UpdateWrapper<>(); + sectionUpdateWrapper.eq("project_id", id); + sectionUpdateWrapper.set("status", ProjectCommonUtil.SECTION_STATUS_2) + //资审项目招标为2 正常招标7 + .set("business_module", businessModule); + + result = projectSectionService.update(sectionUpdateWrapper); + + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValid(!result); + + Map sectionMaps = projectSectionService.getFlowList(id); + + initialize(id, isReviewMethod, sectionMaps); + + List sectionIds = new ArrayList<>(); + + //插入标段变更记录 + sectionMaps.forEach((key,value) -> sectionIds.add(key)); + sectionFlowService.saveSectionList(sectionIds,ProjectCommonUtil.BUSINESS_MODULE_1,businessModule); + + if(null != projectRecord){ + initInvitation(projectRecord); + } + + return result; + + } + + /** + * 判断项目是否是资审项目 + * @param projectRecord 项目信息 + * @return 返回结果 + */ + @Override + public boolean isReviewMethod(ProjectRecord projectRecord) { + //是否资审预审项目 + boolean isReviewMethod = false; + + if(null != projectRecord){ + if (StringUtils.equals(projectRecord.getExaminationMethodDict(), ProjectCommonUtil.EXAMINATION_METHOD_1) || + StringUtils.equals(projectRecord.getExaminationMethodDict(), ProjectCommonUtil.EXAMINATION_METHOD_3) + ) { + isReviewMethod = true; + } + } + return isReviewMethod; + } + + /** + * 初始化邀请调用 + * @param projectRecord 项目信息 + */ + private void initInvitation(ProjectRecord projectRecord) { + + //是否发邀请函 如果流程发送邀请函 调用招标接口 发送供应商信息 + boolean isInvitation= isInvitation(projectRecord); + + if(isInvitation){ + SectionSupplierVO supplierVO = new SectionSupplierVO(); + supplierVO.setProjectId(projectRecord.getId()); + List resultList = sectionSupplierService.getList(supplierVO); + + Integer code = ebtpMallBidApi.entrustInsert(JsonUtils.jsonToList(resultList,SectionSupplierVO.class)).getCode(); + + if(code != ResponseEnum.SUCCESS.getCode()){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_INIT_SUPPLIER_ERROR.throwException(); + } + } + + } + + /** + * 初始化标段评审流程 + * @param id 项目ID + * @param isReviewMethod 是否资审项目 + * @param sectionMaps 流程ID集合 + */ + @Override + public void initialize(Long id, boolean isReviewMethod, Map sectionMaps) { + + BaseResponse result = ebtpMallProcessApi.initialize(id,sectionMaps,isReviewMethod); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_INIT_ERROR.customValid(!result.isSuccess()); + + } + + @Override + public ProjectRecordVO getInquiryProjectRecord(Long id) { + ProjectRecord projectRecord = this.getById(id); + + ProjectRecordVO result = BeanUtil.toBean(projectRecord,ProjectRecordVO.class); + + if(null != result){ + SectionMaterialVO material = new SectionMaterialVO(); + material.setProjectId(id); + result.setMaterialList(sectionMaterialService.getList(material)); + } + + return result; + } + + @Override + public boolean getProjectIsUpdate(Long id) { + + ProjectRecord projectRecord = this.getById(id); + + boolean result = false; + + if(null != projectRecord){ + //项目建档阶段 + if(projectRecord.getStatus() < ProjectCommonUtil.PROJECT_STATUS_2){ + result = true; + } + + //项目进行中 + if(projectRecord.getStatus() < ProjectCommonUtil.PROJECT_STATUS_2){ + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("project_id",id); + + //判断是否资格预审项目 + if (StringUtils.equals(projectRecord.getBiddingSignDict(), ProjectCommonUtil.EXAMINATION_METHOD_1) || + StringUtils.equals(projectRecord.getBiddingSignDict(), ProjectCommonUtil.EXAMINATION_METHOD_3) + ) { + //资格预审 大于2 资审招标 + queryWrapper.gt("business_module",ProjectCommonUtil.BUSINESS_MODULE_2); + }else{ + //不是资格预审 大于7 招标 + queryWrapper.gt("business_module",ProjectCommonUtil.BUSINESS_MODULE_7); + } + + //标段信息状态不能过招标才可以进行修改 + int count = projectSectionService.count(queryWrapper); + + if(count <= 0){ + result = true; + } + } + } + + return result; + } + + @Override + public boolean initProjectByIndependentProcurement(ProjectEntrustVO projectEntrustVO) { + + //1 拼装信息 + Map resultMap = assembleProject(projectEntrustVO,projectEntrustVO.getProjectEntrustExpand()); + //2 插入信息 + return insertProject(resultMap); + } + + @Override + public boolean isInvitation(ProjectRecord projectRecord) { + boolean isInvitation; + + switch (projectRecord.getBidMethodDict()){ + //公开招标 集中资格预审 + case ProjectCommonUtil.PROCUREMENT_MODE_1:isInvitation = StringUtils.equals(projectRecord.getExaminationMethodDict(),ProjectCommonUtil.EXAMINATION_METHOD_4);break; + //邀请招标 + case ProjectCommonUtil.PROCUREMENT_MODE_2:isInvitation = true;break; + //竞争性谈判 邀请参与 + case ProjectCommonUtil.PROCUREMENT_MODE_5:isInvitation = StringUtils.equals(projectRecord.getExaminationMethodDict(),ProjectCommonUtil.PARTAKE_TYPE_1);break; + //单一来源 + case ProjectCommonUtil.PROCUREMENT_MODE_6:isInvitation= true;break; + //询价 + case ProjectCommonUtil.PROCUREMENT_MODE_7:isInvitation= true;break; + default: isInvitation = false; + } + + return isInvitation; + } + + + @Override + public boolean assent(Long entrustId) { + + ProjectEntrust projectEntrust = entrustService.getById(entrustId); + + //1 出初始化项目信息 + ProjectEntrustExpand expand = entrustExpandService.getOne(new QueryWrapper().eq("entrust_id",entrustId)); + //2 拼装信息 + Map resultMap = assembleProject(projectEntrust,expand); + //3 初始化物资和供应商信息 + return insertProject(resultMap); + } + + /** + * 校验项目提交时前置条件 + * @param id 项目ID + */ + private void checkSubmitProject(Long id) { + //查询项目标段信息 是否没有进行编辑的数据 + QueryWrapper sectionQueryWrapper = new QueryWrapper<>(); + sectionQueryWrapper.eq("project_id",id); + sectionQueryWrapper.eq("status", ProjectCommonUtil.SECTION_STATUS_0); + + int count = projectSectionService.count(sectionQueryWrapper); + + //未编辑数据返回不让提交 + if(count > 0){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RECORD_CHECK.throwException(); + } + } + + @SuppressWarnings({ "unchecked"}) + private boolean insertProject(Map resultMap){ + + boolean result; + + ProjectRecord projectRecord = (ProjectRecord)resultMap.get("projectRecord"); + result = this.save(projectRecord); + + List sectionList = (List)resultMap.get("sectionList"); + projectSectionService.saveBatch(sectionList); + + List materialList = (List)resultMap.get("materialList"); + if(null != materialList){ + sectionMaterialService.saveBatch(materialList); + } + + List supplierList = (List)resultMap.get("supplierList"); + if(null != supplierList){ + sectionSupplierService.saveBatch(supplierList); + } + + return result; + } + + /** + * 拼装项目相关信息 + * @param projectEntrust 项目委托信息 + * @param expand 项目委托推送数据信息 + * @return 返回结果 + */ + private Map assembleProject(ProjectEntrust projectEntrust,ProjectEntrustExpand expand){ + + Map resultMap = new HashMap<>(); + + //子项目信息 + PurpBaseInfoVO purpBaseInfoVO = expand.getPurpImplementSendVO().getPurpBaseInfoVoList().get(0); + + //父项目信息 + PurpSuperVO purpSuperVO = expand.getPurpImplementSendVO().getPurpSuperVo(); + + ProjectRecord record = new ProjectRecord(); + //项目编号 + record.setId(PropertyUtils.getSnowflakeId()); + //项目流水号 + record.setProjectBizNum(PropertyUtils.getSnowflakeId().toString()); + //项目名称 + record.setProjectName(projectEntrust.getProjectName()); + //项目组织形式 + record.setBidOrgDict(projectEntrust.getOrganization()); + //采购人(采购人组织机构) + record.setTendereeOrgName(projectEntrust.getPurchaser()); + //所属省分 + record.setProvince(purpBaseInfoVO.getSuborProvince()); + //采购实施部门 + record.setTendereeId(purpSuperVO.getProcImplDeptCode()); + record.setTendereeName(purpSuperVO.getProcImplDept()); + //采购经理 + record.setOwnerContactId(projectEntrust.getPurchasingManager()); + record.setOwnerContactName(projectEntrust.getPurchasingManagerName()); + //采购经理联系电话 + record.setOwnerContactTel(projectEntrust.getPurchasingManagerPhone()); + //资金来源 字典 + record.setFundsProviderDict(EbpProjectCommonUtil.FUNDS_PROVIDER_MAP.get(purpBaseInfoVO.getProjBaseInfoVO().getFundOrign())); + //代理机构 + record.setTenderAgencyId(projectEntrust.getAgencyCompany()); + record.setTenderAgencyName(projectEntrust.getAgencyCompanyName()); + //业务类型 + record.setBidMethodSubDict(purpSuperVO.getBusinessType()); + + if(StringUtils.equals(projectEntrust.getProcurementMode(),ProjectCommonUtil.PROCUREMENT_MODE_3)){ + //比选方式 字典 + record.setBiddingSignDict(EbpProjectCommonUtil.SELECTION_METHOD_MAP.get(purpBaseInfoVO.getProjBaseInfoVO().getComparSelectMode())); + } + + //如果采购方式是招募方式 评审方法字段存入评审次数字典值 + if(StringUtils.equals(projectEntrust.getProcurementMode(),ProjectCommonUtil.PROCUREMENT_MODE_4)){ + //评审次数 字典 + record.setExaminationMethodDict(EbpProjectCommonUtil.RECRUITMENT_METHOD_MAP.get(purpBaseInfoVO.getProjBaseInfoVO().getReviewNum())); + }else{ + //资审方式 字典 + record.setExaminationMethodDict(EbpProjectCommonUtil.EXAMINATION_METHOD_MAP.get(purpBaseInfoVO.getProjBaseInfoVO().getSuppQualify())); + } + + //是否为竞拍项目 + boolean isAuctionMethod = false; + + //竞拍项目 + if(StringUtils.equals(record.getBidMethodSubDict(), EbpProjectCommonUtil.BUSINESS_TYPE_003)){ + isAuctionMethod = true; + } + + if(isAuctionMethod){ + record.setStatus(ProjectCommonUtil.PROJECT_STATUS_2); + }else{ + record.setStatus(ProjectCommonUtil.PROJECT_STATUS_0); + } + + record.setEntrustId(expand.getEntrustId()); + //采购类型 标的类型 + record.setProcurementType(projectEntrust.getProcurementType()); + //采购方式 + record.setBidMethodDict(projectEntrust.getProcurementMode()); + //代理机构项目经理 + record.setAppManagerId(projectEntrust.getProjectManager()); + record.setAppManagerName(projectEntrust.getProjectManagerName()); + record.setAppManagerTel(projectEntrust.getProjectManagerPhone()); + //实施项目ID + record.setEbpProjectId(expand.getPurpImplementSendVO().getId()); + //实施项目编号 + record.setEbpProjectNumber(expand.getPurpImplementSendVO().getPurpImplementNo()); + //父项目ID + record.setEbpParentProjectId(purpSuperVO.getId()); + //父项目编号 + record.setEbpParentProjectNumber(purpSuperVO.getPurpSuperNo()); + //招募开始时间 + record.setRecruitStartTime(purpBaseInfoVO.getProjBaseInfoVO().getRecruitStartTime()); + //招募结束时间 + record.setRecruitEndTime(purpBaseInfoVO.getProjBaseInfoVO().getRecruitEndTime()); + //是否使用客户端工具制作应答文件 + record.setIsClientFile(ProjectCommonUtil.IS_IPASS_YES); + //是否使用IPass制作应答文件 + record.setIsIPassFile(ProjectCommonUtil.IS_IPASS_YES); + + resultMap.put("projectRecord",record); + List sectionList = new ArrayList<>(); + resultMap.put("sectionList",sectionList); + List materialList = new ArrayList<>(); + resultMap.put("materialList",materialList); + List supplierList = new ArrayList<>(); + resultMap.put("supplierList",supplierList); + + //项目标段序号 + int sectionOrderNumber = 1; + for(PurpBaseInfoVO purpBaseInfoVo:expand.getPurpImplementSendVO().getPurpBaseInfoVoList()){ + + //采购系统委托方案信息 + ProjBaseInfoVO projBaseInfoVO = purpBaseInfoVo.getProjBaseInfoVO(); + + ProjectSection section = new ProjectSection(); + + //编号 + section.setId(PropertyUtils.getSnowflakeId()); + //项目ID + section.setProjectId(record.getId()); + //顺序号 + section.setBidSectCode(String.valueOf(sectionOrderNumber++)); + //标段名称 + section.setBidSectName(projBaseInfoVO.getProjName()); + //标段编号 + section.setSectionNumber(projBaseInfoVO.getProjNo()); + + //状态 竞拍 进行中 除此都是初始化 + if(isAuctionMethod){ + section.setStatus(ProjectCommonUtil.SECTION_STATUS_2); + section.setBusinessModule(ProjectCommonUtil.BUSINESS_MODULE_7); + }else{ + section.setStatus(ProjectCommonUtil.SECTION_STATUS_0); + section.setBusinessModule(ProjectCommonUtil.BUSINESS_MODULE_1); + } + + //标段流水号 + section.setBidSectBizNum(record.getProjectBizNum()+"/"+section.getBidSectCode()); + //方案ID + section.setProjectPlanId(String.valueOf(projBaseInfoVO.getId())); + //子项目ID + section.setSubprojectId(String.valueOf(purpBaseInfoVo.getId())); + //标包预算 + section.setBidSectContractPrice(purpBaseInfoVo.getBudgetAmount()); + //评价方法 + section.setEvalMethodDict(EbpProjectCommonUtil.EVAL_METHOD_MAP.get(projBaseInfoVO.getScoreType())); + + //物资 + materialList.addAll(assembleMaterial(record.getId(),section.getId(),purpBaseInfoVo.getPurpMaterialVOList())); + + //供应商 + supplierList.addAll(assembleSupplier(record.getId(),section.getId(),projBaseInfoVO.getProjSuppRelVOList())); + + sectionList.add(section); + + } + return resultMap; + } + + /** + * 拼装物资信息集合 + * @param projectId 项目ID + * @param sectionId 方案ID + * @param projSuppRelVOList 供应商集合 + * @return 返回结果 + */ + private List assembleSupplier(Long projectId,Long sectionId,List projSuppRelVOList){ + List resultList = new ArrayList<>(); + if(null != projSuppRelVOList){ + for(ProjSuppRelVO projSuppRelVO:projSuppRelVOList){ + SectionSupplier supplier = new SectionSupplier(); + supplier.setId(PropertyUtils.getSnowflakeId()); + supplier.setProjectId(projectId); + supplier.setSectionId(sectionId); + supplier.setSupplierId(String.valueOf(projSuppRelVO.getSuppId())); + supplier.setSupplierName(String.valueOf(projSuppRelVO.getSuppName())); + supplier.setSuppLinkManId(projSuppRelVO.getSuppLinkManId()); + supplier.setSupplierName(projSuppRelVO.getSuppLinkManName()); + resultList.add(supplier); + } + } + + return resultList; + } + + /** + * 拼装物资信息集合 + * @param projectId 项目ID + * @param sectionId 方案ID + * @param purpMaterialVOList 物资集合 + * @return 返回结果 + */ + private List assembleMaterial(Long projectId,Long sectionId,List purpMaterialVOList){ + List resultList = new ArrayList<>(); + + if(null != purpMaterialVOList){ + for(PurpMaterialVO purpMaterialVO:purpMaterialVOList){ + SectionMaterial material = new SectionMaterial(); + material.setId(PropertyUtils.getSnowflakeId()); + material.setProjectId(projectId); + material.setSectionId(sectionId); + material.setDemandId(purpMaterialVO.getRequId()); + material.setDemandNo(purpMaterialVO.getRequNo()); + material.setDemandName(purpMaterialVO.getRequName()); + material.setMaterialExplain(purpMaterialVO.getMaterialDesc()); + material.setMaterialTypeName(purpMaterialVO.getMaterialCategoryName()); + material.setProcurementCount(purpMaterialVO.getRequNum()); + material.setMaterialUnit(purpMaterialVO.getUnit()); + material.setBasePrice(purpMaterialVO.getUnitAmt()); + resultList.add(material); + } + } + + return resultList; + } + + + /** + * 物理删除信息 + * @param id 项目建档ID + * @return 返回结果 + */ + @Override + public boolean deletePhysical(Long id) { + return projectRecordMapper.deletePhysical(id) > 0; + } + + + @Override + public boolean updateAppManager(ProjectRecordVO projectRecordVO){ + + //记录之前数据放入到记录表中 + List addList = new ArrayList<>(); + + ProjectRecord projectRecord = this.getById(projectRecordVO.getId()); + Long batchNumber = PropertyUtils.getSnowflakeId(); + addList.add(new ProjectUpdateField(projectRecord.getId(),"app_manager_id",projectRecord.getAppManagerId(),batchNumber)); + addList.add(new ProjectUpdateField(projectRecord.getId(),"app_manager_name",projectRecord.getAppManagerName(),batchNumber)); + addList.add(new ProjectUpdateField(projectRecord.getId(),"app_manager_tel",projectRecord.getAppManagerTel(),batchNumber)); + + boolean result = projectUpdateFieldService.saveBatch(addList); + + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValid(!result); + + //修改项目经理信息 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",projectRecordVO.getId()); + + updateWrapper.set("app_manager_id",projectRecordVO.getAppManagerId()); + updateWrapper.set("app_manager_name",projectRecordVO.getAppManagerName()); + updateWrapper.set("app_manager_tel",projectRecordVO.getAppManagerTel()); + + result = this.update(updateWrapper); + + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValid(!result); + + return result; + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/column/ProjectReEvaluationField.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/column/ProjectReEvaluationField.java new file mode 100644 index 0000000..71ca9c9 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/column/ProjectReEvaluationField.java @@ -0,0 +1,82 @@ +package com.chinaunicom.mall.ebtp.project.projectreevaluation.column; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 字段常量 ProjectReEvaluation + * + * @auto.generated + */ +public class ProjectReEvaluationField { + + + /** + * 编号 + */ + public static final String ID = "id"; + + /** + * 项目ID + */ + public static final String PROJECT_ID = "project_id"; + + /** + * 标段ID + */ + public static final String SECTION_ID = "section_id"; + + /** + * 原因 + */ + public static final String REASON = "reason"; + + /** + * 重新评标开始时间 + */ + public static final String EVALUATION_START_TIME = "evaluation_start_time"; + + /** + * 重新评标结束时间 + */ + public static final String EVALUATION_END_TIME = "evaluation_end_time"; + + /** + * 重新评标地点 + */ + public static final String EVALUATION_PLACE = "evaluation_place"; + + /** + * 评标专家是否与上次评标一致 0 是 1 否 + */ + public static final String IS_AGREEMENT = "is_agreement"; + + /** + * 附件组ID + */ + public static final String UPLOAD_FILE_ID = "upload_file_id"; + + /** + * 状态 0 初始化 1 提交审批 2 审批完成 + */ + public static final String STATUS = "status"; + + + /** + * 创建时间 + */ + public static final String CREATE_DATE = "create_date"; + + /** + * 评审室ID + */ + public static final String ASSESS_ID = "assess_id"; + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/controller/ProjectReEvaluationController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/controller/ProjectReEvaluationController.java new file mode 100644 index 0000000..1bd9c3b --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/controller/ProjectReEvaluationController.java @@ -0,0 +1,172 @@ +package com.chinaunicom.mall.ebtp.project.projectreevaluation.controller; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.feign.entity.WasUpdateBizDTO; +import com.chinaunicom.mall.ebtp.project.projectreevaluation.entity.ProjectReEvaluationVO; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import com.chinaunicom.mall.ebtp.project.projectreevaluation.entity.ProjectReEvaluation; +import com.chinaunicom.mall.ebtp.project.projectreevaluation.service.IProjectReEvaluationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +/** + * 重新评标controller + * + * @author daixc + * @date 2020/12/20 + */ +@RestController +@Api(tags = "重新评标信息") +@RequestMapping("/v1/projectReEvaluation") +public class ProjectReEvaluationController { + + @Resource + private IProjectReEvaluationService projectReEvaluationService; + + /** + * 插入新数据 + * + * @param projectReEvaluation + * @return + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid ProjectReEvaluation projectReEvaluation) { + + boolean save = projectReEvaluationService.save(projectReEvaluation); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param projectReEvaluation + * @return + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectReEvaluation projectReEvaluation) { + + + return BaseResponse.success(projectReEvaluationService.update(projectReEvaluation)); + } + + /** + * 查询数据 + * + * @param id + * @return + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable Long id) { + + ProjectReEvaluation projectReEvaluation = projectReEvaluationService.getById(id); + + return BaseResponse.success(projectReEvaluation); + } + + /** + * 删除数据 + * @param id 主键ID + * @return 返回结果 + */ + @ApiOperation("删除数据") + @DeleteMapping("/{id}") + public BaseResponse delete(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + return BaseResponse.success(projectReEvaluationService.delete(id)); + } + + /** + * 发起审批 + * + * @param id 主键ID + * @return 返回结果 + */ + @ApiOperation("提交审批") + @PostMapping("/submitForApproval/{id}") + public BaseResponse submitForApproval(@ApiParam(value = "主键id", required = true) @PathVariable Long id) { + + return BaseResponse.success(projectReEvaluationService.submitForApproval(id)); + } + + /** + * 查询分页新数据 + * + * @param projectReEvaluationVO 审批信息 + * @return 返回结果 + */ + @ApiOperation("查询分页数据") + @PostMapping("/getPage") + public BaseResponse> getPage(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectReEvaluationVO projectReEvaluationVO) { + + return BaseResponse.success(projectReEvaluationService.getPage(projectReEvaluationVO)); + } + + /** + * 审批回调 + * + * @param dto 审批结果实体 + * @return 返回结果 + */ + @ApiOperation("审批回调") + @PostMapping("/callbackApproval") + public BaseResponse callbackApproval(@ApiParam(value = "审批结果实体", required = true) @RequestBody WasUpdateBizDTO dto) { + + return BaseResponse.success(projectReEvaluationService.callbackApproval(dto)); + } + + + /** + * 查询集合信息 + * + * @param vo 查询集合结果 + * @return 返回结果 + */ + @ApiOperation("查询信息返回集合信息") + @PostMapping("/getList") + public BaseResponse> getList(@ApiParam(value = "审批结果实体", required = true) @RequestBody ProjectReEvaluationVO vo) { + + return BaseResponse.success(projectReEvaluationService.getList(vo)); + } + + /** + * 校验是否可以添加信息 + * + * @param sectionId 标段ID + * @return 返回结果 + */ + @ApiOperation("校验是否可以添加信息") + @GetMapping("/checkIsAdd/{sectionId}") + public BaseResponse checkIsAdd(@ApiParam(value = "标段ID", required = true) @PathVariable Long sectionId) { + + return BaseResponse.success(projectReEvaluationService.checkRepeatReEvaluation(sectionId).getAgainType()); + } + + /** + * 根据评审室ID查询集合信息 + * + * @param vo 查询集合结果 + * @return 返回结果 + */ + @ApiOperation("根据评审室ID查询集合信息") + @PostMapping("/getListByassessRoomId") + public BaseResponse> getListByassessRoomId(@ApiParam(value = "审批结果实体", required = true) @RequestBody ProjectReEvaluationVO vo) { + + return BaseResponse.success(projectReEvaluationService.getListByassessRoomId(vo)); + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/dao/ProjectReEvaluationMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/dao/ProjectReEvaluationMapper.java new file mode 100644 index 0000000..a7cce8a --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/dao/ProjectReEvaluationMapper.java @@ -0,0 +1,15 @@ +package com.chinaunicom.mall.ebtp.project.projectreevaluation.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.projectreevaluation.entity.ProjectReEvaluation; + +/** + * 重新评审信息dao层 + * @author daixc + * @date 2020/12/20 + */ +public interface ProjectReEvaluationMapper extends IBaseMapper { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/dao/mapper/ProjectReEvaluationMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/dao/mapper/ProjectReEvaluationMapper.xml new file mode 100644 index 0000000..613a0ba --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/dao/mapper/ProjectReEvaluationMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update biz_project_re_evaluation + set + delete_flag="deleted" + where ID=#{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/entity/ProjectReEvaluation.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/entity/ProjectReEvaluation.java new file mode 100644 index 0000000..5654d94 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/entity/ProjectReEvaluation.java @@ -0,0 +1,93 @@ +package com.chinaunicom.mall.ebtp.project.projectreevaluation.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * 实体类 BizProjectReEvaluation + * + * @author daixc + */ +@Data +@Accessors(chain = true) +@ApiModel("重新评标实体") +@TableName(value = "biz_project_re_evaluation", autoResultMap = true) +public class ProjectReEvaluation extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @ApiModelProperty(value = "编号") + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + private Long projectId; + + /** + * 标段ID + */ + @ApiModelProperty(value = "标段ID") + private Long sectionId; + + /** + * 原因 + */ + @ApiModelProperty(value = "原因") + private String reason; + + /** + * 重新评标开始时间 + */ + @ApiModelProperty(value = "重新评标开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.time.LocalDateTime evaluationStartTime; + + /** + * 重新评标结束时间 + */ + @ApiModelProperty(value = "重新评标结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.time.LocalDateTime evaluationEndTime; + + /** + * 重新评标地点 + */ + @ApiModelProperty(value = "重新评标地点") + private String evaluationPlace; + + /** + * 评标专家是否与上次评标一致 0 是 1 否 + */ + @ApiModelProperty(value = "评标专家是否与上次评标一致 0 是 1 否") + private String isAgreement; + + /** + * 附件组ID + */ + @ApiModelProperty(value = "附件组ID") + private Long uploadFileId; + + /** + * 状态 0 初始化 1 提交审批 2 审批完成 + */ + @ApiModelProperty(value = "状态 0 初始化 1 提交审批 2 审批通过 9 审批未通过") + private Integer status; + + @ApiModelProperty(value = "评审室ID") + private Long assessId; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/entity/ProjectReEvaluationVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/entity/ProjectReEvaluationVO.java new file mode 100644 index 0000000..d31236a --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/entity/ProjectReEvaluationVO.java @@ -0,0 +1,41 @@ +package com.chinaunicom.mall.ebtp.project.projectreevaluation.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.ebtp.mall.cloud.attachment.sdk.model.AttachmentEntity; +import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 实体类 BizProjectReEvaluation + * + * @author daixc + * @date 2020/12/20 + */ +@Data +@Accessors(chain = true) +@ApiModel("重新评标VO类") +@TableName(autoResultMap = true) +public class ProjectReEvaluationVO extends ProjectReEvaluation implements Serializable { + + /** + * 分页数据 + */ + @ApiModelProperty(value = "分页对象信息") + private BasePageRequest basePageRequest; + + @ApiModelProperty(value = "文档中心附件") + private List attachmentList; + + @ApiModelProperty(value = "评审室ID集合") + private List assessIds; + + @ApiModelProperty(value = "排除状态") + private Integer isNotStatus; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/service/IProjectReEvaluationService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/service/IProjectReEvaluationService.java new file mode 100644 index 0000000..be85e53 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/service/IProjectReEvaluationService.java @@ -0,0 +1,85 @@ +package com.chinaunicom.mall.ebtp.project.projectreevaluation.service; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.feign.entity.BizAgainSection; +import com.chinaunicom.mall.ebtp.project.feign.entity.WasUpdateBizDTO; +import com.chinaunicom.mall.ebtp.project.projectreevaluation.entity.ProjectReEvaluation; +import com.chinaunicom.mall.ebtp.project.projectreevaluation.entity.ProjectReEvaluationVO; + +import java.util.List; + +/** + * 对数据表 biz_project_re_evaluation 操作的 service + * @author daixc + * + */ +public interface IProjectReEvaluationService extends IBaseService{ + + /** + * 修改项目信息 + * @param projectReEvaluation 项目信息 + * @return 返回结果 + */ + boolean update(ProjectReEvaluation projectReEvaluation); + + /** + * 插入信息 + * @param projectReEvaluation 重新评审信息 + * @return 返回结果 + */ + @Override + boolean save(ProjectReEvaluation projectReEvaluation); + + /** + * 查询分页信息 + * @param projectReEvaluationVO 分页信息 + * @return 返回结果 + */ + IPage getPage(ProjectReEvaluationVO projectReEvaluationVO); + + /** + * 删除信息 + * @param id 主键 + * @return 返回结果 + */ + boolean delete(Long id); + + /** + * 发起审批 + * @param id 主键 + * @return 返回结果 + */ + boolean submitForApproval(Long id); + + /** + * 流程回调方法 + * @param dto 返回实体 + * @return 返回结果 + */ + boolean callbackApproval(WasUpdateBizDTO dto); + + /** + * 查询集合 + * @param projectReEvaluationVO 查询条件 + * @return 返回结果 + */ + List getList(ProjectReEvaluationVO projectReEvaluationVO); + + /** + * 校验发起审批的标段所处流程是否正确 状态是否正确 + * 只有当标段所处定标环节才可以重新评标 + * 如果重新评审数据有审批中 初始化 不可以新增 只能修改或进行评审 + * @param sectionId 标段ID + * @return 查询结果 + */ + BizAgainSection checkRepeatReEvaluation(Long sectionId); + + /** + * 根据评审室ID查询集合信息 + * @param vo 查询条件 + * @return 返回结果 + */ + List getListByassessRoomId(ProjectReEvaluationVO vo); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/service/impl/ProjectReEvaluationServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/service/impl/ProjectReEvaluationServiceImpl.java new file mode 100644 index 0000000..2802428 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectreevaluation/service/impl/ProjectReEvaluationServiceImpl.java @@ -0,0 +1,361 @@ +package com.chinaunicom.mall.ebtp.project.projectreevaluation.service.impl; + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.exceptions.ExceptionUtil; +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.ebtp.mall.cloud.attachment.sdk.api.AttachmentClient; +import com.chinaunicom.ebtp.mall.cloud.attachment.sdk.model.AttachmentDetail; +import com.chinaunicom.ebtp.mall.cloud.attachment.sdk.model.AttachmentEntity; +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.exception.common.CommonExceptionEnum; +import com.chinaunicom.mall.ebtp.common.util.JsonUtils; +import com.chinaunicom.mall.ebtp.common.util.PropertyUtils; +import com.chinaunicom.mall.ebtp.project.common.EbpProjectCommonUtil; +import com.chinaunicom.mall.ebtp.project.common.ProjectCommonUtil; +import com.chinaunicom.mall.ebtp.project.common.ProjectExceptionEnum; +import com.chinaunicom.mall.ebtp.project.feign.*; +import com.chinaunicom.mall.ebtp.project.feign.entity.AgainRoomVO; +import com.chinaunicom.mall.ebtp.project.feign.entity.Approve; +import com.chinaunicom.mall.ebtp.project.feign.entity.BizAgainSection; +import com.chinaunicom.mall.ebtp.project.feign.entity.WasUpdateBizDTO; +import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecord; +import com.chinaunicom.mall.ebtp.project.projectrecord.service.IProjectRecordService; +import com.chinaunicom.mall.ebtp.project.projectreevaluation.column.ProjectReEvaluationField; +import com.chinaunicom.mall.ebtp.project.projectreevaluation.dao.ProjectReEvaluationMapper; +import com.chinaunicom.mall.ebtp.project.projectreevaluation.entity.ProjectReEvaluation; +import com.chinaunicom.mall.ebtp.project.projectreevaluation.entity.ProjectReEvaluationVO; +import com.chinaunicom.mall.ebtp.project.projectreevaluation.service.IProjectReEvaluationService; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSection; +import com.chinaunicom.mall.ebtp.project.projectsection.service.IProjectSectionService; +import io.seata.spring.annotation.GlobalTransactional; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 对数据表 biz_project_re_evaluation 操作的 serviceImpl + * @author daixc + * @date 2020/12/20 + * + */ +@Service +public class ProjectReEvaluationServiceImpl extends BaseServiceImpl implements IProjectReEvaluationService { + + @Value("${mconfig.wfSectionNo}") + private String wfSectionNo; + + @Value("${mconfig.wfSectionName}") + private String wfSectionName; + + @Resource + private IProjectSectionService sectionService; + + @Resource + private IProjectRecordService recordService; + + @Resource + private IBaseCacheUserService cacheUserService; + + @Resource + private AttachmentClient attachmentClient; + + @Resource + private WfapApi wfapApi; + + @Resource + private EbtpMallProcessApi mallProcessApi; + + @Resource + private EbtpCalibrationApi calibrationApi; + + @Resource + private EbtpMallBidApi ebtpMallBidApi; + + @Resource + private EbtpRespsApi ebtpRespsApi; + + @Resource + private EbtpTenderApi ebtpTenderApi; + + @Resource + private EbtpRsmsApi ebtpRsmsApi; + + private QueryWrapper getQueryWrapper(ProjectReEvaluationVO vo){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(null != vo.getSectionId()){ + queryWrapper.eq(ProjectReEvaluationField.SECTION_ID,vo.getSectionId()); + } + if(null != vo.getProjectId()){ + queryWrapper.eq(ProjectReEvaluationField.PROJECT_ID,vo.getProjectId()); + } + if(null != vo.getAssessIds()){ + queryWrapper.in(ProjectReEvaluationField.ASSESS_ID,vo.getAssessIds()); + } + if(null != vo.getIsNotStatus()){ + queryWrapper.ne(ProjectReEvaluationField.STATUS,vo.getIsNotStatus()); + } + return queryWrapper; + + } + + + @Override + public boolean update(ProjectReEvaluation projectReEvaluation) { + + boolean result = this.update(projectReEvaluation, + new UpdateWrapper().eq(ProjectReEvaluationField.ID,projectReEvaluation.getId()) + .eq(ProjectReEvaluationField.STATUS,ProjectCommonUtil.RE_EVALUATION_STATUS_0)); + if(!result){ + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.throwException(); + } + + return result; + } + + @Override + public boolean save(ProjectReEvaluation entity) { + BizAgainSection againSection = checkRepeatReEvaluation(entity.getSectionId()); + entity.setId(PropertyUtils.getSnowflakeId()); + entity.setStatus(ProjectCommonUtil.RE_EVALUATION_STATUS_0); + entity.setAssessId(Long.parseLong(againSection.getAssessId())); + return super.save(entity); + } + + @Override + public IPage getPage(ProjectReEvaluationVO projectReEvaluationVO) { + + QueryWrapper query = getQueryWrapper(projectReEvaluationVO); + + if(null == projectReEvaluationVO.getBasePageRequest()){ + projectReEvaluationVO.setBasePageRequest(new BasePageRequest()); + } + query.orderByDesc(ProjectReEvaluationField.CREATE_DATE); + + //查询 + IPage p = new Page<>(projectReEvaluationVO.getBasePageRequest().getPageNo(), + projectReEvaluationVO.getBasePageRequest().getPageSize()); + IPage result = this.page(p, query); + + IPage voPage = result.convert(c -> BeanUtil.toBean(c,ProjectReEvaluationVO.class)); + voPage.setRecords(assembleReEvaluation(voPage.getRecords())); + + return voPage; + } + + @Override + public boolean delete(Long id) { + + boolean result = this.remove(new UpdateWrapper().eq(ProjectReEvaluationField.ID,id) + .eq(ProjectReEvaluationField.STATUS,ProjectCommonUtil.RE_EVALUATION_STATUS_0)); + + if(!result){ + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA__ERROR.throwException(); + } + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean submitForApproval(Long id) { + + boolean result = updateStatus(id,ProjectCommonUtil.RE_EVALUATION_STATUS_0,ProjectCommonUtil.RE_EVALUATION_STATUS_1); + + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValid(!result); + + reEvalStart(id); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) + public boolean callbackApproval(WasUpdateBizDTO dto) { + boolean result = false; + if(StringUtils.equals(EbpProjectCommonUtil.CALLBACK_APPROVAL_STATUS_YES,dto.getAuditState())){ + initSection(Long.parseLong(dto.getId())); + result = updateStatus(Long.parseLong(dto.getId()),ProjectCommonUtil.RE_EVALUATION_STATUS_1,ProjectCommonUtil.RE_EVALUATION_STATUS_2); + }else if(StringUtils.equals(EbpProjectCommonUtil.CALLBACK_APPROVAL_STATUS_NO,dto.getAuditState())){ + result = updateStatus(Long.parseLong(dto.getId()),ProjectCommonUtil.RE_EVALUATION_STATUS_1,ProjectCommonUtil.RE_EVALUATION_STATUS_9); + } + + return result; + } + + @Override + public List getList(ProjectReEvaluationVO projectReEvaluationVO) { + QueryWrapper queryWrapper = getQueryWrapper(projectReEvaluationVO); + + return this.list(queryWrapper); + } + + /** + * 发送审批信息 + * @param id 主键 + */ + private void reEvalStart(Long id) { + ProjectReEvaluation evaluation = this.getById(id); + + ProjectRecord record = recordService.getById(evaluation.getProjectId()); + + Approve approve = new Approve(); + approve.setDataPrimarykeyId(id); + approve.setProFormNo(record.getProjectBizNum()); + approve.setProFormName(record.getProjectName()); + approve.setWfSectionNo(wfSectionNo); + approve.setWfSectionName(wfSectionName); + BaseCacheUser cacheUser = cacheUserService.getCacheUser(); + approve.setOrgOu(cacheUser.getOrganizationId()); + approve.setCumail(String.valueOf(cacheUser.getUserId())); + approve.setBusinessType(record.getBidMethodSubDict()); + approve.setSubBusinessType(EbpProjectCommonUtil.SUB_BUSINESS_TYPE); + approve.setStartUserType(ProjectCommonUtil.START_USER_TYPE_PARTNER); + + if(!wfapApi.start(approve).isSuccess()){ + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.throwException(); + } + } + + /** + * 修改重新评审信息状态 + * @param id 主键 + * @param status 当前状态 + * @param newStatus 要修改成的状态 + * @return 返回结果 + */ + private boolean updateStatus(Long id,int status,int newStatus) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ProjectReEvaluationField.ID,id); + updateWrapper.eq(ProjectReEvaluationField.STATUS, status); + updateWrapper.set(ProjectReEvaluationField.STATUS,newStatus); + + boolean result = this.update(updateWrapper); + if(!result){ + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.throwException(); + } + return result; + } + + /** + * 校验发起审批的标段所处流程是否正确 状态是否正确 + * 只有当标段所处定标环节才可以重新评标 + * 如果重新评审数据有审批中 初始化 不可以新增 只能修改或进行评审 + * @param sectionId 标段ID + */ + @Override + public BizAgainSection checkRepeatReEvaluation(Long sectionId){ + + boolean result = false; + ProjectSection section = sectionService.getById(sectionId); + + if(null != section){ + if(null != section.getBusinessModule() && section.getBusinessModule().equals(ProjectCommonUtil.BUSINESS_MODULE_11)){ + result = true; + } + }else{ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_NOT_FIND.throwException(); + } + + if(!result){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_SAVE_ERROR.throwException(); + } + + int count = this.count(new QueryWrapper().eq(ProjectReEvaluationField.SECTION_ID,sectionId). + eq(ProjectReEvaluationField.STATUS,ProjectCommonUtil.RE_EVALUATION_STATUS_0). + or().eq(ProjectReEvaluationField.STATUS,ProjectCommonUtil.RE_EVALUATION_STATUS_1)); + if(count > 0){ + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_FIND_STATUS_ERROR.throwException(); + } + + BizAgainSection againSection = calibrationApi.getReEvaluationBsByBsId(String.valueOf(sectionId)).getData(); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ASSESS_ROOM_NOT_FIND.customValid(null == againSection); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_ASSESS_ROOM_NOT_FIND.customValidName(againSection.getMessage(),!againSection.getAgainType()); + ProjectExceptionEnum.FRAME_EXCEPTION_ASSESS_ROOM_NOT_FIND.customValid(StringUtils.isEmpty(againSection.getAssessId())); + return againSection; + } + + @Override + public List getListByassessRoomId(ProjectReEvaluationVO vo) { + + vo.setIsNotStatus(ProjectCommonUtil.RE_EVALUATION_STATUS_9); + return this.getList(vo); + } + + + /** + * 初始化标段信息 + * @param id 主键 + */ + private void initSection(Long id) { + ProjectReEvaluation evaluation = this.getById(id); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_NOT_FIND.customValid(null == evaluation); + + //第几轮评审(招募多轮) 不是招募多轮 默认 1 + int roomSort = 1; + + //初始化评审室信息 + BaseResponse response = mallProcessApi.againinitialize(evaluation.getProjectId(), evaluation.getSectionId(), roomSort); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_NOT_FIND.customValidName(response.getMessage(),!response.isSuccess()); + + AgainRoomVO againRoomVO = response.getData(); + //复制招标信息 + response = ebtpMallBidApi.copyDocument(againRoomVO); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_NOT_FIND.customValidName(response.getMessage(),!response.isSuccess()); + + //复制投标信息 + response = ebtpTenderApi.reviewAgain(response.getData(),evaluation.getAssessId()); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_NOT_FIND.customValidName(response.getMessage(),!response.isSuccess()); + + //复制应答信息 + response = ebtpRespsApi.copyTdocByAgainRoom(response.getData()); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_NOT_FIND.customValidName(response.getMessage(),!response.isSuccess()); + + //复制评审设置信息 + BaseResponse rsmsResponse = ebtpRsmsApi.again(response.getData()); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_NOT_FIND.customValidName(rsmsResponse.getMessage(),!rsmsResponse.isSuccess()); + + //是否专家与上次一致 如果 是 进行复制 + if(StringUtils.equals(ProjectCommonUtil.IS_AGREEMENT_YES,evaluation.getIsAgreement())){ + BaseResponse juryResponse = mallProcessApi.copyJury(evaluation.getAssessId(),againRoomVO.getRoomId()); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RE_EVAL_NOT_FIND.customValidName(juryResponse.getMessage(),!juryResponse.isSuccess()); + } + + } + + /** + * 获取文档中心附件库 + * + * @param resultList 返回集合 + * @return 返回结构 + */ + private List assembleReEvaluation(List resultList) { + + if (null != resultList) { + List businessFileIdList = resultList.stream().map(ProjectReEvaluationVO::getUploadFileId).collect(Collectors.toList()); + Optional result = attachmentClient.findByBusinessId(JsonUtils.jsonToList(businessFileIdList, String.class)); + + for (ProjectReEvaluationVO vo : resultList) { + List ossFileList = null; + if (result.isPresent()) { + ossFileList = result.get().get(String.valueOf(vo.getUploadFileId())); + } + vo.setAttachmentList(ossFileList); + } + } + return resultList; + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/controller/ProjectSectionController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/controller/ProjectSectionController.java new file mode 100644 index 0000000..1f96827 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/controller/ProjectSectionController.java @@ -0,0 +1,294 @@ +package com.chinaunicom.mall.ebtp.project.projectsection.controller; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.feign.entity.SectionFlowVO; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSection; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.project.projectsection.service.IProjectSectionService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; +import java.util.Map; + +/** + * 标段信息controller + * 对项目标段信息操作 + * + * @author daixc + * @date 2020/10/25 + */ +@RestController +@Api(tags = "项目标段信息") +@RequestMapping("/v1/projectSection") +public class ProjectSectionController{ + + @Resource + private IProjectSectionService projectSectionService; + + /** + * 插入新数据 + * + * @param projectSection 项目标段信息 + * + * @return 返回结果 + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid ProjectSectionVO projectSection){ + + boolean save = projectSectionService.save(projectSection); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param projectSection 项目标段信息 + * + * @return 返回结果 + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectSectionVO projectSection){ + + return BaseResponse.success(projectSectionService.update(projectSection)); + } + + /** + * 查询数据 + * + * @param id 标段ID + * + * @return 返回结果 + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + ProjectSection projectSection = projectSectionService.getById(id); + + return BaseResponse.success(projectSection); + } + + /** + * 查询标段集合 + * + * @param projectSection 标段 + * + * @return 返回结果 + */ + @ApiOperation("查询标段集合") + @PostMapping("/getList") + public BaseResponse> getList(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectSectionVO projectSection){ + + return BaseResponse.success(projectSectionService.getList(projectSection)); + } + + /** + * 查询分页数据 + * + * @param projectSection 分页信息 + * + * @return 返回结果 + */ + @ApiOperation("查询分页数据") + @PostMapping("/getPage") + public BaseResponse> getPage(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectSectionVO projectSection){ + + return BaseResponse.success(projectSectionService.getPage(projectSection)); + } + + + /** + * 项目标段信息查询数据 + * + * @param sectionIds 项目标段ID集合 + * @return 返回结果 + */ + @ApiOperation("项目标段信息查询数据") + @PostMapping("/selectListByIds") + public BaseResponse> selectListByIds(@ApiParam(value = "项目标段ID集合", required = true) @RequestParam(name = "sectionIds") List sectionIds){ + + List result = projectSectionService.selectBatchIds(sectionIds); + + return BaseResponse.success(result); + } + + /** + * 标段修改业务模块 招标到资审投标 + * @param sectionIds 标段ID集合 + * @return 返回结果 + */ + @ApiOperation("标段修改业务模块 资审招标到资审投标") + @PostMapping("/qualificationBidToTender") + public BaseResponse qualificationBidToTender(@ApiParam(value = "项目标段ID集合", required = true) @RequestParam(name = "sectionIds") List sectionIds){ + + return BaseResponse.success(projectSectionService.qualificationBidToTender(sectionIds)); + } + + /** + * 标段修改业务模块 资审投标到资审开标 + * @param sectionId 标段ID集合 + * @return 返回结果 + */ + @ApiOperation("标段修改业务模块 资审投标到资审开标") + @PostMapping("/qualificationTenderToOpening") + public BaseResponse qualificationTenderToOpening(@ApiParam(value = "项目标段ID", required = true) @RequestParam(name = "sectionId") Long sectionId){ + + return BaseResponse.success(projectSectionService.qualificationTenderToOpening(sectionId)); + } + + /** + * 标段修改业务模块 资审开标到资审评标 + * @param sectionId 标段ID集合 + * @return 返回结果 + */ + @ApiOperation("标段修改业务模块 资审开标到资审评标") + @PostMapping("/qualificationOpeningToEvaluation") + public BaseResponse qualificationOpeningToEvaluation(@ApiParam(value = "项目标段ID", required = true) @RequestParam(name = "sectionId") Long sectionId){ + + return BaseResponse.success(projectSectionService.qualificationOpeningToEvaluation(sectionId)); + } + + /** + * 标段修改业务模块 资审评标到资审定标 + * @param sectionId 标段ID集合 + * @return 返回结果 + */ + @ApiOperation("标段修改业务模块 资审评标到资审定标") + @PostMapping("/qualificationEvaluationToCalibration") + public BaseResponse qualificationEvaluationToCalibration(@ApiParam(value = "项目标段ID", required = true) @RequestParam(name = "sectionId") Long sectionId){ + + return BaseResponse.success(projectSectionService.qualificationEvaluationToCalibration(sectionId)); + } + + /** + * 标段修改业务模块 资审定标到招标 + * @param sectionId 标段ID集合 + * @return 返回结果 + */ + @ApiOperation("标段修改业务模块 资审定标到招标") + @PostMapping("/qualificationEvaluationToBid") + public BaseResponse qualificationEvaluationToBid(@ApiParam(value = "项目标段ID", required = true) @RequestParam(name = "sectionId") Long sectionId){ + + return BaseResponse.success(projectSectionService.qualificationEvaluationToBid(sectionId)); + } + + /** + * 标段修改业务模块 招标到投标 + * @param sectionIds 标段ID集合 + * @return 返回结果 + */ + @ApiOperation("标段修改业务模块 招标到投标") + @PostMapping("/bidToTender") + public BaseResponse bidToTender(@ApiParam(value = "项目标段ID集合", required = true) @RequestParam(name = "sectionIds") List sectionIds){ + + return BaseResponse.success(projectSectionService.bidToTender(sectionIds)); + } + + /** + * 标段修改业务模块 投标到开标 + * @param sectionId 标段ID集合 + * @return 返回结果 + */ + @ApiOperation("标段修改业务模块 投标到开标") + @PostMapping("/tenderToOpening") + public BaseResponse tenderToOpening(@ApiParam(value = "项目标段ID", required = true) @RequestParam(name = "sectionId") Long sectionId){ + + return BaseResponse.success(projectSectionService.tenderToOpening(sectionId)); + } + + /** + * 标段修改业务模块 开标到评标 + * @param sectionId 标段ID集合 + * @return 返回结果 + */ + @ApiOperation("标段修改业务模块 开标到评标") + @PostMapping("/openingToEvaluation") + public BaseResponse openingToEvaluation(@ApiParam(value = "项目标段ID", required = true) @RequestParam(name = "sectionId") Long sectionId){ + + return BaseResponse.success(projectSectionService.openingToEvaluation(sectionId)); + } + + /** + * 标段修改业务模块 评标到定标 + * @param sectionId 标段ID集合 + * @return 返回结果 + */ + @ApiOperation("标段修改业务模块 评标到定标") + @PostMapping("/evaluationToCalibration") + public BaseResponse evaluationToCalibration(@ApiParam(value = "项目标段ID", required = true) @RequestParam(name = "sectionId") Long sectionId){ + + return BaseResponse.success(projectSectionService.evaluationToCalibration(sectionId)); + } + + /** + * 标段修改业务模块 定标到归档 + * @param sectionId 标段ID集合 + * @return 返回结果 + */ + @ApiOperation("标段修改业务模块 定标到归档") + @PostMapping("/calibrationToArchive") + public BaseResponse calibrationToArchive(@ApiParam(value = "项目标段ID", required = true) @RequestParam(name = "sectionId") Long sectionId){ + + return BaseResponse.success(projectSectionService.calibrationToArchive(sectionId)); + } + + + /** + * 项目标段信息查询数据(项目标段和项目拼装数据) + * + * @param projectSection 项目标段查询 + * @return 返回结果 + */ + @ApiOperation("项目标段信息查询数据(项目标段和项目拼装数据)") + @PostMapping("/selectAllBatchIds") + public BaseResponse> selectAllBatchIds(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectSectionVO projectSection){ + + List result = projectSectionService.selectAllBatchIds(projectSection); + + return BaseResponse.success(result); + } + + /** + * 项目异常信息查询处理数据 + * + * @param projectId 项目ID + * @param exceptionId 项目异常信息ID + * @param type 查看类型 + * @return 返回结果 + */ + @ApiOperation("项目异常信息查询处理数据") + @GetMapping("/selectEditSection") + public BaseResponse> selectEditSection(@ApiParam(value = "项目ID", required = true) @RequestParam(name = "projectId") Long projectId, + @ApiParam(value = "项目异常信息ID") @RequestParam(required = false,name = "exceptionId") Long exceptionId, + @ApiParam(value = "查看类型", required = true) @RequestParam(name = "type") String type){ + + List result = projectSectionService.selectEditSection(projectId,exceptionId,type); + + return BaseResponse.success(result); + } + + /** + * 项目是否可以修改信息 + * + * @param planId 标段方案ID + * + * @return 返回结果 + */ + @ApiOperation("根据方案ID获取项目标段流程信息") + @PostMapping("/getProjectFlowByPlanId") + public BaseResponse getProjectFlowByPlanId(@ApiParam(value = "标段方案ID", required = true) @RequestParam(name = "planId") Long planId){ + + return BaseResponse.success(projectSectionService.getProjectFlowByPlanId(planId)); + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/ProjectSectionFlowMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/ProjectSectionFlowMapper.java new file mode 100644 index 0000000..f175d62 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/ProjectSectionFlowMapper.java @@ -0,0 +1,10 @@ +package com.chinaunicom.mall.ebtp.project.projectsection.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSectionFlow; + +public interface ProjectSectionFlowMapper extends IBaseMapper { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/ProjectSectionMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/ProjectSectionMapper.java new file mode 100644 index 0000000..5b52375 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/ProjectSectionMapper.java @@ -0,0 +1,63 @@ +package com.chinaunicom.mall.ebtp.project.projectsection.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSection; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSectionVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 对数据表 biz_project_section 操作的 dao 实现 + * @author daixc + * @date 2020/10/23 + * + */ +public interface ProjectSectionMapper extends IBaseMapper { + + /** + * 删除供应商信息 + * @param projectId 项目ID + * @return 返回结果 + */ + int deleteByProjectId(@Param(value = "projectId") Long projectId); + + /** + * 查询标段和流程 + * @param projectId 项目ID + * @return 返回结果 + */ + List getSectionFlowList(@Param(value = "projectId") Long projectId); + + /** + * 查询标段拼装集合信息 + * @param projectSection 项目信息 + * @return 返回结果 + */ + List selectAllBatchIds(@Param(value = "section") ProjectSectionVO projectSection); + + /** + * 查询异常信息 + * @param projectId 项目ID + * @return 返回结果 + */ + List selectEditSectionBySave(@Param(value = "projectId") Long projectId); + + /** + * 查询异常信息 + * @param projectId 项目ID + * @param exceptionId 异常ID + * @return 返回结果 + */ + List selectEditSectionByUpdate(@Param(value = "projectId") Long projectId, @Param(value = "exceptionId") Long exceptionId); + + /** + * 查询异常信息 + * @param projectId 项目ID + * @param exceptionId 异常ID + * @return 返回结果 + */ + List selectEditSectionBySelect(@Param(value = "projectId") Long projectId, @Param(value = "exceptionId") Long exceptionId); + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/mapper/ProjectSectionFlowMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/mapper/ProjectSectionFlowMapper.xml new file mode 100644 index 0000000..5737404 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/mapper/ProjectSectionFlowMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + update biz_project_section_flow + set + delete_flag="deleted" + where ID=#{id} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/mapper/ProjectSectionMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/mapper/ProjectSectionMapper.xml new file mode 100644 index 0000000..32d73a2 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/dao/mapper/ProjectSectionMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update biz_project_section set delete_flag="deleted" where ID=#{id} + + + + + delete from biz_project_section where project_id = #{projectId} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/entity/ProjectSection.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/entity/ProjectSection.java new file mode 100644 index 0000000..21259bc --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/entity/ProjectSection.java @@ -0,0 +1,241 @@ +package com.chinaunicom.mall.ebtp.project.projectsection.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.chinaunicom.mall.ebtp.common.config.CustomLocalDateTimeTypeHandler; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 项目标段信息实体类 BizProjectSection + * + * @author daixc + * @date 2020/10/25 + */ +@Data +@Accessors(chain = true) +@ApiModel("项目标段信息") +@TableName(value = "biz_project_section", autoResultMap = true) +public class ProjectSection extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ApiModelProperty(value = "主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 招标项目表主键 + */ + @ApiModelProperty(value = "招标项目表主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long projectId; + + /** + * 标段包业务编号:招标项目业务编号/1 + */ + @ApiModelProperty(value = "标段包业务编号:招标项目业务编号/1") + @Length(max = 50,message = "业务编号最长为50字符") + private String bidSectBizNum; + + /** + * 标包序号 + */ + @ApiModelProperty(value = "标包序号") + private String bidSectCode; + + /** + * 标段(包)名称 + */ + @ApiModelProperty(value = "标段(包)名称") + @Length(max = 200,message = "标段(包)名称最长为200字符") + private String bidSectName; + + /** + * 标段(包)内容 + */ + @ApiModelProperty(value = "标段(包)内容") + @Length(max = 2000,message = "内容描述最长为2000字符") + private String bidSectContent; + + /** + * 标段(包)分类代码字典编码 + */ + @ApiModelProperty(value = "标段(包)分类代码字典编码") + private String bidSectTypeDict; + + /** + * 标包预算 + */ + @ApiModelProperty(value = "标包预算") + @Length(max = 20,message = "标包预算最长为20位") + private BigDecimal bidSectContractPrice; + + /** + * 标包预算币种字典编号 + */ + @ApiModelProperty(value = "标包预算币种字典编号") + private String contractPriceCurrencyDict; + + /** + * 询价方式 + */ + @ApiModelProperty(value = "询价方式") + private String selectionMethod; + + /** + * 评审规则(合格制|数量有限制) + */ + @ApiModelProperty(value = "评审规则(合格制|数量有限制)") + private String reviewRules; + + /** + * 标段合同估算价单位字典编码 + */ + @ApiModelProperty(value = "标段合同估算价单位字典编码") + private String priceUnitDict; + + /** + * 投标人资格条件 + */ + @ApiModelProperty(value = "投标人资格条件") + @Length(max = 1000,message = "投标人资格条件最长为1000字符") + private String bidderQual; + + /** + * 报价类型 + */ + @ApiModelProperty(value = "报价类型") + private String quotationMethodDict; + + /** + * 谈判开启时间 + */ + @ApiModelProperty(value = "谈判开启时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(typeHandler = CustomLocalDateTimeTypeHandler.class) + private LocalDateTime tenderOpeningTime; + + + /** + * 资审入围方式(合格制 | 有限数量制) + */ + @ApiModelProperty(value = "资审入围方式(合格制 | 有限数量制)") + private String ptcpMode; + + /** + * 入围数量(废弃) + */ + @ApiModelProperty(value = "入围数量") + private Integer ptcpCount; + + /** + * 业务模块 + */ + @ApiModelProperty(value = "业务模块") + private Integer businessModule; + /** + * 业务状态 + */ + @ApiModelProperty(value = "业务状态") + private Integer status; + + /** + * 标书附件集id + */ + @ApiModelProperty(value = "标书附件集id") + private String attDatasetId; + + + /** + * 资格审查方法1.资格预审 2.资格后审 + */ + @ApiModelProperty(value = "资格审查方法1.资格预审 2.资格后审") + private String checkMethodDict; + + /** + * 选择流程 + */ + @ApiModelProperty(value = "选择流程") + private String chooseProcess; + + /** + * 评审报告附件集id + */ + @ApiModelProperty(value = "评审报告附件集id") + private String reviewReportId; + + /** + * 标段编号(采购系统方案编号) + */ + @ApiModelProperty(value = "标段编号") + private String sectionNumber; + + /** + * 评审方法(1:最低价法;2:综合评估法) + */ + @ApiModelProperty(value = "评审方法(1:最低价法;2:综合评估法)") + private String evalMethodDict; + + /** + * 采购类型,1-货物,2-工程,3-服务,4-其他 + */ + @ApiModelProperty(value = "采购类型,1-货物,2-工程,3-服务,4-其他") + private String procurementTypeDict; + + + /** + * 项目数据推送工信部返回的工信部包编号 + */ + @ApiModelProperty(value = "项目数据推送工信部返回的工信部包编号") + private String miitSectionId; + + + /** + * 货币单位(1-元 2-万元) + */ + @ApiModelProperty(value = "货币单位(1-元 2-万元)") + private String monetaryUnit; + + /** + * 备注说明,用于本标段各种情况的说明,累加制 + */ + @ApiModelProperty(value = "备注说明,用于本标段各种情况的说明,累加制") + private String remarks; + + /** + * 父标包序号,当重新招标或二次公告、变更采购方式时用于记录原先的包序号 + */ + @ApiModelProperty(value = "父标包序号,当重新招标或二次公告、变更采购方式时用于记录原先的包序号") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentSectionId; + + /** + * 标段项目方案ID + */ + @ApiModelProperty(value = "标段项目方案ID") + private String projectPlanId; + + /** + * 标段子项目ID + */ + @ApiModelProperty(value = "标段子项目ID") + private String subprojectId; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/entity/ProjectSectionFlow.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/entity/ProjectSectionFlow.java new file mode 100644 index 0000000..7677501 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/entity/ProjectSectionFlow.java @@ -0,0 +1,51 @@ +package com.chinaunicom.mall.ebtp.project.projectsection.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 实体类 ProjectSectionFlow + * + * @author daixc + * @date 2020/11/26 + */ +@Data +@Accessors(chain = true) +@ApiModel("项目标段模块流程记录") +@TableName(value = "biz_project_section_flow", autoResultMap = true) +public class ProjectSectionFlow extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @ApiModelProperty(value = "编号") + private Long id; + + /** + * 标段ID + */ + @ApiModelProperty(value = "标段ID") + private Long sectionId; + + /** + * 当前业务模块 + */ + @ApiModelProperty(value = "当前业务模块") + private Integer currentBusinessModule; + + /** + * 变更后的业务模块 + */ + @ApiModelProperty(value = "变更后的业务模块") + private Integer newBusinessModule; + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/entity/ProjectSectionVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/entity/ProjectSectionVO.java new file mode 100644 index 0000000..1a6e913 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/entity/ProjectSectionVO.java @@ -0,0 +1,76 @@ +package com.chinaunicom.mall.ebtp.project.projectsection.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * 项目标段信息VO实体类 BizProjectSection + * + * @author daixc + * @date 2020/10/25 + */ +@Data +@Accessors(chain = true) +@ApiModel("项目标段信息VO类") +@TableName(autoResultMap = true) +public class ProjectSectionVO extends ProjectSection implements Serializable { + + /** + * 分页数据 + */ + @ApiModelProperty(value = "分页对象信息") + private BasePageRequest basePageRequest; + + /** + * 是否被选中 0 是 1 否 + */ + @ApiModelProperty(value = "是否被选中 0 不选中 1 选中") + private Integer isExceptionCheck; + + /** + * 流程ID + */ + @ApiModelProperty(value = "流程ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long flowId; + + /** + * 招标方式字典编号 + */ + @ApiModelProperty(value = "招标方式字典编号") + private String bidMethodDict; + + /** + * 招标项目名称 + */ + @ApiModelProperty(value = "招标项目名称") + private String projectName; + + /** + * 查询ID集合 + */ + @ApiModelProperty(value = "查询ID集合") + private List sectionIds; + + /** + * 资格审查方式|招募方式(评审次数)|竞争性谈判(参与方式) + */ + @ApiModelProperty(value = "资格审查方式|招募方式(评审次数)|竞争性谈判(参与方式)") + private String examinationMethodDict; + + /** + * 候审流程ID + */ + @ApiModelProperty(value = "候审流程ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long qualFlowId; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/IProjectSectionFlowService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/IProjectSectionFlowService.java new file mode 100644 index 0000000..7334904 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/IProjectSectionFlowService.java @@ -0,0 +1,25 @@ +package com.chinaunicom.mall.ebtp.project.projectsection.service; + + +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSectionFlow; + +import java.util.List; + +/** + * 对数据表 biz_project_section_flow 操作的 service + * @author daixc + * @date 2020/11/26 + */ +public interface IProjectSectionFlowService extends IBaseService{ + + + /** + * 插入标段记录 + * @param sectionIds 标段ID集合 + * @param currentBusinessModule 标段ID集合 + * @param newBusinessModule 标段ID集合 + * @return 返回结果 + */ + boolean saveSectionList(List sectionIds, Integer currentBusinessModule, Integer newBusinessModule); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/IProjectSectionService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/IProjectSectionService.java new file mode 100644 index 0000000..0089018 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/IProjectSectionService.java @@ -0,0 +1,155 @@ +package com.chinaunicom.mall.ebtp.project.projectsection.service; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.feign.entity.SectionFlowVO; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSection; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSectionVO; + +import java.util.List; +import java.util.Map; + +/** + * 对数据表 biz_project_section 操作的 service + * @author Auto create + * + */ +public interface IProjectSectionService extends IBaseService{ + + + /** + * 根据项目ID删除信息 + * @param projectId 项目ID + * @return 返回结果 + */ + boolean deleteByProjectId(Long projectId); + + /** + * 获取供应商信息 + * @param projectSectionVO 供应商查询条件 + * @return 返回结果 + */ + List getList(ProjectSectionVO projectSectionVO); + + /** + * 标段分页 + * @param projectSectionVO 标段信息 + * @return 返回结果 + */ + IPage getPage(ProjectSectionVO projectSectionVO); + + /** + * 修改标段信息 + * @param projectSection 标段信息 + * @return 返回结果 + */ + boolean update(ProjectSectionVO projectSection); + + /** + * 获取集合信息 + * @param sectionIds 查询标段ID集合 + * @return + */ + List selectBatchIds(List sectionIds); + + /** + * 查询标段集合 + * @param projectId 项目ID + * @return 返回map<标段ID,流程ID> + */ + Map getFlowList(Long projectId); + + /** + * 标段修改业务模块 资审招标到资审投标 + * @param sectionIds 标段ID集合 + * @return 返回结果 + */ + boolean qualificationBidToTender(List sectionIds); + + /** + * 标段修改业务模块 资审投标到资审开标 + * @param sectionId 标段ID + * @return 返回结果 + */ + boolean qualificationTenderToOpening(Long sectionId); + + /** + * 标段修改业务模块 资审开标到资审评标 + * @param sectionId 标段ID + * @return 返回结果 + */ + boolean qualificationOpeningToEvaluation(Long sectionId); + + /** + * 标段修改业务模块 资审评标到资审定标 + * @param sectionId 标段ID + * @return 返回结果 + */ + boolean qualificationEvaluationToCalibration(Long sectionId); + + /** + * 标段修改业务模块 资审定标到招标 + * @param sectionId 标段ID + * @return 返回结果 + */ + boolean qualificationEvaluationToBid(Long sectionId); + + /** + * 标段修改业务模块 招标到投标 + * @param sectionIds 标段ID集合 + * @return 返回结果 + */ + boolean bidToTender(List sectionIds); + + /** + * 标段修改业务模块 投标到开标 + * @param sectionId 标段ID + * @return 返回结果 + */ + boolean tenderToOpening(Long sectionId); + + /** + * 标段修改业务模块 开标到评标 + * @param sectionId 标段ID + * @return 返回结果 + */ + boolean openingToEvaluation(Long sectionId); + + /** + * 标段修改业务模块 评标到定标 + * @param sectionId 标段ID + * @return 返回结果 + */ + boolean evaluationToCalibration(Long sectionId); + + /** + * 标段修改业务模块 定标到归档 + * @param sectionId 标段ID集合 + * @return 返回结果 + */ + boolean calibrationToArchive(Long sectionId); + + /** + * 获取集合信息 + * @param projectSection 查询标段集合条件 + * @return 返回结果 + */ + List selectAllBatchIds(ProjectSectionVO projectSection); + + /** + * 项目异常信息查询处理数据 + * @param projectId 项目ID + * @param exceptionId 项目异常信息ID + * @param type 查看类型 + * @return 返回结果 + */ + List selectEditSection(Long projectId, Long exceptionId, String type); + + /** + * 查询标段流程信息 + * @param planId 方案ID + * @return + */ + SectionFlowVO getProjectFlowByPlanId(Long planId); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/impl/ProjectSectionFlowServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/impl/ProjectSectionFlowServiceImpl.java new file mode 100644 index 0000000..be8055e --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/impl/ProjectSectionFlowServiceImpl.java @@ -0,0 +1,39 @@ +package com.chinaunicom.mall.ebtp.project.projectsection.service.impl; + + +import com.chinaunicom.mall.ebtp.common.util.PropertyUtils; +import com.chinaunicom.mall.ebtp.project.projectsection.dao.ProjectSectionFlowMapper; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSectionFlow; +import com.chinaunicom.mall.ebtp.project.projectsection.service.IProjectSectionFlowService; +import org.springframework.stereotype.Service; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; + +import java.util.ArrayList; +import java.util.List; + +/** + * 对数据表 _project_section_flow 操作的 serviceImpl + * @author daixc + * @date 2020/11/26 + */ +@Service +public class ProjectSectionFlowServiceImpl extends BaseServiceImpl implements IProjectSectionFlowService { + + + @Override + public boolean saveSectionList(List sectionIds,Integer currentBusinessModule,Integer newBusinessModule) { + + List saveList = new ArrayList<>(); + + for (Long sectionId :sectionIds){ + ProjectSectionFlow sectionFlow = new ProjectSectionFlow(); + sectionFlow.setId(PropertyUtils.getSnowflakeId()); + sectionFlow.setSectionId(sectionId); + sectionFlow.setCurrentBusinessModule(currentBusinessModule); + sectionFlow.setNewBusinessModule(newBusinessModule); + + saveList.add(sectionFlow); + } + return this.saveBatch(saveList); + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/impl/ProjectSectionServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/impl/ProjectSectionServiceImpl.java new file mode 100644 index 0000000..8d7106b --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectsection/service/impl/ProjectSectionServiceImpl.java @@ -0,0 +1,438 @@ +package com.chinaunicom.mall.ebtp.project.projectsection.service.impl; + + +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.common.base.entity.BasePageRequest; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; +import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum; +import com.chinaunicom.mall.ebtp.common.util.PropertyUtils; +import com.chinaunicom.mall.ebtp.project.common.ProjectCommonUtil; +import com.chinaunicom.mall.ebtp.project.common.ProjectExceptionEnum; +import com.chinaunicom.mall.ebtp.project.dictchooseprocess.entity.DictChooseProcess; +import com.chinaunicom.mall.ebtp.project.dictchooseprocess.service.IDictChooseProcessService; +import com.chinaunicom.mall.ebtp.project.feign.EbtpMallProcessApi; +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.SectionFlowVO; +import com.chinaunicom.mall.ebtp.project.feign.entity.WfProjectConfigTask; +import com.chinaunicom.mall.ebtp.project.projectrecord.entity.ProjectRecord; +import com.chinaunicom.mall.ebtp.project.projectrecord.service.IProjectRecordService; +import com.chinaunicom.mall.ebtp.project.projectsection.dao.ProjectSectionMapper; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSection; +import com.chinaunicom.mall.ebtp.project.projectsection.entity.ProjectSectionFlow; +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.IProjectSectionService; +import io.seata.core.context.RootContext; +import io.seata.spring.annotation.GlobalTransactional; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 对数据表 biz_project_section 操作的 serviceImpl + * @author daixc + * @date 2020/10/25 + * + */ +@Slf4j +@Service +public class ProjectSectionServiceImpl extends BaseServiceImpl implements IProjectSectionService { + + @Resource + private ProjectSectionMapper projectSectionMapper; + + @Resource + private IProjectSectionFlowService sectionFlowService; + + @Resource + private IProjectRecordService recordService; + + @Resource + private EbtpMallProcessApi ebtpMallProcessApi; + + @Resource + private IDictChooseProcessService chooseProcessService; + + /** + * 默认轮次 + */ + private static final int ROUNDS = 1; + + @Override + public boolean deleteByProjectId(Long projectId) { + return projectSectionMapper.deleteByProjectId(projectId) > 0; + } + + private QueryWrapper getQueryWrapper(ProjectSectionVO projectSectionVO) { + QueryWrapper query = new QueryWrapper(); + + //查询条件拼接 + if(null != projectSectionVO.getProjectId()){ + query.eq("project_id",projectSectionVO.getProjectId()); + } + + if(null != projectSectionVO.getStatus()){ + query.eq("status",projectSectionVO.getStatus()); + } + + if(StringUtils.isNotBlank(projectSectionVO.getProjectPlanId())){ + query.eq("project_plan_id",projectSectionVO.getProjectPlanId()); + } + + if(StringUtils.isNotBlank(projectSectionVO.getSubprojectId())){ + query.eq("subproject_id",projectSectionVO.getSubprojectId()); + } + return query; + } + + @Override + public List getList(ProjectSectionVO projectSectionVO) { + + QueryWrapper query = getQueryWrapper(projectSectionVO); + + List result = projectSectionMapper.selectList(query); + + return result; + } + + @Override + public IPage getPage(ProjectSectionVO projectSectionVO) { + + QueryWrapper query = getQueryWrapper(projectSectionVO); + + if(null == projectSectionVO.getBasePageRequest()){ + projectSectionVO.setBasePageRequest(new BasePageRequest()); + } + + //查询 + IPage result = new Page<>(projectSectionVO.getBasePageRequest().getPageNo(), projectSectionVO.getBasePageRequest().getPageSize()); + result = this.page(result, query); + return result; + } + + @Override + public boolean update(ProjectSectionVO projectSection) { + + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + + updateWrapper.eq("id",projectSection.getId()); + + if(ProjectCommonUtil.SECTION_STATUS_0 == projectSection.getStatus()){ + projectSection.setStatus(ProjectCommonUtil.SECTION_STATUS_1); + } + boolean result = this.update(projectSection,updateWrapper); + + CommonExceptionEnum.FRAME_EXCEPTION_COMMON_NOT_UPDATE.customValid(!result); + + return result; + } + + + @Override + public List selectBatchIds(List sectionIds) { + return projectSectionMapper.selectBatchIds(sectionIds); + } + + @Override + public Map getFlowList(Long projectId) { + List sectionVOList = this.getSectionFlowList(projectId); + + Map result = sectionVOList.stream().collect(Collectors.toMap(ProjectSectionVO::getId,ProjectSectionVO::getFlowId)); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean qualificationBidToTender(List sectionIds) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id",sectionIds); + updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_2); + updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_3); + + boolean result = this.update(updateWrapper); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE.customValid(!result); + + sectionFlowService.saveSectionList(sectionIds,ProjectCommonUtil.BUSINESS_MODULE_2,ProjectCommonUtil.BUSINESS_MODULE_3); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean qualificationTenderToOpening(Long sectionId) { + + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",sectionId); + updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_3); + updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_4); + + boolean result = this.update(updateWrapper); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE.customValid(!result); + + saveSectionFlow(sectionId,ProjectCommonUtil.BUSINESS_MODULE_3,ProjectCommonUtil.BUSINESS_MODULE_4); + + return result; + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean qualificationOpeningToEvaluation(Long sectionId) { + + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",sectionId); + updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_4); + updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_5); + + boolean result = this.update(updateWrapper); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE.customValid(!result); + + saveSectionFlow(sectionId,ProjectCommonUtil.BUSINESS_MODULE_4,ProjectCommonUtil.BUSINESS_MODULE_5); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean qualificationEvaluationToCalibration(Long sectionId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",sectionId); + updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_5); + updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_6); + + boolean result = this.update(updateWrapper); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE.customValid(!result); + + saveSectionFlow(sectionId,ProjectCommonUtil.BUSINESS_MODULE_5,ProjectCommonUtil.BUSINESS_MODULE_6); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean qualificationEvaluationToBid(Long sectionId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",sectionId); + updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_6); + updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_7); + + boolean result = this.update(updateWrapper); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE.customValid(!result); + + saveSectionFlow(sectionId,ProjectCommonUtil.BUSINESS_MODULE_6,ProjectCommonUtil.BUSINESS_MODULE_7); + + //初始化评审室信息 + //1 获取标段信息 + ProjectSection section = this.getById(sectionId); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_FLOW_INIT_NOT_FIND.customValid(null == section); + + //2获取流程信息 + DictChooseProcess chooseProcess = new DictChooseProcess(); + chooseProcess.setChooseProcess(section.getChooseProcess()); + chooseProcess = chooseProcessService.getList(chooseProcess).get(0); + + //3拼装参数调用通知 + Map sectionMaps = new LinkedHashMap<>(); + sectionMaps.put(section.getId(),chooseProcess.getQualFlowId()); + + boolean isReviewMethod = false; + recordService.initialize(section.getProjectId(), isReviewMethod, sectionMaps); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean bidToTender(List sectionIds) { + + log.info("xid:"+ RootContext.getXID()); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id",sectionIds); + updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_7); + updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_8); + + boolean result = this.update(updateWrapper); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE.customValid(!result); + + sectionFlowService.saveSectionList(sectionIds,ProjectCommonUtil.BUSINESS_MODULE_7,ProjectCommonUtil.BUSINESS_MODULE_8); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean tenderToOpening(Long sectionId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",sectionId); + updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_8); + updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_9); + + boolean result = this.update(updateWrapper); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE.customValid(!result); + + saveSectionFlow(sectionId,ProjectCommonUtil.BUSINESS_MODULE_8,ProjectCommonUtil.BUSINESS_MODULE_9); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean openingToEvaluation(Long sectionId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",sectionId); + updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_9); + updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_10); + + boolean result = this.update(updateWrapper); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE.customValid(!result); + + saveSectionFlow(sectionId,ProjectCommonUtil.BUSINESS_MODULE_9,ProjectCommonUtil.BUSINESS_MODULE_10); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean evaluationToCalibration(Long sectionId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",sectionId); + updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_10); + updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_11); + + boolean result = this.update(updateWrapper); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE.customValid(!result); + + saveSectionFlow(sectionId,ProjectCommonUtil.BUSINESS_MODULE_10,ProjectCommonUtil.BUSINESS_MODULE_11); + + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean calibrationToArchive(Long sectionId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",sectionId); + updateWrapper.eq("business_module", ProjectCommonUtil.BUSINESS_MODULE_11); + updateWrapper.set("business_module",ProjectCommonUtil.BUSINESS_MODULE_12); + + boolean result = this.update(updateWrapper); + + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_UPDATE_MODULE.customValid(!result); + + saveSectionFlow(sectionId,ProjectCommonUtil.BUSINESS_MODULE_11,ProjectCommonUtil.BUSINESS_MODULE_12); + + return result; + } + + @Override + public List selectAllBatchIds(ProjectSectionVO projectSection) { + return projectSectionMapper.selectAllBatchIds(projectSection); + } + + @Override + public List selectEditSection(Long projectId, Long exceptionId, String type) { + + List result = null; + + switch (type){ + case ProjectCommonUtil.SECTION_EXCEPTION_SAVE : result = selectEditSectionBySave(projectId);break; + case ProjectCommonUtil.SECTION_EXCEPTION_UPDATE : result = selectEditSectionByUpdate(projectId,exceptionId);break; + case ProjectCommonUtil.SECTION_EXCEPTION_SELECT : result = selectEditSectionBySelect(projectId,exceptionId);break; + default: break; + } + + return result; + } + + @Override + public SectionFlowVO getProjectFlowByPlanId(Long planId) { + ProjectSectionVO sectionVO = new ProjectSectionVO(); + sectionVO.setProjectPlanId(String.valueOf(planId)); + QueryWrapper query = getQueryWrapper(sectionVO); + ProjectSection section = this.list(query).get(0); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_SECTION_NOT_FIND.customValid(null == section); + + ProjectRecord projectRecord = recordService.getById(section.getProjectId()); + ProjectExceptionEnum.FRAME_EXCEPTION_PROJECT_RECORD_NOT_FIND.customValid(null == projectRecord); + DictProjectConfig projectConfig = new DictProjectConfig(); + projectConfig.setModeCode(projectRecord.getBidMethodDict()); + projectConfig.setMethodCode(projectRecord.getExaminationMethodDict()); + projectConfig.setSignCode(projectRecord.getBiddingSignDict()); + + List funcVOList = ebtpMallProcessApi.getManagerList(projectConfig).getData(); + + BizAssessRoom assessRoom = new BizAssessRoom(); + assessRoom.setSectionId(section.getId()); + assessRoom.setReviewMark(ProjectCommonUtil.REVIEW_MARK_0); + List bizAssessRoomList = ebtpMallProcessApi.listAll(assessRoom).getData(); + int rounds = ROUNDS; + if(null != bizAssessRoomList && bizAssessRoomList.size() > 0){ + rounds = bizAssessRoomList.stream().collect(Collectors.groupingBy(BizAssessRoom::getRoomSort)).size(); + } + + SectionFlowVO result = new SectionFlowVO(); + result.setFlowList(funcVOList); + result.setBusinessModule(section.getBusinessModule()); + result.setRounds(rounds); + return result; + } + + /** + * 拼装标段模块修改流程实体并插入数据 + * @param sectionId 标段ID + * @param currentBusinessModule 当前业务模块 + * @param newBusinessModule 变更后的业务模块 + */ + private void saveSectionFlow(Long sectionId,Integer currentBusinessModule,Integer newBusinessModule) { + ProjectSectionFlow sectionFlow = new ProjectSectionFlow(); + sectionFlow.setId(PropertyUtils.getSnowflakeId()); + sectionFlow.setSectionId(sectionId); + sectionFlow.setCurrentBusinessModule(currentBusinessModule); + sectionFlow.setNewBusinessModule(newBusinessModule); + + sectionFlowService.save(sectionFlow); + } + + private List getSectionFlowList(Long projectId){ + + return projectSectionMapper.getSectionFlowList(projectId); + } + + + private List selectEditSectionBySave(Long projectId){ + //项目异常新增时查看 + return projectSectionMapper.selectEditSectionBySave(projectId); + } + + private List selectEditSectionByUpdate(Long projectId,Long exceptionId){ + //项目异常修改时查看 + return projectSectionMapper.selectEditSectionByUpdate(projectId,exceptionId); + } + + private List selectEditSectionBySelect(Long projectId,Long exceptionId){ + //项目异常查看 + return projectSectionMapper.selectEditSectionBySelect(projectId,exceptionId); + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/controller/ProjectUpdateFieldController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/controller/ProjectUpdateFieldController.java new file mode 100644 index 0000000..b2b8c3d --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/controller/ProjectUpdateFieldController.java @@ -0,0 +1,75 @@ +package com.chinaunicom.mall.ebtp.project.projectupdatefield.controller; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.projectupdatefield.entity.ProjectUpdateField; +import com.chinaunicom.mall.ebtp.project.projectupdatefield.service.IProjectUpdateFieldService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 项目建档修改字段记录controller + * @author daixc + * @date 2020/11/03 + */ +@RestController +@Api(tags = "项目建档修改字段记录") +@RequestMapping("/v1/projectUpdateField") +public class ProjectUpdateFieldController{ + + @Resource + private IProjectUpdateFieldService projectUpdateFieldService; + + /** + * 插入新数据 + * + * @param projectUpdateField 修改字段记录信息 + * + * @return 返回结果 + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid ProjectUpdateField projectUpdateField){ + + boolean save = projectUpdateFieldService.save(projectUpdateField); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param projectUpdateField 修改字段记录信息 + * + * @return 返回结果 + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "对象数据", required = true) @RequestBody ProjectUpdateField projectUpdateField){ + + + return BaseResponse.success(projectUpdateFieldService.updateById(projectUpdateField)); + } + + /** + * 查询数据 + * + * @param id 项目ID + * + * @return 返回结果 + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable String id){ + + ProjectUpdateField projectUpdateField = projectUpdateFieldService.getById(id); + + return BaseResponse.success(projectUpdateField); + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/dao/ProjectUpdateFieldMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/dao/ProjectUpdateFieldMapper.java new file mode 100644 index 0000000..c52f7f7 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/dao/ProjectUpdateFieldMapper.java @@ -0,0 +1,10 @@ +package com.chinaunicom.mall.ebtp.project.projectupdatefield.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.projectupdatefield.entity.ProjectUpdateField; + +public interface ProjectUpdateFieldMapper extends IBaseMapper { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/dao/mapper/ProjectUpdateFieldMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/dao/mapper/ProjectUpdateFieldMapper.xml new file mode 100644 index 0000000..03347c6 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/dao/mapper/ProjectUpdateFieldMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + update biz_project_update_field + set + delete_flag="deleted" + where ID=#{id} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/entity/ProjectUpdateField.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/entity/ProjectUpdateField.java new file mode 100644 index 0000000..ed7e629 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/entity/ProjectUpdateField.java @@ -0,0 +1,71 @@ +package com.chinaunicom.mall.ebtp.project.projectupdatefield.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 项目建档修改字段记录实体类 BizProjectUpdateField + * + * @author daixc + * @date 2020/11/03 + */ +@Data +@Accessors(chain = true) +@ApiModel("项目建档修改字段记录") +@TableName(value = "biz_project_update_field", autoResultMap = true) +public class ProjectUpdateField extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + public ProjectUpdateField(){ + + } + + public ProjectUpdateField(long projectId,String fieldName,String fieldValue,long batchNumber){ + this.projectId = projectId; + this.fieldName = fieldName; + this.fieldValue = fieldValue; + this.batchNumber = batchNumber; + } + + /** + * 编号 + */ + @ApiModelProperty(value = "编号") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 项目编号 + */ + @ApiModelProperty(value = "项目编号") + @JsonSerialize(using = ToStringSerializer.class) + private Long projectId; + + /** + * 字段名称 + */ + @ApiModelProperty(value = "字段名称") + private String fieldName; + + /** + * 字段值 + */ + @ApiModelProperty(value = "字段值") + private String fieldValue; + + /** + * 批次号 + */ + @ApiModelProperty(value = "批次号") + private Long batchNumber; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/service/IProjectUpdateFieldService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/service/IProjectUpdateFieldService.java new file mode 100644 index 0000000..2ec34fe --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/service/IProjectUpdateFieldService.java @@ -0,0 +1,17 @@ +package com.chinaunicom.mall.ebtp.project.projectupdatefield.service; + + +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.projectupdatefield.entity.ProjectUpdateField; + +/** + * 对数据表 biz_project_update_field 操作的 service + * @author daixc + * @date 2020/11/03 + * + */ +public interface IProjectUpdateFieldService extends IBaseService{ + + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/service/impl/ProjectUpdateFieldServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/service/impl/ProjectUpdateFieldServiceImpl.java new file mode 100644 index 0000000..7032e3d --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/projectupdatefield/service/impl/ProjectUpdateFieldServiceImpl.java @@ -0,0 +1,19 @@ +package com.chinaunicom.mall.ebtp.project.projectupdatefield.service.impl; + + +import com.chinaunicom.mall.ebtp.project.projectupdatefield.dao.ProjectUpdateFieldMapper; +import com.chinaunicom.mall.ebtp.project.projectupdatefield.entity.ProjectUpdateField; +import com.chinaunicom.mall.ebtp.project.projectupdatefield.service.IProjectUpdateFieldService; +import org.springframework.stereotype.Service; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; +/** + * 对数据表 biz_project_update_field 操作的 serviceImpl + * @author daixc + * @date 2020/11/03 + * + */ +@Service +public class ProjectUpdateFieldServiceImpl extends BaseServiceImpl implements IProjectUpdateFieldService { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/controller/SectionMaterialController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/controller/SectionMaterialController.java new file mode 100644 index 0000000..ac9d5e2 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/controller/SectionMaterialController.java @@ -0,0 +1,81 @@ +package com.chinaunicom.mall.ebtp.project.sectionmaterial.controller; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.entity.SectionMaterial; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.entity.SectionMaterialVO; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.service.ISectionMaterialService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 项目物资信息controller + * 采购推送物资信息数据处理 + * + * @author daixc + * @date 2020/10/25 + * @version 1.0 + */ +@RestController +@Api(tags = "项目物资信息") +@RequestMapping("/v1/sectionMaterial") +public class SectionMaterialController{ + + @Resource + private ISectionMaterialService sectionMaterialService; + + /** + * 插入新数据 + * + * @param sectionMaterial 物资信息 + * + * @return 返回结果 + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid SectionMaterialVO sectionMaterial){ + + boolean save = sectionMaterialService.save(sectionMaterial); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param sectionMaterial 物资信息 + * + * @return 返回结果 + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "对象数据", required = true) @RequestBody SectionMaterialVO sectionMaterial){ + + int i = sectionMaterialService.update(sectionMaterial); + + return BaseResponse.success(i==1); + } + + /** + * 查询数据 + * + * @param id 物资ID + * + * @return 返回结果 + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable String id){ + + SectionMaterial sectionMaterial = sectionMaterialService.getById(id); + + return BaseResponse.success(sectionMaterial); + } + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/dao/SectionMaterialMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/dao/SectionMaterialMapper.java new file mode 100644 index 0000000..d504a33 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/dao/SectionMaterialMapper.java @@ -0,0 +1,22 @@ +package com.chinaunicom.mall.ebtp.project.sectionmaterial.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.entity.SectionMaterial; +import org.apache.ibatis.annotations.Param; + +/** + * 对数据表 biz_section_Materia 操作的 dao 实现 + * @author daixc + * @date 2020/10/23 + * + */ +public interface SectionMaterialMapper extends IBaseMapper { + + /** + * 删除供应商信息 + * @param projectId 项目ID + * @return 返回结果 + */ + int deleteByProjectId(@Param(value = "projectId") Long projectId); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/dao/mapper/SectionMaterialMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/dao/mapper/SectionMaterialMapper.xml new file mode 100644 index 0000000..3aacbd6 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/dao/mapper/SectionMaterialMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update biz_section_material + set + delete_flag="deleted" + where ID=#{id} + + + + + delete from biz_section_material where project_id = #{projectId} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/entity/SectionMaterial.java b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/entity/SectionMaterial.java new file mode 100644 index 0000000..788a9c4 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/entity/SectionMaterial.java @@ -0,0 +1,121 @@ +package com.chinaunicom.mall.ebtp.project.sectionmaterial.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 项目物资信息实体类 SectionMaterial + * + * @author dadixc + * @date 2020/10/25 + */ +@Data +@Accessors(chain = true) +@ApiModel("项目物资信息") +@TableName(value = "biz_section_material", autoResultMap = true) +public class SectionMaterial extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ApiModelProperty(value = "id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long projectId; + + /** + * 分包标段id + */ + @ApiModelProperty(value = "分包标段id") + @JsonSerialize(using = ToStringSerializer.class) + private Long sectionId; + + /** + * 需求单名称 + */ + @ApiModelProperty(value = "需求单名称") + private String demandName; + + /** + * 需求单ID + */ + @ApiModelProperty(value = "需求单ID") + private String demandId; + + /** + * 需求单编号 + */ + @ApiModelProperty(value = "需求单编号") + private String demandNo; + + /** + * 物资说明 + */ + @ApiModelProperty(value = "物资说明") + private String materialExplain; + + /** + * 物资类别名称 + */ + @ApiModelProperty(value = "物资类别名称") + private String materialTypeName; + + /** + * 物资品牌 + */ + @ApiModelProperty(value = "物资品牌") + private String materialBrand; + + /** + * 本次采购数量 + */ + @ApiModelProperty(value = "本次采购数量") + private BigDecimal procurementCount; + + /** + * 物资单位 + */ + @ApiModelProperty(value = "物资单位") + private String materialUnit; + + /** + * 商品属性 + */ + @ApiModelProperty(value = "商品属性") + private String commodityAttributes; + + /** + * 配置单(附件) + */ + @ApiModelProperty(value = "配置单(附件)") + private String fileUploadId; + + /** + * 权重系数 + */ + @ApiModelProperty(value = "权重系数") + private BigDecimal weight; + + /** + * 基准价 + */ + @ApiModelProperty(value = "基准价") + private BigDecimal basePrice; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/entity/SectionMaterialVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/entity/SectionMaterialVO.java new file mode 100644 index 0000000..0f18150 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/entity/SectionMaterialVO.java @@ -0,0 +1,21 @@ +package com.chinaunicom.mall.ebtp.project.sectionmaterial.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 项目物资信息VO类 SectionMaterial + * + * @author dadixc + * @date 2020/10/25 + */ +@Data +@Accessors(chain = true) +@ApiModel("项目物资信息VO类") +@TableName(autoResultMap = true) +public class SectionMaterialVO extends SectionMaterial implements Serializable { +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/service/ISectionMaterialService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/service/ISectionMaterialService.java new file mode 100644 index 0000000..a68e85d --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/service/ISectionMaterialService.java @@ -0,0 +1,40 @@ +package com.chinaunicom.mall.ebtp.project.sectionmaterial.service; + + +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.entity.SectionMaterial; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.entity.SectionMaterialVO; + +import java.util.List; + +/** + * 对数据表 biz_section_material 操作的 service + * @author daixc + * @Date 2020/10/25 + * + */ +public interface ISectionMaterialService extends IBaseService{ + + + /** + * 修改信息 + * @param sectionMaterial 物资信息 + * @return 返回结果 + */ + int update(SectionMaterial sectionMaterial); + + /** + * 根据项目ID删除信息 + * @param projectId 项目ID + * @return 返回结果 + */ + boolean deleteByProjectId(Long projectId); + + /** + * 获取供应商信息 + * @param sectionMaterialVO 供应商查询条件 + * @return 返回结果 + */ + List getList(SectionMaterialVO sectionMaterialVO); + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/service/impl/SectionMaterialServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/service/impl/SectionMaterialServiceImpl.java new file mode 100644 index 0000000..15d84ff --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionmaterial/service/impl/SectionMaterialServiceImpl.java @@ -0,0 +1,58 @@ +package com.chinaunicom.mall.ebtp.project.sectionmaterial.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.dao.SectionMaterialMapper; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.entity.SectionMaterial; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.entity.SectionMaterialVO; +import com.chinaunicom.mall.ebtp.project.sectionmaterial.service.ISectionMaterialService; +import org.springframework.stereotype.Service; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 对数据表 biz_section_material 操作的 serviceImpl + * @author daixc + * @date 2020/10/25 + */ +@Service +public class SectionMaterialServiceImpl extends BaseServiceImpl implements ISectionMaterialService { + + @Resource + private SectionMaterialMapper sectionMaterialMapper; + + @Override + public int update(SectionMaterial sectionMaterial) { + return sectionMaterialMapper.updateById(sectionMaterial); + } + + @Override + public boolean deleteByProjectId(Long projectId) { + return sectionMaterialMapper.deleteByProjectId(projectId) > 0; + } + + @Override + public List getList(SectionMaterialVO sectionMaterialVO) { + QueryWrapper query = new QueryWrapper(); + + //查询条件拼接 + if(null != sectionMaterialVO.getSectionId()){ + query.eq("section_id",sectionMaterialVO.getSectionId()); + } + + if(null != sectionMaterialVO.getProjectId()){ + query.eq("project_id",sectionMaterialVO.getProjectId()); + } + + if(null != sectionMaterialVO.getSectionId()){ + query.eq("section_id",sectionMaterialVO.getSectionId()); + } + + List result = sectionMaterialMapper.selectList(query); + + return result; + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/controller/SectionSupplierController.java b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/controller/SectionSupplierController.java new file mode 100644 index 0000000..b16ab6c --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/controller/SectionSupplierController.java @@ -0,0 +1,96 @@ +package com.chinaunicom.mall.ebtp.project.sectionsupplier.controller; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplier; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplierVO; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.service.ISectionSupplierService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +/** + * 供应商记录 controller + * + * @author daixc + * @date 2020/10/23 + */ +@RestController +@Api(tags = "供应商记录信息") +@RequestMapping("/v1/sectionSupplier") +public class SectionSupplierController{ + + @Resource + private ISectionSupplierService sectionSupplierService; + + /** + * 插入新数据 + * + * @param sectionSupplierVO 供应商信息实体 + * + * @return 返回结果 + */ + @ApiOperation("插入新数据") + @PostMapping("") + public BaseResponse insert(@ApiParam(value = "供应商对象数据", required = true) @RequestBody @Valid SectionSupplierVO sectionSupplierVO){ + + boolean save = sectionSupplierService.save(sectionSupplierVO); + + return BaseResponse.success(save); + } + + /** + * 修改数据 + * + * @param sectionSupplierVO 供应商信息实体 + * + * @return 返回结果 + */ + @ApiOperation("修改数据") + @PutMapping("") + public BaseResponse update(@ApiParam(value = "供应商对象数据", required = true) @RequestBody SectionSupplierVO sectionSupplierVO){ + + int i = sectionSupplierService.update(sectionSupplierVO); + + return BaseResponse.success(i==1); + } + + /** + * 查询数据 + * + * @param id 供应商ID + * + * @return 返回结果 + */ + @ApiOperation("查询数据") + @GetMapping("/{id}") + public BaseResponse get(@ApiParam(value = "主键id", required = true) @PathVariable Long id){ + + SectionSupplier sectionSupplierVO = sectionSupplierService.getById(id); + + return BaseResponse.success(sectionSupplierVO); + } + + + /** + * 查询标段供应商数据 + * + * @param sectionId 标段ID + * + * @return 返回结果 + */ + @ApiOperation("查询数据") + @GetMapping("getList/{sectionId}") + public BaseResponse getListBySectionId(@ApiParam(value = "标段ID", required = true) @PathVariable Long sectionId){ + + SectionSupplierVO sectionSupplierVO = new SectionSupplierVO(); + sectionSupplierVO.setSectionId(sectionId); + return BaseResponse.success(sectionSupplierService.getList(sectionSupplierVO)); + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/dao/SectionSupplierMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/dao/SectionSupplierMapper.java new file mode 100644 index 0000000..4c01b3a --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/dao/SectionSupplierMapper.java @@ -0,0 +1,22 @@ +package com.chinaunicom.mall.ebtp.project.sectionsupplier.dao; + + +import com.chinaunicom.mall.ebtp.common.base.dao.IBaseMapper; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplier; +import org.apache.ibatis.annotations.Param; + +/** + * 对数据表 biz_section_supplier 操作的 dao 实现 + * @author daixc + * @date 2020/10/23 + * + */ +public interface SectionSupplierMapper extends IBaseMapper { + + /** + * 删除供应商信息 + * @param projectId 项目ID + * @return 返回结果 + */ + int deleteByProjectId(@Param(value = "projectId") Long projectId); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/dao/mapper/SectionSupplierMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/dao/mapper/SectionSupplierMapper.xml new file mode 100644 index 0000000..c8aebc9 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/dao/mapper/SectionSupplierMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + update biz_section_supplier + set + delete_flag="deleted" + where ID=#{id} + + + + + delete from biz_section_supplier where project_id = #{projectId} + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/entity/SectionSupplier.java b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/entity/SectionSupplier.java new file mode 100644 index 0000000..12ac867 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/entity/SectionSupplier.java @@ -0,0 +1,72 @@ +package com.chinaunicom.mall.ebtp.project.sectionsupplier.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 供应商记录实体类 SectionSupplier + * + * @author daixc + * @date 2020/10/23 + */ +@Data +@Accessors(chain = true) +@ApiModel +@TableName(value = "biz_section_supplier", autoResultMap = true) +public class SectionSupplier extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ApiModelProperty(value = "id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 项目ID + */ + @ApiModelProperty(value = "项目ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long projectId; + + /** + * 分包标段id + */ + @ApiModelProperty(value = "分包标段id") + @JsonSerialize(using = ToStringSerializer.class) + private Long sectionId; + + /** + * 供应商ID + */ + @ApiModelProperty(value = "供应商ID") + private String supplierId; + + /** + * 供应商类型 0邀请 1 拒绝 + */ + @ApiModelProperty(value = "供应商类型 0邀请 1 拒绝") + private String supplierType; + + /** + * 供应商名称 + */ + @ApiModelProperty(value = "供应商名称") + private String supplierName; + + @ApiModelProperty(value = "供应商联系人id") + private Long suppLinkManId; + + @ApiModelProperty(value = "供应商联系人姓名") + private String suppLinkManName; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/entity/SectionSupplierVO.java b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/entity/SectionSupplierVO.java new file mode 100644 index 0000000..601f85a --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/entity/SectionSupplierVO.java @@ -0,0 +1,23 @@ +package com.chinaunicom.mall.ebtp.project.sectionsupplier.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 供应商记录VO + * + * @author daixc + * @date 2020/10/23 + */ +@Data +@Accessors(chain = true) +@ApiModel("供应商记录VO类") +@TableName(autoResultMap = true) +public class SectionSupplierVO extends SectionSupplier implements Serializable { + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/service/ISectionSupplierService.java b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/service/ISectionSupplierService.java new file mode 100644 index 0000000..f70b606 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/service/ISectionSupplierService.java @@ -0,0 +1,41 @@ +package com.chinaunicom.mall.ebtp.project.sectionsupplier.service; + + +import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplier; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplierVO; + +import java.util.List; + +/** + * 对数据表 biz_section_supplier 操作的 service + * @author daixc + * @date 2020/10/23 + * + */ +public interface ISectionSupplierService extends IBaseService{ + + /** + * 修改信息 + * @param sectionSupplierVO 供应商信息 + * @return 返回结果 + */ + + int update(SectionSupplierVO sectionSupplierVO); + + /** + * 根据项目ID删除信息 + * @param projectId 项目ID + * @return 返回结果 + */ + boolean deleteByProjectId(Long projectId); + + + /** + * 获取供应商信息 + * @param sectionSupplierVO 供应商查询条件 + * @return 返回结果 + */ + List getList(SectionSupplierVO sectionSupplierVO); + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/service/impl/SectionSupplierServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/service/impl/SectionSupplierServiceImpl.java new file mode 100644 index 0000000..6f458f1 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/project/sectionsupplier/service/impl/SectionSupplierServiceImpl.java @@ -0,0 +1,62 @@ +package com.chinaunicom.mall.ebtp.project.sectionsupplier.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; +import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.dao.SectionSupplierMapper; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplier; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.entity.SectionSupplierVO; +import com.chinaunicom.mall.ebtp.project.sectionsupplier.service.ISectionSupplierService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 对数据表 biz_section_supplier 操作的 service 实现 + * @author daixc + * @date 2020/10/23 + * + */ +@Service +public class SectionSupplierServiceImpl extends BaseServiceImpl implements ISectionSupplierService { + + @Resource + private SectionSupplierMapper sectionSupplierMapper; + + @Override + public int update(SectionSupplierVO sectionSupplierVO) { + return sectionSupplierMapper.updateById(sectionSupplierVO); + } + + + @Override + public boolean deleteByProjectId(Long projectId) { + return sectionSupplierMapper.deleteByProjectId(projectId) > 1; + } + + @Override + public List getList(SectionSupplierVO sectionSupplierVO) { + + QueryWrapper query = new QueryWrapper(); + + //查询条件拼接 + if(null != sectionSupplierVO.getSectionId()){ + query.eq("supplier_id",sectionSupplierVO.getSectionId()); + } + + if(null != sectionSupplierVO.getProjectId()){ + query.eq("project_id",sectionSupplierVO.getProjectId()); + } + + if(null != sectionSupplierVO.getSectionId()){ + query.eq("section_id",sectionSupplierVO.getSectionId()); + } + + List result = sectionSupplierMapper.selectList(query); + + return result; + } + +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml new file mode 100644 index 0000000..6dec79a --- /dev/null +++ b/src/main/resources/application-dev.yml @@ -0,0 +1,207 @@ +server: + port: 18012 + servlet: + context-path: / + +# 对应 apollo 配置中心的应用名 +app: + id: biz-service-ebtp-project + +# --------------seata ------------ +seata: + enabled: true + application-id: ${spring.application.name} + tx-service-group: ${spring.application.name}-group + enable-auto-data-source-proxy: true + use-jdk-proxy: false + service: + vgroup-mapping: + default: default + enable-degrade: false + disable-global-transaction: false + registry: + type: eureka + eureka: + weight: 1 + service-url: http://10.242.31.158:5001/eureka,http://10.242.31.158:5002/eureka,http://10.242.31.158:5003/eureka + +# Apollo 配置信息 +apollo: + meta: http://10.242.31.158:6001/ + bootstrap: + namespace: application + enabled: true + eagerLoad: + enabled: true + +spring: + aop: + auto: true #开启spring的aop配置 + proxy-target-class: true + + application: + name: biz-service-ebtp-project + + shardingsphere: + datasource: + names: ds0 + ds0: + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + username: root + password: root + jdbc-url: jdbc:mysql://10.242.31.158:3033/ebtp_mall_project?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + url: jdbc:mysql://10.242.31.158:3033/ebtp_mall_project?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + filters: stat,wall,log4j + maxActive: 20 + initialSize: 1 + maxWait: 60000 + minIdle: 1 + timeBetweenEvictionRunsMillis: 60000 + minEvictableIdleTimeMillis: 300000 + validationQuery: select 'x' + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + poolPreparedStatements: true + maxOpenPreparedStatements: 20 + connection-properties: druid.stat.merggSql=ture;druid.stat.slowSqlMillis=5000 + props: + sql: + show: true + + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + serialization: + write-dates-as-timestamps: false + + # 天宫Kafka增加了安全认证,需要配置安全属性 + kafka: + bootstrap-servers: 10.125.164.192:32005,10.125.164.193:32005,10.125.164.194:32005 + template: + default-topic: jl_test + + # 生产者配置参数 + producer: + client-id: core-service-ebtp-crypt + properties: + security.protocol: SASL_PLAINTEXT + sasl.mechanism: SCRAM-SHA-256 + sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="jltest" password="Unicom#123"; + + # 消费者配置参数 + consumer: + group-id: core-service-ebtp-crypt-consumer + auto-offset-reset: latest + properties: + security.protocol: SASL_PLAINTEXT + sasl.mechanism: SCRAM-SHA-256 + sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="jltest" password="Unicom#123"; + + # 天宫 redis 需要使用哨兵进行访问 + redis: + sentinel: + master: eshop-redis + nodes: 10.125.164.124:32718, 10.125.164.118:32716, 10.125.164.121:32716 + password: Unicom#135 + + lettuce: + # jedis: + pool: + maxTotal: 50 + minIdle: 1 + maxWaitMillis: 5000 + maxIdle: 5 + testOnBorrow: true + testOnReturn: true + testWhileIdle: true + token: + database: 0 + host: 125.32.114.204 + port: 16379 + password: redis@CC1234 + timeout: 6000 + uuid: + database: 1 + host: 125.32.114.204 + port: 16379 + password: redis@CC1234 + timeout: 6000 + cache: + database: 2 + host: 125.32.114.204 + port: 16379 + password: redis@CC1234 + timeout: 6000 + +# 天宫Eureka配置 +eureka: + instance: + # eureka 注册路径地址 + prefer-ip-address: true + hostname: 125.32.114.204 + ip-address: ${eureka.instance.hostname} + instance-id: ${eureka.instance.hostname}:${server.port} + client: + serviceUrl: + defaultZone: http://10.242.31.158:5001/eureka,http://10.242.31.158:5002/eureka,http://10.242.31.158:5003/eureka + +mybatis-plus: + configuration: + # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射 + map-underscore-to-camel-case: true + auto-mapping-behavior: full + # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + mapper-locations: classpath*:com/chinaunicom/mall/ebtp/**/mapper/*Mapper.xml + global-config: + # 逻辑删除配置 + db-config: + # logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2) @TableLogic + logic-not-delete-value: normal # 逻辑删除标记:正常数据 + logic-delete-value: deleted # 逻辑删除标记:已删除的数据 + type-aliases-package: com.chinaunicom.mall.ebtp.project + +# --------------feign ------------ +feign: + httpclient: + enabled: false + okhttp: + enabled: true + client: + config: + default: + connect-timeout: 20000 + read-timeout: 20000 + +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + strategy: SEMAPHORE + thread: + timeoutInMilliseconds: 200000 #熔断超时时间 + circuitBreaker: + sleepWindowInMilliseconds: 20000 + forceClosed: true +ribbon: + ReadTimeout: 20000 #请求处理的超时时间 + ConnectTimeout: 20000 #请求连接超时时间 + MaxAutoRetries: 0 #对当前实例的重试次数 + MaxAutoRetriesNextServer: 1 #切换实例的重试次数 1 + +mconfig: + swagger-ui-open: true + exception-handle-enabled: true + seata-open-enabled: false + work-id: 1 #终端ID + datacenter-id: 1 #数据中心ID + host-name: http://${eureka.instance.hostname} + service-name-purp: mall-purp #采购系统委托项目微服务 + service-name-wfap: wfap #重新评审 流程微服务 + wfSectionNo: '001' + wfSectionName: 采购方案审批 diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml new file mode 100644 index 0000000..8cc5d74 --- /dev/null +++ b/src/main/resources/application-test.yml @@ -0,0 +1,220 @@ +server: + port: 18012 + servlet: + context-path: / +seata: + enabled: true + application-id: biz-service-ebtp-project + tx-service-group: biz-service-ebtp-project-group + enable-auto-data-source-proxy: true + use-jdk-proxy: false + service: + vgroup-mapping: + default: default + enable-degrade: false + disable-global-transaction: false + registry: + type: eureka + eureka: + weight: 1 + service-url: http://${eureka.instance.hostname}:8761/eureka/ +spring: + aop: + auto: true #开启spring的aop配置 + proxy-target-class: true + application: + name: biz-service-ebtp-project + + shardingsphere: + datasource: +# names: ds0,ds1 #主从库名称 开启主从时必须打开 + names: ds0 + ds0: + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + username: mall3-ebtp-dev + password: mall3-ebtp-dev + jdbc-url: jdbc:mysql://125.32.114.204:13306/ebtp_mall_project?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + url: jdbc:mysql://125.32.114.204:13306/ebtp_mall_project?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + filters: stat,wall,log4j + maxActive: 20 + initialSize: 1 + maxWait: 60000 + minIdle: 1 + timeBetweenEvictionRunsMillis: 60000 + minEvictableIdleTimeMillis: 300000 + validationQuery: select 'x' + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + poolPreparedStatements: true + maxOpenPreparedStatements: 20 + connection-properties: druid.stat.merggSql=ture;druid.stat.slowSqlMillis=5000 +# ds1: +# type: com.alibaba.druid.pool.DruidDataSource +# driver-class-name: com.mysql.jdbc.Driver +# username: root +# password: root +# jdbc-url: jdbc:mysql://localhost:3306/seata_order_1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC +# url: jdbc:mysql://localhost:3306/seata_order_1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC +# filters: stat,wall,log4j +# maxActive: 20 +# initialSize: 1 +# maxWait: 60000 +# minIdle: 1 +# timeBetweenEvictionRunsMillis: 60000 +# minEvictableIdleTimeMillis: 300000 +# validationQuery: select 'x' +# testWhileIdle: true +# testOnBorrow: false +# testOnReturn: false +# poolPreparedStatements: true +# maxOpenPreparedStatements: 20 +# connection-properties: druid.stat.merggSql=ture;druid.stat.slowSqlMillis=5000 +# masterslave: #读写分离设置 +# load-balance-algorithm-type: round_robin #轮询策略 +# master-data-source-name: ds0 #主库名称 +# slave-data-source-names: ds1 #从库名称 +# name: shardingDataSource #数据源名称 + props: + sql: + show: true + + + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + serialization: + write-dates-as-timestamps: false + kafka: + bootstrap-servers: 127.0.0.1:9092 + producer: + # 写入失败时,重试次数。当leader节点失效,一个repli节点会替代成为leader节点,此时可能出现写入失败, + # 当retris为0时,produce不会重复。retirs重发,此时repli节点完全成为leader节点,不会产生消息丢失。 + retries: 0 + # 每次批量发送消息的数量,produce积累到一定数据,一次发送 + batch-size: 2 + # produce积累数据一次发送,缓存大小达到buffer.memory就发送数据 + buffer-memory: 33554432 + #procedure要求leader在考虑完成请求之前收到的确认数,用于控制发送记录在服务端的持久化,其值可以为如下: + #acks = 0 如果设置为零,则生产者将不会等待来自服务器的任何确认,该记录将立即添加到套接字缓冲区并视为已发送。在这种情况下,无法保证服务器已收到记录,并且重试配置将不会生效(因为客户端通常不会知道任何故障),为每条记录返回的偏移量始终设置为-1。 + #acks = 1 这意味着leader会将记录写入其本地日志,但无需等待所有副本服务器的完全确认即可做出回应,在这种情况下,如果leader在确认记录后立即失败,但在将数据复制到所有的副本服务器之前,则记录将会丢失。 + #acks = all 这意味着leader将等待完整的同步副本集以确认记录,这保证了只要至少一个同步副本服务器仍然存活,记录就不会丢失,这是最强有力的保证,这相当于acks = -1的设置。 + #可以设置的值为:all, -1, 0, 1 + acks: 1 + key-serializer: org.apache.kafka.common.serialization.StringSerializer + value-serializer: org.apache.kafka.common.serialization.StringSerializer + consumer: + group-id: user-group + auto-offset-reset: earliest + enable-auto-commit: true + auto-commit-interval: 100 + key-deserializer: org.apache.kafka.common.serialization.StringDeserializer + value-deserializer: org.apache.kafka.common.serialization.StringDeserializer + #=========redis基础配置========= + redis: + lettuce: +# jedis: + pool: + maxTotal: 50 + minIdle: 1 + maxWaitMillis: 5000 + maxIdle: 5 + testOnBorrow: true + testOnReturn: true + testWhileIdle: true + token: + database: 0 + host: 125.32.114.204 + port: 16379 + password: redis@CC1234 + timeout: 6000 + uuid: + database: 1 + host: 125.32.114.204 + port: 16379 + password: redis@CC1234 + timeout: 6000 + cache: + database: 2 + host: 125.32.114.204 + port: 16379 + password: redis@CC1234 + timeout: 6000 + +#=========eureka配置========= +eureka: + instance: + # eureka 注册路径地址 + prefer-ip-address: true + hostname: localhost + ip-address: ${eureka.instance.hostname} + instance-id: ${eureka.instance.hostname}:${server.port} + client: + serviceUrl: + defaultZone: http://${eureka.instance.hostname}:8761/eureka/ + +#=========log配置========= +#logging: +# level: +# org.springframework.cloud.alibaba.seata.web : info +# io.seata : info + +mybatis-plus: + configuration: + # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射 + map-underscore-to-camel-case: true + auto-mapping-behavior: full + # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + mapper-locations: classpath*:com/chinaunicom/mall/ebtp/**/mapper/*Mapper.xml + global-config: + # 逻辑删除配置 + db-config: + # logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2) @TableLogic + logic-not-delete-value: normal # 逻辑删除标记:正常数据 + logic-delete-value: deleted # 逻辑删除标记:已删除的数据 + type-aliases-package: com.chinaunicom.mall.ebtp.project +# --------------feign ------------ +feign: + hystrix: + enabled: true + httpclient: + enabled: true + okhttp: + enabled: true + client: + config: + default: + connect-timeout: 60000 + read-timeout: 60000 +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + strategy: SEMAPHORE + thread: + timeoutInMilliseconds: 200000 #熔断超时时间 + circuitBreaker: + sleepWindowInMilliseconds: 20000 + forceClosed: true +ribbon: + ReadTimeout: 60000 #请求处理的超时时间 + ConnectTimeout: 60000 #请求连接超时时间 + MaxAutoRetries: 0 #对当前实例的重试次数 + MaxAutoRetriesNextServer: 1 #切换实例的重试次数 1 + +mconfig: + swagger-ui-open: true + exception-handle-enabled: true + seata-open-enabled: false + work-id: 1 #终端ID + datacenter-id: 1 #数据中心ID + host-name: http://${eureka.instance.hostname} + service-name-purp: mall-purp #采购系统委托项目微服务 + service-name-wfap: wfap #重新评审 流程微服务 + wfSectionNo: '001' + wfSectionName: 采购方案审批 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..caf4dfc --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,3 @@ +spring: + profiles: + active: dev \ No newline at end of file diff --git a/src/main/resources/file.conf b/src/main/resources/file.conf new file mode 100644 index 0000000..d591bab --- /dev/null +++ b/src/main/resources/file.conf @@ -0,0 +1,66 @@ +transport { + # tcp udt unix-domain-socket + type = "TCP" + #NIO NATIVE + server = "NIO" + #enable heartbeat + heartbeat = true + # the client batch send request enable + enableClientBatchSendRequest = true + #thread factory for netty + threadFactory { + bossThreadPrefix = "NettyBoss" + workerThreadPrefix = "NettyServerNIOWorker" + serverExecutorThread-prefix = "NettyServerBizHandler" + shareBossWorker = false + clientSelectorThreadPrefix = "NettyClientSelector" + clientSelectorThreadSize = 1 + clientWorkerThreadPrefix = "NettyClientWorkerThread" + # netty boss thread size,will not be used for UDT + bossThreadSize = 1 + #auto default pin or 8 + workerThreadSize = "default" + } + shutdown { + # when destroy server, wait seconds + wait = 3 + } + serialization = "seata" + compressor = "none" +} +service { + #transaction service group mapping + vgroupMapping.biz-service-ebtp-expenses-fescar-service-group = "default" + #only support when registry.type=file, please don't set multiple addresses + default.grouplist = "127.0.0.1:8091" + #degrade, current not support + enableDegrade = false + #disable seata + disableGlobalTransaction = false +} + +client { + rm { + asyncCommitBufferLimit = 10000 + lock { + retryInterval = 10 + retryTimes = 30 + retryPolicyBranchRollbackOnConflict = true + } + reportRetryCount = 5 + tableMetaCheckEnable = false + reportSuccessEnable = false + } + tm { + commitRetryCount = 5 + rollbackRetryCount = 5 + } + undo { + dataValidation = true + logSerialization = "jackson" + logTable = "undo_log" + } + log { + exceptionRate = 100 + } +} \ No newline at end of file diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..8baf38a --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,89 @@ + + + + + + + ${logback.appname} + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{50} - %msg%n + + + + + + + + + ERROR + + DENY + + ACCEPT + + + ${logback.logdir}/info.${logback.appname}.log + + + + ${logback.logdir}/info.${logback.appname}.%d{yyyy-MM-dd}.log + + 3 + + true + + + + + + UTF-8 + %d [%thread] %-5level %logger{64} %line - %msg%n + + + + + + + Error + + + ${logback.logdir}/error.${logback.appname}.log + + + + ${logback.logdir}/error.${logback.appname}.%d{yyyy-MM-dd}.log + + 3 + + true + + + + + + UTF-8 + %d [%thread] %-5level %logger{128} %line - %msg%n + + + + + + + + + + + + diff --git a/src/main/resources/registry.conf b/src/main/resources/registry.conf new file mode 100644 index 0000000..bd724ed --- /dev/null +++ b/src/main/resources/registry.conf @@ -0,0 +1,79 @@ +registry { + # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa + type = "eureka" + + nacos { + application = "seata-server" + serverAddr = "localhost" + namespace = "" + username = "" + password = "" + } + eureka { + serviceUrl = "http://10.242.31.158:5001/eureka,http://10.242.31.158:5002/eureka,http://10.242.31.158:5003/eureka" + weight = "1" + } + redis { + serverAddr = "localhost:6379" + db = "0" + password = "" + timeout = "0" + } + zk { + serverAddr = "127.0.0.1:2181" + sessionTimeout = 6000 + connectTimeout = 2000 + username = "" + password = "" + } + consul { + serverAddr = "127.0.0.1:8500" + } + etcd3 { + serverAddr = "http://localhost:2379" + } + sofa { + serverAddr = "127.0.0.1:9603" + region = "DEFAULT_ZONE" + datacenter = "DefaultDataCenter" + group = "SEATA_GROUP" + addressWaitTime = "3000" + } + file { + name = "file.conf" + } +} + +config { + # file、nacos 、apollo、zk、consul、etcd3、springCloudConfig + type = "file" + + nacos { + serverAddr = "localhost" + namespace = "" + group = "SEATA_GROUP" + username = "" + password = "" + } + consul { + serverAddr = "127.0.0.1:8500" + } + apollo { + appId = "seata-server" + apolloMeta = "http://192.168.1.204:8801" + namespace = "application" + } + zk { + serverAddr = "127.0.0.1:2181" + sessionTimeout = 6000 + connectTimeout = 2000 + username = "" + password = "" + } + etcd3 { + serverAddr = "http://localhost:2379" + } + file { + name = "file.conf" + } +} diff --git a/src/main/resources/seata.conf b/src/main/resources/seata.conf new file mode 100644 index 0000000..e78134f --- /dev/null +++ b/src/main/resources/seata.conf @@ -0,0 +1,21 @@ +## --------------------------------------------------------------------------- +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## --------------------------------------------------------------------------- + +client { + application.id = biz-service-ebtp-process + transaction.service.group = biz-service-ebtp-process-group +} diff --git a/src/main/resources/swagger-configuration.properties b/src/main/resources/swagger-configuration.properties new file mode 100644 index 0000000..18fa96b --- /dev/null +++ b/src/main/resources/swagger-configuration.properties @@ -0,0 +1,7 @@ +unifast.swagger.basePackage=com.chinaunicom.mall.ebtp.project +unifast.swagger.title=\u6D4B\u8BD5\u63A5\u53E3\u6587\u6863 +unifast.swagger.contactName=\u5409\u6797\u9879\u76EE\u7EC4 +unifast.swagger.contactUrl=http://chinaunicom.com +unifast.swagger.contactEmail=chinaunicom@chinaunicom.com +unifast.swagger.version=0.0.1 +unifast.swagger.description=\u8BC4\u5BA1\u7ED3\u6784\u5316\u670D\u52A1 \ No newline at end of file