diff --git a/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java b/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java index 5a30a03..58337a7 100644 --- a/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java +++ b/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java @@ -58,6 +58,7 @@ import com.huaheng.pc.task.taskHeader.service.TaskHeaderService; import com.huaheng.pc.task.taskHeader.service.WorkTaskService; import org.apache.commons.collections.MapUtils; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.ModelMap; import javax.annotation.Resource; @@ -348,72 +349,76 @@ public class RyTask extends BaseController { /** * 删除已出库的平库容器和库位 */ + @Transactional public void deleteFlatContainerLocation() { - //删除容器 - List<TaskHeader> taskList = taskHeaderService.list(new LambdaQueryWrapper<TaskHeader>().ne(TaskHeader::getStatus, 100)); + List<TaskHeader> taskList = taskHeaderService.list(new LambdaQueryWrapper<TaskHeader>().ne(TaskHeader::getStatus, 100).eq(TaskHeader::getFlat, 1)); List<InventoryHeader> inventoryList = inventoryHeaderService.list(new LambdaQueryWrapper<InventoryHeader>().ne(InventoryHeader::getZoneCode, "L")); + + //删除容器 List<Container> containerList = containerService.list(new LambdaQueryWrapper<Container>() - .and(wrapper -> wrapper.isNull(Container::getLocationCode).or().eq(Container::getLocationCode, "")) .eq(Container::getStatus, "empty") .eq(Container::getFlat, 1)); + if (!containerList.isEmpty()) { - //取出containerList的code + List<Container> deleteContainerList = new ArrayList<>(); List<String> containerCodeList = containerList.stream().map(Container::getCode).collect(Collectors.toList()); - //如果containerCodeList在库存表和任务表中存在就不删除,其他的删除Container - for (Container container : containerList) { - boolean flag = false; + + if (!taskList.isEmpty()) { for (TaskHeader taskHeader : taskList) { if (containerCodeList.contains(taskHeader.getContainerCode())) { - flag = true; - break; + deleteContainerList.add(containerList.stream().filter(container -> container.getCode().equals(taskHeader.getContainerCode())).findFirst().get()); } } - if (flag) { - continue; - } + } + if (!inventoryList.isEmpty()) { for (InventoryHeader inventoryHeader : inventoryList) { if (containerCodeList.contains(inventoryHeader.getContainerCode())) { - flag = true; - break; + deleteContainerList.add(containerList.stream().filter(container -> container.getCode().equals(inventoryHeader.getContainerCode())).findFirst().get()); } } - if (flag) { - continue; - } - containerService.removeById(container.getId()); + } + containerCodeList.removeAll(deleteContainerList.stream().map(Container::getCode).collect(Collectors.toList())); + if (!containerCodeList.isEmpty()) { + containerService.remove(new LambdaQueryWrapper<Container>().in(Container::getCode, containerCodeList)); } } + //删除库位 List<Location> locationList = locationService.list(new LambdaQueryWrapper<Location>() - .and(wrapper -> wrapper.isNull(Location::getContainerCode).or().eq(Location::getContainerCode, "")) .eq(Location::getStatus, "empty") .ne(Location::getZoneCode, "L")); - if (!locationList.isEmpty()) { - List<String> locationCodeList = locationList.stream().map(Location::getCode).collect(Collectors.toList()); - for (Location location : locationList) { - boolean flag = false; - for (TaskHeader taskHeader : taskList) { - if (locationCodeList.contains(taskHeader.getFromLocation())) { - flag = true; - break; - } - } - if (flag) { - continue; - } - for (InventoryHeader inventoryHeader : inventoryList) { - if (locationCodeList.contains(inventoryHeader.getLocationCode())) { - flag = true; - break; - } + + if (locationList.isEmpty()) { + return; + } + + List<Location> deleteLocationList = new ArrayList<>(); + List<String> locationCodeList = locationList.stream().map(Location::getCode).collect(Collectors.toList()); + if (!taskList.isEmpty()) { + for (TaskHeader taskHeader : taskList) { + if (locationCodeList.contains(taskHeader.getFromLocation())) { + deleteLocationList.add(locationList.stream().filter(location -> location.getCode().equals(taskHeader.getFromLocation())).findFirst().get()); } - if (flag) { - continue; + } + } + if (!inventoryList.isEmpty()) { + for (InventoryHeader inventoryHeader : inventoryList) { + if (locationCodeList.contains(inventoryHeader.getLocationCode())) { + deleteLocationList.add(locationList.stream().filter(location -> location.getCode().equals(inventoryHeader.getLocationCode())).findFirst().get()); } - locationService.removeById(location.getId()); } } + locationCodeList.removeAll(deleteLocationList.stream().map(Location::getCode).collect(Collectors.toList())); + + if (locationCodeList.isEmpty()) { + return; + } + + //删除库位 + locationService.remove(new LambdaQueryWrapper<Location>().in(Location::getCode, locationCodeList)); + + }