| | |
| | | import java.util.Collections; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.concurrent.atomic.AtomicBoolean; |
| | | |
| | | /** |
| | | * ASN 单据压测数据定时生成器。 |
| | |
| | | private static final Integer TENANT_ID = 1; |
| | | private static final Long USER_ID = 51L; |
| | | private static final String MEMO = "ASN_PRESSURE_TEST"; |
| | | private final AtomicBoolean running = new AtomicBoolean(false); |
| | | |
| | | @Autowired |
| | | private AsnOrderService asnOrderService; |
| | |
| | | |
| | | @Scheduled(cron = "${pressure.asn-order.cron:0/10 * * * * ?}") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public synchronized void insertPressureOrders() { |
| | | public void insertPressureOrders() { |
| | | if (!enabled) { |
| | | return; |
| | | } |
| | | if (!running.compareAndSet(false, true)) { |
| | | log.warn("ASN压测任务仍在执行中,本轮跳过"); |
| | | return; |
| | | } |
| | | try { |
| | | if (orderCountPerRun <= 0 || itemCountPerOrder <= 0 || itemQty <= 0) { |
| | | log.warn("ASN压测任务配置无效,跳过执行: orderCountPerRun={}, itemCountPerOrder={}, itemQty={}", |
| | | orderCountPerRun, itemCountPerOrder, itemQty); |
| | |
| | | } |
| | | |
| | | log.info("ASN压测任务执行完成,本次插入主单 {} 条,明细 {} 条", orders.size(), items.size()); |
| | | } finally { |
| | | running.set(false); |
| | | } |
| | | } |
| | | |
| | | private List<Matnr> loadMatnrs() { |