|  |  |  | 
|---|
|  |  |  | 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 net.sourceforge.pinyin4j.PinyinHelper; | 
|---|
|  |  |  | 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.Collator; | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 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 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 TEMPERATURE_HUMIDITY ="TEMPERATURE_HUMIDITY" ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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 WMS_LIQUID_LEVEL ="WMS_LIQUID_LEVEL" ; | 
|---|
|  |  |  | public static final String WMS_PRESSURE_LEVEL ="WMS_PRESSURE_LEVEL" ; | 
|---|
|  |  |  | public static final String WX_REDIRECT_URL = "WX_REDIRECT_URL"; | 
|---|
|  |  |  | public static final String HK_CHANGNEI_SCREEN_INDEXCODES = "HK_CHANGNEI_SCREEN_INDEXCODES"; | 
|---|
|  |  |  | public static final String CITY_XH_REASON_ID ="CITY_XH_REASON_ID" ; | 
|---|
|  |  |  | public static final String ATWL_XH_PLATFORM_ID ="ATWL_XH_PLATFORM_ID" ; | 
|---|
|  |  |  | public static final String SCREEN_SEVENT_ARRIVAL_STARTDATE = "SCREEN_SEVENT_ARRIVAL_STARTDATE"; | 
|---|
|  |  |  | public static final String EARLY_START_WX_NOTICE = "EARLY_START_WX_NOTICE"; | 
|---|
|  |  |  | public static final String OVER_NOTICE_WX = "OVER_NOTICE_WX"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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_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; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return sb.toString(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取公众号跳转重定向业务地址 | 
|---|
|  |  |  | * @param code | 
|---|
|  |  |  | * @param paramCode | 
|---|
|  |  |  | * @param ywid | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static String getWxUrl(String code, WxUrlParams paramCode, String ywid) { | 
|---|
|  |  |  | String url = code.replace("${type}",paramCode.type+"").replace("${yw}",paramCode.yw).replace("${ywid}",ywid); | 
|---|
|  |  |  | //        try { | 
|---|
|  |  |  | //            url = URLEncoder.encode(code,"UTF-8"); | 
|---|
|  |  |  | //        }catch (Exception e){ | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | return url; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public interface VisitIccmStatus{ | 
|---|
|  |  |  | //访客状态(0:未签到,1:已签到,2:已签退,3:滞留,4:未访问,5:自动签离,6:未签退) | 
|---|
|  |  |  | int waitSign = 0; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 运单了单位类型 0万支 1箱 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static final  int UNIT_TYPE =1; | 
|---|
|  |  |  | public interface  memberType{ | 
|---|
|  |  |  | int driver = 0;//司机人员 | 
|---|
|  |  |  | int visitor = 1;//普通访客 | 
|---|
|  |  |  | int internal = 2;//内部人员 | 
|---|
|  |  |  | int gkuser = 3;//管控人员(运单查询) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | int logisticsCarUse = 4;//物流车审批 | 
|---|
|  |  |  | int system = 5;//系统消息 | 
|---|
|  |  |  | int reason = 6;//入园原因 | 
|---|
|  |  |  | int hknotice = 7;//海康考勤代办 | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static void main(String[] args) { | 
|---|
|  |  |  | System.out.println(Constants.checkCarNo("皖A10991")); | 
|---|
|  |  |  | System.out.println(Constants.checkCarNo("皖AA10991")); | 
|---|
|  |  |  | getChinesePingyin("DDaa江萍的对对对"); | 
|---|
|  |  |  | //        System.out.println(DateUtil.getShortTime(new Date())); | 
|---|
|  |  |  | //        System.out.println( "2025-01-14 10:50:56".substring(0,10)); | 
|---|
|  |  |  | //        System.out.println(Constants.checkCarNo("皖AA10991")); | 
|---|
|  |  |  | //        System.out.println(Constants.getVehiclePlateNo("湘B140D17").getDescription()); | 
|---|
|  |  |  | //        System.out.println(Constants.getVehiclePlateNo("宿AP0637").getDescription()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | this.info = info; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public static String getChinesePingyin(String chinese) { | 
|---|
|  |  |  | if(StringUtils.isBlank(chinese)){ | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | StringBuilder result = new StringBuilder(); | 
|---|
|  |  |  | for (char ch : chinese.toCharArray()) { | 
|---|
|  |  |  | String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(ch); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 如果字符是中文,则获取其拼音的首字母 | 
|---|
|  |  |  | if (pinyinArray != null && pinyinArray.length > 0) { | 
|---|
|  |  |  | result.append(pinyinArray[0].charAt(0)); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | // 非中文字符直接拼接 | 
|---|
|  |  |  | result.append(ch); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | System.out.println(result.toString()); | 
|---|
|  |  |  | return result.toString().toUpperCase(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 月台作业 状态 | 
|---|
|  |  |  | 
|---|
|  |  |  | WAIT_CALL(2, "已签到","已签到"), | 
|---|
|  |  |  | IN_WAIT(3, "入园等待","入园等待" ), | 
|---|
|  |  |  | CALLED(4, "已叫号","已叫号" ), | 
|---|
|  |  |  | WORKING(5, "作业中","作业中" ), | 
|---|
|  |  |  | WORKING(5, "作业中","作业中" ), | 
|---|
|  |  |  | DONE(6, "作业完成 ","作业完成" ), | 
|---|
|  |  |  | TRANSFERING(7, "转移中","转移中" ), | 
|---|
|  |  |  | EXCEPTION(8, "异常挂起","异常挂起" ), | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public  enum WxUrlParams { | 
|---|
|  |  |  | BISCREEN_CODE(0,0, "0", "门口大屏二维码"), | 
|---|
|  |  |  | MEETING_CODE(1,2, "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","月台作业-司机"), | 
|---|
|  |  |  | ; | 
|---|
|  |  |  | // 成员变量 | 
|---|
|  |  |  | private int key; | 
|---|
|  |  |  | private int type;//用户类型 0司机 1访客 2员工 | 
|---|
|  |  |  | 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); | 
|---|