Bladeren bron

'优化建筑设施-分页接口,查询界面报空指针的问题,修改程序逻辑'

james 1 jaar geleden
bovenliggende
commit
63b97f1d4b

+ 4 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/BaseBuildFacilityMapper.java

@@ -4,6 +4,9 @@ import com.usky.iot.domain.BaseBuild;
 import com.usky.iot.domain.BaseBuildFacility;
 import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.BaseBuildFacilityType;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -14,6 +17,6 @@ import com.usky.iot.domain.BaseBuildFacilityType;
  * @since 2023-07-26
  */
 public interface BaseBuildFacilityMapper extends CrudMapper<BaseBuildFacility> {
-    BaseBuildFacilityType baseBuildFacilityTypeList(String facilityType);
+    List<BaseBuildFacilityType> baseBuildFacilityTypeList(@Param("facilityTypes") List<String> facilityTypes);
     BaseBuild getBuildName(Integer buildId);
 }

+ 32 - 28
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseBuildFacilityServiceImpl.java

@@ -93,40 +93,44 @@ public class BaseBuildFacilityServiceImpl extends AbstractCrudService<BaseBuildF
     @Override
     public CommonPage<BaseBuildFacility> page(BaseBuildFacilityRequestVO requestVO){
         List<BaseBuildFacility> list = new ArrayList<>();
-        LambdaQueryWrapper<BaseBuildFacility> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(requestVO.getId() != null,BaseBuildFacility::getId,requestVO.getId())
-                .like(StringUtils.isNotBlank(requestVO.getFacilityNum()),BaseBuildFacility::getFacilityNum,requestVO.getFacilityNum())
-                .like(StringUtils.isNotBlank(requestVO.getFacilityName()),BaseBuildFacility::getFacilityName,requestVO.getFacilityName())
-                .eq(StringUtils.isNotBlank(requestVO.getFacilityType()),BaseBuildFacility::getFacilityType,requestVO.getFacilityType())
-                .eq(BaseBuildFacility::getDeleteFlag,0)
-                .eq(BaseBuildFacility::getTenantId,SecurityUtils.getTenantId())
-                .orderByDesc(BaseBuildFacility::getId);
-        List<BaseBuildFacility> list1 = this.list(queryWrapper);
-        if(CollectionUtils.isNotEmpty(list1)){
-            for(int i=0;i<list1.size();i++){
-                LambdaQueryWrapper<BaseBuildFacilityRelate> queryWrapper1 = Wrappers.lambdaQuery();
-                queryWrapper1.eq(BaseBuildFacilityRelate::getFacilityId,list1.get(i).getId());
-                BaseBuildFacilityRelate one = baseBuildFacilityRelateService.getOne(queryWrapper1);
-                if(one != null){
-                    BaseBuild one1 = baseMapper.getBuildName(one.getBuildId());
-                    if(one1 != null){
-                        list1.get(i).setBuildId(one1.getId());
-                        list1.get(i).setBuildName(one1.getBuildName());
+        BaseBuild one1 = baseMapper.getBuildName(requestVO.getBuildId());
+
+        LambdaQueryWrapper<BaseBuildFacilityRelate> queryWrapper1 = Wrappers.lambdaQuery();
+        queryWrapper1.eq(BaseBuildFacilityRelate::getBuildId,requestVO.getBuildId());
+        List<BaseBuildFacilityRelate> facilityList = baseBuildFacilityRelateService.list(queryWrapper1);
+
+        List<BaseBuildFacility> list1 = new ArrayList<>();
+        if(CollectionUtils.isNotEmpty(facilityList)){
+            List<Integer> facilityIdList = facilityList.stream().map(m ->m.getFacilityId()).collect(Collectors.toList());
+            LambdaQueryWrapper<BaseBuildFacility> queryWrapper = Wrappers.lambdaQuery();
+            queryWrapper.eq(requestVO.getId() != null,BaseBuildFacility::getId,requestVO.getId())
+                    .in(BaseBuildFacility::getId,facilityIdList)
+                    .like(StringUtils.isNotBlank(requestVO.getFacilityNum()),BaseBuildFacility::getFacilityNum,requestVO.getFacilityNum())
+                    .like(StringUtils.isNotBlank(requestVO.getFacilityName()),BaseBuildFacility::getFacilityName,requestVO.getFacilityName())
+                    .eq(StringUtils.isNotBlank(requestVO.getFacilityType()),BaseBuildFacility::getFacilityType,requestVO.getFacilityType())
+                    .eq(BaseBuildFacility::getDeleteFlag,0)
+                    .eq(BaseBuildFacility::getTenantId,SecurityUtils.getTenantId())
+                    .orderByDesc(BaseBuildFacility::getId);
+            list1 = this.list(queryWrapper);
+            if(CollectionUtils.isNotEmpty(list1)){
+                List<String> facilityTypeList = list1.stream().map(m ->m.getFacilityType()).collect(Collectors.toList());
+                List<BaseBuildFacilityType> typeList = baseMapper.baseBuildFacilityTypeList(facilityTypeList);
+                for(int i=0;i<list1.size();i++){
+
+                    if(CollectionUtils.isNotEmpty(typeList)){
+                        for(int j=0;j<typeList.size();j++){
+                            if(list1.get(i).getFacilityType().equals(typeList.get(j).getTypeCode())){
+                                list1.get(i).setTypeName(typeList.get(j).getTypeName());
+                            }
+                        }
                     }
-
+                    list1.get(i).setBuildId(one1.getId());
+                    list1.get(i).setBuildName(one1.getBuildName());
                 }
-                BaseBuildFacilityType typeOne = baseMapper.baseBuildFacilityTypeList(list1.get(i).getFacilityType());
-                list1.get(i).setTypeName(typeOne.getTypeName());
             }
-        }
 
 
-        if(StringUtils.isNotBlank(requestVO.getBuildName())){
-            list1 = list1.stream().filter(m-> m.getBuildName().contains(requestVO.getBuildName())).collect(Collectors.toList());
-        }
 
-        if(requestVO.getBuildId() != null){
-            list1 = list1.stream().filter(m-> m.getBuildId().equals(requestVO.getBuildId())).collect(Collectors.toList());
         }
 
         if(list1.size() > 0){

+ 5 - 2
service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseBuildFacilityMapper.xml

@@ -32,8 +32,11 @@
             bbft.*
         from base_build_facility_type bbft
         <where>
-            <if test="1 == 1">
-                bbft.type_code = #{facilityType}
+            <if test="facilityTypes != null and facilityTypes.size() > 0">
+                AND bbft.type_code in
+                <foreach item="item" collection="facilityTypes" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
             </if>
         </where>
     </select>