From 7d778fa2a2b1590e6aa5683abc64f425e10b9e36 Mon Sep 17 00:00:00 2001 From: "HUOJIN\\92525" Date: Tue, 18 Feb 2025 14:50:53 +0800 Subject: [PATCH] no message --- .../com/youchain/RequestData/TransTask.java | 2 +- .../service/impl/BydAppServiceImpl.java | 21 ++++----- .../com/youchain/basicdata/domain/Item.java | 2 +- .../youchain/businessdata/domain/Pick.java | 5 +-- .../repository/TaskRepository.java | 4 +- .../businessdata/service/dto/PickDto.java | 2 +- .../service/impl/MesServiceImpl.java | 43 +++++++++++++++---- .../service/impl/TaskServiceImpl.java | 30 ++++++++----- .../modules/quartz/task/pickTask.java | 10 ++++- .../java/com/youchain/utils/BizStatus.java | 5 +++ 10 files changed, 84 insertions(+), 40 deletions(-) diff --git a/youchain-system/src/main/java/com/youchain/RequestData/TransTask.java b/youchain-system/src/main/java/com/youchain/RequestData/TransTask.java index 653a05f..17cbafe 100644 --- a/youchain-system/src/main/java/com/youchain/RequestData/TransTask.java +++ b/youchain-system/src/main/java/com/youchain/RequestData/TransTask.java @@ -13,7 +13,7 @@ public class TransTask { String createTime; @ApiModelProperty(value ="点位",required = true,example = "点位") String pointCode; - @ApiModelProperty(value ="任务类型",required = true,example = "任务类型(Cp_Off_Up成品上线、Cp_Off_Line成品下线、Fx_Off_Line返修下线、Fx_Back返修载具送回)") + @ApiModelProperty(value ="任务类型",required = true,example = "任务类型(Cp_Off_Up成品上线、Cp_Off_Line成品下线、Fx_Off_Line返修下线、Fx_Back返修载具送回、JL_Back叫料返空)") String taskType; } 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 1707b57..9a2bb50 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 @@ -194,15 +194,15 @@ public class BydAppServiceImpl implements BydAppService { returnTaskVo.setItemName(task.getItem().getName()); returnTaskVo.setSrcPointCode(task.getSrcPointCode()); returnTaskVo.setDstPointCode(task.getDstPointCode()); - returnTaskVo.setPlanQty(task.getPlanQty()-task.getMoveQty()); + returnTaskVo.setPlanQty(task.getPlanQty() - task.getMoveQty()); return returnTaskVo; } @Override @Transactional(rollbackFor = Exception.class) - public void fbPicking(Long taskId, String orderNumber, String dstStockCode,Double moveQty) { + public void fbPicking(Long taskId, String orderNumber, String dstStockCode, Double moveQty) { //验证任务 - Task task = validateTask(taskId, orderNumber,moveQty); + Task task = validateTask(taskId, orderNumber, moveQty); //工单 Pick pick = task.getPickDetail().getPick(); @@ -220,8 +220,6 @@ public class BydAppServiceImpl implements BydAppService { if (BaseStatus.GD_TYPE_CT.equals(pick.getOrderType())) { this.returnFBAgvTask(task); } - - } @Override @@ -392,12 +390,12 @@ public class BydAppServiceImpl implements BydAppService { * @param taskId 任务Id * @param orderNumber 箱号 */ - private Task validateTask(Long taskId, String orderNumber,Double moveQty) { + private Task validateTask(Long taskId, String orderNumber, Double moveQty) { Task task = taskService.findById(taskId); if (task == null) { throw new BadRequestException("未找到相应任务记录!"); } - if(moveQty>task.getPlanQty()-task.getMoveQty()){ + if (moveQty > task.getPlanQty() - task.getMoveQty()) { throw new BadRequestException("实际拣货数量不能大于待拣货数量!"); } if (orderNumber.equals(task.getItemKey().getOrderNumber())) { @@ -437,10 +435,13 @@ public class BydAppServiceImpl implements BydAppService { if (!inventoryList.isEmpty()) { throw new BadRequestException(dstStock + "目标托盘已绑定其他出库单,请更换其它的托盘!"); } - pick.setStock(dstStock); + pick.setStock(dstStock.getCode()); pickService.update(pick); - } else if (!dstStockCode.equals(pick.getStock().getCode())) { - throw new BadRequestException(pick.getGdCode() + "工单只能放入同一个货架! 请放入" + pick.getStock().getCode() + "货架!"); + } + if (BizStatus.XJ.equals(task.getItemKey().getItem().getGoodType())) { + if (!dstStockCode.equals(pick.getStock())) { + throw new BadRequestException(pick.getGdCode() + "工单只能放入同一个货架! 请放入" + pick.getCode() + "货架!"); + } } return dstStock; } diff --git a/youchain-system/src/main/java/com/youchain/basicdata/domain/Item.java b/youchain-system/src/main/java/com/youchain/basicdata/domain/Item.java index 5828f3d..2e9a89f 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/domain/Item.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/domain/Item.java @@ -86,7 +86,7 @@ public class Item extends BaseEntity implements Serializable { private String centerClass; @Column(name = "`small_class`") - @ApiModelProperty(value = "小类") + @ApiModelProperty(value = "旧物料代码") private String smallClass; @Column(name = "`good_type`") 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 fbe9144..dea33b0 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 @@ -94,10 +94,9 @@ public class Pick extends BaseEntity implements Serializable { @ApiModelProperty(value = "单据类型") private String orderType; - @OneToOne - @JoinColumn(name = "`stock_id`") + @Column(name = "`stock_id`") @ApiModelProperty(value = "容器") - private Stock stock; + private String stock; @Column(name = "`source_id`") @ApiModelProperty(value = "回传状态") diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java index 839f64d..5a322d3 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java @@ -85,9 +85,7 @@ public interface TaskRepository extends JpaRepository, JpaSpecificat * @param taskStatus 任务状态 * @param srcStockCode 原容器号 */ - @Query(value = " from Task t WHERE t.srcStock.code=:srcStockCode " + - " and (:taskType is null or t.taskType=:taskType) " + - " and (:taskStatus is null or t.taskStatus=:taskStatus) order by t.itemKey.orderNumber ") + @Query(value = " (SELECT * FROM data_task t WHERE t.src_stock_code=:srcStockCode AND t.task_type=:taskType AND t.task_status =:taskStatus) UNION ALL (SELECT * FROM data_task t WHERE t.dst_point_code=:srcStockCode AND t.task_type=:taskType AND t.task_status =:taskStatus) ", nativeQuery = true) List findTaskByContains(String taskType, String taskStatus, String srcStockCode); /** 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 41cd8c2..3cd4ff8 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 @@ -92,7 +92,7 @@ public class PickDto implements Serializable { /** * 容器 */ - private Stock stock; + private String stock; /** * 是否叫料 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 0054046..0c9fb21 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 @@ -144,14 +144,14 @@ public class MesServiceImpl implements MesService { } pick.setIsCall(true); - if (pick.getCallPoint()==null || pick.getCallPoint().length()<=0) { + if (pick.getCallPoint() == null || pick.getCallPoint().length() <= 0) { pick.setCallPoint(pointCode); - }else if(!pointCode.equals(pick.getCallPoint())){ - pick.setCallPoint(pick.getCallPoint()+","+pointCode); + } else if (!pointCode.equals(pick.getCallPoint())) { + pick.setCallPoint(pick.getCallPoint() + "," + pointCode); } pickRepository.save(pick); - taskService.callEmptyStock(point); + taskService.callJlTask(pick); } @Override @@ -173,14 +173,15 @@ public class MesServiceImpl implements MesService { pick.setIsCall(true); - if (pick.getCallPoint()==null || pick.getCallPoint().length()<=0) { + if (pick.getCallPoint() == null || pick.getCallPoint().length() <= 0) { pick.setCallPoint(pointCode); - }else if(!pointCode.equals(pick.getCallPoint())){ - pick.setCallPoint(pick.getCallPoint()+","+pointCode); + } else if (!pointCode.equals(pick.getCallPoint())) { + pick.setCallPoint(pick.getCallPoint() + "," + pointCode); } pickRepository.save(pick); - taskService.callEmptyStock(point); + + taskService.callJlTask(pick); } @Override @@ -199,6 +200,9 @@ public class MesServiceImpl implements MesService { case BizStatus.Fx_Back: moveFxBack(transTask);//返修载具送回 break; + case BizStatus.JL_Back: + moveJLBack(transTask);//叫料返空 + break; default: throw new BadRequestException("任务类型错误!"); } @@ -409,4 +413,27 @@ public class MesServiceImpl implements MesService { //任务放行 kmReService.sendAgvTaskToContainer(UrlApi.operationFeedback(), kmReService.operationFeedbackJson(agvTask)); } + + private void moveJLBack(TransTask transTask) { + //起点 + Point srcPoint = pointService.validatePoint(transTask.getPointCode()); + + String dstAreaCode = AreaNameDic.XJJLQ.equals(srcPoint.getArea().getName()) ? AreaNameDic.XJFBCQ : AreaNameDic.DJFBCQ; + List endPointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, dstAreaCode); + if (endPointList.isEmpty()) { + throw new BadRequestException(dstAreaCode.equals(AreaNameDic.XJFBCQ) ? "小件翻包存储区" : "大件翻包存储区" + "没有空闲点位!"); + } + + Point endPoint = endPointList.get(0); + + // 验证终点是否有任务 + if (!agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.CALL_RETURN, "RACK_MOVE")) { + throw new BadRequestException(endPoint.getCode() + "点位有任务,请稍后再试!"); + } + + // 生成任务 + AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.CALL_RETURN, null, srcPoint.getCode(), endPoint.getCode(), "RACK_MOVE"); + + + } } 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 9226bf7..ecf3b7b 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 @@ -307,17 +307,23 @@ public class TaskServiceImpl implements TaskService { if (pick.getCallPoint() == null) { throw new BadRequestException(pick.getGdCode() + "工单没有叫料请求!"); } + //绑定任务 + List taskList = this.findByPickAllTask(pick.getId()); + if (taskList.isEmpty()) { + throw new BadRequestException(pick.getGdCode() + "没有翻包拣货任务!"); + } + //起点 - Point srcPoint = pick.getStock().getPoint(); + String[] stocks = pick.getStock().split(","); + String stockCode = stocks[stocks.length - 1]; + Stock stock = stockService.validateStock(stockCode); + Point srcPoint = stock.getPoint(); //终点 String[] points = pick.getCallPoint().split(","); String endPointCode = points[points.length - 1]; Point endPoint = pointService.queryPoint(endPointCode, null, null, null); - //容器 - Stock stock = pick.getStock(); - //创建任务 if (!agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.CALL_PICK, "RACK_MOVE")) { throw new BadRequestException(endPoint.getCode() + "点位有任务,请稍后再试!"); @@ -326,8 +332,6 @@ public class TaskServiceImpl implements TaskService { agvTask.setLineSlotCode(pick.getCode()); agvTaskService.update(agvTask); - //绑定任务 - List taskList = this.findByPickAllTask(pick.getId()); for (Task task : taskList) { task.setCallAgvTaskId(agvTask.getId()); @@ -339,11 +343,6 @@ public class TaskServiceImpl implements TaskService { //终点占用 pointService.usedPoint(endPoint); - //更新出库单状态为叫料中 - pick.setStatus(BizStatus.SHIP_PART); - pickService.update(pick); - - } @Override @@ -596,6 +595,15 @@ public class TaskServiceImpl implements TaskService { pickDetail.setPickedQty(pickDetail.getPickedQty() + moveQty); pickDetailService.update(pickDetail); + Pick pick = pickDetail.getPick(); + + if (pick.getStock() == null || pick.getStock().length() <= 0) { + pick.setStock(dstStock.getCode()); + } else if (dstStock.getCode().equals(pick.getStock())) { + pick.setStock(pick.getStock() + "," + dstStock.getCode()); + } + pickService.update(pick); + //容器占用 stockService.usedStock(dstStock, dstStock.getPoint(), BaseStatus.USED); 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 5cfa159..7031f1a 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 @@ -72,7 +72,10 @@ public class pickTask { throw new BadRequestException("无已分配的出库单,下发任务失败!"); } for (Pick pick : pickList) { - taskService.materialPick(pick); + synchronized (pick) { + taskService.materialPick(pick); + } + } } @@ -87,7 +90,10 @@ public class pickTask { throw new BadRequestException("无拣货完成的出库单或出库单未叫料!"); } for (Pick pick : pickList) { - taskService.callJlTask(pick); + synchronized (pick) { + taskService.callJlTask(pick); + } + } } 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 b04b4b6..9cac04f 100644 --- a/youchain-system/src/main/java/com/youchain/utils/BizStatus.java +++ b/youchain-system/src/main/java/com/youchain/utils/BizStatus.java @@ -141,6 +141,11 @@ public interface BizStatus { */ String Fx_Back = "Fx_Back"; + /** + * 任务类型-返修载具送回 + */ + String JL_Back = "JL_Back"; + /** * 任务类型-叫料 */