no message
							parent
							
								
									95d6533042
								
							
						
					
					
						commit
						9c6b4cb479
					
				| 
						 | 
				
			
			@ -678,10 +678,36 @@ public class StockServiceImpl implements StockService {
 | 
			
		|||
            throw new BadRequestException("未找到相应任务记录!");
 | 
			
		||||
        }
 | 
			
		||||
        Task task = taskService.toEntity(taskDto);//Dto转实体
 | 
			
		||||
        if (!orderNumber.equals(task.getItemKey().getOrderNumber())) {
 | 
			
		||||
            throw new BadRequestException("扫描的箱号与分配的箱号不一致!");
 | 
			
		||||
        if (orderNumber.equals(task.getItemKey().getOrderNumber())) {
 | 
			
		||||
            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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,4 +55,6 @@ public interface InventoryRepository extends JpaRepository<Inventory, Long>, Jpa
 | 
			
		|||
            "(:type = 'ITEM' and inv.itemKey.item.id = :itemId) or " +
 | 
			
		||||
            "(:type = 'WAREHOUSE'))")
 | 
			
		||||
    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);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 叫料反空车至备料缓存区
 | 
			
		||||
     *
 | 
			
		||||
     * @param goodType 小件/大件
 | 
			
		||||
     */
 | 
			
		||||
    void callEmptyStock(String goodType);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,6 +69,7 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
			
		|||
    private final AsnDetailService asnDetailService;
 | 
			
		||||
    private final StockRepository stockRepository;
 | 
			
		||||
    private final PickRepository pickRepository;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Map<String, Object> queryAll(AgvTaskQueryCriteria criteria, Pageable 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) {
 | 
			
		||||
        //顶升释放起点位置状态及容器绑定的起点位置
 | 
			
		||||
        Point startPoint = pointService.findByCode(agvTask.getStartSlotCode(), null, null, null, null, null);
 | 
			
		||||
| 
						 | 
				
			
			@ -439,7 +467,11 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
			
		|||
                handleFbq(taskList, stock, endPoint);//备料完成
 | 
			
		||||
                break;
 | 
			
		||||
            case AreaNameDic.JLQ:
 | 
			
		||||
                handleJl(stock, endPoint,agvTask);//叫料完成
 | 
			
		||||
                handleJl(stock, endPoint, agvTask);//叫料完成
 | 
			
		||||
                break;
 | 
			
		||||
            case AreaNameDic.XJFBCQ:
 | 
			
		||||
            case AreaNameDic.DJFBCQ:
 | 
			
		||||
                handleCPXXAndCPRK(endPoint, stock);//叫料返空完成
 | 
			
		||||
                break;
 | 
			
		||||
            case AreaNameDic.CPXXQ:
 | 
			
		||||
            case AreaNameDic.CPRKQ:
 | 
			
		||||
| 
						 | 
				
			
			@ -583,7 +615,7 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
			
		|||
     *
 | 
			
		||||
     * @param stock
 | 
			
		||||
     */
 | 
			
		||||
    private void handleJl(Stock stock, Point endPoint,AgvTask agvTask) {
 | 
			
		||||
    private void handleJl(Stock stock, Point endPoint, AgvTask agvTask) {
 | 
			
		||||
        List<Inventory> inventoryList = inventoryService.queryInventory(stock);
 | 
			
		||||
        if (!inventoryList.isEmpty()) {
 | 
			
		||||
            inventoryService.deleteAll(inventoryList.stream().map(Inventory::getId).toArray(Long[]::new));
 | 
			
		||||
| 
						 | 
				
			
			@ -593,17 +625,17 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
			
		|||
        endPoint.setStatus(BaseStatus.USED);
 | 
			
		||||
        pointService.update(endPoint);
 | 
			
		||||
 | 
			
		||||
        Pick pick=pickRepository.findByPickCode(agvTask.getLineSlotCode());
 | 
			
		||||
        if(pick!=null){
 | 
			
		||||
        Pick pick = pickRepository.findByPickCode(agvTask.getLineSlotCode());
 | 
			
		||||
        if (pick != null) {
 | 
			
		||||
            pick.setStatus(BizStatus.CLOSE);
 | 
			
		||||
            pickRepository.save(pick);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //回传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");
 | 
			
		||||
                agvTaskRepository.save(agvTask);
 | 
			
		||||
                agvTaskService.sendAgvTaskCCImpl(agvTask);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            task.setAgvTask(agvTask);
 | 
			
		||||
            task.setTaskStatus(agvTask.getStatus());
 | 
			
		||||
            taskRepository.save(task);
 | 
			
		||||
 | 
			
		||||
            //叫料区是否有空车,呼叫到备料缓存区
 | 
			
		||||
            agvTaskService.callEmptyStock(task.getPickDetail().getItem().getGoodType());
 | 
			
		||||
        }
 | 
			
		||||
        /*更新出库单状态*/
 | 
			
		||||
        pick.setStatus(BizStatus.PICKUP);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -142,6 +142,12 @@ public interface BizStatus {
 | 
			
		|||
     */
 | 
			
		||||
    String CALL_PICK = "CALL_PICK";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 任务类型-叫料反空
 | 
			
		||||
     *
 | 
			
		||||
     */
 | 
			
		||||
    String CALL_RETURN = "CALL_RETURN";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 库存日志-移位
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue