自动化立体仓库 - WMS系统
lty
2025-05-19 b10df09872f788e8ca75b9b3f3165265c8cf32c3
src/main/java/com/zy/common/model/TaskDto.java
@@ -19,6 +19,7 @@
    private String locNo;
    private Integer staNo;
    private List<LocDetlDto> locDetlDtos = new ArrayList<>();
    private List<LocDto> locDtos;
@@ -67,56 +68,87 @@
        return null;
    }
    public boolean isAll(){
        // 汇总不考虑批号
        List<DetlDto> detlDtos = new ArrayList<>();
        for (LocDto locDto : this.getLocDtos()) {
            DetlDto dto = new DetlDto(locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme());
            if (DetlDto.has(detlDtos, dto)) {
                DetlDto detlDto = DetlDto.find(detlDtos, locDto.getMatnr(), dto.getBatch());
                assert detlDto != null;
                detlDto.setAnfme(detlDto.getAnfme() + locDto.getAnfme());
            } else {
                detlDtos.add(new DetlDto(locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme()));
            }
        }
        // 查询当前库位号所有的库存明细
        LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class);
        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", this.locNo));
        if (locDetls == null || locDetls.isEmpty()){
            throw new CoolException("检索库存明细失败,库位号=" + this.locNo);
        }
        int sameNumber = 0;
        for (LocDetl locDetl : locDetls) {
            Iterator<DetlDto> iterator = detlDtos.iterator();
            while (iterator.hasNext()) {
                DetlDto dto = iterator.next();
                if (!dto.getMatnr().equals(locDetl.getMatnr())) {
                    continue;
                }
                if (Cools.isEmpty(dto.getBatch()) && !Cools.isEmpty(locDetl.getBatch())) {
                    continue;
                }
                if (!Cools.isEmpty(dto.getBatch()) && Cools.isEmpty(locDetl.getBatch())) {
                    continue;
                }
                if (!Cools.isEmpty(dto.getBatch()) && !Cools.isEmpty(locDetl.getBatch())) {
                    if (!dto.getBatch().equals(locDetl.getBatch())) {
                        continue;
                    }
                }
                if (dto.getAnfme() > locDetl.getAnfme()) {
                    throw new CoolException("服务器内部错误");
                }
                if (dto.getAnfme().equals(locDetl.getAnfme())) {
                    sameNumber++;
                    iterator.remove();
                    break;
                }
            }
        }
        return sameNumber == locDetls.size();
//    public boolean isAll(){
//        // 汇总不考虑序列码
//        List<DetlDto> detlDtos = new ArrayList<>();
//        for (LocDto locDto : this.getLocDtos()) {
//            DetlDto dto = new DetlDto(locDto);
//            if (DetlDto.has(detlDtos, dto)) {
//                DetlDto detlDto = DetlDto.find(detlDtos, locDto);
//                assert detlDto != null;
//                detlDto.setAnfme(detlDto.getAnfme() + locDto.getAnfme());
//            } else {
//                detlDtos.add(new DetlDto(locDto));
//            }
//        }
//
//        // 查询当前库位号所有的库存明细
//        LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class);
//        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", this.locNo));
//        if (locDetls == null || locDetls.isEmpty()){
//            throw new CoolException("检索库存明细失败,库位号=" + this.locNo);
//        }
//        int sameNumber = 0;
//        for (LocDetl locDetl : locDetls) {
//            Iterator<DetlDto> iterator = detlDtos.iterator();
//            while (iterator.hasNext()) {
//                DetlDto dto = iterator.next();
//                if (!dto.getMatnr().equals(locDetl.getMatnr())) {
//                    continue;
//                }
//                if (Cools.isEmpty(dto.getBatch()) && !Cools.isEmpty(locDetl.getBatch())) {
//                    continue;
//                }
//                if (!Cools.isEmpty(dto.getBatch()) && Cools.isEmpty(locDetl.getBatch())) {
//                    continue;
//                }
//                if (!Cools.isEmpty(dto.getBatch()) && !Cools.isEmpty(locDetl.getBatch())) {
//                    if (!dto.getBatch().equals(locDetl.getBatch())) {
//                        continue;
//                    }
//                }
//                if (dto.getAnfme() > locDetl.getAnfme()) {
//                    throw new CoolException("服务器内部错误");
//                }
//                if (dto.getAnfme().equals(locDetl.getAnfme())) {
//                    sameNumber++;
//                    iterator.remove();
//                    break;
//                }
//            }
//        }
//        return sameNumber == locDetls.size();
//    }
public boolean isAll(){
    List<LocDetlDto> locDetlDtosCp = new ArrayList<>(this.locDetlDtos);
    // 查询当前库位号所有的库存明细
    LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class);
    List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", this.locNo));
    if (locDetls == null || locDetls.isEmpty()){
        throw new CoolException("检索库存明细失败,库位号=" + this.locNo);
    }
    int sameNumber = 0;
    for (LocDetl locDetl : locDetls) {
        Iterator<LocDetlDto> iterator = locDetlDtosCp.iterator();
        while (iterator.hasNext()) {
            LocDetlDto next = iterator.next();
            if (!next.getLocDetl().getMatnr().equals(locDetl.getMatnr())) {
                continue;
            }
            if (!Cools.eq(next.getLocDetl().getBatch(), locDetl.getBatch())) {
                continue;
            }
            if (next.getCount() > locDetl.getAnfme()) {
                throw new CoolException("服务器内部错误");
            }
            if (next.getCount().equals(locDetl.getAnfme())) {
                sameNumber++;
                iterator.remove();
                break;
            }
        }
    }
    return sameNumber == locDetls.size();
}
}