From 6831e7b977681e3f6a1c619e13c2fe28e7ccc49d Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 02 七月 2025 10:36:31 +0800
Subject: [PATCH] 保洁巡检本周代码

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TNoticeServiceImpl.java   |   33 ++++
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TTaskDetailController.java |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/NoticeListVO.java            |   17 ++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TNoticeMapper.java              |   23 +++
 ruoyi-system/src/main/java/com/ruoyi/system/applet/query/NoticeListQuery.java      |   15 ++
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/TaskUserListVO.java          |    4 
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java      |   13 +
 ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/AppealDTO.java              |   13 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java        |    2 
 ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml                      |   22 +-
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java       |  129 ++++++++++--------
 ruoyi-system/src/main/java/com/ruoyi/system/service/TNoticeService.java            |   20 ++
 ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/UserIndexVO.java             |    2 
 ruoyi-system/src/main/resources/mapper/system/TNoticeMapper.xml                    |   13 +
 ruoyi-system/src/main/java/com/ruoyi/system/model/TTaskDetail.java                 |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TNotice.java                     |  101 ++++++++++++++
 17 files changed, 343 insertions(+), 73 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java
index 785554b..5975e5b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java
@@ -170,7 +170,7 @@
     @Log(title = "审核任务", businessType = BusinessType.UPDATE)
     @ApiOperation(value = "审核任务")
     @PostMapping(value = "/audit")
-    public R<Boolean> audit(@RequestBody @Valid TTaskAuditDTO dto) {
+    public R<Boolean> audit(@RequestBody  TTaskAuditDTO dto) {
         dto.setAuditTime(LocalDateTime.now());
         TTask byId = taskCleanerService.getById(dto.getTaskId());
         if (dto.getAuditStatus()==2){
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java
index 2931add..28d0bff 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java
@@ -181,8 +181,19 @@
         List<TTask> tasks = taskCleanerService.list(tTaskLambdaQueryWrapper);
         HashMap<String, Integer> taskMap = new HashMap<>();
         HashMap<String, Integer> statusMap = new HashMap<>();
+        statusMap.put("未执行", 0);
+        statusMap.put("超时", 0);
+        statusMap.put("待确认", 0);
+        statusMap.put("已驳回", 0);
+        statusMap.put("已完成", 0);
         HashMap<String, Integer> clearMap = new HashMap<>();
+        clearMap.put("合格", 0);
+        clearMap.put("不合格", 0);
         HashMap<String, Integer> unqualifiedMap = new HashMap<>();
+        List<TDictData> dictData = dataList.stream().filter(e -> e.getDataType() == 2).collect(Collectors.toList());
+        for (TDictData dictDatum : dictData) {
+            unqualifiedMap.put(dictDatum.getDataContent(), 0);
+        }
         for (TTask task : tasks) {
             TProjectDept tProjectDept = projectDepts.stream().filter(e -> e.getId().equals(task.getProjectId())).findFirst().orElse(null);
             if (tProjectDept == null) continue;
@@ -221,7 +232,7 @@
                         temp1.append("不合格");
                         TDictData tDictData = dataList.stream().filter(e -> e.getId().equals(tTaskDetail.getUnqualified())).findFirst().orElse(null);
                         if (tDictData != null){
-                            unqualifiedMap.put(tTaskDetail.getUnqualifiedName(), unqualifiedMap.getOrDefault(tDictData.getDataContent(), 0) + 1);
+                            unqualifiedMap.put(tDictData.getDataContent(), unqualifiedMap.getOrDefault(tDictData.getDataContent(), 0) + 1);
                         }
                         break;
                 }
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TTaskDetailController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TTaskDetailController.java
index c816744..eb52661 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TTaskDetailController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TTaskDetailController.java
@@ -5,6 +5,7 @@
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.applet.dto.AppealDTO;
 import com.ruoyi.system.dto.TTaskAuditBatchDTO;
 import com.ruoyi.system.dto.TaskDetailDto;
 import com.ruoyi.system.model.TAppeal;
@@ -58,7 +59,7 @@
 
     @ApiOperation(value = "申诉")
     @PostMapping(value = "/appeal")
-    public R<Boolean> appeal(@RequestBody TAppeal dto) {
+    public R<Boolean> appeal(@RequestBody AppealDTO dto) {
         appealService.save(dto);
         // 添加任务详情
         TTaskDetail taskDetail = new TTaskDetail();
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
index 597ef3e..2c55767 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
@@ -14,10 +14,7 @@
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.applet.dto.*;
-import com.ruoyi.system.applet.query.AppealListQuery;
-import com.ruoyi.system.applet.query.KnowledgeListUserQuery;
-import com.ruoyi.system.applet.query.LeaveListUserQuery;
-import com.ruoyi.system.applet.query.TaskUserListQuery;
+import com.ruoyi.system.applet.query.*;
 import com.ruoyi.system.applet.vo.*;
 import com.ruoyi.system.dto.KnowledgeDTO;
 import com.ruoyi.system.dto.TTaskAuditBatchDTO;
@@ -99,7 +96,15 @@
     private TFeedbackService feedbackService;
     @Resource
     private TProblemEscalationService problemEscalationService;
-
+    @Resource
+    private TNoticeService noticeService;
+    @ApiOperation(value = "消息通知列表")
+    @PostMapping(value = "/noticeList")
+    public R<PageInfo<NoticeListVO>> noticeList(@RequestBody NoticeListQuery query) {
+        Long userId = tokenService.getLoginUserApplet().getUserId();
+        query.setUserId(userId+"");
+        return R.ok(noticeService.noticeList(query));
+    }
     /**
      * 生成数据
      * @param id
@@ -109,58 +114,58 @@
 
     @GetMapping(value = "/testData")
     public R<AppealDetailVO> testData(@RequestParam String id) {
-        List<TAppeal> tAppeals = new ArrayList<>();
-        for (int i = 0; i < 25; i++) {
-            TAppeal tAppeal = new TAppeal();
-            tAppeal.setTaskId("1938536771253641217");
-            tAppeal.setAppealPerson("152");
-            tAppeal.setStatus(1);
-            tAppeal.setAppealContent("申诉");
-            tAppeal.setPictures("https://bjxj.oss-cn-guangzhou.aliyuncs.com/bjxj/88d2d5614fe6492bba5666a7ab01e76b.png");
-            tAppeals.add(tAppeal);
-        }
-        appealService.saveBatch(tAppeals);
-        List<TAppeal> tAppeals1 = new ArrayList<>();
-        for (int i = 0; i < 25; i++) {
-            TAppeal tAppeal = new TAppeal();
-            tAppeal.setTaskId("1938536771253641217");
-            tAppeal.setAppealPerson("152");
-            tAppeal.setStatus(2);
-            tAppeal.setAppealContent("申诉");
-            tAppeal.setPictures("https://bjxj.oss-cn-guangzhou.aliyuncs.com/bjxj/88d2d5614fe6492bba5666a7ab01e76b.png");
-            tAppeal.setAuditPerson("162");
-            tAppeal.setAuditRemark("备注");
-            tAppeal.setAuditTime(LocalDateTime.now());
-            tAppeals1.add(tAppeal);
-        }
-        appealService.saveBatch(tAppeals1);
-        List<TAppeal> tAppeals2 = new ArrayList<>();
-        for (int i = 0; i < 25; i++) {
-            TAppeal tAppeal = new TAppeal();
-            tAppeal.setTaskId("1938536771253641217");
-            tAppeal.setAppealPerson("152");
-            tAppeal.setStatus(3);
-            tAppeal.setAppealContent("申诉");
-            tAppeal.setPictures("https://bjxj.oss-cn-guangzhou.aliyuncs.com/bjxj/88d2d5614fe6492bba5666a7ab01e76b.png");
-            tAppeal.setAuditPerson("162");
-            tAppeal.setAuditRemark("备注");
-            tAppeal.setAuditTime(LocalDateTime.now());
-            tAppeals2.add(tAppeal);
-        }
-        appealService.saveBatch(tAppeals2);
-        List<TAppeal> tAppeals3 = new ArrayList<>();
-        for (int i = 0; i < 25; i++) {
-            TAppeal tAppeal = new TAppeal();
-            tAppeal.setTaskId("1938536771253641217");
-            tAppeal.setAppealPerson("152");
-            tAppeal.setStatus(4);
-            tAppeal.setAppealContent("申诉");
-            tAppeal.setPictures("https://bjxj.oss-cn-guangzhou.aliyuncs.com/bjxj/88d2d5614fe6492bba5666a7ab01e76b.png");
-
-            tAppeals3.add(tAppeal);
-
-        }
-        appealService.saveBatch(tAppeals3);
+//        List<TAppeal> tAppeals = new ArrayList<>();
+//        for (int i = 0; i < 25; i++) {
+//            TAppeal tAppeal = new TAppeal();
+//            tAppeal.setTaskId("1938536771253641217");
+//            tAppeal.setAppealPerson("152");
+//            tAppeal.setStatus(1);
+//            tAppeal.setAppealContent("申诉");
+//            tAppeal.setPictures("https://bjxj.oss-cn-guangzhou.aliyuncs.com/bjxj/88d2d5614fe6492bba5666a7ab01e76b.png");
+//            tAppeals.add(tAppeal);
+//        }
+//        appealService.saveBatch(tAppeals);
+//        List<TAppeal> tAppeals1 = new ArrayList<>();
+//        for (int i = 0; i < 25; i++) {
+//            TAppeal tAppeal = new TAppeal();
+//            tAppeal.setTaskId("1938536771253641217");
+//            tAppeal.setAppealPerson("152");
+//            tAppeal.setStatus(2);
+//            tAppeal.setAppealContent("申诉");
+//            tAppeal.setPictures("https://bjxj.oss-cn-guangzhou.aliyuncs.com/bjxj/88d2d5614fe6492bba5666a7ab01e76b.png");
+//            tAppeal.setAuditPerson("162");
+//            tAppeal.setAuditRemark("备注");
+//            tAppeal.setAuditTime(LocalDateTime.now());
+//            tAppeals1.add(tAppeal);
+//        }
+//        appealService.saveBatch(tAppeals1);
+//        List<TAppeal> tAppeals2 = new ArrayList<>();
+//        for (int i = 0; i < 25; i++) {
+//            TAppeal tAppeal = new TAppeal();
+//            tAppeal.setTaskId("1938536771253641217");
+//            tAppeal.setAppealPerson("152");
+//            tAppeal.setStatus(3);
+//            tAppeal.setAppealContent("申诉");
+//            tAppeal.setPictures("https://bjxj.oss-cn-guangzhou.aliyuncs.com/bjxj/88d2d5614fe6492bba5666a7ab01e76b.png");
+//            tAppeal.setAuditPerson("162");
+//            tAppeal.setAuditRemark("备注");
+//            tAppeal.setAuditTime(LocalDateTime.now());
+//            tAppeals2.add(tAppeal);
+//        }
+//        appealService.saveBatch(tAppeals2);
+//        List<TAppeal> tAppeals3 = new ArrayList<>();
+//        for (int i = 0; i < 25; i++) {
+//            TAppeal tAppeal = new TAppeal();
+//            tAppeal.setTaskId("1938536771253641217");
+//            tAppeal.setAppealPerson("152");
+//            tAppeal.setStatus(4);
+//            tAppeal.setAppealContent("申诉");
+//            tAppeal.setPictures("https://bjxj.oss-cn-guangzhou.aliyuncs.com/bjxj/88d2d5614fe6492bba5666a7ab01e76b.png");
+//
+//            tAppeals3.add(tAppeal);
+//
+//        }
+//        appealService.saveBatch(tAppeals3);
         return R.ok();
     }
 
@@ -259,11 +264,15 @@
         taskDetailVO.setLocationIcon(byId2.getLocationIcon());
         taskDetailVO.setLocationName(byId2.getLocationName());
         TTaskDetail tTaskDetail = list.stream().filter(e -> e.getHandleType() == 1).findFirst().orElse(null);
+        TTaskDetail tTaskDetailFinish = list.stream().filter(e -> e.getHandleType() == 2).findFirst().orElse(null);
         if (tTaskDetail!=null &&  tTaskDetail.getUnqualified()!=null){
             TDictData byId3 = dictDataService.getById(tTaskDetail.getUnqualified());
             if (byId3!=null){
                 tTaskDetail.setUnqualifiedName(byId3.getDataContent());
             }
+        }
+        if (tTaskDetailFinish!=null){
+            tTaskDetailFinish.setFinishTime(tTaskDetailFinish.getCreateTime());
         }
         taskDetailVO.setTaskDetail(tTaskDetail);
         taskDetailVO.setRecords(list);
@@ -415,7 +424,7 @@
         Long userRole = sysUserService.getUserRole(userId);
         SysRole sysRole = roleService.selectRoleById(userRole);
         List<SysUser> sysUsers = sysUserService.selectAllList();
-
+        sysRole.setRoleName("项目负责人");
         SysUser auditPerson = sysUserService.selectUserById(999L);
         //项目负责人、部门负责人、公司成员提交由最终审批人审批;
         if (user.getDeptType()==2 ||sysRole.getRoleName().contains("项目负责人")||sysRole.getRoleName().contains("部门负责人")){
@@ -503,6 +512,7 @@
         leaveDTO.setTemplateId(user.getTemplateId());
         leaveDTO.setLeavePerson(userId+"");
         leaveService.save(leaveDTO);
+        sysRole.setRoleName("项目负责人");
         //项目负责人、部门负责人、公司成员提交由最终审批人审批;
         if (user.getDeptType()==2 ||sysRole.getRoleName().contains("项目负责人")||sysRole.getRoleName().contains("部门负责人")){
             TLeaveAudit tLeaveAudit1 = new TLeaveAudit();
@@ -577,6 +587,7 @@
         SysUser sysUser = sysUserService.selectUserById(Long.parseLong(leave.getLeavePerson()));
         Long userRole = sysUserService.getUserRole(sysUser.getUserId());
         SysRole sysRole = roleService.selectRoleById(userRole);
+        sysRole.setRoleName("项目负责人");
         if (sysRole.getRoleName().contains("现场负责人")||sysRole.getRoleName().equals("组长")){
             if (sysUser.getDeptType() == 1){
                 TProjectDept tProjectDept = projectDeptService.getById(sysUser.getDeptId());
@@ -601,7 +612,7 @@
         leaveUserDetailVO.setLeavePersonName(sysUser.getNickName());
         LeaveAuditListVO leaveAuditListVO = new LeaveAuditListVO();
         List<TLeaveAudit> list = leaveAuditService.list(new LambdaQueryWrapper<TLeaveAudit>()
-                .eq(TLeaveAudit::getAuditId, leave.getId()));
+                .eq(TLeaveAudit::getLeaveId, leave.getId()));
         for (TLeaveAudit tLeaveAudit : list) {
             if (tLeaveAudit.getAuditType()==1){
                 LeaveAuditVO leaveAuditVO = new LeaveAuditVO();
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index a80a59d..d28cc0f 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -68,7 +68,7 @@
         ajax.put(Constants.TOKEN, tokenService.createTokenApplet(loginUser));
         ajax.put("userInfo",loginUser);
         ajax.put("roleName",loginUser.getRoleName());
-        ajax.put("deptType",loginUser.getRoleName());
+        ajax.put("deptType",loginUser.getDeptType());
         return ajax;
     }
     /**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/AppealDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/AppealDTO.java
new file mode 100644
index 0000000..70226e7
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/AppealDTO.java
@@ -0,0 +1,13 @@
+package com.ruoyi.system.applet.dto;
+
+import com.ruoyi.common.core.domain.BasePage;
+import com.ruoyi.system.model.TAppeal;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "任务申诉DTO")
+public class AppealDTO extends TAppeal {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/applet/query/NoticeListQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/applet/query/NoticeListQuery.java
new file mode 100644
index 0000000..0d2eb9e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/applet/query/NoticeListQuery.java
@@ -0,0 +1,15 @@
+package com.ruoyi.system.applet.query;
+
+import com.ruoyi.common.core.domain.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "消息通知分页列表query")
+public class NoticeListQuery extends BasePage {
+
+    @ApiModelProperty(value = "用户id 前端忽略")
+    private String userId;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/NoticeListVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/NoticeListVO.java
new file mode 100644
index 0000000..f187eb7
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/NoticeListVO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.system.applet.vo;
+
+import com.ruoyi.system.model.TNotice;
+import com.ruoyi.system.model.TTask;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "消息通知列表分页VO")
+public class NoticeListVO extends TNotice {
+
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/TaskUserListVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/TaskUserListVO.java
index 06edcbe..e3fd6d6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/TaskUserListVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/TaskUserListVO.java
@@ -13,6 +13,10 @@
 
     @ApiModelProperty(value = "点位名称")
     private String locationName;
+    @ApiModelProperty(value = "点位地址开始")
+    private String locationAddress;
+    @ApiModelProperty(value = "点位地址结束")
+    private String locationAddressEnd;
     @ApiModelProperty(value = "点位类型名称")
     private String locationTypeName;
     @ApiModelProperty(value = "点位类型图标")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/UserIndexVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/UserIndexVO.java
index 17b8dea..d25e084 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/UserIndexVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/UserIndexVO.java
@@ -8,7 +8,7 @@
 import java.math.BigDecimal;
 
 @Data
-@ApiModel(value = "个人中心-任务记录列表分页VO")
+@ApiModel(value = "个人中心-首页顶部VO")
 public class UserIndexVO  {
 
     @ApiModelProperty(value = "头像")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TNoticeMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TNoticeMapper.java
new file mode 100644
index 0000000..ab8a133
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TNoticeMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.system.applet.query.NoticeListQuery;
+import com.ruoyi.system.applet.vo.NoticeListVO;
+import com.ruoyi.system.model.TNotice;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 项目组组员 Mapper 接口
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2025-04-12
+ */
+public interface TNoticeMapper extends BaseMapper<TNotice> {
+
+    List<NoticeListVO> noticeList(@Param("query")NoticeListQuery query, @Param("pageInfo")PageInfo<NoticeListVO> pageInfo);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TNotice.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TNotice.java
new file mode 100644
index 0000000..559dcf3
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TNotice.java
@@ -0,0 +1,101 @@
+package com.ruoyi.system.model;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.ruoyi.common.core.domain.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 菌种报告库
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2025-04-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_notice")
+@ApiModel(value="TNotice对象", description="消息通知")
+public class TNotice implements Serializable {
+
+    private static final long serialVersionUID = 2553749188490103197L;
+
+    @ApiModelProperty(value = "主键id")
+    @TableId("id")
+    private String id;
+    @ApiModelProperty(value = "消息所属人员id")
+    @TableField("user_id")
+    private String userId;
+    @ApiModelProperty(value = "消息内容")
+    @TableField("notice_content")
+    private String noticeContent;
+    @ApiModelProperty(value = "状态 1=未读2=已读")
+    @TableField("status")
+    private Integer status;
+    @ApiModelProperty(value = "对应内容id")
+    @TableField("data_id")
+    private String dataId;
+    @ApiModelProperty(value = "消息类型\n" +
+            "1任务驳回通知\n" +
+            "2任务审核通过通知\n" +
+            "3超时任务通知\n" +
+            "4任务申诉驳回通知\n" +
+            "5任务申诉通过通知\n" +
+            "6待审核通知\n" +
+            "7抄送通知\n" +
+            "8督察任务整改通知")
+    @TableField("notice_type")
+    private Integer noticeType;
+    @ApiModelProperty(value = "消息通知类型 1短信 2邮件 3微信订阅消息")
+    @TableField("notice_set_type")
+    private Integer noticeSetType;
+
+    public static final String ID = "id";
+
+    public static final String CREATE_TIME = "create_time";
+
+    public static final String LAST_TIME = "last_time";
+
+    /**
+     * 新增执行
+     */
+    @ApiModelProperty(value = "记录创建人,前端忽略")
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
+    private String createBy;
+
+    /**
+     * 新增和更新执行
+     */
+    @ApiModelProperty(value = "记录修改人,前端忽略")
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
+    private String updateBy;
+    /**
+     * 删除  未删除
+     */
+    @JsonIgnore
+    @TableField("`disabled`")
+    @TableLogic
+    private Boolean disabled;
+
+    @ApiModelProperty(value = "记录创建时间,前端忽略")
+    @TableField("create_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    /**
+     * 最后修改时间
+     */
+    @ApiModelProperty(value = "记录修改时间,前端忽略")
+    @TableField("update_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    private LocalDateTime updateTime;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTaskDetail.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTaskDetail.java
index e47a3a6..e9b0864 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTaskDetail.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTaskDetail.java
@@ -70,6 +70,10 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("audit_time")
     private LocalDateTime auditTime;
+    @ApiModelProperty(value = "完成时间")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime finishTime;
 
     @ApiModelProperty(value = "审核状态1通过2驳回")
     @TableField("audit_status")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TNoticeService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TNoticeService.java
new file mode 100644
index 0000000..c406b58
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TNoticeService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.system.applet.query.NoticeListQuery;
+import com.ruoyi.system.applet.vo.NoticeListVO;
+import com.ruoyi.system.model.TNotice;
+
+/**
+ * <p>
+ * 项目组组员 服务类
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2025-04-12
+ */
+public interface TNoticeService extends IService<TNotice> {
+
+    PageInfo<NoticeListVO> noticeList(NoticeListQuery query);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TNoticeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TNoticeServiceImpl.java
new file mode 100644
index 0000000..0eb1afb
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TNoticeServiceImpl.java
@@ -0,0 +1,33 @@
+package com.ruoyi.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.system.applet.query.NoticeListQuery;
+import com.ruoyi.system.applet.vo.NoticeListVO;
+import com.ruoyi.system.mapper.TNoticeMapper;
+import com.ruoyi.system.model.TNotice;
+import com.ruoyi.system.service.TNoticeService;
+import com.ruoyi.system.vo.system.ProjectDeptListVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 项目组组员 服务实现类
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2025-04-12
+ */
+@Service
+public class TNoticeServiceImpl extends ServiceImpl<TNoticeMapper, TNotice> implements TNoticeService {
+
+    @Override
+    public PageInfo<NoticeListVO> noticeList(NoticeListQuery query) {
+        PageInfo<NoticeListVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<NoticeListVO> list = this.baseMapper.noticeList(query,pageInfo);
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/TNoticeMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TNoticeMapper.xml
new file mode 100644
index 0000000..d61a8cb
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/TNoticeMapper.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.TNoticeMapper">
+
+
+    <select id="noticeList" resultType="com.ruoyi.system.applet.vo.NoticeListVO">
+        select t1.* from
+                     t_notice t1
+             where t1.user_id = #{query.userId}
+               and t1.`disabled` = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+
+    </select>
+</mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml
index fc4a53e..5465914 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml
@@ -62,10 +62,13 @@
     </select>
     <select id="pageListUser" resultType="com.ruoyi.system.applet.vo.TaskUserListVO">
         select t1.*,t2.location_name as locationName,t3.location_name as locationTypeName,
+               t2.location_address as locationAddress,
+        t2.location_address_end as locationAddressEnd,
         t3.location_icon as locatioTypeIcon,
         t5.clear_status as clearStatus,
         t4.nick_name as patrolInspectorName,
         t4.phonenumber as phonenumber,
+
         ROUND(
         6378.138 * 2 * ASIN(
         SQRT(
@@ -91,23 +94,24 @@
         left join t_location t2 on t1.location_id = t2.id
         left join t_location_type t3 on t2.location_type = t3.id
         left join sys_user t4 on t1.patrol_inspector = t4.user_id
-        LEFT JOIN (SELECT t1.*
+        LEFT JOIN (
+        SELECT t1.*
         FROM t_task_detail t1
-        JOIN (
-        SELECT task_id, MAX(create_time) AS max_time
+        JOIN (SELECT task_id, MAX(create_time) AS max_time
         FROM t_task_detail
-        GROUP BY task_id
-        ) AS t2 ON t1.task_id = t2.task_id AND t1.create_time = t2.max_time
+        GROUP BY task_id) AS t2 ON t1.task_id = t2.task_id AND t1.create_time = t2.max_time
+        where 1=1
+        <if test="query.clearStatus != null">
+            and t1.clear_status = #{query.clearStatus}
+        </if>
         ) t5 on t1.id = t5.task_id
         where 1=1
         and t1.`disabled` = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
-        <if test="query.clearStatus != null">
-            and t2.status = #{query.clearStatus}
-        </if>
+
         <if test="query.userId != null and query.userId != ''">
             and t1.patrol_inspector = #{query.userId}
         </if>
-        <if test="query.startTime != null and startTime != ''">
+        <if test="query.startTime != null and query.startTime != ''">
             and (t1.implement_time between #{query.startTime} and #{query.endTime})
         </if>
     </select>

--
Gitblit v1.7.1