From d17a7346759fbb432cea1c83de63d29c6a3d330d Mon Sep 17 00:00:00 2001 From: whycq <10027870+whycq@user.noreply.gitee.com> Date: 星期五, 24 五月 2024 10:14:06 +0800 Subject: [PATCH] # 自动回流取消任务更改源库位为D --- src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 183 +++++++++++++++++++++++++++++++++++++-------- 1 files changed, 149 insertions(+), 34 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 87a71e8..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); @@ -221,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(), paramLocDetl.getContainerCode()); + LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), paramLocDetl.getSuppCode()); if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); } } @@ -281,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()); // 鐢熸垚宸ヤ綔妗� @@ -314,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()); @@ -455,26 +527,53 @@ } 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())) { @@ -501,8 +600,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; @@ -556,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()); @@ -698,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())); } } @@ -743,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); @@ -854,7 +954,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 鐩樼偣璁板綍 // 淇敼搴撳瓨 @@ -1159,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