Browse Source

feat(cms): 添加应用参数Excel批量导入功能- 新增CmsWebsiteFieldImportParam类用于Excel数据映射

- 实现基于EasyPOI的Excel导入解析逻辑
- 添加文件上传接口支持批量导入应用参数
- 集成数据校验和默认值设置机制- 添加权限控制和事务管理确保数据一致性- 提供导入成功/失败的结果反馈机制
dev3
科技小王子 2 weeks ago
parent
commit
b05bd8c35d
  1. 43
      src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteFieldController.java
  2. 56
      src/main/java/com/gxwebsoft/cms/param/CmsWebsiteFieldImportParam.java

43
src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteFieldController.java

@ -1,15 +1,23 @@
package com.gxwebsoft.cms.controller;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.hutool.core.util.ObjectUtil;
import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.cms.service.CmsWebsiteFieldService;
import com.gxwebsoft.cms.entity.CmsWebsiteField;
import com.gxwebsoft.cms.param.CmsWebsiteFieldParam;
import com.gxwebsoft.cms.param.CmsWebsiteFieldImportParam;
import com.gxwebsoft.common.core.utils.JSONUtil;
import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.common.core.web.BatchParam;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.HashMap;
@ -115,4 +123,39 @@ public class CmsWebsiteFieldController extends BaseController {
});
return success(config);
}
/**
* excel批量导入应用参数
*/
@PreAuthorize("hasAuthority('cms:cmsWebsiteField:save')")
@Operation(summary = "批量导入应用参数")
@Transactional(rollbackFor = {Exception.class})
@PostMapping("/import")
public ApiResult<List<String>> importBatch(MultipartFile file) {
ImportParams importParams = new ImportParams();
try {
List<CmsWebsiteFieldImportParam> list = ExcelImportUtil.importExcel(file.getInputStream(), CmsWebsiteFieldImportParam.class, importParams);
list.forEach(d -> {
CmsWebsiteField item = JSONUtil.parseObject(JSONUtil.toJSONString(d), CmsWebsiteField.class);
assert item != null;
if (ObjectUtil.isNotEmpty(item)) {
// 设置默认值
if (item.getDeleted() == null) {
item.setDeleted(0);
}
if (item.getSortNumber() == null) {
item.setSortNumber(0);
}
if (item.getEncrypted() == null) {
item.setEncrypted(false);
}
cmsWebsiteFieldService.save(item);
}
});
return success("成功导入" + list.size() + "条", null);
} catch (Exception e) {
e.printStackTrace();
}
return fail("导入失败", null);
}
}

56
src/main/java/com/gxwebsoft/cms/param/CmsWebsiteFieldImportParam.java

@ -0,0 +1,56 @@
package com.gxwebsoft.cms.param;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
/**
* 应用参数导入参数
*
* @author 科技小王子
* @since 2024-09-10 20:36:14
*/
@Data
public class CmsWebsiteFieldImportParam implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "自增ID")
private Integer id;
@Excel(name = "类型,0文本 1图片 2其他")
private Integer type;
@Excel(name = "名称")
private String name;
@Excel(name = "默认值")
private String defaultValue;
@Excel(name = "可修改的值 [on|off]")
private String modifyRange;
@Excel(name = "备注")
private String comments;
@Excel(name = "css样式")
private String style;
@Excel(name = "值")
private String value;
@Excel(name = "国际化语言")
private String lang;
@Excel(name = "是否加密")
private Boolean encrypted;
@Excel(name = "商户ID")
private Long merchantId;
@Excel(name = "排序")
private Integer sortNumber;
@Excel(name = "租户ID")
private Integer tenantId;
}
Loading…
Cancel
Save