Compare commits

..

No commits in common. "1651ad531873d0919f20642087eb3523eb2f5be0" and "a8329f6a2c0a1d6a9692dea98201b82d2e876c3e" have entirely different histories.

19 changed files with 254 additions and 278 deletions

View File

@ -92,6 +92,7 @@ public class QmsCoaTaskController extends BaseController {
// 推送COA通知
QmsTodoItem qmsTodoItem = new QmsTodoItem()
.setCode(basdeSerialNumberControllerService.generateSerialNumber(32))
.setIsRead(false)
.setSourceTypeId(dictionaryItemServiceId)
.setSourceId(coaTaskService.lambdaQuery().eq(QmsCoaTask::getMaterialId,qo.getMaterialNo()).one().getId())
.setCreateUserId(UserUtil.getUserId())
@ -119,6 +120,7 @@ public class QmsCoaTaskController extends BaseController {
for (Long taskId : ids) {
QmsTodoItem qmsTodoItem = new QmsTodoItem()
.setCode(basdeSerialNumberControllerService.generateSerialNumber(32))
.setIsRead(false)
.setSourceTypeId(dictionaryItemServiceId)
.setSourceId(taskId)
.setCreateUserId(currentUserId)

View File

@ -43,6 +43,7 @@ public class TestController extends BaseController {
VUtil.trueThrowBusinessError(Objects.isNull(dictionaryItemServiceId)).throwMessage("消息类型不存在");
QmsTodoItem qmsTodoItem = new QmsTodoItem()
.setCode(basdeSerialNumberControllerService.generateSerialNumber(32))
.setIsRead(false)
.setSourceTypeId(dictionaryItemServiceId)
.setSourceId(0L)
.setCreateUserId(UserUtil.getUserId())

View File

@ -1,7 +1,7 @@
package com.nflg.qms.admin.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nflg.qms.admin.service.QmsIssueTicketTodoControllerService;
import com.nflg.qms.admin.service.TodoItemControllerService;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.QmsTodoItemSearchQO;
@ -11,22 +11,33 @@ import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 质量问题工单待办
* 待办事项
*/
@RestController
@RequestMapping("/ticket-todo-item")
public class QmsIssueTicketTodoController extends BaseController {
@RequestMapping("/todo-item")
public class TodoItemController extends BaseController {
@Resource
private QmsIssueTicketTodoControllerService qmsIssueTicketTodoControllerService;
private TodoItemControllerService todoItemControllerService;
/**
* 查询
* 分页查询待办事项列表
*/
@PostMapping("search")
public ApiResult<PageData<QmsTodoItemVO>> search(@Valid @RequestBody QmsTodoItemSearchQO request) {
IPage<QmsTodoItemVO> page = qmsIssueTicketTodoControllerService.search(request);
IPage<QmsTodoItemVO> page = todoItemControllerService.search(request);
return ApiResult.success(page);
}
/**
* 批量标记已读
*/
@PostMapping("mark-as-read")
public ApiResult<Void> markAsRead(@RequestBody List<Long> ids) {
todoItemControllerService.markAsRead(ids);
return ApiResult.success();
}
}

View File

@ -52,7 +52,7 @@ public class QmsIssueTicketControllerService {
private IUserService userService;
@Resource
private IQmsIssueTicketToDoService issueTicketToDoService;
private IQmsTodoItemService todoItemService;
@Resource
private IDictionaryItemService dictionaryItemService;
@ -148,7 +148,7 @@ public class QmsIssueTicketControllerService {
// 5. 为每个处理人创建处理记录并推送待办
List<QmsIssueTicketProcess> processes = new ArrayList<>();
List<QmsIssueTicketToDo> todoItems = new ArrayList<>();
List<QmsTodoItem> todoItems = new ArrayList<>();
for (Long handlerUserId : request.getHandlerUserIds()) {
User handlerUser = handlerUserMap.get(handlerUserId);
@ -161,9 +161,14 @@ public class QmsIssueTicketControllerService {
processes.add(process);
// 创建待办消息
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
.setTicketId(ticket.getId())
.setHandlerUserId(handlerUserId);
QmsTodoItem todoItem = new QmsTodoItem()
.setCode(ticket.getTicketNo())
.setIsRead(false)
.setSourceTypeId(sourceTypeId)
.setSourceId(process.getId()) // 使用处理记录的ID
.setCreateUserId(handlerUserId)
.setCreateUserName(handlerUser.getUserName())
.setCreateTime(now);
todoItems.add(todoItem);
}
@ -171,12 +176,12 @@ public class QmsIssueTicketControllerService {
issueTicketProcessService.saveBatch(processes);
// 7. 更新处理记录中的sourceId因为saveBatch后才有ID
// for (int i = 0; i < processes.size(); i++) {
// todoItems.get(i).setSourceId(processes.get(i).getId());
// }
for (int i = 0; i < processes.size(); i++) {
todoItems.get(i).setSourceId(processes.get(i).getId());
}
// 8. 批量推送待办消息
issueTicketToDoService.saveBatch(todoItems);
todoItemService.saveBatch(todoItems);
// 9. 如果工单状态是待流转(0)更新为处理中(1)
if (ticket.getStatus() != null && ticket.getStatus() == 0) {
@ -508,8 +513,6 @@ public class QmsIssueTicketControllerService {
}
issueTicketService.updateById(entity);
issueTicketToDoService.processed(entity.getId());
if (request.getApprovalStatus() != 5) {
wmsIncomingInspectionTaskCallbackService.processAsync(entity.getSourceId(), request.getApprovalStatus());
}
@ -954,12 +957,16 @@ public class QmsIssueTicketControllerService {
List<User> users = userService.lambdaQuery()
.eq(User::getPurchasingGroup, detail.getPurchaseGroup())
.list();
List<QmsIssueTicketToDo> todoItems = users.stream().map(user -> new QmsIssueTicketToDo()
.setTicketId(entity.getId())
.setHandlerUserId(user.getId())
List<QmsTodoItem> todoItems = users.stream().map(user -> new QmsTodoItem()
.setCode(detail.getTaskNo())
.setSourceTypeId(dictionaryItemService.getIdByCode("MessageType", "IncomingMaterialInspectionApproval"))
.setSourceId(entity.getId())
.setCreateUserId(user.getId())
.setCreateUserName(user.getUserName())
.setCreateTime(LocalDateTime.now())
).toList();
if (CollectionUtil.isNotEmpty(todoItems)) {
issueTicketToDoService.saveBatch(todoItems);
todoItemService.saveBatch(todoItems);
}
}
}

View File

@ -6,8 +6,19 @@ import com.nflg.wms.common.pojo.qo.QmsIssueTicketProcessAddQO;
import com.nflg.wms.common.pojo.qo.QmsIssueTicketProcessDraftQO;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.*;
import com.nflg.wms.repository.service.*;
import com.nflg.wms.repository.entity.Department;
import com.nflg.wms.repository.entity.QmsIssueTicket;
import com.nflg.wms.repository.entity.QmsIssueTicketProcess;
import com.nflg.wms.repository.entity.QmsTodoItem;
import com.nflg.wms.repository.entity.User;
import com.nflg.wms.repository.entity.UserInterior;
import com.nflg.wms.repository.service.IDepartmentService;
import com.nflg.wms.repository.service.IDictionaryItemService;
import com.nflg.wms.repository.service.IQmsIssueTicketProcessService;
import com.nflg.wms.repository.service.IQmsIssueTicketService;
import com.nflg.wms.repository.service.IQmsTodoItemService;
import com.nflg.wms.repository.service.IUserInteriorService;
import com.nflg.wms.repository.service.IUserService;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.springframework.scheduling.annotation.Async;
@ -42,7 +53,7 @@ public class QmsIssueTicketProcessControllerService {
private IQmsIssueTicketService issueTicketService;
@Resource
private IQmsIssueTicketToDoService issueTicketToDoService;
private IQmsTodoItemService todoItemService;
@Resource
private IDictionaryItemService dictionaryItemService;
@ -88,10 +99,15 @@ public class QmsIssueTicketProcessControllerService {
// 推送待办消息
Long sourceTypeId = dictionaryItemService.getIdByCode("MessageType", "PDIDefectiveProductHandling");
User handlerUser = userService.getById(handlerUserId);
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
.setTicketId(issueTicketId)
.setHandlerUserId(handlerUserId);
issueTicketToDoService.save(todoItem);
QmsTodoItem todoItem = new QmsTodoItem()
.setCode(ticketNo)
.setIsRead(false)
.setSourceTypeId(sourceTypeId)
.setSourceId(processId)
.setCreateUserId(handlerUserId)
.setCreateUserName(handlerUser != null ? handlerUser.getUserName() : null)
.setCreateTime(LocalDateTime.now());
todoItemService.save(todoItem);
}
private Long doAdd(Long issueTicketId, Long handlerUserId, List<Long> taskResultIds) {
@ -164,10 +180,16 @@ public class QmsIssueTicketProcessControllerService {
if (userInterior != null && userInterior.getDeptId() != null) {
Department department = departmentService.getById(userInterior.getDeptId());
if (department != null && department.getHeadUserId() != null) {
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
.setTicketId(ticket.getId())
.setHandlerUserId(department.getHeadUserId());
issueTicketToDoService.save(todoItem);
Long sourceTypeId = dictionaryItemService.getIdByCode("MessageType", "InspectionTaskWorkOrder");
QmsTodoItem todoItem = new QmsTodoItem()
.setCode(ticket.getTicketNo())
.setIsRead(false)
.setSourceTypeId(sourceTypeId)
.setSourceId(process.getId())
.setCreateUserId(department.getHeadUserId())
.setCreateUserName(department.getHeadUserName())
.setCreateTime(now);
todoItemService.save(todoItem);
}
}
} else {
@ -207,10 +229,15 @@ public class QmsIssueTicketProcessControllerService {
// 驳回推送待办给处理人
Long sourceTypeId = dictionaryItemService.getIdByCode("MessageType", "InspectionTaskWorkOrder");
User handler = userService.getById(process.getHandlerUserId());
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
.setTicketId(ticket.getId())
.setHandlerUserId(process.getHandlerUserId());
issueTicketToDoService.save(todoItem);
QmsTodoItem todoItem = new QmsTodoItem()
.setCode(ticket.getTicketNo())
.setIsRead(false)
.setSourceTypeId(sourceTypeId)
.setSourceId(process.getId())
.setCreateUserId(process.getHandlerUserId())
.setCreateUserName(handler != null ? handler.getUserName() : null)
.setCreateTime(now);
todoItemService.save(todoItem);
} else if (leaderApprovalResult == 1) {
// 同意检查同一工单下所有处理记录是否都已完成
Long issueTicketId = process.getIssueTicketId();
@ -266,10 +293,15 @@ public class QmsIssueTicketProcessControllerService {
if (request.getApprovalStatus() == 1) {
// 驳回推送待办给工单创建人
User creator = userService.getById(ticket.getCreateUserId());
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
.setTicketId(ticket.getId())
.setHandlerUserId(ticket.getCreateUserId());
issueTicketToDoService.save(todoItem);
QmsTodoItem todoItem = new QmsTodoItem()
.setCode(ticket.getTicketNo())
.setIsRead(false)
.setSourceTypeId(sourceTypeId)
.setSourceId(process.getId())
.setCreateUserId(ticket.getCreateUserId())
.setCreateUserName(creator != null ? creator.getUserName() : null)
.setCreateTime(now);
todoItemService.save(todoItem);
} else if (request.getApprovalStatus() == 0) {
// 通过推送给当前用户所在部门负责人
Long currentUserId = UserUtil.getUserId();
@ -279,14 +311,17 @@ public class QmsIssueTicketProcessControllerService {
if (userInterior != null && userInterior.getDeptId() != null) {
Department department = departmentService.getById(userInterior.getDeptId());
if (department != null && department.getHeadUserId() != null) {
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
.setTicketId(ticket.getId())
.setHandlerUserId(department.getHeadUserId());
issueTicketToDoService.save(todoItem);
QmsTodoItem todoItem = new QmsTodoItem()
.setCode(ticket.getTicketNo())
.setIsRead(false)
.setSourceTypeId(sourceTypeId)
.setSourceId(process.getId())
.setCreateUserId(department.getHeadUserId())
.setCreateUserName(department.getHeadUserName())
.setCreateTime(now);
todoItemService.save(todoItem);
}
}
}
issueTicketToDoService.processed(ticket.getId());
}
}

View File

@ -1,53 +0,0 @@
package com.nflg.qms.admin.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nflg.wms.common.pojo.qo.QmsTodoItemSearchQO;
import com.nflg.wms.common.pojo.vo.QmsTodoItemVO;
import com.nflg.wms.repository.entity.QmsIssueTicketProcess;
import com.nflg.wms.repository.service.IQmsIssueTicketProcessService;
import com.nflg.wms.repository.service.IQmsIssueTicketService;
import com.nflg.wms.repository.service.IQmsIssueTicketToDoService;
import com.nflg.wms.repository.service.IQmsTodoItemService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
/**
* 待办事项业务逻辑
*/
@Component
public class QmsIssueTicketTodoControllerService {
@Resource
private IQmsIssueTicketToDoService issueTicketToDoService;
@Resource
private IQmsIssueTicketProcessService issueTicketProcessService;
/**
* 分页查询待办事项列表
*/
public IPage<QmsTodoItemVO> search(QmsTodoItemSearchQO request) {
IPage<QmsTodoItemVO> pageData = issueTicketToDoService.search(request);
if (CollectionUtil.isNotEmpty(pageData.getRecords())) {
pageData.getRecords().forEach(item -> {
if (item.getStatus() != 2) {
item.setCurrentHandleUserName(
StrUtil.join(",",
issueTicketProcessService.lambdaQuery()
.select(QmsIssueTicketProcess::getHandlerUserName)
.eq(QmsIssueTicketProcess::getIssueTicketId, item.getTicketId())
.list()
.stream()
.map(QmsIssueTicketProcess::getHandlerUserName)
.toList()
)
);
}
});
}
return pageData;
}
}

View File

@ -0,0 +1,34 @@
package com.nflg.qms.admin.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nflg.wms.common.pojo.qo.QmsTodoItemSearchQO;
import com.nflg.wms.common.pojo.vo.QmsTodoItemVO;
import com.nflg.wms.repository.service.IQmsTodoItemService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 待办事项业务逻辑
*/
@Component
public class TodoItemControllerService {
@Resource
private IQmsTodoItemService todoItemService;
/**
* 分页查询待办事项列表
*/
public IPage<QmsTodoItemVO> search(QmsTodoItemSearchQO request) {
return todoItemService.search(request);
}
/**
* 批量标记已读
*/
public void markAsRead(List<Long> ids) {
todoItemService.markAsRead(ids);
}
}

View File

@ -11,17 +11,22 @@ import lombok.EqualsAndHashCode;
public class QmsTodoItemSearchQO extends SearchBaseQO {
/**
* 来源类型0=IQC检测任务1=PDI检测任务2=巡检
* 编号
*/
private Short sourceType;
private String code;
/**
* 工单标题
* 标题
*/
private String ticketTitle;
private String title;
/**
* 是否已处理
* 来源类型ID
*/
private Boolean hasProcessed;
private Long sourceTypeId;
/**
* 是否已读
*/
private Boolean isRead;
}

View File

@ -13,52 +13,62 @@ public class QmsTodoItemVO {
private Long id;
/**
* 工单id
* 编号
*/
private Long ticketId;
private String code;
/**
* 工单编号
* 标题
*/
private String ticketNo;
private String title;
/**
* 工单标题
* 来源类型ID
*/
private String ticketTitle;
private Long sourceTypeId;
/**
* 来源类型0=IQC检测任务1=PDI检测任务2=巡检
* 来源类型名称
*/
private Short sourceType;
private String sourceTypeName;
/**
* 流程发起人
* 来源ID
*/
private Long sourceId;
/**
* 是否已读
*/
private Boolean isRead;
/**
* 创建人ID
*/
private Long createUserId;
/**
* 创建人姓名
*/
private String createUserName;
/**
* 流程发起时间
* 创建时间
*/
private LocalDateTime createTime;
/**
* 当前节点处理人
* 更新人ID
*/
private String currentHandleUserName;
private Long updateUserId;
/**
* 流程结束时间
* 更新人姓名
*/
private LocalDateTime completeTime;
private String updateUserName;
/**
* 状态0=待流转1=处理中2=已完成
* 更新时间
*/
private Short status;
/**
* 类型0=处理主工单1=处理工单子项2=审核工单子项
*/
private Integer type;
private LocalDateTime updateTime;
}

View File

@ -1,42 +0,0 @@
package com.nflg.wms.repository.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 质量问题工单待办表
* @since 2026
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("qms_issue_ticket_todo")
public class QmsIssueTicketToDo implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 工单ID
*/
private Long ticketId;
/**
* 是否已处理
*/
private Boolean hasProcessed;
/**
* 处理人ID
*/
private Long handlerUserId;
}

View File

@ -1,16 +0,0 @@
package com.nflg.wms.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.pojo.qo.QmsTodoItemSearchQO;
import com.nflg.wms.common.pojo.vo.QmsTodoItemVO;
import com.nflg.wms.repository.entity.QmsIssueTicketToDo;
/**
* 质量问题工单待办 Mapper 接口
*/
public interface QmsIssueTicketToDoMapper extends BaseMapper<QmsIssueTicketToDo> {
IPage<QmsTodoItemVO> search(QmsTodoItemSearchQO request, Long userId, Page<Object> page);
}

View File

@ -12,4 +12,5 @@ import com.nflg.wms.repository.entity.QmsTodoItem;
*/
public interface QmsTodoItemMapper extends BaseMapper<QmsTodoItem> {
IPage<QmsTodoItemVO> search(QmsTodoItemSearchQO request, Page<Object> page);
}

View File

@ -1,20 +0,0 @@
package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.qo.QmsTodoItemSearchQO;
import com.nflg.wms.common.pojo.vo.QmsTodoItemVO;
import com.nflg.wms.repository.entity.QmsIssueTicketToDo;
/**
* 质量问题工单待办 Service
*/
public interface IQmsIssueTicketToDoService extends IService<QmsIssueTicketToDo> {
/**
* 分页查询待办事项列表
*/
IPage<QmsTodoItemVO> search(QmsTodoItemSearchQO request);
void processed(Long id);
}

View File

@ -13,4 +13,14 @@ import java.util.List;
*/
public interface IQmsTodoItemService extends IService<QmsTodoItem> {
/**
* 分页查询待办事项列表
*/
IPage<QmsTodoItemVO> search(QmsTodoItemSearchQO request);
/**
* 批量标记已读
* @param ids 待办事项ID列表
*/
void markAsRead(List<Long> ids);
}

View File

@ -1,39 +0,0 @@
package com.nflg.wms.repository.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.common.pojo.qo.QmsTodoItemSearchQO;
import com.nflg.wms.common.pojo.vo.QmsTodoItemVO;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.repository.entity.QmsIssueTicketToDo;
import com.nflg.wms.repository.entity.QmsTodoItem;
import com.nflg.wms.repository.mapper.QmsIssueTicketToDoMapper;
import com.nflg.wms.repository.service.IQmsIssueTicketToDoService;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
/**
* 质量问题工单待办 ServiceImpl
*/
@Service
public class QmsIssueTicketToDoServiceImpl
extends ServiceImpl<QmsIssueTicketToDoMapper, QmsIssueTicketToDo>
implements IQmsIssueTicketToDoService {
@Override
public IPage<QmsTodoItemVO> search(QmsTodoItemSearchQO request) {
return baseMapper.search(request, UserUtil.getUserId(), new Page<>(request.getPage(), request.getPageSize()));
}
@Override
public void processed(Long id) {
lambdaUpdate()
.set(QmsIssueTicketToDo::getHasProcessed, true)
.eq(QmsIssueTicketToDo::getTicketId, id)
.eq(QmsIssueTicketToDo::getHandlerUserId, UserUtil.getUserId())
.eq(QmsIssueTicketToDo::getHasProcessed, false)
.update();
}
}

View File

@ -20,4 +20,26 @@ import java.util.List;
@Service
public class QmsTodoItemServiceImpl extends ServiceImpl<QmsTodoItemMapper, QmsTodoItem> implements IQmsTodoItemService {
@Override
public IPage<QmsTodoItemVO> search(QmsTodoItemSearchQO request) {
return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize()));
}
@Override
public void markAsRead(List<Long> ids) {
if (ids == null || ids.isEmpty()) {
return;
}
Long userId = UserUtil.getUserId();
String userName = UserUtil.getUserName();
LocalDateTime now = LocalDateTime.now();
lambdaUpdate()
.eq(QmsTodoItem::getIsRead, false)
.in(QmsTodoItem::getId, ids)
.set(QmsTodoItem::getIsRead, true)
.set(QmsTodoItem::getUpdateUserId, userId)
.set(QmsTodoItem::getUpdateUserName, userName)
.set(QmsTodoItem::getUpdateTime, now)
.update();
}
}

View File

@ -1,34 +0,0 @@
<?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.nflg.wms.repository.mapper.QmsIssueTicketToDoMapper">
<select id="search" resultType="com.nflg.wms.common.pojo.vo.QmsTodoItemVO">
SELECT
CASE
WHEN vit."type" = 0 THEN 0
WHEN vit.handler_user_id = #{userId} THEN 1
WHEN vit.approval_user_id = #{userId} THEN 2
END AS type,
vit.*
FROM qms_issue_ticket_todo itd
INNER JOIN v_qms_issue_ticket vit ON itd.ticket_id = vit.ticket_id
where itd.handler_user_id = #{userId} and (vit.handler_user_id=#{userId} or vit.approval_user_id=#{userId})
<if test="request.sourceType != null">
AND vit.source_type = #{request.sourceType}
</if>
<if test="request.ticketTitle != null and request.ticketTitle != ''">
AND vit.ticket_title ilike concat('%', #{request.ticketTitle}, '%')
</if>
<if test="request.hasProcessed != null">
AND itd.has_processed = #{request.hasProcessed}
</if>
<if test="request.startDate != null">
AND vit.create_time &gt;= #{request.startDate}
</if>
<if test="request.endDate != null">
AND vit.create_time &lt;= #{request.endDate}
</if>
ORDER BY itd.id DESC
</select>
</mapper>

View File

@ -2,4 +2,43 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nflg.wms.repository.mapper.QmsTodoItemMapper">
<select id="search" resultType="com.nflg.wms.common.pojo.vo.QmsTodoItemVO">
SELECT t.id,
t.code,
t.title,
t.source_type_id,
di.name as source_type_name,
t.source_id,
t.is_read,
t.create_user_id,
t.create_user_name,
t.create_time,
t.update_user_id,
t.update_user_name,
t.update_time
FROM qms_todo_item t
LEFT JOIN dictionary_item di ON t.source_type_id = di.id
<where>
<if test="request.code != null and request.code != ''">
AND t.code ilike concat('%', #{request.code}, '%')
</if>
<if test="request.title != null and request.title != ''">
AND t.title ilike concat('%', #{request.title}, '%')
</if>
<if test="request.sourceTypeId != null">
AND t.source_type_id = #{request.sourceTypeId}
</if>
<if test="request.isRead != null">
AND t.is_read = #{request.isRead}
</if>
<if test="request.startDate != null">
AND t.create_time &gt;= #{request.startDate}
</if>
<if test="request.endDate != null">
AND t.create_time &lt;= #{request.endDate}
</if>
</where>
ORDER BY t.id DESC
</select>
</mapper>

View File

@ -164,6 +164,7 @@ public class PdiTaskOverdueNotifyProcessor implements BasicProcessor {
.setCode(task.getTaskNo())
.setSourceTypeId(sourceTypeId)
.setSourceId(task.getId())
.setIsRead(false)
.setCreateUserId(leaderId)
.setCreateUserName(leader != null ? leader.getUserName() : "未知")
.setCreateTime(now);
@ -204,6 +205,7 @@ public class PdiTaskOverdueNotifyProcessor implements BasicProcessor {
.setCode(task.getTaskNo())
.setSourceTypeId(sourceTypeId)
.setSourceId(task.getId())
.setIsRead(false)
.setCreateUserId(inspectorId)
.setCreateUserName(inspector != null ? inspector.getUserName() : "未知")
.setCreateTime(now);
@ -219,6 +221,7 @@ public class PdiTaskOverdueNotifyProcessor implements BasicProcessor {
.setCode(task.getTaskNo())
.setSourceTypeId(sourceTypeId)
.setSourceId(task.getId())
.setIsRead(false)
.setCreateUserId(assistantId)
.setCreateUserName(assistant != null ? assistant.getUserName() : "未知")
.setCreateTime(now);