From eaa43b12bfe9185b4f0b8f09d9ca081895a4d185 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期四, 12 三月 2026 21:27:44 +0800
Subject: [PATCH] 1.任务下发失败提醒 2.针对订单出库循环堵塞问题优化
---
src/main/java/com/zy/asrs/controller/OutController.java | 62 +++++++++++++++++++++++-------
1 files changed, 47 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index c32005b..09d2037 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -14,8 +14,8 @@
import com.zy.common.model.LocDto;
import com.zy.common.model.TaskDto;
import com.zy.common.web.BaseController;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@@ -29,6 +29,7 @@
* Created by vincent on 2022/3/26
*/
+@Slf4j
@RestController
public class OutController extends BaseController {
@@ -88,8 +89,8 @@
if (issued <= 0.0D) {
continue;
}
- List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist,orderDetl.getMatnr(), orderDetl.getBatch(),
- orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3());
+ List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist, orderDetl.getMatnr(), orderDetl.getBatch(),
+ orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(), orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3());
for (LocDetl locDetl : locDetls) {
if (issued > 0) {
LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
@@ -136,8 +137,8 @@
if (issued <= 0.0D) {
continue;
}
- List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist,orderDetl.getMatnr(), orderDetl.getBatch(),
- orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3());
+ List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist, orderDetl.getMatnr(), orderDetl.getBatch(),
+ orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(), orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3());
for (LocDetl locDetl : locDetls) {
if (issued > 0) {
LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
@@ -181,14 +182,13 @@
@PostMapping("/out/pakout/auth")
@ManagerAuth(memo = "璁㈠崟鍑哄簱")
- @Transactional
public synchronized R pakout(@RequestBody List<LocDto> locDtos) throws InterruptedException {
if (Cools.isEmpty(locDtos)) {
return R.parse(BaseRes.PARAM);
}
List<LocDto> locDtoArrayList = new ArrayList<>();
- for (LocDto locDto : locDtos){
- if (locDto.getFrozen()!=1 && locDto.getFrozenLoc()!=1){
+ for (LocDto locDto : locDtos) {
+ if (locDto.getFrozen() != 1 && locDto.getFrozenLoc() != 1) {
locDtoArrayList.add(locDto);
}
}
@@ -212,7 +212,9 @@
List<TaskDto> taskDtos = new ArrayList<>();
// 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
for (LocDto locDto : locDtos) {
- if (locDto.isLack()) { continue; }
+ if (locDto.isLack()) {
+ continue;
+ }
TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto, locDto.getStandby1());
if (TaskDto.has(taskDtos, taskDto)) {
TaskDto dto = TaskDto.find(taskDtos, taskDto);
@@ -223,16 +225,46 @@
}
}
// -----------------------------------------------------------------------------------------------
+ int failCount = 0;
for (TaskDto taskDto : taskDtos) {
- BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
- if (!Objects.isNull(taskDto.getDeviceNo())) {
- //鐢熸垚鍑哄簱浠诲姟
- workService.stockOut(staNo, taskDto, taskDto.getDeviceNo(), getUserId());
- } else {
- workService.stockOut(staNo, taskDto, null, getUserId());
+ if (!stockOutSafely(taskDto, getUserId(), "鎵嬪姩璁㈠崟鍑哄簱")) {
+ failCount++;
}
+ }
+ if (failCount > 0) {
+ return R.ok("閮ㄥ垎鍑哄簱浠诲姟宸茬敓鎴愶紝鎴愬姛" + (taskDtos.size() - failCount) + "鏉★紝澶辫触" + failCount + "鏉★紝璇锋煡鐪嬫棩蹇�");
}
return R.ok();
}
+ private boolean stockOutSafely(TaskDto taskDto, Long userId, String scene) {
+ try {
+ BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
+ workService.stockOut(staNo, taskDto, taskDto.getDeviceNo(), userId);
+ return true;
+ } catch (Exception e) {
+ log.error("{}澶辫触[locNo={}, staNo={}, deviceNo={}, orderNos={}]锛屽師鍥�: {}",
+ scene,
+ taskDto.getLocNo(),
+ taskDto.getStaNo(),
+ taskDto.getDeviceNo(),
+ collectOrderNos(taskDto),
+ getErrorMessage(e));
+ return false;
+ }
+ }
+
+ private String collectOrderNos(TaskDto taskDto) {
+ Set<String> orderNos = new LinkedHashSet<>();
+ for (LocDto locDto : taskDto.getLocDtos()) {
+ if (!Cools.isEmpty(locDto.getOrderNo())) {
+ orderNos.add(locDto.getOrderNo());
+ }
+ }
+ return orderNos.toString();
+ }
+
+ private String getErrorMessage(Exception e) {
+ return Cools.isEmpty(e.getMessage()) ? e.getClass().getSimpleName() : e.getMessage();
+ }
}
--
Gitblit v1.9.1