From 669fe984048785873c20fbd0ce8abb3cd52c1fce Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 29 四月 2025 15:22:24 +0800
Subject: [PATCH] 新增出库单优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocAreaMatRelaServiceImpl.java |  121 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 112 insertions(+), 9 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocAreaMatRelaServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocAreaMatRelaServiceImpl.java
index dce36e7..9872363 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocAreaMatRelaServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocAreaMatRelaServiceImpl.java
@@ -4,20 +4,17 @@
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.manager.controller.params.LocAreaMatsParam;
-import com.vincent.rsf.server.manager.entity.LocTypeRela;
-import com.vincent.rsf.server.manager.entity.Matnr;
+import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.mapper.LocAreaMatRelaMapper;
-import com.vincent.rsf.server.manager.entity.LocAreaMatRela;
-import com.vincent.rsf.server.manager.service.LocAreaMatRelaService;
+import com.vincent.rsf.server.manager.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.vincent.rsf.server.manager.service.LocService;
-import com.vincent.rsf.server.manager.service.LocTypeRelaService;
-import com.vincent.rsf.server.manager.service.MatnrService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -31,7 +28,13 @@
     private LocService locService;
 
     @Autowired
+    private MatnrGroupService matnrGroupService;
+
+    @Autowired
     private LocTypeRelaService locTypeRelaService;
+
+    @Autowired
+    private LocTypeService locTypeService;
 
 
     /**
@@ -73,7 +76,8 @@
                     for (Matnr matnrId : matnrIds) {
                         LocAreaMatRela locAreaMatRela = new LocAreaMatRela();
                         locAreaMatRela
-                                .setAreaId(param.getAreaId())
+                                .setAreaMatId(param.getAreaMatId())
+//                                .setAreaId(param.getAreaId())
                                 .setLocId(locId)
                                 .setLocTypeId(typeId)
                                 .setMatnrId(matnrId.getId())
@@ -85,7 +89,9 @@
         }
 
         if (!Objects.isNull(param.getLocId()) && !param.getLocId().isEmpty()) {
-            List<LocTypeRela> list = locTypeRelaService.list(new LambdaQueryWrapper<LocTypeRela>().in(LocTypeRela::getLocId, param.getLocId()).select(LocTypeRela::getTypeId, LocTypeRela::getLocId));
+            List<LocTypeRela> list = locTypeRelaService.list(new LambdaQueryWrapper<LocTypeRela>()
+                    .in(LocTypeRela::getLocId, param.getLocId())
+                    .select(LocTypeRela::getTypeId, LocTypeRela::getLocId));
             if (list.isEmpty()) {
                 throw new CoolException("鏁版嵁閿欒锛氬簱浣嶆湭缁戝畾搴撲綅绫诲瀷锛侊紒");
             }
@@ -94,6 +100,7 @@
                     LocAreaMatRela locAreaMatRela = new LocAreaMatRela();
                     locAreaMatRela
                             .setAreaId(param.getAreaId())
+                            .setAreaMatId(param.getAreaMatId())
                             .setLocId(locTypeRela.getLocId())
                             .setLocTypeId(locTypeRela.getTypeId())
                             .setMatnrId(matnr.getId())
@@ -107,4 +114,100 @@
         }
         return R.ok("缁戝畾鎴愬姛锛侊紒");
     }
+
+    /**
+     * @author Ryan
+     * @description 绉婚櫎鐗╂枡鍒嗙粍涓嬬粦瀹氬叧绯�
+     * @param
+     * @return
+     * @time 2025/3/24 13:33
+     */
+    @Override
+    public Boolean removeByGroupId(Map<String, Object> param) {
+        if (Objects.isNull(param)) {
+            throw new CoolException("鐗╂枡鍒嗙粍ID涓嶈兘涓虹┖锛侊紒");
+        }
+        if (!StringUtils.isBlank(param.get("groupId").toString())) {
+            throw new CoolException("鐗╂枡鍒嗙被涓嶈兘涓虹┖锛侊紒");
+        }
+        if (!StringUtils.isBlank(param.get("areaMatId").toString())) {
+            throw new CoolException("涓诲崟ID涓嶈兘涓虹┖锛侊紒");
+        }
+        if (!this.remove(new LambdaQueryWrapper<LocAreaMatRela>()
+                .eq(LocAreaMatRela::getAreaMatId, Long.parseLong(param.get("areaMatId").toString()))
+                .eq(LocAreaMatRela::getGroupId, Long.parseLong(param.get("groupId").toString())))) {
+            throw new CoolException("鍒犻櫎澶辫触锛侊紒");
+        }
+
+        return true;
+    }
+
+    /**
+     * @author Ryan
+     * @description 绉婚櫎搴撲綅绫诲瀷缁戝畾鍏崇郴
+     * @param
+     * @return
+     * @time 2025/3/24 13:32
+     */
+    @Override
+    public boolean removeByLocType(Map<String, Object> param) {
+        if (Objects.isNull(param)) {
+            throw new CoolException("搴撲綅绫诲瀷ID涓嶈兘涓虹┖锛侊紒");
+        }
+        if (!this.remove(new LambdaQueryWrapper<LocAreaMatRela>()
+                        .eq(LocAreaMatRela::getAreaMatId, Long.parseLong(param.get("areaMatId").toString()))
+                .eq(LocAreaMatRela::getLocTypeId, Long.parseLong(param.get("typeId").toString())))) {
+            throw new CoolException("鍒犻櫎澶辫触锛侊紒");
+        }
+
+        return true;
+    }
+
+    /**
+     * @author Ryan
+     * @description 鑾峰彇鐗╂枡鍒嗙粍
+     * @param
+     * @return
+     * @time 2025/3/24 13:32
+     */
+    @Override
+    public List<MatnrGroup> getAllGroups(Long id) {
+        if (Objects.isNull(id)) {
+            throw new CoolException("涓诲崟ID涓嶈兘涓虹┖锛侊紒");
+        }
+        List<LocAreaMatRela> locAreaMatRelas = this.list(new LambdaQueryWrapper<LocAreaMatRela>().eq(LocAreaMatRela::getAreaMatId, id));
+        if (locAreaMatRelas.isEmpty()) {
+            return new ArrayList<>();
+        }
+        List<Long> longList = locAreaMatRelas.stream().map(LocAreaMatRela::getGroupId).collect(Collectors.toList());
+        List<MatnrGroup> groups = matnrGroupService.list(new LambdaQueryWrapper<MatnrGroup>().in(MatnrGroup::getId, longList));
+        if (groups.isEmpty()) {
+            return new ArrayList<>();
+        }
+        return groups;
+    }
+
+    /**
+     * @author Ryan
+     * @description 鑾峰彇缁戝畾搴撲綅鐗╂枡
+     * @param
+     * @return
+     * @time 2025/3/24 13:36
+     */
+    @Override
+    public List<LocType> getAllLocType(Long id) {
+        if (Objects.isNull(id)) {
+            throw new CoolException("涓诲崟ID涓嶈兘涓虹┖锛侊紒");
+        }
+        List<LocAreaMatRela> locAreaMatRelas = this.list(new LambdaQueryWrapper<LocAreaMatRela>().eq(LocAreaMatRela::getAreaMatId, id));
+        if (locAreaMatRelas.isEmpty()) {
+            return new ArrayList<>();
+        }
+        List<Long> longList = locAreaMatRelas.stream().map(LocAreaMatRela::getLocTypeId).collect(Collectors.toList());
+        List<LocType> list = locTypeService.list(new LambdaQueryWrapper<LocType>().in(LocType::getId, longList));
+        if (list.isEmpty()) {
+            return new ArrayList<>();
+        }
+        return list;
+    }
 }

--
Gitblit v1.9.1