From 403f92738e1e17268bc84b1d5daeb75d3ba7af5b Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 03 十一月 2025 12:54:22 +0800
Subject: [PATCH] 出库不用选站点
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 209 ++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 179 insertions(+), 30 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 df7b234..20f59ab 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -91,7 +91,11 @@
// 妫�绱㈠簱浣�
LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
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);
+// List<String> batchs = param.getList().stream().map(FullStoreParam.MatCodeStore::getBatch).distinct().collect(Collectors.toList());
+ StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), matnrs.get(0), null, null,locTypeDto);
+ if (Cools.isEmpty(dto)){
+ throw new CoolException("鏌ヨ搴撲綅澶辫触锛侊紒==銆媠tartupFullPutStore ==銆� commonService.getLocNo");
+ }
// 鐢熸垚宸ヤ綔鍙�
int workNo = dto.getWorkNo();
// 鐢熸垚宸ヤ綔妗�
@@ -158,7 +162,7 @@
@Transactional
public void startupFullTakeStore(StockOutParam param, Long userId) {
// 鐩爣绔欑偣鐘舵�佹娴�
- BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+// BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
// 鑾峰彇搴撲綅鏄庣粏
List<LocDetlDto> locDetlDtos = new ArrayList<>();
for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
@@ -168,8 +172,13 @@
}
}
if (!locDetlDtos.isEmpty()) {
- // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
- stockOut(staNo, locDetlDtos, null, userId);
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
+ if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") ){
+ // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
+ stockOut(null, locDetlDtos, null, userId);
+ }else {
+ throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+ }
} else {
throw new CoolException("搴撳瓨涓嶅瓨鍦�");
}
@@ -208,8 +217,12 @@
assert ioType != null;
// 鑾峰彇搴撲綅
LocMast locMast = locMastService.selectById(dto.getLocNo());
+
+ // 1鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负101绔欙紝2鍙�107
+ Integer outSta = locMast.getCrnNo() == 1 ? 101 : 107;
+
// 鑾峰彇璺緞
- StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), staNo.getDevNo());
+ StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
// 鐢熸垚宸ヤ綔妗�
@@ -333,7 +346,7 @@
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
// 淇敼璁㈠崟鏄庣粏
- if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+ if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
}
orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
@@ -359,7 +372,7 @@
BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
// 妫�绱㈠簱浣�
LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
- StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto, 0);
+ StartupDto dto = commonService.getLocNo( 10, devpNo, null,null,null, locTypeDto);
int workNo = dto.getWorkNo();
Date now = new Date();
// 鐢熸垚宸ヤ綔妗�
@@ -413,9 +426,9 @@
@Override
@Transactional
public void emptyPlateOut(EmptyPlateOutParam param, Long userId) {
- if (Cools.isEmpty(param.getOutSite())) {
- throw new CoolException("绔欑偣涓嶅瓨鍦�");
- }
+// if (Cools.isEmpty(param.getOutSite())) {
+// throw new CoolException("绔欑偣涓嶅瓨鍦�");
+// }
for (String locNo : param.getLocNos()) {
// 鑾峰彇宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
@@ -424,12 +437,20 @@
if (Cools.isEmpty(locMast)) {
throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
}
+ if (!locMast.getLocSts().equals("D")){
+ throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+ }
+ // 1鍙峰爢鍨涙満绌烘澘鍑哄簱绔欐寚瀹氫负101绔欙紝2鍙�107
+ param.setOutSite(locMast.getCrnNo() == 1 ? 101 : 107);
// 鑾峰彇婧愮珯
Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
.eq("type_no", 110)
.eq("stn_no", param.getOutSite())
.eq("crn_no", locMast.getCrnNo());
StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (staDesc == null) {
+ throw new CoolException("璺緞涓嶅瓨鍦�");
+ }
Integer sourceStaNo = staDesc.getCrnStn();
if (Cools.isEmpty(sourceStaNo)) {
throw new CoolException("妫�绱㈡簮绔欏け璐�");
@@ -473,6 +494,70 @@
@Override
@Transactional
+ public WrkMast emptyPlateOut(EmptyPlateOutParam param) {
+ WrkMast wrkMast = new WrkMast();
+ if (Cools.isEmpty(param.getOutSite())) {
+ throw new CoolException("绔欑偣涓嶅瓨鍦�");
+ }
+ for (String locNo : param.getLocNos()) {
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(0);
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(locNo);
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
+ }
+ // 鑾峰彇婧愮珯
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", 110)
+ .eq("stn_no", param.getOutSite())
+ .eq("crn_no", locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ Integer sourceStaNo = staDesc.getCrnStn();
+ if (Cools.isEmpty(sourceStaNo)) {
+ throw new CoolException("妫�绱㈡簮绔欏け璐�");
+ }
+ Date now = new Date();
+ // 淇濆瓨宸ヤ綔妗�
+
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
+ wrkMast.setIoPri(10D);
+ wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
+ wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
+ wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(1L);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(1L);
+ wrkMast.setModiTime(now);
+ wrkMast.setMemo("鐢熸垚鑷姩绌烘澘鍑哄簱");
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
+ if (locMast.getLocSts().equals("D")){
+ locMast.setLocSts("R");
+ locMast.setModiUser(1L);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+ }
+ }
+ }
+ return wrkMast;
+ }
+
+ @Override
+ @Transactional
public void locCheckOut(StockOutParam param, Long userId) {
// 鐩爣绔欑偣鐘舵�佹娴�
BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
@@ -485,8 +570,13 @@
}
}
if (!locDetlDtos.isEmpty()) {
- // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
- stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId);
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
+ if (locMast.getLocSts().equals("F")){
+ // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
+ stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId);
+ }else {
+ throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+ }
} else {
throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
}
@@ -503,6 +593,9 @@
LocMast loc = locMastService.selectById(locNo);
if (Cools.isEmpty(loc)){
throw new CoolException("鏈壘鍒板簱浣�");
+ }
+ if (!loc.getLocSts().equals("O") || (!sourceLoc.getLocSts().equals("F") && !sourceLoc.getLocSts().equals("D"))){
+ throw new CoolException("搴撲綅鐘舵�佸凡鏀瑰彉");
}
if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�");
@@ -726,6 +819,7 @@
@Override
@Transactional
public void cancelWrkMast(String workNo, Long userId) {
+ Date now = new Date();
WrkMast wrkMast = wrkMastService.selectById(workNo);
if (Cools.isEmpty(wrkMast)){
throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
@@ -745,7 +839,7 @@
throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo());
}
locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F");
- locMast.setModiTime(new Date());
+ locMast.setModiTime(now);
locMast.setModiUser(userId);
locMastService.updateById(locMast);
}
@@ -767,7 +861,7 @@
throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo());
}
locMast.setLocSts("O");
- locMast.setModiTime(new Date());
+ locMast.setModiTime(now);
locMast.setModiUser(userId);
locMastService.updateById(locMast);
}
@@ -777,23 +871,51 @@
//鍙栨秷鍏ュ簱宸ヤ綔妗f椂锛屾煡璇㈢粍鎵樿〃锛屽鏋滄湁灏嗙姸鎬佹敼涓哄緟澶勭悊
if(wrkMast.getIoType() == 1) {
- WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
- if (!Cools.isEmpty(waitPakin)) {
- waitPakin.setIoStatus("N");
- waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
+ List<WaitPakin> waitPakins=waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
+ for (WaitPakin waitPakin:waitPakins){
+ if (!Cools.isEmpty(waitPakin)) {
+ waitPakin.setIoStatus("N");
+ waitPakin.setLocNo("");
+ waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>()
+// .eq("order_no", waitPakin.getOrderNo())
+ .eq("zpallet",waitPakin.getZpallet())
+ .eq("matnr", waitPakin.getMatnr())
+ .eq("batch", waitPakin.getBatch()));
+ }
}
}
+ //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺
if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
-// OrderDetl orderDetl = orderDetlService.selectItem()
List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
for (WrkDetl wrkDetl : wrkDetls) {
if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
}
+
+ //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼
+ boolean flag = true;
+ List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo()));
+ for(OrderDetl orderDetl : orderDetls){
+ if(orderDetl.getWorkQty() > 0){
+ flag = false;
+ }
+ }
+ if(flag){
+ Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()));
+ if(!Cools.isEmpty(order) && order.getSettle()==2){
+ order.setSettle(1L);
+ order.setUpdateBy(userId);
+ order.setUpdateTime(now);
+ }
+ if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){
+ throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐�");
+ }
+ }
}
}
+
}
// // 璁㈠崟鍏宠仈
@@ -811,7 +933,7 @@
// 鍙栨秷鎿嶄綔浜哄憳璁板綍
wrkMast.setManuType("鎵嬪姩鍙栨秷");
wrkMast.setModiUser(userId);
- wrkMast.setModiTime(new Date());
+ wrkMast.setModiTime(now);
if (!wrkMastService.updateById(wrkMast)) {
throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�");
}
@@ -837,7 +959,7 @@
throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
}
locMast.setLocSts(locSts);
- locMast.setModiTime(new Date());
+ locMast.setModiTime(now);
locMast.setModiUser(userId);
boolean locMastRes = locMastService.updateById(locMast);
if (!wrkMastRes || !locMastRes) {
@@ -902,15 +1024,15 @@
}
}
- @Override
- public StartupDto createWaitPainWrkMastStart(List<WaitPakin> list, Long userId) {
- if (Cools.isEmpty(list)) {
- throw new CoolException("鍏ュ簱閫氱煡妗d笉鑳戒负绌�");
- }
- LocTypeDto locTypeDto = new LocTypeDto();
- locTypeDto.setLocType1((short) 1);
- return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list);
- }
+// @Override
+// public StartupDto createWaitPainWrkMastStart(List<WaitPakin> list, Long userId) {
+// if (Cools.isEmpty(list)) {
+// throw new CoolException("鍏ュ簱閫氱煡妗d笉鑳戒负绌�");
+// }
+// LocTypeDto locTypeDto = new LocTypeDto();
+// locTypeDto.setLocType1((short) 1);
+// return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list);
+// }
@Override
@Transactional
@@ -1007,4 +1129,31 @@
return targetLoc.getLocNo();
}
+ @Override
+ @Transactional
+ public void turnMatLocDetl(EmptyPlateOutParam param, Long userId) {
+ Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("id", param.getMatId()));
+ if (Cools.isEmpty(mat)){
+ throw new CoolException("鐩爣搴撲綅鍟嗗搧缂栫爜鏈夎锛�");
+ }
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", param.getLocDetls().get(0).getMatnr()));
+ if (Cools.isEmpty(locDetls) || locDetls.size()<1){
+ throw new CoolException("寰呬慨鏀瑰晢鍝佹棤搴撳瓨锛屾棤闇�淇敼锛� 鍝佸彿锛�"+param.getLocDetls().get(0).getMatnr());
+ }
+ try {
+ locDetlService.updateMatTurn(param.getLocDetls().get(0).getMatnr(),mat.getMatnr());
+ }catch (Exception e){
+ throw new CoolException("瀵规暟鎹簱淇敼鍑洪敊锛�");
+ }
+ for (LocDetl locDetl:locDetls){
+ // 淇濆瓨璋冩暣璁板綍
+ AdjDetl adjDetl = new AdjDetl();
+ adjDetl.setLocNo(locDetl.getLocNo());
+ adjDetl.setMatnr(mat.getMatnr());
+ adjDetl.setMatnrOld(param.getLocDetls().get(0).getMatnr());
+ adjDetl.setAdjQty(locDetl.getAnfme());
+ adjDetlService.save(adjDetl, userId);
+ }
+ }
+
}
--
Gitblit v1.9.1