From a1a7c03eae40f4b0344fce652e1a240cf5283624 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期五, 13 九月 2024 16:37:42 +0800 Subject: [PATCH] #合并订单出库,统一转波次出库前最新代码 --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 157 insertions(+), 4 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 f0a908f..d6be710 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 @@ -4,8 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.framework.exception.CoolException; 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.CacheSiteStatusType; import com.zy.asrs.wms.asrs.entity.enums.LocStsType; -import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType; import com.zy.asrs.wms.asrs.entity.param.*; import com.zy.asrs.wms.asrs.entity.*; import com.zy.asrs.wms.asrs.service.*; @@ -52,7 +53,16 @@ private OperationPortService operationPortService; @Autowired private OrderUtils orderUtils; - + @Autowired + private OrderNoRuleService orderNoRuleService; + @Autowired + private WaveService waveService; + @Autowired + private WaveDetlService waveDetlService; + @Autowired + private CacheSiteService cacheSiteService; + @Autowired + private WaveSeedService waveSeedService; /** * 鍑哄簱 @@ -530,10 +540,12 @@ } @Transactional - public void orderOutMerge(List<OrderOutMergeParam> params) { - if(params == null){ + public void orderOutMerge(OrderOutMergeParamDto dto) { + if(dto == null){ throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); } + + List<OrderOutMergeParam> params = dto.getList(); if (params.isEmpty()) { throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); @@ -640,6 +652,7 @@ map.put(orderOutMergeDto.getLocId(), list); } + List<TaskDetl> taskDetls = new ArrayList<>(); for (Map.Entry<Long, List<OrderOutMergeDto>> entry : map.entrySet()) { Long locId = entry.getKey(); List<OrderOutMergeDto> list = entry.getValue(); @@ -711,6 +724,8 @@ throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触"); } } + + taskDetls.add(taskDetl); } //搴撲綅F => R @@ -723,6 +738,144 @@ } + if (dto.getWaveId() != null) { + HashMap<Long, List<TaskDetl>> orderMap = new HashMap<>(); + for (TaskDetl taskDetl : taskDetls) { + Long orderId = taskDetl.getOrderId(); + + List<TaskDetl> list = orderMap.get(orderId); + if (list == null) { + list = new ArrayList<>(); + } + + list.add(taskDetl); + orderMap.put(orderId, list); + } + + for (Map.Entry<Long, List<TaskDetl>> entry : orderMap.entrySet()) { + List<TaskDetl> list = entry.getValue(); + + List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id)); + if (cacheSites.isEmpty()) { + throw new CoolException("缂撳瓨绔欑┖闂翠笉瓒筹紝璇风◢鍚庡啀璇�"); + } + CacheSite cacheSite = cacheSites.get(0); + + Long orderId = null; + String orderNo = null; + for (TaskDetl taskDetl : list) { + orderId = taskDetl.getOrderId(); + orderNo = taskDetl.getOrderNo(); + Long orderDetlId = taskDetl.getDetlId(); + + WaveSeed waveSeed = new WaveSeed(); + waveSeed.setSiteId(cacheSite.getId()); + waveSeed.setSiteNo(cacheSite.getSiteNo()); + waveSeed.setOrderDetlId(orderDetlId); + waveSeed.setTaskDetlId(taskDetl.getId()); + waveSeed.setAnfme(taskDetl.getAnfme()); + waveSeed.setWorkQty(0D); + if (!waveSeedService.save(waveSeed)) { + throw new CoolException("娉㈡鎾鍒涘缓澶辫触"); + } + } + + if(orderId == null){ + continue; + } + + cacheSite.setOrderId(orderId); + cacheSite.setOrderNo(orderNo); + cacheSite.setSiteStatus(CacheSiteStatusType.R.id); + cacheSite.setUpdateTime(new Date()); + if (!cacheSiteService.updateById(cacheSite)) { + throw new CoolException("缂撳瓨绔欐洿鏂板け璐�"); + } + + } + } + + } + + @Transactional + public void generateWave(List<Long> orderIds) { + if (orderIds == null) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); + } + + if (orderIds.isEmpty()) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); + } + + List<Order> orderList = orderService.listByIds(orderIds); + if (orderList.isEmpty()) { + throw new CoolException("璁㈠崟涓嶅瓨鍦�"); + } + + for (Order order : orderList) { + if (order.getWaveId() != null) { + throw new CoolException("褰撳墠璁㈠崟涓凡缁忕敓鎴愭尝娆�"); + } + } + + String waveNo = orderNoRuleService.getOrderNo(3); + Wave wave = new Wave(); + wave.setWaveNo(waveNo); + wave.setWaveType(0); + if (!waveService.save(wave)) { + throw new CoolException("娉㈡鐢熸垚澶辫触"); + } + + for (Order order : orderList) { + WaveDetl waveDetl = new WaveDetl(); + waveDetl.setWaveNo(waveNo); + waveDetl.setWaveId(wave.getId()); + waveDetl.setOrderId(order.getId()); + waveDetl.setOrderNo(order.getOrderNo()); + if (!waveDetlService.save(waveDetl)) { + throw new CoolException("娉㈡鏄庣粏鐢熸垚澶辫触"); + } + + order.setWaveId(wave.getId()); + order.setWaveNo(waveNo); + order.setUpdateTime(new Date()); + if (!orderService.updateById(order)) { + throw new CoolException("璁㈠崟鍙嶅啓娉㈡澶辫触"); + } + } + + } + + @Transactional + public void cancelWave(List<Long> waveIds) { + if (waveIds == null) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); + } + + if (waveIds.isEmpty()) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); + } + + List<Wave> waves = waveService.listByIds(waveIds); + if (waves.isEmpty()) { + throw new CoolException("娉㈡涓嶅瓨鍦�"); + } + + for (Wave wave : waves) { + List<WaveDetl> waveDetls = waveDetlService.list(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, wave.getId())); + for (WaveDetl waveDetl : waveDetls) { + Order order = orderService.getById(waveDetl.getOrderId()); + order.setWaveId(null); + order.setWaveNo(null); + if (!orderService.updateById(order)) { + throw new CoolException("璁㈠崟鍙嶅啓澶辫触"); + } + + waveDetlService.removeById(waveDetl.getId()); + } + + waveService.removeById(wave.getId()); + } } -- Gitblit v1.9.1