Commit 1e2338bd zshaohui

1.退库上架传完整条码

2.获取可用料格加缓存
1 个父辈 05db7f97
...@@ -265,7 +265,7 @@ public class CDeviceController { ...@@ -265,7 +265,7 @@ public class CDeviceController {
else if (MaterialUtil.ticketReturn(materialStr)){ else if (MaterialUtil.ticketReturn(materialStr)){
log.info(materialStr+"绑定单据退库上架,barcode为:"+barcode.getBarcode()); log.info(materialStr+"绑定单据退库上架,barcode为:"+barcode.getBarcode());
TicketReturn ticketReturn = MaterialUtil.getTicketReturnInfo(materialStr); TicketReturn ticketReturn = MaterialUtil.getTicketReturnInfo(materialStr);
TicketUpResult ticketUp = LuxsanApi.ticketUp(new TicketUpRequest(CommonUtil.plantCode, ticketReturn.getTicket(), ticketReturn.getTicketItem(), binCodeStr, Arrays.asList(barcode.getBarcode()),barcode.getAmount())); TicketUpResult ticketUp = LuxsanApi.ticketUp(new TicketUpRequest(CommonUtil.plantCode, ticketReturn.getTicket(), ticketReturn.getTicketItem(), binCodeStr, Arrays.asList(barcode.getFullCode()),barcode.getAmount()));
barcode.setLabelId(ticketUp.getLABEL_ID()); barcode.setLabelId(ticketUp.getLABEL_ID());
} }
...@@ -784,29 +784,8 @@ public class CDeviceController { ...@@ -784,29 +784,8 @@ public class CDeviceController {
return ResultBean.newErrorResult(-1,"",stackerId+"未找到可用料箱"); return ResultBean.newErrorResult(-1,"",stackerId+"未找到可用料箱");
} }
//判断AGV是上的料箱有几个 callAgvTask(stackerId, stackerBarcode);
int count = 0; log.info("入料机构获取可用料格:"+stackerId+"返回的数据为:"+JSON.toJSONString(validBin));
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog dataLog : allTasks) {
if (dataLog.isCheckOutTask() && (dataLog.getStatus().equals(OP_STATUS.WAIT.name()))
|| dataLog.getStatus().equals(OP_STATUS.EXECUTING.name())
|| dataLog.getStatus().equals(OP_STATUS.OUT_ON_AGV.name())) {
if (TaskCurrentLoc.In1_FeedingInlet.equals(dataLog.getLoc())
|| TaskCurrentLoc.In2_FeedingInlet.equals(dataLog.getLoc())
|| TaskCurrentLoc.In_FeedingInlet.equals(dataLog.getLoc())) {
count = count + 1;
}
}
}
if (count < 4) {
try {
log.info("AGV上的料箱数量小于4,呼叫一个空料箱出来");
String materialSize = MaterialUtil.getMaterialSize(stackerId);
BoxHandleUtil.callEmptyBox(materialSize, TaskCurrentLoc.In_FeedingInlet, stackerBarcode.getWarehouseCode(), new ArrayList<>());
} catch (Exception e) {
log.info("呼叫空箱报错:" + e.getMessage());
}
}
return ResultBean.newOkResult(validBin); return ResultBean.newOkResult(validBin);
} }
...@@ -1029,6 +1008,32 @@ public class CDeviceController { ...@@ -1029,6 +1008,32 @@ public class CDeviceController {
return ResultBean.newOkResult(boxBarcode.getHeightMap()); return ResultBean.newOkResult(boxBarcode.getHeightMap());
} }
private synchronized void callAgvTask(String stackerId, Barcode stackerBarcode) {
//判断AGV是上的料箱有几个
int count = 0;
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog dataLog : allTasks) {
if (dataLog.isCheckOutTask() && (dataLog.getStatus().equals(OP_STATUS.WAIT.name()))
|| dataLog.getStatus().equals(OP_STATUS.EXECUTING.name())
|| dataLog.getStatus().equals(OP_STATUS.OUT_ON_AGV.name())) {
if (TaskCurrentLoc.In1_FeedingInlet.equals(dataLog.getLoc())
|| TaskCurrentLoc.In2_FeedingInlet.equals(dataLog.getLoc())
|| TaskCurrentLoc.In_FeedingInlet.equals(dataLog.getLoc())) {
count = count + 1;
}
}
}
log.info("入料机构获取可用料格:"+stackerId+"AGV上的箱子数为:"+count);
if (count < 4) {
try {
log.info("AGV上的料箱数量小于4,呼叫一个空料箱出来");
String materialSize = MaterialUtil.getMaterialSize(stackerId);
BoxHandleUtil.callEmptyBox(materialSize, TaskCurrentLoc.In_FeedingInlet, stackerBarcode.getWarehouseCode(), new ArrayList<>());
} catch (Exception e) {
log.info("呼叫空箱报错:" + e.getMessage());
}
}
}
private void generatePutInTask(Barcode barcode, Barcode boxBarcode,String status) { private void generatePutInTask(Barcode barcode, Barcode boxBarcode,String status) {
......
...@@ -276,7 +276,9 @@ public class CtuDeviceController { ...@@ -276,7 +276,9 @@ public class CtuDeviceController {
|| TaskCurrentLoc.Out1_FeedingInlet.equals(loc) || TaskCurrentLoc.Out1_FeedingInlet.equals(loc)
|| TaskCurrentLoc.Out2_FeedingInlet.equals(loc) || TaskCurrentLoc.Out2_FeedingInlet.equals(loc)
) { ) {
dataLog.setStatus(loc); if (dataLog.isCheckOutTask()) {
dataLog.setStatus(loc);
}
} }
if (dataLog.isExecuting() || dataLog.isWait()){ if (dataLog.isExecuting() || dataLog.isWait()){
taskService.updateQueueTask(dataLog); taskService.updateQueueTask(dataLog);
......
...@@ -38,11 +38,21 @@ public class BinCacheUtil { ...@@ -38,11 +38,21 @@ public class BinCacheUtil {
BinCacheUtil.taskService = service; BinCacheUtil.taskService = service;
} }
public static long time = 0l;
public static Map<String, String> cacheBinCodeMap = null;
public static boolean canPutInBinCode(String binCode, String warehouseCode) { public static boolean canPutInBinCode(String binCode, String warehouseCode) {
Map<String, String> cacheMap = binCodeCacheMap(warehouseCode);
if (cacheBinCodeMap == null || time == 0l || System.currentTimeMillis() - time > 1000*60*10){
cacheBinCodeMap = binCodeCacheMap(warehouseCode);
time = System.currentTimeMillis();
log.info("获取可用料箱,缓存可能为空,时间可能为空,当前时间与上一次时间相差10分钟:"+(System.currentTimeMillis() - time));
}
//判断code是否相同 //判断code是否相同
String code = cacheMap.get(binCode); String code = cacheBinCodeMap.get(binCode);
if (StringUtils.isNotEmpty(code)) { if (StringUtils.isNotEmpty(code)) {
if (code.equals(warehouseCode)) { if (code.equals(warehouseCode)) {
//binCodeUpdateTime = System.currentTimeMillis(); //binCodeUpdateTime = System.currentTimeMillis();
...@@ -113,12 +123,12 @@ public class BinCacheUtil { ...@@ -113,12 +123,12 @@ public class BinCacheUtil {
String barcode = stackerBarcode.getBarcode(); String barcode = stackerBarcode.getBarcode();
String materialSize = MaterialUtil.getMaterialSize(barcode); String materialSize = MaterialUtil.getMaterialSize(barcode);
log.info("收到料串信息为:" + barcode + "尺寸为:" + materialSize); log.info("入料机构获取可用料格,收到料串信息为:" + barcode + "尺寸为:" + materialSize);
//判断当前工作的料箱能不能放入 //判断当前工作的料箱能不能放入
if (StringUtils.isNotEmpty(binListStr)) { if (StringUtils.isNotEmpty(binListStr)) {
log.info(barcode+"正在工作的料格为:" + binListStr); log.info("入料机构获取可用料格:"+barcode+"正在工作的料格为:" + binListStr);
String[] binStr = binListStr.split(","); String[] binStr = binListStr.split(",");
List<String> binCodeList = getValidBinList(stackerBarcode, Arrays.asList(binStr)); List<String> binCodeList = getValidBinList(stackerBarcode, Arrays.asList(binStr));
...@@ -150,11 +160,11 @@ public class BinCacheUtil { ...@@ -150,11 +160,11 @@ public class BinCacheUtil {
//如果不为空,返回 //如果不为空,返回
if (validBinList != null && !validBinList.isEmpty()) { if (validBinList != null && !validBinList.isEmpty()) {
log.info(barcode+"获取到可用料格为:" + JSON.toJSONString(validBinList));
String resultStr = validBinList.get(0); String resultStr = validBinList.get(0);
boxCode = BoxHandleUtil.getBoxStr(resultStr, false); boxCode = BoxHandleUtil.getBoxStr(resultStr, false);
boxLoc = source; boxLoc = source;
stackerLoc = source; stackerLoc = source;
log.info("入料机构获取到当前正在工作的料格"+barcode+"获取到可用料格为:" + JSON.toJSONString(validBinList));
return new ValidBin(boxCode, boxLoc, stackerLoc, validBinList); return new ValidBin(boxCode, boxLoc, stackerLoc, validBinList);
} }
} }
...@@ -162,7 +172,7 @@ public class BinCacheUtil { ...@@ -162,7 +172,7 @@ public class BinCacheUtil {
//如果呼叫的空箱没有可用的,查找出库任务,在流水线上的 //如果呼叫的空箱没有可用的,查找出库任务,在流水线上的
if (validBinList == null || validBinList.isEmpty()) { if (validBinList == null || validBinList.isEmpty()) {
log.info("未找到当前工作的料格,开始寻找正在当前工位上的料箱"); log.info("入料机构获取到未找到当前工作的料格"+barcode+"开始寻找正在当前工位上的料箱");
List<String> emptyBoxList = new ArrayList<>(); List<String> emptyBoxList = new ArrayList<>();
...@@ -171,7 +181,7 @@ public class BinCacheUtil { ...@@ -171,7 +181,7 @@ public class BinCacheUtil {
for (DataLog dataLog : allTasks) { for (DataLog dataLog : allTasks) {
if (dataLog.isCheckOutTask() && !dataLog.isCancel() && !dataLog.isFinished()) { if (dataLog.isCheckOutTask() && !dataLog.isCancel() && !dataLog.isFinished()) {
if (source.equals(dataLog.getCurrentLoc())) { if (source.equals(dataLog.getCurrentLoc())) {
log.info(barcode + "找到当前工位上的料箱为:" + dataLog.getBarcode() + ",位置为:" + dataLog.getCurrentLoc()); //log.info(barcode + "找到当前工位上的料箱为:" + dataLog.getBarcode() + ",位置为:" + dataLog.getCurrentLoc());
emptyBoxList.add(dataLog.getBarcode()); emptyBoxList.add(dataLog.getBarcode());
} }
} }
...@@ -212,11 +222,11 @@ public class BinCacheUtil { ...@@ -212,11 +222,11 @@ public class BinCacheUtil {
//如果不为空,返回 //如果不为空,返回
if (validBinList != null && !validBinList.isEmpty()) { if (validBinList != null && !validBinList.isEmpty()) {
log.info(barcode+"获取到可用料格为:" + JSON.toJSONString(validBinList));
String resultStr = validBinList.get(0); String resultStr = validBinList.get(0);
boxCode = BoxHandleUtil.getBoxStr(resultStr, false); boxCode = BoxHandleUtil.getBoxStr(resultStr, false);
boxLoc = source; boxLoc = source;
stackerLoc = source; stackerLoc = source;
log.info("入料机构获取到当前工位上的料格"+barcode+"获取到可用料格为:" + JSON.toJSONString(validBinList));
return new ValidBin(boxCode, boxLoc, stackerLoc, validBinList); return new ValidBin(boxCode, boxLoc, stackerLoc, validBinList);
} }
} }
...@@ -227,7 +237,7 @@ public class BinCacheUtil { ...@@ -227,7 +237,7 @@ public class BinCacheUtil {
//如果不可以放入,则判断当前呼叫空箱物料是否可以放入 //如果不可以放入,则判断当前呼叫空箱物料是否可以放入
if (validBinList == null || validBinList.isEmpty()) { if (validBinList == null || validBinList.isEmpty()) {
log.info("未找到当前工位上的料箱,开始寻找呼叫空箱"); log.info("入料机构未找到当前工位上的料箱"+barcode+"开始寻找已经呼叫过空箱");
List<String> callEmptyBoxList = new ArrayList<>(); List<String> callEmptyBoxList = new ArrayList<>();
...@@ -239,7 +249,6 @@ public class BinCacheUtil { ...@@ -239,7 +249,6 @@ public class BinCacheUtil {
&& !TaskCurrentLoc.In2_FeedingInlet.equals(dataLog.getCurrentLoc()) && !TaskCurrentLoc.In2_FeedingInlet.equals(dataLog.getCurrentLoc())
) { ) {
if (TaskCurrentLoc.In_FeedingInlet.equals(dataLog.getLoc()) || source.equals(dataLog.getLoc()) ) { if (TaskCurrentLoc.In_FeedingInlet.equals(dataLog.getLoc()) || source.equals(dataLog.getLoc()) ) {
log.info(barcode+"查找出来呼叫空箱的箱子为:" + dataLog.getBarcode());
callEmptyBoxList.add(dataLog.getBarcode()); callEmptyBoxList.add(dataLog.getBarcode());
} }
} }
...@@ -288,7 +297,6 @@ public class BinCacheUtil { ...@@ -288,7 +297,6 @@ public class BinCacheUtil {
List<DataLog> taskList = taskService.getAllTasks(); List<DataLog> taskList = taskService.getAllTasks();
for (DataLog dataLog : taskList) { for (DataLog dataLog : taskList) {
if (dataLog.getBarcode().equals(boxStr) && dataLog.isCheckOutTask() && !dataLog.isCancel()) { if (dataLog.getBarcode().equals(boxStr) && dataLog.isCheckOutTask() && !dataLog.isCancel()) {
log.info(barcode+"获取到可用料格为:" + JSON.toJSONString(validBinList));
String loc = ""; String loc = "";
if (StringUtils.isEmpty(dataLog.getLoc())) { if (StringUtils.isEmpty(dataLog.getLoc())) {
loc = source; loc = source;
...@@ -313,6 +321,7 @@ public class BinCacheUtil { ...@@ -313,6 +321,7 @@ public class BinCacheUtil {
boxCode = boxStr; boxCode = boxStr;
boxLoc = loc; boxLoc = loc;
stackerLoc = loc; stackerLoc = loc;
log.info("入料机构获取已经呼叫过的空箱:"+barcode+"获取到可用料格为:" + JSON.toJSONString(validBinList));
return new ValidBin(boxCode, boxLoc, stackerLoc, validBinList); return new ValidBin(boxCode, boxLoc, stackerLoc, validBinList);
} }
} }
...@@ -323,7 +332,7 @@ public class BinCacheUtil { ...@@ -323,7 +332,7 @@ public class BinCacheUtil {
if (validBinList == null || validBinList.isEmpty()) { if (validBinList == null || validBinList.isEmpty()) {
log.info("都未找到,开始寻找空箱"); log.info("入料机构获取可用料格"+barcode+"都未找到,开始寻找空箱");
String outLet = "0"; String outLet = "0";
if (TaskCurrentLoc.In2_FeedingInlet.equals(source)) { if (TaskCurrentLoc.In2_FeedingInlet.equals(source)) {
...@@ -347,7 +356,7 @@ public class BinCacheUtil { ...@@ -347,7 +356,7 @@ public class BinCacheUtil {
List<String> binCodeList = getValidBinList(stackerBarcode, binList); List<String> binCodeList = getValidBinList(stackerBarcode, binList);
if (binCodeList != null && !binCodeList.isEmpty()) { if (binCodeList != null && !binCodeList.isEmpty()) {
log.info("寻找到空箱为:" + boxStr); log.info("入料机构获取可用料格"+barcode+"寻找到空箱为:" + boxStr);
for (String binCode : binCodeList) { for (String binCode : binCodeList) {
if ("7".equals(materialSize)) { if ("7".equals(materialSize)) {
...@@ -373,6 +382,7 @@ public class BinCacheUtil { ...@@ -373,6 +382,7 @@ public class BinCacheUtil {
boxCode = boxStr; boxCode = boxStr;
boxLoc = source; boxLoc = source;
stackerLoc = source; stackerLoc = source;
log.info("入料机构获取可用料格:"+barcode+"通过呼叫空箱呼叫的可用料格为:"+ JSON.toJSONString(validBinList));
return new ValidBin(boxCode, boxLoc, stackerLoc, validBinList); return new ValidBin(boxCode, boxLoc, stackerLoc, validBinList);
} }
} }
...@@ -382,17 +392,23 @@ public class BinCacheUtil { ...@@ -382,17 +392,23 @@ public class BinCacheUtil {
private static List<String> getValidBinList(Barcode stackerBarcode, List<String> binList) { private static List<String> getValidBinList(Barcode stackerBarcode, List<String> binList) {
List<String> validBinList = new ArrayList<>(); List<String> validBinList = new ArrayList<>();
Barcode boxBarcode = null;
StoragePos pos = null;
for (String binId : binList) { for (String binId : binList) {
String boxStr = BoxHandleUtil.getBoxStr(binId, true); String boxStr = BoxHandleUtil.getBoxStr(binId, true);
Barcode boxBarcode = codeResolve.resolveOneValideBarcode(boxStr); if (boxBarcode == null){
boxBarcode = codeResolve.resolveOneValideBarcode(boxStr);
}
//为料箱分配一个库位,直接放到库位中, 如果没有库位, 那么这个料箱不允许使用 //为料箱分配一个库位,直接放到库位中, 如果没有库位, 那么这个料箱不允许使用
StoragePos pos = BoxHandleUtil.locOnePos(boxBarcode); if (pos == null) {
pos = BoxHandleUtil.locOnePos(boxBarcode);
}
if (pos != null) { if (pos != null) {
String canPutIn = BinCacheUtil.canMaterialPutInBin(stackerBarcode, boxBarcode, binId); String canPutIn = BinCacheUtil.canMaterialPutInBin(stackerBarcode, boxBarcode, binId);
if (canPutIn.isEmpty()) { if (canPutIn.isEmpty()) {
validBinList.add(binId); validBinList.add(binId);
} else { } else {
log.info(canPutIn); //log.info(canPutIn);
} }
} }
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!