add:redisson

This commit is contained in:
zhangzhiqiang
2023-02-05 13:01:40 +08:00
parent b17e5172b2
commit 3e5301fdbf
2 changed files with 262 additions and 236 deletions

View File

@@ -362,7 +362,17 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.12.3</version>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-actuator</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- jwt -->
<dependency>
<groupId>io.jsonwebtoken</groupId>

View File

@@ -8,6 +8,7 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
@@ -25,6 +26,8 @@ import org.nl.wms.sch.tasks.EmptyVehicleTask;
import org.nl.wms.sch.tasks.SendOutTask;
import org.nl.wms.st.inbill.service.RawAssistIStorService;
import org.nl.wms.st.inbill.service.StorPublicService;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -34,6 +37,7 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Service
@RequiredArgsConstructor
@@ -48,6 +52,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private final CutConveyorTask cutConveyorTask;
private final RedissonClient redissonClient;
/**
* task_id任务标识
* task_code任务编码
@@ -180,10 +186,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Override
@Transactional(rollbackFor = Exception.class)
@SneakyThrows
public JSONObject apply(JSONObject whereJson) {
log.info("apply请求参数---------------------------------------------"+whereJson.toString());
synchronized (AcsToWmsServiceImpl.class) {
String type = whereJson.getString("type");
JSONObject result = new JSONObject();
RLock lock = redissonClient.getLock("acs_wms_apply:" + type);
boolean isLock = lock.tryLock(3,TimeUnit.SECONDS);
try {
if (isLock){
String device_code = whereJson.getString("device_code");
String vehicle_code = whereJson.getString("vehicle_code");
@@ -429,13 +440,18 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
SendOutTask sendOutTask = new SendOutTask();
sendOutTask.createTask(task_jo);
}
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());
result.put("message", "下发成功!");
return result;
}
}finally {
if (isLock){
lock.unlock();
}
}
result.put("status", HttpStatus.BAD_REQUEST.value());
result.put("message", "锁超时下发失败");
return result;
}
@Override