自动化立体仓库 - WMS系统
#
whycq
2025-02-17 4f90066950c61e12f1bc37db49374f7ec31b31bd
#
3个文件已修改
118 ■■■■■ 已修改文件
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WorkService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 111 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -30,7 +30,7 @@
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
src/main/java/com/zy/asrs/service/WorkService.java
@@ -29,6 +29,11 @@
    /**
     * 出库作业
     */
    void startupFullTakeStore2(StockOutParam param, Long userId);
    /**
     * 出库作业
     */
    void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId);
    void stockOut2(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId);
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -161,7 +161,57 @@
    public void startupFullTakeStore(StockOutParam param, Long userId) {
        List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
        List<String> locs = new ArrayList<>();
        List<SameMatCount> sameMatCounts = new ArrayList<>();
        for(StockOutParam.LocDetl one : param.getLocDetls()){
            locs.add(one.getLocNo());
        }
        for (String loc : locs) {
            List<LocDetl> detls = locDetlService.selectByLocNo(loc);
            for (LocDetl detl : detls) {
                for (StockOutParam.LocDetl paramDetls : param.getLocDetls()) {
                    if (paramDetls.getMatnr().equals(detl.getMatnr()) && paramDetls.getBatch().equals(detl.getBatch()) && paramDetls.getLocNo().equals(detl.getLocNo())) {
                        locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), paramDetls.getCount()));
                    }
                }
            }
        }
        // 目标站点状态检测
        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
        // 获取库位明细
        List<LocDetlDto> locDetlDtos = new ArrayList<>();
        for (StockOutParam.LocDetl paramLocDetl : locDetls) {
            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
            }
        }
        for (LocDetlDto locDetlDto:locDetlDtos){
            if (locs.contains(locDetlDto.getLocDetl().getLocNo())){
                locDetlDto.setSign(true);
            }
        }
        if (!locDetlDtos.isEmpty()) {
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
            if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") ){
                // 启动出库开始 101.出库
                stockOut2(staNo, locDetlDtos, null, userId);
            }else {
                throw new CoolException("所选库位存在状态不为F、D的库位,库位号:"+locMast.getLocNo()+" 、当前状态:"+locMast.getLocSts()+"-"+locMast.getLocSts$());
            }
        } else {
            throw new CoolException("库存不存在");
        }
    }
    // 备份之前 startupFullTakeStore 方法
    @Override
    @Transactional
    public void startupFullTakeStore2(StockOutParam param, Long userId) {
        List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
        List<String> locs = new ArrayList<>();
        for (StockOutParam.LocDetl one : param.getLocDetls()) {
            locs.add(one.getLocNo());
        }
@@ -169,37 +219,9 @@
        List<StockOutParam.LocDetl> stockOutParamLocDetlSort = Utils.getStockOutParamLocDetlSort(param.getLocDetls());
        boolean sign = true;
        boolean isfull = false; // 是否够数量
        //Double isOut = 0.0;
        Map<String, Double> isOuts = new HashMap<>();
        Double isOut = 0.0;
        List<String> locNoWeighting = new ArrayList<>();
        log.info("canshu:{}", stockOutParamLocDetlSort);
        for (StockOutParam.LocDetl locDetl : stockOutParamLocDetlSort) {
            if (isOuts.get(locDetl.getMatnr()) == null) {
                isOuts.put(locDetl.getMatnr(), locDetl.getCount());
            } else {
                isOuts.put(locDetl.getMatnr(), isOuts.get(locDetl.getMatnr()) + locDetl.getCount());
            }
        }
        log.info("canshu:{}", JSON.toJSONString(isOuts));
        for (StockOutParam.LocDetl locDetl : stockOutParamLocDetlSort) {
//            SameMatCount smc = new SameMatCount();
//            if (Cools.isEmpty(sameMatCounts)) {
//                smc.setMatnr(locDetl.getMatnr());
//                smc.setNeedOutCount(locDetl.getCount());
//                sameMatCounts.add(smc);
//            } else {
//                for (SameMatCount sameMatCount : sameMatCounts) {
//                    if (sameMatCount.getMatnr().equals(locDetl.getMatnr())) {
//                        sameMatCount.setNeedOutCount(locDetl.getCount() + sameMatCount.getNeedOutCount());
//                        //smc.setMatnr(sameMatCount.getMatnr());
//                        smc.setNeedOutCount(sameMatCount.getNeedOutCount());
//                    }
//                }
//            }
            if (Cools.isEmpty(locNoWeighting)) {
                locNoWeighting.add(locDetl.getLocNo());
            } else {
@@ -208,7 +230,6 @@
                    sign = true;
                }
            }
            if (sign) {
                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
                //获取同一库位组的外侧库位号
@@ -229,44 +250,29 @@
                            //不是相同物料
                            if (!sign) {
                                locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), detl.getAnfme()));
                                System.out.println("1");
                            }
                            continue;
                        }
                        if (!param.getOutSite().equals(214) && !param.getOutSite().equals(114)) {
                            if (detl.getAnfme() >= isOuts.get(detl.getMatnr())) {
                                // if (detl.getAnfme() >= locDetl.getCount()) {
                                locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), isOuts.get(detl.getMatnr())));
                                System.out.println("2");
                                //isOut = locDetl.getCount();
                            if (detl.getAnfme() >= locDetl.getCount()) {
                                locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), locDetl.getCount()));
                                isOut = locDetl.getCount();
                                isfull = true;
                                break;
                            } else {
                                locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), detl.getAnfme()));
                                isOuts.put(detl.getMatnr(), isOuts.get(detl.getMatnr()) - detl.getAnfme());
                                System.out.println(isOuts.get(locDetl.getMatnr()));
                                isOut = detl.getAnfme();
                            }
                        } else {
                            //强制不是相同物料
                            locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), detl.getAnfme()));
//                            System.out.println("4");
                        }
                    }
                }
            }
            if (!isfull && isOuts.get(locDetl.getMatnr()) != null && isOuts.get(locDetl.getMatnr()) > 0) {
                if (locDetl.getCount() >= isOuts.get(locDetl.getMatnr())) {
                    locDetls.add(new StockOutParam.LocDetl(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), isOuts.get(locDetl.getMatnr())));
                    isOuts.put(locDetl.getMatnr(), isOuts.get(locDetl.getMatnr()) - locDetl.getCount());
//                    System.out.println(23);
                } else {
                    locDetls.add(new StockOutParam.LocDetl(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getCount()));
                    isOuts.put(locDetl.getMatnr(), isOuts.get(locDetl.getMatnr()) - locDetl.getCount());
//                    System.out.println("1222");
                }
            if (!isfull) {
                //locDetls.add(new StockOutParam.LocDetl(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getCount() - isOut));
                locDetls.add(new StockOutParam.LocDetl(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getCount() - isOut));
//                locDetls.add(locDetl);
            }
        }
@@ -331,6 +337,7 @@
//        List<StockOutParam.LocDetl> locDetls = param.getLocDetls();
//        ArrayList<String> locNos = new ArrayList<>();
//        List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
//        ArrayList<String> matnrs = new ArrayList<>();//目的做数据去重