Commit e8f5305b zshaohui

1.移库问题修改

2.获取不到料串目的地修改
1 个父辈 a8bc1204
......@@ -837,7 +837,7 @@ public class DeviceController {
// 2024-05-18 16:55:46.593 INFO [DeviceController.java:862] - 查找到锁定的外侧库位为目标库位:20768B_02_B01_008
String checkOutPosName = paramMap.get("checkOutPosName");
String needMovePosName = paramMap.get("needMovePosName");
log.info("出库的库位为:"+checkOutPosName+",需要移动的库位为:"+needMovePosName);
log.info("出库的库位为:" + checkOutPosName + ",需要移动的库位为:" + needMovePosName);
StoragePos checkOutPos = storagePosManager.getByPosName(checkOutPosName);
if (checkOutPos == null) {
return ResultBean.newErrorResult(-1, "smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{"posName", checkOutPosName});
......@@ -850,7 +850,7 @@ public class DeviceController {
//如果barcode不为空,则提前锁定目标库位
boolean hasReel = true;
Barcode barcode = needMovePos.getBarcode();
String posName="";
String posName = "";
if (barcode != null) {
// Storage storage = dataCache.getStorageById(checkOutPos.getStorageId());
// ReelLockPosInfo reelLocInfo = new ReelLockPosInfo();
......@@ -862,82 +862,103 @@ public class DeviceController {
// log.info("提前锁定库位:" + checkOutPos.getPosName() + ",barcode为:" + barcode.getBarcode());
//有料,先查找锁定的lockS库位,有的话返回
ReelLockPosInfo lockPosInfo= ReelLockPosUtil.getLockPosInfoByCode(getLockPosSKey(needMovePos.getStorageId()));
if(lockPosInfo!=null&&ObjectUtil.isNotEmpty(lockPosInfo.getLockPosName())){
posName=lockPosInfo.getLockPosName();
log.info("查找到锁定的内侧库位为目标库位:"+posName+" ");
}
else{
lockPosInfo=ReelLockPosUtil.getLockPosInfoByCode(getLockPosKey(needMovePos.getStorageId()));
if(lockPosInfo!=null&&ObjectUtil.isNotEmpty(lockPosInfo.getLockPosName())){
posName=lockPosInfo.getLockPosName();
log.info("查找到锁定的外侧库位为目标库位:"+posName+" ");
}else{
ReelLockPosInfo lockPosInfo = ReelLockPosUtil.getLockPosInfoByCode(getLockPosSKey(needMovePos.getStorageId()));
if (lockPosInfo != null && ObjectUtil.isNotEmpty(lockPosInfo.getLockPosName())) {
posName = lockPosInfo.getLockPosName();
log.info("查找到锁定的内侧库位为目标库位:" + posName + " ");
StoragePos pos = storagePosManager.getByPosName(posName);
if (pos != null) {
if (pos.getW() != needMovePos.getW() && pos.getH() != needMovePos.getH()) {
log.info(posName+"对应的w{},h{}与移动的宽{},高{}不一致,重新找",pos.getW(),pos.getH(),needMovePos.getW(),needMovePos.getH());
posName = "";
}
} else {
posName = "";
}
}
if (StringUtils.isEmpty(posName)) {
lockPosInfo = ReelLockPosUtil.getLockPosInfoByCode(getLockPosKey(needMovePos.getStorageId()));
if (lockPosInfo != null && ObjectUtil.isNotEmpty(lockPosInfo.getLockPosName())) {
posName = lockPosInfo.getLockPosName();
log.info("查找到锁定的外侧库位为目标库位:" + posName + " ");
StoragePos pos = storagePosManager.getByPosName(posName);
if (pos != null) {
if (pos.getW() != needMovePos.getW() && pos.getH() != needMovePos.getH()) {
log.info(posName+"对应的w{},h{}与移动的宽{},高{}不一致,重新找",pos.getW(),pos.getH(),needMovePos.getW(),needMovePos.getH());
posName = "";
}
} else {
posName = "";
}
}
}
if (StringUtils.isEmpty(posName)) {
//查找一个库位号
StoragePos pos = null;
int loopCount=0;
List<Storage> storageList=new ArrayList<>();
Storage storage=dataCache.getStorageById(needMovePos.getStorageId());
int loopCount = 0;
List<Storage> storageList = new ArrayList<>();
Storage storage = dataCache.getStorageById(needMovePos.getStorageId());
storageList.add(storage);
List<String> cidList=new ArrayList<>();
List<String> cidList = new ArrayList<>();
cidList.add(storage.getCid());
while (pos == null){
while (pos == null) {
loopCount++;
if(loopCount>=10 ){
log.info(barcode.getBarcode()+"已循环查找10次 直接跳出循环");
if (loopCount >= 10) {
log.info(barcode.getBarcode() + "已循环查找10次 直接跳出循环");
}
//优先找B结束的,如果没有再找F的
String endStr = "B";
pos = taskService.findEmptyPosForMoveIn(storageList, barcode, "", "",needMovePosName,endStr);
if (pos == null){
pos = taskService.findEmptyPosForMoveIn(storageList, barcode, "", "", needMovePosName, endStr);
if (pos == null) {
endStr = "F";
pos = taskService.findEmptyPosForMoveIn(storageList, barcode, "", "",needMovePosName,endStr);
pos = taskService.findEmptyPosForMoveIn(storageList, barcode, "", "", needMovePosName, endStr);
break;
}
if (pos == null){
if (pos == null) {
break;
}
//如果是以S结尾的,则判断不带S的有没有料
posName = pos.getPosName();
String wPosName="";
if (posName.endsWith("B") || posName.endsWith("b")){
log.info(posName+"以B结尾,需要判断外层有没有物料");
wPosName = posName.substring(0,posName.length()-1);
wPosName= wPosName +"F";
String wPosName = "";
if (posName.endsWith("B") || posName.endsWith("b")) {
log.info(posName + "以B结尾,需要判断外层有没有物料");
wPosName = posName.substring(0, posName.length() - 1);
wPosName = wPosName + "F";
StoragePos storagePos = storagePosManager.getByPosName(wPosName);
if (storagePos != null){
if (storagePos.getBarcode() != null){
log.info("查找到目标库位:"+pos.getPosName()+" 的外侧库位"+wPosName+"有物料信息,重新查找库位 ");
if (storagePos != null) {
if (storagePos.getBarcode() != null) {
log.info("查找到目标库位:" + pos.getPosName() + " 的外侧库位" + wPosName + "有物料信息,重新查找库位 ");
ReelLockPosInfo reelLocInfo = new ReelLockPosInfo();
reelLocInfo.setBarcode(pos.getId());
reelLocInfo.setCid(dataCache.getStorageById(pos.getStorageId()).getCid());
reelLocInfo.setLockPosName(pos.getPosName());
reelLocInfo.setLockPosId(pos.getId());
ReelLockPosUtil.addReelLockPosInfo(reelLocInfo,cidList);
ReelLockPosUtil.addReelLockPosInfo(reelLocInfo, cidList);
pos = null;
posName="";
}else {
log.info("查找到目标库位:"+pos.getPosName()+" 且外侧库位" + wPosName + "无料,锁定两个库位 :" + pos.getPosName() + "=" +
posName = "";
} else {
log.info("查找到目标库位:" + pos.getPosName() + " 且外侧库位" + wPosName + "无料,锁定两个库位 :" + pos.getPosName() + "=" +
getLockPosSKey(needMovePos.getStorageId()) + ",wPosName=" + getLockPosKey(needMovePos.getStorageId()));
//是内侧库位,且外侧库位也无料,锁定两个库位
AddLock(pos,getLockPosSKey(needMovePos.getStorageId()),cidList);
AddLock(pos, getLockPosSKey(needMovePos.getStorageId()), cidList);
AddLock(storagePos,getLockPosKey(needMovePos.getStorageId()),cidList);
AddLock(storagePos, getLockPosKey(needMovePos.getStorageId()), cidList);
//如果外侧有任务,则改成新库位一样的
DataLog dataLog = null;
for (DataLog queueTask : taskService.getQueueTasks()) {
if (barcode.getBarcode().equals(queueTask)){
if (barcode.getBarcode().equals(queueTask)) {
dataLog = queueTask;
break;
}
}
if (dataLog != null){
log.info("posName:[{}],barcode为[{}]有任务,需要重新设置任务库位:[{}]",dataLog.getPosName(),barcode.getBarcode(),pos.getPosName());
if (dataLog != null) {
log.info("posName:[{}],barcode为[{}]有任务,需要重新设置任务库位:[{}]", dataLog.getPosName(), barcode.getBarcode(), pos.getPosName());
dataLog.setPosName(pos.getPosName());
dataLog.setPosId(pos.getId());
if (dataLog.isExecuting() || dataLog.isWait()){
if (dataLog.isExecuting() || dataLog.isWait()) {
dataLog.setStatus(OP_STATUS.WAIT.name());
taskService.updateQueueTask(dataLog);
} else {
......@@ -947,25 +968,25 @@ public class DeviceController {
}
}
}else {
} else {
//是外侧库位,直接锁定外侧库位
log.info("查找到外侧库位作为目标库位,锁定库位 :" + pos.getPosName() + "=" + getLockPosKey(needMovePos.getStorageId()));
AddLock(pos,getLockPosKey(needMovePos.getStorageId()),cidList);
AddLock(pos, getLockPosKey(needMovePos.getStorageId()), cidList);
//如果外侧有任务,则改成新库位一样的
DataLog dataLog = null;
for (DataLog queueTask : taskService.getQueueTasks()) {
if (barcode.getBarcode().equals(queueTask)){
if (barcode.getBarcode().equals(queueTask)) {
dataLog = queueTask;
break;
}
}
if (dataLog != null){
log.info("posName:[{}],barcode为[{}]有任务,需要重新设置任务库位:[{}]",dataLog.getPosName(),barcode.getBarcode(),pos.getPosName());
if (dataLog != null) {
log.info("posName:[{}],barcode为[{}]有任务,需要重新设置任务库位:[{}]", dataLog.getPosName(), barcode.getBarcode(), pos.getPosName());
dataLog.setPosName(pos.getPosName());
dataLog.setPosId(pos.getId());
if (dataLog.isExecuting() || dataLog.isWait()){
if (dataLog.isExecuting() || dataLog.isWait()) {
dataLog.setStatus(OP_STATUS.WAIT.name());
taskService.updateQueueTask(dataLog);
} else {
......@@ -975,26 +996,26 @@ public class DeviceController {
}
}
}
}
//然后找lock库位,有的话返回
//没库位查找一个库位,如果是里面的,判断外面需要没料
//如果是外面的锁定为Lock
} else {
else {
hasReel = false;
}
}
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("hasReel", hasReel);
if (hasReel){
if (hasReel) {
resultMap.put("barcode", barcode.getBarcode());
resultMap.put("partNumber",barcode.getPartNumber());
resultMap.put("partNumber", barcode.getPartNumber());
if(ObjectUtil.isEmpty(posName)){
if (ObjectUtil.isEmpty(posName)) {
return ResultBean.newErrorResult(-1, "smfcore.shelf.msg.inError", "未找到适合[{0}]的库位", new String[]{"posName", needMovePosName});
}else{
} else {
resultMap.put("posName", posName);
}
}
return ResultBean.newOkResult(resultMap);
}
......
......@@ -121,9 +121,10 @@ public class StackerController {
List<Storage> noMsdStorageList = new ArrayList<>();
for (Storage storage : dataCache.getAllStorage().values()) {
if (StringUtils.isNotEmpty(storageCid)){
if (storageCid.equals(storage.getCid()));
if (storageCid.equals(storage.getCid())) {
continue;
}
}
if (!msdCidList.contains(storage.getCid())) {
noMsdStorageList.add(storage);
}
......@@ -136,9 +137,10 @@ public class StackerController {
List<Storage> msdStorageList = new ArrayList<>();
for (Storage storage : dataCache.getAllStorage().values()) {
if (StringUtils.isNotEmpty(storageCid)){
if (storageCid.equals(storage.getCid()));
if (storageCid.equals(storage.getCid())) {
continue;
}
}
if (msdCidList.contains(storage.getCid())) {
msdStorageList.add(storage);
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!