Commit ebd78d69 zshaohui

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

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