diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppTodoItemController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppTodoItemController.java index 455d48be..a616c1fa 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppTodoItemController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppTodoItemController.java @@ -2,6 +2,8 @@ package com.zdxt.enforcementcode.controller.app.enterprise; import java.util.List; +import com.zdxt.enforcementcode.domain.vo.TodoStatisticsVo; +import com.zdxt.enforcementcode.service.IEnforcementEducationServicesService; import com.zdxt.enforcementcode.service.ITodoItemService; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; @@ -35,6 +37,8 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; public class AppTodoItemController extends BaseController { private final ITodoItemService todoItemService; + + private final IEnforcementEducationServicesService educationServicesService; /** * 查询待办事项列表 @@ -102,4 +106,31 @@ public class AppTodoItemController extends BaseController { @PathVariable String[] ids) { return toAjax(todoItemService.deleteWithValidByIds(List.of(ids), true)); } + + /** + * 获取待办事项统计信息 + * 返回普法服务、执法评价、执法预告的未读个数及总数 + */ + @GetMapping("/statistics") + public R getStatistics() { + TodoStatisticsVo statistics = new TodoStatisticsVo(); + + // 1. 统计普法服务未读个数 + Long pffwCount = educationServicesService.countUnreadEducationServices(); + statistics.setPffwCount(pffwCount != null ? pffwCount : 0L); + + // 2. 执法评价未读个数(暂时默认为0) + statistics.setZfpjCount(0L); + + // 3. 执法预告未读个数(暂时默认为0) + statistics.setZfygCount(0L); + + // 4. 计算总未读个数 + Long totalCount = statistics.getPffwCount() + + statistics.getZfpjCount() + + statistics.getZfygCount(); + statistics.setTotalCount(totalCount); + + return R.ok(statistics); + } } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/EnforcementEducationServicesController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/EnforcementEducationServicesController.java index 0f834db9..08ab292b 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/EnforcementEducationServicesController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/EnforcementEducationServicesController.java @@ -51,4 +51,13 @@ public class EnforcementEducationServicesController extends BaseController { public R getInfo(String id) { return R.ok(enforcementEducationServicesService.queryById(id)); } + + /** + * 统计当前用户企业的普法未读个数 + */ + @GetMapping("/unreadCount") + public R getUnreadCount() { + Long unreadCount = enforcementEducationServicesService.countUnreadEducationServices(); + return R.ok(unreadCount); + } } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/TodoStatisticsVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/TodoStatisticsVo.java new file mode 100644 index 00000000..48b3a04a --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/TodoStatisticsVo.java @@ -0,0 +1,45 @@ +package com.zdxt.enforcementcode.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 待办事项统计视图对象 + * + * @author Lion Li + * @date 2026-05-15 + */ +@Data +@Schema(description = "待办事项统计") +public class TodoStatisticsVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 普法服务未读个数 + */ + @Schema(description = "普法服务未读个数") + private Long pffwCount; + + /** + * 执法评价未读个数 + */ + @Schema(description = "执法评价未读个数") + private Long zfpjCount; + + /** + * 执法预告未读个数 + */ + @Schema(description = "执法预告未读个数") + private Long zfygCount; + + /** + * 未读总个数 + */ + @Schema(description = "未读总个数") + private Long totalCount; +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementEducationServicesMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementEducationServicesMapper.java index 1d87d261..8698dffe 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementEducationServicesMapper.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementEducationServicesMapper.java @@ -2,6 +2,7 @@ package com.zdxt.enforcementcode.mapper; import com.zdxt.enforcementcode.domain.bean.EnforcementEducationServices; import com.zdxt.enforcementcode.domain.vo.EnforcementEducationServicesVo; +import org.apache.ibatis.annotations.Param; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** @@ -12,4 +13,12 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface EnforcementEducationServicesMapper extends BaseMapperPlus { + /** + * 统计未读普法消息数量 + * + * @param companyId 企业ID + * @return 未读普法消息数量 + */ + Long countUnreadEducationServices(@Param("companyId") String companyId); } + diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnforcementEducationServicesService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnforcementEducationServicesService.java index 91e34e0a..9dd0de69 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnforcementEducationServicesService.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEnforcementEducationServicesService.java @@ -65,4 +65,11 @@ public interface IEnforcementEducationServicesService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 统计当前登录用户企业的普法未读个数 + * + * @return 未读普法消息数量 + */ + Long countUnreadEducationServices(); } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java index 895dcea4..2c4ac428 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementEducationServicesServiceImpl.java @@ -181,4 +181,29 @@ public class EnforcementEducationServicesServiceImpl implements IEnforcementEduc } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 统计当前登录用户企业的普法未读个数 + * + * @return 未读普法消息数量 + */ + @Override + public Long countUnreadEducationServices() { + // 获取当前登录用户的企业ID + String companyId = LoginHelper.getDeptId(); + + if (StringUtils.isBlank(companyId)) { + log.warn("当前用户未关联企业,无法统计未读普法消息"); + return 0L; + } + + log.debug("统计企业未读普法消息: companyId={}", companyId); + + // 查询未读普法消息数量 + Long unreadCount = baseMapper.countUnreadEducationServices(companyId); + + log.info("企业 {} 的未读普法消息数量: {}", companyId, unreadCount); + + return unreadCount != null ? unreadCount : 0L; + } } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementEducationServicesMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementEducationServicesMapper.xml index 19e6776e..e0cfd0b9 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementEducationServicesMapper.xml +++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementEducationServicesMapper.xml @@ -3,4 +3,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + +