fix: 申请任务相关代码并发优化
This commit is contained in:
@@ -51,6 +51,13 @@ public interface AcsToWmsService {
|
||||
*/
|
||||
JSONObject apply(JSONObject param) ;
|
||||
|
||||
/**
|
||||
* 带事务
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
JSONObject transApply(JSONObject param) ;
|
||||
|
||||
/**
|
||||
* ACS机械手给WMS发送任务
|
||||
* 组盘
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSON;
|
||||
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;
|
||||
@@ -36,12 +37,16 @@ import org.nl.wms.sch.task.send.material.YZSendMaterialTask;
|
||||
import org.nl.wms.sch.task.to.pack.BTHCToPackageTask;
|
||||
import org.nl.wms.sch.task.to.pack.FJToPackageTask;
|
||||
import org.nl.wms.sch.task.util.TaskUtils;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@@ -78,6 +83,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
|
||||
private final SZCallMaterialTask szCallMaterialTask;
|
||||
|
||||
@Autowired
|
||||
private RedissonClient redissonClient;
|
||||
@Autowired
|
||||
private AcsToWmsService acsToWmsService;
|
||||
|
||||
/**
|
||||
* task_id:任务标识
|
||||
* task_code:任务编码
|
||||
@@ -199,9 +209,29 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public JSONObject apply(JSONObject jsonObject) {
|
||||
String type = (String) jsonObject.get("type");
|
||||
RLock lock = redissonClient.getLock("acs_to_wms:" + type);
|
||||
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
return acsToWmsService.transApply(jsonObject);
|
||||
}
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject apply(JSONObject param) {
|
||||
public JSONObject transApply(JSONObject param) {
|
||||
String point_code = param.getString("device_code");
|
||||
String type = param.getString("type");
|
||||
if (StrUtil.isBlank(type)) {
|
||||
@@ -232,6 +262,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
method_param.put("request_param", request_param);
|
||||
method_param.put("create_id", ACSSystem.id);
|
||||
method_param.put("create_name", ACSSystem.nick_name);
|
||||
|
||||
switch (type) {
|
||||
case "1":
|
||||
// 送料
|
||||
@@ -801,8 +832,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
|
||||
JSONObject data = null;
|
||||
if (!"0000".equals(vehicle_code)) {
|
||||
data = WQLObject
|
||||
.getWQLObject("st_ivt_vehicle_detail")
|
||||
data = WQLObject.getWQLObject("st_ivt_vehicle_detail")
|
||||
.query("is_delete = '0' AND vehicle_type = '" + vehicle_type + "' AND vehicle_code = '" + vehicle_code + "'")
|
||||
.uniqueResult(0);
|
||||
}
|
||||
@@ -840,10 +870,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
} else {
|
||||
update.put("vehicle_type", String.valueOf(Integer.parseInt(vehicle_type) + 2));
|
||||
}
|
||||
WQLObject
|
||||
.getWQLObject("sch_base_point")
|
||||
.update(update, "point_code = '" + point_code + "'");
|
||||
|
||||
WQLObject.getWQLObject("sch_base_point").update(update, "point_code = '" + point_code + "'");
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
@@ -890,8 +917,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
String vehicle_code = point.getString("vehicle_code");
|
||||
JSONObject data = null;
|
||||
if (StrUtil.isNotBlank(vehicle_code) && !"0000".equals(vehicle_code)) {
|
||||
data = WQL
|
||||
.getWO("ACS_TO_WMS")
|
||||
data = WQL.getWO("ACS_TO_WMS")
|
||||
.addParam("flag", "1")
|
||||
.addParam("vehicle_type", vehicle_type)
|
||||
.addParam("vehicle_code", vehicle_code)
|
||||
@@ -914,8 +940,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
}
|
||||
|
||||
boolean to_package = false;
|
||||
JSONObject workorder = WQL
|
||||
.getWO("ACS_TO_WMS")
|
||||
JSONObject workorder = WQL.getWO("ACS_TO_WMS")
|
||||
.addParam("flag", "2")
|
||||
.addParam("vehicle_code", vehicle_code)
|
||||
.process()
|
||||
|
||||
Reference in New Issue
Block a user