From b176072388747abb438990157bfa305b215b4b90 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期二, 14 四月 2026 21:59:39 +0800
Subject: [PATCH] 我们现在讨论一下系统找库位方案, 如何实现,对现有找库位规则进行整改,数据库也要整改 1、要能方便的填写单伸堆垛机或双伸堆垛机的深浅库位配置 2、根据设备状态分配库位,离线设备不分配 3、库位分配要均衡到每一个设备 4、库位高度需要匹配到对应库位信息,低库位能向上兼容 5、空托盘优先放在locType2库位=1的库位,没有这种库位了,允许放到其他库位 6、给入库站点设置有限去那些堆垛机,其次去那些堆垛机,弄成页面可以配置入库站点 7、在系统配置新增优先放前几列的配置,当入库的货物是高频货物时放在前几列 8、组托中会标识该托盘是高频还是低频,如果是高频则从前往后找库位,如果是低频则从后往前找库位 9、找库位时locMast中whsType字段无用
---
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 67 +++++++++++++++++++++++++++++----
1 files changed, 59 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 1e2fad7..a53d344 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -11,9 +11,11 @@
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
+import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.MatUtils;
import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.asrs.utils.Utils;
+import com.zy.common.constant.AgvConstant;
import com.zy.common.constant.MesConstant;
import com.zy.common.entity.Parameter;
import com.zy.common.model.DetlDto;
@@ -26,6 +28,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.util.*;
@@ -245,6 +248,7 @@
wrkMast.setIoTime(now);
wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細101.鐢熸垚鍑哄簱
wrkMast.setIoType(104); // 鍏ュ嚭搴撶姸鎬�
+ wrkMast.setPdcType("N");
wrkMast.setIoPri(13D); // 浼樺厛绾э細13
wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
@@ -570,15 +574,28 @@
}
Date now = new Date();
-
+ Integer freqType = resolveCombFreqType(param.getCombMats());
+ boolean allEmpty = true;
+ if (param.getCombMats() != null) {
+ for (CombParam.CombMat mat : param.getCombMats()) {
+ if (!Cools.isEmpty(mat.getOrderNo())) {
+ allEmpty = false;
+ break;
+ }
+ }
+ }
// 鏃犲崟缁勬墭
- if (Cools.isEmpty(param.getOrderNo())) {
+ if (allEmpty) {
// 鐢熸垚鍏ュ簱閫氱煡妗�
List<DetlDto> detlDtos = new ArrayList<>();
param.getCombMats().forEach(elem -> {
DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),
elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme());
+ detlDto.setMemo(elem.getMemo());
+ detlDto.setSupp(elem.getSupp());
+ detlDto.setManu(elem.getManu());
+ detlDto.setSuppCode(elem.getSuppCode());
if (DetlDto.has(detlDtos, detlDto)) {
DetlDto one = DetlDto.findDto(detlDtos, detlDto);
assert one != null;
@@ -600,11 +617,16 @@
waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
+ waitPakin.setFreqType(freqType);
waitPakin.setStatus("Y"); // 鐘舵��
waitPakin.setAppeUser(userId);
waitPakin.setAppeTime(now);
waitPakin.setModiUser(userId);
waitPakin.setModiTime(now);
+ waitPakin.setMemo(detlDto.getMemo());
+ waitPakin.setSupp(detlDto.getSupp());
+ waitPakin.setSuppCode(detlDto.getSuppCode());
+ waitPakin.setManu(detlDto.getManu());
waitPakin.setStandby1(detlDto.getStandby1());
waitPakin.setStandby2(detlDto.getStandby2());
waitPakin.setStandby3(detlDto.getStandby3());
@@ -618,7 +640,7 @@
// 鍏宠仈缁勬墭
} else {
// Order order = orderService.selectByNo(param.getOrderNo());
- Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, param.getOrderNo());
+ Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, param.getCombMats().get(0).getOrderNo());
if (Cools.isEmpty(order) || order.getSettle() > 2) {
throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
}
@@ -633,14 +655,14 @@
if (elem.getAnfme() > orderDetl.getEnableQty()) {
throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
}
- // 淇敼璁㈠崟浣滀笟鏁伴噺
-// if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
-// throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
-// }
OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE,order.getId(), elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),
elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme());
DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),
elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme());
+ detlDto.setMemo(elem.getMemo());
+ detlDto.setSupp(elem.getSupp());
+ detlDto.setManu(elem.getManu());
+ detlDto.setSuppCode(elem.getSuppCode());
if (DetlDto.has(detlDtos, detlDto)) {
DetlDto one = DetlDto.findDto(detlDtos, detlDto);
assert one != null;
@@ -661,11 +683,16 @@
waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
+ waitPakin.setFreqType(freqType);
waitPakin.setStatus("Y"); // 鐘舵��
waitPakin.setAppeUser(userId);
waitPakin.setAppeTime(now);
waitPakin.setModiUser(userId);
waitPakin.setModiTime(now);
+ waitPakin.setMemo(detlDto.getMemo());
+ waitPakin.setSupp(detlDto.getSupp());
+ waitPakin.setSuppCode(detlDto.getSuppCode());
+ waitPakin.setManu(detlDto.getManu());
waitPakin.setStandby1(detlDto.getStandby1());
waitPakin.setStandby2(detlDto.getStandby2());
waitPakin.setStandby3(detlDto.getStandby3());
@@ -676,11 +703,32 @@
throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
}
}
+
// orderService.updateSettle(order.getId(), 2L, userId);
OrderInAndOutUtil.updateOrder(Boolean.TRUE,order.getId(), 2L, userId);
}
-
}
+
+ private Integer resolveCombFreqType(List<CombParam.CombMat> combMats) {
+ Integer resolvedFreqType = null;
+ if (Cools.isEmpty(combMats)) {
+ return null;
+ }
+ for (CombParam.CombMat combMat : combMats) {
+ if (combMat == null || combMat.getFreqType() == null || combMat.getFreqType() <= 0) {
+ continue;
+ }
+ if (resolvedFreqType == null) {
+ resolvedFreqType = combMat.getFreqType();
+ continue;
+ }
+ if (!resolvedFreqType.equals(combMat.getFreqType())) {
+ throw new CoolException("缁勬墭璐х墿棰戞涓嶄竴鑷�");
+ }
+ }
+ return resolvedFreqType;
+ }
+
@Override
@Transactional
@@ -1031,6 +1079,7 @@
throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
}
Date now = new Date();
+ Integer freqType = resolveCombFreqType(param.getCombMats());
boolean packDown = Parameter.get().getPackDown().equals("true");
@@ -1164,6 +1213,7 @@
waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
+ waitPakin.setFreqType(freqType);
waitPakin.setStatus("Y"); // 鐘舵��
waitPakin.setAppeUser(userId);
waitPakin.setAppeTime(now);
@@ -1292,6 +1342,7 @@
wrkMast.setExitMk("N"); // 閫�鍑�
wrkMast.setEmptyMk("N"); // 绌烘澘
wrkMast.setLinkMis("N");
+ wrkMast.setPdcType("N");
wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
wrkMast.setAppeTime(now);
wrkMast.setModiUser(userId);
--
Gitblit v1.9.1