From 60fdc9564c65b90a8911ff10a25f3f3a63d3812c Mon Sep 17 00:00:00 2001 From: pjb <123456> Date: 星期五, 20 六月 2025 11:06:27 +0800 Subject: [PATCH] 出库任务历史档优化 --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java | 90 ++++++++++++++++++++++++++++----------------- 1 files changed, 56 insertions(+), 34 deletions(-) diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java index b60555e..2f98da3 100644 --- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java +++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java @@ -1,15 +1,13 @@ package com.zy.asrs.wms.asrs.manage; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.mysql.cj.util.StringUtils; import com.zy.asrs.framework.exception.CoolException; +import com.zy.asrs.wms.asrs.entity.*; import com.zy.asrs.wms.asrs.entity.dto.*; -import com.zy.asrs.wms.asrs.entity.dto.OrderOutMergeDto; import com.zy.asrs.wms.asrs.entity.enums.*; import com.zy.asrs.wms.asrs.entity.param.*; -import com.zy.asrs.wms.asrs.entity.*; import com.zy.asrs.wms.asrs.service.*; import com.zy.asrs.wms.utils.OrderUtils; import com.zy.asrs.wms.utils.OutUtils; @@ -25,7 +23,6 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * 鍑哄簱绠$悊 @@ -555,12 +552,17 @@ List<MergePreviewResultDto> resultDtos = new ArrayList<>(); //浼樺厛鏌ヨ骞冲簱鏁版嵁 param.forEach(pars -> { + if (pars.getStatus() == 1) { + return; + } List<MergePreviewResultLocDto> locDtos = new ArrayList<>(); MergePreviewResultDto resultDto = new MergePreviewResultDto(); resultDto.sync(pars); resultDto.setOrderIds(pars.getOrderIds()); + //鎬婚渶姹傛暟閲� + resultDto.setAnfme(pars.getAnfme()); resultDto.setLocs(locDtos); - + //鏌ヨ骞冲簱涓鍚堟潯浠剁殑搴撳瓨 List<LocDetl> locs = locDetlService.queryFlatStock(pars.getMatnr(), pars.getBatch(), pars.getFieldParams()); if (!locs.isEmpty()) { double anfme = pars.getAnfme() - pars.getWorkQty(); @@ -578,44 +580,61 @@ locDto.setLocNo(detl.getLocNo()); locDto.setTypeId(LocAreaTypeSts.LOC_AREA_TYPE_FLAT.id); locDto.setLocDetlId(detl.getId()); - + locDto.setAnfme(detl.getAnfme()); + locDto.setWorkQty(detl.getWorkQty()); locDtos.add(locDto); //搴撲綅瀹為檯鍙敤鏁伴噺 - double surplusQty = detl.getAnfme() - detl.getWorkQty(); + Double surplusQty = Math.round((detl.getAnfme() - detl.getWorkQty()) * 10000) / 10000.0; + if (surplusQty <= 0) { + continue; + } //娉㈡鏁伴噺鍑忓幓搴撲綅鍙敤鏁伴噺鍚庯紝鐩堜綑鏁伴噺 anfme = anfme - surplusQty; if (anfme > 0) { - locDto.setAnfme(detl.getAnfme()); - locDto.setWorkQty(surplusQty); + //褰撳墠鍙娇鐢ㄦ暟閲� + resultDto.setFetchQty(surplusQty); + //浣欎笅闇�姹傛暟閲� + pars.setStatus(2); + pars.setWorkQty(pars.getWorkQty() + surplusQty); + pars.setAnfme(anfme); } else { - locDto.setAnfme(pars.getAnfme() - pars.getWorkQty()); - locDto.setWorkQty(pars.getAnfme() - pars.getWorkQty()); + //褰撳墠浣跨敤鏁伴噺 + resultDto.setFetchQty(pars.getAnfme()); + //浣欎笅闇�姹� + pars.setWorkQty(pars.getWorkQty() + pars.getAnfme()); + pars.setStatus(1); + pars.setAnfme(0.0); break; } } - //淇濆瓨鍑哄簱鏁伴噺锛堝钩搴擄級 - pars.setWorkQty(pars.getAnfme() - pars.getWorkQty() - anfme); - resultDto.setOtherLocs(new ArrayList<>()); + if (!Objects.isNull(resultDto.getFetchQty()) && !(new BigDecimal(resultDto.getFetchQty()).compareTo(new BigDecimal("0.00")) == 0)) { + resultDto.setOtherLocs(new ArrayList<>()); - resultDto.setAnfme(pars.getAnfme()); + resultDto.setType(LocAreaTypeSts.LOC_AREA_TYPE_FLAT.desc); - resultDtos.add(resultDto); - + resultDtos.add(resultDto); + } } }); + //骞冲簱鏌ヨ瀹屾垚鍚庯紝鍐嶆煡璇CU for (MergePreviewDto dto : param) { - Double anfme = dto.getAnfme() - dto.getWorkQty(); - //鍑忓幓骞冲簱鏁伴噺鍚庯紝灏忎簬绛変簬0锛岃烦鍑哄鐞� - if (anfme <= 0) { + //鍗曟嵁宸插畬鎴愶紝璺冲嚭 + if (dto.getStatus() == 1) { continue; } +// Double anfme = dto.getAnfme() - dto.getWorkQty(); +// //鍑忓幓骞冲簱鏁伴噺鍚庯紝灏忎簬绛変簬0锛岃烦鍑哄鐞� +// if (anfme <= 0) { +// continue; +// } List<LocDetl> locDetls = locDetlService.queryStock(dto.getMatnr(), dto.getBatch(), dto.getFieldParams(), sortParams); if (locDetls.isEmpty()) { MergePreviewResultDto resultDto = new MergePreviewResultDto(); resultDto.sync(dto); resultDto.setLocs(new ArrayList<>()); + resultDto.setType(LocAreaTypeSts.LOC_AREA_TYPE_UTC.desc); resultDto.setOrderIds(dto.getOrderIds()); resultDto.setAnfme(dto.getAnfme()); resultDtos.add(resultDto); @@ -627,7 +646,7 @@ MergePreviewResultDto resultDto = new MergePreviewResultDto(); resultDto.sync(dto); resultDto.setOrderIds(dto.getOrderIds()); -// Double anfme = dto.getAnfme(); + Double anfme = dto.getAnfme(); resultDto.setLocs(locDtos); for (LocDetl locDetl : locDetls) { Loc loc = locService.getById(locDetl.getLocId()); @@ -675,6 +694,8 @@ resultDto.setOtherLocs(otherLocDtos); resultDto.setAnfme(dto.getAnfme()); + + resultDto.setType(LocAreaTypeSts.LOC_AREA_TYPE_UTC.desc); resultDtos.add(resultDto); } @@ -1027,11 +1048,11 @@ if (!flatOrders.isEmpty()) { //骞冲簱鍑哄簱 outStockByFlat(flatOrders, wave); - } - - if (!tucOrders.isEmpty()) { + } else if (!tucOrders.isEmpty()) { //CTU鍑哄簱 outStockByTUC(tucOrders, wave); + } else { + throw new CoolException("搴撳瓨涓嶈冻"); } } @@ -1132,7 +1153,8 @@ throw new CoolException("褰撳墠娉㈡璁㈠崟涓嶅瓨鍦紒锛�"); } - List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id).orderByAsc(CacheSite::getChannel)); + List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>() + .eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id).eq(CacheSite::getChannel,task.getTargetSite())); if (cacheSites.isEmpty()) { throw new CoolException("缂撳瓨绔欑┖闂翠笉瓒筹紝璇风◢鍚庡啀璇�"); @@ -1147,6 +1169,7 @@ cacheSite.setOrderId(orders.get(i).getId()); cacheSite.setOrderNo(orders.get(i).getOrderNo()); cacheSite.setSiteStatus(CacheSiteStatusType.R.id); + cacheSite.setBarcode(loc.getBarcode()); cacheSite.setUpdateTime(new Date()); if (!cacheSiteService.updateById(cacheSite)) { throw new CoolException("缂撳瓨绔欐洿鏂板け璐�"); @@ -1410,15 +1433,14 @@ } CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, order.getId())); - if (cacheSite == null) { - throw new CoolException("缂撳瓨绔欎笉瀛樺湪"); - } - cacheSite.setSiteStatus(CacheSiteStatusType.O.id); - cacheSite.setOrderId(null); - cacheSite.setOrderNo(null); - cacheSite.setUpdateTime(new Date()); - if (!cacheSiteService.updateById(cacheSite)) { - throw new CoolException("缂撳瓨绔欐竻绌哄け璐�"); + if (cacheSite != null) { + cacheSite.setSiteStatus(CacheSiteStatusType.O.id); + cacheSite.setOrderId(null); + cacheSite.setOrderNo(null); + cacheSite.setUpdateTime(new Date()); + if (!cacheSiteService.updateById(cacheSite)) { + throw new CoolException("缂撳瓨绔欐竻绌哄け璐�"); + } } } -- Gitblit v1.9.1