package com.vincent.rsf.server.manager.service;
|
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.Collection;
|
import java.util.Collections;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* cus_item_sync_view 查询;仅使用副库视图
|
*/
|
@Service
|
@Slf4j
|
public class CusItemSyncViewQueryService {
|
|
@Autowired(required = false)
|
@Qualifier("cusItemSyncJdbcTemplate")
|
private JdbcTemplate cusItemSyncJdbcTemplate;
|
|
/** 当前视图查询实际使用的数据源说明 */
|
public String effectiveDataSourceLabel() {
|
return cusItemSyncJdbcTemplate != null ? "cus-item-sync" : "none";
|
}
|
|
/**
|
* 取视图前若干行
|
*/
|
public List<Map<String, Object>> probeSample(int limit) {
|
if (cusItemSyncJdbcTemplate == null) {
|
return Collections.emptyList();
|
}
|
int n = Math.min(50, Math.max(1, limit));
|
return cusItemSyncJdbcTemplate.queryForList(
|
"SELECT item_no, item_spec, unit_no FROM cus_item_sync_view LIMIT " + n);
|
}
|
|
public List<Map<String, Object>> listByItemNos(Collection<String> itemNos) {
|
if (itemNos == null || itemNos.isEmpty()) {
|
return Collections.emptyList();
|
}
|
List<String> codes = new ArrayList<>();
|
for (String code : itemNos) {
|
String c = StringUtils.trimToNull(code);
|
if (c != null) {
|
codes.add(c);
|
}
|
}
|
if (codes.isEmpty()) {
|
return Collections.emptyList();
|
}
|
if (cusItemSyncJdbcTemplate == null) {
|
log.warn("cus-item-sync 数据源未配置,跳过视图查询");
|
return Collections.emptyList();
|
}
|
String placeholders = String.join(",", Collections.nCopies(codes.size(), "?"));
|
String sql = "SELECT item_no, item_spec, unit_no FROM cus_item_sync_view WHERE item_no IN (" + placeholders + ")";
|
return cusItemSyncJdbcTemplate.queryForList(sql, codes.toArray());
|
}
|
}
|