| import cn.hutool.core.convert.Convert;  | 
| import cn.hutool.core.date.DateTime;  | 
| import cn.hutool.core.date.DateUtil;  | 
| import cn.hutool.core.lang.Dict;  | 
| import cn.hutool.core.util.ArrayUtil;  | 
| import cn.hutool.core.util.NumberUtil;  | 
| import cn.hutool.core.util.RandomUtil;  | 
| import cn.hutool.core.util.StrUtil;  | 
| import cn.hutool.json.JSONArray;  | 
| import com.xzx.gc.common.Result;  | 
| import com.xzx.gc.common.utils.DateUtils;  | 
| import com.xzx.gc.common.utils.LocationUtils;  | 
| import com.xzx.gc.common.utils.gdmap.GdMapUtil;  | 
| import com.xzx.gc.model.order.OrderInfoReq;  | 
| import com.xzx.gc.model.order.OrderInfoVo;  | 
| import com.xzx.gc.model.user.AccountVo;  | 
| import com.xzx.gc.order.dto.TrackDetailResultDto;  | 
| import org.junit.Test;  | 
| import org.springframework.util.CollectionUtils;  | 
|   | 
| import java.io.IOException;  | 
| import java.math.BigDecimal;  | 
| import java.math.RoundingMode;  | 
| import java.util.*;  | 
| import java.util.stream.Collectors;  | 
|   | 
| public class JavaTest {  | 
|   | 
|     @Test  | 
|     public  void generate(){  | 
|   | 
|         String lon="112.939038";  | 
|         String lat="28.165681";  | 
|         String key="f28decf4aed2d20104c16d3532682810";  | 
|         Result inFence = GdMapUtil.isInFence(lon + "," + lat + "," + DateUtil.currentSeconds(), GdMapUtil.getDiu(key),key);  | 
|   | 
|         String gid="a87f1016-6368-4acf-b273-6fd90d67a9e9";  | 
|         Result<JSONArray> fence = GdMapUtil.findFence(key, gid, "");  | 
|   | 
|     }  | 
|   | 
|   | 
|     public List<Integer> split(int min, int max, int num,int size,List<Integer> list){  | 
|   | 
|         Random r = new Random();  | 
|         int i1 = max - min;  | 
|         int i2 = max + min;  | 
|   | 
|         int n = num/i1 +1;  | 
|   | 
|         int numm = 0;  | 
|   | 
|         for(int i=1;i<n;i++){  | 
|   | 
|             int next = r.nextInt(i1)+min;  | 
|   | 
|             list.add(next);  | 
|   | 
|             numm+=next;  | 
|   | 
|         }  | 
|   | 
|         if(num-numm>i2){  | 
|   | 
|             split(min,max,num-numm,size,list);  | 
|   | 
|         }else{  | 
|   | 
|             list.add(num-numm);  | 
|   | 
|         }  | 
|   | 
|   | 
|         if(list.size()==size-1){  | 
|             int temp=0;  | 
|             for (Integer integer : list) {  | 
|                 temp=temp+integer;  | 
|             }  | 
|             list.add(num-temp);  | 
|         }  | 
|   | 
|         return list;  | 
|   | 
|     }  | 
|   | 
|     public  int[] splitInteger(int n, int sum,boolean flag) {  | 
|         //随机抽取n-1个小于sum的数  | 
|         List<Integer> list = new ArrayList();  | 
|         //将0和sum加入到里list中  | 
|         list.add(0);  | 
|         //判断生成的正整数集合中是否允许为0,true元素可以为0  false元素不可以为0  | 
|         if (!flag) {  | 
|             sum = sum - n;  | 
|         }  | 
|         list.add(sum);  | 
|         int temp = 0;  | 
|         for (int i = 0; i < n - 1 ; i++) {  | 
|             temp = (int) (Math.random() * sum);  | 
|             list.add(temp);  | 
|         }  | 
|         Collections.sort(list);  | 
|         int[] nums = new int[n];  | 
|         for (int i = 0; i < n; i++) {  | 
|             nums[i] = list.get(i + 1) - list.get(i);  | 
|             if (!flag) {  | 
|                 nums[i] += 1;  | 
|             }  | 
|         }  | 
|         return nums;  | 
|     }  | 
|   | 
|     /**  | 
|      * 随机指定范围内N个不重复的数  | 
|      * 最简单最基本的方法  | 
|      * @param min 指定范围最小值  | 
|      * @param max 指定范围最大值  | 
|      * @param n 随机数个数  | 
|      */  | 
|     public  int[] randomCommon(int min, int max, int n){  | 
|         if (n > (max - min + 1) || max < min) {  | 
|             return null;  | 
|         }  | 
|         int[] result = new int[n];  | 
|         int count = 0;  | 
|         while(count < n) {  | 
|             int num = (int) (Math.random() * (max - min)) + min;  | 
|             boolean flag = true;  | 
|             for (int j = 0; j < n; j++) {  | 
|                 if(num == result[j]){  | 
|                     flag = false;  | 
|                     break;  | 
|                 }  | 
|             }  | 
|             if(flag){  | 
|                 result[count] = num;  | 
|                 count++;  | 
|             }  | 
|         }  | 
|         return result;  | 
|     }  | 
|   | 
|     @Test  | 
|     public void aa2(){  | 
|         randomCommon(1,35,10);  | 
|     }  | 
|   | 
|     @Test  | 
|     public void 生产id(){  | 
|         List<TrackDetailResultDto> list=new ArrayList();  | 
|   | 
|   | 
|         TrackDetailResultDto trackDetailResultDto = new TrackDetailResultDto();  | 
|         trackDetailResultDto.setLocatetime(Convert.toStr(System.currentTimeMillis()));  | 
|         trackDetailResultDto.setAddress("123");  | 
|         list.add(trackDetailResultDto);  | 
|   | 
|         trackDetailResultDto = new TrackDetailResultDto();  | 
|         trackDetailResultDto.setLocatetime(Convert.toStr(System.currentTimeMillis()+1));  | 
|         trackDetailResultDto.setAddress("123");  | 
|         list.add(trackDetailResultDto);  | 
|   | 
|          trackDetailResultDto = new TrackDetailResultDto();  | 
|         trackDetailResultDto.setLocatetime(Convert.toStr(System.currentTimeMillis()+2));  | 
|         trackDetailResultDto.setAddress("123");  | 
|         list.add(trackDetailResultDto);  | 
|   | 
|         trackDetailResultDto = new TrackDetailResultDto();  | 
|         trackDetailResultDto.setLocatetime(Convert.toStr(System.currentTimeMillis()+3));  | 
|         trackDetailResultDto.setAddress("456");  | 
|         list.add(trackDetailResultDto);  | 
|   | 
|         trackDetailResultDto = new TrackDetailResultDto();  | 
|         trackDetailResultDto.setLocatetime(Convert.toStr(System.currentTimeMillis()+4));  | 
|         trackDetailResultDto.setAddress("789");  | 
|         list.add(trackDetailResultDto);  | 
|   | 
|         trackDetailResultDto = new TrackDetailResultDto();  | 
|         trackDetailResultDto.setLocatetime(Convert.toStr(System.currentTimeMillis()+10));  | 
|         trackDetailResultDto.setAddress("789");  | 
|         list.add(trackDetailResultDto);  | 
|   | 
|   | 
|         List<TrackDetailResultDto> collect = list.stream().sorted(Comparator.comparing(TrackDetailResultDto::getLocatetime)).collect(Collectors.toList());  | 
|   | 
|         List<TrackDetailResultDto> list2 = new ArrayList<>();  | 
|         list2.add(collect.get(0));  | 
|         for(int i=1;i<collect.size();i++){  | 
|   | 
|             TrackDetailResultDto trackDetailResultDto1 = collect.get(i);  | 
|             String address = trackDetailResultDto1.getAddress();  | 
|             String locatetime = trackDetailResultDto1.getLocatetime();  | 
|   | 
|   | 
|             TrackDetailResultDto trackDetailResultDto2 = list2.get(list2.size() - 1);  | 
|   | 
|             String address1 = trackDetailResultDto2.getAddress();  | 
|             String locatetime1 = trackDetailResultDto2.getLocatetime();  | 
|   | 
|             if(!address.equals(address1)){  | 
|                 list2.add(trackDetailResultDto1);  | 
|             }else {  | 
|                 trackDetailResultDto2.setLingerTime(NumberUtil.sub(Convert.toLong(locatetime),Convert.toLong(locatetime1)).toString());  | 
|   | 
|             }  | 
|         }  | 
|   | 
|   | 
|         for (TrackDetailResultDto detailResultDto : list2) {  | 
|             System.out.println(detailResultDto.getAddress()+"=="+detailResultDto.getLocatetime()+"=="+detailResultDto.getLingerTime());  | 
|         }  | 
|   | 
|   | 
|         double l = Convert.toDouble(30000) / 1000 / 60;  | 
|         BigDecimal round = NumberUtil.round(l, 1, RoundingMode.DOWN);  | 
|         System.out.println(round.toString());  | 
|   | 
|   | 
|     }  | 
|   | 
|   | 
|     @Test  | 
|     public  void test1() throws IOException {  | 
|   | 
| //        Resource[] resources = new PathMatchingResourcePatternResolver().getResources("file:src/main/resources/mapper/order/*.xml");  | 
| //  | 
| //  | 
| //        System.out.println(resources.length);  | 
| //  | 
| //  | 
| //        BigDecimal bigDecimal = NumberUtil.toBigDecimal("100.967");  | 
| //        BigDecimal bigDecimal2 = NumberUtil.toBigDecimal("100.962");  | 
| //  | 
| //        System.out.println(NumberUtil.isGreater(bigDecimal,bigDecimal2));  | 
|   | 
|   | 
|   | 
| //        BigDecimal actualMoney = NumberUtil.sub(Convert.toBigDecimal("0.5"), Convert.toBigDecimal("0"));  | 
| //        System.out.println(actualMoney);  | 
| //        BigDecimal bigDecimal=new BigDecimal("0.4");  | 
| //        BigDecimal bigDecimal1 = Convert.toBigDecimal("-" + bigDecimal);  | 
| //        System.out.println(bigDecimal1);  | 
|   | 
| //        Short a=null;  | 
| //        int s = Convert.toInt(a, 0);  | 
| //        System.out.println(s);  | 
| //  | 
| //        String storageId = generate("RK", 2);  | 
| //        System.out.println(storageId);  | 
|   | 
|         String s="DD1198780571048869888,DD1198836242071027712,DD1198836751217590272,DD1198848021983526912,DD1198857387277156352,DD1198862379035787264,DD1198865412490657792,DD1198873338940882944,DD1199142818904408064,DD1199522841624707072,DD1199605197710688256,DD1199873059687890944,DD1199946276771332096,DD1199971132221030400,DD1200246793422635008,DD1200577031876771840,DD1200594756602822656,DD1200605188663148544,DD1200650922527686656,DD1200720351273811968,DD1201355470170882048,DD1201375498622599168,DD1201402910848712704,DD1201415885257048064,DD1201735743005917184,DD1201757201849516032,DD1201779369262055424";  | 
|   | 
|         String s1="DD1198780571048869888,DD1198836242071027712,DD1198836751217590272,DD1198848021983526912,DD1198857387277156352,DD1198862379035787264,DD1198865412490657792,DD1198873338940882944,DD1199142818904408064,DD1199522841624707072,DD1199605197710688256,DD1199873059687890944,DD1199946276771332096,DD1199971132221030400,DD1200246793422635008,DD1200577031876771840,DD1200594756602822656,DD1200605188663148544,DD1200650922527686656,DD1200720351273811968,DD1201355470170882048,DD1201375498622599168,DD1201402910848712704,DD1201415885257048064,DD1201735743005917184,DD1201757201849516032,DD1201779369262055424";  | 
|         System.out.println(s.equals(s1));  | 
|   | 
|         String reserveTime="2019-11-27 8:00:00";  | 
|         String format = DateUtil.format(DateUtil.parse(reserveTime, DateUtils.DATE_FORMAT_YMDHMS), DateUtils.DATE_FORMAT_MDHMS);  | 
|         System.out.println(format);  | 
|   | 
| //        List<UserInfo> list=new ArrayList<>();  | 
| //        boolean basicType = ObjectUtil.isBasicType(list);  | 
| //        System.out.println(basicType);  | 
| //        try{  | 
| //            throw new RestException(-1, "aaa");  | 
| //        } catch (RestException e) {  | 
| //            ExceptionUtils.err(e.getMsg(),e);  | 
| //        }catch ( BusinessException e){  | 
| //            ExceptionUtils.err(e.getMsg(),e);  | 
| //        }catch (Exception e){  | 
| //            ExceptionUtils.err("提现审核失败",e);  | 
| //        }  | 
|   | 
|   | 
|     }  | 
|   | 
|   | 
|     @Test  | 
|     public void 根据经纬度查询地址测试(){  | 
| //        if(Convert.toInt(3)==null){  | 
| //            System.out.println(22);  | 
| //        }else{  | 
| //            System.out.println(1);  | 
| //        }  | 
| //        GdReverseGEODto gdReverseGEODto = new GdReverseGEODto();  | 
| //        gdReverseGEODto.setLocation("112.985245,28.1491");  | 
| //        Result areaInfo = GdMapUtil.getAreaInfo(gdReverseGEODto, 3);  | 
| //        System.out.println(JSONUtil.toJsonStr(areaInfo));  | 
|         String date="2019-09-22 09:00:00";  | 
|         Date dateDate=DateUtil.parseDateTime(date);  | 
|             DateTime dateTime = DateUtil.offsetDay(dateDate, 1);  | 
|         System.out.println(dateTime.toString());  | 
|     }  | 
|     @Test  | 
|     public  void say(){  | 
|         Dict dict = Dict.create();  | 
|         dict.set("a","11");  | 
|         System.out.println(dict);  | 
|         dict.clear();  | 
|         System.out.println(dict);  | 
|   | 
|         String s1="22";  | 
|         String s2="YH1184372951408312320";  | 
|         String fill = StrUtil.fill(s1, Convert.toChar("0"), 15, false);  | 
|         System.out.println(fill);  | 
|   | 
|         String s3 = StrUtil.subWithLength(s2, 0, 15);  | 
|         System.out.println(s3);  | 
|   | 
|         String s = RandomUtil.randomString(64);  | 
|         System.out.println(s);  | 
|   | 
|         String s4 = Convert.toStr(Boolean.TRUE);  | 
|         System.out.println(s4);  | 
|     }  | 
|   | 
|     @Test  | 
|     public  void test3(){  | 
|        String a="b";  | 
|         System.out.println(a);  | 
|   | 
|         BigDecimal bigDecimal=new BigDecimal("11.2");  | 
|         BigDecimal bigDecimal2=new BigDecimal("11.3");  | 
|   | 
|         BigDecimal add = NumberUtil.add(bigDecimal, bigDecimal2);  | 
|   | 
|         System.out.println(add.toString());  | 
|   | 
| //        BigDecimal storageMoneyDecimal=NumberUtil.toBigDecimal("44");  | 
| //        System.out.println(storageMoneyDecimal.toString());  | 
|   | 
|         BigDecimal storageMoneyDecimal=NumberUtil.toBigDecimal("1");  | 
|         BigDecimal receiverLimitDecimal=NumberUtil.toBigDecimal("2");  | 
|         BigDecimal limitDecimal=NumberUtil.toBigDecimal("2.9");  | 
|         if (NumberUtil.isGreater(NumberUtil.add(storageMoneyDecimal,receiverLimitDecimal),limitDecimal)) {  | 
|             System.out.println("aa"+1);  | 
|         }  | 
|     }  | 
|     @Test  | 
|     public void test2() throws Exception {  | 
| //        Dict dict=Dict.create();  | 
| //        try {  | 
| //            dict.set("a","123");  | 
| //            int a=5/0;  | 
| //  | 
| //  | 
| //        } catch (Exception e) {  | 
| //            System.out.println(1);  | 
| //            throw new Exception("33");  | 
| //        } finally {  | 
| //            System.out.println(dict.get("a"));  | 
| //        }  | 
| //        String money="0";  | 
| //        String moneyStr=NumberUtil.roundStr(money,2,RoundingMode.DOWN);  | 
| //        System.out.println(moneyStr);  | 
| //        String money2="0.2";  | 
| //         moneyStr=NumberUtil.roundStr(money2,2,RoundingMode.DOWN);  | 
| //        System.out.println(moneyStr);  | 
|         List<AccountVo> storageAccount =new ArrayList<>();  | 
|         String storageAccountId = storageAccount.get(0).getAccountId();  | 
|         System.out.println(storageAccountId);  | 
|     }  | 
|   | 
|     @Test  | 
|     public  void test4(){  | 
|   | 
|         List<OrderInfoVo> orderList=new ArrayList<>();  | 
|         OrderInfoVo orderInfoVo=new OrderInfoVo();  | 
| //  | 
|         orderInfoVo.setLatitude("28.194296");  | 
|         orderInfoVo.setLongitude("113.015671");  | 
|         orderInfoVo.setAddress("湖南省长沙市芙蓉区东二环");  | 
|   | 
|         //28.123467,112.923660  | 
|   | 
|         OrderInfoVo orderInfoVo2=new OrderInfoVo();  | 
| //  | 
|         orderInfoVo2.setLatitude("28.123467");  | 
|         orderInfoVo2.setLongitude("112.923660");  | 
|         orderInfoVo2.setAddress("洋湖");  | 
|   | 
|         orderList.add(orderInfoVo2);  | 
|         orderList.add(orderInfoVo);  | 
|   | 
| //28.216685,  | 
|         OrderInfoReq orderInfoReq=new OrderInfoReq();  | 
|         orderInfoReq.setLatitude("28.216685");  | 
|         orderInfoReq.setLongitude("113.004684");  | 
|   | 
|   | 
|         //按距离排序  | 
|         if(!CollectionUtils.isEmpty(orderList)){  | 
|             Collections.sort(orderList, new Comparator<OrderInfoVo>() {  | 
|                 @Override  | 
|                 public int compare(OrderInfoVo o1, OrderInfoVo o2) {  | 
|                     double distance = LocationUtils.getDistance(Convert.toDouble(orderInfoReq.getLatitude()), Convert.toDouble(orderInfoReq.getLongitude()), Convert.toDouble(o1.getLatitude()), Convert.toDouble(o1.getLongitude()));  | 
|                     System.out.println(distance);  | 
|                     double distance2=LocationUtils.getDistance(Convert.toDouble(orderInfoReq.getLatitude()),Convert.toDouble(orderInfoReq.getLongitude()),Convert.toDouble(o2.getLatitude()),Convert.toDouble(o2.getLongitude()));  | 
|                     System.out.println(distance2);  | 
|   | 
|                     if(distance>distance2){  | 
|                         return 1;  | 
|                     }else if(distance<distance2){  | 
|                         return -1;  | 
|                     }else{  | 
|                         return 0;  | 
|                     }  | 
|                 }  | 
|             });  | 
|         }  | 
|   | 
|         for (OrderInfoVo infoVo : orderList) {  | 
|             System.out.println(infoVo.getAddress());  | 
|         }  | 
|     }  | 
|   | 
|   | 
|     @Test  | 
|     public  void test5(){  | 
|         double lon = 116.312528, lat = 39.983733;     // 经纬度  | 
|         int radius = 5;                               // 千米  | 
|   | 
|     }  | 
|   | 
|   | 
| }  |