From e72f4946b1696a570022d6ae715fa07656ab89f7 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期三, 27 九月 2023 13:07:43 +0800
Subject: [PATCH] Merge branch 'tzskasrs' of http://47.97.1.152:5880/r/zy-asrs into tzskasrs
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 306 ++++++++++++++++++++++++++------------------------
1 files changed, 160 insertions(+), 146 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index a002055..8e78cae 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -90,14 +90,7 @@
BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true);
// 妫�绱㈠簱浣�
LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
-
- List<String> matnrs = new ArrayList<>();
- for (FullStoreParam.MatCodeStore matCodeStore : param.getList()) {
- Mat mat = matService.selectByMatnr(matCodeStore.getMatnr());
- if (mat != null && !matnrs.contains(mat.getMaktx())) {
- matnrs.add(mat.getMaktx());
- }
- }
+ List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto, 0);
// 鐢熸垚宸ヤ綔鍙�
int workNo = dto.getWorkNo();
@@ -131,9 +124,10 @@
// 鐢熸垚宸ヤ綔妗f槑缁�
List<DetlDto> detlDtos = new ArrayList<>();
param.getList().forEach(elem -> {
- DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+ DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq());
+ detlDto.setContainerCode(elem.getContainerCode());
if (DetlDto.has(detlDtos, detlDto)) {
- DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+ DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode());
assert detlDto1 != null;
detlDto1.setAnfme(detlDto1.getAnfme() + detlDto.getAnfme());
} else {
@@ -166,6 +160,57 @@
@Override
@Transactional
public void startupFullTakeStore(StockOutParam param, Long userId) {
+ ArrayList<String> locNos = new ArrayList<>();
+ for (StockOutParam.LocDetl locDetl:param.getLocDetls()){
+ if (!locNos.contains(locDetl.getLocNo())){
+ locNos.add(locDetl.getLocNo());
+ }
+ }
+ //妫�娴嬫槸鍚︿负娴呭簱浣�
+ boolean sign=false;
+ String th = "";
+ for (String locNo:locNos){
+ if (sign){
+ break;
+ }
+
+ //妫�娴嬪嚭搴撶殑璐х墿涓槸鍚︽湁鐘舵�佷负绂佹鐨勮揣鐗┿��
+ for (LocDetl locDetl : locDetlService.selectByLocNo(locNo)) {
+ if (locDetl.getStockFreeze() == 0) {
+ th="搴撲綅鍙凤細"+locNo+" 鏈夌姝㈠嚭搴撶殑璐х墿锛�";
+ throw new CoolException("鍑哄簱澶辫触锛�"+th);
+ }
+
+ Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+ if (mat == null) {
+ continue;
+ }
+ if (mat.getStatus() == 0) {
+ th="搴撲綅鍙凤細"+locNo+" 鏈夌姝㈠嚭搴撶殑璐х墿锛�";
+ throw new CoolException("鍑哄簱澶辫触锛�"+th);
+ }
+ }
+
+ List<String> groupInnerLoc = Utils.getGroupInnerLoc(locNo);
+ if (!Cools.isEmpty(groupInnerLoc)) {
+ for (String insideLoc : groupInnerLoc) {
+ if (locNos.contains(insideLoc)){
+ continue;
+ }
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", insideLoc));
+ if (locMast != null) {
+ if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")){
+ sign=true;
+ th="搴撲綅鍙凤細"+locNo+" 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
+ break;
+ }
+ }
+ }
+ }
+ }
+ if (sign){
+ throw new CoolException("鍑哄簱澶辫触锛�"+th);
+ }
// 鐩爣绔欑偣鐘舵�佹娴�
BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
// 鑾峰彇搴撲綅鏄庣粏
@@ -182,6 +227,33 @@
} else {
throw new CoolException("搴撳瓨涓嶅瓨鍦�");
}
+ }
+ /**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 鎺�
+ */
+ public static int getRow(String locNo) {
+ if (!Cools.isEmpty(locNo)) {
+ return Integer.parseInt(locNo.substring(0, 2));
+ }
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+ /**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 鍒�
+ */
+ public static int getBay(String locNo) {
+ if (!Cools.isEmpty(locNo)) {
+ return Integer.parseInt(locNo.substring(2, 5));
+ }
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+ /**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 灞�
+ */
+ public static int getLev(String locNo) {
+ if (!Cools.isEmpty(locNo)) {
+ return Integer.parseInt(locNo.substring(5, 7));
+ }
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
}
@Override
@@ -236,7 +308,7 @@
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
wrkMast.setIoTime(now);
- wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
Double ioPri = wrkMastService.getIoPri(ioType, dto.getLocNo());
wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13
@@ -288,7 +360,6 @@
} else {
throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
}
- locMastService.breakUp(dto.getLocNo(), excludeLocNos);
}
}
@@ -315,7 +386,7 @@
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
wrkMast.setIoTime(now);
- wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
Double ioPri = wrkMastService.getIoPri(ioType, taskDto.getLocNo());
wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13
@@ -374,12 +445,26 @@
} else {
// 璁㈠崟鍚堝苟鍑哄簱
List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
+
+ //瀹為檯鍑哄簱鏁伴噺
+ Double locAnfme = locDto.getAnfme();
+ //璁㈠崟瀹為檯鍑哄簱鏁伴噺
+ Double orderAnfme;
+
for (OrderDto orderDto : orderDtoList) {
OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
if (orderDetl == null) {
orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null);
}
- if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDto.getAnfme())) {
+
+ if(locAnfme > orderDetl.getAnfme()){
+ orderAnfme = orderDetl.getAnfme();
+ locAnfme -= orderAnfme;
+ }else {
+ orderAnfme = locAnfme;
+ }
+
+ if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) {
throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
}
orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
@@ -462,6 +547,34 @@
@Override
@Transactional
public void emptyPlateOut(EmptyPlateOutParam param, Long userId) {
+ List<String> locNos = param.getLocNos();
+ //妫�娴嬫槸鍚︿负娴呭簱浣�
+ boolean sign=false;
+ String th = "";
+ for (String locNo:locNos){
+ if (sign){
+ break;
+ }
+ List<String> groupInnerLoc = Utils.getGroupInnerLoc(locNo);
+ if (!Cools.isEmpty(groupInnerLoc)) {
+ for (String insideLoc : groupInnerLoc) {
+ if (locNos.contains(insideLoc)){
+ continue;
+ }
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", insideLoc));
+ if (locMast != null) {
+ if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")){
+ sign=true;
+ th="搴撲綅鍙凤細"+locNo+" 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
+ break;
+ }
+ }
+ }
+ }
+ }
+ if (sign){
+ throw new CoolException("鍑哄簱澶辫触锛�"+th);
+ }
if (Cools.isEmpty(param.getOutSite())) {
throw new CoolException("绔欑偣涓嶅瓨鍦�");
}
@@ -499,7 +612,7 @@
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
wrkMast.setIoTime(new Date());
- wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
Double ioPri = wrkMastService.getIoPri(110, locNo);
wrkMast.setIoPri(ioPri);
@@ -576,7 +689,7 @@
WrkMast wrkMast = new WrkMast();
wrkMast.setWrkNo(workNo);
wrkMast.setIoTime(now);
- wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
wrkMast.setIoPri(10D);
wrkMast.setOutMost(locMastService.isOutMost(locNo, false)?1:0);;
@@ -709,6 +822,12 @@
adjDetl.setModiUser(userId);
adjDetl.setAppeTime(now);
adjDetl.setAppeUser(userId);
+
+ UUID uuid = UUID.randomUUID();
+ adjDetl.setOrderNo(uuid.toString());
+ adjDetl.setCsocode(locDetl.getThreeCode());
+ adjDetl.setIsoseq(locDetl.getDeadTime());
+
adjDetlService.save(adjDetl, userId);
}
iterator.remove();
@@ -734,6 +853,7 @@
adjDetl.setModiUser(userId);
adjDetl.setAppeTime(now);
adjDetl.setAppeUser(userId);
+
adjDetlService.save(adjDetl, userId);
}
@@ -750,6 +870,8 @@
locDetl.setModiTime(now);
locDetl.setAppeUser(userId);
locDetl.setAppeTime(now);
+ locDetl.setThreeCode(adjust.getThreeCode());
+ locDetl.setDeadTime(adjust.getDeadTime());
if (!locDetlService.insert(locDetl)) {
throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
}
@@ -764,6 +886,12 @@
adjDetl.setModiUser(userId);
adjDetl.setAppeTime(now);
adjDetl.setAppeUser(userId);
+
+ UUID uuid = UUID.randomUUID();
+ adjDetl.setOrderNo(uuid.toString());
+ adjDetl.setCsocode(locDetl.getThreeCode());
+ adjDetl.setIsoseq(locDetl.getDeadTime());
+
adjDetlService.save(adjDetl, userId);
}
// 淇敼搴撲綅鐘舵��
@@ -847,9 +975,23 @@
}
} else {
// 璁㈠崟鍚堝苟鍑哄簱
+
+ //瀹為檯鍙栨秷鐨勫嚭搴撴暟閲�
+ Double wrkDetlAnfme = wrkDetl.getAnfme();
+ //璁㈠崟瀹為檯鍑哄簱鏁伴噺
+ Double orderAnfme;
+
List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class);
for (OrderDto orderDto : orderDtoList) {
- if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme())) {
+
+ if(wrkDetlAnfme > orderDto.getAnfme()){
+ orderAnfme = orderDto.getAnfme();
+ wrkDetlAnfme -= orderAnfme;
+ }else {
+ orderAnfme = wrkDetlAnfme;
+ }
+
+ if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme)) {
throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
}
}
@@ -951,11 +1093,7 @@
@Override
public StartupDto createWaitPainWrkMastStart(List<WaitPakin> list, Long userId) {
- if (Cools.isEmpty(list)) {
- throw new CoolException("鍏ュ簱閫氱煡妗d笉鑳戒负绌�");
- }
- LocTypeDto locTypeDto = new LocTypeDto();
- return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, null);
+ return null;
}
@Override
@@ -965,130 +1103,6 @@
throw new CoolException("鍔熻兘鍋滅敤");
}
return "";
- }
-
- @Override
- @Transactional
- public void shuttleTransfer(List<String> locNos) {
- if (Cools.isEmpty(locNos)) {
- return;
- }
- if (true && !Cools.isEmpty(locNos)) {
- throw new CoolException("鏆備笉鏀寔绉诲簱浠诲姟"); // todo:luxiaotao 绉诲簱寮�鍏�
- }
- LocMast one = locMastService.selectById(locNos.get(0));
- List<Integer> rows = Utils.getGroupLoc(Integer.parseInt(locNos.get(0).substring(0, 2)));
- List<LocMast> locMasts = locMastService.queryFreeLocMast(rows, rows.size(), one.getLocType1());
- if (Cools.isEmpty(locMasts)) {
- throw new CoolException("搴撲綅绉昏浆澶辫触锛屽凡鏃犵┖搴撲綅");
- }
- // 鍏ュ簱鎺掑簭 娣卞簱浣� ==> 娴呭簱浣�
- switch (locMasts.get(0).getRow1()) {
- case 4:
- case 5:
- case 6:
- case 7:
- case 12:
- case 13:
- case 14:
- case 19:
- case 20:
- case 21:
- Collections.reverse(locMasts);
- break;
- default:
- break;
- }
- if (locNos.size() > locMasts.size()) {
- throw new CoolException("鏈嶅姟鍣ㄩ敊璇�");
- }
- Date now = new Date();
- // 鐢熸垚绉诲簱宸ヤ綔妗�
- Iterator<LocMast> iterator = locMasts.iterator();
- for (String sourceLocNo : locNos) {
-
- while (iterator.hasNext()) {
- LocMast sourceLoc = locMastService.selectById(sourceLocNo);
- List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
- if (Cools.isEmpty(sourceLoc)){
- throw new CoolException("鏈壘鍒板簱浣�");
- }
- LocMast loc = iterator.next();
- if (Cools.isEmpty(loc)){
- throw new CoolException("鏈壘鍒板簱浣�");
- }
- if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
-// throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�"); todo:luxiaotao
- }
- // 鑾峰彇宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
- // 淇濆瓨宸ヤ綔妗�
- WrkMast wrkMast = new WrkMast();
- wrkMast.setWrkNo(workNo);
- wrkMast.setIoTime(now);
- wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
- wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
- wrkMast.setIoPri(15D);
- wrkMast.setOutMost(locMastService.isOutMost(loc.getLocNo(), false)?1:0);;
- wrkMast.setCrnNo(sourceLoc.getCrnNo());
- wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
- wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
- wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒
- wrkMast.setPicking("N"); // 鎷f枡
- wrkMast.setExitMk("N"); // 閫�鍑�
- wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
- wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
- wrkMast.setLinkMis("N");
- wrkMast.setAppeUser(9527L);
- wrkMast.setAppeTime(now);
- wrkMast.setModiUser(9527L);
- wrkMast.setModiTime(now);
- boolean res = wrkMastService.insert(wrkMast);
- if (!res) {
- throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
- }
- // 宸ヤ綔妗f槑缁嗕繚瀛�
- for (LocDetl locDetl : locDetls) {
- WrkDetl wrkDetl = new WrkDetl();
- wrkDetl.sync(locDetl);
- wrkDetl.setWrkNo(workNo);
- wrkDetl.setIoTime(now);
- wrkDetl.setAnfme(locDetl.getAnfme());
- wrkDetl.setAppeTime(now);
- wrkDetl.setAppeUser(9527L);
- wrkDetl.setModiTime(now);
- wrkDetl.setModiUser(9527L);
- if (!wrkDetlService.insert(wrkDetl)) {
- throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
- }
- }
- // 淇敼婧愬簱浣嶇姸鎬�
- if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) {
- sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
- sourceLoc.setModiUser(9527L);
- sourceLoc.setModiTime(now);
- if (!locMastService.updateById(sourceLoc)){
- throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
- }
- } else {
- throw new CoolException(sourceLoc.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
- }
- // 淇敼鐩爣搴撲綅鐘舵��
- if (loc.getLocSts().equals("O")) {
- loc.setLocSts("S"); // S.鍏ュ簱棰勭害
- loc.setModiTime(now);
- loc.setModiUser(9527L);
- if (!locMastService.updateById(loc)) {
- throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
- }
- } else {
- throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$());
- }
-
- iterator.remove();
- break;
- }
- }
}
}
--
Gitblit v1.9.1