xuhy
2025-07-02 1840e345a669bb2a5fca71b8de629b25694eb7af
Merge remote-tracking branch 'origin/master'
8个文件已添加
9个文件已修改
416 ■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TTaskDetailController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java 129 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/AppealDTO.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/applet/query/NoticeListQuery.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/NoticeListVO.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/TaskUserListVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/UserIndexVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TNoticeMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TNotice.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TTaskDetail.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TNoticeService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TNoticeServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TNoticeMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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){
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;
                }
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();
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();
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;
    }
    /**
ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/AppealDTO.java
New file
@@ -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 {
}
ruoyi-system/src/main/java/com/ruoyi/system/applet/query/NoticeListQuery.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/NoticeListVO.java
New file
@@ -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 {
}
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 = "点位类型图标")
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 = "头像")
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TNoticeMapper.java
New file
@@ -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);
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TNotice.java
New file
@@ -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;
}
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")
ruoyi-system/src/main/java/com/ruoyi/system/service/TNoticeService.java
New file
@@ -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);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TNoticeServiceImpl.java
New file
@@ -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;
    }
}
ruoyi-system/src/main/resources/mapper/system/TNoticeMapper.xml
New file
@@ -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>
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>