From 4bc9e8a3962a01dd204185039c29c40b734ea4a4 Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期三, 11 五月 2022 16:06:37 +0800
Subject: [PATCH] fix

---
 dao/src/main/java/com/sandu/ximon/dao/mapper/PoleMapper.java                   |    6 +
 dao/src/main/resources/mapper/PoleMapper.xml                                   |   33 +++++++++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java       |   87 +++++------------------------
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java |   25 +-------
 4 files changed, 57 insertions(+), 94 deletions(-)

diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleMapper.java
index 087d8ef..749638f 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleMapper.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleMapper.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * @Entity com.sandu.ximon.dao.domain.Pole
  */
@@ -11,7 +13,9 @@
 public interface PoleMapper extends BaseMapper<Pole> {
 
 
-   boolean updateDeviceCode(Long id);
+    boolean updateDeviceCode(Long id);
+
+    List<Pole> queryPoleOnLineStatesList(Long userid, Integer isTrue, Integer bingStates, Long groupid, String keyword);
 }
 
 
diff --git a/dao/src/main/resources/mapper/PoleMapper.xml b/dao/src/main/resources/mapper/PoleMapper.xml
index 5945bd5..3dc4b36 100644
--- a/dao/src/main/resources/mapper/PoleMapper.xml
+++ b/dao/src/main/resources/mapper/PoleMapper.xml
@@ -38,4 +38,37 @@
         SET device_code=null
         WHERE id = #{id}
     </update>
+    <select id="queryPoleOnLineStatesList" resultType="com.sandu.ximon.dao.domain.Pole">
+        SELECT
+        t1.*
+        FROM
+        pole t1
+        LEFT JOIN pole_group_relation t2 ON t1.id = t2.pole_id
+        LEFT JOIN pole_group t3 ON t3.group_id = t2.pole_group_id
+        <where>
+            <if test="userid != null">
+                AND (t1.user_id = #{userid} OR t1.client_id = #{userid})
+            </if>
+            <if test="keyword != null and keyword != ''">
+                AND ( t1.pole_name LIKE CONCAT(CONCAT('%', #{keyword}), '%')
+                OR t1.device_code LIKE CONCAT(CONCAT('%', #{keyword}), '%'))
+            </if>
+            <if test="isTrue != null and isTrue == 1">
+                AND t1.device_type = -1
+            </if>
+            <if test="isTrue != null and isTrue == 0">
+                AND t1.device_type != -1
+            </if>
+            <if test="groupid != null">
+                AND t3.group_id = #{groupid}
+            </if>
+            <if test="bingStates != null and bingStates == 0 ">
+                AND t1.user_id != -1
+            </if>
+            <if test="bingStates != null and bingStates == 1 ">
+                AND t1.user_id = -1
+            </if>
+        </where>
+        GROUP BY t1.id
+    </select>
 </mapper>
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
index 198cbe7..14d1a93 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
@@ -75,22 +75,12 @@
         if (!permissionConfig.check(MenuEnum.POLE_LIST.getCode())) {
             return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
         }
-        PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
-        List<Pole> results = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), param);
-
+        CommonPage commonPage = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), param);
         List<PoleBindVO> listResult = new ArrayList<>();
-        for (Pole pole : results) {
+        for (Pole pole : (List<Pole>) commonPage.getList()) {
             PoleBindVO bindByPoleId = poleService.getBindByPoleId(pole.getId());
             bindByPoleId.setPole(pole);
             listResult.add(bindByPoleId);
-        }
-
-        CommonPage commonPage = CommonPage.restPage(listResult);
-        int size = results.size();
-        commonPage.setTotal((long) size);
-        commonPage.setTotalPage(size / baseConditionVO.getPageSize() + 1);
-        if (size % baseConditionVO.getPageSize() == 0) {
-            commonPage.setTotalPage(size / baseConditionVO.getPageSize());
         }
         return ResponseUtil.success(commonPage);
     }
@@ -100,15 +90,8 @@
         if (!permissionConfig.check(MenuEnum.POLE_LIST.getCode())) {
             return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
         }
-        PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
-        List<Pole> results = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), param);
-        CommonPage commonPage = CommonPage.restPage(results);
-        int size = results.size();
-        commonPage.setTotal((long) size);
-        commonPage.setTotalPage(size / baseConditionVO.getPageSize() + 1);
-        if (size % baseConditionVO.getPageSize() == 0) {
-            commonPage.setTotalPage(size / baseConditionVO.getPageSize());
-        }
+        CommonPage commonPage = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), param);
+
         return ResponseUtil.success(commonPage);
     }
 
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
index b90a64b..32e0f03 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.PageHelper;
+import com.sandu.common.domain.CommonPage;
 import com.sandu.common.execption.BusinessException;
 import com.sandu.common.object.BaseConditionVO;
 import com.sandu.common.redis.RedisService;
@@ -14,6 +15,7 @@
 import com.sandu.common.util.SpringContextHolder;
 import com.sandu.ximon.admin.dto.DeviceStatus;
 import com.sandu.ximon.admin.dto.WaterQualityDataDto;
+import com.sandu.ximon.admin.entity.Command;
 import com.sandu.ximon.admin.manager.iot.frame.A1Frame;
 import com.sandu.ximon.admin.manager.iot.frame.FrameBuilder;
 import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame;
@@ -31,6 +33,7 @@
 import com.sandu.ximon.admin.redis.LightKey;
 import com.sandu.ximon.admin.security.SecurityUtils;
 import com.sandu.ximon.admin.utils.LightemitUtils;
+import com.sandu.ximon.admin.utils.ListPagingUtils;
 import com.sandu.ximon.admin.utils.RedisUtils;
 import com.sandu.ximon.admin.utils.response.VnnoxResult;
 import com.sandu.ximon.admin.vo.PoleBindVO;
@@ -260,83 +263,23 @@
         return result;
     }
 
-    public List<Pole> queryAllStatesAndList(Integer pageNo, Integer pageSize, PoleStatesParam param) {
-
-        List<Pole> list = new ArrayList<>();
-        LambdaQueryWrapper<Pole> wrapper = new LambdaQueryWrapper<>();
+    public CommonPage queryAllStatesAndList(Integer pageNo, Integer pageSize, PoleStatesParam param) {
+        if (param == null) {
+            param = new PoleStatesParam();
+        }
+        System.out.println(param);
+        List<Pole> poleList;
         if (SecurityUtils.getClientId() == null) {
-            wrapper = Wrappers.lambdaQuery(Pole.class);
+            poleList = poleMapper.queryPoleOnLineStatesList(null, param.getIsTrue(), param.getBingStates(), param.getGroupid(), param.getKeyword());
         } else {
-            wrapper = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, SecurityUtils.getUserId()).or(
-                    w -> {
-                        w.eq(Pole::getUserId, SecurityUtils.getUserId());
-                    });
-        }
-        if (param.getKeyword() != null && !param.getKeyword().isEmpty()) {
-            wrapper.like(Pole::getPoleCode, param.getKeyword()).or(
-                    wrappers -> {
-                        wrappers.like(Pole::getPoleName, param.getKeyword());
-                    }
-            );
+            poleList = poleMapper.queryPoleOnLineStatesList(SecurityUtils.getUserId(), param.getIsTrue(), param.getBingStates(), param.getGroupid(), param.getKeyword());
         }
 
-        PageHelper.startPage(pageNo, pageSize);
-        list = list(wrapper);
-        if (param.getGroupid() != null) {
-            //  List<Long> poleIds = new ArrayList<>();
-            List<Pole> pole = new ArrayList<>();
-            List<PoleGroupRelation> relations = groupRelationService.list(Wrappers.lambdaQuery(PoleGroupRelation.class)
-                    .eq(PoleGroupRelation::getPoleGroupId, param.getGroupid()));
-            relations.forEach(relation -> {
-                        pole.add(getById(relation.getPoleId()));
-                    }
-            );
-            list = pole;
-        }
-        //鏄惁缁戝畾
-        if (param.getBingStates() != 2) {
-            //   缁戝畾/鏈粦瀹�
-            list = isBind(list, param);
-            //宸茬粦瀹氱殑鏄惁鏄湡瀹炵伅鏉�
-            if (param.getIsTrue() != 2) {
-                list = isTrue(list, param);
-                //缁戝畾鐨勭湡瀹炵伅鏉嗘槸鍚﹀湪绾�
-                if (param.getOnLineStates() != 2) {
-                    list = isOnLine(list, param);
-                }
-            }
-            //鍏ㄩ儴鐏潌  瀹炰綋/铏氭嫙
-            else {
-                //鏌ヨ鍏ㄩ儴鐏潌鏄惁鍦ㄧ嚎
-                if (param.getOnLineStates() != 2) {
-                    list = isOnLine(list, param);
-                }
-            }
-        }
-        //鍏ㄩ儴 缁戝畾/鏈粦瀹�
-        else {
-            // 鍒ゆ柇鐏潌绫诲瀷
-            if (param.getIsTrue() != 2) {
-                // 瀹炰綋/铏氭嫙
-                list = isTrue(list, param);
-                // 鐏潌鐨勫湪绾垮垽鏂�
-                if (param.getOnLineStates() != 2) {
-                    //鍦ㄧ嚎/绂荤嚎
-                    list = isOnLine(list, param);
-                }
-            }
-            //鍏ㄧ被鍨嬬伅鏉�
-            else {
-                //鍒ゆ柇鍦ㄧ嚎鐘舵��
-                if (param.getOnLineStates() != 2) {
-                    //鍦ㄧ嚎/绂荤嚎
-                    list = isOnLine(list, param);
-                }
-            }
-        }
+        List<Pole> PoleResult = isOnLine(poleList, param);
 
-        setCount(list);
-        return list;
+        CommonPage commonPage = ListPagingUtils.pages(PoleResult, pageNo, pageSize);
+
+        return commonPage;
     }
 
     /**

--
Gitblit v1.9.3