refactor(uapbd): 重构 QuerySync 类

- 优化 baseQuery 方法,提高代码复用性
- 新增 processExtraParams 方法
This commit is contained in:
张明 2025-05-13 14:28:31 +08:00
parent 2130d2dbf7
commit 265f42953f
1 changed files with 47 additions and 40 deletions

View File

@ -37,18 +37,20 @@ public class QuerySync extends AbstractNCCRestResource {
private JSONString baseQuery(ApiUfinterface apiUfinterface, String viewName, String pkColumnName) throws DAOException { private JSONString baseQuery(ApiUfinterface apiUfinterface, String viewName, String pkColumnName) throws DAOException {
Map<String, Object> data = apiUfinterface.getData().getParamdata(); Map<String, Object> data = apiUfinterface.getData().getParamdata();
// 处理特殊字段
processExtraParams(data);
JSONObject pageInfo = (JSONObject) JSONObject.toJSON(apiUfinterface.getPageInfo()); JSONObject pageInfo = (JSONObject) JSONObject.toJSON(apiUfinterface.getPageInfo());
data.remove("type"); // 移除类型参数因为它仅用于路由,向下传递会影响查询 data.remove("type"); // 移除类型参数因为它仅用于路由,向下传递会影响查询
// 获取额外条件 // 获取额外条件
String extraCondition = null; String extraCondition = null;
if (data.containsKey("extraCondition")) { if (data.containsKey("extraCondition")) {
extraCondition = (String) data.get("extraCondition"); extraCondition = (String) data.get("extraCondition");
data.remove("extraCondition"); // 移除额外条件参数防止影响查询 data.remove("extraCondition"); // 移除额外条件参数防止影响查询
} }
String condition = QuerySyncSqlUtils.buildUniversalCondition(data); String condition = QuerySyncSqlUtils.buildUniversalCondition(data);
// 如果存在额外条件拼接到条件后面 // 如果存在额外条件拼接到条件后面
if (extraCondition != null && !extraCondition.isEmpty()) { if (extraCondition != null && !extraCondition.isEmpty()) {
condition = condition + " AND " + extraCondition; 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 { private JSONString queryCustomer(ApiUfinterface ufinterface) throws DAOException {
return baseQuery(ufinterface, "V_UAPBD_QUERYSYNC_CUSTOMER", "pk_customer"); 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 { private JSONString queryMaterial(ApiUfinterface ufinterface) throws DAOException {
Map<String, Object> data = ufinterface.getData().getParamdata(); 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"); return baseQuery(ufinterface, "V_UAPBD_QUERYSYNC_MATERIAL", "pk_material");
} }
/** /**
* 查询BOM维护信息 * 查询BOM维护信息
*/ */