Commit f7ac70a5 zshaohui

1.出库时,任务不存在的时候,清空库位,启用

2.工单出库,弹夹工单超过20分钟未完成,展示红色
1 个父辈 0d7168c6
...@@ -484,7 +484,7 @@ public class DeviceController { ...@@ -484,7 +484,7 @@ public class DeviceController {
for (DataLog task : tasks) { for (DataLog task : tasks) {
if (codeStr.contains(task.getBarcode())) { if (codeStr.contains(task.getBarcode())) {
if (task.isPutInTask()) { if (task.isPutInTask()) {
boolean cancelResult = taskService.cancelTask(task.getId()); boolean cancelResult = taskService.cancelTask(task.getId(),"客户端");
log.info("客户端取消[" + codeStr + "]的入库任务结果:" + cancelResult); log.info("客户端取消[" + codeStr + "]的入库任务结果:" + cancelResult);
return ResultBean.newOkResult(cancelResult); return ResultBean.newOkResult(cancelResult);
} }
...@@ -511,7 +511,7 @@ public class DeviceController { ...@@ -511,7 +511,7 @@ public class DeviceController {
String sourceId = task.getSourceId(); String sourceId = task.getSourceId();
if (StringUtils.isNotEmpty(sourceId)){ if (StringUtils.isNotEmpty(sourceId)){
//未执行完成的,理论上不会从客户端取消 //未执行完成的,理论上不会从客户端取消
boolean cancelResult = taskService.cancelTask(task.getId()); boolean cancelResult = taskService.cancelTask(task.getId(),"客户端");
log.info("客户端取消["+codeStr+"]的未执行完成的出库任务结果:" + cancelResult); log.info("客户端取消["+codeStr+"]的未执行完成的出库任务结果:" + cancelResult);
return ResultBean.newOkResult(cancelResult); return ResultBean.newOkResult(cancelResult);
} else { } else {
......
...@@ -313,6 +313,22 @@ public class OrderController { ...@@ -313,6 +313,22 @@ public class OrderController {
String s = DateUtil.convertToHMS(l); String s = DateUtil.convertToHMS(l);
orderDto.setTotalOutboundTime(s); orderDto.setTotalOutboundTime(s);
} }
//判断是否异常,展示红色
if (orderDto.isMaiZheng()) {
if (endDate != null) {
long l = 0;
if (finishDate == null) {
l = System.currentTimeMillis() - endDate.getTime();
} else {
l = finishDate.getTime() - endDate.getTime();
}
if (l > 1000 * 60 * 20) {
orderDto.setAbnormal(true);
}
}
}
} }
resultList.setContent(content); resultList.setContent(content);
...@@ -341,6 +357,21 @@ public class OrderController { ...@@ -341,6 +357,21 @@ public class OrderController {
String s = DateUtil.convertToHMS(l); String s = DateUtil.convertToHMS(l);
orderDto.setTotalOutboundTime(s); orderDto.setTotalOutboundTime(s);
} }
//判断是否异常,展示红色
if (orderDto.isMaiZheng()) {
if (endDate != null) {
long l = 0;
if (finishDate == null) {
l = System.currentTimeMillis() - endDate.getTime();
} else {
l = finishDate.getTime() - endDate.getTime();
}
if (l > 1000 * 60 * 20) {
orderDto.setAbnormal(true);
}
}
}
} }
resultList.setContent(content); resultList.setContent(content);
......
...@@ -119,4 +119,7 @@ public class OrderDto implements Serializable { ...@@ -119,4 +119,7 @@ public class OrderDto implements Serializable {
@ApiModelProperty("出库总用时") @ApiModelProperty("出库总用时")
private String totalOutboundTime; private String totalOutboundTime;
@ApiModelProperty("是否异常")
private boolean abnormal = false;
} }
...@@ -424,8 +424,12 @@ public class StoragePosController { ...@@ -424,8 +424,12 @@ public class StoragePosController {
log.info(SecurityUtils.getLoginUsername() + "启用库位:" + posName); log.info(SecurityUtils.getLoginUsername() + "启用库位:" + posName);
storagePos.setEnabled(true); storagePos.setEnabled(true);
storagePosManager.save(storagePos); storagePosManager.save(storagePos);
Storage storage = dataCache.getStorageById(storagePos.getStorageId()); Storage storage = dataCache.getStorageById(storagePos.getStorageId());
dataCache.reloadStorage(storage, storage.getCid()); dataCache.reloadStorage(storage, storage.getCid());
//添加一条启用记录
DeviceMessageUtil.addEnabledPosMessage(storagePos,storage.getName());
} }
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} }
......
...@@ -230,7 +230,7 @@ public class TaskController { ...@@ -230,7 +230,7 @@ public class TaskController {
if(task.isCancel()||task.isFinished()||task.isEnd()){ if(task.isCancel()||task.isFinished()||task.isEnd()){
throw new ValidateException("smfcore.taskHasEnd","任务{0}已取消或已结束",new String[]{task.getPosName()} ); throw new ValidateException("smfcore.taskHasEnd","任务{0}已取消或已结束",new String[]{task.getPosName()} );
} }
taskService.cancelTask(taskId); taskService.cancelTask(taskId,"人工");
} }
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
......
...@@ -313,7 +313,7 @@ public class TaskService { ...@@ -313,7 +313,7 @@ public class TaskService {
return tasks; return tasks;
} }
private boolean cancelTask(DataLog task) { private boolean cancelTask(DataLog task,String type) {
if (task != null) { if (task != null) {
//同时进行库位屏蔽 //同时进行库位屏蔽
if (task.isExecuting()) { if (task.isExecuting()) {
...@@ -321,17 +321,17 @@ public class TaskService { ...@@ -321,17 +321,17 @@ public class TaskService {
StoragePos storagePos = storagePosManager.getByPosName(posName); StoragePos storagePos = storagePosManager.getByPosName(posName);
//如果是入库任务,直接屏蔽库位 //如果是入库任务,直接屏蔽库位
if (task.isPutInTask()) { if (task.isPutInTask()) {
disablePos(task.getBarcode(),storagePos); disablePos(task.getBarcode(),storagePos,type);
} }
//如果是出库任务,判断当前任务的barcode和库位中的师傅一致 //如果是出库任务,判断当前任务的barcode和库位中的师傅一致
else if (task.isCheckOutTask()) { else if (task.isCheckOutTask()) {
Barcode barcode = storagePos.getBarcode(); Barcode barcode = storagePos.getBarcode();
if (barcode == null) { if (barcode == null) {
disablePos(task.getBarcode(),storagePos); disablePos(task.getBarcode(),storagePos,type);
} else if (barcode != null && task.getBarcode().equals(barcode.getBarcode())) { } else if (barcode != null && task.getBarcode().equals(barcode.getBarcode())) {
barcode = clearOut(barcode); barcode = clearOut(barcode);
storagePos.setBarcode(barcode); storagePos.setBarcode(barcode);
disablePos(task.getBarcode(),storagePos); disablePos(task.getBarcode(),storagePos,type);
} }
} }
ReelLockPosUtil.removeReelLockPosInfo(task.getBarcode()); ReelLockPosUtil.removeReelLockPosInfo(task.getBarcode());
...@@ -340,6 +340,7 @@ public class TaskService { ...@@ -340,6 +340,7 @@ public class TaskService {
removeQueueTask(task); removeQueueTask(task);
task.setStatus(OP_STATUS.CANCEL.name()); task.setStatus(OP_STATUS.CANCEL.name());
task.setUpdateDate(new Date()); task.setUpdateDate(new Date());
task.setOperator(SecurityUtils.getLoginUsername()+"-取消");
updateFinishedTask(task); updateFinishedTask(task);
log.info("任务[" + task.getId() + "] posName[" + task.getPosName() + "] Reel Id[" + task.getBarcode() + "]取消成功"); log.info("任务[" + task.getId() + "] posName[" + task.getPosName() + "] Reel Id[" + task.getBarcode() + "]取消成功");
return true; return true;
...@@ -347,18 +348,18 @@ public class TaskService { ...@@ -347,18 +348,18 @@ public class TaskService {
return false; return false;
} }
private void disablePos(String barcode,StoragePos storagePos) { private void disablePos(String barcode,StoragePos storagePos,String type) {
storagePos.setEnabled(false); storagePos.setEnabled(false);
storagePos.setMsg("任务取消,屏蔽库位"); storagePos.setMsg(type+"任务取消,屏蔽库位");
storagePosManager.save(storagePos); storagePosManager.save(storagePos);
log.info("任务取消,屏蔽库位:库位号[" + storagePos.getId() + "][" + storagePos.getPosName() + "]barcode[" + barcode + "]"); log.info(type+"任务取消,屏蔽库位:库位号[" + storagePos.getId() + "][" + storagePos.getPosName() + "]barcode[" + barcode + "]");
DeviceMessageUtil.addEnabledPosMessage(storagePos, SecurityUtils.getLoginUsername()); DeviceMessageUtil.addEnabledPosMessage(storagePos, SecurityUtils.getLoginUsername());
} }
public boolean cancelTask(String taskId) { public boolean cancelTask(String taskId,String type) {
DataLog task = dataLogDao.findOneById(taskId); DataLog task = dataLogDao.findOneById(taskId);
return cancelTask(task); return cancelTask(task,type);
} }
/** /**
......
...@@ -228,7 +228,7 @@ public class AdvantechApi extends BaseSmfApiListener { ...@@ -228,7 +228,7 @@ public class AdvantechApi extends BaseSmfApiListener {
//如果返回失败,取消任务 //如果返回失败,取消任务
boolean success = isOutTaskSuccess(result,task.getBarcode()); boolean success = isOutTaskSuccess(result,task.getBarcode());
if (!success) { if (!success) {
taskService.cancelTask(task.getId()); taskService.cancelTask(task.getId(),"");
}else { }else {
//如果返回成功,把singleOut改为true //如果返回成功,把singleOut改为true
if (ObjectUtils.isNotEmpty(task.getSourceName())) { if (ObjectUtils.isNotEmpty(task.getSourceName())) {
......
...@@ -14,6 +14,7 @@ import com.neotel.smfcore.core.barcode.utils.CodeResolve; ...@@ -14,6 +14,7 @@ import com.neotel.smfcore.core.barcode.utils.CodeResolve;
import com.neotel.smfcore.core.device.enums.OP; import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS; import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.message.util.DeviceMessageUtil;
import com.neotel.smfcore.core.order.LiteOrderCache; import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager; import com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager; import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
...@@ -122,6 +123,33 @@ public class InnerBoxRestController { ...@@ -122,6 +123,33 @@ public class InnerBoxRestController {
} }
} }
} }
//如果任务不存在,则把库位信息给清空,库位解除禁用
if (opTask == null) {
StoragePos pos = storagePosManager.getByBarcode(barcode.getBarcode());
if (pos != null) {
barcode = pos.getBarcode();
if (!pos.isEnabled()){
pos.setEnabled(true);
}
pos.setBarcode(null);
pos.setUsed(false);
storagePosManager.save(pos);
barcode.setPosName("");
barcode.setUsed(true);
barcode.setUsedDate(new Date());
barcode.setCheckOutDate(new Date(), "");
barcode.setPosName("");
barcodeManager.save(barcode);
dataCache.updateInventory(pos,barcode);
Storage storage = dataCache.getStorageById(pos.getStorageId());
dataCache.reloadStorage(storage,storage.getCid());
//添加一条message
DeviceMessageUtil.addEnabledPosMessage(pos,"启用库位,清空库存");
}
}
if (opTask == null) { if (opTask == null) {
return ResultBean.newErrorResult(303, "smfcore.task.notExist", "任务不存在"); return ResultBean.newErrorResult(303, "smfcore.task.notExist", "任务不存在");
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!