package com.zy.common.model; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.SpringUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.service.LocDetlService; import lombok.Data; import java.util.*; /** * Created by vincent on 2022/3/28 */ @Data public class TaskDto { private String locNo; private Integer staNo; private String agvStaNo; private List locDtos; { locDtos = new ArrayList<>(); } public TaskDto(String locNo, Integer staNo) { this.locNo = locNo; this.staNo = staNo; } public TaskDto(String locNo, Integer staNo, LocDto locDto) { this.locNo = locNo; this.staNo = staNo; this.locDtos.add(locDto); } public TaskDto(String locNo, String agvStaNo, LocDto locDto) { this.locNo = locNo; this.agvStaNo = agvStaNo; this.locDtos.add(locDto); } public TaskDto(String locNo, Integer staNo, List locDtos) { this.locNo = locNo; this.staNo = staNo; this.locDtos = locDtos; } public static boolean has(List list, TaskDto dto) { if (Cools.isEmpty(list)) { return false; } for (TaskDto taskDto : list) { if(Cools.isEmpty(taskDto.getStaNo()) && dto.getLocNo().equals(taskDto.getLocNo())){ return true; } if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getStaNo().equals(dto.getStaNo())) { return true; } } return false; } public static TaskDto find(List list, TaskDto dto) { if (Cools.isEmpty(list)) { return null; } for (TaskDto taskDto : list) { if(Cools.isEmpty(taskDto.getStaNo()) && dto.getLocNo().equals(taskDto.getLocNo())){ return taskDto; } if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getStaNo().equals(dto.getStaNo())) { return taskDto; } } return null; } public boolean isAll(){ // 汇总不考虑序列码 List detlDtos = new ArrayList<>(); for (LocDto locDto : this.getLocDtos()) { DetlDto dto = new DetlDto(locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme(), locDto.getCsocode(), locDto.getIsoseq(),locDto.getContainerCode()); //dto.setContainerCode(locDto.getContainerCode()); if (DetlDto.has(detlDtos, dto)) { DetlDto detlDto = DetlDto.find(detlDtos, locDto.getMatnr(), dto.getBatch(),dto.getCsocode(),dto.getIsoseq(),dto.getContainerCode()); assert detlDto != null; detlDto.setAnfme(detlDto.getAnfme() + locDto.getAnfme()); } else { detlDtos.add(new DetlDto(locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme(),locDto.getCsocode(),locDto.getIsoseq(),locDto.getContainerCode())); } } // 查询当前库位号所有的库存明细 LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class); List locDetls = locDetlService.selectList(new EntityWrapper().eq("loc_no", this.locNo)); if (locDetls == null || locDetls.isEmpty()){ throw new CoolException("检索库存明细失败,库位号=" + this.locNo); } int sameNumber = 0; for (LocDetl locDetl : locDetls) { Iterator iterator = detlDtos.iterator(); while (iterator.hasNext()) { DetlDto dto = iterator.next(); if (!dto.getMatnr().equals(locDetl.getMatnr())) { continue; } if(!Cools.eq(dto.getBatch(),locDetl.getBatch())){ continue; } if(!Cools.eq(dto.getCsocode(),locDetl.getThreeCode())){ continue; } if(!Cools.eq(dto.getIsoseq(),locDetl.getDeadTime())){ continue; } if(!Cools.eq(dto.getContainerCode(),locDetl.getSuppCode())){ 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 (!Cools.isEmpty(dto.getContainerCode()) && !Cools.isEmpty(locDetl.getSuppCode())) { // if (!dto.getContainerCode().equals(locDetl.getSuppCode())) { // continue; // } // } if (dto.getAnfme() > locDetl.getAnfme()) { throw new CoolException("服务器内部错误"); } if (dto.getAnfme().equals(locDetl.getAnfme())) { sameNumber++; iterator.remove(); break; } } } return sameNumber == locDetls.size(); } }