diff --git a/youchain-system/src/main/java/com/youchain/appupdate/service/impl/BydAppServiceImpl.java b/youchain-system/src/main/java/com/youchain/appupdate/service/impl/BydAppServiceImpl.java index 93ab6b3..56d19e0 100644 --- a/youchain-system/src/main/java/com/youchain/appupdate/service/impl/BydAppServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/appupdate/service/impl/BydAppServiceImpl.java @@ -7,6 +7,7 @@ import com.youchain.basicdata.domain.Area; import com.youchain.basicdata.domain.Item; import com.youchain.basicdata.domain.Point; import com.youchain.basicdata.domain.Stock; +import com.youchain.basicdata.repository.StockRepository; import com.youchain.basicdata.service.ItemService; import com.youchain.basicdata.service.PointService; import com.youchain.basicdata.service.StockService; @@ -30,6 +31,7 @@ import java.util.stream.Collectors; @Service @RequiredArgsConstructor public class BydAppServiceImpl implements BydAppService { + private final StockRepository stockRepository; private final StockService stockService; private final ItemService itemService; private final PointService pointService; @@ -230,7 +232,7 @@ public class BydAppServiceImpl implements BydAppService { public void unBindContainer(String stockCode) { Stock stock = stockService.validateStock(stockCode); stock.setStatus(BaseStatus.FREE); - stockService.update(stock); + stockRepository.save(stock); } /** diff --git a/youchain-system/src/main/java/com/youchain/basicdata/rest/StockController.java b/youchain-system/src/main/java/com/youchain/basicdata/rest/StockController.java index 9d52d83..db76edd 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/rest/StockController.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/rest/StockController.java @@ -111,17 +111,6 @@ public class StockController { return new ResponseEntity<>(HttpStatus.OK); } - @PutMapping("/updateStockStatus") - @Log("批量修改stock的状态") - @ApiOperation("批量修改stock的状态") - @PreAuthorize("@el.check('stock:edit')") - public ResponseEntity updateStockStatus(@Validated @RequestBody List stockList) { - for (Stock s : stockList) { - stockService.update(s); - } - return new ResponseEntity<>(HttpStatus.OK); - } - @DeleteMapping @Log("删除stock") @ApiOperation("删除stock") diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/StockServiceImpl.java b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/StockServiceImpl.java index b0f9fda..5130f1f 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/StockServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/StockServiceImpl.java @@ -121,8 +121,16 @@ public class StockServiceImpl implements StockService { point.setStatus(BaseStatus.FREE); pointRepository.save(point); } + if (resources.getPoint() != null) { + //绑定的点位是否暂用了其他容器 Point point = resources.getPoint(); + Stock curStock = this.findByPointCode(point.getCode()); + if (curStock != null) { + if (!curStock.getId().equals(resources.getId())) { + throw new BadRequestException(point.getCode() + "点位绑定的当前容器为" + curStock.getCode()); + } + } point.setStatus(BaseStatus.USED); pointRepository.save(point); } else { @@ -213,7 +221,6 @@ public class StockServiceImpl implements StockService { } - @Override public Map findByCodes(Set stockCodes) { List stockList = stockRepository.findByCodes(stockCodes); @@ -279,8 +286,8 @@ public class StockServiceImpl implements StockService { } @Override - public List findByFreeOrUsedStock(String areaName,String status) { - return stockRepository.findByFreeOrUsedStock(areaName,status); + public List findByFreeOrUsedStock(String areaName, String status) { + return stockRepository.findByFreeOrUsedStock(areaName, status); } @Override diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/AsnDetailController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/AsnDetailController.java index 2349149..956d52d 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/AsnDetailController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/AsnDetailController.java @@ -17,6 +17,7 @@ package com.youchain.businessdata.rest; import com.youchain.annotation.Log; import com.youchain.basicdata.domain.*; +import com.youchain.basicdata.repository.StockRepository; import com.youchain.basicdata.service.StockService; import com.youchain.businessdata.domain.*; import com.youchain.businessdata.service.*; @@ -52,7 +53,7 @@ public class AsnDetailController { private final AsnDetailService asnDetailService; - private final StockService stockService; + private final StockRepository stockRepository; @Log("导出数据") @ApiOperation("导出数据") @@ -80,7 +81,7 @@ public class AsnDetailController { asnDetailService.create(asnDetail); Stock stock = asnDetail.getStock(); stock.setStatus(BaseStatus.USED); - stockService.update(stock); + stockRepository.save(stock); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/TaskService.java b/youchain-system/src/main/java/com/youchain/businessdata/service/TaskService.java index 355d384..78ba80c 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/TaskService.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/TaskService.java @@ -127,7 +127,6 @@ public interface TaskService { /** * 根据出库单查询未完成的Task集合 - * */ List findByPickNotAllTask(); @@ -172,13 +171,11 @@ public interface TaskService { /** * 定时任务轮询出库单备料 - * */ void materialPick(); /** * 定时任务轮询叫料反空车至备料缓存区 - * */ void callEmptyStock(Point point); @@ -195,9 +192,8 @@ public interface TaskService { * * @param pickDetailId 出库明细ID * @param quantity 数量 - * @param endPoint 点位 */ - String allocate(long pickDetailId, double quantity, Point endPoint); + String allocate(long pickDetailId, double quantity); /** * 取消分配 diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/KMReServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/KMReServiceImpl.java index 78865f7..2fc09c1 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/KMReServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/KMReServiceImpl.java @@ -493,7 +493,7 @@ public class KMReServiceImpl implements KMReService { case BizStatus.CALL_PICK: handleJl(stock, endPoint, agvTask);//叫料完成 break; - case BizStatus.CALL_RETURN: + case BizStatus.JL_Back: case BizStatus.Cp_Off_Up: handleJlFkAndCpSx(endPoint, stock);//叫料返空完成;成品上线完成 break; diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MesServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MesServiceImpl.java index a3e0845..aab2a76 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MesServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MesServiceImpl.java @@ -286,10 +286,7 @@ public class MesServiceImpl implements MesService { * @return 空车列表 */ private List getEmptyStockList() { - List emptyStockList = stockService.findByFreeOrUsedStock(AreaNameDic.CPRKHCQ, BaseStatus.FREE); - if (emptyStockList.isEmpty()) { - emptyStockList = stockService.findByFreeOrUsedStock(AreaNameDic.CPRKQ, BaseStatus.FREE); - } + List emptyStockList = stockService.findByFreeOrUsedStock(AreaNameDic.CPRKQ, BaseStatus.FREE); return emptyStockList; } @@ -318,11 +315,6 @@ public class MesServiceImpl implements MesService { if (srcPoint == null) { return transTask.getPointCode() + "点位不存在!"; } - // 处理下线缓存区有满货架的情况 - String result = handleFullStockInCache(srcPoint); - if (result != null) { - return result; - } //容器 Stock stock = stockService.findByPointCode(srcPoint.getCode()); @@ -336,6 +328,12 @@ public class MesServiceImpl implements MesService { } // 生成等待任务 agvTaskService.createAgvTask(BizStatus.Cp_Off_Line, stock, srcPoint.getCode(), null, "RACK_MOVE"); + + // 更新点位状态 + pointService.usedPoint(srcPoint); + + // 占用容器 + stockService.usedStock(stock, srcPoint, BaseStatus.USED); return "成品入库区和成品下线缓存区都没有空闲点位,请稍后再试!"; } @@ -347,13 +345,10 @@ public class MesServiceImpl implements MesService { // 创建Agv任务 AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Cp_Off_Line, stock, srcPoint.getCode(), endPoint.getCode(), "RACK_MOVE"); - // 同步更新终点点位状态和占用容器 - synchronized (endPoint) { - // 更新点位状态 - pointService.usedPoint(endPoint); - // 占用容器 - stockService.usedStock(stock, srcPoint, BaseStatus.USED); - } + // 更新点位状态 + pointService.usedPoint(endPoint); + // 占用容器 + stockService.usedStock(stock, srcPoint, BaseStatus.USED); return "呼叫成功"; @@ -366,54 +361,9 @@ public class MesServiceImpl implements MesService { */ private Point findAvailableEndPoint() { List endPointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, AreaNameDic.CPRKQ); - if (endPointList.isEmpty()) { - endPointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, AreaNameDic.CPXXHC); - } return endPointList.isEmpty() ? null : endPointList.get(0); } - /** - * 处理下线缓存区有满货架的情况 - * - * @param srcPoint 源点位 - * @return 处理结果信息,如果为空则表示继续后续流程 - */ - private String handleFullStockInCache(Point srcPoint) { - // 查询下线缓存区是否有满货架 - List fullStockList = stockService.findByFreeOrUsedStock(AreaNameDic.CPXXHC, BaseStatus.USED); - if (!fullStockList.isEmpty()) { - // 取第一个满货架容器 - Stock fullStock = fullStockList.get(0); - // 查找成品入库区的可用终点点位 - List endPointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, AreaNameDic.CPRKQ); - if (!endPointList.isEmpty()) { - // 取第一个可用终点点位 - Point endPoint = endPointList.get(0); - // 验证终点是否有任务 - if (agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.Cp_Off_Line, "RACK_MOVE")) { - // 创建Agv任务 - AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Cp_Off_Line, fullStock, srcPoint.getCode(), endPoint.getCode(), "RACK_MOVE"); - // 同步更新终点点位状态和占用容器 - synchronized (endPoint) { - // 更新点位状态 - pointService.usedPoint(endPoint); - // 占用容器 - stockService.usedStock(fullStock, srcPoint, BaseStatus.USED); - } - } - } else { - // 没有空车的处理逻辑 - if (!isSrcPointAvailable(fullStock.getPoint().getCode(), BizStatus.Cp_Off_Line, "RACK_MOVE")) { - return fullStock.getPoint().getCode() + "点位有任务,请稍后再试!"; - } - // 生成agv任务进行等待 - agvTaskService.createAgvTask(BizStatus.Cp_Off_Line, fullStock, fullStock.getCode(), null, "RACK_MOVE"); - return "成品入库区和成品下线缓存区都没有空闲点位,请稍后再试!"; - } - } - return null; - } - private String moveFxOffLine(TransTask transTask) { //返修上线起点 String srcPointCode = transTask.getPointCode(); @@ -477,22 +427,27 @@ public class MesServiceImpl implements MesService { List endPointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, dstAreaCode); if (endPointList.isEmpty()) { // 没有空车的处理逻辑 - if (!isSrcPointAvailable(srcPoint.getCode(), BizStatus.CALL_RETURN, "RACK_MOVE")) { + if (!isSrcPointAvailable(srcPoint.getCode(), BizStatus.JL_Back, "RACK_MOVE")) { return srcPoint.getCode() + "点位有任务,请稍后再试!"; } //生成agv任务进行等待 - agvTaskService.createAgvTask(BizStatus.CALL_RETURN, stock, srcPoint.getCode(), null, "RACK_MOVE"); + agvTaskService.createAgvTask(BizStatus.JL_Back, stock, srcPoint.getCode(), null, "RACK_MOVE"); + // 更新点位状态 + pointService.usedPoint(srcPoint); + + // 占用容器 + stockService.usedStock(stock, srcPoint, BaseStatus.USED); return dstAreaCode.equals(AreaNameDic.XJFBCQ) ? "小件翻包存储区" : "大件翻包存储区" + "没有空闲点位!"; } Point endPoint = endPointList.get(0); - if (!isEndPointAvailable(endPoint.getCode(), BizStatus.CALL_RETURN, "RACK_MOVE")) { + if (!isEndPointAvailable(endPoint.getCode(), BizStatus.JL_Back, "RACK_MOVE")) { return endPoint.getCode() + "点位有任务,请稍后再试!"; } // 生成任务 - AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.CALL_RETURN, stock, srcPoint.getCode(), endPoint.getCode(), "RACK_MOVE"); + AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.JL_Back, stock, srcPoint.getCode(), endPoint.getCode(), "RACK_MOVE"); synchronized (endPoint) { // 更新点位状态 pointService.usedPoint(endPoint); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java index fcdb972..58b1b85 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java @@ -169,53 +169,17 @@ public class TaskServiceImpl implements TaskService { @Transactional(rollbackFor = Exception.class) public void allocatePick(Pick pick) { - //目标库位 - Point endPoint = null; - if (pick.getPoint() == null) { - String areaName = null; - if (BaseStatus.GD_TYPE_CT.equals(pick.getOrderType())) { - areaName = AreaNameDic.XJFBQ; - } else if (BaseStatus.GD_TYPE_DP.equals(pick.getOrderType())) { - areaName = AreaNameDic.DJFBQ; - } else { - throw new BadRequestException("出库单类型错误!"); - } - - List pointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, areaName); - if (pointList.isEmpty()) { - String logMessage = pick.getCode() + "工单分配失败,翻包区没有空闲点位!"; - if (!lastPollLogMessages.containsKey(logMessage)) { - logService.saveLogInfo(pick.getCode(), pick.getCode(), "/pick/allocatePick", logMessage, "出库单分配", 200, "info"); - addLog(logMessage); - } - return; - } - endPoint = pointList.get(0); - } else { - endPoint = pick.getPoint(); - } - List msgList = new ArrayList<>();//存放提示信息 //查询出待分配的pickDetail List pickDetails = pickDetailService.findByPickDetailNoAllocate(pick.getId()); for (PickDetail pickDetail : pickDetails) { - msgList.add(this.allocate(pickDetail.getId(), pickDetail.getOrderQty() - pickDetail.getAllocatedQty(), endPoint)); + msgList.add(this.allocate(pickDetail.getId(), pickDetail.getOrderQty() - pickDetail.getAllocatedQty())); } /* 更新出库单状态*/ pickService.refreshPickStatus(pick); - if (BizStatus.ALLOCATE.equals(pick.getStatus()) || BizStatus.ASSIGN.equals(pick.getStatus())) { - //绑定点位 - pick.setPoint(endPoint); - pickService.update(pick); - - //占用点位 - pointService.usedPoint(endPoint); - } - - //保存日志 String logMessage = msgList.toString(); if (!lastPollLogMessages.containsKey(logMessage)) { @@ -280,7 +244,7 @@ public class TaskServiceImpl implements TaskService { Point endPoint = pointList.get(0); //有任务则直接返回 - if (!agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.CALL_RETURN, "RACK_MOVE")) { + if (!agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.JL_Back, "RACK_MOVE")) { return; } @@ -288,7 +252,7 @@ public class TaskServiceImpl implements TaskService { pointService.usedPoint(endPoint); //创建任务 - agvTaskService.createAgvTask(BizStatus.CALL_RETURN, stock, srcPoint.getCode(), endPoint.getCode(), "RACK_MOVE"); + agvTaskService.createAgvTask(BizStatus.JL_Back, stock, srcPoint.getCode(), endPoint.getCode(), "RACK_MOVE"); } @@ -300,7 +264,7 @@ public class TaskServiceImpl implements TaskService { //绑定任务 List taskList = this.findByPickAllTask(pick.getId()); if (taskList.isEmpty()) { - return; + return; } @@ -319,7 +283,7 @@ public class TaskServiceImpl implements TaskService { List agvTasks = agvTaskService.findRepeat(task.getDstStockCode(), task.getDstPointCode(), endPoint.getCode()); if (agvTasks.isEmpty()) { //创建任务 - agvTask = agvTaskService.createAgvTask(BizStatus.JL_Back, task.getDstStock(), task.getDstPointCode(), endPoint.getCode(), "RACK_MOVE"); + agvTask = agvTaskService.createAgvTask(BizStatus.CALL_PICK, task.getDstStock(), task.getDstPointCode(), endPoint.getCode(), "RACK_MOVE"); agvTask.setLineSlotCode(pick.getCode()); agvTaskService.update(agvTask); } else { @@ -333,7 +297,7 @@ public class TaskServiceImpl implements TaskService { @Override @Transactional(rollbackFor = Exception.class) - public String allocate(long id, double quantity, Point endPoint) { + public String allocate(long id, double quantity) { //出库明细 PickDetail pickDetail = pickDetailService.findById(id); @@ -346,6 +310,20 @@ public class TaskServiceImpl implements TaskService { if (pickDetail.getAllocatedQty() >= pickDetail.getOrderQty()) { return pick.getCode() + "出库单;" + item.getCode() + "数量已分配!"; } + String boxAreaName; + if (BaseStatus.GD_TYPE_CT.equals(pick.getOrderType())) { + boxAreaName = AreaNameDic.XJFBQ; + } else if (BaseStatus.GD_TYPE_DP.equals(pick.getOrderType())) { + boxAreaName = AreaNameDic.DJFBQ; + } else { + throw new BadRequestException("出库单类型错误!"); + } + + return allocateInternal(pick, pickDetail, item, boxAreaName, quantity); + } + + private String allocateInternal(Pick pick, PickDetail pickDetail, Item item, String boxAreaName, double quantity) { + // 查询物料所在库区的库存 String areaName = stockTypeToAreaMap.getValueByKey(item.getGoodType()); List inventoryList = inventoryService.queryInventory(null, item.getCode(), null, areaName, item.getDept().getId()); if (inventoryList.isEmpty()) { @@ -360,23 +338,37 @@ public class TaskServiceImpl implements TaskService { return pick.getCode() + "出库单;" + item.getCode() + "物料库存不足,请先补充库存!"; } } + double allocateQty = 0; - //未分配数量 + // 未分配数量 double unQty = quantity; Set tps = new HashSet<>(); for (Inventory inv : inventoryList) { - //判断托盘是否有任务 + // 判断托盘是否有任务 synchronized (inv.getId()) { if (this.existsByStock(pick.getCode(), inv.getStockCode()) >= 1) { tps.add(inv.getStockCode()); continue; } - //起点 + + //查询翻包区是否有空闲点位 + List pointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, boxAreaName); + if (pointList.isEmpty()) { + String logMessage = pick.getCode() + "明细分配失败," + (BaseStatus.GD_TYPE_CT.equals(pick.getOrderType()) ? "小件" : "大件") + "翻包区没有空闲点位!"; + if (!lastPollLogMessages.containsKey(logMessage)) { + logService.saveLogInfo(pick.getCode(), pick.getCode(), "/pick/allocatePick", logMessage, "出库单分配", 200, "info"); + addLog(logMessage); + } + return logMessage; + } + Point endPoint = pointList.get(0); + + // 起点 Point startPoint = inv.getPoint(); if (unQty == 0) { break; } - //库存可用数量 + // 库存可用数量 allocateQty = inv.getQuantity() - inv.getQueuedQty(); if (allocateQty <= 0) { continue; @@ -392,8 +384,11 @@ public class TaskServiceImpl implements TaskService { pickDetail.setAllocatedQty(pickDetail.getAllocatedQty() + allocateQty); pickDetailService.update(pickDetail); - //生成Task任务 + // 生成Task任务 Task task = this.createTask(item, allocateQty, inv.getItemKey(), null, BizStatus.PICK, pickDetail, inv.getId(), inv.getStock(), startPoint, endPoint, null); + + //占用点位 + pointService.usedPoint(endPoint); } } @@ -401,8 +396,10 @@ public class TaskServiceImpl implements TaskService { return pick.getCode() + "出库单中" + item.getCode() + "物料分配成功!"; } return tps + "托盘有任务!"; + } + // 增加物料可替代性判断 private boolean isReplaceableMaterial(String material) { return material.equals("17300653-00") || material.equals("17213913-00"); @@ -577,6 +574,7 @@ public class TaskServiceImpl implements TaskService { Inventory inventory = inventoryService.findById(task.getInvId()); ItemKey itemKey = inventory.getItemKey(); Dept dept = inventory.getDept(); + PickDetail pickDetail = task.getPickDetail(); synchronized (inventory) { inventory.setQueuedQty(inventory.getQueuedQty() - moveQty); inventory.setQuantity(inventory.getQuantity() - moveQty); @@ -598,10 +596,19 @@ public class TaskServiceImpl implements TaskService { task.setDstStockCode(dstStock.getCode()); if (task.getPlanQty() - task.getMoveQty() == 0) { task.setTaskStatus(BizStatus.FINISH); + } else { + //部分拣货;部分数量生成新的Task;当前任务完成即可 + task.setPlanQty(moveQty); + task.setMoveQty(moveQty); + task.setTaskStatus(BizStatus.FINISH); + // 生成Task任务 + Task newTask = this.createTask(task.getItemKey().getItem(), task.getPlanQty() - moveQty, task.getItemKey(), null, BizStatus.PICK, pickDetail, task.getInvId(), task.getSrcStock(), task.getSrcPoint(), task.getDstPoint(), task.getAgvTask()); + newTask.setDstStock(dstStock); + newTask.setDstStockCode(dstStock.getCode()); + taskRepository.save(newTask); } taskRepository.save(task); - PickDetail pickDetail = task.getPickDetail(); pickDetail.setPickedQty(pickDetail.getPickedQty() + moveQty); pickDetailService.update(pickDetail); diff --git a/youchain-system/src/main/java/com/youchain/modules/quartz/task/cpLineTask.java b/youchain-system/src/main/java/com/youchain/modules/quartz/task/cpLineTask.java index 7455fca..1237b19 100644 --- a/youchain-system/src/main/java/com/youchain/modules/quartz/task/cpLineTask.java +++ b/youchain-system/src/main/java/com/youchain/modules/quartz/task/cpLineTask.java @@ -37,22 +37,17 @@ public class cpLineTask { // 定义异常信息常量 private static final String NO_EMPTY_SHELVES_ERROR_MSG = "成品入库区和成品入库缓存区都没有空闲点位,请及时处理!"; - // 定义一个对象作为锁 - private final Object lock = new Object(); public void sendAgvCpOffLine() { - // 使用同步块确保线程安全 - synchronized (lock) { - // 获取处于特定业务状态的AGV任务列表 - List agvTaskList = agvTaskService.findOpenByAgvTask(BizStatus.Cp_Off_Line); - // 如果任务列表为空,直接返回,避免不必要的处理 - if (agvTaskList.isEmpty()) { - return; - } - // 遍历AGV任务列表 - for (AgvTask agvTask : agvTaskList) { - processAgvTask(agvTask); - } + // 获取处于特定业务状态的AGV任务列表 + List agvTaskList = agvTaskService.findOpenByAgvTask(BizStatus.Cp_Off_Line); + // 如果任务列表为空,直接返回,避免不必要的处理 + if (agvTaskList.isEmpty()) { + return; + } + // 遍历AGV任务列表 + for (AgvTask agvTask : agvTaskList) { + processAgvTask(agvTask); } } @@ -86,9 +81,6 @@ public class cpLineTask { */ private Point findAvailableEndPoint() { List endPointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, AreaNameDic.CPRKQ); - if (endPointList.isEmpty()) { - endPointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, AreaNameDic.CPXXHC); - } return endPointList.isEmpty() ? null : endPointList.get(0); } diff --git a/youchain-system/src/main/java/com/youchain/modules/quartz/task/cpUpTask.java b/youchain-system/src/main/java/com/youchain/modules/quartz/task/cpUpTask.java index d57af03..c7f8f1c 100644 --- a/youchain-system/src/main/java/com/youchain/modules/quartz/task/cpUpTask.java +++ b/youchain-system/src/main/java/com/youchain/modules/quartz/task/cpUpTask.java @@ -34,29 +34,22 @@ public class cpUpTask { // 定义异常信息常量 private static final String NO_EMPTY_SHELVES_ERROR_MSG = "成品入库区和成品入库缓存区都没有空货架,请及时解绑容器!"; - private final Object lock = new Object(); - /** * 轮询下发成品上线任务 */ public void sendAgvCpOffUp() { - synchronized (lock) { - List agvTaskList = agvTaskService.findOpenByAgvTask(BizStatus.Cp_Off_Up); - if (agvTaskList.isEmpty()) { - return; - } - // 遍历AGV任务列表 - for (AgvTask agvTask : agvTaskList) { - processAgvTask(agvTask); - } + List agvTaskList = agvTaskService.findOpenByAgvTask(BizStatus.Cp_Off_Up); + if (agvTaskList.isEmpty()) { + return; + } + // 遍历AGV任务列表 + for (AgvTask agvTask : agvTaskList) { + processAgvTask(agvTask); } } private List getEmptyStockList() { - List emptyStockList = stockService.findByFreeOrUsedStock(AreaNameDic.CPRKHCQ, BaseStatus.FREE); - if (emptyStockList.isEmpty()) { - emptyStockList = stockService.findByFreeOrUsedStock(AreaNameDic.CPRKQ, BaseStatus.FREE); - } + List emptyStockList = stockService.findByFreeOrUsedStock(AreaNameDic.CPRKQ, BaseStatus.FREE); return emptyStockList; } diff --git a/youchain-system/src/main/java/com/youchain/modules/quartz/task/jlBackTask.java b/youchain-system/src/main/java/com/youchain/modules/quartz/task/jlBackTask.java index 2488763..392b771 100644 --- a/youchain-system/src/main/java/com/youchain/modules/quartz/task/jlBackTask.java +++ b/youchain-system/src/main/java/com/youchain/modules/quartz/task/jlBackTask.java @@ -68,6 +68,7 @@ public class jlBackTask { Point endPoint = findAvailableEndPoint(areaName); if (endPoint != null) { updateAgvTaskWithEndPoint(agvTask, endPoint); + kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskHjJson(agvTask)); } else { // 若未找到可用结束点,抛出异常 throw new BadRequestException(areaName+NO_EMPTY_SHELVES_ERROR_MSG); diff --git a/youchain-system/src/main/java/com/youchain/utils/BizStatus.java b/youchain-system/src/main/java/com/youchain/utils/BizStatus.java index ce0b5f4..8061ddb 100644 --- a/youchain-system/src/main/java/com/youchain/utils/BizStatus.java +++ b/youchain-system/src/main/java/com/youchain/utils/BizStatus.java @@ -151,12 +151,6 @@ public interface BizStatus { */ String CALL_PICK = "CALL_PICK"; - /** - * 任务类型-叫料反空 - */ - String CALL_RETURN = "CALL_RETURN"; - - /** * 库存日志-移位 */