From a15ad9309f383153d4f5a95a044fb19e882fff55 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 18 七月 2025 15:19:52 +0800
Subject: [PATCH] 平库组库功能优化

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java |   73 ++++++++++++++++++++++++++++++++++++
 1 files changed, 73 insertions(+), 0 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 179db4a..6b53069 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,20 +1,26 @@
 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 {
@@ -39,8 +45,11 @@
     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("鍙傛暟涓嶈兘涓虹┖");
@@ -141,6 +150,7 @@
                 cacheSite.setOrderId(null);
                 cacheSite.setOrderNo(null);
                 cacheSite.setPlatformId(null);
+                cacheSite.setBarcode(null);
                 cacheSite.setPlatformNo(null);
                 cacheSite.setUpdateTime(new Date());
                 if (!cacheSiteService.updateById(cacheSite)) {
@@ -163,4 +173,67 @@
         }
 
     }
+
+    @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<CacheSite> list = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>()
+                .eq(CacheSite::getOrderId, platform.getOrderId()));
+        if (list.isEmpty()) {
+            throw new CoolException("璁㈠崟鏈粦瀹氭挱绉嶅簱浣嶏紝璇峰畬鎴愭嫞璐у悗锛屽啀鎵撳嵃璁㈠崟锛侊紒");
+        }
+
+        if (!cacheSiteService.update(new LambdaUpdateWrapper<CacheSite>()
+                .eq(CacheSite::getOrderId, platform.getOrderId())
+                .set(CacheSite::getPlatformId, pl.getId())
+                .set(CacheSite::getPlatformNo, pl.getPlatformNo()))) {
+            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<>();
+        for (WaveSeed waveSeed : waveSeeds) {
+            PlatformDetl platformDetl = new PlatformDetl();
+            BeanUtils.copyProperties(waveSeed, platformDetl);
+            platformDetl.setPlatformId(pl.getId());
+            platformDetl.setPlatformNo(pl.getPlatformNo());
+
+            List<PlatformDetl> plats = platformDetlService.list(new LambdaQueryWrapper<PlatformDetl>()
+                    .eq(PlatformDetl::getTaskDetlId, waveSeed.getTaskDetlId())
+                    .eq(PlatformDetl::getOrderDetlId, waveSeed.getOrderDetlId())
+                    .eq(PlatformDetl::getMatnr, waveSeed.getMatnr()));
+            if (!plats.isEmpty()) {
+                continue;
+            }
+            detls.add(platformDetl);
+        }
+
+        if (!detls.isEmpty()) {
+            if (!platformDetlService.saveOrUpdateBatch(detls)) {
+                throw new CoolException("闆嗚揣鍖烘槑缁嗕繚瀛樺け璐ワ紒锛�");
+            }
+        }
+
+        return R.ok("缁戝畾鎴愬姛锛侊紒");
+    }
 }

--
Gitblit v1.9.1