3 changed files with 74 additions and 3 deletions
@ -0,0 +1,72 @@ |
|||
package org.nl.wms.sch_manage.service.util; |
|||
|
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.SneakyThrows; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.wms.sch_manage.enums.TaskStatus; |
|||
import org.nl.wms.sch_manage.service.ISchBaseTaskService; |
|||
import org.nl.wms.sch_manage.service.dao.SchBaseTask; |
|||
import org.nl.wms.warehouse_management.enums.IOSConstant; |
|||
import org.redisson.api.RLock; |
|||
import org.redisson.api.RedissonClient; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.concurrent.TimeUnit; |
|||
|
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
public class AutoTask { |
|||
|
|||
/** |
|||
* 任务服务 |
|||
*/ |
|||
@Autowired |
|||
private ISchBaseTaskService taskService; |
|||
|
|||
/** |
|||
* 任务工厂服务 |
|||
*/ |
|||
@Autowired |
|||
private TaskFactory taskFactory; |
|||
|
|||
private final RedissonClient redissonClient; |
|||
|
|||
@SneakyThrows |
|||
public void run() { |
|||
RLock lock = redissonClient.getLock(this.getClass().getName()); |
|||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); |
|||
try { |
|||
if (tryLock) { |
|||
sendTask(); |
|||
} |
|||
} catch (Exception e) { |
|||
if (tryLock) { |
|||
lock.unlock(); |
|||
} |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 下发任务 |
|||
*/ |
|||
private void sendTask() { |
|||
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>() |
|||
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO) |
|||
.eq(SchBaseTask::getTask_status, TaskStatus.CREATE.getCode())); |
|||
if (ObjectUtil.isEmpty(taskList)) { |
|||
return; |
|||
} |
|||
// 整理下发acs参数
|
|||
for (SchBaseTask taskDao : taskList) { |
|||
AbstractTask task = taskFactory.getTask(taskDao.getConfig_code()); |
|||
task.sendTaskOne(taskDao.getTask_id()); |
|||
} |
|||
} |
|||
} |
Loading…
Reference in new issue