Commit 71173e4e LN

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

1 个父辈 23fe4dce
......@@ -308,47 +308,89 @@ public class XLController extends BaseController {
* @return
*/
@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());
String inStorageFeedbackUrl = dataCache.getSettings().getInNotifyApi()+"/wms/api/znlc/in/inStorageFeedback";
String inStorageFeedbackUrl = dataCache.getSettings().getInNotifyApi() + "/wms/api/znlc/in/inStorageFeedback";
try {
String posName = bodyParamMap.get("posName");
List<DataLog> allTasks = taskService.getFinishedTasks();
allTasks.addAll(taskService.getQueueTasks());
for (DataLog queueTask : allTasks) {
if(queueTask.isPutInTask() && queueTask.getPosName().equals(posName)){
// putInFinished
DataLog queueTask = null;
for (DataLog obj : allTasks) {
if (obj.isPutInTask() && obj.getPosName().equals(posName)) {
queueTask = obj;
break;
}
}
if (queueTask == null) {
return ResultBean.newErrorResult(404, "料箱放入库位, 通知极创,未找到入库任务");
}
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.setStatus(StorageConstants.OP_STATUS.FINISHED.name());
StoragePos storagePos = storagePosManager.get(queueTask.getPosId());
Barcode box = barcodeManager.findByBarcode(queueTask.getBarcode());
box.setPutInTime(System.currentTimeMillis());
box.setPutInDate(new Date());
storagePos.setBarcode(box);
storagePosManager.save(storagePos);
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("boxCode", queueTask.getBarcode());
paramData.put("deviceNo", queueTask.getCid());
paramData.put("locationCode", queueTask.getPosName());
log.info("料箱放入库位, 通知极创:" + bodyParamMap.toString());
String result = HttpHelper.postJson(inStorageFeedbackUrl, paramData);
log.info("料箱放入库位, 通知极创返回:" + result);
return ResultBean.newOkResult("");
} catch (Exception e) {
log.info("料箱放入库位, 通知极创出错:" + e.getMessage());
return ResultBean.newErrorResult(500, "料箱放入库位, 通知极创出错:" + e.getMessage());
}
}
queueTask = dataLogDao.save(queueTask);
taskService.moveTaskToFinished(queueTask);
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);
}
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("boxCode", queueTask.getBarcode());
paramData.put("deviceNo",queueTask.getCid());
paramData.put("locationCode",queueTask.getPosName());
log.info("料箱放入库位, 通知极创:" + bodyParamMap.toString());
String result = HttpHelper.postJson(inStorageFeedbackUrl,paramData);
log.info("料箱放入库位, 通知极创返回:"+ result);
return ResultBean.newOkResult("");
}
}
return ResultBean.newErrorResult(404,"料箱放入库位, 通知极创,未找到入库任务");
} catch (Exception e) {
log.info("料箱放入库位, 通知极创出错:" + e.getMessage());
return ResultBean.newErrorResult(500,"料箱放入库位, 通知极创出错:" + e.getMessage());
/**
* 仓位状态
*/
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,35 +588,46 @@ public class XLController extends BaseController {
String door = bodyParamMap.get("door");
List<DataLog> allTasks = taskService.getFinishedTasks();
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,"未找到出库任务");
}
task.setStatus(StorageConstants.OP_STATUS.FINISHED.name());
task = dataLogDao.save(task);
taskService.moveTaskToFinished(task);
log.info("堆垛机放货完成, posName:"+posName+" barcode:" + task.getBarcode()+",任务状态:"+task.getStatus());
Map<String,Object> paramData = new HashMap<>();
paramData.put("boxCode", task.getBarcode());
paramData.put("deviceNo",task.getCid());
paramData.put("door",door);
log.info("堆垛机放货完成, 通知极创:" + paramData.toString());
String result = HttpHelper.postJson(ddjPickUpGoodsNoticeUrl,paramData);
log.info("堆垛机放货完成, 通知极创返回:"+ result);
if(!com.google.common.base.Strings.isNullOrEmpty(result)){
ObjectMapper mapper = new ObjectMapper();
HashMap<String,Object> jsonMap = mapper.readValue(result, HashMap.class);
String ErrorCode = jsonMap.get("code").toString();
if("200".equals(ErrorCode)){//成功
return ResultBean.newOkResult("");
}else{
return ResultBean.newErrorResult(-1,jsonMap.get("message").toString());
}
}
OutFromPos(task);
task.setStatus(StorageConstants.OP_STATUS.FINISHED.name());
task = dataLogDao.save(task);
taskService.moveTaskToFinished(task);
Map<String,Object> paramData = new HashMap<>();
paramData.put("boxCode", task.getBarcode());
paramData.put("deviceNo",task.getCid());
paramData.put("door",door);
log.info("堆垛机放货完成, 通知极创:" + paramData.toString());
String result = HttpHelper.postJson(ddjPickUpGoodsNoticeUrl,paramData);
log.info("堆垛机放货完成, 通知极创返回:"+ result);
if(!com.google.common.base.Strings.isNullOrEmpty(result)){
ObjectMapper mapper = new ObjectMapper();
HashMap<String,Object> jsonMap = mapper.readValue(result, HashMap.class);
String ErrorCode = jsonMap.get("code").toString();
if("200".equals(ErrorCode)){//成功
return ResultBean.newOkResult("");
}else{
return ResultBean.newErrorResult(-1,jsonMap.get("message").toString());
}
}else{
return ResultBean.newErrorResult(-1 ,"通知极创未收到返回值");
}
return ResultBean.newErrorResult(-100,"未找到出库任务");
} catch (Exception e) {
log.info("堆垛机放货完成, 通知极创出错:" + e.getMessage());
return ResultBean.newErrorResult(-1 ,e.getMessage());
......@@ -617,60 +670,104 @@ public class XLController extends BaseController {
* @return
*/
@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());
String inStorageFeedbackUrl = dataCache.getSettings().getInNotifyApi()+"/wms/api/znlc/out/outStorageFeedback";
String inStorageFeedbackUrl = dataCache.getSettings().getInNotifyApi() + "/wms/api/znlc/out/outStorageFeedback";
try {
String posName = bodyParamMap.get("posName");
List<DataLog> allTasks = taskService.getFinishedTasks();
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);
queueTask.setStatus("OUT_BOX");
queueTask = dataLogDao.save(queueTask);
taskService.moveTaskToFinished(queueTask);
Barcode box = barcodeManager.findByBarcode(queueTask.getBarcode());
if(box != null){
List<Barcode> subCodes = box.getSubCodes();
for (Barcode subCode : subCodes) {
Map<String, Object> materialMap = new HashMap<>();
materialMap.put("serialNo",subCode.getBarcode());
materialMap.put("partNum",subCode.getPartNumber());
materialMap.put("outQuantity",subCode.getLabelAmount());
materialMap.put("quantity",subCode.getAmount());
materialList.add(materialMap);
}
}
dataMap.put("materialList", materialList);
paramData.put("data", dataMap);
log.info("料箱从库位取出, 通知极创:" + bodyParamMap.toString());
String result = HttpHelper.postJson(inStorageFeedbackUrl,paramData);
log.info("料箱从库位取出, 通知极创返回:"+ result);
return ResultBean.newOkResult("");
DataLog queueTask = null;
for (DataLog obj : allTasks) {
if (obj.isCheckOutTask() && obj.getPosName().equals(posName)) {
queueTask = obj;
break;
}
}
return ResultBean.newErrorResult(404,"料箱从库位取出, 通知极创,未找到出库任务");
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 = dataLogDao.save(queueTask);
taskService.moveTaskToFinished(queueTask);
Barcode box = barcodeManager.findByBarcode(queueTask.getBarcode());
if (box != null) {
List<Barcode> subCodes = box.getSubCodes();
for (Barcode subCode : subCodes) {
Map<String, Object> materialMap = new HashMap<>();
materialMap.put("serialNo", subCode.getBarcode());
materialMap.put("partNum", subCode.getPartNumber());
materialMap.put("outQuantity", subCode.getLabelAmount());
materialMap.put("quantity", subCode.getAmount());
materialList.add(materialMap);
}
}
dataMap.put("materialList", materialList);
paramData.put("data", dataMap);
log.info("料箱从库位取出, 通知极创:" + bodyParamMap.toString());
String result = HttpHelper.postJson(inStorageFeedbackUrl, paramData);
log.info("料箱从库位取出, 通知极创返回:" + result);
return ResultBean.newOkResult("");
// }
// }
} catch (Exception e) {
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);
}
/**
* 3.1. 库存信息接口
* 描述:仓储系统发起传递参数,料仓系统返回结果
......
......@@ -309,13 +309,13 @@
<td id="td${slot.id}">
<c:if test="${!slot.enabled}">
<fmt:message key="storage.enable.yes"/>[
<fmt:message key="storage.enable.no"/>[
<a onclick="enablePos('${slot.id}',true);">
<fmt:message key="storage.enable.enable"/>
</a>]
</c:if>
<c:if test="${slot.enabled}" >
<fmt:message key="storage.enable.no"/>[
<fmt:message key="storage.enable.yes"/>[
<a onclick="enablePos('${slot.id}',false);">
<fmt:message key="storage.enable.prohibit"/>
</a>]
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!