package com.youchain; import com.youchain.basicdata.domain.BigItem; import com.youchain.basicdata.vo.BarCodeVo; import com.youchain.businessdata.domain.AgvTask; import com.youchain.businessdata.domain.AsnDetail; import com.youchain.businessdata.domain.GdDetail; import com.youchain.businessdata.domain.PickDetail; import com.youchain.config.thread.ThreadPoolExecutorUtil; import com.youchain.utils.StringUtils; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.*; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class EladminSystemApplicationTests { @Test public void contextLoads() { } public static void main(String[] args) { CompletableFuture asnDetailFuture = CompletableFuture.runAsync(() -> { System.out.println("新增asnDetail"); }); CompletableFuture itemKeyFuture = asnDetailFuture.thenRunAsync(() -> { System.out.println("新增itemKey"); }); CompletableFuture taskFuture = itemKeyFuture.thenRunAsync(() -> { System.out.println("新增task"); }); taskFuture.join(); } private static final int MAX_TASK_COUNT = 4; private static final long TIMEOUT_MS = 600000; // 10分钟,以毫秒为单位 private long lastTaskTime = System.currentTimeMillis(); private List taskQueue = new ArrayList<>(MAX_TASK_COUNT); void aa() { Set barCodeVos = new HashSet<>(); BarCodeVo barCodeVo = new BarCodeVo(); barCodeVo.setItemCode("123"); barCodeVo.setBoxNumber("1"); barCodeVos.add(barCodeVo); BarCodeVo barCodeVo2 = new BarCodeVo(); barCodeVo2.setItemCode("123"); barCodeVo2.setBoxNumber("2"); barCodeVos.add(barCodeVo2); BarCodeVo barCodeVo3 = new BarCodeVo(); barCodeVo3.setItemCode("456"); barCodeVo3.setBoxNumber("3"); barCodeVos.add(barCodeVo3); for (BarCodeVo vo : barCodeVos) { System.out.println(vo.getItemCode()); } String firstItemCode = barCodeVos.iterator().next().getItemCode(); boolean allSame = barCodeVos.stream() .allMatch(vo -> vo.getItemCode().equals(firstItemCode)); if (allSame) { System.out.println("全部匹配"); } else { System.out.println("不匹配"); } PickDetail pickDetail1 = new PickDetail(); pickDetail1.setId(1L); pickDetail1.setOrderQty(2d); pickDetail1.setAllocatedQty(2d); PickDetail pickDetail2 = new PickDetail(); pickDetail2.setId(2L); pickDetail2.setOrderQty(2d); pickDetail2.setAllocatedQty(2d); PickDetail pickDetail3 = new PickDetail(); pickDetail3.setId(2L); pickDetail3.setOrderQty(2d); pickDetail3.setAllocatedQty(0d); List pickDetails = new ArrayList<>(); pickDetails.add(pickDetail1); pickDetails.add(pickDetail2); pickDetails.add(pickDetail3); boolean allAllocated = pickDetails.stream() .allMatch(detail -> detail.getOrderQty().equals(detail.getAllocatedQty())); boolean anyAllocated = pickDetails.stream() .anyMatch(detail -> detail.getOrderQty().equals(detail.getAllocatedQty())); if (allAllocated) { System.out.println("全部已分配"); } else if (anyAllocated) { System.out.println("部分已分配"); } List list1 = Arrays.asList(); List list2 = Arrays.asList(); List list3 = new ArrayList<>(list1); list3.addAll(list2); System.out.println(list3); // 输出: [1, 2, 3, 4, 5] /*double taoQty=2;//基础套数 double xTaoQty=3;//需求套数 double ckdQty=Math.ceil(xTaoQty/taoQty);//生成出库单数量 System.out.println(ckdQty);*/ GdDetail gdDetail = new GdDetail(); gdDetail.setBigItem(null); gdDetail.setOrderType("DP"); GdDetail gdDetail2 = new GdDetail(); BigItem bigItem2 = new BigItem(); bigItem2.setCode("CT_001"); gdDetail2.setBigItem(bigItem2); gdDetail2.setOrderType("CP"); gdDetail2.setBigItemQty(1d); GdDetail gdDetail3 = new GdDetail(); BigItem bigItem3 = new BigItem(); bigItem3.setCode("CT_001"); gdDetail3.setBigItem(bigItem3); gdDetail3.setOrderType("CP"); gdDetail3.setBigItemQty(2d); GdDetail gdDetail4 = new GdDetail(); BigItem bigItem4 = new BigItem(); bigItem4.setCode("CT_002"); gdDetail4.setBigItem(bigItem4); gdDetail4.setOrderType("CP"); gdDetail4.setBigItemQty(3d); GdDetail gdDetail5 = new GdDetail(); BigItem bigItem5 = new BigItem(); bigItem5.setCode("CT_002"); gdDetail5.setBigItem(bigItem5); gdDetail5.setOrderType("CP"); gdDetail5.setBigItemQty(4d); List list = new ArrayList<>(); list.add(gdDetail); list.add(gdDetail2); list.add(gdDetail3); list.add(gdDetail4); list.add(gdDetail5); for (GdDetail gd : list) { System.out.println("总集合:" + gd); } List cpList = list.stream() .filter(gd -> "CP".equals(gd.getOrderType())) .collect(Collectors.toList()); List dpList = list.stream() .filter(gd -> "DP".equals(gd.getOrderType())) .collect(Collectors.toList()); for (GdDetail gd : cpList) { System.out.println("成品集合:" + gd); } for (GdDetail gd : dpList) { System.out.println("单品集合:" + gd); } Map> groupedByCode = cpList.stream() .collect(Collectors.groupingBy(gd -> gd.getBigItem().getCode())); groupedByCode.forEach((code, details) -> { System.out.println("Code: " + code); details.forEach(System.out::println); }); } @Test public void test() { List taskLists = new ArrayList<>(); taskLists.add(1); taskLists.add(2); taskLists.add(3); taskLists.add(4); taskLists.add(5); taskLists.add(6); for (Integer id : taskLists) { try { taskQueue.add(id); if (taskQueue.size() >= MAX_TASK_COUNT) { System.out.println("任务已满足,当前任务数:" + taskQueue.size()); taskQueue.clear(); lastTaskTime = System.currentTimeMillis(); } else if (System.currentTimeMillis() - lastTaskTime >= TIMEOUT_MS) { System.out.println("超过10分钟未满足4个任务,当前任务数:" + taskQueue.size()); taskQueue.clear(); lastTaskTime = System.currentTimeMillis(); } } catch (Exception e) { throw new RuntimeException(e); } System.out.println(id); } } }