From fb4e7fd8575a97467a972028a91484f71985656c Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 12 九月 2024 17:03:47 +0800
Subject: [PATCH] #

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java |  102 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 98 insertions(+), 4 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 8457aec..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
@@ -4,15 +4,18 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.zy.asrs.wms.asrs.entity.LocDetlField;
-import com.zy.asrs.wms.asrs.entity.ViewLocDetl;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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.entity.LocDetl;
 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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;
@@ -27,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) {
@@ -84,4 +91,91 @@
         }
         return list;
     }
+
+    @Override
+    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> map : list) {
+            LocDetl locDetl = JSON.parseObject(JSON.toJSONString(map), LocDetl.class);
+            locDetls.add(locDetl);
+        }
+
+        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