19 changed files with 1362 additions and 1 deletions
@ -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)); |
|||
} |
|||
} |
@ -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)); |
|||
} |
|||
} |
@ -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; |
|||
|
|||
|
|||
} |
@ -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; |
|||
|
|||
|
|||
} |
@ -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; |
|||
|
|||
|
|||
} |
@ -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; |
|||
|
|||
|
|||
} |
@ -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; |
|||
|
|||
|
|||
} |
@ -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; |
|||
|
|||
|
|||
} |
@ -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; |
|||
} |
|||
}; |
|||
} |
|||
} |
@ -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> { |
|||
|
|||
} |
@ -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> { |
|||
|
|||
} |
@ -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); |
|||
|
|||
} |
@ -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); |
|||
} |
@ -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())); |
|||
} |
|||
|
|||
|
|||
} |
@ -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; |
|||
} |
|||
} |
@ -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> |
@ -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> |
Loading…
Reference in new issue