no message
							parent
							
								
									47589b2743
								
							
						
					
					
						commit
						009873c137
					
				| 
						 | 
				
			
			@ -43,9 +43,12 @@ public class InventoryQueryCriteria{
 | 
			
		|||
    @Query(joinName = "itemKey>item>", propName="name",type = Query.Type.INNER_LIKE)
 | 
			
		||||
    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;
 | 
			
		||||
 | 
			
		||||
    @Query(joinName = "itemKey", propName="orderNumber",type = Query.Type.INNER_LIKE)
 | 
			
		||||
    private String orderNumber;
 | 
			
		||||
 | 
			
		||||
    @Query(joinName = "itemKey>item>", propName="code",type = Query.Type.IN)
 | 
			
		||||
    private List<String> itemCode;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -56,8 +59,8 @@ public class InventoryQueryCriteria{
 | 
			
		|||
    @Query(type = Query.Type.NOT_EQUAL)
 | 
			
		||||
    private Double quantity;
 | 
			
		||||
 | 
			
		||||
    @Query(joinName = "stock", propName="name",type = Query.Type.INNER_LIKE)
 | 
			
		||||
    private String stockName;
 | 
			
		||||
    @Query(joinName = "stock", propName="code",type = Query.Type.INNER_LIKE)
 | 
			
		||||
    private String stockCode;
 | 
			
		||||
 | 
			
		||||
    @Query(joinName = "point>area>", propName="name",type = Query.Type.INNER_LIKE)
 | 
			
		||||
    private String areaName;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -468,114 +468,56 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
			
		|||
        String agv_on_off = "OFF";
 | 
			
		||||
        agv_on_off = dictService.getDictDescription("agv_on_off") == null ? "OFF" : dictService.getDictDescription("agv_on_off").getDescription();
 | 
			
		||||
        String code = "0";
 | 
			
		||||
 | 
			
		||||
        if (status.equals("ARRIVED")) {
 | 
			
		||||
 | 
			
		||||
        } else if (status.equals("UP_CONTAINER")) {
 | 
			
		||||
 | 
			
		||||
        } else if (status.equals("COMPLETED")) {
 | 
			
		||||
            //任务完成;根据AGV任务的目标点位走对应流程
 | 
			
		||||
            Point endPoint = pointService.findByCode(agvTask.getEndSlotCode(), null, null, null, null);
 | 
			
		||||
            String endAreaName = endPoint.getArea().getName();
 | 
			
		||||
            if (endPoint != null) {
 | 
			
		||||
                Stock stock = stockRepository.getStockByCode(containerCode);
 | 
			
		||||
                if (stock == null) {
 | 
			
		||||
                    throw new RuntimeException(containerCode + "容器不存在! 请维护");
 | 
			
		||||
                }
 | 
			
		||||
                List<Task> taskList = taskRepository.getAgvTaskList(agvTask.getId());
 | 
			
		||||
                if (endAreaName.equals(AreaNameDic.OneFCX) || endAreaName.equals(AreaNameDic.TwoFCX)) {
 | 
			
		||||
                    //目标点位容器都由人为拉走,调用容器出场
 | 
			
		||||
                   /* 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");
 | 
			
		||||
            List<Task> taskList = taskRepository.getAgvTaskList(agvTask.getId());
 | 
			
		||||
            if(agvTask.getType().equals(BizStatus.ASN)){
 | 
			
		||||
                //增加库存
 | 
			
		||||
                for (Task task : taskList) {
 | 
			
		||||
                    AsnDetail ad = task.getAsnDetail();
 | 
			
		||||
                    ad.setReceivedQty(ad.getOrderQty());
 | 
			
		||||
                    ad.setStatus(BizStatus.RECEIVED);
 | 
			
		||||
                    asnDetailRepository.save(ad);
 | 
			
		||||
                    task.setTaskStatus(BizStatus.FINISH);
 | 
			
		||||
                    task.setMoveQty(task.getPlanQty());
 | 
			
		||||
                    taskService.update(task);
 | 
			
		||||
                    Stock stock=task.getSrcStock();
 | 
			
		||||
 | 
			
		||||
                    List<Inventory> inventoryList = inventoryService.queryInventory(stock);
 | 
			
		||||
                    for (Inventory inventory : inventoryList) {
 | 
			
		||||
                        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);
 | 
			
		||||
                    }*/
 | 
			
		||||
                    stock.setPoint(endPoint);
 | 
			
		||||
                    stockRepository.save(stock);
 | 
			
		||||
                    //线边点位释放
 | 
			
		||||
                    endPoint.setStatus(BaseStatus.FREE);
 | 
			
		||||
                    pointService.update(endPoint);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    //生成库存
 | 
			
		||||
                    Inventory inventory = inventoryService.getInventory(task.getItemKey(), task.getDstPoint(), task.getSrcStock(), task.getDept(), BizStatus.RECEIVING_UP);
 | 
			
		||||
                    inventory.setQuantity(task.getPlanQty());
 | 
			
		||||
                    inventoryService.update(inventory);
 | 
			
		||||
                    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());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }else if(agvTask.getType().equals(BizStatus.PICK)){
 | 
			
		||||
                //处理实际逻辑
 | 
			
		||||
                if (endAreaName.equals(AreaNameDic.OneFK) || endAreaName.equals(AreaNameDic.TwoFK)) {
 | 
			
		||||
                    stock.setPoint(endPoint);
 | 
			
		||||
                    stock.setStatus(BaseStatus.FREE);
 | 
			
		||||
                    stockRepository.save(stock);
 | 
			
		||||
                    endPoint.setStatus(BaseStatus.USED);
 | 
			
		||||
                    pointService.update(endPoint);
 | 
			
		||||
                } else if (endAreaName.equals(AreaNameDic.TwoFCX)) {
 | 
			
		||||
                    //扣除库存
 | 
			
		||||
                    for (Task task : taskList) {
 | 
			
		||||
                        try {
 | 
			
		||||
                            taskService.pickConfirm(task.getId(), task.getPlanQty());
 | 
			
		||||
                        } catch (Exception e) {
 | 
			
		||||
                            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.setStockCode(containerCode);
 | 
			
		||||
            agvTask.setEndTime(new Timestamp(new Date().getTime()));
 | 
			
		||||
            this.update(agvTask);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -585,33 +527,6 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
			
		|||
            String endAreaName = endPoint.getArea().getName();
 | 
			
		||||
            //呼叫空车时异常,容器不出场,线边点位释放
 | 
			
		||||
            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)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -214,7 +214,7 @@ public class MoServiceImpl implements MoService {
 | 
			
		|||
        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.setPoint(point);
 | 
			
		||||
        stockService.update(stock);
 | 
			
		||||
        point.setStatus(BaseStatus.USED);
 | 
			
		||||
        pointService.update(point);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue