From 619b45d00468b35509f5138b2dfa5131e2963e34 Mon Sep 17 00:00:00 2001 From: whycq <10027870+whycq@user.noreply.gitee.com> Date: 星期一, 25 三月 2024 13:16:39 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 181 ++++++++++++++++++++++++++------------------- 1 files changed, 105 insertions(+), 76 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java index ac9a84a..b56e7e9 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java @@ -7,7 +7,6 @@ import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; -import com.zy.asrs.entity.param.EmptyPlateOutParam; import com.zy.asrs.entity.param.LocDetlAdjustParam; import com.zy.asrs.entity.param.StockOutParam; import com.zy.asrs.service.*; @@ -90,7 +89,7 @@ List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("supp_code", agvBasDevp.getBarcode())); //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅 - AgvLocMast agvLocMast = agvCommonService.getLocNo(agvWaitPakinList, agvBasDevp.getFloor()); + AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1()); //鐢熸垚宸ヤ綔妗� AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),agvBasDevp.getBarcode(),now,userId, isConveyor); //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱 @@ -138,17 +137,34 @@ AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,false); //鐢熸垚宸ヤ綔妗f槑缁� taskDto.getLocDtos().forEach(locDto -> { - //鏄庣粏妗f墍闇�鍙傛暟 - createWrkDetlReWrite(locDto.getMatnr(), - wrkMast.getWrkNo(), - locDto.getOrderNo(), - locDto.getBatch(), - locDto.getAnfme(), - locDto.getContainerCode(), - now, - userId, - locDto.getCsocode(), - locDto.getIsoseq()); + if (!BaseController.isJSON(locDto.getOrderNo())) { + //鏄庣粏妗f墍闇�鍙傛暟 + createWrkDetlReWrite(locDto.getMatnr(), + wrkMast.getWrkNo(), + locDto.getOrderNo(), + locDto.getBatch(), + locDto.getAnfme(), + locDto.getContainerCode(), + now, + userId, + locDto.getCsocode(), + locDto.getIsoseq()); + }else { + List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); + orderDtoList.forEach(orderDto -> { + //鏄庣粏妗f墍闇�鍙傛暟 + createWrkDetlReWrite(locDto.getMatnr(), + wrkMast.getWrkNo(), + orderDto.getOrderNo(), + locDto.getBatch(), + orderDto.getAnfme(), + locDto.getContainerCode(), + now, + userId, + locDto.getCsocode(), + locDto.getIsoseq()); + }); + } //淇敼璁㈠崟淇℃伅 modifyOrderDetl(locDto, userId); @@ -221,13 +237,6 @@ @Transactional public void locCheckOut(StockOutParam param, Long userId) { String station = param.getStation(); -// List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() -// .eq("station_code", station) -// .eq("loc_sts","O")); -// -// if(param.getLocDetls().size() > agvBasDevpList.size()){ -// throw new CoolException("褰撳墠绔欑偣鍙敤缂撳瓨璐ф灦鏁伴噺涓�" + agvBasDevpList.size() + ",灏戜簬闇�瑕佺洏鐐瑰嚭搴撳簱浣嶆暟閲忥紝璇烽噸鏂伴�夋嫨鐩樼偣搴撲綅"); -// } List<TaskDto> taskDtos = new ArrayList<>(); param.getLocDetls().forEach(locDetl -> { @@ -242,6 +251,13 @@ Date now = new Date(); taskDtos.forEach(taskDto -> { + + //鍒ゆ柇鏄惁鏈夐噸澶嶆枡鎯崇殑宸ヤ綔褰� + AgvWrkMast agvWrkMastList = agvWrkMastService.selectByContainerCode(taskDto.getLocDtos().get(0).getContainerCode()); + if(!Cools.isEmpty(agvWrkMastList)){ + return; + } + //鐢熸垚宸ヤ綔妗� AgvWrkMast wrkMast = createWrkMast(107, 21L,taskDto.getLocNo(),taskDto.getAgvStaNo(),taskDto.getLocDtos().get(0).getContainerCode(),now,userId,false); //鐢熸垚宸ヤ綔妗f槑缁� @@ -263,26 +279,6 @@ //locSts = ioType == 101 ? "S" : "Q"; updateAgvBasDevp(agvBasDevpService.selectById(wrkMast.getLocNo()),"S"); }); - - -// param.getLocDetls().forEach(locDetl -> { -// AgvLocMast agvLocMast = agvLocMastService.selectById(locDetl.getLocNo()); -// AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locDetl.getLocNo())); -// AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() -// .eq("station_code", station) -// .eq("loc_sts","O")); -// Date now = new Date(); -// -// //鐢熸垚宸ヤ綔鍏� -// AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getSuppCode(), now, userId,false); -// //鐢熸垚宸ヤ綔鏄庣粏妗� -// createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); -// //淇敼搴撲綅淇℃伅 -// updateAgvLocMast(agvLocMast,"P"); -// //淇敼绔欑偣淇℃伅 -// updateAgvBasDevp(agvBasDevp,"S"); -// -// }); } @@ -314,56 +310,79 @@ } /* - 绌烘澘鍏ュ簱 + 鍏ュ簱 */ @Transactional - public String emptyPlateIn(String sourceStaion, Long userId) { + public String emptyPlateIn(String station,String containerCode,int containerType, Long userId) { + Date now = new Date(); // 婧愮珯鐐圭姸鎬佹娴� - AgvBasDevp agvBasDevp = agvBasDevpService.selectById(sourceStaion); - if(!agvBasDevp.getLocSts().equals("O")){ + AgvBasDevp agvBasDevp = agvBasDevpService.selectById(station); + + //鍒濆瀹氫箟涓虹┖鏉垮叆搴撶被鍨� + int ioType = 10; + + if(!Cools.eq(agvBasDevp.getBarcode(),containerCode) || !agvBasDevp.getLocSts().equals("O")){ throw new CoolException("褰撳墠宸ヤ綔浣嶇姸鎬佷负" + agvBasDevp.getLocSts()+",鏃犳硶杩涜绌烘澘鍏ュ簱"); } - // 妫�绱㈠簱浣� - AgvLocMast locMast = agvCommonService.getLocNo(null, agvBasDevp.getFloor()); - // 鐢熸垚宸ヤ綔妗� 10.绌烘澘鍏ュ簱 - createWrkMast(10,201L,agvBasDevp.getDevNo(),locMast.getLocNo(),null,now,userId,false); + + //鏌ヨ宸ヤ綔妗� + AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(containerCode); + if(!Cools.isEmpty(agvWrkMast)){ + throw new CoolException("褰撳墠瀹瑰櫒宸叉湁鍏ュ簱浠诲姟锛屾棤娉曡繘琛屽叆搴�"); + } + + //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅 + AgvLocMast agvLocMast = agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1()); + + //鏌ヨ鍏ュ簱閫氱煡妗� + List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectByContainerCode(containerCode); + if(!Cools.isEmpty(agvWaitPakinList)){ + //鐢熸垚宸ヤ綔妗� + AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),containerCode,now,userId, false); + //鐢熸垚宸ヤ綔妗f槑缁� + agvWaitPakinList.forEach(wp -> { + createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime()); + }); + //淇敼鍏ュ簱閫氱煡妗g姸鎬� + agvWaitPakinService.updateIoStatus(containerCode,"Y"); + }else { + // 鐢熸垚宸ヤ綔妗� 10.绌烘澘鍏ュ簱 + createWrkMast(10,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),containerCode,now,userId,false); + } + //鏇存柊婧愮珯鐐圭姸鎬� updateAgvBasDevp(agvBasDevp,"R"); - //鏇存柊鐩爣搴撲綅鐘舵�� - updateAgvLocMast(locMast,"S"); - return locMast.getLocNo(); + //鏇存柊鐩爣搴撲綅鐘舵�佸拰淇℃伅 + updateAgvLocMast(agvLocMast,"S", (short) containerType); + return agvLocMast.getLocNo(); } /* 绌烘澘鍑哄簱 */ @Transactional - public void emptyPlateOut(EmptyPlateOutParam param, Long userId) { + public void emptyPlateOut(String station, int containerType, Long userId) { Date now = new Date(); - //鍒ゆ柇鎵�閫夊伐浣滅珯绌轰綑宸ヤ綔浣嶆暟閲忔槸鍚︽弧瓒冲嚭搴撴暟閲� - List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() - .eq("station_code", param.getStationCode()) - .eq("loc_sts","O")); - if(agvBasDevpList.size() < param.getLocNos().size()){ - throw new CoolException("褰撳墠宸ヤ綔绔欏彲鍑哄簱宸ヤ綔浣嶆暟閲忎负"+ agvBasDevpList.size() + "锛屽皬浜庤鍑哄簱鐨勫簱浣嶆暟閲忥紝璇烽噸鏂伴�夋嫨鍑哄簱搴撲綅"); + + // 绔欑偣妫�娴� + AgvBasDevp agvBasDevp = agvBasDevpService.selectById(station); + if(!agvBasDevp.getLocSts().equals("O")){ + throw new CoolException("褰撳墠宸ヤ綔浣嶇姸鎬佷负" + agvBasDevp.getLocSts()+",鏃犳硶杩涜绌烘澘鍑哄簱"); } - param.getLocNos().forEach(locNo -> { - AgvLocMast agvLocMast = agvLocMastService.selectById(locNo); - if(!agvLocMast.getLocSts().equals("D")){ - throw new CoolException(agvLocMast.getLocNo() + "搴撲綅鐘舵�佸凡缁忎笉涓篋.绌烘《/绌烘爤鏉匡紝璇烽噸鏂伴�夋嫨搴撲綅杩涜绌烘澘鍑哄簱"); - } - //妫�绱㈠伐浣滀綅 - AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() - .eq("station_code", param.getStationCode()) - .eq("loc_sts", "O")); - //鐢熸垚宸ヤ綔妗� - createWrkMast(110,21L,locNo,agvBasDevp.getDevNo(),null,now,userId,false); - //淇敼婧愬簱浣嶇姸鎬� - updateAgvLocMast(agvLocMast,"R"); - //淇敼鐩爣宸ヤ綔浣嶇姸鎬� - updateAgvBasDevp(agvBasDevp,"S"); - }); + + //瀵绘壘鐩稿簲绫诲瀷鐨勭┖鎵樼洏 + AgvLocMast agvLocMast = agvLocMastService.selectEmptyZpallet(containerType); + + //鐢熸垚宸ヤ綔妗� + createWrkMast(110,21L,agvLocMast.getLocNo(),agvBasDevp.getDevNo(),agvLocMast.getBarcode(),now,userId,false); + + //淇敼婧愬簱浣嶇姸鎬� + updateAgvLocMast(agvLocMast,"R"); + + //淇敼绔欑偣鐘舵�� + updateAgvBasDevp(agvBasDevp,"S"); + } @Transactional @@ -604,6 +623,15 @@ } /* + 鏇存柊鐩爣搴撲綅淇℃伅鍜屽簱浣嶆墭鐩樼被鍨� + */ + private void updateAgvLocMast(AgvLocMast locMast, String locSts, short type){ + locMast.setLocSts(locSts); + locMast.setLocType2(type); + agvLocMastService.updateById(locMast); + } + + /* 鏇存柊婧愮珯鐐逛俊鎭� */ private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts){ @@ -751,8 +779,9 @@ orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq()); } - if(locAnfme > orderDetl.getAnfme()){ - orderAnfme = orderDetl.getAnfme(); + orderAnfme = orderDetl.getAnfme() - orderDetl.getQty(); + + if(locAnfme > orderAnfme){ locAnfme -= orderAnfme; }else { orderAnfme = locAnfme; -- Gitblit v1.9.1