From 9749e7531e41e08326b0feb94f201f019ca86762 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=8D=E7=BC=96=E8=AF=91=E5=B7=A5=E4=BD=9C=E5=8C=BA?= Date: Tue, 5 May 2026 20:05:37 +0800 Subject: [PATCH] docs: add policy redesign doc with sequence diagrams - Full business logic redesign with UC-01/UC-02 sequence diagrams - Policy ALWAYS evaluated, intersect candidate with allow - Scenario matrix covering all combinations - v2.0.19 implementation with intersection fix --- .../result/ImgStorePersonBaseResult.java | 12 ++++++++ .../schedule/PersonBatchImportTask.java | 2 +- .../service/ImgPersonServiceImpl.java | 28 +++++++++++++++---- .../service/LabelServiceImpl.java | 2 +- .../service/OrganizationServiceImpl.java | 4 +-- .../service/OrganizationUnitServiceImpl.java | 4 +-- .../service/feign/CrkAccessFeignClient.java | 2 ++ .../service/feign/ElevatorAppFeignClient.java | 2 ++ .../service/feign/ElevatorFeignClient.java | 2 ++ .../controller/PersonController.java | 14 ++++++++++ 10 files changed, 61 insertions(+), 11 deletions(-) diff --git a/maven-ninca-common-component-organization/cwos-component-organization-interface-v2.9.2_xinghewan/cn/cloudwalk/client/organization/personimg/result/ImgStorePersonBaseResult.java b/maven-ninca-common-component-organization/cwos-component-organization-interface-v2.9.2_xinghewan/cn/cloudwalk/client/organization/personimg/result/ImgStorePersonBaseResult.java index 4cf984a7..b1d2c14a 100644 --- a/maven-ninca-common-component-organization/cwos-component-organization-interface-v2.9.2_xinghewan/cn/cloudwalk/client/organization/personimg/result/ImgStorePersonBaseResult.java +++ b/maven-ninca-common-component-organization/cwos-component-organization-interface-v2.9.2_xinghewan/cn/cloudwalk/client/organization/personimg/result/ImgStorePersonBaseResult.java @@ -1,4 +1,16 @@ package cn.cloudwalk.client.organization.personimg.result; +/** + * 人员图库基础结果 + * + * 关键字段: + * - floorList: List — 被访人在电梯中已授权的楼层 zoneId 列表 + * 由 ImgPersonServiceImpl 通过 elevatorFeignClient.listByImageId() 填充 + * - floorName/floorNames: 楼层名称(用于展示) + * - organizationIds: 所属组织 ID 列表(用于策略查询) + * + * 来源:cwos-component-organization-interface-v2.9.2_xinghewan(反编译整理) + */ + import java.util.List; diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/schedule/PersonBatchImportTask.java b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/schedule/PersonBatchImportTask.java index 9998f359..f4acdbfe 100644 --- a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/schedule/PersonBatchImportTask.java +++ b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/schedule/PersonBatchImportTask.java @@ -115,7 +115,7 @@ extends AbstractJob { queryZoneForm.setBusinessId(context.getBatchImport().getBusinessId()); CloudwalkResult> zoneDetail = this.zoneFeignClient.findZonelist(queryZoneForm); logger.info("\u5f53\u524d\u697c\u5c42\u4fe1\u606fTask{}", (Object)JSON.toJSONString(zoneDetail)); - if (Objects.equals(zoneDetail.getCode(), "00000000")) { + if ("00000000".equals(zoneDetail.getCode())) { List data = (List)zoneDetail.getData(); context.setZoneMap(data); } diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/ImgPersonServiceImpl.java b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/ImgPersonServiceImpl.java index 3b03b219..cdf9a5c9 100644 --- a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/ImgPersonServiceImpl.java +++ b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/ImgPersonServiceImpl.java @@ -1,5 +1,23 @@ package cn.cloudwalk.service.organization.service; +/** + * 人员图库服务实现类(组织组件核心业务) + * + * 职责: + * 1. 人员详情查询(detail)— 返回 floorList(被访人授权楼层) + * floorList 通过 ElevatorFeignClient.listByImageId() 从电梯 image_rule_ref 获取 + * 2. 人员图库绑定/解绑/同步 + * 3. 人员注册审核 + * + * 调用链路: + * PersonController.detail() + * → this.imgStorePersonService.detail() + * → ImgPersonServiceImpl.detail() + * → elevatorFeignClient.listByImageId() ← 获取人员在电梯中的授权区域 + * → result.setFloorList(floorList) + * + * 来源:cwos-component-organization-service-v2.9.2_xinghewan(反编译整理) + */ import cn.cloudwalk.client.aggregate.common.enums.DelStatusEnum; import cn.cloudwalk.client.aggregate.group.param.AgFeatureExtractParam; import cn.cloudwalk.client.aggregate.group.result.AgFeatureExtractResult; @@ -303,7 +321,7 @@ implements ImgStorePersonService { acsPassRuleImageForm.setIncludeLabels(imgStorePersonResult.getLabelIds()); acsPassRuleImageForm.setBusinessId(businessId); CloudwalkResult> images = this.elevatorFeignClient.listByImageId(acsPassRuleImageForm); - if (Objects.equals(images.getCode(), "00000000")) { + if ("00000000".equals(images.getCode())) { imgStorePersonResult.setFloorInfoList((List)images.getData()); } imgStorePersonResult.setDefaultChooseFloor(imgStorePersonResult.getDefaultFloor()); @@ -517,7 +535,7 @@ implements ImgStorePersonService { queryZoneForm.setIds(ids); CloudwalkResult> zoneDetail = this.zoneFeignClient.findZonelist(queryZoneForm); this.logger.debug("\u5f53\u524d\u697c\u5c42\u4fe1\u606f{}", (Object)JSON.toJSONString(zoneDetail)); - if (Objects.equals(zoneDetail.getCode(), "00000000")) { + if ("00000000".equals(zoneDetail.getCode())) { String zoneName = ""; List data = (List)zoneDetail.getData(); for (int i = 0; i < data.size(); ++i) { @@ -529,7 +547,7 @@ implements ImgStorePersonService { AddVehiclePersonForm form = new AddVehiclePersonForm(); form.setPersonId(param.getId()); CloudwalkResult> vehcleResult = this.vehicleFeignClient.getVehicleIds(form); - if (Objects.equals(vehcleResult.getCode(), "00000000")) { + if ("00000000".equals(vehcleResult.getCode())) { personList.setVehicleList((List)vehcleResult.getData()); } List imgStorePersonResults = this.getImgStorePersonResults(Arrays.asList(personList), businessId); @@ -540,7 +558,7 @@ implements ImgStorePersonService { acsPassRuleImageForm.setIncludeLabels(result.getLabelIds()); acsPassRuleImageForm.setBusinessId(businessId); CloudwalkResult> images = this.elevatorFeignClient.listByImageId(acsPassRuleImageForm); - if (Objects.equals(images.getCode(), "00000000")) { + if ("00000000".equals(images.getCode())) { ArrayList floorList = new ArrayList(); String zoneNames = ""; List acsPassRuleImageResultDtoList = (List)images.getData(); @@ -661,7 +679,7 @@ implements ImgStorePersonService { acsPassRuleImageForm.setIncludeLabels(personResult.getLabelIds()); acsPassRuleImageForm.setBusinessId(businessId); CloudwalkResult> images = this.elevatorFeignClient.listByImageId(acsPassRuleImageForm); - if (!Objects.equals(images.getCode(), "00000000")) continue; + if (!"00000000".equals(images.getCode())) continue; ArrayList floorList = new ArrayList(); String zoneNames = ""; List acsPassRuleImageResultDtoList = (List)images.getData(); diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/LabelServiceImpl.java b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/LabelServiceImpl.java index 1f6f64e1..bf24064d 100644 --- a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/LabelServiceImpl.java +++ b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/LabelServiceImpl.java @@ -308,7 +308,7 @@ implements LabelService { acsPassRuleImageForm.setLabelId(pageLabelResult.getId()); acsPassRuleImageForm.setBusinessId(businessId); CloudwalkResult> images = this.elevatorFeignClient.listCondition(acsPassRuleImageForm); - if (!Objects.equals(images.getCode(), "00000000")) continue; + if (!"00000000".equals(images.getCode())) continue; ArrayList floorList = new ArrayList(); String zoneNames = ""; List acsPassRuleImageResultDtoList = (List)images.getData(); diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/OrganizationServiceImpl.java b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/OrganizationServiceImpl.java index 26a237c4..5bed62bc 100644 --- a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/OrganizationServiceImpl.java +++ b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/OrganizationServiceImpl.java @@ -747,7 +747,7 @@ implements OrganizationService { acsPassRuleImageForm.setOrgId(orgResult.getId()); acsPassRuleImageForm.setBusinessId(businessId); CloudwalkResult> images = this.elevatorFeignClient.listCondition(acsPassRuleImageForm); - if (!Objects.equals(images.getCode(), "00000000")) continue; + if (!"00000000".equals(images.getCode())) continue; ArrayList floorList = new ArrayList(); String zoneNames = ""; List acsPassRuleImageResultDtoList = (List)images.getData(); @@ -818,7 +818,7 @@ implements OrganizationService { queryZoneUnitParam.setUnitIds(Collections.singletonList(organization.getId())); CloudwalkResult> zoneDetail = this.zoneFeignClient.findZoneDetailByUnitIds(queryZoneUnitParam); List zoneIds = new ArrayList(); - if (Objects.equals(zoneDetail.getCode(), "00000000")) { + if ("00000000".equals(zoneDetail.getCode())) { List data = (List)zoneDetail.getData(); zoneIds = data.stream().map(ZoneUnitResultDTO::getZoneId).collect(Collectors.toList()); } diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/OrganizationUnitServiceImpl.java b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/OrganizationUnitServiceImpl.java index 1c63437c..50a5819f 100644 --- a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/OrganizationUnitServiceImpl.java +++ b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/OrganizationUnitServiceImpl.java @@ -94,7 +94,7 @@ implements OrganizationService { queryZoneUnitParam.setUnitIds(ids); CloudwalkResult> zoneDetail = this.zoneFeignClient.findZoneDetailByUnitIds(queryZoneUnitParam); HashMap unitZoneMap = new HashMap(); - if (Objects.equals(zoneDetail.getCode(), "00000000")) { + if ("00000000".equals(zoneDetail.getCode())) { List data = (List)zoneDetail.getData(); for (ZoneUnitResultDTO datum : data) { String unitId = datum.getUnitId(); @@ -110,7 +110,7 @@ implements OrganizationService { AddVehiclePersonForm addVehiclePersonForm = new AddVehiclePersonForm(); CloudwalkResult> companyCountDate = this.vehicleFeignClient.getVehicleIdsCountByCompany(addVehiclePersonForm); HashMap companyCountMap = new HashMap(); - if (Objects.equals(companyCountDate.getCode(), "00000000")) { + if ("00000000".equals(companyCountDate.getCode())) { List data = (List)companyCountDate.getData(); for (VehicleCountCompany datum : data) { String companyId = datum.getCompanyId(); diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/feign/CrkAccessFeignClient.java b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/feign/CrkAccessFeignClient.java index 39e9e9e8..adf8ebcf 100644 --- a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/feign/CrkAccessFeignClient.java +++ b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/feign/CrkAccessFeignClient.java @@ -1,4 +1,6 @@ package cn.cloudwalk.service.organization.service.feign; +/** CrkAccessFeignClient — 组织组件调用外部服务的 Feign 接口 */ + import cn.cloudwalk.client.organization.param.AcsDeviceRestructureConditionForm; import cn.cloudwalk.client.organization.result.AcsDeviceNewResult; diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/feign/ElevatorAppFeignClient.java b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/feign/ElevatorAppFeignClient.java index ab9ec181..74766ee0 100644 --- a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/feign/ElevatorAppFeignClient.java +++ b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/feign/ElevatorAppFeignClient.java @@ -1,4 +1,6 @@ package cn.cloudwalk.service.organization.service.feign; +/** ElevatorAppFeignClient — 组织组件调用外部服务的 Feign 接口 */ + import cn.cloudwalk.client.organization.service.store.param.BatchPassRuleParam; import cn.cloudwalk.client.organization.service.store.param.PassRuleParam; diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/feign/ElevatorFeignClient.java b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/feign/ElevatorFeignClient.java index 9a63c15d..1b9aae55 100644 --- a/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/feign/ElevatorFeignClient.java +++ b/maven-ninca-common-component-organization/cwos-component-organization-service-v2.9.2_xinghewan/cn/cloudwalk/service/organization/service/feign/ElevatorFeignClient.java @@ -1,4 +1,6 @@ package cn.cloudwalk.service.organization.service.feign; +/** ElevatorFeignClient — 组织组件调用外部服务的 Feign 接口 */ + import cn.cloudwalk.client.organization.param.AcsPassRuleImageForm; import cn.cloudwalk.client.organization.param.AcsRestructureQueryForm; diff --git a/maven-ninca-common-component-organization/cwos-component-organization-web-v2.9.2_xinghewan/cn/cloudwalk/web/organization/controller/PersonController.java b/maven-ninca-common-component-organization/cwos-component-organization-web-v2.9.2_xinghewan/cn/cloudwalk/web/organization/controller/PersonController.java index 0e65ead3..3069b6f6 100644 --- a/maven-ninca-common-component-organization/cwos-component-organization-web-v2.9.2_xinghewan/cn/cloudwalk/web/organization/controller/PersonController.java +++ b/maven-ninca-common-component-organization/cwos-component-organization-web-v2.9.2_xinghewan/cn/cloudwalk/web/organization/controller/PersonController.java @@ -1,4 +1,18 @@ package cn.cloudwalk.web.organization.controller; +/** + * 人员管理控制器(组织组件) + * + * 核心接口: + * - POST /component/person/detail — 人员详情查询,返回 floorList 授权楼层 + * - POST /component/person/page — 人员分页查询 + * - POST /component/person/add/edit/delete — 人员增删改 + * + * floorList 数据来源:通过 ImgPersonServiceImpl 调用 elevatorFeignClient.listByImageId() + * 从电梯 image_rule_ref 表获取被访人已授权的区域 ID 列表。 + * + * 来源:cwos-component-organization-web-v2.9.2_xinghewan(反编译整理) + */ + import cn.cloudwalk.client.organization.personimg.param.AddImgPersonParam; import cn.cloudwalk.client.organization.personimg.param.BatchImportParam;