| | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.awt.*; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.math.BigDecimal; |
| | | import java.net.InetAddress; |
| | | import java.net.UnknownHostException; |
| | | import java.security.MessageDigest; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.util.ArrayList; |
| | | import java.util.*; |
| | | import java.util.List; |
| | | import java.util.UUID; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | |
| | | public static final String TOKEN ="TOKEN" ; |
| | | public static final String SYSTEM ="SYSTEM" ; |
| | | public static final String DINGDING ="DINGDING" ; |
| | | public static final String DINGDING_APPKEY ="DINGDING_APPKEY" ; |
| | | public static final String DINGDING_CHATTOKEN ="DINGDING_CHATTOKEN" ; |
| | | public static final String DINGDING_ROBOTCODE ="DINGDING_ROBOTCODE" ; |
| | | public static final String DINGDING_SECRET ="DINGDING_SECRET" ; |
| | | public static final String DINGDING_TOKEN ="DINGDING_TOKEN" ; |
| | | |
| | | public static final String MINI_PROGRAMME ="MINI_PROGRAMME" ; |
| | | public static final String FREE_RENT_TIME ="FREE_RENT_TIME" ; |
| | | public static final String ACCESS_TOKEN ="ACCESS_TOKEN" ; |
| | |
| | | public static final String FORCE_BACK_SITE = "FORCE_BACK_SITE"; |
| | | //车辆类型数据 |
| | | public static final String BIKE_TYPE ="0,1,2,3,4,5,6,7,8" ; |
| | | public static final String MINI_PROGRAMME_REALEASE ="MINI_PROGRAMME_REALEASE" ; |
| | | public static final int FOUR =4 ; |
| | | public static String REDIS_DEBUG_STR="test_"; |
| | | public static final String AD = "AD"; |
| | | public static String REPAIR = "REPAIR"; |
| | | public static final String NOTICE_SITE_LINK_LIMIT="NOTICE_SITE_LINK_LIMIT"; |
| | | |
| | | public interface MqttTopic{ |
| | | |
| | | String topic_index = "device/lock/"; |
| | | //开锁(发布) |
| | | String pub_openLock = "device/lock/{siteId}/{lockId}/unlock"; |
| | | //站点全量锁头数量信息 |
| | | String sub_siteInfo = "device/lock/+/siteInfo"; |
| | | //管理员刷卡记录上报 |
| | | String sub_adminCard = "device/lock/+/+/adminCard"; |
| | | //锁信息,在初始化、状态变更时会推送锁的完整状态(订阅) |
| | | String sub_lockInfo = "device/lock/+/+/info"; |
| | | //还车锁头(订阅) |
| | |
| | | //钉钉通知地址 |
| | | public static final String DINGDING_URL = "DINGDING_URL"; |
| | | //钉钉签名 |
| | | public static final String DINGDING_SECRET = "DINGDING_SECRET"; |
| | | |
| | | public static void main(String[] args) { |
| | | double[][] polygon = {{120, 30}, {121, 30}, {121, 31}, {120, 31}}; // 经纬度列表表示多边形顶点 |
| | | boolean isInside = isPointInPolygon(122.5, 30.5, polygon); |
| | | System.out.println("Is inside: " + isInside); |
| | | } |
| | | //小程序满载预警(%)最大值 |
| | | public static final String WARN_MAX = "WARN_MAX"; |
| | | //小程序满载预警(%)最小值 |
| | |
| | | return Constants.formatDecimalNum(money).divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP); |
| | | |
| | | } |
| | | |
| | | public static boolean isPointInPolygon(double px, double py, double[]... polygon) { |
| | | int i, j; |
| | | boolean result = false; |
| | | for (i = 0, j = polygon.length - 1; i < polygon.length; j = i++) { |
| | | if ((polygon[i][1] > py) != (polygon[j][1] > py) && |
| | | (px < (polygon[j][0] - polygon[i][0]) * (py - polygon[i][1]) / (polygon[j][1] - polygon[i][1]) + polygon[i][0])) { |
| | | result = !result; |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | |
| | | |
| | | } |