Browse Source

执法端-代办,执法预告,执法任务,执法预约消息提醒

dev-V1.10.2-temp
niujiyi 3 months ago
parent
commit
bb68885f3b
  1. 17
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/common/commonenum/MsgSourceTypeEnum.java
  2. 34
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfTodoItemController.java
  3. 11
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/TodoStatisticsVo.java
  4. 9
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeCpNoticeMessageMapper.java
  5. 9
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeCpReserveMapper.java
  6. 9
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeCpTaskMapper.java
  7. 7
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpNoticeMessageService.java
  8. 8
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpReserveService.java
  9. 10
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpTaskService.java
  10. 24
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeMessageServiceImpl.java
  11. 12
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeServiceImpl.java
  12. 31
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpReserveServiceImpl.java
  13. 34
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpTaskServiceImpl.java
  14. 15
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeCpNoticeMessageMapper.xml
  15. 17
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeCpReserveMapper.xml
  16. 15
      zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeCpTaskMapper.xml

17
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/common/commonenum/MsgSourceTypeEnum.java

@ -14,7 +14,22 @@ public enum MsgSourceTypeEnum {
/**
* 执法评价
*/
ZFPJ(2, "执法评价");
ZFPJ(2, "执法评价"),
/**
* 执法预告
*/
ZFYG(3,"执法预告"),
/**
* 执法任务
*/
ZFRW(4,"执法任务"),
/**
* 执法预约
*/
ZFYQ(5,"执法预约");
private Integer key;
private String value;

34
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfTodoItemController.java

@ -1,11 +1,11 @@
package com.zdxt.enforcementcode.controller.app.enforcement;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaIgnore;
import com.zdxt.enforcementcode.domain.bo.TodoItemBo;
import com.zdxt.enforcementcode.domain.vo.TodoItemVo;
import com.zdxt.enforcementcode.domain.vo.TodoStatisticsVo;
import com.zdxt.enforcementcode.service.IEnforcementEducationServicesService;
import com.zdxt.enforcementcode.service.ITodoItemService;
import com.zdxt.enforcementcode.service.*;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
@ -40,6 +40,9 @@ public class AppEnfTodoItemController extends BaseController {
private final ITodoItemService todoItemService;
private final IEnforcementEducationServicesService educationServicesService;
private final IEfcodeCpNoticeMessageService cpNoticeMessageService;
private final IEfcodeCpTaskService efcodeCpTaskService;
private final IEfcodeCpReserveService efcodeCpReserveService;
/**
* 查询待办事项列表
@ -90,4 +93,31 @@ public class AppEnfTodoItemController extends BaseController {
return R.ok(statistics);
}
/**
* 获取代办个数
* 返回执法预告,执法任务,执法预约的未读个数及总数
*/
@SaIgnore
@GetMapping("/statisticsUnReadCountForEnforcement")
public R<TodoStatisticsVo> statisticsUnReadCountForEnforcement() {
TodoStatisticsVo statistics = new TodoStatisticsVo();
//1. 统计执法预告
Long zfygCount = cpNoticeMessageService.countUnreadNoticeMessageForCurrentUser();
statistics.setZfygCount(zfygCount != null ? zfygCount : 0L);
//2. 统计执法任务
Long zfrwCount = efcodeCpTaskService.countUnreadTasksForCurrentUser();
statistics.setZfrwCount(zfrwCount != null ? zfrwCount : 0L);
//3. 统计执法预约
Long zfyqCount = efcodeCpReserveService.countUnreadReservesForCurrentUser();
statistics.setZfyqCount(zfyqCount != null ? zfyqCount : 0L);
Long totalCount = statistics.getZfygCount()
+ statistics.getZfrwCount()
+ statistics.getZfyqCount();
statistics.setTotalCount(totalCount);
return R.ok(statistics);
}
}

11
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/TodoStatisticsVo.java

@ -37,6 +37,17 @@ public class TodoStatisticsVo implements Serializable {
@Schema(description = "执法预告未读个数")
private Long zfygCount;
/**
* 执法任务未读个数
*/
@Schema(description = "执法任务未读个数")
private Long zfrwCount;
/**
* 执法预约未读个数
*/
@Schema(description = "执法预约未读个数")
private Long zfyqCount;
/**
* 未读总个数
*/

9
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeCpNoticeMessageMapper.java

@ -2,6 +2,7 @@ package com.zdxt.enforcementcode.mapper;
import com.zdxt.enforcementcode.domain.EfcodeCpNoticeMessage;
import com.zdxt.enforcementcode.domain.vo.EfcodeCpNoticeMessageVo;
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 EfcodeCpNoticeMessageMapper extends BaseMapperPlus<EfcodeCpNoticeMessage, EfcodeCpNoticeMessageVo> {
/**
* 统计未读普法消息数量(执法端-根据用户ID)
*
* @param userId 用户ID
* @param sourceType 来源类型(默认1-普法消息)
* @return 未读普法消息数量
*/
Long countUnreadNoticeMessageForCurrentUser(@Param("userId") Long userId, @Param("sourceType") Integer sourceType);
}

9
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeCpReserveMapper.java

@ -24,4 +24,13 @@ public interface EfcodeCpReserveMapper extends BaseMapperPlus<EfcodeCpReserve, E
@Param("currentUserId") String currentUserId
);
/**
* 统计执法预约数量(执法端-根据用户ID)
*
* @param userId 用户ID
* @param sourceType 来源类型(默认1-普法消息)
* @return 未执法预约数量
*/
Long countReservesForCurrentUser(@Param("userId") Long userId, @Param("sourceType") Integer sourceType);
}

9
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeCpTaskMapper.java

@ -42,4 +42,13 @@ public interface EfcodeCpTaskMapper extends BaseMapperPlus<EfcodeCpTask, EfcodeC
*/
EfcodeCpTaskVo selectMyTaskDetail(@Param("planId") String planId);
/**
* 统计执法任务数量(执法端-根据用户ID)
*
* @param userId 用户ID
* @param sourceType 来源类型(默认1-普法消息)
* @return 未执法任务数量
*/
Long countTasksForCurrentUser(@Param("userId") Long userId, @Param("sourceType") Integer sourceType);
}

7
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpNoticeMessageService.java

@ -80,4 +80,11 @@ public interface IEfcodeCpNoticeMessageService {
* @param noticeId 预告ID
*/
void markEnterpriseViewed(String noticeId);
/**
* 统计当前登录用户的执法预告未读个数
*
* @return 未读执法预告数量
*/
Long countUnreadNoticeMessageForCurrentUser();
}

8
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpReserveService.java

@ -145,4 +145,12 @@ public interface IEfcodeCpReserveService {
* @return 取消的记录数
*/
int cancelOverdueSystemReserves(boolean ignoreTime);
/**
* 统计当前登录用户的执预约未读个数
*
* @return 未读执法预约数量
*/
Long countUnreadReservesForCurrentUser();
}

10
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpTaskService.java

@ -10,6 +10,7 @@ import com.zdxt.enforcementcode.domain.EfcodeCpPlan;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 行政执法检查计划-任务Service接口
@ -101,7 +102,7 @@ public interface IEfcodeCpTaskService {
* @param planIds 计划ID列表(通常为isUnion=1的任务对应的planId)
* @return Map: key=planId, value=该计划关联的其他单位信息
*/
java.util.Map<String, List<EfcodeCpTaskVo.AssociatedPlan>> queryAssociatedPlansBatch(List<String> planIds);
Map<String, List<EfcodeCpTaskVo.AssociatedPlan>> queryAssociatedPlansBatch(List<String> planIds);
/**
* 强制创建任务(忽略其他条件),根据计划信息直接生成任务记录并回写 plan.task_id
@ -110,4 +111,11 @@ public interface IEfcodeCpTaskService {
* @return 新建任务ID
*/
String forceGenerateTask(EfcodeCpPlan plan);
/**
* 统计当前登录用户的执任务未读个数
*
* @return 未读执法任务数量
*/
Long countUnreadTasksForCurrentUser();
}

24
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeMessageServiceImpl.java

@ -1,5 +1,6 @@
package com.zdxt.enforcementcode.service.impl;
import com.zdxt.enforcementcode.common.commonenum.PlatformTypeEnums;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -10,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.satoken.utils.LoginHelper;
import org.springframework.stereotype.Service;
import com.zdxt.enforcementcode.domain.bo.EfcodeCpNoticeMessageBo;
import com.zdxt.enforcementcode.domain.vo.EfcodeCpNoticeMessageVo;
@ -185,4 +187,26 @@ public class EfcodeCpNoticeMessageServiceImpl implements IEfcodeCpNoticeMessageS
.set(EfcodeCpNoticeMessage::getEnterpriseViewed, 1);
baseMapper.update(null, updateWrapper);
}
/**
* 统计当前用户未读的预告消息数量
* 通过当前用户 ID 查找关联的预告,再统计这些预告下企业未读的消息数
*/
@Override
public Long countUnreadNoticeMessageForCurrentUser() {
Integer platformType = LoginHelper.getPlatformType();
Long userId = LoginHelper.getUserId();
// 默认来源类型:执法预告
final Integer sourceType = 3;
// 执法端:根据用户ID统计
if (PlatformTypeEnums.ENFORCEMENT.getKey().equals(platformType)) {
if (userId == null) {
log.warn("当前用户未登录,无法统计未读执法预告消息");
return 0L;
}
return baseMapper.countUnreadNoticeMessageForCurrentUser(userId,sourceType);
}
return 0L;
}
}

12
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeServiceImpl.java

@ -1,6 +1,8 @@
package com.zdxt.enforcementcode.service.impl;
import cn.hutool.core.util.IdUtil;
import com.zdxt.enforcementcode.common.commonenum.MsgSourceTypeEnum;
import com.zdxt.enforcementcode.service.ISysMessageViewLogService;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -39,13 +41,19 @@ public class EfcodeCpNoticeServiceImpl implements IEfcodeCpNoticeService {
private final EfcodeCpNoticeMapper baseMapper;
private final EfcodeCpNoticeUsersMapper noticeUsersMapper;
private final EfcodeCpNoticeMessageMapper noticeMessageMapper;
private final ISysMessageViewLogService sysMessageViewLogService;
/**
* 查询行政执法检查计划-预告
*/
@Override
public EfcodeCpNoticeVo queryById(String id) {
return baseMapper.selectVoById(id);
EfcodeCpNoticeVo vo = baseMapper.selectVoById(id);
// 插入查看记录(调用公共方法)
if (vo != null) {
sysMessageViewLogService.insertViewLog(id, MsgSourceTypeEnum.ZFYG.getKey());
}
return vo;
}
/**

31
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpReserveServiceImpl.java

@ -1,5 +1,8 @@
package com.zdxt.enforcementcode.service.impl;
import com.zdxt.enforcementcode.common.commonenum.MsgSourceTypeEnum;
import com.zdxt.enforcementcode.common.commonenum.PlatformTypeEnums;
import com.zdxt.enforcementcode.service.ISysMessageViewLogService;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@ -41,6 +44,7 @@ public class EfcodeCpReserveServiceImpl implements IEfcodeCpReserveService {
private final EfcodeCpPlanMapper cpPlanMapper;
private final IEfcodeCpSettingService cpSettingService;
private final IEfcodeCpTaskService cpTaskService;
private final ISysMessageViewLogService sysMessageViewLogService;
/**
* 查询行政执法检查计划-预约
@ -50,7 +54,12 @@ public class EfcodeCpReserveServiceImpl implements IEfcodeCpReserveService {
*/
@Override
public EfcodeCpReserveVo queryById(String id){
return baseMapper.selectVoById(id);
EfcodeCpReserveVo vo = baseMapper.selectVoById(id);
// 插入查看记录(调用公共方法)
if (vo != null) {
sysMessageViewLogService.insertViewLog(id, MsgSourceTypeEnum.ZFYQ.getKey());
}
return vo;
}
/**
@ -795,6 +804,8 @@ public class EfcodeCpReserveServiceImpl implements IEfcodeCpReserveService {
return doCancelOverdueReserves(1L, ignoreTime);
}
/**
* 执行超期取消逻辑
*
@ -903,4 +914,22 @@ public class EfcodeCpReserveServiceImpl implements IEfcodeCpReserveService {
log.info("[超期取消后置] planGroupId={} 有{}家已同意,生成任务taskId={}",
planGroupId, approvedReserves.size(), sharedTaskId);
}
@Override
public Long countUnreadReservesForCurrentUser() {
Integer platformType = LoginHelper.getPlatformType();
Long userId = LoginHelper.getUserId();
// 默认来源类型:执法预约
final Integer sourceType = 5;
// 执法端:根据用户ID统计
if (PlatformTypeEnums.ENFORCEMENT.getKey().equals(platformType)) {
if (userId == null) {
log.warn("当前用户未登录,无法统计未读执法预约消息");
return 0L;
}
return baseMapper.countReservesForCurrentUser(userId,sourceType);
}
return 0L;
}
}

34
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpTaskServiceImpl.java

@ -1,5 +1,8 @@
package com.zdxt.enforcementcode.service.impl;
import com.zdxt.enforcementcode.common.commonenum.MsgSourceTypeEnum;
import com.zdxt.enforcementcode.common.commonenum.PlatformTypeEnums;
import com.zdxt.enforcementcode.service.ISysMessageViewLogService;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -9,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.satoken.utils.LoginHelper;
import org.springframework.stereotype.Service;
import com.zdxt.enforcementcode.domain.bo.EfcodeCpTaskBo;
import com.zdxt.enforcementcode.domain.vo.EfcodeCpTaskVo;
@ -39,7 +43,7 @@ public class EfcodeCpTaskServiceImpl implements IEfcodeCpTaskService {
private final EfcodeCpTaskMapper baseMapper;
private final EfcodeCpPlanMapper cpPlanMapper;
private final ISysMessageViewLogService sysMessageViewLogService;
/**
* 查询行政执法检查计划-任务
*
@ -179,6 +183,10 @@ public class EfcodeCpTaskServiceImpl implements IEfcodeCpTaskService {
}
detail.setAssociatedPlans(associated);
}
// 插入查看记录(调用公共方法)
if (detail != null) {
sysMessageViewLogService.insertViewLog(planId, MsgSourceTypeEnum.ZFRW.getKey());
}
return detail;
}
@ -269,6 +277,7 @@ public class EfcodeCpTaskServiceImpl implements IEfcodeCpTaskService {
return task.getId();
}
/**
* 校验并批量删除行政执法检查计划-任务信息
*
@ -283,4 +292,27 @@ public class EfcodeCpTaskServiceImpl implements IEfcodeCpTaskService {
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 统计当前用户未读任务数量
*/
@Override
public Long countUnreadTasksForCurrentUser() {
Integer platformType = LoginHelper.getPlatformType();
Long userId = LoginHelper.getUserId();
// 默认来源类型:执法任务
final Integer sourceType = 4;
// 执法端:根据用户ID统计
if (PlatformTypeEnums.ENFORCEMENT.getKey().equals(platformType)) {
if (userId == null) {
log.warn("当前用户未登录,无法统计未读执法任务消息");
return 0L;
}
return baseMapper.countTasksForCurrentUser(userId,sourceType);
}
return 0L;
}
}

15
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeCpNoticeMessageMapper.xml

@ -3,4 +3,19 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zdxt.enforcementcode.mapper.EfcodeCpNoticeMessageMapper">
<!-- 统计未读执法预告数量(执法端-根据用户ID) -->
<select id="countUnreadNoticeMessageForCurrentUser" resultType="java.lang.Long">
SELECT COUNT(1)
FROM efcode_cp_notice ecn
WHERE ecn.is_delete = 0
AND NOT EXISTS (
SELECT 1
FROM sys_message_view_log smvl
WHERE smvl.source_id = ecn.id
AND smvl.create_by = #{userId}
AND smvl.source_type = #{sourceType}
AND smvl.is_delete = 0
)
</select>
</mapper>

17
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeCpReserveMapper.xml

@ -56,4 +56,21 @@
ORDER BY r.reserve_time DESC
</select>
<!-- 统计执法预约数量(执法端-根据用户ID) -->
<select id="countReservesForCurrentUser" resultType="java.lang.Long">
SELECT COUNT(1)
FROM efcode_cp_reserve r
LEFT JOIN efcode_cp_plan p ON r.plan_id = p.id
LEFT JOIN efcode_cp_plan p2 ON r.plan_group_id = p2.id
WHERE r.sender_id != 'manual_system_sender'
AND NOT EXISTS (
SELECT 1
FROM sys_message_view_log smvl
WHERE smvl.source_id = p.id
AND smvl.create_by = #{userId}
AND smvl.source_type = #{sourceType}
AND smvl.is_delete = 0
)
</select>
</mapper>

15
zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EfcodeCpTaskMapper.xml

@ -82,4 +82,19 @@
AND p.is_delete = 0
</select>
<!-- 统计执法任务数量(执法端-根据用户ID) -->
<select id="countTasksForCurrentUser" resultType="java.lang.Long">
SELECT COUNT(1)
FROM efcode_cp_plan p
INNER JOIN efcode_cp_task t ON t.id = p.task_id
AND p.is_delete = 0
AND NOT EXISTS (
SELECT 1
FROM sys_message_view_log smvl
WHERE smvl.source_id = p.id
AND smvl.create_by = #{userId}
AND smvl.source_type = #{sourceType}
AND smvl.is_delete = 0
)
</select>
</mapper>

Loading…
Cancel
Save