Merge remote-tracking branch 'origin/master'
New file |
| | |
| | | package com.ycl.platform.domain.query; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author gonghl |
| | | * @since 2024/8/1 下午 6:08 |
| | | */ |
| | | |
| | | @Data |
| | | public class HomeQuery { |
| | | |
| | | /** |
| | | * 单位id |
| | | */ |
| | | private Integer unitId; |
| | | |
| | | /** |
| | | * 日期范围 |
| | | */ |
| | | private List<Date> dateRange; |
| | | |
| | | /** |
| | | * 日期类型 |
| | | */ |
| | | private String dateType; |
| | | |
| | | } |
New file |
| | |
| | | package com.ycl.platform.controller; |
| | | |
| | | import com.ycl.platform.domain.query.HomeQuery; |
| | | import com.ycl.platform.service.ITMonitorService; |
| | | import com.ycl.platform.service.WorkOrderService; |
| | | import com.ycl.platform.service.YwUnitService; |
| | | 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/1 下午 5:41 |
| | | */ |
| | | |
| | | @RestController |
| | | @RequiredArgsConstructor |
| | | @RequestMapping("/home") |
| | | public class HomeController { |
| | | |
| | | private final YwUnitService ywUnitService; |
| | | private final ITMonitorService tMonitorService; |
| | | private final WorkOrderService workOrderService; |
| | | |
| | | @GetMapping("/ywUnitList") |
| | | public AjaxResult ywUnitList() { |
| | | return AjaxResult.success(ywUnitService.all()); |
| | | } |
| | | |
| | | @GetMapping("/monitor") |
| | | public AjaxResult monitor(HomeQuery monitorQuery) { |
| | | return AjaxResult.success(tMonitorService.home(monitorQuery)); |
| | | } |
| | | |
| | | @GetMapping("/workOrder") |
| | | public AjaxResult workOrder(HomeQuery monitorQuery) { |
| | | return AjaxResult.success(workOrderService.home(monitorQuery)); |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.ycl.platform.domain.entity.TMonitor; |
| | | import com.ycl.platform.domain.query.HomeQuery; |
| | | import com.ycl.platform.domain.vo.TMonitorVO; |
| | | |
| | | import java.util.List; |
| | |
| | | */ |
| | | Map<String, String> getVideoCount(TMonitor tMonitor); |
| | | |
| | | /** |
| | | * 获取恢复异常设备 |
| | | * @param time 时间 |
| | | * @return 数据 |
| | | */ |
| | | Map<String, String> recoveryException(String time); |
| | | |
| | | /** |
| | |
| | | * @return 设备 |
| | | */ |
| | | List<TMonitorVO> selectRecoveryMonitor(String time); |
| | | |
| | | /** |
| | | * 首页折线图 |
| | | * @param monitorQuery 查询条件 |
| | | * @return 数据 |
| | | */ |
| | | List<Map<String, Object>> home(HomeQuery monitorQuery); |
| | | } |
| | |
| | | package com.ycl.platform.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.ycl.platform.domain.entity.WorkOrder; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | 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.vo.WorkOrderVO; |
| | | import com.ycl.platform.domain.form.WorkOrderForm; |
| | | import java.util.List; |
| | | |
| | | import com.ycl.platform.domain.vo.WorkOrderYwConditionRecordVO; |
| | | import com.ycl.platform.domain.vo.YwPointJobVO; |
| | | import com.ycl.platform.domain.vo.screen.ScreenWorkOrderVO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 工单 Mapper 接口 |
| | |
| | | * @return |
| | | */ |
| | | ScreenWorkOrderVO screenWorkOrder(@Param("query") ScreenQuery query); |
| | | |
| | | /** |
| | | * 首页统计数据 |
| | | * @param monitorQuery 查询条件 |
| | | * @return 数据 |
| | | */ |
| | | List<Map<String, Object>> home(HomeQuery monitorQuery); |
| | | } |
| | |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ycl.platform.domain.entity.TMonitor; |
| | | import com.ycl.platform.domain.query.HomeQuery; |
| | | import com.ycl.platform.domain.vo.TMonitorVO; |
| | | |
| | | import java.util.List; |
| | |
| | | */ |
| | | Map<String, String> getVideoCount(TMonitor tMonitor); |
| | | |
| | | /** |
| | | * 获取异常恢复视频设备统计数 |
| | | * @return 数据 |
| | | */ |
| | | Map<String, String> recoveryException(); |
| | | |
| | | /** |
| | | * 获取首页设备折线图 |
| | | * @param monitorQuery 查询条件 |
| | | * @return 数据 |
| | | */ |
| | | Map<String, Object> home(HomeQuery monitorQuery); |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | 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.vo.DistributeWorkOrderVO; |
| | | import com.ycl.system.Result; |
| | | import com.ycl.platform.domain.query.WorkOrderQuery; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 工单 服务类 |
| | |
| | | |
| | | /** |
| | | * 批量下发 |
| | | * @param ids id |
| | | * @param query 条件 |
| | | * @return 结果 |
| | | */ |
| | | Result selectedIdsDistribute(DistributeWorkOrderQuery query); |
| | |
| | | * @return |
| | | */ |
| | | Result screenWorkOrder(ScreenQuery query); |
| | | |
| | | /** |
| | | * 首页折线图 |
| | | * @param monitorQuery 查询条件 |
| | | * @return 数据 |
| | | */ |
| | | Map<String, Object> home(HomeQuery monitorQuery); |
| | | } |
| | |
| | | package com.ycl.platform.service.impl; |
| | | |
| | | import annotation.DataScope; |
| | | import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ycl.platform.domain.dto.CheckScoreDTO; |
| | | import com.ycl.platform.domain.dto.CheckScoreIndexDTO; |
| | |
| | | |
| | | // 获取数据日期时间 |
| | | Calendar calendar = Calendar.getInstance(); |
| | | getCheckScore(checkScore, calendar); |
| | | |
| | | // 一号查询之前的数据 |
| | | if (LocalDateTime.now().getDayOfMonth() == 1) { calendar.add(Calendar.DAY_OF_MONTH, -1); } |
| | | |
| | | List<CheckScore> checkScores = scoreMapper.selectCheckScoreMap(checkScore); |
| | | // 如果数据为空,则查询之前的数据 |
| | | if (checkScores.isEmpty()) { |
| | | CheckScore one = new LambdaQueryChainWrapper<>(baseMapper).select(CheckScore::getCreateTime).last("order by create_time desc limit 1").one(); |
| | | if (Objects.nonNull(one)) { |
| | | calendar.setTime(one.getCreateTime()); |
| | | getCheckScore(checkScore, calendar); |
| | | checkScores = scoreMapper.selectCheckScoreMap(checkScore); |
| | | } |
| | | } |
| | | return checkScores.stream().collect(Collectors.groupingBy(CheckScore::getDeptId)); |
| | | } |
| | | |
| | | private void getCheckScore(CheckScore checkScore, Calendar calendar) |
| | | { |
| | | // 0 省厅月度 1 市局月度 2 省厅季度 3 市局季度 |
| | | switch (checkScore.getExamineTag()) { |
| | | case 0, 1: |
| | |
| | | checkScore.setExamineTag(checkScore.getExamineTag() == 2 ? 0 : 1); |
| | | break; |
| | | } |
| | | return scoreMapper.selectCheckScoreMap(checkScore).stream().collect(Collectors.groupingBy(CheckScore::getDeptId)); |
| | | } |
| | | |
| | | /** |
| | |
| | | import annotation.DataScope; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ycl.platform.domain.entity.TMonitor; |
| | | import com.ycl.platform.domain.query.HomeQuery; |
| | | import com.ycl.platform.domain.vo.TMonitorVO; |
| | | import com.ycl.platform.mapper.TMonitorMapper; |
| | | import com.ycl.platform.service.ITMonitorService; |
| | | import com.ycl.system.service.ISysConfigService; |
| | | import com.ycl.utils.StringUtils; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | |
| | | String time = configService.selectConfigByKey("abnormal.equipment.continuous.attention.time"); |
| | | return tMonitorMapper.recoveryException(time); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> home(HomeQuery monitorQuery) { |
| | | Map<String, Object> dataMap = new HashMap<>(); |
| | | Map<String, Object> monthMap1 = new HashMap<>(); |
| | | Map<String, Object> monthMap2 = new HashMap<>(); |
| | | List<Map<String, Object>> home = baseMapper.home(monitorQuery); |
| | | if (ObjectUtils.isNotEmpty(home)) { |
| | | for (Map<String, Object> map : home) { |
| | | monthMap1.put(map.get("months").toString(), map.get("num1")); |
| | | monthMap2.put(map.get("months").toString(), map.get("num2")); |
| | | } |
| | | dataMap.put("name", home.get(0).get("name")); |
| | | dataMap.put("state", monthMap1); |
| | | dataMap.put("state2", monthMap2); |
| | | } |
| | | return dataMap; |
| | | } |
| | | } |
| | |
| | | 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.vo.DistributeWorkOrderVO; |
| | | import com.ycl.platform.domain.vo.WorkOrderVO; |
| | | import com.ycl.platform.domain.vo.WorkOrderYwConditionRecordVO; |
| | | import com.ycl.platform.domain.vo.screen.ScreenWorkOrderVO; |
| | | import com.ycl.platform.mapper.*; |
| | | import com.ycl.platform.mapper.WorkOrderAuditingRecordMapper; |
| | | import com.ycl.platform.mapper.WorkOrderDistributeRecordMapper; |
| | | import com.ycl.platform.mapper.WorkOrderMapper; |
| | | import com.ycl.platform.mapper.WorkOrderYwConditionRecordMapper; |
| | | import com.ycl.platform.service.NotifyService; |
| | | import com.ycl.platform.service.WorkOrderAuditingRecordService; |
| | | import com.ycl.platform.service.WorkOrderService; |
| | |
| | | import enumeration.general.UrgentLevelEnum; |
| | | import enumeration.general.WorkOrderDistributeWayEnum; |
| | | import enumeration.general.WorkOrderStatusEnum; |
| | | import enumeration.general.*; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneId; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | ScreenWorkOrderVO screen = baseMapper.screenWorkOrder(query); |
| | | return Result.ok().data(screen); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> home(HomeQuery monitorQuery) { |
| | | Map<String, Object> dataMap = new HashMap<>(); |
| | | Map<String, Object> data1 = new HashMap<>(); |
| | | Map<String, Object> data2 = new HashMap<>(); |
| | | Map<String, Object> data3 = new HashMap<>(); |
| | | List<Map<String, Object>> home = baseMapper.home(monitorQuery); |
| | | if (ObjectUtils.isNotEmpty(home)) { |
| | | for (Map<String, Object> map : home) { |
| | | if (Objects.nonNull(map.get("dateType")) && StringUtils.hasText(map.get("dateType").toString())) { |
| | | data1.put(map.get("dateType").toString(), map.get("num1")); |
| | | data2.put(map.get("dateType").toString(), map.get("num2")); |
| | | data3.put(map.get("dateType").toString(), map.get("num3")); |
| | | } |
| | | } |
| | | dataMap.put("name", home.get(0).get("name")); |
| | | } |
| | | dataMap.put("complete", data1); |
| | | dataMap.put("waiting", data2); |
| | | dataMap.put("pending", data3); |
| | | return dataMap; |
| | | } |
| | | } |
| | |
| | | ]]> |
| | | </select> |
| | | |
| | | <select id="home" resultType="java.util.Map"> |
| | | SELECT |
| | | u.unit_name AS name, |
| | | CONCAT(MONTH(w.create_time), '月') AS months, |
| | | COUNT(w.id) AS num1, |
| | | COUNT(m.id) - COUNT(w.id) AS num2 |
| | | FROM |
| | | t_monitor m |
| | | LEFT JOIN t_yw_point p ON m.serial_number = p.serial_number |
| | | LEFT JOIN t_yw_unit u ON p.unit_id = u.id |
| | | LEFT JOIN t_work_order w ON p.id = w.point_id |
| | | WHERE u.id = #{unitId} AND MONTH(w.create_time) IS NOT NULL |
| | | <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> |
| | | |
| | | </mapper> |
| | |
| | | t_work_order |
| | | </select> |
| | | |
| | | <select id="home" resultType="java.util.Map"> |
| | | <if test="dateType == 'month'"> |
| | | -- 月工单数 |
| | | SELECT |
| | | u.unit_name AS name, |
| | | CONCAT(MONTH(w.create_time), '月') AS dateType, |
| | | COUNT(IF(status = 'AUDITING_SUCCESS', 1, NULL)) AS num1, |
| | | COUNT(IF(status = 'DISTRIBUTED', 1, NULL)) AS num2, |
| | | COUNT(IF(status = 'YW_HANDLE', 1, NULL)) AS num3 |
| | | FROM t_work_order w |
| | | LEFT JOIN t_yw_unit u ON w.unit_id = u.id |
| | | WHERE DATE_FORMAT(w.create_time, '%Y') = DATE_FORMAT(NOW(), '%Y') |
| | | AND w.deleted = 0 AND unit_id = #{unitId} |
| | | GROUP BY dateType |
| | | </if> |
| | | |
| | | <if test="dateType == 'week'"> |
| | | -- 周工单数 |
| | | SELECT |
| | | u.unit_name AS name, |
| | | CONCAT('周', WEEKDAY(w.create_time)) AS dateType, |
| | | COUNT(IF(status = 'AUDITING_SUCCESS', 1, NULL)) AS num1, |
| | | COUNT(IF(status = 'DISTRIBUTED', 1, NULL)) AS num2, |
| | | COUNT(IF(status = 'YW_HANDLE', 1, NULL)) AS num3 |
| | | FROM t_work_order w |
| | | LEFT JOIN t_yw_unit u ON w.unit_id = u.id |
| | | WHERE |
| | | w.create_time BETWEEN DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) AND DATE_ADD(CURDATE(), INTERVAL (6 - WEEKDAY(CURDATE())) DAY) |
| | | AND w.deleted = 0 AND unit_id = #{unitId} |
| | | GROUP BY dateType |
| | | </if> |
| | | |
| | | <if test="dateType == 'day'"> |
| | | -- 日工单数 |
| | | SELECT |
| | | u.unit_name AS name, |
| | | DATE_FORMAT(w.create_time, '%d') AS dateType, |
| | | COUNT(IF(status = 'AUDITING_SUCCESS', 1, NULL)) AS num1, |
| | | COUNT(IF(status = 'DISTRIBUTED', 1, NULL)) AS num2, |
| | | COUNT(IF(status = 'YW_HANDLE', 1, NULL)) AS num3 |
| | | FROM t_work_order w |
| | | LEFT JOIN t_yw_unit u ON w.unit_id = u.id |
| | | WHERE |
| | | DATE_FORMAT(w.create_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND LAST_DAY(CURDATE()) |
| | | AND w.deleted = 0 AND unit_id = #{unitId} |
| | | GROUP BY dateType |
| | | </if> |
| | | </select> |
| | | |
| | | </mapper> |