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 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, 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 (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 (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.getBrand(),locDto.getStandby1(),locDto.getStandby2(),locDto.getStandby3(),locDto.getBoxType1(),locDto.getBoxType2(),locDto.getBoxType3(), locDto.getAnfme()); if (DetlDto.has(detlDtos, dto)) { 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.getBrand(),locDto.getStandby1(),locDto.getStandby2(),locDto.getStandby3(),locDto.getBoxType1(),locDto.getBoxType2(),locDto.getBoxType3() , locDto.getAnfme())); } } // 查询当前库位号所有的库存明细 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.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(); } }