自动化立体仓库 - WMS系统
#
lsh
2025-04-15 7d4d4849daf849f2676899a96ceabd8ade703a32
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