自动化立体仓库 - WMS系统
skyouc
4 天以前 08915b05c42b2ba97a8bb0809aeb48802ae63b46
src/main/java/com/zy/common/model/TaskDto.java
@@ -22,6 +22,10 @@
    private List<LocDto> locDtos;
    private String agvStaNo;
    {
        locDtos = new ArrayList<>();
    }
@@ -34,6 +38,12 @@
    public TaskDto(String locNo, Integer staNo, LocDto locDto) {
        this.locNo = locNo;
        this.staNo = staNo;
        this.locDtos.add(locDto);
    }
    public TaskDto(String locNo, String staNo, LocDto locDto) {
        this.locNo = locNo;
        this.agvStaNo = staNo;
        this.locDtos.add(locDto);
    }
@@ -55,6 +65,31 @@
        return false;
    }
    public static boolean hasAgv(List<TaskDto> list, TaskDto dto) {
        if (Cools.isEmpty(list)) {
            return false;
        }
        for (TaskDto taskDto : list) {
            if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getAgvStaNo().equals(dto.getAgvStaNo())) {
                return true;
            }
        }
        return false;
    }
    public static TaskDto findAgv(List<TaskDto> list, TaskDto dto) {
        if (Cools.isEmpty(list)) {
            return null;
        }
        for (TaskDto taskDto : list) {
            if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getAgvStaNo().equals(dto.getAgvStaNo())) {
                return taskDto;
            }
        }
        return null;
    }
    public static TaskDto find(List<TaskDto> list, TaskDto dto) {
        if (Cools.isEmpty(list)) {
            return null;
@@ -71,13 +106,15 @@
        // 汇总不考虑序列码
        List<DetlDto> detlDtos = new ArrayList<>();
        for (LocDto locDto : this.getLocDtos()) {
            DetlDto dto = new DetlDto(locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme());
            DetlDto dto = new DetlDto(locDto.getMatnr(), locDto.getBatch(),locDto.getBrand(),locDto.getStandby1(),locDto.getStandby2(),locDto.getStandby3(),locDto.getBoxType1(),locDto.getBoxType2(),locDto.getBoxType3(), locDto.getAnfme(), locDto.getThreeCode());
            if (DetlDto.has(detlDtos, dto)) {
                DetlDto detlDto = DetlDto.find(detlDtos, locDto.getMatnr(), dto.getBatch());
                DetlDto detlDto = DetlDto.find(detlDtos, locDto.getMatnr(), dto.getBatch(),dto.getBrand(),dto.getStandby1(),dto.getStandby2(),dto.getStandby3(),dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3());
                assert detlDto != null;
                detlDto.setAnfme(detlDto.getAnfme() + locDto.getAnfme());
            } else {
                detlDtos.add(new DetlDto(locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme()));
                detlDtos.add(new DetlDto(locDto.getMatnr(), locDto.getBatch()
                        ,locDto.getBrand(),locDto.getStandby1(),locDto.getStandby2(),locDto.getStandby3(),locDto.getBoxType1(),locDto.getBoxType2(),locDto.getBoxType3()
                        , locDto.getAnfme(), locDto.getThreeCode()));
            }
        }
@@ -106,8 +143,8 @@
                        continue;
                    }
                }
                if (dto.getAnfme() > locDetl.getAnfme()) {
                    throw new CoolException("服务器内部错误");
                if (dto.getAnfme() > locDetl.getAnfme() && dto.getStandby1().equals(locDetl.getStandby1()) ) {
                    throw new CoolException("订单数量不能大于库存数量!!");
                }
                if (dto.getAnfme().equals(locDetl.getAnfme())) {
                    sameNumber++;