From 12f21d77b023305c16ac20c60b0afc152a36203d Mon Sep 17 00:00:00 2001 From: luyie Date: Fri, 28 Nov 2025 10:29:20 +0800 Subject: [PATCH] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0=E5=80=BC=E7=8F=AD?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzinfo-inspect-service-api/pom.xml | 7 + .../duty/constants/DutyConstants.java | 402 ++++ .../duty/constants/OperationalConstants.java | 372 ++++ .../duty/dto/ChangeShiftsReqDTO.java | 37 + .../duty/dto/ChangeShiftsRspDTO.java | 19 + .../hzinfo_inspect/duty/dto/ImsDutyChangeDTO.java | 20 + .../hzinfo_inspect/duty/dto/ImsDutyClassDTO.java | 18 + .../duty/dto/ImsDutyClassTypeDTO.java | 18 + .../hzinfo_inspect/duty/dto/ImsDutyGroupDTO.java | 17 + .../hzinfo_inspect/duty/dto/ImsDutyGroupPDTO.java | 18 + .../hzinfo_inspect/duty/dto/ImsDutyMainDTO.java | 18 + .../hzinfo_inspect/duty/dto/ImsDutyRecDTO.java | 44 + .../hzinfo_inspect/duty/entity/AnalyseExample.java | 73 + .../entity/DutyGroupGeneratingCapacityEntity.java | 71 + .../duty/entity/ImsDutyChangeEntity.java | 102 + .../duty/entity/ImsDutyClassEntity.java | 59 + .../duty/entity/ImsDutyClassTypeEntity.java | 39 + .../duty/entity/ImsDutyEmergencyEntity.java | 108 ++ .../duty/entity/ImsDutyGroupEntity.java | 45 + .../duty/entity/ImsDutyGroupPEntity.java | 52 + .../duty/entity/ImsDutyLogEntity.java | 106 ++ .../duty/entity/ImsDutyMainEntity.java | 77 + .../duty/entity/ImsDutyMainPersonEntity.java | 77 + .../duty/entity/ImsDutyMainReportExcel.java | 33 + .../duty/entity/ImsDutyMainTemplateEntity.java | 39 + .../duty/entity/ImsDutyRecEntity.java | 112 ++ .../duty/entity/ImsDutyRecQRRecordEntity.java | 36 + .../hzinfo_inspect/duty/enums/DutyMainStatus.java | 48 + .../hzinfo_inspect/duty/enums/DutyRecStatus.java | 48 + .../hzinfo_inspect/duty/enums/DutyStatus.java | 48 + .../hzinfo_inspect/duty/enums/JoinStatus.java | 30 + .../hzinfo_inspect/duty/enums/JoinType.java | 30 + .../hzinfo_inspect/duty/feign/IDutyClient.java | 60 + .../hzinfo_inspect/duty/utils/DateUtils.java | 442 +++++ .../hzinfo_inspect/duty/utils/Tree.java | 22 + .../hzinfo_inspect/duty/vo/AreaDutyVo.java | 229 +++ .../hzinfo_inspect/duty/vo/AuditVo.java | 23 + .../hzinfo_inspect/duty/vo/ChangeDutyMainVo.java | 41 + .../hzinfo_inspect/duty/vo/DutyClassTypeTree.java | 29 + .../hzinfo_inspect/duty/vo/DutyGroupMemberVo.java | 22 + .../hzinfo_inspect/duty/vo/DutyInfoVo.java | 68 + .../hzinfo_inspect/duty/vo/DutyLog.java | 25 + .../hzinfo_inspect/duty/vo/DutyMainInfoVo.java | 69 + .../hzinfo_inspect/duty/vo/DutyMemberVO.java | 18 + .../duty/vo/DutyPersonalReportVO.java | 24 + .../hzinfo_inspect/duty/vo/DutyRecordVo.java | 21 + .../hzinfo_inspect/duty/vo/DutyReportVO.java | 40 + .../hzinfo_inspect/duty/vo/DutyShiftRecord.java | 36 + .../hzinfo_inspect/duty/vo/DutyTaskVo.java | 32 + .../hzinfo_inspect/duty/vo/EngineerDutyVo.java | 69 + .../duty/vo/ExchangeGroupLeader.java | 24 + .../duty/vo/FlexibleSchedulingVo.java | 28 + .../duty/vo/HomePageDutyMainInfoVo.java | 18 + .../hzinfo_inspect/duty/vo/ImsDutyChangeTowVo.java | 30 + .../hzinfo_inspect/duty/vo/ImsDutyChangeVO.java | 71 + .../hzinfo_inspect/duty/vo/ImsDutyClassVO.java | 20 + .../hzinfo_inspect/duty/vo/ImsDutyEmergencyVo.java | 86 + .../duty/vo/ImsDutyGroupGenerationVo.java | 34 + .../hzinfo_inspect/duty/vo/ImsDutyGroupPVO.java | 32 + .../duty/vo/ImsDutyGroupPersonVO.java | 24 + .../hzinfo_inspect/duty/vo/ImsDutyGroupVO.java | 48 + .../hzinfo_inspect/duty/vo/ImsDutyMainMergeVo.java | 80 + .../hzinfo_inspect/duty/vo/ImsDutyMainVO.java | 22 + .../duty/vo/ImsDutyRecQRRecordExtendVo.java | 10 + .../duty/vo/ImsDutyRecQRRecordVo.java | 26 + .../hzinfo_inspect/duty/vo/ImsDutyRecTestVo.java | 17 + .../hzinfo_inspect/duty/vo/ImsDutyRecVO.java | 48 + .../hzinfo_inspect/duty/vo/ImsRecVo.java | 19 + .../hzinfo_inspect/duty/vo/ImsSchedulingVo.java | 85 + .../hzinfo_inspect/duty/vo/NextDutyInfoVo.java | 47 + .../hzinfo_inspect/duty/vo/RelationshipTeamVo.java | 68 + .../hzinfo_inspect/plan/PlanContants.java | 14 + .../hzinfo-inspect-service/pom.xml | 35 +- .../duty/controller/ImsDutyChangeController.java | 154 ++ .../duty/controller/ImsDutyClassController.java | 139 ++ .../controller/ImsDutyClassTypeController.java | 108 ++ .../duty/controller/ImsDutyGroupController.java | 181 ++ .../duty/controller/ImsDutyMainController.java | 243 +++ .../controller/ImsDutyMainTemplateController.java | 54 + .../duty/controller/ImsDutyRecController.java | 244 +++ .../controller/ImsDutyRecQRRecordController.java | 66 + .../hzinfo_inspect/duty/feign/DutyClient.java | 166 ++ .../hzinfo_inspect/duty/job/DutyMainJob.java | 66 + .../mapper/DutyGroupGeneratingCapacityMapper.java | 16 + .../mapper/DutyGroupGeneratingCapacityMapper.xml | 30 + .../duty/mapper/ImsAnalyseExampleMapper.java | 16 + .../duty/mapper/ImsAnalyseExampleMapper.xml | 16 + .../duty/mapper/ImsDutyChangeMapper.java | 21 + .../duty/mapper/ImsDutyChangeMapper.xml | 39 + .../duty/mapper/ImsDutyClassMapper.java | 42 + .../duty/mapper/ImsDutyClassMapper.xml | 122 ++ .../duty/mapper/ImsDutyClassTypeMapper.java | 13 + .../duty/mapper/ImsDutyClassTypeMapper.xml | 17 + .../duty/mapper/ImsDutyEmergencyMapper.java | 15 + .../duty/mapper/ImsDutyEmergencyMapper.xml | 17 + .../duty/mapper/ImsDutyGroupMapper.java | 32 + .../duty/mapper/ImsDutyGroupMapper.xml | 53 + .../duty/mapper/ImsDutyGroupPMapper.java | 60 + .../duty/mapper/ImsDutyGroupPMapper.xml | 169 ++ .../duty/mapper/ImsDutyLogMapper.java | 14 + .../duty/mapper/ImsDutyLogMapper.xml | 4 + .../duty/mapper/ImsDutyMainMapper.java | 82 + .../duty/mapper/ImsDutyMainMapper.xml | 424 +++++ .../duty/mapper/ImsDutyMainPersonMapper.java | 14 + .../duty/mapper/ImsDutyMainPersonMapper.xml | 29 + .../duty/mapper/ImsDutyMainTemplateMapper.java | 14 + .../duty/mapper/ImsDutyMainTemplateMapper.xml | 30 + .../duty/mapper/ImsDutyRecMapper.java | 23 + .../duty/mapper/ImsDutyRecMapper.xml | 38 + .../duty/mapper/ImsDutyRecQRRecordMapper.java | 28 + .../duty/mapper/ImsDutyRecQRRecordMapper.xml | 59 + .../duty/service/IDutyGroupService.java | 8 + .../duty/service/IDutyRecClientService.java | 16 + .../duty/service/IImsDutyChangeService.java | 37 + .../duty/service/IImsDutyClassService.java | 38 + .../duty/service/IImsDutyClassTypeService.java | 24 + .../duty/service/IImsDutyEmergencyService.java | 24 + .../duty/service/IImsDutyGroupPService.java | 44 + .../duty/service/IImsDutyGroupService.java | 72 + .../duty/service/IImsDutyLogService.java | 17 + .../duty/service/IImsDutyMainPersonService.java | 21 + .../duty/service/IImsDutyMainService.java | 163 ++ .../duty/service/IImsDutyMainTemplateService.java | 19 + .../duty/service/IImsDutyRecQRRecordService.java | 28 + .../duty/service/IImsDutyRecService.java | 116 ++ .../duty/service/impl/DutyGroupServiceImpl.java | 49 + .../service/impl/DutyRecClientServiceImpl.java | 21 + .../service/impl/ImsDutyChangeServiceImpl.java | 223 +++ .../duty/service/impl/ImsDutyClassServiceImpl.java | 121 ++ .../service/impl/ImsDutyClassTypeServiceImpl.java | 74 + .../service/impl/ImsDutyEmergencyServiceImpl.java | 129 ++ .../service/impl/ImsDutyGroupPServiceImpl.java | 66 + .../duty/service/impl/ImsDutyGroupServiceImpl.java | 380 ++++ .../duty/service/impl/ImsDutyLogServiceImpl.java | 187 ++ .../service/impl/ImsDutyMainPersonServiceImpl.java | 67 + .../duty/service/impl/ImsDutyMainServiceImpl.java | 1982 ++++++++++++++++++++ .../duty/service/impl/ImsDutyMainTemplateImpl.java | 61 + .../impl/ImsDutyRecQRRecordServiceImpl.java | 79 + .../duty/service/impl/ImsDutyRecServiceImpl.java | 1081 +++++++++++ .../hzinfo_inspect/duty/utils/DutyContants.java | 39 + .../duty/utils/DutyProcessConstant.java | 39 + .../duty/utils/DutyRecProcessConstant.java | 54 + .../duty/utils/ExcelMergeHandler.java | 87 + .../hzinfo_inspect/duty/utils/ExcelTool.java | 27 + .../hzinfo_inspect/duty/utils/ThreadTask.java | 97 + .../duty/wrapper/ImsDutyChangeWrapper.java | 50 + .../duty/wrapper/ImsDutyGroupWrapper.java | 20 + .../duty/wrapper/ImsDutyRecWrapper.java | 25 + .../report/entity/InspectMonthReportExcel.java | 6 +- 149 files changed, 12821 insertions(+), 7 deletions(-) create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/constants/DutyConstants.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/constants/OperationalConstants.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ChangeShiftsReqDTO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ChangeShiftsRspDTO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyChangeDTO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyClassDTO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyClassTypeDTO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyGroupDTO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyGroupPDTO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyMainDTO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyRecDTO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/AnalyseExample.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/DutyGroupGeneratingCapacityEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyChangeEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyClassEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyClassTypeEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyEmergencyEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyGroupEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyGroupPEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyLogEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainPersonEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainReportExcel.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainTemplateEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyRecEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyRecQRRecordEntity.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/DutyMainStatus.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/DutyRecStatus.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/DutyStatus.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/JoinStatus.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/JoinType.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/feign/IDutyClient.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DateUtils.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/utils/Tree.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/AreaDutyVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/AuditVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ChangeDutyMainVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyClassTypeTree.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyGroupMemberVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyInfoVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyLog.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyMainInfoVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyMemberVO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyPersonalReportVO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyRecordVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyReportVO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyShiftRecord.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyTaskVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/EngineerDutyVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ExchangeGroupLeader.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/FlexibleSchedulingVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/HomePageDutyMainInfoVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyChangeTowVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyChangeVO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyClassVO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyEmergencyVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupGenerationVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupPVO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupPersonVO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupVO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyMainMergeVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyMainVO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecQRRecordExtendVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecQRRecordVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecTestVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecVO.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsRecVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsSchedulingVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/NextDutyInfoVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/RelationshipTeamVo.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyChangeController.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyClassController.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyClassTypeController.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyGroupController.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyMainController.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyMainTemplateController.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyRecController.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyRecQRRecordController.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/feign/DutyClient.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/job/DutyMainJob.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/DutyGroupGeneratingCapacityMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/DutyGroupGeneratingCapacityMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsAnalyseExampleMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsAnalyseExampleMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyChangeMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyChangeMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassTypeMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassTypeMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyEmergencyMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyEmergencyMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupPMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupPMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyLogMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyLogMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainPersonMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainPersonMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainTemplateMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainTemplateMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecQRRecordMapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecQRRecordMapper.xml create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IDutyGroupService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IDutyRecClientService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyChangeService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyClassService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyClassTypeService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyEmergencyService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyGroupPService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyGroupService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyLogService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyMainPersonService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyMainService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyMainTemplateService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyRecQRRecordService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyRecService.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/DutyGroupServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/DutyRecClientServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyChangeServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyClassServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyClassTypeServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyEmergencyServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyGroupPServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyGroupServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyLogServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyMainPersonServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyMainServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyMainTemplateImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyRecQRRecordServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyRecServiceImpl.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DutyContants.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DutyProcessConstant.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DutyRecProcessConstant.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/ExcelMergeHandler.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/ExcelTool.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/ThreadTask.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/wrapper/ImsDutyChangeWrapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/wrapper/ImsDutyGroupWrapper.java create mode 100644 HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/wrapper/ImsDutyRecWrapper.java diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/pom.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/pom.xml index 18d9d62..48e399c 100644 --- a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/pom.xml +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/pom.xml @@ -13,4 +13,11 @@ ${project.artifactId} jar + + + com.alibaba + easyexcel + 3.3.2 + + \ No newline at end of file diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/constants/DutyConstants.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/constants/DutyConstants.java new file mode 100644 index 0000000..3349a5d --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/constants/DutyConstants.java @@ -0,0 +1,402 @@ +package org.springblade.hzinfo_inspect.duty.constants; + +import lombok.Getter; + +/** + * @Author: py + */ +public class DutyConstants { + + public static Long PREVIOUS_TEAM = 0L; + + // 下一班组 + public static Long NEXT_TEAM = 1L; + + /** + * 交接班类型 + */ + @Getter + public enum DutyRecTypeEnum { + /** + * 交班 + */ + HAND_REC(1, "交班"), + /** + * 接班 + */ + CARRY_REC(2, "接班"); + + private final int val; + @Getter + private final String name; + + DutyRecTypeEnum(int val, String name) { + this.val = val; + this.name = name; + } + } + + /** + * 交接班类型 + */ + @Getter + public enum MessageRecTypeEnum { + /** + * 提前 15 分钟 提醒交班 + */ + HAND_REC_MESSAGE(15, "提前交班提醒"), + /** + * 接班巡视时间 + */ + CARRY_REC_MESSAGE(30, "接班巡视时间"), + + DELAYED_HAND_REC_MESSAGE(1, "延时交班提醒"), + //最迟延迟交班提醒 + DELAYED_HAND_REC_MESSAGE_LAST(15, "延时交班提醒"); + private final int val; + @Getter + private final String name; + + MessageRecTypeEnum(int val, String name) { + this.val = val; + this.name = name; + } + } + + /** + * 消息业务分类 + */ + @Getter + public enum MessageClassifyEnum { + /** + * 系统通知 + */ + MESSAGE_SYSTEM("system", "系统通知"), + /** + * 事务消息 + */ + MESSAGE_CLASSIFY("business", "事务消息"), + /** + * 日常提醒 + */ + MESSAGE_REMINDSY("dailyRemind", "日常提醒"), + /** + * 巡检消息 + */ + MESSAGE_INSPECT("inspect", "巡检消息"), + /** + * 无 + */ + MESSAGE_CNONE("none", "无"); + + private final String val; + @Getter + private final String name; + + MessageClassifyEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 交接班类型 + */ + @Getter + public enum RecTypeEnum { + /** + * 交班提醒 + */ + HAND_REMIND(1, "交班提醒"), + /** + * 交班延迟 + */ + HAND_DELAY(2, "交班延迟-提醒接班人"), + /** + * 提醒交班人交班 + */ + REMIND_HAND_PERSON(3, "提醒交班人交班"); + + private final int val; + @Getter + private final String name; + + RecTypeEnum(int val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 工作流状态 + */ + @Getter + public enum ProcessStatusEnum { + /** + * 默认 + */ + DEFAULT_PROCESS_STATUS(0, "默认"), + /** + * 交班延迟 + */ + BACKLOG_PROCESS_STATUS(1, "待办"), + /** + * 提醒交班人交班 + */ + COMPLETED_PROCESS_STATUS(2, "已完成"); + private final int val; + @Getter + private final String name; + + ProcessStatusEnum(int val, String name) { + this.val = val; + this.name = name; + } + } + + /** + * 数据类型 + */ + @Getter + public enum UserDataScopeTypeEnum { + /** + * 只看自己 + */ + SELT_VISIBLE("0", "只看自己"), + /** + * 所属机构 + */ + EMPLOYER_VISIBLE("1", "所属机构"), + /** + * 所属机构及下属机构 + */ + EMPLOYER_SUBORDINATE_BODY("2", "所属机构及下属机构"), + /** + * 所在机构可见 + */ + AFFILIATE("3", "附属机构"), + /** + * 所在机构及子级可见 + */ + AFFILIATE_SUBORDINATE_BODY("4", "附属机构及下属"), + /** + * 全部可见 + */ + SELT_SUBORDINATE_BODY("5", "个人及下属机构"); + private final String val; + @Getter + private final String name; + + UserDataScopeTypeEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 站点类型 + */ + @Getter + public enum StationTypeEnum { + /** + * 水电站 + */ + HYDROPOWER_STATION("1", "水电站"), + /** + * 风电 + */ + WIND_POWER_STATION("2", "风电"), + /** + * 光伏 + */ + PHOTOVOLTAIC_STATION("3", "光伏"), + /** + * 泵站 + */ + PUMP_STATION_STATION("4", "泵站"), + /** + * 水厂 + */ + WATER_WORKS_STATION("5", "水厂"), + /** + * 闸门 + */ + GATE_STATION("6", "闸门"); + private final String val; + @Getter + private final String name; + + StationTypeEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 所属行业 + */ + @Getter + public enum TradeEnum { + /** + * 水电站 + */ + POWER_INDUSTRY("1", "电力行业"), + /** + * 风电 + */ + WATER_AFFAIRS_INDUSTRY("2", "水务行业"); + private final String val; + @Getter + private final String name; + + TradeEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 站点类型 + */ + @Getter + public enum StationQuantityEnum { + /** + * 水电站 + */ + ONE("1", "一"), + /** + * 风电 + */ + TOW("2", "二"), + /** + * 光伏 + */ + MORE("3", "多"), + /** + * 泵站 + */ + WHOLE("4", "整"); + private final String val; + @Getter + private final String name; + + StationQuantityEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + /** + * 行业类型 + */ + @Getter + public enum InDustryEnum { + /** + * 系统 + */ + SYSTEM("1", "系统"), + /** + * 行业 + */ + INDUSTRY("2", "行业"), + /** + * 多种站点类型 + */ + MORE_STATION_TYPE("3", "多种站点类型"), + /** + * 单个站点类型 + */ + SINGLE_STATION_TYPE("4", "单个站点类型"); + private final String val; + @Getter + private final String name; + + InDustryEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 首页分类 + */ + @Getter + public enum FirstPageTypeEnum { + /** + * 系统 + */ + SYSTEM("1", "系统数据总览"), + /** + * 行业 + */ + INDUSTRY("2", "行业数据总览"), + STATION("3", "站点数据总览"), + TOW("4", "两站数据总览"), + ONE("5", "单站数据总览"); + private final String val; + @Getter + private final String name; + + FirstPageTypeEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 行业站点类型 + */ + @Getter + public enum BusinessStationTypeEnum { + /** + * 行业 + */ + BUSINESS("1", "行业"), + /** + * 多种行业分类 + */ + MULTPLE_SITE_CATEGORIES("2", "多种行业分类"), + /** + * 单个站点分类 + */ + SINGLE_STATION_TYPE("3", "单个站点分类"); + private final String val; + @Getter + private final String name; + + BusinessStationTypeEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + @Getter + public enum DutyLogLevel { + /** + * 水电站 + */ + importLevel("1", "重要"), + /** + * 风电 + */ + generalLevel("2", "一般"), + ordinaryLevel("3", "普通"); + /** + * 泵站 + */ + private final String val; + @Getter + private final String name; + + DutyLogLevel(String val, String name) { + this.val = val; + this.name = name; + } + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/constants/OperationalConstants.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/constants/OperationalConstants.java new file mode 100644 index 0000000..3514f10 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/constants/OperationalConstants.java @@ -0,0 +1,372 @@ +package org.springblade.hzinfo_inspect.duty.constants; + +import lombok.Getter; + +public class OperationalConstants { + /** + * 交接班类型 + */ + public enum DutyRecTypeEnum { + /** + * 交班 + */ + HAND_REC(1, "交班"), + /** + * 接班 + */ + CARRY_REC(2, "接班"); + + @Getter + private int val; + @Getter + private String name; + + private DutyRecTypeEnum(int val, String name) { + this.val = val; + this.name = name; + } + } + + /** + * 交接班类型 + */ + public enum MessageRecTypeEnum { + /** + * 提前 15 分钟 提醒交班 + */ + HAND_REC_MESSAGE(15, "提前交班提醒"), + /** + * 接班巡视时间 + */ + CARRY_REC_MESSAGE(30, "接班巡视时间"), + + DELAYED_HAND_REC_MESSAGE(1, "延时交班提醒"), + //最迟延迟交班提醒 + DELAYED_HAND_REC_MESSAGE_LAST(15, "延时交班提醒"); + @Getter + private int val; + @Getter + private String name; + + private MessageRecTypeEnum(int val, String name) { + this.val = val; + this.name = name; + } + } + + /** + * 消息业务分类 + */ + public enum MessageClassifyEnum { + /** + * 系统通知 + */ + MESSAGE_SYSTEM("system", "系统通知"), + /** + * 事务消息 + */ + MESSAGE_CLASSIFY("business", "事务消息"), + /** + * 日常提醒 + */ + MESSAGE_REMINDSY("remindsy", "日常提醒"), + /** + * 巡检消息 + */ + MESSAGE_INSPECT("inspect", "巡检消息"), + /** + * 无 + */ + MESSAGE_CNONE("none", "无"); + + @Getter + private String val; + @Getter + private String name; + + private MessageClassifyEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 交接班类型 + */ + public enum RecTypeEnum { + /** + * 交班提醒 + */ + HAND_REMIND(1, "交班提醒"), + /** + * 交班延迟 + */ + HAND_DELAY(2, "交班延迟-提醒接班人"), + /** + * 提醒交班人交班 + */ + REMIND_HAND_PERSON(3, "提醒交班人交班"); + + @Getter + private int val; + @Getter + private String name; + + private RecTypeEnum(int val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 工作流状态 + */ + public enum ProcessStatusEnum { + /** + * 默认 + */ + DEFAULT_PROCESS_STATUS(0, "默认"), + /** + * 交班延迟 + */ + BACKLOG_PROCESS_STATUS(1, "待办"), + /** + * 提醒交班人交班 + */ + COMPLETED_PROCESS_STATUS(2, "已完成"); + @Getter + private int val; + @Getter + private String name; + + private ProcessStatusEnum(int val, String name) { + this.val = val; + this.name = name; + } + } + + /** + * 数据类型 + */ + public enum UserDataScopeTypeEnum { + /** + * 只看自己 + */ + SELT_VISIBLE("0", "只看自己"), + /** + * 所属机构 + */ + EMPLOYER_VISIBLE("1", "所属机构"), + /** + * 所属机构及下属机构 + */ + EMPLOYER_SUBORDINATE_BODY("2", "所属机构及下属机构"), + /** + * 所在机构可见 + */ + AFFILIATE("3", "附属机构"), + /** + * 所在机构及子级可见 + */ + AFFILIATE_SUBORDINATE_BODY("4", "附属机构及下属"), + /** + * 全部可见 + */ + SELT_SUBORDINATE_BODY("5", "个人及下属机构"); + @Getter + private String val; + @Getter + private String name; + + private UserDataScopeTypeEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 站点类型 + */ + public enum StationTypeEnum { + /** + * 水电站 + */ + HYDROPOWER_STATION("1", "水电站"), + /** + * 风电 + */ + WIND_POWER_STATION("2", "风电"), + /** + * 光伏 + */ + PHOTOVOLTAIC_STATION("3", "光伏"), + /** + * 泵站 + */ + PUMP_STATION_STATION("4", "泵站"), + /** + * 水厂 + */ + WATER_WORKS_STATION("5", "水厂"), + /** + * 闸门 + */ + GATE_STATION("6", "闸门"); + @Getter + private String val; + @Getter + private String name; + + private StationTypeEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 所属行业 + */ + public enum TradeEnum { + /** + * 水电站 + */ + POWER_INDUSTRY("1", "电力行业"), + /** + * 风电 + */ + WATER_AFFAIRS_INDUSTRY("2", "水务行业"); + @Getter + private String val; + @Getter + private String name; + + private TradeEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 站点类型 + */ + public enum StationQuantityEnum { + /** + * 水电站 + */ + ONE("1", "一"), + /** + * 风电 + */ + TOW("2", "二"), + /** + * 光伏 + */ + MORE("3", "多"), + /** + * 泵站 + */ + WHOLE("4", "整"); + @Getter + private String val; + @Getter + private String name; + + private StationQuantityEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + /** + * 行业类型 + */ + public enum InDustryEnum { + /** + * 系统 + */ + SYSTEM("1", "系统"), + /** + * 行业 + */ + INDUSTRY("2", "行业"), + /** + * 多种站点类型 + */ + MORE_STATION_TYPE("3", "多种站点类型"), + /** + * 单个站点类型 + */ + SINGLE_STATION_TYPE("4", "单个站点类型"); + @Getter + private String val; + @Getter + private String name; + + private InDustryEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 首页分类 + */ + public enum FirstPageTypeEnum { + /** + * 系统 + */ + SYSTEM("1", "系统数据总览"), + /** + * 行业 + */ + INDUSTRY("2", "行业数据总览"), + STATION("3", "站点数据总览"), + TOW("4", "两站数据总览"), + ONE("5", "单站数据总览"); + @Getter + private String val; + @Getter + private String name; + + private FirstPageTypeEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + + /** + * 行业站点类型 + */ + public enum BusinessStationTypeEnum { + /** + * 行业 + */ + BUSINESS("1", "行业"), + /** + * 多种行业分类 + */ + MULTPLE_SITE_CATEGORIES("2", "多种行业分类"), + /** + * 单个站点分类 + */ + SINGLE_STATION_TYPE("3", "单个站点分类"); + @Getter + private String val; + @Getter + private String name; + + private BusinessStationTypeEnum(String val, String name) { + this.val = val; + this.name = name; + } + } + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ChangeShiftsReqDTO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ChangeShiftsReqDTO.java new file mode 100644 index 0000000..e926631 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ChangeShiftsReqDTO.java @@ -0,0 +1,37 @@ +package org.springblade.hzinfo_inspect.duty.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + + +@Data +public class ChangeShiftsReqDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @DateTimeFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @ApiModelProperty("查询开始时间") + private String startTime; + + + @DateTimeFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @ApiModelProperty("查询结束时间") + private String endTime; + + @ApiModelProperty("创建部门") + private Long createDept; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ChangeShiftsRspDTO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ChangeShiftsRspDTO.java new file mode 100644 index 0000000..baa8c40 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ChangeShiftsRspDTO.java @@ -0,0 +1,19 @@ +package org.springblade.hzinfo_inspect.duty.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class ChangeShiftsRspDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "交接班次数") + private int shiftsCount; + + @ApiModelProperty(value = "交接班正常率") + private double shiftsRate; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyChangeDTO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyChangeDTO.java new file mode 100644 index 0000000..16d2035 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyChangeDTO.java @@ -0,0 +1,20 @@ +package org.springblade.hzinfo_inspect.duty.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyChangeEntity; + +/** + * 模型DTO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ImsDutyChangeDTO extends ImsDutyChangeEntity { + + private static final long serialVersionUID = 510101758136L; + + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyClassDTO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyClassDTO.java new file mode 100644 index 0000000..1c643e7 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyClassDTO.java @@ -0,0 +1,18 @@ +package org.springblade.hzinfo_inspect.duty.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassEntity; + +/** + * 模型DTO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ImsDutyClassDTO extends ImsDutyClassEntity { + + private static final long serialVersionUID = 1L; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyClassTypeDTO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyClassTypeDTO.java new file mode 100644 index 0000000..5617d79 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyClassTypeDTO.java @@ -0,0 +1,18 @@ +package org.springblade.hzinfo_inspect.duty.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassTypeEntity; + +/** + * 模型DTO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ImsDutyClassTypeDTO extends ImsDutyClassTypeEntity { + + private static final long serialVersionUID = 1L; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyGroupDTO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyGroupDTO.java new file mode 100644 index 0000000..631edee --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyGroupDTO.java @@ -0,0 +1,17 @@ +package org.springblade.hzinfo_inspect.duty.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupEntity; + +/** + * 模型DTO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ImsDutyGroupDTO extends ImsDutyGroupEntity { + + private static final long serialVersionUID = 1L; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyGroupPDTO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyGroupPDTO.java new file mode 100644 index 0000000..bec7bb9 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyGroupPDTO.java @@ -0,0 +1,18 @@ +package org.springblade.hzinfo_inspect.duty.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupPEntity; + +/** + * 模型DTO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ImsDutyGroupPDTO extends ImsDutyGroupPEntity { + + private static final long serialVersionUID = 1L; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyMainDTO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyMainDTO.java new file mode 100644 index 0000000..1707e3d --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyMainDTO.java @@ -0,0 +1,18 @@ +package org.springblade.hzinfo_inspect.duty.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; + +/** + * 模型DTO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ImsDutyMainDTO extends ImsDutyMainEntity { + + private static final long serialVersionUID = 1L; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyRecDTO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyRecDTO.java new file mode 100644 index 0000000..01f78b2 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/dto/ImsDutyRecDTO.java @@ -0,0 +1,44 @@ +package org.springblade.hzinfo_inspect.duty.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecEntity; +import org.springblade.hzinfo_inspect.duty.vo.ImsSchedulingVo; + +import javax.validation.constraints.NotNull; + +/** + * 模型DTO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ImsDutyRecDTO extends ImsDutyRecEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "巡检路线数据") + @NotNull + private String routeData; + + @ApiModelProperty(value = "巡检路线ID字段") + @NotNull + private Long routeId; + + @ApiModelProperty(value = "路线名称") + @NotNull + private String routeName; + + @ApiModelProperty(value = "交班对象值班信息") + private ImsSchedulingVo headDutyMainVo; + + /** + * 接班对象值班信息 + */ + @ApiModelProperty(value = "接班对象值班信息") + private ImsSchedulingVo carryDutyMainVo; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/AnalyseExample.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/AnalyseExample.java new file mode 100644 index 0000000..02a478f --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/AnalyseExample.java @@ -0,0 +1,73 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.SqlCondition; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.mp.support.QueryField; + + +/** + * 实体类 + * + * @author ty + */ +@Data +@TableName("hz_ims_duty_analyse_example") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "AnalyseExample对象", description = "分析实例配置类") +public class AnalyseExample extends BaseEntity { + + private static final long serialVersionUID = 4259568798118459986L; + /** + * 配置ID + */ + @ApiModelProperty(value = "配置ID") + private Long id; + /** + * 站点ID + */ + @ApiModelProperty(value = "站点ID") + private Long siteId; + /** + * 站点名称 + */ + @ApiModelProperty(value = "站点名称") + private String siteName; + /** + * 设备ID + */ + @ApiModelProperty(value = "设备ID") + private String equipmentId; + + /** + * 设备名称 + */ + @ApiModelProperty(value = "设备名称") + private String equipmentName; + /** + * 分析实例ID + */ + @ApiModelProperty(value = "分析实例ID") + private String deviceCode; + /** + * 分析实例名称 + */ + @ApiModelProperty(value = "分析实例名称") + private String analyseName; + + /** + * 属性ID + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "属性ID") + private String propertyIds; + + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/DutyGroupGeneratingCapacityEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/DutyGroupGeneratingCapacityEntity.java new file mode 100644 index 0000000..23c69d1 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/DutyGroupGeneratingCapacityEntity.java @@ -0,0 +1,71 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +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.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.sql.Time; + +/** + *

+ * 班组发电量 + *

+ * + * @author lx + * @since 2022-02-24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("hzims_duty_group_generating_capacity") +@ApiModel(value = "DutyGroupGeneratingCapacityEntity对象", description = "班组发电量") +public class DutyGroupGeneratingCapacityEntity extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "站点ID") + @TableField("DUTY_DEPT") + private Long dutyDept; + + @ApiModelProperty(value = "年月") + @TableField("DATE_TIME") + private String dateTime; + + @ApiModelProperty(value = "班组ID") + @TableField("GROUP_ID") + private Long groupId; + + @ApiModelProperty(value = "设备Code") + @TableField("EM_CODE") + private String emCode; + + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "开始时间") + @TableField("START_TIME") + private Time startTime; + + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "开始时间") + @TableField("END_TIME") + private Time endTime; + + @ApiModelProperty(value = "发电量") + @TableField("GENERATING_CAPACITY") + private float generatingCapacity; + + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyChangeEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyChangeEntity.java new file mode 100644 index 0000000..e3115c9 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyChangeEntity.java @@ -0,0 +1,102 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +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.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + + +/** + * 实体类 + * + * @author Chill + */ +@Data +@TableName("hz_ims_duty_change") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyChange对象", description = "调班") +public class ImsDutyChangeEntity extends BaseEntity { + + private static final long serialVersionUID = 510101758137L; + + /** + * 班次ID + */ + @ApiModelProperty(value = "班次ID") + private Long classId; + /** + * 调班申请人 + */ + @ApiModelProperty(value = "调班申请人") + private Long applyPersonId; + + /** + * 申请人值班日期 + */ + @DateTimeFormat( + pattern = "yyyy-MM-dd" + ) + @JsonFormat( + pattern = "yyyy-MM-dd" + ) + @ApiModelProperty(value = "申请人值班日期") + private Date applyDate; + /** + * 申请人值班ID + */ + @ApiModelProperty(value = "申请人值班ID") + private Long applyDutyId; + /** + * 调班人 + */ + @ApiModelProperty(value = "调班人") + private Long acceptPersonId; + /** + * 调班人值班日期 + */ + @DateTimeFormat( + pattern = "yyyy-MM-dd" + ) + @JsonFormat( + pattern = "yyyy-MM-dd" + ) + @ApiModelProperty(value = "调班人值班日期") + private Date acceptDate; + /** + * 调班人值班ID + */ + @ApiModelProperty(value = "调班人值班ID") + private Long acceptDutyId; + + /** + * 流程定义Key + */ + @ApiModelProperty(value = "流程定义Key") + private String processDefinitionKey; + /** + * 流程实例id + */ + @ApiModelProperty(value = "流程实例id") + private String processInstanceId; + + /** + * 审批主管 + */ + @ApiModelProperty(value = "审批主管") + private Long manager; + + /** + * 调班原因 + */ + @ApiModelProperty(value = "调班原因") + private String reason; + + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyClassEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyClassEntity.java new file mode 100644 index 0000000..7452dde --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyClassEntity.java @@ -0,0 +1,59 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.baomidou.mybatisplus.annotation.SqlCondition; +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.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.mp.support.QueryField; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.sql.Time; + + +/** + * 实体类 + * + * @author Chill + */ +@Data +@TableName("hz_ims_duty_class") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyClass对象", description = "班次对象") +public class ImsDutyClassEntity extends BaseEntity { + + private static final long serialVersionUID = -4931752208756882575L; + /** + * 班次类型ID + */ + @QueryField(condition = SqlCondition.EQUAL) + @ApiModelProperty(value = "班次类型ID") + private Long classTypeId; + /** + * 班次名称 + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "班次名称") + private String className; + /** + * 开始时间 + */ + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "开始时间") + private Time startTime; + /** + * 结束时间 + */ + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "结束时间 ") + private Time endTime; + + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyClassTypeEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyClassTypeEntity.java new file mode 100644 index 0000000..a28ef0c --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyClassTypeEntity.java @@ -0,0 +1,39 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.baomidou.mybatisplus.annotation.SqlCondition; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.mp.support.QueryField; + + +/** + * 实体类 + * + * @author Chill + */ +@Data +@TableName("hz_ims_duty_class_type") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyClassType对象", description = "班次类型对象") +public class ImsDutyClassTypeEntity extends BaseEntity { + + private static final long serialVersionUID = -7651345964875923367L; + /** + * 部门ID + */ + @ApiModelProperty(value = "部门ID") + private Long deptId; + /** + * 班次类型名称 + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "班次类型名称") + private String classTypeName; + + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyEmergencyEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyEmergencyEntity.java new file mode 100644 index 0000000..9316e16 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyEmergencyEntity.java @@ -0,0 +1,108 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.baomidou.mybatisplus.annotation.SqlCondition; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.mp.support.QueryField; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + + +/** + * 实体类 + * + * @author ty + */ +@Data +@TableName("hz_ims_duty_emergency") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyEmergency对象", description = "突发事件登记") +public class ImsDutyEmergencyEntity extends BaseEntity { + + private static final long serialVersionUID = 4259568798118459986L; + /** + * 值班日期 + */ + @DateTimeFormat(pattern = DateUtil.PATTERN_DATE) + @JsonFormat(pattern = DateUtil.PATTERN_DATE) + @ApiModelProperty(value = "值班日期") + private Date dutyTime; + + /** + * 班次 + */ + @ApiModelProperty(value = "班次") + private Long dutyClass; + + /** + * 班次 + */ + @TableField(exist=false) + @ApiModelProperty(value = "班次") + private String dutyClassName; + /** + * 登记人 + */ + @ApiModelProperty(value = "登记人") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long registrant; + /** + * 登记人姓名 + */ + @TableField(exist=false) + @ApiModelProperty(value = "登记人") + @JsonSerialize(nullsUsing = NullSerializer.class) + private String registrantName; + /** + * 值班长 + */ + @ApiModelProperty(value = "值班长") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long chargePerson; + /** + * 值班长 + */ + @TableField(exist=false) + @ApiModelProperty(value = "值班长") + @JsonSerialize(nullsUsing = NullSerializer.class) + private String chargePersonName; + /** + * 登记时间 + */ + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + @ApiModelProperty(value = "登记时间") + private Date registerTime; + /** + * 事件主题 + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "事件主题") + private String eventTitle; + /** + * 事件内容 + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "事件内容") + private String eventInfo; + + /** + * 事件方式 + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "事件方式") + private String eventType; + + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyGroupEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyGroupEntity.java new file mode 100644 index 0000000..276c1c8 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyGroupEntity.java @@ -0,0 +1,45 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.baomidou.mybatisplus.annotation.SqlCondition; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.mp.support.QueryField; + + +/** + * 实体类 + * + * @author Chill + */ +@Data +@TableName("hz_ims_duty_group") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyGroup对象", description = "值班小组对象") +public class ImsDutyGroupEntity extends BaseEntity { + + private static final long serialVersionUID = 3903980057558810987L; + + /** + * 班组名称 + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "班组名称") + private String groupName; + + /** + * 负责人ID + */ + @ApiModelProperty(value = "负责人ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long managerId; + + @ApiModelProperty(value = "租户ID") + private String tenantId; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyGroupPEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyGroupPEntity.java new file mode 100644 index 0000000..50d3608 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyGroupPEntity.java @@ -0,0 +1,52 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +/** + * 实体类 + * + * @author Chill + */ +@Data +@TableName("hz_ims_duty_group_p") +@ApiModel(value = "ImsDutyGroupP对象", description = "值班小组成员关联对象") +public class ImsDutyGroupPEntity implements Serializable{ + + private static final long serialVersionUID = -2877981299088576156L; + + /** + * 主键ID + */ + @ApiModelProperty(value = "主键ID") + private Long id; + /** + * 租户ID + */ + private String tenantId; + /** + * 班组ID + */ + @ApiModelProperty(value = "班组ID") + private Long groupId; + /** + * 值班人员ID + */ + @ApiModelProperty(value = "值班人员ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long personId; + + /** + * 创建部门 + */ + @ApiModelProperty(value = "创建部门") + private String createDept; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyLogEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyLogEntity.java new file mode 100644 index 0000000..f80d0b0 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyLogEntity.java @@ -0,0 +1,106 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.io.Serializable; + +@Data +@TableName("hz_ims_duty_log") +@ApiModel(value = "ImsDutyLog对象", description = "值班日志") +@EqualsAndHashCode(callSuper = true) +public class ImsDutyLogEntity extends BaseEntity implements Serializable { + + private static final long serialVersionUID = -2877981299088576156L; + /** + * 值班ID + */ + @ApiModelProperty(value = "值班ID") + private Long dutyId; + /** + * 日期 + */ + @ApiModelProperty(value = "日期") + private String time; + /** + * 值班时间 + */ + private String dutyTime; + /** + * 班类 + */ + @ApiModelProperty(value = "班类") + private String classType; + /** + * 已执行操作票 + */ + private String operationFinish="0"; + /** + * 未执行操作票 + */ + private String operationUnFinish="0"; + /** + * 作废操作票 + */ + private String operationCancel="0"; + /** + * 执行中工作票 + */ + private String workDoing="0"; + /** + * 未执行工作票 + */ + private String workUnFinish="0"; + /** + * 终结工作票 + */ + private String workFinish="0"; + /** + * 作废工作票 + */ + private String workCancel="0"; + /** + * 交班值班长 + */ + private String handMaster; + /** + * 交班值班员 + */ + private String handNumber; + /** + * 交班时间 + */ + private String handTime; + /** + * 接班值班长 + */ + private String carryMaster; + /** + * 接班值班员 + */ + private String carryNumber; + /** + * 接班时间 + */ + private String carryTime; + /** + * 交接班会照片 + */ + private String dutyPic; + /** + * 值班情况 + */ + private String dutyStatus; + /** + * 上级通知及注意事项 + */ + private String notice; + + @ApiModelProperty(value = "租户ID") + private String tenantId; +} + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainEntity.java new file mode 100644 index 0000000..bfdb2b8 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainEntity.java @@ -0,0 +1,77 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +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.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + + +/** + * 实体类 + * + * @author Chill + */ +@Data +@TableName("hz_ims_duty_main") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyMain对象", description = "值班-班组信息") +public class ImsDutyMainEntity extends BaseEntity { + + private static final long serialVersionUID = -1913292438493450113L; + /** + * 主键ID + */ + @ApiModelProperty(value = "排班计划id") + private Long id; + /** + * 值班组id + */ + @ApiModelProperty(value = "值班组id") + private Long dutyGroupId; + + + /** + * 值班人IDS, ID之间用^隔开 + */ + @ApiModelProperty(value = "值班人IDS, ID之间用^隔开") + private String dutyPersonIds; + /** + * 值班日期 + */ + @DateTimeFormat(pattern = DateUtil.PATTERN_DATE) + @JsonFormat(pattern = DateUtil.PATTERN_DATE) + @ApiModelProperty(value = "值班日期") + private Date dutyDate; + /** + * 班次ID + */ + @ApiModelProperty(value = "班次ID") + private Long classId; + /** + * 班次名称 + */ + @TableField(exist=false) + @ApiModelProperty(value = "班次名称") + private String className; + /** + * 上一班值班ID + */ + @ApiModelProperty(value = "上一班值班ID") + private Long preDutyId; + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainPersonEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainPersonEntity.java new file mode 100644 index 0000000..a0aa677 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainPersonEntity.java @@ -0,0 +1,77 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +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.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + + +/** + * 实体类 + * + * @author TY + */ +@Data +@TableName("hz_ims_duty_main_person") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyMainPerson对象", description = "值班-人员信息") +public class ImsDutyMainPersonEntity extends BaseEntity { + + private static final long serialVersionUID = -1913292438493450113L; + + /** + * 值班组id + */ + @ApiModelProperty(value = "值班组id") + private Long dutyGroupId; + + /** + * 值班人ID + */ + @ApiModelProperty(value = "值班人ID") + private Long dutyPerson; + /** + * 值班负责人ID + */ + @ApiModelProperty(value = "值班负责人ID") + private Long dutyChargePerson; + /** + * 值班日期 + */ + @DateTimeFormat(pattern = DateUtil.PATTERN_DATE) + @JsonFormat(pattern = DateUtil.PATTERN_DATE) + @ApiModelProperty(value = "值班日期") + private Date dutyDate; + + /** + * 班次ID + */ + @ApiModelProperty(value = "班次ID") + private Long classId; + + /** + * 值班班组名称 + */ + @ApiModelProperty(value = "值班班组名称") + private String dutyGroupName; + /** + * 值班-班组ID + */ + @ApiModelProperty(value = "值班-班组ID") + private Long dutyMainId; + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainReportExcel.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainReportExcel.java new file mode 100644 index 0000000..a09c1c0 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainReportExcel.java @@ -0,0 +1,33 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author tanghaihao + * @date 2023年06月09日 10:56 + */ +@Data +public class ImsDutyMainReportExcel { + @ExcelProperty(value = "排班日期", index = 0) + @ColumnWidth(value = 20) + @ApiModelProperty(value = "排班日期") + private String dutyDate; + + @ExcelProperty(value = "班次", index = 1) + @ColumnWidth(value = 30) + @ApiModelProperty(value = "班次") + private String className; + + @ExcelProperty(value = "班组长", index = 2) + @ColumnWidth(value = 20) + @ApiModelProperty(value = "班组长") + private String managerName; + + @ExcelProperty(value = "组员", index = 3) + @ColumnWidth(value = 100) + @ApiModelProperty(value = "组员") + private String personNames; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainTemplateEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainTemplateEntity.java new file mode 100644 index 0000000..1f96abd --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyMainTemplateEntity.java @@ -0,0 +1,39 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +/** + * 实体类 + * + * @author Chill + */ +@Data +@TableName("hz_ims_duty_main_template") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyMainTemplate对象", description = "排班模版") +public class ImsDutyMainTemplateEntity extends BaseEntity { + + private static final long serialVersionUID = 4259568798118459986L; + + @ApiModelProperty("排班模版名称") + private String templateName; + @ApiModelProperty("班组值班周期id") + private String dutyOrderIds; + @ApiModelProperty("班组ID") + private String dutyArrIds; + @ApiModelProperty("值班周期的天数") + private Integer dutyNum; + @ApiModelProperty("班次类型ID") + private Long dutyClassTypeId; + @ApiModelProperty("灵活排班人员IDs") + private String flexible; + @ApiModelProperty("排班类型")//1:班组,2:灵活排班 + private Integer type; + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyRecEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyRecEntity.java new file mode 100644 index 0000000..2d427ac --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyRecEntity.java @@ -0,0 +1,112 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.baomidou.mybatisplus.annotation.SqlCondition; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.mp.support.QueryField; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + + +/** + * 实体类 + * + * @author Chill + */ +@Data +@TableName("hz_ims_duty_rec") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyRec对象", description = "交接班记录对象") +public class ImsDutyRecEntity extends BaseEntity { + + private static final long serialVersionUID = 4259568798118459986L; + /** + * 值班ID + */ + @ApiModelProperty(value = "值班ID") + private Long dutyId; + + + /** + * 交班时间 + */ + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + @ApiModelProperty(value = "交班时间") + private Date execTime; + + /** + * 接班时间 + */ + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + @ApiModelProperty(value = "接班时间") + private Date acceptTime; + + /** + * 交班情况 + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "交班情况") + private String dutyInfo; + + /** + * 遗留问题 + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "遗留问题") + private String leftProblem; + + /** + * 接班情况 + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "接班情况") + private String acceptInfo; + + /** + * 交接班流程实例ID + */ + @ApiModelProperty(value = "交接班流程实例ID") + private String processInstanceId; + + /** + * 巡检任务ID + */ + @ApiModelProperty(value = "巡检任务ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long inspectTaskId; + + /** + * 二维码内容 + */ + @ApiModelProperty(value = "二维码内容") + private String qrCodeContent; + + /** + * 二维码内容 + */ + @ApiModelProperty(value = "延时状态 0 、未延时 1、延时") + private Integer delayStatus; + + @ApiModelProperty(value = "当前处理环节") + @QueryField(condition = SqlCondition.LIKE) + private String dealChain; + + @ApiModelProperty(value = "值班日志") + @TableField(exist=false) + private ImsDutyLogEntity imsDutyLogEntity; + + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyRecQRRecordEntity.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyRecQRRecordEntity.java new file mode 100644 index 0000000..6328554 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/entity/ImsDutyRecQRRecordEntity.java @@ -0,0 +1,36 @@ +package org.springblade.hzinfo_inspect.duty.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +/** + * 实体类 + * + * @author Chill + */ +@Data +@TableName("hz_ims_duty_rec_qr_record") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyRecQRRecord对象", description = "交接班扫码记录对象") +public class ImsDutyRecQRRecordEntity extends BaseEntity { + private static final long serialVersionUID = 4259568798118459986L; + + /** + * 值班ID + */ + @ApiModelProperty(value = "值班ID") + private Long dutyId; + + /** + * 人员ID + */ + @ApiModelProperty(value = "人员ID") + private Long personId; + + @ApiModelProperty(value = "租户ID") + private String tenantId; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/DutyMainStatus.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/DutyMainStatus.java new file mode 100644 index 0000000..d47ade9 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/DutyMainStatus.java @@ -0,0 +1,48 @@ +package org.springblade.hzinfo_inspect.duty.enums; + +/** + * @Author: py + * 交接班状态值 + */ +public enum DutyMainStatus { + UMSUBMIT(0,"待值班"),EXEC(1,"值班中"),ACCEPT(2,"已完成"),NOWORK(3,"未值班"); + private Integer val; + private String name; + + DutyMainStatus(Integer val, String name) { + this.val = val; + this.name = name; + } + + public Integer getVal() { + return val; + } + + public void setVal(Integer val) { + this.val = val; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + /** + * 根据值获取枚举 + * @param value + * @return + */ + public static DutyMainStatus getDutyStatus(Integer value){ + for (DutyMainStatus status: DutyMainStatus.values()) { + if(status.getVal().equals(value)){ + return status; + } + } + return UMSUBMIT; + } + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/DutyRecStatus.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/DutyRecStatus.java new file mode 100644 index 0000000..d0e6e0f --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/DutyRecStatus.java @@ -0,0 +1,48 @@ +package org.springblade.hzinfo_inspect.duty.enums; + +/** + * @Author: py + * 交接班状态值 + */ +public enum DutyRecStatus { + UMSUBMIT(1,"未提交"),EXEC(2,"流程处理中"),ACCEPT(3,"已完成"),ANOMALY(4,"异常交接班"); + private Integer val; + private String name; + + DutyRecStatus(Integer val, String name) { + this.val = val; + this.name = name; + } + + public Integer getVal() { + return val; + } + + public void setVal(Integer val) { + this.val = val; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + /** + * 根据值获取枚举 + * @param value + * @return + */ + public static DutyRecStatus getDutyStatus(Integer value){ + for (DutyRecStatus status: DutyRecStatus.values()) { + if(status.getVal().equals(value)){ + return status; + } + } + return UMSUBMIT; + } + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/DutyStatus.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/DutyStatus.java new file mode 100644 index 0000000..e25bccb --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/DutyStatus.java @@ -0,0 +1,48 @@ +package org.springblade.hzinfo_inspect.duty.enums; + +/** + * @Author: py + * 调班状态值 + */ +public enum DutyStatus { + UMSUBMIT(1,"未提交"),CHANGE(2,"调班人审批"),BEIN(3,"主管审批"),FINISH(4,"已完成"),NOTPASS(5,"驳回"),CLOSED(6,"已关闭"); + private Integer val; + private String name; + + DutyStatus(Integer val, String name) { + this.val = val; + this.name = name; + } + + public Integer getVal() { + return val; + } + + public void setVal(Integer val) { + this.val = val; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + /** + * 根据值获取枚举 + * @param value + * @return + */ + public static DutyStatus getDutyStatus(Integer value){ + for (DutyStatus status:DutyStatus.values()) { + if(status.getVal().equals(value)){ + return status; + } + } + return UMSUBMIT; + } + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/JoinStatus.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/JoinStatus.java new file mode 100644 index 0000000..012b41d --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/JoinStatus.java @@ -0,0 +1,30 @@ +package org.springblade.hzinfo_inspect.duty.enums; +/** + * 交接班状态 + */ +public enum JoinStatus { + DUTY_WAIT(0, "待值班"), DUTY_ING(1, "值班中"),DUTY_FINISH(2, "已完成"); + private int status; + private String name; + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + JoinStatus(int status, String name){ + this.status = status; + this.name = name; + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/JoinType.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/JoinType.java new file mode 100644 index 0000000..8d267f7 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/enums/JoinType.java @@ -0,0 +1,30 @@ +package org.springblade.hzinfo_inspect.duty.enums; + +/** + * 交接班类型 + */ +public enum JoinType { + OVER(1, "交班待提交"), START(2, "接班待确认"),FINISH(3,"已完成"),REJECT(4,"已驳回"),; + private int type; + private String name; + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + JoinType(int type, String name) { + this.type = type; + this.name = name; + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/feign/IDutyClient.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/feign/IDutyClient.java new file mode 100644 index 0000000..61228e9 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/feign/IDutyClient.java @@ -0,0 +1,60 @@ +package org.springblade.hzinfo_inspect.duty.feign; + +import org.springblade.hzinfo_inspect.duty.vo.*; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +@FeignClient( + value = "hzwp-opt" +) +public interface IDutyClient { + String API_PREFIX = "/feign/dutyClient"; + String engineerDuty = API_PREFIX + "/engineerDuty"; + String ENGINEER_RELATIONSHIP_TEAM = API_PREFIX + "/relationshipTeam"; + String ENGINEER_HANDOVER = API_PREFIX + "/handover"; + + @GetMapping(engineerDuty) + EngineerDutyVo engineerDuty(@RequestParam("deptId") Long deptId); + + /** + * 工程运行-上一班组、下一班组 + * + * @param dutyId + * @param isQueryFlag + * @return + */ + @GetMapping(ENGINEER_RELATIONSHIP_TEAM) + RelationshipTeamVo relationshipTeam(@RequestParam("dutyId") Long dutyId, @RequestParam("isQueryFlag") Long isQueryFlag); + + /** + * 工程运行-交班记录 + * + * @param dutyId + * @return + */ + @GetMapping(ENGINEER_HANDOVER) + ImsDutyRecVO handover(@RequestParam("dutyId") Long dutyId); + + /** + * 交班记录列表 + * + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 列表 + */ + @GetMapping(API_PREFIX + "/dutyRecordList") + List dutyRecordList(@RequestParam(value = "startTime", required = false) String startTime, @RequestParam(value = "endTime", required = false) String endTime, @RequestParam(value = "limit", required = false) Integer limit); + + /** + * 交班记录列表 + * + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 列表 + */ + @GetMapping(API_PREFIX + "/dutyLogList") + List dutyLogList(@RequestParam(value = "startTime", required = false) String startTime, @RequestParam(value = "endTime", required = false) String endTime, @RequestParam(value = "limit", required = false) Integer limit); +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DateUtils.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DateUtils.java new file mode 100644 index 0000000..2122251 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DateUtils.java @@ -0,0 +1,442 @@ +package org.springblade.hzinfo_inspect.duty.utils; + +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.tool.utils.DateUtil; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.Period; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +@Slf4j +public class DateUtils { + + private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + private static final Calendar startDate = Calendar.getInstance(); + private static final Calendar endDate = Calendar.getInstance(); + + + /** + * 获取两日期之间相差的秒数 + * + * @param before + * @param after + * @return long + * 2018-11-06 11:37 + */ + public static long getSecondOfTwoDate(Date before, Date after) { + long beforeTime = before.getTime(); + long afterTime = after.getTime(); + return (afterTime - beforeTime) / (1000); + } + + /** + * 相差分钟 + * + * @param time + * @return + */ + public static Long getDifferMinute(String time) { + try { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + long currentTime = System.currentTimeMillis(); + //从对象中拿到时间 + long createTime = df.parse(df.format(strDate(time, false))).getTime(); + long diff = (currentTime - createTime) / 1000 / 60L; + return diff; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 相差时数 + * + * @param endDate + * @param nowDate + * @return + */ + public static Long getDifferTime(Date endDate, Date nowDate) { + long nd = 1000 * 24 * 60 * 60L; + long nh = 1000 * 60 * 60L; + // 获得两个时间的毫秒时间差异 + long diff = endDate.getTime() - nowDate.getTime(); + // 计算差多少小时 + long hour = diff % nd / nh; + return hour; + } + + /** + * 相差天数 + * + * @param endDate + * @param nowDate + * @return + */ + public static Long getDifferSky(Date endDate, Date nowDate) { + long nd = 1000 * 24 * 60 * 60L; + // 获得两个时间的毫秒时间差异 + long diff = endDate.getTime() - nowDate.getTime(); + // 计算差多少天 + long day = diff / nd; + return day; + } + + + /** + * 相差月数 + * + * @param start + * @param end + * @return + * @throws ParseException + */ + public static int getDifferMonth(String start, String end) throws ParseException { + startDate.setTime(sdf.parse(start)); + endDate.setTime(sdf.parse(end)); + int result = yearsBetween(start, end) * 12 + endDate.get(Calendar.MONTH) - startDate.get(Calendar.MONTH); + return result == 0 ? 1 : Math.abs(result); + + } + + + public static int yearsBetween(String start, String end) throws ParseException { + startDate.setTime(sdf.parse(start)); + endDate.setTime(sdf.parse(end)); + return (endDate.get(Calendar.YEAR) - startDate.get(Calendar.YEAR)); + } + + /** + * 相差年数 + * + * @param fromDate + * @param toDate + * @return + */ + public static int getDifferYear(String fromDate, String toDate) { + Period period = Period.between(LocalDate.parse(fromDate), LocalDate.parse(toDate)); + return period.getYears(); + } + + public static Date strDate(String time, Boolean isBoolean) throws Exception { + Date parse = null; + if (isBoolean) { + parse = new SimpleDateFormat("yyyy-MM-dd").parse(time); + return parse; + } + parse = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time); + return parse; + } + + public static String dateStr(Date date, Boolean isBoolean) { + if (isBoolean) { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + String dateString = format.format(date); + return dateString; + } + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = format.format(date); + return dateString; + } + + + /** + * 年 + */ + public static String yearDate(Date date, int i, String pattern) {//减多少年 + String reStr = ""; + try { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(date); + rightNow.add(Calendar.YEAR, i); + Date dt1 = rightNow.getTime(); + reStr = sdf.format(dt1); + } catch (Exception e) { + e.printStackTrace(); + } + return reStr; + } + + /** + * 月 + */ + public static String monthDate(Date date, int i, String pattern) {//加或减多少月 + String reStr = ""; + try { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(date); + rightNow.add(Calendar.MONTH, i); + Date dt1 = rightNow.getTime(); + reStr = sdf.format(dt1); + } catch (Exception e) { + e.printStackTrace(); + } + return reStr; + } + + /** + * 天 + */ + public static String dayDate(Date date, int i, String pattern) {//天 + String reStr = ""; + try { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(date); + rightNow.add(Calendar.DAY_OF_MONTH, i); + Date dt1 = rightNow.getTime(); + reStr = sdf.format(dt1); + } catch (Exception e) { + e.printStackTrace(); + } + return reStr; + } + + + /** + * @param date 日期 + * @param i 天数 + * @param bool true 加天数 false 减天数 + * @return + */ + public static String dayStringDate(String date, int i, boolean bool) {//天 + String reStr = ""; + try { + SimpleDateFormat sdf = new SimpleDateFormat(DateUtil.PATTERN_DATE);//"yyyy-MM-dd" + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(sdf.parse(date)); + if (bool) { + rightNow.add(Calendar.DAY_OF_MONTH, i); + } else { + rightNow.add(Calendar.DAY_OF_MONTH, -i); + } + Date dt1 = rightNow.getTime(); + reStr = sdf.format(dt1); + } catch (Exception e) { + e.printStackTrace(); + } + return reStr; + } + + /** + * 小时 + */ + public static String hrDate(Date date, int i, String pattern) {//减多少小时 + String reStr = ""; + try { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(date); + rightNow.add(Calendar.HOUR, i); + Date dt1 = rightNow.getTime(); + reStr = sdf.format(dt1); + } catch (Exception e) { + e.printStackTrace(); + } + return reStr; + } + + + /** + * 分钟 + */ + public static String minutlDate(Date date, int i, String pattern) {//减多少分钟 + String reStr = ""; + try { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(date); + rightNow.add(Calendar.MINUTE, i); + Date dt1 = rightNow.getTime(); + reStr = sdf.format(dt1); + } catch (Exception e) { + e.printStackTrace(); + } + return reStr; + } + + + /** + * 秒 + */ + public static String secDate(Date date, int i, String pattern) {//减多少秒 + String reStr = ""; + try { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(date); + rightNow.add(Calendar.SECOND, i); + Date dt1 = rightNow.getTime(); + reStr = sdf.format(dt1); + } catch (Exception e) { + e.printStackTrace(); + } + return reStr; + } + + + /** + * 获取某个月的天数 + * + * @param date + * @return + */ + public static int getDaysOfMonth(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + } + + + //秒转换(*小时*分*秒) + public static String secondConvert(int second) { + if (second == 0) { + return "0"; + } + int h = 0, d = 0, s = 0; + int temp = second % 3600; + if (second > 3600) { + h = second / 3600; + if (temp != 0) { + if (temp > 60) { + d = temp / 60; + if (temp % 60 != 0) { + s = temp % 60; + } + } else { + s = temp; + } + } + } else { + d = second / 60; + if (second % 60 != 0) { + s = second % 60; + } + } + + return h + "小时" + d + "分" + s + "秒"; + } + + + /** + * 获取两个日期之间的所有日期 + * + * @param startYear + * @param startMonth + * @param startDay + * @param endYear + * @param endMonth + * @param endDay + * @return + */ + public static List getTwoPeriodsAll(int startYear, int startMonth, int startDay, int endYear, int endMonth, int endDay) { + List list = new ArrayList<>(); + Calendar start = Calendar.getInstance(); + start.set(startYear, startMonth - 1, startDay); + Long startTIme = start.getTimeInMillis(); + Calendar end = Calendar.getInstance(); + end.set(endYear, endMonth - 1, endDay); + Long endTime = end.getTimeInMillis(); + + Long oneDay = 1000 * 60 * 60 * 24L; + + Long time = startTIme; + while (time <= endTime) { + Date d = new Date(time); + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + list.add(df.format(d)); + time += oneDay; + } + return list; + + } + + + public static int getDaysOfMonthWithNow(Date date) { + Calendar calendar = Calendar.getInstance(); + SimpleDateFormat fmt = new SimpleDateFormat("yyyyMM"); + if (fmt.format(date).equals(fmt.format(new Date()))) { + return calendar.get(Calendar.DAY_OF_MONTH); + } + calendar.setTime(date); + return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + } + + private static final long nd = 1000 * 24 * 60 * 60L; + private static final long nh = 1000 * 60 * 60L; + private static final long nm = 1000 * 60L; + + /** + * 计算两个时间段时间差,精确到秒 + * + * @param startTime 2019-04-10 17:16:11 + * @param endTime 2019-04-10 17:28:17 + * @return + */ + public static String computationTime(Date startTime, Date endTime) { + try { + log.info("开始时间->{}, 结束时间->{}", DateUtil.format(startTime, DateUtil.PATTERN_DATETIME), DateUtil.format(endTime, DateUtil.PATTERN_DATETIME)); + long diff = endTime.getTime() - startTime.getTime(); + long day = diff / nd; + long hour = diff % nd / nh; + long min = diff % nd % nh / nm; + long sec = diff % nd % nh % nm / 1000L; + String str = day + "天" + hour + "小时" + min + "分钟" + sec + "秒"; + return str; + } catch (Exception e) { + log.info("计算两个时间段时间差出错了, {}", e); + return null; + } + } + + + //获取最近一年的月份 + public static List getThisYearMonths() { + //建一个容器 + List months = new ArrayList<>(); + //获取日历对象 + Calendar calendar = Calendar.getInstance(); + //调整到12个月以前 + calendar.add(Calendar.MONTH, -12); + //循环12次获取12个月份 + for (int i = 0; i < 12; i++) { + //日历对象转为Date对象 + Date date = calendar.getTime(); + //将date转为字符串 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + String dateStr = sdf.format(date); + //向list集合中添加 + months.add(dateStr); + //每次月份+1 + calendar.add(Calendar.MONTH, 1); + } + return months; + } + + //获取当前一年的月份 + public static List getYearMonths(String year) { + //建一个容器 + List months = new ArrayList<>(); + //获取日历对象 + Calendar calendar = Calendar.getInstance(); + //调整到12个月以前 + calendar.add(Calendar.MONTH, -12); + //循环12次获取12个月份 + for (int i = 1; i <= 12; i++) { + if (i < 10) { + months.add(year + "-0" + i); + } else { + months.add(year + "-" + i); + } + } + return months; + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/utils/Tree.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/utils/Tree.java new file mode 100644 index 0000000..218733d --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/utils/Tree.java @@ -0,0 +1,22 @@ +package org.springblade.hzinfo_inspect.duty.utils; + +import java.util.List; + +/** + * 基础VO,用于tree结构 + * + * @author xiashandong + * @created 2020/9/9 17:30 + **/ +public interface Tree { + + List getChildren(); + + void setChildren(List children); + + Long getId(); + + Long getParentId(); + + String getName(); +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/AreaDutyVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/AreaDutyVo.java new file mode 100644 index 0000000..848c640 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/AreaDutyVo.java @@ -0,0 +1,229 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "区域值班信息对象") +public class AreaDutyVo { + + @ApiModelProperty(value = "机构Id") + private Long departId; + + @ApiModelProperty(value = "机构名称") + private String departName; + + @ApiModelProperty(value = "任务总数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer taskCount; + + @ApiModelProperty(value = "完成任务数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer finishTaskCount; + + @ApiModelProperty(value = "发电量") + @JsonSerialize(nullsUsing = NullSerializer.class) + private double generatingCapacity; + + @ApiModelProperty(value = "上班偷偷上网量") + @JsonSerialize(nullsUsing = NullSerializer.class) + private double onlineCapacity; + + @ApiModelProperty(value = "班次名称") + private String className; + + @ApiModelProperty(value = "班组名称") + private String groupName; + + @ApiModelProperty(value = "负责人名称") + private String managerName; + + @ApiModelProperty(value = "负责人手机号") + private String managerPhone; + + @ApiModelProperty(value = "上一班组对象") + private NextDutyInfoVo upDutyInfoVo; + + @ApiModelProperty(value = "下一班组对象") + private NextDutyInfoVo nextDutyInfoVo; + + /****/ + @ApiModelProperty(value = "站点总数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer stationSum; + + @ApiModelProperty(value = "站点运行数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer stationRun; + + /****/ + @ApiModelProperty(value = "工作票张数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer workTicketCount; + + @ApiModelProperty(value = "操作票张数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer operationTicketCount; + + @ApiModelProperty(value = "移交票张数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer handoverTicketCount; + + @ApiModelProperty(value = "结束票张数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer closeTicketCount; + + @ApiModelProperty(value = "作废票张数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer voidTicketCount; + + @ApiModelProperty(value = "延期票张数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer deferredTicketCount; + + + /****/ + @ApiModelProperty(value = "巡检总数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer inspectionSum; + @ApiModelProperty(value = "普通巡检任务数量") + @JsonSerialize(nullsUsing = NullSerializer.class) + private int normalTaskSum; + @ApiModelProperty(value = "机器人巡检任务") + @JsonSerialize(nullsUsing = NullSerializer.class) + private int robotTaskSum; + @ApiModelProperty(value = "视频巡检任务") + @JsonSerialize(nullsUsing = NullSerializer.class) + private int videoTaskSum; + @ApiModelProperty(value = "巡检任务Id,按逗号分隔") + private String inspectTaskIds; + + @ApiModelProperty(value="检修任务数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer overhaulCount; + + @ApiModelProperty(value = "巡检完成数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer inspectionFinish; + + @ApiModelProperty(value="巡检任务完成率") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Double inspectionFinishRate; + + @ApiModelProperty(value = "消缺总数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer shortagesSum; + + @ApiModelProperty(value = "现象Ids") + private String phenomenonIds; + + @ApiModelProperty(value = "消缺数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer shortages; + + @ApiModelProperty(value = "消缺率") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Double shortagesRate; + + @ApiModelProperty(value = "定期工作总数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer workRegularlySum; + + @ApiModelProperty(value = "定期工作任务总数") + private String mainTaskIds; + + @ApiModelProperty(value = "定期工作数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer workRegularly; + + @ApiModelProperty(value = "定期工作完成率") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Double workRegularlyRate; + + + /****/ + @ApiModelProperty(value = "当月日常维护总数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer maintainSumMoth; + + @ApiModelProperty(value = "当月日常维护完成数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer maintainFinishSumMoth; + + @ApiModelProperty(value = "当月日常维护完成率") + private String maintainRateMoth; + + @ApiModelProperty(value = "当月消缺总数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer shortagesSumMoth; + + @ApiModelProperty(value = "当月消缺数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer shortagesMoth; + + @ApiModelProperty(value = "当月消缺完成率") + private String shortagesRateMoth; + + @ApiModelProperty(value = "当月巡检总数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private int inspectionSumMoth; + + @ApiModelProperty(value = "当月巡检数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private int inspectionMoth; + + @ApiModelProperty(value = "当月巡检完成率") + private String inspectionRateMoth; + + @ApiModelProperty(value = "当月检修总数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer overhaulSumMoth; + + @ApiModelProperty(value = "当月检修完成数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer overhaulFinishSumMoth; + + @ApiModelProperty(value = "当月检修完成率") + private String overhaulRateMoth; + + @ApiModelProperty(value = "当月操作票总数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer operateSumMoth; + + @ApiModelProperty(value = "当月操作票合格数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer operateQualifySumMoth; + + @ApiModelProperty(value = "当月操作票合格率") + private String operateRateMoth; + + @ApiModelProperty(value = "当月工作票总数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer workSumMoth; + + @ApiModelProperty(value = "当月工作票合格数") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer workQualifySumMoth; + + @ApiModelProperty(value = "当月工作票合格率") + private String workRateMoth; + + @ApiModelProperty(value = "排序字段") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer sort; + + @ApiModelProperty(value = "当班开始时间") + private String startTimeDuty; + + @ApiModelProperty(value = "当班结束时间") + private String endTimeDuty; + + @ApiModelProperty(value = "当月开始时间") + private String endTimeMoth; + + @ApiModelProperty(value = "当月结束时间") + private String startTimeMoth; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/AuditVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/AuditVo.java new file mode 100644 index 0000000..32c9840 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/AuditVo.java @@ -0,0 +1,23 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AuditVo { + + @ApiModelProperty(value = "人员ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long personId; + + @ApiModelProperty(value = "人员名称") + private String personName; + + @ApiModelProperty(value = "手机号") + private String phone; + + @ApiModelProperty(value = "人员头像") + private String personAvatar; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ChangeDutyMainVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ChangeDutyMainVo.java new file mode 100644 index 0000000..86129bf --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ChangeDutyMainVo.java @@ -0,0 +1,41 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + +@Data +@ApiModel(value = "调班对象", description = "调班填写的相关信息") +public class ChangeDutyMainVo extends ImsDutyMainEntity { + + @ApiModelProperty(value = "人员ID") + private List personId; + + @DateTimeFormat(pattern = DateUtil.PATTERN_DATE) + @JsonFormat(pattern = DateUtil.PATTERN_DATE) + @ApiModelProperty(value = "调班开始日期") + private Date changeStartDate; + + @DateTimeFormat(pattern = DateUtil.PATTERN_DATE) + @JsonFormat(pattern = DateUtil.PATTERN_DATE) + @ApiModelProperty(value = "调班开始日期") + private Date changeEndtDate; + @JsonSerialize(nullsUsing = NullSerializer.class) + @ApiModelProperty(value = "班次ID") + private Long classId; + /** + * 调班类型 + * 1为调入,2为调出 + */ + @ApiModelProperty(value = "调班类型") + private Integer type;//1为调入,2为调出 +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyClassTypeTree.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyClassTypeTree.java new file mode 100644 index 0000000..c511a8a --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyClassTypeTree.java @@ -0,0 +1,29 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springblade.hzinfo_inspect.duty.utils.Tree; + +import java.util.List; + +@Data +@ApiModel(value = "机构-值班班次类型-班次树",description = "机构-值班班次类型-班次树") +public class DutyClassTypeTree implements Tree { + @ApiModelProperty("树ID") + private Long id; + + @ApiModelProperty("父节点树ID") + @JsonIgnore + private Long parentId; + + @ApiModelProperty("节点名称") + private String name; + + @ApiModelProperty("子节点") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List children; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyGroupMemberVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyGroupMemberVo.java new file mode 100644 index 0000000..dccb1c0 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyGroupMemberVo.java @@ -0,0 +1,22 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class DutyGroupMemberVo { + + @ApiModelProperty(value = "班组Id") + private String groupId; + + @ApiModelProperty(value = "班组名称") + private String groupName; + + @ApiModelProperty(value = "机构Id") + private Long createDept; + + @ApiModelProperty(value = "班组成员对象") + private List member; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyInfoVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyInfoVo.java new file mode 100644 index 0000000..860ab52 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyInfoVo.java @@ -0,0 +1,68 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.sql.Time; +import java.util.Date; + +/** + * 当前值班信息 + */ +@Data +public class DutyInfoVo extends BaseEntity { + + @ApiModelProperty(value = "班组Id") + private Long groupId; + + @ApiModelProperty(value = "上一班组Id") + private Long preDutyId; + + @ApiModelProperty(value = "班组名称") + private String groupName; + + @ApiModelProperty(value = "班次名称") + private String className; + + @ApiModelProperty(value = "负责人ID") + private String managerId; + + @ApiModelProperty(value = "负责人名称") + private String managerName; + + @ApiModelProperty(value = "负责人手机号") + private String managerPhone; + + @ApiModelProperty(value = "发电量") + private double generatingCapacity; + + @ApiModelProperty(value = "上班偷偷上网量") + private double onlineCapacity; + + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "开始时间") + @TableField("START_TIME") + private Time startTime; + + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "开始时间") + @TableField("END_TIME") + private Time endTime; + + @ApiModelProperty(value = "日期") + @TableField("DATE_TIME") + private Date dateTime; + + @ApiModelProperty(value = "上一班组对象") + private NextDutyInfoVo upDutyInfoVo; + + @ApiModelProperty(value = "下一班组对象") + private NextDutyInfoVo nextDutyInfoVo; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyLog.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyLog.java new file mode 100644 index 0000000..22274de --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyLog.java @@ -0,0 +1,25 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class DutyLog { + private Long dutyId; + + private Long logPersonId; + + private String logPersonName; + + private String status; + + private String content; + + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + private Date logTime; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyMainInfoVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyMainInfoVo.java new file mode 100644 index 0000000..303d4e3 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyMainInfoVo.java @@ -0,0 +1,69 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springframework.format.annotation.DateTimeFormat; + +import java.sql.Time; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + * 当前值班信息 + */ +@Data +public class DutyMainInfoVo extends ImsDutyMainEntity { + + @ApiModelProperty(value = "班组名称") + private String groupName; + + @ApiModelProperty(value = "班次名称") + private String className; + + @ApiModelProperty(value = "上一班值班ID") + private Long preDutyId; + + @ApiModelProperty(value = "负责人ID") + private String managerId; + + @ApiModelProperty(value = "负责人名称") + private String managerName; + + @ApiModelProperty(value = "负责人手机号") + private String managerPhone; + + @ApiModelProperty(value = "班员集合") + private List auditList; + + @ApiModelProperty(value = "发电量") + private double generatingCapacity; + + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "开始时间") + private Time startTime; + + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "结束时间") + private Time endTime; + + @ApiModelProperty(value = "日期") + @TableField("DATE_TIME") + private Date dateTime; + + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + @ApiModelProperty(value = "当班开始时间") + private LocalDateTime startDate; + + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + @ApiModelProperty(value = "当班结束时间") + private LocalDateTime endDate; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyMemberVO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyMemberVO.java new file mode 100644 index 0000000..19cabea --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyMemberVO.java @@ -0,0 +1,18 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DutyMemberVO { + + @ApiModelProperty(value = "班组人员Id") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long personId; + + @ApiModelProperty(value = "班组人员名称") + private String personName; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyPersonalReportVO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyPersonalReportVO.java new file mode 100644 index 0000000..5b4f0c5 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyPersonalReportVO.java @@ -0,0 +1,24 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class DutyPersonalReportVO implements Serializable { + private static final long serialVersionUID = -4173567845695989296L; + @JsonSerialize(nullsUsing = NullSerializer.class) + @ApiModelProperty("值班天数") + private Integer dutyDayNum; + + @JsonSerialize(nullsUsing = NullSerializer.class) + @ApiModelProperty("值班次数") + private Integer dutyNum; + + @JsonSerialize(nullsUsing = NullSerializer.class) + @ApiModelProperty("值班日期") + private String dutyDate; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyRecordVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyRecordVo.java new file mode 100644 index 0000000..96ffcf9 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyRecordVo.java @@ -0,0 +1,21 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author ysj + * @describe 值班记录 + */ +@Data +public class DutyRecordVo { + + @ApiModelProperty("值班记录时间") + private String time; + + @ApiModelProperty("值班记录内容") + private String content; + + @ApiModelProperty("漫游地址") + private String link; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyReportVO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyReportVO.java new file mode 100644 index 0000000..cdc6aa4 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyReportVO.java @@ -0,0 +1,40 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; + +import java.io.Serializable; +import java.util.List; + +@Data +public class DutyReportVO implements Serializable { + private static final long serialVersionUID = 3273581622730234931L; + + private Integer index; + + @ApiModelProperty("班次名称") + private String classGroupName; + + @JsonSerialize(nullsUsing = NullSerializer.class) + @ApiModelProperty("值班次数") + private Integer dutyNum; + + @ApiModelProperty("值班时长") + private Double dutyDuration; + + @JsonSerialize(nullsUsing = NullSerializer.class) + @ApiModelProperty("发现问题数量") + private Integer findProblemNum; + + @ApiModelProperty("延迟交接班") + private String delayChangeShifts; + + @ApiModelProperty("异常交接班") + private String exceptionChangeShifts; + + @ApiModelProperty("班组值班List") + private List imsDutyMainEntityList; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyShiftRecord.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyShiftRecord.java new file mode 100644 index 0000000..bc07a3a --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyShiftRecord.java @@ -0,0 +1,36 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecEntity; +import org.springblade.hzinfo_inspect.duty.enums.DutyRecStatus; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class DutyShiftRecord { + + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + private Date changeTime; + + private Long onPersonId; + + private String onPersonName; + + private Long offPersonId; + + private String offPersonName; + + private String condition; + + public static DutyShiftRecord of(ImsDutyRecEntity entity) { + DutyShiftRecord dutyShiftRecord = new DutyShiftRecord(); + dutyShiftRecord.setChangeTime(entity.getExecTime()); + DutyRecStatus status = DutyRecStatus.getDutyStatus(entity.getStatus()); + dutyShiftRecord.setCondition(status.getName()); + return dutyShiftRecord; + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyTaskVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyTaskVo.java new file mode 100644 index 0000000..5b6043a --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/DutyTaskVo.java @@ -0,0 +1,32 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DutyTaskVo { + + @ApiModelProperty(value = "日常维护总数") + private Integer maintainSum; + + @ApiModelProperty(value = "日常维护完成数量") + private Integer maintainFinish; + + @ApiModelProperty(value = "消缺总数") + private Integer shortagesSum; + + @ApiModelProperty(value = "消缺数量") + private Integer shortages; + + @ApiModelProperty(value = "检修数量") + private Integer overhaul; + + @ApiModelProperty(value = "检修完成数量") + private Integer overhaulFinish; + + @ApiModelProperty(value = "巡检数量") + private Integer inspect; + + @ApiModelProperty(value = "巡检完成数量") + private Integer inspectFinish; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/EngineerDutyVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/EngineerDutyVo.java new file mode 100644 index 0000000..96d0eaf --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/EngineerDutyVo.java @@ -0,0 +1,69 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.sql.Time; +import java.util.Date; +import java.util.List; + +/** + * @author ysj + * @deprecate 当前值班信息 + */ +@Data +public class EngineerDutyVo { + + + @ApiModelProperty(value = "值班主键") + private Long dutyId; + + @ApiModelProperty(value = "班组主键") + private Long groupId; + + @ApiModelProperty(value = "班组名称") + private String groupName; + + @ApiModelProperty(value = "班次Id") + private Long classId; + + @ApiModelProperty(value = "班次名称") + private String className; + + @ApiModelProperty(value = "负责人ID") + private Long managerId; + + @ApiModelProperty(value = "负责人头像") + private String managerAvatar; + + @ApiModelProperty(value = "负责人名称") + private String managerName; + + @ApiModelProperty(value = "负责人手机号") + private String managerPhone; + + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "开始时间") + private Time startTime; + + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "结束时间") + private Time endTime; + + @ApiModelProperty(value = "日期") + @DateTimeFormat(pattern = DateUtil.PATTERN_DATE) + @JsonFormat(pattern = DateUtil.PATTERN_DATE) + private Date dateTime; + + @ApiModelProperty(value = "班组成员") + private List members; + + @ApiModelProperty(value = "值班记录") + private List dutyRecord; +} + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ExchangeGroupLeader.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ExchangeGroupLeader.java new file mode 100644 index 0000000..118cc5b --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ExchangeGroupLeader.java @@ -0,0 +1,24 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class ExchangeGroupLeader implements Serializable { + @DateTimeFormat(pattern = DateUtil.PATTERN_DATE) + @JsonFormat(pattern = DateUtil.PATTERN_DATE) + private Date fromDate; + private Long fromClassId; + private Long fromDeptId; + + @DateTimeFormat(pattern = DateUtil.PATTERN_DATE) + @JsonFormat(pattern = DateUtil.PATTERN_DATE) + private Date toDate; + private Long toClassId; + private Long toDeptId; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/FlexibleSchedulingVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/FlexibleSchedulingVo.java new file mode 100644 index 0000000..2cd24cc --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/FlexibleSchedulingVo.java @@ -0,0 +1,28 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class FlexibleSchedulingVo { + + + /** + * 值班组长ID + */ + @JsonSerialize(nullsUsing = NullSerializer.class) + @ApiModelProperty("值班组长ID") + private String chargeId; + + /** + * 人员IDs + */ + @JsonSerialize(nullsUsing = NullSerializer.class) + @ApiModelProperty("人员ID") + private List personIds; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/HomePageDutyMainInfoVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/HomePageDutyMainInfoVo.java new file mode 100644 index 0000000..825d18c --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/HomePageDutyMainInfoVo.java @@ -0,0 +1,18 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 首页值班信息 + */ +@Data +public class HomePageDutyMainInfoVo { + + @ApiModelProperty(value = "值班对象信息") + DutyMainInfoVo headInfo; + + @ApiModelProperty(value = "接班对象信息") + DutyMainInfoVo corryInfo; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyChangeTowVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyChangeTowVo.java new file mode 100644 index 0000000..ad34359 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyChangeTowVo.java @@ -0,0 +1,30 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyChangeEntity; + +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyChangeVO对象", description = "调班") +public class ImsDutyChangeTowVo extends ImsDutyChangeEntity { + + private static final long serialVersionUID = 510101758138L; + + @ApiModelProperty("申请人班次名称") + private String applyClassName; + @ApiModelProperty("调班人班次名称") + private String acceptClassName; + @ApiModelProperty("申请人班组名称") + private String applyGroupName; + @ApiModelProperty("调班人班组名称") + private String acceptGroupName; + @ApiModelProperty("申请人班次类型") + private String applyClassTypeName; + @ApiModelProperty("调班人班次类型") + private String acceptClassTypeName; + @ApiModelProperty("调班主管名称") + private String managerName; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyChangeVO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyChangeVO.java new file mode 100644 index 0000000..59f90b8 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyChangeVO.java @@ -0,0 +1,71 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyChangeEntity; + +/** + * 模型VO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyChangeVO对象", description = "调班") +public class ImsDutyChangeVO extends ImsDutyChangeEntity { + + private static final long serialVersionUID = 510101758138L; + + /** + * 申请人名称 + */ + @ApiModelProperty(value = "申请人名称") + private String applyPersonName; + /** + * 调班人名称 + */ + @ApiModelProperty(value = "调班人名称") + private String acceptPersonName; + /** + * 审核人名称 + */ + @ApiModelProperty(value = "审核人名称") + private String managerName; + /** + * 创建人名称 + */ + @ApiModelProperty(value = "创建人名称") + private String createUserName; + /** + * 更新人名称 + */ + @ApiModelProperty(value = "更新人名称") + private String updateUserName; + + /** + * 状态名称 + */ + @ApiModelProperty(value = "状态名称") + private String statusName; + + /** + * 班次名称 + */ + @ApiModelProperty(value = "班次名称") + private String className; + + + /** + * 调班对象值班信息 + */ + @ApiModelProperty(value = "调班对象值班信息") + private ImsSchedulingVo acceptDutyMainVo; + + /** + * 申请对象值班信息 + */ + @ApiModelProperty(value = "申请对象值班信息") + private ImsSchedulingVo applyDutyMainVo; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyClassVO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyClassVO.java new file mode 100644 index 0000000..79a7763 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyClassVO.java @@ -0,0 +1,20 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassEntity; + +/** + * 模型VO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ImsDutyClassVO extends ImsDutyClassEntity { + + private static final long serialVersionUID = 1L; + + private String classTypeIds; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyEmergencyVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyEmergencyVo.java new file mode 100644 index 0000000..2086be1 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyEmergencyVo.java @@ -0,0 +1,86 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.baomidou.mybatisplus.annotation.SqlCondition; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.mp.support.QueryField; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + + +/** + * 实体类 + * + * @author ty + */ +@Data +public class ImsDutyEmergencyVo extends BaseEntity { + + private static final long serialVersionUID = 4259568798118459986L; + /** + * 值班开始日期 + */ + @DateTimeFormat(pattern = DateUtil.PATTERN_DATE) + @JsonFormat(pattern = DateUtil.PATTERN_DATE) + @ApiModelProperty(value = "值班开始日期") + private Date dutyStartTime; + /** + * 值班结束日期 + */ + @DateTimeFormat(pattern = DateUtil.PATTERN_DATE) + @JsonFormat(pattern = DateUtil.PATTERN_DATE) + @ApiModelProperty(value = "值班结束日期") + private Date dutyEndTime; + /** + * 班次 + */ + @ApiModelProperty(value = "班次") + private List dutyClass; + /** + * 登记人 + */ + @ApiModelProperty(value = "登记人") + @JsonSerialize(nullsUsing = NullSerializer.class) + private List registrant; + /** + * 值班长 + */ + @ApiModelProperty(value = "值班长") + @JsonSerialize(nullsUsing = NullSerializer.class) + private List chargePerson; + /** + * 登记时间 + */ + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + @ApiModelProperty(value = "登记时间") + private Date registerTime; + /** + * 事件主题 + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "事件主题") + private String eventTitle; + /** + * 事件内容 + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "事件内容") + private String eventInfo; + + /** + * 事件方式 + */ + @QueryField(condition = SqlCondition.LIKE) + @ApiModelProperty(value = "事件方式") + private String eventType; + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupGenerationVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupGenerationVo.java new file mode 100644 index 0000000..4649537 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupGenerationVo.java @@ -0,0 +1,34 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springframework.format.annotation.DateTimeFormat; + +import java.sql.Time; + +@Data +public class ImsDutyGroupGenerationVo extends ImsDutyMainEntity { + + @ApiModelProperty(value = "班组名称") + private String groupName; + + @ApiModelProperty(value = "班次名称") + private String className; + + @ApiModelProperty(value = "班次类型名称") + private String classTypeName; + + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "值班开始时间") + private Time startTime; + + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "值班结束时间") + private Time endTime; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupPVO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupPVO.java new file mode 100644 index 0000000..a807beb --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupPVO.java @@ -0,0 +1,32 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import io.swagger.annotations.ApiParam; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupPEntity; + +/** + * 模型VO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ImsDutyGroupPVO extends ImsDutyGroupPEntity { + + private static final long serialVersionUID = 1L; + + /** + * 人员名称 + */ + @ApiParam(value = "人员名称") + private String groupName; + + /** + * 标识 true 为负责人 + */ + @ApiParam(value = "标识") + private boolean signage; + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupPersonVO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupPersonVO.java new file mode 100644 index 0000000..d10d3f7 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupPersonVO.java @@ -0,0 +1,24 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupEntity; + +import java.util.List; + +/** + * 模型VO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyGroupVO对象", description = "值班小组对象") +public class ImsDutyGroupPersonVO extends ImsDutyGroupEntity { + + + private static final long serialVersionUID = -5209355293631668430L; + + List imsDutyGroupPEntityList; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupVO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupVO.java new file mode 100644 index 0000000..c9100c4 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyGroupVO.java @@ -0,0 +1,48 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupEntity; +import org.springframework.beans.BeanUtils; + +/** + * 模型VO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "ImsDutyGroupVO对象", description = "值班小组对象") +public class ImsDutyGroupVO extends ImsDutyGroupEntity { + + + private static final long serialVersionUID = -5209355293631668430L; + + /** + * personId 通过^隔开 + */ + @ApiModelProperty(value = "personId 通过^隔开") + private String personId; + + /** + * personName 通过^隔开 + */ + private String personName; + + /** + * 班组人数 + */ + private Integer repairPersonnelSum; + + + @ApiModelProperty(value = "是否更新排班 true 是 false 否") + private Boolean updateDuty; + + public ImsDutyGroupEntity toEntity() { + ImsDutyGroupEntity entity = new ImsDutyGroupEntity(); + BeanUtils.copyProperties(this, entity); + return entity; + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyMainMergeVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyMainMergeVo.java new file mode 100644 index 0000000..979004a --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyMainMergeVo.java @@ -0,0 +1,80 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class ImsDutyMainMergeVo { + + @ApiModelProperty(value = "值班ID") + private Long dutyId; + + @ApiModelProperty(value = "班次ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long classId; + + @ApiModelProperty(value = "班组ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long groupId; + + @ApiModelProperty(value = "班次名称") + private String className; + + @ApiModelProperty(value = "班组名称") + private String groupName; + + @ApiModelProperty(value = "联系人手机号") + private String phone; + + @ApiModelProperty(value = "状态") + private int status; + + @ApiModelProperty(value = "负责人ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long managerId; + + @ApiModelProperty(value = "下一班值班ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long descDutyId; + + @ApiModelProperty(value = "下一班班次ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long descClassId; + + @ApiModelProperty(value = "下一班班组ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long descGroupId; + + @ApiModelProperty(value = "下一班班次名称") + private String descClassName; + + @ApiModelProperty(value = "下一班班组名称") + private String descGroupName; + + @ApiModelProperty(value = "下一班联系人手机号") + private String descPhone; + + @ApiModelProperty(value = "下一班负责人ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long descManagerId; + + @ApiModelProperty(value = "上一班值班ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long preDutyId; + + @ApiModelProperty(value = "机构ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long deptId; + + @ApiModelProperty(value = "站点名称") + private String stationName; + + @ApiModelProperty(value = "当前班组负责人") + private String userName; + + @ApiModelProperty(value = "下一班班组负责人") + private String descUserName; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyMainVO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyMainVO.java new file mode 100644 index 0000000..b025caf --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyMainVO.java @@ -0,0 +1,22 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; + +/** + * 模型VO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ImsDutyMainVO extends ImsDutyMainEntity { + + private static final long serialVersionUID = 1L; + + private String userId; + + private String userName; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecQRRecordExtendVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecQRRecordExtendVo.java new file mode 100644 index 0000000..b3b5f10 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecQRRecordExtendVo.java @@ -0,0 +1,10 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import lombok.Data; + +@Data +public class ImsDutyRecQRRecordExtendVo { + + private String dutyId; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecQRRecordVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecQRRecordVo.java new file mode 100644 index 0000000..81e0151 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecQRRecordVo.java @@ -0,0 +1,26 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecQRRecordEntity; + +@Data +public class ImsDutyRecQRRecordVo extends ImsDutyRecQRRecordEntity { + @ApiModelProperty(value = "班组ID") + private Long groupId; + @ApiModelProperty(value = "值班日期") + private String dutyDate; + @ApiModelProperty(value = "班次ID") + private Long classId; + @ApiModelProperty(value = "开始时间") + private String startTime; + @ApiModelProperty(value = "结束时间") + private String endTime; + @ApiModelProperty(value = "班组名称") + private String groupName; + @ApiModelProperty(value = "班次名称") + private String className; + @ApiModelProperty(value = "用户名称") + private String userName; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecTestVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecTestVo.java new file mode 100644 index 0000000..c98a709 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecTestVo.java @@ -0,0 +1,17 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import lombok.Data; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecEntity; + +@Data +public class ImsDutyRecTestVo extends ImsDutyRecEntity { + + private String dutyDate; + + private String startTime; + + private String endTime; + + private Long managerId; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecVO.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecVO.java new file mode 100644 index 0000000..a9dc5e2 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsDutyRecVO.java @@ -0,0 +1,48 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyLogEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecEntity; + +/** + * 模型VO + * + * @author Chill + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ImsDutyRecVO extends ImsDutyRecEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "交班申请人") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long personId; + + /** + * 交班对象值班信息 + */ + @ApiModelProperty(value = "交班对象值班信息") + private ImsSchedulingVo headDutyMainVo; + + /** + * 接班对象值班信息 + */ + @ApiModelProperty(value = "接班对象值班信息") + private ImsSchedulingVo carryDutyMainVo; + + @ApiModelProperty(value = "接班开始时间 yyyy-MM-dd") + private String startDate; + @ApiModelProperty(value = "接班结束时间 yyyy-MM-dd") + private String endDate; + + @ApiModelProperty(value = "站点名称") + private String stationName; + + @ApiModelProperty(value = "值班日志") + private ImsDutyLogEntity imsDutyLogEntity; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsRecVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsRecVo.java new file mode 100644 index 0000000..4456bd4 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsRecVo.java @@ -0,0 +1,19 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecEntity; + +@Data +public class ImsRecVo extends ImsDutyRecEntity { + + @ApiModelProperty(value = "班组名称") + private String groupName; + + @ApiModelProperty(value = "班次名称") + private String className; + + @ApiModelProperty(value = "值班日期") + private String date; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsSchedulingVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsSchedulingVo.java new file mode 100644 index 0000000..37ae016 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/ImsSchedulingVo.java @@ -0,0 +1,85 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; + +import java.util.List; +import java.util.Map; + +@Data +public class ImsSchedulingVo extends ImsDutyMainEntity { + private String name; + + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long classId; + + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long groupId; + + //private String className; + + private String groupName; + + @ApiModelProperty(value = "班组ID 通过^隔开",required = true) + private String groupIds; + + @ApiModelProperty(value = "班组名称 通过^隔开",required = true) + private String groupNames; + + @ApiModelProperty(value = "班次ID 通过^隔开",required = true) + private String classIds; + + @ApiModelProperty(value = "班次名称 通过^隔开",required = true) + private String classNames; +/* + @ApiModelProperty(value = "年份") + private int year; + + @ApiModelProperty(value = "月份") + private int month;*/ + + @ApiModelProperty(value = "是否排版",required = true) + private boolean compose; + @ApiModelProperty(value = "开始时间",required = true) + private String startDate; + @ApiModelProperty(value = "结束时间",required = true) + private String endDate; + @ApiModelProperty(value = "值班开始时间") + private String startTime; + @ApiModelProperty(value = "值班结束时间") + private String endTime; + + @ApiModelProperty("班次类型名称") + private String classTypeName; + @ApiModelProperty("班组负责人") + private Long managerId; + @ApiModelProperty("班组负责人名称") + private String managerName; + @ApiModelProperty("用户名称") + private String userName; + + @ApiModelProperty("班组值班周期id") + private Map dutyOrderIds; + @ApiModelProperty("班组ID") + private String[] dutyArrIds; + @ApiModelProperty("值班周期的天数") + private int dutyNum; + @ApiModelProperty("排班模版名称") + private String templateName; + @ApiModelProperty("排班类型: 1、轮询 2 、周期") + private Integer schedulingType; + @ApiModelProperty("人员类型: 1、班组 2 、人员") + private Integer personType; + @ApiModelProperty("是否保存为模版,true 是,false 否") + private Boolean template; + @ApiModelProperty("班次类型ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long dutyClassTypeId; + @ApiModelProperty("灵活人员排班-轮询") + private Map> rosters; + @ApiModelProperty("灵活人员排班-周期") + private Map> flexible; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/NextDutyInfoVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/NextDutyInfoVo.java new file mode 100644 index 0000000..4b84de4 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/NextDutyInfoVo.java @@ -0,0 +1,47 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Time; +import java.util.Date; + +/** + * 下一值班对象 + */ +@Data +public class NextDutyInfoVo{ + + @ApiModelProperty(value = "发电量") + private double generatingCapacity; + + @ApiModelProperty(value = "上班偷偷上网量") + private double onlineCapacity; + + @ApiModelProperty(value = "班次名称") + private String className; + + @ApiModelProperty(value = "班组名称") + private String groupName; + + @ApiModelProperty(value = "负责人名称") + private String managerName; + + @ApiModelProperty(value = "负责人手机号") + private String managerPhone; + + @ApiModelProperty(value = "任务总数") + private Integer taskCount; + + @ApiModelProperty(value = "完成任务数") + private Integer finishTaskCount; + + @ApiModelProperty(value = "开始时间") + private Time startTime; + + @ApiModelProperty(value = "开始时间") + private Time endTime; + + @ApiModelProperty(value = "日期") + private Date dateTime; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/RelationshipTeamVo.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/RelationshipTeamVo.java new file mode 100644 index 0000000..38b87f4 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/duty/vo/RelationshipTeamVo.java @@ -0,0 +1,68 @@ +package org.springblade.hzinfo_inspect.duty.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.sql.Time; +import java.util.Date; +import java.util.List; + +/** + * @author ysj + * @deprecate 上一班组、下一班组信息 + */ +@Data +public class RelationshipTeamVo { + + @ApiModelProperty(value = "值班主键") + private Long dutyId; + + @ApiModelProperty(value = "日期") + @DateTimeFormat(pattern = DateUtil.PATTERN_DATE) + @JsonFormat(pattern = DateUtil.PATTERN_DATE) + private Date dutyDate; + + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "开始时间") + private Time startTime; + + @DateTimeFormat(pattern = DateUtil.PATTERN_TIME) + @JsonFormat(pattern = DateUtil.PATTERN_TIME) + @ApiModelProperty(value = "开始时间") + private Time endTime; + + @ApiModelProperty(value = "班次Id") + private Long classId; + + @ApiModelProperty(value = "班次名称") + private String className; + + @ApiModelProperty(value = "班组主键") + private Long groupId; + + @ApiModelProperty(value = "班组名称") + private String groupName; + + @ApiModelProperty(value = "负责人ID") + private String managerId; + + @ApiModelProperty(value = "负责人名称") + private String managerName; + + @ApiModelProperty(value = "负责人头像") + private String managerAvatar; + + @ApiModelProperty(value = "负责人手机号") + private String managerPhone; + + @ApiModelProperty(value = "班组成员") + private List members; + + @ApiModelProperty(value = "值班记录") + private List dutyRecord; +} + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/plan/PlanContants.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/plan/PlanContants.java index d585832..134b688 100644 --- a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/plan/PlanContants.java +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service-api/hzinfo-inspect-service-api/src/main/java/org/springblade/hzinfo_inspect/plan/PlanContants.java @@ -3,6 +3,7 @@ */ package org.springblade.hzinfo_inspect.plan; +import lombok.AllArgsConstructor; import lombok.Getter; /** @@ -179,4 +180,17 @@ public interface PlanContants { this.flag = flag; } } + + + /** + * 是否自动巡检 0-否 1-是 + */ + @AllArgsConstructor + enum AutoVideoEnum { + YES("1"),NO("0"); + @Getter + private String flag; + + + } } diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/pom.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/pom.xml index 93e17bd..1e1ce1a 100644 --- a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/pom.xml +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/pom.xml @@ -43,6 +43,12 @@ org.springblade blade-starter-excel + + + com.alibaba + easyexcel + + @@ -56,6 +62,12 @@ pxhd-hzinfo-inspect-api 4.5.0.RELEASE compile + + + com.alibaba + easyexcel + + org.springblade @@ -122,20 +134,33 @@ javase 2.2 - com.hikvision.ga artemis-http-client 1.1.2 - com.alibaba easyexcel - 2.2.7 + 3.3.2 + + + org.apache.poi + poi-ooxml-schemas + + + + + org.apache.poi + poi-ooxml-schemas + 4.1.2 + compile + + + cn.afterturn + easypoi-base + 4.4.0 - - diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyChangeController.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyChangeController.java new file mode 100644 index 0000000..32299b1 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyChangeController.java @@ -0,0 +1,154 @@ +package org.springblade.hzinfo_inspect.duty.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springblade.flow.core.entity.BladeFlow; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyChangeEntity; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyChangeService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainService; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyChangeTowVo; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyChangeVO; +import org.springblade.hzinfo_inspect.duty.vo.ImsSchedulingVo; +import org.springblade.hzinfo_inspect.duty.wrapper.ImsDutyChangeWrapper; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + + +/** + * 控制器 + * + * @author Chill + */ +@RestController +@AllArgsConstructor +@RequestMapping("/dutyChange") +@Api(value = "调班管理", tags = "调班管理") +public class ImsDutyChangeController extends BladeController { + + private final IImsDutyChangeService imsDutyService; + + private final IImsDutyMainService imsDutyMainService; + + /** + * 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "详情", notes = "传入dutyChange") + public R detail(ImsDutyChangeEntity changeEntity) { + ImsDutyChangeEntity detail = imsDutyService.getOne(Condition.getQueryWrapper(changeEntity)); + ImsDutyChangeVO vo = ImsDutyChangeWrapper.build().entityVO(detail); + imsDutyService.setUserNmae(vo); + ImsSchedulingVo imsSchedulingVo1 = imsDutyMainService.getByIdOneV2(detail.getAcceptDutyId()); + vo.setAcceptDutyMainVo(imsSchedulingVo1); + ImsSchedulingVo imsSchedulingVo = imsDutyMainService.getByIdOneV2(detail.getApplyDutyId()); + vo.setApplyDutyMainVo(imsSchedulingVo); + return R.data(vo); + } + + + + /** + * 详情 + */ + @GetMapping("/detail/test") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "详情示例", notes = "传入dutyChange") + public R detailTest(ImsDutyChangeEntity changeEntity) { + return R.data(imsDutyService.getDetailTest(changeEntity)); + } + + /** + * 详情 + * + * @param businessId 主键 + */ + @GetMapping("/detailById") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "详情", notes = "传入 主键Id") + public R detail(Long businessId) { + ImsDutyChangeVO detail = ImsDutyChangeWrapper.build().entityVO(imsDutyService.getById(businessId)); + return R.data(detail); + } + + /** + * 分页 代码自定义代号 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + @ApiOperation(value = "分页", notes = "传入dutyChange") + public R> list(ImsDutyChangeEntity changeEntity, Query query) { + IPage pages = imsDutyService.page(Condition.getPage(query), Condition.getQueryWrapper(changeEntity)); + IPage vos = ImsDutyChangeWrapper.build().pageVO(pages); + return R.data(vos); + } + + /** + * 新增 代码自定义代号 + */ + @PostMapping("/save") + @ApiOperationSupport(order = 4) + @ApiOperation(value = "新增", notes = "传入dutyChange") + public R save(@Valid @RequestBody ImsDutyChangeEntity changeEntity) { + return R.status(imsDutyService.save(changeEntity)); + } + + /** + * 修改 代码自定义代号 + */ + @PostMapping("/update") + @ApiOperationSupport(order = 5) + @ApiOperation(value = "修改", notes = "传入dutyChange") + public R update(@Valid @RequestBody ImsDutyChangeEntity changeEntity) { + return R.status(imsDutyService.updateById(changeEntity)); + } + + /** + * 新增或修改 代码自定义代号 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 6) + @ApiOperation(value = "新增或修改,然后提交,开始工作流程", notes = "传入dutyChange") + public R submit(@Valid @RequestBody ImsDutyChangeEntity changeEntity) { + return R.status(imsDutyService.submit(changeEntity)); + } + + + /** + * 删除 代码自定义代号 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 7) + @ApiOperation(value = "逻辑删除", notes = "传入ids") + public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { + return R.status(imsDutyService.deleteLogic(Func.toLongList(ids))); + } + + /** + * 新增或修改 代码自定义代号 + */ + @PostMapping("/complete-task") + @ApiOperationSupport(order = 8) + @ApiOperation(value = "处理工作流程", notes = "传入flow") + public R submit(@Valid @RequestBody BladeFlow flow,@RequestBody ImsDutyChangeEntity changeEntity) { + return R.status(imsDutyService.completeTask(flow,changeEntity)); + } + + @PostMapping("/getList") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "查询调班记录", notes = "") + public R> getList(Query query){ + return R.data(imsDutyService.getList(Condition.getPage(query))); + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyClassController.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyClassController.java new file mode 100644 index 0000000..63075d1 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyClassController.java @@ -0,0 +1,139 @@ +package org.springblade.hzinfo_inspect.duty.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.CollectionUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassEntity; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyClassService; +import org.springblade.hzinfo_inspect.duty.vo.DutyClassTypeTree; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + + +/** + * 控制器 + * + * @author Chill + */ +@RestController +@AllArgsConstructor +@RequestMapping("/imsDutyClass") +@Api(value = "班次controller", tags = "班次相关操作(班次设置)") +public class ImsDutyClassController { + + private final IImsDutyClassService imsDutyClassService; + + /** + * 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "详情", notes = "传入imsDutyClass") + public R detail(ImsDutyClassEntity imsDutyClass) { + ImsDutyClassEntity detail = imsDutyClassService.getOne(Condition.getQueryWrapper(imsDutyClass)); + return R.data(detail); + } + + /** + * 分页 代码自定义代号 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + @ApiOperation(value = "分页", notes = "传入imsDutyClass") + public R> list(ImsDutyClassEntity imsDutyClass, Query query) { + LambdaQueryWrapper queryWrapper = Condition.getQueryWrapper(new ImsDutyClassEntity(),imsDutyClass); + if(null != imsDutyClass.getCreateDept()){ + queryWrapper.eq(ImsDutyClassEntity::getCreateDept,imsDutyClass.getCreateDept()); + } + queryWrapper.orderByDesc(ImsDutyClassEntity::getCreateTime); + IPage pages = imsDutyClassService.page(Condition.getPage(query), queryWrapper); + return R.data(pages); + } + + /** + * 查询所有班次列表(不分页) + */ + @GetMapping("/getlist") + @ApiOperationSupport(order = 2) + @ApiOperation(value = "列表(不分页)", notes = "传入imsDutyClass") + public R> getlist(ImsDutyClassEntity imsDutyClass) { + List list = imsDutyClassService.getList(imsDutyClass); + return R.data(list); + } + + /** + * 新增或修改 代码自定义代号 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 6) + @ApiOperation(value = "新增或修改", notes = "传入imsDutyClass") + public R submit(@Valid @RequestBody ImsDutyClassEntity imsDutyClass) { + return imsDutyClassService.saveOrUpdateImsDutyClass(imsDutyClass); + } + + /** + * 删除 代码自定义代号 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 7) + @ApiOperation(value = "逻辑删除", notes = "传入ids") + public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { + return R.status(imsDutyClassService.removeByIds(Func.toLongList(ids))); + } + + + + + /** + * 新增或修改 代码自定义代号 + */ + @PostMapping("/saveBatch") + @ApiOperationSupport(order = 8) + @ApiOperation(value = "批量新增", notes = "imsDutyClassEntities") + public R saveBatch(@Valid @RequestBody List imsDutyClassEntities) { + //imsDutyClassService.determineThe(imsDutyClassEntities); + return R.status(imsDutyClassService.saveBatch(imsDutyClassEntities)); + } + + /** + * 新增或修改 代码自定义代号 + */ + @PostMapping("/updateBatch") + @ApiOperationSupport(order = 8) + @ApiOperation(value = "批量修改", notes = "imsDutyClassEntities") + public R updateBatch(@Valid @RequestBody List imsDutyClassEntities) { + //imsDutyClassService.determineThe(imsDutyClassEntities); + if(CollectionUtil.isEmpty(imsDutyClassEntities)){ + return R.fail("无数据"); + } + return imsDutyClassService.save(imsDutyClassEntities); + } + + /** + * 类型删除 代码自定义代号 + */ + @GetMapping("/typeRemove") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "根据班次类型 逻辑删除", notes = "传入ids") + public R typeRemove(@ApiParam(value = "传班次类型Id", required = true) @RequestParam Long classTypeId) { + return imsDutyClassService.typeRemove(classTypeId); + } + + @GetMapping("/getDutyClassTree") + @ApiOperationSupport(order = 10) + @ApiOperation(value = "获取机构-班次类型-班次树") + public R> getDutyClassTree(@RequestParam(required = false) @ApiParam(value = "机构id") Long deptId) { + return R.data(imsDutyClassService.getDutyClassTree(deptId)); + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyClassTypeController.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyClassTypeController.java new file mode 100644 index 0000000..5904f97 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyClassTypeController.java @@ -0,0 +1,108 @@ +package org.springblade.hzinfo_inspect.duty.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassTypeEntity; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyClassTypeService; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + + +/** + * 控制器 + * + * @author Chill + */ +@RestController +@AllArgsConstructor +@RequestMapping("/imsDutyClassType") +@Api(value = "班次类型controller", tags = "班次类型相关操作") +public class ImsDutyClassTypeController { + + private final IImsDutyClassTypeService imsDutyClassTypeService; + + /** + * 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "详情", notes = "传入imsDutyClassType") + public R detail(ImsDutyClassTypeEntity imsDutyClassType) { + ImsDutyClassTypeEntity detail = imsDutyClassTypeService.getOne(Condition.getQueryWrapper(imsDutyClassType)); + return R.data(detail); + } + + /** + * 分页 代码自定义代号 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + @ApiOperation(value = "分页", notes = "传入imsDutyClassType") + public R> list(ImsDutyClassTypeEntity imsDutyClassType, Query query) { + LambdaQueryWrapper queryWrapper = Condition.getQueryWrapper(new ImsDutyClassTypeEntity(), imsDutyClassType); + if (null != imsDutyClassType.getCreateDept()) { + queryWrapper.eq(ImsDutyClassTypeEntity::getCreateDept, imsDutyClassType.getCreateDept()); + } + queryWrapper.orderByDesc(ImsDutyClassTypeEntity::getCreateTime); + IPage pages = imsDutyClassTypeService.page(Condition.getPage(query), queryWrapper); + return R.data(pages); + } + + /** + * 获取所有班次类型 代码自定义代号 + */ + @GetMapping("/listClassType") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "获取所有班次类型") + public R> listClassType(@RequestParam(value = "createDept", required = false) Long createDept) { + List list = imsDutyClassTypeService.list(new LambdaQueryWrapper() {{ + if (null != createDept) { + eq(ImsDutyClassTypeEntity::getCreateDept, createDept); + } + }}); + return R.data(list); + } + + /** + * 新增或修改 代码自定义代号 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 6) + @ApiOperation(value = "新增或修改", notes = "传入imsDutyClassType") + public R submit(@Valid @RequestBody ImsDutyClassTypeEntity imsDutyClassType) { + return imsDutyClassTypeService.saveOrUpdateImsDutyClassType(imsDutyClassType); + } + + /** + * 删除 代码自定义代号 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 7) + @ApiOperation(value = "逻辑删除", notes = "传入ids") + public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { + return imsDutyClassTypeService.doDeleteLogic(Func.toLongList(ids)); + } + + + /** + * 获取不存在班次中的班次类型 + */ + @GetMapping("/classTypeList") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "获取不存在班次中的班次类型", notes = "传入ids") + public R> classTypeList(@ApiParam(value = "机构ID", required = true) @RequestParam Long createDept, @ApiParam(value = "班次类型ID", required = true) @RequestParam(required = false) Long classTypeId) { + return R.data(imsDutyClassTypeService.getClassTypeList(createDept, classTypeId)); + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyGroupController.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyGroupController.java new file mode 100644 index 0000000..298ee6b --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyGroupController.java @@ -0,0 +1,181 @@ +package org.springblade.hzinfo_inspect.duty.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.CollectionUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.core.tool.utils.StringUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupEntity; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyGroupService; +import org.springblade.hzinfo_inspect.duty.vo.DutyGroupMemberVo; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyGroupPVO; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyGroupPersonVO; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyGroupVO; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + + +/** + * 控制器 + * + * @author Chill + */ +@RestController +@AllArgsConstructor +@RequestMapping("/imsDutyGroup") +@Api(value = "值班小组controller", tags = "值班小组相关操作(班组设置+人员分组)") +public class ImsDutyGroupController { + + private final IImsDutyGroupService imsDutyGroupService; + + /** + * 班组详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "班组详情", notes = "传入imsDutyGroup") + public R detail(ImsDutyGroupEntity imsDutyGroup) { + ImsDutyGroupEntity detail = imsDutyGroupService.getOne(Condition.getQueryWrapper(imsDutyGroup)); + return R.data(detail); + } + + /** + * 分页 代码自定义代号 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + @ApiOperation(value = "分页", notes = "传入imsDutyGroup") + public R> list(ImsDutyGroupEntity imsDutyGroup, Query query) { + return imsDutyGroupService.list(imsDutyGroup, query); + } + + /** + * 新增 代码自定义代号 + */ + @PostMapping("/save") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "新增班组", notes = "传入imsDutyGroup") + public R save(@Valid @RequestBody ImsDutyGroupEntity imsDutyGroup) { + List groupEntity = imsDutyGroupService.list(new LambdaQueryWrapper() {{ + eq(ImsDutyGroupEntity::getGroupName, imsDutyGroup.getGroupName()); + eq(ImsDutyGroupEntity::getCreateDept, imsDutyGroup.getCreateDept()); + }}); + if (CollectionUtil.isNotEmpty(groupEntity)) { + return R.fail("班组名称已存在"); + } + return R.status(imsDutyGroupService.save(imsDutyGroup)); + } + + /** + * 修改班组 代码自定义代号 + */ + @PostMapping("/update") + @ApiOperationSupport(order = 4) + @ApiOperation(value = "修改班组", notes = "传入imsDutyGroup") + public R update(@Valid @RequestBody ImsDutyGroupVO imsDutyGroup) { + List groupEntity = imsDutyGroupService.list(new LambdaQueryWrapper() {{ + eq(ImsDutyGroupEntity::getGroupName, imsDutyGroup.getGroupName()); + ne(ImsDutyGroupEntity::getId, imsDutyGroup.getId()); + eq(ImsDutyGroupEntity::getCreateDept, imsDutyGroup.getCreateDept()); + }}); + if (CollectionUtil.isNotEmpty(groupEntity)) { + return R.fail("班组名称已存在"); + } + if (StringUtil.isNoneBlank(imsDutyGroup.getPersonId())) { + return imsDutyGroupService.update(imsDutyGroup.toEntity(), imsDutyGroup.getPersonId()); + } + return R.status(imsDutyGroupService.updateById(imsDutyGroup)); + } + + + /** + * 删除班组 代码自定义代号 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 5) + @ApiOperation(value = "逻辑删除班组", notes = "传入ids") + public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { + return imsDutyGroupService.doDeleteLogic(ids); + } + + /** + * 新增人员分组 代码自定义代号 + */ + @PostMapping("/insert") + @ApiOperationSupport(order = 6) + @ApiOperation(value = "新增人员分组", notes = "传入imsDutyGroup") + public R insert(@Valid @RequestBody ImsDutyGroupVO imsDutyGroup) { + return imsDutyGroupService.insert(imsDutyGroup); + } + + /** + * 设置负责人 + */ + @PostMapping("/manager") + @ApiOperationSupport(order = 7) + @ApiOperation(value = "设置班组长", notes = "传入imsDutyGroup") + public R manager(@Valid @RequestBody ImsDutyGroupEntity imsDutyGroup) { + return R.status(imsDutyGroupService.updateById(imsDutyGroup)); + } + + + /** + * 删除人员 代码自定义代号 + */ + @PostMapping("/remove/person") + @ApiOperationSupport(order = 8) + @ApiOperation(value = "批量逻辑删除班组人员", notes = "传入ids") + public R removePerson(@ApiParam(value = "主键集合", required = true) @RequestParam String ids, boolean updateDuty) { + return imsDutyGroupService.doDeleteBatchGroupP(Func.toLongList(ids), updateDuty); + } + + + /** + * 人员分组查询 + */ + @PostMapping("/personGroupAll") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "人员分组查询", notes = "传入imsDutyGroup") + public R> personGroupAll(@RequestParam(required = false) Long createDept) { + return imsDutyGroupService.getPersonGroupAll(createDept); + } + + + /** + * 根据班组id查询人员 + */ + @PostMapping("/person") + @ApiOperationSupport(order = 10) + @ApiOperation(value = "根据班组id查询人员", notes = "传groupId") + public R> person(@ApiParam(value = "班组Id", required = true) @RequestParam Long groupid) { + return imsDutyGroupService.getGroupIdByPerson(groupid); + } + + /** + * 查询所有班组 负责人 is not null + */ + @GetMapping("/list-manager") + @ApiOperationSupport(order = 11) + @ApiOperation(value = "查询所有班组(已有负责人的班组)", notes = "传入imsDutyGroup") + public R> list(@ApiParam("机构ID") Long createDept) { + return imsDutyGroupService.getListManager(createDept); + } + + @GetMapping("/groupMember") + @ApiOperationSupport(order = 12) + @ApiOperation(value = "查询班组成员", notes = "传入imsDutyGroup") + public R> groupMember(@RequestParam(value = "deptId", required = false) Long deptId) { + return R.data(imsDutyGroupService.groupMember(deptId)); + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyMainController.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyMainController.java new file mode 100644 index 0000000..d946ad5 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyMainController.java @@ -0,0 +1,243 @@ +package org.springblade.hzinfo_inspect.duty.controller; + +import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainReportExcel; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainService; +import org.springblade.hzinfo_inspect.duty.utils.ExcelMergeHandler; +import org.springblade.hzinfo_inspect.duty.utils.ExcelTool; +import org.springblade.hzinfo_inspect.duty.vo.ChangeDutyMainVo; +import org.springblade.hzinfo_inspect.duty.vo.ExchangeGroupLeader; +import org.springblade.hzinfo_inspect.duty.vo.HomePageDutyMainInfoVo; +import org.springblade.hzinfo_inspect.duty.vo.ImsSchedulingVo; +import org.springblade.system.feign.ISysClient; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Date; +import java.util.List; + + +/** + * 值班信息 + * + * @author Chill + */ +@RestController +@AllArgsConstructor +@RequestMapping("/imsDutyMain") +@Api(value = "值班信息主表相关操作", tags = "值班信息主表相关操作") +public class ImsDutyMainController { + + private final IImsDutyMainService imsDutyMainService; + + private final ISysClient sysClient; + + /** + * 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "详情", notes = "传入imsDutyMainEntity") + public R detail(ImsDutyMainEntity imsDutyMain) { + ImsDutyMainEntity detail = imsDutyMainService.getOne(Condition.getQueryWrapper(imsDutyMain)); + return R.data(detail); + } + + /** + * 分页 代码自定义代号 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + @ApiOperation(value = "分页", notes = "传入imsDutyMain") + public R> list(ImsDutyMainEntity imsDutyMain, Query query) { + IPage pages = imsDutyMainService.page(Condition.getPage(query), Condition.getQueryWrapper(imsDutyMain)); + return R.data(pages); + } + + + /** + * 根据时间查询所有值班信息列表(不分页) + */ + @GetMapping("/getList") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "列表(不分页)", notes = "传入imsDutyMain") + public R getList(@ApiParam(value = "值班时间") @Valid @RequestParam("dutyDate") String dutyDate, @ApiParam(value = "申请人ID") Long personId) { + return imsDutyMainService.getByDateListAll(dutyDate, personId); + } + + + /** + * 新增或修改 代码自定义代号 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 6) + @ApiOperation(value = "新增或修改", notes = "传入imsDutyMain") + public R submit(@Valid @RequestBody ImsDutyMainEntity imsDutyMain) { + return imsDutyMainService.saveOrUpdateImsDutyMain(imsDutyMain); + } + + + /** + * 删除 代码自定义代号 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 7) + @ApiOperation(value = "逻辑删除", notes = "传入ids") + public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { + return imsDutyMainService.deleteV2(Func.toLongList(ids)); + } + + /** + * 排班管理 + */ + @PostMapping("/scheduling") + @ApiOperationSupport(order = 8) + @ApiOperation(value = "排班管理", notes = "") + public R scheduling(@Valid @RequestBody ImsSchedulingVo imsSchedulingVo) { + if (null == imsSchedulingVo.getCreateDept()) { + imsSchedulingVo.setCreateDept(Long.valueOf(AuthUtil.getDeptId())); + } + return imsDutyMainService.getSchedulingV2(imsSchedulingVo); + } + + + /** + * 查询排班 + */ + @PostMapping("/scheduling/list") + @ApiOperationSupport(order = 8) + @ApiOperation(value = "查询排班", notes = "传年份和月份 year month") + public R schedulingList(@Valid @ApiParam(value = "年份", required = true) @RequestParam int year, + @ApiParam(value = "月份", required = true) @RequestParam int month, + @ApiParam(value = "机构Id", required = true) Long deptId) { + if (null == deptId) { + deptId = Long.valueOf(AuthUtil.getDeptId()); + } + return imsDutyMainService.getSchedulingListV2(year, month, deptId); + } + + /** + * 根据值班id查询值班人员 + */ + @PostMapping("/person") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "根据值班id查询人员", notes = "传id") + public R person(@ApiParam(value = "值班Id", required = true) @RequestParam Long id) { + return imsDutyMainService.getMainIdByPersonV2(id); + } + + /** + * 数据清理 + */ + @PostMapping("/dataDelete") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "数据清理", notes = "传id") + public R dataDelete(@ApiParam(value = "机构ID", required = true) @RequestParam Long deptId, + @ApiParam(value = "开始时间", required = true) @RequestParam String startDate, + @ApiParam(value = "结束时间", required = true) @RequestParam String endDate) { + return imsDutyMainService.dataDelete(deptId, startDate, endDate); + } + + + /** + * 根据值班id查询值班人员 + */ + @GetMapping("/getHomePageDutyInfo") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "获取首页值班数据", notes = "传id") + public R> getHomePageDutyInfo(Long deptId) { + return R.data(imsDutyMainService.getHomePageDutyInfo(deptId)); + } + + /** + * 返回对应部门所有人员 + */ + @GetMapping("/getAllPersonInfo") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "返回对应部门所有人员", notes = "") + public R getAllPersonInfo(Long deptId) { + return R.data(imsDutyMainService.getAllPersonInfo(deptId)); + } + + /** + * 值班人员ID对应班次信息 + */ + @GetMapping("/getDutyMainInfoVoById") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "值班人员ID对应班次信息", notes = "") + public R getDutyMainInfoVoById(@ApiParam(value = "机构ID") Long deptId, @ApiParam(value = "申请人ID") Long personId) { + return imsDutyMainService.getDutyEmergencyEntityById(deptId, personId); + } + + /** + * 灵活调入,调出 + */ + @PostMapping("/updateDutyMainInfoVoById") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "灵活调入,调出", notes = "") + public R updateDutyMainInfoVoById(@RequestBody ChangeDutyMainVo changeDutyMainVo) { + return imsDutyMainService.updateDutyMainInfoVoById(changeDutyMainVo); + } + + //班组长交换班 + @PostMapping("/changDutyMainGroupLeader") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "班组长交换班", notes = "") + public R changDutyMainGroupLeader(@RequestBody ExchangeGroupLeader changeGroupLeader) { + return imsDutyMainService.changDutyMainGroupLeader(changeGroupLeader); + } + + @GetMapping("/exportDuty") + @ApiOperation(value = "导出排班计划") + public void exportTemplate(HttpServletResponse response, String time, Long deptId) throws IOException { + Integer year; + Integer month; + if (Func.isEmpty(deptId)) { + deptId = Long.valueOf(AuthUtil.getDeptId()); + } + if (Func.isEmpty(time)) { + Date date = new Date(); + year = date.getYear(); + month = date.getMonth()+1; + }else { + String[] split = time.split("-"); + year=Integer.valueOf(split[0]); + month=Integer.valueOf(split[1]); + } + List list = imsDutyMainService.getExcelDutyData(year, month, deptId); + + String deptName = sysClient.getDeptName(deptId).getData(); + + response.setCharacterEncoding(StandardCharsets.UTF_8.name()); + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode(year + "年" + month + "月" + deptName + "项目排班表.xlsx", StandardCharsets.UTF_8.name())); + + // 从第二行后开始合并 + int mergeRowIndex = 2; + // 需要合并的列 + int[] mergeColumeIndex = {0}; + + ExcelTool.resetCellMaxTextLength(); + // 导出Excel,合并第一列相同内容的单元格 + EasyExcel.write(response.getOutputStream(), ImsDutyMainReportExcel.class) + .registerWriteHandler(new ExcelMergeHandler(mergeRowIndex, mergeColumeIndex)).sheet().doWrite(list); + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyMainTemplateController.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyMainTemplateController.java new file mode 100644 index 0000000..c688d09 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyMainTemplateController.java @@ -0,0 +1,54 @@ +package org.springblade.hzinfo_inspect.duty.controller; + +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainTemplateEntity; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainTemplateService; +import org.springblade.hzinfo_inspect.duty.vo.ImsSchedulingVo; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +; + +/** + * 控制器 + * + * @author Chill + */ +@RestController +@AllArgsConstructor +@RequestMapping("/imsDutyMainTemplate") +@Api(value = "排班模版controller", tags = "排班模版") +public class ImsDutyMainTemplateController { + private final IImsDutyMainTemplateService iImsDutyMainTemplateService; + + + /** + * 分页 代码自定义代号 + */ + @GetMapping("/listAll") + @ApiOperationSupport(order = 2) + @ApiOperation(value = "查询 不分页", notes = "传入ImsDutyMainTemplateEntity") + public R> list(ImsDutyMainTemplateEntity entity) { + return R.data(iImsDutyMainTemplateService.doListAll(entity)); + } + + + + /** + * 删除 代码自定义代号 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "逻辑删除", notes = "传入ids") + public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { + return R.status(iImsDutyMainTemplateService.removeByIds(Func.toLongList(ids))); + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyRecController.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyRecController.java new file mode 100644 index 0000000..ff3f314 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyRecController.java @@ -0,0 +1,244 @@ +package org.springblade.hzinfo_inspect.duty.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.hzinfo_inspect.duty.dto.ImsDutyRecDTO; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyEmergencyEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecEntity; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyEmergencyService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyRecService; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyEmergencyVo; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyRecVO; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + + +/** + * 控制器 + * + * @author Chill + */ +@RestController +@AllArgsConstructor +@RequestMapping("/imsDutyRec") +@Api(value = "值班交接controller", tags = "值班交接相关操作(交接班管理)") +public class ImsDutyRecController { + + private final IImsDutyRecService imsDutyRecService; + private final IImsDutyEmergencyService iImsDutyEmergencyService; + + /** + * 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "详情", notes = "传入imsDutyRec") + public R detail(ImsDutyRecEntity imsDutyRec) { + ImsDutyRecEntity detail = imsDutyRecService.getOne(Condition.getQueryWrapper(imsDutyRec)); + ImsDutyRecVO vo = BeanUtil.copy(detail, ImsDutyRecVO.class); + return R.data(imsDutyRecService.getDetail(vo)); + } + + /** + * 分页 代码自定义代号 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + @ApiOperation(value = "分页", notes = "传入imsDutyRec") + public R> list(ImsDutyRecEntity imsDutyRec, Query query) { + IPage pages = imsDutyRecService.page(Condition.getPage(query), Condition.getQueryWrapper(imsDutyRec)); + return R.data(pages); + } + + + /** + * 自定义分页 附件表 + */ + @GetMapping("/pageList") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "分页--交接班记录", notes = "传入entity") + public R> page(ImsDutyRecVO vo, Query query) { + IPage pages = imsDutyRecService.getRecVoPage(Condition.getPage(query), vo); + return R.data(pages); + } + + @PostMapping("/submit") + @ApiOperationSupport(order = 6) + @ApiOperation(value = "新增或修改,然后提交,开始工作流程", notes = "传入imsDutyRec") + public R submit(@Valid @RequestBody ImsDutyRecEntity imsDutyRec) { + return imsDutyRecService.submit(imsDutyRec); + //return R.status(imsDutyRecService.submitV2(imsDutyRec,vo)); + } + + /** + * 新增,交接班记录 + */ + @PostMapping("/save") + @ApiOperationSupport(order = 6) + @ApiOperation(value = "新增,交接班记录", notes = "传入imsDutyRec") + public R save(@Valid @RequestBody ImsDutyRecEntity imsDutyRec) { + return R.status(imsDutyRecService.save(imsDutyRec)); + } + + + /** + * 删除 代码自定义代号 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 7) + @ApiOperation(value = "逻辑删除", notes = "传入ids") + public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { + return R.status(imsDutyRecService.removeByIds(Func.toLongList(ids))); + } + + + /** + * 新增或修改 代码自定义代号 + */ + @PostMapping("/complete-task") + @ApiOperationSupport(order = 8) + @ApiOperation(value = "处理工作流程", notes = "传入flow") + public R submit(@Valid @RequestBody ImsDutyRecDTO dto) { +// return R.success("接口已弃用"); + return R.status(imsDutyRecService.dealDutyRecFlow(dto)); + } + + + @GetMapping("/getTheCurrentDuty") + @ApiOperationSupport(order = 10) + @ApiOperation(value = "获取当前值班班组") + public R getTheCurrentDuty(@ApiParam(value = "机构ID") Long deptId, String dutyDate) { + if (null == deptId) { + deptId = Long.valueOf(AuthUtil.getDeptId()); + } + + return imsDutyRecService.getTheManinGroupRec(deptId, dutyDate); + } + + @GetMapping("/getQrCode") + @ApiOperationSupport(order = 11) + @ApiOperation(value = "生成二维码(签到)", notes = "timeToRub") + public R getQrCode() { + return R.data(imsDutyRecService.getQRCode()); + } + + + /** + * 指定当天班组为值班中 + */ + @GetMapping("/update") + @ApiOperationSupport(order = 12) + @ApiOperation(value = "指定当天班组为值班中", notes = "传入entity") + public R update(String dutyDate, Long id) { + return imsDutyRecService.doUpdate(dutyDate, id); + } + + /** + * 交班 + */ + @GetMapping("/judgeDelayedHand") + @ApiOperationSupport(order = 13) + @ApiOperation(value = "交班", notes = "传入entity") + public R judgeDelayedHand(ImsDutyMainEntity entity) { + imsDutyRecService.judgeDelayedHand(entity, null); + return R.success("消息提醒成功"); + } + + /** + * 接班 + */ + @GetMapping("/judgeDelayedCarry") + @ApiOperationSupport(order = 13) + @ApiOperation(value = "接班", notes = "传入entity") + public R judgeDelayedCarry(ImsDutyMainEntity entity) { + imsDutyRecService.judgeDelayedCarry(entity, null); + return R.success("消息提醒成功"); + } + + /** + * 批量修改-测试 + */ + @GetMapping("/batchUpdate-test") + @ApiOperationSupport(order = 13) + @ApiOperation(value = "批量修改-测试", notes = "") + public R batchUpdateTest() { + return imsDutyRecService.batchUpdateTest(); + } + + + /** + * 测试-交接班时间判断逻辑 + */ + @GetMapping("/ClassDate-test") + @ApiOperationSupport(order = 13) + @ApiOperation(value = "批量修改-测试", notes = "") + public R testClassDate(@RequestParam("id") Long id, @RequestParam("type") Integer type) { + return R.data(imsDutyRecService.testClassDate(id, type)); + } + + /** + * 根据流程ID批量删除 + */ + @GetMapping("/delProcessInstanceIds") + @ApiOperationSupport(order = 20) + @ApiOperation(value = "根据流程ID批量删除", notes = "") + public R processInstanceIds(@RequestParam("processInstanceIds") String processInstanceIds) { + return R.data(imsDutyRecService.delProcessInstanceIds(processInstanceIds)); + } + + + /** + * 新增:突发事件记录 + */ + @PostMapping("/addEmergency") + @ApiOperationSupport(order = 6) + @ApiOperation(value = "新增突发事件", notes = "传入imsDutyEmergencyEntity") + public R addEmergency(@Valid @RequestBody ImsDutyEmergencyEntity imsDutyEmergencyEntity) { + return iImsDutyEmergencyService.saveEntity(imsDutyEmergencyEntity); + } + + /** + * 删除:突发事件记录 + */ + @PostMapping("/deleteEmergency") + @ApiOperationSupport(order = 6) + @ApiOperation(value = "删除突发事件记录", notes = "传入imsDutyEmergencyEntity") + public R deleteEmergency(@RequestBody ImsDutyEmergencyEntity imsDutyEmergencyEntity) { + //TODO 是否要加权限控制 + return iImsDutyEmergencyService.deleteEntity(imsDutyEmergencyEntity); + } + + /** + * 查询:突发事件记录 + */ + @PostMapping("/queryEmergency") + @ApiOperationSupport(order = 6) + @ApiOperation(value = "查询突发事件记录", notes = "传入imsDutyEmergencyEntity") + public R queryEmergency(@Valid @RequestBody ImsDutyEmergencyVo imsDutyEmergencyVo, Query query) { + return iImsDutyEmergencyService.queryEntity(imsDutyEmergencyVo, query); + } + + + @PostMapping("/changeShift") + @ApiOperationSupport(order = 21) + @ApiOperation(value = "交班", notes = "传入imsDutyRecDTO交接班信息") + public R changeShift(@Valid @RequestBody ImsDutyRecDTO imsDutyRecDTO) { + return R.status(imsDutyRecService.changeShift(imsDutyRecDTO)); + } + +} + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyRecQRRecordController.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyRecQRRecordController.java new file mode 100644 index 0000000..e5d6d09 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/controller/ImsDutyRecQRRecordController.java @@ -0,0 +1,66 @@ +package org.springblade.hzinfo_inspect.duty.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecQRRecordEntity; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyRecQRRecordService; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyRecQRRecordExtendVo; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyRecQRRecordVo; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + * 控制器 + * + * @author Chill + */ +@RestController +@AllArgsConstructor +@RequestMapping("/imsDutyRecQRrecord") +@Api(value = "交接班扫码记录", tags = "交接班扫码相关操作") +public class ImsDutyRecQRRecordController { + + private final IImsDutyRecQRRecordService recQRRecordService; + + /** + *新增,交接班扫码记录 + */ + @PostMapping("/save") + @ApiOperationSupport(order = 6) + @ApiOperation(value = "新增,交接班扫码记录", notes = "传入imsDutyRecQRRecordEntity") + public R save(@Valid @RequestBody ImsDutyRecQRRecordExtendVo vo){ + ImsDutyRecQRRecordEntity imsDutyRecQRRecordEntity = new ImsDutyRecQRRecordEntity(); + imsDutyRecQRRecordEntity.setDutyId(Long.valueOf(vo.getDutyId())); + imsDutyRecQRRecordEntity.setPersonId(AuthUtil.getUserId()); + imsDutyRecQRRecordEntity.setTenantId(AuthUtil.getTenantId()); + imsDutyRecQRRecordEntity.setIsDeleted(0); + return recQRRecordService.doSave(imsDutyRecQRRecordEntity); + + } + + + /** + * 自定义分页 + */ + /** + * 自定义分页 附件表 + */ + @PostMapping("/pageList") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "分页--交接班扫码记录", notes = "传入vo") + public R> page(@Valid @RequestBody ImsDutyRecQRRecordVo vo, Query query) { + return R.data(recQRRecordService.doPageList(Condition.getPage(query), vo)); + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/feign/DutyClient.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/feign/DutyClient.java new file mode 100644 index 0000000..773a48f --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/feign/DutyClient.java @@ -0,0 +1,166 @@ +package org.springblade.hzinfo_inspect.duty.feign; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springblade.core.tool.utils.*; +import org.springblade.hzinfo_inspect.duty.constants.DutyConstants; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyEmergencyEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupPEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecEntity; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyEmergencyService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyGroupPService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyRecService; +import org.springblade.hzinfo_inspect.duty.vo.*; +import org.springblade.system.user.cache.UserCache; +import org.springblade.system.user.entity.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.stream.Collectors; + +@RestController +public class DutyClient implements IDutyClient { + + @Autowired + IImsDutyMainService dutyMainService; + @Autowired + IImsDutyGroupPService groupService; + + @Autowired + IImsDutyEmergencyService emergencyService; + + @Autowired + IImsDutyRecService dutyRecService; + + @Override + public EngineerDutyVo engineerDuty(Long deptId) { + // 步骤1.查询机构值班记录 + EngineerDutyVo duty = dutyMainService.engineerDuty(deptId); + if (ObjectUtil.isEmpty(duty) || ObjectUtil.isEmpty(duty.getDutyId())) { + return new EngineerDutyVo(); + } + // 步骤2.班组长信息 : 手机号、姓名 + User manager = UserCache.getUser(duty.getManagerId()); + if (ObjectUtil.isNotEmpty(manager)) { + duty.setManagerAvatar(manager.getAvatar()); + duty.setManagerName(manager.getRealName()); + duty.setManagerPhone(manager.getPhone()); + } + // 步骤3.班组成员 + List members = groupService.selectByGroupId(duty.getGroupId()); + if (CollectionUtil.isNotEmpty(members)) { + duty.setMembers(members.stream().filter(o -> !o.getPersonId().equals(duty.getManagerId())).map(member -> { + User result = UserCache.getUser(member.getPersonId()); + AuditVo auditVo = new AuditVo(); + auditVo.setPersonId(member.getPersonId()); + if (ObjectUtil.isNotEmpty(result)) { + auditVo.setPersonAvatar(result.getAvatar()); + auditVo.setPersonName(result.getRealName()); + auditVo.setPhone(result.getPhone()); + } + return auditVo; + }).collect(Collectors.toList())); + } + // 步骤4.值班记录 + List emergencys = emergencyService.list(Wrappers.lambdaQuery() + .like(ImsDutyEmergencyEntity::getDutyTime, DateUtil.format(duty.getDateTime(), DateUtil.PATTERN_DATETIME)) + .eq(ImsDutyEmergencyEntity::getDutyClass, duty.getClassId()) + ); + if (CollectionUtil.isNotEmpty(emergencys)) { + duty.setDutyRecord(emergencys.stream().map(emergency -> { + DutyRecordVo record = new DutyRecordVo(); + record.setTime(DateUtil.format(emergency.getRegisterTime(), DateUtil.PATTERN_DATETIME)); + record.setContent(emergency.getEventInfo()); + return record; + }).collect(Collectors.toList())); + } + return duty; + } + + @Override + public RelationshipTeamVo relationshipTeam(Long dutyId, Long isQueryFlag) { + RelationshipTeamVo team = new RelationshipTeamVo(); + // 步骤1.查询上一班组、下一班组 + if (DutyConstants.PREVIOUS_TEAM.equals(isQueryFlag)) { + team = dutyMainService.previousTeam(dutyId); + } else if (DutyConstants.NEXT_TEAM.equals(isQueryFlag)) { + team = dutyMainService.nextTeam(dutyId); + } + if (ObjectUtil.isEmpty(team) || ObjectUtil.isEmpty(team.getDutyId())) { + return team; + } + Long managerId; + // 步骤2.班组长信息 : 手机号、姓名 + if (StringUtil.isNotBlank(team.getManagerId())) { + managerId = Long.valueOf(team.getManagerId()); + User user = UserCache.getUser(managerId); + if (ObjectUtil.isNotEmpty(user)) { + team.setManagerAvatar(user.getAvatar()); + team.setManagerName(user.getRealName()); + team.setManagerPhone(user.getPhone()); + } + } else { + managerId = null; + } + // 步骤3.班组成员 + if (ObjectUtil.isNotEmpty(team.getGroupId())) { + List members = groupService.selectByGroupId(team.getGroupId()); + if (CollectionUtil.isNotEmpty(members)) { + team.setMembers(members.stream().filter(o -> ObjectUtil.isEmpty(managerId) || !o.getPersonId().equals(managerId)).map(member -> { + User memberUser = UserCache.getUser(member.getPersonId()); + AuditVo auditVo = new AuditVo(); + if (ObjectUtil.isNotEmpty(memberUser)) { + auditVo.setPersonId(memberUser.getId()); + auditVo.setPersonAvatar(memberUser.getAvatar()); + auditVo.setPersonName(memberUser.getRealName()); + auditVo.setPhone(memberUser.getPhone()); + } + return auditVo; + }).collect(Collectors.toList())); + } + } + // 步骤4.值班记录 + List emergencys = emergencyService.list(Wrappers.lambdaQuery() + .like(ImsDutyEmergencyEntity::getDutyTime, DateUtil.format(team.getDutyDate(), DateUtil.PATTERN_DATETIME)) + .eq(ImsDutyEmergencyEntity::getDutyClass, team.getClassId()) + ); + if (CollectionUtil.isNotEmpty(emergencys)) { + team.setDutyRecord(emergencys.stream().map(emergency -> { + DutyRecordVo record = new DutyRecordVo(); + record.setTime(DateUtil.format(emergency.getRegisterTime(), DateUtil.PATTERN_DATETIME)); + record.setContent(emergency.getEventInfo()); + return record; + }).collect(Collectors.toList())); + } + return team; + } + + @Override + public ImsDutyRecVO handover(Long dutyId) { + ImsDutyMainEntity imsDutyMainEntity = dutyMainService.getByIdOne(dutyId); + if (ObjectUtil.isEmpty(imsDutyMainEntity)) { + return new ImsDutyRecVO(); + } + dutyId = imsDutyMainEntity.getPreDutyId(); + ImsDutyRecEntity detail = dutyRecService.getOne(Wrappers.lambdaQuery() + .eq(ImsDutyRecEntity::getDutyId, dutyId)); + if (ObjectUtil.isEmpty(detail)) { + return new ImsDutyRecVO(); + } + ImsDutyRecVO dutyRec = BeanUtil.copy(detail, ImsDutyRecVO.class); + dutyRec.setDutyId(imsDutyMainEntity.getPreDutyId()); + return dutyRecService.getDetail(dutyRec); + } + + @Override + public List dutyRecordList(String startTime, String endTime ,Integer limit) { + return dutyRecService.dutyRecordList(startTime, endTime , limit); + } + + @Override + public List dutyLogList(String startTime, String endTime, Integer limit){ + return dutyRecService.dutyLogList(startTime, endTime, limit); + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/job/DutyMainJob.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/job/DutyMainJob.java new file mode 100644 index 0000000..635b168 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/job/DutyMainJob.java @@ -0,0 +1,66 @@ +package org.springblade.hzinfo_inspect.duty.job; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.tool.utils.ObjectUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.stream.Collectors; + +@Component +@Slf4j +public class DutyMainJob implements CommandLineRunner { + @Autowired + private IImsDutyMainService mainService; + + @Autowired + RedisTemplate redisTemplate; + + public ReturnT dutyClassCache(){ + + Date now=new Date(); + String start= DateUtil.format(now,DateUtil.PATTERN_DATE); + + Date now_2=DateUtil.plusDays(now,2); + String end=DateUtil.format(now_2,DateUtil.PATTERN_DATE); + List list = mainService.list(new LambdaQueryWrapper() {{ + ge(ImsDutyMainEntity::getDutyDate, start); + le(ImsDutyMainEntity::getDutyDate, end); + }}); + + + for(ImsDutyMainEntity entity:list) { + if (ObjectUtil.isNotEmpty(entity)) { + Map vo = new HashMap<>(); + vo.put("mainId", entity.getId()); + String[] persons = entity.getDutyPersonIds().split("\\^"); + //string 转为 long + List personList = Arrays.stream(persons) + .map(s -> Long.parseLong(s.trim())).collect(Collectors.toList()); + vo.put("persons", personList); + + String date=DateUtil.format(entity.getDutyDate(),"MMdd"); + Long classId=entity.getClassId(); + redisTemplate.opsForValue().set("inspect:duty:"+date+":"+ classId,vo); + } + + } + + return ReturnT.SUCCESS; + } + + + @Override + public void run(String... args) throws Exception {//项目启动后执行一次 + dutyClassCache(); + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/DutyGroupGeneratingCapacityMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/DutyGroupGeneratingCapacityMapper.java new file mode 100644 index 0000000..8cc9ee3 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/DutyGroupGeneratingCapacityMapper.java @@ -0,0 +1,16 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + +import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; +import org.springblade.hzinfo_inspect.duty.entity.DutyGroupGeneratingCapacityEntity; + +/** + *

+ * 班组发电量 Mapper 接口 + *

+ * + * @author lx + * @since 2022-02-24 + */ +public interface DutyGroupGeneratingCapacityMapper extends UserDataScopeBaseMapper { + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/DutyGroupGeneratingCapacityMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/DutyGroupGeneratingCapacityMapper.xml new file mode 100644 index 0000000..2f6da46 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/DutyGroupGeneratingCapacityMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ID, STATION_ID, DATE_TIME, GROUP_ID,EM_CODE, START_TIME, END_TIME, GENERATING_CAPACITY, TENANT_ID, CREATE_TIME, UPDATE_TIME, CREATE_USER, UPDATE_USER, IS_DELETED, STATUS, CREATE_DEPT + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsAnalyseExampleMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsAnalyseExampleMapper.java new file mode 100644 index 0000000..2077b76 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsAnalyseExampleMapper.java @@ -0,0 +1,16 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + + +import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; +import org.springblade.hzinfo_inspect.duty.entity.AnalyseExample; + + +/** + * Mapper 接口 + * + * @author Chill + */ +public interface ImsAnalyseExampleMapper extends UserDataScopeBaseMapper { + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsAnalyseExampleMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsAnalyseExampleMapper.xml new file mode 100644 index 0000000..f911a05 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsAnalyseExampleMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyChangeMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyChangeMapper.java new file mode 100644 index 0000000..0140801 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyChangeMapper.java @@ -0,0 +1,21 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.datascope.annotation.UserDataAuth; +import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyChangeEntity; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyChangeTowVo; + +import java.util.List; + +/** + * Mapper 接口 + * + * @author Chill + */ +public interface ImsDutyChangeMapper extends UserDataScopeBaseMapper { + + @UserDataAuth + List selectListDetails(IPage page); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyChangeMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyChangeMapper.xml new file mode 100644 index 0000000..f01522a --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyChangeMapper.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassMapper.java new file mode 100644 index 0000000..2da49ed --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassMapper.java @@ -0,0 +1,42 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + +import org.apache.ibatis.annotations.Param; +import org.springblade.core.datascope.annotation.UserDataAuth; +import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassEntity; +import org.springblade.hzinfo_inspect.duty.vo.DutyClassTypeTree; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyClassVO; + +import java.util.List; + +/** + * Mapper 接口 + * + * @author Chill + */ +public interface ImsDutyClassMapper extends UserDataScopeBaseMapper { + /** + * 查询所有班次(不分页) + * @param imsDutyClass + * @return + */ + @UserDataAuth + List getList(ImsDutyClassEntity imsDutyClass); + + @UserDataAuth + ImsDutyClassVO getClassTypeId(); + + List selectListByClassTypeId(Long classTypeId); + + + Integer selectJoinClassTypeId(List list); + + String getClassTypeIds(@Param("createDept") Long createDept, @Param("classTypeId") Long classTypeId); + + List getDutyClassTree(@Param("deptId")Long deptId); + + List getDutyClassByType(@Param("class_type_id") Long classTypeId); + + List getDutyClassTypeByDept(@Param("create_dept") Long deptId); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassMapper.xml new file mode 100644 index 0000000..790bff4 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassMapper.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID, TENANT_ID,CLASS_TYPE_ID,CLASS_NAME, START_TIME, END_TIME, CREATE_TIME, UPDATE_TIME, CREATE_USER, UPDATE_USER, + IS_DELETED,STATUS,CREATE_DEPT + + + + + + + + + + + + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassTypeMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassTypeMapper.java new file mode 100644 index 0000000..0b0d6bc --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassTypeMapper.java @@ -0,0 +1,13 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + +import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassTypeEntity; + +/** + * Mapper 接口 + * + * @author Chill + */ +public interface ImsDutyClassTypeMapper extends UserDataScopeBaseMapper { + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassTypeMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassTypeMapper.xml new file mode 100644 index 0000000..3a1ec08 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyClassTypeMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyEmergencyMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyEmergencyMapper.java new file mode 100644 index 0000000..9d722cb --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyEmergencyMapper.java @@ -0,0 +1,15 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + + +import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyEmergencyEntity; + +/** + * Mapper 接口 + * + * @author Chill + */ +public interface ImsDutyEmergencyMapper extends UserDataScopeBaseMapper { + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyEmergencyMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyEmergencyMapper.xml new file mode 100644 index 0000000..30c212d --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyEmergencyMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupMapper.java new file mode 100644 index 0000000..20d212a --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupMapper.java @@ -0,0 +1,32 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springblade.core.datascope.annotation.UserDataAuth; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupEntity; +import org.springblade.hzinfo_inspect.duty.vo.DutyGroupMemberVo; + +import java.util.List; + +/** + * Mapper 接口 + * + * @author Chill + */ +@Mapper +public interface ImsDutyGroupMapper extends BaseMapper { + + /** + * 根据班组ID修改负责人为null + * @param id + * @return + */ + int updateManagerIdById(Long id); + + @UserDataAuth + List selectDutyGroupJoinDutyMain(@Param("startDate") String startDate, @Param("endDate") String endDate); + + List groupMember(@Param("deptId") Long deptId); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupMapper.xml new file mode 100644 index 0000000..5b07043 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupMapper.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + update hz_ims_duty_group set MANAGER_ID = NULL where ID = #{id} + + + + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupPMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupPMapper.java new file mode 100644 index 0000000..715f1cc --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupPMapper.java @@ -0,0 +1,60 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupPEntity; +import org.springblade.hzinfo_inspect.duty.vo.DutyMemberVO; +import org.springblade.hzinfo_inspect.duty.vo.DutyPersonalReportVO; +import org.springblade.hzinfo_inspect.duty.vo.DutyReportVO; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyGroupPVO; + +import java.util.List; +import java.util.Map; + +/** + * Mapper 接口 + * + * @author Chill + */ +public interface ImsDutyGroupPMapper extends BaseMapper { + /** + * 删除关联信息 + * @param groupId + */ + void deleteByGroupId(Long groupId); + /** + * 根据小组信息id查询 + * @param groupId + * @return + */ + List selectByGroupId(Long groupId); + + List selectByGroupIds(@Param("groupId") List groupId); + + void deleteBatch(List list); + + void insertBatchPersonnel(List list); + + Integer selectPersonIsExist(ImsDutyGroupPEntity imsDutyGroupPEntity); + + List selectByGroupIdList(Long groupId); + + String selectPersonIdsByGroupId(Long groupId); + + + List getDutyMainStatisticsByClassId(Map params); + + List> getDutyConclusion(Map params); + + DutyPersonalReportVO getPersonalDutyMain(Map params); + + /** + * 根据班组Id以及人员Id删除 + * @param groupId + * @param personId + */ + void deleteByGroupIdAndPersonId(@Param("groupId") Long groupId, @Param("personId") Long personId); + + List member(@Param("groupId") Long groupId); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupPMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupPMapper.xml new file mode 100644 index 0000000..9d7f8cf --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyGroupPMapper.xml @@ -0,0 +1,169 @@ + + + + + + + + + + + + ID,TENANT_ID,GROUP_ID,PERSON_ID + + + insert into user(ID,TENANT_ID, GROUP_ID, PERSON_ID) + VALUES + + ( + #{item.id}, + #{item.tenantId}, + #{item.groupId}, + #{item.personId} + ) + + + + + + + + + + delete from hz_ims_duty_group_p + where group_id = #{groupId,jdbcType=BIGINT} + + + delete from hz_ims_duty_group_p where ID in + + #{item} + + + + delete from hz_ims_duty_group_p where GROUP_ID = #{groupId,jdbcType=BIGINT} and PERSON_ID = #{personId,jdbcType=BIGINT} + + + + + + + + + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyLogMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyLogMapper.java new file mode 100644 index 0000000..9ff305a --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyLogMapper.java @@ -0,0 +1,14 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + +import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyLogEntity; + +/** + * Mapper 接口 + * + * @author Chill + */ +public interface ImsDutyLogMapper extends UserDataScopeBaseMapper { + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyLogMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyLogMapper.xml new file mode 100644 index 0000000..3202d43 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyLogMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainMapper.java new file mode 100644 index 0000000..cb8586f --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainMapper.java @@ -0,0 +1,82 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + +import org.apache.ibatis.annotations.Param; +import org.springblade.core.datascope.annotation.UserDataAuth; +import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.vo.*; + +import java.util.List; +import java.util.Map; +/** + * Mapper 接口 + * + * @author Chill + */ +public interface ImsDutyMainMapper extends UserDataScopeBaseMapper { + /** + * 根据personid查询同一天同一班次是否排过班 + * @param params + * @return + */ + @UserDataAuth + List selectByPersonId(Map params); + + /** + * 查询所有值班信息(不分页) + * @param dutyDate + * @return + */ + @UserDataAuth + List selectByDateListAll(String dutyDate, @Param("personId")Long personId); + + + ImsSchedulingVo selectByIdOne(@Param("id")Long id, @Param("preDutyId")Long preDutyId); + ImsSchedulingVo selectByIdOneV2(@Param("id")Long id, @Param("preDutyId")Long preDutyId); + + ImsSchedulingVo selectByPreDutyIdOne(@Param("preDutyId")Long preDutyId); + + ImsDutyMainEntity selectMainByIdOne(@Param("id")Long id); + + void deleteByUserId(@Param("list")List list); + void deleteDate(@Param("date")String date); + + @UserDataAuth + void deleteBatchDate(@Param("list")List list); + + List selectByDateList(@Param(value = "date") String date, @Param(value = "deptId") Long deptId); + + Integer selectMainJoinGroupId(@Param("list")List list); + + List selectByDateAndDept(@Param(value = "date") String date, @Param(value = "deptId") Long deptId); + + + List selectDutyMainByDept(@Param("list")List list); + List selectDutyMainByDeptV2(@Param("list")List list); + + List selectSchedulingVoByDateList(@Param("startDate") String startDate, @Param("endDate") String endDate); + + @UserDataAuth + List selectDutyMainInfoVo(@Param("deptId") Long deptId); + @UserDataAuth + List selectDutyMainInfoVoV2(@Param("deptId") Long deptId); + + DutyMainInfoVo selectDutyMainInfoSign(@Param("preDutyId")Long preDutyId); + DutyMainInfoVo selectDutyMainInfoSignV2(@Param("preDutyId")Long preDutyId); + + DutyMainInfoVo queryDutyInfo(@Param("dutyId")Long dutyId); + DutyMainInfoVo queryDutyInfoV2(@Param("dutyId")Long dutyId); + + List getDutyData(@Param("list") List deptIdList); + List getDutyDataV2(@Param("list") List deptIdList); + + List selectByDateListV2(@Param(value = "date") String date, @Param(value = "deptId") Long deptId); + + EngineerDutyVo engineerDuty(@Param(value = "deptId") Long deptId); + + RelationshipTeamVo previousTeam(@Param(value = "dutyId") Long dutyId); + + RelationshipTeamVo nextTeam(@Param(value = "dutyId") Long dutyId); + + List dutyData(List collect); +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainMapper.xml new file mode 100644 index 0000000..0411aa5 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainMapper.xml @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , TENANT_ID, DUTY_PERSON_IDS, DUTY_DATE, CLASS_ID, STATUS, + REMARK,CREATE_TIME, UPDATE_TIME, CREATE_USER, UPDATE_USER, IS_DELETED,CREATE_DEPT + + + delete + from hz_ims_duty_main + where DUTY_DATE = #{date} + + + delete from hz_ims_duty_main where DUTY_DATE in + + #{item} + + + + + delete from hz_ims_duty_main where is_deleted = 0 + + and id in + + #{item} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainPersonMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainPersonMapper.java new file mode 100644 index 0000000..3758744 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainPersonMapper.java @@ -0,0 +1,14 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainPersonEntity; + + +/** + * Mapper 接口 + * + * @author ty + */ +public interface ImsDutyMainPersonMapper extends BaseMapper { + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainPersonMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainPersonMapper.xml new file mode 100644 index 0000000..5c4af28 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainPersonMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + ID + , TENANT_ID, DUTY_PERSON_IDS, DUTY_DATE, CLASS_ID, STATUS, + REMARK,CREATE_TIME, UPDATE_TIME, CREATE_USER, UPDATE_USER, IS_DELETED,CREATE_DEPT + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainTemplateMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainTemplateMapper.java new file mode 100644 index 0000000..1b3b0bd --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainTemplateMapper.java @@ -0,0 +1,14 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + + +import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainTemplateEntity; + +/** + * Mapper 接口 + * + * @author Chill + */ +public interface ImsDutyMainTemplateMapper extends UserDataScopeBaseMapper { + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainTemplateMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainTemplateMapper.xml new file mode 100644 index 0000000..b913e0b --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyMainTemplateMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + ID + , TENANT_ID, TEMPLATE_NAME, DUTY_ORDER_IDS , DUTY_ARR_IDS, DUTY_CLASS_TYPE_ID, + DUTY_NUM, STATUS, FLEXIBLE,TYPE,CREATE_TIME, UPDATE_TIME, CREATE_USER, UPDATE_USER, IS_DELETED, + CREATE_DEPT + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecMapper.java new file mode 100644 index 0000000..4f55a78 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecMapper.java @@ -0,0 +1,23 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecEntity; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyRecTestVo; +import org.springblade.hzinfo_inspect.duty.vo.ImsRecVo; + +import java.util.List; + + +/** + * Mapper 接口 + * + * @author Chill + */ +public interface ImsDutyRecMapper extends BaseMapper { + + List selectTest(); + + List selectRecInfoByDepts(@Param("list") List list, @Param("date") String date); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecMapper.xml new file mode 100644 index 0000000..b05f426 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecMapper.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecQRRecordMapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecQRRecordMapper.java new file mode 100644 index 0000000..f6e940f --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecQRRecordMapper.java @@ -0,0 +1,28 @@ +package org.springblade.hzinfo_inspect.duty.mapper; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; +import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecQRRecordEntity; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyRecQRRecordVo; + +import java.util.List; + +/** + * Mapper 接口 + * + * @author Chill + */ +public interface ImsDutyRecQRRecordMapper extends UserDataScopeBaseMapper { + /** + * 自定义分页 + * + * @param page + * @param vo + * @return + */ + + List selectPageList(@Param("page")IPage page, @Param("vo")ImsDutyRecQRRecordVo vo); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecQRRecordMapper.xml b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecQRRecordMapper.xml new file mode 100644 index 0000000..f41c12a --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/mapper/ImsDutyRecQRRecordMapper.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + ID, DUTY_ID, PERSON_ID, CREATE_TIME, UPDATE_TIME, CREATE_USER, UPDATE_USER, IS_DELETED, + STATUS, CREATE_DEPT + + + + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IDutyGroupService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IDutyGroupService.java new file mode 100644 index 0000000..385692a --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IDutyGroupService.java @@ -0,0 +1,8 @@ +package org.springblade.hzinfo_inspect.duty.service; + + +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyGroupVO; + +public interface IDutyGroupService { + ImsDutyGroupVO getDutyGroup(Long groupId, Long charge); +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IDutyRecClientService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IDutyRecClientService.java new file mode 100644 index 0000000..9f51f3e --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IDutyRecClientService.java @@ -0,0 +1,16 @@ +package org.springblade.hzinfo_inspect.duty.service; + + +import org.springblade.core.tool.api.R; +import org.springblade.hzinfo_inspect.duty.dto.ChangeShiftsReqDTO; +import org.springblade.hzinfo_inspect.duty.dto.ChangeShiftsRspDTO; + +public interface IDutyRecClientService { + /** + * 交接班统计 + * @param reqDTO + * @return + */ + R getChangeShifts(ChangeShiftsReqDTO reqDTO); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyChangeService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyChangeService.java new file mode 100644 index 0000000..98d69db --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyChangeService.java @@ -0,0 +1,37 @@ +package org.springblade.hzinfo_inspect.duty.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseService; +import org.springblade.flow.core.entity.BladeFlow; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyChangeEntity; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyChangeTowVo; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyChangeVO; + +/** + * 服务类 + * + * @author Chill + */ +public interface IImsDutyChangeService extends BaseService { + + /** + * 提交,开始工作流 + */ + boolean submit(ImsDutyChangeEntity changeEntity); + + /** + * 执行工作流 + * @param flow + * @return + */ + boolean completeTask(BladeFlow flow,ImsDutyChangeEntity changeEntity); + + ImsDutyChangeVO getDetailTest(ImsDutyChangeEntity changeEntity); + + IPage getList(IPage page); + + + void setUserNmae(ImsDutyChangeVO vo); + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyClassService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyClassService.java new file mode 100644 index 0000000..f1fc90d --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyClassService.java @@ -0,0 +1,38 @@ +package org.springblade.hzinfo_inspect.duty.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.core.tool.api.R; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassEntity; +import org.springblade.hzinfo_inspect.duty.vo.DutyClassTypeTree; + +import java.util.List; + +/** + * 服务类 + * + * @author Chill + */ +public interface IImsDutyClassService extends IService { + /** + * 添加与修改 + * @param imsDutyClass + * @return + */ + R saveOrUpdateImsDutyClass(ImsDutyClassEntity imsDutyClass); + + /** + * 查询所有班次(不分页) + * @param imsDutyClass + * @return + */ + List getList(ImsDutyClassEntity imsDutyClass); + + + R save(List imsDutyClassEntities); + + R typeRemove(Long classTypeId); + + List getDutyClassTree(Long deptId); + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyClassTypeService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyClassTypeService.java new file mode 100644 index 0000000..c33efd1 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyClassTypeService.java @@ -0,0 +1,24 @@ +package org.springblade.hzinfo_inspect.duty.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.core.tool.api.R; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassTypeEntity; + +import java.util.List; + +/** + * 服务类 + * + * @author Chill + */ +public interface IImsDutyClassTypeService extends IService { + + R saveOrUpdateImsDutyClassType(ImsDutyClassTypeEntity imsDutyClassType); + + /** + * 获取不存在班次中的班次类型 + */ + List getClassTypeList(Long createDept, Long classTypeId); + + R doDeleteLogic(List list); +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyEmergencyService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyEmergencyService.java new file mode 100644 index 0000000..5545103 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyEmergencyService.java @@ -0,0 +1,24 @@ +package org.springblade.hzinfo_inspect.duty.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyEmergencyEntity; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyEmergencyVo; + + +/** + * 服务类 + * + * @author Chill + */ +public interface IImsDutyEmergencyService extends IService { + + + R saveEntity(ImsDutyEmergencyEntity imsDutyEmergencyEntity); + + R deleteEntity(ImsDutyEmergencyEntity imsDutyEmergencyEntity); + + R queryEntity(ImsDutyEmergencyVo imsDutyEmergencyVo, Query query); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyGroupPService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyGroupPService.java new file mode 100644 index 0000000..4054103 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyGroupPService.java @@ -0,0 +1,44 @@ +package org.springblade.hzinfo_inspect.duty.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupPEntity; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyGroupPVO; + +import java.util.List; + +/** + * 服务类 + * + * @author Chill + */ +public interface IImsDutyGroupPService extends IService { + /** + * 删除关联信息 + * @param groupId + */ + void deleteByGroupId(Long groupId); + /** + * 根据小组信息id查询用户id和名称 + * @param groupId + * @return + */ + List selectByGroupId(Long groupId); + List selectByGroupIds(List groupId); + /** + * 批量删除 + * @param ids + */ + void deleteBatch(List ids); + + List listByGroupId(Long groupId); + + String personIdsByGroupId(Long groupId); + + /** + * 根据班组Id及人员Id删除 + * @param groupId 班组Id + * @param personId 人员Id + */ + void deleteByGroupIdAndPersonId(Long groupId, Long personId); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyGroupService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyGroupService.java new file mode 100644 index 0000000..92ee4e6 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyGroupService.java @@ -0,0 +1,72 @@ +package org.springblade.hzinfo_inspect.duty.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.vo.DutyGroupMemberVo; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyGroupPVO; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyGroupPersonVO; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyGroupVO; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 服务类 + * + * @author Chill + */ +public interface IImsDutyGroupService extends IService { + /** + * 添加值班小组及小组成员 + * + * @param imsDutyGroupVO 班组信息 + */ + @Transactional + R insert(ImsDutyGroupVO imsDutyGroupVO); + + /** + * 修改值班小组及小组成员 + * + * @param imsDutyGroupEntity 班组信息 + * @param personId 班组成员id + */ + @Transactional + R update(ImsDutyGroupEntity imsDutyGroupEntity, String personId); + + /** + * 值班小组分页 + * + * @param imsDutyGroup 班组信息 + * @param query 查询参数 + * @return 值班小组分页 + */ + R> list(ImsDutyGroupEntity imsDutyGroup, Query query); + + + /** + * 人员分组查询 + * + * @return 人员分组查询 + */ + R> getPersonGroupAll(Long createDept); + + R> getGroupIdByPerson(Long groupId); + + boolean saveDutyMain(ImsDutyMainEntity imsDutyMainEntity); + + + R doDeleteLogic(String ids); + + + R doDeleteBatchGroupP(List ids, boolean updateDuty); + + R> getListManager(Long createDept); + + List getDutyGroupJoinDutyMain(String startDate, String endDate); + + List groupMember(Long deptId); +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyLogService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyLogService.java new file mode 100644 index 0000000..4882e49 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyLogService.java @@ -0,0 +1,17 @@ +package org.springblade.hzinfo_inspect.duty.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyLogEntity; + +import java.util.HashMap; + +/** + * 服务类 + * + * @author Chill + */ +public interface IImsDutyLogService extends IService { + + void exportDutyLog(String dutyId, HashMap map); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyMainPersonService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyMainPersonService.java new file mode 100644 index 0000000..e310d5d --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyMainPersonService.java @@ -0,0 +1,21 @@ +package org.springblade.hzinfo_inspect.duty.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainPersonEntity; + +import java.util.List; + + +/** + * 服务类 + * + * @author Chill + */ +public interface IImsDutyMainPersonService extends IService { + + void doSaveBasch(List list); + + + List selectByMainIds(List dutyMainIds); + List selectByMainId(Long dutyMainId); +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyMainService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyMainService.java new file mode 100644 index 0000000..1d0f4da --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyMainService.java @@ -0,0 +1,163 @@ +package org.springblade.hzinfo_inspect.duty.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.core.tool.api.R; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainReportExcel; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecEntity; +import org.springblade.hzinfo_inspect.duty.vo.*; + +import java.time.LocalDate; +import java.util.List; +import java.util.Map; + +/** + * 服务类 + * + * @author Chill + */ +public interface IImsDutyMainService extends IService { + + /** + * 添加及修改值班信息 + * + * @param imsDutyMain + * @return + */ + R saveOrUpdateImsDutyMain(ImsDutyMainEntity imsDutyMain); + + /** + * 逻辑删除 + * + * @param ids + * @return + */ + R delete(List ids); + R deleteV2(List ids); + + + /** + * 查询所有值班信息(不分页) + * + * @param dutyDate + * @return + */ + R getByDateListAll(String dutyDate, Long personId); + + ImsSchedulingVo getByIdOne(Long id); + ImsSchedulingVo getByIdOneV2(Long id); + ImsSchedulingVo getByIdOneV2(Long id, Long preDutyId); + + ImsDutyMainEntity getMainEntity(Long id); + + /** + * 排班 + * + * @return + */ + R getScheduling(ImsSchedulingVo imsSchedulingVo); + + R getSchedulingV2(ImsSchedulingVo imsSchedulingVo); + + R getSchedulingList(int year, int month, Long deptId); + + R getSchedulingListV2(int year, int month, Long deptId); + + R getMainIdByPerson(Long id); + + R getMainIdByPersonV2(Long id); + + ImsSchedulingVo getTheManinGroup(); + + /** + * 获取站点统计月报值班信息 + * @param startDate + * @param endDate + * @param deptIdList + * @return + */ + List getDutyMainStatisticsByClassId(LocalDate startDate, LocalDate endDate, List deptIdList); + + List getDutyMainStatisticsByClassId(Map params); + + List> getDutyConclusion(Map params); + + DutyPersonalReportVO getPersonalDutyMain(Map params); + + Integer getMainJoinGroupId(List list); + + List getDutyMainByDept(List list); + + List getDutyMainByDeptV2(List list); + + + void doSaveBasch(List list); + + ImsDutyRecEntity dutyRec(List dutyIds); + + /** + * 数据清理 + * + * @param deptId 机构ID + * @param startDate 开始时间 + * @param endDate 结束时间 + * @return + */ + R dataDelete(Long deptId, String startDate, String endDate); + + + List getSchedulingVoByDateList(String startDate, String endDate); + + + /** + * 获取首页值班信息 + * @return + */ + List getHomePageDutyInfo(Long deptId); + + + /** + * 获取当前值班起止时间 + * @return + */ + List getDutyDurationDate(); + + /** + * 获取当班 + */ + List getDutyData(Long deptId); + List getDutyDataV2(Long deptId); + + + /** + * 获取当班 + */ + DutyMainInfoVo getNextDutyData(Long parentId); + DutyMainInfoVo getNextDutyDataV2(Long parentId); + + /** + * 获取区域值班 + * @param deptIdList + * @return + */ + List getDutyData(List deptIdList); + + R getAllPersonInfo(Long deptId); + + R getDutyEmergencyEntityById(Long deptId, Long personId); + + R updateDutyMainInfoVoById(ChangeDutyMainVo changeDutyMainVo); + + List getExcelDutyData(Integer year, Integer month, Long deptId); + + EngineerDutyVo engineerDuty(Long deptId); + + RelationshipTeamVo previousTeam(Long dutyId); + + RelationshipTeamVo nextTeam(Long dutyId); + + R changDutyMainGroupLeader(ExchangeGroupLeader changeGroupLeader); + + List dutyData(List collect); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyMainTemplateService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyMainTemplateService.java new file mode 100644 index 0000000..3ff0288 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyMainTemplateService.java @@ -0,0 +1,19 @@ +package org.springblade.hzinfo_inspect.duty.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainTemplateEntity; +import org.springblade.hzinfo_inspect.duty.vo.ImsSchedulingVo; + +import java.util.List; + +/** + * 服务类 + * + * @author Chill + */ +public interface IImsDutyMainTemplateService extends IService { + + List doListAll(ImsDutyMainTemplateEntity entity); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyRecQRRecordService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyRecQRRecordService.java new file mode 100644 index 0000000..9ba3f8d --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyRecQRRecordService.java @@ -0,0 +1,28 @@ +package org.springblade.hzinfo_inspect.duty.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.core.tool.api.R; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecQRRecordEntity; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyRecQRRecordVo; + +/** + * 服务类 + * + * @author Chill + */ +public interface IImsDutyRecQRRecordService extends IService { + + /** + * 自定义分页 + * + * @param page + * @param vo + * @return + */ + IPage doPageList(IPage page, ImsDutyRecQRRecordVo vo); + + + R doSave(ImsDutyRecQRRecordEntity imsDutyRecQRRecordEntity); + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyRecService.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyRecService.java new file mode 100644 index 0000000..7bd91a6 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/IImsDutyRecService.java @@ -0,0 +1,116 @@ +package org.springblade.hzinfo_inspect.duty.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.core.tool.api.R; +import org.springblade.hzinfo_inspect.duty.dto.ChangeShiftsReqDTO; +import org.springblade.hzinfo_inspect.duty.dto.ChangeShiftsRspDTO; +import org.springblade.hzinfo_inspect.duty.dto.ImsDutyRecDTO; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecEntity; +import org.springblade.hzinfo_inspect.duty.vo.DutyLog; +import org.springblade.hzinfo_inspect.duty.vo.DutyShiftRecord; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyRecVO; +import org.springblade.hzinfo_inspect.duty.vo.ImsRecVo; + +import java.util.List; + +/** + * 服务类 + * + * @author Chill + */ +public interface IImsDutyRecService extends IService { + + R submit(ImsDutyRecEntity imsDutyRecEntity); + + /** + * 开启交接班 + * @param recDTO 交接班信息 + * @return 交接班成功与否flag + */ + Boolean changeShift(ImsDutyRecDTO recDTO); + + /** + * 详情 + * @param vo + * @return + */ + ImsDutyRecVO getDetail(ImsDutyRecVO vo); + + + /** + * 自定义分页 + * + * @param page + * @param vo + * @return + */ + IPage getRecVoPage(IPage page, ImsDutyRecVO vo); + + R getTheManinGroupRec(Long deptId,String dutyDate); + + /** + * 获取签到二维码 + * @return + */ + String getQRCode(); + + /** + * 判断延时接班 + * @param entity + * @param recEntity + */ + void judgeDelayedCarry(ImsDutyMainEntity entity, ImsDutyRecEntity recEntity); + + /** + * 判断延时交班 + * @param handDutyMainEntity + * @param recEntity + */ + void judgeDelayedHand(ImsDutyMainEntity handDutyMainEntity, ImsDutyRecEntity recEntity); + + String testClassDate(Long id, Integer type); + + /** + * 指定当天班组为值班中 + * @param date + * @param id + * @return + */ + R doUpdate(String date, Long id); + + R batchUpdateTest(); + + /** + * 交接班日期换算 + * @param dutyMainEntity + * @param classEntity + * @param type + * @return + */ + String calculateDate(ImsDutyMainEntity dutyMainEntity, ImsDutyClassEntity classEntity, int type); + + List getRecInfoByDepts(List depts, String date); + + R delProcessInstanceIds(String processInstanceIds); + + /** + * 交接班统计 + * @param reqDTO 交接班信息 + * @return + */ + ChangeShiftsRspDTO getChangeShifts(ChangeShiftsReqDTO reqDTO); + + /** + * 执行工作流-处理业务数据 + * @param recDTO 交接班信息 + * @return + */ + Boolean dealDutyRecFlow(ImsDutyRecDTO recDTO); + + List dutyRecordList(String startTime, String endTime, Integer limit); + + List dutyLogList(String startTime, String endTime, Integer limit); +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/DutyGroupServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/DutyGroupServiceImpl.java new file mode 100644 index 0000000..72a742a --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/DutyGroupServiceImpl.java @@ -0,0 +1,49 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import org.springblade.core.tool.utils.CollectionUtil; +import org.springblade.core.tool.utils.ObjectUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupPEntity; +import org.springblade.hzinfo_inspect.duty.service.IDutyGroupService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyGroupPService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyGroupService; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyGroupVO; +import org.springblade.hzinfo_inspect.duty.wrapper.ImsDutyGroupWrapper; +import org.springblade.system.user.cache.UserCache; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class DutyGroupServiceImpl implements IDutyGroupService { + + @Autowired + private IImsDutyGroupService dutyGroupService; + + @Autowired + private IImsDutyGroupPService personsService; + + @Override + public ImsDutyGroupVO getDutyGroup(Long groupId, Long charge) { + ImsDutyGroupEntity entity = dutyGroupService.getById(groupId); + if(ObjectUtil.isEmpty(entity)){ + return null; + } + ImsDutyGroupVO group = ImsDutyGroupWrapper.build().entityVO(entity); + // 班组成员 + List persons = personsService.selectByGroupId(groupId); + if(CollectionUtil.isEmpty(persons)){ + return group; + } + List personNames = persons.stream().filter(o-> !charge.equals(o.getPersonId())).map(o-> UserCache.getUser(o.getPersonId()).getName()).collect(Collectors.toList()); + if(CollectionUtil.isEmpty(personNames)){ + group.setRepairPersonnelSum(0); + return group; + } + group.setRepairPersonnelSum(personNames.size()); + group.setPersonName(personNames.stream().collect(Collectors.joining(","))); + return group; + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/DutyRecClientServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/DutyRecClientServiceImpl.java new file mode 100644 index 0000000..7ed519b --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/DutyRecClientServiceImpl.java @@ -0,0 +1,21 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import org.springblade.core.tool.api.R; +import org.springblade.hzinfo_inspect.duty.dto.ChangeShiftsReqDTO; +import org.springblade.hzinfo_inspect.duty.dto.ChangeShiftsRspDTO; +import org.springblade.hzinfo_inspect.duty.service.IDutyRecClientService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyRecService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class DutyRecClientServiceImpl implements IDutyRecClientService { + @Autowired + IImsDutyRecService imsDutyRecService; + + @Override + public R getChangeShifts(ChangeShiftsReqDTO reqDTO) { + return R.data(imsDutyRecService.getChangeShifts(reqDTO)); + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyChangeServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyChangeServiceImpl.java new file mode 100644 index 0000000..28aaec7 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyChangeServiceImpl.java @@ -0,0 +1,223 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.support.Kv; +import org.springblade.core.tool.utils.Func; +import org.springblade.core.tool.utils.StringUtil; +import org.springblade.flow.core.entity.BladeFlow; +import org.springblade.flow.core.feign.IFlowClient; +import org.springblade.flow.core.utils.TaskUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyChangeEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.enums.DutyStatus; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyChangeMapper; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyChangeService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainService; +import org.springblade.hzinfo_inspect.duty.utils.DutyProcessConstant; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyChangeTowVo; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyChangeVO; +import org.springblade.hzinfo_inspect.duty.vo.ImsSchedulingVo; +import org.springblade.hzinfo_inspect.duty.wrapper.ImsDutyChangeWrapper; +import org.springblade.system.user.cache.UserCache; +import org.springblade.system.user.feign.IUserClient; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 服务实现类 + * + * @author Chill + */ +@Slf4j +@Service +@AllArgsConstructor +public class ImsDutyChangeServiceImpl extends BaseServiceImpl implements IImsDutyChangeService { + + private final IUserClient userClient; + private final IFlowClient flowClient; + private IImsDutyMainService dutyMainService; + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean submit(ImsDutyChangeEntity changeEntity) { + if (Func.isEmpty(changeEntity.getId())) { + // 保存 + save(changeEntity); + } + // 启动流程 + Kv variables = Kv.create() + .set(DutyProcessConstant.TASK_VARIABLE_APPLY_USER, TaskUtil.getTaskUser(changeEntity.getApplyPersonId().toString())) + .set(DutyProcessConstant.TASK_VARIABLE_ACCEPTER_USER, TaskUtil.getTaskUser(changeEntity.getAcceptPersonId().toString())); + R result = flowClient.startProcessInstanceByKey(DutyProcessConstant.DUTY_FLOW_KEY, StringUtil.format("{}:{}", + DutyProcessConstant.DUTY_PROCESS_TABLE, changeEntity.getId()), variables); + if (result.isSuccess()) { + log.debug("流程已启动,流程ID:" + result.getData().getProcessInstanceId()); + // 返回流程id写入业务表 + changeEntity.setProcessInstanceId(result.getData().getProcessInstanceId()); + changeEntity.setProcessDefinitionKey(DutyProcessConstant.DUTY_FLOW_KEY); + changeEntity.setStatus(DutyStatus.CHANGE.getVal()); + updateById(changeEntity); + } else { + throw new ServiceException("开启流程失败"); + } + return true; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean completeTask(BladeFlow flow, ImsDutyChangeEntity entity) { + ImsDutyChangeEntity changeEntity = new ImsDutyChangeEntity(); + // 创建变量 + Map variables = flow.getVariables(); + if (variables == null) { + variables = Kv.create(); + } + + //获取task 变量 + Map var = flowClient.taskVariables(flow.getTaskId()).getData(); + + if (Func.isNotEmpty(var)) { + //处理工作流 + R re = flowClient.completeTask(flow.getTaskId(), flow.getProcessInstanceId(), flow.getComment(), variables); + if (!re.isSuccess()) { + return false; + } + log.info("修改交接班 re -----------------------:" + re); + + if (flow.isPass() && entity.getStatus() == 4) { + log.info("修改交接班-----------------------:"); + //工作流完成更新业务表状态 + updateDutyMain(flow.getProcessInstanceId()); + changeEntity.setStatus(DutyStatus.FINISH.getVal()); + changeEntity.setId(Long.valueOf(flow.getBusinessId())); + changeEntity.setManager(AuthUtil.getUserId()); + this.baseMapper.updateById(changeEntity); + }else { + //驳回后修改状态 + this.baseMapper.updateById(entity); + } + } else { + return false; + } + return true; + } + + @Override + public ImsDutyChangeVO getDetailTest(ImsDutyChangeEntity changeEntity) { + ImsDutyChangeEntity detail = this.baseMapper.selectOne(Condition.getQueryWrapper(changeEntity)); + ImsDutyChangeVO vo = ImsDutyChangeWrapper.build().entityVO(detail); + try { + log.info(detail.getCreateUser() + ".............."); + vo.setCreateUserName(UserCache.getUser(detail.getCreateUser()).getName()); + vo.setUpdateUserName(UserCache.getUser(detail.getUpdateUser()).getName()); + vo.setAcceptPersonName(UserCache.getUser(detail.getAcceptPersonId()).getName()); + vo.setApplyPersonName(UserCache.getUser(detail.getApplyPersonId()).getName()); + ImsSchedulingVo imsSchedulingVo1 = dutyMainService.getByIdOneV2(detail.getAcceptDutyId()); + vo.setAcceptDutyMainVo(imsSchedulingVo1); + ImsSchedulingVo imsSchedulingVo = dutyMainService.getByIdOneV2(detail.getApplyDutyId()); + vo.setApplyDutyMainVo(imsSchedulingVo); + } catch (Exception e) { + log.error(e.getMessage()); + } + return vo; + } + + @Override + public IPage getList(IPage page) { + List imsDutyChangeTowVos = this.baseMapper.selectListDetails(page); + for (ImsDutyChangeTowVo imsDutyChangeTowVo : imsDutyChangeTowVos) { + if (Func.isNotBlank(imsDutyChangeTowVo.getManager() + "")) { + imsDutyChangeTowVo.setManagerName(userClient.userInfoById(imsDutyChangeTowVo.getManager()).getData().getName()); + } + } + return page.setRecords(imsDutyChangeTowVos); + } + + @Override + public void setUserNmae(ImsDutyChangeVO vo) { + vo.setApplyPersonName(userClient.userInfoById(vo.getApplyPersonId()).getData().getName());//申请人 + vo.setAcceptPersonName(userClient.userInfoById(vo.getAcceptPersonId()).getData().getName());//调班人 + + } + + @Override + public boolean save(ImsDutyChangeEntity entity) { + checkField(entity); + return super.save(entity); + } + + @Override + public boolean updateById(ImsDutyChangeEntity entity) { + checkField(entity); + return super.updateById(entity); + } + + /** + * 参数校验 + * + * @return + */ + private void checkField(ImsDutyChangeEntity entity) { + if (Func.isEmpty(entity.getClassId())) { + throw new ServiceException("班次ID不能为空"); + } + if (Func.isEmpty(entity.getAcceptPersonId())) { + throw new ServiceException("申请人ID不能为空"); + } + if (Func.isEmpty(entity.getAcceptPersonId())) { + throw new ServiceException("调班人ID不能为空"); + } + if (Func.isEmpty(entity.getApplyDutyId())) { + throw new ServiceException("申请值班ID不能为空"); + } + if (Func.isEmpty(entity.getAcceptDate())) { + throw new ServiceException("调班日期不能为空"); + } + if (Func.isEmpty(entity.getApplyDate())) { + throw new ServiceException("申请日期不能为空"); + } + if (Func.isEmpty(entity.getAcceptDutyId())) { + throw new ServiceException("调班ID不能为空"); + } + if (Func.isEmpty(entity.getApplyDutyId())) { + throw new ServiceException("申请值班ID不能为空"); + } + /*if(Func.isEmpty(entity.getManager())){ + throw new ServiceException("审批主管ID不能为空"); + }*/ + } + + /** + * 流程结束后,更新调班表状态、值班信息 + * + * @param processInstanceId 流程实例 ID + */ + private void updateDutyMain(String processInstanceId) { + //更新值班信息 + ImsDutyChangeEntity entity = new ImsDutyChangeEntity(); + entity.setProcessInstanceId(processInstanceId); + entity = getOne(Condition.getQueryWrapper(entity)); + ImsDutyMainEntity applyMain = dutyMainService.getById(entity.getApplyDutyId()); + ImsDutyMainEntity acceptMain = dutyMainService.getById(entity.getAcceptDutyId()); + applyMain.setDutyPersonIds(applyMain.getDutyPersonIds().replace(entity.getApplyPersonId().toString(), entity.getAcceptPersonId().toString())); + acceptMain.setDutyPersonIds(acceptMain.getDutyPersonIds().replace(entity.getAcceptPersonId().toString(), entity.getApplyPersonId().toString())); + ArrayList updateList = new ArrayList(); + updateList.add(applyMain); + updateList.add(acceptMain); + dutyMainService.updateBatchById(updateList); + //更新调班表状态 + entity.setStatus(DutyStatus.FINISH.getVal()); + updateById(entity); + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyClassServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyClassServiceImpl.java new file mode 100644 index 0000000..e3e0512 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyClassServiceImpl.java @@ -0,0 +1,121 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.CollectionUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyClassMapper; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyMainMapper; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyClassService; +import org.springblade.hzinfo_inspect.duty.vo.DutyClassTypeTree; +import org.springblade.system.cache.SysCache; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Comparator; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * 服务实现类 + * + * @author Chill + */ +@Service +public class ImsDutyClassServiceImpl extends ServiceImpl implements IImsDutyClassService { + + @Autowired + private ImsDutyMainMapper imsDutyMainMapper; + @Override + public R saveOrUpdateImsDutyClass(ImsDutyClassEntity imsDutyClass) { + if (null == imsDutyClass.getClassTypeId()) { + return R.fail("班次类型不能为空"); + } + if (StringUtils.isEmpty(imsDutyClass.getClassName())) { + return R.fail("班次名称不能为空"); + } + List classEntity = this.list( + Wrappers.lambdaQuery() + .eq(ImsDutyClassEntity::getClassName, imsDutyClass.getClassName()) + .eq(ImsDutyClassEntity::getClassTypeId, imsDutyClass.getClassTypeId()) + ); + if (CollectionUtil.isNotEmpty(classEntity)) { + return R.fail("班次名称已存在"); + } + return R.status(this.saveOrUpdate(imsDutyClass)); + } + + @Override + public List getList(ImsDutyClassEntity imsDutyClass) { + return this.baseMapper.getList(imsDutyClass); + } + + @Override + public R save(List imsDutyClass) { + List collect = imsDutyClass.stream().map(s -> s.getId()).collect(Collectors.toList()); + List imsDutyMainEntities = imsDutyMainMapper.selectList(new LambdaQueryWrapper() {{ + in(ImsDutyMainEntity::getClassId, collect); + eq(ImsDutyMainEntity::getIsDeleted, 0); + }}); + if (CollectionUtil.isNotEmpty(imsDutyMainEntities)){ + return R.fail("该班次存在排班,不可修改或删除"); + }else { + List res = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + in(ImsDutyClassEntity::getClassTypeId, imsDutyClass.get(0).getClassTypeId()); + eq(ImsDutyClassEntity::getIsDeleted, 0); + notIn(ImsDutyClassEntity::getId, collect); + }}); + if (CollectionUtil.isNotEmpty(res)){ + List id = res.stream().map(s -> s.getId()).collect(Collectors.toList()); + this.removeByIds(id); + } + return R.status(this.saveOrUpdateBatch(imsDutyClass)); + } + } + + + /** + * 根据班次类型Id 删除所属类型班次 + * + * @param classTypeId + */ + @Override + public R typeRemove(Long classTypeId) { + List imsDutyMainEntities = imsDutyMainMapper.selectList(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getClassId, classTypeId); + eq(ImsDutyMainEntity::getIsDeleted, 0); + }}); + if (CollectionUtil.isNotEmpty(imsDutyMainEntities)){ + return R.fail("该班次存在排班,不可修改或删除"); + } + List imsDutyClassEntities = this.baseMapper.selectListByClassTypeId(classTypeId); + if (CollectionUtil.isNotEmpty(imsDutyClassEntities)) { + return R.fail("该班次已绑定值班,不可删除!"); + } + + boolean bool = false; + int delete = this.baseMapper.delete(new LambdaQueryWrapper() {{ + eq(ImsDutyClassEntity::getClassTypeId, classTypeId); + }}); + if (delete > 0) { + bool = true; + } + return R.status(bool); + } + + @Override + public List getDutyClassTree(Long deptId) { + List dutyClassTrees = this.baseMapper.getDutyClassTree(deptId); + List result = dutyClassTrees.stream().peek(node -> node.setName(Optional.ofNullable(SysCache.getDeptName(node.getId())).orElse(null))) + .filter(t -> Func.isNotEmpty(t.getName())) + .sorted(Comparator.comparing(DutyClassTypeTree::getName)).collect(Collectors.toList()); + return result; + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyClassTypeServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyClassTypeServiceImpl.java new file mode 100644 index 0000000..fbbe853 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyClassTypeServiceImpl.java @@ -0,0 +1,74 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.CollectionUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassTypeEntity; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyClassMapper; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyClassTypeMapper; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyClassTypeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 服务实现类 + * + * @author Chill + */ +@Service +public class ImsDutyClassTypeServiceImpl extends ServiceImpl implements IImsDutyClassTypeService { + + @Autowired + private ImsDutyClassMapper classMapper; + + + @Override + public R saveOrUpdateImsDutyClassType(ImsDutyClassTypeEntity imsDutyClassType) { + if (StringUtils.isEmpty(imsDutyClassType.getClassTypeName())) { + return R.fail("班次类型名称不能为空"); + } + List imsDutyClassTypeEntities = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + if (null != imsDutyClassType.getId()) { + ne(ImsDutyClassTypeEntity::getId, imsDutyClassType.getId()); + } + eq(ImsDutyClassTypeEntity::getClassTypeName, imsDutyClassType.getClassTypeName()); + eq(ImsDutyClassTypeEntity::getCreateDept, imsDutyClassType.getCreateDept()); + }}); + + if (CollectionUtil.isNotEmpty(imsDutyClassTypeEntities)) { + return R.fail("同一机构下,班次类型名称不可重复"); + } + return R.status(this.saveOrUpdate(imsDutyClassType)); + } + + /** + * 获取不存在班次中的班次类型 + */ + @Override + public List getClassTypeList(Long createDept, Long classTypeId) { + String classTypeIds = classMapper.getClassTypeIds(createDept, classTypeId); + List imsDutyClassTypeEntities = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + eq(ImsDutyClassTypeEntity::getCreateDept, createDept); + }}); + if (CollectionUtil.isNotEmpty(imsDutyClassTypeEntities) && Func.isNotBlank(classTypeIds)) { + imsDutyClassTypeEntities = imsDutyClassTypeEntities.stream().filter(o -> !classTypeIds.contains(o.getId().toString())).collect(Collectors.toList()); + } + return imsDutyClassTypeEntities; + } + + @Override + public R doDeleteLogic(List list) { + Integer integer = classMapper.selectJoinClassTypeId(list); + if (null != integer && integer > 0) { + return R.fail("所选列表存在绑定班次选项,不可删除!"); + } + return R.status(this.removeByIds(list)); + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyEmergencyServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyEmergencyServiceImpl.java new file mode 100644 index 0000000..e4a09e7 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyEmergencyServiceImpl.java @@ -0,0 +1,129 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.ObjectUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyEmergencyEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.enums.DutyMainStatus; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyEmergencyMapper; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyMainMapper; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyEmergencyService; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyEmergencyVo; +import org.springblade.system.user.entity.User; +import org.springblade.system.user.feign.IUserClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + + +/** + * 服务实现类 + * + * @author ty + */ +@Slf4j +@Service +public class ImsDutyEmergencyServiceImpl extends ServiceImpl implements IImsDutyEmergencyService { + @Resource + private ImsDutyMainMapper imsDutyMainMapper; + @Autowired + private IUserClient userClient; + @Autowired + private ImsDutyClassServiceImpl imsDutyClassService; + @Override + public R saveEntity(ImsDutyEmergencyEntity imsDutyEmergencyEntity) { + ImsDutyMainEntity entity = imsDutyMainMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getStatus, DutyMainStatus.EXEC.getVal()); + eq(ImsDutyMainEntity::getCreateDept, imsDutyEmergencyEntity.getCreateDept()); + like(ImsDutyMainEntity::getDutyPersonIds, AuthUtil.getUserId()).last(" limit 1"); + }}); + if (ObjectUtil.isEmpty(entity)) { + return R.success("您当前未值班"); + } + this.saveOrUpdate(imsDutyEmergencyEntity); + return R.success("保存成功"); + } + + @Override + public R deleteEntity(ImsDutyEmergencyEntity imsDutyEmergencyEntity) { + this.removeById(imsDutyEmergencyEntity.getId()); + return R.success("删除成功"); + } + + @Override + public R queryEntity(ImsDutyEmergencyVo imsDutyEmergencyVo, Query query) { + QueryWrapper queryWrapper = getQueryWrapper(imsDutyEmergencyVo); + IPage imsDutyEmergencyEntityIPage = baseMapper.selectPage(Condition.getPage(query), queryWrapper); + List records = imsDutyEmergencyEntityIPage.getRecords(); + List collect ; + if (CollectionUtils.isNotEmpty(records)){ + collect= records.stream().map(sig -> { + R user = userClient.userInfoById(sig.getRegistrant()); + if (user.isSuccess()&& ObjectUtils.isNotEmpty(user.getData())){ + sig.setRegistrantName(user.getData().getName()); + } + R userR = userClient.userInfoById(sig.getChargePerson()); + if (userR.isSuccess()&&ObjectUtils.isNotEmpty(userR.getData())){ + sig.setChargePersonName(userR.getData().getName()); + } + ImsDutyClassEntity classEntity = imsDutyClassService.getById(sig.getDutyClass()); + sig.setDutyClassName(classEntity.getClassName()); + return sig; + }).collect(Collectors.toList()); + imsDutyEmergencyEntityIPage.setRecords(collect); + } + return R.data(imsDutyEmergencyEntityIPage); + } + private QueryWrapper getQueryWrapper(ImsDutyEmergencyVo imsDutyEmergencyVo) { + QueryWrapper queryWrapper = new QueryWrapper(); + if (ObjectUtils.isNotEmpty(imsDutyEmergencyVo.getId())) { + queryWrapper.lambda().in(ImsDutyEmergencyEntity::getId, imsDutyEmergencyVo.getId()); + } + if (ObjectUtils.isNotEmpty(imsDutyEmergencyVo.getDutyStartTime())) { + queryWrapper.lambda().ge(ImsDutyEmergencyEntity::getDutyTime, imsDutyEmergencyVo.getDutyStartTime()); + } + if (ObjectUtils.isNotEmpty(imsDutyEmergencyVo.getDutyEndTime())) { + queryWrapper.lambda().le(ImsDutyEmergencyEntity::getDutyTime, imsDutyEmergencyVo.getDutyEndTime()); + } + if (CollectionUtils.isNotEmpty(imsDutyEmergencyVo.getDutyClass())) { + queryWrapper.lambda().in(ImsDutyEmergencyEntity::getDutyClass, imsDutyEmergencyVo.getDutyClass()); + } + if (CollectionUtils.isNotEmpty(imsDutyEmergencyVo.getChargePerson())) { + queryWrapper.lambda().in(ImsDutyEmergencyEntity::getChargePerson, imsDutyEmergencyVo.getChargePerson()); + } + if (CollectionUtils.isNotEmpty(imsDutyEmergencyVo.getRegistrant())) { + queryWrapper.lambda().in(ImsDutyEmergencyEntity::getRegistrant, imsDutyEmergencyVo.getRegistrant()); + } + if (CollectionUtils.isNotEmpty(imsDutyEmergencyVo.getRegistrant())) { + queryWrapper.lambda().in(ImsDutyEmergencyEntity::getRegistrant, imsDutyEmergencyVo.getRegistrant()); + } + if (StringUtils.isNotEmpty(imsDutyEmergencyVo.getEventTitle())) { + queryWrapper.lambda().like(ImsDutyEmergencyEntity::getEventTitle, imsDutyEmergencyVo.getEventTitle()); + } + if (StringUtils.isNotEmpty(imsDutyEmergencyVo.getEventInfo())) { + queryWrapper.lambda().like(ImsDutyEmergencyEntity::getEventInfo, imsDutyEmergencyVo.getEventInfo()); + } + if (StringUtils.isNotEmpty(imsDutyEmergencyVo.getEventType())) { + queryWrapper.lambda().like(ImsDutyEmergencyEntity::getEventType, imsDutyEmergencyVo.getEventType()); + } + return queryWrapper; + } + + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyGroupPServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyGroupPServiceImpl.java new file mode 100644 index 0000000..5cc5a9c --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyGroupPServiceImpl.java @@ -0,0 +1,66 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupPEntity; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyGroupPMapper; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyGroupPService; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyGroupPVO; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 服务实现类 + * + * @author Chill + */ +@Service +public class ImsDutyGroupPServiceImpl extends ServiceImpl implements IImsDutyGroupPService { + + + /** + * 删除关联信息 + * @param groupId + */ + @Override + public void deleteByGroupId(Long groupId) { + this.baseMapper.deleteByGroupId(groupId); + } + /** + * 根据小组信息id查询用户id和名称 + * @param groupId + * @return + */ + @Override + public List selectByGroupId(Long groupId) { + return this.baseMapper.selectByGroupId(groupId); + } + @Override + public List selectByGroupIds(List groupId) { + return this.baseMapper.selectByGroupIds(groupId); + } + @Override + public void deleteBatch(List ids) { + this.baseMapper.deleteBatch(ids); + } + + @Override + public List listByGroupId(Long groupId) { + return this.baseMapper.selectByGroupIdList(groupId); + } + + @Override + public String personIdsByGroupId(Long groupId) { + return this.baseMapper.selectPersonIdsByGroupId(groupId); + } + + /** + * 根据班组Id及人员Id删除 + * @param groupId 班组Id + * @param personId 人员Id + */ + @Override + public void deleteByGroupIdAndPersonId(Long groupId, Long personId) { + this.baseMapper.deleteByGroupIdAndPersonId(groupId,personId); + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyGroupServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyGroupServiceImpl.java new file mode 100644 index 0000000..6d53143 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyGroupServiceImpl.java @@ -0,0 +1,380 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.*; +import org.springblade.hzinfo_inspect.duty.entity.*; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyGroupMapper; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyGroupPMapper; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyMainPersonMapper; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyGroupPService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyGroupService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainService; +import org.springblade.hzinfo_inspect.duty.vo.*; +import org.springblade.system.user.cache.UserCache; +import org.springblade.system.user.entity.User; +import org.springblade.system.user.feign.IUserClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 服务实现类 + * + * @author Chill + */ +@Service +public class ImsDutyGroupServiceImpl extends ServiceImpl implements IImsDutyGroupService { + + @Autowired + private IImsDutyMainService iImsDutyMainService; + + @Autowired + private IImsDutyGroupPService imsDutyGroupPService; + + @Autowired + private ImsDutyGroupPMapper imsDutyGroupPMapper; + @Autowired + private ImsDutyMainPersonMapper imsDutyMainPersonMapper; + @Autowired + private IUserClient userClient; + + @Override + public R insert(ImsDutyGroupVO imsDutyGroup) { + BladeUser user = AuthUtil.getUser(); + String tenantId = AuthUtil.getTenantId(); + boolean flag = this.saveImsDutyGroupPEntity(imsDutyGroup.getPersonId(), tenantId, imsDutyGroup.getId(), user != null ? user.getDeptId() : null); + if (!flag) { + return R.fail("当前选择人员已全部存在分组"); + } + + //判断是否更新排班 + if (imsDutyGroup.getUpdateDuty()) { + this.updateDuty(imsDutyGroup.getId()); + } + + return R.status(true); + } + + + private void updateDuty(Long groupId) { + ImsDutyMainEntity entity = new ImsDutyMainEntity(); + String personIds = imsDutyGroupPService.personIdsByGroupId(groupId); + + String recId = ""; + + if (StringUtil.isNotBlank(personIds)) { + //查询今天是否有正在交接班的班组 + List list = iImsDutyMainService.list(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getDutyGroupId, groupId); + ge(ImsDutyMainEntity::getDutyDate, new Date()); + }}); + if (CollectionUtil.isNotEmpty(list)) { + List dutyIds = list.stream().map(ImsDutyMainEntity::getId).collect(Collectors.toList()); + ImsDutyRecEntity one = iImsDutyMainService.dutyRec(dutyIds); + if (ObjectUtil.isNotEmpty(one)) { + recId = one.getId().toString(); + } + } + //更新该班组 排班表中的人员 + entity.setDutyPersonIds(personIds); + String finalRecId = recId; + iImsDutyMainService.update(entity, new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getDutyGroupId, groupId); + ge(ImsDutyMainEntity::getDutyDate, DateUtil.format(new Date(), DateUtil.PATTERN_DATE)); + ne(ImsDutyMainEntity::getStatus, 1); + ne(ImsDutyMainEntity::getStatus, 2); + if (StringUtil.isNotBlank(finalRecId)) { + ne(ImsDutyMainEntity::getId, finalRecId); + } + }}); + } + } + + public boolean saveImsDutyGroupPEntity(String personId, String tenantId, Long groupId, String createDept) { + String[] personIds = personId.split("\\^"); + List list = new ArrayList<>(); + + for (String id : personIds) { + ImsDutyGroupPEntity imsDutyGroupPEntity = new ImsDutyGroupPEntity(); + imsDutyGroupPEntity.setTenantId(tenantId); + imsDutyGroupPEntity.setGroupId(groupId); + imsDutyGroupPEntity.setPersonId(Long.parseLong(id)); + imsDutyGroupPEntity.setCreateDept(createDept); + if (imsDutyGroupPMapper.selectPersonIsExist(imsDutyGroupPEntity) < 1) { + list.add(imsDutyGroupPEntity); + } + } + if (CollectionUtil.isEmpty(list)) { + return false; + } + return imsDutyGroupPService.saveBatch(list); + } + + @Override + public R update(ImsDutyGroupEntity imsDutyGroup, String personId) { + if (StringUtils.isEmpty(personId)) { + return R.fail("值班小组成员不能为空"); + } + this.updateById(imsDutyGroup); + //先删掉关联信息,再添加 + imsDutyGroupPService.deleteByGroupId(imsDutyGroup.getId()); + boolean flag = this.saveImsDutyGroupPEntity(personId, imsDutyGroup.getTenantId(), imsDutyGroup.getId(), AuthUtil.getDeptId()); + return R.status(flag); + } + + @Override + public R> list(ImsDutyGroupEntity imsDutyGroup, Query query) { + LambdaQueryWrapper queryWrapper = Condition.getQueryWrapper(new ImsDutyGroupEntity(), imsDutyGroup); + if (null != imsDutyGroup.getCreateDept()) { + queryWrapper.eq(ImsDutyGroupEntity::getCreateDept, imsDutyGroup.getCreateDept()); + } + queryWrapper.orderByDesc(ImsDutyGroupEntity::getCreateTime); + IPage pages = page(Condition.getPage(query), queryWrapper); + IPage voPages = new Page<>(); + List voList = new ArrayList<>(); + for (int i = 0; i < pages.getRecords().size(); i++) { + ImsDutyGroupEntity entity = pages.getRecords().get(i); + ImsDutyGroupVO imsDutyGroupVO = new ImsDutyGroupVO(); + imsDutyGroupVO.setId(entity.getId()); + imsDutyGroupVO.setGroupName(entity.getGroupName()); + imsDutyGroupVO.setTenantId(entity.getTenantId()); + imsDutyGroupVO.setIsDeleted(entity.getIsDeleted()); + imsDutyGroupVO.setCreateTime(entity.getCreateTime()); + imsDutyGroupVO.setCreateUser(entity.getCreateUser()); + List list = imsDutyGroupPService.selectByGroupId(entity.getId()); + StringBuilder personId = new StringBuilder(); + String personName = ""; + for (int j = 0, len = list.size(); j < len; j++) { + if (j != 0) { + personId.append("^").append(list.get(j).getPersonId()); + } else { + personId = new StringBuilder("" + list.get(j).getPersonId()); + } + } + imsDutyGroupVO.setPersonId(personId.toString()); + imsDutyGroupVO.setCreateDept(entity.getCreateDept()); + imsDutyGroupVO.setPersonName(personName); + voList.add(imsDutyGroupVO); + } + voPages.setRecords(voList); + voPages.setTotal(pages.getTotal()); + voPages.setCurrent(pages.getCurrent()); + voPages.setPages(pages.getPages()); + voPages.setSize(pages.getSize()); + return R.data(voPages); + } + + /** + * 人员分组查询 + * + * @return 人员列表 + */ + @Override + public R> getPersonGroupAll(Long createDept) { + List imsDutyGroupPersonVOList = new ArrayList<>(); + + List list = this.list(new LambdaQueryWrapper() {{ + eq(ImsDutyGroupEntity::getCreateDept, createDept); + }}); + if (CollectionUtil.isNotEmpty(list)) { + for (ImsDutyGroupEntity imsDutyGroupEntity : list) { + ImsDutyGroupPersonVO copy = BeanUtil.copy(imsDutyGroupEntity, ImsDutyGroupPersonVO.class); + List imsDutyGroupPEntities = imsDutyGroupPService.listByGroupId(imsDutyGroupEntity.getId()); + this.setUserName(imsDutyGroupPEntities, imsDutyGroupEntity.getManagerId() + "", 0); + if (null != copy) { + copy.setImsDutyGroupPEntityList(imsDutyGroupPEntities); + } + imsDutyGroupPersonVOList.add(copy); + } + } + return R.data(imsDutyGroupPersonVOList); + } + + + public void setUserName(List imsDutyGroupPEntities, String managerId, int type) { + List groupIds = new ArrayList<>(); + for (ImsDutyGroupPVO imsDutyGroupPVo : imsDutyGroupPEntities) { + imsDutyGroupPVo.setSignage(false); + User user = UserCache.getUser(imsDutyGroupPVo.getPersonId()); + if (ObjectUtil.isNotEmpty(user) && Func.isNotBlank(user.getRealName())) { + imsDutyGroupPVo.setGroupName(user.getRealName()); + } else { + groupIds.add(imsDutyGroupPVo.getId().toString()); + this.baseMapper.updateManagerIdById(imsDutyGroupPVo.getGroupId()); + imsDutyGroupPService.deleteByGroupIdAndPersonId(imsDutyGroupPVo.getGroupId(), imsDutyGroupPVo.getPersonId()); + } + if (type == 0) { + if (managerId.equals(imsDutyGroupPVo.getPersonId() + "")) { + imsDutyGroupPVo.setSignage(true); + } + } + } + + imsDutyGroupPEntities = imsDutyGroupPEntities.stream().filter(s -> !groupIds.contains(s.getId().toString())).collect(Collectors.toList()); + + } + + @Override + public R> getGroupIdByPerson(Long groupId) { + List imsDutyGroupPEntities = imsDutyGroupPService.listByGroupId(groupId); + setUserName(imsDutyGroupPEntities, null, 1); + return R.data(imsDutyGroupPEntities); + } + + @Override + public boolean saveDutyMain(ImsDutyMainEntity imsDutyMainEntity) { + return iImsDutyMainService.save(imsDutyMainEntity); + } + + @Override + public R doDeleteLogic(String ids) { + Integer i = iImsDutyMainService.getMainJoinGroupId(Func.toLongList(ids)); + if (null != i && i > 0) { + return R.fail("所选班组存在绑定值班选项,不可删除!"); + } + //先删掉关联信息 + imsDutyGroupPService.deleteByGroupId(Long.parseLong(ids)); + return R.status(this.removeByIds(Func.toLongList(ids))); + } + + @Override + public R doDeleteBatchGroupP(List ids, boolean updateDuty) { + //查询班组人员中间表 + List dutyPList = imsDutyGroupPService.list(new LambdaQueryWrapper() {{ + in(ImsDutyGroupPEntity::getId, ids); + }}); + if (CollectionUtil.isEmpty(dutyPList)) { + return R.fail("未找到人员信息!"); + } + //获取人员 + List personIdList = dutyPList.stream().map(ImsDutyGroupPEntity::getPersonId).collect(Collectors.toList()); + + //根据人员获取负责人 + List manageIdList = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + in(ImsDutyGroupEntity::getManagerId, personIdList); + }}); + + if (CollectionUtil.isNotEmpty(manageIdList)) { + //获取班组ID + List groupIdList = manageIdList.stream().map(BaseEntity::getId).collect(Collectors.toList()); + //根据班组ID获取值班信息 + List dutyList = iImsDutyMainService.list(new LambdaQueryWrapper() {{ + in(ImsDutyMainEntity::getDutyGroupId, groupIdList); + in(ImsDutyMainEntity::getStatus, Arrays.asList(0, 1)); + }}); + + if (CollectionUtil.isNotEmpty(dutyList)) { + ImsDutyMainEntity imsDutyMainEntity = dutyList.get(0); + String userName = ""; + Long managerId = null; + String groupName = ""; + if (imsDutyMainEntity.getDutyGroupId() != null) { + ImsDutyGroupEntity groupEntity = this.baseMapper.selectById(imsDutyMainEntity.getDutyGroupId()); + if (null != groupEntity.getManagerId()) { + managerId = groupEntity.getManagerId(); + } + groupName = groupEntity.getGroupName(); + } else { + ImsDutyMainPersonEntity imsDutyMainPersonEntity = imsDutyMainPersonMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, imsDutyMainEntity.getId()); + last(" limit 1"); + }}); + managerId = imsDutyMainPersonEntity.getDutyChargePerson(); + groupName = "灵活排班"; + } + + if (managerId != null) { + R userR = userClient.userInfoById(managerId); + if (userR.isSuccess() && ObjectUtil.isNotEmpty(userR.getData())) { + userName = userR.getData().getName(); + + } + } + return R.fail(groupName + "-" + userName + + "是负责人,且存在排班不能直接删除,请先更换" + groupName + "负责人,再进行删除操作!"); + } + } + imsDutyGroupPService.deleteBatch(ids); + Map> collect = dutyPList.stream().collect(Collectors.groupingBy(ImsDutyGroupPEntity::getGroupId)); + if (updateDuty) { + for (Long aLong : collect.keySet()) { + updateDuty(aLong); + } + } + return R.success("操作成功"); + + } + + @Override + public R> getListManager(Long createDept) { + List list = this.list(new LambdaQueryWrapper() {{ + isNotNull(ImsDutyGroupEntity::getManagerId); + if (null != createDept) { + eq(ImsDutyGroupEntity::getCreateDept, createDept); + } + }}); + List groupIds = new ArrayList<>(); + for (ImsDutyGroupEntity groupEntity : list) { + R userR = userClient.userInfoById(groupEntity.getManagerId()); + if (!userR.isSuccess() || ObjectUtil.isEmpty(userR.getData())) { + groupIds.add(groupEntity.getId().toString()); + } + } + if (CollectionUtil.isNotEmpty(groupIds)) { + list = list.stream().filter(s -> !groupIds.contains(s.getId().toString())).collect(Collectors.toList()); + } + return R.data(list); + } + + /** + * 获取班组成员 + * + * @param deptId 部门id + * @return 用户列表 + */ + @Override + public List groupMember(Long deptId) { + List groupMembers = this.baseMapper.groupMember(deptId); + return groupMembers.stream().peek(group -> { + if (group.getMember() != null && !group.getMember().isEmpty()) { + List members = group.getMember().stream().peek(member -> { + User person = UserCache.getUser(member.getPersonId()); + if (ObjectUtil.isNotEmpty(person)) { + member.setPersonName(person.getRealName()); + } + }).collect(Collectors.toList()); + group.setMember(members.stream().filter(o -> StringUtil.isNotBlank(o.getPersonName())).collect(Collectors.toList())); + } + }).filter(o -> CollectionUtil.isNotEmpty(o.getMember())).collect(Collectors.toList()); + } + + @Override + public List getDutyGroupJoinDutyMain(String startDate, String endDate) { + return this.baseMapper.selectDutyGroupJoinDutyMain(startDate, endDate); + } + + + /** + * 获取某个月的天数 + * + * @param date 日期 + * @return 天数 + */ + public static int getDaysOfMonth(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyLogServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyLogServiceImpl.java new file mode 100644 index 0000000..acf0cab --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyLogServiceImpl.java @@ -0,0 +1,187 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import cn.afterturn.easypoi.entity.ImageEntity; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.tool.utils.Func; +import org.springblade.hzinfo_inspect.duty.constants.DutyConstants; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyLogEntity; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyLogMapper; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyLogService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 服务实现类 + * + * @author Chill + */ +@Slf4j +@Service +public class ImsDutyLogServiceImpl extends ServiceImpl implements IImsDutyLogService { + + @Value("${hzims.duty.file-path}") + private String savePath; + @Override + public void exportDutyLog(String dutyId, HashMap map) { + ImsDutyLogEntity res = this.baseMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyLogEntity::getDutyId, dutyId) + .last(" limit 1");}}); +// ImsDutyLogEntity res=new ImsDutyLogEntity(); + if (Func.isNotEmpty(res)){ + map.put("time",res.getTime()); + map.put("dutyTime",res.getDutyTime()); + map.put("classType",res.getClassType()); + + String dutyStatus = res.getDutyStatus(); + if (StringUtils.isNotBlank(dutyStatus)){ + List> dutyStatusList = JSONObject.parseObject(dutyStatus, + new TypeReference< List>>() { + }); + + for (HashMap stringStringHashMap : dutyStatusList) { + for (DutyConstants.DutyLogLevel value : DutyConstants.DutyLogLevel.values()) { + if (value.getVal().equals(stringStringHashMap.get("level"))){ + stringStringHashMap.replace("level",value.getName()); + } + } + } + + map.put("dutyStatus",dutyStatusList); + }else { + ArrayList> dutyStatusList = new ArrayList<>(); + HashMap temp = new HashMap<>(); + temp.put("name", ""); + temp.put("status",""); + temp.put("level", ""); + dutyStatusList.add(temp); + map.put("dutyStatus",dutyStatusList); + } + + + map.put("operationFinish",res.getOperationFinish()); + map.put("operationUnFinish",res.getOperationUnFinish()); + map.put("operationCancel",res.getOperationCancel()); + map.put("workDoing",res.getWorkDoing()); + map.put("workUnFinish",res.getWorkUnFinish()); + map.put("workFinish",res.getWorkFinish()); + map.put("workCancel",res.getWorkCancel()); + + String notice = res.getNotice(); + if (StringUtils.isNotBlank(notice)){ + List> noticeItemList = JSONObject.parseObject(notice, + new TypeReference< List>>() { + }); + for (HashMap stringStringHashMap : noticeItemList) { + for (DutyConstants.DutyLogLevel value : DutyConstants.DutyLogLevel.values()) { + if (value.getVal().equals(stringStringHashMap.get("level"))){ + stringStringHashMap.replace("level",value.getName()); + } + } + } + map.put("notice",noticeItemList); + }else { + ArrayList> noticeItemList = new ArrayList<>(2); + HashMap temp = new HashMap<>(); + temp.put("item", ""); + temp.put("level",""); + noticeItemList.add(temp); + map.put("notice",noticeItemList); + } + map.put("handMaster",res.getHandMaster()); + map.put("handNumber",res.getHandNumber()); + map.put("handTime",res.getHandTime()); + map.put("carryMaster",res.getCarryMaster()); + map.put("carryNumber",res.getCarryNumber()); + map.put("carryTime",res.getCarryTime()); + map.put("carryMaster",res.getCarryMaster()); + List imageEntityList = new ArrayList<>(); + if (StringUtils.isNotBlank(res.getDutyPic())) { + String[] dutyPicSplit = res.getDutyPic().split(","); + for (String string : dutyPicSplit) { + ImageEntity imageEntity = new ImageEntity(imgToByte(savePath + downloadFileByUrl(string, savePath)), 225, 163); + imageEntity.setUrl(string); + imageEntityList.add(imageEntity); + } + }else { + imageEntityList.add(new ImageEntity()); + } + map.put("dutyPic",imageEntityList); + } + + } + + + private byte[] imgToByte(String tempImgPath) { + File file = new File(tempImgPath); + byte[] buffer = null; + try { + FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(1000); + byte[] b = new byte[1000]; + int n; + while ((n = fis.read(b)) != -1) { + bos.write(b, 0, n); + } + fis.close(); + bos.close(); + buffer = bos.toByteArray(); + } catch (IOException e) { + log.error(e.getMessage()); + } + //删除临时文件 + file.delete(); + return buffer; + } + + private String downloadFileByUrl(String fileUrl, String downloadFileDir){ + URL url = null; + String fileName = null; + try { + url = new URL(fileUrl); + HttpURLConnection connection = (HttpURLConnection)url.openConnection(); + connection.setConnectTimeout(5000); + connection.setReadTimeout(5000); + connection.connect(); + + int responseCode = connection.getResponseCode(); + if (responseCode == 200) { + + InputStream inputStream = connection.getInputStream(); + + int lastSlashIndex = fileUrl.lastIndexOf("/"); + if (lastSlashIndex > 0){ + fileName = fileUrl.substring(lastSlashIndex+1); + String filePath = downloadFileDir + fileName; + File file = new File(filePath); + if (file.exists()){ + file.delete(); + } + OutputStream outputStream = new FileOutputStream(file); + // 将文件流拷贝到本地处理 + IOUtils.copy(inputStream, outputStream); + }else { + throw new ServiceException("下载文件路径异常:" + downloadFileDir); + } + } + } catch (Exception e) { + throw new ServiceException("文件图片下载失败!"); + } + return fileName; + } + +} + diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyMainPersonServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyMainPersonServiceImpl.java new file mode 100644 index 0000000..1a63ac2 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyMainPersonServiceImpl.java @@ -0,0 +1,67 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainPersonEntity; +import org.springblade.hzinfo_inspect.duty.mapper.*; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyGroupPService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainPersonService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainTemplateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 服务实现类 + * + * @author Chill + */ +@Service +@Slf4j +public class ImsDutyMainPersonServiceImpl extends ServiceImpl implements IImsDutyMainPersonService { + @Autowired + private ImsDutyGroupPMapper imsDutyGroupPMapper; + @Autowired + private IImsDutyMainTemplateService iImsDutyMainTemplateService; + @Autowired + private ImsDutyGroupMapper dutyGroupMapper; + @Autowired + private ImsDutyRecMapper imsDutyRecMapper; + @Autowired + private IImsDutyGroupPService imsDutyGroupPService; + @Autowired + private DutyGroupGeneratingCapacityMapper groupGeneratingCapacityMapper; + + + @Override + public void doSaveBasch(List list) { + this.saveBatch(list); + } + + @Override + public List selectByMainIds(List dutyMainIds) { + List imsDutyMainPersonEntities = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + in(ImsDutyMainPersonEntity::getDutyMainId, dutyMainIds); + }}); + if (CollectionUtils.isNotEmpty(imsDutyMainPersonEntities)){ + + return imsDutyMainPersonEntities; + } + return null; + } + + @Override + public List selectByMainId(Long dutyMainId) { + List imsDutyMainPersonEntities = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, dutyMainId); + }}); + if (CollectionUtils.isNotEmpty(imsDutyMainPersonEntities)){ + + return imsDutyMainPersonEntities; + } + return null; + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyMainServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyMainServiceImpl.java new file mode 100644 index 0000000..604e784 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyMainServiceImpl.java @@ -0,0 +1,1982 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.SerializationUtils; +import org.apache.commons.lang3.StringUtils; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.*; +import org.springblade.hzinfo_inspect.duty.entity.*; +import org.springblade.hzinfo_inspect.duty.enums.DutyMainStatus; +import org.springblade.hzinfo_inspect.duty.enums.DutyRecStatus; +import org.springblade.hzinfo_inspect.duty.enums.JoinStatus; +import org.springblade.hzinfo_inspect.duty.mapper.*; +import org.springblade.hzinfo_inspect.duty.service.*; +import org.springblade.hzinfo_inspect.duty.utils.DateUtils; +import org.springblade.hzinfo_inspect.duty.utils.ThreadTask; +import org.springblade.hzinfo_inspect.duty.vo.*; +import org.springblade.system.user.cache.UserCache; +import org.springblade.system.user.entity.User; +import org.springblade.system.user.feign.IUserClient; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; + +import javax.annotation.Resource; +import java.sql.Time; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 服务实现类 + * + * @author Chill + */ +@Service +@Slf4j +public class ImsDutyMainServiceImpl extends ServiceImpl implements IImsDutyMainService { + @Resource + private ImsDutyGroupPMapper imsDutyGroupPMapper; + @Autowired + private IImsDutyMainTemplateService iImsDutyMainTemplateService; + @Resource + private ImsDutyGroupMapper dutyGroupMapper; + @Resource + private ImsDutyMainPersonMapper imsDutyMainPersonMapper; + @Autowired + private IImsDutyMainPersonService iImsDutyMainPersonService; + @Resource + private ImsDutyRecMapper imsDutyRecMapper; + @Autowired + private IImsDutyGroupPService imsDutyGroupPService; + @Autowired + private IImsDutyClassService iImsDutyClassService; + @Resource + private DutyGroupGeneratingCapacityMapper groupGeneratingCapacityMapper; + @Autowired + private IUserClient userClient; + + + @Override + public R saveOrUpdateImsDutyMain(ImsDutyMainEntity imsDutyMain) { + if (StringUtils.isEmpty(imsDutyMain.getDutyPersonIds())) { + return R.fail("班次人员不能为空"); + } + if (null == imsDutyMain.getClassId()) { + return R.fail("班次ID不能为空"); + } + /*if (StringUtils.isEmpty(imsDutyMain.getClassName())) { + return R.fail("班次名称为空"); + }*/ + //判断值班人员同一天同一班次是否排过班 + Map params = new HashMap<>(); + if (null != imsDutyMain.getId()) { + params.put("id", imsDutyMain.getId()); + } + params.put("dutyDate", imsDutyMain.getDutyDate()); + params.put("classId", imsDutyMain.getClassId()); + String[] dutyPersonIds = imsDutyMain.getDutyPersonIds().split("\\^"); + for (String dutyPersonId : dutyPersonIds) { + params.put("dutyPersonIds", dutyPersonId); + List list = this.baseMapper.selectByPersonId(params); + if (list.size() > 0) { + return R.fail("ID为" + dutyPersonId + "的用户在该天该班次已排过班,请重新选择"); + } + } + imsDutyMain.setStatus(JoinStatus.DUTY_WAIT.getStatus()); + return R.status(this.saveOrUpdate(imsDutyMain)); + } + + @Override + public R delete(List ids) { + if (ids.size() == 0) { + return R.fail("ids不能为空"); + } + //状态为待值班的才可以删除 + for (int i = 0; i < ids.size(); i++) { + ImsDutyMainEntity imsDutyMainEntity = this.getById(ids.get(i)); + if (imsDutyMainEntity.getStatus() != JoinStatus.DUTY_WAIT.getStatus()) { + return R.fail("状态为待值班的才可以删除"); + } + } + return R.status(this.removeByIds(ids)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R deleteV2(List ids) { + if (ids.size() == 0) { + return R.fail("ids不能为空"); + } + //状态为待值班的才可以删除 + for (int i = 0; i < ids.size(); i++) { + ImsDutyMainEntity imsDutyMainEntity = this.getById(ids.get(i)); + if (imsDutyMainEntity.getStatus() != JoinStatus.DUTY_WAIT.getStatus()) { + return R.fail("状态为待值班的才可以删除"); + } + } + List personEntityList = imsDutyMainPersonMapper.selectList(new LambdaQueryWrapper() {{ + in(ImsDutyMainPersonEntity::getDutyMainId, ids); + }}); + List collect = personEntityList.stream().map(s -> s.getId()).collect(Collectors.toList()); + return R.status(this.removeByIds(ids) && iImsDutyMainPersonService.removeByIds(collect)); + } + + @Override + public R getByDateListAll(String dutyDate, Long personId) { + return R.data(this.baseMapper.selectByDateListAll(dutyDate, personId)); + } + + + @Override + public ImsSchedulingVo getByIdOne(Long id) { + return this.baseMapper.selectByIdOne(id, null); + } + + @Override + public ImsSchedulingVo getByIdOneV2(Long id) { + ImsSchedulingVo imsSchedulingVo = this.baseMapper.selectByIdOneV2(id, null); + if (null == imsSchedulingVo.getGroupId()) { + imsSchedulingVo.setGroupName("临时班组"); + ImsDutyMainPersonEntity imsDutyMainPersonEntity = imsDutyMainPersonMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, id); + last(" limit 1"); + }}); + imsSchedulingVo.setManagerId(imsDutyMainPersonEntity.getDutyChargePerson()); + } else { + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(imsSchedulingVo.getGroupId()); + imsSchedulingVo.setGroupName(imsDutyGroupEntity.getGroupName()); + imsSchedulingVo.setGroupId(imsDutyGroupEntity.getId()); + imsSchedulingVo.setManagerId(imsDutyGroupEntity.getManagerId()); + } + return imsSchedulingVo; + } + + @Override + public ImsSchedulingVo getByIdOneV2(Long id, Long preDutyId) { + ImsSchedulingVo imsSchedulingVo = this.baseMapper.selectByIdOneV2(id, preDutyId); + if (null == imsSchedulingVo.getGroupId()) { + imsSchedulingVo.setGroupName("临时班组"); + ImsDutyMainPersonEntity imsDutyMainPersonEntity = imsDutyMainPersonMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, imsSchedulingVo.getId()); + last("limit 1"); + }}); + imsSchedulingVo.setManagerId(imsDutyMainPersonEntity.getDutyChargePerson()); + } else { + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(imsSchedulingVo.getGroupId()); + imsSchedulingVo.setGroupName(imsDutyGroupEntity.getGroupName()); + imsSchedulingVo.setGroupId(imsDutyGroupEntity.getId()); + imsSchedulingVo.setManagerId(imsDutyGroupEntity.getManagerId()); + } + return imsSchedulingVo; + } + + @Override + public ImsDutyMainEntity getMainEntity(Long id) { + return this.baseMapper.selectMainByIdOne(id); + } + + /** + * 排班 + * + * @param imsSchedulingVo + * @return + */ + @Override + public R getScheduling(ImsSchedulingVo imsSchedulingVo) { + + + if (null == imsSchedulingVo.getSchedulingType()) { + imsSchedulingVo.setSchedulingType(1); + } + if (1 == imsSchedulingVo.getSchedulingType()) { + return pollScheduling(imsSchedulingVo); + } + + return cycleSchedulingTow(imsSchedulingVo); + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R getSchedulingV2(ImsSchedulingVo imsSchedulingVo) { + //判断是否符合排班规则。 + String[] start = imsSchedulingVo.getStartDate().split("-"); + String[] end = imsSchedulingVo.getEndDate().split("-"); + Calendar cal = Calendar.getInstance(); + int year = cal.get(Calendar.YEAR); + int month = cal.get(Calendar.MONTH) + 1;//获取月份 + int day = cal.get(Calendar.DAY_OF_MONTH); + String date1 = getDate(year, month, day); + String date2 = DateUtils.dayStringDate(date1, 1, true); + if (!imsSchedulingVo.getStartDate().equals(date2)) { + String minusOnedDay = DateUtils.dayStringDate(imsSchedulingVo.getStartDate(), 1, false); + log.info("--------------Auth:" + AuthUtil.getDeptId() + "--------createDept:" + imsSchedulingVo.getCreateDept()); + List imsDutyMainEntities = this.baseMapper.selectByDateAndDept(minusOnedDay, imsSchedulingVo.getCreateDept()); + if (CollectionUtil.isEmpty(imsDutyMainEntities)) { + return R.fail("所选日期之前存在未排班情况,请重新选择日期区间!"); + } + } + List dates = getTwoPeriodsAll(Integer.valueOf(start[0]), Integer.valueOf(start[1]), Integer.valueOf(start[2]), Integer.valueOf(end[0]), Integer.valueOf(end[1]), Integer.valueOf(end[2])); + if (Integer.valueOf(start[0]) < year) { + return R.fail("年份必须大于或等于当前年份!"); + } + if (Integer.valueOf(start[0]) == year && Integer.valueOf(start[1]) < month) { + return R.fail("时间必须大于或等于当前时间"); + } + List imsDutyMainEntities2 = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + ge(ImsDutyMainEntity::getDutyDate, imsSchedulingVo.getStartDate()); + le(ImsDutyMainEntity::getDutyDate, imsSchedulingVo.getEndDate()); + eq(ImsDutyMainEntity::getCreateDept, imsSchedulingVo.getCreateDept()); + }}); + List imsDutyMainPersonEntities = imsDutyMainPersonMapper.selectList(new LambdaQueryWrapper() {{ + ge(ImsDutyMainPersonEntity::getDutyDate, imsSchedulingVo.getStartDate()); + le(ImsDutyMainPersonEntity::getDutyDate, imsSchedulingVo.getEndDate()); + eq(ImsDutyMainPersonEntity::getCreateDept, imsSchedulingVo.getCreateDept()); + }}); + if (CollectionUtil.isNotEmpty(imsDutyMainPersonEntities) || CollectionUtil.isNotEmpty(imsDutyMainEntities2)) { + if (imsSchedulingVo.isCompose() == false) { + //如果有排班记录且无需排序,则返回 + return R.data(1); + } else { + if (CollectionUtil.isNotEmpty(dates)) { + //重新修改已有的排版,先删除,在添加 + this.baseMapper.delete(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getCreateDept, imsSchedulingVo.getCreateDept()); + in(ImsDutyMainEntity::getDutyDate, dates); + }}); + imsDutyMainPersonMapper.delete(new LambdaQueryWrapper() {{ + in(ImsDutyMainPersonEntity::getDutyDate, dates); + eq(ImsDutyMainPersonEntity::getCreateDept, imsSchedulingVo.getCreateDept()); + }}); + } + } + } + String subDayDate = DateUtils.dayDate(DateUtil.parse(imsSchedulingVo.getStartDate(), DateUtil.PATTERN_DATE), -1, DateUtil.PATTERN_DATE); + ImsDutyMainEntity imsDutyMainEntity1 = this.baseMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getDutyDate, subDayDate); + eq(ImsDutyMainEntity::getCreateDept, imsSchedulingVo.getCreateDept()); + ne(ImsDutyMainEntity::getStatus, "-1"); + orderByDesc(ImsDutyMainEntity::getId).last("LIMIT 1"); + }}); + if (null == imsSchedulingVo.getSchedulingType()) { + imsSchedulingVo.setSchedulingType(1); + } + //符合条件后根据周期、轮询排班方式保存 + if (1 == imsSchedulingVo.getSchedulingType()) { + return pollSchedulingV2(imsSchedulingVo, dates, imsDutyMainEntity1); + } + return cycleSchedulingTowV2(imsSchedulingVo, dates, imsDutyMainEntity1); + } + + /** + * 轮询排班 + * + * @param imsSchedulingVo + * @param dates + * @param imsDutyMainEntity1 + * @return + */ + private R pollSchedulingV2(ImsSchedulingVo imsSchedulingVo, List dates, ImsDutyMainEntity imsDutyMainEntity1) { + String[] groupIdsSplit; + int dutyNum; + //轮询排班分为:班组还是灵活;如果是2.灵活人员排班,则不需要查数据库,直接存对应信息 + if (2 == imsSchedulingVo.getPersonType()) { + Map> rosters = imsSchedulingVo.getRosters(); + for (String s : rosters.keySet()) { + if (StringUtils.isBlank(s)) { + return R.fail("人员排班:无班组长信息,请稍后重试!"); + } + if (CollectionUtil.isEmpty(rosters.get(s))) { + return R.fail("人员排班:无人员信息,请稍后重试!"); + } + } + groupIdsSplit = rosters.keySet().toArray(new String[0]); + dutyNum = groupIdsSplit.length; + } else { + groupIdsSplit = imsSchedulingVo.getGroupIds().split("\\^"); + String[] groupNamesSplit = imsSchedulingVo.getGroupNames().split("\\^"); + dutyNum = groupNamesSplit.length; + } + String[] classIdsSplit = imsSchedulingVo.getClassIds().split("\\^"); + String[] classNamesSplit = imsSchedulingVo.getClassNames().split("\\^"); + int classNum = classNamesSplit.length; + int allClass = 0; + List imsDutyMainEntityList = new ArrayList<>(); + List imsDutyMainPersonEntityList = new ArrayList<>(); + String proDutyMainId = null; + for (int i = 1; i <= dates.size(); i++) { + String date = dates.get(i - 1); + for (int j = 1; j <= classNum; j++) { + //总排班数加1 + allClass++; + int temp, tempSub = 0; + temp = allClass % dutyNum; + //班组下标,确定取哪个班组 + tempSub = temp - 1; + //如果整除,取最后一个班组 + if (temp == 0) { + tempSub = dutyNum - 1; + } + ImsDutyMainEntity imsDutyMainEntity = new ImsDutyMainEntity(); + imsDutyMainEntity.setClassId(Long.valueOf(classIdsSplit[j - 1])); + imsDutyMainEntity.setClassName(classNamesSplit[j - 1]); + imsDutyMainEntity.setDutyDate(DateUtil.parse(date, DateUtil.PATTERN_DATE)); + imsDutyMainEntity.setStatus(0); + imsDutyMainEntity.setCreateTime(new Date()); + if (Func.isBlank(proDutyMainId)) { + if (ObjectUtil.isNotEmpty(imsDutyMainEntity1)) { + proDutyMainId = imsDutyMainEntity1.getId().toString(); + } + } + if (StringUtil.isNotBlank(proDutyMainId)) { + imsDutyMainEntity.setPreDutyId(Long.valueOf(proDutyMainId)); + } + imsDutyMainEntity.setCreateDept(imsSchedulingVo.getCreateDept()); + List collect; + Long managerId; + String groupName = ""; + if (2 == imsSchedulingVo.getPersonType()) { + List idList = imsSchedulingVo.getRosters().get(groupIdsSplit[tempSub]); + collect = idList.stream().map(s -> Long.valueOf(s)).collect(Collectors.toList()); + managerId = Long.valueOf(groupIdsSplit[tempSub]); + } else { + String groupId = groupIdsSplit[tempSub]; + imsDutyMainEntity.setDutyGroupId(Long.valueOf(groupIdsSplit[tempSub])); + //查询预备排班的班组人员,为空,则失败 + List longList = Arrays.asList(imsSchedulingVo.getGroupIds().split("\\^")) + .parallelStream() + .map(a -> Long.parseLong(a.trim())) + .collect(Collectors.toList()); + List list = imsDutyGroupPService.selectByGroupIds(longList); + collect = list.stream().filter(iter -> iter.getGroupId().toString().equals(groupId)).map(iter -> + iter.getPersonId()).collect(Collectors.toList()); + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(groupId); + groupName = imsDutyGroupEntity.getGroupName(); + if (ObjectUtil.isNotEmpty(imsDutyGroupEntity) && ObjectUtil.isNotEmpty(imsDutyGroupEntity.getManagerId())) { + managerId = imsDutyGroupEntity.getManagerId(); + } else { + return R.fail("该班组没有值班组组长"); + } + } + String ids = StringUtils.join(collect, "^"); + imsDutyMainEntity.setDutyPersonIds(ids); + Long id = IdWorker.getId(); + imsDutyMainEntity.setId(id); + imsDutyMainEntity.setCreateUser(AuthUtil.getUserId()); + imsDutyMainEntity.setUpdateUser(AuthUtil.getUserId()); + imsDutyMainEntity.setTenantId(AuthUtil.getTenantId()); + if (Func.isBlank(proDutyMainId)) { + if (ObjectUtil.isNotEmpty(imsDutyMainEntity1)) { + proDutyMainId = imsDutyMainEntity1.getId().toString(); + } + } + if (StringUtil.isNotBlank(proDutyMainId)) { + imsDutyMainEntity.setPreDutyId(Long.valueOf(proDutyMainId)); + } + imsDutyMainEntityList.add(imsDutyMainEntity); + proDutyMainId = id == null ? "" : imsDutyMainEntity.getId() + ""; + //值班人员表同步保存一份 + copyPersonByDutyMain(imsSchedulingVo, managerId, groupName, imsDutyMainPersonEntityList, imsDutyMainEntity, collect); + } + } + ThreadTask.dutyTask(imsDutyMainEntityList, imsDutyMainPersonEntityList, imsSchedulingVo.getEndDate(), proDutyMainId, imsSchedulingVo.getCreateDept(), imsSchedulingVo.getDutyClassTypeId()); + return R.success("操作成功,系统正在排班中,请稍后查看"); + } + + private static void copyPersonByDutyMain(ImsSchedulingVo imsSchedulingVo, Long managerId, String groupName, List imsDutyMainPersonEntityList, ImsDutyMainEntity imsDutyMainEntity, List collect) { + //每个人员对应一条排班-人员计划 + for (Long personId : collect) { + ImsDutyMainPersonEntity imsDutyMainPersonEntity = new ImsDutyMainPersonEntity(); + imsDutyMainPersonEntity.setClassId(imsDutyMainEntity.getClassId()); + imsDutyMainPersonEntity.setCreateDept(imsDutyMainEntity.getCreateDept()); + imsDutyMainPersonEntity.setDutyGroupName(groupName); + imsDutyMainPersonEntity.setDutyGroupId(imsSchedulingVo.getGroupId()); + imsDutyMainPersonEntity.setDutyDate(imsDutyMainEntity.getDutyDate()); + imsDutyMainPersonEntity.setStatus(imsDutyMainEntity.getStatus()); + imsDutyMainPersonEntity.setCreateTime(imsDutyMainEntity.getCreateTime()); + imsDutyMainPersonEntity.setDutyMainId(imsDutyMainEntity.getId()); + imsDutyMainPersonEntity.setCreateUser(imsDutyMainEntity.getCreateUser()); + imsDutyMainPersonEntity.setUpdateUser(imsDutyMainEntity.getUpdateUser()); + imsDutyMainPersonEntity.setTenantId(imsDutyMainEntity.getTenantId()); + imsDutyMainPersonEntity.setDutyPerson(personId); + long id1 = IdWorker.getId(imsDutyMainPersonEntity); + imsDutyMainPersonEntity.setId(id1); + imsDutyMainPersonEntity.setDutyChargePerson(managerId); + imsDutyMainPersonEntityList.add(imsDutyMainPersonEntity); + } + } + + /** + * 周期排班 + * + * @param imsSchedulingVo + * @param dates + * @param imsDutyMainEntity1 + * @return + */ + private R cycleSchedulingTowV2(ImsSchedulingVo imsSchedulingVo, List dates, ImsDutyMainEntity imsDutyMainEntity1) { + if (imsSchedulingVo.getTemplate()) { + if (!doSaveTemplate(imsSchedulingVo)) { + return R.fail("模版名称已存在"); + } + } + List imsDutyMainEntityList = new ArrayList<>(); + List personEntityList = new ArrayList<>(); + String proDutyMainId = ""; + String[] dutyArrIds = imsSchedulingVo.getDutyArrIds(); + for (int i = 1; i <= dates.size(); i++) { + String date = dates.get(i - 1); + for (int j = 1; j <= dutyArrIds.length; j++) { + String classId = dutyArrIds[j - 1]; + //按值班周期的天数取模 + int temp = i % imsSchedulingVo.getDutyNum(); + //值班下标 + int tempSub = temp - 1; + //如果整除,取最后一个值班 + if (temp == 0) { + tempSub = imsSchedulingVo.getDutyNum() - 1; + } + String groupId; + String[] split; + if (imsSchedulingVo.getPersonType() == 1) { + //获取对应班组的值班班次 + groupId = imsSchedulingVo.getDutyOrderIds().get(classId)[tempSub]; + } else { + //灵活排班,无实际作用,只是为了groupId能够初始化 + groupId = ""; + } + //人员IDS + String personIds = ""; + if ("0".equals(classId)) { + //班组排班比灵活排班,多保存一部分没有排到班的信息 + if (imsSchedulingVo.getPersonType() == 1) { + split = groupId.split(","); + if (ObjectUtil.isNotEmpty(split)) { + for (String dutyGroupId : split) { + //查询班组信息 + Long num = Long.valueOf(StringUtils.isNotEmpty(dutyGroupId) ? dutyGroupId : "0"); + List list = imsDutyGroupPService.selectByGroupIds(Arrays.asList(num)); + List collectPerson = list.stream().filter(iter -> iter.getGroupId().toString().equals(dutyGroupId)).map(iter -> iter.getPersonId()).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(collectPerson)) { + personIds = StringUtils.join(collectPerson, "^"); + } + if (StringUtil.isNotBlank(dutyGroupId)) { + ImsDutyMainEntity imsDutyMainEntity = new ImsDutyMainEntity(); + setMainEntity(imsDutyMainEntity, classId, Long.valueOf(dutyGroupId), date); + imsDutyMainEntity.setStatus(-1); + imsDutyMainEntity.setDutyPersonIds(personIds); + imsDutyMainEntity.setCreateDept(imsSchedulingVo.getCreateDept()); + Long id = IdWorker.getId(); + imsDutyMainEntity.setId(id); + imsDutyMainEntity.setCreateUser(AuthUtil.getUserId()); + imsDutyMainEntity.setUpdateUser(AuthUtil.getUserId()); + imsDutyMainEntity.setTenantId(AuthUtil.getTenantId()); + imsDutyMainEntityList.add(imsDutyMainEntity); + } + } + } + } + } else { + ImsDutyMainEntity imsDutyMainEntity = new ImsDutyMainEntity(); + //人员ID + List collectPerson; + //负责人ID + Long managerId = 0L; + String groupName = null; + if (imsSchedulingVo.getPersonType() == 1) { + //查询班组信息 + Long num = Long.valueOf(StringUtils.isNotEmpty(groupId) ? groupId : "0"); + List list = imsDutyGroupPService.selectByGroupIds(Arrays.asList(num)); + collectPerson = list.stream().filter(iter -> iter.getGroupId().toString().equals(groupId)).map(iter -> iter.getPersonId()).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(collectPerson)) { + personIds = StringUtils.join(collectPerson, "^"); + } + imsDutyMainEntity.setDutyGroupId(Long.valueOf(groupId)); + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(groupId); + groupName = imsDutyGroupEntity.getGroupName(); + if (ObjectUtil.isNotEmpty(imsDutyGroupEntity) && ObjectUtil.isNotEmpty(imsDutyGroupEntity.getManagerId())) { + managerId = imsDutyGroupEntity.getManagerId(); + } + } else { + //灵活排版没有班组信息 + FlexibleSchedulingVo flexibleSchedulingVo = imsSchedulingVo.getFlexible().get(classId).get(tempSub); + collectPerson = flexibleSchedulingVo.getPersonIds().stream().map(s -> Long.valueOf(s)).collect(Collectors.toList()); + personIds = StringUtils.join(collectPerson, "^"); + managerId = Long.valueOf(flexibleSchedulingVo.getChargeId()); + } + setMainEntity(imsDutyMainEntity, classId, date); + if (Func.isBlank(proDutyMainId)) { + if (ObjectUtil.isNotEmpty(imsDutyMainEntity1)) { + proDutyMainId = imsDutyMainEntity1.getId().toString(); + } + } + if (StringUtil.isNotBlank(proDutyMainId)) { + imsDutyMainEntity.setPreDutyId(Long.valueOf(proDutyMainId)); + } + if (StringUtil.isNotBlank(personIds)) { + imsDutyMainEntity.setDutyPersonIds(personIds); + } + imsDutyMainEntity.setCreateDept(imsSchedulingVo.getCreateDept()); + Long id = IdWorker.getId(imsDutyMainEntity); + imsDutyMainEntity.setId(id); + imsDutyMainEntity.setCreateUser(AuthUtil.getUserId()); + imsDutyMainEntity.setUpdateUser(AuthUtil.getUserId()); + imsDutyMainEntity.setTenantId(AuthUtil.getTenantId()); + imsDutyMainEntityList.add(imsDutyMainEntity); + proDutyMainId = id == null ? "" : imsDutyMainEntity.getId().toString(); + imsDutyMainEntity1 = imsDutyMainEntity; + //同步保存到排班计划-人员表 + copyPersonByDutyMain(imsSchedulingVo, managerId, groupName, personEntityList, imsDutyMainEntity, collectPerson); + } + } + } + ThreadTask.dutyTask(imsDutyMainEntityList, personEntityList, imsSchedulingVo.getEndDate(), proDutyMainId, imsSchedulingVo.getCreateDept(), imsSchedulingVo.getDutyClassTypeId()); + return R.success("操作成功,系统正在排班中,请稍后查看"); + } + + + private R pollScheduling(ImsSchedulingVo imsSchedulingVo) { + String[] start = imsSchedulingVo.getStartDate().split("-"); + String[] end = imsSchedulingVo.getEndDate().split("-"); + Calendar cal = Calendar.getInstance(); + int year = cal.get(Calendar.YEAR); + int month = cal.get(Calendar.MONTH) + 1;//获取月份 + int day = cal.get(Calendar.DAY_OF_MONTH); + String date1 = getDate(year, month, day); + String date2 = DateUtils.dayStringDate(date1, 1, true); + if (!imsSchedulingVo.getStartDate().equals(date2)) { + String minusOnedDay = DateUtils.dayStringDate(imsSchedulingVo.getStartDate(), 1, false); + log.info("--------------Auth:" + AuthUtil.getDeptId() + "--------createDept:" + imsSchedulingVo.getCreateDept()); + List imsDutyMainEntities = this.baseMapper.selectByDateAndDept(minusOnedDay, imsSchedulingVo.getCreateDept()); + if (CollectionUtil.isEmpty(imsDutyMainEntities)) { + return R.fail("所选日期之前存在未排班情况,请重新选择日期区间!"); + } + } + + List dates = getTwoPeriodsAll(Integer.valueOf(start[0]), Integer.valueOf(start[1]), Integer.valueOf(start[2]), Integer.valueOf(end[0]), Integer.valueOf(end[1]), Integer.valueOf(end[2])); + + if (imsSchedulingVo.isCompose() == false) { + List imsDutyMainEntities2 = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + ge(ImsDutyMainEntity::getDutyDate, imsSchedulingVo.getStartDate()); + le(ImsDutyMainEntity::getDutyDate, imsSchedulingVo.getEndDate()); + eq(ImsDutyMainEntity::getCreateDept, imsSchedulingVo.getCreateDept()); + }}); + if (CollectionUtil.isNotEmpty(imsDutyMainEntities2)) { + return R.data(1); + } + } + String[] groupIdsSplit = imsSchedulingVo.getGroupIds().split("\\^"); + String[] groupNamesSplit = imsSchedulingVo.getGroupNames().split("\\^"); + int dutyNum = groupNamesSplit.length; + String[] classIdsSplit = imsSchedulingVo.getClassIds().split("\\^"); + String[] classNamesSplit = imsSchedulingVo.getClassNames().split("\\^"); + int classNum = classNamesSplit.length; + int allClass = 0; + + if (Integer.valueOf(start[0]) < year) { + return R.fail("年份必须大于或等于当前年份!"); + } + if (Integer.valueOf(start[0]) == year && Integer.valueOf(start[0]) < month) { + return R.fail("月份必须大于或等于当前年份!"); + } + if (CollectionUtil.isNotEmpty(dates)) { + this.baseMapper.delete(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getCreateDept, imsSchedulingVo.getCreateDept()); + in(ImsDutyMainEntity::getDutyDate, dates); + }}); + } + //查询所有班组人员 + List list = imsDutyGroupPService.list(); + + String subDayDate = DateUtils.dayDate(DateUtil.parse(imsSchedulingVo.getStartDate(), DateUtil.PATTERN_DATE), -1, DateUtil.PATTERN_DATE); + + ImsDutyMainEntity imsDutyMainEntity1 = this.baseMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getDutyDate, subDayDate); + eq(ImsDutyMainEntity::getCreateDept, imsSchedulingVo.getCreateDept()); + ne(ImsDutyMainEntity::getStatus, "-1"); + orderByDesc(ImsDutyMainEntity::getId).last("LIMIT 1"); + }}); + + List imsDutyMainEntityList = new ArrayList<>(); + + String proDutyMainId = ""; + for (int i = 1; i <= dates.size(); i++) { + String date = dates.get(i - 1); + for (int j = 1; j <= classNum; j++) { + + //总排班数加1 + //allClass++; + int temp, tempSub = 0; + allClass++; + temp = allClass % dutyNum; + //班组下标,确定取哪个班组 + tempSub = temp - 1; + //如果整除,取最后一个班组 + if (temp == 0) { + tempSub = dutyNum - 1; + } + + ImsDutyMainEntity imsDutyMainEntity = new ImsDutyMainEntity(); + imsDutyMainEntity.setClassId(Long.valueOf(classIdsSplit[j - 1])); + imsDutyMainEntity.setDutyGroupId(Long.valueOf(groupIdsSplit[tempSub])); + imsDutyMainEntity.setClassName(classNamesSplit[j - 1]); + imsDutyMainEntity.setDutyDate(DateUtil.parse(date, DateUtil.PATTERN_DATE)); + imsDutyMainEntity.setStatus(0); + imsDutyMainEntity.setCreateTime(new Date()); + if (Func.isBlank(proDutyMainId)) { + if (ObjectUtil.isNotEmpty(imsDutyMainEntity1)) { + proDutyMainId = imsDutyMainEntity1.getId().toString(); + } + } + if (StringUtil.isNotBlank(proDutyMainId)) { + imsDutyMainEntity.setPreDutyId(Long.valueOf(proDutyMainId)); + } + imsDutyMainEntity.setCreateDept(imsSchedulingVo.getCreateDept()); + String groupId = groupIdsSplit[tempSub]; + List collect = list.stream().filter(iter -> iter.getGroupId().toString().equals(groupId)).map(iter -> + iter.getPersonId()).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(collect)) { + String ids = StringUtils.join(collect, "^"); + imsDutyMainEntity.setDutyPersonIds(ids); + } else { + return R.fail("班组存在人员为空,禁止排班!"); + } + Long id = IdWorker.getId(); + imsDutyMainEntity.setId(id); + imsDutyMainEntity.setCreateUser(AuthUtil.getUserId()); + imsDutyMainEntity.setUpdateUser(AuthUtil.getUserId()); + imsDutyMainEntity.setTenantId(AuthUtil.getTenantId()); + imsDutyMainEntityList.add(imsDutyMainEntity); + proDutyMainId = id == null ? "" : imsDutyMainEntity.getId() + ""; + } + + } + ThreadTask.dutyTask(imsDutyMainEntityList, imsSchedulingVo.getEndDate(), proDutyMainId, imsSchedulingVo.getCreateDept(), imsSchedulingVo.getDutyClassTypeId()); + return R.success("操作成功,系统正在排班中,请稍后查看"); + } + + /** + * 获取两个日期之间的所有日期 + * + * @param startYear + * @param startMonth + * @param startDay + * @param endYear + * @param endMonth + * @param endDay + * @return + */ + public static List getTwoPeriodsAll(int startYear, int startMonth, int startDay, int endYear, int endMonth, int endDay) { + List list = new ArrayList<>(); + Calendar start = Calendar.getInstance(); + start.set(startYear, startMonth - 1, startDay); + Long startTIme = start.getTimeInMillis(); + Calendar end = Calendar.getInstance(); + end.set(endYear, endMonth - 1, endDay); + Long endTime = end.getTimeInMillis(); + + Long oneDay = 1000 * 60 * 60 * 24L; + + Long time = startTIme; + while (time <= endTime) { + Date d = new Date(time); + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + list.add(df.format(d)); + time += oneDay; + } + return list; + + } + + + public String getDate(int year, int month, int day) { + String date = ""; + if (month < 10) { + if (day < 10) { + date = year + "-" + 0 + month + "-" + 0 + day; + } else { + date = year + "-" + 0 + month + "-" + day; + } + } else { + if (day < 10) { + date = year + "-" + month + "-" + 0 + day; + } else { + date = year + "-" + month + "-" + day; + } + } + return date; + } + + + /** + * 查询已排班记录 + * + * @param month + * @return + */ + @Override + public R getSchedulingList(int year, int month, Long deptId) { + String yearAndMonth = ""; + + if (month < 10) { + yearAndMonth = year + "-0" + month; + } else { + yearAndMonth = year + "-" + month; + } + List imsSchedulingVos = this.baseMapper.selectByDateList(yearAndMonth, deptId); + if (CollectionUtil.isEmpty(imsSchedulingVos)) { + return R.success("该月未排班"); + } + int days = getDaysByYearMonth(year, month); + Map> map = new HashMap(); + for (int i = 1; i <= days; i++) { + String date = getDate(year, month, i); + List collect = imsSchedulingVos.stream().filter(o -> DateUtil.format(o.getDutyDate(), DateUtil.PATTERN_DATE).equals(date)).sorted(Comparator.comparing(ImsSchedulingVo::getId)).collect(Collectors.toList()); + map.put(date, collect); + } + return R.data(new TreeMap<>(map)); + } + + /** + * 查询已排班记录 + * + * @param year + * @param month + * @param deptId + * @return + */ + @Override + public R getSchedulingListV2(int year, int month, Long deptId) { + String yearAndMonth = ""; + + if (month < 10) { + yearAndMonth = year + "-0" + month; + } else { + yearAndMonth = year + "-" + month; + } + List imsSchedulingVos = this.baseMapper.selectByDateListV2(yearAndMonth, deptId); + if (CollectionUtil.isEmpty(imsSchedulingVos)) { + return R.success("该月未排班"); + } + int days = getDaysByYearMonth(year, month); + Map> map = new HashMap(); + for (int i = 1; i <= days; i++) { + String date = getDate(year, month, i); + List collect = imsSchedulingVos.stream().filter(o -> DateUtil.format(o.getDutyDate(), DateUtil.PATTERN_DATE).equals(date)).sorted(Comparator.comparing(ImsSchedulingVo::getId)).collect(Collectors.toList()); + collect = collect.stream().map(s -> { + //灵活排班把班组名称拼接成人员名称 + if (s.getGroupId() == null) { + ImsDutyMainPersonEntity imsDutyMainPersonEntity = imsDutyMainPersonMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, s.getId()); + last(" limit 1"); + }}); + //如果person的表中有班组名称,则直接取 + if (ObjectUtil.isNotEmpty(imsDutyMainPersonEntity) && StringUtil.isNotBlank(imsDutyMainPersonEntity.getDutyGroupName())) { + s.setName(s.getName() + imsDutyMainPersonEntity.getDutyGroupName()); + } else { + //否则,拼接对应人员 + String[] split = s.getDutyPersonIds().split("\\^"); + if (null != split && split.length > 0) { + for (int j = 0; j < split.length; j++) { + User user = UserCache.getUser(Long.valueOf(split[j])); + if (ObjectUtil.isNotEmpty(user)) { + if (j == split.length - 1) { + s.setName(s.getName() + user.getRealName()); + } else { + s.setName(s.getName() + user.getRealName() + "、"); + } + } + } + } + } + } else { + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(s.getGroupId()); + s.setName(s.getName() + imsDutyGroupEntity.getGroupName()); + } + return s; + }).sorted(Comparator.comparing(ImsSchedulingVo::getId)).collect(Collectors.toList()); + map.put(date, collect); + } + return R.data(new TreeMap<>(map)); + } + + @Override + public R getMainIdByPerson(Long id) { + List list = new ArrayList<>(); + ImsDutyMainEntity imsDutyMainEntity = this.baseMapper.selectById(id); + String ids = imsDutyMainEntity.getDutyPersonIds(); + if (StringUtil.isBlank(ids)) { + return R.data(""); + } + String[] split = ids.split("\\^"); + if (null != split && split.length > 0) { + for (String s : split) { + ImsDutyMainVO vo = new ImsDutyMainVO(); + User user = UserCache.getUser(Long.valueOf(s)); + if (ObjectUtil.isNotEmpty(user)) { + vo.setUserId(s); + if (ObjectUtil.isNotEmpty(user)) { + vo.setUserName(user.getRealName()); + } + vo.setId(id); + list.add(vo); + } + } + } + + return R.data(list); + } + + @Override + public R getMainIdByPersonV2(Long id) { + List list = new ArrayList<>(); + ImsDutyMainEntity imsDutyMainEntity = this.baseMapper.selectById(id); + if (ObjectUtils.isEmpty(imsDutyMainEntity) || StringUtil.isBlank(imsDutyMainEntity.getDutyPersonIds())) { + return R.data(""); + } + String ids = imsDutyMainEntity.getDutyPersonIds(); + String[] split = ids.split("\\^"); + if (null != split && split.length > 0) { + for (String s : split) { + ImsDutyMainVO vo = new ImsDutyMainVO(); + R user = userClient.userInfoById(Long.valueOf(s)); + if (user.isSuccess() && ObjectUtil.isNotEmpty(user.getData())) { + vo.setUserId(s); + if (ObjectUtil.isNotEmpty(user.getData().getName())) { + vo.setUserName(user.getData().getName()); + } + vo.setId(id); + list.add(vo); + } + } + } + Long managerId; + if (null != (imsDutyMainEntity.getDutyGroupId())) { + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(imsDutyMainEntity.getDutyGroupId()); + managerId = imsDutyGroupEntity.getManagerId(); + + } else { + ImsDutyMainPersonEntity imsDutyMainPersonEntity = imsDutyMainPersonMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, imsDutyMainEntity.getId()); + last("limit 1;"); + }}); + managerId = imsDutyMainPersonEntity.getDutyChargePerson(); + } + list = list.stream().map(s -> { + if (managerId.toString().equals(s.getUserId())) { + s.setUserName(s.getUserName() + "(值班组组长)"); + } + return s; + }).collect(Collectors.toList()); + return R.data(list); + } + + /** + * 获取当前值班班组 主页任务统计 + * + * @return + */ + @Override + public ImsSchedulingVo getTheManinGroup() { + ImsDutyMainEntity entity = this.baseMapper.selectOne(new QueryWrapper() {{ + eq("STATUS", 1).last("limit 1"); + }}); + + return this.baseMapper.selectByIdOneV2(entity.getId(), null); + } + + + /** + * 新增排班模版 + * + * @param vo + */ + private boolean doSaveTemplate(ImsSchedulingVo vo) { + List list = iImsDutyMainTemplateService.list(new LambdaQueryWrapper() {{ + eq(ImsDutyMainTemplateEntity::getTemplateName, vo.getTemplateName()); + eq(ImsDutyMainTemplateEntity::getType, vo.getPersonType()); + }}); + if (CollectionUtil.isNotEmpty(list)) { + return false; + } + ImsDutyMainTemplateEntity entity = new ImsDutyMainTemplateEntity(); + if (1 == vo.getPersonType()) { + String dutyOrderIds = JSONObject.toJSONString(vo.getDutyOrderIds(), SerializerFeature.WriteMapNullValue); + entity.setDutyOrderIds(dutyOrderIds); + entity.setFlexible(null); + entity.setType(1); + } else { + String flexible = JSONObject.toJSONString(vo.getFlexible(), SerializerFeature.WriteMapNullValue); + entity.setFlexible(flexible); + String dutyOrderIds = JSONObject.toJSONString(vo.getDutyOrderIds(), SerializerFeature.WriteMapNullValue); + entity.setDutyOrderIds(dutyOrderIds); + entity.setType(2); + } + String dutyArrIds = JSONObject.toJSONString(vo.getDutyArrIds(), SerializerFeature.WriteMapNullValue); + entity.setDutyNum(vo.getDutyNum()); + entity.setTemplateName(vo.getTemplateName()); + entity.setDutyArrIds(dutyArrIds); + entity.setDutyClassTypeId(vo.getDutyClassTypeId()); + entity.setCreateDept(vo.getCreateDept()); + iImsDutyMainTemplateService.save(entity); + return true; + } + + @Override + public List getDutyMainStatisticsByClassId(LocalDate startDate, LocalDate endDate, List deptIdList) { + List dutyReportVOList = new ArrayList<>(); + //获取当月值班记录 + List imsDutyMainEntityList = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + ge(ImsDutyMainEntity::getDutyDate, startDate); + le(ImsDutyMainEntity::getDutyDate, endDate); + in(ImsDutyMainEntity::getCreateDept, deptIdList); + ne(ImsDutyMainEntity::getStatus, -1); + }}); + //按班组组合值班记录 + Map> listByGroup = imsDutyMainEntityList.stream().filter(o -> ObjectUtil.isNotEmpty(o.getDutyGroupId())).collect(Collectors.groupingBy(ImsDutyMainEntity::getDutyGroupId)); + listByGroup.forEach((k, v) -> { + //获取班组名 + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(k); + if (ObjectUtil.isNotEmpty(imsDutyGroupEntity)) { + DutyReportVO dutyReportVO = new DutyReportVO(); + dutyReportVO.setClassGroupName(imsDutyGroupEntity.getGroupName()); + dutyReportVO.setImsDutyMainEntityList(v); + dutyReportVO.setDutyNum(v.size()); + //发现问题数量 + + //获取值班ID + List dutyIdList = v.stream().map(ImsDutyMainEntity::getId).collect(Collectors.toList()); + //获取交接班异常记录 + List imsDutyRecEntityList = imsDutyRecMapper.selectList(new LambdaQueryWrapper() {{ + in(ImsDutyRecEntity::getDutyId, dutyIdList); + }}); + //延迟交接班 + List delayList = imsDutyRecEntityList.stream().filter(rec -> rec.getDelayStatus() == 1).collect(Collectors.toList()); + //异常交接班 + List exceptionList = imsDutyRecEntityList.stream().filter(rec -> DutyRecStatus.ANOMALY.getVal().equals(rec.getStatus())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(delayList)) { + dutyReportVO.setDelayChangeShifts(String.valueOf(delayList.size())); + } + if (CollectionUtil.isNotEmpty(exceptionList)) { + dutyReportVO.setExceptionChangeShifts(String.valueOf(exceptionList.size())); + } + dutyReportVOList.add(dutyReportVO); + } + }); + return dutyReportVOList; + } + + @Override + public List getDutyMainStatisticsByClassId(Map params) { + LocalDate startDate = LocalDate.parse(params.get("startDate").toString(), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATE)); + LocalDate endDate = LocalDate.parse(params.get("endDate").toString(), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATE)); + List deptId = (List) params.get("deptId"); + return getDutyMainStatisticsByClassId(startDate, endDate, deptId); + } + + @Override + public List> getDutyConclusion(Map params) { + return imsDutyGroupPMapper.getDutyConclusion(params); + } + + + @Override + public DutyPersonalReportVO getPersonalDutyMain(Map params) { + return imsDutyGroupPMapper.getPersonalDutyMain(params); + } + + @Override + public Integer getMainJoinGroupId(List list) { + return this.baseMapper.selectMainJoinGroupId(list); + } + + @Override + public List getDutyMainByDept(List list) { + return getDutyMainByDeptV2(list); + } + + @Override + public List getDutyMainByDeptV2(List list) { + List imsDutyMainMergeVos = this.baseMapper.selectDutyMainByDeptV2(list); + imsDutyMainMergeVos = imsDutyMainMergeVos.stream().map(s -> { + if (null == s.getGroupId()) { + ImsDutyMainPersonEntity imsDutyMainPersonEntity = imsDutyMainPersonMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, s.getDutyId()); + last("limit 1"); + }}); + s.setManagerId(imsDutyMainPersonEntity.getDutyChargePerson()); + } else { + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(s.getGroupId()); + s.setGroupName(imsDutyGroupEntity.getGroupName()); + s.setGroupId(imsDutyGroupEntity.getId()); + s.setManagerId(imsDutyGroupEntity.getManagerId()); + } + return s; + }).collect(Collectors.toList()); + return imsDutyMainMergeVos; + } + + @Override + public void doSaveBasch(List list) { + this.saveBatch(list); + } + + @Override + public ImsDutyRecEntity dutyRec(List dutyIds) { + return imsDutyRecMapper.selectOne(new LambdaQueryWrapper() {{ + in(ImsDutyRecEntity::getDutyId, dutyIds); + eq(ImsDutyRecEntity::getStatus, 2).last(" LIMIT 1"); + }}); + } + + /** + * 数据清理 + * + * @param deptId 机构ID + * @param startDate 开始时间 + * @param endDate 结束时间 + * @return + */ + @Override + public R dataDelete(Long deptId, String startDate, String endDate) { + ImsDutyMainEntity entity = new ImsDutyMainEntity(); + entity.setIsDeleted(1); + return R.status(this.update(entity, new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getCreateDept, deptId); + ge(ImsDutyMainEntity::getDutyDate, startDate); + le(ImsDutyMainEntity::getDutyDate, endDate); + }})); + } + + @Override + public List getSchedulingVoByDateList(String startDate, String endDate) { + return this.baseMapper.selectSchedulingVoByDateList(startDate, endDate); + } + + + @Override + public List getHomePageDutyInfo(Long deptId) { + List list = new ArrayList<>(); + List dutyMainInfoVos = getDutyDataV2(deptId); + if (CollectionUtil.isNotEmpty(dutyMainInfoVos)) { + for (DutyMainInfoVo dutyMainInfoVo : dutyMainInfoVos) { + HomePageDutyMainInfoVo vo = new HomePageDutyMainInfoVo(); + if (Func.isNotBlank(dutyMainInfoVo.getDutyPersonIds())) { + List auditVoList = new ArrayList<>(); + for (String personId : dutyMainInfoVo.getDutyPersonIds().split("\\^")) { + if (!personId.equals(dutyMainInfoVo.getManagerId())) { + AuditVo user = getUser(Long.valueOf(personId)); + if (ObjectUtil.isNotEmpty(user)) { + auditVoList.add(user); + } + } + } + dutyMainInfoVo.setAuditList(auditVoList); + } + User managerUser = UserCache.getUser(Long.valueOf(dutyMainInfoVo.getManagerId())); + if (ObjectUtil.isNotEmpty(managerUser)) { + dutyMainInfoVo.setManagerName(managerUser.getRealName()); + dutyMainInfoVo.setManagerPhone(managerUser.getPhone()); + } + + List generatingCapacityList = groupGeneratingCapacityMapper.selectList(new LambdaQueryWrapper() {{ + eq(DutyGroupGeneratingCapacityEntity::getStartTime, dutyMainInfoVo.getStartTime()); + eq(DutyGroupGeneratingCapacityEntity::getEndTime, dutyMainInfoVo.getEndTime()); + eq(DutyGroupGeneratingCapacityEntity::getDutyDept, dutyMainInfoVo.getCreateDept()); + eq(DutyGroupGeneratingCapacityEntity::getDateTime, DateUtil.format(dutyMainInfoVo.getDutyDate(), DateUtil.PATTERN_DATE)); + }}); + if (CollectionUtil.isNotEmpty(generatingCapacityList)) { + double generatingCapacity = generatingCapacityList.stream().mapToDouble(DutyGroupGeneratingCapacityEntity::getGeneratingCapacity).sum(); + dutyMainInfoVo.setGeneratingCapacity(generatingCapacity); + } + vo.setHeadInfo(dutyMainInfoVo); + DutyMainInfoVo corryVo = getNextDutyDataV2(dutyMainInfoVo.getId()); + if (ObjectUtil.isNotEmpty(corryVo) && Func.isNotBlank(corryVo.getDutyPersonIds())) { + List auditVoList = new ArrayList<>(); + for (String personId : corryVo.getDutyPersonIds().split("\\^")) { + if (!personId.equals(corryVo.getManagerId())) { + AuditVo user = getUser(Long.valueOf(personId)); + if (ObjectUtil.isNotEmpty(user)) { + auditVoList.add(user); + } + } + } + corryVo.setAuditList(auditVoList); + vo.setCorryInfo(corryVo); + User carryManagerUser = UserCache.getUser(Long.valueOf(corryVo.getManagerId())); + if (ObjectUtil.isNotEmpty(carryManagerUser)) { + corryVo.setManagerName(carryManagerUser.getRealName()); + corryVo.setManagerPhone(carryManagerUser.getPhone()); + } + } + list.add(vo); + } + } + return list; + } + + @Override + public List getDutyDurationDate() { + //获取当班信息 + List dutyList = getDutyDataV2(null); + dutyList.forEach(dutyVO -> { + Time startTime = dutyVO.getStartTime(); + Time endTime = dutyVO.getEndTime(); + LocalDateTime localDateTime = LocalDateTime.ofInstant(dutyVO.getDutyDate().toInstant(), ZoneId.systemDefault()); + LocalDateTime startDate = localDateTime.withHour(startTime.getHours()).withMinute(startTime.getMinutes()).withSecond(00); + LocalDateTime endDate = localDateTime.withHour(endTime.getHours()).withMinute(endTime.getMinutes()).withSecond(00); + if (startDate.isAfter(endDate)) { + endDate = endDate.plusDays(1); + } + dutyVO.setStartDate(startDate); + dutyVO.setEndDate(endDate); + }); + log.info("当前值班传输对象为:{}", JSONObject.toJSONString(dutyList)); + return dutyList; + } + + + /** + * 查询排班数据 + * + * @param deptIdList + * @return + */ + @Override + public List getDutyData(List deptIdList) { + if (CollectionUtil.isEmpty(deptIdList)) { + return null; + } + // 查询区域当前值班 + List dutyInfoVoList = this.baseMapper.getDutyDataV2(deptIdList); + if (CollectionUtil.isEmpty(dutyInfoVoList)) { + return null; + } + //修改数据结构后:分灵活排班和班组排班拿负责人 + dutyInfoVoList = dutyInfoVoList.stream().peek(s -> { + if (null == s.getGroupId()) { + ImsDutyMainPersonEntity imsDutyMainPersonEntity = imsDutyMainPersonMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, s.getId()); + last(" limit 1"); + }}); + s.setManagerId(imsDutyMainPersonEntity.getDutyChargePerson().toString()); + } else { + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(s.getGroupId()); + s.setGroupName(imsDutyGroupEntity.getGroupName()); + s.setManagerId(imsDutyGroupEntity.getManagerId().toString()); + } + }).collect(Collectors.toList()); + dutyInfoVoList.forEach(item -> { + // 负责人 + User user = UserCache.getUser(Long.valueOf(item.getManagerId())); + if (ObjectUtil.isNotEmpty(user)) { + item.setManagerName(user.getRealName()); + item.setManagerPhone(user.getPhone()); + } + // FIXME 上网 + item.setOnlineCapacity(0.0); + // 发电量 + item.setGeneratingCapacity(0); + // 上一班组 + NextDutyInfoVo upDutyInfoVo = this.getUpDutyInfo(item); + item.setUpDutyInfoVo(upDutyInfoVo); + // 下一班组 + NextDutyInfoVo nextDutyInfoVo = this.getNextDutyInfo(item); + item.setNextDutyInfoVo(nextDutyInfoVo); + }); + return dutyInfoVoList; + } + + @Override + public R getAllPersonInfo(Long deptId) { + String tenantId = AuthUtil.getTenantId(); + R> allUserList = userClient.userList(tenantId, deptId); + return allUserList; + } + + @Override + public R getDutyEmergencyEntityById(Long deptId, Long personId) { + ImsDutyMainEntity entity = this.baseMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getStatus, DutyMainStatus.EXEC.getVal()); + eq(ImsDutyMainEntity::getCreateDept, deptId); + like(ImsDutyMainEntity::getDutyPersonIds, AuthUtil.getUserId()).last(" limit 1"); + }}); + if (ObjectUtil.isEmpty(entity)) { + return R.success("您当前未值班"); + } + ImsSchedulingVo imsSchedulingVo = getByIdOneV2(entity.getId(), null); + R userR = userClient.userInfoById(imsSchedulingVo.getManagerId()); + imsSchedulingVo.setManagerName(userR.getData().getName()); + imsSchedulingVo.setCreateDept(userR.getData().getCreateDept()); + return R.data(imsSchedulingVo); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R updateDutyMainInfoVoById(ChangeDutyMainVo changeDutyMainVo) { + List imsDutyMainEntities = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + ge(ImsDutyMainEntity::getDutyDate, changeDutyMainVo.getChangeStartDate()); + le(ImsDutyMainEntity::getDutyDate, changeDutyMainVo.getChangeEndtDate()); + eq(ImsDutyMainEntity::getCreateDept, changeDutyMainVo.getCreateDept()); + eq(ImsDutyMainEntity::getClassId, changeDutyMainVo.getClassId()); + }}); + if (CollectionUtil.isEmpty(imsDutyMainEntities)) { + return R.fail("暂无对应排班计划"); + } + List mainIds = imsDutyMainEntities.stream().map(ImsDutyMainEntity::getId).collect(Collectors.toList()); + List personEntityList = imsDutyMainPersonMapper.selectList(new LambdaQueryWrapper() {{ + in(ImsDutyMainPersonEntity::getDutyMainId, mainIds); + }}); + List list = personEntityList.stream().map(s -> Long.valueOf(s.getId())).collect(Collectors.toList()); + if (CollectionUtil.isEmpty(personEntityList)) { + //如果人员计划表中,无值,需要填充对应信息(只有排班-班组,人员计划表才有可能无值) + //对上一个版本做兼容 + for (ImsDutyMainEntity imsDutyMainEntity : imsDutyMainEntities) { + String[] dutyPersonIds = imsDutyMainEntity.getDutyPersonIds().split("\\^"); + List personIdlist = Arrays.asList(dutyPersonIds); + List collect = personIdlist.stream().map(s -> Long.valueOf(s)).collect(Collectors.toList()); + ImsSchedulingVo imsSchedulingVo = new ImsSchedulingVo(); + imsSchedulingVo.setGroupId(imsDutyMainEntity.getDutyGroupId()); + imsSchedulingVo.setPersonType(1); + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(imsDutyMainEntity.getDutyGroupId()); + copyPersonByDutyMain(imsSchedulingVo, imsDutyGroupEntity.getManagerId(), imsDutyGroupEntity.getGroupName(), personEntityList, imsDutyMainEntity, collect); + } + } + //调出时,做是否是班组组长的判断 + List personId = changeDutyMainVo.getPersonId(); + HashSet manageIds = new HashSet<>(); + HashSet personHashSet = new HashSet<>(); + for (ImsDutyMainEntity imsDutyMainEntity : imsDutyMainEntities) { + if (imsDutyMainEntity.getDutyGroupId() != null) { + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(imsDutyMainEntity.getDutyGroupId()); + manageIds.add(imsDutyGroupEntity.getManagerId().toString()); + } + String[] dutyMainPersonIds = imsDutyMainEntity.getDutyPersonIds().split("\\^"); + List personIdlist = new ArrayList<>(Arrays.asList(dutyMainPersonIds)); + personHashSet.addAll(personIdlist); + } + //调入调出,对人员做重复判断 + for (String s : personId) { + if (1 == changeDutyMainVo.getType()) { + if (personHashSet.contains(s)) { + return R.fail("不可重复值班"); + } + } else { + if (!personHashSet.contains(s)) { + return R.fail("该人员暂无排班计划"); + } + } + } + //值班组长无法调走 + List dutyChargePersonIds = personEntityList.stream().filter(s -> s.getDutyChargePerson() != null) + .map(s -> s.getDutyChargePerson().toString()).collect(Collectors.toList()); + manageIds.addAll(dutyChargePersonIds); + for (String s : personId) { + if (manageIds.contains(s)) { + return R.fail("值班组组长无法修改排班"); + } + } +// personId.stream().map(s -> { +// for (String manageId : manageIds) { +// if (s.equals(manageId)){ +// return R.fail("值班组组长无法修改排班"); +// } +// } +// return s; +// }); + + //之前原有的排版-人员表,需要修改的部分 + List updatePersonEntityList = personEntityList.stream().map(sig -> { + //如果是班组排班,灵活调动后,对应的班组名称保留,但是不再有groupId + List collect = imsDutyMainEntities.stream().filter(s -> s.getId().equals(sig.getDutyMainId())).map(s -> s.getDutyGroupId()).collect(Collectors.toList()); + if (Func.isNotEmpty(collect)) { + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(collect.get(0)); + if (ObjectUtil.isNotEmpty(imsDutyGroupEntity)) { + sig.setDutyGroupName(imsDutyGroupEntity.getGroupName()); + sig.setDutyGroupId(null); + } + } + long id = IdWorker.getId(sig); + sig.setId(id); + return sig; + }).collect(Collectors.toList()); + List addPersonEntityList = new ArrayList<>(); + List updateDutyMainEntities = imsDutyMainEntities.stream().map(s -> { + String[] dutyMainPersonIds = s.getDutyPersonIds().split("\\^"); + List personIdlist = new ArrayList<>(Arrays.asList(dutyMainPersonIds)); + if (1 == changeDutyMainVo.getType()) { + personIdlist.addAll(personId); + } else { + personIdlist.removeAll(personId); + } + String resIds = StringUtils.join(personIdlist, "^"); + s.setDutyPersonIds(resIds); + //如果是班组排班,调班之后,则需要转换为灵活排班,加上排班名字 + if (s.getDutyGroupId() != null) { + s.setDutyGroupId(null); + } + return s; + }).collect(Collectors.toList()); + //如果是添加,填充对应人员排版表 + if (1 == changeDutyMainVo.getType()) { + for (String addId : personId) { + for (Long mainId : mainIds) { + //copy修改后的数据, + List collect = updatePersonEntityList.stream().filter(s -> mainId.equals(s.getDutyMainId())).collect(Collectors.toList()); + ImsDutyMainPersonEntity imsDutyMainPersonEntity = collect.get(0); + ImsDutyMainPersonEntity addEntity = new ImsDutyMainPersonEntity(); + BeanUtil.copy(imsDutyMainPersonEntity, addEntity); + addEntity.setDutyPerson(Long.valueOf(addId)); + long id1 = IdWorker.getId(imsDutyMainPersonEntity); + addEntity.setId(id1); + addPersonEntityList.add(addEntity); + } + } + updatePersonEntityList.addAll(addPersonEntityList); + } + if (2 == changeDutyMainVo.getType()) { + for (String s : personId) { + updatePersonEntityList = updatePersonEntityList.stream().filter( + sig -> !sig.getDutyPerson().equals(s)) + .collect(Collectors.toList()); + } + } + //更新排班-班组表,删除排班人员表,再添加排班班组人员表 + List updateDutyMainIds = updateDutyMainEntities.stream().map(s -> Long.valueOf(s.getId())).collect(Collectors.toList()); + this.baseMapper.deleteByUserId(updateDutyMainIds); + this.saveBatch(updateDutyMainEntities); + iImsDutyMainPersonService.removeByIds(list); + iImsDutyMainPersonService.saveBatch(updatePersonEntityList); + return R.success("修改成功"); + } + + @Override + public List getExcelDutyData(Integer year, Integer month, Long deptId) { + List dutyMainReportExcelList = new ArrayList<>(); + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + + String yearAndMonth = ""; + + if (month < 10) { + yearAndMonth = year + "-0" + month; + } else { + yearAndMonth = year + "-" + month; + } + + // 获取部门所有班次 + LambdaQueryWrapper classWrapper = new LambdaQueryWrapper(); + classWrapper.eq(ImsDutyClassEntity::getCreateDept, deptId); + List deptDutyClassList = iImsDutyClassService.list(classWrapper); + Map deptDutyClassMap = deptDutyClassList.stream().collect(Collectors.toMap(ImsDutyClassEntity::getId, Function.identity())); + + // 获取部门的所有组员 + List allUserList = userClient.userList(AuthUtil.getTenantId(), deptId).getData(); + Map deptUserMap = allUserList.stream().collect(Collectors.toMap(User::getId, User::getName)); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ImsDutyMainEntity::getCreateDept, deptId); + wrapper.like(ImsDutyMainEntity::getDutyDate, yearAndMonth); + // 获取部门一个月的排班 + List dutyMainList = this.baseMapper.selectList(wrapper); + + // 获取部门所有分组 + LambdaQueryWrapper groupWrapper = new LambdaQueryWrapper(); + groupWrapper.eq(ImsDutyGroupEntity::getCreateDept, deptId); + List deptDutyGroupList = dutyGroupMapper.selectList(groupWrapper); + Map deptDutyGroupMap = deptDutyGroupList.stream().collect(Collectors.toMap(ImsDutyGroupEntity::getId, Function.identity())); + + // 获取部门所有没有分组的组员 + LambdaQueryWrapper personWrapper = new LambdaQueryWrapper(); + personWrapper.eq(ImsDutyMainPersonEntity::getCreateDept, deptId); + personWrapper.like(ImsDutyMainPersonEntity::getDutyDate, yearAndMonth); + List deptPersonList = imsDutyMainPersonMapper.selectList(personWrapper); + + // 获取本月天数 + int days = getDaysByYearMonth(year, month); + for (int i = 1; i <= days; i++) { + String dateStr = getDate(year, month, i); + + List restUserList = userClient.userList(AuthUtil.getTenantId(), deptId).getData(); + + // 获取一天的排班 + List dutyMainDayList = dutyMainList.stream().filter(var -> dateFormat.format(var.getDutyDate()).equals(dateStr)).collect(Collectors.toList()); + + // 循环获取当前日期每个班次组员id + for (ImsDutyMainEntity imsDutyMainEntity : dutyMainDayList) { + ImsDutyMainReportExcel reportExcel = new ImsDutyMainReportExcel(); + + ImsDutyClassEntity imsDutyClass = deptDutyClassMap.get(imsDutyMainEntity.getClassId()); + if (Func.isEmpty(imsDutyClass)) { + continue; + } + reportExcel.setDutyDate(dateStr); + reportExcel.setClassName(imsDutyClass.getClassName() + "(" + imsDutyClass.getStartTime() + " - " + imsDutyClass.getEndTime() + ")"); + + List personIds; + String managerName; + if (Func.isNotEmpty(imsDutyMainEntity.getDutyGroupId())) { + // 存在分组id需要从分组中获取组长和组员 + LambdaQueryWrapper groupPWrapper = new LambdaQueryWrapper(); + groupPWrapper.eq(ImsDutyGroupPEntity::getGroupId, imsDutyMainEntity.getDutyGroupId()); + List list = imsDutyGroupPService.list(groupPWrapper); + + managerName = deptUserMap.get(deptDutyGroupMap.get(imsDutyMainEntity.getDutyGroupId()).getManagerId()); + personIds = list.stream() +// 过滤出组长 + .filter(s -> !s.getPersonId().equals(deptDutyGroupMap.get(imsDutyMainEntity.getDutyGroupId()).getManagerId())) + .map(ImsDutyGroupPEntity::getPersonId).collect(Collectors.toList()); + } else { + // 不存在分组id从排班人员中获取组长和组员 + List personList = deptPersonList.stream().filter(var -> var.getDutyMainId().equals(imsDutyMainEntity.getId())).collect(Collectors.toList()); + managerName = deptUserMap.get(personList.get(0).getDutyChargePerson()); + personIds = personList.stream().filter(s -> !s.getDutyPerson().equals(personList.get(0).getDutyChargePerson())).map(ImsDutyMainPersonEntity::getDutyPerson).collect(Collectors.toList()); + } + + String personNames = ""; + // 获取排班组员名称 + for (int j = 0; j < personIds.size(); j++) { + Long userId = personIds.get(j); + String userName = deptUserMap.get(userId); + // 把排班的组员从休息名单中移除 + restUserList.removeIf(user -> user.getId().equals(userId)); + if (ObjectUtil.isNotEmpty(userName)) { + if (j == personIds.size() - 1) { + personNames += userName; + } else { + personNames += userName + "、"; + } + } + } + reportExcel.setManagerName(managerName); + reportExcel.setPersonNames(personNames); + dutyMainReportExcelList.add(reportExcel); + } + // 剩下组员都休息,添加休息排班 + ImsDutyMainReportExcel restReportExcel = new ImsDutyMainReportExcel(); + restReportExcel.setDutyDate(dateStr); + restReportExcel.setClassName("休息"); + restReportExcel.setManagerName("无班组长"); + String personNames = ""; + // 获取休息组员的名称 + for (int j = 0; j < restUserList.size(); j++) { + User user = restUserList.get(j); + if (ObjectUtil.isNotEmpty(user)) { + if (j == restUserList.size() - 1) { + personNames += user.getRealName(); + } else { + personNames += user.getRealName() + "、"; + } + } + } + restReportExcel.setPersonNames(personNames); + dutyMainReportExcelList.add(restReportExcel); + } + return dutyMainReportExcelList; + } + + @Override + public EngineerDutyVo engineerDuty(Long deptId) { + return this.baseMapper.engineerDuty(deptId); + } + + @Override + public RelationshipTeamVo previousTeam(Long dutyId) { + return this.baseMapper.previousTeam(dutyId); + } + + @Override + public RelationshipTeamVo nextTeam(Long dutyId) { + return this.baseMapper.nextTeam(dutyId); + } + + @Override + public R changDutyMainGroupLeader(ExchangeGroupLeader changeGroupLeader) { + if (changeGroupLeader == null) { + return R.fail("传入换班数据不能为空"); + } + if (!changeGroupLeader.getFromDeptId().equals(changeGroupLeader.getToDeptId())) { + return R.fail("不同机构间不能换班"); + } + + if (changeGroupLeader.getFromDate().compareTo(changeGroupLeader.getToDate()) > 0) { + return R.fail("换班日期不能大于被换班日期"); + } + + if (changeGroupLeader.getFromDate().compareTo(changeGroupLeader.getToDate()) == 0 + && changeGroupLeader.getFromClassId().equals(changeGroupLeader.getToClassId())) { + return R.fail("同一日期同一班次无须换班"); + } + + List aDutyList = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getDutyDate, changeGroupLeader.getFromDate()); + eq(ImsDutyMainEntity::getCreateDept, changeGroupLeader.getFromDeptId()); + eq(ImsDutyMainEntity::getClassId, changeGroupLeader.getFromClassId()); + eq(ImsDutyMainEntity::getIsDeleted, 0); + }}); + + if (aDutyList == null || aDutyList.isEmpty()) { + return R.fail("换班人无排班计划"); + } + + List bDutyList = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getDutyDate, changeGroupLeader.getToDate()); + eq(ImsDutyMainEntity::getCreateDept, changeGroupLeader.getToDeptId()); + eq(ImsDutyMainEntity::getClassId, changeGroupLeader.getToClassId()); + eq(ImsDutyMainEntity::getIsDeleted, 0); + }}); + if (bDutyList == null || bDutyList.isEmpty()) { + return R.fail("被换班人无排班计划"); + } + + + ImsDutyMainEntity aDutyMainEntity = aDutyList.get(0); + //查询换换班是否在值班 + if (aDutyMainEntity.getStatus() != 0) { + return R.fail("换班人待值班状态才能换班"); + } + + ImsDutyGroupEntity aGroupEntity = dutyGroupMapper.selectById(aDutyMainEntity.getDutyGroupId()); + Long aManagerId = aGroupEntity.getManagerId(); + List aPersonEntityList = imsDutyMainPersonMapper.selectList(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, aDutyMainEntity.getId()); + eq(ImsDutyMainPersonEntity::getIsDeleted, 0); + }}); + + ImsDutyMainEntity bDutyMainEntity = bDutyList.get(0); + //查询换换班是否在值班 + if (bDutyMainEntity.getStatus() != 0) { + return R.fail("被换班人待值班状态才能换班"); + } + ImsDutyGroupEntity bGroupEntity = dutyGroupMapper.selectById(bDutyMainEntity.getDutyGroupId()); + Long bManagerId = bGroupEntity.getManagerId(); + List bPersonEntityList = imsDutyMainPersonMapper.selectList(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, bDutyMainEntity.getId()); + eq(ImsDutyMainPersonEntity::getIsDeleted, 0); + }}); + + + String aPersonIds = aDutyMainEntity.getDutyPersonIds(); + String bPersonIds = bDutyMainEntity.getDutyPersonIds(); + //更新duty_main + ImsDutyMainEntity aEntity = SerializationUtils.clone(aDutyMainEntity); + ImsDutyMainEntity bEntity = SerializationUtils.clone(bDutyMainEntity); + + aEntity.setDutyGroupId(bDutyMainEntity.getDutyGroupId()); + aPersonIds = aPersonIds.replaceAll(aManagerId + "", bManagerId + ""); + aEntity.setDutyPersonIds(aPersonIds); + this.baseMapper.updateById(aEntity); + + + bEntity.setDutyGroupId(aDutyMainEntity.getDutyGroupId()); + bPersonIds = bPersonIds.replaceAll(bManagerId + "", aManagerId + ""); + bEntity.setDutyPersonIds(bPersonIds); + this.baseMapper.updateById(bEntity); + + //更新 duty_main_person + for (ImsDutyMainPersonEntity entity : aPersonEntityList) { + if (entity.getDutyPerson().equals(aManagerId)) { + entity.setDutyPerson(bManagerId); + } +// entity.setDutyGroupName(bGroupEntity.getGroupName()); + entity.setDutyChargePerson(bManagerId); + } + iImsDutyMainPersonService.updateBatchById(aPersonEntityList); + + for (ImsDutyMainPersonEntity entity : bPersonEntityList) { + if (entity.getDutyPerson().equals(bManagerId)) { + entity.setDutyPerson(aManagerId); + } +// entity.setDutyGroupName(aGroupEntity.getGroupName()); + entity.setDutyChargePerson(aManagerId); + } + iImsDutyMainPersonService.updateBatchById(bPersonEntityList); + + return R.success("班组长换班成功"); + } + + @Override + public List dutyData(List collect) { + if (CollectionUtil.isEmpty(collect)) { + return null; + } + // 查询区域当前值班 + List dutyInfoVoList = this.baseMapper.dutyData(collect); + if (CollectionUtil.isEmpty(dutyInfoVoList)) { + return null; + } + //修改数据结构后:分灵活排班和班组排班拿负责人 + dutyInfoVoList = dutyInfoVoList.stream().peek(s -> { + if (null == s.getGroupId()) { + ImsDutyMainPersonEntity imsDutyMainPersonEntity = iImsDutyMainPersonService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, s.getId()); + last(" limit 1"); + }}); + s.setManagerId(imsDutyMainPersonEntity.getDutyChargePerson().toString()); + } else { + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(s.getGroupId()); + s.setGroupName(imsDutyGroupEntity.getGroupName()); + s.setManagerId(imsDutyGroupEntity.getManagerId().toString()); + } + }).collect(Collectors.toList()); + dutyInfoVoList.forEach(item -> { + // 负责人 + User user = UserCache.getUser(Long.valueOf(item.getManagerId())); + if (ObjectUtil.isNotEmpty(user)) { + item.setManagerName(user.getRealName()); + item.setManagerPhone(user.getPhone()); + } + // FIXME 上网 + item.setOnlineCapacity(14273.38); + // 上一班组 + NextDutyInfoVo upDutyInfoVo = this.getUpDutyInfo(item); + item.setUpDutyInfoVo(upDutyInfoVo); + // 下一班组 + NextDutyInfoVo nextDutyInfoVo = this.getNextDutyInfo(item); + item.setNextDutyInfoVo(nextDutyInfoVo); + }); + return dutyInfoVoList; + } + + + /** + * 获取上一班组 + * + * @param item + * @return + */ + private NextDutyInfoVo getUpDutyInfo(DutyInfoVo item) { + if (ObjectUtil.isEmpty(item.getPreDutyId())) { + return null; + } + DutyMainInfoVo dutyMainInfoVo = this.baseMapper.queryDutyInfoV2(item.getPreDutyId()); + if (null == dutyMainInfoVo.getDutyGroupId()) { + ImsDutyMainPersonEntity imsDutyMainPersonEntity = imsDutyMainPersonMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, dutyMainInfoVo.getId()); + last(" LIMIT 1"); + }}); + dutyMainInfoVo.setManagerId(imsDutyMainPersonEntity.getDutyChargePerson().toString()); + } else { + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(dutyMainInfoVo.getDutyGroupId()); + dutyMainInfoVo.setGroupName(imsDutyGroupEntity.getGroupName()); + dutyMainInfoVo.setDutyGroupId(imsDutyGroupEntity.getId()); + dutyMainInfoVo.setManagerId(imsDutyGroupEntity.getManagerId().toString()); + } + if (ObjectUtil.isEmpty(dutyMainInfoVo)) { + return null; + } + // 赋值 + NextDutyInfoVo dutyInfoVo = new NextDutyInfoVo(); + dutyInfoVo.setGroupName(dutyMainInfoVo.getGroupName()); + dutyInfoVo.setClassName(dutyMainInfoVo.getClassName()); + dutyInfoVo.setDateTime(dutyMainInfoVo.getDateTime()); + dutyInfoVo.setStartTime(dutyMainInfoVo.getStartTime()); + dutyInfoVo.setEndTime(dutyMainInfoVo.getEndTime()); + // 负责人 + User user = UserCache.getUser(Long.valueOf(dutyMainInfoVo.getManagerId())); + if (ObjectUtil.isNotEmpty(user)) { + dutyInfoVo.setManagerName(user.getRealName()); + dutyInfoVo.setManagerPhone(user.getPhone()); + } + // 发电量 + dutyInfoVo.setGeneratingCapacity(0); + return dutyInfoVo; + } + + /** + * 获取下一班组 + * + * @param item + * @return + */ + private NextDutyInfoVo getNextDutyInfo(DutyInfoVo item) { + DutyMainInfoVo dutyMainInfoVo = getNextDutyDataV2(item.getId()); + if (ObjectUtil.isEmpty(dutyMainInfoVo)) { + return null; + } + // 赋值 + NextDutyInfoVo dutyInfoVo = new NextDutyInfoVo(); + dutyInfoVo.setGroupName(dutyMainInfoVo.getGroupName()); + dutyInfoVo.setClassName(dutyMainInfoVo.getClassName()); + // 负责人 + User user = UserCache.getUser(Long.valueOf(dutyMainInfoVo.getManagerId())); + if (ObjectUtil.isNotEmpty(user)) { + dutyInfoVo.setManagerName(user.getRealName()); + dutyInfoVo.setManagerPhone(user.getPhone()); + } + dutyInfoVo.setGeneratingCapacity(0); + return dutyInfoVo; + } + + + private AuditVo getUser(Long personId) { + User user = UserCache.getUser(personId); + if (ObjectUtil.isNotEmpty(user)) { + AuditVo auditVo = new AuditVo(); + auditVo.setPersonId(personId); + auditVo.setPersonName(user.getRealName()); + auditVo.setPhone(user.getPhone()); + return auditVo; + } + return null; + } + + + private R cycleSchedulingTow(ImsSchedulingVo imsSchedulingVo) { + Calendar cal = Calendar.getInstance(); + int year = cal.get(Calendar.YEAR); + int month = cal.get(Calendar.MONTH) + 1;//获取月份 + int day = cal.get(Calendar.DAY_OF_MONTH); + String date1 = getDate(year, month, day); + String date2 = DateUtils.dayStringDate(date1, 1, true); + if (!imsSchedulingVo.getStartDate().equals(date2)) { + String deptId = AuthUtil.getDeptId(); + if (null != imsSchedulingVo.getCreateDept()) { + deptId = imsSchedulingVo.getCreateDept().toString(); + } + String minusOnedDay = DateUtils.dayStringDate(imsSchedulingVo.getStartDate(), 1, false); + List imsDutyMainEntities = this.baseMapper.selectByDateAndDept(minusOnedDay, Long.valueOf(deptId)); + if (CollectionUtil.isEmpty(imsDutyMainEntities)) { + return R.fail("所选日期之前存在未排班情况,请重新选择日期区间!"); + } + } + + String[] start = imsSchedulingVo.getStartDate().split("-"); + String[] end = imsSchedulingVo.getEndDate().split("-"); + //日期 + List dates = getTwoPeriodsAll(Integer.valueOf(start[0]), Integer.valueOf(start[1]), Integer.valueOf(start[2]), Integer.valueOf(end[0]), Integer.valueOf(end[1]), Integer.valueOf(end[2])); + + if (imsSchedulingVo.isCompose() == false) { + List imsDutyMainEntities2 = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + le(ImsDutyMainEntity::getDutyDate, imsSchedulingVo.getEndDate()); + eq(ImsDutyMainEntity::getCreateDept, imsSchedulingVo.getCreateDept()); + ge(ImsDutyMainEntity::getDutyDate, imsSchedulingVo.getStartDate()); + }}); + if (CollectionUtil.isNotEmpty(imsDutyMainEntities2)) { + return R.data(1); + } + } + + if (imsSchedulingVo.getTemplate()) { + if (!doSaveTemplate(imsSchedulingVo)) { + return R.fail("模版名称已存在"); + } + } + + String[] dutyArrIds = imsSchedulingVo.getDutyArrIds(); + if (CollectionUtil.isNotEmpty(dates)) { + this.baseMapper.delete(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getCreateDept, imsSchedulingVo.getCreateDept()); + in(ImsDutyMainEntity::getDutyDate, dates); + }}); + } + String subDayDate = DateUtils.dayDate(DateUtil.parse(imsSchedulingVo.getStartDate(), DateUtil.PATTERN_DATE), -1, DateUtil.PATTERN_DATE); + + ImsDutyMainEntity imsDutyMainEntity1 = this.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getCreateDept, imsSchedulingVo.getCreateDept()); + eq(ImsDutyMainEntity::getDutyDate, subDayDate); + ne(ImsDutyMainEntity::getStatus, "-1"); + orderByDesc(ImsDutyMainEntity::getId).last(" LIMIT 1"); + }}); + + //查询所有班组人员 + List list = imsDutyGroupPService.list(); + + + List imsDutyMainEntityList = new ArrayList<>(); + String proDutyMainId = ""; + //排班 + for (int i = 1; i <= dates.size(); i++) { + String date = dates.get(i - 1); + for (int j = 1; j <= dutyArrIds.length; j++) { + String classId = dutyArrIds[j - 1]; + //按值班周期的天数取模 + int temp = i % imsSchedulingVo.getDutyNum(); + //值班下标 + int tempSub = temp - 1; + //如果整除,取最后一个值班 + if (temp == 0) { + tempSub = imsSchedulingVo.getDutyNum() - 1; + } + //获取对应班组的值班班次 + String groupId = imsSchedulingVo.getDutyOrderIds().get(classId)[tempSub]; + //人员IDS + String personIds = ""; + if ("0".equals(classId)) { + String[] split = groupId.split(","); + if (ObjectUtil.isNotEmpty(split)) { + for (String dutyGroupId : split) { + List collectPerson = list.stream().filter(iter -> iter.getGroupId().toString().equals(dutyGroupId)).map(iter -> iter.getPersonId()).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(collectPerson)) { + personIds = StringUtils.join(collectPerson, "^"); + } + if (StringUtil.isNotBlank(dutyGroupId)) { + ImsDutyMainEntity imsDutyMainEntity = new ImsDutyMainEntity(); + setMainEntity(imsDutyMainEntity, classId, Long.valueOf(dutyGroupId), date); + imsDutyMainEntity.setStatus(-1); + imsDutyMainEntity.setDutyPersonIds(personIds); + imsDutyMainEntity.setCreateDept(imsSchedulingVo.getCreateDept()); + Long id = IdWorker.getId(); + imsDutyMainEntity.setId(id); + imsDutyMainEntity.setCreateUser(AuthUtil.getUserId()); + imsDutyMainEntity.setUpdateUser(AuthUtil.getUserId()); + imsDutyMainEntity.setTenantId(AuthUtil.getTenantId()); + imsDutyMainEntityList.add(imsDutyMainEntity); + } + } + } + } else { + List collectPerson = list.stream().filter(iter -> iter.getGroupId().toString().equals(groupId)).map(iter -> iter.getPersonId()).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(collectPerson)) { + personIds = StringUtils.join(collectPerson, "^"); + } + if (Func.isBlank(personIds)) { + return R.fail("班组存在人员为空,禁止排班!"); + } + + ImsDutyMainEntity imsDutyMainEntity = new ImsDutyMainEntity(); + setMainEntity(imsDutyMainEntity, classId, Long.valueOf(groupId), date); + if (Func.isBlank(proDutyMainId)) { + if (ObjectUtil.isNotEmpty(imsDutyMainEntity1)) { + proDutyMainId = imsDutyMainEntity1.getId().toString(); + } + + } + if (StringUtil.isNotBlank(proDutyMainId)) { + imsDutyMainEntity.setPreDutyId(Long.valueOf(proDutyMainId)); + } + + if (StringUtil.isNotBlank(personIds)) { + imsDutyMainEntity.setDutyPersonIds(personIds); + } + imsDutyMainEntity.setCreateDept(imsSchedulingVo.getCreateDept()); + Long id = IdWorker.getId(imsDutyMainEntity); + imsDutyMainEntity.setId(id); + imsDutyMainEntity.setCreateUser(AuthUtil.getUserId()); + imsDutyMainEntity.setUpdateUser(AuthUtil.getUserId()); + imsDutyMainEntity.setTenantId(AuthUtil.getTenantId()); + imsDutyMainEntityList.add(imsDutyMainEntity); + proDutyMainId = id == null ? "" : imsDutyMainEntity.getId().toString(); + BeanUtils.copyProperties(imsDutyMainEntity, imsDutyMainEntity1); + } + } + } + + ThreadTask.dutyTask(imsDutyMainEntityList, imsSchedulingVo.getEndDate(), proDutyMainId, imsSchedulingVo.getCreateDept(), imsSchedulingVo.getDutyClassTypeId()); + return R.success("操作成功,系统正在排班中,请稍后查看"); + } + + + public void setMainEntity(ImsDutyMainEntity imsDutyMainEntity, String classId, Long groupId, String date) { + imsDutyMainEntity.setDutyDate(DateUtil.parse(date, DateUtil.PATTERN_DATE)); + imsDutyMainEntity.setClassId(Long.valueOf(classId)); + imsDutyMainEntity.setDutyGroupId(groupId); + imsDutyMainEntity.setStatus(0); + imsDutyMainEntity.setCreateTime(new Date()); + } + + public void setMainEntity(ImsDutyMainEntity imsDutyMainEntity, String classId, String date) { + imsDutyMainEntity.setDutyDate(DateUtil.parse(date, DateUtil.PATTERN_DATE)); + imsDutyMainEntity.setClassId(Long.valueOf(classId)); + imsDutyMainEntity.setStatus(0); + imsDutyMainEntity.setCreateTime(new Date()); + } + + /** + * 根据 年、月 获取对应的月份 的 天数 + */ + public static int getDaysByYearMonth(int year, int month) { + Calendar a = Calendar.getInstance(); + a.set(Calendar.YEAR, year); + a.set(Calendar.MONTH, month - 1); + a.set(Calendar.DATE, 1); + a.roll(Calendar.DATE, -1); + int maxDate = a.get(Calendar.DATE); + return maxDate; + } + + /** + * 获取当班 + * + * @return + */ + @Override + public List getDutyData(Long deptId) { + return getDutyDataV2(deptId); + } + + @Override + public List getDutyDataV2(Long deptId) { + List dutyMainInfoVos = this.baseMapper.selectDutyMainInfoVoV2(deptId); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + List imsDutyGroupEntityList = dutyGroupMapper.selectList(wrapper); + Map imsDutyGroupMap = imsDutyGroupEntityList.stream().collect(Collectors.toMap(ImsDutyGroupEntity::getId, Function.identity())); + + dutyMainInfoVos = dutyMainInfoVos.stream().map(s -> { + if (null == s.getDutyGroupId()) { + ImsDutyMainPersonEntity imsDutyMainPersonEntity = imsDutyMainPersonMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, s.getId()); + last("limit 1"); + }}); + if (ObjectUtil.isNotEmpty(imsDutyMainPersonEntity.getDutyChargePerson())) { + s.setManagerId(imsDutyMainPersonEntity.getDutyChargePerson().toString()); + } + } else { + ImsDutyGroupEntity imsDutyGroupEntity = imsDutyGroupMap.get(s.getDutyGroupId()); + s.setGroupName(imsDutyGroupEntity.getGroupName()); + s.setDutyGroupId(imsDutyGroupEntity.getId()); + if (ObjectUtil.isNotEmpty(imsDutyGroupEntity.getManagerId())) { + s.setManagerId(imsDutyGroupEntity.getManagerId().toString()); + } + } + return s; + }).collect(Collectors.toList()); + return dutyMainInfoVos; + } + + @Override + public DutyMainInfoVo getNextDutyData(Long parentId) { + return this.baseMapper.selectDutyMainInfoSign(parentId); + } + + @Override + public DutyMainInfoVo getNextDutyDataV2(Long parentId) { + DutyMainInfoVo dutyMainInfoVo = this.baseMapper.selectDutyMainInfoSignV2(parentId); + if (ObjectUtil.isEmpty(dutyMainInfoVo)) { + return new DutyMainInfoVo(); + } + if (null == dutyMainInfoVo.getDutyGroupId()) { + ImsDutyMainPersonEntity imsDutyMainPersonEntity = imsDutyMainPersonMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, dutyMainInfoVo.getId()); + last("limit 1"); + }}); + if (ObjectUtil.isNotEmpty(imsDutyMainPersonEntity) && ObjectUtil.isNotEmpty(imsDutyMainPersonEntity.getDutyChargePerson())) { + dutyMainInfoVo.setManagerId(imsDutyMainPersonEntity.getDutyChargePerson().toString()); + } + } else { + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(dutyMainInfoVo.getDutyGroupId()); + dutyMainInfoVo.setGroupName(imsDutyGroupEntity.getGroupName()); + dutyMainInfoVo.setDutyGroupId(imsDutyGroupEntity.getId()); + if (ObjectUtil.isNotEmpty(imsDutyGroupEntity) && ObjectUtil.isNotEmpty(imsDutyGroupEntity.getManagerId())) { + dutyMainInfoVo.setManagerId(imsDutyGroupEntity.getManagerId().toString()); + } + } + return dutyMainInfoVo; + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyMainTemplateImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyMainTemplateImpl.java new file mode 100644 index 0000000..3209735 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyMainTemplateImpl.java @@ -0,0 +1,61 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.tool.utils.CollectionUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainTemplateEntity; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyMainTemplateMapper; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainTemplateService; +import org.springblade.hzinfo_inspect.duty.vo.FlexibleSchedulingVo; +import org.springblade.hzinfo_inspect.duty.vo.ImsSchedulingVo; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +@Service +@Slf4j +public class ImsDutyMainTemplateImpl extends ServiceImpl implements IImsDutyMainTemplateService { + + @Override + public List doListAll(ImsDutyMainTemplateEntity entity) { + List vos = new ArrayList<>(); + List list = this.list(new LambdaQueryWrapper() {{ + if (null != entity.getCreateDept()) { + eq(ImsDutyMainTemplateEntity::getCreateDept, entity.getCreateDept()); + eq(ImsDutyMainTemplateEntity::getType, entity.getType()); + } + if (null != entity.getDutyClassTypeId()) { + eq(ImsDutyMainTemplateEntity::getDutyClassTypeId, entity.getDutyClassTypeId()); + } + }}); + if (CollectionUtil.isNotEmpty(list)) { + for (ImsDutyMainTemplateEntity imsDutyMainTemplateEntity : list) { + ImsSchedulingVo vo = new ImsSchedulingVo(); + String[] dutyArrIds = JSONObject.parseObject(imsDutyMainTemplateEntity.getDutyArrIds(), new TypeReference() { + }); + if (1==entity.getType()) { + HashMap dutyOrderIds = JSONObject.parseObject(imsDutyMainTemplateEntity.getDutyOrderIds(), new TypeReference>() { + }); + vo.setDutyOrderIds(dutyOrderIds); + }else { + HashMap> map = JSONObject.parseObject(imsDutyMainTemplateEntity.getFlexible(), new TypeReference>>() { + }); + vo.setFlexible(map); + } + vo.setPersonType(imsDutyMainTemplateEntity.getType()); + vo.setDutyArrIds(dutyArrIds); + vo.setDutyNum(imsDutyMainTemplateEntity.getDutyNum()); + vo.setTemplateName(imsDutyMainTemplateEntity.getTemplateName()); + vo.setId(imsDutyMainTemplateEntity.getId()); + vo.setDutyClassTypeId(imsDutyMainTemplateEntity.getDutyClassTypeId()); + vos.add(vo); + } + } + return vos; + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyRecQRRecordServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyRecQRRecordServiceImpl.java new file mode 100644 index 0000000..5f744fc --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyRecQRRecordServiceImpl.java @@ -0,0 +1,79 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.CollectionUtil; +import org.springblade.core.tool.utils.ObjectUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecQRRecordEntity; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyRecQRRecordMapper; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyRecQRRecordService; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyRecQRRecordVo; +import org.springblade.system.user.entity.User; +import org.springblade.system.user.feign.IUserClient; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 服务实现类 + * + * @author Chill + */ +@Service +@AllArgsConstructor +public class ImsDutyRecQRRecordServiceImpl extends ServiceImpl implements IImsDutyRecQRRecordService { + + private final IUserClient userClient; + + private final IImsDutyMainService iImsDutyMainService; + + /** + * 自定义分页 + * + * @param page + * @param vo + * @return + */ + @Override + public IPage doPageList(IPage page, ImsDutyRecQRRecordVo vo) { + List imsDutyRecQRRecordVoIPage = this.baseMapper.selectPageList(page, vo); + for (ImsDutyRecQRRecordVo imsDutyRecQRRecordVo : imsDutyRecQRRecordVoIPage) { + User data = userClient.userInfoById(imsDutyRecQRRecordVo.getPersonId()).getData(); + if(ObjectUtil.isNotEmpty(data)){ + imsDutyRecQRRecordVo.setUserName(data.getName()); + } + + } + return page.setRecords(imsDutyRecQRRecordVoIPage); + } + + + + @Override + public R doSave(ImsDutyRecQRRecordEntity imsDutyRecQRRecordEntity) { + ImsDutyMainEntity imsDutyMainEntity = iImsDutyMainService.getMainEntity(imsDutyRecQRRecordEntity.getDutyId()); + if(ObjectUtil.isNotEmpty(imsDutyMainEntity)){ + + if(imsDutyMainEntity.getDutyPersonIds().contains(imsDutyRecQRRecordEntity.getPersonId().toString())){ + List list = this.list(new LambdaQueryWrapper() {{ + eq(ImsDutyRecQRRecordEntity::getDutyId, imsDutyRecQRRecordEntity.getDutyId()); + eq(ImsDutyRecQRRecordEntity::getPersonId, imsDutyRecQRRecordEntity.getPersonId()); + }}); + + if(CollectionUtil.isNotEmpty(list)){ + return R.success("您已扫码打卡,请勿重复扫码打卡!"); + } + return R.status(this.save(imsDutyRecQRRecordEntity)); + } + return R.success("您不是该组成员!"); + + } + + return R.success("该小组不存在!"); + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyRecServiceImpl.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyRecServiceImpl.java new file mode 100644 index 0000000..3c776c2 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/service/impl/ImsDutyRecServiceImpl.java @@ -0,0 +1,1081 @@ +package org.springblade.hzinfo_inspect.duty.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.*; +import org.springblade.flow.core.entity.BladeFlow; +import org.springblade.flow.core.feign.IFlowClient; +import org.springblade.flow.core.utils.TaskUtil; +import org.springblade.hzinfo_inspect.duty.constants.OperationalConstants; +import org.springblade.hzinfo_inspect.duty.dto.ChangeShiftsReqDTO; +import org.springblade.hzinfo_inspect.duty.dto.ChangeShiftsRspDTO; +import org.springblade.hzinfo_inspect.duty.dto.ImsDutyRecDTO; +import org.springblade.hzinfo_inspect.duty.entity.*; +import org.springblade.hzinfo_inspect.duty.enums.DutyMainStatus; +import org.springblade.hzinfo_inspect.duty.enums.DutyRecStatus; +import org.springblade.hzinfo_inspect.duty.enums.JoinStatus; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyMainMapper; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyRecMapper; +import org.springblade.hzinfo_inspect.duty.service.*; +import org.springblade.hzinfo_inspect.duty.utils.DateUtils; +import org.springblade.hzinfo_inspect.duty.utils.DutyContants; +import org.springblade.hzinfo_inspect.duty.utils.DutyRecProcessConstant; +import org.springblade.hzinfo_inspect.duty.vo.*; +import org.springblade.hzinfo_inspect.duty.wrapper.ImsDutyRecWrapper; +import org.springblade.hzinfo_inspect.plan.PlanContants; +import org.springblade.hzinfo_inspect.plan.feign.IInspectPlanClient; +import org.springblade.hzinfo_inspect.plan.vo.PlanVO; +import org.springblade.system.feign.ISysClient; +import org.springblade.system.user.entity.User; +import org.springblade.system.user.feign.IUserClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; + +import java.math.BigDecimal; +import java.sql.Time; +import java.text.SimpleDateFormat; +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + +import static org.springblade.core.tool.utils.DateUtil.PATTERN_DATETIME; + + +/** + * 服务实现类 + * + * @author Chill + */ +@Slf4j +@Service +public class ImsDutyRecServiceImpl extends ServiceImpl implements IImsDutyRecService { + + @Autowired + private ImsDutyMainMapper imsDutyMainMapper; + @Autowired + private IImsDutyMainService imsDutyMainService; + @Autowired + private IImsDutyClassService imsDutyClassService; + @Autowired + private IImsDutyGroupService imsDutyGroupService; + @Autowired + private ImsDutyMainServiceImpl imsDutyMainServiceImpl; + @Autowired + private IUserClient userClient; + @Autowired + private IFlowClient flowClient; + @Autowired + private ISysClient sysClient; + @Autowired + private IInspectPlanClient inspectPlanClient; + @Autowired + private IImsDutyGroupPService imsDutyGroupPService; + @Autowired + private IImsDutyMainPersonService imsDutyMainPersonService; + + @Autowired + private IImsDutyLogService imsDutyLogService; + + + @Override + public R submit(ImsDutyRecEntity recEntity) { + //获取交班人值班信息 + ImsDutyMainEntity handDutyMainEntity = imsDutyMainMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getId, recEntity.getDutyId()); + }}); + + //判断是否已交班 + List imsDutyRecEntities = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + eq(ImsDutyRecEntity::getDutyId, recEntity.getDutyId()); + }}); + if (CollectionUtil.isNotEmpty(imsDutyRecEntities)) { + return R.fail("您已交班,请勿重复交班"); + } + //根据上一班值班id查询值班信息 + ImsDutyMainEntity dutyMainEntity = imsDutyMainMapper.selectOne(new QueryWrapper() {{ + eq("PRE_DUTY_ID", recEntity.getDutyId()); + }}); + if (ObjectUtil.isEmpty(dutyMainEntity)) { + return R.fail("当前时间没有接班人!"); + } + Long handGroupManagerId; + if (handDutyMainEntity.getDutyGroupId() != null) { + //获取交班人班 + ImsDutyGroupEntity handGroupEntity = imsDutyGroupService.getById(handDutyMainEntity.getDutyGroupId()); + handGroupManagerId = handGroupEntity.getManagerId(); + } else { + List imsDutyMainPersonEntities = imsDutyMainPersonService.selectByMainId(handDutyMainEntity.getId()); + handGroupManagerId = imsDutyMainPersonEntities.get(0).getDutyChargePerson(); + } + Long groupEntityManagerId; + //获取接班人班组 + if (dutyMainEntity.getDutyGroupId() != null) { + ImsDutyGroupEntity groupEntity = imsDutyGroupService.getById(dutyMainEntity.getDutyGroupId()); + groupEntityManagerId = groupEntity.getManagerId(); + ImsDutyGroupPEntity groupPEntity = imsDutyGroupPService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyGroupPEntity::getGroupId, groupEntity.getId()); + eq(ImsDutyGroupPEntity::getPersonId, groupEntityManagerId).last(" LIMIT 1"); + }}); + if (ObjectUtil.isEmpty(groupPEntity)) { + return R.fail("接班班组长不存在,请指定班组长后进行交班!"); + } + } else { + List imsDutyMainPersonEntities2 = imsDutyMainPersonService.selectByMainId(dutyMainEntity.getId()); + groupEntityManagerId = imsDutyMainPersonEntities2.get(0).getDutyChargePerson(); + + } + //判断班组长是否存在 + R userR = userClient.userInfoById(groupEntityManagerId); + if (!userR.isSuccess() || ObjectUtil.isEmpty(userR.getData())) { + return R.fail("接班班组长不存在,请指定班组长后进行交班!"); + } + + if (Func.isEmpty(recEntity.getId())) { + // 保存 + save(recEntity); + } + log.info("groupEntityManagerId-------------------------:" + groupEntityManagerId); + R result = flowClient.startProcessInstanceByKey(DutyRecProcessConstant. + DUTY_REC_FLOW_KEY, StringUtil.format("{}:{}", + DutyRecProcessConstant.DUTY_REC_PROCESS_TABLE, recEntity.getId()), new HashMap() {{ + put("taskId", recEntity.getId()); + put(DutyRecProcessConstant.TASK_VARIABLE_CARRY_USER, TaskUtil.getTaskUser(groupEntityManagerId.toString())); + //put(DutyRecProcessConstant.TASK_VARIABLE_CARRY_USER, Arrays.stream(dutyMainEntity.getDutyPersonIds().split("\\^")).map(o -> TaskUtil.getTaskUser(o)).collect(Collectors.joining(","))); + }}); + log.info("result-------------------------:" + result); + if (result.isSuccess()) { + Date date = new Date(); + //判断是否延时交班 + judgeDelayedHand(handDutyMainEntity, recEntity);//判断交班是否延时 + + // 返回流程id写入业务表 + recEntity.setExecTime(date); + recEntity.setProcessInstanceId(result.getData().getProcessInstanceId()); + recEntity.setStatus(DutyRecStatus.EXEC.getVal()); + //recEntity.setInspectTaskId(inspectTaskId); + updateById(recEntity); + } else { + throw new ServiceException("开启流程失败"); + } + return R.status(true); + } + + /** + * 开启交接班 + * + * @param recDTO 交接班信息 - 巡检路线ID、NAME、DATA + * @return 交接班成功标识 + */ + @Override +// @Transactional(rollbackFor = Exception.class) + public Boolean changeShift(ImsDutyRecDTO recDTO) { + // 获取班组组长 + Long managerId = this.getHandleGroupManagerByDuty(recDTO.getDutyId()); + Assert.isTrue(Func.isNotEmpty(managerId), () -> { + throw new ServiceException("获取值班班组长失败!"); + }); + + String tenantId = AuthUtil.getTenantId(); + // 新建巡检计划并获取巡检任务Id + PlanVO planVO = new PlanVO(); + planVO.setRouteId(recDTO.getRouteId()); + planVO.setRouteData(recDTO.getRouteData()); + planVO.setRouteName(recDTO.getRouteName()); + planVO.setPlanUsers(Lists.newArrayList(managerId)); + Long inspectTaskId = this.createInspectPlan(planVO); + recDTO.setInspectTaskId(inspectTaskId); + // 返回流程id写入业务表 + recDTO.setExecTime(new Date()); + recDTO.setStatus(DutyRecStatus.EXEC.getVal()); + // 判断交接班是否延时 + ImsDutyMainEntity dutyMainEntity = imsDutyMainService.getById(recDTO.getDutyId()); + Long duration = this.changeShiftDuration(dutyMainEntity, OperationalConstants.DutyRecTypeEnum.HAND_REC.getVal()); + if (Func.isNotEmpty(duration) && duration > 0) { + recDTO.setDelayStatus(DutyContants.DutyRecDelayStatusEnum.HAND_DELAY_STATUS.getStatus()); + } + ImsDutyRecEntity recEntity = BeanUtil.copy(recDTO, ImsDutyRecEntity.class); + recEntity.setTenantId(tenantId); + if (Func.isEmpty(recEntity.getId())) { + save(recEntity); + } + ImsDutyLogEntity imsDutyLogEntity = imsDutyLogService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyLogEntity::getDutyId, dutyMainEntity.getId()).last(" limit 1"); + }}); + if (imsDutyLogEntity != null) { + imsDutyLogEntity.setHandTime(DateUtil.format(new Date(), PATTERN_DATETIME)); + imsDutyLogService.save(imsDutyLogEntity); + } + // 开启值班交接班流程 + BladeFlow bladeFlow = this.startDutyRecProcess(recEntity, managerId); + recEntity.setProcessInstanceId(bladeFlow.getProcessInstanceId()); + return updateById(recEntity); + } + + /** + * 根据值班ID获取值班负责人Id + * + * @param dutyId 值班ID + * @return 值班负责人ID + */ + private Long getHandleGroupManagerByDuty(Long dutyId) { +// ImsDutyMainEntity dutyMain = imsDutyMainMapper.selectById(dutyId); + // 判断是否已交班 + List dutyRecs = this.list(Wrappers.lambdaQuery().eq(ImsDutyRecEntity::getDutyId, dutyId)); + Assert.isTrue(CollectionUtil.isEmpty(dutyRecs), () -> { + throw new ServiceException("您已交班,请勿重复交班!"); + }); + //根据上一班值班id查询值班信息 + ImsDutyMainEntity carryDutyMain = imsDutyMainMapper.selectOne(Wrappers.lambdaQuery().eq(ImsDutyMainEntity::getPreDutyId, dutyId)); + Assert.isTrue(ObjectUtil.isNotEmpty(carryDutyMain), () -> { + throw new ServiceException("当前时间没有接班人!"); + }); + //获取接班人班组组长 + Long managerId; + if (Func.isNotEmpty(carryDutyMain.getDutyGroupId())) { + ImsDutyGroupEntity groupEntity = imsDutyGroupService.getById(carryDutyMain.getDutyGroupId()); + ImsDutyGroupPEntity groupPEntity = imsDutyGroupPService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyGroupPEntity::getGroupId, groupEntity.getId()); + eq(ImsDutyGroupPEntity::getPersonId, groupEntity.getManagerId()).last(" LIMIT 1"); + }}); + Assert.isTrue(ObjectUtil.isNotEmpty(groupPEntity), () -> { + throw new ServiceException("接班班组长不存在,请指定班组长后进行交班!"); + }); + managerId = groupEntity.getManagerId(); + } else { + managerId = Optional.ofNullable(imsDutyMainPersonService.selectByMainId(carryDutyMain.getId())).filter(CollectionUtil::isNotEmpty) + .map(list -> list.get(0)).map(ImsDutyMainPersonEntity::getDutyChargePerson).orElse(null); + } +// R manager = userClient.userInfoById(managerId); +// Assert.isTrue(manager.isSuccess() && ObjectUtil.isNotEmpty(manager.getData()),() -> { +// throw new ServiceException("获取接班组长失败"); +// }); + return managerId; + } + + /** + * 开启值班交接班流程 + * + * @param recEntity 交接班信息 + * @return 工作流执行结果 + */ + private BladeFlow startDutyRecProcess(ImsDutyRecEntity recEntity, Long managerId) { + ImsDutyRecDTO recDTO = BeanUtil.copy(recEntity, ImsDutyRecDTO.class); + ImsSchedulingVo currentDuty = imsDutyMainService.getByIdOneV2(recDTO.getDutyId()); + recDTO.setHeadDutyMainVo(currentDuty); + List carryDuties = imsDutyMainService.list(Wrappers.lambdaQuery().eq(ImsDutyMainEntity::getPreDutyId, recDTO.getDutyId())); + Assert.isTrue(carryDuties.size() <= 1, () -> { + throw new ServiceException("交班失败,接班不唯一,接班数量为:" + carryDuties.size()); + }); + recDTO.setCarryDutyMainVo(imsDutyMainService.getByIdOneV2(carryDuties.get(0).getId())); + Map variable = new HashMap() {{ + putAll(BeanUtil.toMap(recDTO)); + put("taskId", recEntity.getId()); + put(DutyRecProcessConstant.TASK_VARIABLE_CARRY_USER, TaskUtil.getTaskUser(managerId.toString())); + }}; + + R flowResult = flowClient.startProcessInstanceByKey( + DutyRecProcessConstant.DUTY_REC_FLOW_KEY, + StringUtil.format("{}:{}", DutyRecProcessConstant.DUTY_REC_PROCESS_TABLE, recEntity.getId()), + variable + ); + Assert.isTrue(flowResult.isSuccess(), () -> { + throw new ServiceException(flowResult.getMsg()); + }); + return flowResult.getData(); + } + + private void updateMain(Long dutyId) { + ImsDutyMainEntity imsDutyMainEntity = new ImsDutyMainEntity(); + ImsDutyMainEntity dutyMainEntity = imsDutyMainMapper.selectOne(new QueryWrapper() {{ + eq("PRE_DUTY_ID", dutyId); + }}); + //修改接班人所在主表数据状态为 值班中 + imsDutyMainEntity.setId(dutyMainEntity.getId()); + imsDutyMainEntity.setStatus(DutyMainStatus.EXEC.getVal()); + imsDutyMainMapper.updateById(imsDutyMainEntity); + } + + + /** + * 详情 + * + * @param vo + * @return + */ + @Override + public ImsDutyRecVO getDetail(ImsDutyRecVO vo) { + ImsSchedulingVo imsSchedulingVo1 = imsDutyMainService.getByIdOneV2(vo.getDutyId()); + vo.setHeadDutyMainVo(imsSchedulingVo1); + ImsDutyLogEntity imsDutyLog = imsDutyLogService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyLogEntity::getDutyId, vo.getDutyId()).last(" limit 1"); + }}); + if (ObjectUtil.isNotEmpty(imsDutyLog)) { + vo.setImsDutyLogEntity(imsDutyLog); + } + ImsDutyMainEntity imsDutyMainEntity = imsDutyMainMapper.selectOne(new QueryWrapper() {{ + eq("PRE_DUTY_ID", vo.getDutyId()); + }}); + if (ObjectUtil.isNotEmpty(imsDutyMainEntity)) { + ImsSchedulingVo imsSchedulingVo = imsDutyMainService.getByIdOneV2(imsDutyMainEntity.getId()); + vo.setCarryDutyMainVo(imsSchedulingVo); + } + return vo; + } + + @Override + public IPage getRecVoPage(IPage page, ImsDutyRecVO vo) { + + IPage imsDutyRecEntityIPage = this.baseMapper.selectPage(page, new LambdaQueryWrapper() {{ + orderByDesc(ImsDutyRecEntity::getExecTime); + if (StringUtil.isNotBlank(vo.getDutyInfo())) { + like(ImsDutyRecEntity::getDutyInfo, vo.getDutyInfo()); + } + if (StringUtil.isNotBlank(vo.getAcceptInfo())) { + like(ImsDutyRecEntity::getAcceptInfo, vo.getAcceptInfo()); + } + if (StringUtil.isNotBlank(vo.getLeftProblem())) { + like(ImsDutyRecEntity::getLeftProblem, vo.getLeftProblem()); + } + if (StringUtil.isNotBlank(vo.getStartDate())) { + ge(ImsDutyRecEntity::getExecTime, vo.getStartDate()); + } + if (StringUtil.isNotBlank(vo.getEndDate())) { + le(ImsDutyRecEntity::getExecTime, vo.getEndDate()); + } + if (ObjectUtil.isNotEmpty(vo.getCreateDept())) { + eq(ImsDutyRecEntity::getCreateDept, vo.getCreateDept()); + } + }}); + IPage imsDutyRecVOIPage = ImsDutyRecWrapper.build().pageVO(imsDutyRecEntityIPage); + List records = imsDutyRecVOIPage.getRecords(); + if (CollectionUtil.isEmpty(records)) { + return imsDutyRecVOIPage; + } + for (ImsDutyRecVO imsDutyRecVO : records) { + ImsSchedulingVo imsSchedulingVo = imsDutyMainService.getByIdOneV2(imsDutyRecVO.getDutyId(), null); + ImsSchedulingVo carryDutyMainVo = imsDutyMainMapper.selectByPreDutyIdOne(Optional.ofNullable(imsSchedulingVo).map(ImsSchedulingVo::getId).orElse(null)); + if (ObjectUtil.isNotEmpty(carryDutyMainVo)) { + if (StringUtil.isBlank(carryDutyMainVo.getGroupName())) { + carryDutyMainVo.setGroupName("临时班组"); + } + } + imsDutyRecVO.setCarryDutyMainVo(carryDutyMainVo); + if (ObjectUtil.isEmpty(imsDutyRecVO)) { + continue; + } + imsDutyRecVO.setHeadDutyMainVo(imsSchedulingVo); + // 机构名称 + R result = sysClient.getDeptName(imsDutyRecVO.getCreateDept()); + if (result.isSuccess() && ObjectUtil.isNotEmpty(result.getData())) { + imsDutyRecVO.setStationName(result.getData()); + } + + Long dutyId = imsDutyRecVO.getDutyId(); + ImsDutyLogEntity dutyLogEntity = imsDutyLogService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyLogEntity::getDutyId, dutyId); + }}); + imsDutyRecVO.setImsDutyLogEntity(dutyLogEntity); + } + imsDutyRecVOIPage.setRecords(records); + return imsDutyRecVOIPage; + } + + + /** + * 获取当前值班班组 -- 交接班 + * + * @return + */ + @Override + public R getTheManinGroupRec(Long deptId, String dutyDate) { + ImsDutyRecVO vo = new ImsDutyRecVO(); + + ImsDutyMainEntity entity = imsDutyMainMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getStatus, DutyMainStatus.EXEC.getVal()); + eq(ImsDutyMainEntity::getCreateDept, deptId); + eq(ImsDutyMainEntity::getDutyDate, dutyDate); + like(ImsDutyMainEntity::getDutyPersonIds, AuthUtil.getUserId()).last(" limit 1"); + }}); + if (ObjectUtil.isEmpty(entity)) { + return R.success("您当前未值班"); + } + + if (entity.getDutyGroupId() != null) { + ImsDutyGroupEntity groupEntity = imsDutyGroupService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyGroupEntity::getId, entity.getDutyGroupId()); + eq(ImsDutyGroupEntity::getManagerId, AuthUtil.getUserId()); + }}); + if (ObjectUtils.isEmpty(groupEntity)) { + return R.success("您不是该班组负责人,不可交班!"); + } + } else { + ImsDutyMainPersonEntity personEntity = imsDutyMainPersonService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainPersonEntity::getDutyMainId, entity.getId()); + eq(ImsDutyMainPersonEntity::getDutyChargePerson, AuthUtil.getUserId()); + last(" limit 1"); + }}); + if (ObjectUtil.isEmpty(personEntity)) { + return R.success("您不是该班组负责人,不可交班!"); + } + } + ImsDutyRecEntity recEntity = this.baseMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyRecEntity::getDutyId, entity.getId()); + }}); + if (ObjectUtil.isNotEmpty(recEntity)) { + return R.success("您已提交交班申请"); + } + + ImsDutyRecEntity dutyRecEntity = this.baseMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyRecEntity::getDutyId, entity.getPreDutyId()); + }}); + if (ObjectUtil.isNotEmpty(dutyRecEntity)) { + vo.setInspectTaskId(dutyRecEntity.getInspectTaskId()); + } + ImsSchedulingVo imsSchedulingVo = imsDutyMainServiceImpl.getByIdOneV2(entity.getId(), null);//交班人 + if (ObjectUtil.isNotEmpty(imsSchedulingVo) && null != imsSchedulingVo.getManagerId()) { + imsSchedulingVo.setUserName(userClient.userInfoById(imsSchedulingVo.getManagerId()).getData().getName()); + } + ImsSchedulingVo imsSchedulingVo1 = imsDutyMainServiceImpl.getByIdOneV2(null, entity.getId()); + if (ObjectUtil.isNotEmpty(imsSchedulingVo1) && null != imsSchedulingVo1.getManagerId()) { + imsSchedulingVo1.setUserName(userClient.userInfoById(imsSchedulingVo1.getManagerId()).getData().getName()); + } else { + throw new ServiceException("没有找到接班对象值班信息,请联系管理人员,进行尽快进行排班!!!!"); + } + vo.setHeadDutyMainVo(imsSchedulingVo); + vo.setCarryDutyMainVo(imsSchedulingVo1); + return R.data(vo); + } + + + /** + * 获取签到二维码 + * + * @return + */ + @Override + public String getQRCode() { + Long thisTimeToRub = System.currentTimeMillis(); + ImsDutyRecEntity recEntity = this.baseMapper.selectOne(new LambdaQueryWrapper() {{ + eq(ImsDutyRecEntity::getStatus, DutyRecStatus.EXEC.getVal()).orderByDesc(ImsDutyRecEntity::getCreateTime). + last("limit 1"); + }}); + + if (ObjectUtil.isEmpty(recEntity)) { + return null; + } + return recEntity.getProcessInstanceId() + "," + thisTimeToRub; + + } + + /** + * 修改值班状态 + * + * @return + */ + @Override + public R doUpdate(String date, Long id) { + ImsDutyMainEntity entity = new ImsDutyMainEntity(); + entity.setId(id); + entity.setDutyDate(DateUtil.parse(date, DateUtil.PATTERN_DATE)); + String format1 = DateUtil.format(new Date(), DateUtil.PATTERN_DATE); + Date dutyDate = entity.getDutyDate(); + Date parse = DateUtil.parse(format1, DateUtil.PATTERN_DATE); + if (dutyDate.getTime() > parse.getTime()) { + return R.fail("值班时间不能大于当前时间"); + } + ImsDutyMainEntity mainEntityById = imsDutyMainService.getById(id); + + //获取当前值班 + ImsDutyMainEntity mainEntity = imsDutyMainService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getStatus, DutyMainStatus.EXEC.getVal()); + eq(ImsDutyMainEntity::getCreateDept, mainEntityById.getCreateDept()); + last("limit 1"); + }}); + + + List idList = new ArrayList<>(); + boolean bool = true; + ImsDutyMainEntity dutyMainEntity = new ImsDutyMainEntity(); + dutyMainEntity.setPreDutyId(id); + while (bool) { + ImsDutyMainEntity imsDutyMainServiceOne = imsDutyMainService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getDutyDate, date); + eq(ImsDutyMainEntity::getPreDutyId, Long.valueOf(dutyMainEntity.getPreDutyId())); + ne(ImsDutyMainEntity::getStatus, "-1"); + eq(ImsDutyMainEntity::getCreateDept, mainEntityById.getCreateDept()); + }}); + + if (ObjectUtil.isEmpty(imsDutyMainServiceOne)) { + bool = false; + } + if (bool) { + dutyMainEntity.setPreDutyId(imsDutyMainServiceOne.getId()); + idList.add(imsDutyMainServiceOne.getId()); + } + } + + ImsDutyGroupEntity groupEntity = imsDutyGroupService.getById(mainEntityById.getDutyGroupId()); + if (ObjectUtil.isNotEmpty(groupEntity)) { + if (null == groupEntity.getManagerId()) { + return R.fail("该指定班组中的班组长不存在,请添加班组长后进行指定!"); + } + //判断班组长是否存在 + R userR = userClient.userInfoById(groupEntity.getManagerId()); + ImsDutyGroupPEntity groupPEntity = imsDutyGroupPService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyGroupPEntity::getGroupId, groupEntity.getId()); + eq(ImsDutyGroupPEntity::getPersonId, groupEntity.getManagerId()).last(" LIMIT 1"); + }}); + + if (!userR.isSuccess() || ObjectUtil.isEmpty(userR.getData()) || ObjectUtil.isEmpty(groupPEntity)) { + return R.fail("该指定班组中的班组长不存在,请添加班组长后进行指定!"); + } + } + + + if (ObjectUtil.isNotEmpty(mainEntity)) { + List list = imsDutyMainService.list(new LambdaQueryWrapper() {{ + ge(ImsDutyMainEntity::getDutyDate, mainEntity.getDutyDate()); + le(ImsDutyMainEntity::getDutyDate, entity.getDutyDate()); + ne(ImsDutyMainEntity::getStatus, DutyMainStatus.ACCEPT.getVal()); + ne(ImsDutyMainEntity::getStatus, "-1"); + eq(ImsDutyMainEntity::getCreateDept, mainEntityById.getCreateDept()); + idList.add(id); + if (CollectionUtil.isNotEmpty(idList)) { + for (Long id : idList) { + ne(ImsDutyMainEntity::getId, id); + } + } + }}); + if (CollectionUtil.isNotEmpty(list)) { + for (ImsDutyMainEntity imsDutyMainEntity : list) { + ImsDutyMainEntity mainEntity1 = new ImsDutyMainEntity(); + ImsDutyRecEntity recEntity = this.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyRecEntity::getDutyId, imsDutyMainEntity.getId()); + eq(ImsDutyRecEntity::getCreateDept, mainEntityById.getCreateDept()); + }}); + if (ObjectUtil.isNotEmpty(recEntity) && StringUtil.isNotBlank(recEntity.getProcessInstanceId())) { + flowClient.delProcessInstanceById(recEntity.getProcessInstanceId(), "交接班-异常数据处理"); + recEntity.setStatus(DutyRecStatus.ANOMALY.getVal()); + recEntity.setDelayStatus(DutyContants.DutyRecDelayStatusEnum.CARRY_DELAY_STATUS.getStatus()); + this.updateById(recEntity); + } else { + ImsDutyRecEntity imsDutyRecEntity = new ImsDutyRecEntity(); + imsDutyRecEntity.setDutyId(imsDutyMainEntity.getId()); + imsDutyRecEntity.setDelayStatus(DutyContants.DutyRecDelayStatusEnum.HAND_DELAY_STATUS.getStatus()); + imsDutyRecEntity.setStatus(DutyRecStatus.ANOMALY.getVal()); + + this.save(imsDutyRecEntity); + } + mainEntity1.setId(imsDutyMainEntity.getId()); + mainEntity1.setStatus(DutyMainStatus.ACCEPT.getVal()); + mainEntity1.setCreateDept(mainEntityById.getCreateDept()); + imsDutyMainService.updateById(mainEntity1); + } + } + } + entity.setStatus(DutyMainStatus.EXEC.getVal()); + entity.setCreateDept(mainEntityById.getCreateDept()); + return R.status(imsDutyMainService.updateById(entity)); + } + + + /** + * 分钟 + */ + private String minutlDateTest(Date date, int i) {//减多少分钟 + String reStr = ""; + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//"yyyy-MM-dd HH:mm:ss" + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(date); + rightNow.add(Calendar.MINUTE, i); + Date dt1 = rightNow.getTime(); + reStr = sdf.format(dt1); + } catch (Exception e) { + e.printStackTrace(); + } + return reStr; + } + + + /** + * 判断延时接班 + */ + @Override + public void judgeDelayedCarry(ImsDutyMainEntity entity, ImsDutyRecEntity recEntity) { + ImsDutyClassEntity classEntity = imsDutyClassService.getById(entity.getClassId()); + Long differMinute = DateUtils.getDifferMinute(calculateDate(entity, classEntity, OperationalConstants.DutyRecTypeEnum.CARRY_REC.getVal())); + ImsDutyRecEntity recEntity1 = new ImsDutyRecEntity(); + if (differMinute > 30) { + recEntity1.setId(recEntity.getId()); + if (recEntity.getDelayStatus() == DutyContants.DutyRecDelayStatusEnum.HAND_DELAY_STATUS.getStatus()) { + recEntity1.setDelayStatus(DutyContants.DutyRecDelayStatusEnum.REC_DELAY_STATUS.getStatus());//赋值延时状态 为3 交接班延时 + } else { + recEntity1.setDelayStatus(DutyContants.DutyRecDelayStatusEnum.CARRY_DELAY_STATUS.getStatus());//赋值延时状态 为2 接班延时 + } + recEntity1.setQrCodeContent(System.currentTimeMillis() + ""); + this.baseMapper.updateById(recEntity1); + } + } + + /** + * 判断延时交班 + */ + @Override + public void judgeDelayedHand(ImsDutyMainEntity handDutyMainEntity, ImsDutyRecEntity recEntity) { + ImsDutyClassEntity classEntity = imsDutyClassService.getById(handDutyMainEntity.getClassId()); + Long differMinute = DateUtils.getDifferMinute(calculateDate(handDutyMainEntity, classEntity, OperationalConstants.DutyRecTypeEnum.HAND_REC.getVal())); + log.info("-------------------------延迟:" + differMinute + " 分钟"); + if (differMinute > 0) { + ImsDutyRecEntity entity = new ImsDutyRecEntity(); + entity.setId(recEntity.getId()); + entity.setDelayStatus(DutyContants.DutyRecDelayStatusEnum.HAND_DELAY_STATUS.getStatus());//赋值延时状态 为1 交班延时 + this.baseMapper.updateById(entity); + } + } + + @Override + public String calculateDate(ImsDutyMainEntity dutyMainEntity, ImsDutyClassEntity classEntity, int type) { + Boolean preBool = false; + Boolean bool = false; + String strDate = ""; + String preDate = ""; + String format = ""; + String time = ""; + String preTime = ""; + + if (type == OperationalConstants.DutyRecTypeEnum.HAND_REC.getVal()) { + time = classEntity.getEndTime() + ""; + } else if (type == OperationalConstants.DutyRecTypeEnum.CARRY_REC.getVal()) { + time = classEntity.getStartTime() + ""; + } + + format = DateUtil.format(dutyMainEntity.getDutyDate(), DateUtil.PATTERN_DATE) + " " + time; + strDate = format; + Date parse = DateUtil.parse(format, DateUtil.PATTERN_DATETIME); + + + ImsDutyMainEntity imsDutyMainServiceOne1 = imsDutyMainService.getOne(new LambdaQueryWrapper() {{ + orderByAsc(ImsDutyMainEntity::getId); + eq(ImsDutyMainEntity::getCreateDept, AuthUtil.getDeptId()); + eq(ImsDutyMainEntity::getDutyDate, DateUtil.format(dutyMainEntity.getDutyDate(), DateUtil.PATTERN_DATE)).last(" limit 1"); + }}); + + + if (ObjectUtil.isNotEmpty(imsDutyMainServiceOne1)) { + if (!dutyMainEntity.getId().equals(imsDutyMainServiceOne1.getId())) { + ImsDutyClassEntity dutyClassEntity = imsDutyClassService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyClassEntity::getId, imsDutyMainServiceOne1.getClassId()); + }}); + if (type == OperationalConstants.DutyRecTypeEnum.HAND_REC.getVal()) { + preTime = dutyClassEntity.getEndTime() + ""; + } else if (type == OperationalConstants.DutyRecTypeEnum.CARRY_REC.getVal()) { + preTime = dutyClassEntity.getStartTime() + ""; + } + preDate = DateUtil.format(imsDutyMainServiceOne1.getDutyDate(), DateUtil.PATTERN_DATE) + " " + preTime; + Date preParse = DateUtil.parse(preDate, DateUtil.PATTERN_DATETIME); + if (preParse.getTime() > parse.getTime()) { + bool = true; + strDate = calculateDutyDate(parse); + } + } + } + + if (bool == false) { + ImsDutyMainEntity imsDutyMainServiceOne = imsDutyMainService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getId, dutyMainEntity.getPreDutyId()); + }}); + if (ObjectUtil.isNotEmpty(imsDutyMainServiceOne)) { + if (dutyMainEntity.getDutyDate().getTime() == imsDutyMainServiceOne.getDutyDate().getTime()) { + ImsDutyClassEntity one = imsDutyClassService.getOne(new LambdaQueryWrapper() {{ + eq(ImsDutyClassEntity::getId, imsDutyMainServiceOne.getClassId()); + }}); + if (ObjectUtil.isNotEmpty(one)) { + preBool = true; + if (type == OperationalConstants.DutyRecTypeEnum.HAND_REC.getVal()) { + preTime = one.getEndTime() + ""; + } else if (type == OperationalConstants.DutyRecTypeEnum.CARRY_REC.getVal()) { + preTime = one.getStartTime() + ""; + } + preDate = DateUtil.format(imsDutyMainServiceOne.getDutyDate(), DateUtil.PATTERN_DATE) + " " + preTime; + } + } + } + } + + + if (preBool) { + Date preParse = DateUtil.parse(preDate, DateUtil.PATTERN_DATETIME); + if (preParse.getTime() > parse.getTime()) { + strDate = calculateDutyDate(parse); + } + } + return strDate; + } + + @Override + public List getRecInfoByDepts(List depts, String date) { + return this.baseMapper.selectRecInfoByDepts(depts, date); + } + + @Override + public R delProcessInstanceIds(String processInstanceIds) { + String[] split = processInstanceIds.split(","); + for (String processInstanceId : split) { + flowClient.delProcessInstanceById(processInstanceId, "交接班-异常数据处理"); + } + return R.success("操作成功"); + } + + + /** + * 天数加1 + * + * @param date + * @return + */ + private String calculateDutyDate(Date date) { + Calendar c = Calendar.getInstance(); + c.setTime(date); + c.add(Calendar.DAY_OF_MONTH, 1); + date = c.getTime(); + return DateUtil.format(date, DateUtil.PATTERN_DATETIME); + } + + + /** + * 创建交接班巡检任务 + * + * @param vo 巡检任务VO对象 + * @return 巡检任务ID + */ + private Long createInspectPlan(PlanVO vo) { + // 填充巡检计划信息 + vo.setName(DateUtil.format(new Date(), "yyyy-MM-dd HH") + "-交接班巡视"); + vo.setMethod(PlanContants.PlanMethodEnum.SEIZE.getMethod()); + vo.setAutoVideo(PlanContants.AutoVideoEnum.NO.getFlag()); + vo.setCycle(PlanContants.PlanCycleEnum.NEVER_CYCLE.getCycle()); + vo.setType(PlanContants.PlanTypeEnum.USER_TYPE.getType()); + vo.setTaskTimesADay(DutyRecProcessConstant.INSPECT_PANL_TASK_TIMES_A_DAY); + vo.setPlanType(PlanContants.PlanContentTypeEnum.COMMON.getDesc()); + vo.setStartRemind(DutyRecProcessConstant.INSPECT_PANL_START_REMIND); + vo.setEndRemind(DutyRecProcessConstant.INSPECT_PANL_END_REMIND); + + // 设置巡检计划计划开始结束时间 + LocalDateTime now = LocalDateTime.now(); + LocalDateTime startTime = now.minusMinutes(5); + LocalDateTime endTime = now.plusHours(2); + vo.setStartTime(startTime.toLocalDate()); + vo.setEndTime(endTime.toLocalDate()); + Map execTime = new HashMap(2) {{ + put("execStartTime", DateTimeFormatter.ofPattern(DateUtil.PATTERN_TIME).format(startTime.toLocalTime())); + put("execEndTime", DateTimeFormatter.ofPattern(DateUtil.PATTERN_TIME).format(endTime.toLocalTime())); + }}; + List> execTimeList = Lists.newArrayList(execTime); + vo.setExecTimeJson(JSONObject.toJSONString(execTimeList)); + R> createPlanResult = inspectPlanClient.addPlanAndChecked(vo); + Assert.isTrue(createPlanResult.isSuccess(), () -> { + throw new ServiceException(createPlanResult.getMsg()); + }); + return Optional.ofNullable(createPlanResult.getData()).map(list -> list.get(0)).orElse(null); + } + + //新增巡检计划 获取巡检任务ID + public Long getInspectTaskId(PlanVO vo, Long princId) { + vo.setPlanUsers(Lists.newArrayList(princId)); + return this.createInspectPlan(vo); + } + + + /** + * 小时 + */ + private Date hrDate(Date date, int i) {//减多少小时 + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(date); + rightNow.add(Calendar.HOUR, i); + Date dt1 = rightNow.getTime(); + return dt1; + } + + + /** + * 分钟 + */ + private Date minutlDate(Date date, int i) {//减多少分钟 + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(date); + rightNow.add(Calendar.MINUTE, i); + Date dt1 = rightNow.getTime(); + return dt1; + } + + @Override + public R batchUpdateTest() { + + List imsDutyRecTestVos = this.baseMapper.selectTest(); + for (ImsDutyRecTestVo imsDutyRecTestVo : imsDutyRecTestVos) { + ImsDutyRecEntity entity = new ImsDutyRecEntity(); + entity.setId(imsDutyRecTestVo.getId()); + entity.setCreateUser(imsDutyRecTestVo.getManagerId()); + String startTime = imsDutyRecTestVo.getDutyDate() + " " + imsDutyRecTestVo.getEndTime(); + entity.setExecTime(DateUtil.parse(startTime, DateUtil.PATTERN_DATETIME)); + String endTime = minutlDateTest(DateUtil.parse(startTime, DateUtil.PATTERN_DATETIME), 10); + entity.setAcceptTime(DateUtil.parse(endTime, DateUtil.PATTERN_DATETIME)); + this.baseMapper.updateById(entity); + } + + return R.success("操作成功"); + } + + @Override + public String testClassDate(Long id, Integer type) { + ImsDutyMainEntity imsDutyMainEntity = imsDutyMainService.getById(id); + ImsDutyClassEntity classEntity = imsDutyClassService.getById(imsDutyMainEntity.getClassId()); + Long differMinute = DateUtils.getDifferMinute(calculateDate(imsDutyMainEntity, classEntity, type)); + return calculateDate(imsDutyMainEntity, classEntity, type) + "-分钟:" + differMinute; + } + + + /** + * 交接班统计 + * + * @param param + * @return + */ + @Override + public ChangeShiftsRspDTO getChangeShifts(ChangeShiftsReqDTO param) { + ChangeShiftsRspDTO response = new ChangeShiftsRspDTO(); + response.setShiftsCount(0); + response.setShiftsRate(0.0); + if (ObjectUtil.isEmpty(param)) { + return response; + } + // 查询交接班记录 + QueryWrapper queryWrapper = new QueryWrapper() {{ + if (Optional.ofNullable(param.getCreateDept()).isPresent()) { + eq("create_dept", param.getCreateDept()); + } + if (Optional.ofNullable(param.getStartTime()).isPresent()) { + gt("exec_time", param.getStartTime()); + } + if (Optional.ofNullable(param.getEndTime()).isPresent()) { + lt("exec_time", param.getEndTime()); + } + }}; + List list = this.baseMapper.selectList(queryWrapper); + if (CollectionUtil.isEmpty(list)) { + return response; + } + // 交接班次数 + response.setShiftsCount(list.size()); + List normal = list.stream().filter(o -> DutyContants.DutyRecDelayStatusEnum.WIT_DELAY_STATUS.getStatus() == o.getDelayStatus()).collect(Collectors.toList()); + if (CollectionUtil.isEmpty(normal)) { + return response; + } + // 交接班正常率 + double shiftsRate = BigDecimal.valueOf((double) normal.size() / list.size() * 100L).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + response.setShiftsRate(shiftsRate); + return response; + } + + @Override + //@Transactional + public Boolean dealDutyRecFlow(ImsDutyRecDTO recDTO) { + ImsDutyMainEntity headDutyMain = BeanUtil.copy(recDTO.getHeadDutyMainVo(), ImsDutyMainEntity.class); + ImsDutyMainEntity carryDutyMain = BeanUtil.copy(recDTO.getCarryDutyMainVo(), ImsDutyMainEntity.class); + if (StringUtil.isBlank(recDTO.getDealChain())) { + recDTO.setDealChain("结束"); + // 接班确认-获取交接班延时状态 + recDTO.setDelayStatus(this.getChangeShiftStatus(carryDutyMain, recDTO.getDelayStatus(), OperationalConstants.DutyRecTypeEnum.CARRY_REC.getVal())); + //修改交班人所在主表数据状态为 已完成 + headDutyMain.setStatus(DutyMainStatus.ACCEPT.getVal()); + //修改接班人所在主表数据状态为 值班中 + carryDutyMain.setStatus(DutyMainStatus.EXEC.getVal()); + // 交接班接班信息填充 + recDTO.setStatus(DutyRecStatus.ACCEPT.getVal()); + recDTO.setAcceptTime(new Date()); + recDTO.setQrCodeContent(System.currentTimeMillis() + ""); + + ImsDutyLogEntity update = imsDutyLogService.getOne(Wrappers.lambdaQuery() + .eq(ImsDutyLogEntity::getDutyId, headDutyMain.getId()) + .last("limit 1")); + if (ObjectUtil.isNotEmpty(update)) { + update.setCarryTime(DateUtil.format(new Date(), PATTERN_DATETIME)); + imsDutyLogService.updateById(update); + } + } + ImsDutyRecEntity dutyRec = BeanUtil.copy(recDTO, ImsDutyRecEntity.class); + // 更新交班值班 + if (ObjectUtil.isNotEmpty(headDutyMain) && ObjectUtil.isNotEmpty(headDutyMain.getId())) { + Assert.isTrue(imsDutyMainService.updateById(headDutyMain), () -> { + throw new RuntimeException("更新交班状态失败,交班执行对象为:" + JSON.toJSONString(recDTO.getHeadDutyMainVo())); + }); + log.info("更新交班状态:" + carryDutyMain); + } + // 更新接班值班 + if (ObjectUtil.isNotEmpty(carryDutyMain) && ObjectUtil.isNotEmpty(carryDutyMain.getId())) { + Assert.isTrue(imsDutyMainService.updateById(carryDutyMain), () -> { + throw new RuntimeException("更新接班状态失败,交班执行对象为:" + JSON.toJSONString(recDTO.getHeadDutyMainVo())); + }); + log.info("更新接班状态:" + carryDutyMain); + } + // 更新交接班 + if (ObjectUtil.isNotEmpty(dutyRec) && ObjectUtil.isNotEmpty(dutyRec.getId())) { + return this.updateById(dutyRec); + } else { + log.error("更新交接班记录失败" + dutyRec.toString()); + return false; + } + } + + @Override + public List dutyRecordList(String startTime, String endTime, Integer limit) { + limit = ObjectUtil.isEmpty(limit) ? 25 : limit; + List recList = this.baseMapper.selectList(Wrappers.lambdaQuery() + .ge(StringUtil.isNotBlank(startTime), ImsDutyRecEntity::getExecTime, startTime) + .le(StringUtil.isNotBlank(endTime), ImsDutyRecEntity::getExecTime, endTime) + .last("order by exec_time desc limit " + limit)); + List result = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(recList)) { + for (ImsDutyRecEntity dutyRec : recList) { + DutyShiftRecord record = DutyShiftRecord.of(dutyRec); + result.add(record); + ImsDutyMainEntity currentDuty = imsDutyMainService.getById(dutyRec.getDutyId()); + if (ObjectUtil.isNotEmpty(currentDuty)) { + List personList = imsDutyMainPersonService.selectByMainId(dutyRec.getDutyId()); + if (CollectionUtil.isNotEmpty(personList)) { + Long chargePersonId = personList.get(0).getDutyChargePerson(); + if (null != chargePersonId) { + record.setOffPersonId(chargePersonId); + try { + R userR = userClient.userInfoById(chargePersonId); + if (ObjectUtil.isNotEmpty(userR.getData())) { + record.setOffPersonName(userR.getData().getRealName()); + } + } catch (Exception ignore) { + + } + } + } + ImsDutyMainEntity nextDuty = imsDutyMainService.getOne(Wrappers.lambdaQuery().eq(ImsDutyMainEntity::getPreDutyId, currentDuty.getId())); + if (ObjectUtil.isNotEmpty(nextDuty)) { + List nextPersonList = imsDutyMainPersonService.selectByMainId(nextDuty.getId()); + if (CollectionUtil.isNotEmpty(nextPersonList)) { + Long chargePersonId = nextPersonList.get(0).getDutyChargePerson(); + if (null != chargePersonId) { + record.setOnPersonId(chargePersonId); + try { + R userR = userClient.userInfoById(chargePersonId); + if (ObjectUtil.isNotEmpty(userR.getData())) { + record.setOnPersonName(userR.getData().getRealName()); + } + } catch (Exception ignore) { + + } + } + } + } + } + } + } + return result; + } + + @Override + public List dutyLogList(String startTime, String endTime, Integer limit) { + limit = ObjectUtil.isEmpty(limit) ? 25 : limit; + List dutyLogList = imsDutyLogService.list(Wrappers.lambdaQuery() + .ge(StringUtil.isNotBlank(startTime), ImsDutyLogEntity::getCreateTime, startTime) + .le(StringUtil.isNotBlank(endTime), ImsDutyLogEntity::getCreateTime, endTime) + .last("order by CREATE_TIME desc limit " + limit)); + List dutyLogs = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(dutyLogList)) { + for (ImsDutyLogEntity dutyLog : dutyLogList) { + DutyLog log = new DutyLog(); + log.setLogTime(dutyLog.getCreateTime()); + log.setDutyId(dutyLog.getDutyId()); + log.setLogPersonId(dutyLog.getCreateUser()); + if (dutyLog.getCreateUser() != null) { + R userR = userClient.userInfoById(dutyLog.getCreateUser()); + if (userR.isSuccess() && ObjectUtil.isNotEmpty(userR.getData())) { + log.setLogPersonName(userR.getData().getRealName()); + } + } + log.setStatus(dutyLog.getDutyStatus()); + log.setContent(dutyLog.getNotice()); + dutyLogs.add(log); + } + } + return dutyLogs; + } + + /** + * 计算交接班状态 + * + * @param duty 值班信息 + * @param type 判断交接班延时类型 - 依据 OperationalConstants.DutyRecTypeEnum 枚举类 + * @return 延时状态 + */ + private Integer getChangeShiftStatus(ImsDutyMainEntity duty, Integer recDelayStatus, int type) { + Long duration = this.changeShiftDuration(duty, type); + if (duration > 30) { + if (recDelayStatus == DutyContants.DutyRecDelayStatusEnum.HAND_DELAY_STATUS.getStatus()) { + // 赋值延时状态 为3 交接班延时 + return DutyContants.DutyRecDelayStatusEnum.REC_DELAY_STATUS.getStatus(); + } else { + // 赋值延时状态 为2 接班延时 + return DutyContants.DutyRecDelayStatusEnum.CARRY_DELAY_STATUS.getStatus(); + } + } + return recDelayStatus; + } + + /** + * 交接班时间差 + * + * @param duty 值班信息 交班为当前值班 接班为下一值班 + * @param type 判断交接班延时类型 - 依据 OperationalConstants.DutyRecTypeEnum 枚举类 + * @return 延时时长 + */ + private Long changeShiftDuration(ImsDutyMainEntity duty, int type) { + LocalDateTime now = LocalDateTime.now(); + // 获取当前值班班次 + ImsDutyClassEntity dutyClass = imsDutyClassService.getById(duty.getClassId()); + Assert.isTrue(ObjectUtil.isNotEmpty(dutyClass), () -> { + throw new RuntimeException("接班获取班次失败!"); + }); + Instant dutyDateInstant = duty.getDutyDate().toInstant(); + ZoneId zoneId = ZoneId.systemDefault(); + Time startTime = dutyClass.getStartTime(); + Time endTime = dutyClass.getEndTime(); + // 拼接开始、结束时间 + LocalDateTime startDateTime = LocalDateTime.of(dutyDateInstant.atZone(zoneId).toLocalDate(), LocalTime.of(startTime.getHours(), startTime.getMinutes(), startTime.getSeconds())); + LocalDateTime endDateTime = LocalDateTime.of(dutyDateInstant.atZone(zoneId).toLocalDate(), LocalTime.of(endTime.getHours(), endTime.getMinutes(), endTime.getSeconds())); + if (endDateTime.isBefore(startDateTime)) { + endDateTime = endDateTime.plusDays(1); + } + // 交班延时判断 + if (type == OperationalConstants.DutyRecTypeEnum.HAND_REC.getVal()) { + return Duration.between(endDateTime, now).toMinutes(); + } + // 接班延时判断 + else if (type == OperationalConstants.DutyRecTypeEnum.CARRY_REC.getVal()) { + return Duration.between(startDateTime, now).toMinutes(); + } + return null; + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DutyContants.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DutyContants.java new file mode 100644 index 0000000..8227bb3 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DutyContants.java @@ -0,0 +1,39 @@ +package org.springblade.hzinfo_inspect.duty.utils; + +import lombok.Getter; + +/** + * @author LiangXiang + */ +public interface DutyContants { + + + /** + * 0未延时 1交班延时 2接班延时 3交接班延时 4 + * @author LiangXiang + * + */ + public enum DutyRecDelayStatusEnum{ + /** + * 延时状态:未延时 + */ + WIT_DELAY_STATUS(0), + /** + * 延时状态:交班延时 + */ + HAND_DELAY_STATUS(1), + /** + * 延时状态:接班延时 + */ + CARRY_DELAY_STATUS(2), + /** + * 延时状态:交接班延时 + */ + REC_DELAY_STATUS(3); + @Getter + private int status; + private DutyRecDelayStatusEnum(int status){ + this.status = status; + } + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DutyProcessConstant.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DutyProcessConstant.java new file mode 100644 index 0000000..1b7db80 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DutyProcessConstant.java @@ -0,0 +1,39 @@ +package org.springblade.hzinfo_inspect.duty.utils; + +/** + * 调班工作流常量 + * @Author: py + */ +public interface DutyProcessConstant { + + /** + * 调班流程标识 + */ + String DUTY_FLOW_KEY = "duty"; + + /** + * 申请人 + */ + String TASK_VARIABLE_APPLY_USER = "applyUser"; + + /** + * 调班人 + */ + String TASK_VARIABLE_ACCEPTER_USER = "accepterUser"; + + /** + * 审批主管 + */ + String TASK_VARIABLE_MANAGER = "manager"; + + /** + * 调班工作流表 + */ + String DUTY_PROCESS_TABLE = "hz_ims_duty_change"; + + /** + * 下一个流程是结束 + */ + String FINISH_IS_NEXT = "finishIsNext"; + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DutyRecProcessConstant.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DutyRecProcessConstant.java new file mode 100644 index 0000000..3cf4fa6 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/DutyRecProcessConstant.java @@ -0,0 +1,54 @@ +package org.springblade.hzinfo_inspect.duty.utils; + +public interface DutyRecProcessConstant { + + /** + * 交接班流程标识 + */ + String DUTY_REC_FLOW_KEY = "duty_rec"; + + /** + * 交班申请 + */ + String TASK_VARIABLE_HAND_USER = "handUser"; + + + /** + * 接班确认 + */ + String TASK_VARIABLE_CARRY_USER = "carryUser"; + + /** + * 交接班工作流表 + */ + String DUTY_REC_PROCESS_TABLE = "hz_ims_duty_rec"; + + + /** + * 下一个流程是结束 + */ + String FINISH_IS_NEXT = "finishIsNext"; + + + String REC_STATUS_ = ""; + + + + + String INSPECT_PANL_TYPE = "0";//计划模式 + String INSPECT_PANL_METHOD = "0";//抢占模式 + String INSPECT_PANL_AUTO_VIDEO = "0";//普通巡检 + String INSPECT_PANL_AUTO_CYCLE = "0";//计划周期 + int INSPECT_PANL_TASK_TIMES_A_DAY = 1;//一天任务次数 + int INSPECT_PANL_START_REMIND = 1;//开始前提醒(分钟) + int INSPECT_PANL_END_REMIND = 1;//结束前提醒(分钟) + + + /** + * 消息业务分类 日常提醒 + */ + String MESSAGE_CLASS_DAY = "messageClassify"; + + + String MESSAGE_CLASS_TYPE_DUTY_REC = "5"; +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/ExcelMergeHandler.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/ExcelMergeHandler.java new file mode 100644 index 0000000..ef55809 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/ExcelMergeHandler.java @@ -0,0 +1,87 @@ +package org.springblade.hzinfo_inspect.duty.utils; + +import com.alibaba.excel.metadata.Head; +import com.alibaba.excel.write.handler.CellWriteHandler; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.util.CellRangeAddress; + +import java.util.List; + +/** + * 合并相同内容的单元格处理类 + * @author tanghaihao + * @date 2023年06月12日 16:43 + */ +public class ExcelMergeHandler implements CellWriteHandler { + private int[] mergeColumnIndex; + private int mergeRowIndex; + + public ExcelMergeHandler() { + } + + /** + * + * @param mergeRowIndex 从第几行后开始合并,行数从1开始 + * @param mergeColumnIndex 需要合并的列,数组类型可以选择多列,列数从0开始 + */ + public ExcelMergeHandler(int mergeRowIndex, int[] mergeColumnIndex) { + this.mergeRowIndex = mergeRowIndex; + this.mergeColumnIndex = mergeColumnIndex; + } + + @Override + public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) { + + } + + @Override + public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + + } + + + + /** + * 当前单元格向上合并 + * + * @param writeSheetHolder + * @param cell 当前单元格 + * @param curRowIndex 当前行 + * @param curColIndex 当前列 + */ + private void mergeWithPrevRow(WriteSheetHolder writeSheetHolder, Cell cell, int curRowIndex, int curColIndex) { + Object curData = cell.getCellTypeEnum() == CellType.STRING ? cell.getStringCellValue() : cell.getNumericCellValue(); + Cell preCell = cell.getSheet().getRow(curRowIndex - 1).getCell(curColIndex); + Object preData = preCell.getCellTypeEnum() == CellType.STRING ? preCell.getStringCellValue() : preCell.getNumericCellValue(); + // 将当前单元格数据与上一个单元格数据比较 + Boolean dataBool = preData.equals(curData); + String s1 = cell.getRow().getCell(0).getStringCellValue(); + String s2 = cell.getSheet().getRow(curRowIndex - 1).getCell(0).getStringCellValue(); + Boolean bool = s1.compareTo(s2) == 0 ? true:false; + if (dataBool && bool) { + Sheet sheet = writeSheetHolder.getSheet(); + List mergeRegions = sheet.getMergedRegions(); + boolean isMerged = false; + for (int i = 0; i < mergeRegions.size() && !isMerged; i++) { + CellRangeAddress cellRangeAddr = mergeRegions.get(i); + // 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元 + if (cellRangeAddr.isInRange(curRowIndex - 1, curColIndex)) { + sheet.removeMergedRegion(i); + cellRangeAddr.setLastRow(curRowIndex); + sheet.addMergedRegion(cellRangeAddr); + isMerged = true; + } + } + // 若上一个单元格未被合并,则新增合并单元 + if (!isMerged) { + CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, curColIndex); + sheet.addMergedRegion(cellRangeAddress); + } + } + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/ExcelTool.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/ExcelTool.java new file mode 100644 index 0000000..6f1916b --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/ExcelTool.java @@ -0,0 +1,27 @@ +package org.springblade.hzinfo_inspect.duty.utils; + +import org.apache.poi.ss.SpreadsheetVersion; + +import java.lang.reflect.Field; + +/** + * 设置Excel导出的最大字符数 + * @author tanghaihao + * @date 2023年08月18日 16:40 + */ +public class ExcelTool { + + public static void resetCellMaxTextLength() { + SpreadsheetVersion excel2007 = SpreadsheetVersion.EXCEL2007; + if (Integer.MAX_VALUE != excel2007.getMaxTextLength()) { + Field field; + try { + field = excel2007.getClass().getDeclaredField("_maxTextLength"); + field.setAccessible(true); + field.set(excel2007, Integer.MAX_VALUE); + } catch (Exception e) { + e.printStackTrace(); + } + } + } +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/ThreadTask.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/ThreadTask.java new file mode 100644 index 0000000..05a6228 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/utils/ThreadTask.java @@ -0,0 +1,97 @@ +package org.springblade.hzinfo_inspect.duty.utils; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyMainPersonEntity; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainPersonService; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyMainService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import java.util.List; + +/** + * 线程任务 + */ +@Slf4j +@Service +public class ThreadTask { + + @Autowired + private IImsDutyMainService iImsDutyMainService; + @Autowired + private IImsDutyMainPersonService iImsDutyMainPersonService; + + + + //排班 + public static void dutyTask(List list, String date, String proDutyMainId, Long dept, Long classTypeId) { + try { + Runnable runnable = new Runnable() { + @Override + public void run() { + //异步任务 + saveBaschTask(list,date,proDutyMainId,dept,classTypeId); + } + }; + Thread thread = new Thread(runnable); + thread.start(); + } catch (Exception e) { + log.error(e.getMessage(), e.toString()); + } + } + public static void dutyTask(List list, List personEntityList, String date, String proDutyMainId, Long dept, Long classTypeId) { + try { + Runnable runnable = new Runnable() { + @Override + public void run() { + //异步任务 + saveBaschTask(list,personEntityList,date,proDutyMainId,dept,classTypeId); + } + }; + Thread thread = new Thread(runnable); + thread.start(); + } catch (Exception e) { + log.error(e.getMessage(), e.toString()); + } + } + // 声明对象 + public static ThreadTask threadTask; + + @PostConstruct // 初始化 + public void init(){ + threadTask = this; + threadTask.iImsDutyMainService = this.iImsDutyMainService; + } + + /** + * 批量添加排班数据 + * + * @param list + */ + private static void saveBaschTask(List list,String date,String proDutyMainId,Long dept,Long classTypeId) { + threadTask.iImsDutyMainService.doSaveBasch(list); + ImsDutyMainEntity entity = new ImsDutyMainEntity(); + entity.setPreDutyId(Long.valueOf(proDutyMainId)); + String subDate = DateUtils.dayStringDate(date, 1, true); + + threadTask.iImsDutyMainService.update(entity, new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getDutyDate, subDate).eq(ImsDutyMainEntity::getCreateDept, dept).orderByAsc(ImsDutyMainEntity::getId).last(" LIMIT 1"); + }}); + + } + private static void saveBaschTask(List list,List personEntityList,String date,String proDutyMainId,Long dept,Long classTypeId) { + threadTask.iImsDutyMainService.doSaveBasch(list); + threadTask.iImsDutyMainPersonService.doSaveBasch(personEntityList); + ImsDutyMainEntity entity = new ImsDutyMainEntity(); + entity.setPreDutyId(Long.valueOf(proDutyMainId)); + String subDate = DateUtils.dayStringDate(date, 1, true); + + threadTask.iImsDutyMainService.update(entity, new LambdaQueryWrapper() {{ + eq(ImsDutyMainEntity::getDutyDate, subDate).eq(ImsDutyMainEntity::getCreateDept, dept).orderByAsc(ImsDutyMainEntity::getId).last(" LIMIT 1"); + }}); + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/wrapper/ImsDutyChangeWrapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/wrapper/ImsDutyChangeWrapper.java new file mode 100644 index 0000000..b696fe0 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/wrapper/ImsDutyChangeWrapper.java @@ -0,0 +1,50 @@ +package org.springblade.hzinfo_inspect.duty.wrapper; + + +import org.springblade.core.mp.support.BaseEntityWrapper; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.core.tool.utils.SpringUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyChangeEntity; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyClassEntity; +import org.springblade.hzinfo_inspect.duty.enums.DutyStatus; +import org.springblade.hzinfo_inspect.duty.mapper.ImsDutyMainMapper; +import org.springblade.hzinfo_inspect.duty.service.IImsDutyClassService; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyChangeVO; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Optional; + +/** + * 包装类,返回视图层所需的字段 + * + * @author Chill + */ +public class ImsDutyChangeWrapper extends BaseEntityWrapper { + private static IImsDutyClassService classService ; + @Autowired + private static ImsDutyMainMapper imsDutyMainMapper; + + public static ImsDutyChangeWrapper build() { + if(classService == null){ + classService = SpringUtil.getBean(IImsDutyClassService.class); + } + return new ImsDutyChangeWrapper(); + } + + @Override + public ImsDutyChangeVO entityVO(ImsDutyChangeEntity entity) { + if(Func.isEmpty(entity)){ + return null; + } + ImsDutyChangeVO vo = BeanUtil.copy(entity, ImsDutyChangeVO.class); + //vo.setManagerName(entity.getManager() == null ? null : UserCache.getUser(entity.getManager()).getName()); + vo.setStatusName(DutyStatus.getDutyStatus(entity.getStatus()).getName()); + Optional optional = Optional.ofNullable(classService.getById(entity.getClassId())); + if(optional.isPresent()){ + vo.setClassName(optional.get().getClassName()); + } + return vo; + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/wrapper/ImsDutyGroupWrapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/wrapper/ImsDutyGroupWrapper.java new file mode 100644 index 0000000..29c3d63 --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/wrapper/ImsDutyGroupWrapper.java @@ -0,0 +1,20 @@ +package org.springblade.hzinfo_inspect.duty.wrapper; + +import org.springblade.core.mp.support.BaseEntityWrapper; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyGroupEntity; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyGroupVO; + +public class ImsDutyGroupWrapper extends BaseEntityWrapper { + + public static ImsDutyGroupWrapper build() { + return new ImsDutyGroupWrapper(); + } + + @Override + public ImsDutyGroupVO entityVO(ImsDutyGroupEntity ims_duty_group) { + ImsDutyGroupVO ims_duty_groupVO = BeanUtil.copy(ims_duty_group, ImsDutyGroupVO.class); + return ims_duty_groupVO; + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/wrapper/ImsDutyRecWrapper.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/wrapper/ImsDutyRecWrapper.java new file mode 100644 index 0000000..e3cff1d --- /dev/null +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/duty/wrapper/ImsDutyRecWrapper.java @@ -0,0 +1,25 @@ +package org.springblade.hzinfo_inspect.duty.wrapper; + +import org.springblade.core.mp.support.BaseEntityWrapper; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.hzinfo_inspect.duty.entity.ImsDutyRecEntity; +import org.springblade.hzinfo_inspect.duty.vo.ImsDutyRecVO; + +/** + * 包装类,返回视图层所需的字段 + * + * @author Chill + */ +public class ImsDutyRecWrapper extends BaseEntityWrapper { + + public static ImsDutyRecWrapper build() { + return new ImsDutyRecWrapper(); + } + + @Override + public ImsDutyRecVO entityVO(ImsDutyRecEntity ims_duty_rec) { + ImsDutyRecVO ims_duty_recVO = BeanUtil.copy(ims_duty_rec, ImsDutyRecVO.class); + return ims_duty_recVO; + } + +} diff --git a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/report/entity/InspectMonthReportExcel.java b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/report/entity/InspectMonthReportExcel.java index 5e44bdc..b716abd 100644 --- a/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/report/entity/InspectMonthReportExcel.java +++ b/HZInfo-RIS-PXHD/hzinfo-ris-pxhd-service/hzinfo-inspect-service/src/main/java/org/springblade/hzinfo_inspect/report/entity/InspectMonthReportExcel.java @@ -2,6 +2,8 @@ package org.springblade.hzinfo_inspect.report.entity; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.*; +import com.alibaba.excel.enums.BooleanEnum; +import com.alibaba.excel.enums.poi.FillPatternTypeEnum; import io.swagger.annotations.ApiModel; import lombok.Data; import org.apache.poi.ss.usermodel.FillPatternType; @@ -13,11 +15,11 @@ import java.util.Date; */ @ApiModel(value = "巡检月报-Excel-导出") @Data -@HeadStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 22) +@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 22) @HeadRowHeight(45) @ColumnWidth(20) @ContentRowHeight(80) -@ContentStyle(wrapped = true) +@ContentStyle(wrapped = BooleanEnum.TRUE) public class InspectMonthReportExcel { @ExcelProperty(value = "用户名称", index = 0)