| package com.doumee.core.utils; | 
|   | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.doumee.core.model.LoginUserInfo; | 
| import com.fasterxml.jackson.annotation.JsonInclude; | 
| import com.fasterxml.jackson.core.JsonProcessingException; | 
| import com.fasterxml.jackson.databind.ObjectMapper; | 
| import com.fasterxml.jackson.databind.PropertyNamingStrategy; | 
| import io.swagger.models.auth.In; | 
| import org.apache.batik.util.Platform; | 
| import org.apache.commons.lang3.StringUtils; | 
| import org.springframework.util.CollectionUtils; | 
|   | 
| import java.io.IOException; | 
| import java.math.BigDecimal; | 
| import java.net.URLDecoder; | 
| import java.text.SimpleDateFormat; | 
| import java.util.ArrayList; | 
| import java.util.Arrays; | 
| import  java.util.Date; | 
| import java.util.List; | 
| import java.util.Random; | 
| import java.util.*; | 
| import java.util.Date; | 
| import java.util.regex.Matcher; | 
| import java.util.regex.Pattern; | 
|   | 
| public class Constants { | 
|     public static final String HEADER_USER_TOKEN = "dm_user_token"; | 
|     public static final String REDIS_TOKEN_KEY = "token_"; | 
|     public static final String REDIS_HK_TOKEN_KEY = "hk_token_"; | 
|     public static final String HK_TOKEN_VALIDITY = "HK_TOKEN_VALIDITY"; | 
|     public static final String[]  ALL_SPELL_LIST_FIRST = new String[]{"A", "B", "C", "D", "E", "F", "G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}; | 
|     public static final int ZERO = 0 ; | 
|     public static final int ONE = 1 ; | 
|     public static final int TWO = 2 ; | 
|     public static final String HK_PARAM ="HK_PARAM" ; | 
|     public static final String LED_CONTENT_SPEED ="LED_CONTENT_SPEED" ; | 
|     public static final String HK_HOST ="HK_HOST" ; | 
|     public static final String HK_APPKEY ="HK_APPKEY" ; | 
|     public static final String LOGIN_OUT_URL ="LOGIN_OUT" ; | 
|     public static final String HK_APPSECRET ="HK_APPSECRET" ; | 
|     public static final String HK_HTTPS ="HK_HTTPS" ; | 
|     public static final String HK_PUSH_URL = "HK_PUSH_URL"; | 
|     public static final String HK_CARS_OPENAPI_ACCESS_KEY = "HK_CARS_OPENAPI_ACCESS_KEY"; | 
|     public static final String HK_CARS_OPENAPI_ACCESS_SECRET = "HK_CARS_OPENAPI_ACCESS_SECRET"; | 
|     public static final String HK_CARS_OPENAPI_URL = "HK_CARS_OPENAPI_URL"; | 
|     public static final String HK_ROOTORG_CODE ="HK_ROOTORG_CODE" ; | 
|     public static final String HK_ROOTORG_NAME ="HK_ROOTORG_NAME" ; | 
|     public static final String PLATFORM ="PLATFORM" ; | 
|     public static final String POWER_MINUTE ="POWER_MINUTE" ; | 
|     public static final String SPECIAL_COMPANY_ID ="SPECIAL_COMPANY_ID" ; | 
|   | 
|     public static final String RESERVATION_TOTAL_NUM ="RESERVATION_TOTAL_NUM" ; | 
|     public static final String SIGN_IN_PLACE_LAT ="SIGN_IN_PLACE_LAT" ; | 
|     public static final String SIGN_IN_PLACE_LNT ="SIGN_IN_PLACE_LNT" ; | 
|     public static final String SIGN_IN_PLACE_DISTANCE ="SIGN_IN_PLACE_DISTANCE" ; | 
|     public static final String SIGN_IN_QRCODE ="SIGN_IN_QRCODE" ; | 
|     public static final String SIGN_IN_ATTENTION ="SIGN_IN_ATTENTION" ; | 
|     public static final String SIGN_IN_QRCODE_PREFIX ="SIGN_IN_QRCODE_PREFIX" ; | 
|   | 
|   | 
|     //被拜访人信息校验方式(0手机号单独校验 1手机号和姓名组合校验) | 
|     public static final String BEVISITED_USER_VALID = "BEVISITED_USER_VALID"; | 
|     public static final String LW_BEVISITED_USER_VALID = "LW_BEVISITED_USER_VALID"; | 
|     public static final String SELECT_DOORS_VISIT_REQUIRED = "SELECT_DOORS_VISIT_REQUIRED"; | 
|     public static final String SELECT_DOORS_LW_REQUIRED = "SELECT_DOORS_LW_REQUIRED"; | 
|     public static final String PROBLEM_LW_REQUIRED = "PROBLEM_LW_REQUIRED"; | 
|     public static final String PROBLEM_VISIT_REQUIRED = "PROBLEM_VISIT_REQUIRED"; | 
|     public static final String MDJ_LW_REQUIRED = "MDJ_LW_REQUIRED"; | 
|     public static final String MDJ_VISIT_REQUIRED = "MDJ_VISIT_REQUIRED"; | 
|     public static final String EDS_PWD ="!@#$%^&QWERTY" ; | 
|     public static final String ROOT_PATH = ""; | 
|     public static final String FILE_DIR = ""; | 
|     public static final String INITIAL_PASSWORD = "INITIAL_PASSWORD"; | 
|     public static final String VALIDATE_VISIT = "VALIDATE_VISIT"; | 
|   | 
|     // 访客来访配置 | 
|     public static final String VISIT_CONFIG = "VISIT_CONFIG"; | 
|     public static final String MEMBER_IMG = "MEMBER_IMG"; | 
|     public static final String PLATFORM_EVENT_IMG = "PLATFORM_EVENT_IMG"; | 
|     public static final String VISIT_NOTICE = "VISIT_NOTICE"; | 
|     public static final String TIME_OUT_CONFIG = "TIME_OUT_CONFIG"; | 
|     public static final String VISIT_REPORT_TIME_OUT_MOBILE = "VISIT_REPORT_TIME_OUT_MOBILE"; | 
|     public static final String VISIT_TIME_OUT_MOBILE = "VISIT_TIME_OUT_MOBILE"; | 
|   | 
|     //健康证配置 | 
|     public static final String LW_HEALTH_CARD = "LW_HEALTH_CARD"; | 
|     public static final String HEALTH_CARD = "HEALTH_CARD"; | 
|     //答题说明 | 
|     public static final String LW_DESCRIPTION = "LW_DESCRIPTION"; | 
|     public static final String DESCRIPTION = "DESCRIPTION"; | 
|     //答题主题 | 
|     public static final String LW_THEME = "LW_THEME"; | 
|     public static final String THEME = "THEME"; | 
|     //上下班 间隔时间 | 
|     public static final String WORK_START = "WORK_START"; | 
|     public static final String WORK_END = "WORK_END"; | 
|     public static final String INTERVAL = "INTERVAL"; | 
|     public static final String USE_CAR_TAKE_CARE = "USE_CAR_TAKE_CARE"; | 
|   | 
|   | 
|   | 
|   | 
|     // 劳务来访配置 | 
|     public static final String LABOR_CONFIG = "LABOR_CONFIG"; | 
|     public static final String VISIT_EVENT_IMG = "VISIT_EVENT_IMG"; | 
|     public static final String CAR_EVENT_IMG = "CAR_EVENT_IMG"; | 
|     public static final String DEVICE_EVENT_IMG = "DEVICE_EVENT_IMG"; | 
|     public static final String FTP ="FTP" ; | 
|     public static final String FTP_HOST ="FTP_HOST" ; | 
|     public static final String FTP_PORT ="FTP_PORT" ; | 
|     public static final String FTP_USERNAME ="FTP_USERNAME" ; | 
|     public static final String FTP_PWD ="FTP_PWD" ; | 
|     public static final String FTP_RESOURCE_PATH ="FTP_RESOURCE_PATH" ; | 
|     public static final String FTP_LOCAL_RESOURCE_PATH ="FTP_LOCAL_RESOURCE_PATH" ; | 
|     public static final String ERP_ORGLIST_URL ="ERP_ORGLIST_URL" ; | 
|     public static final String ERP_USERLIST_URL ="ERP_USERLIST_URL" ; | 
|     public static final String ERP_APPROVE_URL ="ERP_APPROVE_URL" ; | 
|     public static final String ERP_USERSTATUS_RL ="ERP_USERSTATUS_RL" ; | 
|     public static final String ERP ="ERP" ; | 
|     public static final Integer THREE =3 ; | 
|     public static final Integer FOUR =4 ; | 
|     public static final Integer FIVE =5 ; | 
|     public static final String ORG_USER_ORIGIN = "ORG_USER_ORIGIN"; | 
|     public static final String VIRTUAL_CARD_INDEX = "02098469790"; | 
|     public static final String RETRY_CONNECT_NUM ="RETRY_CONNECT_NUM" ; | 
|     public static final String CLOUD_SERVICE_URL_INDEX = "/cloudService"; | 
|     public static final String VISIT_TIPS = "VISIT_TIPS"; | 
|     public static final String VISIT_GUIDEMAP = "VISIT_GUIDEMAP"; | 
|     public static final String HIDDEN_DANGER_FILE = "HIDDEN_DANGER_FILE"; | 
|     public static final String LOG_DEL_DAYS_LIMIT ="LOG_DEL_DAYS_LIMIT" ; | 
|     public static final String HK_LOG_DEL_DAYS_LIMIT ="HK_LOG_DEL_DAYS_LIMIT" ; | 
|     public static final String HK_NGINX_URL = "HK_NGINX_URL"; | 
|     public static final String PLATFORM_BOOKING_TIPS = "PLATFORM_BOOKING_TIPS"; | 
|     public static final String PLATFORM_GUIDEMAP = "PLATFORM_GUIDEMAP"; | 
|     public static final String WMS_PARAM ="WMS_PARAM" ; | 
|     public static final String WMS_INBOUND_PLATFROM_URL ="WMS_INBOUND_PLATFROM_URL" ; | 
|     public static final String WMS_GET_INVENTORYLIST_URL ="WMS_GET_INVENTORYLIST_URL" ; | 
|     public static final String WMS_OUTBOUND_PLATFROM_URL ="WMS_OUTBOUND_PLATFROM_URL" ; | 
|     public static final String TSM_PARAM ="TSM_PARAM" ; | 
|     public static final String TMS_ORDER_LIST_URL ="TMS_ORDER_LIST_URL" ; | 
|     public static final String TMS_ORDER_DETAIL_URL ="TMS_ORDER_DETAIL_URL" ; | 
|     public static final String TMS_LOCK_STATUS_URL ="TMS_LOCK_STATUS_URL" ; | 
|     public static final String TMS_INTERFACE_URL_PREFIX ="TMS_INTERFACE_URL_PREFIX" ; | 
|     public static final String MYSQL_BACKUP_CDOE ="MYSQL_BACKUP_CDOE" ; | 
|     public static final String MYSQL_BACKUP_DIR ="MYSQL_BACKUP_DIR" ; | 
|     public static final String EVENT_FILES_PRIVATE_DOMAIN ="EVENT_FILES_PRIVATE_DOMAIN" ; | 
|     public static final String EVENT_FILES_PUBLIC_DOMAIN ="EVENT_FILES_PUBLIC_DOMAIN" ; | 
|     public static final String HK_WXTOKEN_CONFIGID ="HK_WXTOKEN_CONFIGID" ; | 
|     public static final String HK_WXTOKEN_TAGID ="HK_WXTOKEN_TAGID" ; | 
|     public static final String WMS_TOTAL_STOCK_NUM ="WMS_TOTAL_STOCK_NUM" ; | 
|     public static final String WX_REDIRECT_URL = "WX_REDIRECT_URL"; | 
|     public static  boolean DEALING_HK_SYNCPRIVILEGE= false; | 
|     public static  boolean DEALING_HK_SYNCDEVICE = false; | 
|     public static  boolean DEALING_HK_SYNCPLATFORM = false; | 
|     public static  boolean DEALING_HK_SYNCDEVICE_STATUS = false; | 
|     public static  boolean DEALING_HK_SYNCPLATFORM_STATUS = false; | 
|     public static  boolean DEALING_HK_SYNCPARK = false; | 
|     public static  boolean DEALING_HK_IMG = false; | 
|     public static  boolean DEALING_HK_ORG = false; | 
|     public static  boolean DEALING_HK_USER = false; | 
|     public static  boolean DEALING_HK_DEL_USER = false; | 
|     public static  boolean DEALING_HK_VISIT = false; | 
|     public static  boolean DEALING_HK_VISIT_EXPIRE = false; | 
|     public static  boolean DEALING_HK_NOTICE_LIST = false; | 
|     public static  boolean DEALING_FROM_HK_VISIT = false; | 
|     public static  boolean DEALING_HK_EMPOWER = false; | 
|     public static  boolean DEALING_HK_EMPOWER_DETAIL = false; | 
|     public static  boolean DEALING_HK_EMPOWER_RESULT = false; | 
|     public static  boolean DEALING_HK_PARKBOOK = false; | 
|     public static final String SMS ="SMS" ; | 
|     public static final String SMS_COMNAME = "SMS_COMNAME"; | 
|     public static final String SMS_IP ="SMS_IP" ; | 
|     public static final String SMS_PORT ="SMS_PORT" ; | 
|     public static final String SMS_APPKEY="SMS_APPKEY"; | 
|     public static final String SMS_APPSECRET ="SMS_APPSERECT" ; | 
|     // ERP接口配置 | 
|     public static final String ERP_CONFIG = "ERP_CONFIG"; | 
|     // ERP ACCESS_KEY | 
|     public static final String ERP_ACCESS_KEY = "ERP_ACCESS_KEY"; | 
|     // ERP ACCESS_SECRET | 
|     public static final String ERP_ACCESS_SECRET = "ERP_ACCESS_SECRET"; | 
|   | 
|     // 内部人员冻结配置时间 | 
|     public static final String TIMEOUT_FREEZE = "TIMEOUT_FREEZE"; | 
|   | 
|     // 超时预警配置 | 
|     public static final String TIMEOUT_WARNING = "TIMEOUT_WARNING"; | 
|     // FTP文件服务器资源访问地址 | 
|   | 
|   | 
|     public static String getRandom6Num( ) { | 
|         Random random = new Random(); | 
|         StringBuilder sb = new StringBuilder(); | 
|   | 
|         for (int i = 0; i < 6; i++) { | 
|             int digit = random.nextInt(10); | 
|             sb.append(digit); | 
|         } | 
|   | 
|         return sb.toString(); | 
|     } | 
|   | 
|     /** | 
|      * 获取公众号跳转重定向业务地址 | 
|      * @param code | 
|      * @param paramCode | 
|      * @param ywid | 
|      * @return | 
|      */ | 
|     public static String getWxUrl(String code, WxUrlParams paramCode, String ywid) { | 
|         return  code.replace("${type}",paramCode.type+"").replace("${yw}",paramCode.yw).replace("${ywid}",ywid); | 
|     } | 
|   | 
|     public interface VisitIccmStatus{ | 
|         //访客状态(0:未签到,1:已签到,2:已签退,3:滞留,4:未访问,5:自动签离,6:未签退) | 
|         int waitSign = 0; | 
|         int signin= 1; | 
|         int signout = 2; | 
|         int noleave =3; | 
|         int novisit =4; | 
|         int autoOut =5; | 
|         int noSignout =6; | 
|     } | 
|     public interface DATAPERMISSION_TYPE{ | 
|         public static final  int all = 0; | 
|         public static final  int departAndChild = 1; | 
|         public static final  int departAndLeaf = 2; | 
|         public static final  int depart = 3; | 
|         public static final  int custom = 4; | 
|         public static final  int self = -1; | 
|     } | 
|   | 
|     /** | 
|      * 作业类型 0自有车卸货 1自有车装货 2外协车卸货 3外协车装货 4市公司外协车卸货 | 
|      */ | 
|     public interface platformJobType{ | 
|        int zycxh = 0; | 
|        int zyczh = 1; | 
|        int wxcxh = 2; | 
|        int wxczh = 3; | 
|        int sgscxh = 4; | 
|     } | 
|   | 
|   | 
|     public static  Date  getBirthdyByCardNo(String idCard){ | 
|     if(idCard ==null || idCard.length()<14){ | 
|         return null; | 
|     } | 
|     Date birthday = null; // 解析为日期对象 | 
|     String birthdayString = idCard.substring(6, 14); // 截取身份证号的前六位数字作为出生日期 | 
|     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); | 
|     try { | 
|         birthday = dateFormat.parse(birthdayString); | 
|     } catch (Exception e) { | 
| //        throw new RuntimeException(e); | 
|     } | 
|     return  birthday; | 
| } | 
|     public static  Integer   getSexByCardNo(String idCard){ | 
|         if(idCard ==null || idCard.length()<17){ | 
|             return null; | 
|         } | 
|         String str = idCard.substring(16, 17); // 截取身份证号的前六位数字作为出生日期 | 
|         try { | 
|             Integer num  = Integer.parseInt(str); | 
|             return  (num % 2 !=0) ? 1:2 ; | 
|         } catch (Exception e) { | 
|         } | 
|         return  null; | 
|     } | 
|   | 
|   | 
|     /** | 
|      *   判断是否为有效车牌号 | 
|      */ | 
|     public static boolean checkCarNo(String str) { | 
| //        String patt="^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵川青藏琼宁秦川]\\\\d{5}[A-Z]$"; | 
| //        Pattern r = Pattern.compile(patt); | 
| //        Matcher matcher = r.matcher(str); | 
| //        String regex = "^[\u4e00-\u9fa5]{1}[A-Z]{1}[A-HJ-NP-Z]{1}[A-HJ-NP-Z0-9]{4}[D0-9X]$"; | 
| //        Pattern pattern = Pattern.compile(regex); | 
| //        Matcher matcher = pattern.matcher(str); | 
| //        boolean isMatcher = matcher.matches(); | 
| //        return isMatcher; | 
|   | 
|   | 
|         if (str.length() >= 7 && str.length() <= 8){ | 
|             Pattern pattern = Pattern.compile("^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[a-zA-Z](([ABCDF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[ABCDF]))|[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1})$"); | 
|             Matcher m = pattern.matcher(str); | 
|             if (!m.matches()){ | 
|                 return false; | 
|             } | 
|             return true; | 
|         }else { | 
|             return false; | 
|         } | 
|   | 
|     } | 
|   | 
|     public static  String  getTuominStr(String s){ | 
|         if(StringUtils.isEmpty(s)){ | 
|             return ""; | 
|         } | 
|         int l = s.length(); | 
|         if(l <= 2){ | 
|             return s.substring(0,1)+"****"; | 
|         } | 
|         if(l <= 5){ | 
|             return s.substring(0,2)+"***"; | 
|         } | 
|         if(l <= 10){ | 
|             return s.substring(0,3)+"***"+s.substring(l-3,l); | 
|         } | 
|         if(l <= 11){ | 
|             return s.substring(0,3)+"****"+s.substring(l-4,l); | 
|         } | 
|         if(l <= 15){ | 
|             return s.substring(0,3)+"****"+s.substring(l-4,l); | 
|         } | 
|         return s.substring(0,5)+"*******"+s.substring(l-6,l); | 
| } | 
|   | 
|   | 
|     public static  String  carCodeTuominStr(String s){ | 
|         if(StringUtils.isEmpty(s)){ | 
|             return ""; | 
|         } | 
|         int l = s.length(); | 
|         if(Constants.equalsInteger(l,7)){ | 
|             return s.substring(0,3)+"**"+s.substring(l-2,l); | 
|         } | 
|         if(l <= 8){ | 
|             return s.substring(0,3)+"***"+s.substring(l-2,l); | 
|         } | 
|         return s; | 
|     } | 
|   | 
|   | 
|   | 
|     /** | 
|      * 切分逗号拼接的整形集合 | 
|      * @param memberIds | 
|      * @return | 
|      */ | 
|   | 
|     public static List<Integer> getIntegerListByStrs(String memberIds) { | 
|         List<Integer> idsList = null; | 
|         try { | 
|             String[] strs = memberIds.split(","); | 
|             for(String id :strs){ | 
|                 if(idsList == null){ | 
|                     idsList = new ArrayList<>(); | 
|                 } | 
|                 idsList.add(Integer.parseInt(id)); | 
|             } | 
|         }catch (Exception e){ | 
|   | 
|         } | 
|   | 
|         return idsList; | 
|     } | 
|   | 
|   | 
|     /** | 
|      * mq tag | 
|      */ | 
|     public interface MQ_TAG{ | 
|          String order = "order"; | 
|         String activity = "activity"; | 
|     } | 
|   | 
|     /** | 
|      * 卡片状态 0禁用 1启用 2退卡 3挂失 | 
|      */ | 
|     public interface MemberCard{ | 
|          int  forbidden  = 0; | 
|          int  normal  = 1; | 
|          int  returned  = 2; | 
|          int  loss  = 3; | 
|     } | 
|     public interface MQ_KEY{ | 
|          String activity_looknum = "looknum"; | 
|          String activity_signup = "signup"; | 
|     } | 
|     public interface DeviceRoleType{ | 
|          int lw = 0;//劳务访客 | 
|          int fk = 1;//普通访客 | 
|          int nb = 2;//内部访客 | 
|     } | 
|     public interface VisitStatus{ | 
|         //审核状态 0待审核 1已提交ERP审批  2审核通过 3审核不通过 4取消 5下发成功 6下发失败 7已登记 8已签离 9已失效 | 
|          int waitCheck = 0; | 
|          int submitCheck = 1; | 
|          int pass = 2; | 
|          int noPass = 3; | 
|          int cancel = 4; | 
|          int xfSuccess = 5; | 
|          int xfFail = 6; | 
|          int signin= 7; | 
|          int signout =  8; | 
|          int invalid =9; | 
|     } | 
|   | 
|     public interface RetentionCarType{ | 
|         //车辆类型 0内部车辆 1相关方车辆 2访客车辆 3内运物流车 4外协车辆 5市公司卸货车 | 
|          int internal = 0; | 
|          int relation = 1; | 
|          int visitor = 2; | 
|          int selfTruck = 3; | 
|          int outTruck = 4; | 
|          int cityComTruck = 5; | 
|     } | 
|   | 
|   | 
|     public interface EmpowerStatus{ | 
|         //一卡通授权下发状态 0待下发 1已下发 2下发成功   3已取消 4下发失败 5任务下载已结束 | 
|          int wait = 0; | 
|          int ing = 1; | 
|          int pass = 2; | 
|          int cancel = 3; | 
|          int fail = 4; | 
|          int downloaded = 5; | 
|     } | 
|     public interface DOOR_ROLE_TYPE{ | 
|          int lw = 0; | 
|          int fk = 1; | 
|          int nb = 2; | 
|     } | 
|     public static final String SUCCESS_STR = "SUCCESS" ; | 
|   | 
|     //开门时间有效期(分钟) | 
|     public static final String ACCESS_ID="ACCESS_ID"; | 
|     public static final String BUCKETNAME = "BUCKETNAME"; | 
|     public static final String OSS = "OSS"; | 
|   | 
|     public static final String ACCESS_KEY = "ACCESS_KEY"; | 
|     public static final String ENDPOINT = "ENDPOINT"; | 
|     public static final String RESOURCE_PATH = "FTP_RESOURCE_PATH"; | 
|     //发送会议开始  定时提前多少分钟发送 | 
|   | 
|     public static final String SYSTEM ="SYSTEM"; | 
|   | 
|     public static final String COFFEE_BEAN_TASK ="COFFEE_BEAN_TASK"; | 
|   | 
|   | 
|     public static final String HOME_IMAGE ="HOME_IMAGE"; | 
|   | 
|   | 
|   | 
|   | 
|     public static final String WX_PLATFORM = "WX_PLATFORM"; | 
|     public static final String WX_PLATFORM_ACCESS_TOKEN = "WX_PLATFORM_ACCESS_TOKEN"; | 
|     public static final String WX_PLATFORM_APPID = "WX_PLATFORM_APPID"; | 
|     public static final String WX_PLATFORM_SECRET = "WX_PLATFORM_SECRET"; | 
|     public static final String WX_PLATFORM_AUDIT_VISIT = "WX_PLATFORM_AUDIT_VISIT"; | 
|     public static final String WX_PLATFORM_PREFIX = "WX_PLATFORM_PREFIX"; | 
|   | 
|   | 
|   | 
|   | 
|   | 
|   | 
|     public interface RedisKeys { | 
|         public static final String IMPORTING_CARS ="IMPORTING_CARS"; | 
|         public static final String IMPORTING_MEMBER ="IMPORTING_MEMBER"; | 
|         public static final String BIGSCREEN_UUID ="BIGSCREEN_UUID"; | 
|         public static final String IMPORTING_GAS ="IMPORTING_GAS"; | 
|         public static final String ERP_TOKEN ="ERP_TOKEN"; | 
|         public static final long EXPIRE_TIME = 7200; | 
|   | 
|         public static final String INTERNAL_TOKEN ="INTERNAL_TOKEN"; | 
|   | 
|         public static final String GOODSORDER_KEY = "ordercode_"; | 
|         public static final String ACTIVITY_SIGN_KEY = "actcode_"; | 
|         public static final String AFTERSALE_KEY = "salecode_"; | 
|     } | 
|   | 
|   | 
|     public static BigDecimal formatBigdecimal(BigDecimal d) { | 
|         if (d == null) { | 
|             d = new BigDecimal(0.0); | 
|         } | 
|         //保留两位小数且四舍五入 | 
| //        d = d.setScale(2, BigDecimal.ROUND_HALF_UP); | 
|         return  d; | 
|     } | 
|     public static BigDecimal formatBigdecimal4Float(BigDecimal d) { | 
|         if (d == null) { | 
|             d = new BigDecimal(0.0); | 
|         } | 
|         //保留两位小数且四舍五入 | 
|         d = d.setScale(4, BigDecimal.ROUND_HALF_UP); | 
|         return  d; | 
|     } | 
|     public static BigDecimal formatBigdecimal0Float(BigDecimal d) { | 
|         if (d == null) { | 
|             d = new BigDecimal(0.0); | 
|         } | 
|         //保留两位小数且四舍五入 | 
|         d = d.setScale(0, BigDecimal.ROUND_HALF_UP); | 
|         return  d; | 
|     } | 
|     public static BigDecimal formatBigdecimal2Float(BigDecimal d) { | 
|         if (d == null) { | 
|             d = new BigDecimal(0.0); | 
|         } | 
|         //保留两位小数且四舍五入 | 
|         d = d.setScale(2, BigDecimal.ROUND_HALF_UP); | 
|         return  d; | 
|     } | 
|   | 
|   | 
|   | 
|     public static boolean equalsInteger(Integer a, Integer b) { | 
|         if (formatIntegerNum(a) == formatIntegerNum(b)) { | 
|             return true; | 
|         } | 
|         return false; | 
|     } | 
|   | 
|     public static int formatIntegerNum(Integer d) { | 
|         if (d == null) { | 
|             d = 0; | 
|         } | 
|         return d.intValue(); | 
|     } | 
|   | 
|     public static long formatLongNum(Long d) { | 
|         if (d == null) { | 
|             d = 0L; | 
|         } | 
|         return d.longValue(); | 
|     } | 
|   | 
|   | 
| public interface  memberType{ | 
|     int driver = 0;//司机人员 | 
|     int visitor = 1;//普通访客 | 
|     int internal = 2;//内部人员 | 
| } | 
|   | 
|   | 
| public interface  approveObjectType{ | 
|     int unConstructionVisit = 0;//非施工人员访客申请 | 
|     int constructionVisit = 1;//工人员访客申请 | 
|     int visitReporting = 2;//访客报备 | 
|     int cityUseCar = 3;//市内用车 | 
|     int unCityUseCar = 4;//市外用车 | 
|     int logisticsCarUse = 5;//物流车预约 | 
|     int reason = 6;//入园原因 | 
| } | 
|   | 
|   | 
|   | 
| public static Integer  approveTypeToNoticeType(Integer approveType){ | 
|     if(Constants.equalsInteger(approveType,Constants.approveObjectType.unConstructionVisit) | 
|             ||Constants.equalsInteger(approveType,Constants.approveObjectType.constructionVisit)){ | 
|         return Constants.noticesObjectType.visit; | 
|     }else if(Constants.equalsInteger(approveType,Constants.approveObjectType.visitReporting)){ | 
|         return Constants.noticesObjectType.visitReporting; | 
|     }else if(Constants.equalsInteger(approveType,Constants.approveObjectType.cityUseCar) | 
|             ||Constants.equalsInteger(approveType,Constants.approveObjectType.unCityUseCar)){ | 
|         return Constants.noticesObjectType.useCar; | 
|     }else if(Constants.equalsInteger(approveType,Constants.approveObjectType.logisticsCarUse)){ | 
|         return Constants.noticesObjectType.logisticsCarUse; | 
|     }else if(Constants.equalsInteger(approveType, approveObjectType.reason)){ | 
|         return noticesObjectType.reason; | 
|     }else { | 
|         return Constants.noticesObjectType.system; | 
|     } | 
|   | 
| } | 
|   | 
|   | 
|   | 
|     public interface  noticesObjectType{ | 
|     int visit = 0;//访客申请 | 
|     int visitReporting = 1;//访客报备 | 
|     int useCar = 2;//用车申请 | 
|     int dangerDeal = 3;//隐患处理 | 
|     int logisticsCarUse = 4;//物流车审批 | 
|     int system = 5;//系统消息 | 
|     int reason = 6;//入园原因 | 
|     int hknotice = 7;//海康考勤代办 | 
| } | 
|   | 
|   | 
| public interface  approveStatus{ | 
|     int wait = 0;//待审批 | 
|     int auditIng = 1;//审批中 | 
|     int pass = 2;//审批通过 | 
|     int unPass = 3;//审批未通过 | 
|     int cancel = 4;//已取消 | 
|     int otherDeal = 5;//他人已处理 | 
|     int otherUnPass = 6;//他人拒绝 | 
| } | 
|   | 
|     /** | 
|      * 获取车牌类型信息 | 
|      * | 
|      * @param plateNo | 
|      * @return 返回null,表示车牌不匹配 | 
|      */ | 
|     public static VehiclePlateNoEnum getVehiclePlateNo(String plateNo) { | 
|         for (VehiclePlateNoEnum vehiclePlateNoEnum : VehiclePlateNoEnum.values()) { | 
|             Matcher matcher = vehiclePlateNoEnum.pattern.matcher(plateNo); | 
|             if (matcher.find()) { | 
|                 return vehiclePlateNoEnum; | 
|             } | 
|         } | 
|         return null; | 
|     } | 
|   | 
|   | 
|     public enum VehiclePlateNoEnum { | 
|         /** | 
|          * 匹配民用车牌和使馆车牌 | 
|          * 1、第一位为汉子省份缩写 | 
|          * 2、第二位为大写字母城市编码 | 
|          * 3、后面是5位仅含字母和数字的组合 | 
|          */ | 
|         CIVIL_LICENSE_PLATE_AND_EMBASSY_LICENSE_PLATE(1, "民用车牌和使馆车牌", Pattern.compile("^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{5}$")), | 
|         /** | 
|          * 匹配特种车牌(挂,警,学,领,港,澳) | 
|          */ | 
|         SPECIAL_LICENSE_PLATES(2, "特种车牌", Pattern.compile("^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{4}[挂警学领港澳]{1}$")), | 
|         /** | 
|          * 匹配 | 
|          */ | 
|         ARMED_POLICE_CAR(3, "武警车牌", Pattern.compile("^WJ[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]?[0-9a-zA-Z]{5}$")), | 
|         /** | 
|          * 匹配军牌 | 
|          */ | 
|         MILITARY_CAR(4, "军用车牌", Pattern.compile("^[A-Z]{2}[0-9]{5}$")), | 
|         /** | 
|          * 小型新能源车 | 
|          * 1、匹配新能源车辆6位车牌 | 
|          */ | 
|         SMALL_NEW_ENERGY_VEHICLE(5, "小型新能源车牌", Pattern.compile("^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[A-Z]{1}[0-9a-zA-Z]{5}$")), | 
|         /** | 
|          * 大型新能源车 | 
|          */ | 
|         LARGE_NEW_ENERGY_VEHICLE(6, "大型新能源车牌", Pattern.compile("^[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{5}[DF]{1}$")); | 
|         private int code; | 
|   | 
|         private String description; | 
|   | 
|         private Pattern pattern; | 
|   | 
|         VehiclePlateNoEnum(int code, String description, Pattern pattern) { | 
|             this.code = code; | 
|             this.description = description; | 
|             this.pattern = pattern; | 
|         } | 
|   | 
|         public int getCode() { | 
|             return code; | 
|         } | 
|   | 
|         public String getDescription() { | 
|             return description; | 
|         } | 
|     } | 
|   | 
|     public static void main(String[] args) { | 
|         System.out.println(Constants.checkCarNo("皖A10991")); | 
|         System.out.println(Constants.checkCarNo("皖AA10991")); | 
| //        System.out.println(Constants.getVehiclePlateNo("湘B140D17").getDescription()); | 
| //        System.out.println(Constants.getVehiclePlateNo("宿AP0637").getDescription()); | 
|   | 
|          | 
|     } | 
|   | 
|   | 
|   | 
|     /** | 
|      * 数据状态枚举 | 
|      * | 
|      */ | 
|     public enum Status { | 
|   | 
|         /** 用户启用禁用枚举值*/ | 
|         ENABLE(0,"正常"), | 
|         DISABLE(1,"禁用"), | 
|         FREEZE(2,"拉黑/冻结"), | 
|   | 
|         /** 用户类型 **/ | 
|         LW_FK(0,"劳务访客"), | 
|         PT_FK(1,"普通访客"), | 
|         NB_FK(2,"内部人员"), | 
|   | 
|         /** 进场类型 **/ | 
|         OUT(0,"出"), | 
|         IN(1,"进"); | 
|   | 
|         private  Integer value; | 
|         private  String des; | 
|   | 
|   | 
|         Status(Integer value, String des) { | 
|             this.value = value; | 
|             this.des = des; | 
|         } | 
|   | 
|         public Integer getValue() { | 
|             return value; | 
|         } | 
|   | 
|         public void setValue(Integer value) { | 
|             this.value = value; | 
|         } | 
|   | 
|         public String getDes() { | 
|             return des; | 
|         } | 
|   | 
|         public void setDes(String des) { | 
|             this.des = des; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 对象驼峰属性转下划线 | 
|      * @param object | 
|      * @return | 
|      * @throws JsonProcessingException | 
|      */ | 
|     public static String toUnderlineJSONString(Object object) throws JsonProcessingException { | 
|         ObjectMapper mapper = new ObjectMapper(); | 
|         mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); | 
|         mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); | 
|         String reqJson = mapper.writeValueAsString(object); | 
|         return reqJson; | 
|     } | 
|   | 
|   | 
|     public  enum PlatformWarnEvent { | 
|         STOP_TIMEOUT(0, "停靠超时","${carCode}月台停靠超时" ), | 
|         STOP_ERROR(1, "停靠错误","${carCode}月台停靠错误" ), | 
|         WORK_TIMEOUT(2, "作业超时","${carCode}作业超时" ); | 
|   | 
|         // 成员变量 | 
|         private int key; | 
|         private String name; | 
|         private String info; | 
|   | 
|         // 构造方法 | 
|         PlatformWarnEvent(int key, String name,String info ) { | 
|             this.key = key; | 
|             this.info = info; | 
|             this.name = name; | 
|         } | 
|         public static String getName(int index) { | 
|             for (PlatformWarnEvent c : PlatformWarnEvent.values()) { | 
|                 if (c.getKey() == index) { | 
|                     return c.name; | 
|                 } | 
|             } | 
|             return null; | 
|         } | 
|   | 
|         public int getKey() { | 
|             return key; | 
|         } | 
|   | 
|         public void setKey(int key) { | 
|             this.key = key; | 
|         } | 
|   | 
|         public String getName() { | 
|             return name; | 
|         } | 
|   | 
|         public void setName(String name) { | 
|             this.name = name; | 
|         } | 
|   | 
|         public String getInfo() { | 
|             return info; | 
|         } | 
|   | 
|         public void setInfo(String info) { | 
|             this.info = info; | 
|         } | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 月台作业 状态 | 
|      * 0任务创建 1司机确认任务 2司机签到 3入园等待 4月台叫号 5开始作业 6作业完成 7月台转移 8任务挂起 9下发授权离园 10离园 | 
|      */ | 
|     public  enum PlatformJobLogType { | 
|         CREATE(0, "任务创建","入园预约成功" ), | 
|         CONFIRM_TASK(1, "司机确认任务","已完成时间确认" ), | 
|         SIGN(2, "司机签到","排队等待叫号"), | 
|         IN_WAIT(3, "入园等待","叫号入园等待" ), | 
|         CALLED(4, "月台叫号","{data}叫号" ), | 
|         WORKING(5, "开始作业","进入{data}开始作业" ), | 
|         DONE(6, "作业完成 ","月台作业完成,驶离月台" ), | 
|         TRANSFERING(7, "月台转移","{data}发起月台转移" ), | 
|         EXCEPTION(8, "任务挂起","作业异常被挂起" ), | 
|         AUTHED_LEAVE(9, "下发授权离园","下发授权离园" ), | 
|         LEAVED(10, "已离园 ","车辆从{data}离场 " ), | 
|         OVER_NUMBER(11, "已过号","超时未到指定月台自动过号" ), | 
|         ; | 
|   | 
|         // 成员变量 | 
|         private int key; | 
|         private String name; | 
|         private String info; | 
|   | 
|         // 构造方法 | 
|         PlatformJobLogType(int key, String name,String info ) { | 
|             this.key = key; | 
|             this.info = info; | 
|             this.name = name; | 
|         } | 
|         public static String getName(int index) { | 
|             for (PlatformJobLogType c : PlatformJobLogType.values()) { | 
|                 if (c.getKey() == index) { | 
|                     return c.name; | 
|                 } | 
|             } | 
|             return null; | 
|         } | 
|   | 
|         public int getKey() { | 
|             return key; | 
|         } | 
|   | 
|         public void setKey(int key) { | 
|             this.key = key; | 
|         } | 
|   | 
|         public String getName() { | 
|             return name; | 
|         } | 
|   | 
|         public void setName(String name) { | 
|             this.name = name; | 
|         } | 
|   | 
|         public String getInfo() { | 
|             return info; | 
|         } | 
|   | 
|         public void setInfo(String info) { | 
|             this.info = info; | 
|         } | 
|     } | 
|     /** | 
|      * 月台作业大屏文案 状态 | 
|      * 1、月台空闲:1号月台(月台名称) | 
|      * 2、叫号中:1号月台 皖A12345  叫号中 | 
|      * 3、作业中:1号月台 皖A12345 作业中 | 
|      * 4、错误停靠:1号月台 皖A12345 当前车辆错误停靠,请尽快驶离 | 
|      * 5、超时停靠:1号月台 皖A12345 当前车辆超时停靠,请尽快驶离 | 
|      */ | 
|     public  enum PlatformLedContent { | 
|         IDEL_CONTNET(1, "空闲中","安泰物流有限责任公司" ), | 
|         CALLING(2, "叫号中","${param} ${param2}  叫号中"), | 
|         WORKING(3, "作业中","${param} ${param2} 作业中" ), | 
|         WRONG_IN(4, "错误停靠","${param} ${param2} 当前车辆错误停靠,请尽快驶离" ), | 
|         TIMEOUT_IN(5, "超时停靠","${param} ${param2} 当前车辆超时停靠,请尽快驶离" ), | 
|         TIMEOUT_WORK(6, "作业超时","${param} ${param2} 当前车辆作业超时" ), | 
|         DONE(7, "作业完成","${param} ${param2} 作业完成" ), | 
|         ; | 
|   | 
|         // 成员变量 | 
|         private int key; | 
|         private String name; | 
|         private String info; | 
|   | 
|         // 构造方法 | 
|         PlatformLedContent(int key, String name,String info ) { | 
|             this.key = key; | 
|             this.info = info; | 
|             this.name = name; | 
|         } | 
|         public static String getName(int index) { | 
|             for (PlatformLedContent c : PlatformLedContent.values()) { | 
|                 if (c.getKey() == index) { | 
|                     return c.name; | 
|                 } | 
|             } | 
|             return null; | 
|         } | 
|   | 
|         public int getKey() { | 
|             return key; | 
|         } | 
|   | 
|         public void setKey(int key) { | 
|             this.key = key; | 
|         } | 
|   | 
|         public String getName() { | 
|             return name; | 
|         } | 
|   | 
|         public void setName(String name) { | 
|             this.name = name; | 
|         } | 
|   | 
|         public String getInfo() { | 
|             return info; | 
|         } | 
|   | 
|         public void setInfo(String info) { | 
|             this.info = info; | 
|         } | 
|     } | 
|     /** | 
|      * 广播通知内容 | 
|      1. 叫号中:皖A12345请前往1号月台等待作业 | 
|      2. 作业完成:皖A12345作业完成,请尽快驶离 | 
|      3. 错误停靠:皖A12345月台停靠错误,请尽快驶离 | 
|      4. 超时停靠:皖A12345月台停靠超时,请尽快驶离请尽快驶离 | 
|      5. 作业超时:皖A12345月台停靠超时,请尽快驶离请尽快驶离 | 
|      */ | 
|     public  enum PlatformBroadcastContent { | 
|         CALLING(1, "叫号中","${param}请前往${param2}等待作业"), | 
|         DONE(2, "作业完成","${param}作业完成,请尽快驶离" ), | 
|         WRONG_IN(3, "错误停靠","${param}月台停靠错误,请尽快驶离" ), | 
|         TIMEOUT_IN(4, "超时停靠","${param}月台停靠超时,请尽快驶离" ), | 
|         TIMEOUT_WORK(5, "作业超时","${param}作业超时" ), | 
|         ; | 
|   | 
|         // 成员变量 | 
|         private int key; | 
|         private String name; | 
|         private String info; | 
|   | 
|         // 构造方法 | 
|         PlatformBroadcastContent(int key, String name,String info ) { | 
|             this.key = key; | 
|             this.info = info; | 
|             this.name = name; | 
|         } | 
|   | 
|         public static String getName(int index) { | 
|             for (PlatformBroadcastContent c : PlatformBroadcastContent.values()) { | 
|                 if (c.getKey() == index) { | 
|                     return c.name; | 
|                 } | 
|             } | 
|             return null; | 
|         } | 
|   | 
|         public int getKey() { | 
|             return key; | 
|         } | 
|   | 
|         public void setKey(int key) { | 
|             this.key = key; | 
|         } | 
|   | 
|         public String getName() { | 
|             return name; | 
|         } | 
|   | 
|         public void setName(String name) { | 
|             this.name = name; | 
|         } | 
|   | 
|         public String getInfo() { | 
|             return info; | 
|         } | 
|   | 
|         public void setInfo(String info) { | 
|             this.info = info; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 月台作业 状态 | 
|      * 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 已过号 12已取消 | 
|      */ | 
|     public  enum PlatformJobStatus { | 
|         WAIT_CONFIRM(0, "待确认","待确认" ), | 
|         WART_SIGN_IN(1, "待签到","待签到" ), | 
|         WAIT_CALL(2, "已签到","已签到"), | 
|         IN_WAIT(3, "入园等待","入园等待" ), | 
|         CALLED(4, "已叫号","已叫号" ), | 
|         WORKING(5, "作业中","作业中" ), | 
|         DONE(6, "作业完成 ","作业完成" ), | 
|         TRANSFERING(7, "转移中","转移中" ), | 
|         EXCEPTION(8, "异常挂起","异常挂起" ), | 
|         AUTHED_LEAVE(9, "已授权离园","已授权离园" ), | 
|         LEAVED(10, "已离园 ","已离园 " ), | 
|         OVER_NUMBER(11, "已过号","已过号" ), | 
|         CANCEL(12, "已取消","已取消" ), | 
|         ; | 
|   | 
|         // 成员变量 | 
|         private int key; | 
|         private String name; | 
|         private String info; | 
|   | 
|         // 构造方法 | 
|         PlatformJobStatus(int key, String name,String info ) { | 
|             this.key = key; | 
|             this.info = info; | 
|             this.name = name; | 
|         } | 
|         public static String getName(int index) { | 
|             for (PlatformJobStatus c : PlatformJobStatus.values()) { | 
|                 if (c.getKey() == index) { | 
|                     return c.name; | 
|                 } | 
|             } | 
|             return null; | 
|         } | 
|   | 
|         public int getKey() { | 
|             return key; | 
|         } | 
|   | 
|         public void setKey(int key) { | 
|             this.key = key; | 
|         } | 
|   | 
|         public String getName() { | 
|             return name; | 
|         } | 
|   | 
|         public void setName(String name) { | 
|             this.name = name; | 
|         } | 
|   | 
|         public String getInfo() { | 
|             return info; | 
|         } | 
|   | 
|         public void setInfo(String info) { | 
|             this.info = info; | 
|         } | 
|     } | 
|     /** | 
|      * 审批模拟类型 0非施工人员访客申请 1非施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约 | 
|      */ | 
|     public  enum ApproveTmplType{ | 
|         NOT_SG_VISIT(0, "非施工人员访客申请", "非施工人员访客申请"), | 
|         SG_VISIT(1, "施工人员访客申请", "施工人员访客申请"), | 
|         CAR_VISIT(2, "访客报备 ", "访客报备 "), | 
|         IN_CITY_CAR_USE(3, "公车市内用车 ", "公车市内用车 "), | 
|         OUT_CITY_CAR_USE(4, "公车室外用车 ", "公车室外用车 "), | 
|         CITY_WLC_BOOK(5, "市公司物流车预约 ", "5市公司物流车预约 "), | 
|         PLATFROM_REASON(6, "月台入园原因审批 ", "月台入园原因审批 "), | 
|         ; | 
|         // 成员变量 | 
|         private String name; | 
|         private int key; | 
|         private String noteinfo;// 描述 | 
|   | 
|         // 构造方法 | 
|         ApproveTmplType(int key, String name, String noteinfo) { | 
|             this.name = name; | 
|             this.key = key; | 
|             this.noteinfo = noteinfo; | 
|         } | 
|   | 
|         // 普通方法 | 
|         public static String getName(int index) { | 
|             for (ApproveTmplType c : ApproveTmplType.values()) { | 
|                 if (c.getKey() == index) { | 
|                     return c.name; | 
|                 } | 
|             } | 
|             return null; | 
|         } | 
|   | 
|         // 普通方法 | 
|         public static String getInfo(int index) { | 
|             for (ApproveTmplType c : ApproveTmplType.values()) { | 
|                 if (c.getKey() == index) { | 
|                     return c.noteinfo; | 
|                 } | 
|             } | 
|             return null; | 
|         } | 
|   | 
|         // get set 方法 | 
|         public String getName() { | 
|             return name; | 
|         } | 
|   | 
|         public void setName(String name) { | 
|             this.name = name; | 
|         } | 
|   | 
|         public int getKey() { | 
|             return key; | 
|         } | 
|   | 
|         public void setKey(int key) { | 
|             this.key = key; | 
|         } | 
|   | 
|         public String getNoteinfo() { | 
|             return noteinfo; | 
|         } | 
|   | 
|   | 
|   | 
|     } | 
|     public  enum NoticeObjectType { | 
|         MEETING_BOOK_SUCCESS(0, "会与预定成功","会与预定成功"), | 
|         MEETING_CACEL(1, "会议取消","会议取消"), | 
|         MEETING_START(2, "会议即将开始","会议即将开始"), | 
|         ; | 
|         // 成员变量 | 
|         private int key; | 
|         private String name; | 
|         private String info; | 
|   | 
|         // 构造方法 | 
|         NoticeObjectType(int key, String name,String info) { | 
|             this.name = name; | 
|             this.key = key; | 
|             this.info = info; | 
|         } | 
|   | 
|         // 普通方法 | 
|         public static String getName(int index) { | 
|             for (NoticeObjectType c : NoticeObjectType.values()) { | 
|                 if (c.getKey() == index) { | 
|                     return c.name; | 
|                 } | 
|             } | 
|             return null; | 
|         } | 
|   | 
|   | 
|         // get set 方法 | 
|         public String getName() { | 
|             return name; | 
|         } | 
|   | 
|         public void setName(String name) { | 
|             this.name = name; | 
|         } | 
|   | 
|         public int getKey() { | 
|             return key; | 
|         } | 
|   | 
|         public void setKey(int key) { | 
|             this.key = key; | 
|         } | 
|   | 
|         public String getInfo() { | 
|             return info; | 
|         } | 
|   | 
|         public void setInfo(String info) { | 
|             this.info = info; | 
|         } | 
|   | 
|     } | 
|     public  enum WxUrlParams { | 
|         BISCREEN_CODE(0,2, "0", "门口大屏二维码"), | 
|         MEETING_CODE(1,0, "1","会议室大屏"), | 
|         VISIT_RECORD_VISIT(2,1, "2","访客记录-访客"), | 
|         VISIT_RECORD_USER(3,2, "2","访客记录-员工"), | 
|         VISIT_REPORT_RECORD_USER(5,2, "3","访客报备记录-员工"), | 
|         HIDDEN_DANGER(6,2, "4","隐患随手拍"), | 
|         CAR_USE(7,2, "5","用车申请"), | 
|         MEETING(8,2, "6","会议详情"), | 
|         PLATFORM_BOOK_DRIVER(9,0, "7","物流车预约-司机"), | 
|         PLATFORM_BOOK(10,2, "7","物流车预约-员工"), | 
|         PLATFORM_JOB_DRIVER(11,0, "8","月台作业-司机"), | 
|         PLATFORM_JOB_BOOK(12,2, "8","月台作业-员工"), | 
|         ; | 
|         // 成员变量 | 
|         private int key; | 
|         private int type;//用户类型 0员工 1司机 | 
|         private String yw;//业务类型 | 
|         private String info;//说明 | 
|   | 
|         // 构造方法 | 
|         WxUrlParams(int key,int type, String yw,String  info) { | 
|             this.yw = yw; | 
|             this.key = key; | 
|             this.type = type; | 
|             this.info= info; | 
|         } | 
|   | 
|   | 
|         public int getKey() { | 
|             return key; | 
|         } | 
|   | 
|         public void setKey(int key) { | 
|             this.key = key; | 
|         } | 
|   | 
|         public int getType() { | 
|             return type; | 
|         } | 
|   | 
|         public void setType(int type) { | 
|             this.type = type; | 
|         } | 
|   | 
|         public String getYw() { | 
|             return yw; | 
|         } | 
|   | 
|         public void setYw(String yw) { | 
|             this.yw = yw; | 
|         } | 
|   | 
|         public String getInfo() { | 
|             return info; | 
|         } | 
|   | 
|         public void setInfo(String info) { | 
|             this.info = info; | 
|         } | 
|     } | 
|     public static <T> T toSnakeObject(String json, Class<T> clazz) throws IOException { | 
|         ObjectMapper mapper = new ObjectMapper(); | 
|         mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); | 
|         T reqJson =  mapper.readValue(json, clazz); | 
|         return reqJson; | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 员工信息维护操作历史类型 0解冻 1冻结 2拉黑 3恢复 4设为拜访人 5取消拜访人 6设为高级审批人 7取消高级审批人 8手动离场 9删除 10更新 11授权门禁权限 12离职 13恢复在职 | 
|      */ | 
|     public  enum UserActionType { | 
|         CANCEL_FREEZE(0, "解冻","由【${param1}】于【${param2}】,进行【解冻】" ), | 
|         FREEZE(1, "冻结","由【${param1}】于【${param2}】,进行【冻结】" ), | 
|         BLACKLIST(2, "拉黑","由【${param1}】于【${param2}】,进行【拉黑】"), | 
|         CANCEL_BLACKLIST(3, "恢复","由【${param1}】于【${param2}】,进行【移出黑名单】" ), | 
|         CANVISIT(4, "设为拜访人","由【${param1}】于【${param2}】,进行【设为拜访人】" ), | 
|         CANCEL_VISIT(5, "取消拜访人","由【${param1}】于【${param2}】,进行【取消拜访人】" ), | 
|         //续保通知 | 
|         HIGHCHECKOR(6, "设为高级审批人","由【${param1}】于【${param2}】,进行【设为高级审批人】" ), | 
|         CANCEL_HIGHCHECKOR(7, "取消高级审批人","由【${param1}】于【${param2}】,进行【取消高级审批人】" ), | 
|         LEVEL(8, "手动离场","由【${param1}】于【${param2}】,进行【手动离场】" ), | 
|         DELETE(9, "删除","由【${param1}】于【${param2}】,进行【删除】" ), | 
|         EDIT(10, "更新","由【${param1}】于【${param2}】,进行【更新】" ), | 
|         AUTH_ROLE(11, "授权门禁权限","由【${param1}】于【${param2}】,进行【授权门禁权限】" ), | 
|         WORK_OFF(12, "离职","由【${param1}】于【${param2}】,进行【离职】操作" ), | 
|         WORK_ON(13, "在职","由【${param1}】于【${param2}】,进行【在职】操作" ), | 
|         IMPORT_TRAIMETIME(14, "导入培训有效","由【${param1}】于【${param2}】,进行【导入培训有效】操作" ), | 
|         BE_HEAD(15, "设为主管","由【${param1}】于【${param2}】,进行【设为主管】操作" ), | 
|         NOT_HEAD(16, "取消主管","由【${param1}】于【${param2}】,进行【取消主管】操作" ), | 
|         ; | 
|   | 
|         // 成员变量 | 
|         private int key; | 
|         private String name; | 
|         private String info; | 
|   | 
|         // 构造方法 | 
|         UserActionType(int key, String name,String info ) { | 
|             this.key = key; | 
|             this.info = info; | 
|             this.name = name; | 
|         } | 
|         public static String getName(int index) { | 
|             for (UserActionType c : UserActionType.values()) { | 
|                 if (c.getKey() == index) { | 
|                     return c.name; | 
|                 } | 
|             } | 
|             return null; | 
|         } | 
|   | 
|         public int getKey() { | 
|             return key; | 
|         } | 
|   | 
|         public void setKey(int key) { | 
|             this.key = key; | 
|         } | 
|   | 
|         public String getName() { | 
|             return name; | 
|         } | 
|   | 
|         public void setName(String name) { | 
|             this.name = name; | 
|         } | 
|   | 
|         public String getInfo() { | 
|             return info; | 
|         } | 
|   | 
|         public void setInfo(String info) { | 
|             this.info = info; | 
|         } | 
|     } | 
|     /** | 
|      * 关联对象类型 | 
|      关联对象类型 0企业营业执照 1理赔报案事故视频或图片 2理赔员工关系证明材料 3理赔门诊资料 4理赔住院资料 5理赔伤残资料 6理赔赔付结案材料 7企业身份证号 8保单申请表PDF 9签署后保单申请表PDF 10企业签章 11最终报单 | 
|      */ | 
|     public  enum MultiFile{ | 
|         HIDDEN_DANGER_SUBMIT(0, "隐患随手拍提报", "隐患随手拍提报"), | 
|         HIDDEN_DANGER_DEAL_BEFORE(1, "隐患随手拍处理前", "隐患随手拍处理前"), | 
|         HIDDEN_DANGER_DEAL_AFTER(2, "隐患随手拍处理后 ", "隐患随手拍处理后 "), | 
|         ; | 
|         // 成员变量 | 
|         private String name; | 
|         private int key; | 
|         private String noteinfo;// 描述 | 
|   | 
|         // 构造方法 | 
|         MultiFile(int key, String name, String noteinfo) { | 
|             this.name = name; | 
|             this.key = key; | 
|             this.noteinfo = noteinfo; | 
|         } | 
|   | 
|         // 普通方法 | 
|         public static String getName(int index) { | 
|             for (MultiFile c : MultiFile.values()) { | 
|                 if (c.getKey() == index) { | 
|                     return c.name; | 
|                 } | 
|             } | 
|             return null; | 
|         } | 
|   | 
|         // 普通方法 | 
|         public static String getInfo(int index) { | 
|             for (MultiFile c : MultiFile.values()) { | 
|                 if (c.getKey() == index) { | 
|                     return c.noteinfo; | 
|                 } | 
|             } | 
|             return null; | 
|         } | 
|   | 
|         // get set 方法 | 
|         public String getName() { | 
|             return name; | 
|         } | 
|   | 
|         public void setName(String name) { | 
|             this.name = name; | 
|         } | 
|   | 
|         public int getKey() { | 
|             return key; | 
|         } | 
|   | 
|         public void setKey(int key) { | 
|             this.key = key; | 
|         } | 
|   | 
|         public String getNoteinfo() { | 
|             return noteinfo; | 
|         } | 
|   | 
|   | 
|   | 
|     } | 
| } |