From faae138e99fcc11cef767a1dd956093c1979db9c Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Sat, 8 Mar 2025 17:37:49 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=201=E3=80=81=E4=BF=AE=E6=94=B9=E9=A2=84?= =?UTF-8?q?=E8=AD=A6=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessAlertStatisticsController.java | 7 + .../business/domain/BusinessAlert.java | 9 +- .../business/domain/bo/BusinessAlertBo.java | 6 +- .../business/mapper/BusinessAlertMapper.java | 8 + .../BusinessAlertStatisticsService.java | 2 + .../service/IBusinessAlertService.java | 1 + .../impl/BusinessAlertServiceImpl.java | 23 +++ .../BusinessAlertStatisticsServiceImpl.java | 39 +++- .../mapper/business/BusinessAlertMapper.xml | 189 ++++++++---------- 9 files changed, 165 insertions(+), 119 deletions(-) diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java index 80c6e4d..f5b9be9 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java @@ -26,6 +26,13 @@ public class BusinessAlertStatisticsController extends BaseController { private final BusinessAlertStatisticsService statisticsService; + @Operation(summary="panel看板数据", description="panel看板数据") + @GetMapping(value = "/panel/count") + public R> countPanelAlert(BusinessAlertBo businessAlertBo) { + return R.ok(statisticsService.countPanelAlert(businessAlertBo)); + } + + //饼图显示每个月根据部门 @Operation(summary="根据月份显示预警个数", description="根据月份显示预警个数") diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java index 4dbf8ab..cbe19b0 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java @@ -1,18 +1,15 @@ package org.dromara.business.domain; -import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; -import org.dromara.business.handler.AlertTypeHandler; -import org.dromara.common.core.enums.BusinessStatusEnum; -import org.dromara.common.mybatis.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import lombok.Data; import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.translation.annotation.Translation; import org.dromara.common.translation.constant.TransConstant; -import java.util.Date; - import java.io.Serial; +import java.util.Date; import java.util.List; /** diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java index 7e4c329..9ce7dbf 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java @@ -19,9 +19,8 @@ import java.util.List; * @date 2025-02-27 */ @Data -@EqualsAndHashCode(callSuper = true) @AutoMapper(target = BusinessAlert.class, reverseConvertGenerate = false) -public class BusinessAlertBo extends BaseEntity { +public class BusinessAlertBo { /** * 任务轮id */ @@ -215,4 +214,7 @@ public class BusinessAlertBo extends BaseEntity { List dateList; + private String createTime; + + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java index c814862..5737e0e 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java @@ -29,6 +29,8 @@ public interface BusinessAlertMapper extends BaseMapperPlus pageAlertTodo(Page page, QueryWrapper ew); + Page pageBusinessAlertCancel(Page build, QueryWrapper ew); + @DataPermission( @DataColumn(key = "deptName", value = "ba.dept_id") ) @@ -53,4 +55,10 @@ public interface BusinessAlertMapper extends BaseMapperPlus> countAlertCompare(@Param("param")BusinessAlertBo businessAlertBo); + + @DataPermission( + @DataColumn(key = "deptName", value = "ba.dept_id") + ) + List> countPanelAlert(BusinessAlertBo businessAlertBo); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java b/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java index 5bd906e..67f47f5 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/BusinessAlertStatisticsService.java @@ -17,4 +17,6 @@ public interface BusinessAlertStatisticsService { List countDepartAlertStatus(BusinessAlertBo businessAlertBo); List> countAlertCompare(BusinessAlertBo businessAlertBo); + + List countPanelAlert(BusinessAlertBo businessAlertBo); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java index 731b9cf..351b244 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java @@ -22,6 +22,7 @@ public interface IBusinessAlertService { TableDataInfo pageBusinessAlertAll(BusinessAlertBo bo, PageQuery pageQuery); + TableDataInfo pageBusinessAlertCancel(BusinessAlertBo bo, PageQuery pageQuery); /** * 新增预警任务 * diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index ceb8b1a..f27fb7c 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -127,6 +127,23 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return TableDataInfo.build(page); } + /** + * 查询已忽略预警 + * @param bo + * @param pageQuery + * @return + */ + @Override + public TableDataInfo pageBusinessAlertCancel(BusinessAlertBo bo, PageQuery pageQuery) { + bo.setHandleType(BusinessStatusEnum.CANCEL.getStatus()); + QueryWrapper wrapper = buildQueryWrapper(bo); + + Page page = this.baseMapper.pageBusinessAlertCancel(pageQuery.build(), wrapper); + + return TableDataInfo.build(page); + } + + /** * 查询当前用户已完成预警 * @param bo @@ -179,6 +196,8 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { } + + /** * 构建wrapper * @param bo @@ -187,12 +206,16 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { private QueryWrapper buildQueryWrapper(BusinessAlertBo bo) { QueryWrapper wrapper = new QueryWrapper<>(); + //排除状态为验证状态预警 + wrapper.ne("ba.handle_type", BusinessStatusEnum.VERIFY.getStatus()); + if (ObjectUtil.isNotEmpty(bo.getAlertTypeList())){ wrapper.in("ba.alert_type", bo.getAlertTypeList()); } if (ObjectUtil.isNotEmpty(bo.getHandleType())){ wrapper.eq("ba.handle_type", bo.getHandleType()); + } wrapper.orderByAsc("ba.create_time"); diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java index 329d376..ac0501f 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java @@ -8,6 +8,7 @@ import org.dromara.business.domain.model.StatObj; import org.dromara.business.mapper.BusinessAlertMapper; import org.dromara.business.service.BusinessAlertStatisticsService; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.RemoteDeptService; import org.dromara.system.api.domain.vo.RemoteDeptVo; import org.springframework.beans.factory.annotation.Autowired; @@ -17,6 +18,7 @@ import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @@ -38,14 +40,12 @@ public class BusinessAlertStatisticsServiceImpl implements BusinessAlertStatisti */ @Override public List countMonthAlert(BusinessAlertBo businessAlertBo) { - if (ObjectUtil.isEmpty(businessAlertBo.getDeptId())){ - throw new ServiceException("部门【id】为空"); + if (ObjectUtil.isNotEmpty(businessAlertBo.getDeptId())){ + List remoteDeptVoList = remoteDeptService.selectListByParentId(businessAlertBo.getDeptId()); + List departIdList = remoteDeptVoList.stream().map(RemoteDeptVo::getDeptId).toList(); + businessAlertBo.setDeptIdList(departIdList); } - List remoteDeptVoList = remoteDeptService.selectListByParentId(businessAlertBo.getDeptId()); - List departIdList = remoteDeptVoList.stream().map(RemoteDeptVo::getDeptId).toList(); - businessAlertBo.setDeptIdList(departIdList); - List> mapList = baseMapper.listMonthAlert(businessAlertBo); return mapList.stream().map(data -> new StatObj(data.get("dateMonth") + "", data.get("total"))).collect(Collectors.toList()); @@ -55,6 +55,13 @@ public class BusinessAlertStatisticsServiceImpl implements BusinessAlertStatisti @Override public ListcountDepartAlert(BusinessAlertBo businessAlertBo) { + if (ObjectUtil.isNotEmpty(LoginHelper.getDeptId())){ + List remoteDeptVoList = remoteDeptService.selectListByParentId(LoginHelper.getDeptId() + ""); + businessAlertBo.setDeptIdList(remoteDeptVoList.stream().map(RemoteDeptVo::getDeptId).toList()); + }else { + //TODO + } + List> mapList = baseMapper.listDepartAlert(businessAlertBo); return mapList.stream().map(data -> new StatObj(data.get("deptName") + "", Long.parseLong(data.get("total") + ""),"deptId",data.get("deptId"))).collect(Collectors.toList()); @@ -70,7 +77,8 @@ public class BusinessAlertStatisticsServiceImpl implements BusinessAlertStatisti List.of( new StatObj("total", map.get("total")), new StatObj("todoCount", map.get("todoCount")), - new StatObj("finishCount", map.get("finishCount")) + new StatObj("finishCount", map.get("finishCount")), + new StatObj("cancelCount", map.get("cancelCount")) ) )) .collect(Collectors.toList()); @@ -87,7 +95,8 @@ public class BusinessAlertStatisticsServiceImpl implements BusinessAlertStatisti List.of( new StatObj("total", map.get("total")), new StatObj("todoCount", map.get("todoCount")), - new StatObj("finishCount", map.get("finishCount")) + new StatObj("finishCount", map.get("finishCount")), + new StatObj("cancelCount", map.get("cancelCount")) ),"deptId",map.get("deptId") )) .collect(Collectors.toList()); @@ -108,6 +117,20 @@ public class BusinessAlertStatisticsServiceImpl implements BusinessAlertStatisti return mapList; } + @Override + public List countPanelAlert(BusinessAlertBo businessAlertBo) { + List> mapList = baseMapper.countPanelAlert(businessAlertBo); + + return mapList.stream() + .flatMap(map -> Stream.of( + new StatObj("total", map.get("total")), + new StatObj("todoCount", map.get("todoCount")), + new StatObj("finishCount", map.get("finishCount")), + new StatObj("cancelCount", map.get("cancelCount")) + )) + .collect(Collectors.toList()); + } + private List buildDateList(BusinessAlertBo businessAlertBo) { List resultList = new ArrayList<>(); String currentYear = String.valueOf(Calendar.getInstance().get(Calendar.YEAR)); diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index cc1eb3f..45bc1ca 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -4,6 +4,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + and ba.handle_type != 'verify' + + and DATE_FORMAT(ba.create_time,'%Y-%m') = DATE_FORMAT(#{param.createTime},'%Y-%m') + + + and ba.dept_id in + + #{item} + + + + + + @@ -190,25 +152,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ba.dept_name deptName, ba.dept_id deptId, count( 1 ) total, - SUM( handle_type = 'waiting' ) AS todoCount, - SUM( handle_type = 'finish' ) AS finishCount + IFNULL(SUM( handle_type = 'waiting' ),0) AS todoCount, + IFNULL(SUM( handle_type = 'finish' ),0) AS finishCount, + IFNULL(SUM( ba.handle_type = 'cancel' ),0) AS cancelCount FROM business_alert ba where 1=1 - - and DATE_FORMAT(ba.create_time,'%Y-%m') = DATE_FORMAT(#{param.createTime},'%Y-%m') - + GROUP BY ba.dept_name,ba.dept_id + +