New file |
| | |
| | | package enumeration; |
| | | |
| | | /** |
| | | * @author gonghl |
| | | * @since 2024-8-7 |
| | | */ |
| | | |
| | | public enum Trend { |
| | | RISING, FALLING, STABLE |
| | | |
| | | } |
New file |
| | |
| | | package com.ycl.platform.domain.query; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author gonghl |
| | | * @since 2024/8/6 下午 3:01 |
| | | */ |
| | | @Data |
| | | public class DashboardQuery { |
| | | |
| | | /** |
| | | * 数据权限:1省厅,2市局,3其他 |
| | | */ |
| | | private Integer dataScope; |
| | | |
| | | /** |
| | | * 部门id |
| | | */ |
| | | private Integer deptId; |
| | | |
| | | } |
New file |
| | |
| | | package com.ycl.platform.domain.vo.screen; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author gonghl |
| | | * @since 2024/8/7 上午 10:06 |
| | | */ |
| | | @Data |
| | | public class DeptAreaVO { |
| | | |
| | | /** |
| | | * 部门id |
| | | */ |
| | | private Integer deptId; |
| | | |
| | | /** |
| | | * 部门区域 |
| | | */ |
| | | private String area; |
| | | |
| | | } |
New file |
| | |
| | | package com.ycl.platform.domain.vo.screen; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author gonghl |
| | | * @since 2024/8/7 上午 10:06 |
| | | */ |
| | | @Data |
| | | public class MonitorRateVO { |
| | | |
| | | /** |
| | | * 地区 |
| | | */ |
| | | private String area; |
| | | |
| | | /** |
| | | * 人脸设备 |
| | | */ |
| | | private Double faceRate; |
| | | |
| | | /** |
| | | * 人脸正常数 |
| | | */ |
| | | private Integer faceNormalNum; |
| | | |
| | | /** |
| | | * 人脸异常数 |
| | | */ |
| | | private Integer faceErrorNum; |
| | | |
| | | /** |
| | | * 车辆设备 |
| | | */ |
| | | private Double carRate; |
| | | |
| | | /** |
| | | * 车辆正常数 |
| | | */ |
| | | private Integer carNormalNum; |
| | | |
| | | /** |
| | | * 车辆异常数 |
| | | */ |
| | | private Integer carErrorNum; |
| | | |
| | | /** |
| | | * 视频设备 |
| | | */ |
| | | private Double videoRate; |
| | | |
| | | /** |
| | | * 视频正常数 |
| | | */ |
| | | private Integer videoNormalNum; |
| | | |
| | | /** |
| | | * 视频异常数 |
| | | */ |
| | | private Integer videoErrorNum; |
| | | |
| | | } |
New file |
| | |
| | | package com.ycl.platform.domain.vo.screen; |
| | | |
| | | import enumeration.Trend; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author gonghl |
| | | * @since 2024/8/7 上午 10:06 |
| | | */ |
| | | @Data |
| | | public class MonitorTotalVO { |
| | | |
| | | /** |
| | | * 设备类型 |
| | | */ |
| | | private String type; |
| | | |
| | | /** |
| | | * 设备总数 |
| | | */ |
| | | private Integer totalNum; |
| | | |
| | | /** |
| | | * 设备总数趋势 |
| | | */ |
| | | private Trend totalTrend; |
| | | |
| | | /** |
| | | * 设备正常数 |
| | | */ |
| | | private Integer normalNum; |
| | | |
| | | /** |
| | | * 设备正常数趋势 |
| | | */ |
| | | private Trend normalTrend; |
| | | |
| | | /** |
| | | * 设备异常数 |
| | | */ |
| | | private Integer errorNum; |
| | | |
| | | /** |
| | | * 设备异常数趋势 |
| | | */ |
| | | private Trend errorTrend; |
| | | |
| | | } |
New file |
| | |
| | | package com.ycl.platform.controller; |
| | | |
| | | import com.ycl.platform.domain.query.DashboardQuery; |
| | | import com.ycl.platform.service.ITMonitorService; |
| | | import com.ycl.platform.service.WorkOrderService; |
| | | import com.ycl.system.service.ISysDeptService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import pojo.AjaxResult; |
| | | |
| | | /** |
| | | * 运维考核大屏 |
| | | * |
| | | * @author gonghl |
| | | * @since 2024/8/6 下午 2:35 |
| | | */ |
| | | |
| | | @RestController |
| | | @RequiredArgsConstructor |
| | | @RequestMapping("/dashboard") |
| | | public class DashboardController { |
| | | |
| | | private final WorkOrderService workOrderService; |
| | | private final ITMonitorService monitorService; |
| | | private final ISysDeptService deptService; |
| | | |
| | | @GetMapping("/department") |
| | | public AjaxResult department() { |
| | | return AjaxResult.success(deptService.dashboard()); |
| | | } |
| | | |
| | | @GetMapping("/workOrder") |
| | | public AjaxResult workOrder(DashboardQuery dashboardQuery) { |
| | | return AjaxResult.success(workOrderService.dashboard(dashboardQuery)); |
| | | } |
| | | |
| | | @GetMapping("/monitor/total") |
| | | public AjaxResult monitorTotal(DashboardQuery dashboardQuery) { |
| | | return AjaxResult.success(monitorService.monitorTotal(dashboardQuery)); |
| | | } |
| | | |
| | | @GetMapping("/monitor/rate") |
| | | public AjaxResult monitorRate(DashboardQuery dashboardQuery) { |
| | | return AjaxResult.success(monitorService.monitorRate(dashboardQuery)); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | private final WorkOrderService workOrderService; |
| | | private final YwPointService ywPointService; |
| | | private final IContractScoreService contractScoreService; |
| | | private final ICheckScoreService checkScoreService; |
| | | |
| | | @GetMapping("/ywUnitList") |
| | | public AjaxResult ywUnitList() { |
| | |
| | | return AjaxResult.success(ywUnitService.ywUnitCount()); |
| | | } |
| | | |
| | | @GetMapping("/checkScore") |
| | | public AjaxResult checkScore() { |
| | | return AjaxResult.success(checkScoreService.home()); |
| | | } |
| | | |
| | | @GetMapping("/calculate") |
| | | public AjaxResult calculate() { |
| | | return AjaxResult.success(contractScoreService.calculate()); |
| | |
| | | void saveBatch(List<CheckScore> scoreList); |
| | | |
| | | List<CheckScore> selectCheckScoreMap(CheckScore checkScore); |
| | | |
| | | /** |
| | | * 首页考核预警 |
| | | * @return 数据 |
| | | */ |
| | | List<Map<String, Object>> home(); |
| | | } |
| | |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.ycl.platform.domain.entity.TMonitor; |
| | | import com.ycl.platform.domain.query.DashboardQuery; |
| | | import com.ycl.platform.domain.query.HomeQuery; |
| | | import com.ycl.platform.domain.vo.TMonitorVO; |
| | | import com.ycl.platform.domain.vo.screen.MonitorRateVO; |
| | | import com.ycl.platform.domain.vo.screen.MonitorTotalVO; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | List<Map<String, Object>> home(HomeQuery monitorQuery); |
| | | |
| | | List<TMonitorVO> selectListByIds(List<String> list); |
| | | |
| | | /** |
| | | * 大屏设备总数 |
| | | * @param dashboardQuery 查询条件 |
| | | * @return 数据 |
| | | */ |
| | | List<MonitorTotalVO> monitorTotal(DashboardQuery dashboardQuery); |
| | | |
| | | /** |
| | | * 大屏设备正常率 |
| | | * @return 数据 |
| | | */ |
| | | List<MonitorRateVO> monitorRate(DashboardQuery dashboardQuery); |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.ycl.platform.domain.entity.WorkOrder; |
| | | import com.ycl.platform.domain.query.DistributeWorkOrderQuery; |
| | | import com.ycl.platform.domain.query.HomeQuery; |
| | | import com.ycl.platform.domain.query.ScreenQuery; |
| | | import com.ycl.platform.domain.query.WorkOrderQuery; |
| | | import com.ycl.platform.domain.query.*; |
| | | import com.ycl.platform.domain.vo.WorkOrderVO; |
| | | import com.ycl.platform.domain.vo.YwPointJobVO; |
| | | import com.ycl.platform.domain.vo.screen.ScreenWorkOrderVO; |
| | |
| | | * @return 数据 |
| | | */ |
| | | List<Map<String, Object>> home(HomeQuery monitorQuery); |
| | | |
| | | /** |
| | | * 大屏工单总数 |
| | | * @param dashboardQuery 查询条件 |
| | | * @return 数据 |
| | | */ |
| | | Map<String, Object> workOrderTotal(DashboardQuery dashboardQuery); |
| | | |
| | | /** |
| | | * 大屏工单分区 |
| | | * @param dashboardQuery 查询条件 |
| | | * @return 数据 |
| | | */ |
| | | Map<String, Object> workOrderRegion(DashboardQuery dashboardQuery); |
| | | } |
| | |
| | | List<CheckScore> page(CheckScore checkScore); |
| | | |
| | | void exportIndex(HttpServletResponse response,CheckScore checkScore) throws IOException; |
| | | |
| | | /** |
| | | * 首页考核预警 |
| | | * @return 数据 |
| | | */ |
| | | List<Map<String, Object>> home(); |
| | | // /** |
| | | // * 新增考核积分明细 |
| | | // * |
| | |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ycl.platform.domain.entity.TMonitor; |
| | | import com.ycl.platform.domain.query.DashboardQuery; |
| | | import com.ycl.platform.domain.query.HomeQuery; |
| | | import com.ycl.platform.domain.vo.TMonitorVO; |
| | | import com.ycl.platform.domain.vo.screen.MonitorRateVO; |
| | | import com.ycl.platform.domain.vo.screen.MonitorTotalVO; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | * @return 数据 |
| | | */ |
| | | Map<String, Object> home(HomeQuery monitorQuery); |
| | | |
| | | /** |
| | | * 大屏设备数据 |
| | | * @param dashboardQuery 查询条件 |
| | | * @return 数据 |
| | | */ |
| | | List<MonitorTotalVO> monitorTotal(DashboardQuery dashboardQuery); |
| | | |
| | | /** |
| | | * 大屏设备正常率 |
| | | * @return 数据 |
| | | */ |
| | | List<MonitorRateVO> monitorRate(DashboardQuery dashboardQuery); |
| | | |
| | | } |
| | |
| | | package com.ycl.platform.service; |
| | | |
| | | import com.ycl.platform.domain.entity.WorkOrder; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ycl.platform.domain.entity.WorkOrder; |
| | | import com.ycl.platform.domain.form.*; |
| | | import com.ycl.platform.domain.query.DistributeWorkOrderQuery; |
| | | import com.ycl.platform.domain.query.HomeQuery; |
| | | import com.ycl.platform.domain.query.ScreenQuery; |
| | | import com.ycl.platform.domain.query.*; |
| | | import com.ycl.platform.domain.vo.DistributeWorkOrderVO; |
| | | import com.ycl.system.Result; |
| | | import com.ycl.platform.domain.query.WorkOrderQuery; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | * @return 数据 |
| | | */ |
| | | Map<String, Object> home(HomeQuery monitorQuery); |
| | | |
| | | /** |
| | | * 大屏工单 |
| | | * @param dashboardQuery 查询条件 |
| | | * @return 数据 |
| | | */ |
| | | Map<String, Object> dashboard(DashboardQuery dashboardQuery); |
| | | |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> home() { |
| | | return baseMapper.home(); |
| | | } |
| | | |
| | | // /** |
| | | // * 新增考核积分 |
| | |
| | | import annotation.DataScope; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ycl.platform.domain.entity.TMonitor; |
| | | import com.ycl.platform.domain.query.DashboardQuery; |
| | | import com.ycl.platform.domain.query.HomeQuery; |
| | | import com.ycl.platform.domain.vo.TMonitorVO; |
| | | import com.ycl.platform.domain.vo.screen.MonitorRateVO; |
| | | import com.ycl.platform.domain.vo.screen.MonitorTotalVO; |
| | | import com.ycl.platform.mapper.TMonitorMapper; |
| | | import com.ycl.platform.service.ITMonitorService; |
| | | import com.ycl.system.service.ISysConfigService; |
| | | import com.ycl.utils.StringUtils; |
| | | import com.ycl.utils.redis.RedisCache; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private TMonitorMapper tMonitorMapper; |
| | | @Autowired |
| | | private ISysConfigService configService; |
| | | @Autowired |
| | | private RedisCache redisCache; |
| | | |
| | | /** |
| | | * 查询设备资产 |
| | |
| | | } |
| | | return dataMap; |
| | | } |
| | | |
| | | @Override |
| | | public List<MonitorTotalVO> monitorTotal(DashboardQuery dashboardQuery) { |
| | | List<MonitorTotalVO> list = baseMapper.monitorTotal(dashboardQuery); |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public List<MonitorRateVO> monitorRate(DashboardQuery dashboardQuery) { |
| | | return baseMapper.monitorRate(dashboardQuery); |
| | | } |
| | | } |
| | |
| | | import com.ycl.exception.ServiceException; |
| | | import com.ycl.platform.domain.entity.*; |
| | | import com.ycl.platform.domain.form.*; |
| | | import com.ycl.platform.domain.query.DistributeWorkOrderQuery; |
| | | import com.ycl.platform.domain.query.HomeQuery; |
| | | import com.ycl.platform.domain.query.ScreenQuery; |
| | | import com.ycl.platform.domain.query.WorkOrderQuery; |
| | | import com.ycl.platform.domain.query.*; |
| | | import com.ycl.platform.domain.vo.DistributeWorkOrderVO; |
| | | import com.ycl.platform.domain.vo.WorkOrderVO; |
| | | import com.ycl.platform.domain.vo.WorkOrderYwConditionRecordVO; |
| | |
| | | dataMap.put("pending", data3); |
| | | return dataMap; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> dashboard(DashboardQuery dashboardQuery) { |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("workOrderTotal", baseMapper.workOrderTotal(dashboardQuery)); |
| | | map.put("workOrderRegion", baseMapper.workOrderRegion(dashboardQuery)); |
| | | return map; |
| | | } |
| | | } |
| | |
| | | package com.ycl.system.mapper; |
| | | |
| | | import com.ycl.platform.base.Cascader; |
| | | import com.ycl.platform.domain.vo.screen.DeptAreaVO; |
| | | import com.ycl.system.entity.SysDept; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | |
| | | * @return |
| | | */ |
| | | List<Long> selectByParentId(@Param("id") Long deptId); |
| | | |
| | | /** |
| | | * 大屏地区 |
| | | * @return 地区 |
| | | */ |
| | | List<DeptAreaVO> dashboard(); |
| | | } |
| | |
| | | package com.ycl.system.service; |
| | | |
| | | import com.ycl.platform.domain.vo.screen.DeptAreaVO; |
| | | import com.ycl.system.Result; |
| | | import com.ycl.system.domain.TreeSelect; |
| | | import com.ycl.system.entity.SysDept; |
| | |
| | | * @return |
| | | */ |
| | | Result cascader(); |
| | | |
| | | /** |
| | | * 大屏地区 |
| | | * @return 地区 |
| | | */ |
| | | List<DeptAreaVO> dashboard(); |
| | | } |
| | |
| | | import com.ycl.exception.ServiceException; |
| | | import com.ycl.platform.base.BaseSelect; |
| | | import com.ycl.platform.base.Cascader; |
| | | import com.ycl.platform.domain.vo.screen.DeptAreaVO; |
| | | import com.ycl.system.Result; |
| | | import com.ycl.system.domain.TreeSelect; |
| | | import com.ycl.system.entity.SysDept; |
| | |
| | | { |
| | | return getChildList(list, t).size() > 0; |
| | | } |
| | | |
| | | @Override |
| | | public List<DeptAreaVO> dashboard() { |
| | | return deptMapper.dashboard(); |
| | | } |
| | | } |
| | |
| | | level DESC |
| | | </select> |
| | | |
| | | <select id="dashboard" resultType="com.ycl.platform.domain.vo.screen.DeptAreaVO"> |
| | | SELECT dept_id, area FROM sys_dept WHERE status = '0' AND del_flag = 0 AND area IS NOT NULL |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | AND DATE_FORMAT(tcs.create_time, '%Y-%m') BETWEEN DATE_FORMAT(#{startDate}, '%Y-%m') AND DATE_FORMAT(#{endDate}, '%Y-%m') |
| | | </select> |
| | | |
| | | <select id="home" resultType="java.util.Map"> |
| | | SELECT |
| | | DATE_FORMAT(cs.create_time, '%Y-%m-%d %h:%i:%s') AS createTime, |
| | | d.area, |
| | | CASE WHEN cs.examine_tag = '0' THEN '省厅' WHEN cs.examine_tag = '1' THEN '市局' WHEN cs.examine_tag = '2' THEN '' END AS examineTag, |
| | | ct.template_name AS templateName, |
| | | cs.score |
| | | FROM |
| | | t_check_score cs |
| | | LEFT JOIN t_check_template ct ON cs.template_id = ct.id |
| | | LEFT JOIN sys_dept d ON cs.dept_id = d.dept_id |
| | | WHERE cs.score > ct.alarm_score |
| | | ORDER BY cs.create_time DESC |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | <if test="dateRange != null and dateRange.size > 0"> |
| | | AND DATE_FORMAT(w.create_time, '%Y-%m') BETWEEN #{dateRange[0]} AND #{dateRange[1]} |
| | | </if> |
| | | GROUP BY months |
| | | ORDER BY months |
| | | </select> |
| | | |
| | | <select id="monitorTotal" resultType="com.ycl.platform.domain.vo.screen.MonitorTotalVO"> |
| | | SELECT |
| | | '视频' as type, |
| | | COUNT(p1.id) AS totalNum, |
| | | COUNT(p2.id) AS errorNum, |
| | | COUNT(p1.id) - COUNT(p2.id) AS normalNum |
| | | FROM t_monitor |
| | | LEFT JOIN t_yw_point p1 ON t_monitor.serial_number = p1.serial_number <if test="dataScope == 1"> AND p1.province_tag = 'province' </if> |
| | | LEFT JOIN t_yw_point p2 ON t_monitor.serial_number = p2.serial_number AND p2.recovery = 1 <if test="dataScope == 1"> AND p2.province_tag = 'province' </if> |
| | | WHERE INSTR(camera_fun_type, 1) |
| | | <if test="deptId != null"> AND p1.dept_id = #{deptId} AND p2.dept_id = #{deptId} </if> |
| | | UNION ALL |
| | | SELECT |
| | | '车辆' as type, |
| | | COUNT(p1.id) AS totalNum, |
| | | COUNT(p2.id) AS errorNum, |
| | | COUNT(p1.id) - COUNT(p2.id) AS normalNum |
| | | FROM t_monitor |
| | | LEFT JOIN t_yw_point p1 ON t_monitor.serial_number = p1.serial_number <if test="dataScope == 1"> AND p1.province_tag = 'province' </if> |
| | | LEFT JOIN t_yw_point p2 ON t_monitor.serial_number = p2.serial_number AND p2.recovery = 1 <if test="dataScope == 1"> AND p2.province_tag = 'province' </if> |
| | | WHERE INSTR(camera_fun_type, 2) |
| | | <if test="deptId != null"> AND p1.dept_id = #{deptId} AND p2.dept_id = #{deptId} </if> |
| | | UNION ALL |
| | | SELECT |
| | | '人脸' as type, |
| | | COUNT(p1.id) AS totalNum, |
| | | COUNT(p2.id) AS errorNum, |
| | | COUNT(p1.id) - COUNT(p2.id) AS normalNum |
| | | FROM t_monitor |
| | | LEFT JOIN t_yw_point p1 ON t_monitor.serial_number = p1.serial_number <if test="dataScope == 1"> AND p1.province_tag = 'province' </if> |
| | | LEFT JOIN t_yw_point p2 ON t_monitor.serial_number = p2.serial_number AND p2.recovery = 1 <if test="dataScope == 1"> AND p2.province_tag = 'province' </if> |
| | | WHERE INSTR(camera_fun_type, 3) |
| | | <if test="deptId != null"> AND p1.dept_id = #{deptId} AND p2.dept_id = #{deptId} </if> |
| | | </select> |
| | | |
| | | <select id="monitorRate" resultType="com.ycl.platform.domain.vo.screen.MonitorRateVO"> |
| | | SELECT |
| | | * |
| | | FROM |
| | | -- 人脸设备 |
| | | ( |
| | | SELECT |
| | | d.area, |
| | | IFNULL(ROUND((COUNT(m.id) - COUNT(m2.id)) / COUNT(m.id) * 100, 2), 0) AS faceRate, |
| | | COUNT(m.id) - COUNT(m2.id) AS faceNormalNum, |
| | | COUNT(m2.id) AS faceErrorNum |
| | | FROM |
| | | sys_dept d |
| | | LEFT JOIN t_yw_point p ON p.dept_id = d.dept_id AND p.deleted = 0 <if test="dataScope == 1"> AND p.province_tag = 'province' </if> |
| | | LEFT JOIN t_yw_point p2 ON p2.dept_id = d.dept_id AND p2.deleted = 0 AND p2.recovery = 1 <if test="dataScope == 1"> AND p2.province_tag = 'province' </if> |
| | | LEFT JOIN t_monitor m ON m.serial_number = p.serial_number AND INSTR(m.camera_fun_type, 1) |
| | | LEFT JOIN t_monitor m2 ON m2.serial_number = p2.serial_number AND INSTR(m2.camera_fun_type, 1) |
| | | WHERE d.del_flag = 0 AND d.area IS NOT NULL |
| | | GROUP BY d.area, d.dept_id |
| | | ORDER BY d.dept_id |
| | | ) a |
| | | INNER JOIN |
| | | -- 车辆设备 |
| | | ( |
| | | SELECT |
| | | d.area, |
| | | IFNULL(ROUND((COUNT(m.id) - COUNT(m2.id)) / COUNT(m.id) * 100, 2), 0) AS carRate, |
| | | COUNT(m.id) - COUNT(m2.id) AS carNormalNum, |
| | | COUNT(m2.id) AS carErrorNum |
| | | FROM |
| | | sys_dept d |
| | | LEFT JOIN t_yw_point p ON p.dept_id = d.dept_id AND p.deleted = 0 <if test="dataScope == 1"> AND p.province_tag = 'province' </if> |
| | | LEFT JOIN t_yw_point p2 ON p2.dept_id = d.dept_id AND p2.deleted = 0 AND p2.recovery = 1 <if test="dataScope == 1"> AND p2.province_tag = 'province' </if> |
| | | LEFT JOIN t_monitor m ON m.serial_number = p.serial_number AND INSTR(m.camera_fun_type, 2) |
| | | LEFT JOIN t_monitor m2 ON m2.serial_number = p2.serial_number AND INSTR(m2.camera_fun_type, 2) |
| | | WHERE d.del_flag = 0 AND d.area IS NOT NULL |
| | | GROUP BY d.area, d.dept_id |
| | | ORDER BY d.dept_id |
| | | ) b ON a.area = b.area |
| | | INNER JOIN |
| | | -- 视频设备 |
| | | ( |
| | | SELECT |
| | | d.area, |
| | | IFNULL(ROUND((COUNT(m.id) - COUNT(m2.id)) / COUNT(m.id) * 100, 2), 0) AS videoRate, |
| | | COUNT(m.id) - COUNT(m2.id) AS videoNormalNum, |
| | | COUNT(m2.id) AS videoErrorNum |
| | | FROM |
| | | sys_dept d |
| | | LEFT JOIN t_yw_point p ON p.dept_id = d.dept_id AND p.deleted = 0 <if test="dataScope == 1"> AND p.province_tag = 'province' </if> |
| | | LEFT JOIN t_yw_point p2 ON p2.dept_id = d.dept_id AND p2.deleted = 0 AND p2.recovery = 1 <if test="dataScope == 1"> AND p2.province_tag = 'province' </if> |
| | | LEFT JOIN t_monitor m ON m.serial_number = p.serial_number AND INSTR(m.camera_fun_type, 3) |
| | | LEFT JOIN t_monitor m2 ON m2.serial_number = p2.serial_number AND INSTR(m2.camera_fun_type, 3) |
| | | WHERE d.del_flag = 0 AND d.area IS NOT NULL |
| | | GROUP BY d.area, d.dept_id |
| | | ORDER BY d.dept_id |
| | | ) c ON a.area = c.area |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="workOrderTotal" resultType="java.util.Map"> |
| | | SELECT |
| | | COUNT(*) AS totalNum, |
| | | COUNT(IF(status = 'DISTRIBUTED', 1, NULL)) + COUNT(IF(status = 'AUDITING_FAIL', 1, NULL)) + COUNT(IF(status = 'WAIT_DISTRIBUTE', 1, NULL)) AS todoNum, |
| | | COUNT(IF(status = 'YW_HANDLE', 1, NULL)) + COUNT(IF(status = 'AUDITING_SUCCESS', 1, NULL)) + COUNT(IF(status = 'AUDITING', 1, NULL)) AS doneNum |
| | | FROM t_work_order w |
| | | WHERE w.deleted = 0 |
| | | </select> |
| | | |
| | | <select id="workOrderRegion" resultType="java.util.Map"> |
| | | SELECT * FROM t_work_order limit 1 |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | |
| | | <select id="home" resultType="com.ycl.platform.domain.entity.YwPoint"> |
| | | <![CDATA[ |
| | | SELECT id, point_name, start_time, end_time, status |
| | | SELECT t_yw_point.id, point_name, start_time, end_time, status, unit_name AS remark |
| | | FROM t_yw_point |
| | | WHERE |
| | | deleted = 0 |
| | | LEFT JOIN t_yw_unit ON t_yw_unit.id = t_yw_point.unit_id AND t_yw_point.deleted = 0 |
| | | WHERE t_yw_point.deleted = 0 |
| | | AND TIMESTAMPDIFF(MONTH, NOW(), end_time) <= (SELECT config_value FROM sys_config WHERE config_key = 'operation.and.maintenance.expiration.warning.time') |
| | | ORDER BY end_time |
| | | ]]> |