wanggaokun 1 жил өмнө
parent
commit
476fb73dc7

+ 7 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/controller/AlgorithmController.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
 import jakarta.annotation.Resource;
 import lombok.RequiredArgsConstructor;
 import org.eco.als.domain.bo.AlgorithmBo;
+import org.eco.als.domain.bo.TaskBo;
 import org.eco.als.service.IAlgorithmService;
 import org.eco.common.core.core.domain.CommonResult;
 import org.eco.common.log.annotation.Log;
@@ -48,4 +49,10 @@ public class AlgorithmController {
     public CommonResult<String> executeFault(@Validated @RequestBody AlgorithmBo algorithmBo) {
         return StrUtil.isBlank(algorithmService.executeFalseAlarm(algorithmBo)) ? CommonResult.fail() : CommonResult.success();
     }
+    @SaCheckPermission("als:algorithm:execute")
+    @Log(title = "执行任务", businessType = BusinessType.EXECUTE)
+    @PostMapping("/execute/task")
+    public CommonResult<String> batchExecute(@Validated @RequestBody TaskBo taskBo) {
+        return StrUtil.isBlank(algorithmService.batchExecute(taskBo)) ? CommonResult.fail() : CommonResult.success();
+    }
 }

+ 121 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/controller/TaskController.java

@@ -0,0 +1,121 @@
+package org.eco.als.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.collection.CollUtil;
+import jakarta.annotation.Resource;
+import lombok.RequiredArgsConstructor;
+import org.eco.als.domain.bo.TaskBo;
+import org.eco.als.domain.vo.TaskVo;
+import org.eco.als.service.ITaskService;
+import org.eco.common.core.core.domain.CommonResult;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.log.annotation.Log;
+import org.eco.common.log.enums.BusinessType;
+import org.eco.common.security.utils.LoginHelper;
+import org.eco.common.web.annotation.RepeatSubmit;
+import org.eco.common.web.core.BaseController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 任务管理Controller
+ *
+ * @author wgk
+ * @date 2024-08-07
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/als/task")
+public class TaskController extends BaseController {
+    @Resource
+    private ITaskService taskService;
+
+    /**
+     * 查询任务管理列表
+     */
+    @SaCheckPermission("als:task:list")
+    @GetMapping("/list")
+    public CommonResult<PageResult<TaskVo>> list(TaskBo taskBo) {
+        return CommonResult.success(taskService.selectPage(taskBo));
+    }
+
+    /**
+     * 导出任务管理列表
+     */
+    @SaCheckPermission("als:task:export")
+    @Log(title = "任务管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public CommonResult<Void> export(TaskBo taskBo) {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        List<TaskVo> list = taskService.selectList(taskBo);
+        if (CollUtil.isEmpty(list)) {
+            return CommonResult.fail("导出列表为空");
+        }
+        taskService.asyncExport(list, "任务管理", loginUser);
+        return CommonResult.success();
+    }
+
+    /**
+     * 获取任务管理详细信息
+     */
+    @SaCheckPermission("als:task:query")
+    @GetMapping(value = "/{id}")
+    public CommonResult<TaskVo> getInfo(@PathVariable Long id) {
+        return CommonResult.success(taskService.selectById(id));
+    }
+
+    /**
+     * 新增任务管理
+     */
+    @SaCheckPermission("als:task:add")
+    @Log(title = "任务管理", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping
+    public CommonResult<Void> add(@Validated @RequestBody TaskBo taskBo) {
+        boolean inserted = taskService.insert(taskBo);
+        if (!inserted) {
+            return CommonResult.fail("新增任务管理记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 修改任务管理
+     */
+    @SaCheckPermission("als:task:edit")
+    @Log(title = "任务管理", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping
+    public CommonResult<Void> edit(@Validated @RequestBody TaskBo taskBo) {
+        boolean updated = taskService.update(taskBo);
+        if (!updated) {
+            return CommonResult.fail("修改任务管理记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 删除任务管理
+     */
+    @SaCheckPermission("als:task:remove")
+    @Log(title = "任务管理", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public CommonResult<Void> remove(@PathVariable Long[] ids) {
+        boolean deleted = taskService.deleteByIds(ids);
+        if (!deleted) {
+            return CommonResult.fail("删除任务管理记录失败!");
+        }
+        return CommonResult.success();
+    }
+}

+ 66 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/Task.java

@@ -0,0 +1,66 @@
+package org.eco.als.domain;
+
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+import java.io.Serial;
+
+/**
+ * 任务管理对象 als_task_t
+ *
+ * @author wgk
+ * @date 2024-08-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "als_task_t")
+public class Task extends BaseEntity {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 任务编号
+     */
+    @Id
+    private Long id;
+
+    /**
+     * 任务名称
+     */
+    private String name;
+
+    /**
+     * 数据源
+     */
+    private String source;
+
+    /**
+     * 架次号
+     */
+    private Long sortieNo;
+
+    /**
+     * 机号
+     */
+    private Long aircraftId;
+
+    /**
+     * 数据编号
+     */
+    private Long dataId;
+
+    /**
+     * 状态(1正常)
+     */
+    private String status;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @Column(isLogicDelete = true)
+    private Integer delFlag;
+}

+ 4 - 1
als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/AlgorithmBo.java

@@ -46,5 +46,8 @@ public class AlgorithmBo extends BaseEntity {
      */
     private Long[] warningIds;
 
-
+    /**
+     * 算法批量任务
+     */
+    private List<AlgorithmBo> algorithmList;
 }

+ 56 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/TaskBo.java

@@ -0,0 +1,56 @@
+package org.eco.als.domain.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.als.domain.Task;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+import java.util.List;
+
+/**
+ * 任务管理业务对象 als_task_t
+ *
+ * @author wgk
+ * @date 2024-08-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = Task.class, reverseConvertGenerate = false)
+public class TaskBo extends BaseEntity {
+    /**
+     * 任务编号
+     */
+    private Long id;
+
+    /**
+     * 任务名称
+     */
+    @NotBlank(message = "任务名称不能为空")
+    private String name;
+
+    /**
+     * 数据源
+     */
+    private String source;
+
+    /**
+     * 架次号
+     */
+    private Long sortieNo;
+
+    /**
+     * 机号
+     */
+    private Long aircraftId;
+
+    /**
+     * 数据编号
+     */
+    private Long dataId;
+
+    private List<AlgorithmBo> algorithmList;
+
+
+}

+ 92 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/TaskVo.java

@@ -0,0 +1,92 @@
+package org.eco.als.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.eco.common.mapper.annotation.FieldMapper;
+import com.eco.common.mapper.constant.MapperConstant;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.als.domain.Task;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 任务管理视图对象 als_task_t
+ *
+ * @author wgk
+ * @date 2024-08-07
+ */
+@Data
+@ExcelIgnoreUnannotated
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = Task.class)
+public class TaskVo extends BaseEntity implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 任务编号
+     */
+    @ExcelProperty(value = "任务编号")
+    private Long id;
+
+    /**
+     * 任务名称
+     */
+    @ExcelProperty(value = "任务名称")
+    private String name;
+
+    /**
+     * 数据源
+     */
+    @ExcelProperty(value = "数据源")
+    private String source;
+
+    /**
+     * 架次号
+     */
+    @ExcelProperty(value = "架次号")
+    private Long sortieNo;
+
+    /**
+     * 机号
+     */
+    @ExcelProperty(value = "机号")
+    private Long aircraftId;
+
+    /**
+     * 数据编号
+     */
+    @ExcelProperty(value = "数据编号")
+    private Long dataId;
+
+    /**
+     * 状态(1正常)
+     */
+    @ExcelProperty(value = "状态(1正常)")
+    private String status;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+    private Integer delFlag;
+
+
+    /**
+     * 创建人名称
+     */
+    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "createBy")
+    private String createByName;
+
+    /**
+     * 创建人名称
+     */
+    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "updateBy")
+    private String updateByName;
+
+}

+ 16 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/mapper/TaskMapper.java

@@ -0,0 +1,16 @@
+package org.eco.als.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.eco.als.domain.Task;
+
+/**
+ * 任务管理Mapper接口
+ *
+ * @author wgk
+ * @date 2024-08-07
+ */
+@Mapper
+public interface TaskMapper extends BaseMapper<Task> {
+
+}

+ 3 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/IAlgorithmService.java

@@ -1,6 +1,7 @@
 package org.eco.als.service;
 
 import org.eco.als.domain.bo.AlgorithmBo;
+import org.eco.als.domain.bo.TaskBo;
 
 /**
  * @Description: IAlgorithmService
@@ -12,4 +13,6 @@ public interface IAlgorithmService {
 
     String executeFalseAlarm(AlgorithmBo algorithmBo);
     String executeFault(AlgorithmBo algorithmBo);
+
+    String batchExecute(TaskBo taskBo);
 }

+ 87 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/ITaskService.java

@@ -0,0 +1,87 @@
+package org.eco.als.service;
+
+import org.eco.als.domain.Task;
+import org.eco.als.domain.bo.TaskBo;
+import org.eco.als.domain.vo.TaskVo;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.orm.core.service.IBaseService;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * 任务管理Service接口
+ *
+ * @author wgk
+ * @date 2024-08-07
+ */
+public interface ITaskService extends IBaseService<Task> {
+    /**
+     * 查询任务管理
+     *
+     * @param id 任务管理主键
+     * @return 任务管理
+     */
+    TaskVo selectById(Long id);
+
+    /**
+     * 查询任务管理列表
+     *
+     * @param taskBo 任务管理Bo
+     * @return 任务管理集合
+     */
+    List<TaskVo> selectList(TaskBo taskBo);
+
+    /**
+     * 分页查询任务管理列表
+     *
+     * @param taskBo 任务管理Bo
+     * @return 分页任务管理集合
+     */
+    PageResult<TaskVo> selectPage(TaskBo taskBo);
+
+    /**
+     * 新增任务管理
+     *
+     * @param taskBo 任务管理Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insert(TaskBo taskBo);
+
+    /**
+     * 新增任务管理,前台提供主键值,一般用于导入的场合
+     *
+     * @param taskBo 任务管理Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insertWithPk(TaskBo taskBo);
+
+    /**
+     * 修改任务管理
+     *
+     * @param taskBo 任务管理Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    boolean update(TaskBo taskBo);
+
+    /**
+     * 批量删除任务管理
+     *
+     * @param ids 需要删除的任务管理主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    boolean deleteByIds(Long[] ids);
+
+    /**
+     * asyncExport 异步导出
+     *
+     * @param listVo    数据列表
+     * @param sheetName 文件名称
+     * @param user      上下文
+     */
+    @Async
+    void asyncExport(List<TaskVo> listVo, String sheetName, LoginUser user);
+
+}

+ 11 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/AlgorithmService.java

@@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.eco.als.domain.Warning;
 import org.eco.als.domain.bo.AlgorithmBo;
 import org.eco.als.domain.bo.PreProcessingBo;
+import org.eco.als.domain.bo.TaskBo;
 import org.eco.als.domain.vo.DataImportVo;
 import org.eco.als.domain.vo.ModelHttpVo;
 import org.eco.als.domain.vo.ModelVo;
@@ -206,6 +207,16 @@ public class AlgorithmService implements IAlgorithmService {
         return null;
     }
 
+    @Override
+    public String batchExecute(TaskBo taskBo) {
+        List<AlgorithmBo> algorithmList = taskBo.getAlgorithmList();
+        // 批量执行
+        algorithmList.forEach(el -> {
+
+        });
+        return null;
+    }
+
     private static ModelHttpVo sendHttp(ModelVo modelVo, Map<String, Object> map) {
         try {
             String result = HttpUtils.postJson(modelVo.getUrl(), map);

+ 170 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/TaskServiceImpl.java

@@ -0,0 +1,170 @@
+package org.eco.als.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryWrapper;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.eco.als.domain.Task;
+import org.eco.als.domain.bo.TaskBo;
+import org.eco.als.domain.vo.TaskVo;
+import org.eco.als.mapper.TaskMapper;
+import org.eco.als.service.ITaskService;
+import org.eco.common.core.core.domain.model.LoginUser;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.core.utils.MapstructUtils;
+import org.eco.common.excel.entity.ExcelResultRes;
+import org.eco.common.excel.service.IExcelService;
+import org.eco.common.orm.core.page.PageQuery;
+import org.eco.common.orm.core.service.impl.BaseServiceImpl;
+import org.eco.system.service.IImportExportService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static org.eco.als.domain.table.TaskTableDef.TASK;
+
+/**
+ * 任务管理Service业务层处理
+ *
+ * @author wgk
+ * @date 2024-08-07
+ */
+@Service
+@Slf4j
+public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implements ITaskService {
+    @Resource
+    private TaskMapper taskMapper;
+
+    @Resource
+    private IExcelService excelService;
+
+    @Resource
+    private IImportExportService importExportService;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(TASK);
+    }
+
+    private QueryWrapper buildQueryWrapper(TaskBo taskBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.and(TASK.NAME.like
+            (taskBo.getName()));
+        queryWrapper.and(TASK.SOURCE.eq
+            (taskBo.getSource()));
+        queryWrapper.and(TASK.SORTIE_NO.eq
+            (taskBo.getSortieNo()));
+        queryWrapper.and(TASK.AIRCRAFT_ID.eq
+            (taskBo.getAircraftId()));
+        queryWrapper.and(TASK.DATA_ID.eq
+            (taskBo.getDataId()));
+
+        return queryWrapper;
+    }
+
+    /**
+     * 查询任务管理
+     *
+     * @param id 任务管理主键
+     * @return 任务管理
+     */
+    @Override
+    public TaskVo selectById(Long id) {
+        return this.getOneAs(query().where(TASK.ID.eq(id)), TaskVo.class);
+
+    }
+
+
+    /**
+     * 查询任务管理列表
+     *
+     * @param taskBo 任务管理Bo
+     * @return 任务管理集合
+     */
+    @Override
+    public List<TaskVo> selectList(TaskBo taskBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(taskBo);
+        return this.listAs(queryWrapper, TaskVo.class);
+    }
+
+    /**
+     * 分页查询任务管理列表
+     *
+     * @param taskBo 任务管理Bo
+     * @return 分页任务管理集合
+     */
+    @Override
+    public PageResult<TaskVo> selectPage(TaskBo taskBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(taskBo);
+        Page<TaskVo> page = this.pageAs(PageQuery.build(), queryWrapper, TaskVo.class);
+        return PageResult.build(page);
+    }
+
+    /**
+     * 新增任务管理
+     *
+     * @param taskBo 任务管理Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insert(TaskBo taskBo) {
+        Task task = MapstructUtils.convert(taskBo, Task.class);
+
+        return this.save(task);//使用全局配置的雪花算法主键生成器生成ID值
+    }
+
+    /**
+     * 新增任务管理,前台提供主键值,一般用于导入的场合
+     *
+     * @param taskBo 任务管理Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insertWithPk(TaskBo taskBo) {
+        Task task = MapstructUtils.convert(taskBo, Task.class);
+
+
+        return taskMapper.insertWithPk(task) > 0;//前台传来主键值
+    }
+
+    /**
+     * 修改任务管理
+     *
+     * @param taskBo 任务管理Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    @Override
+    public boolean update(TaskBo taskBo) {
+        Task task = MapstructUtils.convert(taskBo, Task.class);
+        if (ObjectUtil.isNotNull(task) && ObjectUtil.isNotNull(task.getId())) {
+            boolean updated = this.updateById(task);
+            return updated;
+        }
+        return false;
+    }
+
+    @Override
+    public void asyncExport(List<TaskVo> listVo, String sheetName, LoginUser loginUser) {
+        ExcelResultRes result = excelService.exportExcel(listVo, sheetName, TaskVo.class);
+        boolean flag = importExportService.saveInfo(result, loginUser, "1");
+        if (flag) {
+            log.info("异步导出日志写入成功");
+        }
+    }
+
+    /**
+     * 批量删除任务管理
+     *
+     * @param ids 需要删除的任务管理主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    @Transactional
+    @Override
+    public boolean deleteByIds(Long[] ids) {
+        return this.removeByIds(Arrays.asList(ids));
+    }
+
+}

+ 7 - 0
als-modules/agile-assurance/src/main/resources/mapper/als/TaskMapper.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.eco.als.mapper.TaskMapper">
+
+</mapper>