no message
parent
95d6533042
commit
9c6b4cb479
|
|
@ -678,10 +678,36 @@ public class StockServiceImpl implements StockService {
|
||||||
throw new BadRequestException("未找到相应任务记录!");
|
throw new BadRequestException("未找到相应任务记录!");
|
||||||
}
|
}
|
||||||
Task task = taskService.toEntity(taskDto);//Dto转实体
|
Task task = taskService.toEntity(taskDto);//Dto转实体
|
||||||
if (!orderNumber.equals(task.getItemKey().getOrderNumber())) {
|
if (orderNumber.equals(task.getItemKey().getOrderNumber())) {
|
||||||
throw new BadRequestException("扫描的箱号与分配的箱号不一致!");
|
return task;
|
||||||
|
}else{
|
||||||
|
//重新分配
|
||||||
|
return reassignTask(task, orderNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 重新分配任务
|
||||||
|
*/
|
||||||
|
private Task reassignTask(Task task, String orderNumber) {
|
||||||
|
Inventory dstinventory = inventoryRepository.findByOrderNumber(orderNumber,task.getSrcStockCode());
|
||||||
|
if(dstinventory==null){
|
||||||
|
throw new BadRequestException(orderNumber+"箱号无库存,请更换箱号!");
|
||||||
|
}
|
||||||
|
double kyQty = dstinventory.getQuantity()-dstinventory.getQueuedQty();
|
||||||
|
if(kyQty<task.getPlanQty()){
|
||||||
|
throw new BadRequestException("库存数量不足,请更换箱号!");
|
||||||
|
}
|
||||||
|
Inventory srcinventory = inventoryRepository.findById(task.getInvId()).get();
|
||||||
|
srcinventory.setQueuedQty(srcinventory.getQueuedQty()-task.getPlanQty());
|
||||||
|
inventoryRepository.save(srcinventory);
|
||||||
|
dstinventory.setQueuedQty(dstinventory.getQueuedQty()+task.getPlanQty());
|
||||||
|
inventoryRepository.save(dstinventory);
|
||||||
|
task.setInvId(dstinventory.getId());
|
||||||
|
task.setItemKey(dstinventory.getItemKey());
|
||||||
|
taskRepository.save(task);
|
||||||
|
|
||||||
return task;
|
return task;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,4 +55,6 @@ public interface InventoryRepository extends JpaRepository<Inventory, Long>, Jpa
|
||||||
"(:type = 'ITEM' and inv.itemKey.item.id = :itemId) or " +
|
"(:type = 'ITEM' and inv.itemKey.item.id = :itemId) or " +
|
||||||
"(:type = 'WAREHOUSE'))")
|
"(:type = 'WAREHOUSE'))")
|
||||||
List<Inventory> getInvForPlan(String type, Long areaId, Long itemId);
|
List<Inventory> getInvForPlan(String type, Long areaId, Long itemId);
|
||||||
|
@Query("from Inventory inv where inv.itemKey.orderNumber=:orderNumber and inv.stockCode=:stockCode ")
|
||||||
|
Inventory findByOrderNumber(String orderNumber, String stockCode);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -134,4 +134,11 @@ public interface AgvTaskService {
|
||||||
*/
|
*/
|
||||||
void agvTaskCallback(AgvTask agvTask, String status, String containerCode);
|
void agvTaskCallback(AgvTask agvTask, String status, String containerCode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 叫料反空车至备料缓存区
|
||||||
|
*
|
||||||
|
* @param goodType 小件/大件
|
||||||
|
*/
|
||||||
|
void callEmptyStock(String goodType);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,7 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
||||||
private final AsnDetailService asnDetailService;
|
private final AsnDetailService asnDetailService;
|
||||||
private final StockRepository stockRepository;
|
private final StockRepository stockRepository;
|
||||||
private final PickRepository pickRepository;
|
private final PickRepository pickRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> queryAll(AgvTaskQueryCriteria criteria, Pageable pageable) {
|
public Map<String, Object> queryAll(AgvTaskQueryCriteria criteria, Pageable pageable) {
|
||||||
Page<AgvTask> page = agvTaskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
|
Page<AgvTask> page = agvTaskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
|
||||||
|
|
@ -409,6 +410,33 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void callEmptyStock(String goodType) {
|
||||||
|
String srcAreaCode = "小件".equals(goodType) ? AreaNameDic.JLQ : AreaNameDic.JLQ;
|
||||||
|
String dstAreaCode = "小件".equals(goodType) ? AreaNameDic.XJFBCQ : AreaNameDic.DJFBCQ;
|
||||||
|
|
||||||
|
List<Stock> emptyStock = stockRepository.findByEnmptyStock(srcAreaCode);
|
||||||
|
if (emptyStock.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Stock stock = emptyStock.get(0);
|
||||||
|
Point srcPoint = stock.getPoint();
|
||||||
|
Point endPoint = pointService.findByCode(null, BaseStatus.FREE, BaseStatus.BOX, dstAreaCode, null, null);
|
||||||
|
|
||||||
|
if (endPoint == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
AgvTask agvTask = new AgvTask(BizStatus.CALL_RETURN, stock.getCode(), srcPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "RACK_MOVE");
|
||||||
|
agvTaskRepository.save(agvTask);
|
||||||
|
sendAgvTaskHJImpl(agvTask);
|
||||||
|
|
||||||
|
endPoint.setStatus(BaseStatus.USED);
|
||||||
|
pointService.update(endPoint);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void handleUpContainer(AgvTask agvTask, String containerCode) {
|
private void handleUpContainer(AgvTask agvTask, String containerCode) {
|
||||||
//顶升释放起点位置状态及容器绑定的起点位置
|
//顶升释放起点位置状态及容器绑定的起点位置
|
||||||
Point startPoint = pointService.findByCode(agvTask.getStartSlotCode(), null, null, null, null, null);
|
Point startPoint = pointService.findByCode(agvTask.getStartSlotCode(), null, null, null, null, null);
|
||||||
|
|
@ -441,6 +469,10 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
||||||
case AreaNameDic.JLQ:
|
case AreaNameDic.JLQ:
|
||||||
handleJl(stock, endPoint, agvTask);//叫料完成
|
handleJl(stock, endPoint, agvTask);//叫料完成
|
||||||
break;
|
break;
|
||||||
|
case AreaNameDic.XJFBCQ:
|
||||||
|
case AreaNameDic.DJFBCQ:
|
||||||
|
handleCPXXAndCPRK(endPoint, stock);//叫料返空完成
|
||||||
|
break;
|
||||||
case AreaNameDic.CPXXQ:
|
case AreaNameDic.CPXXQ:
|
||||||
case AreaNameDic.CPRKQ:
|
case AreaNameDic.CPRKQ:
|
||||||
handleCPXXAndCPRK(endPoint, stock);//空货架-成品下线区;满货架-成品入库区
|
handleCPXXAndCPRK(endPoint, stock);//空货架-成品下线区;满货架-成品入库区
|
||||||
|
|
@ -601,9 +633,9 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
||||||
|
|
||||||
//回传MES
|
//回传MES
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新库存
|
* 更新库存
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -354,10 +354,15 @@ public class PickServiceImpl implements PickService {
|
||||||
agvTask = new AgvTask(BizStatus.PICK, task.getSrcStockCode(), task.getSrcPointCode(), task.getDstPointCode(), BizStatus.OPEN, "FORKLIFT_MOVE");
|
agvTask = new AgvTask(BizStatus.PICK, task.getSrcStockCode(), task.getSrcPointCode(), task.getDstPointCode(), BizStatus.OPEN, "FORKLIFT_MOVE");
|
||||||
agvTaskRepository.save(agvTask);
|
agvTaskRepository.save(agvTask);
|
||||||
agvTaskService.sendAgvTaskCCImpl(agvTask);
|
agvTaskService.sendAgvTaskCCImpl(agvTask);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
task.setAgvTask(agvTask);
|
task.setAgvTask(agvTask);
|
||||||
task.setTaskStatus(agvTask.getStatus());
|
task.setTaskStatus(agvTask.getStatus());
|
||||||
taskRepository.save(task);
|
taskRepository.save(task);
|
||||||
|
|
||||||
|
//叫料区是否有空车,呼叫到备料缓存区
|
||||||
|
agvTaskService.callEmptyStock(task.getPickDetail().getItem().getGoodType());
|
||||||
}
|
}
|
||||||
/*更新出库单状态*/
|
/*更新出库单状态*/
|
||||||
pick.setStatus(BizStatus.PICKUP);
|
pick.setStatus(BizStatus.PICKUP);
|
||||||
|
|
|
||||||
|
|
@ -142,6 +142,12 @@ public interface BizStatus {
|
||||||
*/
|
*/
|
||||||
String CALL_PICK = "CALL_PICK";
|
String CALL_PICK = "CALL_PICK";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务类型-叫料反空
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
String CALL_RETURN = "CALL_RETURN";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 库存日志-移位
|
* 库存日志-移位
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue