Browse Source

fix : 兼容{"distinct":true,"pageNumber":1,"pageSize":1000,"projection":["classCode"]}

lvxianyun 3 years ago
parent
commit
701255cdab

+ 29 - 1
src/main/java/com/persagy/proxy/object/controller/AdmEquipmentController.java

@@ -6,22 +6,26 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.Sets;
+import com.persagy.dmp.basic.dto.RequestData;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.basic.utils.JsonNodeUtils;
 import com.persagy.dmp.common.context.AppContext;
 import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.helper.SpringHelper;
 import com.persagy.dmp.common.model.entity.BaseEntity;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.define.client.DigitalDefineFacade;
 import com.persagy.dmp.define.entity.ObjectInfoDefine;
 import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.dmp.digital.client.DigitalObjectFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
+import com.persagy.dmp.simple.client.DigitalObjectSimpleFacade;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
 import com.persagy.proxy.adm.constant.AdmDictCategoryEnum;
 import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
@@ -237,7 +241,31 @@ public class AdmEquipmentController {
 	public AdmResponse query(@RequestBody AdmQueryCriteria request) throws Exception {
 		// 组装上下文条件
 		request.setName(AdmEquipment.OBJ_TYPE);
-		return service.query(request);
+		if(CollUtil.isNotEmpty(request.getProjection()) && request.getDistinct() && request.getProjection().size() == 1 && request.getProjection().get(0).equals("classCode")) {
+			/** 特殊处理
+			 * distinct: true
+			 * pageNumber: 1
+			 * pageSize: 1000
+			 * projection: ["classCode"]
+			 * 0: "classCode"
+			 */
+			RequestData requestData = new RequestData();
+			requestData.setProjection(request.getProjection());
+			requestData.setObjType(AdmEquipment.OBJ_TYPE);
+			requestData.setPage(request.getPageNumber().longValue());
+			requestData.setSize(request.getPageSize().longValue());
+			CommonResult<List<ObjectNode>> result = DigitalObjectSimpleFacade.queryObjListByConditions(AdmContextUtil.toDmpContext().getGroupCode(), AdmContextUtil.toDmpContext().getProjectId(), AdmContextUtil.toDmpContext().getAppId(), null, requestData);
+			if (result == null || CollUtil.isEmpty(result.getData())) {
+				return AdmResponse.success();
+			}else{
+				List<AdmEquipment> admEquipments = JSONUtil.toList(result.getData().toString(), AdmEquipment.class);
+				service.ensureSpecialValues(AdmContextUtil.toDmpContext(), admEquipments);
+				return AdmResponse.success(admEquipments);
+			}
+		}else{
+			return service.query(request);
+		}
+
 	}
 
 	/**

+ 1 - 1
src/main/java/com/persagy/proxy/object/controller/AdmSystemController.java

@@ -225,7 +225,7 @@ public class AdmSystemController {
             requestData.setObjType(AdmSystem.OBJ_TYPE);
             requestData.setPage(request.getPageNumber().longValue());
             requestData.setSize(request.getPageSize().longValue());
-            CommonResult<List<ObjectNode>> result = DigitalObjectSimpleFacade.querySystemListByConditions(AdmContextUtil.toDmpContext().getGroupCode(),AdmContextUtil.toDmpContext().getProjectId(), AdmContextUtil.toDmpContext().getAppId(), null, requestData);
+            CommonResult<List<ObjectNode>> result = DigitalObjectSimpleFacade.queryObjListByConditions(AdmContextUtil.toDmpContext().getGroupCode(),AdmContextUtil.toDmpContext().getProjectId(), AdmContextUtil.toDmpContext().getAppId(), null, requestData);
             if(result == null || CollUtil.isEmpty(result.getData())){
                 return AdmResponse.success();
             }