分类增加导入功能

main
liutao 3 days ago
parent 3984fbe953
commit 06c83b3303

@ -30,6 +30,7 @@ import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.iot.controller.admin.deviceattributetype.vo.*; import cn.iocoder.yudao.module.iot.controller.admin.deviceattributetype.vo.*;
import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattributetype.DeviceAttributeTypeDO; import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattributetype.DeviceAttributeTypeDO;
import cn.iocoder.yudao.module.iot.service.deviceattributetype.DeviceAttributeTypeService; import cn.iocoder.yudao.module.iot.service.deviceattributetype.DeviceAttributeTypeService;
import org.springframework.web.multipart.MultipartFile;
@Tag(name = "管理后台 - 采集点分类") @Tag(name = "管理后台 - 采集点分类")
@RestController @RestController
@ -101,6 +102,34 @@ public class DeviceAttributeTypeController {
} }
@GetMapping("/get-import-template")
@Operation(summary = "获得采集点分类导入模板")
@PreAuthorize("@ss.hasPermission('iot:device-attribute-type:create')")
public void getImportTemplate(HttpServletResponse response) throws IOException {
List<DeviceAttributeTypeImportExcelVO> list = Collections.singletonList(
DeviceAttributeTypeImportExcelVO.builder()
.code("temperature")
.name("温度")
.sort(1)
.remark("温度类采集点")
.build()
);
ExcelUtils.write(response, "采集点分类导入模板.xls", "采集点分类列表",
DeviceAttributeTypeImportExcelVO.class, list);
}
@PostMapping("/import")
@Operation(summary = "导入采集点分类")
@PreAuthorize("@ss.hasPermission('iot:device-attribute-type:create')")
public CommonResult<String> importExcel(
@RequestParam("file") MultipartFile file,
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport)
throws Exception {
List<DeviceAttributeTypeImportExcelVO> list = ExcelUtils.read(file, DeviceAttributeTypeImportExcelVO.class);
deviceAttributeTypeService.importDeviceAttributeTypeList(list, updateSupport);
return success("导入成功");
}
@GetMapping("/list") @GetMapping("/list")
@Operation(summary = "获得采集点分类列表") @Operation(summary = "获得采集点分类列表")
public CommonResult<List<DeviceAttributeTypeDO>> getDeviceModelList() { public CommonResult<List<DeviceAttributeTypeDO>> getDeviceModelList() {
@ -109,4 +138,4 @@ public class DeviceAttributeTypeController {
} }
} }

@ -0,0 +1,32 @@
package cn.iocoder.yudao.module.iot.controller.admin.deviceattributetype.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* Excel VO
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false)
public class DeviceAttributeTypeImportExcelVO {
@ExcelProperty("编码")
private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty("显示顺序")
private Integer sort;
@ExcelProperty("备注")
private String remark;
}

@ -59,4 +59,12 @@ public interface DeviceAttributeTypeService {
* @return * @return
*/ */
List<DeviceAttributeTypeDO> getDeviceAttributeTypeList(); List<DeviceAttributeTypeDO> getDeviceAttributeTypeList();
}
/**
*
*
* @param list
* @param updateSupport
*/
void importDeviceAttributeTypeList(List<DeviceAttributeTypeImportExcelVO> list, Boolean updateSupport);
}

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.iot.service.deviceattributetype; package cn.iocoder.yudao.module.iot.service.deviceattributetype;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelattribute.DeviceModelAttributeDO; import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelattribute.DeviceModelAttributeDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO; import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO;
import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper; import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper;
@ -7,6 +8,7 @@ import cn.iocoder.yudao.module.iot.dal.mysql.devicemodelattribute.DeviceModelAtt
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -137,4 +139,41 @@ public class DeviceAttributeTypeServiceImpl implements DeviceAttributeTypeServic
return deviceAttributeTypeMapper.selectList(); return deviceAttributeTypeMapper.selectList();
} }
} @Override
@Transactional(rollbackFor = Exception.class)
public void importDeviceAttributeTypeList(List<DeviceAttributeTypeImportExcelVO> list, Boolean updateSupport) {
if (CollUtil.isEmpty(list)) {
throw exception(DEVICE_ATTRIBUTE_TYPE_NOT_EXISTS);
}
Set<String> importCodes = new HashSet<>();
for (DeviceAttributeTypeImportExcelVO item : list) {
if (StringUtils.isBlank(item.getCode()) || StringUtils.isBlank(item.getName())) {
throw exception(DEVICE_ATTRIBUTE_TYPE_NOT_EXISTS);
}
String code = item.getCode().trim();
if (!importCodes.add(code)) {
throw exception(DEVICE_CODE_EXISTS);
}
DeviceAttributeTypeDO exist = deviceAttributeTypeMapper.selectOne(
Wrappers.<DeviceAttributeTypeDO>lambdaQuery().eq(DeviceAttributeTypeDO::getCode, code));
DeviceAttributeTypeDO entity = BeanUtils.toBean(item, DeviceAttributeTypeDO.class);
entity.setCode(code);
entity.setName(item.getName().trim());
entity.setSort(item.getSort() == null ? 0 : item.getSort());
if (exist == null) {
deviceAttributeTypeMapper.insert(entity);
} else if (Boolean.TRUE.equals(updateSupport)) {
entity.setId(exist.getId());
deviceAttributeTypeMapper.updateById(entity);
} else {
throw exception(DEVICE_CODE_EXISTS);
}
}
}
}

Loading…
Cancel
Save