From c6c9b7d3baa822765768c110304d27623f946286 Mon Sep 17 00:00:00 2001
From: pjb <123456>
Date: 星期二, 15 七月 2025 14:29:09 +0800
Subject: [PATCH] `1`
---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java | 157 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 145 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..24de776 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,145 @@
-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.apis.wcs.services.WcsApiService;
+import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.entity.dto.ShippingOrderDetlDto;
+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.*;
+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.*;
+import java.util.stream.Collectors;
+
+@Service("waveSeedService")
+public class WaveSeedServiceImpl extends ServiceImpl<WaveSeedMapper, WaveSeed> implements WaveSeedService {
+
+ @Autowired
+ private OrderService orderMapper;
+ @Autowired
+ private OrderDetlMapper orderDetlMapper;
+ @Autowired
+ private TaskDetlService taskDetlMapper;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private CacheSiteMapper cacheSiteMapper;
+ @Autowired
+ private WcsApiService wcsApiService;
+
+ @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())
+ .setExceStatus(1);
+
+ TaskDetl taskDetl = taskDetlMapper.getOne(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());
+
+ if (detlList.isEmpty()) {
+ if (!orderMapper.update(new LambdaUpdateWrapper<Order>()
+ .eq(Order::getOrderNo, orderDetl.getOrderNo())
+ .set(Order::getPickStatus, OrderPickStatus.ORDER_PICK_STATUS_DONE.val))) {
+ throw new CoolException("鍘熷璁㈠崟涓诲崟鎷h揣鐘舵�佹洿鏂板け璐ワ紒锛�");
+ }
+ } else {
+ if (!orderMapper.update(new LambdaUpdateWrapper<Order>()
+ .eq(Order::getOrderNo, orderDetl.getOrderNo())
+ .set(Order::getPickStatus, OrderPickStatus.ORDER_PICK_STATUS_SECTION.val))) {
+ 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));
+ }
+
+ @Override
+ public List<ShippingOrderDetlDto> selectShippingOrderDtel(String orderNo) {
+ return this.baseMapper.selectShippingOrderDtel(orderNo);
+ }
+}
--
Gitblit v1.9.1