From 22fc6125f32ecb4d05c7a2e9397a4eabd6a5d7ad Mon Sep 17 00:00:00 2001 From: LSH Date: 星期三, 20 九月 2023 14:41:33 +0800 Subject: [PATCH] #入库逻辑2.0 简单方便易理解 --- src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 155 insertions(+), 15 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 001cd58..cc39e1c 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -13,6 +13,7 @@ import com.zy.asrs.entity.param.LocDetlAdjustParam; import com.zy.asrs.entity.param.StockOutParam; import com.zy.asrs.service.*; +import com.zy.asrs.utils.OutboundAllocationUtil; import com.zy.asrs.utils.Utils; import com.zy.common.model.*; import com.zy.common.model.enums.IoWorkType; @@ -45,6 +46,8 @@ private MatService matService; @Autowired private WrkMastService wrkMastService; + @Autowired + private DocTypeService docTypeService; @Autowired private WrkDetlService wrkDetlService; @Autowired @@ -90,8 +93,8 @@ BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true); // 妫�绱㈠簱浣� 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> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList()); + StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), param.getList().get(0).getMatnr(),null,null, locTypeDto, 1); // 鐢熸垚宸ヤ綔鍙� int workNo = dto.getWorkNo(); // 鐢熸垚宸ヤ綔妗� @@ -164,16 +167,114 @@ for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); - if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); + if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount(), param.getOrderNo())); } } 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(staNo, locDetlDtos, null, userId); + }else { + throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$()); + } } else { throw new CoolException("搴撳瓨涓嶅瓨鍦�"); } } + @Override + @Transactional + public void startupFullTakeStoreOrder(StockOutParam param, Long userId) { + if (Cools.isEmpty(param) || Cools.isEmpty(param.getOrderNo()) || Cools.isEmpty(param.getLocDetls())){ + throw new CoolException("鍙傛暟涓虹┖"); + } + DocType docType = docTypeService.selectOrAdd("鎵嬪姩鍑哄簱鍗�", Boolean.FALSE); + Order order = orderService.selectByNo(param.getOrderNo()); + if (Cools.isEmpty(order)){ + Date now = new Date(); + order = new Order( + String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖] + param.getOrderNo(), // 璁㈠崟缂栧彿 + DateUtils.convert(now), // 鍗曟嵁鏃ユ湡 + docType.getDocId(), // 鍗曟嵁绫诲瀷 + null, // 椤圭洰缂栧彿 + null, // + null, // 璋冩嫧椤圭洰缂栧彿 + null, // 鍒濆绁ㄦ嵁鍙� + null, // 绁ㄦ嵁鍙� + null, // 瀹㈡埛缂栧彿 + null, // 瀹㈡埛 + null, // 鑱旂郴鏂瑰紡 + null, // 鎿嶄綔浜哄憳 + null, // 鍚堣閲戦 + null, // 浼樻儬鐜� + null, // 浼樻儬閲戦 + null, // 閿�鍞垨閲囪喘璐圭敤鍚堣 + null, // 瀹炰粯閲戦 + null, // 浠樻绫诲瀷 + null, // 涓氬姟鍛� + null, // 缁撶畻澶╂暟 + null, // 閭垂鏀粯绫诲瀷 + null, // 閭垂 + null, // 浠樻鏃堕棿 + null, // 鍙戣揣鏃堕棿 + null, // 鐗╂祦鍚嶇О + null, // 鐗╂祦鍗曞彿 + 2L, // 璁㈠崟鐘舵�� + 1, // 鐘舵�� + userId, // 娣诲姞浜哄憳 + now, // 娣诲姞鏃堕棿 + userId, // 淇敼浜哄憳 + now, // 淇敼鏃堕棿 + null // 澶囨敞 + ); + if (!orderService.insert(order)) { + throw new CoolException("淇濆瓨璁㈠崟涓绘。澶辫触"); + } + // 鍗曟嵁鏄庣粏妗� + List<DetlDto> list = new ArrayList<>(); + List<StockOutParam.LocDetl> locDetls = param.getLocDetls(); + int i=0; + for (StockOutParam.LocDetl locDetl : locDetls) { + i++; + Mat mat = matService.selectByMatnr(locDetl.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(locDetl.getMatnr() + "鐗╂枡缂栫爜妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧"); + } + OrderDetl orderDetl = new OrderDetl(); + orderDetl.sync(mat); + orderDetl.setSuppCode(String.valueOf(i)); // 琛屽彿 + orderDetl.setManu(locDetl.getLocNo()); //搴撲綅鍙� + orderDetl.setBatch(locDetl.getBatch()); //鏈ㄧ缂栫爜 + orderDetl.setAnfme(locDetl.getAnfme());//鍑哄簱鏁伴噺 + orderDetl.setModel(locDetl.getModel());//鎵规 + orderDetl.setSpecs(locDetl.getSpecs());//瑙勬牸 + orderDetl.setBrand(locDetl.getBrand());//鏈ㄧ绫诲瀷 + orderDetl.setWorkQty(locDetl.getAnfme()); + orderDetl.setOrderId(order.getId()); + orderDetl.setOrderNo(order.getOrderNo()); + orderDetl.setCreateBy(userId); + orderDetl.setCreateTime(now); + orderDetl.setUpdateBy(userId); + orderDetl.setUpdateTime(now); + orderDetl.setStatus(1); + orderDetl.setQty(0.0D); + if (!orderDetlService.insert(orderDetl)) { + throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + } + + List<StockOutParam> stockOutParams = OutboundAllocationUtil.OutboundClassification(param); + for (StockOutParam stockOutParam : stockOutParams){ + startupFullTakeStore(stockOutParam,userId); + } + + } else { + throw new CoolException("璁㈠崟鍙烽噸澶嶏紝璁㈠崟"+param.getOrderNo()+"宸插瓨鍦紒锛侊紒"); + } + + } + @Override @Transactional @@ -210,10 +311,10 @@ LocMast locMast = locMastService.selectById(dto.getLocNo()); Integer outSta = staNo.getDevNo(); - //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202 - if(locMast.getCrnNo()==2){ - outSta = ioType == 101 ? 204 : 202; - } +// //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202 +// if(locMast.getCrnNo()==2){ +// outSta = ioType == 101 ? 204 : 202; +// } // 鑾峰彇璺緞 StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta); @@ -248,7 +349,7 @@ if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;} WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(detlDto.getLocDetl()); - wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙� + wrkDetl.setOrderNo(detlDto.getOrderNo()); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙� wrkDetl.setWrkNo(workNo); wrkDetl.setIoTime(now); Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount(); @@ -366,7 +467,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(DEFAULT_ROW_NO_TYPE, 10, devpNo, null,null,null, locTypeDto, 1); int workNo = dto.getWorkNo(); Date now = new Date(); // 鐢熸垚宸ヤ綔妗� @@ -430,6 +531,9 @@ LocMast locMast = locMastService.selectById(locNo); if (Cools.isEmpty(locMast)) { throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�"); + } + if (!locMast.getLocSts().equals("D")){ + throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$()); } // 鑾峰彇婧愮珯 Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() @@ -552,12 +656,17 @@ for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); - if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); + if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount(),param.getOrderNo())); } } 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("搴撲綅鐗╂枡涓嶅瓨鍦�"); } @@ -574,6 +683,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("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�"); @@ -855,7 +967,8 @@ waitPakin.setIoStatus("N"); waitPakin.setLocNo(""); waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>() - .eq("order_no", waitPakin.getOrderNo()) +// .eq("order_no", waitPakin.getOrderNo()) + .eq("zpallet",waitPakin.getZpallet()) .eq("matnr", waitPakin.getMatnr()) .eq("batch", waitPakin.getBatch())); } @@ -1106,4 +1219,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