From d0226747665355acecd5b4f2b5c0beb020586729 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 17 一月 2025 15:37:32 +0800
Subject: [PATCH] # 23. PDA拣货单据,勾选或点击确认按钮后,完成当前单据 (已完成) 24. PDA出库成功后,界面数据重置,避免重复操作  (已修复) 25. PDA接口请求,添加一个Loading遮档  (已修复) 27. 非平库单据,在平库可做入库操作  (已修复) 28. 平库已组拖数据,组拖完成后依然可组拖  (已修复) 29. 平库入库后,订单明细没有添加(已修复) 30. 平库入库后,单据类型没有修改(已修复) 31. 没有绑定播种位,不能进行播种,前后端都需加判定(已修复) 33. 平库入库未修改入库已完成数量(已修复) 34. cacheSite缓存站点逻辑需重新梳理,入库生成波次时(已完成) 35. PDA添加发货确认,默认全选 (已修复) 36. 大屏获取任务时,是由容器到达的拖盘码确认通知 (已修复) 37. 拣货单序号不显示 问题修复 (已修复) 42. pda发货确认,添加不同颜色区分是否全部完成拣货,绿色全部拣货完成,红色完成部分拣货(已修复) 43. CTU入库完成后,订单明细没有删除,执行中数量清空(已修复) 44. 平库入库完成后,历史档明细完成数量没有更新 (已修复) 45. PDA料号不显示  (已修复) 46. 发货完成后,波次管理数据未加入历史档 (已修复)

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java |  181 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 174 insertions(+), 7 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
index 965c041..16e47ac 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
@@ -2,22 +2,22 @@
 
 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.dto.PickSheetDetlDto;
+import com.zy.asrs.wms.asrs.entity.dto.ShippingOrderDetlDto;
 import com.zy.asrs.wms.asrs.entity.enums.*;
 import com.zy.asrs.wms.asrs.entity.enums.OrderType;
 import com.zy.asrs.wms.asrs.entity.param.BatchMergeOrdersParam;
 import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam;
 import com.zy.asrs.wms.asrs.entity.param.PakinOnShelvesParams;
-import com.zy.asrs.wms.asrs.mapper.CacheSiteMapper;
-import com.zy.asrs.wms.asrs.mapper.OrderDetlLogMapper;
-import com.zy.asrs.wms.asrs.mapper.OrderDetlMapper;
-import com.zy.asrs.wms.asrs.mapper.SeedSitesMapper;
+import com.zy.asrs.wms.asrs.mapper.*;
 import com.zy.asrs.wms.asrs.service.*;
 import com.zy.asrs.wms.system.entity.Host;
 import com.zy.asrs.wms.system.service.HostService;
 import io.netty.util.internal.StringUtil;
+import org.aspectj.weaver.ast.Or;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -61,6 +61,12 @@
     @Autowired
     private WaveService waveService;
     @Autowired
+    private WaveLogService waveLogService;
+    @Autowired
+    private CacheSiteService cacheSiteService;
+    @Autowired
+    WaveDetlLogService waveDetlLogService;
+    @Autowired
     private WaveDetlService waveDetlService;
     @Autowired
     private CacheSiteMapper cacheSiteMapper;
@@ -69,9 +75,13 @@
     private SeedSitesMapper seedSitesMapper;
     @Autowired
     private OrderDetlMapper orderDetlMapper;
-
+    @Autowired
+    private WaveSeedMapper waveSeedMapper;
+    @Autowired
+    private WaveSeedLogService waveSeedLogService;
     @Autowired
     private OrderDetlLogService orderDetlLogService;
+
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -204,7 +214,6 @@
             }
             //淇敼璁㈠崟鐘舵�佷负宸插畬鎴�
             order.setOrderSettle(OrderSettleType.COMPLETE.val());
-
             OrderLog orderLog = new OrderLog();
             BeanUtils.copyProperties(order, orderLog);
             if (!orderLogService.save(orderLog)) {
@@ -222,6 +231,8 @@
         detls.forEach(delt ->{
             OrderDetlLog detlLog = new OrderDetlLog();
             BeanUtils.copyProperties(delt, detlLog);
+            detlLog.setQty(delt.getWorkQty());
+            detlLog.setWorkQty(0.0);
             detlLogs.add(detlLog);
         });
 
@@ -373,9 +384,17 @@
             if (Objects.isNull(order)) {
                 throw new CoolException("缁戝畾璁㈠崟涓嶅瓨鍦紒锛�");
             }
-            siteNo.setOrderNo(order.getOrderNo()).setOrderId(order.getId()).setSiteStatus(CacheSiteStatusType.R.id);
+            siteNo.setOrderNo(order.getOrderNo()).setOrderId(order.getId()).setSiteStatus(CacheSiteStatusType.R.id).setBarcode(param.get("barcode").toString());
             if (cacheSiteMapper.updateById(siteNo) < 1) {
                 throw new CoolException("璁㈠崟鎾浣嶇粦瀹氬け璐ワ紒锛�" );
+            }
+
+            int update = waveSeedMapper.update(new LambdaUpdateWrapper<WaveSeed>()
+                    .eq(WaveSeed::getOrderNo, order.getOrderNo())
+                    .set(WaveSeed::getSiteId, siteNo.getId())
+                    .set(WaveSeed::getSiteNo, siteNo.getSiteNo()));
+            if (update < 1) {
+                throw new CoolException("鎾绔欑偣鏇存柊澶辫触锛侊紒");
             }
         } else {
             if (StringUtil.isNullOrEmpty(siteNo.getOrderNo())) {
@@ -389,4 +408,152 @@
         return true;
     }
 
+    @Override
+    public R selectShippingDetl(Map<String, Object> params) {
+        //鍒ゆ柇璁㈠崟鏄惁涓虹┖
+        if (StringUtil.isNullOrEmpty((String) params.get("orderNo"))) {
+            throw new CoolException("璁㈠崟缂栫爜鍙蜂笉鑳戒负绌猴紒锛�");
+        }
+        String orderNo = params.get("orderNo").toString();
+        Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderNo));
+        if (Objects.isNull(order)) {
+            throw new CoolException("璁㈠崟涓嶅瓨鍦紒锛�");
+        }
+        if (!order.getOrderType().equals(OrderType.UTC_OUT_ORDER.id)) {
+            throw new CoolException("璁㈠崟涓哄叆搴撳崟鎹紝涓嶈兘鍙戣揣锛侊紒");
+        }
+
+        List<ShippingOrderDetlDto> waveSeeds = waveSeedMapper.selectShippingOrderDtel(orderNo);
+
+        return R.ok(waveSeeds);
+    }
+
+    /**
+     * 鍙戣揣鍗曟槑缁嗙‘璁�
+     * 1. 鍑哄簱淇敼璁㈠崟瀹屾垚鐘舵�侊紝鍒ゆ柇璁㈠崟鏄惁瀹屾垚锛屽畬鎴愬姞鍏ュ巻鍙叉。锛屾湭瀹屾垚淇敼璁㈠崟宸插畬鎴愭暟閲�
+     * 2. 鍒犻櫎璁㈠崟宸插畬鎴愭挱绉嶆槑缁嗕俊鎭�
+     * 3. 娓呴櫎闆嗚揣鍖虹粦瀹氭暟鎹�
+     * @param params
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R confirmShippingDetl(List<ShippingOrderDetlDto> params) {
+        if (params.isEmpty()) {
+            throw new CoolException("鍙戣揣鍗曟嵁鏄庣粏涓虹┖锛屼笉鍙墽琛屽彂璐ф搷浣滐紒锛�");
+        }
+        params.forEach(order -> {
+            OrderDetl byId = orderDetlService.getById(order.getId());
+            if (Objects.isNull(byId)) {
+                throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�");
+            }
+            OrderDetlLog orderDetlLog = new OrderDetlLog();
+            BeanUtils.copyProperties(byId, orderDetlLog);
+            orderDetlLog.setQty(order.getWorkQty());
+            orderDetlLog.setWorkQty(0.0);
+            if (!orderDetlLogService.save(orderDetlLog)) {
+                throw new CoolException("璁㈠崟鏄庣粏杞巻鍙叉。澶辫触锛侊紒");
+            }
+
+            //瀹屽叏鎷h揣锛岃鍗曞畬鎴愬垹闄ゅ師濮嬭鍗曟槑缁�
+            //new BigDecimal(order.getAnfme()).compareTo(new BigDecimal(order.getWorkQty())) == 0
+            if (new BigDecimal(order.getAnfme()).compareTo(new BigDecimal(order.getWorkQty())) == 0) {
+                if (!orderDetlService.removeById(byId)) {
+                    throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�");
+                }
+            } else { //閮ㄥ垎鎷h揣
+                byId.setQty(order.getWorkQty() + byId.getQty());
+                byId.setWorkQty(0.0);
+                if (!orderDetlService.updateById(byId)) {
+                    throw new CoolException("閮ㄥ垎鎷f枡鏄庣粏鏇存柊澶辫触锛侊紒");
+                }
+            }
+
+            List<WaveSeed> waveSeeds = waveSeedMapper.selectList(new LambdaQueryWrapper<WaveSeed>().eq(WaveSeed::getOrderDetlId, order.getId()));
+            //fixme 璁㈠崟鏄庣粏鏈挱绉嶏紝榛樿鍙彂璐�
+            if (!waveSeeds.isEmpty()) {
+                ArrayList<WaveSeedLog> waveSeedLogs = new ArrayList<>();
+                waveSeeds.forEach(seed -> {
+                   WaveSeedLog waveSeedLog = new WaveSeedLog();
+                   BeanUtils.copyProperties(seed, waveSeedLog);
+                   waveSeedLog.setId(null);
+                    waveSeedLogs.add(waveSeedLog);
+               });
+                if (!waveSeedLogService.saveBatch(waveSeedLogs)) {
+                    throw new CoolException("娉㈡槑鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
+                }
+            }
+            //鍒犻櫎鎾鏄庣粏淇℃伅
+            if (waveSeedMapper.deleteByIds(waveSeeds) < 1) {
+                throw new CoolException("鎾鏄庣粏鍒犻櫎鎼虹▼锛侊紒");
+            }
+        });
+
+        //鑾峰彇褰撳墠涓婁紶鎵�鏈夎鍗曞彿
+        Set<String> orderNoSet = params.stream().map(ShippingOrderDetlDto::getOrderNo).collect(Collectors.toSet());
+        if (orderNoSet.isEmpty()) {
+            throw new CoolException("涓诲崟淇℃伅涓嶅瓨鍦紝璇锋牳瀵瑰嚭搴撹鍗曪紒锛�");
+        }
+
+        List<Order> orderList = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getOrderNo, orderNoSet));
+        if (orderList.isEmpty()) {
+            throw new CoolException("璁㈠崟涓嶅瓨鍦紒锛�");
+        }
+        orderList.forEach(one -> {
+            OrderLog orderLog = new OrderLog();
+            BeanUtils.copyProperties(one, orderLog);
+            orderLog.setOrderSettle(OrderSettleType.COMPLETE.val());
+
+            if (!orderLogService.save(orderLog)) {
+                throw new CoolException("鍘熷璁㈠崟杞巻鍙叉。澶辫触锛侊紒");
+            }
+            //鏌ヨ褰撳墠璁㈠崟涓嬪惁杩樻湁鏄庣粏瀛樺湪
+            List<OrderDetl> orders = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().in(OrderDetl::getOrderNo, one.getOrderNo()));
+            //璁㈠崟鏄庣粏涓虹┖锛屽垯鍒犻櫎涓诲崟
+            if (orders.isEmpty()) {
+                if (!orderService.remove(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, one.getOrderNo()))) {
+                    throw new CoolException("鍘熷璁㈠崟鍒犻櫎澶辫触锛侊紒");
+                }
+            } else { //涓嶄负绌猴紝淇敼璁㈠崟鐘舵�侊紝鍙噸鏂扮粍鎷�
+                one.setOrderSettle(OrderSettleType.INIT.val());
+                if (orderService.updateById(one));
+            }
+        });
+
+        Set<Long> waveIds = orderList.stream().map(Order::getWaveId).collect(Collectors.toSet());
+        if (waveIds.isEmpty()) {
+            throw new CoolException("娉㈡淇℃伅涓虹┖锛侊紒");
+        }
+        List<Wave> waves = waveService.list(new LambdaQueryWrapper<Wave>().eq(Wave::getId, 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("娉㈡鍒犻櫎澶辫触");
+            }
+        }
+
+        return R.ok("鍙戣揣瀹屾垚锛侊紒");
+    }
+
 }

--
Gitblit v1.9.1