Initial commit: five Maven reactors and docs only

Track maven-cloudwalk-cloud, maven-cw-elevator-application,
maven-intelligent-cwoscomponent, maven-ninca-crk, maven-ninca-qk-alarm,
and docs/. Other workspace paths ignored via .gitignore.

Made-with: Cursor
This commit is contained in:
反编译工作区
2026-04-24 10:35:31 +08:00
commit e2ac14719b
653 changed files with 50372 additions and 0 deletions
@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.cloudwalk.elevator</groupId>
<artifactId>cw-elevator-application-decompiled-reactor</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>cw-elevator-application-common</artifactId>
<packaging>jar</packaging>
<properties>
<alibaba.eclipse.codestyle.path>${project.basedir}/../../docs/style/alibaba-eclipse-codestyle.xml</alibaba.eclipse.codestyle.path>
</properties>
<dependencies>
<dependency>
<groupId>cn.cloudwalk.cloud</groupId>
<artifactId>cloudwalk-common-result</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
</dependency>
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
</dependency>
<dependency>
<groupId>cn.cloudwalk.cloud</groupId>
<artifactId>cloudwalk-common-web</artifactId>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
</dependency>
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
@@ -0,0 +1,15 @@
package cn.cloudwalk.elevator.annontation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 标记字段与达芬奇(Davinci)图片存储或展示相关的元信息。
* <p>
* 所在包名 {@code annontation} 为历史拼写,与既有引用保持一致,请勿单独重命名包路径。
*/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface DavinciPic {}
@@ -0,0 +1,49 @@
package cn.cloudwalk.elevator.cache;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class CacheOverrideConfig {
public static final String CACHE_NAME_APPLICATIONIDS = "ACS_Applicationids";
public static final String CACHE_NAME_ACS_DEVICE_TYPES = "ACS_DeviceTypesCache";
public static final String CACHE_NAME_ACS_DEVICE_TYPE_FEATURES = "ACS_DeviceTypeFeaturesCache";
public static final String CACHE_NAME_ACS_DEVICE_ATTRS = "ACS_DeviceAttrsCache";
public static final String CACHE_NAME_ACS_RECORD_STATISTICS = "ACS_RecordStatisticsCache";
public static final String CACHE_NAME_ACS_DEVICE_TREE = "ACS_DeviceTreeCache";
public static final String CACHE_NAME_ACS_AREA_TREE = "ACS_AreaTreeCache";
public static final String CACHE_KEY_APPLICATION_IDS_PREFIX = "acs_applicationIds:";
public static final String CACHE_KEY_ACS_DEVICE_TYPES_PREFIX = "acs_deviceTypes:";
public static final String CACHE_KEY_ACS_DEVICE_TYPE_FEATURES_PREFIX = "acs_deviceTypeFeatures:";
public static final String CACHE_KEY_ACS_EXPORT_PREFIX = "acs_export_prefix:";
public static final String CACHE_KEY_ACS_DEVICE_ATTRS_PREFIX = "acs_deviceAttrs:";
public static final String CACHE_KEY_ACS_RECORD_STATISTICS_PREFIX = "acs_recordStatistics:";
public static final String CACHE_KEY_ACS_DEVICE_TREE_PREFIX = "acs_deviceTreeCache";
public static final String CACHE_KEY_ACS_AREA_TREE_PREFIX = "acs_areaTreeCache:";
@Primary
@Bean({"redisTemplate"})
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(redisConnectionFactory);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
redisTemplate.setValueSerializer((RedisSerializer)jackson2JsonRedisSerializer);
redisTemplate.setKeySerializer((RedisSerializer)stringRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
@@ -0,0 +1,13 @@
package cn.cloudwalk.elevator.config;
public class AcsConstants {
public static final String SUCCESS_CODE = "00000000";
public static final String SERVICE_CODE = "elevator-app";
public static final Long ONE_DAY_MILLISECONDS = Long.valueOf(86400000L);
public static final Long ONE_YEAR_MILLISECONDS = Long.valueOf(31536000000L);
public static final String DEFAULT_CALLER = "defaultUserId";
public static final String DEFAULT_CALLER_NAME = "defaultUserName";
public static final String ACS_OPEN_DOOR_RECORD_EVENT_TOPIC = "ACS_OPEN_DOOR_RECORD_EVENT_TOPIC";
public static final String ACS_BACKEND_REG_LOG_ID_KEY_PREFIX = "acs:backendRegLogId:";
public static final String ACS_BACKEND_REG_EXPIRE_PREFIX = "acs:backendRegExpire:";
}
@@ -0,0 +1,11 @@
package cn.cloudwalk.elevator.config;
public class AcsLockConstants {
public static final String LOCK_EXPORT_BUSINESSID_PREFIX = "AcsExport:";
public static final String LOCK_RECORD_STATISTICS_BUSINESSID_PREFIX = "AcsRecordStatistics:";
public static final String LOCK_BACKEND_REG_LOG_ID_PREFIX = "AcsBackendRegLogId:";
public static final String LOCK_URGENT_GROUP_DEVICE_ID_PREFIX = "AcsUrgentGroupDeviceIds:";
}
@@ -0,0 +1,18 @@
package cn.cloudwalk.elevator.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "cloudwalk.elevator.common")
public class ElevatorCwosConfig {
private String relativePrefix;
public String getRelativePrefix() {
return this.relativePrefix;
}
public void setRelativePrefix(String relativePrefix) {
this.relativePrefix = relativePrefix;
}
}
@@ -0,0 +1,457 @@
package cn.cloudwalk.elevator.config;
public class ErrorCode {
public static final String OTHER_ERROR = "00000001";
public static final String ID_IS_NULL = "53060410";
public static final String ID_ARRAY_IS_NULL = "53060411";
public static final String ADD_IMAGE_STORE_ERROR = "53060413";
public static final String ID_IS_ERROR = "53060414";
public static final String EDIT_IMAGE_STORE_IS_ERROR = "53060415";
public static final String IMAGE_STORE_REF_IS_ALL_NULL = "53060416";
public static final String IMAGFE_STORE_ORG_ID_ARRAY_IS_ERROR = "53060417";
public static final String IMAGFE_STORE_LABEL_ID_ARRAY_IS_ERROR = "53060418";
public static final String IMAGFE_STORE_PERSON_ID_ARRAY_IS_ERROR = "53060419";
public static final String IMAGFE_STORE_LABEL_ID_EXCLUDE_ARRAY_IS_ERROR = "53060420";
public static final String IMAGFE_STORE_PERSON_ID_EXCLUDE_ARRAY_IS_ERROR = "53060421";
public static final String IMAGE_STORE_DELETE_ERROR = "53060422";
public static final String IMAGE_STORE_NAME_IS_ERROR = "53060423";
public static final String ID_LENGTH_IS_ERROR = "53060424";
public static final String ORG_PARENT_NODE_IS_ERROR = "53060425";
public static final String GET_BUSINESS_NAME_IS_ERROR = "53060426";
public static final String PARENT_ID_LENGTH_IS_ERROR = "53060427";
public static final String FILE_UPLOAD_ERROR = "80014001";
public static final String FILE_UPLOAD_CONTROLLER_ERROR = "80014013";
public static final String FILE_TYPE_IS_INVALID = "53060429";
public static final String FILE_MAX_IS_ERROR = "53060428";
public static final String ROTATE_IMAGE_ERROR = "53060430";
public static final String EXTRACT_FEATURE_FAIL = "53060431";
public static final String FACE_DETECT_IS_EMPTY = "53060432";
public static final String FACE_DETECT_OVER_SIZE = "53060433";
public static final String IMAGE_IS_EMPTY = "53060434";
public static final String EXTRACT_FEATURE_EXCEPTION = "53060435";
public static final String EXTRACT_FEATURE_RESULT_IS_EMPTY = "53060436";
public static final String UPLOAD_SINGLE_FACE = "53060437";
public static final String GROUP_ID_IS_EMPTY = "53060438";
public static final String FACE_DETECT_EXCEPTION = "53060439";
public static final String FACE_DETECT_RESULT_IS_EMPTY = "53060440";
public static final String QUERY_ALL_GROUP_TOPN_FAIL = "53060441";
public static final String QUERY_EVERY_GROUP_TOPN_FAIL = "53060442";
public static final String QUERY_FEATURE_RESULT_IS_EMPTY = "53060443";
public static final String QUERY_FEATURE_RESULT_FAIL = "53060444";
public static final String IMAGE_UNDER_SIZE = "53060445";
public static final String IMAGE_PIXEL_UNDER_SIZE = "53060446";
public static final String ADD_FACE_FAIL = "53060447";
public static final String REMOVE_FACE_FAIL = "53060448";
public static final String FILE_MANAGER_READ_FILE_ERROR = "80014016";
public static final String FILE_MANAGER_DEL_ERROR = "80014017";
public static final String ADD_ORG_TYPE_ERROR = "53003800";
public static final String EDIT_ORG_TYPE_ERROR = "53003801";
public static final String DEL_ORG_TYPE_ERROR = "53003802";
public static final String ADD_ORG_TYPE_DUPLICATE_NAME = "53003803";
public static final String QUERY_ORG_TYPE_ERROR = "53003804";
public static final String PROPERTIES_DUPLICATE_NAME_ERROR = "53003805";
public static final String ADD_AREA_TYPE_ERROR = "53004800";
public static final String EDIT_AREA_TYPE_ERROR = "53004801";
public static final String DEL_AREA_TYPE_ERROR = "53004802";
public static final String ADD_AREA_TYPE_DUPLICATE_NAME = "53004803";
public static final String QUERY_AREA_TYPE_ERROR = "53004804";
public static final String AREA_TYPE_NAME_NOT_NULL = "53004806";
public static final String AREA_TYPE_NAME_LENGTH_INVAILD = "53004807";
public static final String AREA_TYPE_PRO_NAME_NOT_NULL = "53004810";
public static final String AREA_TYPE_PRO_REQUIRED_NOT_NULL = "53004811";
public static final String AREA_TYPE_PRO_REQUIRED_RANGE_INVAILD = "53004812";
public static final String AREA_TYPE_HAS_LOWER_DATA = "53004813";
public static final String AREA_TYPE_NOT_EDIT_DEFAULT = "53004815";
public static final String EXIST_AREA_WITH_TYPE = "53004854";
public static final String AREA_TYPE_PRO_ORDER_NOT_NULL = "53004816";
public static final String AREA_TYPE_PRO_ORDER_RANGE_INVAILD = "53004817";
public static final String QUERY_ORG_ERROR = "53003300";
public static final String TYPE_ID_IS_NULL = "53003301";
public static final String TYPE_ID_LENGTH_IS_ERROR = "53003302";
public static final String PARAM_LENGTH_IS_ERROR = "53003303";
public static final String EXIST_ORG_WITH_TYPE = "53003304";
public static final String ORG_ID_IS_NULL = "53003305";
public static final String ORG_PARENT_HSH_LOWER_LEVEL_ERROR = "53003306";
public static final String ORG_PARENT_ID_IS_NULL = "53003307";
public static final String ORG_LEVEL_IS_ERROR = "53003308";
public static final String ORG_NAME_IS_EXIST = "53003309";
public static final String ORG_ID_IS_ERROR = "53003310";
public static final String PERSON_ID_ARRAY_IS_ERROR = "53003311";
public static final String ORG_NAME_IS_NULL = "53003312";
public static final String ORG_YI_IS_NOT_DELETE = "53003313";
public static final String ORG_PARENT_IS_HAVING = "53003314";
public static final String ORG_CANNOT_DELETE = "53003315";
public static final String QZ_BUSINESS_ID_INVALID = "53014000";
public static final String QZ_PERSON_CODE_INVALID = "53014001";
public static final String QZ_PERSON_NAME_INVALID = "53014002";
public static final String QZ_PERSON_USER_NAME_INVALID = "53014003";
public static final String QZ_PERSON_PHONE_INVALID = "53014004";
public static final String QZ_PERSON_EMAIL_INVALID = "53014005";
public static final String QZ_PERSON_SYNC_ACCOUNT_INVALID = "53014006";
public static final String QZ_PERSON_CUSTOM_FIELD_INVALID = "53014007";
public static final String QZ_PERSON_ADD_ERROR = "53014008";
public static final String QZ_PERSON_EDIT_ERROR = "53014009";
public static final String QZ_PERSON_DEL_ERROR = "53014010";
public static final String QZ_PERSON_QUERY_ERROR = "53014011";
public static final String QZ_PERSON_CODE_DUPLICATE = "53014012";
public static final String QZ_PERSON_USER_NAME_DUPLICATE = "53014013";
public static final String QZ_PERSON_PHONE_DUPLICATE = "53014014";
public static final String QZ_PERSON_EMAIL_DUPLICATE = "53014015";
public static final String QZ_PERSON_FILED_LOSE = "53014016";
public static final String QZ_PERSON_FILED_INVALID = "53014017";
public static final String QZ_PERSON_FILED_NOT_EXISTS = "53014018";
public static final String QZ_PERSON_NO_SYSTEM_ID = "53014019";
public static final String QZ_PERSON_FILED_LABEL_ORGANIZATION_LOSE = "53014020";
public static final String QZ_PERSON_SOURCE_ILLEGAL = "53014021";
public static final String QZ_PERSON_PROPERTIES_CERT_LOSE = "53014022";
public static final String QZ_PERSON_CERT_ID_DUPLICATE = "53014023";
public static final String PERSON_ID_LIST_IS_EMPTY = "53014024";
public static final String IMAGE_ID_LIST_IS_EMPTY = "53014025";
public static final String IMAGE_ID_IS_EMPTY = "53014026";
public static final String QZ_SYSTEM_ID_VALUE_EMPTY = "53014027";
public static final String QZ_SYSTEM_ID_VALUE_DUPLICATE = "53014028";
public static final String PERSONNEL_ATTRIBUTES_ARE_NOT_SET = "53014029";
public static final String QZ_BATCH_ID_INVALID = "53014030";
public static final String QZ_BATCH_STATUS_INVALID = "53014031";
public static final String QZ_BATCH_ADD_ERROR = "53014032";
public static final String QZ_BATCH_QUERY_ERROR = "53014033";
public static final String QZ_BATCH_DETAIL_QUERY_ERROR = "53014034";
public static final String BATCH_IMPORT_INSERT_ERROR = "53014035";
public static final String BATCH_IMPORT_PROCESS_EXCEPTION = "53014036";
public static final String BATCH_IMPORT_ZIP_FILE_EMPTY = "53014037";
public static final String BATCH_IMPORT_UNZIP_FAILED = "53014038";
public static final String BATCH_IMPORT_EXCEL_FILE_NOTFOUND = "53014039";
public static final String BATCH_IMPORT_DATA_EMPTY = "53014040";
public static final String FILE_INIT_FAIL = "53014041";
public static final String FILE_FINISHI_FAIL = "53014042";
public static final String FILE_GET_FAIL = "53014043";
public static final String LABEL_NAME_IS_EXIST = "53003700";
public static final String LABEL_ID_IS_ERROR = "53003701";
public static final String LABEL_PAGE_IS_ERROR = "53003702";
public static final String QZ_LABEL_NAME_INVALID = "53003703";
public static final String QZ_LABEL_CODE_INVALID = "53003704";
public static final String LABEL_CODE_IS_EXIST = "53003705";
public static final String QZ_LABEL_ADD_TYPE_INVALID = "53003706";
public static final String QZ_LABEL_DEL_PERSON_RELATION = "53003707";
public static final String PERSON_PRO_NAME_NOT_NULL = "53014800";
public static final String PERSON_PRO_NAME_LENGTH_INVAILD = "53014801";
public static final String PERSON_PRO_TYPE_NOT_NULL = "53014802";
public static final String PERSON_PRO_TYPE_RANGE_INVAILD = "53014803";
public static final String PERSON_PRO_SYSACCOUNT_RANGE_INVAILD = "53014804";
public static final String PERSON_PRO_REQUIRED_RANGE_INVAILD = "53014805";
public static final String PERSON_PRO_ORDER_NOT_NULL = "53014806";
public static final String PERSON_PRO_REMINDER_NOT_NULL = "53014807";
public static final String PERSON_PRO_REMINDER_LENGTH_INVAILD = "53014808";
public static final String PERSON_PRO_ARRAYDATA_LENGTH_INVAILD = "53014809";
public static final String PERSON_PRO_MULTIPLE_RANGE_INVAILD = "53014810";
public static final String DEFAULT_ACCOUNT_CAN_NOT_CHANGE = "53014811";
public static final String REQUIRED_CAN_NOT_CHANGE = "53014812";
public static final String SWITCH_SIZE_PARAM_INVALID = "53014813";
public static final String SWITCH_BACKGROUND_OBJECT_INVALID = "53014814";
public static final String ORG_TYPE_NAME_NOT_NULL = "53003806";
public static final String ORG_TYPE_NAME_LENGTH_INVAILD = "53003807";
public static final String ORG_TYPE_LOWER_NOT_NULL = "53003808";
public static final String ORG_TYPE_LOWER_RANGE_INVAILD = "53003809";
public static final String ORG_TYPE_PRO_NAME_NOT_NULL = "53003810";
public static final String ORG_TYPE_PRO_REQUIRED_NOT_NULL = "53003811";
public static final String ORG_TYPE_PRO_REQUIRED_RANGE_INVAILD = "53003812";
public static final String ORG_TYPE_HAS_LOWER_DATA = "53003813";
public static final String ORG_TYPE_NOT_NEW_DEFAULT = "53003814";
public static final String ORG_TYPE_NOT_EDIT_DEFAULT = "53003815";
public static final String ORG_TYPE_PRO_ORDER_NOT_NULL = "53003816";
public static final String ORG_TYPE_PRO_ORDER_RANGE_INVAILD = "53003817";
public static final String CAT_NOT_EDIT_DEFAULT_TYPE = "53003818";
public static final String PERSON_NOT_EXIST = "53003819";
public static final String PERSON_IMAGE_SCORE_FAILE = "53003820";
public static final String ORG_SEARCH_PARAM_FAILE = "53003821";
public static final String PERSON_REGISTRY_STATUS_IS_NULL = "53014500";
public static final String PERSON_REGISTRY_DEVICESTATUS_IS_NULL = "53014501";
public static final String PERSON_REGISTRY_CODESTATUS_IS_NULL = "53014502";
public static final String PERSON_REGISTRY_PROPERTY_IS_NULL = "53014503";
public static final String PERSON_REGISTRY_DEVICE_IS_NULL = "53014504";
public static final String PERSON_REGISTRY_STATUS_INVALID = "53014505";
public static final String PERSON_REGISTRY_DEVICESTATUS_INVALID = "53014506";
public static final String PERSON_REGISTRY_CODESTATUS_INVALID = "53014507";
public static final String PERSON_REGISTRY_PRO_ID_LIST_IS_ERROR = "53014508";
public static final String PERSON_REGISTRY_PRO_NAME_IS_REQUIRED = "53014509";
public static final String PERSON_REGISTRY_PRO_ORG_LABEL_IS_REQUIRED = "53014510";
public static final String PERSON_REGISTRY_PRO_IS_REQUIRED = "53014511";
public static final String PERSON_REGISTRY_ORG_IDS_IS_ERROR = "53014512";
public static final String PERSON_REGISTRY_LABEL_IDS_IS_ERROR = "53014513";
public static final String PERSON_REGISTRY_DEVICE_IS_ERROR = "53014514";
public static final String PERSON_REGISTRY_ADD_FAIL = "53014515";
public static final String PERSON_REGISTRY_SAVE_FAIL = "53014516";
public static final String PERSON_REGISTRY_IS_NULL = "53014517";
public static final String PERSON_REGISTRY_STATUS_IS_CLOSED = "53014518";
public static final String PERSON_REGISTRY_DEVICE_IS_NOT_ADD = "53014519";
public static final String PERSON_REGISTRY_DETAIL_FAIL = "53014520";
public static final String PERSON_REGISTRY_PRO_LIST_FAIL = "53014521";
public static final String PERSON_REGISTRY_UNIQUE_PRO_IS_NULL = "53014522";
public static final String PERSON_REGISTRY_UNIQUE_PRO_FAIL = "53014523";
public static final String PERSON_PRO_IS_NULL = "53014524";
public static final String PERSON_CERT_PRO_IS_NULL = "53014525";
public static final String CARDID_NOT_BIND_PRO = "53014526";
public static final String NAME_NOT_BIND_PRO = "53014527";
public static final String BIND_PRO_ONE_TO_MANY = "53014528";
public static final String DEFAULT_PRO_ORG_LABEL_IS_REQUIRED = "53014529";
public static final String PERSON_REGISTRY_TYPE_INVALID = "53014530";
public static final String QUERY_DISTRICT_TREE_FAIL = "53014600";
public static final String QUERY_DEVICE_LIST_FAIL = "53014700";
public static final String DEVICE_ID_IS_NULL = "53014701";
public static final String QUERY_PERSON_GROUP_RELATIONS_FAIL = "53014702";
public static final String QUERY_QR_CODE_URL_FAIL = "53014900";
public static final String PERSON_AUDIT_PARAM_SOURCE = "53060533";
public static final String PERSON_AUDIT_DEVICE_FORBID = "53060534";
public static final String PERSON_AUDIT_ADD_EXCEPTION = "53060535";
public static final String PERSON_AUDIT_ID_INVALID = "53060536";
public static final String PERSON_AUDIT_ID_ISNULL = "53060537";
public static final String PERSON_AUDIT_QUERY_FAILED = "53060538";
public static final String PERSON_AUDIT_APPLY_FAILED = "53060539";
public static final String PERSON_AUDIT_PAGE_FAILED = "53060540";
public static final String PERSON_AUDIT_REGISTRY_SETTING_FAILED = "53060541";
public static final String PERSON_AUDIT_DEVICECODE_EMPTY = "53060542";
public static final String PERSON_AUDIT_DEVICE_INVALID = "53060543";
public static final String PERSON_AUDIT_UPLOAD_BASE64_EMPTY = "53060544";
public static final String PERSON_AUDIT_CHECK_NAME_EMPTY = "53060545";
public static final String PERSON_AUDIT_CHECK_WRONG_CAPTCHA = "53060546";
public static final String PERSON_AUDIT_UNIQUE_PROPERTY_ERROR = "53060547";
public static final String PERSON_AUDIT_QUERY_AUDIT_EMPTY = "53060548";
public static final String PERSON_AUDIT_AGREE_CAN_NOT_EDIT = "53060549";
public static final String AREA_PARENT_ID_IS_NULL = "53015100";
public static final String AREA_PARENT_HSH_LOWER_LEVEL_ERROR = "53015101";
public static final String AREA_PARENT_IS_HAVING = "53015102";
public static final String AREA_NAME_IS_EXIST = "53015103";
public static final String AREA_ID_IS_ERROR = "53015104";
public static final String AREA_PARENT_NODE_IS_ERROR = "53015105";
public static final String AREA_YI_IS_NOT_DELETE = "53015106";
public static final String AREA_TYPE_ID_IS_NULL = "53015107";
public static final String UNIT_ID_ARRAY_IS_ERROR = "53015108";
public static final String QUERY_AREA_ERROR = "53015109";
public static final String DETAIL_AREA_ERROR = "53015110";
}
@@ -0,0 +1,17 @@
package cn.cloudwalk.elevator.config;
public class FeignRemoteConfig {
public static final String PLATFORM_USER_ID = "platformuserid";
public static final String LOGIN_ID = "loginid";
public static final String BUSINESS_ID = "businessid";
public static final String USER_NAME = "username";
public static final String APPLICATION_ID = "applicationid";
public static final String AUTHORIZATION = "authorization";
public static final String SERVICE_CODE = "elevator-app";
}
@@ -0,0 +1,79 @@
package cn.cloudwalk.elevator.config;
import cn.cloudwalk.cloud.context.CloudwalkCallContext;
import cn.cloudwalk.cloud.session.extend.DefaultExtendContext;
import cn.cloudwalk.elevator.context.CloudWalkExtendContextValue;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
public class FeignThreadLocalUtil {
private static ThreadLocal<Map<String, String>> threadLocal = new ThreadLocal<>();
public static void set(Map<String, String> t) {
threadLocal.remove();
threadLocal.set(t);
}
public static Map<String, String> get() {
return threadLocal.get();
}
public static void remove() {
threadLocal.remove();
}
public static Map<String, String> getRequestHeader(HttpServletRequest request) {
Map<String, String> map = new ConcurrentHashMap<>(10);
if (null != request.getHeader("platformuserid")) {
map.put("platformuserid", request.getHeader("platformuserid"));
}
if (null != request.getHeader("loginid")) {
map.put("loginid", request.getHeader("loginid"));
}
if (null != request.getHeader("businessid")) {
map.put("businessid", request.getHeader("businessid"));
}
if (null != request.getHeader("username")) {
map.put("username", request.getHeader("username"));
}
if (null != request.getHeader("applicationid")) {
map.put("applicationid", request.getHeader("applicationid"));
}
if (null != request.getHeader("authorization")) {
map.put("authorization", request.getHeader("authorization"));
}
return map;
}
public static Map<String, String> getDefaultReqesutHeader(String businessId) {
Map<String, String> map = new ConcurrentHashMap<>(2);
map.put("businessid", businessId);
map.put("username", "default");
return map;
}
public static void setRequestHeader(Map<String, String> headerMap) {
set(headerMap);
}
public static Map<String, String> getDefaultRequestHeader(CloudwalkCallContext context) {
Map<String, String> map = new HashMap<>(10);
DefaultExtendContext<CloudWalkExtendContextValue> extendContext =
(DefaultExtendContext<CloudWalkExtendContextValue>)context.getExt();
map.put("platformuserid", context.getUser().getCaller());
map.put("loginid", ((CloudWalkExtendContextValue)extendContext.getValue()).getLoginId());
map.put("businessid", context.getCompany().getCompanyId());
map.put("username",
StringUtils.isEmpty(context.getUser().getCallerName()) ? "default" : context.getUser().getCallerName());
map.put("applicationid", context.getApplicationId());
map.put("authorization", ((CloudWalkExtendContextValue)extendContext.getValue()).getAuthorization());
return map;
}
public static void setRequestHeader(CloudwalkCallContext context) {
set(getDefaultRequestHeader(context));
}
}
@@ -0,0 +1,65 @@
package cn.cloudwalk.elevator.config;
import java.util.Arrays;
import java.util.List;
public class ImageStoreConstants {
public static final short IS_NOT_DEL = 0;
public static final short IS_DEL = 1;
public static final int ASSOCIATED_ACTION_INCLUDE = 0;
public static final int ASSOCIATED_ACTION_EXCLUDE = 1;
public static final int ASSOCIATED_OBJECT_ORG_TYPE = 1;
public static final int ASSOCIATED_OBJECT_LABEL_TYPE = 2;
public static final int ASSOCIATED_OBJECT_PERSON_TYPE = 3;
public static final int ASSOCIATED_OBJECT_MATCHPATTERN_TYPE = 4;
public static final int ASSOCIATED_OBJECT_IMAGE_STORE_TYPE = 5;
public static final String COMMON_BUSINESS_ID = "cloudwalk";
public static final Integer COMMON_PROPERTIES_STATUS = Integer.valueOf(99);
public static final Integer COMMON_UNIT_PROPERTIES_STATUS = Integer.valueOf(98);
public static final Integer COMMON_PARK_PROPERTIES_STATUS = Integer.valueOf(97);
private static final List<String> CUST_PROPERTIES = Arrays.asList(new String[] {"ext1", "ext2", "ext3", "ext4",
"ext5", "ext6", "ext7", "ext8", "ext9", "ext10", "ext11", "ext12", "ext13", "ext14", "ext15", "ext16", "ext17",
"ext18", "ext19", "ext20", "ext21", "ext22", "ext23", "ext24", "ext25", "ext26", "ext27", "ext28", "ext29",
"ext30", "ext31", "ext32", "ext33", "ext34", "ext35", "ext36", "ext37", "ext38", "ext39", "ext40"});
public static final String PERSON_PROPERTY_USER_NAME = "userName";
public static List<String> getCustProperties() {
return CUST_PROPERTIES;
}
public static final String PERSON_PROPERTY_PHONE = "phone";
public static final String PERSON_PROPERTY_EMAIL = "email";
public static final String COMPARE_PICTURE = "comparePicture";
public static final String PERSON_PROPERTY_PERSON_CODE = "personCode";
public static final String IC_CAED_NO = "icCardNo";
public static final String IC_CAED_TYPE = "icCardType";
public static final String FLOORS = "floors";
public static final String PROPERTY_CODE = "code";
public static final String PROPERTY_HAS_REQUIRED = "hasRequired";
public static final int PROPERTY_REQUIRED = 1;
public static final int PROPERTY_UNREQUIRED = 0;
public static final String PERSON_PROPERTY_NAME = "name";
public static final String PERSON_PROPERTY_ORGANIZATIONIDS = "organizationIds";
public static final String PERSON_PROPERTY_LABELIDS = "labelIds";
public static final String CREATE_SYS_ACCOUNT_CODE = "createSysAccount";
public static final String CREATE_SYS_ACCOUNT_NAME = "同步创建账号";
public static final String SYS_ACCOUNT_ID_CODE = "sysAccountId";
public static final String SYS_ACCOUNT_ID_NAME = "同步创建账号系统ID";
public static final Integer AGREE = Integer.valueOf(0);
public static final String SYSTEM_USER = "system";
public static final String IMAGE_STORE_ID = "imageStoreId";
public static final String PASS_CRONS = "passCrons";
public static final short PERSON_DELETED = -1;
public static final short PERSON_VALIDATE = 0;
public static final short PERSON_INVALIDATE = 1;
public static final short DEVICE_PERSON_VALIDATE = 1;
public static final short DEVICE_PERSON_INVALIDATE = 0;
public static final Integer MAX_FILE = Integer.valueOf(3145728);
public static final String SYSTEM_GROUP_CREATE_USER_ID = "group";
public static final int PERSON_ACTION_DELETE = -1;
public static final int PERSON_ACTION_ADD = 0;
public static final int PERSON_ACTION_UPDATE = 1;
public static final short GROUP_MODEL_STATUS_NO_IMG = 0;
public static final int PERSON_VALIDATE_UNPROCESSED = 0;
public static final int PERSON_VALIDATE_PROCESSED = 1;
}
@@ -0,0 +1,22 @@
package cn.cloudwalk.elevator.context;
public class CloudWalkExtendContextValue {
private String loginId;
private String authorization;
public String getLoginId() {
return this.loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
public String getAuthorization() {
return this.authorization;
}
public void setAuthorization(String authorization) {
this.authorization = authorization;
}
}
@@ -0,0 +1,30 @@
package cn.cloudwalk.elevator.em;
public enum AcsApplicationSourceEnum {
ACCESS_CONTROL("ACCESS_CONTROL", "门禁应用"), CWOS_PORTAL("CWOS_PORTAL", "平台应用");
private final String code;
private final String name;
AcsApplicationSourceEnum(String code, String name) {
this.code = code;
this.name = name;
}
public static AcsApplicationSourceEnum getEnumByCode(String code) {
for (AcsApplicationSourceEnum item : values()) {
if (code.equals(item.code)) {
return item;
}
}
return null;
}
public String getCode() {
return this.code;
}
public String getName() {
return this.name;
}
}
@@ -0,0 +1,30 @@
package cn.cloudwalk.elevator.em;
public enum AcsDeviceIdentifyTypeEnum {
FRONT_REG(Integer.valueOf(0), "前端识别"), BACKEND_REG(Integer.valueOf(1), "后端识别");
private Integer code;
private String name;
AcsDeviceIdentifyTypeEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
public static AcsDeviceIdentifyTypeEnum getEnumByCode(Integer code) {
for (AcsDeviceIdentifyTypeEnum item : values()) {
if (code.equals(item.getCode())) {
return item;
}
}
return null;
}
public Integer getCode() {
return this.code;
}
public String getName() {
return this.name;
}
}
@@ -0,0 +1,30 @@
package cn.cloudwalk.elevator.em;
public enum AcsDeviceQueryTypeEnum {
QUERY_MAIN(Integer.valueOf(1), "只查询主设备"), QUERY_MAIN_AND_SUB(Integer.valueOf(2), "查询主设备及其子设备");
private Integer code;
private String message;
AcsDeviceQueryTypeEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
public static AcsDeviceQueryTypeEnum getEnumByCode(Integer code) {
for (AcsDeviceQueryTypeEnum item : values()) {
if (code.equals(item.getCode())) {
return item;
}
}
return null;
}
public Integer getCode() {
return this.code;
}
public String getMessage() {
return this.message;
}
}
@@ -0,0 +1,59 @@
package cn.cloudwalk.elevator.em;
import java.util.ArrayList;
import java.util.List;
public enum AcsDeviceSettingEnum {
QUALITY_SCORE("qualityScore", "人脸抓拍质量分", AcsApplicationSourceEnum.CWOS_PORTAL),
TEMP_THRESHOLD("tempThreshold", "温度报警阈值", AcsApplicationSourceEnum.CWOS_PORTAL),
TEMP_MIN("tempMin", "温度最低值", AcsApplicationSourceEnum.CWOS_PORTAL),
MASK_THRESHOLD("maskThreshold", "口罩阈值", AcsApplicationSourceEnum.CWOS_PORTAL),
LIVE_STATE("liveState", "活体检测开关", AcsApplicationSourceEnum.CWOS_PORTAL),
TEMP_STATE("tempState", "温度控制开关", AcsApplicationSourceEnum.CWOS_PORTAL),
FACE_SIZE_MIN("faceSizeMin", "人脸最小尺寸", AcsApplicationSourceEnum.CWOS_PORTAL),
FACE_SIZE_MAX("faceSizeMax", "人脸最大尺寸", AcsApplicationSourceEnum.CWOS_PORTAL),
FACE_ONE_THRESHOLD("faceOneThreshold", "人脸1:1识别阈值", AcsApplicationSourceEnum.CWOS_PORTAL),
FACE_MANY_THRESHOLD("faceManyThreshold", "人脸1:N识别阈值", AcsApplicationSourceEnum.CWOS_PORTAL),
ACS_FACE_REG_THRESHOLD("ACS_FACE_REG_THRESHOLD", "人脸抓拍识别阈值", AcsApplicationSourceEnum.ACCESS_CONTROL);
private String code;
private String remark;
private AcsApplicationSourceEnum source;
public String getCode() {
return this.code;
}
public String getRemark() {
return this.remark;
}
public AcsApplicationSourceEnum getSource() {
return this.source;
}
AcsDeviceSettingEnum(String code, String remark, AcsApplicationSourceEnum source) {
this.code = code;
this.remark = remark;
this.source = source;
}
public static AcsDeviceSettingEnum getEnumByCode(String code) {
for (AcsDeviceSettingEnum item : values()) {
if (code.equals(item.code)) {
return item;
}
}
return null;
}
public static List<AcsDeviceSettingEnum> getEnumBySource(String source) {
List<AcsDeviceSettingEnum> list = new ArrayList<>();
for (AcsDeviceSettingEnum item : values()) {
if (source.equals(item.source.getCode())) {
list.add(item);
}
}
return list;
}
}
@@ -0,0 +1,30 @@
package cn.cloudwalk.elevator.em;
public enum AcsOpenDoorStatusEnum {
INIT(Integer.valueOf(0), "初始化"), SUCESS(Integer.valueOf(1), "成功"), FAIL(Integer.valueOf(2), "失败");
private Integer code;
private String message;
AcsOpenDoorStatusEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
public static AcsOpenDoorStatusEnum getEnumByCode(Integer code) {
for (AcsOpenDoorStatusEnum item : values()) {
if (code.equals(item.getCode())) {
return item;
}
}
return null;
}
public Integer getCode() {
return this.code;
}
public String getMessage() {
return this.message;
}
}
@@ -0,0 +1,30 @@
package cn.cloudwalk.elevator.em;
public enum AcsOperateStatusEnum {
INIT(Integer.valueOf(0), "初始化"), MATCHED(Integer.valueOf(1), "已匹配");
private Integer code;
private String message;
AcsOperateStatusEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
public static AcsOperateStatusEnum getEnumByCode(Integer code) {
for (AcsOperateStatusEnum item : values()) {
if (code.equals(item.getCode())) {
return item;
}
}
return null;
}
public Integer getCode() {
return this.code;
}
public String getMessage() {
return this.message;
}
}
@@ -0,0 +1,30 @@
package cn.cloudwalk.elevator.em;
public enum AcsOperateTypeEnum {
REMOTE_OPEN_DOOR("REMOTE_OPEN_DOOR", "远程开门"), QRCODE_OPEN_DOOR("QRCODE_OPEN_DOOR", "小程序扫码开门");
private String code;
private String message;
AcsOperateTypeEnum(String code, String message) {
this.code = code;
this.message = message;
}
public static AcsOperateTypeEnum getEnumByCode(String code) {
for (AcsOperateTypeEnum item : values()) {
if (code.equals(item.getCode())) {
return item;
}
}
return null;
}
public String getCode() {
return this.code;
}
public String getMessage() {
return this.message;
}
}
@@ -0,0 +1,30 @@
package cn.cloudwalk.elevator.em;
public enum AcsPassTypeEnum {
LONG_TIME(Integer.valueOf(0), "长期"), AUTO_PASS(Integer.valueOf(1), "自定义时间"), PASS_TIME(Integer.valueOf(2), "通行时间段");
private Integer code;
private String message;
AcsPassTypeEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
public static YesNoTypeEnum getEnumByCode(Integer code) {
for (YesNoTypeEnum item : YesNoTypeEnum.values()) {
if (code.equals(item.getCode())) {
return item;
}
}
return null;
}
public Integer getCode() {
return this.code;
}
public String getMessage() {
return this.message;
}
}
@@ -0,0 +1,55 @@
package cn.cloudwalk.elevator.em;
public enum AlarmStateCodeEnum {
OPERATION_FAILED("36000001", "操作失败"), EMPTY_PARAMETERS_WRONG("36000002", "参数不能为空"),
INSERT_DATABSE_EREEOR("36000003", "插入数据库异常"), EMPTY_USER_ID("36000004", "ID不能为空"),
PARAM_ERROR("36000005", "参数不符合要求"), SEARCH_INFORMATION_FAILED("36000006", "查询信息失败"),
TASK_NAME_EXIST("36000007", "布控名称重复"), TASK_TYPE_NAME_EXIST("36000012", "布控类型名称重复"),
DELETE_NOT_EXIST("36000008", "被删除资源不存在"), CONTROL_TASK_TYPE_HAS_TASK("36000009", "存在关联任务"),
SAVE_TASK_TYPE_ERROR("36000010", "保存区控类型失败"), UPDATE_TASK_TYPE_ERROR("36000011", "更新区控类型失败"),
FILE_SIZE_ILLEGAL("3600030", "文件大小超过"), WRONG_PARAMETERS("400", "参数错误"), SERVER_EXCEPTION("500", "服务器异常"),
SUCCESS("00000000", "成功"), CWOS_FEIGN_FAILED("36000007", "调用cwos接口异常"), PAGE_QUERY_FAILED("36000008", "分页查询失败"),
PARAM_REPEAT("36000009", "证件类型+证件号重复"), CONTROL_TASK_ID_NOT_EXIST("36000010", "任务编号不存在"),
DEVICE_NOT_EXIST("36000011", "回放链接已失效"), LABEL_NAME_DUPLICATE_FAILED("10001056", "库名称重复"),
LABEL_NAME_INVALID("10001050", "库名称无效"), LABEL_QUERY_FAILED("10001051", "标签查询失败"),
LABEL_SAVE_FAILED("10001052", "标签保存失败"), LABEL_UPDATE_FAILED("10001053", "标签更新失败"),
LABEL_DELETE_FAILED("10001054", "标签删除失败"), EMPTY_LABEL_NAME("10001055", "标签名称为空"),
LABEL_PAGE_FAILED("10001055", "分页查询标签异常"), LABEL_LIST_FAILED("10001057", "列表查询标签异常"),
LABEL_BRAND_FAILED("10001060", "查询车辆品牌异常"), VEHICLE_TYPE_FAILED("10001061", "查询车辆类型异常"),
VEHICLE_DETAIL_ERROR("10001062", "车辆详情查询失败"), CODE_QUERY_ERROR("10001063", "查询失败"),
LABEL_SIZE_FAILED("10001067", "库名称超过最大长度"), PLATE_NO_DUPLICATE("10001070", "车牌号重复添加"),
VEHICLE_ADD_ERROR("10001071", "车辆添加失败"), VEHICLE_PROPERTY_UNQUALIFIED("10001087", "车辆属性不合格"),
PLATE_NO_INVALID("10005202", "车牌号无效"), VEHICLE_TYPE_INVALID("10005203", "车牌类型无效"),
VEHICLE_BRAND_INVALID("10005204", "车辆品牌无效"), VEHICLE_EDIT_FAIL("10001069", "车辆编辑失败"),
VEHICLE_DELETE_ERROR("10001076", "车辆删除失败"), VEHICLE_PAGE_FAILED("10001064", "车辆分页查询失败"),
VEHICLE_LIST_FAILED("10001065", "车辆LIST查询失败"), LABEL_BIND_VEHICLE("10001058", "该标签已被绑定具体车辆"),
EMPTY_PIC_NAME("10001059", "图片地址为空"), PICTURE_FAILED("10001070", "图片不合法"),
LABEL_BIND_PERSON("10002058", "该标签已被绑定具体人员"), LABEL_BIND_FIELD("10002059", "该标签绑定人员失败"),
PERSON_PROPERTY_UNQUALIFIED("10002087", "人脸属性不合格"), PERSON_PIC_UNQUALIFIED("10002088", "人脸图片不合格"),
PERSON_ORG_ADD_FEILD("10002089", "人员管理添加人员失败"), PERSON_ADD_ERROR("10002071", "人员添加失败"),
PERSON_DUPLICATE("10002070", "人员重复添加"), PHONE_NO_INVALID("10005205", "手机号无效"), CARD_NO_INVALID("10005206", "身份证无效"),
NAME_NO_INVALID("10005207", "名称无效"), CARD_NO_DUPLICATE("10005208", "身份证重复添加"),
PERSON_EDIT_FAIL("10002069", "人员编辑失败"), PERSON_DELETE_ERROR("10002076", "人员删除失败"),
PERSON_PAGE_FAILED("10002064", "人员分页查询失败"), PERSON_LIST_FAILED("10002065", "人员LIST查询失败"),
ORGANIZATION_PERSONS_EMPTY("10002066", "人员管理人员信息为空"), FILE_TYPE_IS_INVALID("53060429", "上传文件类型不合法"),
FILE_MAX_IS_ERROR("53060428", "上传文件超过最大大小"), FILE_UPLOAD_CONTROLLER_ERROR("80014013", "模块文件上传异常"),
PIC_DELETE_ERROR("10001084", "图片删除失败"), EXPORT_TASK_DOWNLOAD_CENTER_FAILURE("36000008", "下载中心创建下载任务失败"),
EXPORT_TASK_FAILURE("36000009", "添加导出任务失败"), EXPORT_TASK_TYPE_ERROR("36000010", "导出任务类型错误"),
EXPORT_TASK_OVERLOAD_THRESHOLD("36000011", "查询导出记录超过设定阈值");
private String code;
private String message;
AlarmStateCodeEnum(String code, String message) {
this.code = code;
this.message = message;
}
public String getCode() {
return this.code;
}
public String getMessage() {
return this.message;
}
}
@@ -0,0 +1,31 @@
package cn.cloudwalk.elevator.em;
public enum CompareTypeEnum {
RECOG(Integer.valueOf(1), "1:N比对"), PERSON_CARD(Integer.valueOf(2), "人证比对"),
ACS_BACK_RECOG(Integer.valueOf(3), "门禁1:N比对"), APP_BACK_RECOG(Integer.valueOf(4), "应用端1:N比对");
private Integer code;
private String message;
CompareTypeEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
public static CompareTypeEnum getEnumByCode(Integer code) {
for (CompareTypeEnum item : values()) {
if (code.equals(item.getCode())) {
return item;
}
}
return null;
}
public Integer getCode() {
return this.code;
}
public String getMessage() {
return this.message;
}
}
@@ -0,0 +1,70 @@
package cn.cloudwalk.elevator.em;
public enum EngineAddressEnum {
PORTAL_USER_PAGE("用户查询接口", "/portal/user/manage/page"),
PERSON_PROPERTIES_LIST("查询商户对应的员工属性", "/component/person/properties/list"),
NINCACOMMON_AREA_GET_ALL_TREE("获取区域树状结构", "/sysetting/deviceArea/tree"),
COMMON_VEHICLE_GET_ALL_LABLES("获取车辆管理标签信息", "/vm/label/list"),
COMMON_VEHICLE_VM_VEHICLE_LABELREF("获取车辆管理车辆分页信息", "/vm/vehicle/control/labelRef"),
COMMON_VEHICLE_VM_VEHICLE_LIST("批量获取车辆管理车辆信息", "/vm/vehicle/list"),
CWOS_DEVICE_GET("设备列表查询", "/component/device/list"), CW0S_DEVICE_DETAIL("设备详情", "/core/atomic/device/detail"),
CWOS_DEVICE_SETTING("下发参数到设备", "/server/push/55000"),
CWOS_AREA_GET_ALL_TREE("获取区域树状结构", "/component/device/area/get/alltree"),
CWOS_QUERY_DEVICE_APPLICATION("查询设备与应用关联列表", "/component/device/app/list"),
CWOS_BIND_DEVICE_APPLICATION("绑定设备与应用", "/component/device/app/add"),
CWOS_SPLIT_DEVICE_APPLICATION("解绑设备与应用", "/component/device/app/delete"),
CWOS_QUERY_APPLICATION_ID("查询应用ID", "/res/application/instance/query"),
CWOS_BIND_DEVICE_IMAGESTORE("绑定图库与设备", "/component/device/imagestore/add"),
CWOS_SPLIT_DEVICE_IMAGESTORE("解除绑定图库与设备", "/component/device/imagestore/delete"),
CWOS_BIND_IMAGESTORE_APPLICATION("绑定图库与应用", "/core/application/group/add"),
CWOS_SPLIT_IMAGESTORE_APPLICATION("解绑图库与应用", "/core/application/group/delete"),
CWOS_ORGANIZATION_TREE("查询机构树型结构", "/component/organization/tree"),
CWOS_BIOLOGY_IMAGE_COMPARE("单库或多库比对", "/component/biology/tool/feature/query"),
CWOS_BIOLOGY_PERSON_DETAIL("查询人员信息详情", "/component/person/detail"),
CWOS_BIOLOGY_PERSON_LIST("查询人员信息", "/component/person/listPerson"),
CWOS_BIOLOGY_IMAGESTORE_ADD("新增图库", "/component/imagestore/add"),
CWOS_BIOLOGY_IMAGESTORE_EDIT("编辑图库", "/component/imagestore/edit"),
CWOS_BIOLOGY_IMAGESTORE_LIST("查询图库", "/component/imagestore/list"),
COWS_BIOLOGY_IMAGESTORE_DELETE("删除图库", "/component/imagestore/delete"),
CWOS_BIOLOGY_IMAGESTORE_DETAIL("图库详情", "/component/imagestore/detail"),
CWOS_BIOLOGY_PERSON_PAGE("分页查询人员", "/component/person/page"),
CWOS_BIOLOGY_PERSON_ADD("新增人员", "/component/person/add"),
CWOS_BIOLOGY_PERSON_EDIT("编辑人员", "/component/person/edit"),
CWOS_BIOLOGY_PERSON_DELETE("删除人员", "/component/person/delete"),
CWOS_BIOLOGY_LABEL_GETALLLABELS("查询标签列表", "/biology/label/getAllLabels"),
CWOS_BIOLOGY_LABLE_ADD("新增标签", "/biology/label/add"), CWOS_BIOLOGY_LABLE_EDIT("编辑标签", "/biology/label/edit"),
CWOS_BIOLOGY_LABLE_DELETE("删除标签", "/biology/label/delete"),
CWOS_BIOLOGY_LABLE_PERSONS_ADD("标签人员新增", "/biology/label/personsAdd"),
CWOS_BIOLOGY_LABLE_PERSONS_DEL("标签人员删除", "/biology/label/personsDel"),
CWOS_FILE_UPLOAD("文件上传", "/portal/fileManager/{moduleCategory}/fileUpload"),
CWOS_FILE_DELETE("文件删除", "/portal/fileManager/remove/images"),
CWOS_FILE_PART_INIT("分片上传文件初始化", "/portal/file/part/init"),
CWOS_FILE_PART_FINISH("分片上传文件结束", "/portal/file/part/finish"), CWOS_FILE_APPEND("文件追加", "/portal/file/part/append"),
PINEAPPLE_FACE_FEATURE_GET("人脸特征提取", "staticdb/search/feature"),
PINEAPPLE_FACE_SEARCH_MULTIPLE("多库人脸检索", "staticdb/search/multiple"),
PINEAPPLE_STRUCTURE_ATTRIBUTE("全结构化属性", "structure/recognize"),
PINEAPPLE_CLUSTER_FACE_ADD("特征入库", "api/cluster/feature/add"),
PINEAPPLE_CLUSTER_START_DEVICE("按groupId聚类", "api/cluster/doClusterByDeviceId"),
PINEAPPLE_CLUSTER_GET_TASK_INFO("获取聚类任务信息", "api/cluster/getAllTaskInfo"),
PINEAPPLE_CLUSTER_STOP("停止聚类", "api/cluster/stopIncreCluster"),
PINEAPPLE_CLUSTER_GROUP_REMOVE("删除聚类库", "api/cluster/group/base/remove"),
PINEAPPLE_ENGINE_PAGE_INFO("引擎分页查询", "gateway/config/server/getbypage"),
SEND_MESSAGE_TO_MQTT("发送数据到mqtt", "mqtt/publish"), GET_ALIVE_CLIENTS_OF_MQTT("获得所有存活的客户端", "mqtt/getClients"),
ALARM_OCCUR("声光报警器触发", "mqtt/publish"), VISITOR_QUERY("查询识别记录详情", "/intelligent/visitor/record/query");
private final String api;
private final String address;
EngineAddressEnum(String api, String address) {
this.api = api;
this.address = address;
}
public String getApi() {
return this.api;
}
public String getAddress() {
return this.address;
}
}
@@ -0,0 +1,41 @@
package cn.cloudwalk.elevator.em;
public enum OpenDoorTypeEnum {
FACE("FACE", "人脸开门"), APP("APP", "远程开门"), GUARD_CARD("GUARD_CARD", "门禁卡开门"), PASSWORD("PASSWORD", "密码开门"),
ID_CARD("ID_CARD", "身份证开门"), FACE_GUARD_CARD("FACE_GUARD_CARD", "人脸门禁卡开门"), INTERCOM("INTERCOM", "室内机开门"),
ONE("01", "人脸开门"), TWO("02", "门禁卡开门"), THREE("03", "二维码开门");
private String code;
private String remark;
public String getCode() {
return this.code;
}
public String getRemark() {
return this.remark;
}
OpenDoorTypeEnum(String code, String remark) {
this.code = code;
this.remark = remark;
}
public static String getEnumByCode(String code) {
for (OpenDoorTypeEnum item : values()) {
if (code.equals(item.code) || code.toUpperCase().equals(item.code)) {
return item.remark;
}
}
return code;
}
public static OpenDoorTypeEnum getOpenDoorTypeEnumByCode(String code) {
for (OpenDoorTypeEnum item : values()) {
if (code.equals(item.code) || code.toUpperCase().equals(item.code)) {
return item;
}
}
return null;
}
}
@@ -0,0 +1,30 @@
package cn.cloudwalk.elevator.em;
public enum YesNoTypeEnum {
N(Integer.valueOf(0), ""), Y(Integer.valueOf(1), "");
private Integer code;
private String message;
YesNoTypeEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
public static YesNoTypeEnum getEnumByCode(Integer code) {
for (YesNoTypeEnum item : values()) {
if (code.equals(item.getCode())) {
return item;
}
}
return null;
}
public Integer getCode() {
return this.code;
}
public String getMessage() {
return this.message;
}
}
@@ -0,0 +1,7 @@
/**
* 电梯应用公共层:工具、上下文、注解与跨模块复用的领域模型片段。
* <p>
* 被 {@code cw-elevator-application-data}、{@code cw-elevator-application-service}、{@code cw-elevator-application-web}
* 等模块依赖, 请勿在本包引入对上层 Web 或具体业务编排的反向依赖。
*/
package cn.cloudwalk.elevator;
@@ -0,0 +1,19 @@
package cn.cloudwalk.elevator.util;
public class AcsCacheKeyUtil {
public static String getOpenDoorCountKey(String date, String businessId) {
return "elevator:passCount:" + date + ":" + businessId;
}
public static String getRecogCountKey(String date, String businessId) {
return "acs_recogCount_" + date + "_" + businessId;
}
public static String getBackendRegLogIdKey(String deviceCode, String businessId, String captureId) {
return "acs:backendRegLogId:" + deviceCode + "_" + businessId + "_" + captureId;
}
public static String getBackendRegExpireKey(String businessId, String openDoorLogId) {
return "acs:backendRegExpire:#" + businessId + "#" + openDoorLogId;
}
}
@@ -0,0 +1,806 @@
package cn.cloudwalk.elevator.util;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.lang.reflect.Array;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Queue;
import java.util.Set;
import java.util.Stack;
import org.springframework.util.Assert;
import org.springframework.util.MultiValueMap;
public class CollectionUtils {
private static final int HASH_MAP_DEFAULT_INITIAL_CAPACITY = 16;
private static final float HASH_MAP_DEFAULT_LOAD_FACTOR = 0.75F;
public static <E> E getFirst(Collection<E> c) {
if (c == null) {
return null;
}
if (c instanceof List) {
List<E> list = (List<E>)c;
return list.isEmpty() ? null : list.get(0);
}
if (c instanceof Set)
return c.isEmpty() ? null : c.iterator().next();
if (c instanceof Queue) {
return c.isEmpty() ? null : ((Queue<E>)c).peek();
}
return c.isEmpty() ? null : c.iterator().next();
}
public static List<String> removeList(List<String> listA, List<String> listB) {
HashSet<String> hs1 = new HashSet<>(listA);
HashSet<String> hs2 = new HashSet<>(listB);
hs1.removeAll(hs2);
List<String> listC = new ArrayList<>();
listC.addAll(hs1);
return listC;
}
public static <E> List<List<E>> split(List<E> list, E element) {
if (list == null) {
return new ArrayList<>(0);
}
List<List<E>> result = new ArrayList<>();
int start = 0, end = 0;
for (E e : list) {
if ((element == null) ? (e == null) : element.equals(e)) {
result.add(new ArrayList<>(list.subList(start, end)));
start = end + 1;
}
end++;
}
if (start == list.size()) {
result.add(new ArrayList<>(0));
} else if (start < list.size()) {
result.add(new ArrayList<>(list.subList(start, list.size())));
}
return result;
}
public static <E> List<List<E>> split(List<E> list, int... index) {
if (list == null) {
return new ArrayList<>(0);
}
if (index == null || index.length == 0) {
ArrayList<List<E>> arrayList = new ArrayList<>();
arrayList.add(new ArrayList<>(list));
return arrayList;
}
if (index.length > list.size()) {
throw new IllegalArgumentException("{index}数量不能大于{list}长度。");
}
List<List<E>> result = new ArrayList<>();
int temp = 0;
for (int i : index) {
if (i < temp) {
throw new IllegalArgumentException("{index}的每个值必须比前一个大。");
}
if (i > list.size()) {
throw new IllegalArgumentException("{index}值不能大于{list}长度。");
}
result.add(new ArrayList<>(list.subList(temp, i)));
temp = i;
}
if (temp == list.size()) {
result.add(new ArrayList<>(0));
} else if (temp < list.size()) {
result.add(new ArrayList<>(list.subList(temp, list.size())));
}
return result;
}
public static <T> List<T> wrap(final T[] array) {
if (array == null) {
return null;
}
return new AbstractList<T>() {
public T get(int index) {
return (T)array[index];
}
public int size() {
return array.length;
}
public T set(int index, T element) {
T old = (T)array[index];
array[index] = element;
return old;
}
public void clear() {
throw new UnsupportedOperationException();
}
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < array.length; i++) {
if (null == array[i]) {
return i;
}
}
} else {
for (int i = 0; i < array.length; i++) {
if (o.equals(array[i])) {
return i;
}
}
}
return -1;
}
public int lastIndexOf(Object o) {
if (o == null) {
for (int i = array.length - 1; i > -1; i--) {
if (null == array[i]) {
return i;
}
}
} else {
for (int i = array.length - 1; i > -1; i--) {
if (o.equals(array[i])) {
return i;
}
}
}
return -1;
}
public boolean removeAll(Collection<?> c) {
throw new UnsupportedOperationException();
}
public boolean retainAll(Collection<?> c) {
throw new UnsupportedOperationException();
}
};
}
public static <T> List<T> values(Map<?, T> map) {
if (map == null) {
return null;
}
List<T> list = new ArrayList<>(map.size());
for (T t : map.values()) {
list.add(t);
}
return list;
}
public static <T> List<T> keys(Map<T, ?> map) {
if (map == null) {
return null;
}
List<T> list = new ArrayList<>(map.size());
for (T t : map.keySet()) {
list.add(t);
}
return list;
}
public static <E> int countOccurrence(E element, Iterable<E> elements) {
if (elements == null) {
return 0;
}
int i = 0;
if (element == null) {
for (E e : elements) {
if (null == e) {
i++;
}
}
} else {
for (E e : elements) {
if (element.equals(e)) {
i++;
}
}
}
return i;
}
public static <E> E[] toArray(Collection<E> collection, Class<E> typeClass) {
E[] t = (E[])Array.newInstance(typeClass, collection.size());
int i = 0;
for (Iterator<E> iterator = collection.iterator(); iterator.hasNext(); i++) {
t[i] = iterator.next();
}
return t;
}
public static <E> Iterator<E> iterator(final Enumeration<E> enumeration) {
return new Iterator<E>() {
public boolean hasNext() {
return enumeration.hasMoreElements();
}
public E next() {
if (!hasNext()) {
throw new NoSuchElementException();
}
return enumeration.nextElement();
}
public void remove() {
throw new UnsupportedOperationException("该迭代器没有指向的集合,所以移除元素为不支持的操作。");
}
};
}
public static <E> Enumeration<E> enumeration(final Iterator<E> iterator) {
return new Enumeration<E>() {
public boolean hasMoreElements() {
return iterator.hasNext();
}
public E nextElement() {
return iterator.next();
}
};
}
public static <T> void add(Collection<T> collection, Object value) {
if (value == null) {
collection.add(null);
} else if (value.getClass().isArray()) {
if (value instanceof Object[]) {
for (Object o : (Object[])value) {
collection.add((T)o);
}
} else {
int length = Array.getLength(value);
for (int i = 0; i < length; i++) {
collection.add((T)Array.get(value, i));
}
}
} else if (value instanceof Collection || value instanceof Stack) {
for (Object object : value) {
collection.add((T)object);
}
} else if (value instanceof Iterator) {
for (Iterator<T> iterator = (Iterator<T>)value; iterator.hasNext();) {
collection.add(iterator.next());
}
} else {
collection.add((T)value);
}
}
public static <T> void push(Stack<T> stack, Object value) {
if (value == null) {
stack.push((T)null);
} else if (value.getClass().isArray()) {
if (value instanceof Object[]) {
for (Object o : (Object[])value) {
stack.push((T)o);
}
} else {
int length = Array.getLength(value);
for (int i = 0; i < length; i++) {
stack.push((T)Array.get(value, i));
}
}
} else if (value instanceof Collection || value instanceof Stack) {
for (Object object : value) {
stack.push((T)object);
}
} else {
stack.push((T)value);
}
}
public static <K, V> MultiValueMap<K, V> synchronizedMultiValueMap(MultiValueMap<K, V> multiValueMap) {
if (multiValueMap == null) {
throw new IllegalArgumentException("The input argument is null!");
}
return new SynchronizedMultiValueMap<>(multiValueMap);
}
public static <K, V> MultiValueMap<K, V>
unmodifiableMultiValueMap(MultiValueMap<? extends K, ? extends V> multiValueMap) {
if (multiValueMap == null) {
throw new IllegalArgumentException("The input argument is null!");
}
return new UnmodifiableMultiValueMap<>(multiValueMap);
}
public static boolean isEmpty(Collection<?> collection) {
return (collection == null || collection.isEmpty());
}
public static boolean isEmpty(Stack<?> stack) {
return (stack == null || stack.isEmpty());
}
public static boolean isEmpty(Map<?, ?> map) {
return (map == null || map.isEmpty());
}
public static boolean isNotEmpty(Collection<?> collection) {
return (collection != null && !collection.isEmpty());
}
public static boolean isNotEmpty(Stack<?> stack) {
return (stack != null && !stack.isEmpty());
}
public static boolean isNotEmpty(Map<?, ?> map) {
return (map != null && !map.isEmpty());
}
private static boolean isComparable(List<?> list, List<?> compareList, int index) {
if (isEmpty(list) || isEmpty(compareList)) {
return false;
}
Assert.isTrue((index >= 0 && index < list.size()), "{index} 的值必须从0 至 list.size() - 1 之间。");
if (list.size() < compareList.size()) {
return false;
}
return true;
}
public static String[] toStringArray(Collection<?> collection) {
if (collection == null) {
return null;
}
String[] stringArray = new String[collection.size()];
int i = 0;
for (Object o : collection) {
stringArray[i] = StringUtils.toString(o);
i++;
}
return stringArray;
}
public static <K, V> void putAllIfAbsent(Map<K, V> map, Map<? extends K, ? extends V> paramMap) {
if (map == null || paramMap == null) {
return;
}
for (Map.Entry<? extends K, ? extends V> entry : paramMap.entrySet()) {
if (!map.containsKey(entry.getKey())) {
map.put(entry.getKey(), entry.getValue());
}
}
}
public static int calculateHashMapMinInitialCapacity(int size) {
return calculateHashMapMinInitialCapacity(size, 0.75F, 16);
}
public static int calculateHashMapMinInitialCapacity(int size, float loadFactor, int initlalCapcity) {
return Math.max((int)(size / loadFactor) + 1, initlalCapcity);
}
public static List<Integer> strArrayToList(String var) {
List<Integer> list = new ArrayList<>();
for (String v : var.split(",")) {
list.add(Integer.valueOf(Integer.parseInt(v)));
}
return list;
}
static class SynchronizedMultiValueMap<K, V> implements MultiValueMap<K, V> {
final MultiValueMap<K, V> multiValueMap;
final Object mutex;
private transient Set<K> keySet = null;
private transient Set<Map.Entry<K, List<V>>> entrySet;
private transient Collection<List<V>> values;
private transient Set<Map.Entry<K, V>> singleValueEntrySet;
private transient Collection<V> singleValues;
SynchronizedMultiValueMap(MultiValueMap<K, V> multiValueMap) {
if (multiValueMap == null) {
throw new IllegalArgumentException("The input argument is null!");
}
this.multiValueMap = multiValueMap;
this.mutex = this;
}
SynchronizedMultiValueMap(MultiValueMap<K, V> multiValueMap, Object mutex) {
if (multiValueMap == null) {
throw new IllegalArgumentException("The input argument is null!");
}
this.multiValueMap = multiValueMap;
this.mutex = mutex;
}
public void add(K key, V value) {
synchronized (this.mutex) {
this.multiValueMap.add(key, value);
}
}
public void addAll(K k, List<? extends V> list) {}
public void addAll(MultiValueMap<K, V> multiValueMap) {}
public void clear() {
synchronized (this.mutex) {
this.multiValueMap.clear();
}
}
public boolean containsKey(Object key) {
synchronized (this.mutex) {
return this.multiValueMap.containsKey(key);
}
}
public boolean containsValue(Object value) {
synchronized (this.mutex) {
return this.multiValueMap.containsValue(value);
}
}
public Set<Map.Entry<K, List<V>>> entrySet() {
synchronized (this.mutex) {
if (this.entrySet == null) {
this.entrySet = new CollectionUtils.SynchronizedSet<>(this.multiValueMap.entrySet(), this.mutex);
}
return this.entrySet;
}
}
public boolean equals(Object o) {
synchronized (this.mutex) {
return this.multiValueMap.equals(o);
}
}
public List<V> get(Object key) {
synchronized (this.mutex) {
return (List<V>)this.multiValueMap.get(key);
}
}
public V getFirst(K key) {
synchronized (this.mutex) {
return (V)this.multiValueMap.getFirst(key);
}
}
public int hashCode() {
synchronized (this.mutex) {
return this.multiValueMap.hashCode();
}
}
public boolean isEmpty() {
synchronized (this.mutex) {
return this.multiValueMap.isEmpty();
}
}
public Set<K> keySet() {
synchronized (this.mutex) {
if (this.keySet == null) {
this.keySet = new CollectionUtils.SynchronizedSet<>(this.multiValueMap.keySet(), this.mutex);
}
return this.keySet;
}
}
public List<V> put(K key, List<V> value) {
synchronized (this.mutex) {
return (List<V>)this.multiValueMap.put(key, value);
}
}
public void putAll(Map<? extends K, ? extends List<V>> t) {
synchronized (this.mutex) {
this.multiValueMap.putAll(t);
}
}
public List<V> remove(Object key) {
synchronized (this.mutex) {
return (List<V>)this.multiValueMap.remove(key);
}
}
public void set(K key, V value) {
synchronized (this.mutex) {
this.multiValueMap.set(key, value);
}
}
public void setAll(Map<K, V> values) {
synchronized (this.mutex) {
this.multiValueMap.setAll(values);
}
}
public int size() {
synchronized (this.mutex) {
return this.multiValueMap.size();
}
}
public Map<K, V> toSingleValueMap() {
synchronized (this.mutex) {
return this.multiValueMap.toSingleValueMap();
}
}
public Collection<List<V>> values() {
synchronized (this.mutex) {
if (this.values == null) {
this.values = new CollectionUtils.SynchronizedCollection<>(this.multiValueMap.values(), this.mutex);
}
return this.values;
}
}
public String toString() {
synchronized (this.mutex) {
return this.multiValueMap.toString();
}
}
private void writeObject(ObjectOutputStream s) throws IOException {
synchronized (this.mutex) {
s.defaultWriteObject();
}
}
}
static class SynchronizedCollection<E> implements Collection<E>, Serializable {
private static final long serialVersionUID = -7540724106974451779L;
final Collection<E> collection;
final Object mutex;
SynchronizedCollection(Collection<E> collection) {
if (collection == null) {
throw new IllegalArgumentException("The input argument is null!");
}
this.collection = collection;
this.mutex = this;
}
SynchronizedCollection(Collection<E> collection, Object mutex) {
if (collection == null) {
throw new IllegalArgumentException("The input argument is null!");
}
this.collection = collection;
this.mutex = mutex;
}
public int size() {
synchronized (this.mutex) {
return this.collection.size();
}
}
public boolean isEmpty() {
synchronized (this.mutex) {
return this.collection.isEmpty();
}
}
public boolean contains(Object o) {
synchronized (this.mutex) {
return this.collection.contains(o);
}
}
public Object[] toArray() {
synchronized (this.mutex) {
return this.collection.toArray();
}
}
public <T> T[] toArray(T[] a) {
synchronized (this.mutex) {
return this.collection.toArray(a);
}
}
public Iterator<E> iterator() {
return this.collection.iterator();
}
public boolean add(E o) {
synchronized (this.mutex) {
return this.collection.add(o);
}
}
public boolean remove(Object o) {
synchronized (this.mutex) {
return this.collection.remove(o);
}
}
public boolean containsAll(Collection<?> coll) {
synchronized (this.mutex) {
return this.collection.containsAll(coll);
}
}
public boolean addAll(Collection<? extends E> coll) {
synchronized (this.mutex) {
return this.collection.addAll(coll);
}
}
public boolean removeAll(Collection<?> coll) {
synchronized (this.mutex) {
return this.collection.removeAll(coll);
}
}
public boolean retainAll(Collection<?> coll) {
synchronized (this.mutex) {
return this.collection.retainAll(coll);
}
}
public void clear() {
synchronized (this.mutex) {
this.collection.clear();
}
}
public String toString() {
synchronized (this.mutex) {
return this.collection.toString();
}
}
private void writeObject(ObjectOutputStream s) throws IOException {
synchronized (this.mutex) {
s.defaultWriteObject();
}
}
}
static class SynchronizedSet<E> extends SynchronizedCollection<E> implements Set<E> {
private static final long serialVersionUID = 6982504952424781802L;
SynchronizedSet(Set<E> set) {
super(set);
}
SynchronizedSet(Set<E> set, Object mutex) {
super(set, mutex);
}
public boolean equals(Object o) {
synchronized (this.mutex) {
return this.collection.equals(o);
}
}
public int hashCode() {
synchronized (this.mutex) {
return this.collection.hashCode();
}
}
}
static class UnmodifiableMultiValueMap<K, V> implements MultiValueMap<K, V>, Serializable {
private static final long serialVersionUID = 7629840602579792180L;
final MultiValueMap<K, V> multiValueMap;
Set<Map.Entry<K, List<V>>> entrySet;
Collection<List<V>> values;
Set<K> keySet;
Map<K, V> singleValueMap;
UnmodifiableMultiValueMap(MultiValueMap<? extends K, ? extends V> multiValueMap) {
this.multiValueMap = (MultiValueMap)multiValueMap;
}
public void add(K key, V value) {
throw new UnsupportedOperationException();
}
public void addAll(K k, List<? extends V> list) {}
public void addAll(MultiValueMap<K, V> multiValueMap) {}
public void clear() {
throw new UnsupportedOperationException();
}
public boolean containsKey(Object key) {
return this.multiValueMap.containsKey(key);
}
public boolean containsValue(Object value) {
return this.multiValueMap.containsValue(value);
}
public Set<Map.Entry<K, List<V>>> entrySet() {
if (this.entrySet == null) {
this.entrySet = Collections.unmodifiableSet(this.multiValueMap.entrySet());
}
return this.entrySet;
}
public boolean equals(Object o) {
return this.multiValueMap.equals(o);
}
public List<V> get(Object key) {
return (List<V>)this.multiValueMap.get(key);
}
public V getFirst(K key) {
return (V)this.multiValueMap.getFirst(key);
}
public int hashCode() {
return this.multiValueMap.hashCode();
}
public boolean isEmpty() {
return this.multiValueMap.isEmpty();
}
public Set<K> keySet() {
if (this.keySet == null) {
this.keySet = Collections.unmodifiableSet(this.multiValueMap.keySet());
}
return this.keySet;
}
public List<V> put(K key, List<V> value) {
throw new UnsupportedOperationException();
}
public void putAll(Map<? extends K, ? extends List<V>> t) {
throw new UnsupportedOperationException();
}
public List<V> remove(Object key) {
throw new UnsupportedOperationException();
}
public void set(K key, V value) {
throw new UnsupportedOperationException();
}
public void setAll(Map<K, V> values) {
throw new UnsupportedOperationException();
}
public Set<Map.Entry<K, V>> singleValueEntrySet() {
return toSingleValueMap().entrySet();
}
public Collection<V> singleValues() {
return toSingleValueMap().values();
}
public int size() {
return this.multiValueMap.size();
}
public Map<K, V> toSingleValueMap() {
if (this.singleValueMap == null) {
this.singleValueMap = Collections.unmodifiableMap(this.multiValueMap.toSingleValueMap());
}
return this.singleValueMap;
}
public Collection<List<V>> values() {
if (this.values == null) {
this.values = Collections.unmodifiableCollection(this.multiValueMap.values());
}
return this.values;
}
}
}
@@ -0,0 +1,114 @@
package cn.cloudwalk.elevator.util;
public class CommunityConstants {
public static interface Common {
public static final String NOTE_TYPE_ORG = "1";
public static final String NOTE_TYPE_TAG = "2";
public static final String NOTE_TYPE_PERSON = "3";
public static final String NOTE_TYPE_EDG = "4";
public static final String ACCESS_NAME_SUFFIX = "门禁";
public static final Integer ACCESS_AUTO = Integer.valueOf(0);
public static final Integer ONE_HUNDRED = Integer.valueOf(100);
public static final Integer BATCH_SIZE = Integer.valueOf(500);
public static final Integer MAX_SHOW_CAPTURE = Integer.valueOf(7);
public static final String TEMP_PATH = "java.io.tmpdir";
public static final String FONT_PATH = "font/simsun.ttc";
public static final String TEMPLATE_NAME = "appraiseReportTemplate";
public static final String FONT_SUFFIX = ".ttc";
public static final String DASH = "-";
public static final String HTTP_PREFIX = "http://";
public static final String BR = "<br/>";
public static final String FORMAT = "yyyy/MM/dd/HH";
public static final String CLIENT_IP = "ClientIP";
}
public static interface Snap {
public static final String IMG_DOWNLOAD_PARSE_ERROR = "img_download_parse_error";
public static final String DATA_IMAGE_BASE64_HEAD = "data:image/";
}
public static interface Symbol {
public static final String COMMA = ",";
public static final String HYPHEN = "-";
public static final String COLON = ":";
}
public static interface Alarm {
public static final Integer IN = Integer.valueOf(1);
public static final Integer OUT = Integer.valueOf(0);
public static final String STRANGER = "STRANGER";
public static final String BLACK_LIST = "BLACK_LIST";
}
public static interface Redis {
public static final String EVENT_CODE_INC_KEY = "EVENT_CODE:INC_KEY";
public static final Integer EVENT_CODE_INC_MAX_VALUE = Integer.valueOf(9999);
public static final String TF_BRAIN_ACCESS_TOKEN = "tfbrain_access_token";
public static final String USER_TOKEN_KEY = "USER_TOKEN:%s";
public static final String OUT_IN_IMAGE_STORE = "upOutInStore";
public static final String AGREEMENT = "redis://";
public static final String LOCK = "redisLock";
public static final String OLD_AUTO_CREATE_SETTING = "OLD:AUTO_CREATE";
public static final String CHILD_AUTO_CREATE_SETTING = "CHILD:AUTO_CREATE:%s";
public static final String IMPORT_FAILURE_MSG = "IMPORT:FAILURE:%s";
public static final String VILLAGE_RECORD_LIST = "village:list";
public static final String COMMUNITY_LIST = "community:list";
public static final Long VALUE_CHANGE_EXPIRE_TIME = Long.valueOf(1L);
public static final String PROVINCE_TREE = "tree:province:level:%s";
}
public static interface Data {
public static final String MALE = "";
public static final String FEMALE = "";
public static final String ID = "id";
public static final String CREATE_TIME = "createTime";
public static final String LAST_UPDATE_TIME = "lastUpdateTime";
public static final String REGISTER_PERSON_ID = "register_person_id";
public static final String GRID_ID = "grid_id";
public static final Integer TOP_VALUE = Integer.valueOf(1);
public static final Integer NO_TOP_VALUE = Integer.valueOf(0);
public static final Integer PUBLISH_STATUS_1 = Integer.valueOf(1);
public static final Integer PUBLISH_STATUS_2 = Integer.valueOf(2);
public static final Integer PUBLISH_STATUS_3 = Integer.valueOf(3);
public static final String AGE = "age";
public static final String SEX = "sex";
public static final String COMMUNITY_ID = "community_id";
public static final String VILLAGE_ID = "village_id";
}
public static interface Dcs {
public static final String DCS_URL_ID_FORMAT = "%s:%s@%s:2015?dcsID=";
public static final String DCS_URL_FORMAT = "%s:%s@%s:2015";
}
public static interface Dcr {
public static final String HTTPS_PREFIX = "https://";
public static final String MID_PART_DOWNLOAD_URL = "/object/download?pool=";
public static final String MID_PART_UPLOAD_URL = "/object/upload/do?token=";
public static final String MID_DOWNLOAD_FILE_URL = "/simple-file/download?pool=";
public static final String MID_UPLOAD_FILE_URL = "/simple-file/upload/full?pool=";
public static final String PARA_PATH = "&path=";
public static final String PARA_SIZE = "&offset=0&size=";
public static final String PARA_ID = "&id=";
public static final String ID = "ID";
public static final String AUTH_TYPE = "Basic ";
public static final String AUTH = "authorization";
public static final String POOL = "pool";
public static final String TOKEN = "Token";
public static final String ADDRESS = "Address";
public static final String AUTH_SUFFIX = "/object/upload";
public static final Integer MAX_DOWNLOAD_SIZE = Integer.valueOf(16000000);
public static final String OFFSET = "&offset=";
public static final String SIZE = "&size=";
}
public static interface Icc {
public static final String ICC_RTSP_URL = "rtsp://%s:9090/dss/monitor/param?cameraid=%s%%24%s&substream=1";
public static final String ICC_PLAYBACK_RTSP_URL =
"rtsp://%s:9090/dss/playback/param?cameraid=%s%%24%s&substream=1&type=3";
public static final String ICC_OUTSIDE_HLS_URL = "/live/cameraid/%s%%24%s/substream/1.m3u8";
public static final String ICC_PLAYBACK_OUTSIDE_HLS_URL = "/vod/center/cameraid/%s%%24%s/substream/1";
public static final int DEVICE_TYPE_NVR = 6;
public static final int DEVICE_TYPE_IPC = 2;
}
}
@@ -0,0 +1,436 @@
package cn.cloudwalk.elevator.util;
import java.security.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneOffset;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.WeekFields;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DateUtils {
private static final Logger logger = LoggerFactory.getLogger(DateUtils.class);
public static final long ONE_DAY_LONG = 86400000L;
public static final String YYYYMMDD = "yyyyMMdd";
public static final String STANDARD_FORMAT = "yyyy-MM-dd HH:mm";
public static final String YYYY_MM_DD = "yyyy-MM-dd";
public static final String YYYY_MM_DD_HMS = "yyyy-MM-dd HH:mm:ss";
public static final String HHMMSS = "HH:mm:ss";
public static final String YYYYMM = "yyyyMM";
public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static long getCurrentTime() {
return System.currentTimeMillis();
}
public static String timestamp2String(Timestamp time, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(time.getTimestamp());
}
public static String formatDate(Date date, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
public static int defaultFormat(Date date) {
return Integer.valueOf(formatDate(date, "yyyyMMdd")).intValue();
}
public static Date defaultFormat(String str) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
try {
return sdf.parse(str);
} catch (ParseException e) {
logger.error("日期格式转换失败", e);
return null;
}
}
public static Date customFormat(String str, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
try {
return sdf.parse(str);
} catch (ParseException e) {
logger.error("日期格式转换失败", e);
return null;
}
}
public static int defaultFormat(long millis) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(millis);
return defaultFormat(cal.getTime());
}
public static String parseTimestamp(Timestamp time) {
return parseDate(time.getTimestamp());
}
public static String parseDate(Date date) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
return sdf.format(date);
} catch (Exception e) {
logger.error("日期格式转换失败", e);
return null;
}
}
public static String parseDate(Date date, String partern) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(partern);
return sdf.format(date);
} catch (Exception e) {
logger.error("日期格式转换失败", e);
return null;
}
}
public static int getYear() {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
return cal.get(1);
}
public static long getMonthFirstDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(5, 1);
calendar.set(11, 0);
calendar.set(12, 0);
calendar.set(13, 0);
calendar.set(14, 0);
return calendar.getTime().getTime();
}
public static long getMonthLastDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(5, calendar.getActualMaximum(5));
calendar.set(11, 23);
calendar.set(12, 59);
calendar.set(13, 59);
calendar.set(14, 999);
return calendar.getTime().getTime();
}
public static Long dateToStamp(String s) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
try {
Date date = simpleDateFormat.parse(s);
long ts = date.getTime();
return Long.valueOf(ts);
} catch (Exception e) {
logger.error("日期转为时间戳失败", e);
return Long.valueOf(0L);
}
}
public static String stampToDate(String s) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long lt = (new Long(s)).longValue();
Date date = new Date(lt);
String res = simpleDateFormat.format(date);
return res;
}
public static String getTwoDaysDesc(Integer startTime, Integer endTime) {
String twoDayDesc;
List<Integer> days = new ArrayList<>();
if (null == startTime || null == endTime) {
return "";
}
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
try {
Date start = dateFormat.parse(String.valueOf(startTime));
Date end = dateFormat.parse(String.valueOf(endTime));
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
tempEnd.add(5, 1);
while (tempStart.before(tempEnd)) {
days.add(Integer.valueOf(Integer.parseInt(dateFormat.format(tempStart.getTime()))));
tempStart.add(6, 1);
}
} catch (ParseException e) {
logger.error("时间转换失败", e);
}
int dayOfWeek = 7;
if (days.size() > dayOfWeek) {
twoDayDesc = "";
} else if (days.size() > 1) {
twoDayDesc = "";
} else {
twoDayDesc = "";
}
return twoDayDesc;
}
public static Long todayStart() {
Calendar calendar = Calendar.getInstance();
calendar.set(11, 0);
calendar.set(12, 0);
calendar.set(13, 0);
calendar.set(14, 0);
return Long.valueOf(calendar.getTimeInMillis());
}
public static Long dateToStampTomorrow(String s) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
try {
Date date = simpleDateFormat.parse(s);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(5, 1);
long ts = cal.getTimeInMillis();
return Long.valueOf(ts);
} catch (Exception e) {
logger.error("日期转换失败", e);
return Long.valueOf(0L);
}
}
public static Date getDateSubDay(int day) {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(5, day);
return cal.getTime();
}
public static Date getDateSubDay(Date date, int day) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(5, day);
return cal.getTime();
}
public static Long todayStart(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(11, 0);
calendar.set(12, 0);
calendar.set(13, 0);
calendar.set(14, 0);
return Long.valueOf(calendar.getTimeInMillis());
}
public static Long todayEnd(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(11, 23);
calendar.set(12, 59);
calendar.set(13, 59);
calendar.set(14, 999);
return Long.valueOf(calendar.getTimeInMillis());
}
public static Long todayEnd() {
Calendar calendar = Calendar.getInstance();
calendar.set(11, 23);
calendar.set(12, 59);
calendar.set(13, 59);
calendar.set(14, 999);
return Long.valueOf(calendar.getTimeInMillis());
}
public static String formatTimeDuration(long duration, int format) {
boolean fu = false;
long fduration = duration;
if (duration < 0L) {
fu = true;
fduration = Math.abs(duration);
}
StringBuilder builder = new StringBuilder();
long sec = fduration / 1000L % 60L;
long min = fduration / 1000L / 60L % 60L;
long hour = fduration / 1000L / 60L / 60L % 24L;
long day = fduration / 1000L / 60L / 60L / 24L;
if (day > 0L && format > 0) {
format--;
builder.append(day).append("");
}
format--;
if (hour > 0L && format > 0) {
builder.append(hour).append("小时");
}
format--;
if (min > 0L && format > 0) {
builder.append(min).append("分钟");
}
format--;
if (sec > 0L && format > 0) {
builder.append(sec).append("");
}
if (fu) {
builder.insert(0, "-");
}
return builder.toString();
}
public static String formatTimeDurationHour(long duration, int format) {
if (duration == 0L) {
return "-";
}
long fduration = Math.abs(duration);
StringBuilder builder = new StringBuilder();
long sec = fduration / 1000L % 60L;
long min = fduration / 1000L / 60L % 60L;
long hour = fduration / 1000L / 60L / 60L;
if (hour > 0L && format > 0) {
builder.append(hour).append("小时");
}
format--;
if (min > 0L && format > 0) {
builder.append(min).append("分钟");
}
format--;
if (sec > 0L && format > 0) {
builder.append(sec).append("");
}
return builder.toString();
}
public static Date getMonth(Date date, int count) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int month = calendar.get(2);
calendar.set(2, month - count);
return calendar.getTime();
}
public static int getYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(1);
}
public static int getMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(2) + 1;
}
public static Long dateToStampFormat(String s, String format) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
try {
Date date = simpleDateFormat.parse(s);
return Long.valueOf(date.getTime());
} catch (Exception e) {
logger.error("日期转换失败", e);
return Long.valueOf(0L);
}
}
public static boolean timeIsInRound(String now, String start, String end, String format) {
Date nowTime, beginTime, endTime;
SimpleDateFormat df = new SimpleDateFormat(format);
try {
nowTime = df.parse(now);
beginTime = df.parse(start);
endTime = df.parse(end);
} catch (Exception e) {
logger.error("时间格式转换异常,原因=[{}]", e.getMessage(), e);
return false;
}
if (nowTime.getTime() >= beginTime.getTime() && nowTime.getTime() <= endTime.getTime()) {
return true;
}
return false;
}
public static int getDayOfWeek(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(7);
}
public static LocalDateTime millToDate(Long mill) {
return LocalDateTime.ofInstant(Instant.ofEpochMilli(mill.longValue()), ZoneOffset.ofHours(8));
}
public static List<StartTimeAndEndTime> getCycle(Integer timeType, int cycleNum) {
LocalDateTime nowStartTime, nowEndTime;
int i;
LocalDateTime nowMonday, nowSunday;
int j;
LocalDateTime nowFirstDay, nowLastDay;
int k;
if (timeType == null) {
return Collections.emptyList();
}
List<StartTimeAndEndTime> timeList = new ArrayList<>(cycleNum);
switch (timeType.intValue()) {
case 0:
nowStartTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
nowEndTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
timeList.add(
new StartTimeAndEndTime(Long.valueOf(nowStartTime.toInstant(ZoneOffset.of("+8")).toEpochMilli()),
Long.valueOf(nowEndTime.toInstant(ZoneOffset.of("+8")).toEpochMilli()),
nowStartTime.getDayOfMonth() + ""));
for (i = 1; i < cycleNum; i++) {
LocalDateTime firstDay = nowStartTime.minusDays(i);
LocalDateTime lastDay = nowEndTime.minusDays(i);
timeList.add(
new StartTimeAndEndTime(Long.valueOf(firstDay.toInstant(ZoneOffset.of("+8")).toEpochMilli()),
Long.valueOf(lastDay.toInstant(ZoneOffset.of("+8")).toEpochMilli()),
firstDay.getDayOfMonth() + ""));
}
break;
case 1:
nowMonday = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).with(DayOfWeek.MONDAY);
nowSunday = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).with(DayOfWeek.SUNDAY);
timeList
.add(new StartTimeAndEndTime(Long.valueOf(nowMonday.toInstant(ZoneOffset.of("+8")).toEpochMilli()),
Long.valueOf(nowSunday.toInstant(ZoneOffset.of("+8")).toEpochMilli()),
nowMonday.get(WeekFields.ISO.weekOfWeekBasedYear()) + ""));
for (j = 1; j < cycleNum; j++) {
LocalDateTime lastMonday = nowMonday.minusWeeks(j);
LocalDateTime lastSunday = nowSunday.minusWeeks(j);
timeList.add(
new StartTimeAndEndTime(Long.valueOf(lastMonday.toInstant(ZoneOffset.of("+8")).toEpochMilli()),
Long.valueOf(lastSunday.toInstant(ZoneOffset.of("+8")).toEpochMilli()),
lastMonday.get(WeekFields.ISO.weekOfWeekBasedYear()) + ""));
}
break;
case 2:
nowFirstDay =
LocalDateTime.of(LocalDate.now(), LocalTime.MIN).with(TemporalAdjusters.firstDayOfMonth());
nowLastDay = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).with(TemporalAdjusters.lastDayOfMonth());
timeList.add(
new StartTimeAndEndTime(Long.valueOf(nowFirstDay.toInstant(ZoneOffset.of("+8")).toEpochMilli()),
Long.valueOf(nowLastDay.toInstant(ZoneOffset.of("+8")).toEpochMilli()),
nowFirstDay.get(ChronoField.MONTH_OF_YEAR) + ""));
for (k = 1; k < cycleNum; k++) {
LocalDateTime firstDay = LocalDateTime.now().minusMonths(k)
.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN);
LocalDateTime lastDay =
LocalDateTime.now().minusMonths(k).with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX);
timeList.add(
new StartTimeAndEndTime(Long.valueOf(firstDay.toInstant(ZoneOffset.of("+8")).toEpochMilli()),
Long.valueOf(lastDay.toInstant(ZoneOffset.of("+8")).toEpochMilli()),
firstDay.get(ChronoField.MONTH_OF_YEAR) + ""));
}
break;
}
return timeList;
}
public static void main(String[] args) {
System.out.println(">>>>>>>>>>>>>>" + dateToStampFormat("202002", "yyyyMM"));
}
}
@@ -0,0 +1,74 @@
package cn.cloudwalk.elevator.util;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class JsonUtils {
private static final Logger log = LoggerFactory.getLogger(JsonUtils.class);
private static final Logger logger = LoggerFactory.getLogger(DateUtils.class);
public static String toJson(Object obj) {
ObjectMapper mapper = objectMapper();
try {
return mapper.writeValueAsString(obj);
} catch (JsonProcessingException e) {
logger.warn("json parase exception :{}", e.getMessage());
return null;
}
}
public static <T> T toObj(String json, Class<T> clazz) {
ObjectMapper mapper = objectMapper();
T value = null;
try {
value = (T)mapper.readValue(json, clazz);
} catch (IOException e) {
logger.warn("json parase exception :{}", e.getMessage());
}
return value;
}
public static <T> T toObj(String json, TypeReference<T> tTypeReference) {
ObjectMapper mapper = objectMapper();
T value = null;
try {
value = (T)mapper.readValue(json, tTypeReference);
} catch (IOException e) {
logger.warn("json parase exception :{}", e.getMessage());
}
return value;
}
public static <T> List<T> toObjList(String json, Class<T> clazz) {
ObjectMapper mapper = objectMapper();
List<T> value = null;
try {
JavaType jt = mapper.getTypeFactory().constructParametricType(ArrayList.class, new Class[] {clazz});
value = (List<T>)mapper.readValue(json, jt);
} catch (IOException e) {
logger.warn("json parase exception :{}", e.getMessage());
}
return value;
}
public static ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule((Module)new JavaTimeModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper;
}
}
@@ -0,0 +1,163 @@
package cn.cloudwalk.elevator.util;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.util.List;
import javax.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
@Component
public class RestTemplateUtil {
private static final Logger logger = LoggerFactory.getLogger(DateUtils.class);
private static RestTemplate restTemplate;
private static class SingletonRestTemplate {
static SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
static {
requestFactory.setConnectTimeout(10000);
requestFactory.setReadTimeout(10000);
}
static final RestTemplate INSTANCE = new RestTemplate((ClientHttpRequestFactory)requestFactory);
}
@PostConstruct
public void getInstance() {
RestTemplate restTemplate = SingletonRestTemplate.INSTANCE;
List<HttpMessageConverter<?>> converterList = restTemplate.getMessageConverters();
HttpMessageConverter<?> converterTarget = null;
for (HttpMessageConverter<?> item : converterList) {
if (MappingJackson2HttpMessageConverter.class == item.getClass()) {
converterTarget = item;
break;
}
}
if (null != converterTarget) {
converterList.remove(converterTarget);
}
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
converterList.add(new MappingJackson2HttpMessageConverter(objectMapper));
RestTemplateUtil.restTemplate = restTemplate;
}
public static String get(String url) {
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", "application/json");
headers.add("Content-Encoding", "UTF-8");
headers.add("Content-Type", "application/json; charset=UTF-8");
HttpEntity<String> requestEntity = new HttpEntity(null, (MultiValueMap)headers);
ResponseEntity<String> response =
restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class, new Object[0]);
return (String)response.getBody();
}
public static String get(URI url, HttpHeaders headers) {
HttpEntity<String> requestEntity = new HttpEntity(null, (MultiValueMap)headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
return (String)response.getBody();
}
public static <T> T get(URI url, HttpHeaders headers, Class<T> responseType) {
HttpEntity<Object> requestEntity = new HttpEntity(null, (MultiValueMap)headers);
T resultEntity = null;
try {
ResponseEntity<T> result = restTemplate.exchange(url, HttpMethod.GET, requestEntity, responseType);
resultEntity = getResultEntity(result, url);
} catch (Exception e) {
logger.warn(">>>>>>>>>>>>>>>>>【{}】接口调用失败,错误信息", url, e);
}
return resultEntity;
}
public static <T> T post(URI url, Object data, HttpHeaders headers, Class<T> responseType) {
HttpEntity<Object> requestEntity = new HttpEntity(data, (MultiValueMap)headers);
T resultEntity = null;
try {
logger.info(">>>>>>>>>>>>>>>>>开始请求接口:{}payload:{},", url.toString(), data);
ResponseEntity<T> result = restTemplate.postForEntity(url, requestEntity, responseType);
resultEntity = getResultEntity(result, url);
} catch (Exception e) {
logger.warn(">>>>>>>>>>>>>>>>>接口调用失败,错误信息:{}", e.getMessage());
}
return resultEntity;
}
public static <T> T postTf(URI url, Object data, HttpHeaders headers, Class<T> responseType) throws Exception {
HttpEntity<Object> requestEntity = new HttpEntity(data, (MultiValueMap)headers);
T resultEntity = null;
try {
logger.info(">>>>>>>>>>>>>>>>>开始请求接口:{},payload:{},", url.toString(), data);
ResponseEntity<T> result = restTemplate.postForEntity(url, requestEntity, responseType);
resultEntity = getTfResultEntity(result, url);
} catch (Exception e) {
logger.warn(">>>>>>>>>>>>>>>>>接口调用失败,错误信息:{}", e.getMessage());
throw e;
}
return resultEntity;
}
public static <T> T post(URI url, Object data, HttpHeaders headers, TypeReference<T> tTypeReference) {
HttpEntity<Object> requestEntity = new HttpEntity(data, (MultiValueMap)headers);
T resultEntity = null;
try {
ResponseEntity<String> result = restTemplate.postForEntity(url, requestEntity, String.class);
if (HttpStatus.OK == result.getStatusCode()) {
if (logger.isDebugEnabled()) {
logger.debug("接口返回值:{}", JsonUtils.toJson(result.getBody()));
}
return JsonUtils.toObj((String)result.getBody(), tTypeReference);
}
logger.info(">>>>>>>>>>>>>>>>>接口调用失败,状态码:{},错误原因:{}", result.getStatusCode(),
JsonUtils.toJson(result.getBody()));
} catch (Exception e) {
logger.warn(">>>>>>>>>>>>>>>>>接口调用失败,错误信息:{}", e.getMessage());
}
return resultEntity;
}
private static <T> T getTfResultEntity(ResponseEntity<T> result, URI url) throws Exception {
HttpStatus statusCode = result.getStatusCode();
if (HttpStatus.OK == statusCode) {
logger.info(">>>>>>>>>>>>>>>>>接口:{} 调用成功", url);
if (logger.isDebugEnabled()) {
logger.debug("接口返回值:{}", JsonUtils.toJson(result.getBody()));
}
return (T)result.getBody();
}
logger.info(">>>>>>>>>>>>>>>>>接口调用失败,状态码:{},错误原因:{}", statusCode, JsonUtils.toJson(result.getBody()));
if (HttpStatus.UNAUTHORIZED == statusCode) {
throw new Exception(statusCode.toString());
}
return null;
}
private static <T> T getResultEntity(ResponseEntity<T> result, URI url) {
if (HttpStatus.OK == result.getStatusCode()) {
logger.info(">>>>>>>>>>>>>>>>>接口:{} 调用成功", url);
if (logger.isDebugEnabled()) {
logger.debug("接口返回值:{}", JsonUtils.toJson(result.getBody()));
}
return (T)result.getBody();
}
logger.info(">>>>>>>>>>>>>>>>>接口调用失败,状态码:{},错误原因:{}", result.getStatusCode(),
JsonUtils.toJson(result.getBody()));
return null;
}
}
@@ -0,0 +1,37 @@
package cn.cloudwalk.elevator.util;
public class StartTimeAndEndTime {
public StartTimeAndEndTime(Long startTime, Long endTime, String currentTime) {
this.startTime = startTime;
this.endTime = endTime;
this.currentTime = currentTime;
}
private Long startTime;
private Long endTime;
private String currentTime;
public Long getStartTime() {
return this.startTime;
}
public void setStartTime(Long startTime) {
this.startTime = startTime;
}
public Long getEndTime() {
return this.endTime;
}
public void setEndTime(Long endTime) {
this.endTime = endTime;
}
public String getCurrentTime() {
return this.currentTime;
}
public void setCurrentTime(String currentTime) {
this.currentTime = currentTime;
}
}
@@ -0,0 +1,19 @@
package cn.cloudwalk.elevator.util;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
public class ToolUtil {
public static String generateUUID() {
String uuid = UUID.randomUUID().toString();
return uuid.replaceAll("-", "");
}
public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Set<Object> seen = ConcurrentHashMap.newKeySet();
return t -> seen.add(keyExtractor.apply(t));
}
}
@@ -0,0 +1,12 @@
Manifest-Version: 1.0
Implementation-Title: cw-elevator-application-common
Implementation-Version: 1.0-SNAPSHOT
Archiver-Version: Plexus Archiver
Built-By: YCWB0304
Implementation-Vendor-Id: cn.cloudwalk.elevator
Created-By: Apache Maven 3.6.1
Build-Jdk: 1.8.0_144
Implementation-URL: http://projects.spring.io/spring-boot/cw-elevator-
application/cw-elevator-application-common/
Implementation-Vendor: Pivotal Software, Inc.