From 13c2be4774f4afbb34fa70be97c96802f07b15ff Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期四, 04 七月 2024 15:35:02 +0800 Subject: [PATCH] #MES接口 --- src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java | 326 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 275 insertions(+), 51 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java index c2200c3..7899431 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java @@ -9,8 +9,10 @@ import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.*; import com.zy.asrs.service.*; +import com.zy.asrs.utils.CodeDetectionUtil; import com.zy.common.model.DetlDto; import com.zy.common.service.AgvCommonService; +import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -67,21 +69,29 @@ if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { throw new CoolException(BaseRes.PARAM); } + if (!CodeDetectionUtil.barcodeDetection(param.getBarcode())){ + throw new CoolException(param.getBarcode() + "璐ф灦鐮佹湁璇紝璇锋纭壂鐮侊紒锛侊紒"); + } param.setContainerType(Short.valueOf(param.getBarcode().substring(0,2))); -// //妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勬墭鐩樻潯鐮侊紝瀛樺湪鍒欐姏鍑哄紓甯� +// //妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勮揣鏋舵潯鐮侊紝瀛樺湪鍒欐姏鍑哄紓甯� // if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().eq("supp_code", param.getBarcode())) > 0) { // throw new CoolException(param.getBarcode() + "鏂欐兂鐮佸凡瀛樺湪AGV鍏ュ簱閫氱煡妗d腑"); // } - //妫�鏌ュ簱瀛樻槸鍚︽湁鐩稿悓鏂欑锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父 + //妫�鏌ュ簱瀛樻槸鍚︽湁鐩稿悓璐ф灦锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父 if(!Cools.isEmpty(agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("supp_code",param.getBarcode())))){ - throw new CoolException(param.getBarcode() + "鏂欑鐮佸凡瀛樺湪AGV搴撳瓨鏄庣粏涓�"); + throw new CoolException(param.getBarcode() + "璐ф灦鐮佸凡瀛樺湪AGV搴撳瓨鏄庣粏涓�"); } - //鏌ョ湅宸ヤ綔妗f槸鍚︽湁鐩稿悓鏂欑锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父 + //妫�鏌ュ簱瀛樻槸鍚︽湁鐩稿悓璐ф灦锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父 + if(!Cools.isEmpty(agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode",param.getBarcode())))){ + throw new CoolException(param.getBarcode() + "璐ф灦鐮佸凡瀛樺湪AGV搴撳瓨涓绘。涓�"); + } + + //鏌ョ湅宸ヤ綔妗f槸鍚︽湁鐩稿悓璐ф灦锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父 if(!Cools.isEmpty(agvWrkMastService.selectByContainerCode(param.getBarcode()))){ - throw new CoolException(param.getBarcode() + "鏂欑鐮佸凡瀛樺湪AGV宸ヤ綔妗d腑"); + throw new CoolException(param.getBarcode() + "璐ф灦鐮佸凡瀛樺湪AGV宸ヤ綔妗d腑"); } if (Cools.isEmpty(param.getOrderNo())) { @@ -110,9 +120,16 @@ Date now = new Date(); List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", pickParams.getLocNo())); + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo())); + + if (Cools.isEmpty(agvWrkMast)){ + return "澶辫触锛屾湭鏌ュ埌宸ヤ綔涓绘。锛屽伐浣滃彿锛�"+pickParams.getWrkNo(); + } for (PickParam.Pick pick : pickParams.getPicks()) { if (pick.getCount().equals(0D)) continue; - AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode())); + Double count = 0.0D; + AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()).eq("supp_code",pick.getSuppCode())); + if (Cools.isEmpty(agvWrkDetl)) { AgvWrkDetl wrkDetl = new AgvWrkDetl(); Mat mat = matService.selectByMatnr(pick.getMatnr()); @@ -122,9 +139,9 @@ wrkDetl.sync(mat); wrkDetl.setWrkNo(pickParams.getWrkNo()); wrkDetl.setOrderNo(pick.getOrderNo()); - wrkDetl.setIoTime(now); + wrkDetl.setIoTime(agvWrkMast.getIoTime()); wrkDetl.setAnfme(pick.getCount()); // 鏁伴噺 - wrkDetl.setSuppCode(pick.getSuppCode()); // 鎵樼洏鏉$爜 + wrkDetl.setSuppCode(pick.getSuppCode()); // 璐ф灦鏉$爜 wrkDetl.setAppeUser(userId); wrkDetl.setAppeTime(now); wrkDetl.setModiUser(userId); @@ -134,7 +151,7 @@ } else { Double anfme = agvWrkDetl.getAnfme() + pick.getCount(); agvWrkDetl.setAnfme(anfme); - agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("matnr",agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode())); + agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("matnr",agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode()).eq("supp_code",pick.getSuppCode())); } @@ -160,7 +177,6 @@ } } if (agvLocDetls.size() == sameNumber) { - AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo())); agvWrkMast.setIoType(101); agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo())); } @@ -175,7 +191,7 @@ private void NoOrderComb(CombParam param, Long userId){ List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param,null); - //鐢ㄤ簬缁熶竴涓�涓墭鐩樹笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿 + //鐢ㄤ簬缁熶竴涓�涓揣鏋朵笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿 Date now = new Date(); detlDtos.forEach(detlDto -> { syncWaitPakin(detlDto,"",param.getBarcode(),userId,now); @@ -199,7 +215,7 @@ } // 鐢ㄤ簬鐢熸垚鍏ュ簱閫氱煡妗f墍闇�鍙傛暟 List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param,order); - //鐢ㄤ簬缁熶竴涓�涓墭鐩樹笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿 + //鐢ㄤ簬缁熶竴涓�涓揣鏋朵笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿 Date now = new Date(); for (DetlDto detlDto : detlDtos) { //鍚屾鐢熸垚鍏ュ簱閫氱煡妗� @@ -222,7 +238,7 @@ } DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq(),combMat.getContainerCode(),param.getLocType()); - //鍚屼竴鎵樼洏涓嬬浉鍚岀墿鏂欎俊鎭拰鎵瑰彿杞负涓�涓叆搴撻�氱煡妗� + //鍚屼竴璐ф灦涓嬬浉鍚岀墿鏂欎俊鎭拰鎵瑰彿杞负涓�涓叆搴撻�氱煡妗� if (DetlDto.has(detlDtos, detlDto)) { DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(),detlDto.getContainerCode()); assert one != null; @@ -265,8 +281,8 @@ waitPakin.sync(mat); waitPakin.setOrderNo(orderNo); // 鍗曟嵁缂栧彿 waitPakin.setBatch(detlDto.getBatch()); // 搴忓垪鐮� - //waitPakin.setZpallet(zpallet); // 鎵樼洏鐮� - waitPakin.setSuppCode(zpallet); // 鎵樼洏鐮� + //waitPakin.setZpallet(zpallet); // 璐ф灦鐮� + waitPakin.setSuppCode(zpallet); // 璐ф灦鐮� waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺 waitPakin.setStatus("Y"); // 鐘舵�� @@ -311,7 +327,7 @@ } if(Cools.isEmpty(agvWaitPakinService.selectByContainerCode(barcode))){ - throw new CoolException("璇ユ枡绠辨湭缁勬墭锛屾棤娉曠粦瀹氱珯鐐�"); + throw new CoolException("璇ヨ揣鏋舵湭缁勬墭锛屾棤娉曠粦瀹氱珯鐐�"); } AgvBasDevp agvBasDevp1 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", barcode)); @@ -386,7 +402,19 @@ ioType = 11; } } else { - ioType = 12; + if (agvLocMast.getFloor() != floor) { +// if (floor==1 && agvLocMast.getFloor()!=1){ +// ioType = 121; +// }else { + if (agvLocMast.getFloor() == 1) { + throw new CoolException("褰撳墠搴撲綅璇烽�夋嫨璋冩嫧鍗曡皟鎷紒"); + } else { + ioType = 12; + } +// } + } else { + ioType = 11; + } } Date now = new Date(); //鏌ヨ宸ヤ綔妗� @@ -402,7 +430,11 @@ //鐢熸垚宸ヤ綔妗� AgvWrkMast mast = new AgvWrkMast(); //宸ヤ綔鐘舵�� - mast.setWrkSts(201L); + if (ioType==121) { + mast.setWrkSts(11L); + }else { + mast.setWrkSts(201L); + } //鍏ュ嚭搴撶被鍨� mast.setIoType(ioType); mast.setIoTime(now); @@ -412,19 +444,20 @@ mast.setSourceLocNo(agvLocMast.getLocNo()); //鐩爣绔欑偣 mast.setLocNo(locMast.getLocNo()); - //瀹瑰櫒缂栫爜 + //璐ф灦缂栫爜 mast.setBarcode(agvLocMast.getBarcode()); - //瀹瑰櫒绫诲瀷 + //璐ф灦绫诲瀷 mast.setWhsType(30); mast.setAppeUser(userId); mast.setAppeTime(now); mast.setModiUser(userId); mast.setModiTime(now); + mast.setLogErrMemo("handControlLocMove"); if (!agvWrkMastService.insertByIncrease(mast)) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } - if (!agvLocMast.getLocSts().equals("F")) { + if (agvLocMast.getLocSts().equals("F")) { AgvWrkMast mast1 = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locMast.getLocNo()).eq("source_loc_no",agvLocMast.getLocNo())); //鐢熸垚宸ヤ綔妗f槑缁� List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo())); @@ -443,6 +476,18 @@ } }); } + + // 濡傛灉褰撳墠浠诲姟鏄澹充簩涓夋ゼ鍥為��涓�妤肩殑 鍥炴粴璋冩嫧鍗� + if (ioType == 12 && locMast.getFloor() == 1) { + List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo())); + for (AgvLocDetl agvLocDetl : agvLocDetls) { + OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvLocDetl.getThreeCode()).eq("matnr", agvLocDetl.getMatnr()).eq("order_no", "DB" + agvLocDetl.getOrderNo())); + orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme()); + if (!orderDetlService.updateById(orderDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + } + } //鏇存柊鐩爣搴撲綅鐘舵�� updateAgvLocMast(agvLocMast,"P"); updateAgvLocMast(locMast,"Q"); @@ -454,56 +499,198 @@ */ @Override @Transactional + @Synchronized public String allocationOut(AgvMobileStartPakin param, Long userId) { Date now = new Date(); AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo())); + Integer oldWrkNo = agvWrkMast.getWrkNo(); if (Cools.isEmpty(agvWrkMast)) { throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�"); } + if (!agvWrkMast.getWrkSts().equals(207L)) { + throw new CoolException("宸ヤ綔鐘舵�佷笉绗﹀悎绂诲満鏉′欢"); + } + //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� agvWrkMastLogService.save(agvWrkMast); agvWrkDetlLogService.save(agvWrkMast.getWrkNo()); - + //鍒犻櫎AGV宸ヤ綔妗� + agvWrkMastService.deleteById(agvWrkMast); //鐢熸垚宸ヤ綔妗� - AgvWrkMast mast = new AgvWrkMast(); - //宸ヤ綔鐘舵�� - mast.setWrkSts(210L); - //鍏ュ嚭搴撶被鍨� - mast.setIoType(111); - mast.setIoTime(now); - //浼樺厛绾� - mast.setIoPri(300.0); - //婧愮珯鐐� - mast.setSourceLocNo(""); - //鐩爣绔欑偣 - mast.setLocNo(""); - //瀹瑰櫒缂栫爜 - mast.setBarcode(agvWrkMast.getBarcode()); - //瀹瑰櫒绫诲瀷 - mast.setWhsType(30); - // 鐩爣妤煎眰 - mast.setPauseMk(agvWrkMast.getPauseMk()); - mast.setAppeUser(userId); - mast.setAppeTime(now); - mast.setModiUser(userId); - mast.setModiTime(now); - if (!agvWrkMastService.insertByIncrease(mast)) { - throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); - } + AgvWrkMast wrkMast = createWrkMast(111, 210L, "", "", agvWrkMast.getBarcode(), now, userId, 30, agvWrkMast.getCrnNo()); // 鏇存柊宸ヤ綔鏄庣粏 - List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode())); for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { - agvWrkDetl.setWrkNo(mast.getWrkNo()); - if (!agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()))) { - throw new CoolException("鏇存柊宸ヤ綔鏄庣粏澶辫触"); + agvWrkDetl.setWrkNo(wrkMast.getWrkNo()); + // 淇濇寔宸ヤ綔妗f槑缁� + agvWrkDetl.setWrkNo(wrkMast.getWrkNo()); + agvWrkDetl.setModiUser(userId); + agvWrkDetl.setModiTime(now); + if (!agvWrkDetlService.insert(agvWrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); } } // 鏇存柊绔欑偣鐘舵�� agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); // 鏇存柊婧愬簱浣嶇姸鎬� agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); + + //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� + agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",oldWrkNo)); + return "ok"; + } + /* + 璋冩嫧杩涘満 + */ + @Override + @Transactional + public String allocationIn(AgvMobileStartPakin param, Long userId) { + Date now = new Date(); + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode())); + if (agvWrkMast.getIoType() != 111) { + throw new CoolException("闈炴墜鍔ㄨ皟鎷ㄤ换鍔★紝涓嶆敮鎸佹鍔熻兘"); + } + AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(param.getDevNo()); + if (Cools.isEmpty(agvWrkMast)) { + throw new CoolException("宸ヤ綔妗d腑娌℃湁姝よ揣鏋朵换鍔�"); + } + if (agvWrkMast.getCrnNo() != agvBasDevp.getFloor()) { + throw new CoolException("璇风Щ鍔ㄥ埌->" + agvWrkMast.getCrnNo() + "妤煎叆搴撶偣鍏ュ簱"); + } + AgvLocMast locNo = agvCommonService.getLocNo(3, 1); + //宸ヤ綔鐘舵�� + agvWrkMast.setWrkSts(211L); + //鍏ュ嚭搴撶被鍨� + agvWrkMast.setIoType(112); + agvWrkMast.setSourceLocNo(param.getDevNo()); + agvWrkMast.setModiUser(userId); + agvWrkMast.setModiTime(now); + if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) { + throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�"); + } + // + agvLocMastService.updateLocStsByLocNo(locNo.getLocNo(),"S",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + // 鏇存柊婧愬簱浣嶇姸鎬� + agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"R",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + //鍒犻櫎AGV宸ヤ綔妗� + return "ok"; + } + /* + 绌烘灦绂诲満 + */ + @Override + @Transactional + @Synchronized + public String empOut(AgvMobileStartPakin param, Long userId) { + Date now = new Date(); + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo())); + Integer oldWrkNo = agvWrkMast.getWrkNo(); + if (Cools.isEmpty(agvWrkMast)) { + throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�"); + } + agvWrkMast.setWrkSts(213L); + agvWrkMast.setSourceLocNo(""); + if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) { + throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�"); + } + // 鏇存柊婧愬簱浣嶇姸鎬� + agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"O","",agvWrkMast.getWhsType().shortValue()); + return "ok"; + } + /* + 绌烘灦杩涘満 + */ + @Override + @Transactional + @Synchronized + public String empIn(AgvMobileStartPakin param, Long userId) { + Date now = new Date(); + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode())); + if (Cools.isEmpty(agvWrkMast)) { + throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�"); + } + agvWrkMast.setWrkSts(214L); + agvWrkMast.setSourceLocNo(param.getDevNo()); + if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) { + throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�"); + } + // 鏇存柊婧愬簱浣嶇姸鎬� + agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"F",param.getBarcode(),agvWrkMast.getWhsType().shortValue()); + return "ok"; + } + /* + * 绔欑偣鍥為�� + */ + @Override + @Transactional + public String handBack(AgvMobileStartPakin param, Long userId) { + Date now = new Date(); + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo())); + agvWrkMast.setIoType(113); + agvWrkMast.setModiUser(userId); + agvWrkMast.setModiTime(now); + if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) { + throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�"); + } + return "ok"; + } + + /* + * 绔欑偣鍥為�� + */ + @Override + @Transactional + public String doBack(AgvMobileStartPakin param, Long userId) { + if (Cools.isEmpty(param.getBarcode()) || !CodeDetectionUtil.barcodeDetection(param.getBarcode())){ + throw new CoolException(param.getBarcode() + "璐ф灦鐮佹湁璇紝璇锋纭壂鐮侊紒锛侊紒"); + } + if (Cools.isEmpty(param.getDevNo()) || !CodeDetectionUtil.carCodeDetection(param.getDevNo())){ + throw new CoolException(param.getDevNo() + "灏忚溅鍦扮爜鏈夎锛岃姝g‘鎵爜锛侊紒锛�"); + } + Date now = new Date(); + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo())); + AgvWrkMast agvWrkMastSource = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo())); + if (!Cools.isEmpty(agvWrkMastSource)) { + throw new CoolException("褰撳墠绔欑偣宸叉湁閫�搴撲换鍔�"); + } + Integer oldWrkNo = agvWrkMast.getWrkNo(); + if (!agvWrkMast.getBarcode().equals(param.getBarcode())) { + throw new CoolException("鍥為��浠诲姟鐨勮揣鏋剁爜涓庡綋鍓嶈揣鏋剁爜涓嶄竴鑷�!"); + } + if (agvWrkMast.getWrkSts() != 205) { + throw new CoolException("鍑哄簱浠诲姟鏈畬鎴�!"); + } + // 鏂板缓鍥為��宸ヤ綔妗� + AgvWrkMast wrkMast = createWrkMast(58, 201L, agvWrkMast.getLocNo(), agvWrkMast.getSourceLocNo(), agvWrkMast.getBarcode(), now, userId, agvWrkMast.getWhsType(), 0); + // 鏇存柊鎺ラ┏浣嶏紝鏇存柊搴撲綅鐘舵�� + agvLocMastService.updateLocStsByLocNo(wrkMast.getLocNo(),"S",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue()); + agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getSourceLocNo(),"R",wrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + // 鏇存柊宸ヤ綔鏄庣粏 + List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode())); + for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { + agvWrkDetl.setWrkNo(wrkMast.getWrkNo()); + // 淇濇寔宸ヤ綔妗f槑缁� + agvWrkDetl.setWrkNo(wrkMast.getWrkNo()); + agvWrkDetl.setModiUser(userId); + agvWrkDetl.setModiTime(now); + if (!agvWrkDetlService.insert(agvWrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + // 鍚屾璁㈠崟鏁伴噺 + OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode()).in("source",18,31,34)); + orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme()); + if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no",orderDetl.getOrderNo()).eq("matnr", orderDetl.getMatnr()).eq("three_code",orderDetl.getThreeCode()))){ + throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+orderDetl.getOrderNo()+orderDetl.getMatnr()); + } + } + + //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� + agvWrkMastLogService.save(agvWrkMast); + agvWrkDetlLogService.save(agvWrkMast.getWrkNo()); //鍒犻櫎AGV宸ヤ綔妗� agvWrkMastService.deleteById(agvWrkMast); + //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� + agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",oldWrkNo)); return "ok"; } /* @@ -514,4 +701,41 @@ agvLocMastService.updateById(locMast); } + /* + 鐢熸垚宸ヤ綔妗� + */ + private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType,int floor){ + AgvWrkMast wrkMast = new AgvWrkMast(); + //宸ヤ綔鐘舵�� + wrkMast.setWrkSts(wrkSts); + //鍏ュ嚭搴撶被鍨� + wrkMast.setIoType(ioType); + wrkMast.setIoTime(now); + //浼樺厛绾� + wrkMast.setIoPri(300.0); + //婧愮珯鐐� + wrkMast.setSourceLocNo(sourceLocNo); + //鐩爣绔欑偣 + wrkMast.setLocNo(locNo); + //璐ф灦缂栫爜 + wrkMast.setBarcode(barcode); + //璐ф灦绫诲瀷 + wrkMast.setWhsType(containerType); + // 鐩爣妤煎眰 + wrkMast.setCrnNo(floor); + + wrkMast.setAppeUser(userId); + wrkMast.setAppeTime(now); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + wrkMast.setLogErrMemo("doBack"); + if (!agvWrkMastService.insertByIncrease(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false)); + + return wrkMast; + } + } -- Gitblit v1.9.1