From 83c3050ef2ca8ac0ade0487a293b093b2fd59073 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: Wed, 6 May 2026 00:01:00 +0800 Subject: [PATCH] fix: delete 7 orphan files + P0-P3 fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Orphan analysis: 134 files → 5+2 orphan files identified and removed: - CpImageStoreServiceImpl, SelfRegistryHandler, AreaTypeServiceImpl - ImgPersonBatchServiceImpl, ImgPersonBatchDetailServiceImpl - OrganizationTypeServiceImpl, CpDeviceImagePersonServiceImpl All 7 have NO callers in module or elevator app. P0-P3 verified clean: - CpOrgDevieKitServiceImpl (54→0) - CpImageStorePersonValidateManager (36→0) - OrganizationServiceImpl (32→0) - CpImageStorePersonSynManager (38→10) Remaining: 200 errors in service module (CFR systemic generic loss). Interface + Data modules: BUILD SUCCESS. --- .../service/AreaTypeServiceImpl.java | 392 --------- .../CpDeviceImagePersonServiceImpl.java | 574 ------------- .../service/CpImageStorePersonManager.java | 4 +- .../service/CpImageStoreServiceImpl.java | 771 ------------------ .../ImgPersonBatchDetailServiceImpl.java | 57 -- .../service/ImgPersonBatchServiceImpl.java | 535 ------------ .../service/ImgPersonManager.java | 2 +- .../service/OrganizationTypeServiceImpl.java | 463 ----------- .../service/SelfRegistryHandler.java | 255 ------ .../common/AbstractImagStoreService.class | Bin 0 -> 6443 bytes .../service/OrganizationServiceImpl.class | Bin 0 -> 58235 bytes .../service/feign/CrkAccessFeignClient.class | Bin 0 -> 1021 bytes .../service/feign/ElevatorFeignClient.class | Bin 0 -> 1386 bytes .../compile/default-compile/createdFiles.lst | 4 + .../compile/default-compile/inputFiles.lst | 19 +- 15 files changed, 19 insertions(+), 3057 deletions(-) delete mode 100644 maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/AreaTypeServiceImpl.java delete mode 100644 maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/CpDeviceImagePersonServiceImpl.java delete mode 100644 maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/CpImageStoreServiceImpl.java delete mode 100644 maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/ImgPersonBatchDetailServiceImpl.java delete mode 100644 maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/ImgPersonBatchServiceImpl.java delete mode 100644 maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/OrganizationTypeServiceImpl.java delete mode 100644 maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/SelfRegistryHandler.java create mode 100644 maven-ninca-common-component-organization/cwos-component-organization-service/target/classes/cn/cloudwalk/service/organization/common/AbstractImagStoreService.class create mode 100644 maven-ninca-common-component-organization/cwos-component-organization-service/target/classes/cn/cloudwalk/service/organization/service/OrganizationServiceImpl.class create mode 100644 maven-ninca-common-component-organization/cwos-component-organization-service/target/classes/cn/cloudwalk/service/organization/service/feign/CrkAccessFeignClient.class create mode 100644 maven-ninca-common-component-organization/cwos-component-organization-service/target/classes/cn/cloudwalk/service/organization/service/feign/ElevatorFeignClient.class diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/AreaTypeServiceImpl.java b/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/AreaTypeServiceImpl.java deleted file mode 100644 index 7dc51ce3..00000000 --- a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/AreaTypeServiceImpl.java +++ /dev/null @@ -1,392 +0,0 @@ -package cn.cloudwalk.service.organization.service; -// 业务服务 -import cn.cloudwalk.client.organization.common.enums.AreaTypeCodeEnum; -import cn.cloudwalk.client.organization.param.AddAreaTypeParam; -import cn.cloudwalk.client.organization.param.AreaTypePropertyParam; -import cn.cloudwalk.client.organization.param.DelAreaTypeParam; -import cn.cloudwalk.client.organization.param.EditAreaTypeParam; -import cn.cloudwalk.client.organization.param.QueryAreaTypeParam; -import cn.cloudwalk.client.organization.result.AreaTypeListResult; -import cn.cloudwalk.client.organization.result.AreaTypeResult; -import cn.cloudwalk.client.organization.service.AreaTypeService; -import cn.cloudwalk.cloud.annotation.CloudwalkParamsValidate; -import cn.cloudwalk.cloud.context.CloudwalkCallContext; -import cn.cloudwalk.cloud.exception.ServiceException; -import cn.cloudwalk.cloud.page.CloudwalkPageAble; -import cn.cloudwalk.cloud.page.CloudwalkPageInfo; -import cn.cloudwalk.cloud.result.CloudwalkResult; -import cn.cloudwalk.cloud.utils.BeanCopyUtils; -import cn.cloudwalk.cloud.utils.CloudwalkDateUtils; -import cn.cloudwalk.data.organization.dto.AreaTypeQueryDTO; -import cn.cloudwalk.data.organization.dto.GetsAreaDTO; -import cn.cloudwalk.data.organization.entity.Area; -import cn.cloudwalk.data.organization.entity.AreaType; -import cn.cloudwalk.data.organization.entity.AreaTypeProperties; -import cn.cloudwalk.data.organization.mapper.ImgStoreAreaMapper; -import cn.cloudwalk.data.organization.mapper.ImgStoreAreaTypeMapper; -import cn.cloudwalk.data.organization.mapper.ImgStoreAreaTypePropertiesMapper; -import cn.cloudwalk.service.organization.common.AbstractImagStoreService; -import com.github.pagehelper.Page; -import com.github.pagehelper.PageHelper; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import javax.annotation.Resource; -import org.springframework.context.annotation.Primary; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; - -@Primary -@Service -public class AreaTypeServiceImpl -extends AbstractImagStoreService -implements AreaTypeService { - @Resource - private ImgStoreAreaMapper areaMapper; - @Resource - private ImgStoreAreaTypeMapper areaTypeMapper; - @Resource - private ImgStoreAreaTypePropertiesMapper areaTypePropertiesMapper; - private static final String EXT = "ext"; - - @Transactional(rollbackFor={Exception.class}) - @CloudwalkParamsValidate - public CloudwalkResult add(AddAreaTypeParam param, CloudwalkCallContext context) throws ServiceException { - String businessId = StringUtils.isEmpty((Object)param.getBusinessId()) ? context.getCompany().getCompanyId() : param.getBusinessId(); - if (businessId.equals("cloudwalk")) { - throw new ServiceException("53003818", this.getMessage("53003818")); - } - HashSet nameMap = new HashSet(); - List properties = param.getProperties(); - for (AreaTypePropertyParam propertyParam : properties) { - nameMap.add(propertyParam.getName()); - } - if (nameMap.size() < properties.size()) { - throw new ServiceException("53003805", this.getMessage("53003805")); - } - AreaTypeQueryDTO areaTypeQueryDTO = (AreaTypeQueryDTO)BeanCopyUtils.copyProperties((Object)param, AreaTypeQueryDTO.class); - areaTypeQueryDTO.setStatus(Integer.valueOf(0)); - areaTypeQueryDTO.setBusinessId(businessId); - List select = this.areaTypeMapper.selectByCondition(areaTypeQueryDTO); - if (!CollectionUtils.isEmpty((Collection)select)) { - throw new ServiceException("53004803", this.getMessage("53004803")); - } - AreaType areaType = (AreaType)BeanCopyUtils.copyProperties((Object)param, AreaType.class); - String uuid = CloudwalkDateUtils.getUUID(); - areaType.setId(uuid); - areaType.setBusinessId(businessId); - areaType.setCreateTime(Long.valueOf(System.currentTimeMillis())); - areaType.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - areaType.setCreateUserId(context.getUser().getCaller()); - areaType.setLastUpdateUserId(context.getUser().getCaller()); - this.areaTypeMapper.insertSelective(areaType); - int index = 1; - if (!CollectionUtils.isEmpty((Collection)properties)) { - for (AreaTypePropertyParam propertyParam : properties) { - AreaTypeProperties property = (AreaTypeProperties)BeanCopyUtils.copyProperties((Object)propertyParam, AreaTypeProperties.class); - property.setId(CloudwalkDateUtils.getUUID()); - property.setBusinessId(businessId); - property.setAreaTypeId(uuid); - property.setCreateTime(Long.valueOf(System.currentTimeMillis())); - property.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - property.setCreateUserId(context.getUser().getCaller()); - property.setLastUpdateUserId(context.getUser().getCaller()); - property.setCode(EXT + index++); - this.areaTypePropertiesMapper.insertSelective(property); - } - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - @Transactional(rollbackFor={Exception.class}) - @CloudwalkParamsValidate - public CloudwalkResult edit(EditAreaTypeParam param, CloudwalkCallContext context) throws ServiceException { - block18: { - List typePropertiesDB; - boolean hasOrganization; - List properties; - String businessId; - block19: { - businessId = StringUtils.isEmpty((Object)param.getBusinessId()) ? context.getCompany().getCompanyId() : param.getBusinessId(); - if (businessId.equals("cloudwalk")) { - throw new ServiceException("53003818", this.getMessage("53003818")); - } - HashSet nameMap = new HashSet(); - properties = param.getProperties(); - for (AreaTypePropertyParam propertyParam : properties) { - nameMap.add(propertyParam.getName()); - } - if (nameMap.size() < properties.size()) { - throw new ServiceException("53003805", this.getMessage("53003805")); - } - AreaTypeQueryDTO areaTypeQuery = new AreaTypeQueryDTO(); - areaTypeQuery.setName(param.getName()); - areaTypeQuery.setStatus(Integer.valueOf(0)); - areaTypeQuery.setBusinessId(businessId); - List select = this.areaTypeMapper.selectByCondition(areaTypeQuery); - if (!CollectionUtils.isEmpty((Collection)select)) { - for (AreaType type : select) { - if (type.getId().equals(param.getId())) continue; - throw new ServiceException("53004803", this.getMessage("53004803")); - } - } - hasOrganization = false; - boolean hasChildren = false; - GetsAreaDTO areaDTO = new GetsAreaDTO(); - areaDTO.setTypeId(param.getId()); - areaDTO.setIsDel(Short.valueOf((short)0)); - List areas = this.areaMapper.gets(areaDTO); - if (!CollectionUtils.isEmpty((Collection)areas)) { - hasOrganization = true; - ArrayList parentIds = new ArrayList(); - for (Area area : areas) { - parentIds.add(area.getId()); - } - areaDTO = new GetsAreaDTO(); - areaDTO.setIsDel(Short.valueOf((short)0)); - areaDTO.setParentIds(parentIds); - List childrens = this.areaMapper.gets(areaDTO); - if (childrens != null && childrens.size() > 0) { - hasChildren = true; - } - } - if (param.getHasLowerLevel() == 0 && hasChildren) { - throw new ServiceException("53004813", this.getMessage("53004813")); - } - AreaType areaType = (AreaType)BeanCopyUtils.copyProperties((Object)areaTypeQuery, AreaType.class); - areaType.setId(param.getId()); - areaType.setHasLowerLevel(param.getHasLowerLevel()); - areaType.setLastUpdateUserId(context.getUser().getCaller()); - areaType.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - this.areaTypeMapper.updateByPrimaryKeySelective(areaType); - AreaTypeProperties proQuery = new AreaTypeProperties(); - proQuery.setAreaTypeId(param.getId()); - typePropertiesDB = this.areaTypePropertiesMapper.select(proQuery); - if (properties == null) break block18; - if (!CollectionUtils.isEmpty((Collection)typePropertiesDB)) break block19; - int index = 1; - for (AreaTypePropertyParam propertyParam : properties) { - AreaTypeProperties property = (AreaTypeProperties)BeanCopyUtils.copyProperties((Object)propertyParam, AreaTypeProperties.class); - property.setId(CloudwalkDateUtils.getUUID()); - property.setBusinessId(businessId); - property.setAreaTypeId(param.getId()); - property.setCreateTime(Long.valueOf(System.currentTimeMillis())); - property.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - property.setCreateUserId(context.getUser().getCaller()); - property.setLastUpdateUserId(context.getUser().getCaller()); - property.setCode(EXT + index++); - property.setStatus(Integer.valueOf(0)); - this.areaTypePropertiesMapper.insertSelective(property); - } - break block18; - } - HashMap DBMap = new HashMap(); - HashSet codeSet = new HashSet(); - for (AreaTypeProperties areaTypeProperties : typePropertiesDB) { - String code = areaTypeProperties.getCode(); - codeSet.add(code); - DBMap.put(areaTypeProperties.getId(), areaTypeProperties); - } - List newList = BeanCopyUtils.copy((Collection)properties, AreaTypeProperties.class); - ArrayList newListCopy = new ArrayList(newList); - newListCopy.retainAll(typePropertiesDB); - if (!CollectionUtils.isEmpty(newListCopy)) { - for (AreaTypeProperties areaTypeProperties : newListCopy) { - Integer hasRequired; - if (hasOrganization && areaTypeProperties.getHasRequired() == 1 && (hasRequired = ((AreaTypeProperties)DBMap.get(areaTypeProperties.getId())).getHasRequired()) != null && hasRequired == 0) { - throw new ServiceException("53004815", this.getMessage("53004815")); - } - areaTypeProperties.setStatus(Integer.valueOf(0)); - areaTypeProperties.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - areaTypeProperties.setLastUpdateUserId(context.getUser().getCaller()); - this.areaTypePropertiesMapper.updateByPrimaryKeySelective(areaTypeProperties); - } - } - typePropertiesDB.removeAll(newListCopy); - if (!CollectionUtils.isEmpty((Collection)typePropertiesDB)) { - for (AreaTypeProperties areaTypeProperties : typePropertiesDB) { - areaTypeProperties.setStatus(Integer.valueOf(1)); - areaTypeProperties.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - areaTypeProperties.setLastUpdateUserId(context.getUser().getCaller()); - this.areaTypePropertiesMapper.updateByPrimaryKeySelective(areaTypeProperties); - codeSet.remove(areaTypeProperties.getCode()); - String typeId = param.getId(); - String codeProperty = areaTypeProperties.getCode(); - this.areaMapper.removePropertyByTypeIdAndCode(typeId, codeProperty); - } - } - newList.removeAll(newListCopy); - if (CollectionUtils.isEmpty((Collection)newList)) break block18; - for (AreaTypeProperties areaTypeProperties : newList) { - if (areaTypeProperties.getHasRequired() == 1 && hasOrganization) { - throw new ServiceException("53003814", this.getMessage("53003814")); - } - areaTypeProperties.setId(CloudwalkDateUtils.getUUID()); - areaTypeProperties.setBusinessId(businessId); - areaTypeProperties.setAreaTypeId(param.getId()); - areaTypeProperties.setCreateTime(Long.valueOf(System.currentTimeMillis())); - areaTypeProperties.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - areaTypeProperties.setCreateUserId(context.getUser().getCaller()); - areaTypeProperties.setLastUpdateUserId(context.getUser().getCaller()); - areaTypeProperties.setCode(this.getCode(codeSet)); - areaTypeProperties.setStatus(Integer.valueOf(0)); - this.areaTypePropertiesMapper.insertSelective(areaTypeProperties); - } - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - @Transactional(rollbackFor={Exception.class}) - public CloudwalkResult delete(DelAreaTypeParam param, CloudwalkCallContext context) throws ServiceException { - List ids = param.getIds(); - if (!CollectionUtils.isEmpty((Collection)ids)) { - for (String typeId : ids) { - GetsAreaDTO getsAreaDTO = new GetsAreaDTO(); - getsAreaDTO.setTypeId(typeId); - getsAreaDTO.setIsDel(Short.valueOf((short)0)); - List gets = this.areaMapper.gets(getsAreaDTO); - if (CollectionUtils.isEmpty((Collection)gets)) continue; - throw new ServiceException("53004854", this.getMessage("53004854")); - } - for (String id : ids) { - AreaType areaType = this.areaTypeMapper.selectByPrimaryKey(id); - if (areaType == null) { - throw new ServiceException("53015104", this.getMessage("53015104")); - } - areaType.setId(id); - AreaType areaTypeDB = this.areaTypeMapper.selectByPrimaryKey(id); - if ("cloudwalk".equals(areaTypeDB.getBusinessId())) { - throw new ServiceException("53003818", this.getMessage("53003818")); - } - areaType.setStatus(Integer.valueOf(1)); - areaType.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - areaType.setLastUpdateUserId(context.getUser().getCaller()); - this.areaTypeMapper.updateByPrimaryKeySelective(areaType); - AreaTypeProperties record = new AreaTypeProperties(); - record.setAreaTypeId(id); - record.setStatus(Integer.valueOf(1)); - record.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - record.setLastUpdateUserId(context.getUser().getCaller()); - this.areaTypePropertiesMapper.updateByTypeKey(record); - } - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - public CloudwalkResult> page(QueryAreaTypeParam param, CloudwalkPageInfo page, CloudwalkCallContext context) throws ServiceException { - String businessId = context.getCompany().getCompanyId(); - ArrayList results = new ArrayList(); - AreaTypeQueryDTO record = (AreaTypeQueryDTO)BeanCopyUtils.copyProperties((Object)param, AreaTypeQueryDTO.class); - record.setBusinessId(businessId); - record.setStatus(Integer.valueOf(0)); - try { - PageHelper.startPage((int)page.getCurrentPage(), (int)page.getPageSize()); - Page gets = (Page)this.areaTypeMapper.select(record); - List result = gets.getResult(); - Map deletableMap = AreaTypeCodeEnum.deletable((String)AreaTypeCodeEnum.PARK.getGroup()); - for (AreaType areaType : result) { - AreaTypeListResult typeResult = (AreaTypeListResult)BeanCopyUtils.copyProperties((Object)areaType, AreaTypeListResult.class); - typeResult.setDeletable(deletableMap.getOrDefault(areaType.getCode(), 1)); - AreaTypeProperties recordQuery = new AreaTypeProperties(); - recordQuery.setStatus(Integer.valueOf(0)); - recordQuery.setAreaTypeId(areaType.getId()); - List propertiesList = this.areaTypePropertiesMapper.select(recordQuery); - if (!CollectionUtils.isEmpty((Collection)propertiesList)) { - StringBuilder builder = new StringBuilder(); - for (AreaTypeProperties areaTypeProperties : propertiesList) { - builder.append("," + areaTypeProperties.getName()); - } - typeResult.setProperties(builder.substring(1)); - } else { - typeResult.setProperties(""); - } - results.add(typeResult); - } - CloudwalkPageAble pageAble = new CloudwalkPageAble(results, page, gets.getTotal()); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - catch (Exception e) { - this.logger.error("分页查询区域类型信息失败,原因:", e); - throw new ServiceException("53004804", this.getMessage("53004804")); - } - } - - public CloudwalkResult> getList(QueryAreaTypeParam param, CloudwalkCallContext context) throws ServiceException { - List propertiesList; - AreaTypeListResult typeResult; - String businessId = StringUtils.isEmpty((Object)param.getBusinessId()) ? context.getCompany().getCompanyId() : param.getBusinessId(); - ArrayList results = new ArrayList(); - AreaTypeQueryDTO record = (AreaTypeQueryDTO)BeanCopyUtils.copyProperties((Object)param, AreaTypeQueryDTO.class); - record.setBusinessId(businessId); - record.setStatus(Integer.valueOf(0)); - List result = this.areaTypeMapper.select(record); - for (AreaType areaType : result) { - typeResult = (AreaTypeListResult)BeanCopyUtils.copyProperties((Object)areaType, AreaTypeListResult.class); - AreaTypeProperties recordQuery = new AreaTypeProperties(); - recordQuery.setStatus(Integer.valueOf(0)); - recordQuery.setAreaTypeId(areaType.getId()); - propertiesList = this.areaTypePropertiesMapper.select(recordQuery); - if (!CollectionUtils.isEmpty((Collection)propertiesList)) { - StringBuilder builder = new StringBuilder(); - for (AreaTypeProperties areaTypeProperties : propertiesList) { - builder.append("," + areaTypeProperties.getName()); - } - typeResult.setProperties(builder.substring(1)); - } else { - typeResult.setProperties(""); - } - results.add(typeResult); - } - record = new AreaTypeQueryDTO(); - record.setBusinessId("cloudwalk"); - record.setStatus(Integer.valueOf(0)); - record.setHasDefault(Integer.valueOf(1)); - List areaTypes = this.areaTypeMapper.select(record); - if (!CollectionUtils.isEmpty((Collection)areaTypes)) { - for (AreaType areaType : areaTypes) { - typeResult = (AreaTypeListResult)BeanCopyUtils.copyProperties((Object)areaType, AreaTypeListResult.class); - AreaTypeProperties recordQuery = new AreaTypeProperties(); - recordQuery.setStatus(Integer.valueOf(0)); - recordQuery.setAreaTypeId(areaType.getId()); - propertiesList = this.areaTypePropertiesMapper.select(recordQuery); - if (!CollectionUtils.isEmpty((Collection)propertiesList)) { - StringBuilder builder = new StringBuilder(); - for (AreaTypeProperties areaTypeProperties : propertiesList) { - builder.append("," + areaTypeProperties.getName()); - } - typeResult.setProperties(builder.substring(1)); - } - results.add(typeResult); - } - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - public CloudwalkResult detail(QueryAreaTypeParam param, CloudwalkCallContext cloudwalkContext) throws ServiceException { - if (StringUtils.isEmpty((Object)param.getId())) { - throw new ServiceException("53060410", this.getMessage("53060410")); - } - AreaType areaType = this.areaTypeMapper.selectByPrimaryKey(param.getId()); - AreaTypeResult result = (AreaTypeResult)BeanCopyUtils.copyProperties((Object)areaType, AreaTypeResult.class); - AreaTypeProperties proQuery = new AreaTypeProperties(); - proQuery.setAreaTypeId(param.getId()); - List typeProperties = this.areaTypePropertiesMapper.select(proQuery); - result.setProperties(BeanCopyUtils.copy((Collection)typeProperties, AreaTypePropertyParam.class)); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - private String getCode(Set codeSet) { - for (int i = 1; i <= 30; ++i) { - if (!codeSet.add(EXT + i)) continue; - return EXT + i; - } - return null; - } -} - diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/CpDeviceImagePersonServiceImpl.java b/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/CpDeviceImagePersonServiceImpl.java deleted file mode 100644 index 7237cb4e..00000000 --- a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/CpDeviceImagePersonServiceImpl.java +++ /dev/null @@ -1,574 +0,0 @@ -package cn.cloudwalk.service.organization.service; -// 业务服务 -import cn.cloudwalk.client.aggregate.application.param.ApplicationImageStoreQueryParam; -import cn.cloudwalk.client.aggregate.application.result.ApplicationImageStoreQueryResult; -import cn.cloudwalk.client.aggregate.application.service.ApplicationImageStoreService; -import cn.cloudwalk.client.aggregate.common.enums.DelStatusEnum; -import cn.cloudwalk.client.aggregate.group.param.AgImageFeatureQueryParam; -import cn.cloudwalk.client.aggregate.group.result.AgImageFeatureResult; -import cn.cloudwalk.client.aggregate.group.service.AgImageFeatureService; -import cn.cloudwalk.client.organization.common.enums.DeviceAbilityEnum; -import cn.cloudwalk.client.organization.common.enums.SyncStatusEnum; -import cn.cloudwalk.client.organization.param.QueryZoneForm; -import cn.cloudwalk.client.organization.result.ZoneResult; -import cn.cloudwalk.client.organization.service.store.param.BatchPassRuleParam; -import cn.cloudwalk.client.organization.service.store.param.DeviceImagePersonRefQuery; -import cn.cloudwalk.client.organization.service.store.param.DeviceImageUpdateFeatureQuery; -import cn.cloudwalk.client.organization.service.store.param.DeviceImageUpdatePersonQuery; -import cn.cloudwalk.client.organization.service.store.param.PassRuleParam; -import cn.cloudwalk.client.organization.service.store.result.BatchPassRuleResult; -import cn.cloudwalk.client.organization.service.store.result.DeviceImagePersonRefResult; -import cn.cloudwalk.client.organization.service.store.result.DeviceImageUpdateFeautreResult; -import cn.cloudwalk.client.organization.service.store.result.DeviceImageUpdatePersonResult; -import cn.cloudwalk.client.organization.service.store.service.CpDeviceImagePersonService; -import cn.cloudwalk.cloud.context.CloudwalkCallContext; -import cn.cloudwalk.cloud.exception.ServiceException; -import cn.cloudwalk.cloud.page.CloudwalkPageAble; -import cn.cloudwalk.cloud.page.CloudwalkPageInfo; -import cn.cloudwalk.cloud.result.CloudwalkResult; -import cn.cloudwalk.cloud.serial.UUIDSerial; -import cn.cloudwalk.data.organization.dto.DevicePersonSyncLogDTO; -import cn.cloudwalk.data.organization.dto.GroupPersonRefDTO; -import cn.cloudwalk.data.organization.dto.QueryGroupPersonDTO; -import cn.cloudwalk.data.organization.entity.DevicePerson; -import cn.cloudwalk.data.organization.entity.DevicePersonSyncLog; -import cn.cloudwalk.data.organization.entity.GroupPersonRef; -import cn.cloudwalk.data.organization.entity.ImgStorePerson; -import cn.cloudwalk.data.organization.mapper.DevicePersonMapper; -import cn.cloudwalk.data.organization.mapper.DevicePersonSyncLogMapper; -import cn.cloudwalk.data.organization.mapper.GroupPersonRefMapper; -import cn.cloudwalk.data.organization.mapper.ImgStorePersonLabelMapper; -import cn.cloudwalk.data.organization.mapper.ImgStorePersonMapper; -import cn.cloudwalk.data.organization.mapper.ImgStorePersonOrganizationMapper; -import cn.cloudwalk.device.sdk.protocol.entity.v2proto.http.result.UpdatePersonResult; -import cn.cloudwalk.service.organization.common.AbstractImagStoreService; -import cn.cloudwalk.service.organization.common.FileUtil; -import cn.cloudwalk.service.organization.compare.NaturalOrderComparator; -import cn.cloudwalk.service.organization.service.feign.ElevatorAppFeignClient; -import cn.cloudwalk.service.organization.service.feign.ZoneFeignClient; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.github.pagehelper.Page; -import com.github.pagehelper.page.PageMethod; -import com.google.common.collect.Lists; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; -import javax.annotation.Resource; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Service; - -@Service -public class CpDeviceImagePersonServiceImpl -extends AbstractImagStoreService -implements CpDeviceImagePersonService { - private static final String SYNC_LOG_KEY = "lock_sync_log_"; - @Value(value="${cloudwalk.person.sync-log-expire-time:10}") - private long syncLogExpireTime; - @Resource - private GroupPersonRefMapper groupPersonRefMapper; - @Resource - private ImgStorePersonMapper imgStorePersonMapper; - @Autowired - private AgImageFeatureService agImageFeatureService; - @Value(value="${cloudwalk.component.file.urlPrefix}") - private String fileUrlPrefix; - @Value(value="${cloudwalk.component.imagePerson.imagebase64.enable:false}") - private Boolean base64Enable; - @Resource - private ZoneFeignClient zoneFeignClient; - @Resource - private ElevatorAppFeignClient elevatorAppFeignClient; - @Resource - private DevicePersonSyncLogMapper devicePersonSyncLogMapper; - @Resource - private DevicePersonMapper devicePersonMapper; - @Resource - private UUIDSerial uuidSerial; - @Autowired - private StringRedisTemplate redisTemplate; - @Resource - private ImgStorePersonOrganizationMapper imgStorePersonOrganizationMapper; - @Resource - private ImgStorePersonLabelMapper imgStorePersonLabelMapper; - @Resource - private ApplicationImageStoreService appImageStoreService; - - public CloudwalkResult> getImagePersonRefs(DeviceImagePersonRefQuery queryParam, CloudwalkCallContext context) throws ServiceException { - ArrayList deviceImagePersonRefResults = new ArrayList(); - if (StringUtils.isBlank((CharSequence)queryParam.getImageStoreId()) && CollectionUtils.isEmpty((Collection)queryParam.getImageStoreIds())) { - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - if (StringUtils.isNotBlank((CharSequence)queryParam.getImageStoreId())) { - queryParam.setImageStoreIds((List)Lists.newArrayList((Object[])new String[]{queryParam.getImageStoreId()})); - } - List imageStoreIds = queryParam.getImageStoreIds(); - for (String imageId : imageStoreIds) { - DeviceImagePersonRefResult deviceImagePersonRefResult = new DeviceImagePersonRefResult(); - deviceImagePersonRefResult.setImageStoreId(imageId); - QueryGroupPersonDTO queryGroupPersonDTO = new QueryGroupPersonDTO(); - queryGroupPersonDTO.setImageStoreId(imageId); - PageMethod.startPage((int)queryParam.getCurrentPage(), (int)1); - PageMethod.orderBy((String)"LAST_UPDATE_TIME DESC"); - Page groupPersonRefs = (Page)this.groupPersonRefMapper.query(queryGroupPersonDTO); - if (!CollectionUtils.isNotEmpty((Collection)groupPersonRefs.getResult())) continue; - Long lastUpdateTime = ((GroupPersonRef)groupPersonRefs.getResult().get(0)).getLastUpdateTime(); - deviceImagePersonRefResult.setImageLastUpdateTime(lastUpdateTime); - deviceImagePersonRefResults.add(deviceImagePersonRefResult); - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - public CloudwalkResult> getDeviceImageUpdatePersonInfo(DeviceImageUpdatePersonQuery query, CloudwalkCallContext context) throws ServiceException { - ArrayList deviceImageUpdatePersonResults = new ArrayList(); - QueryGroupPersonDTO queryGroupPersonDTO = new QueryGroupPersonDTO(); - queryGroupPersonDTO.setImageStoreId(query.getImageStoreId()); - queryGroupPersonDTO.setLastUpdateTime(query.getLastUpdateTime()); - queryGroupPersonDTO.setSequenceId(String.valueOf(query.getSequenceId())); - CloudwalkPageInfo page = new CloudwalkPageInfo(query.getCurrentPage(), query.getRowsOfPage()); - PageMethod.startPage((int)query.getCurrentPage(), (int)query.getRowsOfPage()); - PageMethod.orderBy((String)"LAST_UPDATE_TIME ASC,PERSON_ID ASC"); - Page groupPersonRefs = (Page)this.groupPersonRefMapper.query(queryGroupPersonDTO); - List personRefsResult = groupPersonRefs.getResult(); - for (GroupPersonRef groupPersonRef : personRefsResult) { - if (groupPersonRef.getPersonId() == null) continue; - DeviceImageUpdatePersonResult deviceImageUpdatePersonResult = new DeviceImageUpdatePersonResult(); - deviceImageUpdatePersonResult.setPersonId(groupPersonRef.getPersonId()); - if (query.getSupportPersonValiddate() != null && DeviceAbilityEnum.SUPPORT_PERSON_VALIDDATE.getCode() == query.getSupportPersonValiddate().intValue()) { - if (-1 == groupPersonRef.getStatus()) { - deviceImageUpdatePersonResult.setType(Integer.valueOf(DelStatusEnum.DELETED.getCode().shortValue())); - } else { - deviceImageUpdatePersonResult.setType(Integer.valueOf(DelStatusEnum.NORAML.getCode().shortValue())); - } - } else { - deviceImageUpdatePersonResult.setType(Integer.valueOf(groupPersonRef.getIsDel().intValue())); - } - if (groupPersonRef.getIsDel() != null && DelStatusEnum.NORAML.getCode().shortValue() == groupPersonRef.getIsDel().shortValue()) { - deviceImageUpdatePersonResult.setStatus(Integer.valueOf(1)); - } else { - deviceImageUpdatePersonResult.setStatus(Integer.valueOf(0)); - } - deviceImageUpdatePersonResult.setImageStoreId(groupPersonRef.getImageStoreId()); - deviceImageUpdatePersonResult.setTimestamp(groupPersonRef.getLastUpdateTime()); - deviceImageUpdatePersonResult.setSequenceId(Long.valueOf(groupPersonRef.getPersonId())); - deviceImageUpdatePersonResult.setExpiryBeginDate(groupPersonRef.getExpiryBeginDate()); - deviceImageUpdatePersonResult.setExpiryEndDate(groupPersonRef.getExpiryEndDate()); - ImgStorePerson imgStorePerson = this.imgStorePersonMapper.selectByPrimaryKey(groupPersonRef.getPersonId()); - if (imgStorePerson != null) { - JSONObject json; - deviceImageUpdatePersonResult.setImageStoreId(groupPersonRef.getImageStoreId()); - if (StringUtils.isNotBlank((CharSequence)imgStorePerson.getReserveInfo())) { - json = JSONObject.parseObject((String)imgStorePerson.getReserveInfo()); - if (null != json.get((Object)"icCardNo") && StringUtils.isNotBlank((CharSequence)imgStorePerson.getIcCardNo())) { - json.put("icCardNo", (Object)imgStorePerson.getIcCardNo()); - } - if (null != json.get((Object)"icCardType") && StringUtils.isNotBlank((CharSequence)imgStorePerson.getIcCardType())) { - json.put("icCardType", (Object)imgStorePerson.getIcCardType()); - } - deviceImageUpdatePersonResult.setReserveInfo(JSON.toJSONString((Object)json)); - } else { - json = new JSONObject(); - if (StringUtils.isNotBlank((CharSequence)imgStorePerson.getIcCardNo())) { - json.put("icCardNo", (Object)imgStorePerson.getIcCardNo()); - } - if (StringUtils.isNotBlank((CharSequence)imgStorePerson.getIcCardType())) { - json.put("icCardType", (Object)imgStorePerson.getIcCardType()); - } - deviceImageUpdatePersonResult.setReserveInfo(JSON.toJSONString((Object)json)); - } - deviceImageUpdatePersonResult.setName(imgStorePerson.getName()); - deviceImageUpdatePersonResult.setMobileNumber(imgStorePerson.getPhone()); - if (imgStorePerson.getCreateTime() != null) { - deviceImageUpdatePersonResult.setCreateDate(imgStorePerson.getCreateTime().toString()); - } - ArrayList faceDatas = new ArrayList(); - if (StringUtils.isNotBlank((CharSequence)imgStorePerson.getComparePicture())) { - DeviceImageUpdatePersonResult.FaceData personFaceData = new DeviceImageUpdatePersonResult.FaceData(); - personFaceData.setFaceId(imgStorePerson.getImageId()); - personFaceData.setPictureUrl(this.fileUrlPrefix + imgStorePerson.getComparePicture()); - faceDatas.add(personFaceData); - } - deviceImageUpdatePersonResult.setFaceData(faceDatas); - if (StringUtils.isNotBlank((CharSequence)imgStorePerson.getShowPicture())) { - DeviceImageUpdatePersonResult.ImageData imageData = new DeviceImageUpdatePersonResult.ImageData(); - try { - imageData.setImageUrl(this.fileUrlPrefix + imgStorePerson.getShowPicture()); - if (this.base64Enable.booleanValue() && deviceImageUpdatePersonResult.getStatus() == 1) { - imageData.setImageType(Integer.valueOf(0)); - imageData.setImage(FileUtil.url2base64(imageData.getImageUrl())); - } - deviceImageUpdatePersonResult.setShowImage(imageData); - } - catch (Exception e) { - this.logger.warn("{} imageData url2BASE64 error {}", (Object)imageData.getImageUrl(), (Object)e.getMessage()); - } - } - } else { - deviceImageUpdatePersonResult.setStatus(Integer.valueOf(0)); - } - deviceImageUpdatePersonResults.add(deviceImageUpdatePersonResult); - } - CloudwalkPageAble resultCloudwalkPageAble = new CloudwalkPageAble(deviceImageUpdatePersonResults, page, groupPersonRefs.getTotal()); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - private boolean elevatorGroup(String imageStoreId, CloudwalkCallContext context) { - Boolean elevatorGroup = false; - ApplicationImageStoreQueryParam queryParam = new ApplicationImageStoreQueryParam(); - queryParam.setImageStoreId(imageStoreId); - CloudwalkResult appImageStoreResult = this.appImageStoreService.query(queryParam, context); - if (appImageStoreResult.isSuccess() && !CollectionUtils.isEmpty((Collection)((Collection)appImageStoreResult.getData())) && "派梯应用".equals(((ApplicationImageStoreQueryResult)((List)appImageStoreResult.getData()).get(0)).getApplicationName())) { - elevatorGroup = true; - } - return elevatorGroup; - } - - private Map personPassRule(List personRefsResult, CloudwalkCallContext context) { - HashMap personPassRuleMap = new HashMap(); - if (!CollectionUtils.isEmpty(personRefsResult)) { - List personIds = personRefsResult.stream().map(GroupPersonRef::getPersonId).collect(Collectors.toList()); - long t3 = System.currentTimeMillis(); - List personOrgMapList = this.imgStorePersonOrganizationMapper.groupByPerson(personIds); - long t4 = System.currentTimeMillis(); - this.logger.info("20113 getDeviceUpdatePersonInfo queryPersonOrg,spend time {} millis", (Object)(t4 - t3)); - Map personOrgMap = personOrgMapList.stream().collect(Collectors.toMap(map -> (String)map.get("personId"), map -> (String)map.get("orgIds"))); - t3 = System.currentTimeMillis(); - List personLabelMapList = this.imgStorePersonLabelMapper.groupByPerson(personIds); - t4 = System.currentTimeMillis(); - this.logger.info("20113 getDeviceUpdatePersonInfo queryPersonLabel,spend time {} millis", (Object)(t4 - t3)); - Map personLabelMap = personLabelMapList.stream().collect(Collectors.toMap(map -> (String)map.get("personId"), map -> (String)map.get("labelIds"))); - ArrayList passRuleParamList = Lists.newArrayListWithCapacity((int)personIds.size()); - personIds.forEach(personId -> { - List orgIds = Optional.ofNullable(personOrgMap.get(personId)).map(x -> Arrays.asList(x.split(","))).orElse(new ArrayList()); - List labelIds = Optional.ofNullable(personLabelMap.get(personId)).map(x -> Arrays.asList(x.split(","))).orElse(new ArrayList()); - PassRuleParam param = new PassRuleParam(); - param.setPersonId(personId); - param.setIncludeOrganizations(orgIds); - param.setIncludeLabels(labelIds); - param.setBusinessId(context.getCompany().getCompanyId()); - passRuleParamList.add(param); - }); - t3 = System.currentTimeMillis(); - BatchPassRuleParam batchParam = new BatchPassRuleParam(); - batchParam.setPersonList((List)passRuleParamList); - CloudwalkResult> result = this.elevatorAppFeignClient.batchPassRule(batchParam); - t4 = System.currentTimeMillis(); - this.logger.info("20113 getDeviceUpdatePersonInfo batchPassRule,spend time {} millis", (Object)(t4 - t3)); - if (result.isSuccess() && CollectionUtils.isNotEmpty((Collection)((Collection)result.getData()))) { - ((List)result.getData()).forEach(passRule -> { - List zoneNameList = ((List)Optional.ofNullable(passRule.getZoneList()).orElse(new ArrayList())).stream().map(x -> x.getZoneName()).collect(Collectors.toList()); - Collections.sort(zoneNameList, new NaturalOrderComparator(true)); - String zoneNameStr = String.join((CharSequence)",", zoneNameList); - personPassRuleMap.put(passRule.getPersonId(), zoneNameStr); - }); - } - } - return personPassRuleMap; - } - - public CloudwalkResult> getDeviceUpdatePersonInfo(DeviceImageUpdatePersonQuery query, CloudwalkCallContext context) throws ServiceException { - ArrayList deviceImageUpdatePersonResults = new ArrayList(); - QueryGroupPersonDTO queryGroupPersonDTO = new QueryGroupPersonDTO(); - queryGroupPersonDTO.setDeviceId(query.getDeviceId()); - queryGroupPersonDTO.setImageStoreId(query.getImageStoreId()); - queryGroupPersonDTO.setLastUpdateTime(query.getLastUpdateTime()); - queryGroupPersonDTO.setSequenceId(String.valueOf(query.getSequenceId())); - queryGroupPersonDTO.setPageSize(Integer.valueOf(query.getRowsOfPage())); - CloudwalkPageInfo page = new CloudwalkPageInfo(query.getCurrentPage(), query.getRowsOfPage()); - long t1 = System.currentTimeMillis(); - List personRefsResult = this.groupPersonRefMapper.queryGroupPersonList(queryGroupPersonDTO); - long t2 = System.currentTimeMillis(); - this.logger.info("20113 getDeviceUpdatePersonInfo queryGroupPerson,spend time {} millis", (Object)(t2 - t1)); - boolean isElevatorGroup = this.elevatorGroup(query.getImageStoreId(), context); - Map personPassRuleMap = new HashMap(); - if (isElevatorGroup) { - personPassRuleMap = this.personPassRule(personRefsResult, context); - } - HashMap finalPersonPassRuleMap = personPassRuleMap; - for (GroupPersonRefDTO groupPersonRef : personRefsResult) { - if (StringUtils.isBlank((CharSequence)groupPersonRef.getPersonId())) continue; - DeviceImageUpdatePersonResult deviceImageUpdatePersonResult = new DeviceImageUpdatePersonResult(); - deviceImageUpdatePersonResult.setPersonId(groupPersonRef.getPersonId()); - if (query.getSupportPersonValiddate() != null && DeviceAbilityEnum.SUPPORT_PERSON_VALIDDATE.getCode() == query.getSupportPersonValiddate().intValue()) { - if (-1 == groupPersonRef.getStatus()) { - deviceImageUpdatePersonResult.setType(Integer.valueOf(DelStatusEnum.DELETED.getCode().shortValue())); - } else { - deviceImageUpdatePersonResult.setType(Integer.valueOf(DelStatusEnum.NORAML.getCode().shortValue())); - } - } else { - deviceImageUpdatePersonResult.setType(Integer.valueOf(groupPersonRef.getIsDel().intValue())); - } - if (groupPersonRef.getIsDel() != null && DelStatusEnum.NORAML.getCode().shortValue() == groupPersonRef.getIsDel().shortValue()) { - deviceImageUpdatePersonResult.setStatus(Integer.valueOf(1)); - } else { - deviceImageUpdatePersonResult.setStatus(Integer.valueOf(0)); - } - deviceImageUpdatePersonResult.setImageStoreId(groupPersonRef.getImageStoreId()); - deviceImageUpdatePersonResult.setTimestamp(groupPersonRef.getLastUpdateTime()); - deviceImageUpdatePersonResult.setSequenceId(Long.valueOf(groupPersonRef.getPersonId())); - deviceImageUpdatePersonResult.setExpiryBeginDate(groupPersonRef.getExpiryBeginDate()); - deviceImageUpdatePersonResult.setExpiryEndDate(groupPersonRef.getExpiryEndDate()); - ImgStorePerson imgStorePerson = this.imgStorePersonMapper.selectByPrimaryKey(groupPersonRef.getPersonId()); - if (imgStorePerson != null) { - deviceImageUpdatePersonResult.setImageStoreId(groupPersonRef.getImageStoreId()); - JSONObject json = new JSONObject(); - if (StringUtils.isNotBlank((CharSequence)imgStorePerson.getReserveInfo())) { - json = JSONObject.parseObject((String)imgStorePerson.getReserveInfo()); - if (null != json.get((Object)"icCardNo") && StringUtils.isNotBlank((CharSequence)imgStorePerson.getIcCardNo())) { - json.put("icCardNo", (Object)imgStorePerson.getIcCardNo()); - } - if (null != json.get((Object)"icCardType") && StringUtils.isNotBlank((CharSequence)imgStorePerson.getIcCardType())) { - json.put("icCardType", (Object)imgStorePerson.getIcCardType()); - } - } else { - if (StringUtils.isNotBlank((CharSequence)imgStorePerson.getIcCardNo())) { - json.put("icCardNo", (Object)imgStorePerson.getIcCardNo()); - } - if (StringUtils.isNotBlank((CharSequence)imgStorePerson.getIcCardType())) { - json.put("icCardType", (Object)imgStorePerson.getIcCardType()); - } - } - json.put("passCrons", (Object)groupPersonRef.getValidDateCron()); - if (isElevatorGroup) { - json.put("floors", (Object)this.getFloorInfo(groupPersonRef, finalPersonPassRuleMap)); - } - if (StringUtils.isNotBlank((CharSequence)imgStorePerson.getDefaultFloor())) { - QueryZoneForm queryZoneForm = new QueryZoneForm(); - queryZoneForm.setIds(Collections.singletonList(imgStorePerson.getDefaultFloor())); - this.logger.info("楼层信息查询入参为{}", (Object)JSON.toJSONString((Object)queryZoneForm)); - CloudwalkResult> zoneDetail = this.zoneFeignClient.findZonelist(queryZoneForm); - this.logger.info("楼层信息{}", (Object)JSON.toJSONString(zoneDetail)); - if (!CollectionUtils.isEmpty((Collection)((Collection)zoneDetail.getData()))) { - json.put("defaultFloor", (Object)((ZoneResult)((List)zoneDetail.getData()).get(0)).getName()); - } - } - deviceImageUpdatePersonResult.setReserveInfo(JSON.toJSONString((Object)json)); - deviceImageUpdatePersonResult.setName(imgStorePerson.getName()); - deviceImageUpdatePersonResult.setMobileNumber(imgStorePerson.getPhone()); - if (imgStorePerson.getCreateTime() != null) { - deviceImageUpdatePersonResult.setCreateDate(imgStorePerson.getCreateTime().toString()); - } - ArrayList faceDatas = new ArrayList(); - if (StringUtils.isNotBlank((CharSequence)imgStorePerson.getComparePicture())) { - DeviceImageUpdatePersonResult.FaceData personFaceData = new DeviceImageUpdatePersonResult.FaceData(); - personFaceData.setFaceId(imgStorePerson.getImageId()); - personFaceData.setPictureUrl(this.fileUrlPrefix + imgStorePerson.getComparePicture()); - faceDatas.add(personFaceData); - } - deviceImageUpdatePersonResult.setFaceData(faceDatas); - if (StringUtils.isNotBlank((CharSequence)imgStorePerson.getShowPicture())) { - DeviceImageUpdatePersonResult.ImageData imageData = new DeviceImageUpdatePersonResult.ImageData(); - try { - imageData.setImageUrl(this.fileUrlPrefix + imgStorePerson.getShowPicture()); - if (this.base64Enable.booleanValue() && deviceImageUpdatePersonResult.getStatus() == 1) { - imageData.setImageType(Integer.valueOf(0)); - imageData.setImage(FileUtil.url2base64(imageData.getImageUrl())); - } - deviceImageUpdatePersonResult.setShowImage(imageData); - } - catch (Exception e) { - this.logger.warn("{} imageData url2BASE64 error {}", (Object)imageData.getImageUrl(), (Object)e.getMessage()); - } - } - } else { - deviceImageUpdatePersonResult.setStatus(Integer.valueOf(0)); - } - deviceImageUpdatePersonResults.add(deviceImageUpdatePersonResult); - } - CloudwalkPageAble resultCloudwalkPageAble = new CloudwalkPageAble(deviceImageUpdatePersonResults, page, 0L); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - private String getFloorInfo(GroupPersonRefDTO groupPersonRef, Map personPassRuleMap) { - if (personPassRuleMap.containsKey(groupPersonRef.getPersonId())) { - return personPassRuleMap.get(groupPersonRef.getPersonId()); - } - return ""; - } - - public CloudwalkResult> getDeviceImageUpdateFeatureInfo(DeviceImageUpdateFeatureQuery query, CloudwalkCallContext context) throws ServiceException { - ArrayList deviceImageUpdateFeautreResults = new ArrayList(); - QueryGroupPersonDTO queryGroupPersonDTO = new QueryGroupPersonDTO(); - queryGroupPersonDTO.setImageStoreId(query.getImageStoreId()); - queryGroupPersonDTO.setLastUpdateTime(query.getLastUpdateTime()); - queryGroupPersonDTO.setSequenceId(String.valueOf(query.getSequenceId())); - CloudwalkPageInfo page = new CloudwalkPageInfo(query.getCurrentPage(), query.getRowsOfPage()); - PageMethod.startPage((int)query.getCurrentPage(), (int)query.getRowsOfPage()); - PageMethod.orderBy((String)"LAST_UPDATE_TIME ASC,PERSON_ID ASC"); - Page groupPersonRefs = (Page)this.groupPersonRefMapper.query(queryGroupPersonDTO); - List personRefsResult = groupPersonRefs.getResult(); - for (GroupPersonRef refVar : personRefsResult) { - ImgStorePerson imgStorePerson = this.imgStorePersonMapper.selectByPrimaryKey(refVar.getPersonId()); - DeviceImageUpdateFeautreResult deviceImageUpdateFeautreResult = new DeviceImageUpdateFeautreResult(); - if (imgStorePerson == null) continue; - if (refVar.getIsDel() != null && DelStatusEnum.NORAML.getCode().shortValue() == refVar.getIsDel().shortValue()) { - AgImageFeatureQueryParam queryParam = new AgImageFeatureQueryParam(); - queryParam.setImageId(imgStorePerson.getImageId()); - queryParam.setGroupId(refVar.getImageStoreId()); - CloudwalkResult queryResult = this.agImageFeatureService.query(queryParam); - if (!queryResult.isSuccess() || queryResult.getData() == null) continue; - AgImageFeatureResult agImageFeatureResult = (AgImageFeatureResult)queryResult.getData(); - deviceImageUpdateFeautreResult.setFaceId(agImageFeatureResult.getImageId()); - deviceImageUpdateFeautreResult.setType(Integer.valueOf(refVar.getIsDel().intValue())); - deviceImageUpdateFeautreResult.setFeature(agImageFeatureResult.getFeature()); - deviceImageUpdateFeautreResult.setSequenceId(Long.valueOf(refVar.getPersonId())); - deviceImageUpdateFeautreResult.setTimestamp(refVar.getLastUpdateTime()); - deviceImageUpdateFeautreResults.add(deviceImageUpdateFeautreResult); - continue; - } - deviceImageUpdateFeautreResult.setFaceId(imgStorePerson.getImageId()); - deviceImageUpdateFeautreResult.setType(Integer.valueOf(DelStatusEnum.DELETED.getCode().intValue())); - deviceImageUpdateFeautreResult.setSequenceId(Long.valueOf(refVar.getPersonId())); - deviceImageUpdateFeautreResult.setTimestamp(refVar.getLastUpdateTime()); - deviceImageUpdateFeautreResults.add(deviceImageUpdateFeautreResult); - } - CloudwalkPageAble resultCloudwalkPageAble = new CloudwalkPageAble(deviceImageUpdateFeautreResults, page, groupPersonRefs.getTotal()); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - @Async(value="saveSyncLogExecutor") - public void saveSyncLog(String deviceId, String groupId, List personData) { - if (CollectionUtils.isEmpty(personData)) { - this.logger.warn("设备[{}]图库[{}]人员更新数据为空", (Object)deviceId, (Object)groupId); - return; - } - DevicePersonSyncLogDTO dto = new DevicePersonSyncLogDTO(); - dto.setDeviceId(deviceId); - dto.setImageStoreId(groupId); - List syncLogs = null; - for (UpdatePersonResult.PersonData personInfo : personData) { - String personId = personInfo.getUserId(); - dto.setPersonId(personId); - syncLogs = this.devicePersonSyncLogMapper.query(dto); - this.logger.debug("根据设备[{}]图库[{}]人员[{}]查询同步记录:[{}]", new Object[]{deviceId, groupId, personId, JSON.toJSONString((Object)syncLogs)}); - if (!CollectionUtils.isEmpty((Collection)syncLogs)) { - this.updateSyncLog((DevicePersonSyncLog)syncLogs.get(0), personInfo); - continue; - } - QueryGroupPersonDTO queryGroupPersonDTO = new QueryGroupPersonDTO(); - queryGroupPersonDTO.setImageStoreId(groupId); - queryGroupPersonDTO.setPersonId(personId); - List groupPersonRefList = this.groupPersonRefMapper.query(queryGroupPersonDTO); - if (CollectionUtils.isEmpty((Collection)groupPersonRefList)) { - this.logger.debug("根据图库Id[{}],人员Id[{}]查询不存在图库人员关联记录", (Object)groupId, (Object)personInfo.getUserId()); - continue; - } - if (this.lockSyncLog(deviceId, groupId, personId)) { - this.insertSyncLog(deviceId, groupId, personId, personInfo, (GroupPersonRef)groupPersonRefList.get(0)); - this.unlockSyncLog(deviceId, groupId, personId); - continue; - } - try { - Thread.sleep(1000L); - syncLogs = this.devicePersonSyncLogMapper.query(dto); - if (CollectionUtils.isEmpty((Collection)syncLogs)) continue; - this.updateSyncLog((DevicePersonSyncLog)syncLogs.get(0), personInfo); - } - catch (InterruptedException e) { - this.logger.error("CpOrgDevieKitServiceImpl lock sync log sleep error:{}", (Object)e.getMessage()); - Thread.currentThread().interrupt(); - } - } - } - - private void updateSyncLog(DevicePersonSyncLog dbSyncLog, UpdatePersonResult.PersonData personInfo) { - dbSyncLog.setStatus(Integer.valueOf(SyncStatusEnum.PULL.getValue())); - dbSyncLog.setCode(""); - dbSyncLog.setErrorMessage(""); - dbSyncLog.setLastPullTime(Long.valueOf(System.currentTimeMillis())); - dbSyncLog.setUpdateInfo("存在同步记录,更新同步状态:设备已拉取"); - dbSyncLog.setIsDel(personInfo.getType()); - if (!CollectionUtils.isEmpty((Collection)personInfo.getFaceData())) { - dbSyncLog.setImageId(((UpdatePersonResult.PersonData.FaceData)personInfo.getFaceData().get(0)).getFaceId()); - } else { - dbSyncLog.setErrorMessage("无识别照,设备无需上报"); - } - this.devicePersonSyncLogMapper.updateStatusAndCountInc(dbSyncLog); - this.logger.debug("更新同步记录[{}],设备已拉取,count[{}]", (Object)dbSyncLog.getId(), (Object)(dbSyncLog.getCount() + 1)); - this.logger.debug("更新同步记录[{}],[{}]", (Object)dbSyncLog.getId(), (Object)dbSyncLog); - } - - private void insertSyncLog(String deviceId, String groupId, String personId, UpdatePersonResult.PersonData personInfo, GroupPersonRef groupPersonRef) { - DevicePerson queryDevicePerson = new DevicePerson(); - queryDevicePerson.setDeviceId(deviceId); - queryDevicePerson.setPersonId(personId); - List dbDevicePersonList = this.devicePersonMapper.query(queryDevicePerson); - DevicePerson dbDevicePerson = null; - if (CollectionUtils.isEmpty((Collection)dbDevicePersonList)) { - DevicePerson newDevicePerson = new DevicePerson(); - newDevicePerson.setId(this.uuidSerial.uuid()); - newDevicePerson.setDeviceId(deviceId); - newDevicePerson.setPersonId(personId); - newDevicePerson.setType(personInfo.getType()); - newDevicePerson.setCreateTime(Long.valueOf(System.currentTimeMillis())); - newDevicePerson.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - int res = this.devicePersonMapper.insertSelective(newDevicePerson); - if (res > 0) { - dbDevicePerson = newDevicePerson; - } - } else { - dbDevicePerson = (DevicePerson)dbDevicePersonList.get(0); - } - DevicePersonSyncLog newSyncLog = new DevicePersonSyncLog(); - newSyncLog.setId(this.uuidSerial.uuid()); - newSyncLog.setDeviceId(deviceId); - newSyncLog.setImageStoreId(groupId); - newSyncLog.setPersonId(personId); - newSyncLog.setGroupPersonRefId(groupPersonRef.getId()); - newSyncLog.setStatus(Integer.valueOf(SyncStatusEnum.PULL.getValue())); - newSyncLog.setCount(Integer.valueOf(1)); - newSyncLog.setCreateTime(Long.valueOf(System.currentTimeMillis())); - newSyncLog.setLastUpdateTime(groupPersonRef.getLastUpdateTime()); - newSyncLog.setLastPullTime(Long.valueOf(System.currentTimeMillis())); - if (!CollectionUtils.isEmpty((Collection)personInfo.getFaceData())) { - newSyncLog.setImageId(((UpdatePersonResult.PersonData.FaceData)personInfo.getFaceData().get(0)).getFaceId()); - } - newSyncLog.setUpdateInfo("生成同步记录,同步状态:设备已拉取"); - newSyncLog.setDevicePersonRefId(null != dbDevicePerson ? dbDevicePerson.getId() : null); - newSyncLog.setIsDel(personInfo.getType()); - if (CollectionUtils.isEmpty((Collection)personInfo.getFaceData())) { - newSyncLog.setErrorMessage("无识别照,设备无需上报"); - } - this.logger.debug("新增同步记录[{}],[{}]", (Object)newSyncLog.getId(), (Object)newSyncLog); - try { - this.devicePersonSyncLogMapper.insertSelective(newSyncLog); - } - catch (Exception e) { - this.logger.error("新增同步记录失败,报错:{}", (Object)e.getMessage()); - } - this.logger.debug("新增同步记录[{}],设备已拉取,count[1]", (Object)newSyncLog.getId()); - } - - private synchronized boolean lockSyncLog(String deviceId, String imageStoreId, String personId) { - String value = deviceId + "_" + imageStoreId + "_" + personId; - String key = SYNC_LOG_KEY + value; - if (this.redisTemplate.hasKey((Object)key).booleanValue()) { - return false; - } - this.redisTemplate.opsForValue().set((Object)key, (Object)value, this.syncLogExpireTime, TimeUnit.SECONDS); - return true; - } - - private synchronized boolean unlockSyncLog(String deviceId, String imageStoreId, String personId) { - String value = deviceId + "_" + imageStoreId + "_" + personId; - String key = SYNC_LOG_KEY + value; - if (this.redisTemplate.hasKey((Object)key).booleanValue()) { - this.redisTemplate.delete((Object)key); - return true; - } - return false; - } -} - diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/CpImageStorePersonManager.java b/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/CpImageStorePersonManager.java index c9789c43..fc8c21f7 100644 --- a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/CpImageStorePersonManager.java +++ b/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/CpImageStorePersonManager.java @@ -396,7 +396,7 @@ extends AbstractImagStoreService { GroupPersonRef groupPersonRef = null; AgImageStoreImageResult lastResult = null; while (true) { - if (this.redisTemplate.hasKey((Object)LAST_SYNC_IMAGE_KEY).booleanValue()) { + if (this.redisTemplate.hasKey(LAST_SYNC_IMAGE_KEY).booleanValue()) { String lastFlagValue = (String)this.redisTemplate.opsForValue().get((Object)LAST_SYNC_IMAGE_KEY); lastSynTime = Long.valueOf(lastFlagValue.split(",")[0]); lastImageId = lastFlagValue.split(",")[1]; @@ -452,7 +452,7 @@ extends AbstractImagStoreService { lastResult.setLastUpdateTime(lastSynTime); this.logger.warn("最后更新时间为空,imageStoreId:[{}],imageId:[{}]", (Object)lastResult.getImageStoreId(), (Object)lastResult.getImageId()); } - this.redisTemplate.opsForValue().set((Object)LAST_SYNC_IMAGE_KEY, (Object)(lastResult.getLastUpdateTime() + "," + lastResult.getImageId())); + this.redisTemplate.opsForValue().set(LAST_SYNC_IMAGE_KEY, (Object)(lastResult.getLastUpdateTime() + "," + lastResult.getImageId())); this.logger.info("设置缓存数据,key={},value={}", (Object)LAST_SYNC_IMAGE_KEY, (Object)(lastResult.getLastUpdateTime() + "," + lastResult.getImageId())); } this.logger.warn("没有需要同步的图库图片"); diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/CpImageStoreServiceImpl.java b/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/CpImageStoreServiceImpl.java deleted file mode 100644 index 79a91fad..00000000 --- a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/CpImageStoreServiceImpl.java +++ /dev/null @@ -1,771 +0,0 @@ -package cn.cloudwalk.service.organization.service; -// 业务服务 -import cn.cloudwalk.client.account.account.param.GeneralQueryBusinessParam; -import cn.cloudwalk.client.account.account.result.AcBusinessDTO; -import cn.cloudwalk.client.account.account.service.AcBusinessService; -import cn.cloudwalk.client.aggregate.application.param.ApplicationImageStoreQueryParam; -import cn.cloudwalk.client.aggregate.application.service.ApplicationImageStoreService; -import cn.cloudwalk.client.aggregate.common.enums.DelStatusEnum; -import cn.cloudwalk.client.aggregate.common.enums.SyncStatusEnum; -import cn.cloudwalk.client.aggregate.device.param.DeviceImageStoreQueryParam; -import cn.cloudwalk.client.aggregate.device.result.DeviceImageStoreQueryResult; -import cn.cloudwalk.client.aggregate.device.service.AggDeviceImageStoreService; -import cn.cloudwalk.client.aggregate.group.param.AgImageStoreAddParam; -import cn.cloudwalk.client.aggregate.group.param.AgImageStoreEditParam; -import cn.cloudwalk.client.aggregate.group.param.AgImageStoreKeyParam; -import cn.cloudwalk.client.aggregate.group.param.AgImageStoreQueryParam; -import cn.cloudwalk.client.aggregate.group.result.AgImageStoreResult; -import cn.cloudwalk.client.aggregate.group.service.AgImageStoreService; -import cn.cloudwalk.client.device.mgn.atomic.param.CoreDeviceQueryParam; -import cn.cloudwalk.client.device.mgn.atomic.service.AtomicDeviceService; -import cn.cloudwalk.client.organization.common.enums.CpImageStoreMatchPatternEnum; -import cn.cloudwalk.client.organization.service.store.param.AddImageStoreParam; -import cn.cloudwalk.client.organization.service.store.param.AssociatedParam; -import cn.cloudwalk.client.organization.service.store.param.BaseImageStoreParam; -import cn.cloudwalk.client.organization.service.store.param.DelImageStoreParam; -import cn.cloudwalk.client.organization.service.store.param.DetailImageStoreParam; -import cn.cloudwalk.client.organization.service.store.param.EditImageStoreParam; -import cn.cloudwalk.client.organization.service.store.param.QueryImageStoreParam; -import cn.cloudwalk.client.organization.service.store.result.AssociatedResult; -import cn.cloudwalk.client.organization.service.store.result.DeviceInfoResult; -import cn.cloudwalk.client.organization.service.store.result.ImageStoreDetailResult; -import cn.cloudwalk.client.organization.service.store.result.ImageStoreResult; -import cn.cloudwalk.client.organization.service.store.result.ImgStorePersonResult; -import cn.cloudwalk.client.organization.service.store.result.LabelResult; -import cn.cloudwalk.client.organization.service.store.result.OrganizationResult; -import cn.cloudwalk.client.organization.service.store.result.PageImageStoreResult; -import cn.cloudwalk.client.organization.service.store.service.CpImageStoreService; -import cn.cloudwalk.client.resource.application.param.ApplicationBasicParam; -import cn.cloudwalk.client.resource.application.param.ApplicationQueryParam; -import cn.cloudwalk.client.resource.application.result.ApplicationResult; -import cn.cloudwalk.client.resource.application.service.ApplicationService; -import cn.cloudwalk.client.resource.common.en.CommonStatusEnum; -import cn.cloudwalk.cloud.annotation.CloudwalkParamsValidate; -import cn.cloudwalk.cloud.context.CloudwalkCallContext; -import cn.cloudwalk.cloud.exception.ServiceException; -import cn.cloudwalk.cloud.page.CloudwalkPageAble; -import cn.cloudwalk.cloud.page.CloudwalkPageInfo; -import cn.cloudwalk.cloud.result.CloudwalkResult; -import cn.cloudwalk.cloud.utils.BeanCopyUtils; -import cn.cloudwalk.cloud.utils.CloudwalkDateUtils; -import cn.cloudwalk.data.organization.dto.DelGroupPersonDTO; -import cn.cloudwalk.data.organization.dto.GetsImageStoreAssociatedDTO; -import cn.cloudwalk.data.organization.dto.ImageStoreCountDTO; -import cn.cloudwalk.data.organization.dto.ImgStorePersonQueryDto; -import cn.cloudwalk.data.organization.dto.OrganizationImageStoreQueryDTO; -import cn.cloudwalk.data.organization.dto.QueryGroupPersonDTO; -import cn.cloudwalk.data.organization.entity.IsImageStoreAssociated; -import cn.cloudwalk.data.organization.mapper.GroupPersonRefMapper; -import cn.cloudwalk.data.organization.mapper.ImgStoreLabelMapper; -import cn.cloudwalk.data.organization.mapper.ImgStoreOrganizationMapper; -import cn.cloudwalk.data.organization.mapper.ImgStorePersonMapper; -import cn.cloudwalk.data.organization.mapper.IsImageStoreAssociatedMapper; -import cn.cloudwalk.data.organization.mapper.OrganizationImageStoreMapper; -import cn.cloudwalk.service.organization.common.AbstractImagStoreService; -import cn.cloudwalk.service.organization.common.JsonUtils; -import cn.cloudwalk.service.organization.service.CpImageStorePersonManager; -import cn.cloudwalk.service.organization.service.CpImageStorePersonSynManager; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.google.common.collect.Lists; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import javax.annotation.Resource; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; -import org.springside.modules.utils.Collections3; - -@Service -public class CpImageStoreServiceImpl -extends AbstractImagStoreService -implements CpImageStoreService { - @Autowired - private IsImageStoreAssociatedMapper isImageStoreAssociatedMapper; - @Autowired - private ImgStoreLabelMapper imgStoreLabelMapper; - @Autowired - private ImgStoreOrganizationMapper imgStoreOrganizationMapper; - @Autowired - private ImgStorePersonMapper personMapper; - @Autowired - private GroupPersonRefMapper groupPersonRefMapper; - @Autowired - private OrganizationImageStoreMapper organizationImageStoreMapper; - @Autowired - private AcBusinessService acBusinessService; - @Autowired - private ApplicationService applicationService; - @Autowired - private AgImageStoreService agImageStoreService; - @Autowired - private ApplicationImageStoreService applicationImageStoreService; - @Autowired - private AggDeviceImageStoreService deviceImageStoreService; - @Autowired - private CpImageStorePersonSynManager cpImageStorePersonSynManager; - @Resource - private CpImageStorePersonManager cpImageStorePersonManager; - @Resource - private AtomicDeviceService atomicDeviceService; - @Resource - private ApplicationImageStoreService appImageStoreService; - @Value(value="${cloudwalk.imagestore.person.searchSize:2}") - private int searchSize; - - @Transactional(rollbackFor={Exception.class}) - @CloudwalkParamsValidate - public CloudwalkResult add(AddImageStoreParam param, CloudwalkCallContext context) throws ServiceException { - CloudwalkResult addResult; - List imageStoreAssociatedList; - String imageStoreId = CloudwalkDateUtils.getUUID(); - AgImageStoreAddParam addParam = new AgImageStoreAddParam(); - addParam.setId(imageStoreId); - addParam.setName(param.getName()); - addParam.setType(param.getType()); - addParam.setBusinessId(param.getBusinessId()); - addParam.setSourceApplicationId(param.getSourceApplicationId()); - if (StringUtils.isBlank((CharSequence)param.getBusinessId())) { - addParam.setBusinessId(context.getCompany().getCompanyId()); - } - if ((imageStoreAssociatedList = this.addBaseImageStore((BaseImageStoreParam)param, context, imageStoreId, addParam.getBusinessId())).size() > 0) { - this.isImageStoreAssociatedMapper.batchInsert(imageStoreAssociatedList); - } - if (!(addResult = this.agImageStoreService.add(addParam, context)).isSuccess()) { - throw new ServiceException(addResult.getCode(), addResult.getMessage()); - } - this.cpImageStorePersonSynManager.addGroupPersonSynTask(Lists.newArrayList((Object[])new String[]{imageStoreId}), "isAll"); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - @Transactional(rollbackFor={Exception.class}) - @CloudwalkParamsValidate - public CloudwalkResult edit(EditImageStoreParam param, CloudwalkCallContext context) throws ServiceException { - CloudwalkResult editResult; - this.checkExistAndStatus(param.getImageStoreId()); - AgImageStoreEditParam editParam = new AgImageStoreEditParam(); - editParam.setId(param.getImageStoreId()); - editParam.setName(param.getName()); - String businessId = param.getBusinessId(); - if (StringUtils.isBlank((CharSequence)businessId)) { - businessId = context.getCompany().getCompanyId(); - } - List imageStoreAssociatedList = this.addBaseImageStore((BaseImageStoreParam)param, context, param.getImageStoreId(), businessId); - if (this.checkAssociatedIsChange(param.getImageStoreId(), imageStoreAssociatedList)) { - this.isImageStoreAssociatedMapper.deleteAllByImageId(param.getImageStoreId()); - if (imageStoreAssociatedList.size() > 0) { - this.isImageStoreAssociatedMapper.batchInsert(imageStoreAssociatedList); - } - editParam.setStatus(SyncStatusEnum.SYNC_WAIT.getCode()); - } - if (!(editResult = this.agImageStoreService.edit(editParam, context)).isSuccess()) { - throw new ServiceException(editResult.getCode(), editResult.getMessage()); - } - this.cpImageStorePersonSynManager.addGroupPersonSynTask(Lists.newArrayList((Object[])new String[]{param.getImageStoreId()}), "isAll"); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - private boolean checkAssociatedIsChange(String imageStoreId, List associatedListAfterUpdate) { - GetsImageStoreAssociatedDTO queryDTO = new GetsImageStoreAssociatedDTO(); - queryDTO.setImageStoreId(imageStoreId); - List associatedListBeforeUpdate = this.isImageStoreAssociatedMapper.gets(queryDTO); - if (CollectionUtils.isEmpty((Collection)associatedListBeforeUpdate) && CollectionUtils.isEmpty(associatedListAfterUpdate)) { - return false; - } - if (associatedListBeforeUpdate.size() != associatedListAfterUpdate.size()) { - return true; - } - HashSet associatedStrBeforeUpdate = new HashSet(associatedListBeforeUpdate.size()); - for (IsImageStoreAssociated associateBefore : associatedListBeforeUpdate) { - String action = associateBefore.getAssociatedAction() != null ? String.valueOf(associateBefore.getAssociatedAction()) : ""; - associatedStrBeforeUpdate.add(action + associateBefore.getAssociatedObjectIdType() + associateBefore.getAssociatedObjectId() + associateBefore.getExpiryBeginDate() + associateBefore.getExpiryEndDate() + associateBefore.getValidDateCron()); - } - HashSet associatedStrAfterUpdate = new HashSet(associatedListAfterUpdate.size()); - for (IsImageStoreAssociated associateBeforeAfter : associatedListAfterUpdate) { - String action = associateBeforeAfter.getAssociatedAction() != null ? String.valueOf(associateBeforeAfter.getAssociatedAction()) : ""; - associatedStrAfterUpdate.add(action + associateBeforeAfter.getAssociatedObjectIdType() + associateBeforeAfter.getAssociatedObjectId() + associateBeforeAfter.getExpiryBeginDate() + associateBeforeAfter.getExpiryEndDate() + associateBeforeAfter.getValidDateCron()); - } - associatedStrBeforeUpdate.removeAll(associatedStrAfterUpdate); - return !CollectionUtils.isEmpty(associatedStrBeforeUpdate); - } - - @Transactional(rollbackFor={Exception.class}) - @CloudwalkParamsValidate - public CloudwalkResult delete(DelImageStoreParam param, CloudwalkCallContext context) throws ServiceException { - this.checkAppRefByImageStoreIdForDelete(param.getId(), context); - this.checkExistAndStatus(param.getId()); - QueryGroupPersonDTO queryDTO = new QueryGroupPersonDTO(); - queryDTO.setImageStoreId(param.getId()); - queryDTO.setIsDel(Short.valueOf(DelStatusEnum.NORAML.getCode())); - List groupPersonList = this.groupPersonRefMapper.query(queryDTO); - this.isImageStoreAssociatedMapper.deleteAllByImageId(param.getId()); - DelGroupPersonDTO delGroupPersonDTO = new DelGroupPersonDTO(); - delGroupPersonDTO.setImageStoreId(param.getId()); - delGroupPersonDTO.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - delGroupPersonDTO.setLastUpdateUserId(context.getUser().getCaller()); - this.groupPersonRefMapper.logicDeleteByParam(delGroupPersonDTO); - CloudwalkResult delete = this.agImageStoreService.delete((AgImageStoreKeyParam)BeanCopyUtils.copyProperties((Object)param, AgImageStoreKeyParam.class), context); - if (!delete.isSuccess()) { - throw new ServiceException(delete.getCode(), delete.getMessage()); - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - private void checkAppRefByImageStoreIdForDelete(String imageStoreId, CloudwalkCallContext context) throws ServiceException { - ApplicationImageStoreQueryParam queryParam = new ApplicationImageStoreQueryParam(); - queryParam.setImageStoreId(imageStoreId); - CloudwalkResult queryResult = this.applicationImageStoreService.query(queryParam, context); - if (!queryResult.isSuccess()) { - throw new ServiceException(queryResult.getCode(), queryResult.getMessage()); - } - if (!CollectionUtils.isEmpty((Collection)((Collection)queryResult.getData()))) { - throw new ServiceException("53013545", this.getMessage("53013545")); - } - } - - public CloudwalkResult> page(QueryImageStoreParam queryImageStoreParam, CloudwalkCallContext context) throws ServiceException { - CloudwalkResult agPageResult; - boolean isEnd = this.handleQueryParam(queryImageStoreParam); - if (isEnd) { - return (CloudwalkResult) CloudwalkResult.success($$$); - } - AgImageStoreQueryParam queryParam = (AgImageStoreQueryParam)BeanCopyUtils.copyProperties((Object)queryImageStoreParam, AgImageStoreQueryParam.class); - if (StringUtils.isBlank((CharSequence)queryParam.getBusinessId())) { - queryParam.setBusinessId(context.getCompany().getCompanyId()); - } - if (!(agPageResult = this.agImageStoreService.page(queryParam)).isSuccess()) { - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - if (agPageResult.getData() == null) { - return (CloudwalkResult) CloudwalkResult.success($$$); - } - List resultList = this.packageCpResult(((CloudwalkPageAble)agPageResult.getData()).getDatas(), queryParam.getBusinessId()); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - public CloudwalkResult> list(QueryImageStoreParam queryImageStoreParam, CloudwalkCallContext cloudwalkContext) throws ServiceException { - CloudwalkResult agQueryResult; - List resultList = new ArrayList(); - boolean isEnd = this.handleQueryParam(queryImageStoreParam); - if (isEnd) { - return (CloudwalkResult) CloudwalkResult.success($$$); - } - AgImageStoreQueryParam queryParam = (AgImageStoreQueryParam)BeanCopyUtils.copyProperties((Object)queryImageStoreParam, AgImageStoreQueryParam.class); - if (StringUtils.isBlank((CharSequence)queryParam.getBusinessId())) { - queryParam.setBusinessId(cloudwalkContext.getCompany().getCompanyId()); - } - if (!(agQueryResult = this.agImageStoreService.query(queryParam)).isSuccess()) { - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - if (!CollectionUtils.isEmpty((Collection)queryImageStoreParam.getLabelIds())) { - GetsImageStoreAssociatedDTO get = new GetsImageStoreAssociatedDTO(); - get.setAssociatedObjectIds((Collection)queryImageStoreParam.getLabelIds()); - get.setAssociatedObjectIdType(Integer.valueOf(2)); - List associateds = this.isImageStoreAssociatedMapper.gets(get); - if (CollectionUtils.isEmpty((Collection)associateds)) { - return (CloudwalkResult) CloudwalkResult.success($$$); - } - List imageStoreIds = Collections3.extractToList((Collection)associateds, (String)"imageStoreId"); - List collect = ((List)agQueryResult.getData()).stream().filter(a -> imageStoreIds.contains(a.getId())).collect(Collectors.toList()); - agQueryResult.setData(collect); - } - resultList = this.packageImageStoreResult((Collection)agQueryResult.getData(), queryParam.getBusinessId()); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - @CloudwalkParamsValidate - public CloudwalkResult detail(DetailImageStoreParam param, CloudwalkCallContext context) { - AgImageStoreQueryParam queryParam = new AgImageStoreQueryParam(); - queryParam.setId(param.getId()); - CloudwalkResult queryResult = this.agImageStoreService.query(queryParam); - if (!queryResult.isSuccess()) { - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - if (CollectionUtils.isEmpty((Collection)((Collection)queryResult.getData()))) { - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - AgImageStoreResult agImageStoreResult = (AgImageStoreResult)((List)queryResult.getData()).get(0); - ImageStoreDetailResult result = (ImageStoreDetailResult)BeanCopyUtils.copyProperties((Object)agImageStoreResult, ImageStoreDetailResult.class); - result.setPersonNum(this.getPersonNum(agImageStoreResult.getId())); - try { - result.setBusinessName(this.getBusinessName(result.getBusinessId())); - } - catch (ServiceException e) { - this.logger.error("查询企业名称错误e:{}", (Object)e.getMessage()); - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - try { - result.setSourceApplicationName(this.getSourceApplicationName(result.getSourceApplicationId())); - } - catch (ServiceException e) { - this.logger.error("查询来源应用名称错误e:{}", (Object)e.getMessage()); - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - this.getAssociated(result); - DeviceImageStoreQueryParam deviceParam = new DeviceImageStoreQueryParam(); - deviceParam.setImageStoreId(param.getId()); - CloudwalkResult deviceResult = this.deviceImageStoreService.query(deviceParam, context); - if (deviceResult.isSuccess()) { - result.setDevices(this.getDeviceList((List)deviceResult.getData(), context)); - } else { - this.logger.error("图库详情关联设备名称获取失败,result:[{}]", (Object)JSONObject.toJSONString((Object)deviceResult)); - } - ApplicationImageStoreQueryParam appParam = new ApplicationImageStoreQueryParam(); - appParam.setImageStoreId(param.getId()); - CloudwalkResult appResult = this.applicationImageStoreService.query(appParam, context); - if (appResult.isSuccess()) { - result.setApplicationNames(Collections3.extractToList((Collection)((Collection)appResult.getData()), (String)"applicationName")); - } else { - this.logger.error("图库详情关联应用名称获取失败,result:[{}]", (Object)JSONObject.toJSONString((Object)appResult)); - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - private List getDeviceList(List resultList, CloudwalkCallContext context) { - ArrayList list = Lists.newArrayListWithCapacity((int)resultList.size()); - try { - List deviceIds = resultList.stream().map(DeviceImageStoreQueryResult::getDeviceId).collect(Collectors.toList()); - CoreDeviceQueryParam param = new CoreDeviceQueryParam(); - param.setIds(deviceIds); - param.setBusinessId(context.getCompany().getCompanyId()); - CloudwalkResult deviceResult = this.atomicDeviceService.list(param, context); - Map deviceMap = new HashMap(); - if (deviceResult.isSuccess()) { - deviceMap = ((List)deviceResult.getData()).stream().collect(Collectors.toMap(device -> device.getId(), device -> device.getDeviceCode())); - } - for (DeviceImageStoreQueryResult result : resultList) { - DeviceInfoResult dr = new DeviceInfoResult(); - dr.setDeviceId(result.getDeviceId()); - dr.setDeviceCode((String)deviceMap.get(result.getDeviceId())); - dr.setDeviceName(result.getDeviceName()); - dr.setIdentifyType(result.getIdentifyType()); - list.add(dr); - } - } - catch (Exception e) { - this.logger.error("exception:{}", (Object)e.getMessage()); - } - return list; - } - - private IsImageStoreAssociated getAssociated(String objectId, long time, String userId, String imageStoreId, Integer action, Integer objectType) { - IsImageStoreAssociated associated = new IsImageStoreAssociated(); - associated.setId(this.getPrimaryId()); - associated.setAssociatedAction(action); - associated.setAssociatedObjectId(objectId); - associated.setAssociatedObjectIdType(objectType); - associated.setCreateTime(Long.valueOf(time)); - associated.setCreateUserId(userId); - associated.setImageStoreId(imageStoreId); - associated.setLastUpdateTime(Long.valueOf(time)); - associated.setLastUpdateUserId(userId); - return associated; - } - - private IsImageStoreAssociated getAssociated(AssociatedParam associatedParam, long time, String userId, String imageStoreId, Integer action, Integer objectType) { - IsImageStoreAssociated associated = this.getAssociated(associatedParam.getObjectId(), time, userId, imageStoreId, action, objectType); - associated.setExpiryBeginDate(associatedParam.getExpiryBeginDate()); - associated.setExpiryEndDate(associatedParam.getExpiryEndDate()); - associated.setValidDateCron(null); - if (!CollectionUtils.isEmpty((Collection)associatedParam.getValidDateCron())) { - associated.setValidDateCron(JSON.toJSONString((Object)associatedParam.getValidDateCron())); - } - return associated; - } - - private List addBaseImageStore(BaseImageStoreParam param, CloudwalkCallContext context, String imageStoreId, String businessId) throws ServiceException { - Object dto; - long time = System.currentTimeMillis(); - List includePersonIds = CollectionUtils.isEmpty((Collection)param.getIncludePersons()) ? new ArrayList() : param.getIncludePersons().stream().map(AssociatedParam::getObjectId).collect(Collectors.toList()); - if (CollectionUtils.isEmpty((Collection)param.getIncludeOrganizations()) && CollectionUtils.isEmpty((Collection)param.getIncludeLabels()) && CollectionUtils.isEmpty(includePersonIds)) { - return new ArrayList(); - } - ArrayList imageStoreAssociatedList = new ArrayList(); - if (CpImageStoreMatchPatternEnum.getByCode((String)param.getMatchPattern()) != null) { - imageStoreAssociatedList.add(this.getAssociated(param.getMatchPattern(), time, context.getUser().getCaller(), imageStoreId, null, (Integer)4)); - } else { - imageStoreAssociatedList.add(this.getAssociated(CpImageStoreMatchPatternEnum.MERGE.getCode(), time, context.getUser().getCaller(), imageStoreId, null, (Integer)4)); - } - AssociatedParam imageStoreAssociatedParam = new AssociatedParam(); - imageStoreAssociatedParam.setObjectId(imageStoreId); - imageStoreAssociatedParam.setExpiryBeginDate(param.getExpiryBeginDate()); - imageStoreAssociatedParam.setExpiryEndDate(param.getExpiryEndDate()); - imageStoreAssociatedParam.setValidDateCron(param.getValidDateCron()); - imageStoreAssociatedList.add(this.getAssociated(imageStoreAssociatedParam, time, context.getUser().getCaller(), imageStoreId, (Integer)0, (Integer)5)); - if (!CollectionUtils.isEmpty((Collection)param.getIncludeOrganizations())) { - if (this.imgStoreOrganizationMapper.getOrgByIds(param.getIncludeOrganizations(), businessId).size() != param.getIncludeOrganizations().size()) { - throw new ServiceException("53013513", this.getMessage("53013513")); - } - for (Object objectId : param.getIncludeOrganizations()) { - imageStoreAssociatedList.add(this.getAssociated((String)objectId, time, context.getUser().getCaller(), imageStoreId, (Integer)0, (Integer)1)); - } - } - if (!CollectionUtils.isEmpty((Collection)param.getIncludeLabels())) { - if (this.imgStoreLabelMapper.getLabelByIds(param.getIncludeLabels(), businessId).size() != param.getIncludeLabels().size()) { - throw new ServiceException("53013514", this.getMessage("53013514")); - } - for (Object objectId : param.getIncludeLabels()) { - imageStoreAssociatedList.add(this.getAssociated((String)objectId, time, context.getUser().getCaller(), imageStoreId, (Integer)0, (Integer)2)); - } - } - if (!CollectionUtils.isEmpty(includePersonIds)) { - dto = new ImgStorePersonQueryDto(); - dto.setIds(includePersonIds); - dto.setBusinessId(businessId); - dto.setIsDel(DelStatusEnum.NORAML.getCode()); - if (this.personMapper.gets((ImgStorePersonQueryDto)dto).size() != includePersonIds.size()) { - throw new ServiceException("53013515", this.getMessage("53013515")); - } - for (AssociatedParam associatedParam : param.getIncludePersons()) { - if (!(param.getNullDateIsLongTerm().booleanValue() || null != associatedParam.getExpiryBeginDate() && null != associatedParam.getExpiryEndDate())) { - associatedParam.setExpiryBeginDate(imageStoreAssociatedParam.getExpiryBeginDate()); - associatedParam.setExpiryEndDate(imageStoreAssociatedParam.getExpiryEndDate()); - associatedParam.setValidDateCron(imageStoreAssociatedParam.getValidDateCron()); - } - imageStoreAssociatedList.add(this.getAssociated(associatedParam, time, context.getUser().getCaller(), imageStoreId, (Integer)0, (Integer)3)); - } - } - if (!CollectionUtils.isEmpty((Collection)param.getExcludeLabels())) { - if (this.imgStoreLabelMapper.getLabelByIds(param.getExcludeLabels(), businessId).size() != param.getExcludeLabels().size()) { - throw new ServiceException("53013516", this.getMessage("53013516")); - } - for (Object objectId : param.getExcludeLabels()) { - imageStoreAssociatedList.add(this.getAssociated((String)objectId, time, context.getUser().getCaller(), imageStoreId, (Integer)1, (Integer)2)); - } - } - if (!CollectionUtils.isEmpty((Collection)param.getExcludePersons())) { - dto = new ImgStorePersonQueryDto(); - dto.setIds((Collection)param.getExcludePersons()); - dto.setBusinessId(businessId); - dto.setIsDel(DelStatusEnum.NORAML.getCode()); - if (this.personMapper.gets((ImgStorePersonQueryDto)dto).size() != param.getExcludePersons().size()) { - throw new ServiceException("53013517", this.getMessage("53013517")); - } - for (String objectId : param.getExcludePersons()) { - imageStoreAssociatedList.add(this.getAssociated(objectId, time, context.getUser().getCaller(), imageStoreId, (Integer)1, (Integer)3)); - } - } - return imageStoreAssociatedList; - } - - private String getBusinessName(String businessId) throws ServiceException { - GeneralQueryBusinessParam generalQueryBusinessParam = new GeneralQueryBusinessParam(); - generalQueryBusinessParam.setId(businessId); - CloudwalkResult cloudwalkResult = this.acBusinessService.generalQuery(generalQueryBusinessParam); - if (cloudwalkResult == null) { - throw new ServiceException("53013535", this.getMessage("53013535")); - } - if (!cloudwalkResult.isSuccess()) { - throw new ServiceException(cloudwalkResult.getCode(), cloudwalkResult.getMessage()); - } - if (cloudwalkResult.getData() != null && ((List)cloudwalkResult.getData()).size() > 0) { - return ((AcBusinessDTO)((List)cloudwalkResult.getData()).get(0)).getName(); - } - return null; - } - - private String getSourceApplicationName(String sourceApplicationId) throws ServiceException { - if (StringUtils.isEmpty((CharSequence)sourceApplicationId)) { - return null; - } - ApplicationBasicParam applicationBasicParam = new ApplicationBasicParam(); - applicationBasicParam.setIds(Arrays.asList(sourceApplicationId)); - CloudwalkResult cloudwalkResult = this.applicationService.gets(applicationBasicParam); - if (cloudwalkResult == null) { - throw new ServiceException("53013547", this.getMessage("53013547")); - } - if (!cloudwalkResult.isSuccess()) { - throw new ServiceException(cloudwalkResult.getCode(), cloudwalkResult.getMessage()); - } - if (cloudwalkResult.getData() != null && ((List)cloudwalkResult.getData()).size() > 0) { - return ((ApplicationResult)((List)cloudwalkResult.getData()).get(0)).getName(); - } - return null; - } - - private void checkExistAndStatus(String iamgeStoreId) throws ServiceException { - AgImageStoreQueryParam queryParam = new AgImageStoreQueryParam(); - queryParam.setId(iamgeStoreId); - CloudwalkResult query = this.agImageStoreService.query(queryParam); - if (!query.isSuccess()) { - throw new ServiceException(query.getCode(), query.getMessage()); - } - if (CollectionUtils.isEmpty((Collection)((Collection)query.getData()))) { - throw new ServiceException("53013502", this.getMessage("53013502")); - } - if (SyncStatusEnum.SYNC_ING.getCode().equals(((AgImageStoreResult)((List)query.getData()).get(0)).getStatus())) { - throw new ServiceException("53013512", this.getMessage("53013512")); - } - } - - private Map getBusinessNameMap() throws ServiceException { - CloudwalkResult listCloudwalkResult = this.acBusinessService.generalQuery(new GeneralQueryBusinessParam()); - if (!listCloudwalkResult.isSuccess()) { - throw new ServiceException(listCloudwalkResult.getCode(), listCloudwalkResult.getMessage()); - } - if (CollectionUtils.isEmpty((Collection)((Collection)listCloudwalkResult.getData()))) { - return new HashMap(); - } - return Collections3.extractToMap((Collection)((Collection)listCloudwalkResult.getData()), (String)"id", (String)"name"); - } - - private Map getSourceApplicationNameMap(String businessId) throws ServiceException { - ApplicationQueryParam param = new ApplicationQueryParam(); - param.setBusinessId(businessId); - param.setStatus(CommonStatusEnum.ENABLE.getCode()); - CloudwalkResult listCloudwalkResult = this.applicationService.query(param); - if (!listCloudwalkResult.isSuccess()) { - throw new ServiceException(listCloudwalkResult.getCode(), listCloudwalkResult.getMessage()); - } - if (CollectionUtils.isEmpty((Collection)((Collection)listCloudwalkResult.getData()))) { - return new HashMap(); - } - return Collections3.extractToMap((Collection)((Collection)listCloudwalkResult.getData()), (String)"id", (String)"name"); - } - - private void getAssociated(ImageStoreDetailResult result) { - GetsImageStoreAssociatedDTO get = new GetsImageStoreAssociatedDTO(); - get.setImageStoreId(result.getId()); - List associateds = this.isImageStoreAssociatedMapper.gets(get); - String matchPattern = null; - ArrayList includeLabelIds = new ArrayList(); - ArrayList includeOrganizationIds = new ArrayList(); - ArrayList includePersonIds = new ArrayList(); - HashMap includePersonMap = new HashMap(); - ArrayList excludeLabelIds = new ArrayList(); - ArrayList excludePersonIds = new ArrayList(); - String businessId = result.getBusinessId(); - for (IsImageStoreAssociated associated : associateds) { - if (4 == associated.getAssociatedObjectIdType()) { - matchPattern = associated.getAssociatedObjectId(); - continue; - } - if (0 == associated.getAssociatedAction()) { - if (1 == associated.getAssociatedObjectIdType()) { - includeOrganizationIds.add(associated.getAssociatedObjectId()); - continue; - } - if (2 == associated.getAssociatedObjectIdType()) { - includeLabelIds.add(associated.getAssociatedObjectId()); - continue; - } - if (3 == associated.getAssociatedObjectIdType()) { - includePersonIds.add(associated.getAssociatedObjectId()); - AssociatedResult associatedResult = new AssociatedResult(); - BeanCopyUtils.copyProperties((Object)associated, (Object)associatedResult); - associatedResult.setObjectId(associated.getAssociatedObjectId()); - includePersonMap.put(associated.getAssociatedObjectId(), associatedResult); - continue; - } - if (5 != associated.getAssociatedObjectIdType()) continue; - result.setExpiryBeginDate(associated.getExpiryBeginDate()); - result.setExpiryEndDate(associated.getExpiryEndDate()); - result.setValidDateCron(JsonUtils.toStrList(associated.getValidDateCron())); - continue; - } - if (1 != associated.getAssociatedAction()) continue; - if (2 == associated.getAssociatedObjectIdType()) { - excludeLabelIds.add(associated.getAssociatedObjectId()); - continue; - } - if (3 != associated.getAssociatedObjectIdType()) continue; - excludePersonIds.add(associated.getAssociatedObjectId()); - } - result.setMatchPattern(matchPattern); - if (!CollectionUtils.isEmpty(includeLabelIds)) { - result.setIncludeLabels(BeanCopyUtils.copy((Collection)this.imgStoreLabelMapper.getLabelByIds(includeLabelIds, businessId), LabelResult.class)); - } else { - result.setIncludeLabels(new ArrayList()); - } - if (!CollectionUtils.isEmpty(includeOrganizationIds)) { - result.setIncludeOrganizations(BeanCopyUtils.copy((Collection)this.imgStoreOrganizationMapper.getOrgByIds(includeOrganizationIds, businessId), OrganizationResult.class)); - } else { - result.setIncludeOrganizations(new ArrayList()); - } - ImgStorePersonQueryDto getDTO = new ImgStorePersonQueryDto(); - if (!CollectionUtils.isEmpty(includePersonIds)) { - getDTO.setIds(includePersonIds); - getDTO.setIsDel(DelStatusEnum.NORAML.getCode()); - List personList = this.personMapper.gets(getDTO); - ArrayList includePersons = new ArrayList(); - personList.forEach(imgStorePerson -> { - ImgStorePersonResult imgStorePersonResult = new ImgStorePersonResult(); - BeanCopyUtils.copyProperties((Object)imgStorePerson, (Object)imgStorePersonResult); - AssociatedResult associatedResult = (AssociatedResult)includePersonMap.get(imgStorePerson.getId()); - BeanCopyUtils.copyProperties((Object)associatedResult, (Object)imgStorePersonResult); - imgStorePersonResult.setValidDateCron(JsonUtils.toStrList(associatedResult.getValidDateCron())); - includePersons.add(imgStorePersonResult); - }); - result.setIncludePersons(includePersons); - } else { - result.setIncludePersons(new ArrayList()); - } - if (!CollectionUtils.isEmpty(excludeLabelIds)) { - result.setExcludeLabels(BeanCopyUtils.copy((Collection)this.imgStoreLabelMapper.getLabelByIds(excludeLabelIds, businessId), LabelResult.class)); - } else { - result.setExcludeLabels(new ArrayList()); - } - if (!CollectionUtils.isEmpty(excludePersonIds)) { - getDTO.setIds(excludePersonIds); - getDTO.setIsDel(DelStatusEnum.NORAML.getCode()); - result.setExcludePersons(BeanCopyUtils.copy((Collection)this.personMapper.gets(getDTO), ImgStorePersonResult.class)); - } else { - result.setExcludePersons(new ArrayList()); - } - } - - private boolean handleQueryParam(QueryImageStoreParam queryParam) { - List imageStoreIds; - if (StringUtils.isNotBlank((CharSequence)queryParam.getOrgId()) || !CollectionUtils.isEmpty((Collection)queryParam.getOrgIds())) { - List orgImageStoreList = this.organizationImageStoreMapper.query((OrganizationImageStoreQueryDTO)BeanCopyUtils.copyProperties((Object)queryParam, OrganizationImageStoreQueryDTO.class)); - GetsImageStoreAssociatedDTO orgParam = new GetsImageStoreAssociatedDTO(); - orgParam.setAssociatedObjectIdType(Integer.valueOf(1)); - ArrayList orgIds = new ArrayList(500); - if (StringUtils.isNotBlank((CharSequence)queryParam.getOrgId())) { - orgIds.add(queryParam.getOrgId()); - } - if (!CollectionUtils.isEmpty((Collection)queryParam.getOrgIds())) { - orgIds.addAll(queryParam.getOrgIds()); - } - orgParam.setAssociatedObjectIds(orgIds); - List orgResultList = this.isImageStoreAssociatedMapper.gets(orgParam); - if (CollectionUtils.isEmpty((Collection)orgImageStoreList) && CollectionUtils.isEmpty((Collection)orgResultList)) { - return true; - } - List imageStoreIds2 = Collections3.extractToList((Collection)orgImageStoreList, (String)"imageStoreId"); - imageStoreIds2.addAll(Collections3.extractToList((Collection)orgResultList, (String)"imageStoreId")); - if (StringUtils.isNotBlank((CharSequence)queryParam.getId())) { - if (!imageStoreIds2.contains(queryParam.getId())) { - return true; - } - } else if (!CollectionUtils.isEmpty((Collection)queryParam.getIds())) { - imageStoreIds2.retainAll(queryParam.getIds()); - } - if (CollectionUtils.isEmpty((Collection)imageStoreIds2)) { - return true; - } - queryParam.setIds(imageStoreIds2); - } - if (!CollectionUtils.isEmpty((Collection)queryParam.getPersonIds())) { - QueryGroupPersonDTO queryGroupPersonDTO = (QueryGroupPersonDTO)BeanCopyUtils.copyProperties((Object)queryParam, QueryGroupPersonDTO.class); - queryGroupPersonDTO.setIsDel(DelStatusEnum.NORAML.getCode()); - List queryResult = this.groupPersonRefMapper.query(queryGroupPersonDTO); - if (CollectionUtils.isEmpty((Collection)queryResult)) { - return true; - } - imageStoreIds = Collections3.extractToList((Collection)queryResult, (String)"imageStoreId"); - if (StringUtils.isNotBlank((CharSequence)queryParam.getId())) { - if (!imageStoreIds.contains(queryParam.getId())) { - return true; - } - } else if (!CollectionUtils.isEmpty((Collection)queryParam.getIds())) { - imageStoreIds.retainAll(queryParam.getIds()); - } - if (CollectionUtils.isEmpty((Collection)imageStoreIds)) { - return true; - } - queryParam.setIds(imageStoreIds); - } - if (!CollectionUtils.isEmpty((Collection)queryParam.getLabelIds())) { - GetsImageStoreAssociatedDTO labelParam = new GetsImageStoreAssociatedDTO(); - labelParam.setAssociatedObjectIdType(Integer.valueOf(2)); - labelParam.setAssociatedObjectIds((Collection)queryParam.getLabelIds()); - List labelResultList = this.isImageStoreAssociatedMapper.gets(labelParam); - if (CollectionUtils.isEmpty((Collection)labelResultList)) { - return true; - } - imageStoreIds = Collections3.extractToList((Collection)labelResultList, (String)"imageStoreId"); - if (StringUtils.isNotBlank((CharSequence)queryParam.getId())) { - if (!imageStoreIds.contains(queryParam.getId())) { - return true; - } - } else if (!CollectionUtils.isEmpty((Collection)queryParam.getIds())) { - imageStoreIds.retainAll(queryParam.getIds()); - } - if (CollectionUtils.isEmpty((Collection)imageStoreIds)) { - return true; - } - queryParam.setIds(imageStoreIds); - } - return false; - } - - private List packageImageStoreResult(Collection agDatas, String businessId) throws ServiceException { - if (CollectionUtils.isEmpty(agDatas)) { - return new ArrayList(); - } - List imageIds = agDatas.stream().map(AgImageStoreResult::getId).collect(Collectors.toList()); - long startTime = System.currentTimeMillis(); - ArrayList countByImageStoreIds = Lists.newArrayListWithCapacity((int)imageIds.size()); - List partition = Lists.partition(imageIds, (int)this.searchSize); - partition.stream().forEach(p -> { - List list = this.groupPersonRefMapper.getCountByImageStoreIds(p); - if (!CollectionUtils.isEmpty((Collection)list)) { - countByImageStoreIds.addAll(list); - } - }); - long endTime = System.currentTimeMillis(); - this.logger.info("图库分页查询耗时:[{}],searchSize:[{}]", (Object)(endTime - startTime), (Object)this.searchSize); - Map countMap = countByImageStoreIds.stream().filter(imageStoreCountDTO -> null != imageStoreCountDTO).collect(Collectors.toMap(ImageStoreCountDTO::getId, ImageStoreCountDTO::getCount, (k1, k2) -> k1)); - Map businessNameMap = this.getBusinessNameMap(); - Map sourceApplicationNameMap = this.getSourceApplicationNameMap(businessId); - ArrayList resultList = new ArrayList(agDatas.size()); - for (AgImageStoreResult agData : agDatas) { - ImageStoreResult temp = (ImageStoreResult)BeanCopyUtils.copyProperties((Object)agData, ImageStoreResult.class); - temp.setBusinessName(businessNameMap.get(temp.getBusinessId())); - temp.setSourceApplicationName(sourceApplicationNameMap.get(temp.getSourceApplicationId())); - temp.setPersonNum(countMap.containsKey(agData.getId()) ? countMap.get(agData.getId()) : Integer.valueOf(0)); - this.getAssociated((ImageStoreDetailResult)temp); - resultList.add(temp); - } - return resultList; - } - - private List packageCpResult(Collection agDatas, String businessId) throws ServiceException { - if (CollectionUtils.isEmpty(agDatas)) { - return new ArrayList(); - } - List imageIds = agDatas.stream().map(AgImageStoreResult::getId).collect(Collectors.toList()); - long startTime = System.currentTimeMillis(); - ArrayList countByImageStoreIds = Lists.newArrayListWithCapacity((int)imageIds.size()); - List partition = Lists.partition(imageIds, (int)this.searchSize); - partition.stream().forEach(p -> { - List list = this.groupPersonRefMapper.getCountByImageStoreIds(p); - if (!CollectionUtils.isEmpty((Collection)list)) { - countByImageStoreIds.addAll(list); - } - }); - long endTime = System.currentTimeMillis(); - this.logger.info("图库分页查询耗时:[{}],searchSize:[{}]", (Object)(endTime - startTime), (Object)this.searchSize); - Map countMap = countByImageStoreIds.stream().filter(imageStoreCountDTO -> null != imageStoreCountDTO).collect(Collectors.toMap(ImageStoreCountDTO::getId, ImageStoreCountDTO::getCount, (k1, k2) -> k1)); - Map businessNameMap = this.getBusinessNameMap(); - Map sourceApplicationNameMap = this.getSourceApplicationNameMap(businessId); - ArrayList resultList = new ArrayList(agDatas.size()); - for (AgImageStoreResult agData : agDatas) { - PageImageStoreResult temp = (PageImageStoreResult)BeanCopyUtils.copyProperties((Object)agData, PageImageStoreResult.class); - temp.setBusinessName(businessNameMap.get(temp.getBusinessId())); - temp.setSourceApplicationName(sourceApplicationNameMap.get(temp.getSourceApplicationId())); - temp.setPersonNum(countMap.containsKey(agData.getId()) ? countMap.get(agData.getId()) : Integer.valueOf(0)); - resultList.add(temp); - } - return resultList; - } - - private Integer getPersonNum(String id) { - List countByImageStoreIds = this.groupPersonRefMapper.getCountByImageStoreIds((List)Lists.newArrayList((Object[])new String[]{id})); - if (CollectionUtils.isEmpty((Collection)countByImageStoreIds) || countByImageStoreIds.get(0) == null) { - return 0; - } - return ((ImageStoreCountDTO)countByImageStoreIds.get(0)).getCount(); - } -} - diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/ImgPersonBatchDetailServiceImpl.java b/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/ImgPersonBatchDetailServiceImpl.java deleted file mode 100644 index fe9a6378..00000000 --- a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/ImgPersonBatchDetailServiceImpl.java +++ /dev/null @@ -1,57 +0,0 @@ -package cn.cloudwalk.service.organization.service; -// 业务服务 -import cn.cloudwalk.client.organization.batch.param.BatchDetailInsertBatchParam; -import cn.cloudwalk.client.organization.batch.param.BatchDetailQueryParam; -import cn.cloudwalk.client.organization.batch.result.BatchDetailResult; -import cn.cloudwalk.client.organization.batch.service.ImgPersonBatchDetailService; -import cn.cloudwalk.cloud.context.CloudwalkCallContext; -import cn.cloudwalk.cloud.exception.ServiceException; -import cn.cloudwalk.cloud.page.CloudwalkPageAble; -import cn.cloudwalk.cloud.page.CloudwalkPageInfo; -import cn.cloudwalk.cloud.result.CloudwalkResult; -import cn.cloudwalk.cloud.utils.BeanCopyUtils; -import cn.cloudwalk.data.organization.entity.BatchDetail; -import cn.cloudwalk.data.organization.mapper.ImgPersonBatchDetailMapper; -import com.github.pagehelper.Page; -import com.github.pagehelper.PageHelper; -import java.util.Collection; -import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; - -@Service -public class ImgPersonBatchDetailServiceImpl -implements ImgPersonBatchDetailService { - private Logger logger = LoggerFactory.getLogger(this.getClass()); - @Autowired - private ImgPersonBatchDetailMapper imgPersonBatchDetailMapper; - - public CloudwalkResult> page(BatchDetailQueryParam param, CloudwalkPageInfo page, CloudwalkCallContext context) throws ServiceException { - Object result; - BatchDetail batchDetail = (BatchDetail)BeanCopyUtils.copyProperties((Object)param, (Object)new BatchDetail()); - CloudwalkPageAble pageAble = null; - try { - PageHelper.startPage((int)page.getCurrentPage(), (int)page.getPageSize()); - result = (Page)this.imgPersonBatchDetailMapper.page(batchDetail); - pageAble = new CloudwalkPageAble((Collection)result.getResult(), page, result.getTotal()); - } - catch (Exception e) { - this.logger.error("导入详情查询失败,原因:", e); - throw new ServiceException(e); - } - result = BeanCopyUtils.copy((Collection)pageAble.getDatas(), BatchDetailResult.class); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - public CloudwalkResult insertBatch(List batchDetails) { - if (!CollectionUtils.isEmpty(batchDetails)) { - List list = BeanCopyUtils.copy(batchDetails, BatchDetail.class); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } -} - diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/ImgPersonBatchServiceImpl.java b/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/ImgPersonBatchServiceImpl.java deleted file mode 100644 index ecdde15c..00000000 --- a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/ImgPersonBatchServiceImpl.java +++ /dev/null @@ -1,535 +0,0 @@ -package cn.cloudwalk.service.organization.service; -// 业务服务 -import cn.cloudwalk.client.aggregate.common.enums.DelStatusEnum; -import cn.cloudwalk.client.organization.batch.param.BatchDetailInsertBatchParam; -import cn.cloudwalk.client.organization.batch.param.BatchImportQueryParam; -import cn.cloudwalk.client.organization.batch.result.BatchImportQueryResult; -import cn.cloudwalk.client.organization.batch.service.ImgPersonBatchDetailService; -import cn.cloudwalk.client.organization.batch.service.ImgPersonBatchService; -import cn.cloudwalk.client.organization.common.constant.ImageStoreConstants; -import cn.cloudwalk.client.organization.common.enums.CpPersonSourceEnum; -import cn.cloudwalk.client.organization.common.exception.ImageStoreException; -import cn.cloudwalk.client.organization.personimg.param.AddImgPersonParam; -import cn.cloudwalk.client.organization.personimg.param.BatchImportParam; -import cn.cloudwalk.client.organization.result.ZoneResult; -import cn.cloudwalk.client.organization.service.PersonFileService; -import cn.cloudwalk.client.organization.service.PictureRevisionService; -import cn.cloudwalk.cloud.context.CloudwalkCallContext; -import cn.cloudwalk.cloud.exception.ServiceException; -import cn.cloudwalk.cloud.page.CloudwalkPageAble; -import cn.cloudwalk.cloud.page.CloudwalkPageInfo; -import cn.cloudwalk.cloud.result.CloudwalkResult; -import cn.cloudwalk.cloud.serial.UUIDSerial; -import cn.cloudwalk.cloud.utils.BeanCopyUtils; -import cn.cloudwalk.cloud.utils.CloudwalkDateUtils; -import cn.cloudwalk.component.client.resource.ext.user.param.PortalUserAccountBatchAddParam; -import cn.cloudwalk.component.client.resource.ext.user.result.PortalUserAccountBatchAddResult; -import cn.cloudwalk.component.client.resource.ext.user.service.PortalUserService; -import cn.cloudwalk.data.organization.entity.BatchImport; -import cn.cloudwalk.data.organization.entity.ImgStorePerson; -import cn.cloudwalk.data.organization.entity.ImgStorePersonLabel; -import cn.cloudwalk.data.organization.entity.ImgStorePersonOrganization; -import cn.cloudwalk.data.organization.entity.ImgStorePersonProperties; -import cn.cloudwalk.data.organization.entity.Label; -import cn.cloudwalk.data.organization.entity.Organization; -import cn.cloudwalk.data.organization.mapper.ImgStorePersonPropertiesMapper; -import cn.cloudwalk.data.organization.mapper.PersonBatchImportMapper; -import cn.cloudwalk.service.organization.common.AbstractImagStoreService; -import cn.cloudwalk.service.organization.common.OpenCvUtils; -import cn.cloudwalk.service.organization.schedule.BatchImportContext; -import cn.cloudwalk.service.organization.service.CpImageStorePersonSynManager; -import cn.cloudwalk.service.organization.service.ImgPersonManager; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.github.pagehelper.Page; -import com.github.pagehelper.PageHelper; -import com.google.common.collect.Sets; -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Field; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import javax.annotation.Resource; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.MessageSource; -import org.springframework.context.i18n.LocaleContextHolder; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ReflectionUtils; -import org.springframework.web.multipart.MultipartFile; -import org.springside.modules.utils.Collections3; - -@Service -public class ImgPersonBatchServiceImpl -extends AbstractImagStoreService -implements ImgPersonBatchService { - private final String ORG_NAME = "organizationIds"; - private final String LABEL_NAME = "labelIds"; - private final String floorName = "floorName"; - private final String floorNames = "floorNames"; - private final String COMPARE_PICTURE_NAME = "comparePicture"; - private final String PHONE_REGEXP = "^[1][3,4,5,6,7,8,9][0-9]{9}$"; - private final String EMAIL_REGEXP = "^[A-Za-z0-9]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"; - private final String NO_CHINESE_REGEXP = "^[^\\u4e00-\\u9fa5]+$"; - @Autowired - private MessageSource messageSource; - @Autowired - private PersonBatchImportMapper personBatchImportMapper; - @Autowired - private ImgPersonBatchDetailService imgPersonBatchDetailService; - @Autowired - private UUIDSerial uuidSerial; - @Autowired - private ImgPersonManager imgPersonManager; - @Autowired - private OpenCvUtils openCvUtils; - @Autowired - private PictureRevisionService pictureRevisionService; - @Autowired - private PortalUserService portalUserService; - @Autowired - private CpImageStorePersonSynManager cpImageStorePersonSynManager; - @Value(value="${imageQualityScore}") - private Double imgQualityScore; - @Resource - private PersonFileService personFileService; - @Resource - private ImgStorePersonPropertiesMapper propertiesMapper; - - public void handlerBatchPersonImport(List> batchRecordList, T context, String filePath) { - BatchImportContext importContext = (BatchImportContext)context; - ArrayList batchDetailInsertBatchParams = new ArrayList(batchRecordList.size()); - List personParamList = this.generatePersonParams(batchRecordList, filePath, importContext, batchDetailInsertBatchParams); - ArrayList needInsertList = new ArrayList(personParamList.size()); - ArrayList personOrganizationList = new ArrayList(personParamList.size()); - ArrayList personLabelList = new ArrayList(personParamList.size()); - ArrayList needCreateAccountList = new ArrayList(personParamList.size()); - this.personParamsToEntity(importContext, batchDetailInsertBatchParams, personParamList, needInsertList, personOrganizationList, personLabelList, needCreateAccountList); - try { - List errorInfoList; - if (!CollectionUtils.isEmpty(needCreateAccountList) && !CollectionUtils.isEmpty(errorInfoList = this.addUserAccountUsePortal(importContext, needCreateAccountList))) { - List errorPersonIdList = Collections3.extractToList(errorInfoList, (String)"personId"); - this.removeErrorEntity(needInsertList, personOrganizationList, personLabelList, errorPersonIdList); - for (PortalUserAccountBatchAddResult.ErrorInfo errorInfo : errorInfoList) { - batchDetailInsertBatchParams.add(this.generateBatchDetail(importContext, errorInfo.getPersonName(), errorInfo.getErrorMsg(), 2)); - } - } - this.imgPersonManager.batchInsertWithTx(needInsertList, personOrganizationList, personLabelList); - List batchInsertPersonIds = needInsertList.parallelStream().map(ImgStorePerson::getId).collect(Collectors.toList()); - HashSet imageIdResultSet = Sets.newHashSet(); - batchInsertPersonIds.parallelStream().forEach(personId -> imageIdResultSet.addAll(this.cpImageStorePersonSynManager.addGroupPersonSynTask((String)personId))); - if (Collections3.isNotEmpty((Collection)imageIdResultSet)) { - imageIdResultSet.parallelStream().forEach(imageId -> this.cpImageStorePersonSynManager.handleGroupPersonSynTask((String)imageId)); - } - for (ImgStorePerson storePerson : needInsertList) { - batchDetailInsertBatchParams.add(this.generateBatchDetail(importContext, storePerson.getName(), "", 1)); - } - } - catch (Exception e) { - this.logger.error("person import data insert exception", e); - for (ImgStorePerson storePerson : needInsertList) { - batchDetailInsertBatchParams.add(this.generateBatchDetail(importContext, storePerson.getName(), "数据插入异常", 2)); - } - needInsertList.clear(); - } - try { - this.imgPersonBatchDetailService.insertBatch(batchDetailInsertBatchParams); - } - catch (Exception e) { - this.logger.error("---person import batch detail insert exception", e); - } - importContext.getSuccessCount().getAndAdd(needInsertList.size()); - importContext.getFailCount().getAndAdd(batchDetailInsertBatchParams.size() - needInsertList.size()); - } - - private List addUserAccountUsePortal(BatchImportContext importContext, List needCreateAccountList) throws ServiceException { - PortalUserAccountBatchAddParam userAccountBatchAddParam = new PortalUserAccountBatchAddParam(); - userAccountBatchAddParam.setBusinessId(importContext.getBatchImport().getBusinessId()); - userAccountBatchAddParam.setUserInfos(this.generateUserInfo(needCreateAccountList)); - CloudwalkResult batchAddResult = this.portalUserService.batchAdd(userAccountBatchAddParam); - if (!batchAddResult.isSuccess()) { - this.logger.error("call cwos add user account failed, result:[{}]", (Object)JSON.toJSONString((Object)batchAddResult)); - throw new ServiceException(batchAddResult.getCode(), batchAddResult.getMessage()); - } - return ((PortalUserAccountBatchAddResult)batchAddResult.getData()).getErrorInfoList(); - } - - private List generateUserInfo(List needInsertList) { - ArrayList userInfoList = new ArrayList(needInsertList.size()); - for (ImgStorePerson imgStorePerson : needInsertList) { - PortalUserAccountBatchAddParam.UserInfo userInfo = new PortalUserAccountBatchAddParam.UserInfo(); - userInfo.setPersonId(imgStorePerson.getId()); - userInfo.setSystemId(imgStorePerson.getSysAccountId()); - userInfo.setName(imgStorePerson.getName()); - userInfo.setUserName(imgStorePerson.getUserName()); - userInfo.setEmail(imgStorePerson.getEmail()); - userInfo.setPhone(imgStorePerson.getPhone()); - userInfo.setPersonCode(imgStorePerson.getPersonCode()); - userInfo.setCorpAdmin(Short.valueOf((short)2)); - userInfo.setUserLevel(Short.valueOf((short)3)); - userInfoList.add(userInfo); - } - return userInfoList; - } - - private void removeErrorEntity(List needInsertList, List personOrganizationList, List personLabelList, List errorPersonIdList) { - needInsertList.removeIf(next -> errorPersonIdList.contains(next.getId())); - personLabelList.removeIf(next -> errorPersonIdList.contains(next.getPersonId())); - personOrganizationList.removeIf(next -> errorPersonIdList.contains(next.getPersonId())); - } - - private void personParamsToEntity(BatchImportContext importContext, List batchDetailInsertBatchParams, List personParamList, List needInsertList, List personOrganizationList, List personLabelList, List needCreateAccoutList) { - for (AddImgPersonParam personParam : personParamList) { - try { - ImgStorePerson imgStorePerson = this.generatePersonDTO(importContext, personParam); - needInsertList.add(imgStorePerson); - if (personParam.getCreateSysAccount() != null && personParam.getCreateSysAccount().intValue() == 1) { - needCreateAccoutList.add(imgStorePerson); - } - if (!CollectionUtils.isEmpty((Collection)personParam.getOrganizationIds())) { - personOrganizationList.addAll(this.generatePersonOrganizations(imgStorePerson.getId(), personParam.getOrganizationIds(), importContext)); - } - if (CollectionUtils.isEmpty((Collection)personParam.getLabelIds())) continue; - personLabelList.addAll(this.generatePersonLabels(imgStorePerson.getId(), personParam.getLabelIds(), importContext)); - } - catch (ServiceException e) { - this.logger.warn("package person data exception:{}", (Object)e.getMessage()); - batchDetailInsertBatchParams.add(this.generateBatchDetail(importContext, personParam.getName(), e.getMessage(), 2)); - } - catch (Exception e) { - this.logger.error("package person data exception:{}", (Object)e.getMessage()); - batchDetailInsertBatchParams.add(this.generateBatchDetail(importContext, personParam.getName(), "人员数据封装异常", 2)); - } - } - } - - private List generatePersonParams(List> batchRecordList, String filePath, BatchImportContext importContext, List batchDetailInsertBatchParams) { - ArrayList personParamList = new ArrayList(batchRecordList.size()); - AddImgPersonParam addPersonParam = null; - for (List record : batchRecordList) { - addPersonParam = new AddImgPersonParam(); - try { - this.checkRecordAndFillParam(record, importContext, filePath, addPersonParam); - this.logger.info("addPersonParam after properties handle :[{}]", (Object)JSON.toJSONString((Object)addPersonParam)); - personParamList.add(addPersonParam); - } - catch (ImageStoreException | ServiceException e) { - batchDetailInsertBatchParams.add(this.generateBatchDetail(importContext, record.get(0), e.getMessage(), 2)); - } - catch (Exception e) { - this.logger.error("Batch import person,checkRecordAndFillParam exception:{}", (Object)e.getMessage()); - batchDetailInsertBatchParams.add(this.generateBatchDetail(importContext, record.get(0), "未知错误", 2)); - } - } - return personParamList; - } - - private Collection generatePersonLabels(String personId, List labelIds, BatchImportContext importContext) { - ArrayList personLabels = new ArrayList(labelIds.size()); - for (String labelId : labelIds) { - ImgStorePersonLabel imgStorePersonLabel = new ImgStorePersonLabel(); - imgStorePersonLabel.setCreateTime(Long.valueOf(System.currentTimeMillis())); - imgStorePersonLabel.setCreateUserId(importContext.getBatchImport().getCreateUserId()); - imgStorePersonLabel.setLabelId(labelId); - imgStorePersonLabel.setPersonId(personId); - imgStorePersonLabel.setId(CloudwalkDateUtils.getUUID()); - personLabels.add(imgStorePersonLabel); - } - return personLabels; - } - - private Collection generatePersonOrganizations(String personId, List organizationIds, BatchImportContext importContext) { - ArrayList personOrganizations = new ArrayList(organizationIds.size()); - for (String orgId : organizationIds) { - ImgStorePersonOrganization imgStorePersonOrganization = new ImgStorePersonOrganization(); - imgStorePersonOrganization.setCreateTime(Long.valueOf(System.currentTimeMillis())); - imgStorePersonOrganization.setCreateUserId(importContext.getBatchImport().getCreateUserId()); - imgStorePersonOrganization.setPersonId(personId); - imgStorePersonOrganization.setOrgId(orgId); - imgStorePersonOrganization.setId(CloudwalkDateUtils.getUUID()); - personOrganizations.add(imgStorePersonOrganization); - } - return personOrganizations; - } - - private ImgStorePerson generatePersonDTO(BatchImportContext importContext, AddImgPersonParam personParam) throws ServiceException { - ImgStorePerson personDto = new ImgStorePerson(); - BeanCopyUtils.copyProperties((Object)personParam, (Object)personDto); - personDto.setId(this.uuidSerial.uuid()); - if (!StringUtils.isEmpty((CharSequence)personParam.getComparePicture())) { - personDto.setImageId(this.imgPersonManager.addAgImage(personParam.getComparePicture(), this.getCloudwalkContext())); - } - personDto.setComparePicture(personParam.getComparePicture()); - personDto.setBusinessId(importContext.getBatchImport().getBusinessId()); - personDto.setCreateUserId(importContext.getBatchImport().getCreateUserId()); - personDto.setIsDel(DelStatusEnum.NORAML.getCode()); - personDto.setStatus(Short.valueOf((short)0)); - personDto.setCreateTime(Long.valueOf(System.currentTimeMillis())); - personDto.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - personDto.setLastUpdateUserId(importContext.getBatchImport().getCreateUserId()); - personDto.setCreateSysAccount(Short.valueOf(personParam.getCreateSysAccount() == null ? (short)0 : personParam.getCreateSysAccount())); - personDto.setSysAccountId(personParam.getSysAccountId()); - personDto.setSource(CpPersonSourceEnum.PAGE.getCode()); - personDto.setIcCardNo(personParam.getIcCardNo()); - personDto.setIcCardType(personParam.getIcCardType()); - personDto.setWelcome(personParam.getWelcome()); - personDto.setReserveInfo(personParam.getReserveInfo()); - return personDto; - } - - private void checkRecordAndFillParam(List record, BatchImportContext importContext, String filePath, AddImgPersonParam addPersonParam) throws ImageStoreException, ServiceException { - Map namePropertiesMap = importContext.getNameCodeMap(); - Map indexNameMap = importContext.getNameIndexMap(); - Map orgNameMap = importContext.getOrgNameMap(); - Map labelNameMap = importContext.getLabelNameMap(); - Map zoneMap = importContext.getZoneMap(); - if (namePropertiesMap.size() < 12) { - throw new ImageStoreException("53014029", "人员属性未设置"); - } - for (int i = 0; i < record.size(); ++i) { - Pattern pattern; - Matcher matcher; - String value = record.get(i); - String name = indexNameMap.get(i); - ImgStorePersonProperties properties = namePropertiesMap.get(name); - if (properties == null) continue; - try { - this.checkField(properties, value); - } - catch (ImageStoreException e) { - this.logger.warn("当前属性值缺失{}", (Object)JSONObject.toJSONString(record)); - throw new ImageStoreException("53014017", properties.getName() + "没有有效值"); - } - if (StringUtils.isEmpty((CharSequence)value)) continue; - if ("personCode".equals(properties.getCode()) && !(matcher = (pattern = Pattern.compile("^[^\\u4e00-\\u9fa5]+$")).matcher(value)).matches()) { - this.logger.warn("文件内工号格式不正确,name:[{}], value:[{}]", (Object)properties.getName(), (Object)value); - throw new ImageStoreException("53014001", String.format("%s[%s]文件内工号格式不正确", properties.getName(), value)); - } - if ("userName".equals(properties.getCode()) && !(matcher = (pattern = Pattern.compile("^[^\\u4e00-\\u9fa5]+$")).matcher(value)).matches()) { - this.logger.warn("文件内用户名格式不正确,name:[{}], value:[{}]", (Object)properties.getName(), (Object)value); - throw new ImageStoreException("53014003", String.format("%s[%s]文件内用户名格式不正确", properties.getName(), value)); - } - if ("phone".equals(properties.getCode()) && !(matcher = (pattern = Pattern.compile("^[1][3,4,5,6,7,8,9][0-9]{9}$")).matcher(value)).matches()) { - this.logger.warn("文件内手机号格式不正确,name:[{}], value:[{}]", (Object)properties.getName(), (Object)value); - throw new ImageStoreException("53014017", String.format("%s[%s]文件内手机号格式不正确", properties.getName(), value)); - } - if ("email".equals(properties.getCode()) && !(matcher = (pattern = Pattern.compile("^[A-Za-z0-9]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$")).matcher(value)).matches()) { - this.logger.warn("文件内邮箱格式不正确,name:[{}], value:[{}]", (Object)properties.getName(), (Object)value); - throw new ImageStoreException("53014017", String.format("%s[%s]文件内邮箱格式不正确", properties.getName(), value)); - } - if ("floorName".equals(properties.getCode())) { - addPersonParam.setDefaultFloor(this.handlerZoneName(value, zoneMap)); - continue; - } - if ("floorNames".equals(properties.getCode())) { - addPersonParam.setChooseFloor(this.handlerZoneName(value, zoneMap)); - continue; - } - if ("organizationIds".equals(properties.getCode())) { - addPersonParam.setOrganizationIds(this.handlerOrgName(value, orgNameMap)); - continue; - } - if ("labelIds".equals(properties.getCode())) { - addPersonParam.setLabelIds(this.handlerLabelName(value, labelNameMap)); - continue; - } - if ("sysAccountId".equals(properties.getCode())) { - if (StringUtils.isBlank((CharSequence)value)) { - addPersonParam.setCreateSysAccount(Short.valueOf((short)0)); - addPersonParam.setSysAccountId(null); - continue; - } - addPersonParam.setCreateSysAccount(Short.valueOf((short)1)); - addPersonParam.setSysAccountId(value); - continue; - } - this.handlerPropertyTypeAndFillParam(properties, value, filePath, addPersonParam, importContext); - } - if (CollectionUtils.isEmpty((Collection)addPersonParam.getLabelIds()) && CollectionUtils.isEmpty((Collection)addPersonParam.getOrganizationIds())) { - this.logger.warn("组织/标签至少二选一"); - throw new ImageStoreException("53014020", "组织/标签至少二选一"); - } - } - - private String handlerZoneName(String value, Map zoneMap) { - String floorId = ""; - if (!StringUtils.isEmpty((CharSequence)value)) { - String[] floorArrs; - value = value.replaceAll("\\s+", ""); - for (String floor : floorArrs = value.split(",")) { - if (!zoneMap.containsKey(floor)) continue; - if (StringUtils.isNotEmpty((CharSequence)floorId)) { - floorId = floorId + ","; - } - floorId = floorId + zoneMap.get(floor).getId(); - } - } - return floorId; - } - - private List handlerOrgName(String value, Map orgNameMap) { - ArrayList orgIds = new ArrayList(); - if (!StringUtils.isEmpty((CharSequence)value)) { - String[] orgNameArr; - value = value.replaceAll("\\s+", ""); - for (String orgName : orgNameArr = value.split(";")) { - if (!orgNameMap.containsKey(orgName)) continue; - orgIds.add(orgNameMap.get(orgName).getId()); - } - } - return orgIds; - } - - private List handlerLabelName(String value, Map labelNameMap) { - ArrayList labelIds = new ArrayList(); - if (!StringUtils.isEmpty((CharSequence)value)) { - String[] labelNameArr; - value = value.replaceAll("\\s+", ""); - for (String labelName : labelNameArr = value.split(";")) { - if (!labelNameMap.containsKey(labelName)) continue; - labelIds.add(labelNameMap.get(labelName).getId()); - } - } - return labelIds; - } - - private void handlerPropertyTypeAndFillParam(ImgStorePersonProperties properties, String value, String filePath, AddImgPersonParam addPersonParam, BatchImportContext context) throws ImageStoreException, ServiceException { - switch (properties.getType()) { - case 4: { - long copyImageTimeStart = System.currentTimeMillis(); - String fullPath = filePath + File.separator + value; - try { - MultipartFile multipartFile = this.personFileService.buildMultipartFile(value, Files.readAllBytes(Paths.get(fullPath, new String[0]))); - CloudwalkResult result = null; - result = "comparePicture".equalsIgnoreCase(properties.getCode()) ? this.personFileService.uploadCompressImage2(multipartFile) : this.personFileService.uploadImage(multipartFile); - if (!result.isSuccess()) { - throw new ImageStoreException(result.getCode(), result.getMessage()); - } - context.getImageCopyTime().getAndAdd(System.currentTimeMillis() - copyImageTimeStart); - String relativePath = null != result.getData() ? (String)result.getData() : ""; - this.populateBeanValue(properties, relativePath, addPersonParam); - break; - } - catch (IOException e) { - throw new ImageStoreException("53014017", properties.getName() + "不存在/无效"); - } - } - case 3: { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date date = null; - try { - date = simpleDateFormat.parse(value); - } - catch (ParseException e) { - this.logger.warn("当前时间格式不合法", e); - throw new ImageStoreException("53014017", properties.getName() + "格式不合法"); - } - this.populateBeanValue(properties, date.getTime(), addPersonParam); - break; - } - case 1: - case 2: { - this.populateBeanValue(properties, value, addPersonParam); - break; - } - default: { - this.logger.warn("当前属性类型不合法"); - throw new ImageStoreException("53014017", "当前属性类型不合法"); - } - } - } - - private BatchDetailInsertBatchParam generateBatchDetail(BatchImportContext importContext, String personName, String remark, int status) { - BatchDetailInsertBatchParam batchDetail = new BatchDetailInsertBatchParam(); - batchDetail.setId(CloudwalkDateUtils.getUUID()); - batchDetail.setBatchId(importContext.getBatchImport().getId()); - batchDetail.setFileName(importContext.getBatchImport().getFileName()); - batchDetail.setCreateTime(importContext.getBatchImport().getCreateTime()); - batchDetail.setCreateUserId(importContext.getBatchImport().getCreateUserId()); - batchDetail.setPersonName(personName); - batchDetail.setRemark(remark); - batchDetail.setStatus(Integer.valueOf(status)); - return batchDetail; - } - - private void checkField(ImgStorePersonProperties properties, String cellValue) throws ImageStoreException { - short required; - short s = required = properties.getHasRequired() == null ? (short)0 : properties.getHasRequired().shortValue(); - if (required == 1 && StringUtils.isEmpty((CharSequence)cellValue)) { - throw new ImageStoreException("53014017", properties.getReminder()); - } - } - - private void populateBeanValue(ImgStorePersonProperties properties, S source, T target) throws ImageStoreException { - String fieldName = properties.getCode(); - Field targetField = ReflectionUtils.findField(target.getClass(), (String)fieldName); - if (targetField == null) { - throw new ImageStoreException("53014016", this.messageSource.getMessage("53014016", null, LocaleContextHolder.getLocale())); - } - targetField.setAccessible(true); - if ("createSysAccount".equals(fieldName)) { - ReflectionUtils.setField((Field)targetField, target, (Object)Short.valueOf(String.valueOf(source))); - } else { - if (StringUtils.isEmpty((CharSequence)String.valueOf(source))) { - source = null; - } - if (ImageStoreConstants.getCustProperties().contains(properties.getCode())) { - ReflectionUtils.setField((Field)targetField, target, (Object)String.valueOf(source)); - } else { - ReflectionUtils.setField((Field)targetField, target, source); - } - } - } - - public CloudwalkResult insert(BatchImportParam param, CloudwalkCallContext context) throws ServiceException { - BatchImport batchImport = new BatchImport(); - batchImport.setBatchNo(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())); - batchImport.setBusinessId(StringUtils.isEmpty((CharSequence)param.getBusinessId()) ? context.getCompany().getCompanyId() : param.getBusinessId()); - batchImport.setId(CloudwalkDateUtils.getUUID()); - batchImport.setCreateTime(Long.valueOf(System.currentTimeMillis())); - batchImport.setCreateUserId(context.getUser().getCaller()); - batchImport.setStatus(Integer.valueOf(1)); - batchImport.setType(Integer.valueOf(2)); - batchImport.setOperation("1"); - batchImport.setFilePath(param.getFilePath()); - batchImport.setFileName(param.getFilePath().substring(param.getFilePath().lastIndexOf(File.separator) + 1)); - batchImport.setLoginName(context.getUser().getCallerName()); - int count = this.personBatchImportMapper.insert(batchImport); - if (count < 1) { - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - public CloudwalkResult> page(BatchImportQueryParam param, CloudwalkPageInfo page, CloudwalkCallContext context) throws ServiceException { - Object result; - BatchImport batchImportQuery = (BatchImport)BeanCopyUtils.copyProperties((Object)param, (Object)new BatchImport()); - batchImportQuery.setBusinessId(StringUtils.isEmpty((CharSequence)param.getBusinessId()) ? context.getCompany().getCompanyId() : param.getBusinessId()); - CloudwalkPageAble pageAble = null; - try { - PageHelper.startPage((int)page.getCurrentPage(), (int)page.getPageSize()); - result = (Page)this.personBatchImportMapper.page(batchImportQuery); - pageAble = new CloudwalkPageAble((Collection)result.getResult(), page, result.getTotal()); - } - catch (Exception e) { - this.logger.error("分页查询批量导入记录列表信息失败,原因:", e); - throw new ServiceException(e); - } - result = BeanCopyUtils.copy((Collection)pageAble.getDatas(), BatchImportQueryResult.class); - return (CloudwalkResult) CloudwalkResult.success($$$); - } -} - diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/ImgPersonManager.java b/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/ImgPersonManager.java index 04c62958..fce35e1a 100644 --- a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/ImgPersonManager.java +++ b/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/ImgPersonManager.java @@ -27,7 +27,7 @@ import org.springframework.util.CollectionUtils; @Component public class ImgPersonManager { protected final Logger logger = LoggerFactory.getLogger(this.getClass()); - private static final List IMAGE_FILE_FORMAT = Lists.newArrayList((Object[])new String[]{"bmp", "jpg", "jpeg", "png", "BMP", "JPG", "PNG"}); + private static final List IMAGE_FILE_FORMAT = Lists.newArrayList("bmp", "jpg", "jpeg", "png", "BMP", "JPG", "PNG"); private static final String FILE_DOT = "."; @Autowired private AgImageService agImageService; diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/OrganizationTypeServiceImpl.java b/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/OrganizationTypeServiceImpl.java deleted file mode 100644 index 5cfbf266..00000000 --- a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/OrganizationTypeServiceImpl.java +++ /dev/null @@ -1,463 +0,0 @@ -package cn.cloudwalk.service.organization.service; -// 业务服务 -import cn.cloudwalk.client.organization.common.constant.ImageStoreConstants; -import cn.cloudwalk.client.organization.common.enums.OrganizationTypeCodeEnum; -import cn.cloudwalk.client.organization.param.QueryOrgTypeParam; -import cn.cloudwalk.client.organization.param.organization.AddOrganizationTypeParam; -import cn.cloudwalk.client.organization.param.organization.DelOrganizationTypeParam; -import cn.cloudwalk.client.organization.param.organization.EditOrganizationTypeParam; -import cn.cloudwalk.client.organization.param.organization.OrganizationTypePropertyParam; -import cn.cloudwalk.client.organization.result.OrganizationTypeListResult; -import cn.cloudwalk.client.organization.result.OrganizationTypePropertyCommonResult; -import cn.cloudwalk.client.organization.result.OrganizationTypeResult; -import cn.cloudwalk.client.organization.service.OrganizationTypeService; -import cn.cloudwalk.cloud.annotation.CloudwalkParamsValidate; -import cn.cloudwalk.cloud.context.CloudwalkCallContext; -import cn.cloudwalk.cloud.exception.ServiceException; -import cn.cloudwalk.cloud.page.CloudwalkPageAble; -import cn.cloudwalk.cloud.page.CloudwalkPageInfo; -import cn.cloudwalk.cloud.result.CloudwalkResult; -import cn.cloudwalk.cloud.utils.BeanCopyUtils; -import cn.cloudwalk.cloud.utils.CloudwalkDateUtils; -import cn.cloudwalk.data.organization.dto.GetsOrganizationDTO; -import cn.cloudwalk.data.organization.dto.OrganizationTypeQueryDto; -import cn.cloudwalk.data.organization.entity.Organization; -import cn.cloudwalk.data.organization.entity.OrganizationType; -import cn.cloudwalk.data.organization.entity.OrganizationTypeProperties; -import cn.cloudwalk.data.organization.mapper.ImgStoreOrganizationMapper; -import cn.cloudwalk.data.organization.mapper.ImgStoreOrganizationTypeMapper; -import cn.cloudwalk.data.organization.mapper.ImgStoreOrganizationTypePropertiesMapper; -import cn.cloudwalk.service.organization.common.AbstractImagStoreService; -import com.github.pagehelper.Page; -import com.github.pagehelper.PageHelper; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import javax.annotation.Resource; -import org.springframework.context.annotation.Primary; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; - -@Primary -@Service -public class OrganizationTypeServiceImpl -extends AbstractImagStoreService -implements OrganizationTypeService { - @Resource - private ImgStoreOrganizationTypeMapper orgTypeMapper; - @Resource - private ImgStoreOrganizationTypePropertiesMapper orgTypePropertiesMapper; - @Resource - private ImgStoreOrganizationMapper imgStoreOrganizationMapper; - private static final String EXT = "ext"; - - @Transactional(rollbackFor={Exception.class}) - @CloudwalkParamsValidate - public CloudwalkResult add(AddOrganizationTypeParam param, CloudwalkCallContext context) throws ServiceException { - String businessId = StringUtils.isEmpty((Object)param.getBusinessId()) ? context.getCompany().getCompanyId() : param.getBusinessId(); - if (businessId.equals("cloudwalk")) { - throw new ServiceException("53003818", this.getMessage("53003818")); - } - HashSet nameMap = new HashSet(); - List properties = param.getProperties(); - for (OrganizationTypePropertyParam propertyParam : properties) { - nameMap.add(propertyParam.getName()); - } - if (nameMap.size() < properties.size()) { - throw new ServiceException("53003805", this.getMessage("53003805")); - } - OrganizationTypeQueryDto organizationTypeQueryDto = (OrganizationTypeQueryDto)BeanCopyUtils.copyProperties((Object)param, OrganizationTypeQueryDto.class); - organizationTypeQueryDto.setStatus(Integer.valueOf(0)); - organizationTypeQueryDto.setBusinessId(businessId); - List select = this.orgTypeMapper.selectByCondition(organizationTypeQueryDto); - if (!CollectionUtils.isEmpty((Collection)select)) { - throw new ServiceException("53003803", this.getMessage("53003803")); - } - OrganizationType organizationType = (OrganizationType)BeanCopyUtils.copyProperties((Object)param, OrganizationType.class); - String uuid = CloudwalkDateUtils.getUUID(); - organizationType.setId(uuid); - organizationType.setBusinessId(businessId); - organizationType.setCreateTime(Long.valueOf(System.currentTimeMillis())); - organizationType.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - organizationType.setCreateUserId(context.getUser().getCaller()); - organizationType.setLastUpdateUserId(context.getUser().getCaller()); - this.orgTypeMapper.insertSelective(organizationType); - int index = 1; - if (!CollectionUtils.isEmpty((Collection)properties)) { - for (OrganizationTypePropertyParam propertyParam : properties) { - OrganizationTypeProperties property = (OrganizationTypeProperties)BeanCopyUtils.copyProperties((Object)propertyParam, OrganizationTypeProperties.class); - property.setId(CloudwalkDateUtils.getUUID()); - property.setBusinessId(businessId); - property.setOrganizationTypeId(uuid); - property.setCreateTime(Long.valueOf(System.currentTimeMillis())); - property.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - property.setCreateUserId(context.getUser().getCaller()); - property.setLastUpdateUserId(context.getUser().getCaller()); - property.setCode(EXT + index++); - this.orgTypePropertiesMapper.insertSelective(property); - } - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - @Transactional(rollbackFor={Exception.class}) - @CloudwalkParamsValidate - public CloudwalkResult edit(EditOrganizationTypeParam param, CloudwalkCallContext context) throws ServiceException { - block18: { - List typePropertiesDB; - boolean hasOrganization; - List properties; - String businessId; - block19: { - businessId = StringUtils.isEmpty((Object)param.getBusinessId()) ? context.getCompany().getCompanyId() : param.getBusinessId(); - if (businessId.equals("cloudwalk")) { - throw new ServiceException("53003818", this.getMessage("53003818")); - } - HashSet nameMap = new HashSet(); - properties = param.getProperties(); - for (OrganizationTypePropertyParam propertyParam : properties) { - nameMap.add(propertyParam.getName()); - } - if (nameMap.size() < properties.size()) { - throw new ServiceException("53003805", this.getMessage("53003805")); - } - OrganizationTypeQueryDto organizationTypeQuery = new OrganizationTypeQueryDto(); - organizationTypeQuery.setName(param.getName()); - organizationTypeQuery.setStatus(Integer.valueOf(0)); - organizationTypeQuery.setBusinessId(businessId); - List select = this.orgTypeMapper.selectByCondition(organizationTypeQuery); - if (!CollectionUtils.isEmpty((Collection)select)) { - for (OrganizationType type : select) { - if (type.getId().equals(param.getId())) continue; - throw new ServiceException("53003803", this.getMessage("53003803")); - } - } - hasOrganization = false; - boolean hasChildren = false; - GetsOrganizationDTO organizationDTO = new GetsOrganizationDTO(); - organizationDTO.setTypeId(param.getId()); - organizationDTO.setIsDel(Short.valueOf((short)0)); - List organizations = this.imgStoreOrganizationMapper.gets(organizationDTO); - if (!CollectionUtils.isEmpty((Collection)organizations)) { - hasOrganization = true; - ArrayList parentIds = new ArrayList(); - for (Organization organization : organizations) { - parentIds.add(organization.getId()); - } - organizationDTO = new GetsOrganizationDTO(); - organizationDTO.setIsDel(Short.valueOf((short)0)); - organizationDTO.setParentIds(parentIds); - List childrens = this.imgStoreOrganizationMapper.gets(organizationDTO); - if (childrens != null && childrens.size() > 0) { - hasChildren = true; - } - } - if (param.getHasLowerLevel() == 0 && hasChildren) { - throw new ServiceException("53003813", this.getMessage("53003813")); - } - OrganizationType organizationType = (OrganizationType)BeanCopyUtils.copyProperties((Object)organizationTypeQuery, OrganizationType.class); - organizationType.setId(param.getId()); - organizationType.setHasLowerLevel(param.getHasLowerLevel()); - organizationType.setLastUpdateUserId(context.getUser().getCaller()); - organizationType.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - this.orgTypeMapper.updateByPrimaryKeySelective(organizationType); - OrganizationTypeProperties proQuery = new OrganizationTypeProperties(); - proQuery.setOrganizationTypeId(param.getId()); - typePropertiesDB = this.orgTypePropertiesMapper.select(proQuery); - if (properties == null) break block18; - if (!CollectionUtils.isEmpty((Collection)typePropertiesDB)) break block19; - int index = 1; - for (OrganizationTypePropertyParam propertyParam : properties) { - OrganizationTypeProperties property = (OrganizationTypeProperties)BeanCopyUtils.copyProperties((Object)propertyParam, OrganizationTypeProperties.class); - property.setId(CloudwalkDateUtils.getUUID()); - property.setBusinessId(businessId); - property.setOrganizationTypeId(param.getId()); - property.setCreateTime(Long.valueOf(System.currentTimeMillis())); - property.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - property.setCreateUserId(context.getUser().getCaller()); - property.setLastUpdateUserId(context.getUser().getCaller()); - property.setCode(EXT + index++); - property.setStatus(Integer.valueOf(0)); - this.orgTypePropertiesMapper.insertSelective(property); - } - break block18; - } - HashMap DBMap = new HashMap(); - HashSet codeSet = new HashSet(); - for (OrganizationTypeProperties organizationTypeProperties : typePropertiesDB) { - String code = organizationTypeProperties.getCode(); - codeSet.add(code); - DBMap.put(organizationTypeProperties.getId(), organizationTypeProperties); - } - List newList = BeanCopyUtils.copy((Collection)properties, OrganizationTypeProperties.class); - ArrayList newListCopy = new ArrayList(newList); - newListCopy.retainAll(typePropertiesDB); - if (!CollectionUtils.isEmpty(newListCopy)) { - for (OrganizationTypeProperties organizationTypeProperties : newListCopy) { - Integer hasRequired; - if (hasOrganization && organizationTypeProperties.getHasRequired() == 1 && (hasRequired = ((OrganizationTypeProperties)DBMap.get(organizationTypeProperties.getId())).getHasRequired()) != null && hasRequired == 0) { - throw new ServiceException("53003815", this.getMessage("53003815")); - } - organizationTypeProperties.setStatus(Integer.valueOf(0)); - organizationTypeProperties.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - organizationTypeProperties.setLastUpdateUserId(context.getUser().getCaller()); - this.orgTypePropertiesMapper.updateByPrimaryKeySelective(organizationTypeProperties); - } - } - typePropertiesDB.removeAll(newListCopy); - if (!CollectionUtils.isEmpty((Collection)typePropertiesDB)) { - for (OrganizationTypeProperties organizationTypeProperties : typePropertiesDB) { - organizationTypeProperties.setStatus(Integer.valueOf(1)); - organizationTypeProperties.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - organizationTypeProperties.setLastUpdateUserId(context.getUser().getCaller()); - this.orgTypePropertiesMapper.updateByPrimaryKeySelective(organizationTypeProperties); - codeSet.remove(organizationTypeProperties.getCode()); - String typeId = param.getId(); - String codeProperty = organizationTypeProperties.getCode(); - this.imgStoreOrganizationMapper.removePropertyByTypeIdAndCode(typeId, codeProperty); - } - } - newList.removeAll(newListCopy); - if (CollectionUtils.isEmpty((Collection)newList)) break block18; - for (OrganizationTypeProperties organizationTypeProperties : newList) { - if (organizationTypeProperties.getHasRequired() == 1 && hasOrganization) { - throw new ServiceException("53003814", this.getMessage("53003814")); - } - organizationTypeProperties.setId(CloudwalkDateUtils.getUUID()); - organizationTypeProperties.setBusinessId(businessId); - organizationTypeProperties.setOrganizationTypeId(param.getId()); - organizationTypeProperties.setCreateTime(Long.valueOf(System.currentTimeMillis())); - organizationTypeProperties.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - organizationTypeProperties.setCreateUserId(context.getUser().getCaller()); - organizationTypeProperties.setLastUpdateUserId(context.getUser().getCaller()); - organizationTypeProperties.setCode(this.getCode(codeSet)); - organizationTypeProperties.setStatus(Integer.valueOf(0)); - this.orgTypePropertiesMapper.insertSelective(organizationTypeProperties); - } - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - private String getCode(Set codeSet) { - for (int i = 1; i <= 30; ++i) { - if (!codeSet.add(EXT + i)) continue; - return EXT + i; - } - return null; - } - - @Transactional(rollbackFor={Exception.class}) - public CloudwalkResult delete(DelOrganizationTypeParam param, CloudwalkCallContext context) throws ServiceException { - List ids = param.getIds(); - if (!CollectionUtils.isEmpty((Collection)ids)) { - for (String typeId : ids) { - GetsOrganizationDTO getsOrganizationDTO = new GetsOrganizationDTO(); - getsOrganizationDTO.setTypeId(typeId); - getsOrganizationDTO.setIsDel(Short.valueOf((short)0)); - List gets = this.imgStoreOrganizationMapper.gets(getsOrganizationDTO); - if (CollectionUtils.isEmpty((Collection)gets)) continue; - throw new ServiceException("53003304", this.getMessage("53003304")); - } - for (String id : ids) { - OrganizationType organizationType = this.orgTypeMapper.selectByPrimaryKey(id); - if (organizationType == null) { - throw new ServiceException("53003310", this.getMessage("53003310")); - } - organizationType.setId(id); - OrganizationType organizationTypeDB = this.orgTypeMapper.selectByPrimaryKey(id); - if ("cloudwalk".equals(organizationTypeDB.getBusinessId())) { - throw new ServiceException("53003818", this.getMessage("53003818")); - } - organizationType.setStatus(Integer.valueOf(1)); - organizationType.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - organizationType.setLastUpdateUserId(context.getUser().getCaller()); - this.orgTypeMapper.updateByPrimaryKeySelective(organizationType); - OrganizationTypeProperties record = new OrganizationTypeProperties(); - record.setOrganizationTypeId(id); - record.setStatus(Integer.valueOf(1)); - record.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - record.setLastUpdateUserId(context.getUser().getCaller()); - this.orgTypePropertiesMapper.updateByTypeKey(record); - } - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - public CloudwalkResult> page(QueryOrgTypeParam param, CloudwalkPageInfo page, CloudwalkCallContext context) throws ServiceException { - String businessId = context.getCompany().getCompanyId(); - ArrayList results = new ArrayList(); - OrganizationTypeQueryDto record = (OrganizationTypeQueryDto)BeanCopyUtils.copyProperties((Object)param, OrganizationTypeQueryDto.class); - record.setBusinessId(businessId); - record.setStatus(Integer.valueOf(0)); - try { - PageHelper.startPage((int)page.getCurrentPage(), (int)page.getPageSize()); - Page gets = (Page)this.orgTypeMapper.select(record); - List result = gets.getResult(); - Map deletableMap = OrganizationTypeCodeEnum.deletable(); - for (OrganizationType organizationType : result) { - OrganizationTypeListResult typeResult = (OrganizationTypeListResult)BeanCopyUtils.copyProperties((Object)organizationType, OrganizationTypeListResult.class); - typeResult.setDeletable(deletableMap.getOrDefault(organizationType.getCode(), 1)); - OrganizationTypeProperties recordQuery = new OrganizationTypeProperties(); - recordQuery.setStatus(Integer.valueOf(0)); - recordQuery.setOrganizationTypeId(organizationType.getId()); - List propertiesList = this.orgTypePropertiesMapper.select(recordQuery); - if (!CollectionUtils.isEmpty((Collection)propertiesList)) { - StringBuilder builder = new StringBuilder(); - for (OrganizationTypeProperties organizationTypeProperties : propertiesList) { - builder.append("," + organizationTypeProperties.getName()); - } - typeResult.setProperties(builder.substring(1)); - } else { - typeResult.setProperties(""); - } - results.add(typeResult); - } - CloudwalkPageAble pageAble = new CloudwalkPageAble(results, page, gets.getTotal()); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - catch (Exception e) { - this.logger.error("分页查询机构类型信息失败,原因:", e); - throw new ServiceException("53003804", this.getMessage("53003804")); - } - } - - public CloudwalkResult> getList(QueryOrgTypeParam param, CloudwalkCallContext context) throws ServiceException { - String businessId = StringUtils.isEmpty((Object)param.getBusinessId()) ? context.getCompany().getCompanyId() : param.getBusinessId(); - Map deletableMap = OrganizationTypeCodeEnum.deletable((String)OrganizationTypeCodeEnum.UNIT.getGroup()); - ArrayList results = new ArrayList(); - OrganizationTypeQueryDto record = (OrganizationTypeQueryDto)BeanCopyUtils.copyProperties((Object)param, OrganizationTypeQueryDto.class); - record.setBusinessId(businessId); - record.setStatus(Integer.valueOf(0)); - List result = this.orgTypeMapper.select(record); - for (OrganizationType organizationType : result) { - OrganizationTypeListResult typeResult = (OrganizationTypeListResult)BeanCopyUtils.copyProperties((Object)organizationType, OrganizationTypeListResult.class); - typeResult.setDeletable(deletableMap.getOrDefault(organizationType.getCode(), 1)); - OrganizationTypeProperties recordQuery = new OrganizationTypeProperties(); - recordQuery.setStatus(Integer.valueOf(0)); - recordQuery.setOrganizationTypeId(organizationType.getId()); - List propertiesList = this.orgTypePropertiesMapper.select(recordQuery); - if (!CollectionUtils.isEmpty((Collection)propertiesList)) { - StringBuilder builder = new StringBuilder(); - for (OrganizationTypeProperties organizationTypeProperties : propertiesList) { - builder.append("," + organizationTypeProperties.getName()); - } - typeResult.setProperties(builder.substring(1)); - } else { - typeResult.setProperties(""); - } - results.add(typeResult); - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - public CloudwalkResult detail(QueryOrgTypeParam param, CloudwalkCallContext cloudwalkContext) throws ServiceException { - if (StringUtils.isEmpty((Object)param.getId())) { - throw new ServiceException("53060410", this.getMessage("53060410")); - } - OrganizationType organizationType = this.orgTypeMapper.selectByPrimaryKey(param.getId()); - OrganizationTypeResult result = (OrganizationTypeResult)BeanCopyUtils.copyProperties((Object)organizationType, OrganizationTypeResult.class); - OrganizationTypeProperties proQuery = new OrganizationTypeProperties(); - proQuery.setOrganizationTypeId(param.getId()); - List typeProperties = this.orgTypePropertiesMapper.select(proQuery); - result.setProperties(BeanCopyUtils.copy((Collection)typeProperties, OrganizationTypePropertyParam.class)); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - public CloudwalkResult> commonList(CloudwalkCallContext cloudwalkContext) throws ServiceException { - List result = new ArrayList(); - OrganizationTypeProperties recordQuery = new OrganizationTypeProperties(); - recordQuery.setStatus(ImageStoreConstants.COMMON_PROPERTIES_STATUS); - recordQuery.setBusinessId("cloudwalk"); - List select = this.orgTypePropertiesMapper.select(recordQuery); - if (select != null && select.size() > 0) { - result = BeanCopyUtils.copy((Collection)select, OrganizationTypePropertyCommonResult.class); - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - @Transactional(rollbackFor={Exception.class}) - public CloudwalkResult init(EditOrganizationTypeParam param, CloudwalkCallContext cloudwalkContext) { - List properties = param.getProperties(); - OrganizationTypeProperties recordQuery = new OrganizationTypeProperties(); - recordQuery.setStatus(ImageStoreConstants.COMMON_PROPERTIES_STATUS); - recordQuery.setBusinessId("cloudwalk"); - List select = this.orgTypePropertiesMapper.select(recordQuery); - if (select != null && select.size() > 0) { - for (OrganizationTypeProperties organizationTypeProperties : select) { - organizationTypeProperties.setStatus(Integer.valueOf(1)); - organizationTypeProperties.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - organizationTypeProperties.setLastUpdateUserId(cloudwalkContext.getUser().getCaller()); - this.orgTypePropertiesMapper.updateByPrimaryKeySelective(organizationTypeProperties); - } - } - if (properties != null && properties.size() > 0) { - List initList = BeanCopyUtils.copy((Collection)properties, OrganizationTypeProperties.class); - for (OrganizationTypeProperties property : initList) { - if (StringUtils.isEmpty((Object)property.getName())) continue; - property.setId(CloudwalkDateUtils.getUUID()); - property.setStatus(ImageStoreConstants.COMMON_PROPERTIES_STATUS); - property.setBusinessId("cloudwalk"); - property.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - property.setLastUpdateUserId(cloudwalkContext.getUser().getCaller()); - property.setCreateTime(Long.valueOf(System.currentTimeMillis())); - property.setCreateUserId(cloudwalkContext.getUser().getCaller()); - this.orgTypePropertiesMapper.insertSelective(property); - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - String[] initNameArray = new String[]{"地址", "邮编", "电话", "传真", "面积", "财务是否独立核算"}; - int index = 1; - for (String name : initNameArray) { - OrganizationTypeProperties property = new OrganizationTypeProperties(); - property.setId(CloudwalkDateUtils.getUUID()); - property.setName(name); - property.setOrderNum(Integer.valueOf(index++)); - property.setStatus(ImageStoreConstants.COMMON_PROPERTIES_STATUS); - property.setBusinessId("cloudwalk"); - property.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - property.setLastUpdateUserId(cloudwalkContext.getUser().getCaller()); - property.setCreateTime(Long.valueOf(System.currentTimeMillis())); - property.setCreateUserId(cloudwalkContext.getUser().getCaller()); - this.orgTypePropertiesMapper.insertSelective(property); - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - @Transactional(rollbackFor={Exception.class}) - public CloudwalkResult defaultInit(CloudwalkCallContext cloudwalkContext) throws ServiceException { - this.logger.info("初始化机构类型"); - OrganizationType organizationType = new OrganizationType(); - String uuid = CloudwalkDateUtils.getUUID(); - organizationType.setId(uuid); - organizationType.setName("公司"); - organizationType.setBusinessId("cloudwalk"); - organizationType.setStatus(Integer.valueOf(0)); - organizationType.setHasDefault(Integer.valueOf(1)); - organizationType.setHasLowerLevel(Integer.valueOf(1)); - organizationType.setCreateTime(Long.valueOf(System.currentTimeMillis())); - organizationType.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - this.orgTypeMapper.insertSelective(organizationType); - String[] initNameArray = new String[]{"地址", "邮编", "电话", "负责人", "说明"}; - int index = 1; - for (String name : initNameArray) { - OrganizationTypeProperties property = new OrganizationTypeProperties(); - property.setId(CloudwalkDateUtils.getUUID()); - property.setOrganizationTypeId(uuid); - property.setName(name); - property.setOrderNum(Integer.valueOf(index++)); - property.setStatus(Integer.valueOf(0)); - property.setBusinessId("cloudwalk"); - property.setLastUpdateTime(Long.valueOf(System.currentTimeMillis())); - property.setCreateTime(Long.valueOf(System.currentTimeMillis())); - this.orgTypePropertiesMapper.insertSelective(property); - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } -} - diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/SelfRegistryHandler.java b/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/SelfRegistryHandler.java deleted file mode 100644 index 6b126d65..00000000 --- a/maven-ninca-common-component-organization/cwos-component-organization-service/src/main/java/cn/cloudwalk/service/organization/service/SelfRegistryHandler.java +++ /dev/null @@ -1,255 +0,0 @@ -package cn.cloudwalk.service.organization.service; -// 业务服务 -import cn.cloudwalk.client.device.mgn.atomic.param.CoreDeviceQueryParam; -import cn.cloudwalk.client.device.mgn.atomic.service.AtomicDeviceService; -import cn.cloudwalk.client.organization.common.enums.DefaultPropertyEnum; -import cn.cloudwalk.client.organization.common.enums.RegistryTypeEnum; -import cn.cloudwalk.client.organization.common.enums.StatusEnum; -import cn.cloudwalk.client.organization.common.enums.UniquePropertyEnum; -import cn.cloudwalk.client.organization.service.store.param.AddPersonRegistryParam; -import cn.cloudwalk.client.organization.service.store.param.QueryPersonRegistryParam; -import cn.cloudwalk.client.organization.service.store.result.DeviceResult; -import cn.cloudwalk.client.organization.service.store.result.PersonPropertiesResult; -import cn.cloudwalk.client.organization.service.store.result.PersonRegistryResult; -import cn.cloudwalk.client.organization.service.store.service.IPersonRegistryHandler; -import cn.cloudwalk.cloud.annotation.CloudwalkParamsValidate; -import cn.cloudwalk.cloud.context.CloudwalkCallContext; -import cn.cloudwalk.cloud.exception.ServiceException; -import cn.cloudwalk.cloud.result.CloudwalkResult; -import cn.cloudwalk.cloud.utils.BeanCopyUtils; -import cn.cloudwalk.data.organization.entity.ImgStorePersonProperties; -import cn.cloudwalk.data.organization.entity.PersonRegistry; -import cn.cloudwalk.data.organization.mapper.ImgStorePersonPropertiesMapper; -import cn.cloudwalk.data.organization.mapper.PersonRegistryDeviceMapper; -import cn.cloudwalk.data.organization.mapper.PersonRegistryPropertiesMapper; -import cn.cloudwalk.service.organization.common.AbstractImagStoreService; -import cn.cloudwalk.service.organization.service.CommonPersonRegistryService; -import com.alibaba.fastjson.JSONObject; -import com.google.common.collect.Lists; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Comparator; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.concurrent.atomic.AtomicReference; -import java.util.stream.Collectors; -import javax.annotation.Resource; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; -import org.springside.modules.utils.Collections3; - -@Service(value="SelfRegistryHandler") -public class SelfRegistryHandler -extends AbstractImagStoreService -implements IPersonRegistryHandler { - @Resource - private CommonPersonRegistryService commonPersonRegistryService; - @Resource - private AtomicDeviceService atomicDeviceService; - @Resource - private ImgStorePersonPropertiesMapper imgStorePersonPropertiesMapper; - @Resource - private PersonRegistryPropertiesMapper personRegistryPropertiesMapper; - @Resource - private PersonRegistryDeviceMapper personRegistryDeviceMapper; - - @CloudwalkParamsValidate - @Transactional(propagation=Propagation.REQUIRED, rollbackFor={Exception.class}, value="transactionManager") - public CloudwalkResult save(AddPersonRegistryParam param, CloudwalkCallContext context) throws ServiceException { - String businessId = context.getCompany().getCompanyId(); - param.setBusinessId(businessId); - CloudwalkResult result = this.validateParams(param, context); - if (!result.isSuccess()) { - return result; - } - PersonRegistry personRegistry = this.commonPersonRegistryService.getByBusinessAndType(businessId, RegistryTypeEnum.SELF_REGISTRY.getValue()); - if (null != personRegistry) { - param.setId(personRegistry.getId()); - this.update(param, context); - } else { - this.insert(param, context); - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - private CloudwalkResult validateParams(AddPersonRegistryParam param, CloudwalkCallContext context) throws ServiceException { - if (null == param.getCodeStatus()) { - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - if (CollectionUtils.isEmpty((Collection)param.getPropertyIdList())) { - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - List dbPersonProList = this.imgStorePersonPropertiesMapper.selectByIds(param.getBusinessId(), param.getPropertyIdList()); - if (CollectionUtils.isEmpty((Collection)dbPersonProList) || dbPersonProList.size() != param.getPropertyIdList().size()) { - this.logger.warn("注册属性不属于人员基本属性,注册属性Id列表:[{}]", (Object)JSONObject.toJSONString((Object)param.getPropertyIdList())); - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - for (DefaultPropertyEnum default_property : DefaultPropertyEnum.values()) { - Optional requiredOptional = dbPersonProList.stream().filter(property -> default_property.getValue().equals(property.getCode())).findFirst(); - if (requiredOptional.isPresent()) continue; - this.logger.warn("{}未勾选,注册属性Id列表:[{}]", (Object)default_property.getDescription(), (Object)JSONObject.toJSONString((Object)param.getPropertyIdList())); - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - if (Objects.equals(param.getDeviceStatus(), StatusEnum.CLOSE.getValue()) || Objects.equals(param.getCodeStatus(), StatusEnum.CLOSE.getValue())) { - ImgStorePersonProperties queryPersonPro = new ImgStorePersonProperties(); - queryPersonPro.setBusinessId(param.getBusinessId()); - queryPersonPro.setStatus(StatusEnum.VALID.getValue()); - queryPersonPro.setHasRequired(StatusEnum.REQUIRED.getValue()); - List requiredPersonProList = this.imgStorePersonPropertiesMapper.select(queryPersonPro); - if (!CollectionUtils.isEmpty((Collection)requiredPersonProList)) { - List requiredPersonProIdList = Collections3.extractToList((Collection)requiredPersonProList, (String)"id"); - if ((dbPersonProList = dbPersonProList.stream().filter(pro -> requiredPersonProIdList.contains(pro.getId())).collect(Collectors.toList())).size() != requiredPersonProList.size()) { - this.logger.warn("设备注册审核和扫码注册审核未同时打开,有未勾选的必填属性,注册属性Id列表:[{}]", (Object)JSONObject.toJSONString((Object)param.getPropertyIdList())); - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - } - } - this.commonPersonRegistryService.validateOrg(param); - this.commonPersonRegistryService.validateLabel(param); - this.commonPersonRegistryService.validateDevice(param, context); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - private CloudwalkResult insert(AddPersonRegistryParam param, CloudwalkCallContext context) throws ServiceException { - String id = this.getPrimaryId(); - this.commonPersonRegistryService.insertPersonRegistry(id, param, context); - this.commonPersonRegistryService.batchInsertPersonRegistryProperty(id, param); - this.commonPersonRegistryService.batchInsertPersonRegistryDevice(id, param, context, false); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - private CloudwalkResult update(AddPersonRegistryParam param, CloudwalkCallContext context) throws ServiceException { - this.commonPersonRegistryService.updatePersonRegistry(param, context); - this.commonPersonRegistryService.batchUpdatePersonRegistryProperty(param); - this.commonPersonRegistryService.batchUpdatePersonRegistryDevice(param, context, false); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - @CloudwalkParamsValidate - public CloudwalkResult detail(QueryPersonRegistryParam param, CloudwalkCallContext context) throws ServiceException { - String businessId = param.getBusinessId(); - if (StringUtils.isBlank((CharSequence)businessId)) { - businessId = context.getCompany().getCompanyId(); - } - PersonRegistryResult result = new PersonRegistryResult(); - ImgStorePersonProperties queryPersonPro = new ImgStorePersonProperties(); - queryPersonPro.setBusinessId(businessId); - queryPersonPro.setStatus(StatusEnum.VALID.getValue()); - List personPropertyList = this.imgStorePersonPropertiesMapper.select(queryPersonPro); - if (CollectionUtils.isEmpty((Collection)personPropertyList)) { - this.logger.warn("不存在人员属性"); - return (CloudwalkResult) CloudwalkResult.fail($$$); - } - List proResultList = BeanCopyUtils.copy((Collection)personPropertyList, PersonPropertiesResult.class); - proResultList.forEach(propertyResult -> { - if (DefaultPropertyEnum.hasProperty((String)propertyResult.getCode())) { - propertyResult.setHasChecked(StatusEnum.CHECKED.getValue()); - propertyResult.setHasDisabled(StatusEnum.DISABLED.getValue()); - } - }); - proResultList = proResultList.stream().sorted(Comparator.comparing(PersonPropertiesResult::getOrderNum)).collect(Collectors.toList()); - result.setPropertyList(proResultList); - PersonRegistry dbPersonRegistry = this.commonPersonRegistryService.getByBusinessAndType(businessId, RegistryTypeEnum.SELF_REGISTRY.getValue()); - if (null != dbPersonRegistry) { - result = (PersonRegistryResult)BeanCopyUtils.copyProperties((Object)dbPersonRegistry, PersonRegistryResult.class); - result.setPropertyList(proResultList); - this.commonPersonRegistryService.setOrg(dbPersonRegistry, result); - this.commonPersonRegistryService.setLabel(dbPersonRegistry, result); - List dbPersonRegistryDeviceList = this.personRegistryDeviceMapper.select(dbPersonRegistry.getId(), null); - if (!CollectionUtils.isEmpty((Collection)dbPersonRegistryDeviceList)) { - CoreDeviceQueryParam coreDeviceQueryParam = new CoreDeviceQueryParam(); - coreDeviceQueryParam.setBusinessId(businessId); - coreDeviceQueryParam.setDeviceCodes(Collections3.extractToList((Collection)dbPersonRegistryDeviceList, (String)"deviceCode")); - CloudwalkResult deviceGetResult = this.atomicDeviceService.list(coreDeviceQueryParam, context); - if (!CollectionUtils.isEmpty((Collection)((Collection)deviceGetResult.getData()))) { - ArrayList deviceResultList = Lists.newArrayListWithCapacity((int)((List)deviceGetResult.getData()).size()); - ((List)deviceGetResult.getData()).forEach(device -> { - DeviceResult deviceResult = new DeviceResult(); - deviceResult.setDeviceCode(device.getDeviceCode()); - deviceResult.setDeviceName(device.getDeviceName()); - deviceResultList.add(deviceResult); - }); - result.setDeviceList((List)deviceResultList); - } - } - List dbPersonRegistryProList = this.personRegistryPropertiesMapper.select(dbPersonRegistry.getId(), null); - List personPropertyIdList = Collections3.extractToList((Collection)dbPersonRegistryProList, (String)"personPropertyId"); - result.getPropertyList().forEach(propertyResult -> { - if (personPropertyIdList.contains(propertyResult.getId())) { - propertyResult.setHasChecked(StatusEnum.CHECKED.getValue()); - } - }); - } - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - @CloudwalkParamsValidate - public CloudwalkResult> getRegistryPropertyList(QueryPersonRegistryParam param, CloudwalkCallContext context) throws ServiceException { - String businessId = param.getBusinessId(); - if (StringUtils.isBlank((CharSequence)businessId)) { - businessId = context.getCompany().getCompanyId(); - } - PersonRegistry dbPersonRegistry = (PersonRegistry)this.commonPersonRegistryService.getResultByBusinessAndType(businessId, RegistryTypeEnum.SELF_REGISTRY.getValue()).getData(); - this.commonPersonRegistryService.validateDevice(param, dbPersonRegistry); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - @CloudwalkParamsValidate - public CloudwalkResult> getAuditPropertyList(QueryPersonRegistryParam param, CloudwalkCallContext context) throws ServiceException { - String businessId = param.getBusinessId(); - if (StringUtils.isBlank((CharSequence)businessId)) { - businessId = context.getCompany().getCompanyId(); - } - PersonRegistry dbPersonRegistry = (PersonRegistry)this.commonPersonRegistryService.getResultByBusinessAndType(businessId, RegistryTypeEnum.SELF_REGISTRY.getValue()).getData(); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - private List getPersonPropertyList(PersonRegistry personRegistry, boolean isChecked) { - List dbPersonRegistryProList = this.personRegistryPropertiesMapper.select(personRegistry.getId(), null); - List personProIdList = Collections3.extractToList((Collection)dbPersonRegistryProList, (String)"personPropertyId"); - ImgStorePersonProperties queryPersonPro = new ImgStorePersonProperties(); - queryPersonPro.setBusinessId(personRegistry.getBusinessId()); - queryPersonPro.setStatus(StatusEnum.VALID.getValue()); - List dbPersonProList = this.imgStorePersonPropertiesMapper.select(queryPersonPro); - List proResultList = BeanCopyUtils.copy((Collection)dbPersonProList, PersonPropertiesResult.class); - List defaultProList = BeanCopyUtils.copy((Collection)dbPersonProList, PersonPropertiesResult.class); - proResultList = proResultList.stream().filter(proResult -> personProIdList.contains(proResult.getId()) == isChecked).collect(Collectors.toList()); - defaultProList = defaultProList.stream().filter(proResult -> DefaultPropertyEnum.hasProperty((String)proResult.getCode())).collect(Collectors.toList()); - if (isChecked) { - proResultList.removeAll(defaultProList); - proResultList.addAll(defaultProList); - proResultList.forEach(proResult -> { - proResult.setHasChecked(StatusEnum.CHECKED.getValue()); - if (DefaultPropertyEnum.hasProperty((String)proResult.getCode())) { - proResult.setHasDisabled(StatusEnum.DISABLED.getValue()); - } - }); - } else { - proResultList.removeAll(defaultProList); - } - proResultList = proResultList.stream().sorted(Comparator.comparing(PersonPropertiesResult::getOrderNum)).collect(Collectors.toList()); - return proResultList; - } - - @CloudwalkParamsValidate - public CloudwalkResult getUniqueRegistryProperty(QueryPersonRegistryParam param, CloudwalkCallContext context) throws ServiceException { - String businessId = param.getBusinessId(); - if (StringUtils.isBlank((CharSequence)businessId)) { - businessId = context.getCompany().getCompanyId(); - } - PersonRegistry dbPersonRegistry = (PersonRegistry)this.commonPersonRegistryService.getResultByBusinessAndType(businessId, RegistryTypeEnum.SELF_REGISTRY.getValue()).getData(); - List propertyList = this.getPersonPropertyList(dbPersonRegistry, true); - AtomicReference result = new AtomicReference(); - propertyList.stream().filter(property -> UniquePropertyEnum.hasProperty((String)property.getCode())).findFirst().ifPresent(personPropertiesResult -> result.set(personPropertiesResult)); - return (CloudwalkResult) CloudwalkResult.success($$$); - } - - public CloudwalkResult getBindProperty(QueryPersonRegistryParam param, CloudwalkCallContext context) throws ServiceException { - return null; - } -} - diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service/target/classes/cn/cloudwalk/service/organization/common/AbstractImagStoreService.class b/maven-ninca-common-component-organization/cwos-component-organization-service/target/classes/cn/cloudwalk/service/organization/common/AbstractImagStoreService.class new file mode 100644 index 0000000000000000000000000000000000000000..ec69f326eb1f8781414371d5b315149998f3e05b GIT binary patch literal 6443 zcmbVR33wFc8Gip{v$Gi{0hTi$NDyfbaHU2XLyROLKrjJh12&@KWOtGb*`3+W&Jtp4 z?^|1Y*w)sgcj-Y7t%fL7dt$ZrzVG|6x4jQr`u;PMWi|;Z$n!AsAK!iN0ZDVJ}R=WkQ-cDzHbZk5#Dsp4IDw}SU5I1WB11Mz@9%N!Ky0 zp-lo+owk*Cb<5qSX9|YEf^A(px9w@~IncRlOV@!OZu+(hi0*Qdj|xOH_Rx^wNMg1# zl*nfWn+_&=yfaBGYvl9#kdd?tPKv}DeW0A=HR$MBW7Kv=5-Hnqjl*uDHw;Ydnmq-} zHM7P(Gj9%LjCRYiUEMV)pFs1Blm-ml$|nZ(lxsU<3B8DrXfL?-sOcDKl3kI?*oE|{ zo*7A!A<0o=$$z_@NlQ&ydQw)R2;;AcGIq{}OXAU1(=y#Qf%3ZgeFBkAJ59ak_L!Ej zvydGyoIahZc;-s!nSHur%6)JcafeOn)>$e*-f#|?DI-Dq>Xv!EX93ES&DvI?eIV~T zRJS{;4<)Izk@SHni8^Gsfkg$@)=l?y{q!RWobm+Lh`ie|v$`|ZofcSFHzV-;lw;_w zvCXgyN6+}GE+A&nNP%SqE+T<5v1+HDAsx>hR6)u64kG>;VF&))HE_^Kxx}wZx_WA) zSI>F&Wdcf)v=SpyV95+7+22ur6=71t3>_mQaISA6%d`{0Sw6AV%ov?M09lmV1y^91 z4@WS0yQ|>l3NACs(6a;)WVWaX(7mhcaLUNZFy>t(r@O@d z)W|l+F64F_PTsa?CAUCU=Y=iOW3wFiJiP+p?dy|_W#e$pbjCW2A=BDI?+eVE3P#KO zKwVba2Z_i$rXo9dl{WLPX{FqbvCEAyflC9f1=q|Z1`E8PX%bt5#ik(eN^f^Flg$*F z(+=8*G1hh1%L1F$Sm6s(3SXo~i{}l)Qt)La2-znMcb{pDl1eu{?sR7KJY!DAn^zh= zD)ddN;5c+of}t5Kx9j;~2G*KWG$_jA9y^@WW4X!1UK1iWO~uyreSMo6+K6A7G>0tu z!l9`SwDz@x>>9*$+pNZ#q%^zDTFFjwTb$9e18IFti9gm{C}4z{oT>J+X&8>9KoOZ| zg7F^iLB+gP{eB?>oen)+jk`d)NJAI4YWNDis^DuHzK(BbxD;&~F2iO4DEOv^Z{gbt zzN4WB-&OEE4d2HPH2e^|DZzRTKf;e$45oI%j)LiTgL7E6hS@#r3~R1qB+`t!gbeCF zFQVH^s@hX2)dI0G{_E{cr=?WA8h(PGD)^a(pW_!AIL@4mIwuZCCciT(98{+v)t=sLDGY%frryQ|&Z}%3~a!0q)cGlm-C++MhAkQd% z%(Z9XmXa@Soai$ zIgg4=B|DqbEshPRk&)e7j`VUqmT>IY-aF8Cn(h4(Iy(|)uY8g5PX1_-4wxZCsOQEr zaX@IsEp{1gK=zwJN`dTInW)5-9GK2h2pXk|mffw(5y$Vj^CmMWsPY7fW=GPd!z#uf zHtgMzQI=Q!M62V-?AxNWSQ2A?V5CVJMHfy^*R_*eW|^;7c$t1W0D+28$CNYZ(tz0% zDeAikLMP`5Ql+QU$wDsYFhmSy?Iemf-WEH~CMjmPX9lfuelYmSw%==JGV+HSO~HZI zFGj^7nW>uL>>T`jUVExirHaGj^f{79mNDuNlYVTU8D4n)RK+5(cuH&rBUSxXD&~tN zben7BId$a%Yn@Fi3x+rkW!en;|Ht&@rxcooO&_t8W|-9_zf&iL59L~LMAOrmidd?N z8gY(>m*AxWt33{$A580zJz^w!yaAU(fF67j;1`hWshuKLGOl}Ud!)cnek`2R0Rex0 z*v{UPG4gAC$nY>*(zU{zeZ)Tg0tkbbP@VPCXE{4=xCI21Wobz=A2uoCT+R&B3^J2G z0xM^Si`4QP)<%Brsop`5+FJC5HxZZJD=MK(MFn_*)gx-7(_$EILanaelH?-dDz?eR0#nrMFh*y&6VcEV+SthPH@8S z4QO>yS_wP9;T}{pig zPoQ!fYJ5&SIu30ry|p31s*8eMQKWKtK&AFLs``(i`Z(tDH7_0?$AWPzj7?w>U*lLj zm2g9daBY$B9wYkn& z*h`W25i17qB$^al$^A3Y?+Yp(C*?W3y*1Ky9Ov~n9>bcJNKIrM=Z|CUmFp((w3dqF zsOztZ97BCeRJ15HG;~8ttR_}dF^! zqQ)L-sgww{VT6S(DiKrK9KYjJ=pS}m}&TwUkIs9fn7AWRu4rI4mH8g7Dt zK`&8mAirUzgY-xi>PZraDKHfrR4^hGWE5l-@SBJY?(8|+_}I?>C$RwPX#k7Bk(1;a zoeBkXD9Filc@`Ys?YNu5R8WM?6S%OW@dTEyqXTOhcpGlH4b`>l?0RLB2)9ZKfMt zN+r(T1Fq#u)Eqb-Ipk`O#aOz|(uzHQvu0@QR5qi(i@c zlF~kp=PDnz$Wz1h3>-FK%KRKWpR`^eX?aq}yBBixBA%4t#q(6z&$yRdcaV<9wV`p{ zeP}A$p2v5bs~h--g6E=AEE6lla{d|O QVGmE>v*h^*9>pX71NK}8nE(I) literal 0 HcmV?d00001 diff --git a/maven-ninca-common-component-organization/cwos-component-organization-service/target/classes/cn/cloudwalk/service/organization/service/OrganizationServiceImpl.class b/maven-ninca-common-component-organization/cwos-component-organization-service/target/classes/cn/cloudwalk/service/organization/service/OrganizationServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..0336e47ea257180feecec956a0d1442043374d40 GIT binary patch literal 58235 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