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/WaveSeedServiceImpl.java | 145 ++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 133 insertions(+), 12 deletions(-) diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java index d155b5c..518fd8f 100644 --- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java +++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java @@ -1,12 +1,133 @@ -package com.zy.asrs.wms.asrs.service.impl; - -import com.zy.asrs.wms.asrs.mapper.WaveSeedMapper; -import com.zy.asrs.wms.asrs.entity.WaveSeed; -import com.zy.asrs.wms.asrs.service.WaveSeedService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -@Service("waveSeedService") -public class WaveSeedServiceImpl extends ServiceImpl<WaveSeedMapper, WaveSeed> implements WaveSeedService { - -} +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.exception.CoolException; +import com.zy.asrs.wms.apis.wcs.entity.response.SowSeeds; +import com.zy.asrs.wms.asrs.entity.*; +import com.zy.asrs.wms.asrs.entity.enums.OrderPickStatus; +import com.zy.asrs.wms.asrs.entity.param.WaveSeedReviewParam; +import com.zy.asrs.wms.asrs.mapper.*; +import com.zy.asrs.wms.asrs.service.OrderDetlService; +import com.zy.asrs.wms.asrs.service.WaveSeedService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; + +@Service("waveSeedService") +public class WaveSeedServiceImpl extends ServiceImpl<WaveSeedMapper, WaveSeed> implements WaveSeedService { + + @Autowired + private OrderMapper orderMapper; + @Autowired + private OrderDetlMapper orderDetlMapper; + @Autowired + private TaskDetlMapper taskDetlMapper; + + @Autowired + private CacheSiteMapper cacheSiteMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public void waveSeedReview(WaveSeedReviewParam param) { + if (param == null) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); + } + + if (param.getWaveSeedId() == null) { + throw new CoolException("鎾鏁版嵁涓嶈兘涓虹┖"); + } + + if (param.getReviewNum() == null) { + throw new CoolException("鎾鏁伴噺涓嶈兘涓虹┖"); + } + + if (param.getReviewNum() <= 0) { + throw new CoolException("鎾鏁伴噺闇�瑕佸ぇ浜�0"); + } + + WaveSeed waveSeed = this.getById(param.getWaveSeedId()); + if (waveSeed == null) { + throw new CoolException("鎾鏁版嵁涓嶅瓨鍦�"); + } + + List<CacheSite> sites = cacheSiteMapper.selectList(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderNo, waveSeed.getOrderNo())); + if (sites.isEmpty()) { + throw new CoolException("褰撳墠璁㈠崟鏈粦瀹氭挱绉嶅簱浣嶏紝璇蜂娇鐢≒DA->鍦版爣缁戝畾,鍔熻兘缁戝畾鍚庡啀鎿嶄綔锛侊紒"); + } + + Double stock = Optional.of(waveSeed.getAnfme() - waveSeed.getWorkQty()).orElse(0.0D); + if (stock - param.getReviewNum() < 0) { + throw new CoolException("鎾鏁伴噺宸叉弧"); + } + waveSeed.setWorkQty(waveSeed.getWorkQty() + param.getReviewNum()); + + TaskDetl taskDetl = taskDetlMapper.selectOne(new LambdaQueryWrapper<TaskDetl>().eq(TaskDetl::getId, waveSeed.getTaskDetlId())); + if (Objects.isNull(taskDetl)) { + throw new CoolException("褰撳墠鎾浠诲姟鏄庣粏涓嶅瓨鍦紒锛�"); + } + if (param.getReviewNum() > taskDetl.getAnfme()) { + throw new CoolException("鎷h揣鏁伴噺澶т簬褰撳墠浠诲姟闇�姹傛暟锛�" + taskDetl.getAnfme()); + } + + OrderDetl orderDetl = orderDetlMapper.selectOne(new LambdaUpdateWrapper<OrderDetl>().eq(OrderDetl::getId, waveSeed.getOrderDetlId())); + if (Objects.isNull(orderDetl)) { + throw new CoolException("褰撳墠鎾璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�"); + } + + if (param.getReviewNum() + orderDetl.getQty() > orderDetl.getAnfme()) { + throw new CoolException("璇锋牳瀵规槑缁嗘暟閲忓悗锛屽啀杩涜鎿嶄綔!!"); + } + + //濡傛灉鎷h揣鏁伴噺涓庤鍗曟槑缁嗘暟閲忕浉绛夛紝琛ㄦ槑鎷h揣瀹屾垚 + if (new BigDecimal(param.getReviewNum() + orderDetl.getQty()).compareTo(new BigDecimal(orderDetl.getAnfme())) == 0) { + orderDetl.setPickStatus(OrderPickStatus.ORDER_PICK_STATUS_DONE.val); + } else { + orderDetl.setPickStatus(OrderPickStatus.ORDER_PICK_STATUS_SECTION.val); + } + + if (orderDetlMapper.updateById(orderDetl) < 1) { + throw new CoolException("璁㈠崟鐘舵�佹洿鏂板け璐�!!"); + } + + List<OrderDetl> detls = orderDetlMapper.selectList(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderNo, orderDetl.getOrderNo())); + List<OrderDetl> detlList = detls.stream().filter(ord -> { + return ord.getPickStatus() != OrderPickStatus.ORDER_PICK_STATUS_DONE.val; + }).collect(Collectors.toList()); + + int update; + if (detlList.isEmpty()) { + update = orderMapper.update(new LambdaUpdateWrapper<Order>().eq(Order::getOrderNo, orderDetl.getOrderNo()).set(Order::getPickStatus, OrderPickStatus.ORDER_PICK_STATUS_DONE.val)); + } else { + update = orderMapper.update(new LambdaUpdateWrapper<Order>().eq(Order::getOrderNo, orderDetl.getOrderNo()).set(Order::getPickStatus, OrderPickStatus.ORDER_PICK_STATUS_SECTION.val)); + } + + if (update < 1) { + throw new CoolException("鍘熷璁㈠崟涓诲崟鎷h揣鐘舵�佹洿鏂板け璐ワ紒锛�"); + } + + waveSeed.setUpdateTime(new Date()); + if (!this.updateById(waveSeed)) { + throw new CoolException("鎾澶嶆牳鏇存柊澶辫触"); + } + + } + + @Override + public List<SowSeeds> selectSeedsList() { + return this.baseMapper.getSeedsList(new LambdaQueryWrapper<WaveSeed>().eq(WaveSeed::getStatus, 1).eq(WaveSeed::getDeleted, 0)); + } + + @Override + public int removeSowById(Long id) { + return this.baseMapper.update(new LambdaUpdateWrapper<WaveSeed>().eq(WaveSeed::getId, id).set(WaveSeed::getDeleted, 1).set(WaveSeed::getStatus, 0)); + } +} -- Gitblit v1.9.1