Commit ebd78d69 zshaohui

1.忽略流水线检查,自动清空出料口

2.虚拟仓手动出库,不允许出智能仓的物料
1 个父辈 b35a9306
package com.neotel.smfcore.common.utils;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.common.bean.ReelLockPosInfo;
import org.apache.logging.log4j.LogManager;
......@@ -25,7 +26,7 @@ public class ReelLockPosUtil {
/**
* 料盘锁定库位信息,用于包装料分配到其他料仓
*/
private static Map<String, ReelLockPosInfo> reelLocKPosMap;
private static Map<String, ReelLockPosInfo> reelLocKPosMap = Maps.newConcurrentMap();
@PostConstruct
......@@ -33,7 +34,7 @@ public class ReelLockPosUtil {
dataCache = autodataCache;
reelLocKPosMap=dataCache.getCache(REEL_LOCK_POS_MAP_KEY);
if(reelLocKPosMap==null){
reelLocKPosMap=new HashMap<String,ReelLockPosInfo>(){};
reelLocKPosMap= Maps.newConcurrentMap();
}
}
......@@ -88,6 +89,7 @@ public class ReelLockPosUtil {
* 清理条码锁定库位信息
*/
public static void removeReelLockPosInfo(String barcode) {
log.info("barcode-removeReelLock:"+barcode);
reelLocKPosMap.remove(barcode);
dataCache.updateCache(REEL_LOCK_POS_MAP_KEY, reelLocKPosMap);
}
......
......@@ -35,6 +35,7 @@ import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.lizhen.LizhenApi;
import com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport;
import com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType;
import com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil;
import com.neotel.smfcore.custom.lizhen.report.bean.query.ReportQueryCondition;
......@@ -389,6 +390,20 @@ public class LiteOrderCache {
}
}
if (closed) {
Boolean ignoreLineCheck = dataCache.getCache(Constants.CACHE_ignoreLineCheck);
if (ignoreLineCheck == null){
ignoreLineCheck = false;
}
if (ignoreLineCheck) {
log.info("ignoreLineCheck为:" + ignoreLineCheck + "清空出料口信息:" + task.getExport() + ",工单号为:" + task.getSourceName());
if (StringUtils.isNotBlank(task.getExport())){
StorageExport export = StorageExportUtil.getExport(task.getExport());
if (StringUtils.isNotBlank(export.getHSerial())) {
StorageExportUtil.clearExport(task.getExport());
//StorageExportUtil.updateExport(task.getExport() + StorageExportUtil.OUT_STATION, export);
}
}
}
order.setClosed(closed);
}
}
......@@ -397,6 +412,20 @@ public class LiteOrderCache {
if (order.getFinishedReelCount() >= order.getTaskReelCount()) {
log.info("工单[" + orderNo + "]的出库任务已完成,共出库:" + order.getFinishedReelCount() + " 盘");
order.setFinishDate(new Date());
Boolean ignoreLineCheck = dataCache.getCache(Constants.CACHE_ignoreLineCheck);
if (ignoreLineCheck == null){
ignoreLineCheck = false;
}
if (ignoreLineCheck) {
log.info("ignoreLineCheck为:" + ignoreLineCheck + "清空出料口信息:" + task.getExport() + ",工单号为:" + task.getSourceName());
if (StringUtils.isNotBlank(task.getExport())){
StorageExport export = StorageExportUtil.getExport(task.getExport());
if (StringUtils.isNotBlank(export.getHSerial())) {
StorageExportUtil.clearExport(task.getExport());
//StorageExportUtil.updateExport(task.getExport() + StorageExportUtil.OUT_STATION, export);
}
}
}
finishedOrderTasks(order);
}
liteOrderManager.save(order);
......
......@@ -35,6 +35,7 @@ import com.neotel.smfcore.custom.lizhen.LizhenApi;
import com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport;
import com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType;
import com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil;
import com.neotel.smfcore.custom.lizhen.virtual.service.manager.IVirInventoryManager;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -71,6 +72,9 @@ public class TaskService {
@Autowired
private LizhenApi lizhenApi;
@Autowired
private IVirInventoryManager virInventoryManager;
/**
* 任务队列,Key 为dataLog的ID,value 为本区域待执行的任务
*/
......@@ -216,6 +220,9 @@ public class TaskService {
private void tiggerTaskChangeListener(DataLog task) {
liteOrderCache.onTaskStatusChange(task);
smfApi.onTaskStatusChange(task);
//修改盘点状态
virInventoryManager.updateStatus(task);
}
/**
......
......@@ -2,6 +2,7 @@ package com.neotel.smfcore.custom.lizhen.innerBox.rest;
import com.alibaba.fastjson.JSON;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.ReelLockPosUtil;
import com.neotel.smfcore.common.utils.StringUtils;
......@@ -451,8 +452,18 @@ public class InnerBoxRestController {
String sourceId = dataLog.getSourceId();
if (StringUtils.isNotBlank(sourceId) && StringUtils.isNotBlank(sourceName)) {
//String export = StorageExportUtil.getExportByOrderNo(sourceName,false);
log.info(dataLog.getBarcode() + "获取出料口信息为:" + dataLog.getExport());
resultMap.put("export", dataLog.getExport());
//判断是否禁用了
String exportStr = dataLog.getExport();
if (StringUtils.isNotBlank(exportStr)) {
StorageExport export = StorageExportUtil.getExport(exportStr);
if (export.isDisable()) {
log.info(exportStr + "出料口被禁用");
resultMap.put("export", "");
} else {
log.info(dataLog.getBarcode() + "获取出料口信息为:" + exportStr);
resultMap.put("export", exportStr);
}
}
} else {
String export = StorageExportUtil.getExportByOrderNo("",false,false);
log.info(dataLog.getBarcode() + "手动出库获取出料口信息为:" + export);
......
......@@ -197,6 +197,7 @@ public class VirtualRestController {
@RequestMapping("/vitual/checkout")
private ResultBean checkout(@RequestBody Map<String,String> paramMap) {
String code = paramMap.get("code");
log.info("手动出库的信息为:"+code);
String newCode = code.toUpperCase();
//开始解析code
CodeBean codeBean = codeResolve.resolveSingleCode("=1x1=" + newCode);
......@@ -220,6 +221,10 @@ public class VirtualRestController {
}
if (pos != null) {
Storage storage = dataCache.getStorageById(pos.getStorageId());
if (!storage.isVirtual()) {
log.info(barcodeStr+"存在智能仓:"+storage.getName()+"库位为:"+pos.getPosName());
return ResultBean.newErrorResult(-1, "", barcodeStr + "存在智能仓:" + storage.getName() + ",库位为:" + pos.getPosName());
}
DataLog dataLog = new DataLog(storage, barcode, pos);
dataLog.setStatus(OP_STATUS.FINISHED.name());
dataLog.setType(OP.CHECKOUT);
......
package com.neotel.smfcore.custom.lizhen.virtual.service.manager;
import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.custom.lizhen.virtual.bean.VirInventory;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
......@@ -14,4 +15,6 @@ public interface IVirInventoryManager extends IBaseManager<VirInventory> {
VirInventory getByBatchAndBarcode(String batch, String barcode);
List<VirInventory> findByQuery(Query query, Pageable pageable);
void updateStatus(DataLog task);
}
......@@ -2,10 +2,15 @@ package com.neotel.smfcore.custom.lizhen.virtual.service.manager.impl;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.custom.lizhen.virtual.bean.VirInventory;
import com.neotel.smfcore.custom.lizhen.virtual.service.dao.IVirInventoryDao;
import com.neotel.smfcore.custom.lizhen.virtual.service.manager.IVirInventoryManager;
import com.neotel.smfcore.custom.lizhen.virtual.util.VirInventoryUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria;
......@@ -21,6 +26,9 @@ public class VirInventoryManagerImpl implements IVirInventoryManager {
@Autowired
private IVirInventoryDao virInventoryDao;
@Autowired
private DataCache dataCache;
@Override
public VirInventory get(String id) {
return null;
......@@ -65,4 +73,20 @@ public class VirInventoryManagerImpl implements IVirInventoryManager {
public List<VirInventory> findByQuery(Query query, Pageable pageable) {
return virInventoryDao.findByQuery(query, pageable);
}
@Override
public void updateStatus(DataLog task) {
/*if (task.isFinished()) {
String batch = dataCache.getCache(VirInventoryUtil.VIRINVENTORY_CACHE_BATCH);
if (StringUtils.isNotBlank(batch)) {
VirInventory virInventory = getByBatchAndBarcode(batch, task.getBarcode());
if (virInventory != null) {
if (!virInventory.isInventoryFinished()) {
virInventory.setInventoryFinished(true);
save(virInventory);
}
}
}
}*/
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!