Commit f7ac70a5 zshaohui

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

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