Merge remote-tracking branch 'origin/qms/develop' into qms/develop
This commit is contained in:
commit
3adf1d11cd
|
|
@ -92,7 +92,6 @@ 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())
|
||||
|
|
@ -120,7 +119,6 @@ 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)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.nflg.qms.admin.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.nflg.qms.admin.service.TodoItemControllerService;
|
||||
import com.nflg.qms.admin.service.QmsIssueTicketTodoControllerService;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.qo.QmsTodoItemSearchQO;
|
||||
|
|
@ -11,33 +11,22 @@ import jakarta.annotation.Resource;
|
|||
import jakarta.validation.Valid;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 待办事项
|
||||
* 质量问题工单待办
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/todo-item")
|
||||
public class TodoItemController extends BaseController {
|
||||
@RequestMapping("/ticket-todo-item")
|
||||
public class QmsIssueTicketTodoController extends BaseController {
|
||||
|
||||
@Resource
|
||||
private TodoItemControllerService todoItemControllerService;
|
||||
private QmsIssueTicketTodoControllerService qmsIssueTicketTodoControllerService;
|
||||
|
||||
/**
|
||||
* 分页查询待办事项列表
|
||||
* 查询
|
||||
*/
|
||||
@PostMapping("search")
|
||||
public ApiResult<PageData<QmsTodoItemVO>> search(@Valid @RequestBody QmsTodoItemSearchQO request) {
|
||||
IPage<QmsTodoItemVO> page = todoItemControllerService.search(request);
|
||||
IPage<QmsTodoItemVO> page = qmsIssueTicketTodoControllerService.search(request);
|
||||
return ApiResult.success(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量标记已读
|
||||
*/
|
||||
@PostMapping("mark-as-read")
|
||||
public ApiResult<Void> markAsRead(@RequestBody List<Long> ids) {
|
||||
todoItemControllerService.markAsRead(ids);
|
||||
return ApiResult.success();
|
||||
}
|
||||
}
|
||||
|
|
@ -43,7 +43,6 @@ 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())
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public class QmsIssueTicketControllerService {
|
|||
private IUserService userService;
|
||||
|
||||
@Resource
|
||||
private IQmsTodoItemService todoItemService;
|
||||
private IQmsIssueTicketToDoService issueTicketToDoService;
|
||||
|
||||
@Resource
|
||||
private IDictionaryItemService dictionaryItemService;
|
||||
|
|
@ -190,7 +190,7 @@ public class QmsIssueTicketControllerService {
|
|||
|
||||
// 5. 为每个处理人创建处理记录并推送待办
|
||||
List<QmsIssueTicketProcess> processes = new ArrayList<>();
|
||||
List<QmsTodoItem> todoItems = new ArrayList<>();
|
||||
List<QmsIssueTicketToDo> todoItems = new ArrayList<>();
|
||||
|
||||
for (Long handlerUserId : request.getHandlerUserIds()) {
|
||||
User handlerUser = handlerUserMap.get(handlerUserId);
|
||||
|
|
@ -203,14 +203,9 @@ public class QmsIssueTicketControllerService {
|
|||
processes.add(process);
|
||||
|
||||
// 创建待办消息
|
||||
QmsTodoItem todoItem = new QmsTodoItem()
|
||||
.setCode(ticket.getTicketNo())
|
||||
.setIsRead(false)
|
||||
.setSourceTypeId(sourceTypeId)
|
||||
.setSourceId(process.getId()) // 使用处理记录的ID
|
||||
.setCreateUserId(handlerUserId)
|
||||
.setCreateUserName(handlerUser.getUserName())
|
||||
.setCreateTime(now);
|
||||
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
|
||||
.setTicketId(ticket.getId())
|
||||
.setHandlerUserId(handlerUserId);
|
||||
todoItems.add(todoItem);
|
||||
}
|
||||
|
||||
|
|
@ -218,12 +213,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. 批量推送待办消息
|
||||
todoItemService.saveBatch(todoItems);
|
||||
issueTicketToDoService.saveBatch(todoItems);
|
||||
|
||||
// 9. 如果工单状态是待流转(0),更新为处理中(1)
|
||||
if (ticket.getStatus() != null && ticket.getStatus() == 0) {
|
||||
|
|
@ -555,6 +550,8 @@ public class QmsIssueTicketControllerService {
|
|||
}
|
||||
issueTicketService.updateById(entity);
|
||||
|
||||
issueTicketToDoService.processed(entity.getId());
|
||||
|
||||
if (request.getApprovalStatus() != 5) {
|
||||
wmsIncomingInspectionTaskCallbackService.processAsync(entity.getSourceId(), request.getApprovalStatus());
|
||||
}
|
||||
|
|
@ -1034,16 +1031,12 @@ public class QmsIssueTicketControllerService {
|
|||
List<User> users = userService.lambdaQuery()
|
||||
.eq(User::getPurchasingGroup, detail.getPurchaseGroup())
|
||||
.list();
|
||||
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())
|
||||
List<QmsIssueTicketToDo> todoItems = users.stream().map(user -> new QmsIssueTicketToDo()
|
||||
.setTicketId(entity.getId())
|
||||
.setHandlerUserId(user.getId())
|
||||
).toList();
|
||||
if (CollectionUtil.isNotEmpty(todoItems)) {
|
||||
todoItemService.saveBatch(todoItems);
|
||||
issueTicketToDoService.saveBatch(todoItems);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,19 +6,8 @@ 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.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 com.nflg.wms.repository.entity.*;
|
||||
import com.nflg.wms.repository.service.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
|
|
@ -53,7 +42,7 @@ public class QmsIssueTicketProcessControllerService {
|
|||
private IQmsIssueTicketService issueTicketService;
|
||||
|
||||
@Resource
|
||||
private IQmsTodoItemService todoItemService;
|
||||
private IQmsIssueTicketToDoService issueTicketToDoService;
|
||||
|
||||
@Resource
|
||||
private IDictionaryItemService dictionaryItemService;
|
||||
|
|
@ -99,15 +88,10 @@ public class QmsIssueTicketProcessControllerService {
|
|||
// 推送待办消息
|
||||
Long sourceTypeId = dictionaryItemService.getIdByCode("MessageType", "PDIDefectiveProductHandling");
|
||||
User handlerUser = userService.getById(handlerUserId);
|
||||
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);
|
||||
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
|
||||
.setTicketId(issueTicketId)
|
||||
.setHandlerUserId(handlerUserId);
|
||||
issueTicketToDoService.save(todoItem);
|
||||
}
|
||||
|
||||
private Long doAdd(Long issueTicketId, Long handlerUserId, List<Long> taskResultIds) {
|
||||
|
|
@ -180,16 +164,10 @@ public class QmsIssueTicketProcessControllerService {
|
|||
if (userInterior != null && userInterior.getDeptId() != null) {
|
||||
Department department = departmentService.getById(userInterior.getDeptId());
|
||||
if (department != null && department.getHeadUserId() != null) {
|
||||
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);
|
||||
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
|
||||
.setTicketId(ticket.getId())
|
||||
.setHandlerUserId(department.getHeadUserId());
|
||||
issueTicketToDoService.save(todoItem);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
@ -229,15 +207,10 @@ public class QmsIssueTicketProcessControllerService {
|
|||
// 驳回:推送待办给处理人
|
||||
Long sourceTypeId = dictionaryItemService.getIdByCode("MessageType", "InspectionTaskWorkOrder");
|
||||
User handler = userService.getById(process.getHandlerUserId());
|
||||
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);
|
||||
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
|
||||
.setTicketId(ticket.getId())
|
||||
.setHandlerUserId(process.getHandlerUserId());
|
||||
issueTicketToDoService.save(todoItem);
|
||||
} else if (leaderApprovalResult == 1) {
|
||||
// 同意:检查同一工单下所有处理记录是否都已完成
|
||||
Long issueTicketId = process.getIssueTicketId();
|
||||
|
|
@ -293,15 +266,10 @@ public class QmsIssueTicketProcessControllerService {
|
|||
if (request.getApprovalStatus() == 1) {
|
||||
// 驳回:推送待办给工单创建人
|
||||
User creator = userService.getById(ticket.getCreateUserId());
|
||||
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);
|
||||
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
|
||||
.setTicketId(ticket.getId())
|
||||
.setHandlerUserId(ticket.getCreateUserId());
|
||||
issueTicketToDoService.save(todoItem);
|
||||
} else if (request.getApprovalStatus() == 0) {
|
||||
// 通过:推送给当前用户所在部门负责人
|
||||
Long currentUserId = UserUtil.getUserId();
|
||||
|
|
@ -311,17 +279,14 @@ public class QmsIssueTicketProcessControllerService {
|
|||
if (userInterior != null && userInterior.getDeptId() != null) {
|
||||
Department department = departmentService.getById(userInterior.getDeptId());
|
||||
if (department != null && department.getHeadUserId() != null) {
|
||||
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);
|
||||
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
|
||||
.setTicketId(ticket.getId())
|
||||
.setHandlerUserId(department.getHeadUserId());
|
||||
issueTicketToDoService.save(todoItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
issueTicketToDoService.processed(ticket.getId());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,53 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -11,22 +11,17 @@ import lombok.EqualsAndHashCode;
|
|||
public class QmsTodoItemSearchQO extends SearchBaseQO {
|
||||
|
||||
/**
|
||||
* 编号
|
||||
* 来源类型:0=IQC检测任务,1=PDI检测任务,2=巡检
|
||||
*/
|
||||
private String code;
|
||||
private Short sourceType;
|
||||
|
||||
/**
|
||||
* 标题
|
||||
* 工单标题
|
||||
*/
|
||||
private String title;
|
||||
private String ticketTitle;
|
||||
|
||||
/**
|
||||
* 来源类型ID
|
||||
* 是否已处理
|
||||
*/
|
||||
private Long sourceTypeId;
|
||||
|
||||
/**
|
||||
* 是否已读
|
||||
*/
|
||||
private Boolean isRead;
|
||||
private Boolean hasProcessed;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,62 +13,52 @@ public class QmsTodoItemVO {
|
|||
private Long id;
|
||||
|
||||
/**
|
||||
* 编号
|
||||
* 工单id
|
||||
*/
|
||||
private String code;
|
||||
private Long ticketId;
|
||||
|
||||
/**
|
||||
* 标题
|
||||
* 工单编号
|
||||
*/
|
||||
private String title;
|
||||
private String ticketNo;
|
||||
|
||||
/**
|
||||
* 来源类型ID
|
||||
* 工单标题
|
||||
*/
|
||||
private Long sourceTypeId;
|
||||
private String ticketTitle;
|
||||
|
||||
/**
|
||||
* 来源类型名称
|
||||
* 来源类型:0=IQC检测任务,1=PDI检测任务,2=巡检
|
||||
*/
|
||||
private String sourceTypeName;
|
||||
private Short sourceType;
|
||||
|
||||
/**
|
||||
* 来源ID
|
||||
*/
|
||||
private Long sourceId;
|
||||
|
||||
/**
|
||||
* 是否已读
|
||||
*/
|
||||
private Boolean isRead;
|
||||
|
||||
/**
|
||||
* 创建人ID
|
||||
*/
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建人姓名
|
||||
* 流程发起人
|
||||
*/
|
||||
private String createUserName;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
* 流程发起时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新人ID
|
||||
* 当前节点处理人
|
||||
*/
|
||||
private Long updateUserId;
|
||||
private String currentHandleUserName;
|
||||
|
||||
/**
|
||||
* 更新人姓名
|
||||
* 流程结束时间
|
||||
*/
|
||||
private String updateUserName;
|
||||
private LocalDateTime completeTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
* 状态:0=待流转,1=处理中,2=已完成
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
private Short status;
|
||||
|
||||
/**
|
||||
* 类型:0=处理主工单,1=处理工单子项;2=审核工单子项
|
||||
*/
|
||||
private Integer type;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
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;
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
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);
|
||||
}
|
||||
|
|
@ -12,5 +12,4 @@ import com.nflg.wms.repository.entity.QmsTodoItem;
|
|||
*/
|
||||
public interface QmsTodoItemMapper extends BaseMapper<QmsTodoItem> {
|
||||
|
||||
IPage<QmsTodoItemVO> search(QmsTodoItemSearchQO request, Page<Object> page);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
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);
|
||||
}
|
||||
|
|
@ -13,14 +13,4 @@ import java.util.List;
|
|||
*/
|
||||
public interface IQmsTodoItemService extends IService<QmsTodoItem> {
|
||||
|
||||
/**
|
||||
* 分页查询待办事项列表
|
||||
*/
|
||||
IPage<QmsTodoItemVO> search(QmsTodoItemSearchQO request);
|
||||
|
||||
/**
|
||||
* 批量标记已读
|
||||
* @param ids 待办事项ID列表
|
||||
*/
|
||||
void markAsRead(List<Long> ids);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,39 @@
|
|||
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();
|
||||
}
|
||||
}
|
||||
|
|
@ -20,26 +20,4 @@ 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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
<?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 >= #{request.startDate}
|
||||
</if>
|
||||
<if test="request.endDate != null">
|
||||
AND vit.create_time <= #{request.endDate}
|
||||
</if>
|
||||
ORDER BY itd.id DESC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
@ -2,43 +2,4 @@
|
|||
<!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 >= #{request.startDate}
|
||||
</if>
|
||||
<if test="request.endDate != null">
|
||||
AND t.create_time <= #{request.endDate}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY t.id DESC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -164,7 +164,6 @@ public class PdiTaskOverdueNotifyProcessor implements BasicProcessor {
|
|||
.setCode(task.getTaskNo())
|
||||
.setSourceTypeId(sourceTypeId)
|
||||
.setSourceId(task.getId())
|
||||
.setIsRead(false)
|
||||
.setCreateUserId(leaderId)
|
||||
.setCreateUserName(leader != null ? leader.getUserName() : "未知")
|
||||
.setCreateTime(now);
|
||||
|
|
@ -205,7 +204,6 @@ public class PdiTaskOverdueNotifyProcessor implements BasicProcessor {
|
|||
.setCode(task.getTaskNo())
|
||||
.setSourceTypeId(sourceTypeId)
|
||||
.setSourceId(task.getId())
|
||||
.setIsRead(false)
|
||||
.setCreateUserId(inspectorId)
|
||||
.setCreateUserName(inspector != null ? inspector.getUserName() : "未知")
|
||||
.setCreateTime(now);
|
||||
|
|
@ -221,7 +219,6 @@ public class PdiTaskOverdueNotifyProcessor implements BasicProcessor {
|
|||
.setCode(task.getTaskNo())
|
||||
.setSourceTypeId(sourceTypeId)
|
||||
.setSourceId(task.getId())
|
||||
.setIsRead(false)
|
||||
.setCreateUserId(assistantId)
|
||||
.setCreateUserName(assistant != null ? assistant.getUserName() : "未知")
|
||||
.setCreateTime(now);
|
||||
|
|
|
|||
Loading…
Reference in New Issue