package com.ycl.task;
|
|
import com.ycl.platform.domain.entity.WorkOrder;
|
import com.ycl.platform.domain.vo.YwPointJobVO;
|
import com.ycl.platform.mapper.WorkOrderMapper;
|
import com.ycl.system.domain.SysConfig;
|
import com.ycl.system.mapper.SysConfigMapper;
|
import com.ycl.utils.DateUtils;
|
import constant.PointConfigConstants;
|
import enumeration.OvertimeStatus;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.StringUtils;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @author:xp
|
* @date:2024/7/25 13:36
|
*/
|
@Slf4j
|
@RequiredArgsConstructor
|
@Component("workOrderTask")
|
public class WorkOrderTask {
|
|
private final WorkOrderMapper workOrderMapper;
|
private final SysConfigMapper configMapper;
|
|
private final static String IMPORTANT = "important";
|
private final static String NORMAL = "normal";
|
|
/**
|
* 处理工单有效时间,超时状态
|
*
|
*/
|
public void handleTime() {
|
List<YwPointJobVO> handlingWorkOrderList = workOrderMapper.handlingWorkOrderList();
|
SysConfig config = new SysConfig();
|
config.setConfigKey(PointConfigConstants.IMPORTANT);
|
Integer importantTime = Integer.valueOf(configMapper.selectConfig(config).getConfigValue());
|
config.setConfigKey(PointConfigConstants.NORMAL);
|
Integer normalTime = Integer.valueOf(configMapper.selectConfig(config).getConfigValue());
|
config.setConfigKey(PointConfigConstants.NORMAL_ALARM);
|
Integer normalAlarmTime = Integer.valueOf(configMapper.selectConfig(config).getConfigValue());
|
config.setConfigKey(PointConfigConstants.IMPORTANT_ALARM);
|
Integer importantAlarmTime = Integer.valueOf(configMapper.selectConfig(config).getConfigValue());
|
|
Date now = new Date();
|
handlingWorkOrderList.stream().forEach(workOrder -> {
|
int diffHours = DateUtils.differentHoursByMillisecond(now, workOrder.getCreateTime());
|
if (StringUtils.hasText(workOrder.getPointTagString()) && workOrder.getPointTagString().contains(IMPORTANT)) {
|
this.handleOverTime(workOrder.getId(), diffHours, importantTime, importantAlarmTime);
|
} else {
|
this.handleOverTime(workOrder.getId(), diffHours, normalTime, normalAlarmTime);
|
}
|
});
|
log.info("工单超时状态任务执行完成");
|
}
|
|
private void handleOverTime(Integer id, Integer diffHours, Integer time, Integer alarmTime) {
|
if (diffHours <= time) {
|
if (time - diffHours < alarmTime) {
|
WorkOrder wo = new WorkOrder();
|
wo.setId(id);
|
wo.setOvertime(OvertimeStatus.ALARM.getValue());
|
workOrderMapper.updateById(wo);
|
}
|
} else {
|
WorkOrder wo = new WorkOrder();
|
wo.setId(id);
|
wo.setOvertime(OvertimeStatus.YES.getValue());
|
workOrderMapper.updateById(wo);
|
}
|
}
|
}
|