From b5768fb9a6bf4216aba11d7f784e8cefc8fdaf9b Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期三, 27 三月 2024 14:54:48 +0800 Subject: [PATCH] 定时任务完成 --- src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 157 ++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 109 insertions(+), 48 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 2f10937..feacc9d 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,9 +89,9 @@ 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); + AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),agvBasDevp.getBarcode(),now,userId, agvBasDevp.getLocType2()); //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱 wrkMast.setMk(isConveyor ? "Y" : "N"); //鐢熸垚宸ヤ綔妗f槑缁� @@ -135,7 +134,7 @@ //鍒ゆ柇鏄惁鍏ㄦ澘鍑哄簱 int ioType = isPakOut(sourceLocNo,taskDto) ? 101 : 103; //鐢熸垚宸ヤ綔妗� - AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,false); + AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,0); //鐢熸垚宸ヤ綔妗f槑缁� taskDto.getLocDtos().forEach(locDto -> { if (!BaseController.isJSON(locDto.getOrderNo())) { @@ -254,13 +253,15 @@ taskDtos.forEach(taskDto -> { //鍒ゆ柇鏄惁鏈夐噸澶嶆枡鎯崇殑宸ヤ綔褰� - List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectByContainerCode(taskDto.getLocDtos().get(0).getContainerCode()); + AgvWrkMast agvWrkMastList = agvWrkMastService.selectByContainerCode(taskDto.getLocDtos().get(0).getContainerCode()); if(!Cools.isEmpty(agvWrkMastList)){ return; } + int containerType = getContainerTypeByloc(taskDto.getLocNo()); + //鐢熸垚宸ヤ綔妗� - AgvWrkMast wrkMast = createWrkMast(107, 21L,taskDto.getLocNo(),taskDto.getAgvStaNo(),taskDto.getLocDtos().get(0).getContainerCode(),now,userId,false); + AgvWrkMast wrkMast = createWrkMast(107, 21L,taskDto.getLocNo(),taskDto.getAgvStaNo(),taskDto.getLocDtos().get(0).getContainerCode(),now,userId,containerType); //鐢熸垚宸ヤ綔妗f槑缁� taskDto.getLocDtos().forEach(locDto -> { //鏄庣粏妗f墍闇�鍙傛暟 @@ -300,8 +301,9 @@ } Date now = new Date(); + //鐢熸垚绉诲簱宸ヤ綔妗� - AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,false); + AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,getContainerTypeByloc(sourceLocNo)); //鐢熸垚宸ヤ綔鍏氭槑缁� createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime()); //淇敼鐩爣搴撲綅鐘舵�� @@ -311,56 +313,88 @@ } /* - 绌烘澘鍏ュ簱 + 鍏ュ簱 */ @Transactional - public String emptyPlateIn(String sourceStaion, Long userId) { + public String emptyPlateIn(String station,String containerCode,Short containerType, Long userId) { + Date now = new Date(); // 婧愮珯鐐圭姸鎬佹娴� - AgvBasDevp agvBasDevp = agvBasDevpService.selectById(sourceStaion); - if(!agvBasDevp.getLocSts().equals("O")){ + //AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(station); + AgvBasDevp agvBasDevp = agvBasDevpService.selectById(station); + + //鍒濆瀹氫箟涓虹┖鏉垮叆搴撶被鍨� + int ioType = 10; + +// if(Cools.isEmpty(agvBasDevp.getBarcode())){ +// agvBasDevp.setBarcode(containerCode); +// } + + 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); - //鏇存柊婧愮珯鐐圭姸鎬� - updateAgvBasDevp(agvBasDevp,"R"); - //鏇存柊鐩爣搴撲綅鐘舵�� - updateAgvLocMast(locMast,"S"); - return locMast.getLocNo(); + + //鏌ヨ宸ヤ綔妗� + 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, agvBasDevp.getLocType2()); + //鐢熸垚宸ヤ綔妗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"); + //鏇存柊婧愮珯鐐圭姸鎬� + updateAgvBasDevp(agvBasDevp,"R"); + }else { + // 鐢熸垚宸ヤ綔妗� 10.绌烘澘鍏ュ簱 + createWrkMast(10,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),containerCode,now,userId,containerType); + //鏇存柊婧愮珯鐐圭姸鎬� + updateAgvBasDevp(agvBasDevp,"R",containerType); + } + + //鏇存柊鐩爣搴撲綅鐘舵�佸拰淇℃伅 + updateAgvLocMast(agvLocMast,"S"); + 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); + if (Cools.isEmpty(agvLocMast)) { + throw new CoolException("鏆傛棤褰撳墠鍑哄簱绔欑偣绫诲瀷鐨勭┖鎵樼洏锛�"); + } + //鐢熸垚宸ヤ綔妗� + createWrkMast(110,21L,agvLocMast.getLocNo(),agvBasDevp.getDevNo(),agvLocMast.getBarcode(),now,userId,containerType); + + //淇敼婧愬簱浣嶇姸鎬� + updateAgvLocMast(agvLocMast,"R"); + + //淇敼绔欑偣鐘舵�� + updateAgvBasDevp(agvBasDevp,"S"); + } @Transactional @@ -540,7 +574,7 @@ String devNo = wrkMast.getSourceLocNo(); //鐩爣搴撲綅 String locNo = wrkMast.getLocNo(); - agvLocMastService.updateLocStsByLocNo(locNo,"O",""); + agvLocMastService.updateLocStsByLocNo(locNo,"O","",null); agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"F",wrkMast.getBarcode()); //鍑哄簱鍙栨秷 @@ -549,7 +583,7 @@ String locNo = wrkMast.getSourceLocNo(); //鐩爣绔欑偣 String devNo = wrkMast.getLocNo(); - agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode()); + agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo)); if(devNo.contains("@")){ agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O",""); } @@ -601,11 +635,31 @@ } /* + 鏇存柊鐩爣搴撲綅淇℃伅鍜屽簱浣嶆墭鐩樼被鍨� + */ + 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){ if(!Cools.isEmpty(agvBasDevp)){ agvBasDevp.setLocSts(locSts); + agvBasDevpService.updateById(agvBasDevp); + } + } + + /* + 鏇存柊婧愮珯鐐逛俊鎭拰搴撲綅鎵樼洏绫诲瀷 + */ + private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType){ + if(!Cools.isEmpty(agvBasDevp)){ + agvBasDevp.setLocSts(locSts); + agvBasDevp.setLocType2(continerType); agvBasDevpService.updateById(agvBasDevp); } } @@ -670,7 +724,7 @@ /* 鐢熸垚宸ヤ綔妗� */ - private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, boolean isConveyor){ + private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType){ AgvWrkMast wrkMast = new AgvWrkMast(); //宸ヤ綔鐘舵�� wrkMast.setWrkSts(wrkSts); @@ -685,8 +739,9 @@ wrkMast.setLocNo(locNo); //瀹瑰櫒缂栫爜 wrkMast.setBarcode(barcode); - //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱 - wrkMast.setMk(isConveyor ? "Y" : "N"); + //瀹瑰櫒绫诲瀷 + wrkMast.setWhsType(containerType); + wrkMast.setAppeUser(userId); wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); @@ -775,4 +830,10 @@ } } + private int getContainerTypeByloc(String locNo){ + + return agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no",locNo)).getLocType2(); + + } + } -- Gitblit v1.9.1