no message
							parent
							
								
									47589b2743
								
							
						
					
					
						commit
						009873c137
					
				| 
						 | 
					@ -43,9 +43,12 @@ public class InventoryQueryCriteria{
 | 
				
			||||||
    @Query(joinName = "itemKey>item>", propName="name",type = Query.Type.INNER_LIKE)
 | 
					    @Query(joinName = "itemKey>item>", propName="name",type = Query.Type.INNER_LIKE)
 | 
				
			||||||
    private String itemName;
 | 
					    private String itemName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Query(joinName = "itemKey>", propName="propC1",type = Query.Type.INNER_LIKE)
 | 
					    @Query(joinName = "itemKey", propName="propC1",type = Query.Type.INNER_LIKE)
 | 
				
			||||||
    private String propC1;
 | 
					    private String propC1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Query(joinName = "itemKey", propName="orderNumber",type = Query.Type.INNER_LIKE)
 | 
				
			||||||
 | 
					    private String orderNumber;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Query(joinName = "itemKey>item>", propName="code",type = Query.Type.IN)
 | 
					    @Query(joinName = "itemKey>item>", propName="code",type = Query.Type.IN)
 | 
				
			||||||
    private List<String> itemCode;
 | 
					    private List<String> itemCode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -56,8 +59,8 @@ public class InventoryQueryCriteria{
 | 
				
			||||||
    @Query(type = Query.Type.NOT_EQUAL)
 | 
					    @Query(type = Query.Type.NOT_EQUAL)
 | 
				
			||||||
    private Double quantity;
 | 
					    private Double quantity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Query(joinName = "stock", propName="name",type = Query.Type.INNER_LIKE)
 | 
					    @Query(joinName = "stock", propName="code",type = Query.Type.INNER_LIKE)
 | 
				
			||||||
    private String stockName;
 | 
					    private String stockCode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Query(joinName = "point>area>", propName="name",type = Query.Type.INNER_LIKE)
 | 
					    @Query(joinName = "point>area>", propName="name",type = Query.Type.INNER_LIKE)
 | 
				
			||||||
    private String areaName;
 | 
					    private String areaName;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -468,114 +468,56 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
				
			||||||
        String agv_on_off = "OFF";
 | 
					        String agv_on_off = "OFF";
 | 
				
			||||||
        agv_on_off = dictService.getDictDescription("agv_on_off") == null ? "OFF" : dictService.getDictDescription("agv_on_off").getDescription();
 | 
					        agv_on_off = dictService.getDictDescription("agv_on_off") == null ? "OFF" : dictService.getDictDescription("agv_on_off").getDescription();
 | 
				
			||||||
        String code = "0";
 | 
					        String code = "0";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (status.equals("ARRIVED")) {
 | 
					        if (status.equals("ARRIVED")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (status.equals("UP_CONTAINER")) {
 | 
					        } else if (status.equals("UP_CONTAINER")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (status.equals("COMPLETED")) {
 | 
					        } else if (status.equals("COMPLETED")) {
 | 
				
			||||||
            //任务完成;根据AGV任务的目标点位走对应流程
 | 
					            List<Task> taskList = taskRepository.getAgvTaskList(agvTask.getId());
 | 
				
			||||||
            Point endPoint = pointService.findByCode(agvTask.getEndSlotCode(), null, null, null, null);
 | 
					            if(agvTask.getType().equals(BizStatus.ASN)){
 | 
				
			||||||
            String endAreaName = endPoint.getArea().getName();
 | 
					                //增加库存
 | 
				
			||||||
            if (endPoint != null) {
 | 
					                for (Task task : taskList) {
 | 
				
			||||||
                Stock stock = stockRepository.getStockByCode(containerCode);
 | 
					                    AsnDetail ad = task.getAsnDetail();
 | 
				
			||||||
                if (stock == null) {
 | 
					                    ad.setReceivedQty(ad.getOrderQty());
 | 
				
			||||||
                    throw new RuntimeException(containerCode + "容器不存在! 请维护");
 | 
					                    ad.setStatus(BizStatus.RECEIVED);
 | 
				
			||||||
                }
 | 
					                    asnDetailRepository.save(ad);
 | 
				
			||||||
                List<Task> taskList = taskRepository.getAgvTaskList(agvTask.getId());
 | 
					                    task.setTaskStatus(BizStatus.FINISH);
 | 
				
			||||||
                if (endAreaName.equals(AreaNameDic.OneFCX) || endAreaName.equals(AreaNameDic.TwoFCX)) {
 | 
					                    task.setMoveQty(task.getPlanQty());
 | 
				
			||||||
                    //目标点位容器都由人为拉走,调用容器出场
 | 
					                    taskService.update(task);
 | 
				
			||||||
                   /* if (agv_on_off.equals("ON")) {
 | 
					                    Stock stock=task.getSrcStock();
 | 
				
			||||||
                        String jsonObject = this.containerOut(containerCode);
 | 
					
 | 
				
			||||||
                        String resultJson = HttpPostUtil.sendPostReq(UrlApi.containerOut, jsonObject.toString());
 | 
					                    List<Inventory> inventoryList = inventoryService.queryInventory(stock);
 | 
				
			||||||
                        JSONObject resulObject = JSON.parseObject(resultJson);
 | 
					                    for (Inventory inventory : inventoryList) {
 | 
				
			||||||
                        code = resulObject.getString("code") == null ? "" : resulObject.getString("code");
 | 
					                        Long[] ids = new Long[1];
 | 
				
			||||||
 | 
					                        ids[0] = inventory.getId();
 | 
				
			||||||
 | 
					                        inventoryService.deleteAll(ids);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    if (code.equals("0")) {
 | 
					
 | 
				
			||||||
                        stock.setPoint(null);
 | 
					
 | 
				
			||||||
                        stock.setStatus(BaseStatus.FREE);
 | 
					                    //生成库存
 | 
				
			||||||
                        stockRepository.save(stock);
 | 
					                    Inventory inventory = inventoryService.getInventory(task.getItemKey(), task.getDstPoint(), task.getSrcStock(), task.getDept(), BizStatus.RECEIVING_UP);
 | 
				
			||||||
                    }*/
 | 
					                    inventory.setQuantity(task.getPlanQty());
 | 
				
			||||||
                    stock.setPoint(endPoint);
 | 
					                    inventoryService.update(inventory);
 | 
				
			||||||
                    stockRepository.save(stock);
 | 
					                    inventoryLogService.storeInventoryLog(BizStatus.RECEIVING_UP, BizStatus.ADD, null, task.getItemKey(), task.getSrcPoint(), task.getDstPoint(), task.getSrcStock(), task.getSrcStock(), task.getPlanQty(), task.getPlanQty(), BizStatus.ASN, ad.getId(), inventory.getId(), ad.getRemark());
 | 
				
			||||||
                    //线边点位释放
 | 
					
 | 
				
			||||||
                    endPoint.setStatus(BaseStatus.FREE);
 | 
					
 | 
				
			||||||
                    pointService.update(endPoint);
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }else if(agvTask.getType().equals(BizStatus.PICK)){
 | 
				
			||||||
                //处理实际逻辑
 | 
					                //处理实际逻辑
 | 
				
			||||||
                if (endAreaName.equals(AreaNameDic.OneFK) || endAreaName.equals(AreaNameDic.TwoFK)) {
 | 
					
 | 
				
			||||||
                    stock.setPoint(endPoint);
 | 
					                //扣除库存
 | 
				
			||||||
                    stock.setStatus(BaseStatus.FREE);
 | 
					                for (Task task : taskList) {
 | 
				
			||||||
                    stockRepository.save(stock);
 | 
					                    try {
 | 
				
			||||||
                    endPoint.setStatus(BaseStatus.USED);
 | 
					                        taskService.pickConfirm(task.getId(), task.getPlanQty());
 | 
				
			||||||
                    pointService.update(endPoint);
 | 
					                    } catch (Exception e) {
 | 
				
			||||||
                } else if (endAreaName.equals(AreaNameDic.TwoFCX)) {
 | 
					                        throw new RuntimeException(e.getMessage());
 | 
				
			||||||
                    //扣除库存
 | 
					 | 
				
			||||||
                    for (Task task : taskList) {
 | 
					 | 
				
			||||||
                        try {
 | 
					 | 
				
			||||||
                            taskService.pickConfirm(task.getId(), task.getPlanQty());
 | 
					 | 
				
			||||||
                        } catch (Exception e) {
 | 
					 | 
				
			||||||
                            throw new RuntimeException(e.getMessage());
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    //容器出场
 | 
					 | 
				
			||||||
                    if (agv_on_off.equals("ON")) {
 | 
					 | 
				
			||||||
                        String jsonObject = this.containerOut(containerCode);
 | 
					 | 
				
			||||||
                        String resultJson = HttpPostUtil.sendPostReq(UrlApi.containerOut, jsonObject.toString());
 | 
					 | 
				
			||||||
                        JSONObject resulObject = JSON.parseObject(resultJson);
 | 
					 | 
				
			||||||
                        code = resulObject.getString("code") == null ? "" : resulObject.getString("code");
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    if (code.equals("0")) {
 | 
					 | 
				
			||||||
                        stock.setPoint(null);
 | 
					 | 
				
			||||||
                        stock.setStatus(BaseStatus.FREE);
 | 
					 | 
				
			||||||
                        stockRepository.save(stock);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                } else if (endAreaName.equals(AreaNameDic.TwoFB) || endAreaName.equals(AreaNameDic.OneFC)) {
 | 
					 | 
				
			||||||
                    //增加库存
 | 
					 | 
				
			||||||
                    for (Task task : taskList) {
 | 
					 | 
				
			||||||
                        AsnDetail ad = task.getAsnDetail();
 | 
					 | 
				
			||||||
                        ad.setReceivedQty(ad.getOrderQty());
 | 
					 | 
				
			||||||
                        ad.setStatus(BizStatus.RECEIVED);
 | 
					 | 
				
			||||||
                        ad.setStock(stock);
 | 
					 | 
				
			||||||
                        asnDetailRepository.save(ad);
 | 
					 | 
				
			||||||
                        task.setTaskStatus(BizStatus.FINISH);
 | 
					 | 
				
			||||||
                        task.setMoveQty(task.getPlanQty());
 | 
					 | 
				
			||||||
                        task.setSrcStock(stock);
 | 
					 | 
				
			||||||
                        if (stock != null) {
 | 
					 | 
				
			||||||
                            task.setSrcStockCode(stock.getCode());
 | 
					 | 
				
			||||||
                            task.setDstStockCode(stock.getCode());
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        task.setDstStock(stock);
 | 
					 | 
				
			||||||
                        taskService.update(task);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        List<Inventory> inventoryList = inventoryService.queryInventory(stock);
 | 
					 | 
				
			||||||
                        for (Inventory inventory : inventoryList) {
 | 
					 | 
				
			||||||
                            Long[] ids = new Long[1];
 | 
					 | 
				
			||||||
                            ids[0] = inventory.getId();
 | 
					 | 
				
			||||||
                            inventoryService.deleteAll(ids);
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        //生成库存
 | 
					 | 
				
			||||||
                        Inventory inventory = inventoryService.getInventory(task.getItemKey(), task.getDstPoint(), stock, task.getDept(), BizStatus.RECEIVING_UP);
 | 
					 | 
				
			||||||
                        double srcQty = inventory.getQuantity();
 | 
					 | 
				
			||||||
                        inventory.addQty(inventory, task.getPlanQty());
 | 
					 | 
				
			||||||
                        inventoryService.update(inventory);
 | 
					 | 
				
			||||||
                        stock.setStatus(BaseStatus.USED);
 | 
					 | 
				
			||||||
                        stock.setPoint(inventory.getPoint());
 | 
					 | 
				
			||||||
                        stockRepository.save(stock);
 | 
					 | 
				
			||||||
                        Point point = inventory.getPoint();
 | 
					 | 
				
			||||||
                        point.setStatus(BaseStatus.USED);
 | 
					 | 
				
			||||||
                        pointService.update(point);
 | 
					 | 
				
			||||||
                        inventoryLogService.storeInventoryLog(BizStatus.RECEIVING_UP, BizStatus.ADD, null, task.getItemKey(), task.getSrcPoint(), task.getDstPoint(), task.getSrcStock(), task.getSrcStock(), srcQty, task.getPlanQty(), BizStatus.ASN, ad.getId(), inventory.getId(), ad.getRemark());
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					 | 
				
			||||||
            //任务完成
 | 
					            //任务完成
 | 
				
			||||||
            agvTask.setStatus(BizStatus.FINISH);
 | 
					            agvTask.setStatus(BizStatus.FINISH);
 | 
				
			||||||
            agvTask.setStockCode(containerCode);
 | 
					 | 
				
			||||||
            agvTask.setEndTime(new Timestamp(new Date().getTime()));
 | 
					            agvTask.setEndTime(new Timestamp(new Date().getTime()));
 | 
				
			||||||
            this.update(agvTask);
 | 
					            this.update(agvTask);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -585,33 +527,6 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
				
			||||||
            String endAreaName = endPoint.getArea().getName();
 | 
					            String endAreaName = endPoint.getArea().getName();
 | 
				
			||||||
            //呼叫空车时异常,容器不出场,线边点位释放
 | 
					            //呼叫空车时异常,容器不出场,线边点位释放
 | 
				
			||||||
            if (endAreaName.equals(AreaNameDic.OneFCX)) {
 | 
					            if (endAreaName.equals(AreaNameDic.OneFCX)) {
 | 
				
			||||||
                //查询容器状态
 | 
					 | 
				
			||||||
                String jsonObject = this.containerQuery(containerCode);
 | 
					 | 
				
			||||||
                String resultJson = HttpPostUtil.sendPostReq(UrlApi.containerQuery, jsonObject.toString());
 | 
					 | 
				
			||||||
                JSONObject resulObject = JSON.parseObject(resultJson);
 | 
					 | 
				
			||||||
                if (resulObject != null) {
 | 
					 | 
				
			||||||
                    code = resulObject.getString("code") == null ? "" : resulObject.getString("code");
 | 
					 | 
				
			||||||
                    if (code.equals("0")) {
 | 
					 | 
				
			||||||
                        String data1 = resulObject.getString("data") == null ? "" : resulObject.getString("data");
 | 
					 | 
				
			||||||
                        JSONArray jsonArray = JSON.parseArray(data1);
 | 
					 | 
				
			||||||
                        JSONObject dataObject = JSON.parseObject(jsonArray.get(0).toString());
 | 
					 | 
				
			||||||
                        String isCarry = dataObject.getString("isCarry") == null ? "" : dataObject.getString("isCarry");
 | 
					 | 
				
			||||||
                        if (isCarry.equals("0")) {
 | 
					 | 
				
			||||||
                            log.info(agvTask.getId() + "任务" + containerCode + "容器未移动!");
 | 
					 | 
				
			||||||
                        } else {
 | 
					 | 
				
			||||||
                            //容器已经移则释放空车点位状态
 | 
					 | 
				
			||||||
                            Point startPoint = pointService.findByCode(agvTask.getStartSlotCode(), null, null, null, null);
 | 
					 | 
				
			||||||
                            startPoint.setStatus(BaseStatus.FREE);
 | 
					 | 
				
			||||||
                            pointService.update(startPoint);
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        //线边点位释放
 | 
					 | 
				
			||||||
                        endPoint.setStatus(BaseStatus.FREE);
 | 
					 | 
				
			||||||
                        pointService.update(endPoint);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    throw new RuntimeException("查询容器信息接口异常!");
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            } else if (endAreaName.equals(AreaNameDic.TwoFCX)) {
 | 
					            } else if (endAreaName.equals(AreaNameDic.TwoFCX)) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -214,7 +214,7 @@ public class MoServiceImpl implements MoService {
 | 
				
			||||||
        createTasks(item, stock, srcPoint, endPoint, moDto.getLabelNo(), moDto, orderDto);
 | 
					        createTasks(item, stock, srcPoint, endPoint, moDto.getLabelNo(), moDto, orderDto);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 更新容器状态和目标点位状态
 | 
					        // 更新容器状态和目标点位状态
 | 
				
			||||||
        updateStockAndEndPoint(stock);
 | 
					        updateStockAndEndPoint(stock,endPoint);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -240,8 +240,11 @@ public class MoServiceImpl implements MoService {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 提取更新容器状态和目标点位状态的逻辑到单独方法
 | 
					    // 提取更新容器状态和目标点位状态的逻辑到单独方法
 | 
				
			||||||
    private void updateStockAndEndPoint(Stock stock) {
 | 
					    private void updateStockAndEndPoint(Stock stock,Point point) {
 | 
				
			||||||
        stock.setStatus(BaseStatus.USED);
 | 
					        stock.setStatus(BaseStatus.USED);
 | 
				
			||||||
 | 
					        stock.setPoint(point);
 | 
				
			||||||
        stockService.update(stock);
 | 
					        stockService.update(stock);
 | 
				
			||||||
 | 
					        point.setStatus(BaseStatus.USED);
 | 
				
			||||||
 | 
					        pointService.update(point);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue