Commit d9e1f2de LN

锡膏出库任务重复问题修改

1 个父辈 66a0239c
...@@ -203,41 +203,73 @@ public class SolderBoxCache { ...@@ -203,41 +203,73 @@ public class SolderBoxCache {
} }
} }
private boolean CanCreateTask(StoragePos storagePos) {
try {
Barcode barcode = storagePos.getBarcode();
Collection<DataLog> queueTasks = taskService.getQueueTasks();
for (DataLog queueTask : queueTasks) {
if (queueTask.getBarcode().equals(barcode.getBarcode())) {
//已经有任务,返回
return false;
}
}
//如果有刚刚完成的出库任务,也不生成
Collection<DataLog> finishedTasks = taskService.getFinishedTasks();
for (DataLog queueTask : finishedTasks) {
if (queueTask.getBarcode().equals(barcode.getBarcode()) && queueTask.isCheckOutTask() && queueTask.isFinished()) {
//有刚刚完成的出库任务,暂不生成
return false;
}
}
} catch (Exception exception) {
log.error("CanCreateTask 出错:" + exception.toString());
}
return true;
}
/** /**
* 创建出库任务 * 创建出库任务
* @param storagePos * @param storagePos
*/ */
private boolean createOutTask(StoragePos storagePos) throws ValidateException { private boolean createOutTask(StoragePos storagePos) throws ValidateException {
Barcode barcode = storagePos.getBarcode(); try {
Collection<DataLog> queueTasks = taskService.getQueueTasks(); if (!CanCreateTask(storagePos)) {
for (DataLog queueTask : queueTasks) {
if (queueTask.getBarcode().equals(barcode.getBarcode())) {
//已经有任务,返回
return false; return false;
} }
}
//如果有刚刚完成的出库任务,也不生成 //等待1000后再次判断,防止正在处理出库任务过程中
Collection<DataLog> finishedTasks = taskService.getFinishedTasks(); Thread.sleep(500);
for (DataLog queueTask : finishedTasks) { if (!CanCreateTask(storagePos)) {
if (queueTask.getBarcode().equals(barcode.getBarcode()) && queueTask.isCheckOutTask() && queueTask.isFinished()) { log.error("createOutTask 库位号"+storagePos.getPosName()+" 再次验证时发现已有任务,暂不创建出库任务");
//有刚刚完成的出库任务,暂不生成
return false; return false;
} }
} //重新查找库位
log.info(barcode.getBarcode() + "创建出库任务"); storagePos=storagePosManager.getByPosName(storagePos.getPosName());
Storage storage = dataCache.getStorageById(storagePos.getStorageId()); if(storagePos.getBarcode()==null){
DataLog outTask = new DataLog(storage, barcode, storagePos); log.error("createOutTask 库位号"+storagePos.getPosName()+" 再次验证时发现库位已空,暂不创建出库任务");
outTask.setType(OP.CHECKOUT); return false;
outTask.setMixTime(barcode.getMixTime()); }
//如果已过期,标记为过期物料出库
if (barcode.getExpireDate() != null && barcode.getExpireDate().before(new Date())) { Barcode barcode = storagePos.getBarcode();
// TimeUnit.SECONDS.sleep(1);
log.info(barcode.getBarcode() + "创建出库任务");
Storage storage = dataCache.getStorageById(storagePos.getStorageId());
DataLog outTask = new DataLog(storage, barcode, storagePos);
outTask.setType(OP.CHECKOUT);
outTask.setMixTime(barcode.getMixTime());
//如果已过期,标记为过期物料出库
if (barcode.getExpireDate() != null && barcode.getExpireDate().before(new Date())) {
// String outMsg = "过期物料出库"; // String outMsg = "过期物料出库";
String outMsg = MessageUtils.getText("smfcore.spbox.expireOut", MessageUtils.getDefaultLocal(), "过期物料出库"); String outMsg = MessageUtils.getText("smfcore.spbox.expireOut", MessageUtils.getDefaultLocal(), "过期物料出库");
outTask.updateAppendData("ngMsg", outMsg); outTask.updateAppendData("ngMsg", outMsg);
} }
//outTask = dataLogDao.save(outTask); //outTask = dataLogDao.save(outTask);
taskService.addTaskToExecute(outTask); taskService.addTaskToExecute(outTask);
// //更改状态 // //更改状态
// barcode.setSolderStatus(SOLDER_STATUS.OUTING.name()); // barcode.setSolderStatus(SOLDER_STATUS.OUTING.name());
// barcode = barcodeManager.save(barcode); // barcode = barcodeManager.save(barcode);
...@@ -245,7 +277,14 @@ public class SolderBoxCache { ...@@ -245,7 +277,14 @@ public class SolderBoxCache {
// storagePosManager.save(storagePos); // storagePosManager.save(storagePos);
// //
// log.info(barcode.getBarcode() + "创建出库任务完成,更改状态="+barcode.getSolderStatus()); // log.info(barcode.getBarcode() + "创建出库任务完成,更改状态="+barcode.getSolderStatus());
saveSolderLog(storagePos); saveSolderLog(storagePos);
} catch (ValidateException ex) {
log.error("createOutTask error " + ex.toString());
throw ex;
} catch (Exception ex1) {
log.error("createOutTask error " + ex1.toString());
}
return true; return true;
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!