From f78cdcd32b1b872efce68e6a45aba7181df1f9fb Mon Sep 17 00:00:00 2001 From: whycq <913841844@qq.com> Date: 星期三, 29 五月 2024 10:30:53 +0800 Subject: [PATCH] # 组托入库取消任务回退入库单作业数量,更新作业站点为空接驳位 --- src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 220 +++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 167 insertions(+), 53 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 11f75cf..81c4791 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.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.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.BaseRes; @@ -112,13 +114,13 @@ wrkMast.setSourceStaNo(dto.getSourceStaNo()); wrkMast.setStaNo(dto.getStaNo()); wrkMast.setLocNo(dto.getLocNo()); - wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� + wrkMast.setBarcode(param.getBarcode()); // 璐ф灦鐮� wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 wrkMast.setPicking("N"); // 鎷f枡 wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk("N"); // 绌烘澘 wrkMast.setLinkMis("N"); - wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 + wrkMast.setCtnType(sourceStaNo.getCtnType()); // 璐ф灦绫诲瀷 wrkMast.setAppeUser(userId); wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); @@ -129,8 +131,7 @@ // 鐢熸垚宸ヤ綔妗f槑缁� List<DetlDto> detlDtos = new ArrayList<>(); param.getList().forEach(elem -> { - DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq()); - detlDto.setContainerCode(elem.getContainerCode()); + DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq(),elem.getContainerCode()); if (DetlDto.has(detlDtos, detlDto)) { DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode()); assert detlDto1 != null; @@ -222,7 +223,7 @@ List<LocDetlDto> locDetlDtos = new ArrayList<>(); for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { - LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), null); + LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), paramLocDetl.getSuppCode()); if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); } } @@ -282,6 +283,69 @@ dtos.add(new OutLocDto(locNo, locDetlDto)); } } + + ArrayList<String> outerLocs = new ArrayList<>(); + //妫�娴嬫槸鍚︿负娴呭簱浣� + boolean sign=false; + String th = ""; + for (String locNo : locNos) { + if (sign) { + break; + } + + List<String> groupOuterLoc = Utils.getGroupOuterLoc(locNo); + if (!Cools.isEmpty(groupOuterLoc)) { + for (String outerLoc : groupOuterLoc) { + if (locNos.contains(outerLoc)) { + continue; + } + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", outerLoc)); + if (locMast != null) { + if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")) { +// sign = true; +// th = "搴撲綅鍙凤細" + locNo + " 娴呭簱浣嶆湁闈炵┖搴撲綅锛�"; +// break; + + OutLocDto outLocDto = new OutLocDto(); + outLocDto.setLocNo(locMast.getLocNo()); + List<LocDetlDto> locDetlDtos1 = new ArrayList<>(); + for (LocDetl locDetl : locDetlService.selectByLocNo(locMast.getLocNo())) { + LocDetlDto locDetlDto = new LocDetlDto(); + locDetlDto.setLocDetl(locDetl); + locDetlDto.setCount(locDetl.getAnfme()); + locDetlDtos1.add(locDetlDto); + } + outLocDto.setLocDetlDtos(locDetlDtos1); + if (!outerLocs.contains(locMast.getLocNo())) { + dtos.add(outLocDto); + outerLocs.add(locMast.getLocNo()); + } + } + } + } + } + } +// if (sign){ +// throw new CoolException("鍑哄簱澶辫触锛�"+th); +// } + + //**************325銆�331銆�333銆�339绔欑偣棰濆閫昏緫浠g爜************** + HashMap<String, Object> tmpMap = new HashMap<>(); + if (staNo.getDevNo() == 325 || staNo.getDevNo() == 331 || staNo.getDevNo() == 333 || staNo.getDevNo() == 339) { + int[] data = {325,331,333,339}; + for (String locNo : locNos) { + List<String> groupOuterLoc = Utils.getGroupDeepLoc(locNo); + if (groupOuterLoc.isEmpty()) { + continue; + } + int index = 0; + for (String loc : groupOuterLoc) { + tmpMap.put(loc, data[index++]); + } + } + } + //**************325銆�331銆�333銆�339绔欑偣棰濆閫昏緫浠g爜************** + Integer ioType = null; List<String> excludeLocNos = dtos.stream().map(OutLocDto::getLocNo).distinct().collect(Collectors.toList()); // 鐢熸垚宸ヤ綔妗� @@ -315,6 +379,13 @@ if (stnNo == 325 || stnNo == 331 || stnNo == 333 || stnNo == 339) { stnNo = staDesc.getCrnStn(); sourceStaNo = staDesc.getStnNo(); + + //**************325銆�331銆�333銆�339绔欑偣棰濆閫昏緫浠g爜************** + Object autoStnNo = tmpMap.get(dto.getLocNo());//鑾峰彇绯荤粺鑷姩鍒嗛厤绔欑偣 + if (autoStnNo != null) { + sourceStaNo = Integer.parseInt(autoStnNo.toString()); + } + //**************325銆�331銆�333銆�339绔欑偣棰濆閫昏緫浠g爜************** } int lev = Utils.getLev(dto.getLocNo()); @@ -429,6 +500,10 @@ wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo()); wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯 wrkMast.setStaNo(stnNo); // 鐩爣绔� + if(ioType == 101 && taskDto.getStaNo()>=300){ + wrkMast.setSourceStaNo(346); // 婧愮珯 + wrkMast.setStaNo(346); // 鐩爣绔� + } wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣� wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 wrkMast.setPicking("N"); // 鎷f枡 @@ -452,34 +527,61 @@ } Mat mat = matService.selectByMatnr(locDto.getMatnr()); assert mat != null; - WrkDetl wrkDetl = new WrkDetl(); - wrkDetl.sync(mat); - wrkDetl.setZpallet(wrkMast.getBarcode()); - wrkDetl.setIoTime(now); - wrkDetl.setWrkNo(workNo); - wrkDetl.setBatch(locDto.getBatch()); - wrkDetl.setOrderNo(locDto.getOrderNo()); - wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺 - wrkDetl.setAppeTime(now); - wrkDetl.setAppeUser(userId); - wrkDetl.setModiTime(now); - wrkDetl.setModiUser(userId); - wrkDetl.setSuppCode(locDto.getContainerCode()); - wrkDetl.setThreeCode(locDto.getCsocode()); - wrkDetl.setDeadTime(locDto.getIsoseq()); - if (!wrkDetlService.insert(wrkDetl)) { - throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + + if (!BaseController.isJSON(locDto.getOrderNo())) { + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(mat); + wrkDetl.setZpallet(wrkMast.getBarcode()); + wrkDetl.setIoTime(now); + wrkDetl.setWrkNo(workNo); + wrkDetl.setBatch(locDto.getBatch()); + wrkDetl.setOrderNo(locDto.getOrderNo()); + wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺 + wrkDetl.setAppeTime(now); + wrkDetl.setAppeUser(userId); + wrkDetl.setModiTime(now); + wrkDetl.setModiUser(userId); + wrkDetl.setSuppCode(locDto.getContainerCode()); + wrkDetl.setThreeCode(locDto.getCsocode()); + wrkDetl.setDeadTime(locDto.getIsoseq()); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + //琛ヨ揣鍗曞垯鐢熸垚AGV鍏ュ簱閫氱煡妗� + generateAgvWaitpakin(wrkDetl); + }else { + List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); + orderDtoList.forEach(orderDto -> { + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(mat); + wrkDetl.setZpallet(wrkMast.getBarcode()); + wrkDetl.setIoTime(now); + wrkDetl.setWrkNo(workNo); + wrkDetl.setBatch(locDto.getBatch()); + wrkDetl.setOrderNo(orderDto.getOrderNo()); + wrkDetl.setAnfme(orderDto.getAnfme()); // 鏁伴噺 + wrkDetl.setAppeTime(now); + wrkDetl.setAppeUser(userId); + wrkDetl.setModiTime(now); + wrkDetl.setModiUser(userId); + wrkDetl.setSuppCode(locDto.getContainerCode()); + wrkDetl.setThreeCode(locDto.getCsocode()); + wrkDetl.setDeadTime(locDto.getIsoseq()); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + //琛ヨ揣鍗曞垯鐢熸垚AGV鍏ュ簱閫氱煡妗� + generateAgvWaitpakin(wrkDetl); + }); } - //琛ヨ揣鍗曞垯鐢熸垚AGV鍏ュ簱閫氱煡妗� - generateAgvWaitpakin(wrkDetl); // 淇敼璁㈠崟鏄庣粏 if (!BaseController.isJSON(locDto.getOrderNo())) { - OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); + OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq()); if (orderDetl == null) { - orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); + orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq()); } - if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) { + if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(),locDto.getCsocode(),locDto.getIsoseq())) { throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触"); } orderService.updateSettle(orderDetl.getOrderId(), 2L, userId); @@ -493,19 +595,20 @@ Double orderAnfme; for (OrderDto orderDto : orderDtoList) { - OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); + OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq()); if (orderDetl == null) { - orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null); + 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; } - if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) { + if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme,orderDetl.getThreeCode(),orderDetl.getDeadTime())) { throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触"); } orderService.updateSettle(orderDetl.getOrderId(), 2L, userId); @@ -553,7 +656,7 @@ wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk("Y"); // 绌烘澘 wrkMast.setLinkMis("N"); - wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 + wrkMast.setCtnType(sourceStaNo.getCtnType()); // 璐ф灦绫诲瀷 // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeUser(userId); wrkMast.setAppeTime(new Date()); @@ -695,7 +798,7 @@ List<LocDetlDto> locDetlDtos = new ArrayList<>(); for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { - LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getContainerCode()); + LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getSuppCode()); if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); } } @@ -740,7 +843,7 @@ wrkMast.setPicking("N"); // 鎷f枡 wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘 - wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮� + wrkMast.setBarcode(sourceLoc.getBarcode()); // 璐ф灦鐮� wrkMast.setLinkMis("N"); wrkMast.setAppeUser(userId); wrkMast.setAppeTime(now); @@ -851,11 +954,11 @@ 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 鐩樼偣璁板綍 // 淇敼搴撳瓨 - if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { + if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getSuppCode(),locDetl.getThreeCode(),locDetl.getDeadTime())) { throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�"); } // 淇濆瓨璋冩暣璁板綍 @@ -869,9 +972,7 @@ adjDetl.setModiUser(userId); adjDetl.setAppeTime(now); adjDetl.setAppeUser(userId); - - UUID uuid = UUID.randomUUID(); - adjDetl.setOrderNo(uuid.toString()); + adjDetl.setOrderNo(Utils.generateAdjustOrderNo()); adjDetl.setCsocode(locDetl.getThreeCode()); adjDetl.setIsoseq(locDetl.getDeadTime()); @@ -886,7 +987,7 @@ // 鍒犻櫎搴撳瓨 for (LocDetl locDetl : locDetls) { // todo 鐩樼偣璁板綍 - if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { + if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getSuppCode(),locDetl.getThreeCode(),locDetl.getDeadTime())) { throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�"); } // 淇濆瓨璋冩暣璁板綍 @@ -900,7 +1001,7 @@ adjDetl.setModiUser(userId); adjDetl.setAppeTime(now); adjDetl.setAppeUser(userId); - + adjDetl.setOrderNo(Utils.generateAdjustOrderNo()); adjDetlService.save(adjDetl, userId); } @@ -933,11 +1034,9 @@ adjDetl.setModiUser(userId); adjDetl.setAppeTime(now); adjDetl.setAppeUser(userId); - - UUID uuid = UUID.randomUUID(); - adjDetl.setOrderNo(uuid.toString()); adjDetl.setCsocode(locDetl.getThreeCode()); adjDetl.setIsoseq(locDetl.getDeadTime()); + adjDetl.setOrderNo(Utils.generateAdjustOrderNo()); adjDetlService.save(adjDetl, userId); } @@ -1024,7 +1123,7 @@ for (WrkDetl wrkDetl : wrkDetls) { if (!Cools.isEmpty(wrkDetl.getOrderNo())) { if (!BaseController.isJSON(wrkDetl.getOrderNo())) { - if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { + if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme(),wrkDetl.getThreeCode(),wrkDetl.getDeadTime())) { throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); } } else { @@ -1045,7 +1144,7 @@ orderAnfme = wrkDetlAnfme; } - if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme)) { + if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme,wrkDetl.getThreeCode(),wrkDetl.getDeadTime())) { throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); } } @@ -1160,13 +1259,28 @@ } private void generateAgvWaitpakin(WrkDetl wrkDetl){ - Order order = orderService.selectByNo(wrkDetl.getOrderNo()); - DocType docType = docTypeService.selectById(order.getDocType()); - if("浜哄伐琛ヨ揣鍗�".equals(docType.getDocName())){ - AgvWaitPakin agvWaitPakin = new AgvWaitPakin(); - BeanUtils.copyProperties(wrkDetl,agvWaitPakin); - agvWaitPakinService.insert(agvWaitPakin); + String orderNo = wrkDetl.getOrderNo(); + if(orderNo.contains("{")){ + JSONArray orderArray = JSON.parseArray(orderNo); + for (Object o : orderArray){ + JSONObject jsonobject = (JSONObject) o; + Order order = orderService.selectByNo(jsonobject.get("orderNo").toString()); + DocType docType = docTypeService.selectById(order.getDocType()); + if("浜哄伐琛ヨ揣鍗�".equals(docType.getDocName())){ + throw new CoolException("鍚堝苟鍗曟嵁涓寘鍚汉宸ヨˉ璐у崟锛屽崟鎹负: " + jsonobject.get("orderNo")); + } + } + + }else { + Order order = orderService.selectByNo(orderNo); + DocType docType = docTypeService.selectById(order.getDocType()); + if("浜哄伐琛ヨ揣鍗�".equals(docType.getDocName())){ + AgvWaitPakin agvWaitPakin = new AgvWaitPakin(); + BeanUtils.copyProperties(wrkDetl,agvWaitPakin); + agvWaitPakinService.insert(agvWaitPakin); + } } + } } -- Gitblit v1.9.1