From 7d4d4849daf849f2676899a96ceabd8ade703a32 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 15 四月 2025 14:38:01 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |  139 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 137 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 18548ae..2cefd0f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -671,14 +671,149 @@
     @Override
     @Transactional
     public R kittingQuery(CombParam combParam, Long userId) {
-        List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>());
-        return R.ok().add(locDetlList);
+        List<Map<String, Object>> result = new ArrayList<>();
+        List<LocDetl> locDetlResultList = new ArrayList<>();
+        List<LocDetl> locDetlResultListHalf = new ArrayList<>();
+        List<CombParam.CombMat> combMats = combParam.getCombMats();
+        for (CombParam.CombMat combMat : combMats){
+            Wrapper<LocDetl> wrapper = new EntityWrapper<LocDetl>()
+                    .eq("matnr", combMat.getMatnr())
+                    .eq("specs", combMat.getSpecs())
+                    .eq("sku", combMat.getSku())
+                    .eq("origin", "涓嶅湪搴�");
+            List<LocDetl> locDetlList = locDetlService.selectList(wrapper);
+            for (LocDetl locDetl : locDetlList){
+                LocDetlFusion locDetlFusion = getLocDetlFusion(combParam, locDetl.getLocNo());
+                if (locDetlFusion.sign != 0 && locDetlFusion.sign != 9999){
+                    if (locDetlFusion.sign == combMats.size()){
+                        locDetlResultList.add(locDetlFusion.locDetl);
+                    } else {
+                        locDetlResultListHalf.add(locDetlFusion.locDetl);
+                    }
+                }
+            }
+        }
+        for (LocDetl locDetl : locDetlResultList){
+            Map<String, Object> map = new HashMap<>();
+            map.put("locNo", locDetl.getLocNo());
+            map.put("matnr", locDetl.getMatnr());
+            map.put("sku", locDetl.getSku());
+            map.put("anfme", locDetl.getAnfme());
+            map.put("memo", locDetl.getMemo());
+            result.add(map);
+        }
+        for (LocDetl locDetl : locDetlResultListHalf){
+            Map<String, Object> map = new HashMap<>();
+            map.put("locNo", locDetl.getLocNo());
+            map.put("matnr", locDetl.getMatnr());
+            map.put("sku", locDetl.getSku());
+            map.put("anfme", locDetl.getAnfme());
+            map.put("memo", locDetl.getMemo());
+            result.add(map);
+        }
+
+        return R.ok().add(result);
+    }
+
+    public class LocDetlFusion{
+        public Integer sign;
+        public LocDetl locDetl;
+
+        public LocDetlFusion(Integer sign, LocDetl locDetl) {
+            this.sign = sign;
+            this.locDetl = locDetl;
+        }
+    }
+
+    public LocDetlFusion getLocDetlFusion(CombParam combParam,String locNo){
+        LocDetl locDetl = new LocDetl();
+        locDetl.setLocNo(locNo);
+        locDetl.setAnfme(0D);
+        Integer sign = 0;
+        Map<Integer, LocDetl> map = new HashMap<>();
+        List<LocDetl> locDetls= new ArrayList<>();
+
+        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locNo));
+        if (locMast.getLocSts().equals("F")){
+            List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo));
+            for (CombParam.CombMat combMatNow : combParam.getCombMats()){
+                boolean flag = true;
+                while (flag){
+                    flag = false;
+                    for (LocDetl locDetlNow : locDetlList){
+                        if (locDetlNow.getOrigin().equals("涓嶅湪搴�")){
+                            if (combMatNow.getMatnr().equals(locDetlNow.getMatnr())){
+                                if (combMatNow.getAnfme().equals(locDetlNow.getAnfme())){
+                                    LocDetl locDetlAdd = new LocDetl();
+
+                                    locDetlAdd.sync(locDetlNow);
+                                    locDetls.add(locDetlAdd);
+                                    locDetlList.remove(locDetlNow);
+
+                                    sign++;
+                                    combMatNow.setMemo("瀹屽叏鍖归厤");
+                                    break;
+                                } else if (combMatNow.getAnfme()>locDetlNow.getAnfme()){
+                                    double anfme = combMatNow.getAnfme() - locDetlNow.getAnfme();
+                                    combMatNow.setAnfme(anfme);
+
+                                    LocDetl locDetlAdd = new LocDetl();
+                                    locDetlAdd.sync(locDetlNow);
+                                    locDetls.add(locDetlAdd);
+
+                                    locDetlList.remove(locDetlNow);
+                                    flag = true;
+                                    break;
+                                } else if (combMatNow.getAnfme()<locDetlNow.getAnfme()){
+                                    double anfme = locDetlNow.getAnfme() - combMatNow.getAnfme();
+                                    locDetlNow.setAnfme(combMatNow.getAnfme());
+
+                                    LocDetl locDetlAdd = new LocDetl();
+                                    locDetlAdd.sync(locDetlNow);
+                                    locDetls.add(locDetlAdd);
+
+                                    locDetlNow.setAnfme(anfme);
+                                    sign++;
+                                    combMatNow.setMemo("瀹屽叏鍖归厤");
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            if (sign == combParam.getCombMats().size()){
+                if (locDetlList.size() == 0 ){
+                    locDetl.setMemo("瀹屽叏鍖归厤");
+                } else {
+                    locDetl.setMemo("婧㈠嚭鍖归厤");
+                }
+            } else if (locDetls.size() != 0 ){
+                locDetl.setMemo("鏈畬鍏ㄥ尮閰�");
+                sign = 99999999;
+            }
+        }
+        for (LocDetl locDetlNow : locDetls){
+            if (Cools.isEmpty(locDetl.getMatnr())){
+                locDetl.setMatnr(locDetlNow.getMatnr());
+            } else {
+                locDetl.setMatnr(locDetl.getMatnr() + "," + locDetlNow.getMatnr());
+            }
+            if (Cools.isEmpty(locDetl.getSku())){
+                locDetl.setSku(locDetlNow.getSku());
+            } else {
+                locDetl.setSku(locDetl.getSku() + "," + locDetlNow.getSku());
+            }
+            locDetl.setAnfme(locDetlNow.getAnfme() + locDetl.getAnfme());
+        }
+        return new LocDetlFusion(sign,locDetl);
     }
 
     @Override
     @Transactional
     public void kittingCall(String locNo, Long userId) {
 
+
     }
 
     @Override

--
Gitblit v1.9.1