package com.estate.expert.admin.service.impl; import com.estate.expert.admin.domain.business.device.Device; import com.estate.expert.admin.domain.business.device.DeviceDto; import com.estate.expert.admin.domain.business.device.DeviceRepository; import com.estate.expert.admin.domain.business.device.DeviceType; import com.estate.expert.admin.domain.business.device.property.DeviceForm; import com.estate.expert.admin.domain.business.device.property.DeviceFormPropertyLoader; import com.estate.expert.admin.domain.common.property.PropertyItem; import com.estate.expert.admin.domain.common.property.PropertyItemGroup; import com.estate.expert.admin.domain.common.request.PageReq; import com.estate.expert.admin.domain.common.response.PageResp; import com.estate.expert.admin.service.DeviceService; import com.estate.expert.admin.service.common.CrudServiceBaseImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.io.IOException; import java.util.LinkedHashMap; import java.util.List; /** * 设备服务实现 */ @Slf4j @Service public class DeviceServiceImpl extends CrudServiceBaseImpl implements DeviceService { @Resource private DeviceRepository deviceRepository; private DeviceForm deviceForm; @PostConstruct public void init() throws IOException { var loader = new DeviceFormPropertyLoader(); deviceForm = loader.loadDeviceForm(); } @Override public PageResp list(String keyword, DeviceType deviceType, PageReq pageReq) { var page = deviceRepository.findDevices(keyword, deviceType,pageReq.toPageRequest()); return PageResp.of(page, toDto(page.getContent())); } @Override public List list(String keyword, DeviceType deviceType) { return deviceRepository.findDevices(keyword, deviceType); } @Override public List listFreeDevices(DeviceType deviceType) { return deviceRepository.findFreeDevices(deviceType); } @Override public List deviceCreateForm(DeviceType deviceType) { return deviceForm.getCreateForm().get(deviceType); } @Override public List deviceUsageForm(DeviceType deviceType) { return deviceForm.getUsageForm().get(deviceType); } @Override public List deviceUsageFormAll() { return allPropertyItems(deviceForm.getUsageForm()); } @Override public List deviceCreateFormAll() { return allPropertyItems(deviceForm.getCreateForm()); } public List allPropertyItems(LinkedHashMap> form){ var itemSet = new LinkedHashMap(); // 去除重复的属性 for (var groups : form.values()){ for (var group : groups){ for (var item : group.getItems()){ itemSet.put(item.getName(), item); } } } return itemSet.values().stream().toList(); } }