From 11b3ac7e9f6bc9144ddd7a5261cf69796f38d7b3 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期六, 07 九月 2024 13:51:31 +0800
Subject: [PATCH] #

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java |  110 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 91 insertions(+), 19 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java
index 7a13a1a..d477f27 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java
@@ -5,23 +5,23 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zy.asrs.wms.asrs.entity.LocDetl;
-import com.zy.asrs.wms.asrs.entity.LocDetlField;
-import com.zy.asrs.wms.asrs.entity.ViewLocDetl;
+import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
 import com.zy.asrs.wms.asrs.entity.param.FieldParam;
 import com.zy.asrs.wms.asrs.entity.param.FieldSortParam;
 import com.zy.asrs.wms.asrs.mapper.LocDetlMapper;
 import com.zy.asrs.wms.asrs.mapper.ViewLocDetlMapper;
+import com.zy.asrs.wms.asrs.service.LanewayRuleService;
 import com.zy.asrs.wms.asrs.service.LocDetlFieldService;
 import com.zy.asrs.wms.asrs.service.LocDetlService;
+import com.zy.asrs.wms.asrs.service.LocService;
 import com.zy.asrs.wms.common.domain.BaseParam;
 import com.zy.asrs.wms.common.domain.PageParam;
 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.*;
 
 @Service("locDetlService")
 public class LocDetlServiceImpl extends ServiceImpl<LocDetlMapper, LocDetl> implements LocDetlService {
@@ -30,6 +30,10 @@
     private ViewLocDetlMapper viewLocDetlMapper;
     @Autowired
     private LocDetlFieldService locDetlFieldService;
+    @Autowired
+    private LocService locService;
+    @Autowired
+    private LanewayRuleService lanewayRuleService;
 
     @Override
     public PageParam<ViewLocDetl, BaseParam> getPage(PageParam<ViewLocDetl, BaseParam> pageParam, QueryWrapper<ViewLocDetl> buildWrapper) {
@@ -88,22 +92,90 @@
         return list;
     }
 
-    /**
-     * 鏍规嵁鍑哄簱鏉′欢鏌ヨ绗﹀悎鐨勫簱瀛�
-     * @param param 鏌ヨ鏉′欢
-     * @param sortParam 鎺掑簭瀛楁
-     * @return
-     */
     @Override
-    public List<LocDetl> listSuitableMat( List<FieldParam> param, List<FieldSortParam> sortParam) {
-        List<Map<String, Object>> stock = viewLocDetlMapper.listSuitableMat(param, sortParam);
+    public List<LocDetl> queryStock(String matnr, String batch, List<FieldParam> param) {
+        return queryStock(matnr, batch, param, null);
+    }
+
+    @Override
+    public List<LocDetl> queryStock(String matnr, String batch, List<FieldParam> param, List<FieldSortParam> sortParam) {
+        List<Map<String, Object>> list = viewLocDetlMapper.getList(matnr, batch, param, sortParam);
+        List<LocDetl> locDetlsSort = resortDetls(list);
+        return locDetlsSort;
+    }
+
+    private List<LocDetl> resortDetls(List<Map<String, Object>> list) {
         List<LocDetl> locDetls = new ArrayList<>();
-        for (Map<String, Object> objectMap : stock) {
-            LocDetl detl = JSON.parseObject(JSON.toJSONString(objectMap), LocDetl.class);
-            detl.syncFieldMap(objectMap);
-            locDetls.add(detl);
+
+        for (Map<String, Object> map : list) {
+            LocDetl locDetl = JSON.parseObject(JSON.toJSONString(map), LocDetl.class);
+            locDetls.add(locDetl);
         }
-        return locDetls;
+
+        locDetls = parseLocDetl(locDetls);
+
+        List<Long> sortDirctLoc = new ArrayList<>();
+        HashMap<Long, List<LocDetl>> sortMap = new HashMap<>();
+        for (LocDetl locDetl : locDetls) {
+            List<LocDetl> detls = sortMap.get(locDetl.getLocId());
+            if (detls == null) {
+                detls = new ArrayList<>();
+                detls.add(locDetl);
+                sortMap.put(locDetl.getLocId(), detls);
+            }else {
+                detls.add(locDetl);
+                sortMap.put(locDetl.getLocId(), detls);
+            }
+
+            Loc loc = locService.getById(locDetl.getLocId());
+            if (loc == null) {
+                continue;
+            }
+
+            if(!loc.getLocStsId().equals(LocStsType.F.val())){
+                continue;
+            }
+
+            //鑾峰彇搴撲綅鎵�鍦ㄥ贩閬�
+            LanewayRule lanewayRule = lanewayRuleService.getLaneByLoc(loc);
+            if(lanewayRule == null) {
+                throw new CoolException("搴撲綅鏈厤缃贩閬�");
+            }
+
+            //鑾峰彇搴撲綅鏂瑰悜
+            List<Integer> direction = null;
+            if (lanewayRule.getLaneX$().contains(loc.getRow1())) {
+                direction = lanewayRule.getLaneX$();
+            }else {
+                direction = lanewayRule.getLaneY$();
+            }
+            Collections.reverse(direction);
+
+            for (Integer row : direction) {
+                Loc one = locService.getOne(new LambdaQueryWrapper<Loc>()
+                        .eq(Loc::getRow1, row)
+                        .eq(Loc::getBay1, loc.getBay1())
+                        .eq(Loc::getLev1, loc.getLev1()));
+                if (one == null) {
+                    continue;
+                }
+
+                sortDirctLoc.add(one.getId());
+            }
+        }
+
+        List<LocDetl> sortDirctDetls = new ArrayList<>();
+
+        for (Long locId : sortDirctLoc) {
+            List<LocDetl> detls = sortMap.get(locId);
+            if(detls == null) {
+                continue;
+            }
+
+            sortDirctDetls.addAll(detls);
+        }
+
+        return sortDirctDetls;
     }
 
 }

--
Gitblit v1.9.1