Commit 71173e4e LN

料箱从库位取出时清空库位。放料箱完成时结束任务

1 个父辈 23fe4dce
...@@ -308,47 +308,89 @@ public class XLController extends BaseController { ...@@ -308,47 +308,89 @@ public class XLController extends BaseController {
* @return * @return
*/ */
@RequestMapping("/service/store/xl/inStorageFeedback") @RequestMapping("/service/store/xl/inStorageFeedback")
public ResultBean inStorageFeedback(@RequestBody Map<String,String> bodyParamMap, HttpServletRequest request){ public ResultBean inStorageFeedback(@RequestBody Map<String,String> bodyParamMap, HttpServletRequest request) {
log.info("料箱放入库位, 准备通知极创:" + bodyParamMap.toString()); log.info("料箱放入库位, 准备通知极创:" + bodyParamMap.toString());
String inStorageFeedbackUrl = dataCache.getSettings().getInNotifyApi()+"/wms/api/znlc/in/inStorageFeedback"; String inStorageFeedbackUrl = dataCache.getSettings().getInNotifyApi() + "/wms/api/znlc/in/inStorageFeedback";
try { try {
String posName = bodyParamMap.get("posName"); String posName = bodyParamMap.get("posName");
List<DataLog> allTasks = taskService.getFinishedTasks(); List<DataLog> allTasks = taskService.getFinishedTasks();
allTasks.addAll(taskService.getQueueTasks()); allTasks.addAll(taskService.getQueueTasks());
for (DataLog queueTask : allTasks) { // putInFinished
if(queueTask.isPutInTask() && queueTask.getPosName().equals(posName)){ DataLog queueTask = null;
for (DataLog obj : allTasks) {
queueTask.setStatus(StorageConstants.OP_STATUS.FINISHED.name()); if (obj.isPutInTask() && obj.getPosName().equals(posName)) {
queueTask = obj;
StoragePos storagePos = storagePosManager.get(queueTask.getPosId()); break;
Barcode box = barcodeManager.findByBarcode(queueTask.getBarcode()); }
box.setPutInTime(System.currentTimeMillis()); }
box.setPutInDate(new Date()); if (queueTask == null) {
storagePos.setBarcode(box); return ResultBean.newErrorResult(404, "料箱放入库位, 通知极创,未找到入库任务");
storagePosManager.save(storagePos); }
putInFinished(queueTask);
// taskService.putInFinished(queueTask);
// StoragePos storagePos = storagePosManager.get(queueTask.getPosId());
// Barcode box = barcodeManager.findByBarcode(queueTask.getBarcode());
// box.setPutInTime(System.currentTimeMillis());
// box.setPutInDate(new Date());
// storagePos.setBarcode(box);
// storagePos.setUsed(true);
// storagePosManager.save(storagePos);
//
// queueTask.setStatus(StorageConstants.OP_STATUS.FINISHED.name());
// queueTask = dataLogDao.save(queueTask);
// taskService.moveTaskToFinished(queueTask);
queueTask = dataLogDao.save(queueTask);
taskService.moveTaskToFinished(queueTask);
Map<String, Object> paramData = new HashMap<>();
Map<String,Object> paramData = new HashMap<>(); paramData.put("djh", queueTask.getSourceName());
paramData.put("djh",queueTask.getSourceName()); String inTime = DateUtil.toDateString(queueTask.getCreateDate(), "yyyy-MM-dd HH:mm:ss");
String inTime = DateUtil.toDateString(queueTask.getCreateDate(),"yyyy-MM-dd HH:mm:ss"); paramData.put("time", inTime);
paramData.put("time",inTime);
paramData.put("boxCode", queueTask.getBarcode()); paramData.put("boxCode", queueTask.getBarcode());
paramData.put("deviceNo",queueTask.getCid()); paramData.put("deviceNo", queueTask.getCid());
paramData.put("locationCode",queueTask.getPosName()); paramData.put("locationCode", queueTask.getPosName());
log.info("料箱放入库位, 通知极创:" + bodyParamMap.toString()); log.info("料箱放入库位, 通知极创:" + bodyParamMap.toString());
String result = HttpHelper.postJson(inStorageFeedbackUrl,paramData); String result = HttpHelper.postJson(inStorageFeedbackUrl, paramData);
log.info("料箱放入库位, 通知极创返回:"+ result); log.info("料箱放入库位, 通知极创返回:" + result);
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
}
}
return ResultBean.newErrorResult(404,"料箱放入库位, 通知极创,未找到入库任务");
} catch (Exception e) { } catch (Exception e) {
log.info("料箱放入库位, 通知极创出错:" + e.getMessage()); log.info("料箱放入库位, 通知极创出错:" + e.getMessage());
return ResultBean.newErrorResult(500,"料箱放入库位, 通知极创出错:" + e.getMessage()); return ResultBean.newErrorResult(500, "料箱放入库位, 通知极创出错:" + e.getMessage());
}
} }
private void putInFinished(DataLog task) throws ValidateException {
StoragePos storagePos = storagePosManager.get(task.getPosId());
//二维码状态
Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
if (barcode != null) {
barcode.setUsedCount(barcode.getUsedCount() + 1);
//barcode.setUsedDate(new Date());
barcode.setPutInTime(System.currentTimeMillis());
barcode.setInOpor(task.getOperator());
barcode.setCheckOutDate(null, "");
barcode.setPosName(task.getPosName());
barcodeManager.save(barcode);
}
/**
* 仓位状态
*/
storagePos.setBarcode(barcode);
storagePos.setUsed(true);
storagePos.setCanCheckOutTime(System.currentTimeMillis());
storagePosManager.save(storagePos);
if (barcode != null) {
dataCache.updateInventory(storagePos, barcode);
//记录日志,完成 task
task.setBatchInfo(barcode.getBatch());
task.setNum(barcode.getAmount());
}
task.setStatus(StorageConstants.OP_STATUS.FINISHED.name());
task = dataLogDao.save(task);
taskService.moveTaskToFinished(task);
} }
/** /**
...@@ -546,11 +588,22 @@ public class XLController extends BaseController { ...@@ -546,11 +588,22 @@ public class XLController extends BaseController {
String door = bodyParamMap.get("door"); String door = bodyParamMap.get("door");
List<DataLog> allTasks = taskService.getFinishedTasks(); List<DataLog> allTasks = taskService.getFinishedTasks();
allTasks.addAll(taskService.getQueueTasks()); allTasks.addAll(taskService.getQueueTasks());
for (DataLog task : allTasks) {
if(task.isCheckOutTask() && task.getPosName().equals(posName)){
DataLog task=null;
for (DataLog obj : allTasks) {
if (obj.isCheckOutTask() && obj.getPosName().equals(posName)) {
task = obj;
break;
}
}
if(task==null){
return ResultBean.newErrorResult(-100,"未找到出库任务");
}
log.info("堆垛机放货完成, posName:"+posName+" barcode:" + task.getBarcode()+",任务状态:"+task.getStatus());
OutFromPos(task);
task.setStatus(StorageConstants.OP_STATUS.FINISHED.name()); task.setStatus(StorageConstants.OP_STATUS.FINISHED.name());
task = dataLogDao.save(task); task = dataLogDao.save(task);
taskService.moveTaskToFinished(task); taskService.moveTaskToFinished(task);
...@@ -571,10 +624,10 @@ public class XLController extends BaseController { ...@@ -571,10 +624,10 @@ public class XLController extends BaseController {
}else{ }else{
return ResultBean.newErrorResult(-1,jsonMap.get("message").toString()); return ResultBean.newErrorResult(-1,jsonMap.get("message").toString());
} }
}else{
return ResultBean.newErrorResult(-1 ,"通知极创未收到返回值");
} }
}
}
return ResultBean.newErrorResult(-100,"未找到出库任务");
} catch (Exception e) { } catch (Exception e) {
log.info("堆垛机放货完成, 通知极创出错:" + e.getMessage()); log.info("堆垛机放货完成, 通知极创出错:" + e.getMessage());
return ResultBean.newErrorResult(-1 ,e.getMessage()); return ResultBean.newErrorResult(-1 ,e.getMessage());
...@@ -617,58 +670,102 @@ public class XLController extends BaseController { ...@@ -617,58 +670,102 @@ public class XLController extends BaseController {
* @return * @return
*/ */
@RequestMapping("/service/store/xl/outStorageFeedback") @RequestMapping("/service/store/xl/outStorageFeedback")
public ResultBean outStorageFeedback(@RequestBody Map<String,String> bodyParamMap, HttpServletRequest request){ public ResultBean outStorageFeedback(@RequestBody Map<String,String> bodyParamMap, HttpServletRequest request) {
log.info("料箱从库位取出, 准备通知极创:" + bodyParamMap.toString()); log.info("料箱从库位取出, 准备通知极创:" + bodyParamMap.toString());
String inStorageFeedbackUrl = dataCache.getSettings().getInNotifyApi()+"/wms/api/znlc/out/outStorageFeedback"; String inStorageFeedbackUrl = dataCache.getSettings().getInNotifyApi() + "/wms/api/znlc/out/outStorageFeedback";
try { try {
String posName = bodyParamMap.get("posName"); String posName = bodyParamMap.get("posName");
List<DataLog> allTasks = taskService.getFinishedTasks(); List<DataLog> allTasks = taskService.getFinishedTasks();
allTasks.addAll(taskService.getQueueTasks()); allTasks.addAll(taskService.getQueueTasks());
for (DataLog queueTask : allTasks) {
if(queueTask.isCheckOutTask() && queueTask.getPosName().equals(posName)){
Map<String,Object> paramData = new HashMap<>();
paramData.put("djh",queueTask.getSourceName());
String inTime = DateUtil.toDateString(queueTask.getCreateDate(),"yyyy-MM-dd HH:mm:ss");
paramData.put("time",inTime);
paramData.put("deviceNo",queueTask.getCid());
Map<String,Object> dataMap = new HashMap<>();
dataMap.put("boxCode", queueTask.getBarcode());
dataMap.put("locationCode",queueTask.getPosName());
List<Map<String,Object>> materialList = new ArrayList<>();
StoragePos storagePos = storagePosManager.get(queueTask.getPosId());
storagePos.setBarcode(null);
storagePosManager.save(storagePos);
DataLog queueTask = null;
for (DataLog obj : allTasks) {
if (obj.isCheckOutTask() && obj.getPosName().equals(posName)) {
queueTask = obj;
break;
}
}
if (queueTask == null) {
return ResultBean.newErrorResult(404, "料箱从库位取出, 通知极创,未找到出库任务");
}
log.info("料箱从库位取出, posName:" + posName + " barcode:" + queueTask.getBarcode() + ",任务状态:" + queueTask.getStatus());
OutFromPos(queueTask);
// for (DataLog queueTask : allTasks) {
// if(queueTask.isCheckOutTask() && queueTask.getPosName().equals(posName)){
Map<String, Object> paramData = new HashMap<>();
paramData.put("djh", queueTask.getSourceName());
String inTime = DateUtil.toDateString(queueTask.getCreateDate(), "yyyy-MM-dd HH:mm:ss");
paramData.put("time", inTime);
paramData.put("deviceNo", queueTask.getCid());
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("boxCode", queueTask.getBarcode());
dataMap.put("locationCode", queueTask.getPosName());
List<Map<String, Object>> materialList = new ArrayList<>();
OutFromPos(queueTask);
queueTask.setStatus("OUT_BOX"); queueTask.setStatus("OUT_BOX");
queueTask = dataLogDao.save(queueTask); queueTask = dataLogDao.save(queueTask);
taskService.moveTaskToFinished(queueTask); taskService.moveTaskToFinished(queueTask);
Barcode box = barcodeManager.findByBarcode(queueTask.getBarcode()); Barcode box = barcodeManager.findByBarcode(queueTask.getBarcode());
if(box != null){ if (box != null) {
List<Barcode> subCodes = box.getSubCodes(); List<Barcode> subCodes = box.getSubCodes();
for (Barcode subCode : subCodes) { for (Barcode subCode : subCodes) {
Map<String, Object> materialMap = new HashMap<>(); Map<String, Object> materialMap = new HashMap<>();
materialMap.put("serialNo",subCode.getBarcode()); materialMap.put("serialNo", subCode.getBarcode());
materialMap.put("partNum",subCode.getPartNumber()); materialMap.put("partNum", subCode.getPartNumber());
materialMap.put("outQuantity",subCode.getLabelAmount()); materialMap.put("outQuantity", subCode.getLabelAmount());
materialMap.put("quantity",subCode.getAmount()); materialMap.put("quantity", subCode.getAmount());
materialList.add(materialMap); materialList.add(materialMap);
} }
} }
dataMap.put("materialList", materialList); dataMap.put("materialList", materialList);
paramData.put("data", dataMap); paramData.put("data", dataMap);
log.info("料箱从库位取出, 通知极创:" + bodyParamMap.toString()); log.info("料箱从库位取出, 通知极创:" + bodyParamMap.toString());
String result = HttpHelper.postJson(inStorageFeedbackUrl,paramData); String result = HttpHelper.postJson(inStorageFeedbackUrl, paramData);
log.info("料箱从库位取出, 通知极创返回:"+ result); log.info("料箱从库位取出, 通知极创返回:" + result);
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} // }
} // }
return ResultBean.newErrorResult(404,"料箱从库位取出, 通知极创,未找到出库任务");
} catch (Exception e) { } catch (Exception e) {
log.info("料箱从库位取出, 通知极创出错:" + e.getMessage()); log.info("料箱从库位取出, 通知极创出错:" + e.getMessage());
return ResultBean.newErrorResult(500,"料箱从库位取出, 通知极创出错:" + e.getMessage()); return ResultBean.newErrorResult(500, "料箱从库位取出, 通知极创出错:" + e.getMessage());
}
} }
private void OutFromPos(DataLog queueTask) throws ValidateException{
StoragePos storagePos = storagePosManager.get(queueTask.getPosId());
Barcode barcode = storagePos.getBarcode();
if (barcode == null) {
log.warn("任务:" + queueTask.getId() + " 仓位:" + queueTask.getPosId() + " 的 Barcode 为null, 之前可能处理过直接返回");
}else{
barcode = barcodeManager.get(barcode.getId());
if (barcode != null) {
//二维码状态
barcode.setUsed(true);
barcode.setUsedDate(new Date());
//仓位状态
barcode.setCheckOutDate(new Date(), queueTask.getOperator());
barcode.setPosName("");
barcodeManager.save(barcode);
queueTask.setBatchInfo(barcode.getBatch());
}
}
storagePos.setBarcode(null);
storagePos.setUsed(false);
storagePosManager.save(storagePos);
log.info("出库完成,清空仓位: " + storagePos.getId() + "[" + storagePos.getPosName() + "]");
//更新缓存中的库存信息
dataCache.updateInventory(storagePos, barcode);
} }
/** /**
......
...@@ -309,13 +309,13 @@ ...@@ -309,13 +309,13 @@
<td id="td${slot.id}"> <td id="td${slot.id}">
<c:if test="${!slot.enabled}"> <c:if test="${!slot.enabled}">
<fmt:message key="storage.enable.yes"/>[ <fmt:message key="storage.enable.no"/>[
<a onclick="enablePos('${slot.id}',true);"> <a onclick="enablePos('${slot.id}',true);">
<fmt:message key="storage.enable.enable"/> <fmt:message key="storage.enable.enable"/>
</a>] </a>]
</c:if> </c:if>
<c:if test="${slot.enabled}" > <c:if test="${slot.enabled}" >
<fmt:message key="storage.enable.no"/>[ <fmt:message key="storage.enable.yes"/>[
<a onclick="enablePos('${slot.id}',false);"> <a onclick="enablePos('${slot.id}',false);">
<fmt:message key="storage.enable.prohibit"/> <fmt:message key="storage.enable.prohibit"/>
</a>] </a>]
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!