From dcf15598a799655041d098bb9d1a97dcb4485629 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 09 九月 2025 19:01:06 +0800
Subject: [PATCH] no message
---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 162 insertions(+), 9 deletions(-)
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
index 020951a..9f23308 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.mysql.cj.util.StringUtils;
import com.zy.asrs.wms.asrs.entity.param.StockOutParam;
import com.zy.asrs.framework.exception.CoolException;
@@ -534,6 +535,7 @@
/**
* 娉㈡鍑哄簱棰勮
+ *
* @param param
* @return
*/
@@ -1109,6 +1111,11 @@
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
+ wave.setSite(operationPort.getFlag());
+ if (!waveService.updateById(wave)) {
+ throw new CoolException("娉㈡绔欏彛鐘舵�佹洿鏂板け璐ワ紒锛�");
+ }
+
for (OrderOutMergeDto merge : list) {
LocDetl locDetl = locDetlService.getById(merge.getLocDetlId());
if (locDetl == null) {
@@ -1148,7 +1155,7 @@
.eq(WaveDetl::getStockIndex, matUniqueKey)
.eq(WaveDetl::getWaveId, wave.getId()));
if (waveDetl == null) {
- throw new CoolException("waveId:" + wave.getId() + "鐗╂枡锛�" + taskDetl.getMatnr() + "娉㈡鏁版嵁涓嶅瓨鍦�");
+ throw new CoolException("waveId:" + wave.getId() + "鐗╂枡锛�" + taskDetl.getMatnr() + "娉㈡鏁版嵁涓嶅瓨鍦�");
}
waveDetl.setWorkQty(waveDetl.getWorkQty() + taskDetl.getAnfme());
waveDetl.setUpdateTime(new Date());
@@ -1161,6 +1168,7 @@
if (orders.isEmpty()) {
throw new CoolException("褰撳墠娉㈡璁㈠崟涓嶅瓨鍦紒锛�");
}
+
// List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>()
// .eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id).eq(CacheSite::getChannel, task.getTargetSite()));
@@ -1271,6 +1279,12 @@
if (!locDetlService.updateById(locDetl)) {
throw new CoolException("搴撳瓨鍔犻攣澶辫触锛侊紒");
}
+
+ orderDetlService.update(new LambdaUpdateWrapper<OrderDetl>()
+ .set(OrderDetl::getWareType, 2)
+ .eq(OrderDetl::getMatId, mat.getId())
+ .eq(StringUtils.isNullOrEmpty(outOder.getBatch()), OrderDetl::getBatch, outOder.getBatch())
+ .in(OrderDetl::getOrderId, outOder.getOrderIds()));
});
curLoc.setLocStsId(LocStsType.R.val());
@@ -1487,7 +1501,133 @@
outFlatStock(param);
} else {
//鐢熸垚浠诲姟妗�
- generateTask(param);
+ generateTask(param, null);
+ }
+ }
+
+ /**
+ * @author Ryan
+ * @date 2025/9/9
+ * @description: 鐩樼偣鍑哄簱
+ * @version 1.0
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void outCheckStock(CheckOutParam checkParams) {
+ //鐢熸垚浠诲姟妗�
+ generateCheckTask(checkParams, "check");
+ }
+
+ /**
+ * @author Ryan
+ * @date 2025/9/9
+ * @description: 鐢熸垚鐩樼偣鍑哄簱浠诲姟
+ * @version 1.0
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void generateCheckTask(CheckOutParam outParam, String type) {
+ Loc loc = locService.getById(outParam.getId());
+ if (Objects.isNull(loc)) {
+ throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�");
+ }
+ List<LocDetl> detls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocId, loc.getId()));
+ for (LocDetl detl : detls) {
+ List<OrderOutMergeDto> orders = new ArrayList<>();
+ if (Objects.isNull(detl)) {
+ continue;
+ }
+ OrderOutMergeDto outMergeParam = new OrderOutMergeDto();
+ outMergeParam.setAnfme(detl.getAnfme());
+ outMergeParam.setLocNo(detl.getLocNo());
+ outMergeParam.setLocDetlId(detl.getId());
+ outMergeParam.setLocId(detl.getLocId());
+ outMergeParam.setMatnr(detl.getMatnr());
+ outMergeParam.setBatch(detl.getBatch());
+ orders.add(outMergeParam);
+
+ Map<Long, List<OrderOutMergeDto>> listMap = orders.stream().collect(Collectors.groupingBy(OrderOutMergeDto::getLocId));
+ //鏍规嵁搴撲綅ID鍒嗙粍
+ //鐢熸垚鎷h揣鍗曟槑缁�
+ for (Map.Entry<Long, List<OrderOutMergeDto>> entry : listMap.entrySet()) {
+ List<OrderOutMergeDto> list = entry.getValue();
+ OrderOutMergeDto param = list.stream().findFirst().get();
+ List<CacheSite> sites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>()
+ .isNotNull(CacheSite::getOrderId));
+ if (!sites.isEmpty()) {
+ Map<String, Long> longMap = sites.stream().collect(Collectors.groupingBy(CacheSite::getChannel, Collectors.counting()));
+ Map.Entry<String, Long> entry1 = longMap.entrySet().stream().min(Map.Entry.comparingByValue()).get();
+ param.setPortSite(entry1.getKey());
+ } else {
+ CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().last("limit 1"));
+ param.setPortSite(cacheSite.getChannel());
+ }
+ if (!loc.getLocStsId().equals(LocStsType.F.val())) {
+ throw new CoolException(loc.getLocNo() + "搴撲綅鐘舵�佸紓甯�");
+ }
+
+ OperationPort operationPort = operationPortService
+ .getOne(new LambdaQueryWrapper<OperationPort>()
+ .eq(OperationPort::getFlag, param.getPortSite()));
+ if (Objects.isNull(operationPort)) {
+ throw new CoolException("浣滀笟鍙d笉瀛樺湪");
+ }
+
+ Task task = new Task();
+ task.setTaskSts(TaskStsType.GENERATE_OUT.id);
+ // 107 鐩樼偣鍑哄簱
+ long taskType = 107L;
+ task.setTaskType(taskType);
+ task.setTaskNo(workService.generateTaskNo(taskType));
+ task.setIoPri(workService.generateIoPri(taskType));
+ task.setOriginLoc(loc.getLocNo());
+ task.setTargetSite(operationPort.getFlag());
+ task.setBarcode(loc.getBarcode());
+ boolean res = taskService.save(task);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+
+ for (OrderOutMergeDto merge : list) {
+ LocDetl locDetl = locDetlService.getById(merge.getLocDetlId());
+ if (locDetl == null) {
+ throw new CoolException("鏄庣粏涓嶅瓨鍦�");
+ }
+
+ TaskDetl taskDetl = new TaskDetl();
+ taskDetl.sync(locDetl);
+ taskDetl.setId(null);
+ taskDetl.setTaskId(task.getId());
+ taskDetl.setTaskNo(task.getTaskNo());
+ taskDetl.setAnfme(merge.getAnfme());
+ taskDetl.setStock(locDetl.getAnfme());
+ taskDetl.setOrderId(null);
+ taskDetl.setOrderNo(null);
+ if (!taskDetlService.save(taskDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+
+ List<LocDetlField> locDetlFields = locDetlFieldService
+ .list(new LambdaQueryWrapper<LocDetlField>()
+ .eq(LocDetlField::getDetlId, locDetl.getId()));
+ for (LocDetlField locDetlField : locDetlFields) {
+ TaskDetlField taskDetlField = new TaskDetlField();
+ taskDetlField.sync(locDetlField);
+ taskDetlField.setId(null);
+ taskDetlField.setDetlId(taskDetl.getId());
+ boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField);
+ if (!taskDetlFieldSave) {
+ throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触");
+ }
+ }
+ }
+
+ //搴撲綅F => R
+ loc.setLocStsId(LocStsType.R.val());
+ loc.setUpdateTime(new Date());
+ boolean locUpdate = locService.updateById(loc);
+ if (!locUpdate) {
+ throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
+ }
+ }
}
}
@@ -1499,7 +1639,7 @@
* @description: 鎵嬪姩鍑哄簱鐢熸垚浠诲姟
*/
@Transactional(rollbackFor = Exception.class)
- public void generateTask(StockOutParam outParam) {
+ public void generateTask(StockOutParam outParam, String type) {
for (LocDetl outLocDetl : outParam.getLocDetls()) {
List<OrderOutMergeDto> orders = new ArrayList<>();
LocDetl detl = locDetlService.getOne(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getId, outLocDetl.getId()));
@@ -1550,14 +1690,24 @@
if (Objects.isNull(operationPort)) {
throw new CoolException("浣滀笟鍙d笉瀛樺湪");
}
- //101 鍏ㄦ嫋鍑哄簱 103 鎷h揣鍑哄簱
- long taskType = all ? 101L : 103L;
+
Task task = new Task();
- task.setTaskNo(workService.generateTaskNo(taskType));
task.setTaskSts(TaskStsType.GENERATE_OUT.id);
- task.setTaskType(taskType);
- task.setIoPri(workService.generateIoPri(taskType));
+ if (Objects.isNull(type)) {
+ //101 鍏ㄦ嫋鍑哄簱 103 鎷h揣鍑哄簱
+ long taskType = all ? 101L : 103L;
+ task.setTaskType(taskType);
+ task.setTaskNo(workService.generateTaskNo(taskType));
+ task.setIoPri(workService.generateIoPri(taskType));
+ } else {
+ // 107 鐩樼偣鍑哄簱
+ long taskType = 107L;
+ task.setTaskType(taskType);
+ task.setTaskNo(workService.generateTaskNo(taskType));
+ task.setIoPri(workService.generateIoPri(taskType));
+ }
+
task.setOriginLoc(loc.getLocNo());
task.setTargetSite(operationPort.getFlag());
task.setBarcode(loc.getBarcode());
@@ -1638,7 +1788,10 @@
for (LocDetl locDetl : param.getLocDetls()) {
List<OrderOutMergeParam> orders = new ArrayList<>();
- LocDetl detl = locDetlService.getOne(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo, locDetl.getLocNo()));
+ LocDetl detl = locDetlService.getOne(new LambdaQueryWrapper<LocDetl>()
+ .eq(LocDetl::getMatId, locDetl.getMatId())
+ .eq(LocDetl::getBatch, locDetl.getBatch())
+ .eq(LocDetl::getLocNo, locDetl.getLocNo()));
if (Objects.isNull(detl)) {
continue;
}
--
Gitblit v1.9.1