From 83b51a5a0774ea8ecb9a06304af3b956a21307c8 Mon Sep 17 00:00:00 2001 From: pjb <123456> Date: 星期六, 08 三月 2025 09:06:55 +0800 Subject: [PATCH] CUT库条码T开头,截取后10位 --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java | 396 ++++++++++++++++++++++++++++++++----------------------- 1 files changed, 230 insertions(+), 166 deletions(-) diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java index cdb9aff..0e3f61e 100644 --- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java +++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java @@ -1,166 +1,230 @@ -package com.zy.asrs.wms.asrs.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.zy.asrs.framework.exception.CoolException; -import com.zy.asrs.wms.asrs.entity.*; -import com.zy.asrs.wms.asrs.entity.enums.CacheSiteStatusType; -import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType; -import com.zy.asrs.wms.asrs.entity.param.PlatformShippedParam; -import com.zy.asrs.wms.asrs.mapper.PlatformMapper; -import com.zy.asrs.wms.asrs.service.*; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -@Service("platformService") -public class PlatformServiceImpl extends ServiceImpl<PlatformMapper, Platform> implements PlatformService { - - @Autowired - private PlatformDetlService platformDetlService; - @Autowired - private PlatformDetlLogService platformDetlLogService; - @Autowired - private OrderService orderService; - @Autowired - private OrderDetlService orderDetlService; - @Autowired - private TaskService taskService; - @Autowired - private CacheSiteService cacheSiteService; - @Autowired - private WaveService waveService; - @Autowired - private WaveDetlService waveDetlService; - @Autowired - private WaveLogService waveLogService; - @Autowired - private WaveDetlLogService waveDetlLogService; - - @Override - public void shipped(PlatformShippedParam param) { - if (param == null) { - throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); - } - - if (param.getPlatformId() == null) { - throw new CoolException("闆嗚揣鍖哄煙鍙傛暟涓嶈兘涓虹┖"); - } - - Platform platform = this.getById(param.getPlatformId()); - if(platform == null) { - throw new CoolException("闆嗚揣鍖哄煙鏁版嵁涓嶅瓨鍦�"); - } - - List<PlatformDetl> detls = platformDetlService.list(new LambdaQueryWrapper<PlatformDetl>().eq(PlatformDetl::getPlatformId, platform.getId())); - if (detls.isEmpty()) { - throw new CoolException("闆嗚揣鍖哄煙搴撳瓨涓虹┖"); - } - - ArrayList<Long> orderIds = new ArrayList<>(); - for (PlatformDetl detl : detls) { - if (!orderIds.contains(detl.getOrderId())) { - orderIds.add(detl.getOrderId()); - } - } - - List<Order> orderList = orderService.listByIds(orderIds); - if(orderList.isEmpty()) { - throw new CoolException("璁㈠崟鏁版嵁涓嶅瓨鍦�"); - } - - ArrayList<Long> waveIds = new ArrayList<>(); - for (Order order : orderList) { - waveIds.add(order.getWaveId()); - } - - if (waveIds.isEmpty()) { - throw new CoolException("娉㈡涓嶅瓨鍦�"); - } - - List<Task> waitTasks = taskService.selectWaitWaveOut(waveIds); - if (!waitTasks.isEmpty()) { - throw new CoolException("娉㈡瀛樺湪鏈畬鎴愪换鍔�"); - } - - for (PlatformDetl detl : detls) { - OrderDetl orderDetl = orderDetlService.getById(detl.getOrderDetlId()); - orderDetl.setQty(orderDetl.getQty() + detl.getQty()); - orderDetl.setWorkQty(orderDetl.getWorkQty() - detl.getAnfme()); - orderDetl.setUpdateTime(new Date()); - if (!orderDetlService.updateById(orderDetl)) { - throw new CoolException("璁㈠崟鏄庣粏鏇存柊澶辫触"); - } - } - - List<Wave> waves = waveService.listByIds(waveIds); - for (Wave wave : waves) { - WaveLog waveLog = new WaveLog(); - waveLog.sync(wave); - waveLog.setId(null); - if (!waveLogService.save(waveLog)) { - throw new CoolException("娉㈡杞巻鍙插け璐�"); - } - - List<WaveDetl> waveDetls = waveDetlService.list(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, wave.getId())); - for (WaveDetl waveDetl : waveDetls) { - WaveDetlLog waveDetlLog = new WaveDetlLog(); - waveDetlLog.sync(waveDetl); - waveDetlLog.setId(null); - waveDetlLog.setWaveId(waveLog.getId()); - if (!waveDetlLogService.save(waveDetlLog)) { - throw new CoolException("娉㈡鏄庣粏杞巻鍙插け璐�"); - } - - if (!waveDetlService.removeById(waveDetl.getId())) { - throw new CoolException("娉㈡鏄庣粏鍒犻櫎澶辫触"); - } - } - - if (!waveService.removeById(wave.getId())) { - throw new CoolException("娉㈡鍒犻櫎澶辫触"); - } - } - - List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getWaveId, waveIds)); - for (Order order : orders) { - order.setOrderSettle(OrderSettleType.COMPLETE.val()); - order.setUpdateTime(new Date()); - if (!orderService.updateById(order)) { - throw new CoolException("璁㈠崟鏇存柊澶辫触"); - } - } - - List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getPlatformId, platform.getId())); - for (CacheSite cacheSite : cacheSites) { - if (!cacheSite.getSiteStatus().equals(CacheSiteStatusType.O.id)) { - cacheSite.setSiteStatus(CacheSiteStatusType.O.id); - cacheSite.setOrderId(null); - cacheSite.setOrderNo(null); - cacheSite.setPlatformId(null); - cacheSite.setPlatformNo(null); - cacheSite.setUpdateTime(new Date()); - if (!cacheSiteService.updateById(cacheSite)) { - throw new CoolException("鎾绔欑偣鏇存柊澶辫触"); - } - } - } - - for (PlatformDetl detl : detls) { - PlatformDetlLog platformDetlLog = new PlatformDetlLog(); - platformDetlLog.sync(detl); - platformDetlLog.setId(null); - if (!platformDetlLogService.save(platformDetlLog)) { - throw new CoolException("闆嗚揣鍖哄煙搴撳瓨杞巻鍙插け璐�"); - } - - if (!platformDetlService.removeById(detl.getId())) { - throw new CoolException("闆嗚揣鍖哄煙鍒犻櫎澶辫触"); - } - } - - } -} +package com.zy.asrs.wms.asrs.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.zy.asrs.framework.common.R; +import com.zy.asrs.framework.exception.CoolException; +import com.zy.asrs.wms.asrs.entity.*; +import com.zy.asrs.wms.asrs.entity.enums.CacheSiteStatusType; +import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType; +import com.zy.asrs.wms.asrs.entity.param.BindPlatformParam; +import com.zy.asrs.wms.asrs.entity.param.PlatformShippedParam; +import com.zy.asrs.wms.asrs.mapper.PlatformMapper; +import com.zy.asrs.wms.asrs.service.*; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +@Service("platformService") +public class PlatformServiceImpl extends ServiceImpl<PlatformMapper, Platform> implements PlatformService { + + @Autowired + private PlatformDetlService platformDetlService; + @Autowired + private PlatformDetlLogService platformDetlLogService; + @Autowired + private OrderService orderService; + @Autowired + private OrderDetlService orderDetlService; + @Autowired + private TaskService taskService; + @Autowired + private CacheSiteService cacheSiteService; + @Autowired + private WaveService waveService; + @Autowired + private WaveDetlService waveDetlService; + @Autowired + private WaveLogService waveLogService; + @Autowired + private WaveDetlLogService waveDetlLogService; + @Autowired + private WaveSeedService waveSeedService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void shipped(PlatformShippedParam param) { + if (param == null) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); + } + + if (param.getPlatformId() == null) { + throw new CoolException("闆嗚揣鍖哄煙鍙傛暟涓嶈兘涓虹┖"); + } + + Platform platform = this.getById(param.getPlatformId()); + if(platform == null) { + throw new CoolException("闆嗚揣鍖哄煙鏁版嵁涓嶅瓨鍦�"); + } + + List<PlatformDetl> detls = platformDetlService.list(new LambdaQueryWrapper<PlatformDetl>().eq(PlatformDetl::getPlatformId, platform.getId())); + if (detls.isEmpty()) { + throw new CoolException("闆嗚揣鍖哄煙搴撳瓨涓虹┖"); + } + + ArrayList<Long> orderIds = new ArrayList<>(); + for (PlatformDetl detl : detls) { + if (!orderIds.contains(detl.getOrderId())) { + orderIds.add(detl.getOrderId()); + } + } + + List<Order> orderList = orderService.listByIds(orderIds); + if(orderList.isEmpty()) { + throw new CoolException("璁㈠崟鏁版嵁涓嶅瓨鍦�"); + } + + ArrayList<Long> waveIds = new ArrayList<>(); + for (Order order : orderList) { + waveIds.add(order.getWaveId()); + } + + if (waveIds.isEmpty()) { + throw new CoolException("娉㈡涓嶅瓨鍦�"); + } + + List<Task> waitTasks = taskService.selectWaitWaveOut(waveIds); + if (!waitTasks.isEmpty()) { + throw new CoolException("娉㈡瀛樺湪鏈畬鎴愪换鍔�"); + } + + for (PlatformDetl detl : detls) { + OrderDetl orderDetl = orderDetlService.getById(detl.getOrderDetlId()); + orderDetl.setQty(orderDetl.getQty() + detl.getQty()); + orderDetl.setWorkQty(orderDetl.getWorkQty() - detl.getAnfme()); + orderDetl.setUpdateTime(new Date()); + if (!orderDetlService.updateById(orderDetl)) { + throw new CoolException("璁㈠崟鏄庣粏鏇存柊澶辫触"); + } + } + + List<Wave> waves = waveService.listByIds(waveIds); + for (Wave wave : waves) { + WaveLog waveLog = new WaveLog(); + waveLog.sync(wave); + waveLog.setId(null); + if (!waveLogService.save(waveLog)) { + throw new CoolException("娉㈡杞巻鍙插け璐�"); + } + + List<WaveDetl> waveDetls = waveDetlService.list(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, wave.getId())); + for (WaveDetl waveDetl : waveDetls) { + WaveDetlLog waveDetlLog = new WaveDetlLog(); + waveDetlLog.sync(waveDetl); + waveDetlLog.setId(null); + waveDetlLog.setWaveId(waveLog.getId()); + if (!waveDetlLogService.save(waveDetlLog)) { + throw new CoolException("娉㈡鏄庣粏杞巻鍙插け璐�"); + } + + if (!waveDetlService.removeById(waveDetl.getId())) { + throw new CoolException("娉㈡鏄庣粏鍒犻櫎澶辫触"); + } + } + + if (!waveService.removeById(wave.getId())) { + throw new CoolException("娉㈡鍒犻櫎澶辫触"); + } + } + + List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getWaveId, waveIds)); + for (Order order : orders) { + order.setOrderSettle(OrderSettleType.COMPLETE.val()); + order.setUpdateTime(new Date()); + if (!orderService.updateById(order)) { + throw new CoolException("璁㈠崟鏇存柊澶辫触"); + } + } + + List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getPlatformId, platform.getId())); + for (CacheSite cacheSite : cacheSites) { + if (!cacheSite.getSiteStatus().equals(CacheSiteStatusType.O.id)) { + cacheSite.setSiteStatus(CacheSiteStatusType.O.id); + cacheSite.setOrderId(null); + cacheSite.setOrderNo(null); + cacheSite.setPlatformId(null); + cacheSite.setPlatformNo(null); + cacheSite.setUpdateTime(new Date()); + if (!cacheSiteService.updateById(cacheSite)) { + throw new CoolException("鎾绔欑偣鏇存柊澶辫触"); + } + } + } + + for (PlatformDetl detl : detls) { + PlatformDetlLog platformDetlLog = new PlatformDetlLog(); + platformDetlLog.sync(detl); + platformDetlLog.setId(null); + if (!platformDetlLogService.save(platformDetlLog)) { + throw new CoolException("闆嗚揣鍖哄煙搴撳瓨杞巻鍙插け璐�"); + } + + if (!platformDetlService.removeById(detl.getId())) { + throw new CoolException("闆嗚揣鍖哄煙鍒犻櫎澶辫触"); + } + } + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R bindShippingPlatform(BindPlatformParam platform) { + if (Objects.isNull(platform.getPlatformId())) { + throw new CoolException("闆嗚揣鍖烘爣璇嗕笉鑳戒负绌猴紒锛�"); + } + if (Objects.isNull(platform.getOrderId())) { + throw new CoolException("璁㈠崟缂栫爜涓嶈兘涓虹┖锛侊紒"); + } + if (Objects.isNull(platform.getWaveId())) { + throw new CoolException("娉㈡ID涓嶈兘涓虹┖锛侊紒"); + } + Platform pl = this.getById(platform.getPlatformId()); + if (Objects.isNull(pl)) { + throw new CoolException("闆嗚揣鍖轰笉瀛樺湪锛侊紒"); + } + List<WaveSeed> waveSeeds = waveSeedService.list(new LambdaQueryWrapper<WaveSeed>().eq(WaveSeed::getWaveId, platform.getWaveId()).eq(WaveSeed::getOrderId, platform.getOrderId())); + if (waveSeeds.isEmpty()) { + throw new CoolException("鍒嗘嫞鏄庣粏淇℃伅涓嶅瓨鍦紝鏁版嵁閿欒锛侊紒"); + } + ArrayList<PlatformDetl> detls = new ArrayList<>(); + waveSeeds.forEach(waveSeed -> { + PlatformDetl platformDetl = new PlatformDetl(); + BeanUtils.copyProperties(waveSeed, platformDetl); + platformDetl.setPlatformId(pl.getId()); + platformDetl.setPlatformNo(pl.getPlatformNo()); + + List<PlatformDetl> list = platformDetlService.list(new LambdaQueryWrapper<PlatformDetl>().eq(PlatformDetl::getTaskDetlId, waveSeed.getTaskDetlId()).eq(PlatformDetl::getOrderDetlId, waveSeed.getOrderDetlId()).eq(PlatformDetl::getMatnr, waveSeed.getMatnr())); + if (!list.isEmpty()) { + throw new CoolException("璁㈠崟宸插叆闆嗚揣鍖猴紒锛�"); + } + detls.add(platformDetl); + }); + + if (!platformDetlService.saveOrUpdateBatch(detls)) { + throw new CoolException("闆嗚揣鍖烘槑缁嗕繚瀛樺け璐ワ紒锛�"); + } + + List<CacheSite> list = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, platform.getOrderId())); + if (list.isEmpty()) { + throw new CoolException("璁㈠崟鏈粦瀹氭挱绉嶅簱浣嶏紝璇峰畬鎴愭嫞璐у悗锛屽啀鎵撳嵃璁㈠崟锛侊紒"); + } + + boolean update = cacheSiteService.update(new LambdaUpdateWrapper<CacheSite>() + .eq(CacheSite::getOrderId, platform.getOrderId()) + .set(CacheSite::getPlatformId, pl.getId()) + .set(CacheSite::getPlatformNo, pl.getPlatformNo())); + + if (!update) { + throw new CoolException("鎾澧欑珯鐐圭粦瀹氶泦璐у尯澶辫触锛侊紒"); + } + + return R.ok("缁戝畾鎴愬姛锛侊紒"); + } +} -- Gitblit v1.9.1