Commit a1d9ad19 zshaohui

功能优化 修改

1 个父辈 1789a1ea
......@@ -192,11 +192,11 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
if (!storage.canPutInPos(barcodeSave.getPlateSize(), barcodeSave.getHeight(), storagePos.getW(), storagePos.getH())) {
//String reelSize = barcodeSave.getPlateSize() + "x" + barcodeSave.getHeight();
//String posSize = storagePos.getW() + "x" + storagePos.getH();
//throw new ValidateException("smfcore.error.pos.sizeNotMatch", "料盘尺寸[{0}}]与库位{1}尺寸[{2}]不符,无法入库", new String[]{reelSize,posName,posSize});
String reelSize = barcodeSave.getPlateSize() + "x" + barcodeSave.getHeight();
String posSize = storagePos.getW() + "x" + storagePos.getH();
throw new ValidateException("smfcore.error.pos.sizeNotMatch", "料盘尺寸[{0}}]与库位{1}尺寸[{2}]不符,无法入库", new String[]{reelSize,posName,posSize});
//如果尺寸不符合,则重新查找空库位
storagePos = findLineEmptyPosForPutIn(storage, barcodeSave);
//storagePos = findLineEmptyPosForPutIn(storage, barcodeSave);
}
} else {
......@@ -240,7 +240,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
Barcode barcodeSave = smfApi.canPutInBeforeResolve(params);
if(barcodeSave == null){
barcodeSave = codeResolve.resolveOneValideBarcode(codeStr,type);
}
}
//本地难条码是否可以入库
verifyBarcodePutIn(Lists.<Storage>newArrayList(storage), barcodeSave);
//从API验证
......
......@@ -8,6 +8,7 @@ import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.api.SmfApi;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
......@@ -27,6 +28,8 @@ import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.util.*;
......@@ -53,9 +56,13 @@ public class LiteOrderCache {
@Autowired
private IStoragePosManager storagePosManager;
@Autowired
private SmfApi smfApi;
@Autowired
private IBarcodeManager barcodeManager;
/**
* 正在执行的liteOrderMap, key 为orderNo,value 为order
*/
......@@ -396,23 +403,29 @@ public class LiteOrderCache {
if(cacheOrder.getType()==2){
//RI
pos=storagePosManager.getByBarcode(orderItem.getRi());
if(excludePosIds.contains(pos.getId())) {
log.info("工单[" + orderNo + "]RI出库,任务数[" + taskReelCount + "]出库位置仓位【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "]已在操作队列中,跳过不处理");
break;
if (excludePosIds != null && !excludePosIds.isEmpty()) {
if (excludePosIds.contains(pos.getId())) {
log.info("工单[" + orderNo + "]RI出库,任务数[" + taskReelCount + "]出库位置仓位【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "]已在操作队列中,跳过不处理");
break;
}
}
}else{
//PN
pos=storagePosManager.findPartNumberInStorages(availableStorageIds, partNumber, excludePosIds, checkoutType);
}
//如果找不到的话,则查询料箱
if (pos == null) {
List<Criteria> orCriterialList = Lists.newArrayList();
orCriterialList.add(Criteria.where("barcode.barcode").is(orderItem.getRi()));
orCriterialList.add(Criteria.where("barcode.subCodeList.barcode").is(orderItem.getRi()));
Criteria c = new Criteria().orOperator(orCriterialList);
pos = storagePosManager.findByQueryOne(new Query(c));
}
if (pos == null) {
// log.error("未找到可以出库的物料[" + partNumber + "]");
DataLog task = new DataLog();
task.setBarcode(orderItem.getRi());
task.setPosName(null);
task.setPosId(null);
task.setStatus(OP_STATUS.FINISHED.name());
task.setType(OP.CHECKOUT);
taskService.addTaskToExecute(task);
break;
} else {
assignNum = assignNum + pos.getBarcode().getAmount();
......
......@@ -70,4 +70,6 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
List<StoragePos> getNotEmptyByStorageIdList(List<String> storageId);
List<StoragePos> findByBarcodesAndPartNums(List<String> partNums, List<String> reelIds);
StoragePos findByQueryOne(Query query);
}
......@@ -584,6 +584,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
return storagePosDao.findByQuery(query);
}
@Override
public StoragePos findByQueryOne(Query query) {
return storagePosDao.findOne(query);
}
/**
* 获取下一库位的库位名(后缀数字+1)
*/
......
......@@ -6,6 +6,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.JsonUtil;
import com.neotel.smfcore.common.utils.ReelLockPosUtil;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.api.SmfApi;
......@@ -155,6 +156,7 @@ public class TaskService {
*/
public DataLog updateQueueTask(DataLog task) {
tiggerTaskChangeListener(task);
log.info("开始保存----"+ JsonUtil.toJsonStr(task));
task = dataLogDao.save(task);
taskMap.put(task.getId(), task);
//tiggerTaskChangeListener(task);
......@@ -608,9 +610,9 @@ public class TaskService {
log.info("条码[" + barcode.getBarcode() + "]已有锁定库位[" + pos.getPosName() + "],料仓ID["+pos.getStorageId()+"]不在请求列表["+String.join(",",storageIds)+"]中,重新查找库位");
pos = null;
}
else if (pos.getW() < barcode.getPlateSize() || pos.getH() < barcode.getHeight()) {
log.info("条码[" + barcode.getBarcode() + "]尺寸已改变,无法放入已锁定库位[" + pos.getPosName() + "],重新查找库位");
else if (pos.getW() != barcode.getPlateSize() || pos.getH() != barcode.getHeight()) {
pos = null;
log.info("条码[" + barcode.getBarcode() + "]尺寸已改变,无法放入已锁定库位[" + pos.getPosName() + "],重新查找库位");
} else {
Barcode posBarcode = pos.getBarcode();
if (posBarcode == null) {
......
......@@ -6,6 +6,7 @@ import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.JsonUtil;
import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.core.barcode.rest.bean.mapstruct.BarcodeMapper;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.bean.BoxStatusBean;
......@@ -90,6 +91,7 @@ public class NeotelController {
}
if (outItem.get("reelId") != null) {
orderItem.setRi(outItem.get("reelId").toString()); //料盘唯一码
orderItem.setNeedNum(1);
}
orderItemList.add(orderItem);
}
......@@ -99,6 +101,7 @@ public class NeotelController {
liteOrder.setOrderNo(orderNo);
liteOrder.setLine(line);
liteOrder.setSo(so);
liteOrder.setType(2);
liteOrder.setOrderItems(orderItemList);
liteOrder = liteOrderManager.createWithItems(liteOrder);
liteOrderCache.addOrderToMap(liteOrder);
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!