refactor(uapbd): 重构 QuerySync 类
- 优化 baseQuery 方法,提高代码复用性 - 新增 processExtraParams 方法
This commit is contained in:
parent
2130d2dbf7
commit
265f42953f
|
@ -37,18 +37,20 @@ public class QuerySync extends AbstractNCCRestResource {
|
|||
|
||||
private JSONString baseQuery(ApiUfinterface apiUfinterface, String viewName, String pkColumnName) throws DAOException {
|
||||
Map<String, Object> data = apiUfinterface.getData().getParamdata();
|
||||
// 处理特殊字段
|
||||
processExtraParams(data);
|
||||
JSONObject pageInfo = (JSONObject) JSONObject.toJSON(apiUfinterface.getPageInfo());
|
||||
data.remove("type"); // 移除类型参数,因为它仅用于路由,向下传递会影响查询
|
||||
|
||||
|
||||
// 获取额外条件
|
||||
String extraCondition = null;
|
||||
if (data.containsKey("extraCondition")) {
|
||||
extraCondition = (String) data.get("extraCondition");
|
||||
data.remove("extraCondition"); // 移除额外条件参数,防止影响查询
|
||||
}
|
||||
|
||||
|
||||
String condition = QuerySyncSqlUtils.buildUniversalCondition(data);
|
||||
|
||||
|
||||
// 如果存在额外条件,拼接到条件后面
|
||||
if (extraCondition != null && !extraCondition.isEmpty()) {
|
||||
condition = condition + " AND " + extraCondition;
|
||||
|
@ -109,6 +111,47 @@ public class QuerySync extends AbstractNCCRestResource {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理类似TS的特殊字段
|
||||
*/
|
||||
private static void processExtraParams(Map<String, Object> data) {
|
||||
// 处理ts参数
|
||||
if (data.containsKey("ts")) {
|
||||
Object tsObj = data.get("ts");
|
||||
String tsCondition = null;
|
||||
|
||||
if (tsObj instanceof String) {
|
||||
String ts = (String) tsObj;
|
||||
if (!ts.contains(",")) { // 单个时间戳
|
||||
// 从时间戳中提取日期部分,构建当天零点到该时间的范围
|
||||
String dayStart = ts.split(" ")[0] + " 00:00:00";
|
||||
tsCondition = "ts >= '" + dayStart + "' AND ts <= '" + ts + "'";
|
||||
} else { // 已经是时间范围,格式如:startTime,endTime
|
||||
String[] timeRange = ts.split(",");
|
||||
if (timeRange.length == 2) {
|
||||
tsCondition = "ts >= '" + timeRange[0] + "' AND ts <= '" + timeRange[1] + "'";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 将构建好的条件放入extraCondition
|
||||
if (tsCondition != null) {
|
||||
// 检查是否已有其他extraCondition
|
||||
String existingExtraCondition = data.containsKey("extraCondition") ?
|
||||
(String) data.get("extraCondition") : "";
|
||||
|
||||
if (existingExtraCondition.isEmpty()) {
|
||||
data.put("extraCondition", tsCondition);
|
||||
} else {
|
||||
data.put("extraCondition", existingExtraCondition + " AND " + tsCondition);
|
||||
}
|
||||
}
|
||||
|
||||
// 从参数中移除ts,避免它被直接用于查询条件
|
||||
data.remove("ts");
|
||||
}
|
||||
}
|
||||
|
||||
private JSONString queryCustomer(ApiUfinterface ufinterface) throws DAOException {
|
||||
return baseQuery(ufinterface, "V_UAPBD_QUERYSYNC_CUSTOMER", "pk_customer");
|
||||
}
|
||||
|
@ -131,46 +174,10 @@ public class QuerySync extends AbstractNCCRestResource {
|
|||
*/
|
||||
private JSONString queryMaterial(ApiUfinterface ufinterface) throws DAOException {
|
||||
Map<String, Object> data = ufinterface.getData().getParamdata();
|
||||
|
||||
// 处理ts参数
|
||||
if (data.containsKey("ts")) {
|
||||
Object tsObj = data.get("ts");
|
||||
String tsCondition = null;
|
||||
|
||||
if (tsObj instanceof String) {
|
||||
String ts = (String) tsObj;
|
||||
if (!ts.contains(",")) { // 单个时间戳
|
||||
// 从时间戳中提取日期部分,构建当天零点到该时间的范围
|
||||
String dayStart = ts.split(" ")[0] + " 00:00:00";
|
||||
tsCondition = "ts >= '" + dayStart + "' AND ts <= '" + ts + "'";
|
||||
} else { // 已经是时间范围,格式如:startTime,endTime
|
||||
String[] timeRange = ts.split(",");
|
||||
if (timeRange.length == 2) {
|
||||
tsCondition = "ts >= '" + timeRange[0] + "' AND ts <= '" + timeRange[1] + "'";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 将构建好的条件放入extraCondition
|
||||
if (tsCondition != null) {
|
||||
// 检查是否已有其他extraCondition
|
||||
String existingExtraCondition = data.containsKey("extraCondition") ?
|
||||
(String) data.get("extraCondition") : "";
|
||||
|
||||
if (existingExtraCondition.isEmpty()) {
|
||||
data.put("extraCondition", tsCondition);
|
||||
} else {
|
||||
data.put("extraCondition", existingExtraCondition + " AND " + tsCondition);
|
||||
}
|
||||
}
|
||||
|
||||
// 从参数中移除ts,避免它被直接用于查询条件
|
||||
data.remove("ts");
|
||||
}
|
||||
|
||||
return baseQuery(ufinterface, "V_UAPBD_QUERYSYNC_MATERIAL", "pk_material");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询BOM维护信息
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue