完善发送COA发布通知功能

This commit is contained in:
funny 2026-04-21 14:14:53 +08:00
parent bf09bca3cb
commit 514080a0f9
1 changed files with 32 additions and 14 deletions

View File

@ -12,9 +12,12 @@ import com.nflg.wms.common.pojo.vo.QmsCoaTaskDetailVO;
import com.nflg.wms.common.pojo.vo.QmsCoaTaskMaterialVO;
import com.nflg.wms.common.pojo.vo.QmsCoaTaskVO;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.QmsCoaTask;
import com.nflg.wms.repository.entity.QmsTodoItem;
import com.nflg.wms.repository.service.IDictionaryItemService;
import com.nflg.wms.repository.service.IQmsCoaTaskService;
import com.nflg.wms.repository.service.IQmsTodoItemService;
import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
@ -23,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
/**
* COA通知管理
@ -37,9 +41,15 @@ public class QmsCoaTaskController extends BaseController {
@Resource
private List<ISendMessageService> sendMessageServices;
@Resource
private IQmsTodoItemService todoItemService;
@Resource
private BasdeSerialNumberControllerService basdeSerialNumberControllerService;
@Resource
private IDictionaryItemService dictionaryItemService;
/**
* 新增COA通知任务
* 状态默认为0待发送
@ -80,22 +90,23 @@ public class QmsCoaTaskController extends BaseController {
@PostMapping("publish")
public ApiResult<Void> publish(@Valid @RequestBody QmsCoaTaskAddQO qo) {
coaTaskService.publish(qo);
Long dictionaryItemServiceId = dictionaryItemService.getId("消息类型", "COANotificationSent");
VUtil.trueThrowBusinessError(Objects.isNull(dictionaryItemServiceId)).throwMessage("消息类型不存在");
// 推送COA通知
QmsTodoItem qmsTodoItem = new QmsTodoItem()
.setCode(basdeSerialNumberControllerService.generateSerialNumber(32))
.setIsRead(false)
.setSourceTypeId(2046157760401182721L)
.setSourceTypeId(dictionaryItemServiceId)
.setSourceId(coaTaskService.lambdaQuery().eq(QmsCoaTask::getMaterialId,qo.getMaterialNo()).one().getId())
.setCreateUserId(UserUtil.getUserId())
.setCreateUserName(UserUtil.getUserName())
.setCreateTime(java.time.LocalDateTime.now());
sendMessageServices.forEach(service -> service.sendSystemMessage(qmsTodoItem));
todoItemService.save(qmsTodoItem);
return ApiResult.success();
}
/**
* 批量发送状态改为1已发送填入发送时间
* 批量发送状态改为1已发送填入发送时间每条任务单独推送一条待办消息
*
* @param ids 任务ID列表
*/
@ -103,16 +114,23 @@ public class QmsCoaTaskController extends BaseController {
@PostMapping("send")
public ApiResult<Void> send(@RequestBody List<Long> ids) {
coaTaskService.send(ids);
// 推送COA通知
Long dictionaryItemServiceId = dictionaryItemService.getId("消息类型", "COANotificationSent");
VUtil.trueThrowBusinessError(Objects.isNull(dictionaryItemServiceId)).throwMessage("消息类型不存在");
Long currentUserId = UserUtil.getUserId();
String currentUserName = UserUtil.getUserName();
java.time.LocalDateTime now = java.time.LocalDateTime.now();
// 每个任务ID单独推送一条待办消息
for (Long taskId : ids) {
QmsTodoItem qmsTodoItem = new QmsTodoItem()
.setCode(basdeSerialNumberControllerService.generateSerialNumber(32))
.setIsRead(false)
.setSourceTypeId(2046157760401182721L)
.setSourceId(0L)
.setCreateUserId(UserUtil.getUserId())
.setCreateUserName(UserUtil.getUserName())
.setCreateTime(java.time.LocalDateTime.now());
sendMessageServices.forEach(service -> service.sendSystemMessage(qmsTodoItem));
.setSourceTypeId(dictionaryItemServiceId)
.setSourceId(taskId)
.setCreateUserId(currentUserId)
.setCreateUserName(currentUserName)
.setCreateTime(now);
todoItemService.save(qmsTodoItem);
}
return ApiResult.success();
}