Compare commits

..

No commits in common. "4e32725dc74e0d66b46d303516dfb065d8ffccf0" and "81bb321ce7fed71a87e215f5ed58cbdf06cf4176" have entirely different histories.

2 changed files with 5 additions and 118 deletions

View File

@ -1,10 +1,7 @@
package com.nflg.wms.scheduled.processor; package com.nflg.wms.scheduled.processor;
import cn.hutool.core.collection.CollectionUtil; import com.nflg.wms.repository.entity.QmsIncomingInspectionTask;
import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskService;
import com.nflg.wms.repository.entity.*;
import com.nflg.wms.repository.service.*;
import com.nflg.wms.scheduled.service.BasdeSerialNumberControllerService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult; import tech.powerjob.worker.core.processor.ProcessResult;
@ -13,8 +10,6 @@ import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
import tech.powerjob.worker.log.OmsLogger; import tech.powerjob.worker.log.OmsLogger;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
@Component(value = "IncomingInspectionTaskOverdueProcessor") @Component(value = "IncomingInspectionTaskOverdueProcessor")
public class IncomingInspectionTaskOverdueProcessor implements BasicProcessor { public class IncomingInspectionTaskOverdueProcessor implements BasicProcessor {
@ -22,77 +17,17 @@ public class IncomingInspectionTaskOverdueProcessor implements BasicProcessor {
@Resource @Resource
private IQmsIncomingInspectionTaskService incomingInspectionTaskService; private IQmsIncomingInspectionTaskService incomingInspectionTaskService;
@Resource
private IUserInteriorService userInteriorService;
@Resource
private IQmsQualityInspectorService qualityInspectorService;
@Resource
private IDepartmentService departmentService;
@Resource
private IQmsTodoItemService qmsTodoItemService;
@Resource
private BasdeSerialNumberControllerService basdeSerialNumberControllerService;
@Resource
private IDictionaryItemService dictionaryItemService;
@Override @Override
public ProcessResult process(TaskContext context) { public ProcessResult process(TaskContext context) {
OmsLogger omsLogger = context.getOmsLogger(); OmsLogger omsLogger = context.getOmsLogger();
omsLogger.info("开始"); omsLogger.info("开始");
try { try {
List<QmsIncomingInspectionTask> tasks = incomingInspectionTaskService.lambdaQuery() incomingInspectionTaskService.lambdaUpdate()
.set(QmsIncomingInspectionTask::getIsOverdue, true)
.lt(QmsIncomingInspectionTask::getInspectionStatus, 2) .lt(QmsIncomingInspectionTask::getInspectionStatus, 2)
.eq(QmsIncomingInspectionTask::getIsOverdue, false) .eq(QmsIncomingInspectionTask::getIsOverdue, false)
.lt(QmsIncomingInspectionTask::getRequiredFinishTime, LocalDateTime.now()) .lt(QmsIncomingInspectionTask::getRequiredFinishTime, LocalDateTime.now())
.list();
omsLogger.info("" + tasks.size() + "条任务过期");
if (CollectionUtil.isNotEmpty(tasks)) {
omsLogger.info("开始更新任务过期状态");
for (QmsIncomingInspectionTask task : tasks) {
omsLogger.info("开始处理:{}", task.getTaskNo());
Long handlerId = Objects.isNull(task.getAgentId()) ? task.getInspectorId() : task.getAgentId();
QmsQualityInspector qualityInspector = qualityInspectorService.getById(handlerId);
if (Objects.isNull(qualityInspector)) {
omsLogger.error("未找到质检人员:{}", handlerId);
break;
}
UserInterior userInterior = userInteriorService.lambdaQuery().eq(UserInterior::getUserId, qualityInspector.getUserId()).one();
if (Objects.isNull(userInterior)) {
omsLogger.error("未找到用户:{}", qualityInspector.getUserId());
break;
}
Department department = departmentService.getById(userInterior.getDeptId());
if (Objects.isNull(department)) {
omsLogger.error("未找到部门:{}", userInterior.getDeptId());
break;
}
if (Objects.isNull(department.getHeadUserId())) {
omsLogger.error("部门未设置负责人:{}", department.getName());
break;
}
omsLogger.info("给部门负责人【{}】发送消息", department.getHeadUserName());
qmsTodoItemService.save(new QmsTodoItem()
.setCode(basdeSerialNumberControllerService.generateSerialNumber(32))
.setSourceTypeId(dictionaryItemService.getIdByCode("MessageType", "IQCDetectionTaskTimeoutReminder"))
.setSourceId(task.getId())
.setCreateUserId(department.getHeadUserId())
.setCreateUserName(department.getHeadUserName())
.setCreateTime(LocalDateTime.now())
);
omsLogger.info("发送消息成功");
}
incomingInspectionTaskService.lambdaUpdate()
.set(QmsIncomingInspectionTask::getIsOverdue, true)
.eq(QmsIncomingInspectionTask::getIsOverdue, false)
.in(QmsIncomingInspectionTask::getId, tasks.stream().map(QmsIncomingInspectionTask::getId).toList())
.update(); .update();
omsLogger.info("更新任务过期状态完成");
}
return new ProcessResult(true, "成功"); return new ProcessResult(true, "成功");
} catch (Exception e) { } catch (Exception e) {
omsLogger.error("异常", e); omsLogger.error("异常", e);

View File

@ -1,48 +0,0 @@
package com.nflg.wms.scheduled.service;
import cn.hutool.core.util.StrUtil;
import com.nflg.wms.repository.entity.BasdeSerialNumber;
import com.nflg.wms.repository.service.IBasdeSerialNumberService;
import jakarta.annotation.Resource;
import org.springframework.retry.annotation.Backoff;
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Objects;
@Component
public class BasdeSerialNumberControllerService {
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
private static final int MAX_RETRY = 5; // 最大重试次数
@Resource
private IBasdeSerialNumberService basdeSerialNumberService;
@Retryable(
maxAttempts = 5, // 最大重试次数包括第一次调用
backoff = @Backoff(delay = 1000) // 重试间隔1秒
)
public String generateSerialNumber(Integer businessType) {
String currentDate = LocalDate.now().format(DATE_FORMATTER);
BasdeSerialNumber serialNumber = basdeSerialNumberService.lambdaQuery()
.eq(BasdeSerialNumber::getBusinessType, businessType)
.one();
if (Objects.isNull(serialNumber)) {
return null;
}
int nextSerial = 0;
if (StrUtil.equals(currentDate, serialNumber.getCurrentDateStr())) {
nextSerial = serialNumber.getMaxSerial();
}
nextSerial = nextSerial + 1;
serialNumber.setMaxSerial(nextSerial);
serialNumber.setCurrentDateStr(currentDate);
basdeSerialNumberService.updateById(serialNumber);
// 格式化为4位数字不足补零
return serialNumber.getBusinessPrefixNumber() + currentDate + String.format("%04d", nextSerial);
}
}