fix:获取移库单对应的移入货位时,加上并发锁
This commit is contained in:
@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.SneakyThrows;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
|
||||
@@ -16,6 +17,7 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdtlServi
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.impl.StIvtIostorinvServiceImpl;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBussManageService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.TwoInBussManageService;
|
||||
@@ -29,6 +31,8 @@ import org.nl.wms.pda.mps.eum.RegionTypeEnum;
|
||||
import org.nl.wms.st.inbill.service.StorPublicService;
|
||||
import org.nl.wms.st.instor.service.HandMoveStorService;
|
||||
import org.nl.wms.st.instor.task.HandMoveStorAcsTask;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -37,6 +41,7 @@ import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -99,6 +104,9 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
@Autowired
|
||||
private TwoInBussManageService twoInBussManageService;
|
||||
|
||||
@Autowired
|
||||
private RedissonClient redissonClient;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void lockStruct(List<String> param, JSONObject json) {
|
||||
@@ -256,6 +264,7 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
|
||||
/**
|
||||
* 准备插入分配明细的参数
|
||||
*
|
||||
* @param likeBoxList 相同木箱的库存
|
||||
* @param dtlDao 明细对象
|
||||
* @return List<StIvtIostorinvdis> 分配明细对象集合
|
||||
@@ -503,7 +512,12 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public void createMove2(List<JSONObject> list) {
|
||||
RLock lock = redissonClient.getLock(StIvtIostorinvServiceImpl.class.getName());
|
||||
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
//子卷包装关系表
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
//物料表
|
||||
@@ -526,10 +540,19 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
JSONObject json = list.get(i);
|
||||
myService.createForMove(json, subList, materList);
|
||||
}
|
||||
} else {
|
||||
throw new BadRequestException("有单据正在分配中,请稍后在试");
|
||||
}
|
||||
} finally {
|
||||
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 移库事务处理
|
||||
*
|
||||
* @param json 移库仓位个体
|
||||
* @param subList 子卷包装关系集合
|
||||
* @param materList 物料集合
|
||||
@@ -832,6 +855,7 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
|
||||
/**
|
||||
* 异常出库转库任务
|
||||
*
|
||||
* @param jsonObject {task_code : 任务编码}
|
||||
* @return JSONObject 仓位对象
|
||||
*/
|
||||
@@ -927,6 +951,7 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
|
||||
/**
|
||||
* 正常出库转库任务
|
||||
*
|
||||
* @param jsonObject {task_code : 任务编码}
|
||||
* @return JSONObject 仓位对象
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user