Browse Source

Merge remote-tracking branch 'origin/dev' into dev

pull/6/head
李克 1 month ago
parent
commit
65ec93eb85
  1. 15
      dk-common/common-excel/pom.xml
  2. 113
      dk-modules/system/src/main/java/org/dromara/system/controller/DjiApiController.java
  3. 131
      dk-modules/system/src/main/java/org/dromara/system/controller/DjiApiErrorController.java
  4. 63
      dk-modules/system/src/main/java/org/dromara/system/domain/DjiApi.java
  5. 76
      dk-modules/system/src/main/java/org/dromara/system/domain/DjiApiError.java
  6. 68
      dk-modules/system/src/main/java/org/dromara/system/domain/bo/DjiApiBo.java
  7. 84
      dk-modules/system/src/main/java/org/dromara/system/domain/bo/DjiApiErrorBo.java
  8. 93
      dk-modules/system/src/main/java/org/dromara/system/domain/vo/DjiApiErrorVo.java
  9. 77
      dk-modules/system/src/main/java/org/dromara/system/domain/vo/DjiApiVo.java
  10. 177
      dk-modules/system/src/main/java/org/dromara/system/listener/DjiApiErrorImportListener.java
  11. 15
      dk-modules/system/src/main/java/org/dromara/system/mapper/DjiApiErrorMapper.java
  12. 15
      dk-modules/system/src/main/java/org/dromara/system/mapper/DjiApiMapper.java
  13. 72
      dk-modules/system/src/main/java/org/dromara/system/service/IDjiApiErrorService.java
  14. 69
      dk-modules/system/src/main/java/org/dromara/system/service/IDjiApiService.java
  15. 146
      dk-modules/system/src/main/java/org/dromara/system/service/impl/DjiApiErrorServiceImpl.java
  16. 133
      dk-modules/system/src/main/java/org/dromara/system/service/impl/DjiApiServiceImpl.java
  17. 7
      dk-modules/system/src/main/resources/mapper/djidev/DjiApiErrorMapper.xml
  18. 7
      dk-modules/system/src/main/resources/mapper/djidev/DjiApiMapper.xml
  19. 2
      pom.xml

15
dk-common/common-excel/pom.xml

@ -25,6 +25,21 @@
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId> <artifactId>easyexcel</artifactId>
</dependency> </dependency>
<!-- easyexcel版本4.0.3时前台导出报错,配合以下包测试依旧异常-->
<!-- <dependency>-->
<!-- <groupId>commons-io</groupId>-->
<!-- <artifactId>commons-io</artifactId>-->
<!-- <version>2.12.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.apache.commons</groupId>-->
<!-- <artifactId>commons-compress</artifactId>-->
<!-- <version>1.21</version>-->
<!-- </dependency>-->
</dependencies> </dependencies>
</project> </project>

113
dk-modules/system/src/main/java/org/dromara/system/controller/DjiApiController.java

@ -0,0 +1,113 @@
package org.dromara.system.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.system.domain.vo.DjiApiVo;
import org.dromara.system.domain.bo.DjiApiBo;
import org.dromara.system.service.IDjiApiService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 大疆开发
* 前端访问路由地址为:/djidev/djiApi
*
* @author szs
* @date 2025-05-14
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/djiApi")
public class DjiApiController extends BaseController {
private final IDjiApiService djiApiService;
/**
* 查询大疆开发列表
*/
@SaCheckPermission("djidev:djiApi:list")
@GetMapping("/list")
public TableDataInfo<DjiApiVo> list(DjiApiBo bo, PageQuery pageQuery) {
return djiApiService.queryPageList(bo, pageQuery);
}
/**
* 导出大疆开发列表
*/
@SaCheckPermission("djidev:djiApi:export")
@Log(title = "大疆开发", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(DjiApiBo bo, HttpServletResponse response) {
List<DjiApiVo> list = djiApiService.queryList(bo);
ExcelUtil.exportExcel(list, "大疆开发", DjiApiVo.class, response);
}
/**
* 获取大疆开发详细信息
*
* @param id 主键
*/
@SaCheckPermission("djidev:djiApi:query")
@GetMapping("/{id}")
public R<DjiApiVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(djiApiService.queryById(id));
}
/**
* 新增大疆开发
*/
@SaCheckPermission("djidev:djiApi:add")
@Log(title = "大疆开发", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody DjiApiBo bo) {
//跟新版本次数
if(null == bo.getVersionCount()){
DjiApiBo bo1 = new DjiApiBo();
bo1.setDjiApiType(bo.getDjiApiType());
List<DjiApiVo> djiApiVos = djiApiService.queryList(bo1);
bo.setVersionCount(djiApiVos.size() +1);
}
return toAjax(djiApiService.insertByBo(bo));
}
/**
* 修改大疆开发
*/
@SaCheckPermission("djidev:djiApi:edit")
@Log(title = "大疆开发", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody DjiApiBo bo) {
return toAjax(djiApiService.updateByBo(bo));
}
/**
* 删除大疆开发
*
* @param ids 主键串
*/
@SaCheckPermission("djidev:djiApi:remove")
@Log(title = "大疆开发", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(djiApiService.deleteWithValidByIds(List.of(ids), true));
}
}

131
dk-modules/system/src/main/java/org/dromara/system/controller/DjiApiErrorController.java

@ -0,0 +1,131 @@
package org.dromara.system.controller;
import java.util.ArrayList;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.excel.core.ExcelResult;
import org.dromara.system.domain.vo.SysUserImportVo;
import org.dromara.system.listener.DjiApiErrorImportListener;
import org.dromara.system.listener.SysUserImportListener;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.system.domain.vo.DjiApiErrorVo;
import org.dromara.system.domain.bo.DjiApiErrorBo;
import org.dromara.system.service.IDjiApiErrorService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
/**
* 大疆开发-错误码
* 前端访问路由地址为:/djidev/djiApiError
*
* @author szs
* @date 2025-05-14
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/djiApiError")
public class DjiApiErrorController extends BaseController {
private final IDjiApiErrorService djiApiErrorService;
/**
* 查询大疆开发-错误码列表
*/
@SaCheckPermission("djidev:djiApiError:list")
@GetMapping("/list")
public TableDataInfo<DjiApiErrorVo> list(DjiApiErrorBo bo, PageQuery pageQuery) {
return djiApiErrorService.queryPageList(bo, pageQuery);
}
/**
* 导出大疆开发-错误码列表
*/
@SaCheckPermission("djidev:djiApiError:export")
@Log(title = "大疆开发-错误码", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(DjiApiErrorBo bo, HttpServletResponse response) {
List<DjiApiErrorVo> list = djiApiErrorService.queryList(bo);
ExcelUtil.exportExcel(list, "大疆开发-错误码", DjiApiErrorVo.class, response);
}
@Log(title = "大疆开发-错误码管理", businessType = BusinessType.IMPORT)
@SaCheckPermission("djidev:djiApiError:import")
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
ExcelResult<DjiApiErrorVo> result = ExcelUtil.importExcel(file.getInputStream(), DjiApiErrorVo.class, new DjiApiErrorImportListener(updateSupport));
return R.ok(result.getAnalysis());
}
/**
* 获取导入模板
*/
@PostMapping("/importTemplate")
public void importTemplate(HttpServletResponse response) {
ExcelUtil.exportExcel(new ArrayList<>(), "大疆开发-错误码数据", DjiApiErrorVo.class, response);
}
/**
* 获取大疆开发-错误码详细信息
*
* @param id 主键
*/
@SaCheckPermission("djidev:djiApiError:query")
@GetMapping("/{id}")
public R<DjiApiErrorVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(djiApiErrorService.queryById(id));
}
/**
* 新增大疆开发-错误码
*/
@SaCheckPermission("djidev:djiApiError:add")
@Log(title = "大疆开发-错误码", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody DjiApiErrorBo bo) {
return toAjax(djiApiErrorService.insertByBo(bo));
}
/**
* 修改大疆开发-错误码
*/
@SaCheckPermission("djidev:djiApiError:edit")
@Log(title = "大疆开发-错误码", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody DjiApiErrorBo bo) {
return toAjax(djiApiErrorService.updateByBo(bo));
}
/**
* 删除大疆开发-错误码
*
* @param ids 主键串
*/
@SaCheckPermission("djidev:djiApiError:remove")
@Log(title = "大疆开发-错误码", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(djiApiErrorService.deleteWithValidByIds(List.of(ids), true));
}
}

63
dk-modules/system/src/main/java/org/dromara/system/domain/DjiApi.java

@ -0,0 +1,63 @@
package org.dromara.system.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 大疆开发对象 dji_api
*
* @author szs
* @date 2025-05-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("dji_api")
public class DjiApi extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "id")
private Long id;
/**
* 大疆api类型
*/
private String djiApiType;
/**
* 版本名称
*/
private String name;
/**
* 版本号
*/
private String nameVersionNo;
/**
* 版本次数
*/
private Integer versionCount;
/**
* 发步日期
*/
private Date timeRelease;
/**
* 备注
*/
private String remark;
}

76
dk-modules/system/src/main/java/org/dromara/system/domain/DjiApiError.java

@ -0,0 +1,76 @@
package org.dromara.system.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 大疆开发-错误码对象 dji_api_error
*
* @author szs
* @date 2025-05-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("dji_api_error")
public class DjiApiError extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "id")
private Long id;
/**
* 大疆APIId
*/
private Long djiApiId;
/**
* 大疆API版本
*/
private String djiApiName;
/**
* 错误码
*/
private String name;
/**
* 中文描述
*/
private String nameCn;
/**
* 英文描述
*/
private String nameEn;
/**
* 是否变更
*/
private String isChangeFlag;
/**
* 历史变更次数
*/
private Integer changeHistroyCount;
/**
* 历史变更Ids(,分隔)
*/
private String changeHistoryIds;
/**
* 大疆开发-错误码
*/
private String remark;
}

68
dk-modules/system/src/main/java/org/dromara/system/domain/bo/DjiApiBo.java

@ -0,0 +1,68 @@
package org.dromara.system.domain.bo;
import org.dromara.system.domain.DjiApi;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 大疆开发业务对象 dji_api
*
* @author szs
* @date 2025-05-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = DjiApi.class, reverseConvertGenerate = false)
public class DjiApiBo extends BaseEntity {
/**
* ID
*/
@NotNull(message = "ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 大疆api类型
*/
@NotBlank(message = "大疆api类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String djiApiType;
/**
* 版本名称
*/
@NotBlank(message = "版本名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 版本号
*/
@NotBlank(message = "版本号不能为空", groups = { AddGroup.class, EditGroup.class })
private String nameVersionNo;
/**
* 版本次数
*/
// @NotNull(message = "版本次数不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer versionCount;
/**
* 发步日期
*/
@NotNull(message = "发步日期不能为空", groups = { AddGroup.class, EditGroup.class })
private Date timeRelease;
/**
* 备注
*/
// @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
}

84
dk-modules/system/src/main/java/org/dromara/system/domain/bo/DjiApiErrorBo.java

@ -0,0 +1,84 @@
package org.dromara.system.domain.bo;
import org.dromara.system.domain.DjiApiError;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 大疆开发-错误码业务对象 dji_api_error
*
* @author szs
* @date 2025-05-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = DjiApiError.class, reverseConvertGenerate = false)
public class DjiApiErrorBo extends BaseEntity {
/**
* ID
*/
@NotNull(message = "ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 大疆APIId
*/
@NotNull(message = "大疆APIId不能为空", groups = { AddGroup.class, EditGroup.class })
private Long djiApiId;
/**
* 大疆API版本
*/
// @NotBlank(message = "大疆API版本不能为空", groups = { AddGroup.class, EditGroup.class })
private String djiApiName;
/**
* 错误码
*/
@NotBlank(message = "错误码不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 中文描述
*/
@NotBlank(message = "中文描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String nameCn;
/**
* 英文描述
*/
// @NotBlank(message = "英文描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String nameEn;
/**
* 是否变更
*/
// @NotBlank(message = "是否变更不能为空", groups = { AddGroup.class, EditGroup.class })
private String isChangeFlag;
/**
* 历史变更次数
*/
// @NotNull(message = "历史变更次数不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer changeHistroyCount;
/**
* 历史变更Ids(,分隔)
*/
// @NotBlank(message = "历史变更Ids(,分隔)不能为空", groups = { AddGroup.class, EditGroup.class })
private String changeHistoryIds;
/**
* 大疆开发-错误码
*/
// @NotBlank(message = "大疆开发-错误码不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
}

93
dk-modules/system/src/main/java/org/dromara/system/domain/vo/DjiApiErrorVo.java

@ -0,0 +1,93 @@
package org.dromara.system.domain.vo;
import org.dromara.system.domain.DjiApiError;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 大疆开发-错误码视图对象 dji_api_error
*
* @author szs
* @date 2025-05-14
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = DjiApiError.class)
public class DjiApiErrorVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ExcelProperty(value = "ID")
private Long id;
/**
* 大疆APIId
*/
@ExcelProperty(value = "大疆APIId")
private Long djiApiId;
/**
* 大疆API版本
*/
@ExcelProperty(value = "大疆API版本")
private String djiApiName;
/**
* 错误码
*/
@ExcelProperty(value = "错误码")
private String name;
/**
* 中文描述
*/
@ExcelProperty(value = "中文描述")
private String nameCn;
/**
* 英文描述
*/
@ExcelProperty(value = "英文描述")
private String nameEn;
/**
* 是否变更
*/
@ExcelProperty(value = "是否变更", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_yes_no")
private String isChangeFlag;
/**
* 历史变更次数
*/
@ExcelProperty(value = "历史变更次数")
private Integer changeHistroyCount;
/**
* 历史变更Ids(,分隔)
*/
@ExcelProperty(value = "历史变更Ids(,分隔)")
private String changeHistoryIds;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

77
dk-modules/system/src/main/java/org/dromara/system/domain/vo/DjiApiVo.java

@ -0,0 +1,77 @@
package org.dromara.system.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.system.domain.DjiApi;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 大疆开发视图对象 dji_api
*
* @author szs
* @date 2025-05-14
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = DjiApi.class)
public class DjiApiVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ExcelProperty(value = "ID")
private Long id;
/**
* 大疆api类型
*/
@ExcelProperty(value = "大疆api类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "dji_api_type")
private String djiApiType;
/**
* 版本名称
*/
@ExcelProperty(value = "版本名称")
private String name;
/**
* 版本号
*/
@ExcelProperty(value = "版本号")
private String nameVersionNo;
/**
* 版本次数
*/
@ExcelProperty(value = "版本次数")
private Integer versionCount;
/**
* 发步日期
*/
@ExcelProperty(value = "发步日期")
private Date timeRelease;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

177
dk-modules/system/src/main/java/org/dromara/system/listener/DjiApiErrorImportListener.java

@ -0,0 +1,177 @@
package org.dromara.system.listener;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HtmlUtil;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.ValidatorUtils;
import org.dromara.common.excel.core.ExcelListener;
import org.dromara.common.excel.core.ExcelResult;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.domain.bo.DjiApiBo;
import org.dromara.system.domain.bo.DjiApiErrorBo;
import org.dromara.system.domain.vo.DjiApiErrorVo;
import org.dromara.system.domain.vo.DjiApiVo;
import org.dromara.system.service.IDjiApiErrorService;
import org.dromara.system.service.IDjiApiService;
import java.util.List;
/**
* 系统用户自定义导入
*
* @author Lion Li
*/
@Slf4j
public class DjiApiErrorImportListener extends AnalysisEventListener<DjiApiErrorVo> implements ExcelListener<DjiApiErrorVo> {
private final IDjiApiErrorService djiApiErrorService;
private final IDjiApiService djiApiService;
private final Boolean isUpdateSupport;
private final Long operUserId;
private int successNum = 0;
private int failureNum = 0;
private final StringBuilder successMsg = new StringBuilder();
private final StringBuilder failureMsg = new StringBuilder();
public DjiApiErrorImportListener(Boolean isUpdateSupport) {
this.djiApiErrorService = SpringUtils.getBean(IDjiApiErrorService.class);
this.djiApiService = SpringUtils.getBean(IDjiApiService.class);
this.isUpdateSupport = isUpdateSupport;
this.operUserId = LoginHelper.getUserId();
}
@Override
public void invoke(DjiApiErrorVo apiErrVo, AnalysisContext context) {
if(StrUtil.isEmpty(apiErrVo.getDjiApiName())){
failureNum++;
failureMsg.append("<br/>").append(failureNum).append("大疆开发API 不存在,请检查大疆API");
return;
}
//检查大疆API编号是否存在
DjiApiBo djiApiBo = new DjiApiBo();
djiApiBo.setName(apiErrVo.getDjiApiName());
List<DjiApiVo> djiApiVoList = djiApiService.queryList(djiApiBo);
if(djiApiVoList.size()<=0){
failureNum++;
failureMsg.append("<br/>").append(failureNum).append("大疆开发API ").append(apiErrVo.getDjiApiName()).append(" 不存在,请检查大疆API");
}else{
DjiApiVo djiApiVo = djiApiVoList.get(0);
//上次的版本
DjiApiVo djiApiVoOld = null;
if(djiApiVo.getVersionCount() >= 2){
int versionCountOld = djiApiVo.getVersionCount() - 1;
DjiApiBo djiApiBoOld = new DjiApiBo();
djiApiBoOld.setDjiApiType(djiApiVo.getDjiApiType());
djiApiBoOld.setVersionCount(versionCountOld);
List<DjiApiVo> djiApiVoOldList = djiApiService.queryList(djiApiBoOld);
if(djiApiVoOldList.size() > 0){
djiApiVoOld = djiApiVoOldList.get(0);
}
}
DjiApiErrorBo apiErrorBo = new DjiApiErrorBo();
apiErrorBo.setDjiApiId(djiApiVo.getId());
apiErrorBo.setName(apiErrVo.getName());
DjiApiErrorVo djiApiErrorVo = this.djiApiErrorService.selectOneApiErrorByInfo(apiErrorBo);
try {
// 验证是否存在这个用户
if (ObjectUtil.isNull(djiApiErrorVo)) {
DjiApiErrorBo apiErrBo = BeanUtil.toBean(apiErrVo, DjiApiErrorBo.class);
apiErrBo.setDjiApiId(djiApiVo.getId());
apiErrBo.setDjiApiName(djiApiVo.getName());
ValidatorUtils.validate(apiErrBo);
apiErrBo.setCreateBy(operUserId);
//找历史记录,查看上一个版本是否不同
if(null != djiApiVoOld){
DjiApiErrorBo lastErrBo = new DjiApiErrorBo();
lastErrBo.setDjiApiId(djiApiVoOld.getId());
lastErrBo.setName(apiErrVo.getName());
DjiApiErrorVo lastErrVo = djiApiErrorService.selectOneApiErrorByInfo(lastErrBo);
if(StrUtil.equals(lastErrVo.getNameCn(),apiErrVo.getNameCn())){
apiErrBo.setIsChangeFlag("N");
}else {
apiErrBo.setIsChangeFlag("Y");
}
}
djiApiErrorService.insertByBo(apiErrBo);
successNum++;
successMsg.append("<br/>").append(successNum).append("、错误码 ").append(apiErrBo.getName()).append(" 导入成功");
} else if (isUpdateSupport) {
Long apiErrVoId = djiApiErrorVo.getId();
DjiApiErrorBo apiErrBo = BeanUtil.toBean(apiErrVo, DjiApiErrorBo.class);
apiErrBo.setId(apiErrVoId);
ValidatorUtils.validate(apiErrBo);
apiErrBo.setUpdateBy(operUserId);
djiApiErrorService.updateByBo(apiErrBo);
successNum++;
successMsg.append("<br/>").append(successNum).append("、错误码 ").append(apiErrBo.getName()).append(" 更新成功");
} else {
failureNum++;
failureMsg.append("<br/>").append(failureNum).append("、错误码 ").append(djiApiErrorVo.getName()).append(" 已存在");
}
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、错误码 " + HtmlUtil.cleanHtmlTag(apiErrVo.getName()) + " 导入失败:";
String message = e.getMessage();
if (e instanceof ConstraintViolationException cvException) {
message = StreamUtils.join(cvException.getConstraintViolations(), ConstraintViolation::getMessage, ", ");
}
failureMsg.append(msg).append(message);
log.error(msg, e);
}
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
@Override
public ExcelResult<DjiApiErrorVo> getExcelResult() {
return new ExcelResult<DjiApiErrorVo>() {
@Override
public String getAnalysis() {
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
@Override
public List<DjiApiErrorVo> getList() {
return null;
}
@Override
public List<String> getErrorList() {
return null;
}
};
}
}

15
dk-modules/system/src/main/java/org/dromara/system/mapper/DjiApiErrorMapper.java

@ -0,0 +1,15 @@
package org.dromara.system.mapper;
import org.dromara.system.domain.DjiApiError;
import org.dromara.system.domain.vo.DjiApiErrorVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 大疆开发-错误码Mapper接口
*
* @author szs
* @date 2025-05-14
*/
public interface DjiApiErrorMapper extends BaseMapperPlus<DjiApiError, DjiApiErrorVo> {
}

15
dk-modules/system/src/main/java/org/dromara/system/mapper/DjiApiMapper.java

@ -0,0 +1,15 @@
package org.dromara.system.mapper;
import org.dromara.system.domain.DjiApi;
import org.dromara.system.domain.vo.DjiApiVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 大疆开发Mapper接口
*
* @author szs
* @date 2025-05-14
*/
public interface DjiApiMapper extends BaseMapperPlus<DjiApi, DjiApiVo> {
}

72
dk-modules/system/src/main/java/org/dromara/system/service/IDjiApiErrorService.java

@ -0,0 +1,72 @@
package org.dromara.system.service;
import org.dromara.system.domain.DjiApiError;
import org.dromara.system.domain.vo.DjiApiErrorVo;
import org.dromara.system.domain.bo.DjiApiErrorBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 大疆开发-错误码Service接口
*
* @author szs
* @date 2025-05-14
*/
public interface IDjiApiErrorService {
/**
* 查询大疆开发-错误码
*
* @param id 主键
* @return 大疆开发-错误码
*/
DjiApiErrorVo queryById(Long id);
/**
* 分页查询大疆开发-错误码列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 大疆开发-错误码分页列表
*/
TableDataInfo<DjiApiErrorVo> queryPageList(DjiApiErrorBo bo, PageQuery pageQuery);
/**
* 查询符合条件的大疆开发-错误码列表
*
* @param bo 查询条件
* @return 大疆开发-错误码列表
*/
List<DjiApiErrorVo> queryList(DjiApiErrorBo bo);
/**
* 新增大疆开发-错误码
*
* @param bo 大疆开发-错误码
* @return 是否新增成功
*/
Boolean insertByBo(DjiApiErrorBo bo);
/**
* 修改大疆开发-错误码
*
* @param bo 大疆开发-错误码
* @return 是否修改成功
*/
Boolean updateByBo(DjiApiErrorBo bo);
/**
* 校验并批量删除大疆开发-错误码信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
DjiApiErrorVo selectOneApiErrorByInfo(DjiApiErrorBo apiErrorBo);
}

69
dk-modules/system/src/main/java/org/dromara/system/service/IDjiApiService.java

@ -0,0 +1,69 @@
package org.dromara.system.service;
import org.dromara.system.domain.DjiApi;
import org.dromara.system.domain.vo.DjiApiVo;
import org.dromara.system.domain.bo.DjiApiBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 大疆开发Service接口
*
* @author szs
* @date 2025-05-14
*/
public interface IDjiApiService {
/**
* 查询大疆开发
*
* @param id 主键
* @return 大疆开发
*/
DjiApiVo queryById(Long id);
/**
* 分页查询大疆开发列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 大疆开发分页列表
*/
TableDataInfo<DjiApiVo> queryPageList(DjiApiBo bo, PageQuery pageQuery);
/**
* 查询符合条件的大疆开发列表
*
* @param bo 查询条件
* @return 大疆开发列表
*/
List<DjiApiVo> queryList(DjiApiBo bo);
/**
* 新增大疆开发
*
* @param bo 大疆开发
* @return 是否新增成功
*/
Boolean insertByBo(DjiApiBo bo);
/**
* 修改大疆开发
*
* @param bo 大疆开发
* @return 是否修改成功
*/
Boolean updateByBo(DjiApiBo bo);
/**
* 校验并批量删除大疆开发信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

146
dk-modules/system/src/main/java/org/dromara/system/service/impl/DjiApiErrorServiceImpl.java

@ -0,0 +1,146 @@
package org.dromara.system.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.system.domain.SysUser;
import org.springframework.stereotype.Service;
import org.dromara.system.domain.bo.DjiApiErrorBo;
import org.dromara.system.domain.vo.DjiApiErrorVo;
import org.dromara.system.domain.DjiApiError;
import org.dromara.system.mapper.DjiApiErrorMapper;
import org.dromara.system.service.IDjiApiErrorService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 大疆开发-错误码Service业务层处理
*
* @author szs
* @date 2025-05-14
*/
@RequiredArgsConstructor
@Service
public class DjiApiErrorServiceImpl implements IDjiApiErrorService {
private final DjiApiErrorMapper baseMapper;
/**
* 查询大疆开发-错误码
*
* @param id 主键
* @return 大疆开发-错误码
*/
@Override
public DjiApiErrorVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询大疆开发-错误码列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 大疆开发-错误码分页列表
*/
@Override
public TableDataInfo<DjiApiErrorVo> queryPageList(DjiApiErrorBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DjiApiError> lqw = buildQueryWrapper(bo);
Page<DjiApiErrorVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的大疆开发-错误码列表
*
* @param bo 查询条件
* @return 大疆开发-错误码列表
*/
@Override
public List<DjiApiErrorVo> queryList(DjiApiErrorBo bo) {
LambdaQueryWrapper<DjiApiError> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<DjiApiError> buildQueryWrapper(DjiApiErrorBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DjiApiError> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getDjiApiId() != null, DjiApiError::getDjiApiId, bo.getDjiApiId());
lqw.like(StringUtils.isNotBlank(bo.getDjiApiName()), DjiApiError::getDjiApiName, bo.getDjiApiName());
lqw.like(StringUtils.isNotBlank(bo.getName()), DjiApiError::getName, bo.getName());
lqw.eq(StringUtils.isNotBlank(bo.getNameCn()), DjiApiError::getNameCn, bo.getNameCn());
lqw.eq(StringUtils.isNotBlank(bo.getNameEn()), DjiApiError::getNameEn, bo.getNameEn());
lqw.eq(StringUtils.isNotBlank(bo.getIsChangeFlag()), DjiApiError::getIsChangeFlag, bo.getIsChangeFlag());
lqw.eq(bo.getChangeHistroyCount() != null, DjiApiError::getChangeHistroyCount, bo.getChangeHistroyCount());
lqw.eq(StringUtils.isNotBlank(bo.getChangeHistoryIds()), DjiApiError::getChangeHistoryIds, bo.getChangeHistoryIds());
return lqw;
}
/**
* 新增大疆开发-错误码
*
* @param bo 大疆开发-错误码
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(DjiApiErrorBo bo) {
DjiApiError add = MapstructUtils.convert(bo, DjiApiError.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改大疆开发-错误码
*
* @param bo 大疆开发-错误码
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(DjiApiErrorBo bo) {
DjiApiError update = MapstructUtils.convert(bo, DjiApiError.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(DjiApiError entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除大疆开发-错误码信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
@Override
public DjiApiErrorVo selectOneApiErrorByInfo(DjiApiErrorBo apiErrorBo) {
return baseMapper.selectVoOne(new LambdaQueryWrapper<DjiApiError>()
.eq(DjiApiError::getDjiApiId, apiErrorBo.getDjiApiId())
.eq(DjiApiError::getName,apiErrorBo.getName()));
}
}

133
dk-modules/system/src/main/java/org/dromara/system/service/impl/DjiApiServiceImpl.java

@ -0,0 +1,133 @@
package org.dromara.system.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.system.domain.bo.DjiApiBo;
import org.dromara.system.domain.vo.DjiApiVo;
import org.dromara.system.domain.DjiApi;
import org.dromara.system.mapper.DjiApiMapper;
import org.dromara.system.service.IDjiApiService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 大疆开发Service业务层处理
*
* @author szs
* @date 2025-05-14
*/
@RequiredArgsConstructor
@Service
public class DjiApiServiceImpl implements IDjiApiService {
private final DjiApiMapper baseMapper;
/**
* 查询大疆开发
*
* @param id 主键
* @return 大疆开发
*/
@Override
public DjiApiVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询大疆开发列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 大疆开发分页列表
*/
@Override
public TableDataInfo<DjiApiVo> queryPageList(DjiApiBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DjiApi> lqw = buildQueryWrapper(bo);
Page<DjiApiVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的大疆开发列表
*
* @param bo 查询条件
* @return 大疆开发列表
*/
@Override
public List<DjiApiVo> queryList(DjiApiBo bo) {
LambdaQueryWrapper<DjiApi> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<DjiApi> buildQueryWrapper(DjiApiBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DjiApi> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getDjiApiType()), DjiApi::getDjiApiType, bo.getDjiApiType());
lqw.like(StringUtils.isNotBlank(bo.getName()), DjiApi::getName, bo.getName());
lqw.eq(StringUtils.isNotBlank(bo.getNameVersionNo()), DjiApi::getNameVersionNo, bo.getNameVersionNo());
lqw.eq(bo.getVersionCount() != null, DjiApi::getVersionCount, bo.getVersionCount());
lqw.eq(bo.getTimeRelease() != null, DjiApi::getTimeRelease, bo.getTimeRelease());
return lqw;
}
/**
* 新增大疆开发
*
* @param bo 大疆开发
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(DjiApiBo bo) {
DjiApi add = MapstructUtils.convert(bo, DjiApi.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改大疆开发
*
* @param bo 大疆开发
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(DjiApiBo bo) {
DjiApi update = MapstructUtils.convert(bo, DjiApi.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(DjiApi entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除大疆开发信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

7
dk-modules/system/src/main/resources/mapper/djidev/DjiApiErrorMapper.xml

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.system.mapper.DjiApiErrorMapper">
</mapper>

7
dk-modules/system/src/main/resources/mapper/djidev/DjiApiMapper.xml

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.system.mapper.DjiApiMapper">
</mapper>

2
pom.xml

@ -28,7 +28,7 @@
<swagger.core.version>2.2.22</swagger.core.version> <swagger.core.version>2.2.22</swagger.core.version>
<springdoc.version>2.6.0</springdoc.version> <springdoc.version>2.6.0</springdoc.version>
<therapi-javadoc.version>0.15.0</therapi-javadoc.version> <therapi-javadoc.version>0.15.0</therapi-javadoc.version>
<easyexcel.version>4.0.3</easyexcel.version> <easyexcel.version>3.3.2</easyexcel.version>
<hutool.version>5.8.31</hutool.version> <hutool.version>5.8.31</hutool.version>
<redisson.version>3.37.0</redisson.version> <redisson.version>3.37.0</redisson.version>
<lock4j.version>2.2.7</lock4j.version> <lock4j.version>2.2.7</lock4j.version>

Loading…
Cancel
Save