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<Device, DeviceDto> 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<DeviceDto> 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<Device> list(String keyword, DeviceType deviceType) {
|
return deviceRepository.findDevices(keyword, deviceType);
|
}
|
|
@Override
|
public List<Device> listFreeDevices(DeviceType deviceType) {
|
return deviceRepository.findFreeDevices(deviceType);
|
}
|
|
@Override
|
public List<PropertyItemGroup> deviceCreateForm(DeviceType deviceType) {
|
return deviceForm.getCreateForm().get(deviceType);
|
}
|
|
@Override
|
public List<PropertyItemGroup> deviceUsageForm(DeviceType deviceType) {
|
return deviceForm.getUsageForm().get(deviceType);
|
}
|
|
@Override
|
public List<PropertyItem> deviceUsageFormAll() {
|
return allPropertyItems(deviceForm.getUsageForm());
|
}
|
|
@Override
|
public List<PropertyItem> deviceCreateFormAll() {
|
return allPropertyItems(deviceForm.getCreateForm());
|
}
|
|
|
public List<PropertyItem> allPropertyItems(LinkedHashMap<DeviceType, List<PropertyItemGroup>> form){
|
var itemSet = new LinkedHashMap<String, PropertyItem>();
|
// 去除重复的属性
|
for (var groups : form.values()){
|
for (var group : groups){
|
for (var item : group.getItems()){
|
itemSet.put(item.getName(), item);
|
}
|
}
|
}
|
return itemSet.values().stream().toList();
|
}
|
}
|