Browse Source

广告列表、屏幕下拉列表、屏幕详情接口

zhj 2 years ago
parent
commit
5286593317

+ 54 - 0
src/main/java/com/welampiot/controller/LampPoleController.java

@@ -0,0 +1,54 @@
+package com.welampiot.controller;
+
+import com.welampiot.common.BaseResult;
+import com.welampiot.dto.ScreenDTO;
+import com.welampiot.service.ScreenService;
+import com.welampiot.utils.ToolUtils;
+import com.welampiot.vo.ScreenDetailsVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * ClassName: LampPoleController
+ * Package: com.welampiot.controller
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/14 - 14:35
+ * @Version: v1.0
+ */
+@RestController
+@CrossOrigin
+@RequestMapping("/api/lampPole")
+public class LampPoleController {
+
+    @Autowired
+    private ScreenService screenService;
+
+    @Autowired
+    private ToolUtils toolUtils;
+
+    /**
+     * 获取屏幕详情
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/screenDetails", method = RequestMethod.POST)
+    public BaseResult<ScreenDTO> screenDetails(HttpServletRequest request){
+        Integer id = request.getParameter("id") == null ? 0 : Integer.parseInt(request.getParameter("id"));
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        if (id == 0) return toolUtils.response("0001",version);
+        ScreenDTO dto = new ScreenDTO();
+        dto.setId(id);
+        dto.setSectionList(toolUtils.getSectionList(request));
+
+        ScreenDetailsVO vo = screenService.getScreenDetails(dto);
+        if (vo == null) return toolUtils.response("0001",version);
+        return BaseResult.success(vo);
+    }
+}

+ 27 - 4
src/main/java/com/welampiot/controller/NewLampPoleController.java

@@ -2,16 +2,15 @@ package com.welampiot.controller;
 
 import com.welampiot.common.BaseResult;
 import com.welampiot.dto.EnvmonitorDTO;
+import com.welampiot.dto.ScreenDTO;
 import com.welampiot.dto.WifiDTO;
 import com.welampiot.dto.WifiInfoLogDTO;
 import com.welampiot.service.EnvmonitorService;
+import com.welampiot.service.ScreenService;
 import com.welampiot.service.WifiInfoLogService;
 import com.welampiot.service.WifiService;
 import com.welampiot.utils.ToolUtils;
-import com.welampiot.vo.EnvmonitorVO;
-import com.welampiot.vo.WifiInfoLogVO;
-import com.welampiot.vo.WifiOutInfoVO;
-import com.welampiot.vo.WifiVO;
+import com.welampiot.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -43,6 +42,9 @@ public class NewLampPoleController {
     @Autowired
     private EnvmonitorService envmonitorService;
 
+    @Autowired
+    private ScreenService screenService;
+
     @Autowired
     private ToolUtils toolUtils;
 
@@ -154,4 +156,25 @@ public class NewLampPoleController {
         return BaseResult.success(vo);
     }
 
+    /**
+     * 获取广告列表
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/screenList", method = RequestMethod.POST)
+    public BaseResult<ScreenDTO> screenList(HttpServletRequest request){
+        Integer page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
+        Integer count = request.getParameter("count") == null ? 16 : Integer.parseInt(request.getParameter("count"));
+        Integer online = request.getParameter("online") == null ? 0 : Integer.parseInt(request.getParameter("online"));
+
+        ScreenDTO dto = new ScreenDTO();
+        dto.setPage(count * (page - 1));
+        dto.setCount(count);
+        dto.setOnline(online);
+        dto.setSectionList(toolUtils.getSectionList(request));
+
+        ScreenVO vo = screenService.getScreenList(dto);
+        return BaseResult.success(vo);
+    }
+
 }

+ 48 - 0
src/main/java/com/welampiot/controller/ScreenController.java

@@ -0,0 +1,48 @@
+package com.welampiot.controller;
+
+import com.welampiot.common.BaseResult;
+import com.welampiot.dto.ScreenDTO;
+import com.welampiot.service.ScreenService;
+import com.welampiot.utils.ToolUtils;
+import com.welampiot.vo.ScreenVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * ClassName: ScreenController
+ * Package: com.welampiot.controller
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/14 - 12:54
+ * @Version: v1.0
+ */
+@RestController
+@CrossOrigin
+@RequestMapping("/api/screen")
+public class ScreenController {
+
+    @Autowired
+    private ScreenService screenService;
+
+    @Autowired
+    private ToolUtils toolUtils;
+
+    /**
+     * 获取屏幕下拉列表
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/screenNav", method = RequestMethod.POST)
+    public BaseResult<ScreenDTO> screenNav(HttpServletRequest request){
+        ScreenDTO dto = new ScreenDTO();
+        dto.setSectionList(toolUtils.getSectionList(request));
+        ScreenVO vo = screenService.getScreenNavByDTO(dto);
+        return BaseResult.success(vo);
+    }
+}

+ 26 - 0
src/main/java/com/welampiot/dao/ScreenDao.java

@@ -0,0 +1,26 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.ScreenDTO;
+
+import java.util.List;
+
+/**
+ * ClassName: ScreenDao
+ * Package: com.welampiot.dao
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/14 - 10:04
+ * @Version: v1.0
+ */
+public interface ScreenDao {
+    List<ScreenDTO> getScreenListByDTO(ScreenDTO dto);
+
+    Integer getTotalBySectionList(ScreenDTO dto);
+
+    Integer getOnlineTotalBySectionList(ScreenDTO dto);
+
+    List<ScreenDTO> getScreenNavByDTO(ScreenDTO dto);
+
+    ScreenDTO getScreenDetailsByDTO(ScreenDTO dto);
+}

+ 149 - 0
src/main/java/com/welampiot/dto/ScreenDTO.java

@@ -0,0 +1,149 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * ClassName: ScreenDTO
+ * Package: com.welampiot.dto
+ * Description: 屏幕
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/14 - 9:31
+ * @Version: v1.0
+ */
+@Data
+public class ScreenDTO implements Serializable {
+    /** 主键 **/
+    private Integer id;
+
+    /** 名称 **/
+    private String model;
+
+    /** 序列号 **/
+    private String num;
+
+    /** 分辨率 **/
+    private String resolve;
+
+    /** 点阵规则(0 = p4,1 = p3,3 = LCD,4 = 其他)**/
+    private Integer role;
+
+    /** 供电方式(0 = 适配器,1 = POE,2 = 其他,3 = AC220V)**/
+    private  Integer powerModel;
+
+    /** 通信方式(0 = 以太网,1 = 4G,2 = 其他)**/
+    private Integer comModel;
+
+    /** 灯杆id **/
+    private Integer lampPoleId;
+
+    /** 网络状态(0 不在线,1 在线)**/
+    private Integer netStatus;
+
+    /** 屏幕开关状态(0 关,1 开)**/
+    private Integer status;
+
+    /** 屏幕亮度值 **/
+    private Integer light;
+
+    /** 音量 **/
+    private Integer volume;
+
+    /** 宽 **/
+    private Integer width;
+
+    /** 高 **/
+    private Integer height;
+
+    /** 正在播放的节目id **/
+    private Integer playingId;
+
+    /** 屏幕播放类型(0 节目,1 气象站,2 视屏监控,3 网页)**/
+    private Integer type;
+
+    /** 视屏监控id **/
+    private Integer videoId;
+
+    /** 气象站id **/
+    private Integer weatherId;
+
+    /** 最大亮度值 **/
+    private Integer maxLight;
+
+    /** 设备类型(0 熙讯,1 仰邦,2 灰度,3 卡莱特,4 太龙)**/
+    private Integer devType;
+
+    /** 指令是否发送中 **/
+    private Integer isSending;
+
+    /**  卡莱特屏幕的id **/
+    private Integer kaLaiTeId;
+
+    /** 太龙显示屏的id **/
+    private String taiLongId;
+
+    /** 是否为仰邦YQ2的卡 **/
+    private Integer isYQ2;
+
+    /** 电源模式(0 手动,1 自动)**/
+    private Integer openMode;
+
+    /** ip地址 **/
+    private String ipAddr;
+
+    private String taskId;
+
+    private Integer taskMode;
+
+    /** 安装时间 **/
+    private String installDate;
+
+    /** 过期时间 **/
+    private String expirationDate;
+
+    /** 灯杆名 **/
+    private String lampPoleName;
+
+    /** 时区 **/
+    private Integer timezone;
+
+    /** 当前节目名称 **/
+    private String programName;
+
+    /** 当天用电量 **/
+    private Float dayCom;
+
+    /** 累计用电量 **/
+    private Float totalCom;
+
+    /** 电压 **/
+    private Float voltage;
+
+    /** 电流 **/
+    private Float current;
+
+    /** 功率 **/
+    private Float power;
+
+    /** 更新时间 **/
+    private String updateTime;
+
+    /** 是否支持截屏 **/
+    private Integer canCut;
+
+    /** 屏幕名 **/
+    private String name;
+
+    private List<Integer> sectionList;
+
+    private Integer page;
+
+    private Integer count;
+
+    private Integer online;
+
+    private static final long serialVersionUID = 1L;
+}

+ 22 - 0
src/main/java/com/welampiot/service/ScreenService.java

@@ -0,0 +1,22 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.ScreenDTO;
+import com.welampiot.vo.ScreenDetailsVO;
+import com.welampiot.vo.ScreenVO;
+
+/**
+ * ClassName: ScreenService
+ * Package: com.welampiot.service
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/14 - 11:10
+ * @Version: v1.0
+ */
+public interface ScreenService {
+    ScreenVO getScreenList(ScreenDTO dto);
+
+    ScreenVO getScreenNavByDTO(ScreenDTO dto);
+
+    ScreenDetailsVO getScreenDetails(ScreenDTO dto);
+}

+ 219 - 0
src/main/java/com/welampiot/service/impl/ScreenServiceImpl.java

@@ -0,0 +1,219 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.ScreenDao;
+import com.welampiot.dto.ScreenDTO;
+import com.welampiot.service.ScreenService;
+import com.welampiot.vo.ScreenDetailsVO;
+import com.welampiot.vo.ScreenVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * ClassName: ScreenServiceImpl
+ * Package: com.welampiot.service.impl
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/14 - 11:11
+ * @Version: v1.0
+ */
+@Service
+public class ScreenServiceImpl implements ScreenService {
+    @Autowired
+    private ScreenDao screenDao;
+
+    @Override
+    public ScreenVO getScreenList(ScreenDTO dto) {
+        ScreenVO vo = new ScreenVO();
+        vo.setTotal(screenDao.getTotalBySectionList(dto));
+        vo.setOnlineTotal(screenDao.getOnlineTotalBySectionList(dto));
+        List<ScreenDTO> screenList = screenDao.getScreenListByDTO(dto);
+        List<ScreenDTO> list = new ArrayList<>();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        screenList.forEach(screenDTO ->{
+            if (screenDTO.getNetStatus() != null && screenDTO.getNetStatus() == 1){
+                screenDTO.setNetStatus(1);
+            }else {
+                screenDTO.setNetStatus(0);
+            }
+            if (screenDTO.getStatus() != null && screenDTO.getStatus() == 1){
+                screenDTO.setStatus(1);
+            }else {
+                screenDTO.setStatus(0);
+            }
+            if (screenDTO.getOpenMode() != null && screenDTO.getOpenMode() == 1){
+                screenDTO.setOpenMode(1);
+            }else {
+                screenDTO.setOpenMode(0);
+            }
+            if (screenDTO.getProgramName() == null){
+                screenDTO.setProgramName("");
+            }
+            if (screenDTO.getLampPoleName() == null){
+                screenDTO.setLampPoleName("");
+            }
+            if (screenDTO.getDayCom() == null){
+                screenDTO.setDayCom(0.0f);
+            }
+            if (screenDTO.getTotalCom() == null){
+                screenDTO.setTotalCom(0.0f);
+            }
+            if (screenDTO.getVoltage() == null){
+                screenDTO.setVoltage(0.0f);
+            }
+            if (screenDTO.getCurrent() == null){
+                screenDTO.setCurrent(0.0f);
+            }
+            if (screenDTO.getPower() == null){
+                screenDTO.setPower(0.0f);
+            }
+            if (screenDTO.getCanCut() != null && screenDTO.getCanCut() == 1){
+                screenDTO.setCanCut(1);
+            }else {
+                screenDTO.setCanCut(0);
+            }
+            //数据更新时间
+            if (screenDTO.getUpdateTime() != null && !screenDTO.getUpdateTime().equals("")){
+                Date cmdTime;
+                try {
+                    cmdTime = simpleDateFormat.parse(screenDTO.getUpdateTime());
+                } catch (ParseException e) {
+                    throw new RuntimeException(e);
+                }
+                //判断时区,为null默认东八区
+                long timezone = screenDTO.getTimezone() == null ? 8 : screenDTO.getTimezone();
+                long l = cmdTime.getTime() + timezone * 3600 * 1000;
+                cmdTime = new Date(l);
+                screenDTO.setUpdateTime(simpleDateFormat.format(cmdTime));
+            }else {
+                screenDTO.setUpdateTime("");
+            }
+            if (screenDTO.getInstallDate() != null){
+                try {
+                    screenDTO.setInstallDate(simpleDateFormat.format(simpleDateFormat.parse(screenDTO.getInstallDate())));
+                } catch (ParseException e) {
+                    throw new RuntimeException(e);
+                }
+            }else {
+                screenDTO.setInstallDate("");
+            }
+            if (screenDTO.getExpirationDate() != null){
+                try {
+                    screenDTO.setExpirationDate(simpleDateFormat.format(simpleDateFormat.parse(screenDTO.getExpirationDate())));
+                } catch (ParseException e) {
+                    throw new RuntimeException(e);
+                }
+            }else {
+                screenDTO.setExpirationDate("");
+            }
+            list.add(screenDTO);
+        });
+        vo.setList(list);
+        return vo;
+    }
+
+    @Override
+    public ScreenVO getScreenNavByDTO(ScreenDTO dto) {
+        ScreenVO vo = new ScreenVO();
+        List<ScreenDTO> screenNavList = screenDao.getScreenNavByDTO(dto);
+        vo.setList(screenNavList);
+        return vo;
+    }
+
+    @Override
+    public ScreenDetailsVO getScreenDetails(ScreenDTO dto) {
+        ScreenDetailsVO vo = new ScreenDetailsVO();
+        ScreenDTO screenDTO = screenDao.getScreenDetailsByDTO(dto);
+        if (screenDTO == null) return null;
+        vo.setId(screenDTO.getId().toString());
+        vo.setModel(screenDTO.getModel());
+        vo.setNum(screenDTO.getNum());
+        vo.setResolve(screenDTO.getResolve());
+        //点阵规则(0 = p4,1 = p3,2 = p2,3 = LCD,4 = 其他)
+        if (screenDTO.getRole() != null && screenDTO.getRole() == 4){
+            screenDTO.setRole(4);
+            vo.setRole(screenDTO.getRole().toString());
+        }else if (screenDTO.getRole() != null && screenDTO.getRole() == 3){
+            screenDTO.setRole(3);
+            vo.setRole(screenDTO.getRole().toString());
+        }else if (screenDTO.getRole() != null && screenDTO.getRole() == 2){
+            screenDTO.setRole(2);
+            vo.setRole(screenDTO.getRole().toString());
+        }else if (screenDTO.getRole() != null && screenDTO.getRole() == 1){
+            screenDTO.setRole(1);
+            vo.setRole(screenDTO.getRole().toString());
+        }else {
+            screenDTO.setRole(0);
+            vo.setRole(screenDTO.getRole().toString());
+        }
+        //供电方式(0 = 适配器,1 = POE,2 = 其他,3 = AC220V)
+        if (screenDTO.getPowerModel() != null && screenDTO.getPowerModel() == 3){
+            screenDTO.setPowerModel(3);
+            vo.setPowerModel(screenDTO.getPowerModel().toString());
+        }else if (screenDTO.getPowerModel() != null && screenDTO.getPowerModel() == 2){
+            screenDTO.setPowerModel(2);
+            vo.setPowerModel(screenDTO.getPowerModel().toString());
+        }else if (screenDTO.getPowerModel() != null && screenDTO.getPowerModel() == 1){
+            screenDTO.setPowerModel(1);
+            vo.setPowerModel(screenDTO.getPowerModel().toString());
+        }else {
+            screenDTO.setPowerModel(0);
+            vo.setPowerModel(screenDTO.getPowerModel().toString());
+        }
+        //通信方式(0 = 以太网,1 = 4G,2 = 其他)
+        if (screenDTO.getComModel() != null && screenDTO.getComModel() == 2){
+            screenDTO.setComModel(2);
+            vo.setComModel(screenDTO.getComModel().toString());
+        }else if (screenDTO.getComModel() != null && screenDTO.getComModel() == 1){
+            screenDTO.setComModel(1);
+            vo.setComModel(screenDTO.getComModel().toString());
+        }else {
+            screenDTO.setComModel(0);
+            vo.setComModel(screenDTO.getComModel().toString());
+        }
+        //网络状态(0 = 离线,1 = 在线)
+        if (screenDTO.getNetStatus() != null && screenDTO.getNetStatus() == 1){
+            screenDTO.setNetStatus(1);
+            vo.setNetStatus(screenDTO.getNetStatus().toString());
+        }else {
+            screenDTO.setNetStatus(0);
+            vo.setNetStatus(screenDTO.getNetStatus().toString());
+        }
+        //屏幕开关状态(0 = 关,1 = 开)
+        if (screenDTO.getStatus() != null && screenDTO.getStatus() == 1){
+            screenDTO.setStatus(1);
+            vo.setStatus(screenDTO.getStatus().toString());
+        }else {
+            screenDTO.setStatus(0);
+            vo.setStatus(screenDTO.getStatus().toString());
+        }
+        vo.setLight(screenDTO.getLight().toString());
+        vo.setVolume(screenDTO.getVolume().toString());
+        vo.setWidth(screenDTO.getWidth().toString());
+        vo.setHeight(screenDTO.getHeight().toString());
+        if (screenDTO.getProgramName() != null && !screenDTO.getProgramName().equals("")){
+            vo.setPlaying(screenDTO.getProgramName());
+        }else {
+            vo.setPlaying("");
+        }
+        //屏幕播放类型(0 节目,1 气象站,2 视屏监控)
+        if (screenDTO.getType() != null && screenDTO.getType() == 2){
+            screenDTO.setType(2);
+            vo.setType(screenDTO.getType().toString());
+        }else if(screenDTO.getType() != null && screenDTO.getType() == 1){
+            screenDTO.setType(1);
+            vo.setType(screenDTO.getType().toString());
+        }else {
+            screenDTO.setType(0);
+            vo.setType(screenDTO.getType().toString());
+        }
+        vo.setMaxLight(screenDTO.getMaxLight().toString());
+        return vo;
+    }
+}

+ 51 - 0
src/main/java/com/welampiot/vo/ScreenDetailsVO.java

@@ -0,0 +1,51 @@
+package com.welampiot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * ClassName: ScreenDetailsVO
+ * Package: com.welampiot.vo
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/14 - 13:58
+ * @Version: v1.0
+ */
+@Data
+public class ScreenDetailsVO implements Serializable {
+    private String id;
+
+    private String model;
+
+    private String num;
+
+    private String resolve;
+
+    private String role;
+
+    private String powerModel;
+
+    private String comModel;
+
+    private String netStatus;
+
+    private String status;
+
+    private String light;
+
+    private String volume;
+
+    private String width;
+
+    private String height;
+
+    private String playing;
+
+    private String type;
+
+    private String maxLight;
+
+    private static final long serialVersionUID = 1L;
+}

+ 25 - 0
src/main/java/com/welampiot/vo/ScreenVO.java

@@ -0,0 +1,25 @@
+package com.welampiot.vo;
+
+import com.welampiot.dto.ScreenDTO;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * ClassName: ScreenVO
+ * Package: com.welampiot.vo
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/14 - 11:11
+ * @Version: v1.0
+ */
+@Data
+public class ScreenVO implements Serializable {
+    private Integer total;
+
+    private Integer onlineTotal;
+
+    private List<ScreenDTO> list;
+}

+ 84 - 0
src/main/resources/mapper/ScreenMapper.xml

@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.welampiot.dao.ScreenDao">
+
+    <select id="getScreenListByDTO" resultType="ScreenDTO">
+        select s.id,s.lamp_pole_id lampPoleId,s.model as name,s.num,s.netStatus,s.open_mode openMode,
+               s.light,s.volume,s.width,s.light,s.height,lp.name as lampPoleName,s.maxLight,s.install_date installDate,
+               s.expiration_date expirationDate,s2.timezone,p.name as programName
+        from screen s left join lamp_pole lp on s.lamp_pole_id = lp.id
+            left join program p on s.playingid = p.id
+            left join section s2 on lp.sectionid = s2.id
+        where s.lamp_pole_id != 0
+            <if test="sectionList != null and !sectionList.isEmpty()">
+                and lp.sectionid in
+                <foreach collection="sectionList" item="dto" open="(" separator="," close=")">
+                    #{dto}
+                </foreach>
+            </if>
+            <choose>
+                <when test="online == 0">
+                    and s.netStatus = 0
+                </when>
+                <when test="online == 1">
+                    and s.netStatus = 1
+                </when>
+            </choose>
+            order by convert(lp.number using gbk) asc,
+                     convert(s.model using gbk) asc,s.id desc
+            <if test="page >= 0 and count > 0">
+                limit #{page},#{count}
+            </if>
+    </select>
+
+    <select id="getTotalBySectionList" resultType="Integer">
+        select count(s.id) as total from screen s
+        left join lamp_pole lp on s.lamp_pole_id = lp.id
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            where lp.sectionid in
+            <foreach collection="sectionList" item="dto" open="(" separator="," close=")">
+                #{dto}
+            </foreach>
+        </if>
+    </select>
+
+    <select id="getOnlineTotalBySectionList" resultType="Integer">
+        select count(s.id) as total from screen s
+        left join lamp_pole lp on s.lamp_pole_id = lp.id
+        where s.netStatus = 1
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            and lp.sectionid in
+            <foreach collection="sectionList" item="dto" open="(" separator="," close=")">
+                #{dto}
+            </foreach>
+        </if>
+    </select>
+
+    <!-- 屏幕下拉列表 -->
+    <select id="getScreenNavByDTO" resultType="ScreenDTO">
+        select s.id,s.model as name
+        from screen s left join lamp_pole lp on s.lamp_pole_id = lp.id
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            where lp.sectionid in
+            <foreach collection="sectionList" item="dto" open="(" separator="," close=")">
+                #{dto}
+            </foreach>
+        </if>
+    </select>
+
+    <!-- 屏幕详情 -->
+    <select id="getScreenDetailsByDTO" resultType="ScreenDTO">
+        select s.id,s.model,s.num,s.resolve,s.role,s.powerModel,s.comModel,s.netStatus,
+               s.status,s.light,s.volume,s.width,s.height,s.type,s.maxLight,p.name as programName
+        from screen s left join program p on s.playingid = p.id
+            left join lamp_pole lp on s.lamp_pole_id = lp.id
+        where s.id = #{id}
+            <if test="sectionList != null and !sectionList.isEmpty()">
+                and lp.sectionid in
+                <foreach collection="sectionList" item="dto" open="(" separator="," close=")">
+                    #{dto}
+                </foreach>
+            </if>
+    </select>
+
+</mapper>