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