From ece092e4c5d4e968b424421c6f78b065bbb0bd73 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期六, 24 八月 2024 15:13:10 +0800 Subject: [PATCH] #修复目标站显示错误问题 --- src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 138 +++++++++++++++++++++++++++++---------------- 1 files changed, 89 insertions(+), 49 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 7e48d42..8d1e0dd 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java @@ -1,6 +1,8 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; @@ -71,8 +73,7 @@ 鍏ュ簱 */ @Transactional - @Synchronized - public StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId, boolean isConveyor) { + public synchronized StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId, boolean isConveyor) { Date now = new Date(); @@ -136,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); @@ -198,9 +216,14 @@ //agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo())); //淇敼搴撳瓨淇℃伅 agvWrkDetlList.forEach(agvWrkDetl -> { + if(agvWrkDetl.getAnfme() <= 0){ + return; + } + AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime()); //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); + double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme(); agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); }); @@ -219,13 +242,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 -> { @@ -240,6 +256,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槑缁� @@ -261,26 +284,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"); -// -// }); } @@ -389,7 +392,7 @@ while (iterator1.hasNext()) { LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next(); if (adjust.getCount() == 0) { continue; } - if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) { + if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch()) && Cools.eq(locDetl.getSuppCode(),adjust.getSuppCode()) && Cools.eq(locDetl.getThreeCode(),adjust.getThreeCode()) && Cools.eq(locDetl.getDeadTime(),adjust.getDeadTime())) { if (!locDetl.getAnfme().equals(adjust.getCount())) { // todo 鐩樼偣璁板綍 // 淇敼搴撳瓨 @@ -403,6 +406,7 @@ adjDetl.setBatch(locDetl.getBatch()); adjDetl.setOriQty(locDetl.getAnfme()); adjDetl.setAdjQty(adjust.getCount()); + adjDetl.setMemo(locDetl.getSuppCode()); adjDetl.setModiTime(now); adjDetl.setModiUser(userId); adjDetl.setAppeTime(now); @@ -506,7 +510,9 @@ if (Cools.isEmpty(wrkMast)){ throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); } - + if(!wrkMast.getLocNo().contains("@") || !wrkMast.getSourceLocNo().contains("@")){ + throw new CoolException("鐩爣搴撲綅鎴栬�呮簮搴撲綅鏆傛湭鍒嗛厤锛屾棤娉曞彇娑�"); + } //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚 agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205); @@ -530,11 +536,13 @@ } //鎷f枡鍏ュ簱 鐩樼偣鍏ュ簱涓嶅彲鍙栨秷 if(wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){ - throw new CoolException("褰撳墠浠诲姟涓嶅彲鍙栨秷"); + if (userId != 9527) { + throw new CoolException("褰撳墠浠诲姟涓嶅彲鍙栨秷"); + } } //鍏ュ簱鍙栨秷 - if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10){ + if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10 || wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){ //婧愮珯鐐� String devNo = wrkMast.getSourceLocNo(); //鐩爣搴撲綅 @@ -561,9 +569,21 @@ agvWrkDetlList1.forEach(agvWrkDetl -> { if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){ - OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); - orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme()); - orderDetlService.updateById(orderDetl); + String orderNo = agvWrkDetl.getOrderNo(); + if(orderNo.contains("{")){ + JSONArray orderArray = JSON.parseArray(orderNo); + for (Object o : orderArray){ + JSONObject jsonobject = (JSONObject) o; + OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(jsonobject.get("orderNo").toString(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); + orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme()); + orderDetlService.updateById(orderDetl); + } + + }else { + OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); + orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme()); + orderDetlService.updateById(orderDetl); + } } }); @@ -576,6 +596,25 @@ if(!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){ throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�"); } + + } + + @Override + public void changeToOutWrkMast(String workNo, Long userId) { + AgvWrkMast agvWrkMast = agvWrkMastService.selectById(workNo); + if (Cools.isEmpty(agvWrkMast)){ + throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); + } + if (agvWrkMast.getIoType() == 1 || agvWrkMast.getIoType() == 53){ + throw new CoolException(workNo+"鍏ュ簱浠诲姟鏃犳硶杞嚭搴�"); + } + + agvWrkMast.setIoType(101); + agvWrkMast.setWrkSts(206L); + agvWrkMast.setModiTime(new Date()); + agvWrkMast.setModiUser(userId); + + agvWrkMastService.updateById(agvWrkMast); } @@ -735,8 +774,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