From 8aef28e39575b910aa08c0c102c868d60fb306ea Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期六, 11 七月 2020 16:10:42 +0800 Subject: [PATCH] Merge branch 'dev' of https://gitee.com/luxiaotao1123/zy-asrs --- src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 202 +++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 174 insertions(+), 28 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 9185303..03d7555 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -29,6 +29,8 @@ // 宸ヤ綔鍙风敓鎴愯鍒欓粯璁ょ被鍨� private static final int DEFAULT_WORK_NO_TYPE = 0; + // 搴撲綅鎺掑彿鍒嗛厤榛樿绫诲埆 + private static final int DEFAULT_ROW_NO_TYPE = 1; @Autowired private WrkMastService wrkMastService; @@ -46,6 +48,12 @@ private LocDetlService locDetlService; @Autowired private MatCodeService matCodeService; + @Autowired + private AdjDetlService adjDetlService; + @Autowired + private WrkMastLogService wrkMastLogService; + @Autowired + private WrkDetlLogService wrkDetlLogService; @Override @Transactional @@ -59,7 +67,7 @@ // 鐢熸垚宸ヤ綔鍙� int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); // 妫�绱㈠簱浣� - StartupDto dto = commonService.getLocNo(1, 1, param.getDevpNo()); + StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo()); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); @@ -71,6 +79,7 @@ wrkMast.setSourceStaNo(dto.getSourceStaNo()); wrkMast.setStaNo(dto.getStaNo()); wrkMast.setLocNo(dto.getLocNo()); + wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 wrkMast.setPicking("N"); // 鎷f枡 wrkMast.setExitMk("N"); // 閫�鍑� @@ -91,7 +100,7 @@ param.getList().forEach(elem -> { matDtos.add(new MatCodeCountDto(elem.getMatNo(), elem.getCount())); }); - wrkDetlService.createWorkDetail(workNo, matDtos, userId); + wrkDetlService.createWorkDetail(workNo, matDtos, param.getBarcode(), userId); // 鏇存柊婧愮珯鐐逛俊鎭� sourceStaNo.setWrkNo(workNo); sourceStaNo.setModiUser(userId); @@ -121,18 +130,18 @@ BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); // 鑾峰彇搴撲綅鏄庣粏 List<LocDetlDto> locDetlDtos = new ArrayList<>(); - for (StockOutParam.LocDetl locDetl : param.getLocDetls()) { - if (!Cools.isEmpty(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getCount())) { + for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { + if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { LocDetl sqlParam = new LocDetl(); - sqlParam.setLocNo(locDetl.getLocNo()); - sqlParam.setMatnr(locDetl.getMatnr()); + sqlParam.setLocNo(paramLocDetl.getLocNo()); + sqlParam.setMatnr(paramLocDetl.getMatnr()); LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam)); - if (null != one) locDetlDtos.add(new LocDetlDto(one, locDetl.getCount())); + if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); } } if (!locDetlDtos.isEmpty()) { - // 鍚姩鍑哄簱寮�濮� - stockOut(staNo, locDetlDtos, userId); + // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱 + stockOut(staNo, locDetlDtos, null, userId); } else { throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�"); } @@ -140,9 +149,7 @@ @Override @Transactional - public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Long userId) { - // 鐢熸垚宸ヤ綔鍙� - int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); + public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId) { // 鍚堝苟鍚岀被椤� Set<String> locNos = new HashSet<>(); locDetlDtos.forEach(dto -> locNos.add(dto.getLocDetl().getLocNo())); @@ -161,23 +168,29 @@ } // 鐢熸垚宸ヤ綔妗� for (OutLocDto dto : dtos) { + // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱 + if (ioType == null) { + ioType = dto.isAll() ? 101 : 103; + } // 鑾峰彇搴撲綅 LocMast locMast = locMastService.selectById(dto.getLocNo()); // 鑾峰彇璺緞 Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() - .eq("type_no", 101) + .eq("type_no", ioType) .eq("stn_no", staNo.getDevNo()) .eq("crn_no", locMast.getCrnNo()); StaDesc staDesc = staDescService.selectOne(wrapper); if (Cools.isEmpty(staDesc)) { throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�"); } + // 鐢熸垚宸ヤ綔鍙� + int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID - wrkMast.setIoType(101); // 鍏ュ嚭搴撶姸鎬侊細101.鍑哄簱 + wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬� wrkMast.setIoPri(13D); // 浼樺厛绾э細13 wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 @@ -197,12 +210,14 @@ } // 鐢熸垚宸ヤ綔妗f槑缁� for (LocDetlDto detlDto : dto.getLocDetlDtos()) { - if (detlDto.getCount() <= 0.0D) {continue;} + // 鍑哄簱鏃讹紝鏁伴噺涓�0鐨勭洿鎺ュ拷鐣� + if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;} WrkDetl wrkDetl = new WrkDetl(); wrkDetl.setWrkNo(workNo); wrkDetl.setIoTime(new Date()); wrkDetl.setMatnr(detlDto.getLocDetl().getMatnr()); - wrkDetl.setAnfme(detlDto.getCount()); // 鏁伴噺 + Double anfme = ioType==101?detlDto.getCount():detlDto.getLocDetl().getAnfme(); + wrkDetl.setAnfme(anfme); // 鏁伴噺 wrkDetl.setZmatid(detlDto.getLocDetl().getZmatid()); wrkDetl.setTbpos(detlDto.getLocDetl().getTbpos()); wrkDetl.setTbnum(detlDto.getLocDetl().getTbnum()); @@ -218,10 +233,10 @@ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); } } - // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害 + // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓� locMast = locMastService.selectById(dto.getLocNo()); if (locMast.getLocType().equals("F")) { - locMast.setLocType("R"); + locMast.setLocType(ioType==101?"R":"P"); locMast.setModiUser(userId); locMast.setModiTime(new Date()); if (!locMastService.updateById(locMast)) { @@ -241,7 +256,7 @@ // 鐢熸垚宸ヤ綔鍙� int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); // 妫�绱㈠簱浣� - StartupDto dto = commonService.getLocNo(1, 10, devpNo); + StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); @@ -353,6 +368,30 @@ @Override @Transactional + public void locCheckOut(StockOutParam param, Long userId) { + // 鐩爣绔欑偣鐘舵�佹娴� + BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); + // 鑾峰彇搴撲綅鏄庣粏 + List<LocDetlDto> locDetlDtos = new ArrayList<>(); + for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { + if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr())) { + LocDetl sqlParam = new LocDetl(); + sqlParam.setLocNo(paramLocDetl.getLocNo()); + sqlParam.setMatnr(paramLocDetl.getMatnr()); + LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam)); + if (null != one) locDetlDtos.add(new LocDetlDto(one, one.getAnfme())); + } + } + if (!locDetlDtos.isEmpty()) { + // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱 + stockOut(staNo, locDetlDtos, 107, userId); + } else { + throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�"); + } + } + + @Override + @Transactional public void locMove(String sourceLocNo, String locNo, Long userId) { LocMast sourceLoc = locMastService.selectById(sourceLocNo); if (Cools.isEmpty(sourceLoc)){ @@ -372,7 +411,7 @@ wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID - wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 + wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 wrkMast.setIoPri(10D); wrkMast.setCrnNo(sourceLoc.getCrnNo()); wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣� @@ -422,7 +461,7 @@ throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); } } else { - throw new CoolException("棰勭害婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocType$()); + throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocType$()); } // 淇敼鐩爣搴撲綅鐘舵�� if (loc.getLocType().equals("O")) { @@ -469,13 +508,19 @@ throw new CoolException("搴撲綅涓嶅瓨鍦�"); } for (LocDetlAdjustParam.LocDetlAdjust adjust : param.getList()) { + if (Cools.isEmpty(adjust.getMatnr())) { + throw new CoolException(BaseRes.PARAM); + } LocDetl sqlParam = new LocDetl(); sqlParam.setLocNo(locMast.getLocNo()); - sqlParam.setMatnr(adjust.getMatNo()); + sqlParam.setMatnr(adjust.getMatnr()); LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam)); // 淇濆瓨鏂板簱瀛樻槑缁� if (Cools.isEmpty(one)) { - MatCode matCode = matCodeService.selectById(adjust.getMatNo()); + if (adjust.getCount() == 0){ + continue; + } + MatCode matCode = matCodeService.selectById(adjust.getMatnr()); LocDetl locDetl = new LocDetl(); locDetl.setLocNo(locMast.getLocNo()); locDetl.setMatnr(matCode.getMatNo()); @@ -483,6 +528,12 @@ locDetl.setAnfme(adjust.getCount()); // 鏁伴噺 locDetl.setAltme(matCode.getStr1()); // 鍗曚綅 // todo:luxiaoao + locDetl.setLgnum("寰呭畾"); // 浠撳簱鍙� + locDetl.setTbnum(0); // 杞偍璇锋眰缂栧彿 + locDetl.setTbpos(0); // 琛岄」鐩� + locDetl.setZmatid("寰呭畾"); // 鐗╂枡鏍囩ID + locDetl.setZpallet("寰呭畾"); // 鎵樼洏鏉$爜 + locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅 locDetl.setModiTime(new Date()); locDetl.setAppeUser(userId); @@ -490,6 +541,13 @@ if (!locDetlService.insert(locDetl)) { throw new CoolException("淇濆瓨搴撳瓨鏄庣粏澶辫触"); } + // 淇濆瓨璋冩暣璁板綍 + AdjDetl adjDetl = new AdjDetl(); + adjDetl.setLocNo(locDetl.getLocNo()); + adjDetl.setMatNo(locDetl.getMatnr()); + adjDetl.setOriQty(0.0D); + adjDetl.setAdjQty(adjust.getCount()); + adjDetlService.save(adjDetl, userId); // 淇敼鍘熷簱瀛樻槑缁� } else { // 濡傛灉鏁伴噺淇敼锛屽垯鏇存柊搴撳瓨鏄庣粏 @@ -500,16 +558,25 @@ throw new CoolException("娓呴櫎搴撳瓨鏄庣粏澶辫触"); } } else { - one.setAnfme(adjust.getCount()); - one.setModiTime(new Date()); - one.setModiUser(userId); - if (!locDetlService.updateById(one)) { + LocDetl sqlParam1 = new LocDetl(); + sqlParam1.setAnfme(adjust.getCount()); + sqlParam1.setModiTime(new Date()); + sqlParam1.setModiUser(userId); + if (!locDetlService.update(sqlParam1, new EntityWrapper<LocDetl>() + .eq("loc_no", locMast.getLocNo()) + .eq("matnr", adjust.getMatnr()))) { throw new CoolException("淇敼搴撳瓨鏄庣粏澶辫触"); } } + // 淇濆瓨璋冩暣璁板綍 + AdjDetl adjDetl = new AdjDetl(); + adjDetl.setLocNo(locMast.getLocNo()); + adjDetl.setMatNo(adjust.getMatnr()); + adjDetl.setOriQty(one.getAnfme()); + adjDetl.setAdjQty(adjust.getCount()); + adjDetlService.save(adjDetl, userId); } } - } } @@ -585,4 +652,83 @@ } } + @Override + @Transactional + public void pickWrkMast(String workNo, Long userId) { + WrkMast wrkMast = wrkMastService.selectById(workNo); + if (Cools.isEmpty(wrkMast)){ + throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); + } + List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); + String locNo = wrkMast.getSourceLocNo(); + // 鎷f枡浣滀笟鍒ゆ柇 + if (wrkMast.getIoType() != 103) { + throw new CoolException("鍏ュ嚭搴撶被鍨嬩笉鏄�103.鎷f枡鍑哄簱"); + } + // 宸ヤ綔鐘舵�佸垽鏂� + if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) { + throw new CoolException("褰撳墠宸ヤ綔鐘舵�佷笉鑳芥嫞鏂欏叆搴�"); + } + // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 +// if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { +// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); +// } + // 鍒犻櫎宸ヤ綔鏄庣粏妗� +// if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) { +// throw new CoolException("鍒犻櫎宸ヤ綔鏄庣粏妗f。鍘嗗彶妗eけ璐�"); +// } + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (!wrkMastLogService.save(wrkMast.getWrkNo())) { + throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); + } + // 鑾峰彇鐩爣绔� + Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", 53) // type_no: 53.鎷f枡鍐嶅叆搴� + .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯 + .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿 + StaDesc staDesc = staDescService.selectOne(wrapper); + if (Cools.isEmpty(staDesc)) { + throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); + } + // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�) + Integer staNo = staDesc.getCrnStn(); + // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� + wrkMast.setIoType(53); // 鍏ュ嚭搴撶被鍨�: 53.鎷f枡鍐嶅叆搴� + wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 + wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯 + wrkMast.setStaNo(staNo); // 鐩爣绔� + wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� + wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌� + wrkMast.setModiTime(new Date()); + wrkMast.setModiUser(userId); + if (!wrkMastService.updateById(wrkMast)) { + throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); + } +// // 鏇存柊/鍒犻櫎鎷f枡搴撳瓨鏄庣粏 +// for (WrkDetl wrkDetl : wrkDetls) { +// LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr())); +// // 搴撳瓨鏁伴噺璁$畻 +// locDetl.setAnfme(locDetl.getAnfme() - wrkDetl.getAnfme()); +// if (locDetl.getAnfme() > 0) { +// locDetl.setModiTime(new Date()); +// locDetl.setModiUser(userId); +// if (!locDetlService.updateById(locDetl)) { +// throw new CoolException("鏇存柊搴撳瓨鏄庣粏澶辫触"); +// } +// } else { +// if (!locDetlService.delete(new EntityWrapper<>(locDetl))) { +// throw new CoolException("鍒犻櫎搴撳瓨鏄庣粏澶辫触"); +// } +// } +// } + // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� + LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); + locMast.setLocType("Q"); + locMast.setModiTime(new Date()); + locMast.setModiUser(userId); + if (!locMastService.updateById(locMast)) { + throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�"); + } + } + } -- Gitblit v1.9.1