2026-04-16 14:25:54 +08:00
|
|
|
package com.klp.task;
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import com.klp.domain.WmsWarehouse;
|
|
|
|
|
import com.klp.mapper.WmsMaterialCoilMapper;
|
|
|
|
|
import com.klp.mapper.WmsWarehouseMapper;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
@Component
|
|
|
|
|
public class WarehouseUseCountTask {
|
|
|
|
|
|
|
|
|
|
private final WmsMaterialCoilMapper materialCoilMapper;
|
|
|
|
|
private final WmsWarehouseMapper warehouseMapper;
|
|
|
|
|
|
2026-04-16 16:18:40 +08:00
|
|
|
// @Scheduled(cron = "0 0 1 * * ?")
|
2026-04-16 14:25:54 +08:00
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void calculateWarehouseUseCount() {
|
|
|
|
|
log.info("[仓库使用次数定时任务] 开始计算仓库使用次数");
|
|
|
|
|
|
|
|
|
|
LambdaQueryWrapper<WmsWarehouse> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
wrapper.select(WmsWarehouse::getWarehouseId);
|
|
|
|
|
List<WmsWarehouse> warehouses = warehouseMapper.selectList(wrapper);
|
|
|
|
|
|
|
|
|
|
if (warehouses.isEmpty()) {
|
|
|
|
|
log.info("[仓库使用次数定时任务] 未找到仓库记录");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<Long> warehouseIds = warehouses.stream()
|
|
|
|
|
.map(WmsWarehouse::getWarehouseId)
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
List<Map<String, Object>> countList = materialCoilMapper.selectWarehouseIdCount(warehouseIds);
|
|
|
|
|
|
|
|
|
|
Map<Long, Long> countMap = new HashMap<>();
|
|
|
|
|
for (Map<String, Object> item : countList) {
|
|
|
|
|
Long wid = ((Number) item.get("warehouse_id")).longValue();
|
|
|
|
|
Long count = ((Number) item.get("coil_count")).longValue();
|
|
|
|
|
countMap.put(wid, count);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (WmsWarehouse warehouse : warehouses) {
|
|
|
|
|
Long count = countMap.getOrDefault(warehouse.getWarehouseId(), 0L);
|
|
|
|
|
warehouse.setUseCount(count.intValue());
|
|
|
|
|
warehouseMapper.updateById(warehouse);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.info("[仓库使用次数定时任务] 完成,共更新 {} 个仓库", warehouses.size());
|
|
|
|
|
}
|
2026-04-16 16:18:40 +08:00
|
|
|
}
|