refactor(uapbd): 重构查询接口并增加新查询类型
- 抽取公共查询逻辑到 baseQuery 方法中 -增加了 queryDept、queryCustomer 和 querySupplier 三种新的查询类型 - 优化了 query 方法中的类型判断逻辑 - 移除了未使用的 ApiDataVO 导入
This commit is contained in:
		
							parent
							
								
									286a5d1c60
								
							
						
					
					
						commit
						6c01f422a0
					
				|  | @ -10,7 +10,6 @@ import nccloud.api.rest.utils.IJsonForAPI; | ||||||
| import nccloud.api.rest.utils.JsonFactoryForAPI; | import nccloud.api.rest.utils.JsonFactoryForAPI; | ||||||
| import nccloud.api.rest.utils.OpenApiPageInfo; | import nccloud.api.rest.utils.OpenApiPageInfo; | ||||||
| import nccloud.api.rest.utils.ResultMessageUtil; | import nccloud.api.rest.utils.ResultMessageUtil; | ||||||
| import nccloud.api.rest.utils.vo.ApiDataVO; |  | ||||||
| import nccloud.api.rest.utils.vo.ApiQueryParam; | import nccloud.api.rest.utils.vo.ApiQueryParam; | ||||||
| import nccloud.api.rest.utils.vo.ApiUfinterface; | import nccloud.api.rest.utils.vo.ApiUfinterface; | ||||||
| import nccloud.api.uapbd.common.utils.OpenApiPagenationUtils; | import nccloud.api.uapbd.common.utils.OpenApiPagenationUtils; | ||||||
|  | @ -30,49 +29,21 @@ import java.util.StringJoiner; | ||||||
| public class QuerySync extends AbstractNCCRestResource { | public class QuerySync extends AbstractNCCRestResource { | ||||||
| 
 | 
 | ||||||
|     public static final BaseDAO BASE_DAO = new BaseDAO(); |     public static final BaseDAO BASE_DAO = new BaseDAO(); | ||||||
|  | 
 | ||||||
|     @Override |     @Override | ||||||
|     public String getModule() { |     public String getModule() { | ||||||
|         return "uapbd"; |         return "uapbd"; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @POST |     private JSONString baseQuery(ApiUfinterface apiUfinterface, String viewName, String pkColumnName) throws DAOException { | ||||||
|     @Path("query") |  | ||||||
|     @Consumes({"application/json"}) |  | ||||||
|     @Produces({"application/json"}) |  | ||||||
|     public JSONString query(JSONString json) { |  | ||||||
|         IJsonForAPI iJsonForAPI = JsonFactoryForAPI.create(); |  | ||||||
|         ApiQueryParam apiQueryParam = iJsonForAPI.fromJson(json.toJSONString(), ApiQueryParam.class); |  | ||||||
|         ApiDataVO apiDataVO = apiQueryParam.getUfinterface().getData(); |  | ||||||
|         // 从中抓取接口枚举类型 |  | ||||||
|         ApiUfinterface ufinterface = apiQueryParam.getUfinterface(); |  | ||||||
|         if (ufinterface.getData().getParamdata().containsKey("type")) { |  | ||||||
|             String type = (String) ufinterface.getData().getParamdata().get("type"); |  | ||||||
|             try { |  | ||||||
|                 switch (type) { |  | ||||||
|                     case "queryStordoc": |  | ||||||
|                         return queryStordoc(ufinterface); |  | ||||||
|                     case "queryMaterial": |  | ||||||
|                         return queryMaterial(ufinterface); |  | ||||||
|                     default: |  | ||||||
|                         return ResultMessageUtil.exceptionToJSON(new Exception("不支持的接口类型: " + type)); |  | ||||||
|                 } |  | ||||||
|             } catch (Exception e) { |  | ||||||
|                 // 捕获并返回异常信息 |  | ||||||
|                 return ResultMessageUtil.exceptionToJSON(e); |  | ||||||
|             } |  | ||||||
|         } else { |  | ||||||
|             return ResultMessageUtil.exceptionToJSON(new Exception("缺失接口类型,请检查参数")); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     private JSONString queryStordoc(ApiUfinterface apiUfinterface) throws DAOException { |  | ||||||
|         Map<String, Object> data = apiUfinterface.getData().getParamdata(); |         Map<String, Object> data = apiUfinterface.getData().getParamdata(); | ||||||
|         JSONObject pageInfo = (JSONObject) JSONObject.toJSON(apiUfinterface.getPageInfo()); |         JSONObject pageInfo = (JSONObject) JSONObject.toJSON(apiUfinterface.getPageInfo()); | ||||||
|         data.remove("type"); |         data.remove("type"); // 移除类型参数,因为它仅用于路由,向下传递会影响查询 | ||||||
|         String condition = QuerySyncSqlUtils.buildUniversalCondition(data); |         String condition = QuerySyncSqlUtils.buildUniversalCondition(data); | ||||||
| 
 | 
 | ||||||
|         String sql = "SELECT pk_stordoc FROM V_UAPBD_QUERYSYNC_STORDOC WHERE " + condition; |         String countSql = "SELECT " + pkColumnName + " FROM " + viewName + " WHERE " + condition; | ||||||
|         List<String> allPks = (List<String>) BASE_DAO.executeQuery(sql, new ColumnListProcessor()); |         @SuppressWarnings("unchecked") | ||||||
|  |         List<String> allPks = (List<String>) BASE_DAO.executeQuery(countSql, new ColumnListProcessor()); | ||||||
|         OpenApiPageInfo openApiPageInfo = new OpenApiPageInfo(); |         OpenApiPageInfo openApiPageInfo = new OpenApiPageInfo(); | ||||||
|         String[] currPks = OpenApiPagenationUtils.getCurrentPagePksAndPageInfo(allPks, pageInfo, openApiPageInfo); |         String[] currPks = OpenApiPagenationUtils.getCurrentPagePksAndPageInfo(allPks, pageInfo, openApiPageInfo); | ||||||
| 
 | 
 | ||||||
|  | @ -83,18 +54,65 @@ public class QuerySync extends AbstractNCCRestResource { | ||||||
|         for (String pk : currPks) { |         for (String pk : currPks) { | ||||||
|             stringJoiner.add("'" + pk + "'"); |             stringJoiner.add("'" + pk + "'"); | ||||||
|         } |         } | ||||||
|         String pks = "(" + stringJoiner + ")"; |         String pksCondition = "(" + stringJoiner + ")"; | ||||||
| 
 | 
 | ||||||
|         List<Map<String, Object>> rows = (List<Map<String, Object>>) BASE_DAO.executeQuery("select * from v_uapbd_querysync_stordoc where pk_stordoc in " + pks, new MapListProcessor()); |         String dataSql = "SELECT * FROM " + viewName + " WHERE " + pkColumnName + " IN " + pksCondition; | ||||||
|  |         @SuppressWarnings("unchecked") | ||||||
|  |         List<Map<String, Object>> rows = (List<Map<String, Object>>) BASE_DAO.executeQuery(dataSql, new MapListProcessor()); | ||||||
| 
 | 
 | ||||||
|         return ResultMessageUtil.toJSONByPage(rows, openApiPageInfo, false); |         return ResultMessageUtil.toJSONByPage(rows, openApiPageInfo, false); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @POST | ||||||
|  |     @Path("query") | ||||||
|  |     @Consumes({"application/json"}) | ||||||
|  |     @Produces({"application/json"}) | ||||||
|  |     public JSONString query(JSONString json) { | ||||||
|  |         IJsonForAPI iJsonForAPI = JsonFactoryForAPI.create(); | ||||||
|  |         ApiQueryParam apiQueryParam = iJsonForAPI.fromJson(json.toJSONString(), ApiQueryParam.class); | ||||||
|  |         // 从中抓取接口枚举类型 | ||||||
|  |         ApiUfinterface ufinterface = apiQueryParam.getUfinterface(); | ||||||
|  |         if (ufinterface.getData().getParamdata().containsKey("type")) { | ||||||
|  |             String type = (String) ufinterface.getData().getParamdata().get("type"); | ||||||
|  |             try { | ||||||
|  |                 return switch (type) { | ||||||
|  |                     case "queryStordoc" -> queryStordoc(ufinterface); | ||||||
|  |                     case "queryMaterial" -> queryMaterial(ufinterface); | ||||||
|  |                     case "queryDept" -> queryDept(ufinterface); | ||||||
|  |                     case "queryCustomer" -> queryCustomer(ufinterface); | ||||||
|  |                     case "querySupplier" -> querySupplier(ufinterface); | ||||||
|  |                     default -> ResultMessageUtil.exceptionToJSON(new Exception("不支持的查询类型: " + type)); | ||||||
|  |                 }; | ||||||
|  |             } catch (Exception e) { | ||||||
|  |                 // 捕获并返回异常信息 | ||||||
|  |                 return ResultMessageUtil.exceptionToJSON(e); | ||||||
|  |             } | ||||||
|  |         } else { | ||||||
|  |             return ResultMessageUtil.exceptionToJSON(new Exception("缺失接口类型,请检查参数")); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private JSONString queryCustomer(ApiUfinterface ufinterface) throws DAOException { | ||||||
|  |         return baseQuery(ufinterface, "V_UAPBD_QUERYSYNC_CUSTOMER", "pk_customer"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private JSONString queryDept(ApiUfinterface apiUfinterface) throws DAOException { | ||||||
|  |         return baseQuery(apiUfinterface, "V_UAPBD_QUERYSYNC_DEPT", "pk_defdoc"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * ²éѯÎïÁÏÐÅÏ¢ |      * ²éѯÎïÁÏÐÅÏ¢ | ||||||
|      */ |      */ | ||||||
|     private JSONString queryMaterial(ApiUfinterface apiUfinterface) { |     private JSONString queryMaterial(ApiUfinterface apiUfinterface) { | ||||||
| 
 |  | ||||||
|         return null; |         return null; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     private JSONString queryStordoc(ApiUfinterface apiUfinterface) throws DAOException { | ||||||
|  |         return baseQuery(apiUfinterface, "V_UAPBD_QUERYSYNC_STORDOC", "pk_stordoc"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private JSONString querySupplier(ApiUfinterface ufinterface) throws DAOException { | ||||||
|  |         return baseQuery(ufinterface, "V_UAPBD_QUERYSYNC_SUPPLIER", "pk_supplier"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
| } | } | ||||||
		Loading…
	
		Reference in New Issue