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 {
|
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维护信息
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue