Commit bcf8a25e zshaohui

1.打印机功能提交

2.取消任务,屏蔽库位
1 个父辈 42d2a1ab
...@@ -179,7 +179,7 @@ public class LiteOrderCache { ...@@ -179,7 +179,7 @@ public class LiteOrderCache {
String result = checkOutLiteOrder(order.getOrderNo(), false); String result = checkOutLiteOrder(order.getOrderNo(), false);
if (!ObjectUtil.isEmpty(result)) { if (!ObjectUtil.isEmpty(result)) {
String msg = MessageUtils.getText(result, MessageUtils.getDefaultLocal(), ""); String msg = MessageUtils.getText(result, MessageUtils.getDefaultLocal(), "");
log.info("自动执行工单 【" + order.getOrderNo() + "】 失败:" + msg); //log.info("自动执行工单 【" + order.getOrderNo() + "】 失败:" + msg);
} else { } else {
//log.info("自动执行工单 【" + order.getOrderNo() + "】 成功"); //log.info("自动执行工单 【" + order.getOrderNo() + "】 成功");
break; break;
...@@ -561,10 +561,10 @@ public class LiteOrderCache { ...@@ -561,10 +561,10 @@ public class LiteOrderCache {
//PN //PN
do { do {
//首先按空闲料仓进行出库 //首先按空闲料仓进行出库
List<StoragePos> storagePosList = storagePosManager.findPartNumberListInStorages(freeStorageIds, partNumber, excludePosIds, checkoutType,orderItem.getBrand()); List<StoragePos> storagePosList = storagePosManager.findPartNumberListInStorages(freeStorageIds, partNumber, excludePosIds, checkoutType, orderItem.getBrand());
//如果为空的话,则出全部的 //如果为空的话,则出全部的
if (storagePosList == null || storagePosList.isEmpty()) { if (storagePosList == null || storagePosList.isEmpty()) {
storagePosList = storagePosManager.findPartNumberListInStorages(availableStorageIds, partNumber, excludePosIds, checkoutType,orderItem.getBrand()); storagePosList = storagePosManager.findPartNumberListInStorages(availableStorageIds, partNumber, excludePosIds, checkoutType, orderItem.getBrand());
} }
//排序找到最早的 //排序找到最早的
...@@ -596,9 +596,9 @@ public class LiteOrderCache { ...@@ -596,9 +596,9 @@ public class LiteOrderCache {
smfApi.canPutInAfterResolve(pos.getBarcode()); smfApi.canPutInAfterResolve(pos.getBarcode());
} catch (ValidateException e) { } catch (ValidateException e) {
e.printStackTrace(); e.printStackTrace();
log.error(pos.getBarcode().getBarcode() + ":" + e.getMessage()); log.error("工单号:" + orderNo + "唯一码:" + pos.getBarcode().getBarcode() + ":" + e.getMessage());
excludePosIds.add(pos.getId());
pos = null; pos = null;
break;
} }
} while (pos == null); } while (pos == null);
} }
......
...@@ -22,4 +22,6 @@ public interface IDataLogManager extends IBaseManager<DataLog> { ...@@ -22,4 +22,6 @@ public interface IDataLogManager extends IBaseManager<DataLog> {
int countByQuery(Query subSourceId); int countByQuery(Query subSourceId);
DataLog getOutReelInfo(String barcode); DataLog getOutReelInfo(String barcode);
DataLog findOne(Query with);
} }
...@@ -139,4 +139,9 @@ public class DataLogManagerImpl implements IDataLogManager { ...@@ -139,4 +139,9 @@ public class DataLogManagerImpl implements IDataLogManager {
query.with(Sort.by(Sort.Direction.DESC, "createDate", "updateDate")); query.with(Sort.by(Sort.Direction.DESC, "createDate", "updateDate"));
return dataLogDao.findOne(query); return dataLogDao.findOne(query);
} }
@Override
public DataLog findOne(Query query) {
return dataLogDao.findOne(query);
}
} }
...@@ -318,40 +318,40 @@ public class TaskService { ...@@ -318,40 +318,40 @@ public class TaskService {
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() + "]取消成功");
//同时进行库位屏蔽(不需要) //同时进行库位屏蔽
/* if (*//*task.isPutInTask() &&*//* !task.isFinished()) { if (!task.isFinished()) {
String posName = task.getPosName(); String posName = task.getPosName();
if (StringUtils.isNotBlank(posName)) { StoragePos storagePos = storagePosManager.getByPosName(posName);
StoragePos pos = storagePosManager.getByPosName(posName); //如果是入库任务,直接屏蔽库位
if (pos != null) { if (task.isPutInTask()) {
//排查料架 disablePos(task.getBarcode(),storagePos);
Storage storage = dataCache.getStorageById(pos.getStorageId()); }
if (!storage.isNLShelf() && !storage.isNLMShelf() && !storage.isNLPShelf() && !storage.isShelf()) { //如果是出库任务,判断当前任务的barcode和库位中的师傅一致
pos.setEnabled(false); else if (task.isCheckOutTask()) {
pos.setMsg("任务取消,屏蔽库位"); Barcode barcode = storagePos.getBarcode();
storagePosManager.save(pos); if (barcode == null) {
log.info("任务取消,屏蔽库位:库位号[" + pos.getId() + "][" + pos.getPosName() + "]barcode[" + task.getBarcode() + "]"); disablePos(task.getBarcode(),storagePos);
DeviceMessageUtil.addEnabledPosMessage(pos, SecurityUtils.getCurrentUsername()); } else if (barcode != null && task.getBarcode().equals(barcode.getBarcode())) {
} barcode = clearOut(barcode);
//清除标记 storagePos.setBarcode(barcode);
Barcode barcode = clearOut(pos.getBarcode()); disablePos(task.getBarcode(),storagePos);
//如果是出库任务,同时更新库位信息
if (task.isCheckOutTask()) {
if (pos.getBarcode() != null) {
pos.setBarcode(barcode);
storagePosManager.save(pos);
}
}
} }
} }
//解除绑定
ReelLockPosUtil.removeReelLockPosInfo(task.getBarcode()); ReelLockPosUtil.removeReelLockPosInfo(task.getBarcode());
}*/ }
return true; return true;
} }
return false; return false;
} }
private void disablePos(String barcode,StoragePos storagePos) {
storagePos.setEnabled(false);
storagePos.setMsg("任务取消,屏蔽库位");
storagePosManager.save(storagePos);
log.info("任务取消,屏蔽库位:库位号[" + storagePos.getId() + "][" + storagePos.getPosName() + "]barcode[" + barcode + "]");
DeviceMessageUtil.addEnabledPosMessage(storagePos, SecurityUtils.getCurrentUsername());
}
public boolean cancelTask(String taskId) { public boolean cancelTask(String taskId) {
DataLog task = dataLogDao.findOneById(taskId); DataLog task = dataLogDao.findOneById(taskId);
......
package com.neotel.smfcore.custom.lizhen.innerBox.rest;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.bean.CodeBean;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
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.order.service.manager.ILiteOrderItemManager;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Api("打印机")
@RestController
@RequestMapping("/printer")
public class PrinterRestController {
@Autowired
private CodeResolve codeResolve;
@Autowired
private TaskService taskService;
@Autowired
private ILiteOrderManager liteOrderManager;
@Autowired
private ILiteOrderItemManager liteOrderItemManager;
@Autowired
private IDataLogManager dataLogManager;
@ApiOperation("补打印标签")
@RequestMapping("/labelPrinting")
@AnonymousAccess
public ResultBean labelPrinting(@RequestBody Map<String, String> paramMap) {
Map<String, String> resultMap = new HashMap<>();
String code = paramMap.get("code");
CodeBean codeBean = codeResolve.resolveSingleCode(code);
Barcode barcode = codeBean.getBarcode();
if (barcode != null) {
String barcodeStr = barcode.getBarcode();
//找到有没有正在执行的出库任务
DataLog dataLog = findTask(barcodeStr);
//如果有正在执行的任务,直接完成,另外获取贴标信息
if (dataLog != null) {
finishTask(dataLog);
resultMap = getLabelInfo(dataLog);
}
//如果没有,直接从数据库中查 最早一条的任务
else {
DataLog task = findEarliestTask(barcodeStr);
if (task != null) {
resultMap = getLabelInfo(task);
}
}
}
if (resultMap == null || resultMap.isEmpty()) {
return ResultBean.newErrorResult(-1, "", "未找到补打印标签信息");
}
return ResultBean.newOkResult(resultMap);
}
private DataLog findEarliestTask(String barcodeStr) {
Query query = new Query();
Criteria criteria = Criteria.where("barcode").is(barcodeStr).and("type").is(OP.CHECKOUT).and("status").is("FINISHED");
Sort sort = Sort.by(Sort.Direction.DESC, "createDate");
return dataLogManager.findOne(query.addCriteria(criteria).with(sort));
}
private DataLog findTask(String barcodeStr) {
List<DataLog> allTaskList = taskService.getAllTasks();
for (DataLog task : allTaskList) {
if (barcodeStr.equals(task.getBarcode()) && task.isCheckOutTask() && !task.isFinished() && !task.isCancel()) {
return task;
}
}
return null;
}
private void finishTask(DataLog task) {
task.setStatus(OP_STATUS.FINISHED.name());
taskService.updateFinishedTask(task);
taskService.removeFinishedTask(task);
}
private Map<String, String> getLabelInfo(DataLog dataLog) {
Map<String, String> resultMap = new HashMap<>();
String sourceId = dataLog.getSourceId();
String subSourceId = dataLog.getSubSourceId();
if (StringUtils.isNotBlank(sourceId) && StringUtils.isNotBlank(subSourceId)) {
LiteOrder liteOrder = liteOrderManager.get(dataLog.getSourceId());
if (liteOrder != null) {
LiteOrderItem liteOrderItem = liteOrderItemManager.get(dataLog.getSubSourceId());
if (liteOrderItem != null) {
resultMap.put("barcode", dataLog.getBarcode());
resultMap.put("pn", dataLog.getPartNumber());
resultMap.put("station", liteOrderItem.getTableNo());
resultMap.put("side", liteOrderItem.getSide());
resultMap.put("hSerial", liteOrder.getOrderNo());
resultMap.put("line", liteOrder.getLine());
resultMap.put("slot", liteOrderItem.getSlot());
resultMap.put("subSlot", liteOrderItem.getSubSlot());
}
}
}
return resultMap;
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!