package com.prolog.cs.biz.inbound.test;

public class Test1 {
//	public static void main(String[] args) throws InterruptedException {
//		//String expression = "a-(b-c)>100";
//		//// 编译表达式
//		//Expression compiledExp = AviatorEvaluator.compile(expression);
//		//Map<String, Object> env = new HashMap<String, Object>();
//		//env.put("a", 100.3);
//		//env.put("b", 45);
//		//env.put("c", -199.100);
//		//// 执行表达式
//		//Boolean result = (Boolean) compiledExp.execute(env);
//		//System.out.println(result);
//		// false
//		
////		String expression = "x/c<=3"; // 件数规则
////		Expression compiledExp = AviatorEvaluator.compile(expression);
////		Map<String, Object> env = new HashMap<String, Object>();
////		env.put("x", 100);
////		env.put("c", 60);
////		Boolean result = (Boolean) compiledExp.execute(env);
////		System.out.println(result);
////		
////		String expression2 = "r = x"; // 匹配抽检
////		Expression compiledExp2 = AviatorEvaluator.compile(expression2);
////		Map<String, Object> env2 = new HashMap<String, Object>();
////		env2.put("x", 100);
////		env2.put("c", 60);
////		Object execute = compiledExp2.execute(env2);
////		System.out.println(execute.toString());
//		
////		String expression3 = "3 < x/c && x/c <= 50"; // 件数规则
////		Expression compiledExp3 = AviatorEvaluator.compile(expression3);
////		Map<String, Object> env3 = new HashMap<String, Object>();
////		env3.put("x", 100);
////		env3.put("c", 20);
////		Boolean result3 = (Boolean) compiledExp3.execute(env3);
////		System.out.println(result3);
////		if (result3) {
////			String expression33 = "r = 3 *c"; // 匹配抽检
////			Expression compiledExp33 = AviatorEvaluator.compile(expression33);
////			Map<String, Object> env33 = new HashMap<String, Object>();
////			env33.put("x", 100);
////			env33.put("c", 20);
////			Object execute = compiledExp33.execute(env33);
////			System.out.println(execute.toString());
////		}	
//		
//		String expression4 = "x/c > 50"; // 件数规则
//		Expression compiledExp4 = AviatorEvaluator.compile(expression4);
//		Map<String, Object> env4 = new HashMap<String, Object>();
//		env4.put("x", 220);
//		env4.put("c", 2);
//		Boolean result4 = (Boolean) compiledExp4.execute(env4);
//		System.out.println(result4);
//		if (result4) {
////			String expression44 = "r =  math.ceil(10.2)"; // 匹配抽检
//			String expression44 = "r = 2 * c + math.ceil(x/c/50) * c"; // 匹配抽检
//			Expression compiledExp44 = AviatorEvaluator.compile(expression44);
//			Map<String, Object> env44 = new HashMap<String, Object>();
//			env44.put("x", BigDecimal.valueOf(240));
//			env44.put("c", BigDecimal.valueOf(2));
//			BigDecimal result44 = (BigDecimal)compiledExp44.execute(env44);
//			System.out.println(result44);
//		}
//		
//
//}
//	
//	public static void main(String[] args) throws InterruptedException {
//		// 非销退
//		BigDecimal b0 = new BigDecimal(0);
//		BigDecimal b1 = new BigDecimal(3);
//		BigDecimal b2 = new BigDecimal(50);
//		BigDecimal b3 = new BigDecimal(1);
//		String rcvType = "2";
//		BigDecimal oddCaseQty = new BigDecimal(50);
//		BigDecimal rest = new BigDecimal(0);
//		if (rcvType.equals(BizConstant.SALE_RETURN_IN)) {
//			// 销退,6件以内抽全部,6件到50件抽检6件,50件以上没多50多抽2件,比如60,100件抽6+2,8件,101件抽10件
//			// 公式: 基数b1,抽检范围数b2,抽检增数b3,b为待抽检数,
//			b0 = new BigDecimal(0); // 为0
//			b1 = new BigDecimal(6); // 抽检基数
//			b2 = new BigDecimal(50); // 抽检范围数
//			b3 = new BigDecimal(2); // 抽检增数
//		} else {
//		}
//
//		// 整件小于等于抽检基数+增数,抽检全部
//		if (oddCaseQty.compareTo(b1) < 1) {
//			// 抽检全部的整件加零散
//			rest = oddCaseQty;
//
//
//		}
//		// 整件大于抽检基数加增数小于等于范围数 抽检结果为抽检基数
//		if (oddCaseQty.compareTo(b1) == 1 && oddCaseQty.compareTo(b2) < 1) {
//			rest = b1;
//		}
//		// 整件大于范围数 不足范围数按范围数计算 抽检基数+抽检增数*(up(验收件数-范围数/范围数))
//		if (oddCaseQty.compareTo(b2) == 1) {
//			BigDecimal divide = (oddCaseQty.subtract(b2)).divide(b2, 0, RoundingMode.UP);
//			BigDecimal add = b1.add(divide.multiply(b3));
//			rest = add;
//		}
//		System.out.println(rest);
//}
//	
//	public static void main(String[] args) throws InterruptedException {
//		for (int i = 0; i < 100; i++) {
//			int downLimit = 15;
//			int upLimit = 30;
//			int res = new Random().nextInt(downLimit) + upLimit - downLimit;
//			System.out.println("-----------------------------");
//			System.out.println(res);
//		}
//}
//	public static void main(String[] args) throws InterruptedException {
////		String expression = "a-(b-c)>100";
////		// 编译表达式
////		Expression compiledExp = AviatorEvaluator.compile(expression);
////		Map<String, Object> env = new HashMap<String, Object>();
////		env.put("a", 100.3);
////		env.put("b", 45);
////		env.put("c", -199.100);
////		// 执行表达式
////		Boolean result = (Boolean) compiledExp.execute(env);
////		System.out.println(result);
//		// false
//		
//		String expression = "x/c<=2"; // 件数规则
//		Expression compiledExp = AviatorEvaluator.compile(expression);
//		Map<String, Object> env = new HashMap<String, Object>();
//		env.put("x", 100);
//		env.put("c", 60);
//		Boolean result = (Boolean) compiledExp.execute(env);
//		System.out.println(result);
//		
//		String expression2 = "r = x"; // 匹配抽检
//		Expression compiledExp2 = AviatorEvaluator.compile(expression2);
//		Map<String, Object> env2 = new HashMap<String, Object>();
//		env2.put("x", 100);
//		env2.put("c", 60);
//		Object execute = compiledExp2.execute(env2);
//		System.out.println(execute.toString());
//		
//		String expression3 = "2 < x/c && x/c <= 50"; // 件数规则
//		Expression compiledExp3 = AviatorEvaluator.compile(expression3);
//		Map<String, Object> env3 = new HashMap<String, Object>();
//		env3.put("x", 100);
//		env3.put("c", 20);
//		Boolean result3 = (Boolean) compiledExp3.execute(env3);
//		System.out.println(result3);
//		
//		String expression4 = "r = 3 + math.ceil((x/c - 50)/50)"; // 匹配抽检
//		Expression compiledExp4 = AviatorEvaluator.compile(expression4);
//		Map<String, Object> env4 = new HashMap<String, Object>();
//		env4.put("x", 100);
//		env4.put("c", 1);
//		Double result4 = (Double)compiledExp4.execute(env4);
//		System.out.println(result4);
//
//	}
//	public static void main(String[] args) throws InterruptedException {
//		User1 u1 = new User1();
//		u1.setName("张三");
//		User1 u2 = new User1();
//		u2.setName("张三");
//		User1 u3 = new User1();
//		u3.setName("李四");
//		User1 u4 = new User1();
//		u4.setName("王五");
//		User1 u5 = new User1();
//		u5.setName("赵六");
//		List<User1> list = new ArrayList<>();
//		list.add(u1);
//		list.add(u2);
//		list.add(u3);
//		list.add(u4);
//		list.add(u5);
//		
//		List<User1> collect = list.stream()
//				.filter(user -> "张三".equals(user.getName()))
//				.collect(Collectors.toList());
//		System.out.println(collect.size());
//	
//		Map<String, Object> lmap = MapUtils.put("floorNum", "2.0000").getMap();
//		Integer floorNum = 1;
//		Object floorNumObj = lmap.get("floorNum");
//		if (floorNumObj != null) {
//			String floorNumStr = floorNumObj.toString();
//			Number number = null;
//			try {
//				floorNum = Integer.parseInt(floorNumStr);
//			} catch (NumberFormatException e1) {
//				e1.printStackTrace();
//				try {
//					number = NumberFormat.getNumberInstance(Locale.FRENCH).parse(floorNumStr);
//					floorNum = number.intValue();
//				} catch (ParseException e) {
//					e.printStackTrace();
//				}
//			}
//		}
//		System.out.println(floorNum);
//	}
//	public static void main(String[] args) throws InterruptedException {
//		Set<String> zjContainerCode = new HashSet<>();
//		Set<String> sjContainerCode = new HashSet<>();
//		zjContainerCode.add("1");
//		zjContainerCode.add("2");
//		zjContainerCode.add("1");
//		zjContainerCode.add("3");
//		zjContainerCode.add("4");
//		sjContainerCode.add("4");
//		sjContainerCode.add("5");
//		sjContainerCode.add("4");
//		
//		if (!ObjectUtils.isNull(zjContainerCode) && !ObjectUtils.isNull(sjContainerCode)) {
//			Collection intersection = CollectionUtils.intersection(zjContainerCode, sjContainerCode);
//			if (!ObjectUtils.isNull(intersection)) {
//				throw new BizException("整件散件容器不可选一样的!" + intersection.toString());
//			}
//		}
//}
//	public static void main(String[] args) throws InterruptedException {
//	String getMD5Code = MD5Utils.GetMD5Code("0021259559");
//	Thread.sleep(1000);
//	String getMD5Code2 = MD5Utils.GetMD5Code("0021259559"+"W1111"+"20210809"+"20220809");
//	System.out.println(getMD5Code+"----------"+getMD5Code2);
//}
//	public static void main(String[] args) throws InterruptedException {
//		SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS"); //精确到毫秒
//		String suffix = fmt.format(new Date());
//		System.out.println(suffix);
//	}
//	public static void main(String[] args) throws InterruptedException {
//		for (int i = 0; i < 39; i++) {
//			Thread.sleep(1l);
//			long id = SnowFlakeUtils.getId();
//			System.out.println(String.valueOf(id)+"o3");
////			System.out.println();
//		}
//	}
//	public static void main(String[] args) throws ParseException {
//		String numberStr = ObjectUtils.getNumberStr(1l, 8);
//	System.out.println(numberStr);
//}
//	public static void main(String[] args) throws ParseException {
//	String createSerial = "康桥责任有限公司";
//	int indexOf = createSerial.indexOf("有限");
//	CharSequence subSequence = createSerial.subSequence(0, indexOf);
//	System.out.println(subSequence);
//}
//	public static void main(String[] args) throws ParseException {
//		String createSerial = "20120943";
//		boolean validDate = ObjectUtils.isValidDate(createSerial);
//
//		System.out.println(validDate);
//	}
//	public static void main(String[] args) throws ParseException {
//		String createSerial = "201203";
//		Date parseDate = ObjectUtils.parseDate(createSerial);
//		
//		System.out.println(parseDate.toGMTString());
//	}
//	public static void main(String[] args) throws ParseException {
//		String createSerial = ObjectUtils.createSerial("RCV", 2);
//		System.out.println(createSerial);
//	}
//	public static void main(String[] args) throws ParseException {
//		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
//		Date parse = dateFormat.parse("2099-01-01");
//		System.out.println(parse.toLocaleString());
//	}
//	public static void main(String[] args) {
//		Date now = new Date();
//		now.setHours(0);
//		now.setMinutes(0);
//		now.setSeconds(0);
//		Calendar cal = Calendar.getInstance();
//		cal.setTime(now);// 设置起时间
//		cal.add(Calendar.YEAR, 100);// 增加100年
//		Date time = cal.getTime();
//		
//		System.out.println(time.toLocaleString());
//	}
//	public static void main(String[] args) {
//		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
//		String str = sdf.format(new Date());
//		
//		System.out.println(str);
//	}
//	public static void main(String[] args) {
//		String rcvType = "2";
//		if (!BizConstant.PURCHASE_IN.equals(rcvType) && !BizConstant.SALE_RETURN_IN.equals(rcvType))
//			System.out.println("12312");
//		System.out.println("no");
//	}
//	public static void main(String[] args) {
//		Map<String, Object> resultMap = new HashedMap<>();
//
//		resultMap.put("123", "123cuowo");
//		resultMap.put("124", "124cuowo");
//		System.out.println(resultMap.values().toString());
//	}
//	public static void main(String[] args) {
//	BigDecimal bigDecimal1 = null;
//	BigDecimal bigDecimal = null;
//	
//	
//	
//	System.out.println(bigDecimal1.compareTo(bigDecimal) == 0);
//	System.out.println(bigDecimal1.equals(bigDecimal));
//	System.out.println(Objects.equal(bigDecimal1, bigDecimal));
//}
//	public static void main(String[] args) {
//		BigDecimal bigDecimal1 = new BigDecimal(51);
//		BigDecimal bigDecimal = new BigDecimal(50);
//		
//		BigDecimal divide = bigDecimal1.divide(bigDecimal,0,RoundingMode.DOWN);
//		System.out.println(divide.toString());
//	}
//	
//	public static void main(String[] args) {
//		List<User1> list1 = new ArrayList<>();
//		List<User1> list2 = new ArrayList<>();
//
//		User1 u1 = new User1("algo002", 1);
//		User1 u13 = new User1("algo001", 1);
//		User1 u12 = new User1("algo004", 2);
////		User1 u14 = new User1(null, 0);
//		list1.add(u12);
//		list1.add(u1);
//		list1.add(u13);
////		list1.add(u14);
//		for (User1 user1 : list1) {
//			String name = user1.getName();
//			if ("algo002".equals(name)) {
//				list2.add(user1);
//				break;
//			}
//			if ("algo001".equals(name)) {
//				list2.add(user1);
//				break;
//			}
//			if ("algo004".equals(name)) {
//				list2.add(user1);
//				break;
//			}
//		}
//		System.out.println(list2.toString());
//	}

//	public static void main(String[] args) {
//		List<User1> list1 = new ArrayList<>();
//		
//		User1 u1 = new User1("algo002", 1);
//		User1 u13 = new User1("algo001", 1);
//		User1 u12 = new User1("algo004", 2);
//		User1 u14 = new User1(null, 0);
//		list1.add(u12);
//		list1.add(u1);
//		list1.add(u13);
//		list1.add(u14);
//		Map<Integer, List<User1>> collect = list1.stream().collect(Collectors.groupingBy(p -> fetch(p)));
//		Map<String, List<User1>> collect2 = list1.stream().collect(Collectors.groupingBy(User1 :: getName));
//		System.out.println(collect2.toString());
//	}
//	
//	public static Integer fetch(User1 u1) {
//		return u1.getHeight();
//	}
//	public static void main(String[] args) {
//		List<User1> list1 = new ArrayList<>();
//
//		User1 u1 = new User1("algo002", 1);
//		User1 u13 = new User1("algo001", 1);
//		User1 u12 = new User1("algo004", 2);
//		list1.add(u12);
//		list1.add(u1);
//		list1.add(u13);
//		list1.sort((x,y) -> x.getName().compareTo(y.getName()));
//		System.out.println(list1.toString());
//	}
//	public static void main(String[] args) {
//		Date now = new Date();
//		long time = now.getTime();
//		int row = 0;
//		int test = test(time,row);
//		System.out.println(test);
//	}
//
//	private static int test(long time,int row) {
//		while (true) {
//			// 使用自旋乐观锁(数据库实现)
//			Date now2 = new Date();
//			long time2 = now2.getTime();
//			// 最多6秒
//			if ((time2 - time) > 60)
//				throw new BizException("更新收货明细失败!请刷新重试!");
//			for (int i = 0; i < 10; i++) {
//				if (i == 9) {
//					row = i;
//				}
//			}
//			if (row == 9) {
//				return row;
//			}
//		}
//	}

//	public static void main(String[] args) throws ParseException {
//		BigDecimal decimal = BigDecimal.valueOf(28);
//		BigDecimal decimal2 = BigDecimal.valueOf(14);
//		
//		BigDecimal divide = decimal.divide(decimal2,RoundingMode.FLOOR);
//		BigDecimal multiply = divide.multiply(decimal2);
//		BigDecimal subtract = decimal.subtract(multiply);
//		String string = divide.toString();
//		System.out.println(string+"+++++"+subtract.toString());
//	}

//	public static void main(String[] args) throws ParseException {
//		String dateStr = "2021-4-15 15:30:23";
//		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		Date date1 = sdf.parse(dateStr);
//		Date now = new Date();
//		Long subtract = DateUtils.subtract(date1, now, ChronoUnit.DAYS);
//		long diff = Math.abs(subtract);
//		System.out.println(subtract);
//	}

//	public static void main(String[] args) {
//		List<User1> list1 = new ArrayList<>();
//		List<User2> list2 = new ArrayList<>();
//
//		User1 u1 = new User1("张三", 1);
//		User1 u12 = new User1("李四", 2);
//		User1 u17 = new User1("李四", 4);
//		User1 u13 = new User1("王五", 3);
//		User1 u14 = new User1("赵六", 4);
//		User1 u15 = new User1("赵六", 4);
//		User1 u16 = new User1("赵六", 100);
//		list1.add(u1);
//		list1.add(u12);
//		list1.add(u13);
//		list1.add(u14);
//		list1.add(u15);
//		list1.add(u16);
//		list1.add(u17);
//
//		User2 u2 = new User2("张三", 14);
//		User2 u22 = new User2("李四", 22);
//		User2 u23 = new User2("王五", 34);
//		User2 u24 = new User2("赵六", 44);
//
//		list2.add(u2);
//		list2.add(u22);
//		list2.add(u23);
//		list2.add(u24);
//
//		List<String> collect = Optional.ofNullable(list1).orElse(Collections.emptyList()).stream().distinct()
//				.collect(Collectors.groupingBy(User1::getName)).entrySet().stream().map(p -> p.getKey())
//				.collect(Collectors.toList());
//		System.out.println(collect.toString());
//
//		list1 = null;
//		Map<String, List<User1>> collect = Optional.ofNullable(list1).orElse(Collections.emptyList()).stream().distinct()
//				.collect(Collectors.groupingBy(User1::getName));
//		Map<String, List<User2>> collect2 = Optional.ofNullable(list2).orElse(Collections.emptyList()).stream().distinct()
//				.collect(Collectors.groupingBy(User2::getName));
//		
//		Set<Entry<String, List<User1>>> entrySet = collect.entrySet();
//		for (Entry<String, List<User1>> entry : entrySet) {
//			String key = entry.getKey();
//			List<User1> value = entry.getValue();
//			List<User2> list = collect2.get(key);
//			value.get(0).setU2(list.get(0));
//		}
//		System.out.println(list1.size() +list1.toString());
//		
//		System.out.println(ObjectUtils.isNull(collect));
//	}
}
