Commit 4980ef23 zshaohui

1.增加抛送设备状态和心跳

2.pk修改线体
1 个父辈 4a9931d8
......@@ -176,6 +176,7 @@ public class Barcode extends BasePo implements Serializable {
*/
private Map<String,String> extraDataMap = new HashMap<>();
private int isVirtual = 0;
/**
* 获取Barcode的一些额外属性
......
......@@ -39,6 +39,7 @@ public class BaseEquipHandler implements IEquipmentHandler {
DeviceMessageUtil.addOnlineMessage(statusBean.getCid(), "", statusBean.getClientIp());
// EquipStatusUtil.updateClientMsg(statusBean.getCid(), "", "", "", null);
}
statusBean.setTime(System.currentTimeMillis());
EquipStatusUtil.updateStatusBean(statusBean);
} catch (Exception e) {
log.error("客户端故障消息处理出错", e);
......
......@@ -1201,11 +1201,16 @@ public class LiteOrderCache {
//找到符合条件的partNumber
List<Barcode> barcodeList = new ArrayList<>();
for (StoragePos pos : storagePosList) {
Storage storage = dataCache.getStorageById(pos.getStorageId());
for (Barcode barcode : pos.getBarcode().getSubCodeList()) {
if (barcode.getPartNumber().equals(partNumber)) {
/*if (barcode.getExpireDate() == null) {
barcode.setExpireDate(new Date());
}*/
if (storage != null) {
if (storage.isVirtual()) {
barcode.setIsVirtual(1);
}
}
barcodeList.add(barcode);
}
}
......@@ -1213,7 +1218,10 @@ public class LiteOrderCache {
//按排序找到最先过期入库的partNumber
if (barcodeList != null && !barcodeList.isEmpty()) {
List<String> posNameList = barcodeList.stream().sorted(Comparator.comparing(Barcode::getCreateDate, Comparator.nullsFirst(Date::compareTo)).reversed()).map(item -> item.getPosName()).distinct().collect(Collectors.toList());
barcodeList = barcodeList.stream().sorted(Comparator.comparing(Barcode::getCreateDate, Comparator.nullsFirst(Date::compareTo)).reversed()).collect(Collectors.toList());
barcodeList = barcodeList.stream().sorted(Comparator.comparing(Barcode::getIsVirtual).reversed()).collect(Collectors.toList());
List<String> posNameList = barcodeList.stream().map(item -> item.getPosName()).distinct().collect(Collectors.toList());
for (String posName : posNameList) {
for (StoragePos pos : storagePosList) {
if (StringUtils.isNotBlank(posName)) {
......
......@@ -5,6 +5,7 @@ import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.enums.LITEORDER_SOURCE;
......@@ -33,6 +34,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@RestController
......@@ -54,6 +56,11 @@ public class PkCheckOutController {
@Autowired
private IBarcodeManager barcodeManager;
@Autowired
private DataCache dataCache;
private static final String Cache_Picking_NewLine = "Cache_Picking_NewLine";
@ApiOperation("出库目的地")
@RequestMapping("/checkLoc")
......@@ -89,7 +96,22 @@ public class PkCheckOutController {
queryPickingResult.setCheckOut(false);
}
queryPickingResult.setTargetLoc(liteOrder.getLoc());
if (StringUtils.isNotEmpty(liteOrder.getLine())){
queryPickingResult.setLINE(liteOrder.getLine());
}
}
Map<String,String> newLineCacheMap = dataCache.getCache(Cache_Picking_NewLine);
if (newLineCacheMap == null){
newLineCacheMap = new ConcurrentHashMap<>();
}
String newLine = newLineCacheMap.get(pickingId);
if (StringUtils.isNotEmpty(newLine)){
queryPickingResult.setLINE(newLine);
}
}
pickingResultList = pickingResultList.stream().sorted(Comparator.comparing(QueryPickingResult :: getCREATE_AT)).collect(Collectors.toList());
return ResultBean.newOkResult(QueryPickingDto.convertQueryPickingResultDto(pickingResultList));
......@@ -187,6 +209,14 @@ public class PkCheckOutController {
itemList.add(item);
}
Map<String,String> newLineCacheMap = dataCache.getCache(Cache_Picking_NewLine);
if (newLineCacheMap == null){
newLineCacheMap = new ConcurrentHashMap<>();
}
if (StringUtils.isNotEmpty(newLineCacheMap.get(pickingId))){
line = newLineCacheMap.get(pickingId);
}
//5.创建工单
LiteOrder newOrder = new LiteOrder();
newOrder.setOrderNo(pickingId);
......@@ -198,6 +228,9 @@ public class PkCheckOutController {
newOrder.setCheckType(LiteorderCheckType.PICKING_CHECKOUT);
newOrder = liteOrderManager.createWithItems(newOrder);
liteOrderCache.addOrderToMap(newOrder);
newLineCacheMap.remove(pickingId);
dataCache.updateCache(Cache_Picking_NewLine,newLineCacheMap);
}
//6.执行工单出库
......@@ -234,4 +267,39 @@ public class PkCheckOutController {
}
return ResultBean.newErrorResult(-1,"","工单:"+pickingId+"没有要出库的料箱");
}
@ApiOperation("修改pk线别")
@RequestMapping("/updatePkLine")
@AnonymousAccess
public ResultBean updatePkLine(String pkId, String line) {
if (StringUtils.isEmpty(pkId)) {
return ResultBean.newErrorResult(-1, "", "挑料单号不能为空");
}
if (StringUtils.isEmpty(line)) {
return ResultBean.newErrorResult(-1, "", "线别不能为空");
}
//为了不改变原有逻辑,先临时加个缓存,等点击pk出库 生成工单的时候,再把新的线体设置进去
LiteOrder liteOrder = liteOrderCache.getLiteOrder(pkId);
if (liteOrder == null) {
liteOrder = liteOrderManager.findByOrderNo(pkId);
}
if (liteOrder != null) {
if (!liteOrder.isTaskFinished() && !liteOrder.isNew()) {
return ResultBean.newErrorResult(-1, "", pkId + "正在执行中,不允许修改线体");
}
liteOrder.setLine(line);
liteOrderManager.save(liteOrder);
liteOrderCache.addOrderToMap(liteOrder);
} else {
Map<String,String> newLineCacheMap = dataCache.getCache(Cache_Picking_NewLine);
if (newLineCacheMap == null){
newLineCacheMap = new ConcurrentHashMap<>();
}
newLineCacheMap.put(pkId,line);
dataCache.updateCache(Cache_Picking_NewLine,newLineCacheMap);
}
return ResultBean.newOkResult("");
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!