rev:添加锁:保障wms申请任务时只有一个

This commit is contained in:
zhangzq
2024-12-16 17:35:16 +08:00
parent 924006f3fa
commit b2cf0fc3c5

View File

@@ -14,6 +14,7 @@ import org.nl.acs.ext.wms.data.CreateTaskRequest;
import org.nl.acs.ext.wms.data.CreateTaskResponse;
import org.nl.acs.ext.wms.service.WmsToAcsService;
//import org.nl.modules.logging.InterfaceLogType;
import org.nl.acs.utils.LockUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.common.logging.annotation.Log;
import org.springframework.http.HttpStatus;
@@ -38,28 +39,13 @@ import java.util.concurrent.locks.ReentrantLock;
@Slf4j
public class WmsToAcsController {
private final WmsToAcsService wmstoacsService;
private ReentrantLock lock = new ReentrantLock();
@PostMapping("/task")
@Log(value = "ACS接收WMS任务")
@ApiOperation("接收WMS任务")
@SaIgnore
public ResponseEntity<Object> createFromWms(@RequestBody List<CreateTaskRequest> reqs) {
CreateTaskResponse response = new CreateTaskResponse();
try {
if (lock.tryLock() || lock.tryLock(2, TimeUnit.SECONDS)){
response = wmstoacsService.crateTask(reqs);
Thread.sleep(50000);
}else {
throw new BadRequestException("当前acs正在执行创建任务稍后再试");
}
}catch (Exception ex){
throw new BadRequestException("当前acs正在执行创建任务稍后再试");
}finally {
if (lock.isHeldByCurrentThread() && lock.isLocked()){
lock.unlock();
}
}
CreateTaskResponse response = LockUtils.lock("apply", () -> wmstoacsService.crateTask(reqs), 3);
return new ResponseEntity<>(response, HttpStatus.OK);
}