diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePlan.java b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePlan.java index 2e47e8e..209a2a0 100644 --- a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePlan.java +++ b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePlan.java @@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; +import org.springblade.modules.business.pojo.entity.DeviceAttach; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @@ -86,6 +87,11 @@ public class MaintenancePlan extends BaseEntity { */ private Integer isOpen; + /** + * 附件详情 + */ + private List attaches; + /** * 计划详情 */ diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePlanDetail.java b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePlanDetail.java index 040a6f3..b093963 100644 --- a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePlanDetail.java +++ b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePlanDetail.java @@ -1,5 +1,6 @@ package org.springblade.modules.business.pojo.entity.maintenance; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; @@ -9,6 +10,7 @@ import org.springblade.core.mp.base.BaseEntity; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; +import java.util.List; /** * 维保计划详细 @@ -90,5 +92,8 @@ public class MaintenancePlanDetail extends BaseEntity { ) private Date nextStartTime; + @TableField(exist = false) + private List details; + } diff --git a/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java index 061db24..c3cde74 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java @@ -1,19 +1,20 @@ package org.springblade.modules.business.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.AllArgsConstructor; +import org.apache.commons.collections.CollectionUtils; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.utils.CollectionUtil; +import org.springblade.modules.business.pojo.entity.DeviceAttach; +import org.springblade.modules.business.pojo.entity.DeviceMaintenance; import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlanDetail; import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask; import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTaskDetail; -import org.springblade.modules.business.service.IMaintenancePlanDetailService; -import org.springblade.modules.business.service.IMaintenancePlanService; +import org.springblade.modules.business.service.*; import org.springblade.modules.business.mapper.MaintenancePlanMapper; import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan; -import org.springblade.modules.business.service.IMaintenanceTaskDetailService; -import org.springblade.modules.business.service.IMaintenanceTaskService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -38,6 +39,7 @@ public class MaintenancePlanServiceImpl extends BaseServiceImpl details = plan.getDetails(); if (CollectionUtil.isNotEmpty(details)) { details.forEach(detail -> detail.setPlanId(plan.getId())); - planDetailService.saveBatch(details); + save = planDetailService.saveBatch(details); + } + + // 保存附件 + List attaches = plan.getAttaches(); + if (CollectionUtil.isNotEmpty(attaches)) { + attaches.forEach(attach -> { + attach.setDeviceId(plan.getId()); + attach.setStatus(2);// 实验室附件 + }); + save = deviceAttachService.saveBatch(attaches); } return save; } @@ -70,6 +82,7 @@ public class MaintenancePlanServiceImpl extends BaseServiceImpl saveList = new ArrayList<>(); // 需要修改的详情 List updateList = new ArrayList<>(); + List ids = details.stream().filter(detail -> detail.getId() != null).map(MaintenancePlanDetail::getId).collect(Collectors.toList()); for (MaintenancePlanDetail detail : details) { if (detail.getId() != null) { updateList.add(detail); @@ -78,8 +91,32 @@ public class MaintenancePlanServiceImpl extends BaseServiceImpl attaches = plan.getAttaches(); + if (CollectionUtil.isNotEmpty(attaches)) { + // 需要新增的巡检 + List newSave = attaches.stream().filter(attach -> attach.getId() == null).collect(Collectors.toList()); + // 不删除的巡检ids + List ids = attaches.stream().filter(attach -> attach.getId() != null).map(DeviceAttach::getId).collect(Collectors.toList()); + deviceAttachService.remove(Wrappers.lambdaQuery(DeviceAttach.class) + .eq(DeviceAttach::getDeviceId, plan.getId()) + .eq(DeviceAttach::getStatus, 2) + .notIn(CollectionUtils.isNotEmpty(ids), DeviceAttach::getId, ids)); + + if (CollectionUtil.isNotEmpty(newSave)) { + newSave.forEach(maintenance -> maintenance.setDeviceId(plan.getId())); + deviceAttachService.saveBatch(newSave); + } } return this.updateById(plan); } @@ -94,7 +131,25 @@ public class MaintenancePlanServiceImpl extends BaseServiceImpl details = planDetailService.list(Wrappers.lambdaQuery(MaintenancePlanDetail.class).eq(MaintenancePlanDetail::getPlanId, planDetail.getId())); + Map> floorMap = details.stream().collect(Collectors.groupingBy(MaintenancePlanDetail::getFloorName)); + List floorList = new ArrayList<>(); + for (Map.Entry> stringListEntry : floorMap.entrySet()) { + List deptList = new ArrayList<>(); + MaintenancePlanDetail floor = new MaintenancePlanDetail(); + List floors = stringListEntry.getValue(); + Map> deptMap = floors.stream().collect(Collectors.groupingBy(MaintenancePlanDetail::getDeptName)); + for (Map.Entry> listEntry : deptMap.entrySet()) { + MaintenancePlanDetail dept = new MaintenancePlanDetail(); + dept.setDeptName(listEntry.getKey()); + dept.setDetails(listEntry.getValue()); + deptList.add(dept); + } + floor.setFloorName(stringListEntry.getKey()); + floor.setDetails(deptList); + floorList.add(floor); + } + planDetail.setDetails(floorList); return planDetail; }