Kaynağa Gözat

优化查询

zhengqiang 5 yıl önce
ebeveyn
işleme
f573cee2b7

+ 2 - 0
common/src/main/java/com/jpsoft/smart/modules/base/dao/PersonDeviceRelationDAO.java

@@ -1,4 +1,5 @@
 package com.jpsoft.smart.modules.base.dao;
+import com.jpsoft.smart.modules.base.entity.DeviceInfo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -19,6 +20,7 @@ public interface PersonDeviceRelationDAO {
     List<PersonDeviceRelation> findByDeviceId(String deviceId);
     PersonDeviceRelation findByDeviceIdAndPersonId(String deviceId,Long personId);
 	List<PersonDeviceRelation> search(Map<String, Object> searchParams, List<Sort> sortList);
+    List<DeviceInfo> findDeviceByPersonId(Long personId);
 
 //    List<PersonDeviceRelation>  findByPersonId(@Param("personId")Long personId);
 

+ 5 - 1
common/src/main/java/com/jpsoft/smart/modules/base/service/PersonDeviceRelationService.java

@@ -2,6 +2,8 @@ package com.jpsoft.smart.modules.base.service;
 
 import java.util.List;
 import java.util.Map;
+
+import com.jpsoft.smart.modules.base.entity.DeviceInfo;
 import com.jpsoft.smart.modules.base.entity.PersonDeviceRelation;
 import com.github.pagehelper.Page;
 import com.jpsoft.smart.modules.common.dto.Sort;
@@ -18,5 +20,7 @@ public interface PersonDeviceRelationService {
 	PersonDeviceRelation findByDeviceIdAndPersonId(String deviceId,Long personId);
 	Page<PersonDeviceRelation> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize,boolean count, List<Sort> sortList);
 
-	//List<PersonDeviceRelation> findByPersonId(Long id);
+    List<DeviceInfo> findDeviceByPersonId(Long id);
+
+    //List<PersonDeviceRelation> findByPersonId(Long id);
 }

+ 8 - 0
common/src/main/java/com/jpsoft/smart/modules/base/service/impl/PersonDeviceRelationServiceImpl.java

@@ -4,6 +4,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 import javax.annotation.Resource;
+
+import com.jpsoft.smart.modules.base.entity.DeviceInfo;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import com.jpsoft.smart.modules.base.dao.PersonDeviceRelationDAO;
@@ -90,4 +92,10 @@ public class PersonDeviceRelationServiceImpl implements PersonDeviceRelationServ
 //
 //		return personDeviceRelationDAO.findByPersonId(id);
 //	}
+
+
+	@Override
+	public List<DeviceInfo> findDeviceByPersonId(Long personId) {
+		return personDeviceRelationDAO.findDeviceByPersonId(personId);
+	}
 }

+ 6 - 3
common/src/main/resources/mapper/base/PersonDeviceRelation.xml

@@ -117,7 +117,10 @@ id_,device_id,person_id,del_flag,create_by,create_time,update_by,update_time		fr
 	        ${sort.name} ${sort.order}
 	 	</foreach>
 	</select>
-
-
-
+    <select id="findDeviceByPersonId" resultMap="com.jpsoft.smart.modules.base.dao.DeviceInfoDAO.DeviceInfoMap">
+		select b.* from base_person_device_relation a,base_device_info b
+		where a.person_id=#{personId}
+		and a.device_id = b.id_
+		and a.del_flag=false
+	</select>
 </mapper>

+ 9 - 10
web/src/main/java/com/jpsoft/smart/modules/base/controller/PersonInfoController.java

@@ -42,6 +42,7 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("/base/personInfo")
@@ -434,17 +435,15 @@ public class PersonInfoController {
 
         Page<PersonInfo> page = personInfoService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
         Page<PersonInfoDTO> pageDTO = PojoUtils.convertPage(page, PersonInfoDTO.class);
+
         for(PersonInfoDTO dto : pageDTO.getResult()){
-            String deviceName = "";
-            List<PersonDeviceRelation> personDeviceRelationList = personDeviceRelationService.findByPersonId(dto.getId());
-            for(PersonDeviceRelation personDeviceRelation : personDeviceRelationList){
-                DeviceInfo deviceInfo = deviceInfoService.get(personDeviceRelation.getDeviceId());
-                deviceName += deviceInfo.getAliasName() + ",";
-            }
-            if(StringUtils.isNotEmpty(deviceName)) {
-                deviceName = deviceName.substring(0,deviceName.length()-1);
-                dto.setDeviceName(deviceName);
-            }
+            List<DeviceInfo> deviceNameList = personDeviceRelationService.findDeviceByPersonId(dto.getId());
+
+            String deviceName = deviceNameList.stream()
+                                .map((device)->device.getAliasName())
+                                .collect(Collectors.joining(","));
+
+            dto.setDeviceName(deviceName);
         }
 
         msgResult.setResult(true);