From 6592dee8f5a37a94136fa4c131ab1603808152a6 Mon Sep 17 00:00:00 2001 From: "HUOJIN\\92525" <925258474@qq.com> Date: Tue, 9 Jul 2024 15:02:58 +0800 Subject: [PATCH] no message --- .../appupdate/rest/BydAppController.java | 6 +- .../basicdata/repository/StockRepository.java | 2 + .../basicdata/service/StockService.java | 5 ++ .../service/impl/StockServiceImpl.java | 57 +++++++++++-------- .../youchain/businessdata/domain/Pick.java | 6 +- .../businessdata/repository/GdRepository.java | 2 +- .../businessdata/service/dto/PickDto.java | 5 ++ .../service/impl/GdServiceImpl.java | 2 +- .../service/impl/PickServiceImpl.java | 19 +++++++ .../modules/quartz/task/pickTask.java | 11 ++++ .../java/com/youchain/utils/AreaNameDic.java | 5 ++ 11 files changed, 89 insertions(+), 31 deletions(-) diff --git a/youchain-system/src/main/java/com/youchain/appupdate/rest/BydAppController.java b/youchain-system/src/main/java/com/youchain/appupdate/rest/BydAppController.java index 616e9b7..c9c294f 100644 --- a/youchain-system/src/main/java/com/youchain/appupdate/rest/BydAppController.java +++ b/youchain-system/src/main/java/com/youchain/appupdate/rest/BydAppController.java @@ -96,7 +96,7 @@ public class BydAppController { @PostMapping("/containerIn") @Log("容器入场") @ApiOperation("容器入场") - @PreAuthorize("@el.check('app:containerIn')") + @AnonymousAccess public ResponseEntity containerIn(@RequestBody ContainerIn containerIn) { try { String containerCode = containerIn.getContainerCode();//容器号 @@ -112,7 +112,7 @@ public class BydAppController { @PostMapping("/containerOut") @Log("容器出场") @ApiOperation("容器出场") - @PreAuthorize("@el.check('app:containerOut')") + @AnonymousAccess public ResponseEntity containerOut(@RequestBody ContainerIn containerIn) { try { String containerCode = containerIn.getContainerCode(); @@ -158,7 +158,7 @@ public class BydAppController { } private ResponseEntity badRequest(String message) { - return new ResponseEntity<>(ApiResult.fail(BAD_REQUEST.value(), message, ""), HttpStatus.BAD_REQUEST); + return new ResponseEntity<>(message, HttpStatus.BAD_REQUEST); } private ResponseEntity successResponse(Object data) { diff --git a/youchain-system/src/main/java/com/youchain/basicdata/repository/StockRepository.java b/youchain-system/src/main/java/com/youchain/basicdata/repository/StockRepository.java index 4541a04..c9314f0 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/repository/StockRepository.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/repository/StockRepository.java @@ -48,4 +48,6 @@ public interface StockRepository extends JpaRepository, JpaSpecific @Query(" from Stock s where s.point.code = :pointCode") Stock fingByPointCode(String pointCode); + @Query(" from Stock s where s.point.area.code = :araeCode and s.enabled=true and s.status='FREE' and s.point.id>0 and s.point.status='USED' ") + List findByEnmptyStock(String araeCode); } diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/StockService.java b/youchain-system/src/main/java/com/youchain/basicdata/service/StockService.java index d45f84d..0303ae0 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/StockService.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/StockService.java @@ -204,4 +204,9 @@ public interface StockService { */ void moveStock(TransTask transTask); + /** + * 成品下线呼叫空货架 + */ + void cpCallStock(); + } 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 6d5417b..f2f661a 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 @@ -624,6 +624,36 @@ public class StockServiceImpl implements StockService { } + @Override + @Transactional(rollbackFor = Exception.class) + public void cpCallStock() { + // 尝试从成品入库缓存区查询空车 + List emptyStockList = stockRepository.findByEnmptyStock(AreaNameDic.CPRKCHQ); + if (emptyStockList.isEmpty()) { + // 如果成品入库缓存区没有空车,则从入库区查询 + emptyStockList = stockRepository.findByEnmptyStock(AreaNameDic.CPRKQ); + if (emptyStockList.isEmpty()) { + throw new RuntimeException("成品入库区没有空车,请稍后再试!"); + } + } + + Stock emptyStock = emptyStockList.get(0); + Point srcPoint = emptyStock.getPoint(); + Point endPoint = pointService.findByCode(null, BaseStatus.FREE, BaseStatus.BOX, AreaNameDic.CPXXQ, null, null); + if (endPoint == null) { + throw new RuntimeException("成品下线区没有空闲点位,请稍后再试!"); + } + // 创建并下发任务 + AgvTask agvTask = new AgvTask(BizStatus.EMPTY_IN, emptyStock.getCode(), srcPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "RACK_MOVE"); + agvTaskService.create(agvTask); + agvTaskService.sendAgvTaskImpl(agvTask); + + // 更新点位状态 + endPoint.setStatus(BaseStatus.USED); + pointService.update(endPoint); + + } + /** * 验证任务 * @@ -790,11 +820,6 @@ public class StockServiceImpl implements StockService { agvTaskService.sendAgvTaskImpl(agvTask); } - private Task createTask(Item item, ItemKey itemKey, AsnDetail asnDetail, Stock stock, Point srcPoint, Point endPoint, AgvTask agvTask) { - Task task = new Task(item, itemKey, asnDetail.getOrderNumber(), BizStatus.ASN, asnDetail, null, null, null, stock, null, srcPoint, endPoint, stock.getCode(), null, srcPoint == null ? null : srcPoint.getCode(), endPoint == null ? null : endPoint.getCode(), null, BizStatus.OPEN, asnDetail.getOrderQty(), null, null, item.getDept(), agvTask); - taskRepository.save(task); - return task; - } private void updateStockAndPoints(Stock stock, Point srcPoint, Point endPoint) { stock.setStatus(BaseStatus.USED); @@ -861,27 +886,9 @@ public class StockServiceImpl implements StockService { } private boolean isRestrictedArea(String areaName) { - return areaName.equals(AreaNameDic.CPXXQ) || areaName.equals(AreaNameDic.DXJRKQ); + return areaName.equals(AreaNameDic.CPRKQ) || areaName.equals(AreaNameDic.CPRKCHQ) || areaName.equals(AreaNameDic.DXJRKQ); } - private void handleFullContainer(Stock stock, Point point, String itemCode) { - Item item = validateItem(itemCode);//验证物料 - clearInventory(stock);//清空库存 - AsnDetail asnDetail = asnDetailService.createAsnDetail(item, stock); - ItemKey itemKey = itemKeyService.getItemKey(item, asnDetail.getPropC1(), asnDetail.getOrderNumber()); - Task task = taskService.createTask(item, itemKey, asnDetail, stock, point); - - task.setMoveQty(task.getPlanQty()); - taskService.update(task); - - inventoryService.updateInventory(task, stock); - - point.setStatus(BaseStatus.USED); - pointService.update(point); - stock.setStatus(BaseStatus.USED); - stock.setPoint(point); - update(stock); - } /** * 清空库存 @@ -897,7 +904,7 @@ public class StockServiceImpl implements StockService { } private void handleEmptyContainer(Stock stock, Point point) { - point.setStatus(BaseStatus.USED); + point.setStatus(BaseStatus.USED); pointService.update(point); stock.setStatus(BaseStatus.FREE); stock.setPoint(point); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/domain/Pick.java b/youchain-system/src/main/java/com/youchain/businessdata/domain/Pick.java index 21277cc..2070bae 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/domain/Pick.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/domain/Pick.java @@ -72,9 +72,13 @@ public class Pick extends BaseEntity implements Serializable { @OneToOne @JoinColumn(name = "`point_id`") @ApiModelProperty(value = "备料点位") - @NotNull private Point point; + @OneToOne + @JoinColumn(name = "`call_point_id`") + @ApiModelProperty(value = "叫料点位") + private Point callPoint; + @Column(name = "`is_call`") @ApiModelProperty(value = "是否叫料") private Boolean isCall; diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/GdRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/GdRepository.java index 987fdd3..87f7f6a 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/GdRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/GdRepository.java @@ -34,5 +34,5 @@ public interface GdRepository extends JpaRepository, JpaSpecificationE * @return */ @Query(value = " FROM Gd g WHERE g.code=:code ") - Gd findByGdList(String code); + Gd findByGdCode(String code); } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickDto.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickDto.java index bd338be..e563a1d 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickDto.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickDto.java @@ -70,6 +70,11 @@ public class PickDto implements Serializable { */ private Point point; + /** + * 叫点位 + */ + private Point callPoint; + /** * 是否叫料 */ diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/GdServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/GdServiceImpl.java index 4cbd068..4a0ca94 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/GdServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/GdServiceImpl.java @@ -176,7 +176,7 @@ public class GdServiceImpl implements GdService { * @param yclbl -> 备料参数 */ private void checkIfGdExists(Yclbl yclbl) { - Gd gd = gdRepository.findByGdList(yclbl.getOrderNo()); + Gd gd = gdRepository.findByGdCode(yclbl.getOrderNo()); if (gd != null) { throw new IllegalArgumentException(yclbl.getOrderNo() + "备料工单已存在!"); } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java index 714c9f9..612cdb6 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java @@ -15,6 +15,8 @@ */ package com.youchain.businessdata.service.impl; +import com.youchain.basicdata.domain.Point; +import com.youchain.basicdata.repository.PointRepository; import com.youchain.businessdata.domain.*; import com.youchain.businessdata.repository.AgvTaskRepository; import com.youchain.businessdata.repository.TaskRepository; @@ -50,6 +52,7 @@ public class PickServiceImpl implements PickService { private final PickRepository pickRepository; private final TaskRepository taskRepository; + private final PointRepository pointRepository; private final AgvTaskRepository agvTaskRepository; private final AgvTaskService agvTaskService; private final PickMapper pickMapper; @@ -135,10 +138,17 @@ public class PickServiceImpl implements PickService { if (pick == null) { throw new IllegalArgumentException(gdNo + "工单未备料,叫料失败!"); } + + List pointList = pointRepository.findByCode(pointCode, null, null, null, null, null); + if (pointList.isEmpty()) { + throw new IllegalArgumentException(pointCode + "点位系统不存在,请维护!"); + } + if (pick.getIsCall()) { throw new IllegalArgumentException(gdNo + "工单已叫料,请勿重复叫料!"); } pick.setIsCall(true); + pick.setCallPoint(pointList.get(0)); pickRepository.save(pick); } @@ -149,10 +159,19 @@ public class PickServiceImpl implements PickService { if (pick == null) { throw new IllegalArgumentException(gdNo + "工单未备料,叫料失败!"); } + + List pointList = pointRepository.findByCode(pointCode, null, null, null, null, null); + if (pointList.isEmpty()) { + throw new IllegalArgumentException(pointCode + "点位系统不存在,请维护!"); + } + if (pick.getIsCall()) { throw new IllegalArgumentException(gdNo + "工单已叫料,请勿重复叫料!"); } + + pick.setIsCall(true); + pick.setCallPoint(pointList.get(0)); pickRepository.save(pick); } diff --git a/youchain-system/src/main/java/com/youchain/modules/quartz/task/pickTask.java b/youchain-system/src/main/java/com/youchain/modules/quartz/task/pickTask.java index 65c94a5..925ce2a 100644 --- a/youchain-system/src/main/java/com/youchain/modules/quartz/task/pickTask.java +++ b/youchain-system/src/main/java/com/youchain/modules/quartz/task/pickTask.java @@ -1,5 +1,6 @@ package com.youchain.modules.quartz.task; +import com.youchain.basicdata.service.StockService; import com.youchain.businessdata.domain.Pick; import com.youchain.businessdata.repository.PickRepository; import com.youchain.businessdata.service.AgvTaskService; @@ -28,6 +29,9 @@ public class pickTask { @Autowired public PickService pickService; + @Autowired + public StockService stockService; + /** * 定时检测打开和分配中的出库单,分配库存 */ @@ -60,4 +64,11 @@ public class pickTask { } } + /** + * 成品下线呼叫空货架 + */ + public void cpCallStock() { + stockService.cpCallStock(); + } + } diff --git a/youchain-system/src/main/java/com/youchain/utils/AreaNameDic.java b/youchain-system/src/main/java/com/youchain/utils/AreaNameDic.java index 9648c49..07dd134 100644 --- a/youchain-system/src/main/java/com/youchain/utils/AreaNameDic.java +++ b/youchain-system/src/main/java/com/youchain/utils/AreaNameDic.java @@ -37,6 +37,11 @@ public interface AreaNameDic { */ public static String CPRKQ = "CPRKQ"; + /** + * 成品入库缓存区 + */ + public static String CPRKCHQ = "CPRKCHQ"; + /** * 成品下线区 */